From: Jason Gunthorpe <jgg@ziepe.ca>
To: Vasant Hegde <vasant.hegde@amd.com>
Cc: iommu@lists.linux.dev, joro@8bytes.org,
suravee.suthikulpanit@amd.com, wei.huang2@amd.com,
jsnitsel@redhat.com
Subject: Re: [PATCH v6 08/15] iommu/amd: Enable PCI features based on attached domain capability
Date: Mon, 4 Mar 2024 20:32:19 -0400 [thread overview]
Message-ID: <20240305003219.GC9225@ziepe.ca> (raw)
In-Reply-To: <20240209112930.63663-9-vasant.hegde@amd.com>
On Fri, Feb 09, 2024 at 11:29:23AM +0000, Vasant Hegde wrote:
> Commit eda8c2860ab ("iommu/amd: Enable device ATS/PASID/PRI capabilities
> independently") changed the way it enables device capability while
> attaching devices. I missed to account the attached domain capability.
> Meaning if domain is not capable of handling PASID/PRI (ex: paging
> domain with v1 page table) then enabling device feature is not required.
>
> This patch enables PASID/PRI only if domain is capable of handling SVA.
> Also move pci feature enablement to do_attach() function so that we make
> SVA capability in one place. Finally make PRI enable/disable functions as
> static functions.
> @@ -2036,6 +2038,7 @@ static int do_attach(struct iommu_dev_data *dev_data,
> struct protection_domain *domain)
> {
> struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data);
> + struct pci_dev *pdev;
> int ret = 0;
>
> /* Update data structures */
> @@ -2050,10 +2053,16 @@ static int do_attach(struct iommu_dev_data *dev_data,
> domain->dev_iommu[iommu->index] += 1;
> domain->dev_cnt += 1;
>
> + pdev = dev_is_pci(dev_data->dev) ? to_pci_dev(dev_data->dev) : NULL;
> if (pdom_is_sva_capable(domain)) {
> ret = init_gcr3_table(dev_data, domain);
> if (ret)
> return ret;
> +
> + if (pdev)
> + pdev_enable_caps(pdev);
But here we are turning PRI on for an IDENTITY domain and for a v2
domain that doesn't have a PRI handler. This is not technically what
we want to see, the PRI capability at the device should only be turned
on when a PRI handler is available in the SW side. Otherwise PRI
should be off and non-present ATS responses should fail in the device.
ATS is not like that, ATS should be enabled whenever the system iommu
can support it. For AMD I guess that is always?
Also, PASID enablement looks like the wrong spot too, it should be
done in the probe_device() callback and stay enabled. The bit is set
if the IOMMU HW can decode the PASID TLP. Ie don't enable it on old
IOMMU HW that can't understand PASID.
However all of this is basically pre-existing problems at this point
and this patch is improving things as they are so
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Jason
next prev parent reply other threads:[~2024-03-05 0:32 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-09 11:29 [PATCH v6 00/15] iommu/amd: SVA Support (Part 4) - SVA and IOPF Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 01/15] iommu/amd: Rename amd_iommu_v2_supported() as amd_iommu_pasid_supported() Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 02/15] iommu/amd: Introduce per device DTE update function Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 03/15] iommu/amd: Add support for enabling/disabling IOMMU features Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 04/15] iommu/amd: Move PPR-related functions into ppr.c Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 05/15] iommu/amd: Fix PPR interrupt processing logic Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 06/15] iommu/amd: Introduce iommu_dev_data.max_pasids Vasant Hegde
2024-03-04 23:46 ` Jason Gunthorpe
2024-02-09 11:29 ` [PATCH v6 07/15] iommu/amd: Setup GCR3 table in advance if domain is SVA capable Vasant Hegde
2024-03-05 0:11 ` Jason Gunthorpe
2024-03-11 11:20 ` Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 08/15] iommu/amd: Enable PCI features based on attached domain capability Vasant Hegde
2024-03-05 0:32 ` Jason Gunthorpe [this message]
2024-03-05 15:10 ` Vasant Hegde
2024-03-05 16:01 ` Jason Gunthorpe
2024-03-11 10:02 ` Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 09/15] iommu/amd: Define per-IOMMU iopf_queue Vasant Hegde
2024-03-05 0:33 ` Jason Gunthorpe
2024-02-09 11:29 ` [PATCH v6 10/15] iommu/amd: Add support for page response Vasant Hegde
2024-03-05 0:35 ` Jason Gunthorpe
2024-02-09 11:29 ` [PATCH v6 11/15] iommu/amd: Add IO page fault notifier handler Vasant Hegde
2024-03-05 0:40 ` Jason Gunthorpe
2024-03-11 11:00 ` Vasant Hegde
2024-03-19 17:54 ` Jason Gunthorpe
2024-02-09 11:29 ` [PATCH v6 12/15] iommu/amd: Add support for enable/disable IOPF Vasant Hegde
2024-03-05 0:42 ` Jason Gunthorpe
2024-03-05 15:21 ` Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 13/15] iommu/amd: Initial SVA support for AMD IOMMU Vasant Hegde
2024-03-05 0:50 ` Jason Gunthorpe
2024-03-11 11:11 ` Vasant Hegde
2024-03-19 17:56 ` Jason Gunthorpe
2024-03-27 6:15 ` Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 14/15] iommu: Add ops->domain_alloc_sva() Vasant Hegde
2024-02-09 11:29 ` [PATCH v6 15/15] iommu/amd: Add SVA domain support Vasant Hegde
2024-03-05 0:52 ` [PATCH v6 00/15] iommu/amd: SVA Support (Part 4) - SVA and IOPF Jason Gunthorpe
2024-03-05 14:59 ` Vasant Hegde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240305003219.GC9225@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=jsnitsel@redhat.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=vasant.hegde@amd.com \
--cc=wei.huang2@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox