linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/20] iommu: Retire detach_dev callback
@ 2022-11-28  6:46 Lu Baolu
  2022-11-28  6:46 ` [PATCH v3 01/20] iommu/amd: Remove " Lu Baolu
                   ` (19 more replies)
  0 siblings, 20 replies; 50+ messages in thread
From: Lu Baolu @ 2022-11-28  6:46 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 and rename .attach_dev to .set_dev.

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-v3

Please review and suggest.

Best regards,
baolu

Change log:
v3:
 - 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/

Lu Baolu (20):
  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 iommu ops
  iommu/fsl_pamu: Add set_platform_dma callback
  iommu/msm: Add set_platform_dma callback
  iommu/mtk_v1: Add set_platform_dma callback
  iommu/omap: Add set_platform_dma callback
  iommu/s390: Add set_platform_dma callback
  iommu/gart: Add set_platform_dma callback
  iommu/tegra: Add set_platform_dma callback
  iommu: Call set_platform_dma if default domain is unavailable
  iommu: Retire detach_dev callback
  iommu: Rename attach_dev to set_dev

 include/linux/iommu.h                       | 10 ++++---
 drivers/iommu/amd/iommu.c                   | 28 +-----------------
 drivers/iommu/apple-dart.c                  | 19 +-----------
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |  2 +-
 drivers/iommu/arm/arm-smmu/arm-smmu.c       |  2 +-
 drivers/iommu/arm/arm-smmu/qcom_iommu.c     | 25 +---------------
 drivers/iommu/exynos-iommu.c                |  3 +-
 drivers/iommu/fsl_pamu_domain.c             | 12 ++++++--
 drivers/iommu/intel/iommu.c                 |  4 +--
 drivers/iommu/iommu.c                       | 32 +++++++--------------
 drivers/iommu/ipmmu-vmsa.c                  | 18 +-----------
 drivers/iommu/msm_iommu.c                   | 12 ++++++--
 drivers/iommu/mtk_iommu.c                   | 11 +------
 drivers/iommu/mtk_iommu_v1.c                | 12 ++++++--
 drivers/iommu/omap-iommu.c                  | 12 ++++++--
 drivers/iommu/rockchip-iommu.c              |  3 +-
 drivers/iommu/s390-iommu.c                  | 12 ++++++--
 drivers/iommu/sprd-iommu.c                  | 18 +-----------
 drivers/iommu/sun50i-iommu.c                |  3 +-
 drivers/iommu/tegra-gart.c                  | 12 ++++++--
 drivers/iommu/tegra-smmu.c                  | 12 ++++++--
 drivers/iommu/virtio-iommu.c                |  2 +-
 22 files changed, 100 insertions(+), 164 deletions(-)

-- 
2.34.1


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

end of thread, other threads:[~2023-01-03 14:25 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-28  6:46 [PATCH v3 00/20] iommu: Retire detach_dev callback Lu Baolu
2022-11-28  6:46 ` [PATCH v3 01/20] iommu/amd: Remove " Lu Baolu
2022-11-28 13:42   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 02/20] iommu/apple-dart: " Lu Baolu
2022-11-28 13:43   ` Jason Gunthorpe
2022-11-30 17:00   ` Sven Peter
2022-12-01  4:50     ` Baolu Lu
2022-11-28  6:46 ` [PATCH v3 03/20] iommu/qcom: " Lu Baolu
2022-11-28 13:43   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 04/20] iommu/exynos: " Lu Baolu
2022-11-28 13:44   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 05/20] iommu/ipmmu: " Lu Baolu
2022-11-28 13:44   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 06/20] iommu/mtk: " Lu Baolu
2022-11-28 13:49   ` Jason Gunthorpe
2022-11-28 13:59     ` Robin Murphy
2022-11-29  2:07       ` Baolu Lu
2022-11-29 11:45         ` Robin Murphy
2022-11-29 11:58           ` Baolu Lu
2022-11-28  6:46 ` [PATCH v3 07/20] iommu/rockchip: " Lu Baolu
2022-11-28 13:53   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 08/20] iommu/sprd: " Lu Baolu
2022-11-28 13:53   ` Jason Gunthorpe
2022-11-29  3:34   ` Tian, Kevin
2022-11-30  9:02     ` Chunyan Zhang
2022-11-30  9:03   ` Chunyan Zhang
2022-11-28  6:46 ` [PATCH v3 09/20] iommu/sun50i: " Lu Baolu
2022-11-28 14:09   ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 10/20] iommu: Add set_platform_dma iommu ops Lu Baolu
2022-11-28 14:11   ` Jason Gunthorpe
2022-11-29  2:15     ` Baolu Lu
2022-11-28  6:46 ` [PATCH v3 11/20] iommu/fsl_pamu: Add set_platform_dma callback Lu Baolu
2022-11-28 14:14   ` Jason Gunthorpe
2022-11-29  3:46     ` Baolu Lu
2022-11-28  6:46 ` [PATCH v3 12/20] iommu/msm: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 13/20] iommu/mtk_v1: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 14/20] iommu/omap: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 15/20] iommu/s390: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 16/20] iommu/gart: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 17/20] iommu/tegra: " Lu Baolu
2022-11-28  6:46 ` [PATCH v3 18/20] iommu: Call set_platform_dma if default domain is unavailable Lu Baolu
2022-11-28 14:57   ` Jason Gunthorpe
2023-01-03  2:45     ` Baolu Lu
2023-01-03 14:25       ` Jason Gunthorpe
2022-11-28  6:46 ` [PATCH v3 19/20] iommu: Retire detach_dev callback Lu Baolu
2022-11-28  6:46 ` [PATCH v3 20/20] iommu: Rename attach_dev to set_dev Lu Baolu
2022-11-28 13:41   ` Robin Murphy
2022-11-28 15:00     ` Jason Gunthorpe
2022-11-28 15:53       ` Robin Murphy
2022-11-29  3:59         ` Tian, Kevin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).