All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolin Chen <nicolinc@nvidia.com>
To: <joro@8bytes.org>, <will@kernel.org>, <marcan@marcan.st>,
	<sven@svenpeter.dev>, <robin.murphy@arm.com>,
	<robdclark@gmail.com>, <baolu.lu@linux.intel.com>,
	<matthias.bgg@gmail.com>, <orsonzhai@gmail.com>,
	<baolin.wang7@gmail.com>, <zhang.lyra@gmail.com>,
	<jean-philippe@linaro.org>, <alex.williamson@redhat.com>,
	<jgg@nvidia.com>, <kevin.tian@intel.com>
Cc: <suravee.suthikulpanit@amd.com>, <alyssa@rosenzweig.io>,
	<dwmw2@infradead.org>, <yong.wu@mediatek.com>,
	<mjrosato@linux.ibm.com>, <gerald.schaefer@linux.ibm.com>,
	<thierry.reding@gmail.com>, <vdumpa@nvidia.com>,
	<jonathanh@nvidia.com>, <cohuck@redhat.com>,
	<thunder.leizhen@huawei.com>, <tglx@linutronix.de>,
	<chenxiang66@hisilicon.com>, <christophe.jaillet@wanadoo.fr>,
	<john.garry@huawei.com>, <yangyingliang@huawei.com>,
	<jordan@cosmicpenguin.net>, <iommu@lists.linux-foundation.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-arm-msm@vger.kernel.org>,
	<linux-mediatek@lists.infradead.org>,
	<linux-s390@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
	<virtualization@lists.linux-foundation.org>,
	<kvm@vger.kernel.org>
Subject: [PATCH v3 3/5] vfio/iommu_type1: Remove the domain->ops comparison
Date: Thu, 23 Jun 2022 13:00:27 -0700	[thread overview]
Message-ID: <20220623200029.26007-4-nicolinc@nvidia.com> (raw)
In-Reply-To: <20220623200029.26007-1-nicolinc@nvidia.com>

The domain->ops validation was added, as a precaution, for mixed-driver
systems.

Per Robin's remarks,
* While bus_set_iommu() still exists, the core code prevents multiple
  drivers from registering, so we can't really run into a situation of
  having a mixed-driver system:
  https://lore.kernel.org/kvm/6e1280c5-4b22-ebb3-3912-6c72bc169982@arm.com/

* And there's plenty more significant problems than this to fix; in future
  when many can be permitted, we will rely on the IOMMU core code to check
  the domain->ops:
  https://lore.kernel.org/kvm/6575de6d-94ba-c427-5b1e-967750ddff23@arm.com/

So remove the check in VFIO for simplicity.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
---
 drivers/vfio/vfio_iommu_type1.c | 32 +++++++++++---------------------
 1 file changed, 11 insertions(+), 21 deletions(-)

diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index f4e3b423a453..11be5f95580b 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -2277,29 +2277,19 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
 			domain->domain->ops->enforce_cache_coherency(
 				domain->domain);
 
-	/*
-	 * Try to match an existing compatible domain.  We don't want to
-	 * preclude an IOMMU driver supporting multiple bus_types and being
-	 * able to include different bus_types in the same IOMMU domain, so
-	 * we test whether the domains use the same iommu_ops rather than
-	 * testing if they're on the same bus_type.
-	 */
+	/* Try to match an existing compatible domain */
 	list_for_each_entry(d, &iommu->domain_list, next) {
-		if (d->domain->ops == domain->domain->ops) {
-			iommu_detach_group(domain->domain, group->iommu_group);
-			if (!iommu_attach_group(d->domain,
-						group->iommu_group)) {
-				list_add(&group->next, &d->group_list);
-				iommu_domain_free(domain->domain);
-				kfree(domain);
-				goto done;
-			}
-
-			ret = iommu_attach_group(domain->domain,
-						 group->iommu_group);
-			if (ret)
-				goto out_domain;
+		iommu_detach_group(domain->domain, group->iommu_group);
+		if (!iommu_attach_group(d->domain, group->iommu_group)) {
+			list_add(&group->next, &d->group_list);
+			iommu_domain_free(domain->domain);
+			kfree(domain);
+			goto done;
 		}
+
+		ret = iommu_attach_group(domain->domain,  group->iommu_group);
+		if (ret)
+			goto out_domain;
 	}
 
 	vfio_test_domain_fgsp(domain);
-- 
2.17.1


WARNING: multiple messages have this Message-ID (diff)
From: Nicolin Chen via iommu <iommu@lists.linux-foundation.org>
To: <joro@8bytes.org>, <will@kernel.org>, <marcan@marcan.st>,
	<sven@svenpeter.dev>, <robin.murphy@arm.com>,
	<robdclark@gmail.com>, <baolu.lu@linux.intel.com>,
	<matthias.bgg@gmail.com>, <orsonzhai@gmail.com>,
	<baolin.wang7@gmail.com>, <zhang.lyra@gmail.com>,
	<jean-philippe@linaro.org>,  <alex.williamson@redhat.com>,
	<jgg@nvidia.com>, <kevin.tian@intel.com>
Cc: jordan@cosmicpenguin.net, thierry.reding@gmail.com,
	alyssa@rosenzweig.io, linux-s390@vger.kernel.org,
	kvm@vger.kernel.org, jonathanh@nvidia.com,
	yangyingliang@huawei.com, gerald.schaefer@linux.ibm.com,
	linux-arm-msm@vger.kernel.org, christophe.jaillet@wanadoo.fr,
	linux-tegra@vger.kernel.org, tglx@linutronix.de,
	virtualization@lists.linux-foundation.org,
	linux-arm-kernel@lists.infradead.org, cohuck@redhat.com,
	linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
	linux-mediatek@lists.infradead.org, dwmw2@infradead.org
Subject: [PATCH v3 3/5] vfio/iommu_type1: Remove the domain->ops comparison
Date: Thu, 23 Jun 2022 13:00:27 -0700	[thread overview]
Message-ID: <20220623200029.26007-4-nicolinc@nvidia.com> (raw)
In-Reply-To: <20220623200029.26007-1-nicolinc@nvidia.com>

The domain->ops validation was added, as a precaution, for mixed-driver
systems.

Per Robin's remarks,
* While bus_set_iommu() still exists, the core code prevents multiple
  drivers from registering, so we can't really run into a situation of
  having a mixed-driver system:
  https://lore.kernel.org/kvm/6e1280c5-4b22-ebb3-3912-6c72bc169982@arm.com/

* And there's plenty more significant problems than this to fix; in future
  when many can be permitted, we will rely on the IOMMU core code to check
  the domain->ops:
  https://lore.kernel.org/kvm/6575de6d-94ba-c427-5b1e-967750ddff23@arm.com/

So remove the check in VFIO for simplicity.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
---
 drivers/vfio/vfio_iommu_type1.c | 32 +++++++++++---------------------
 1 file changed, 11 insertions(+), 21 deletions(-)

diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index f4e3b423a453..11be5f95580b 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -2277,29 +2277,19 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
 			domain->domain->ops->enforce_cache_coherency(
 				domain->domain);
 
-	/*
-	 * Try to match an existing compatible domain.  We don't want to
-	 * preclude an IOMMU driver supporting multiple bus_types and being
-	 * able to include different bus_types in the same IOMMU domain, so
-	 * we test whether the domains use the same iommu_ops rather than
-	 * testing if they're on the same bus_type.
-	 */
+	/* Try to match an existing compatible domain */
 	list_for_each_entry(d, &iommu->domain_list, next) {
-		if (d->domain->ops == domain->domain->ops) {
-			iommu_detach_group(domain->domain, group->iommu_group);
-			if (!iommu_attach_group(d->domain,
-						group->iommu_group)) {
-				list_add(&group->next, &d->group_list);
-				iommu_domain_free(domain->domain);
-				kfree(domain);
-				goto done;
-			}
-
-			ret = iommu_attach_group(domain->domain,
-						 group->iommu_group);
-			if (ret)
-				goto out_domain;
+		iommu_detach_group(domain->domain, group->iommu_group);
+		if (!iommu_attach_group(d->domain, group->iommu_group)) {
+			list_add(&group->next, &d->group_list);
+			iommu_domain_free(domain->domain);
+			kfree(domain);
+			goto done;
 		}
+
+		ret = iommu_attach_group(domain->domain,  group->iommu_group);
+		if (ret)
+			goto out_domain;
 	}
 
 	vfio_test_domain_fgsp(domain);
-- 
2.17.1

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Nicolin Chen <nicolinc@nvidia.com>
To: <joro@8bytes.org>, <will@kernel.org>, <marcan@marcan.st>,
	<sven@svenpeter.dev>, <robin.murphy@arm.com>,
	<robdclark@gmail.com>, <baolu.lu@linux.intel.com>,
	<matthias.bgg@gmail.com>, <orsonzhai@gmail.com>,
	<baolin.wang7@gmail.com>, <zhang.lyra@gmail.com>,
	<jean-philippe@linaro.org>, <alex.williamson@redhat.com>,
	<jgg@nvidia.com>, <kevin.tian@intel.com>
Cc: mjrosato@linux.ibm.com, jordan@cosmicpenguin.net,
	thierry.reding@gmail.com, alyssa@rosenzweig.io,
	linux-s390@vger.kernel.org, kvm@vger.kernel.org,
	jonathanh@nvidia.com, yong.wu@mediatek.com,
	yangyingliang@huawei.com, gerald.schaefer@linux.ibm.com,
	linux-arm-msm@vger.kernel.org, john.garry@huawei.com,
	christophe.jaillet@wanadoo.fr, thunder.leizhen@huawei.com,
	linux-tegra@vger.kernel.org, tglx@linutronix.de,
	virtualization@lists.linux-foundation.org,
	linux-arm-kernel@lists.infradead.org, chenxiang66@hisilicon.com,
	cohuck@redhat.com, linux-kernel@vger.kernel.org,
	iommu@lists.linux-foundation.org, suravee.suthikulpanit@amd.com,
	linux-mediatek@lists.infradead.org, dwmw2@infradead.org
Subject: [PATCH v3 3/5] vfio/iommu_type1: Remove the domain->ops comparison
Date: Thu, 23 Jun 2022 13:00:27 -0700	[thread overview]
Message-ID: <20220623200029.26007-4-nicolinc@nvidia.com> (raw)
In-Reply-To: <20220623200029.26007-1-nicolinc@nvidia.com>

The domain->ops validation was added, as a precaution, for mixed-driver
systems.

Per Robin's remarks,
* While bus_set_iommu() still exists, the core code prevents multiple
  drivers from registering, so we can't really run into a situation of
  having a mixed-driver system:
  https://lore.kernel.org/kvm/6e1280c5-4b22-ebb3-3912-6c72bc169982@arm.com/

* And there's plenty more significant problems than this to fix; in future
  when many can be permitted, we will rely on the IOMMU core code to check
  the domain->ops:
  https://lore.kernel.org/kvm/6575de6d-94ba-c427-5b1e-967750ddff23@arm.com/

So remove the check in VFIO for simplicity.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
---
 drivers/vfio/vfio_iommu_type1.c | 32 +++++++++++---------------------
 1 file changed, 11 insertions(+), 21 deletions(-)

diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index f4e3b423a453..11be5f95580b 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -2277,29 +2277,19 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
 			domain->domain->ops->enforce_cache_coherency(
 				domain->domain);
 
-	/*
-	 * Try to match an existing compatible domain.  We don't want to
-	 * preclude an IOMMU driver supporting multiple bus_types and being
-	 * able to include different bus_types in the same IOMMU domain, so
-	 * we test whether the domains use the same iommu_ops rather than
-	 * testing if they're on the same bus_type.
-	 */
+	/* Try to match an existing compatible domain */
 	list_for_each_entry(d, &iommu->domain_list, next) {
-		if (d->domain->ops == domain->domain->ops) {
-			iommu_detach_group(domain->domain, group->iommu_group);
-			if (!iommu_attach_group(d->domain,
-						group->iommu_group)) {
-				list_add(&group->next, &d->group_list);
-				iommu_domain_free(domain->domain);
-				kfree(domain);
-				goto done;
-			}
-
-			ret = iommu_attach_group(domain->domain,
-						 group->iommu_group);
-			if (ret)
-				goto out_domain;
+		iommu_detach_group(domain->domain, group->iommu_group);
+		if (!iommu_attach_group(d->domain, group->iommu_group)) {
+			list_add(&group->next, &d->group_list);
+			iommu_domain_free(domain->domain);
+			kfree(domain);
+			goto done;
 		}
+
+		ret = iommu_attach_group(domain->domain,  group->iommu_group);
+		if (ret)
+			goto out_domain;
 	}
 
 	vfio_test_domain_fgsp(domain);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-06-23 20:01 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-23 20:00 [PATCH v3 0/5] Simplify vfio_iommu_type1 attach/detach routine Nicolin Chen
2022-06-23 20:00 ` Nicolin Chen
2022-06-23 20:00 ` Nicolin Chen via iommu
2022-06-23 20:00 ` [PATCH v3 1/5] iommu: Return -EMEDIUMTYPE for incompatible domain and device/group Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen via iommu
2022-06-24  1:35   ` Baolu Lu
2022-06-24  1:35     ` Baolu Lu
2022-06-24  1:35     ` Baolu Lu
2022-06-24  2:44     ` Nicolin Chen
2022-06-24  2:44       ` Nicolin Chen
2022-06-24  2:44       ` Nicolin Chen via iommu
2022-06-24  5:38       ` Yong Wu
2022-06-24  5:38         ` Yong Wu
2022-06-24  5:38         ` Yong Wu via iommu
2022-06-24  5:41         ` Nicolin Chen
2022-06-24  5:41           ` Nicolin Chen
2022-06-24  5:41           ` Nicolin Chen via iommu
2022-06-24  6:16         ` Tian, Kevin
2022-06-24  6:16           ` Tian, Kevin
2022-06-24  6:16           ` Tian, Kevin
2022-06-24  6:16           ` Tian, Kevin
2022-06-24 10:35           ` Yong Wu
2022-06-24 10:35             ` Yong Wu
2022-06-24 10:35             ` Yong Wu via iommu
2022-06-24 18:19             ` Jason Gunthorpe
2022-06-24 18:19               ` Jason Gunthorpe
2022-06-24 18:19               ` Jason Gunthorpe via iommu
2022-06-29 19:47               ` Nicolin Chen
2022-06-29 19:47                 ` Nicolin Chen
2022-06-29 19:47                 ` Nicolin Chen via iommu
2022-06-30  8:21                 ` Robin Murphy
2022-06-30  8:21                   ` Robin Murphy
2022-06-30  8:21                   ` Robin Murphy
2022-06-30  8:21                   ` Robin Murphy
2022-06-30  9:57                   ` Tian, Kevin
2022-06-30  9:57                     ` Tian, Kevin
2022-06-30  9:57                     ` Tian, Kevin
2022-06-30  9:57                     ` Tian, Kevin
2022-06-30 15:47                   ` Nicolin Chen
2022-06-30 15:47                     ` Nicolin Chen
2022-06-30 15:47                     ` Nicolin Chen via iommu
2022-06-30  9:33                 ` Yong Wu
2022-06-30  9:33                   ` Yong Wu
2022-06-30  9:33                   ` Yong Wu via iommu
2022-06-30 15:45                   ` Nicolin Chen
2022-06-30 15:45                     ` Nicolin Chen
2022-06-30 15:45                     ` Nicolin Chen via iommu
2022-06-23 20:00 ` [PATCH v3 2/5] vfio/iommu_type1: Prefer to reuse domains vs match enforced cache coherency Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen via iommu
2022-06-24  1:50   ` Baolu Lu
2022-06-24  1:50     ` Baolu Lu
2022-06-24  1:50     ` Baolu Lu
2022-06-23 20:00 ` Nicolin Chen [this message]
2022-06-23 20:00   ` [PATCH v3 3/5] vfio/iommu_type1: Remove the domain->ops comparison Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen via iommu
2022-06-24 18:28   ` Jason Gunthorpe
2022-06-24 18:28     ` Jason Gunthorpe
2022-06-24 18:28     ` Jason Gunthorpe via iommu
2022-06-24 18:46     ` Jason Gunthorpe
2022-06-24 18:46       ` Jason Gunthorpe
2022-06-24 18:46       ` Jason Gunthorpe via iommu
2022-06-23 20:00 ` [PATCH v3 4/5] vfio/iommu_type1: Clean up update_dirty_scope in detach_group() Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen via iommu
2022-06-23 20:00 ` [PATCH v3 5/5] vfio/iommu_type1: Simplify group attachment Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen
2022-06-23 20:00   ` Nicolin Chen via iommu
2022-06-27  6:57   ` Tian, Kevin
2022-06-27  6:57     ` Tian, Kevin
2022-06-27  6:57     ` Tian, Kevin
2022-06-27  6:57     ` Tian, Kevin

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=20220623200029.26007-4-nicolinc@nvidia.com \
    --to=nicolinc@nvidia.com \
    --cc=alex.williamson@redhat.com \
    --cc=alyssa@rosenzweig.io \
    --cc=baolin.wang7@gmail.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=chenxiang66@hisilicon.com \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=cohuck@redhat.com \
    --cc=dwmw2@infradead.org \
    --cc=gerald.schaefer@linux.ibm.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jean-philippe@linaro.org \
    --cc=jgg@nvidia.com \
    --cc=john.garry@huawei.com \
    --cc=jonathanh@nvidia.com \
    --cc=jordan@cosmicpenguin.net \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=marcan@marcan.st \
    --cc=matthias.bgg@gmail.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=orsonzhai@gmail.com \
    --cc=robdclark@gmail.com \
    --cc=robin.murphy@arm.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=sven@svenpeter.dev \
    --cc=tglx@linutronix.de \
    --cc=thierry.reding@gmail.com \
    --cc=thunder.leizhen@huawei.com \
    --cc=vdumpa@nvidia.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=will@kernel.org \
    --cc=yangyingliang@huawei.com \
    --cc=yong.wu@mediatek.com \
    --cc=zhang.lyra@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.