#define ARCH_CAPS_TSX_CTRL (1 << 7)
#define MSR_TSX_FORCE_ABORT 0x0000010f
#define MSR_TSX_CTRL 0x00000122
+#define MSR_MCU_OPT_CTRL 0x00000123
static unsigned int nr_failures;
#define fail(fmt, ...) \
printf("Testing MSR_TSX_CTRL consistency\n");
test_tsx_msr_consistency(
MSR_TSX_CTRL, host.msr.arch_caps.tsx_ctrl);
+
+ printf("Testing MSR_MCU_OPT_CTRL consistency\n");
+ test_tsx_msr_consistency(
+ MSR_MCU_OPT_CTRL, host.cpuid.feat.srbds_ctrl);
}
/*
if ( ((cm->feat.raw[0].d | cd->feat.raw[0].d) &
(bitmaskof(X86_FEATURE_TSX_FORCE_ABORT) |
- bitmaskof(X86_FEATURE_RTM_ALWAYS_ABORT))) ||
+ bitmaskof(X86_FEATURE_RTM_ALWAYS_ABORT) |
+ bitmaskof(X86_FEATURE_SRBDS_CTRL))) ||
((mm->arch_caps.raw | md->arch_caps.raw) & ARCH_CAPS_TSX_CTRL) )
fail(" Xen-only TSX controls offered to guest\n");
if ( guest_policy.cpuid.feat.hle ||
guest_policy.cpuid.feat.tsx_force_abort ||
guest_policy.cpuid.feat.rtm_always_abort ||
+ guest_policy.cpuid.feat.srbds_ctrl ||
guest_policy.msr.arch_caps.tsx_ctrl )
fail(" Unexpected features advertised\n");