VirtualBox

Changeset 80741 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Sep 12, 2019 4:42:56 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133293
Message:

VMM/IEM: Nested VMX: bugref:9180 Add assertion, tidy comment and logging.

File:
1 edited

Legend:

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

    r80578 r80741  
    17071707    /* CR0. */
    17081708    {
    1709         /* Bits 63:32, 28:19, 17, 15:6, ET, CD, NW and fixed CR0 bits are not modified. */
     1709        /* Bits 63:32, 28:19, 17, 15:6, ET, CD, NW and CR0 fixed bits are not modified. */
    17101710        uint64_t const uCr0Mb1       = pVCpu->cpum.GstCtx.hwvirt.vmx.Msrs.u64Cr0Fixed0;
    17111711        uint64_t const uCr0Mb0       = pVCpu->cpum.GstCtx.hwvirt.vmx.Msrs.u64Cr0Fixed1;
     
    17141714        uint64_t const uGuestCr0     = pVCpu->cpum.GstCtx.cr0;
    17151715        uint64_t const uValidHostCr0 = (uHostCr0 & ~fCr0IgnMask) | (uGuestCr0 & fCr0IgnMask);
     1716
     1717        /* Verify we have not modified CR0 fixed bits in VMX non-root operation. */
     1718        Assert((uGuestCr0 &  uCr0Mb1) == uCr0Mb1);
     1719        Assert((uGuestCr0 & ~uCr0Mb0) == 0);
    17161720        CPUMSetGuestCR0(pVCpu, uValidHostCr0);
    17171721    }
     
    17191723    /* CR4. */
    17201724    {
    1721         /* Fixed CR4 bits are not modified. */
     1725        /* CR4 fixed bits are not modified. */
    17221726        uint64_t const uCr4Mb1       = pVCpu->cpum.GstCtx.hwvirt.vmx.Msrs.u64Cr4Fixed0;
    17231727        uint64_t const uCr4Mb0       = pVCpu->cpum.GstCtx.hwvirt.vmx.Msrs.u64Cr4Fixed1;
     
    17301734        else
    17311735            uValidHostCr4 &= ~X86_CR4_PCIDE;
     1736
     1737        /* Verify we have not modified CR4 fixed bits in VMX non-root operation. */
     1738        Assert((uGuestCr4 &  uCr4Mb1) == uCr4Mb1);
     1739        Assert((uGuestCr4 & ~uCr4Mb0) == 0);
    17321740        CPUMSetGuestCR4(pVCpu, uValidHostCr4);
    17331741    }
     
    24792487    pVmcs->u64RoExitQual.u = u64ExitQual;
    24802488
    2481     Log3(("vmexit: uExitReason=%#RX32 u64ExitQual=%#RX64 cs:rip=%04x:%#RX64\n", uExitReason, pVmcs->u64RoExitQual.u,
    2482           pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip));
     2489    Log3(("vmexit: reason=%#RX32 qual=%#RX64 cs:rip=%04x:%#RX64 cr0=%#RX64 cr3=%#RX64 cr4=%#RX64\n", uExitReason,
     2490          pVmcs->u64RoExitQual.u, pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.cr0,
     2491          pVCpu->cpum.GstCtx.cr3, pVCpu->cpum.GstCtx.cr4));
    24832492
    24842493    /*
     
    74137422
    74147423                                /* Finally, done. */
    7415                                 Log(("%s: cs:rip=%#04x:%#RX64 cr3=%#RX64 cr4=%#RX64 (vmcs=%#RX64) efer=%#RX64 (vmcs=%#RX64)\n", pszInstr,
    7416                                      pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.cr3,
    7417                                      pVmcs->u64GuestCr4.u,
    7418                                      pVCpu->cpum.GstCtx.cr4, pVCpu->cpum.GstCtx.msrEFER, pVmcs->u64GuestEferMsr.u));
     7424                                Log3(("%s: cs:rip=%#04x:%#RX64 cr0=%#RX64 (%#RX64) cr4=%#RX64 (%#RX64) efer=%#RX64\n",
     7425                                     pszInstr, pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.cr0,
     7426                                     pVmcs->u64Cr0ReadShadow.u, pVCpu->cpum.GstCtx.cr4, pVmcs->u64Cr4ReadShadow.u,
     7427                                     pVCpu->cpum.GstCtx.msrEFER));
    74197428                                return VINF_SUCCESS;
    74207429                            }
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