public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/19] iommu: Retire detach_dev callback
@ 2023-01-04 12:57 Lu Baolu
  2023-01-04 12:57 ` [PATCH v4 01/19] iommu/amd: Remove " Lu Baolu
                   ` (18 more replies)
  0 siblings, 19 replies; 38+ messages in thread
From: Lu Baolu @ 2023-01-04 12:57 UTC (permalink / raw)
  To: Joerg Roedel, Jason Gunthorpe, Christoph Hellwig, Kevin Tian,
	Will Deacon, Robin Murphy, Jean-Philippe Brucker
  Cc: Suravee Suthikulpanit, Hector Martin, Sven Peter, Rob Clark,
	Marek Szyprowski, Krzysztof Kozlowski, Andy Gross,
	Bjorn Andersson, Yong Wu, Matthias Brugger, Heiko Stuebner,
	Matthew Rosato, Orson Zhai, Baolin Wang, Chunyan Zhang,
	Chen-Yu Tsai, Thierry Reding, iommu, linux-kernel, Lu Baolu

Hi folks,

The iommu core calls the driver's detach_dev domain op callback only when
a device is finished assigning to user space and
iommu_group_release_dma_owner() is called to return the device to the
kernel, where iommu core wants to set the default domain to the device but
the driver didn't provide one. The code looks like:

        /*
         * New drivers should support default domains and so the detach_dev() op
         * will never be called. Otherwise the NULL domain represents some
         * platform specific behavior.
         */
        if (!new_domain) {
                if (WARN_ON(!group->domain->ops->detach_dev))
                        return -EINVAL;
                __iommu_group_for_each_dev(group, group->domain,
                                           iommu_group_do_detach_device);
                group->domain = NULL;
                return 0;
        }

In other words, if the iommu driver provides default domains, the
.detach_dev callback will never be called; Otherwise, the .detach_dev
callback is actually called to return control back to the platform DMA
ops, other than detaching the domain from device.

This series cleanups this by:

- If the IOMMU driver provides default domains, remove .detach_dev
  callback.
- Adds a new set_platform_dma iommu op. Any IOMMU driver that doesn't
  provide default domain should implement set_platform_dma callback
  instead.
- Retire .detach_dev callback.

This series originates from various discussion in the community. Thank
Jason, Robin and all others for their ideas. This series looks very
long. It is necessary because I hope that change in each driver has a
confirmation from its stakeholder. I will then be able to merge some of
them to make the series cute.

The whole series is available on github:
https://github.com/LuBaolu/intel-iommu/commits/iommu-retire-detach_dev-v4

Please review and suggest.

Change log:
v4:
 - Drop the patch which renamed .attach_dev to .set_dev. As Robin said,
   "... I also wouldn't say that "attach" loses its meaning in a context
   where an equivalent "detach" operation is only ever implicit in 
   reattaching to something else...". If we have a better name in the
   future, we can do it in other series.
 - Adjust the patch of "iommu: Add set_platform_dma_ops iommu ops"
   according to Jason's following suggestion " ... This is a bit ugly,
   it would be better to make the previous patch call set_platform_dma
   if it is set instead of detach_dev and then these patches should just
   rename the driver's fsl_pamu_detach_device to
   fsl_pamu_set_platform_dma ..."
 - Add a new patch to remove deferred attach check from
   __iommu_detach_domain() path. Make it a separate patch as the
   prerequisite to remove __iommu_detach_device() helper.
 - Rename set_platform_dma to set_platform_dma_ops to make it more
   meaningful.

v3:
 - https://lore.kernel.org/linux-iommu/20221128064648.1934720-1-baolu.lu@linux.intel.com/
 - Setting blocking domain is not conceptually equal to detach_dev.
   Dropped all blocking domain related staffs in the previous version.

v2:
 - https://lore.kernel.org/linux-iommu/20220826123014.52709-1-baolu.lu@linux.intel.com/
 - Replace .detach_dev callback with static block domain ops;
 - Rename .attach_dev to .set_dev.

v1:
 - https://lore.kernel.org/linux-iommu/20220516015759.2952771-1-baolu.lu@linux.intel.com/

Jason Gunthorpe (1):
  iommu: Remove deferred attach check from __iommu_detach_device()

Lu Baolu (18):
  iommu/amd: Remove detach_dev callback
  iommu/apple-dart: Remove detach_dev callback
  iommu/qcom: Remove detach_dev callback
  iommu/exynos: Remove detach_dev callback
  iommu/ipmmu: Remove detach_dev callback
  iommu/mtk: Remove detach_dev callback
  iommu/rockchip: Remove detach_dev callback
  iommu/sprd: Remove detach_dev callback
  iommu/sun50i: Remove detach_dev callback
  iommu: Add set_platform_dma_ops iommu ops
  iommu/fsl_pamu: Add set_platform_dma_ops callback
  iommu/msm: Add set_platform_dma_ops callback
  iommu/mtk_v1: Add set_platform_dma_ops callback
  iommu/omap: Add set_platform_dma_ops callback
  iommu/s390: Add set_platform_dma_ops callback
  iommu/gart: Add set_platform_dma_ops callback
  iommu/tegra: Add set_platform_dma_ops callback
  iommu: Remove detach_dev callback

 include/linux/iommu.h                   |  8 +-
 include/trace/events/iommu.h            |  7 --
 drivers/iommu/amd/iommu.c               | 26 -------
 drivers/iommu/apple-dart.c              | 24 ------
 drivers/iommu/arm/arm-smmu/qcom_iommu.c | 23 ------
 drivers/iommu/exynos-iommu.c            |  1 -
 drivers/iommu/fsl_pamu_domain.c         |  6 +-
 drivers/iommu/iommu-traces.c            |  1 -
 drivers/iommu/iommu.c                   | 98 ++++++++++++-------------
 drivers/iommu/ipmmu-vmsa.c              | 16 ----
 drivers/iommu/msm_iommu.c               |  6 +-
 drivers/iommu/mtk_iommu.c               |  9 ---
 drivers/iommu/mtk_iommu_v1.c            |  4 +-
 drivers/iommu/omap-iommu.c              |  6 +-
 drivers/iommu/rockchip-iommu.c          |  1 -
 drivers/iommu/s390-iommu.c              |  7 +-
 drivers/iommu/sprd-iommu.c              | 16 ----
 drivers/iommu/sun50i-iommu.c            |  1 -
 drivers/iommu/tegra-gart.c              |  6 +-
 drivers/iommu/tegra-smmu.c              |  5 +-
 20 files changed, 73 insertions(+), 198 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2023-01-09 12:17 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-04 12:57 [PATCH v4 00/19] iommu: Retire detach_dev callback Lu Baolu
2023-01-04 12:57 ` [PATCH v4 01/19] iommu/amd: Remove " Lu Baolu
2023-01-09 11:47   ` Vasant Hegde
2023-01-04 12:57 ` [PATCH v4 02/19] iommu/apple-dart: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 03/19] iommu/qcom: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 04/19] iommu/exynos: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 05/19] iommu/ipmmu: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 06/19] iommu/mtk: " Lu Baolu
2023-01-04 13:14   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 07/19] iommu/rockchip: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 08/19] iommu/sprd: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 09/19] iommu/sun50i: " Lu Baolu
2023-01-04 12:57 ` [PATCH v4 10/19] iommu: Add set_platform_dma_ops iommu ops Lu Baolu
2023-01-04 13:17   ` Jason Gunthorpe
2023-01-05  5:58     ` Baolu Lu
2023-01-05 13:15       ` Jason Gunthorpe
2023-01-06  6:07         ` Baolu Lu
2023-01-06 14:26           ` Jason Gunthorpe
2023-01-07  2:48             ` Baolu Lu
2023-01-09 12:17               ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 11/19] iommu/fsl_pamu: Add set_platform_dma_ops callback Lu Baolu
2023-01-04 13:19   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 12/19] iommu/msm: " Lu Baolu
2023-01-04 13:19   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 13/19] iommu/mtk_v1: " Lu Baolu
2023-01-04 13:19   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 14/19] iommu/omap: " Lu Baolu
2023-01-04 13:19   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 15/19] iommu/s390: " Lu Baolu
2023-01-04 13:20   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 16/19] iommu/gart: " Lu Baolu
2023-01-04 13:20   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 17/19] iommu/tegra: " Lu Baolu
2023-01-04 13:20   ` Jason Gunthorpe
2023-01-04 12:57 ` [PATCH v4 18/19] iommu: Remove deferred attach check from __iommu_detach_device() Lu Baolu
2023-01-04 12:57 ` [PATCH v4 19/19] iommu: Remove detach_dev callback Lu Baolu
2023-01-04 13:22   ` Jason Gunthorpe
2023-01-05  6:41     ` Baolu Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox