Lines Matching refs:GstWalk
465 GSTPTWALK GstWalk;
466 rc = PGM_GST_NAME(Walk)(pVCpu, pvFault, &GstWalk);
468 return VBOXSTRICTRC_TODO(PGM_BTH_NAME(Trap0eHandlerGuestFault)(pVCpu, &GstWalk, uErr));
470 /* assert some GstWalk sanity. */
472 /*AssertMsg(GstWalk.Pml4e.u == GstWalk.pPml4e->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pml4e.u, (uint64_t)GstWalk.pPml4e->u)); - not always true with SMP guests. */
475 /*AssertMsg(GstWalk.Pdpe.u == GstWalk.pPdpe->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pdpe.u, (uint64_t)GstWalk.pPdpe->u)); - ditto */
477 /*AssertMsg(GstWalk.Pde.u == GstWalk.pPde->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pde.u, (uint64_t)GstWalk.pPde->u)); - ditto */
478 /*AssertMsg(GstWalk.Core.fBigPage || GstWalk.Pte.u == GstWalk.pPte->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pte.u, (uint64_t)GstWalk.pPte->u)); - ditto */
479 Assert(GstWalk.Core.fSucceeded);
484 && !GstWalk.Core.fEffectiveRW
487 || ((uErr & X86_TRAP_PF_US) && !GstWalk.Core.fEffectiveUS)
488 || ((uErr & X86_TRAP_PF_ID) && GstWalk.Core.fEffectiveNX)
490 return VBOXSTRICTRC_TODO(PGM_BTH_NAME(Trap0eHandlerGuestFault)(pVCpu, &GstWalk, uErr));
497 GstWalk.Pml4e.u |= X86_PML4E_A;
498 GstWalk.pPml4e->u |= X86_PML4E_A;
499 GstWalk.Pdpe.u |= X86_PDPE_A;
500 GstWalk.pPdpe->u |= X86_PDPE_A;
502 if (GstWalk.Core.fBigPage)
504 Assert(GstWalk.Pde.b.u1Size);
507 GstWalk.Pde.u |= X86_PDE4M_A | X86_PDE4M_D;
508 GstWalk.pPde->u |= X86_PDE4M_A | X86_PDE4M_D;
512 GstWalk.Pde.u |= X86_PDE4M_A;
513 GstWalk.pPde->u |= X86_PDE4M_A;
518 Assert(!GstWalk.Pde.b.u1Size);
519 GstWalk.Pde.u |= X86_PDE_A;
520 GstWalk.pPde->u |= X86_PDE_A;
524 if (!GstWalk.Pte.n.u1Dirty)
529 GstWalk.Pte.u |= X86_PTE_A | X86_PTE_D;
530 GstWalk.pPte->u |= X86_PTE_A | X86_PTE_D;
534 GstWalk.Pte.u |= X86_PTE_A;
535 GstWalk.pPte->u |= X86_PTE_A;
537 Assert(GstWalk.Pte.u == GstWalk.pPte->u);
539 AssertMsg(GstWalk.Pde.u == GstWalk.pPde->u || GstWalk.pPte->u == GstWalk.pPde->u,
540 ("%RX64 %RX64 pPte=%p pPde=%p Pte=%RX64\n", (uint64_t)GstWalk.Pde.u, (uint64_t)GstWalk.pPde->u, GstWalk.pPte, GstWalk.pPde, (uint64_t)GstWalk.pPte->u));
559 rc = pgmPhysGetPageEx(pVM, GstWalk.Core.GCPhys, &pPage);
562 pfLockTaken, &GstWalk));
563 rc = PGM_BTH_NAME(SyncPage)(pVCpu, GstWalk.Pde, pvFault, 1, uErr);
588 rc = pgmShwSyncPaePDPtr(pVCpu, pvFault, GstWalk.Pdpe.u, &pPDDst);
601 rc = pgmShwSyncLongModePDPtr(pVCpu, pvFault, GstWalk.Pml4e.u, GstWalk.Pdpe.u, &pPDDst);
623 rc = PGM_BTH_NAME(CheckDirtyPageFault)(pVCpu, uErr, &pPDDst->a[iPDDst], GstWalk.pPde, pvFault);
634 //AssertMsg(GstWalk.Pde.u == GstWalk.pPde->u || GstWalk.pPte->u == GstWalk.pPde->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pde.u, (uint64_t)GstWalk.pPde->u)); - triggers with smp w7 guests.
635 //AssertMsg(GstWalk.Core.fBigPage || GstWalk.Pte.u == GstWalk.pPte->u, ("%RX64 %RX64\n", (uint64_t)GstWalk.Pte.u, (uint64_t)GstWalk.pPte->u)); - ditto.
656 Assert(GstWalk.Pde.n.u1Present);
663 LogFlow(("=>SyncPT %04x = %08RX64\n", (pvFault >> GST_PD_SHIFT) & GST_PD_MASK, (uint64_t)GstWalk.Pde.u));
664 rc = PGM_BTH_NAME(SyncPT)(pVCpu, (pvFault >> GST_PD_SHIFT) & GST_PD_MASK, GstWalk.pPd, pvFault);
700 if (GstWalk.pPde[iPT].n.u1Present)
755 RTGCPHYS GCPhys = GstWalk.Core.GCPhys & ~(RTGCPHYS)PAGE_OFFSET_MASK;
780 &GstWalk));
860 pvFault, pRegFrame->eip, GstWalk.Pde.n.u1User, fPageGst2, GCPhys2, CSAMDoesPageNeedScanning(pVM, pRegFrame->eip)));
868 if ( !GstWalk.Core.fEffectiveUS
892 int rc2 = PGM_BTH_NAME(SyncPage)(pVCpu, GstWalk.Pde, pvFault, 1, uErr);
934 rc = PGM_BTH_NAME(SyncPage)(pVCpu, GstWalk.Pde, pvFault, PGM_SYNC_NR_PAGES, uErr);
984 if ( !GstWalk.Core.fEffectiveRW
1003 if ( GstWalk.Core.fEffectiveUS
1004 && !GstWalk.Core.fEffectiveRW
1005 && (GstWalk.Core.fBigPage || GstWalk.Pde.n.u1Write)
1008 Log(("PGM #PF: Netware WP0+RO+US hack: pvFault=%RGp uErr=%#x (big=%d)\n", pvFault, uErr, GstWalk.Core.fBigPage));
1009 rc = pgmShwMakePageSupervisorAndWritable(pVCpu, pvFault, GstWalk.Core.fBigPage, PGM_MK_PG_IS_WRITE_FAULT);
1024 Log(("PGM #PF: WP0 emulation (pvFault=%RGp uErr=%#x cpl=%d fBig=%d fEffUs=%d)\n", pvFault, uErr, CPUMGetGuestCPL(pVCpu), GstWalk.Core.fBigPage, GstWalk.Core.fEffectiveUS));
1046 rc = PGM_BTH_NAME(SyncPage)(pVCpu, GstWalk.Pde, pvFault, 1, uErr);
1084 else if ( GstWalk.Core.fEffectiveUS
1085 && !GstWalk.Core.fEffectiveRW
1086 && (GstWalk.Core.fBigPage || GstWalk.Pde.n.u1Write)
1094 rc = PGM_BTH_NAME(SyncPage)(pVCpu, GstWalk.Pde, pvFault, 1, uErr);