[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] pci: advertise a page aligned ATS
From: |
Michael S. Tsirkin |
Subject: |
Re: [PATCH] pci: advertise a page aligned ATS |
Date: |
Thu, 15 Oct 2020 09:10:48 -0400 |
On Thu, Oct 15, 2020 at 03:47:09PM +0800, Jason Wang wrote:
>
> On 2020/9/9 下午4:17, 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.
> >
> > 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>
> > ---
> > hw/pci/pcie.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
> > index 5b48bae0f6..d4010cf8f3 100644
> > --- a/hw/pci/pcie.c
> > +++ b/hw/pci/pcie.c
> > @@ -971,8 +971,9 @@ void pcie_ats_init(PCIDevice *dev, uint16_t offset)
> > dev->exp.ats_cap = offset;
> > - /* Invalidate Queue Depth 0, Page Aligned Request 0 */
> > - pci_set_word(dev->config + offset + PCI_ATS_CAP, 0);
> > + /* Invalidate Queue Depth 0, Page Aligned Request 1 */
> > + pci_set_word(dev->config + offset + PCI_ATS_CAP,
> > + PCI_ATS_CAP_PAGE_ALIGNED);
> > /* STU 0, Disabled by default */
> > pci_set_word(dev->config + offset + PCI_ATS_CTRL, 0);
>
>
> Ping, Michael, want to pick this patch?
>
> Thanks
Tagged, thanks!