From: Tianyu Lan <ltykernel@xxxxxxxxx> Sent: Monday, June 26, 2023 8:23 PM > > hv vp assist page needs to be shared between SEV-SNP guest and Hyper-V. > So mark the page unencrypted in the SEV-SNP guest. > > Signed-off-by: Tianyu Lan <tiala@xxxxxxxxxxxxx> > --- > arch/x86/hyperv/hv_init.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c > index 1ba367a9686e..b004370d3b01 100644 > --- a/arch/x86/hyperv/hv_init.c > +++ b/arch/x86/hyperv/hv_init.c > @@ -18,6 +18,7 @@ > #include <asm/hyperv-tlfs.h> > #include <asm/mshyperv.h> > #include <asm/idtentry.h> > +#include <asm/set_memory.h> > #include <linux/kexec.h> > #include <linux/version.h> > #include <linux/vmalloc.h> > @@ -106,8 +107,21 @@ static int hv_cpu_init(unsigned int cpu) > * in hv_cpu_die(), otherwise a CPU may not be stopped in the > * case of CPU offlining and the VM will hang. > */ > - if (!*hvp) > + if (!*hvp) { > *hvp = __vmalloc(PAGE_SIZE, GFP_KERNEL | __GFP_ZERO); > + > + /* > + * Hyper-V should never specify a VM that is a Confidential > + * VM and also running in the root partition. Root partition > + * is blocked to run in Confidential VM. So only decrypt assist > + * page in non-root partition here. > + */ > + if (*hvp && hv_isolation_type_en_snp()) { > + WARN_ON_ONCE(set_memory_decrypted((unsigned > long)(*hvp), 1)); > + memset(*hvp, 0, PAGE_SIZE); > + } > + } > + > if (*hvp) > msr.pfn = vmalloc_to_pfn(*hvp); > > -- > 2.25.1 Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>