VirtualBox

Ignore:
Timestamp:
Nov 19, 2022 11:53:25 PM (2 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Must actually reload the initial VMX_VMCS32_CTRL_EXCEPTION_BITMAP in vmxHCRunDebugStateRevert or we'll assert later in vmxHCCheckCachedVmcsCtls.

File:
1 edited

Legend:

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

    r97562 r97614  
    813813{
    814814    PVMXVMCSINFO pVmcsInfo   = pVmxTransient->pVmcsInfo;
    815     uint32_t       uXcptBitmap = pVmcsInfo->u32XcptBitmap;
     815    uint32_t     uXcptBitmap = pVmcsInfo->u32XcptBitmap;
    816816    if ((uXcptBitmap & uXcptMask) != uXcptMask)
    817817    {
     
    852852static int vmxHCRemoveXcptInterceptMask(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t uXcptMask)
    853853{
    854     PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo;
    855     uint32_t   u32XcptBitmap = pVmcsInfo->u32XcptBitmap;
    856     if (u32XcptBitmap & uXcptMask)
     854    PVMXVMCSINFO pVmcsInfo   = pVmxTransient->pVmcsInfo;
     855    uint32_t     uXcptBitmap = pVmcsInfo->u32XcptBitmap;
     856    if (uXcptBitmap & uXcptMask)
    857857    {
    858858#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
     
    889889
    890890            /* Remove it from the exception bitmap. */
    891             u32XcptBitmap &= ~uXcptMask;
     891            uXcptBitmap &= ~uXcptMask;
    892892
    893893            /* Commit and update the cache if necessary. */
    894             if (pVmcsInfo->u32XcptBitmap != u32XcptBitmap)
     894            if (pVmcsInfo->u32XcptBitmap != uXcptBitmap)
    895895            {
    896                 int rc = VMX_VMCS_WRITE_32(pVCpu, VMX_VMCS32_CTRL_EXCEPTION_BITMAP, u32XcptBitmap);
     896                int rc = VMX_VMCS_WRITE_32(pVCpu, VMX_VMCS32_CTRL_EXCEPTION_BITMAP, uXcptBitmap);
    897897                AssertRC(rc);
    898                 pVmcsInfo->u32XcptBitmap = u32XcptBitmap;
     898                pVmcsInfo->u32XcptBitmap = uXcptBitmap;
    899899            }
    900900        }
     
    1112311123       reloading and partial recalculation the next time around. */
    1112411124    if (pDbgState->fModifiedXcptBitmap)
     11125    {
     11126        int rc2 = VMX_VMCS_WRITE_32(pVCpu, VMX_VMCS32_CTRL_EXCEPTION_BITMAP, pDbgState->bmXcptInitial);
     11127        AssertRC(rc2);
    1112511128        pVmcsInfo->u32XcptBitmap = pDbgState->bmXcptInitial;
     11129    }
    1112611130
    1112711131    return rcStrict;
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