|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 3/8] x86/svm: VMEntry/Exit logic for MSR_SPEC_CTRL
On 26.01.2022 21:16, Andrew Cooper wrote:
> On 26/01/2022 16:50, Jan Beulich wrote:
>> On 26.01.2022 09:44, Andrew Cooper wrote:
>>> 1) It would be slightly more efficient to pass curr and cpu_info into
>>> vm{entry,exit}_spec_ctrl(), but setup of such state can't be in the
>>> ALTERNATIVE block because then the call displacement won't get fixed up.
>>> All the additional accesses are hot off the stack, so almost certainly
>>> negligible compared to the WRMSR.
>> What's wrong with using two instances of ALTERNATIVE, one to setup the
>> call arguments and the 2nd for just the CALL?
>
> Hmm
>
> diff --git a/xen/arch/x86/hvm/svm/entry.S b/xen/arch/x86/hvm/svm/entry.S
> index c718328ac4cf..1d4be7e97ae2 100644
> --- a/xen/arch/x86/hvm/svm/entry.S
> +++ b/xen/arch/x86/hvm/svm/entry.S
> @@ -59,6 +59,7 @@ __UNLIKELY_END(nsvm_hap)
>
> /* WARNING! `ret`, `call *`, `jmp *` not safe beyond this point. */
> /* SPEC_CTRL_EXIT_TO_SVM Req:
> Clob: C */
> + ALTERNATIVE "", __stringify(mov %rbx, %rdi; mov %rsp, %rsi),
> X86_FEATURE_SC_MSR_HVM
> ALTERNATIVE "", __stringify(call vmentry_spec_ctrl),
> X86_FEATURE_SC_MSR_HVM
>
> pop %r15
>
> is somewhat of a long line, but isn't too terrible.
>
> I'm tempted to switch back to using STR() seeing as we have both and it
> is much more concise.
No objections. In fact I think when I introduced stringify.h over 10 years
back, I didn't realize we already had STR(). Quite certainly first and
foremost because of its bogus placement in xen/config.h (same would go for
at least IS_ALIGNED() as well as KB() and friends).
I wouldn't even mind phasing out stringify.h again. Or maybe we want to
move STR() there ...
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |