public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Yi Liu <yi.l.liu@intel.com>
To: joro@8bytes.org, jgg@nvidia.com, kevin.tian@intel.com,
	baolu.lu@linux.intel.com
Cc: alex.williamson@redhat.com, eric.auger@redhat.com,
	nicolinc@nvidia.com, kvm@vger.kernel.org,
	chao.p.peng@linux.intel.com, yi.l.liu@intel.com,
	iommu@lists.linux.dev, zhenzhong.duan@intel.com,
	vasant.hegde@amd.com, will@kernel.org
Subject: [PATCH v4 13/13] iommu: Make set_dev_pasid op support domain replacement
Date: Mon,  4 Nov 2024 05:18:42 -0800	[thread overview]
Message-ID: <20241104131842.13303-14-yi.l.liu@intel.com> (raw)
In-Reply-To: <20241104131842.13303-1-yi.l.liu@intel.com>

The iommu core is going to support domain replacement for pasid, it needs
to make the set_dev_pasid op support replacing domain and keep the old
domain config in the failure case.

AMD iommu driver does not support domain replacement for pasid yet, so it
would fail the set_dev_pasid op to keep the old config if the input @old
is non-NULL.

Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
---
 drivers/iommu/amd/pasid.c | 3 +++
 include/linux/iommu.h     | 3 ++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/amd/pasid.c b/drivers/iommu/amd/pasid.c
index d1dfc745f55e..8c73a30c2800 100644
--- a/drivers/iommu/amd/pasid.c
+++ b/drivers/iommu/amd/pasid.c
@@ -109,6 +109,9 @@ int iommu_sva_set_dev_pasid(struct iommu_domain *domain,
 	unsigned long flags;
 	int ret = -EINVAL;
 
+	if (old)
+		return -EOPNOTSUPP;
+
 	/* PASID zero is used for requests from the I/O device without PASID */
 	if (!is_pasid_valid(dev_data, pasid))
 		return ret;
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index e1c8e92170e9..2ec0c9915aa5 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -614,7 +614,8 @@ struct iommu_ops {
  * * EBUSY	- device is attached to a domain and cannot be changed
  * * ENODEV	- device specific errors, not able to be attached
  * * <others>	- treated as ENODEV by the caller. Use is discouraged
- * @set_dev_pasid: set an iommu domain to a pasid of device
+ * @set_dev_pasid: set or replace an iommu domain to a pasid of device. The pasid of
+ *                 the device should be left in the old config in error case.
  * @map_pages: map a physically contiguous set of pages of the same size to
  *             an iommu domain.
  * @unmap_pages: unmap a number of pages of the same size from an iommu domain
-- 
2.34.1


      parent reply	other threads:[~2024-11-04 13:19 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-04 13:18 [PATCH v4 00/13] Make set_dev_pasid op supporting domain replacement Yi Liu
2024-11-04 13:18 ` [PATCH v4 01/13] iommu: Pass old domain to set_dev_pasid op Yi Liu
2024-11-06  8:48   ` Vasant Hegde
2024-11-04 13:18 ` [PATCH v4 02/13] iommu/vt-d: Add a helper to flush cache for updating present pasid entry Yi Liu
2024-11-05  1:50   ` Baolu Lu
2024-11-06  7:11   ` Tian, Kevin
2024-11-06  8:45     ` Yi Liu
2024-11-06  9:40       ` Tian, Kevin
2024-11-06  9:56         ` Yi Liu
2024-11-06 10:01           ` Tian, Kevin
2024-11-06 10:22             ` Yi Liu
2024-11-04 13:18 ` [PATCH v4 03/13] iommu/vt-d: Refactor the pasid setup helpers Yi Liu
2024-11-05  1:52   ` Baolu Lu
2024-11-06  7:14   ` Tian, Kevin
2024-11-06  9:22     ` Yi Liu
2024-11-06  9:48       ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 04/13] iommu/vt-d: Add pasid replace helpers Yi Liu
2024-11-05  2:06   ` Baolu Lu
2024-11-05  5:11     ` Yi Liu
2024-11-06  7:31   ` Tian, Kevin
2024-11-06  9:31     ` Yi Liu
2024-11-06  9:51       ` Tian, Kevin
2024-11-06 10:02         ` Yi Liu
2024-11-06 10:05           ` Tian, Kevin
2024-11-06 10:27             ` Yi Liu
2024-11-06 10:43             ` Baolu Lu
2024-11-04 13:18 ` [PATCH v4 05/13] iommu/vt-d: Prepare intel_iommu_set_dev_pasid() handle replacement Yi Liu
2024-11-05  2:49   ` Baolu Lu
2024-11-05  5:23     ` Yi Liu
2024-11-06  7:33       ` Tian, Kevin
2024-11-06  7:41   ` Tian, Kevin
2024-11-06  8:02     ` Yi Liu
2024-11-06  8:39       ` Baolu Lu
2024-11-06  9:33         ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 06/13] iommu/vt-d: Make intel_iommu_set_dev_pasid() to handle domain replacement Yi Liu
2024-11-05  2:59   ` Baolu Lu
2024-11-06  7:43   ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 07/13] iommu/vt-d: Limit intel_iommu_set_dev_pasid() for paging domain Yi Liu
2024-11-05  3:01   ` Baolu Lu
2024-11-06  7:44   ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 08/13] iommu/vt-d: Make identity_domain_set_dev_pasid() to handle domain replacement Yi Liu
2024-11-05  3:03   ` Baolu Lu
2024-11-06  7:45   ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 09/13] iommu/vt-d: Consolidate the dev_pasid code in intel_svm_set_dev_pasid() Yi Liu
2024-11-05  3:06   ` Baolu Lu
2024-11-06  7:58   ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 10/13] iommu/vt-d: Fail SVA domain replacement Yi Liu
2024-11-05  3:30   ` Baolu Lu
2024-11-05  5:30     ` Yi Liu
2024-11-05  5:47       ` Baolu Lu
2024-11-05 14:43     ` Jason Gunthorpe
2024-11-06  7:58       ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 11/13] iommu/vt-d: Add set_dev_pasid callback for nested domain Yi Liu
2024-11-05  3:38   ` Baolu Lu
2024-11-05  5:33     ` Yi Liu
2024-11-06  7:59   ` Tian, Kevin
2024-11-06  8:17   ` Tian, Kevin
2024-11-06  8:41     ` Baolu Lu
2024-11-06  9:14       ` Yi Liu
2024-11-06 10:45         ` Baolu Lu
2024-11-06 11:00           ` Yi Liu
2024-11-06 11:08             ` Baolu Lu
2024-11-04 13:18 ` [PATCH v4 12/13] iommu/arm-smmu-v3: Make set_dev_pasid() op support replace Yi Liu
2024-11-11 12:49   ` Will Deacon
2024-11-04 13:18 ` Yi Liu [this message]

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=20241104131842.13303-14-yi.l.liu@intel.com \
    --to=yi.l.liu@intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=eric.auger@redhat.com \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=nicolinc@nvidia.com \
    --cc=vasant.hegde@amd.com \
    --cc=will@kernel.org \
    --cc=zhenzhong.duan@intel.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