VirtualBox

Changeset 107703 in vbox for trunk/include/iprt/x86.h


Ignore:
Timestamp:
Jan 11, 2025 10:55:53 PM (5 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
166799
Message:

VMM/CPUM: Try consolidate the MSR_IA32_ARCH_CAPABILITIES handling in CPUM and do better sanitizing of what's exposed to the guest. jiraref:VBP-947

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/x86.h

    r107659 r107703  
    14461446 * Logical processor scope. Reset value 0, unaffected by SIPI & INIT. */
    14471447#define MSR_IA32_SPEC_CTRL                  0x48
     1448/** @name MSR_IA32_SPEC_CTRL bits
     1449 * @{ */
    14481450/** IBRS - Indirect branch restricted speculation. */
    1449 #define MSR_IA32_SPEC_CTRL_F_IBRS           RT_BIT_32(0)
     1451#define MSR_IA32_SPEC_CTRL_F_IBRS                   RT_BIT_64(0)
    14501452/** STIBP - Single thread indirect branch predictors. */
    1451 #define MSR_IA32_SPEC_CTRL_F_STIBP          RT_BIT_32(1)
     1453#define MSR_IA32_SPEC_CTRL_F_STIBP                  RT_BIT_64(1)
    14521454/** SSBD - Speculative Store Bypass Disable. */
    1453 #define MSR_IA32_SPEC_CTRL_F_SSBD           RT_BIT_32(2)
     1455#define MSR_IA32_SPEC_CTRL_F_SSBD                   RT_BIT_64(2)
     1456#define MSR_IA32_SPEC_CTRL_F_IPRED_DIS_U            RT_BIT_64(3)
     1457#define MSR_IA32_SPEC_CTRL_F_IPRED_DIS_S            RT_BIT_64(4)
     1458#define MSR_IA32_SPEC_CTRL_F_RRSBA_DIS_U            RT_BIT_64(5)
     1459#define MSR_IA32_SPEC_CTRL_F_RRSBA_DIS_S            RT_BIT_64(6)
     1460#define MSR_IA32_SPEC_CTRL_F_PSFD                   RT_BIT_64(7)
     1461#define MSR_IA32_SPEC_CTRL_F_DDPD_U                 RT_BIT_64(8)
     1462/* 9 is reserved (for DDPD_S?) */
     1463#define MSR_IA32_SPEC_CTRL_F_BHI_DIS_S              RT_BIT_64(9)
     1464/** @} */
    14541465
    14551466/** Prediction command register.
     
    14571468#define MSR_IA32_PRED_CMD                   0x49
    14581469/** IBPB - Indirect branch prediction barrie when written as 1. */
    1459 #define MSR_IA32_PRED_CMD_F_IBPB            RT_BIT_32(0)
     1470#define MSR_IA32_PRED_CMD_F_IBPB                    RT_BIT_64(0)
    14601471
    14611472/** BIOS update trigger (microcode update). */
     
    15741585/** Architecture capabilities (bugfixes). */
    15751586#define MSR_IA32_ARCH_CAPABILITIES          UINT32_C(0x10a)
     1587/** @name MSR_IA32_ARCH_CAPABILITIES bits
     1588 * @{ */
    15761589/** CPU is no subject to meltdown problems. */
    1577 #define MSR_IA32_ARCH_CAP_F_RDCL_NO                 RT_BIT_32(0)
     1590#define MSR_IA32_ARCH_CAP_F_RDCL_NO                 RT_BIT_64(0)
    15781591/** CPU has better IBRS and you can leave it on all the time. */
    1579 #define MSR_IA32_ARCH_CAP_F_IBRS_ALL                RT_BIT_32(1)
     1592#define MSR_IA32_ARCH_CAP_F_IBRS_ALL                RT_BIT_64(1)
    15801593/** CPU has return stack buffer (RSB) override. */
    1581 #define MSR_IA32_ARCH_CAP_F_RSBO                    RT_BIT_32(2)
     1594#define MSR_IA32_ARCH_CAP_F_RSBO                    RT_BIT_64(2)
    15821595/** Virtual machine monitors need not flush the level 1 data cache on VM entry.
    15831596 * This is also the case when MSR_IA32_ARCH_CAP_F_RDCL_NO is set. */
    1584 #define MSR_IA32_ARCH_CAP_F_VMM_NEED_NOT_FLUSH_L1D  RT_BIT_32(3)
     1597#define MSR_IA32_ARCH_CAP_F_VMM_NEED_NOT_FLUSH_L1D  RT_BIT_64(3)
    15851598/** CPU does not suffer from speculative store bypass (SSB) issues.   */
    1586 #define MSR_IA32_ARCH_CAP_F_SSB_NO                  RT_BIT_32(4)
     1599#define MSR_IA32_ARCH_CAP_F_SSB_NO                  RT_BIT_64(4)
    15871600/** CPU does not suffer from microarchitectural data sampling (MDS) issues. */
    1588 #define MSR_IA32_ARCH_CAP_F_MDS_NO                  RT_BIT_32(5)
     1601#define MSR_IA32_ARCH_CAP_F_MDS_NO                  RT_BIT_64(5)
    15891602/** CPU does not suffer MCE after change code page size w/o invlpg issues. */
    1590 #define MSR_IA32_ARCH_CAP_F_IF_PSCHANGE_MC_NO       RT_BIT_32(6)
     1603#define MSR_IA32_ARCH_CAP_F_IF_PSCHANGE_MC_NO       RT_BIT_64(6)
    15911604/** CPU has RTM_DISABLE and TXS_CPUID_CLEAR support. */
    1592 #define MSR_IA32_ARCH_CAP_F_TSX_CTRL                RT_BIT_32(7)
     1605#define MSR_IA32_ARCH_CAP_F_TSX_CTRL                RT_BIT_64(7)
    15931606/** CPU does not suffer from transaction synchronization extensions (TSX)
    15941607 *  asyncrhonous abort (TAA) issues. */
    1595 #define MSR_IA32_ARCH_CAP_F_TAA_NO                  RT_BIT_32(8)
     1608#define MSR_IA32_ARCH_CAP_F_TAA_NO                  RT_BIT_64(8)
    15961609/* 9 is 'reserved' */
    1597 #define MSR_IA32_ARCH_CAP_F_MISC_PACKAGE_CTRLS      RT_BIT_32(10)
    1598 #define MSR_IA32_ARCH_CAP_F_ENERGY_FILTERING_CTL    RT_BIT_32(11)
    1599 #define MSR_IA32_ARCH_CAP_F_DOITM                   RT_BIT_32(12)
    1600 #define MSR_IA32_ARCH_CAP_F_SBDR_SSDP_NO            RT_BIT_32(13)
    1601 #define MSR_IA32_ARCH_CAP_F_FBSDP_NO                RT_BIT_32(14)
    1602 #define MSR_IA32_ARCH_CAP_F_PSDP_NO                 RT_BIT_32(15)
     1610#define MSR_IA32_ARCH_CAP_F_MISC_PACKAGE_CTRLS      RT_BIT_64(10)
     1611#define MSR_IA32_ARCH_CAP_F_ENERGY_FILTERING_CTL    RT_BIT_64(11)
     1612#define MSR_IA32_ARCH_CAP_F_DOITM                   RT_BIT_64(12)
     1613#define MSR_IA32_ARCH_CAP_F_SBDR_SSDP_NO            RT_BIT_64(13)
     1614#define MSR_IA32_ARCH_CAP_F_FBSDP_NO                RT_BIT_64(14)
     1615#define MSR_IA32_ARCH_CAP_F_PSDP_NO                 RT_BIT_64(15)
    16031616/* 16 is 'reserved' */
    1604 #define MSR_IA32_ARCH_CAP_F_FB_CLEAR                RT_BIT_32(17)
    1605 #define MSR_IA32_ARCH_CAP_F_FB_CLEAR_CTRL           RT_BIT_32(18)
    1606 #define MSR_IA32_ARCH_CAP_F_RRSBA                   RT_BIT_32(19)
    1607 #define MSR_IA32_ARCH_CAP_F_BHI_NO                  RT_BIT_32(20)
    1608 #define MSR_IA32_ARCH_CAP_F_XAPIC_DISABLE_STATUS    RT_BIT_32(21)
     1617#define MSR_IA32_ARCH_CAP_F_FB_CLEAR                RT_BIT_64(17)
     1618#define MSR_IA32_ARCH_CAP_F_FB_CLEAR_CTRL           RT_BIT_64(18)
     1619#define MSR_IA32_ARCH_CAP_F_RRSBA                   RT_BIT_64(19)
     1620#define MSR_IA32_ARCH_CAP_F_BHI_NO                  RT_BIT_64(20)
     1621#define MSR_IA32_ARCH_CAP_F_XAPIC_DISABLE_STATUS    RT_BIT_64(21)
    16091622/* 22 is 'reserved' */
    1610 #define MSR_IA32_ARCH_CAP_F_OVERCLOCKING_STATUS     RT_BIT_32(22)
    1611 #define MSR_IA32_ARCH_CAP_F_PBRSB_NO                RT_BIT_32(23)
    1612 #define MSR_IA32_ARCH_CAP_F_GDS_CTRL                RT_BIT_32(24)
    1613 #define MSR_IA32_ARCH_CAP_F_GDS_NO                  RT_BIT_32(25)
    1614 #define MSR_IA32_ARCH_CAP_F_RFDS_NO                 RT_BIT_32(26)
    1615 #define MSR_IA32_ARCH_CAP_F_RFDS_CLEAR              RT_BIT_32(27)
     1623#define MSR_IA32_ARCH_CAP_F_OVERCLOCKING_STATUS     RT_BIT_64(23)
     1624#define MSR_IA32_ARCH_CAP_F_PBRSB_NO                RT_BIT_64(24)
     1625#define MSR_IA32_ARCH_CAP_F_GDS_CTRL                RT_BIT_64(25)
     1626#define MSR_IA32_ARCH_CAP_F_GDS_NO                  RT_BIT_64(26)
     1627#define MSR_IA32_ARCH_CAP_F_RFDS_NO                 RT_BIT_64(27)
     1628#define MSR_IA32_ARCH_CAP_F_RFDS_CLEAR              RT_BIT_64(28)
     1629#define MSR_IA32_ARCH_CAP_F_IGN_UMONITOR_SUPPORT    RT_BIT_64(29)
     1630#define MSR_IA32_ARCH_CAP_F_MON_UMON_MITIG_SUPPORT  RT_BIT_64(30)
     1631/** @} */
    16161632
    16171633/** Flush command register. */
    16181634#define MSR_IA32_FLUSH_CMD                  UINT32_C(0x10b)
    16191635/** Flush the level 1 data cache when this bit is written. */
    1620 #define MSR_IA32_FLUSH_CMD_F_L1D            RT_BIT_32(0)
     1636#define MSR_IA32_FLUSH_CMD_F_L1D                    RT_BIT_64(0)
    16211637
    16221638/** Cache control/info. */
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