VirtualBox

Changeset 97262 in vbox for trunk/src


Ignore:
Timestamp:
Oct 21, 2022 8:10:15 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
154248
Message:

VMM: Nested VMX: bugref:10092 Added fetching VM-exit secondary MSR from the support driver. Updated the virtual VMCS with latest VMCS fields (HLAT prefix size, HLAT ptr, secondary VM-exit controls and PCONFIG-exiting bitmap).

Location:
trunk/src/VBox
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp

    r96811 r97262  
    48554855            if (Msrs.u.vmx.ProcCtls.n.allowed1 & VMX_PROC_CTLS_USE_TERTIARY_CTLS)
    48564856                Msrs.u.vmx.u64ProcCtls3 = ASMRdMsr(MSR_IA32_VMX_PROCBASED_CTLS3);
     4857
     4858            if (Msrs.u.vmx.ExitCtls.n.allowed1 & VMX_EXIT_CTLS_USE_SECONDARY_CTLS)
     4859                Msrs.u.vmx.u64ExitCtls2 = ASMRdMsr(MSR_IA32_VMX_EXIT_CTLS2);
    48574860        }
    48584861        else if (fCaps & SUPVTCAPS_AMD_V)
  • trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h

    r96811 r97262  
    233233 *          - nothing
    234234 */
    235 #define SUPDRV_IOC_VERSION                              0x00330003
     235#define SUPDRV_IOC_VERSION                              0x00330004
    236236
    237237/** SUP_IOCTL_COOKIE. */
  • trunk/src/VBox/HostDrivers/Support/SUPLib.cpp

    r96811 r97262  
    299299        CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
    300300        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00330000
    301                                    ? 0x00330003
     301                                   ? 0x00330004
    302302                                   : SUPDRV_IOC_VERSION & 0xffff0000;
    303303        CookieReq.u.In.u32MinVersion = uMinVersion;
  • trunk/src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp

    r97070 r97262  
    13531353        pFeatures->fVmxExitLoadEferMsr       = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_LOAD_EFER_MSR);
    13541354        pFeatures->fVmxSavePreemptTimer      = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_SAVE_PREEMPT_TIMER);
     1355        pFeatures->fVmxExitCtls2             = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_USE_SECONDARY_CTLS);
    13551356    }
    13561357
  • trunk/src/VBox/VMM/VMMAll/HMAll.cpp

    r96407 r97262  
    849849    pVmxMsrs->u64EptVpidCaps   = pHwvirtMsrs->u.vmx.u64EptVpidCaps;
    850850    pVmxMsrs->u64ProcCtls3     = pHwvirtMsrs->u.vmx.u64ProcCtls3;
     851    pVmxMsrs->u64ExitCtls2     = pHwvirtMsrs->u.vmx.u64ExitCtls2;
    851852}
    852853
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp

    r97222 r97262  
    214214        /*     1 */ RT_UOFFSETOF(VMXVVMCS, u16PostIntNotifyVector),
    215215        /*     2 */ RT_UOFFSETOF(VMXVVMCS, u16EptpIndex),
    216         /*  3-10 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    217         /* 11-18 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    218         /* 19-26 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    219         /*    27 */ UINT16_MAX,
     216        /*     3 */ RT_UOFFSETOF(VMXVVMCS, u16HlatPrefixSize),
     217        /*  4-11 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     218        /* 12-19 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     219        /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     220        /* 28-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    220221    },
    221222    /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */
     
    224225        /*  8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    225226        /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    226         /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     227        /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     228        /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
    227229    },
    228230    /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */
     
    240242        /* 10-17 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    241243        /* 18-25 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    242         /* 26-27 */ UINT16_MAX, UINT16_MAX
     244        /* 26-33 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     245        /*    34 */ UINT16_MAX
    243246    },
    244247    /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */
     
    253256        /*  7-14 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    254257        /* 15-22 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    255         /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     258        /* 23-30 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     259        /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    256260    },
    257261    /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_CONTROL: */
     
    284288        /*    25 */ RT_UOFFSETOF(VMXVVMCS, u64TscMultiplier),
    285289        /*    26 */ RT_UOFFSETOF(VMXVVMCS, u64ProcCtls3),
    286         /*    27 */ RT_UOFFSETOF(VMXVVMCS, u64EnclvExitBitmap)
     290        /*    27 */ RT_UOFFSETOF(VMXVVMCS, u64EnclvExitBitmap),
     291        /*    28 */ UINT16_MAX,
     292        /*    29 */ UINT16_MAX,
     293        /*    30 */ UINT16_MAX,
     294        /*    31 */ RT_UOFFSETOF(VMXVVMCS, u64PconfigExitBitmap),
     295        /*    32 */ RT_UOFFSETOF(VMXVVMCS, u64HlatPtr),
     296        /*    33 */ UINT16_MAX,
     297        /*    34 */ RT_UOFFSETOF(VMXVVMCS, u64ExitCtls2)
    287298    },
    288299    /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */
     
    292303        /*  9-16 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    293304        /* 17-24 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    294         /* 25-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
     305        /* 25-32 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     306        /* 33-34*/  UINT16_MAX, UINT16_MAX
    295307    },
    296308    /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */
     
    310322        /*    12 */ RT_UOFFSETOF(VMXVVMCS, u64GuestPkrsMsr),
    311323        /* 13-20 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    312         /* 21-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     324        /* 21-28 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     325        /* 29-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    313326    },
    314327    /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */
     
    320333        /*  4-11 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    321334        /* 12-19 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    322         /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     335        /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     336        /* 28-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    323337    },
    324338    /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_CONTROL: */
     
    343357        /*    17 */ RT_UOFFSETOF(VMXVVMCS, u32PleWindow),
    344358        /* 18-25 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    345         /* 26-27 */ UINT16_MAX, UINT16_MAX
     359        /* 26-33 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     360        /*    34 */ UINT16_MAX
    346361    },
    347362    /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */
     
    357372        /*  8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    358373        /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    359         /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     374        /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     375        /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
    360376    },
    361377    /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */
     
    385401        /*    22 */ UINT16_MAX,
    386402        /*    23 */ RT_UOFFSETOF(VMXVVMCS, u32PreemptTimer),
    387         /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     403        /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     404        /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
    388405    },
    389406    /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */
     
    393410        /*  9-16 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    394411        /* 17-24 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    395         /* 25-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
     412        /* 25-32 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     413        /* 33-34 */ UINT16_MAX, UINT16_MAX
    396414    },
    397415    /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_CONTROL: */
     
    407425        /*  8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    408426        /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    409         /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     427        /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     428        /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX
    410429    },
    411430    /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */
     
    419438        /*  6-13 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    420439        /* 14-21 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    421         /* 22-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     440        /* 22-29 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     441        /* 30-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    422442    },
    423443    /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_GUEST_STATE: */
     
    446466        /*    21 */ RT_UOFFSETOF(VMXVVMCS, u64GuestSsp),
    447467        /*    22 */ RT_UOFFSETOF(VMXVVMCS, u64GuestIntrSspTableAddrMsr),
    448         /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     468        /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     469        /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    449470    },
    450471    /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_HOST_STATE: */
     
    466487        /*    14 */ RT_UOFFSETOF(VMXVVMCS, u64HostIntrSspTableAddrMsr),
    467488        /* 15-22 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
    468         /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
     489        /* 23-30 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
     490        /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX
    469491    }
    470492};
  • trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h

    r97248 r97262  
    328328    VMX_VMCS16_POSTED_INT_NOTIFY_VECTOR,
    329329    VMX_VMCS16_EPTP_INDEX,
     330    VMX_VMCS16_HLAT_PREFIX_SIZE,
    330331
    331332    /* 16-bit guest-state fields. */
     
    407408    VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_FULL,
    408409    VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_HIGH,
     410    VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_FULL,
     411    VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_HIGH,
     412    VMX_VMCS64_CTRL_HLAT_PTR_FULL,
     413    VMX_VMCS64_CTRL_HLAT_PTR_HIGH,
     414    VMX_VMCS64_CTRL_EXIT2_FULL,
     415    VMX_VMCS64_CTRL_EXIT2_HIGH,
    409416
    410417    /* 64-bit read-only data fields. */
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r97231 r97262  
    386386    SSMFIELD_ENTRY(       VMXVVMCS, u16PostIntNotifyVector),
    387387    SSMFIELD_ENTRY(       VMXVVMCS, u16EptpIndex),
     388    SSMFIELD_ENTRY_VER(   VMXVVMCS, u16HlatPrefixSize,           CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3),
    388389    SSMFIELD_ENTRY_IGNORE(VMXVVMCS, au16Reserved0),
    389390
     
    436437    SSMFIELD_ENTRY_VER(   VMXVVMCS, u64ProcCtls3,                CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2),
    437438    SSMFIELD_ENTRY_VER(   VMXVVMCS, u64EnclvExitBitmap,          CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2),
     439    SSMFIELD_ENTRY_VER(   VMXVVMCS, u64PconfigExitBitmap,        CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3),
     440    SSMFIELD_ENTRY_VER(   VMXVVMCS, u64HlatPtr,                  CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3),
     441    SSMFIELD_ENTRY_VER(   VMXVVMCS, u64ExitCtls2,                CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3),
    438442    SSMFIELD_ENTRY_IGNORE(VMXVVMCS, au64Reserved0),
    439443
     
    14531457                                 | (pGuestFeatures->fVmxExitSaveEferMsr   << VMX_BF_EXIT_CTLS_SAVE_EFER_MSR_SHIFT       )
    14541458                                 | (pGuestFeatures->fVmxExitLoadEferMsr   << VMX_BF_EXIT_CTLS_LOAD_EFER_MSR_SHIFT       )
    1455                                  | (pGuestFeatures->fVmxSavePreemptTimer  << VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT  );
     1459                                 | (pGuestFeatures->fVmxSavePreemptTimer  << VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT  )
     1460                                 | (pGuestFeatures->fVmxExitCtls2         << VMX_BF_EXIT_CTLS_USE_SECONDARY_CTLS_SHIFT  );
    14561461        /* Set the default1 class bits. See Intel spec. A.4 "VM-exit Controls". */
    14571462        uint32_t const fAllowed0 = VMX_EXIT_CTLS_DEFAULT1;
     
    18411846    EmuFeat.fVmxExitLoadEferMsr       = 1;
    18421847    EmuFeat.fVmxSavePreemptTimer      = 0;  /* Cannot be enabled if VMX-preemption timer is disabled. */
     1848    EmuFeat.fVmxExitCtls2             = 0;
    18431849    EmuFeat.fVmxExitSaveEferLma       = 1;  /* Cannot be disabled if unrestricted guest is enabled. */
    18441850    EmuFeat.fVmxPt                    = 0;
     
    19221928    pGuestFeat->fVmxExitLoadEferMsr       = (pBaseFeat->fVmxExitLoadEferMsr       & EmuFeat.fVmxExitLoadEferMsr      );
    19231929    pGuestFeat->fVmxSavePreemptTimer      = (pBaseFeat->fVmxSavePreemptTimer      & EmuFeat.fVmxSavePreemptTimer     );
     1930    pGuestFeat->fVmxExitCtls2             = (pBaseFeat->fVmxExitCtls2             & EmuFeat.fVmxExitCtls2            );
    19241931    pGuestFeat->fVmxExitSaveEferLma       = (pBaseFeat->fVmxExitSaveEferLma       & EmuFeat.fVmxExitSaveEferLma      );
    19251932    pGuestFeat->fVmxPt                    = (pBaseFeat->fVmxPt                    & EmuFeat.fVmxPt                   );
     
    26112618            SSMR3PutU64(pSSM,      pGstCtx->hwvirt.vmx.Msrs.u64EptVpidCaps);
    26122619            SSMR3PutU64(pSSM,      pGstCtx->hwvirt.vmx.Msrs.u64ProcCtls3);
     2620            SSMR3PutU64(pSSM,      pGstCtx->hwvirt.vmx.Msrs.u64ExitCtls2);
    26132621        }
    26142622        SSMR3PutU32(pSSM, pVCpu->cpum.s.fUseFlags);
     
    26442652     * Validate version.
    26452653     */
    2646     if (    uVersion != CPUM_SAVED_STATE_VERSION_PAE_PDPES
     2654    if (    uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3
     2655        &&  uVersion != CPUM_SAVED_STATE_VERSION_PAE_PDPES
    26472656        &&  uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2
    26482657        &&  uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX
     
    29082917                        if (uVersion >= CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2)
    29092918                            SSMR3GetU64(pSSM,  &pGstCtx->hwvirt.vmx.Msrs.u64ProcCtls3);
     2919                        if (uVersion >= CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3)
     2920                            SSMR3GetU64(pSSM,  &pGstCtx->hwvirt.vmx.Msrs.u64ExitCtls2);
    29102921                    }
    29112922                }
     
    37763787        pHlp->pfnPrintf(pHlp, "  %sPosted intr notify vector  = %#RX16\n",   pszPrefix, pVmcs->u16PostIntNotifyVector);
    37773788        pHlp->pfnPrintf(pHlp, "  %sEPTP index                 = %#RX16\n",   pszPrefix, pVmcs->u16EptpIndex);
     3789        pHlp->pfnPrintf(pHlp, "  %sHLAT prefix size           = %#RX16\n",   pszPrefix, pVmcs->u16HlatPrefixSize);
    37783790
    37793791        /* 32-bit. */
     
    38353847        pHlp->pfnPrintf(pHlp, "  %sTertiary processor ctls    = %#RX64\n",   pszPrefix, pVmcs->u64ProcCtls3.u);
    38363848        pHlp->pfnPrintf(pHlp, "  %sENCLV-exiting bitmap       = %#RX64\n",   pszPrefix, pVmcs->u64EnclvExitBitmap.u);
     3849        pHlp->pfnPrintf(pHlp, "  %sPCONFIG-exiting bitmap     = %#RX64\n",   pszPrefix, pVmcs->u64PconfigExitBitmap.u);
     3850        pHlp->pfnPrintf(pHlp, "  %sHLAT ptr                   = %#RX64\n",   pszPrefix, pVmcs->u64HlatPtr.u);
     3851        pHlp->pfnPrintf(pHlp, "  %sSecondary VM-exit controls = %#RX64\n",   pszPrefix, pVmcs->u64ExitCtls2.u);
    38373852
    38383853        /* Natural width. */
  • trunk/src/VBox/VMM/include/CPUMInternal.h

    r97231 r97262  
    106106 * @{ */
    107107/** The current saved state version. */
    108 #define CPUM_SAVED_STATE_VERSION                CPUM_SAVED_STATE_VERSION_PAE_PDPES
     108#define CPUM_SAVED_STATE_VERSION                CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3
     109/** The saved state version with more virtual VMCS fields (HLAT prefix size,
     110 *  PCONFIG-exiting bitmap, HLAT ptr, VM-exit ctls2) and a CPUMCTX field (VM-exit
     111 *  ctls2 MSR). */
     112#define CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3   22
    109113/** The saved state version with PAE PDPEs added. */
    110114#define CPUM_SAVED_STATE_VERSION_PAE_PDPES      21
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