[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Spectre Mitigations in Xen 4.6
Hi, I've been experimenting with Linux 4.14 on Xen 4.6. Now that Intel microcode is generally available, I'm starting to exercise the new mitigation code paths. For Xen 4.6-4.8, microcode loading happens after init_speculation_mitigations, so Xen only detects the boot firmware features. The early microcode loading f97838bbd980 ("x86: Move microcode loading earlier") can be cherry-picked, though small fix ups are needed for bool/true/false -> bool_t/1/0 and smpboot.c:smp_store_cpu_info() to retain "struct cpuinfo_x86 *c = cpu_data + id;". With that in place, I'm seeing Dom0 receive a general protection fault on boot [ 25.460035] general protection fault: 0000 [#1] SMP [ 25.460292] EIP: switch_mm_irqs_off+0xbe/0x600 switch_mm_irqs_off+0xbe is the inlined indirect_branch_prediction_barrier(void) { alternative_msr_write(MSR_IA32_PRED_CMD, PRED_CMD_IBPB, X86_FEATURE_USE_IBPB); } The system boots when dom0 disables IBPB manipulation with nospectre_v2 on the kernel command line. I think Xen ends up here in xen/arch/x86/traps.c:emulate_privileged_op(), case MSR_PRED_CMD: domain_cpuid(currd, 7, 0, &dummy, &dummy, &dummy, &edx); domain_cpuid(currd, 0x80000008, 0, &dummy, &ebx, &dummy, &dummy); if ( !(edx & cpufeat_mask(X86_FEATURE_IBRSB)) && !(ebx & cpufeat_mask(X86_FEATURE_IBPB)) ) goto fail; /* MSR available? */ /* * The only defined behaviour is when writing PRED_CMD_IBPB. In * practice, real hardware accepts any value without faulting. */ if ( eax & PRED_CMD_IBPB ) wrmsrl(MSR_PRED_CMD, PRED_CMD_IBPB); break; ...but Dom0 doesn't have a cpuid policy configured, so the IBRSB/IBPB check fails and we GP. Did I read that correctly? If that is the case, how should Dom0 be handled? Other 4.14 PV & HVM DomUs boot fine and detect (and use?) IBPB once Dom0 boots (with spectre mitigations disabled). Regards, Jason _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |