|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/boot: Disable IBRS in intr/nmi exit path at bootup stage
>>> On 27.03.18 at 13:03, <zhenzhong.duan@xxxxxxxxxx> wrote:
> On 2018/3/27 16:52, Jan Beulich wrote:
>>>>> On 27.03.18 at 06:52, <zhenzhong.duan@xxxxxxxxxx> wrote:
>>> --- a/xen/include/asm-x86/spec_ctrl.h
>>> +++ b/xen/include/asm-x86/spec_ctrl.h
>>> @@ -32,8 +32,22 @@ extern uint8_t default_bti_ist_info;
>>> static inline void init_shadow_spec_ctrl_state(void)
>>> {
>>> struct cpu_info *info = get_cpu_info();
>>> + uint32_t val = SPEC_CTRL_IBRS;
>>
>> Why do you need this variable?
> This is a copy of the same code in spec_ctrl_enter_idle() and
> spec_ctrl_exit_idle().
In the latter the variable looks pretty pointless too, but I assume
Andrew has put it there to be as symmetric as possible with the
former, where the variable is used twice.
>>> + /* Initialize IA32_SPEC_CTRL MSR for hotplugging cpu early */
>>> + if ( system_state >= SYS_STATE_active )
>>> + asm volatile (ALTERNATIVE(ASM_NOP3, "wrmsr",
>>> X86_FEATURE_XEN_IBRS_SET)
>>> + :: "a" (val), "c" (MSR_SPEC_CTRL), "d" (0) :
>>> "memory");
>>
>> I can see the point of doing this, but the title of the patch doesn't
>> cover it (I think this has been missing independent of your interrupt/
>> NMI paths consideration).
> Could I make a seperate patch for above four lines?
> Looks hard to describe all these in one title.
Well, addressing separate issues in separate patches would be
better anyway.
>> Further INIT# (unlike RESET#) doesn't clear the register, so you
>> may want/need to also clear the register in the
>> X86_FEATURE_XEN_IBRS_CLEAR case.
> I did consider using ALTERNATIVE_2 here, so dumped the IA32_SPEC_CTRL
> msr's value just after the entry of init_shadow_spec_ctrl_state() for a
> hot-onlining CPU and it's zero, this is the X86_FEATURE_XEN_IBRS_SET case.
> In X86_FEATURE_XEN_IBRS_CLEAR case, will IBRS ever be set?
Remember - we're possibly dealing with post-INIT# state here.
What has run on the CPU before the INIT# is simply unknown.
>> Additionally I think it would be better to keep low and high parts
>> of the value next to each other in the constraints, rather than
>> putting the MSR index in the middle.
> Same copy from spec_ctrl_enter_idle() and spec_ctrl_exit_idle(), maybe
> it's better to have a seperate patch to fix all of them, including the
> variable val.
Perhaps, yes. I didn't notice this ordering aspect when reviewing
the earlier patches.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |