[PATCH v3 03/11] Drivers: hv: vmbus: Introduce types of GPADL
Michael Kelley
mikelley at microsoft.com
Sat Sep 12 15:29:38 EDT 2020
From: Boqun Feng <boqun.feng at gmail.com> Sent: Thursday, September 10, 2020 7:35 AM
>
> This patch introduces two types of GPADL: HV_GPADL_{BUFFER, RING}. The
> types of GPADL are purely the concept in the guest, IOW the hypervisor
> treat them as the same.
>
> The reason of introducing the types for GPADL is to support guests whose
> page size is not 4k (the page size of Hyper-V hypervisor). In these
> guests, both the headers and the data parts of the ringbuffers need to
> be aligned to the PAGE_SIZE, because 1) some of the ringbuffers will be
> mapped into userspace and 2) we use "double mapping" mechanism to
> support fast wrap-around, and "double mapping" relies on ringbuffers
> being page-aligned. However, the Hyper-V hypervisor only uses 4k
> (HV_HYP_PAGE_SIZE) headers. Our solution to this is that we always make
> the headers of ringbuffers take one guest page and when GPADL is
> established between the guest and hypervisor, the only first 4k of
> header is used. To handle this special case, we need the types of GPADL
> to differ different guest memory usage for GPADL.
>
> Type enum is introduced along with several general interfaces to
> describe the differences between normal buffer GPADL and ringbuffer
> GPADL.
>
> Signed-off-by: Boqun Feng <boqun.feng at gmail.com>
> ---
> drivers/hv/channel.c | 160 +++++++++++++++++++++++++++++++++++------
> include/linux/hyperv.h | 44 +++++++++++-
> 2 files changed, 183 insertions(+), 21 deletions(-)
>
Reviewed-by: Michael Kelley <mikelley at microsoft.com>
More information about the linux-arm-kernel
mailing list