> -----Original Message-----
> From: Michael Kelley <mhkli...@outlook.com>
> Sent: Sunday, April 20, 2025 4:57 PM
> To: lon...@linuxonhyperv.com; KY Srinivasan <k...@microsoft.com>; Haiyang
> Zhang <haiya...@microsoft.com>; Wei Liu <wei....@kernel.org>; Dexuan Cui
> <de...@microsoft.com>; Greg Kroah-Hartman <gre...@linuxfoundation.org>;
> linux-hyperv@vger.kernel.org; linux-ker...@vger.kernel.org
> Cc: Long Li <lon...@microsoft.com>
> Subject: [EXTERNAL] RE: [PATCH 0/2] Fix uio_hv_generic on 64k page systems
>
> From: lon...@linuxonhyperv.com <lon...@linuxonhyperv.com>
> >
>
> The Subject line of this cover letter is a bit too narrow in scope. The scope
> should
> be any page size larger than 4K. For example, the arm64 architecture permits a
> page size of 16K, and Linux kernels built that way work just fine on Hyper-V
> arm64
> hosts. Perhaps:
>
> Fix uio_hv_generic for guests with page size > 4 KiB
>
> > UIO framework requires the device memory aligned to page boundary.
> > Hyper-V may allocate some memory that is Hyper-V page aligned (4k) but
> > not system page aligned.
> >
> > Fix this by having Hyper-V always allocate those pages on system page
> > boundary and expose them to user-mode.
>
> Also within the scope of making uio_hv_generic work with page size > 4KiB,
> there's an issue with the ring size. When hv_dev_ring_size() returns 0,
> hv_uio_probe() uses 2 MiB as the ring size. That works OK with the larger page
> sizes. But when hv_dev_ring_size() returns a specific value, it might not
> work. The
> fcopy device returns 16 KiB, which will fail. hv_uio_probe() needs to use the
> VMBUS_RING_SIZE() macro to increase the ring size if necessary to handle the
> larger ring header that results if the page size is > 4 KiB. You might want
> to
> include such a patch in this series.
Sure, will use VMBUS_RING_SIZE() to increase ring size if necessary.
Long
>
> Separately, tools/hv/vmbus_bufring.c needs work to operate correctly on
> arm64 and with page sizes > 4 KiB. But that's probably a different patch
> series.
>
> Michael
>
> >
> > Long Li (2):
> > Drivers: hv: Allocate interrupt and monitor pages aligned to system
> > page boundary
> > uio_hv_generic: Use correct size for interrupt and monitor pages
> >
> > drivers/hv/hv_common.c | 29 +++++++----------------------
> > drivers/uio/uio_hv_generic.c | 4 ++--
> > 2 files changed, 9 insertions(+), 24 deletions(-)
> >
> > --
> > 2.34.1
> >