|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Spectre Mitigations in Xen 4.6
On Tue, Mar 20, 2018 at 11:20 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 20.03.18 at 13:58, <jandryuk@xxxxxxxxx> wrote:
>> 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?
>
> Would you give the patch below a try? Its description doesn't
> fully fit 4.6, but newer versions (where I've done this first) can
> make more use of the new wrapper.
Thanks for the quick turn around. Yup, seems to work.
> Jan
>
> x86/PV: also cover Dom0 in SPEC_CTRL / PRED_CMD emulation
>
> Introduce a helper wrapping the pv_cpuid()-style domain_cpuid() /
> cpuid_count() (or alike) invocations, and use it instead of plain
> domain_cpuid() in MSR access emulation.
>
> Reported-by: Jason Andryuk <jandryuk@xxxxxxxxx>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Tested-by: Jason Andryuk <jandryuk@xxxxxxxxx>
Thanks,
Jasonl
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |