Message ID | 20221119034633.1728632-12-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 |
From: Tianyu Lan <ltykernel@gmail.com> Sent: Friday, November 18, 2022 7:46 PM > > The ring buffer is remapped in the hv_ringbuffer_init() > and it should be with decrypt flag in order to share it > with hypervisor in sev-snp enlightened guest. FWIW, the change in this patch is included in Patch 9 in my vTOM-related patch series. > > Signed-off-by: Tianyu Lan <tiala@microsoft.com> > --- > drivers/hv/ring_buffer.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c > index 59a4aa86d1f3..391995c76be7 100644 > --- a/drivers/hv/ring_buffer.c > +++ b/drivers/hv/ring_buffer.c > @@ -18,6 +18,7 @@ > #include <linux/slab.h> > #include <linux/prefetch.h> > #include <linux/io.h> > +#include <linux/set_memory.h> > #include <asm/mshyperv.h> > > #include "hyperv_vmbus.h" > @@ -233,14 +234,18 @@ int hv_ringbuffer_init(struct hv_ring_buffer_info *ring_info, > > ring_info->ring_buffer = (struct hv_ring_buffer *) > vmap(pages_wraparound, page_cnt * 2 - 1, VM_MAP, > + hv_isolation_type_en_snp() ? > + pgprot_decrypted(PAGE_KERNEL_NOENC) : > PAGE_KERNEL); Note that pgprot_decrypted(PAGE_KERNEL_NOENC) can always be used, as it does nothing in a normal VM. Its use doesn't need to be conditional on the isolation type. > > + if (hv_isolation_type_en_snp()) > + memset(ring_info->ring_buffer, 0x00, page_cnt * PAGE_SIZE); My version of the change always does the zero'ing, but only of the first page, as Hyper-V expects the ring buffer header page to be clean. The initial contents of the rest of the ring buffer doesn't really matter. > + > kfree(pages_wraparound); > if (!ring_info->ring_buffer) > return -ENOMEM; > } > > - The above looks like a spurious whitespace change. > ring_info->ring_buffer->read_index = > ring_info->ring_buffer->write_index = 0; > > -- > 2.25.1
On 12/15/2022 2:25 AM, Michael Kelley (LINUX) wrote: > From: Tianyu Lan<ltykernel@gmail.com> Sent: Friday, November 18, 2022 7:46 PM >> The ring buffer is remapped in the hv_ringbuffer_init() >> and it should be with decrypt flag in order to share it >> with hypervisor in sev-snp enlightened guest. > FWIW, the change in this patch is included in Patch 9 > in my vTOM-related patch series. > I will rebase next version on your series. Thanks for reminder.
diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c index 59a4aa86d1f3..391995c76be7 100644 --- a/drivers/hv/ring_buffer.c +++ b/drivers/hv/ring_buffer.c @@ -18,6 +18,7 @@ #include <linux/slab.h> #include <linux/prefetch.h> #include <linux/io.h> +#include <linux/set_memory.h> #include <asm/mshyperv.h> #include "hyperv_vmbus.h" @@ -233,14 +234,18 @@ int hv_ringbuffer_init(struct hv_ring_buffer_info *ring_info, ring_info->ring_buffer = (struct hv_ring_buffer *) vmap(pages_wraparound, page_cnt * 2 - 1, VM_MAP, + hv_isolation_type_en_snp() ? + pgprot_decrypted(PAGE_KERNEL_NOENC) : PAGE_KERNEL); + if (hv_isolation_type_en_snp()) + memset(ring_info->ring_buffer, 0x00, page_cnt * PAGE_SIZE); + kfree(pages_wraparound); if (!ring_info->ring_buffer) return -ENOMEM; } - ring_info->ring_buffer->read_index = ring_info->ring_buffer->write_index = 0;