boot_cpu_has(X86_FEATURE_IBRS));
/*
- * First, disable the use of retpolines if Xen is using shadow stacks, as
- * they are incompatible.
+ * First, disable the use of retpolines if Xen is using CET. Retpolines
+ * are a ROP gadget so incompatbile with Shadow Stacks, while IBT depends
+ * on executing indirect branches for the safety properties to apply.
*
* In the absence of retpolines, IBRS needs to be used for speculative
* safety. All CET-capable hardware has efficient IBRS.
*/
- if ( cpu_has_xen_shstk )
+ if ( read_cr4() & X86_CR4_CET )
{
if ( !has_spec_ctrl )
printk(XENLOG_WARNING "?!? CET active, but no MSR_SPEC_CTRL?\n");