Lines Matching refs:PdeDst
1266 const SHWPDE PdeDst = *pPdeDst;
1267 if (!PdeDst.n.u1Present)
1328 Assert( PdeSrc.n.u1User == PdeDst.n.u1User
1329 && (PdeSrc.n.u1Write || !PdeDst.n.u1Write || pVCpu->pgm.s.cNetwareWp0Hacks > 0));
1331 if (PdeDst.u & PGM_PDFLAGS_MAPPING)
1347 PPGMPOOLPAGE pShwPage = pgmPoolGetPage(pPool, PdeDst.u & SHW_PDE_PG_MASK);
1383 LogFlow(("InvalidatePage: Out-of-sync at %RGp PdeSrc=%RX64 PdeDst=%RX64 ShwGCPhys=%RGp iPDDst=%#x\n",
1384 GCPtrPage, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u, pShwPage->GCPhys, iPDDst));
1385 pgmPoolFree(pVM, PdeDst.u & SHW_PDE_PG_MASK, pShwPde->idx, iPDDst);
1397 PPGMPOOLPAGE pShwPage = pgmPoolGetPage(pPool, PdeDst.u & SHW_PDE_PG_MASK);
1410 == (PdeDst.u & (X86_PDE_P | X86_PDE_RW | X86_PDE_US))
1412 || (PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY)))
1426 LogFlow(("InvalidatePage: Out-of-sync PD at %RGp PdeSrc=%RX64 PdeDst=%RX64\n",
1427 GCPtrPage, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
1428 pgmPoolFree(pVM, PdeDst.u & SHW_PDE_PG_MASK, pShwPde->idx, iPDDst);
1439 if (!(PdeDst.u & PGM_PDFLAGS_MAPPING))
1441 pgmPoolFree(pVM, PdeDst.u & SHW_PDE_PG_MASK, pShwPde->idx, iPDDst);
1940 SHWPDE PdeDst = *pPdeDst;
1950 if (!PdeDst.n.u1Present)
1952 Log(("CPU%u: SyncPage: Pde at %RGv changed behind our back? (pPdeDst=%p/%RX64) uErr=%#x\n", pVCpu->idCpu, GCPtrPage, pPdeDst, (uint64_t)PdeDst.u, (uint32_t)uErr));
1954 ("Unexpected missing PDE p=%p/%RX64 uErr=%#x\n", pPdeDst, (uint64_t)PdeDst.u, (uint32_t)uErr));
1960 PPGMPOOLPAGE pShwPage = pgmPoolGetPage(pPool, PdeDst.u & SHW_PDE_PG_MASK);
1995 && PdeSrc.n.u1User == PdeDst.n.u1User
1996 && (PdeSrc.n.u1Write == PdeDst.n.u1Write || !PdeDst.n.u1Write)
1998 && (PdeSrc.n.u1NoExecute == PdeDst.n.u1NoExecute || !GST_IS_NX_ACTIVE(pVCpu))
2178 PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY;
2179 PdeDst.n.u1Write = 0;
2183 PdeDst.au32[0] &= ~PGM_PDFLAGS_TRACK_DIRTY;
2184 PdeDst.n.u1Write = PdeSrc.n.u1Write;
2186 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
2189 PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY ? " Track-Dirty" : ""));
2207 Log2(("SyncPage: Out-Of-Sync PDE at %RGp PdeSrc=%RX64 PdeDst=%RX64 (GCPhys %RGp vs %RGp)\n",
2208 GCPtrPage, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u, pShwPage->GCPhys, GCPhys));
2213 Log2(("SyncPage: Bad PDE at %RGp PdeSrc=%RX64 PdeDst=%RX64 (GCPhys %RGp vs %RGp)\n",
2214 GCPtrPage, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u, pShwPage->GCPhys, GCPhys));
2240 X86PDE PdeDst = pgmShwGet32BitPDE(pVCpu, GCPtrPage);
2243 X86PDEPAE PdeDst = pgmShwGetPaePDE(pVCpu, GCPtrPage);
2249 X86PDEPAE PdeDst;
2255 PdeDst = pPDDst->a[iPDDst];
2259 EPTPDE PdeDst;
2268 PdeDst = pPDDst->a[iPDDst];
2271 if (!PdeDst.n.u1Present)
2273 AssertMsg(pVM->cCpus > 1, ("Unexpected missing PDE %RX64\n", (uint64_t)PdeDst.u));
2279 if (PdeDst.n.u1Size)
2282 Log(("CPU%d: SyncPage: Pde (big:%RX64) at %RGv changed behind our back!\n", pVCpu->idCpu, PdeDst.u, GCPtrPage));
2289 PPGMPOOLPAGE pShwPage = pgmPoolGetPage(pPool, PdeDst.u & SHW_PDE_PG_MASK);
2451 SHWPDE PdeDst = *pPdeDst;
2459 PdeDst.n.u1Write = 1;
2460 PdeDst.n.u1Accessed = 1;
2461 PdeDst.au32[0] &= ~PGM_PDFLAGS_TRACK_DIRTY;
2462 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
2685 SHWPDE PdeDst = *pPdeDst;
2699 if (PdeDst.u & PGM_PDFLAGS_MAPPING)
2722 PdeDst = *pPdeDst;
2726 Assert(!PdeDst.n.u1Present); /* We're only supposed to call SyncPT on PDE!P and conflicts.*/
2794 PdeDst.u = pShwPage->Core.Key | GST_GET_PDE_SHW_FLAGS(pVCpu, PdeSrc);
2797 PdeDst.u = pShwPage->Core.Key | GST_GET_BIG_PDE_SHW_FLAGS(pVCpu, PdeSrc);
2803 PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY;
2804 PdeDst.b.u1Write = 0;
2807 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
2822 PdeDst.u &= X86_PDE_AVL_MASK;
2823 PdeDst.u |= pShwPage->Core.Key;
2853 PdeDst.u = (PdeDst.u & (SHW_PDE_PG_MASK | X86_PDE_AVL_MASK))
2855 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
2944 PdeDst.u = (PdeDst.u & (SHW_PDE_PG_MASK | (X86_PDE_AVL_MASK & ~PGM_PDFLAGS_TRACK_DIRTY)))
2956 Assert(!(PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY));
2961 PdeDst.u |= PGM_PDFLAGS_TRACK_DIRTY;
2962 PdeDst.b.u1Write = 0;
2964 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
2978 GCPhys, PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY ? " Track-Dirty" : ""));
3094 AssertRelease(!PdeDst.n.u1Present);
3169 SHWPDE PdeDst = *pPdeDst;
3171 Assert(!(PdeDst.u & PGM_PDFLAGS_MAPPING));
3172 Assert(!PdeDst.n.u1Present); /* We're only supposed to call SyncPT on PDE!P and conflicts.*/
3225 PdeDst.u &= X86_PDE_AVL_MASK;
3226 PdeDst.u |= HCPhys;
3227 PdeDst.n.u1Present = 1;
3228 PdeDst.n.u1Write = 1;
3229 PdeDst.b.u1Size = 1;
3231 PdeDst.n.u1Execute = 1;
3232 PdeDst.b.u1IgnorePAT = 1;
3233 PdeDst.b.u3EMT = VMX_EPT_MEMTYPE_WB;
3235 PdeDst.n.u1User = 1;
3237 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
3239 Log(("SyncPT: Use large page at %RGp PDE=%RX64\n", GCPtrPage, PdeDst.u));
3298 PdeDst.u &= X86_PDE_AVL_MASK;
3299 PdeDst.u |= pShwPage->Core.Key;
3300 PdeDst.n.u1Present = 1;
3301 PdeDst.n.u1Write = 1;
3303 PdeDst.n.u1Execute = 1;
3305 PdeDst.n.u1User = 1;
3306 PdeDst.n.u1Accessed = 1;
3308 ASMAtomicWriteSize(pPdeDst, PdeDst.u);
3386 const X86PDE PdeDst = pgmShwGet32BitPDE(pVCpu, GCPtrPage);
3390 X86PDEPAE PdeDst;
3405 PdeDst = pPDDst->a[iPDDst];
3410 X86PDEPAE PdeDst;
3431 PdeDst = pPDDst->a[iPDDst];
3433 if (!(PdeDst.u & PGM_PDFLAGS_MAPPING))
3435 if (!PdeDst.n.u1Present)
3983 const SHWPDE PdeDst = *pgmShwGetPaePDEPtr(pVCpu, GCPtr);
3985 const SHWPDE PdeDst = pPDDst->a[iPDDst];
3987 if (PdeDst.u & PGM_PDFLAGS_MAPPING)
3990 if ((PdeDst.u & X86_PDE_AVL_MASK) != PGM_PDFLAGS_MAPPING)
3992 AssertMsgFailed(("Mapping shall only have PGM_PDFLAGS_MAPPING set! PdeDst.u=%#RX64\n", (uint64_t)PdeDst.u));
3997 else if ( (PdeDst.u & X86_PDE_P)
3998 || ((PdeDst.u & (X86_PDE_P | PGM_PDFLAGS_TRACK_DIRTY)) == (X86_PDE_P | PGM_PDFLAGS_TRACK_DIRTY))
4001 HCPhysShw = PdeDst.u & SHW_PDE_PG_MASK;
4005 AssertMsgFailed(("Invalid page table address %RHp at %RGv! PdeDst=%#RX64\n",
4006 HCPhysShw, GCPtr, (uint64_t)PdeDst.u));
4012 if (PdeDst.u & (X86_PDE4M_PWT | X86_PDE4M_PCD))
4014 AssertMsgFailed(("PDE flags PWT and/or PCD is set at %RGv! These flags are not virtualized! PdeDst=%#RX64\n",
4015 GCPtr, (uint64_t)PdeDst.u));
4019 if (PdeDst.u & (X86_PDE4M_G | X86_PDE4M_D))
4021 AssertMsgFailed(("4K PDE reserved flags at %RGv! PdeDst=%#RX64\n",
4022 GCPtr, (uint64_t)PdeDst.u));
4029 AssertMsgFailed(("Guest PDE at %RGv is not present! PdeDst=%#RX64 PdeSrc=%#RX64\n",
4030 GCPtr, (uint64_t)PdeDst.u, (uint64_t)PdeSrc.u));
4102 != (PdeDst.u & (X86_PDE_P | X86_PDE_US | X86_PDE_RW/* | X86_PDE_A*/)))
4106 AssertMsgFailed(("4K PDE flags mismatch at %RGv! PdeSrc=%#RX64 PdeDst=%#RX64\n",
4107 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4111 if (PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY)
4113 AssertMsgFailed(("4K PDEs cannot have PGM_PDFLAGS_TRACK_DIRTY set! GCPtr=%RGv PdeDst=%#RX64\n",
4114 GCPtr, (uint64_t)PdeDst.u));
4320 if (PdeDst.n.u1Write)
4322 AssertMsgFailed(("!DIRTY page at %RGv is writable! PdeSrc=%#RX64 PdeDst=%#RX64\n",
4323 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4327 if (!(PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY))
4330 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4335 if (PdeDst.n.u1Accessed != PdeSrc.b.u1Accessed)
4338 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4346 else if (PdeDst.u & PGM_PDFLAGS_TRACK_DIRTY)
4349 if (PdeSrc.b.u1Accessed || PdeDst.n.u1Present)
4351 AssertMsgFailed(("PGM_PDFLAGS_TRACK_DIRTY set at %RGv but no accessed bit emulation! PdeSrc=%#RX64 PdeDst=%#RX64\n",
4352 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4356 if (!PdeDst.n.u1Accessed)
4358 AssertMsgFailed(("!ACCESSED page at %RGv is has the accessed bit set! PdeSrc=%#RX64 PdeDst=%#RX64\n",
4359 GCPtr, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));
4365 if ((PdeSrc.u & ~fIgnoreFlags) != (PdeDst.u & ~fIgnoreFlags))
4367 AssertMsgFailed(("Flags mismatch (B) at %RGv! %#RX64 != %#RX64 fIgnoreFlags=%#RX64 PdeSrc=%#RX64 PdeDst=%#RX64\n",
4368 GCPtr, (uint64_t)PdeSrc.u & ~fIgnoreFlags, (uint64_t)PdeDst.u & ~fIgnoreFlags,
4369 fIgnoreFlags, (uint64_t)PdeSrc.u, (uint64_t)PdeDst.u));