From: Tianyu Lan <ltykernel@xxxxxxxxx> Sent: Wednesday, July 26, 2023 6:47 AM > > On 7/26/2023 11:44 AM, Michael Kelley (LINUX) wrote: > >> diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h > >> index 2fa38e9f6207..025eda129d99 100644 > >> --- a/arch/x86/include/asm/mshyperv.h > >> +++ b/arch/x86/include/asm/mshyperv.h > >> @@ -64,12 +64,12 @@ static inline u64 hv_do_hypercall(u64 control, void *input, > void *output) > >> if (!hv_hypercall_pg) > >> return U64_MAX; > >> > >> - __asm__ __volatile__("mov %4, %%r8\n" > >> - CALL_NOSPEC > >> + __asm__ __volatile__("mov %[output], %%r8\n" > >> + ALTERNATIVE("vmmcall", CALL_NOSPEC, X86_FEATURE_SEV_ES) > > Since this code is for SEV-SNP, what's the thinking behind using > > X86_FEATURE_SEV_ES in the ALTERNATIVE statements? Don't you need > > to use X86_FEATURE_SEV_SNP (which is being added in another patch set that > > Boris Petkov pointed out). > > Hi Michael: > Thanks for your review. The patch mentioned by Boris has not been > merged and so still use X86_FEATURE_SEV_ES here. We may replace the > feature flag with X86_FEATURE_SEV_SNP after it's upstreamed. > Just so I'm clear, is it true that in an SEV-SNP VM, the CPUID flags for SEV-ES *and* SEV-SNP are set? That would seem to be necessary for your approach to work. I wonder if it would be better to take the patch from Brijesh Singh that adds X86_FEATURE_SEV_SNP and add it to your patch set (with Brijesh's agreement, of course). That patch is small and straightforward. > > > > Also, does this patch depend on Peter Zijlstra's patch to support nested > > ALTERNATIVE statements? If so, that needs to be called out, probably in > > the cover letter. Peter's patch doesn't yet appear in linux-next. > > > > It may work without Peterz's patch. Please see > https://lkml.org/lkml/2023/6/27/520 > Peterz's patch optimizes ALTERNATIVE_n implementation with nested > expression. OK, good. Michael