qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] vfio: Align iova also to IOMMU page size


From: Alex Williamson
Subject: Re: [Qemu-devel] [PATCH] vfio: Align iova also to IOMMU page size
Date: Wed, 02 Dec 2015 12:05:39 -0700

On Wed, 2015-11-25 at 10:00 +0300, Pavel Fedin wrote:
>  Hello!
> 
> > There are a number of different interesting page sizes here:
> >  * the host kernel page size
> >  * the target CPU architecture's worst-case smallest page size
> >  * the page size the guest kernel is actually using at the moment
> >    (consider a 4K-page guest kernel on a 64K-page host kernel)
> > 
> > These don't necessarily have to all be the same. I would
> > expect VFIO to be interested in the host kernel page size,
> > not TARGET_PAGE_ALIGN.
> 
>  So would the appropriate fix be just replacing TARGET_PAGE_ALIGN with 
> HOST_PAGE_ALIGN?
>  Alex: there's however, still no answer to "why are we aligning up, not 
> down?" question..


Sorry for the late reply, I've been on holiday.  It may simply be a
matter of "because it worked".  If we round down then any sub-mapping
within the page aliases to the same IOMMU mappings and we don't know how
to deal with that.  Duplicate IOMMU mappings will fail and any unmap
will unmap the whole page.  As it is, sub-page mappings get ignored,
which is sometimes the correct (or at least adequate) behavior.

For instance, one case I know of realtek NICs with a 4K PCI BAR which is
split by a quirk.  We currently align up, which means that either side
of the mapping is ignored (becomes zero sized).  Being an MMIO region,
dropping the mapping disables peer-to-peer for this area, which is
generally not something that gets used anyway.  The right thing to do
would be to ignore the quirk for the IOMMU mapping, but then we need
enough smarts to handle not failing when the second sub-region is
mapped.

We might do the same thing in some of the x86-specific PAM regions, but
these are never DMA targets, so it doesn't cause problems either.

So I don't think there's an easy solution of "just round down", it
involves something much more significant than that.  It might be the
right thing to do though if we ever expect any of those sub-mappings to
be DMA targets.  Thanks,

Alex




reply via email to

[Prev in Thread] Current Thread [Next in Thread]