> -----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
> >

Reply via email to