[Top][All Lists]

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

Re: [PATCH] pci: advertise a page aligned ATS

From: Peter Xu
Subject: Re: [PATCH] pci: advertise a page aligned ATS
Date: Wed, 9 Sep 2020 11:43:29 -0400

On Wed, Sep 09, 2020 at 04:17:31PM +0800, Jason Wang wrote:
> After Linux kernel commit 61363c1474b1 ("iommu/vt-d: Enable ATS only
> if the device uses page aligned address."), ATS will be only enabled
> if device advertises a page aligned request.
> Unfortunately, vhost-net is the only user and we don't advertise the
> aligned request capability in the past since both vhost IOTLB and
> address_space_get_iotlb_entry() can support non page aligned request.
> Though it's not clear that if the above kernel commit makes
> sense. Let's advertise a page aligned ATS here to make vhost device
> IOTLB work with Intel IOMMU again.

IIUC the kernel commit should be needed because the VT-d Page Request
Descriptor used the rest bits of the address for other use (bits 11-0), so
logically an unaligned address can be mis-recognized with special meanings.
I'd guess some other archs (with its own IOMMU) might support unaligned
addresses and has different layout of page request descriptor, but not vt-d.

> Note that in the future we may extend pcie_ats_init() to accept
> parameters like queue depth and page alignment.
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Jason Wang <jasowang@redhat.com>

Reviewed-by: Peter Xu <peterx@redhat.com>

Maybe it would be good too that vhost provides real 4k-aligned addresses (in
vhost_iotlb_miss)?  My understanding is that PCI_ATS_CAP_PAGE_ALIGNED will be
more compatible than without the bit set.  E.g., so far vt-d emulation always
cut the address with 4k no matter what iova was passed in.  However not sure
whether this will stop working with some new vIOMMUs joining.


Peter Xu

reply via email to

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