Print this page
16413 Post-barrier Return Stack Buffer (consider no-eIBRS cases)
16413 Post-barrier Return Stack Buffer (PBRSB) fixes can be detected in HW

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/sys/x86_archext.h
          +++ new/usr/src/uts/intel/sys/x86_archext.h
↓ open down ↓ 926 lines elided ↑ open up ↑
 927  927  #define X86FSET_VPCLMULQDQ      101
 928  928  #define X86FSET_LFENCE_SER      102
 929  929  #define X86FSET_GFNI            103
 930  930  #define X86FSET_AVX512_VP2INT   104
 931  931  #define X86FSET_AVX512_BITALG   105
 932  932  #define X86FSET_AVX512_VBMI2    106
 933  933  #define X86FSET_AVX512_BF16     107
 934  934  #define X86FSET_AUTO_IBRS       108
 935  935  #define X86FSET_RFDS_NO         109
 936  936  #define X86FSET_RFDS_CLEAR      110
      937 +#define X86FSET_PBRSB_NO        111
 937  938  
 938  939  /*
 939  940   * Intel Deep C-State invariant TSC in leaf 0x80000007.
 940  941   */
 941  942  #define CPUID_TSC_CSTATE_INVARIANCE     (0x100)
 942  943  
 943  944  /*
 944  945   * Intel TSC deadline timer
 945  946   */
 946  947  #define CPUID_DEADLINE_TSC      (1 << 24)
↓ open down ↓ 632 lines elided ↑ open up ↑
1579 1580   * ABI to hold meaningful values. Adding additional bits here can have serious
1580 1581   * performance implications and cause performance degradations when using the
1581 1582   * FPU vector (xmm) registers.
1582 1583   */
1583 1584  #define XFEATURE_FP_INITIAL     (XFEATURE_LEGACY_FP | XFEATURE_SSE)
1584 1585  
1585 1586  #if !defined(_ASM)
1586 1587  
1587 1588  #if defined(_KERNEL) || defined(_KMEMUSER)
1588 1589  
1589      -#define NUM_X86_FEATURES        111
     1590 +#define NUM_X86_FEATURES        112
1590 1591  extern uchar_t x86_featureset[];
1591 1592  
1592 1593  extern void free_x86_featureset(void *featureset);
1593 1594  extern boolean_t is_x86_feature(void *featureset, uint_t feature);
1594 1595  extern void add_x86_feature(void *featureset, uint_t feature);
1595 1596  extern void remove_x86_feature(void *featureset, uint_t feature);
1596 1597  extern boolean_t compare_x86_featureset(void *setA, void *setB);
1597 1598  extern void print_x86_featureset(void *featureset);
1598 1599  
1599 1600  
↓ open down ↓ 2 lines elided ↑ open up ↑
1602 1603  extern uint_t x86_clflush_size;
1603 1604  
1604 1605  extern uint_t pentiumpro_bug4046376;
1605 1606  
1606 1607  /*
1607 1608   * These functions are all used to perform various side-channel mitigations.
1608 1609   * Please see uts/i86pc/os/cpuid.c for more information.
1609 1610   */
1610 1611  extern void (*spec_uarch_flush)(void);
1611 1612  extern void x86_rsb_stuff(void);
     1613 +extern void x86_rsb_stuff_vmexit(void);
1612 1614  extern void x86_md_clear(void);
1613 1615  
1614 1616  #endif
1615 1617  
1616 1618  #if defined(_KERNEL)
1617 1619  
1618 1620  /*
1619 1621   * This structure is used to pass arguments and get return values back
1620 1622   * from the CPUID instruction in __cpuid_insn() routine.
1621 1623   */
↓ open down ↓ 255 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX