VirtualBox

Changeset 75397 in vbox


Ignore:
Timestamp:
Nov 12, 2018 2:11:00 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126535
Message:

VMM/IEM: Nested VMX: bugref:9180 PPR virtualization.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r75388 r75397  
    44284428
    44294429/**
     4430 * VMX VM-exit handler for PPR virtualization.
     4431 *
     4432 * @returns VBox strict status code.
     4433 * @param   pVCpu       The cross context virtual CPU structure.
     4434 */
     4435IEM_STATIC VBOXSTRICTRC iemVmxVmexitPprVirtualization(PVMCPU pVCpu)
     4436{
     4437    PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
     4438    Assert(pVmcs);
     4439
     4440    Assert(pVmcs->u32ProcCtls & VMX_PROC_CTLS_USE_TPR_SHADOW);
     4441    Assert(pVmcs->u32ProcCtls2 & VMX_PROC_CTLS2_VIRT_INT_DELIVERY);
     4442
     4443    uint32_t const uVTpr = iemVmxVirtApicReadRaw32(pVCpu, XAPIC_OFF_TPR);
     4444    uint32_t const uSvi  = pVmcs->u16GuestIntStatus >> 8;
     4445
     4446    uint32_t uVPpr;
     4447    if (((uVTpr >> 4) & 0xf) >= (uSvi >> 4) & 0xf)
     4448        uVPpr = uVTpr & 0xff;
     4449    else
     4450        uVPpr = uSvi & 0xf0;
     4451
     4452    iemVmxVirtApicWriteRaw32(pVCpu, XAPIC_OFF_PPR, uVPpr);
     4453    Log2(("ppr_virt: uVTpr=%u uSvi=%u -> VM-exit\n", uVTpr, uSvi));
     4454}
     4455
     4456
     4457/**
    44304458 * VMX VM-exit handler for TPR virtualization.
    44314459 *
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