Message ID | 20230501085726.544209-3-ltykernel@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86/hyperv/sev: Add AMD sev-snp enlightened guest support on hyperv | expand |
On 5/1/23 03:57, Tianyu Lan wrote: > From: Tianyu Lan <tiala@microsoft.com> > > hv vp assist page is shared between sev snp guest and hyperv. Decrypt > the page when use it. You aren't actually decrypting the page, you're changing the mapping from private/encrypted to shared/unencrypted (hence the memset that follows to clear the page to zeroes). And please capitalize where necessary, e.g., SEV-SNP, Hyper-V, etc. Thanks, Tom > > Signed-off-by: Tianyu Lan <tiala@microsoft.com> > --- > arch/x86/hyperv/hv_init.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c > index a5f9474f08e1..9f3e2d71d015 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> > @@ -113,6 +114,11 @@ static int hv_cpu_init(unsigned int cpu) > > } > if (!WARN_ON(!(*hvp))) { > + if (hv_isolation_type_en_snp()) { > + WARN_ON_ONCE(set_memory_decrypted((unsigned long)(*hvp), 1)); > + memset(*hvp, 0, PAGE_SIZE); > + } > + > msr.enable = 1; > wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, msr.as_uint64); > }
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index a5f9474f08e1..9f3e2d71d015 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> @@ -113,6 +114,11 @@ static int hv_cpu_init(unsigned int cpu) } if (!WARN_ON(!(*hvp))) { + if (hv_isolation_type_en_snp()) { + WARN_ON_ONCE(set_memory_decrypted((unsigned long)(*hvp), 1)); + memset(*hvp, 0, PAGE_SIZE); + } + msr.enable = 1; wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, msr.as_uint64); }