VirtualBox

Changeset 80262 in vbox


Ignore:
Timestamp:
Aug 14, 2019 5:02:49 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
132713
Message:

VMM/CPUM: Nested VMX: bugref:9180 Expose "TPR-shadow", "Virtualize-APIC accesses" and "Allow VM-entry injection for software int, software exception, priv. software exception with instruction length of 0", dumping of virtual-APIC page (disabled by default).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r80191 r80262  
    18741874    EmuFeat.fVmxCr8LoadExit           = 1;
    18751875    EmuFeat.fVmxCr8StoreExit          = 1;
    1876     EmuFeat.fVmxUseTprShadow          = 0;
     1876    EmuFeat.fVmxUseTprShadow          = 1;
    18771877    EmuFeat.fVmxNmiWindowExit         = 0;
    18781878    EmuFeat.fVmxMovDRxExit            = 1;
     
    18841884    EmuFeat.fVmxPauseExit             = 1;
    18851885    EmuFeat.fVmxSecondaryExecCtls     = 1;
    1886     EmuFeat.fVmxVirtApicAccess        = 0;
     1886    EmuFeat.fVmxVirtApicAccess        = 1;
    18871887    EmuFeat.fVmxEpt                   = 0;  /* Cannot be disabled if unrestricted guest is enabled. */
    18881888    EmuFeat.fVmxDescTableExit         = 1;
     
    19191919    EmuFeat.fVmxIntelPt               = 0;
    19201920    EmuFeat.fVmxVmwriteAll            = 0;  /** @todo NSTVMX: enable this when nested VMCS shadowing is enabled. */
    1921     EmuFeat.fVmxEntryInjectSoftInt    = 0;
     1921    EmuFeat.fVmxEntryInjectSoftInt    = 1;
    19221922
    19231923    /*
     
    36913691 * Displays a virtual-VMCS.
    36923692 *
     3693 * @param   pVCpu       The cross context virtual CPU structure.
    36933694 * @param   pHlp        The info helper functions.
    36943695 * @param   pVmcs       Pointer to a virtual VMCS.
    36953696 * @param   pszPrefix   Caller specified string prefix.
    36963697 */
    3697 static void  cpumR3InfoVmxVmcs(PCDBGFINFOHLP pHlp, PCVMXVVMCS pVmcs, const char *pszPrefix)
     3698static void cpumR3InfoVmxVmcs(PVMCPU pVCpu, PCDBGFINFOHLP pHlp, PCVMXVVMCS pVmcs, const char *pszPrefix)
    36983699{
    36993700    AssertReturnVoid(pHlp);
     
    39403941        pHlp->pfnPrintf(pHlp, "  %sGuest-linear addr          = %#RX64\n",   pszPrefix, pVmcs->u64RoGuestLinearAddr.u);
    39413942    }
     3943
     3944#ifdef DEBUG_ramshankar
     3945    if (pVmcs->u32ProcCtls & VMX_PROC_CTLS_USE_TPR_SHADOW)
     3946    {
     3947        void *pvPage = RTMemTmpAllocZ(VMX_V_VIRT_APIC_SIZE);
     3948        Assert(pvPage);
     3949        RTGCPHYS const GCPhysVirtApic = pVmcs->u64AddrVirtApic.u;
     3950        int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), pvPage, GCPhysVirtApic, VMX_V_VIRT_APIC_SIZE);
     3951        if (RT_SUCCESS(rc))
     3952        {
     3953            pHlp->pfnPrintf(pHlp, "  %sVirtual-APIC page\n", pszPrefix);
     3954            pHlp->pfnPrintf(pHlp, "%.*Rhxs\n", VMX_V_VIRT_APIC_SIZE, pvPage);
     3955            pHlp->pfnPrintf(pHlp, "\n");
     3956        }
     3957        RTMemTmpFree(pvPage);
     3958    }
     3959#else
     3960    NOREF(pVCpu);
     3961#endif
    39423962
    39433963#undef CPUMVMX_DUMP_HOST_XDTR
     
    40634083        pHlp->pfnPrintf(pHlp, "  fVirtNmiBlocking           = %RTbool\n",   pCtx->hwvirt.vmx.fVirtNmiBlocking);
    40644084        pHlp->pfnPrintf(pHlp, "  VMCS cache:\n");
    4065         cpumR3InfoVmxVmcs(pHlp, pCtx->hwvirt.vmx.pVmcsR3, "  " /* pszPrefix */);
     4085        cpumR3InfoVmxVmcs(pVCpu, pHlp, pCtx->hwvirt.vmx.pVmcsR3, "  " /* pszPrefix */);
    40664086    }
    40674087
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette