VirtualBox

Changeset 80809 in vbox


Ignore:
Timestamp:
Sep 16, 2019 6:33:32 AM (5 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 Use CPUM[Is|Set]GuestVmxInterceptEvents and fix assertion for 'acknowledge external interrupt on VM-exit' case. Logging space nit.

File:
1 edited

Legend:

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

    r80768 r80809  
    25352535
    25362536    /* We should not cause an NMI-window/interrupt-window VM-exit when injecting events as part of VM-entry. */
    2537     if (!pVCpu->cpum.GstCtx.hwvirt.vmx.fInterceptEvents)
     2537    if (!CPUMIsGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx))
    25382538    {
    25392539        Assert(uExitReason != VMX_EXIT_NMI_WINDOW);
     
    35153515    PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
    35163516    Assert(pVmcs);
    3517     Assert(fIntPending || uVector == 0);
     3517    Assert(!fIntPending || uVector == 0);
    35183518
    35193519    /** @todo NSTVMX: r=ramshankar: Consider standardizing check basic/blanket
     
    36533653     * See Intel spec. 26.5.1.2 "VM Exits During Event Injection".
    36543654     */
    3655     if (!pVCpu->cpum.GstCtx.hwvirt.vmx.fInterceptEvents)
     3655    if (!CPUMIsGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx))
    36563656    {
    36573657        /*
     
    36683668            Assert(!pVCpu->cpum.GstCtx.hwvirt.vmx.fVirtNmiBlocking);
    36693669
    3670         pVCpu->cpum.GstCtx.hwvirt.vmx.fInterceptEvents = true;
     3670        CPUMSetGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx, true);
    36713671        return VINF_VMX_INTERCEPT_NOT_ACTIVE;
    36723672    }
     
    71177117    bool const     fEntryIntInfoValid = VMX_ENTRY_INT_INFO_IS_VALID(uEntryIntInfo);
    71187118
    7119     pVCpu->cpum.GstCtx.hwvirt.vmx.fInterceptEvents = !fEntryIntInfoValid;
     7119    CPUMSetGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx, !fEntryIntInfoValid);
    71207120    if (fEntryIntInfoValid)
    71217121    {
     
    74437443                                /* Finally, done. */
    74447444                                Log3(("%s: cs:rip=%#04x:%#RX64 cr0=%#RX64 (%#RX64) cr4=%#RX64 (%#RX64) efer=%#RX64\n",
    7445                                      pszInstr, pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.cr0,
    7446                                      pVmcs->u64Cr0ReadShadow.u, pVCpu->cpum.GstCtx.cr4, pVmcs->u64Cr4ReadShadow.u,
    7447                                      pVCpu->cpum.GstCtx.msrEFER));
     7445                                      pszInstr, pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.cr0,
     7446                                      pVmcs->u64Cr0ReadShadow.u, pVCpu->cpum.GstCtx.cr4, pVmcs->u64Cr4ReadShadow.u,
     7447                                      pVCpu->cpum.GstCtx.msrEFER));
    74487448                                return VINF_SUCCESS;
    74497449                            }
Note: See TracChangeset for help on using the changeset viewer.

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