[PATCH v3 00/10] iommu cleanup and refactoring

Lu Baolu posted 10 patches 4 years, 4 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
include/linux/intel-iommu.h                   |  27 -
include/linux/intel-svm.h                     |  12 -
include/linux/iommu.h                         | 184 +++---
drivers/iommu/amd/amd_iommu.h                 |   3 +-
drivers/iommu/intel/pasid.h                   |   4 -
include/uapi/linux/iommu.h                    | 181 ------
.../drm/nouveau/nvkm/engine/device/tegra.c    |   2 +-
drivers/iommu/amd/iommu.c                     |  23 +-
drivers/iommu/amd/iommu_v2.c                  |   2 +-
drivers/iommu/apple-dart.c                    |  20 +-
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   |  18 +-
drivers/iommu/arm/arm-smmu/arm-smmu.c         |  20 +-
drivers/iommu/arm/arm-smmu/qcom_iommu.c       |  18 +-
drivers/iommu/exynos-iommu.c                  |  14 +-
drivers/iommu/fsl_pamu_domain.c               |  10 +-
drivers/iommu/intel/debugfs.c                 |   3 +-
drivers/iommu/intel/iommu.c                   | 540 +-----------------
drivers/iommu/intel/pasid.c                   | 161 ------
drivers/iommu/intel/svm.c                     | 209 -------
drivers/iommu/iommu.c                         | 339 ++---------
drivers/iommu/ipmmu-vmsa.c                    |  18 +-
drivers/iommu/msm_iommu.c                     |  30 +-
drivers/iommu/mtk_iommu.c                     |  20 +-
drivers/iommu/mtk_iommu_v1.c                  |  14 +-
drivers/iommu/omap-iommu.c                    |  14 +-
drivers/iommu/rockchip-iommu.c                |  14 +-
drivers/iommu/s390-iommu.c                    |  14 +-
drivers/iommu/sprd-iommu.c                    |  18 +-
drivers/iommu/sun50i-iommu.c                  |  18 +-
drivers/iommu/tegra-gart.c                    |  18 +-
drivers/iommu/tegra-smmu.c                    |  14 +-
drivers/iommu/virtio-iommu.c                  |  14 +-
32 files changed, 308 insertions(+), 1688 deletions(-)
[PATCH v3 00/10] iommu cleanup and refactoring
Posted by Lu Baolu 4 years, 4 months ago
Hi,

The guest pasid and aux-domain related code are dead code in current
iommu subtree. As we have reached a consensus that all these features
should be based on the new iommufd framework (which is under active
development), the first part of this series removes and cleanups all
the dead code.

The second part of this series refactors the iommu_domain by moving all
domain specific ops from iommu_ops to a new iommu_domain_ops. This makes
iommu_domain self-contained and represent the abstraction of an I/O
translation table in the IOMMU subsystem. With different type of
iommu_domain providing different set of ops, it's easier to support more
types of I/O translation tables.

Please help to review and comment.

Best regards,
baolu

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

v2:
 - https://lore.kernel.org/linux-iommu/20220208012559.1121729-1-baolu.lu@linux.intel.com/
 - Remove apply_resv_region callback.
 - Remove domain argument from is_attach_deferred callback.
 - Convert all feasible instances of dev->bus->iommu_ops to dev_iommu_ops().
 - Add the default_domain_ops (default iommu_domain_ops) in iommu_ops to
   avoid big churn in dozens of iommu drivers.
 - We discussed removing pgsize_bitmap in struct iommu_ops and
   initialize the domain field in domain_alloc(). Considering that
   domain_alloc() is being refactored, let's wait until the new domain_alloc()
   comes.
 - Various code/description refinement.
 - This version of series is available on github:
   https://github.com/LuBaolu/intel-iommu/commits/iommu-domain-ops-v2

v3:
 - Remove ops check when dev_iommu_ops() is used.
 - This version of series is available on github:
   https://github.com/LuBaolu/intel-iommu/commits/iommu-domain-ops-v3

Lu Baolu (10):
  iommu/vt-d: Remove guest pasid related callbacks
  iommu: Remove guest pasid related interfaces and definitions
  iommu/vt-d: Remove aux-domain related callbacks
  iommu: Remove aux-domain related interfaces and iommu_ops
  iommu: Remove apply_resv_region
  drm/nouveau/device: Get right pgsize_bitmap of iommu_domain
  iommu: Use right way to retrieve iommu_ops
  iommu: Remove unused argument in is_attach_deferred
  iommu: Use dev_iommu_ops() helper
  iommu: Split struct iommu_ops

 include/linux/intel-iommu.h                   |  27 -
 include/linux/intel-svm.h                     |  12 -
 include/linux/iommu.h                         | 184 +++---
 drivers/iommu/amd/amd_iommu.h                 |   3 +-
 drivers/iommu/intel/pasid.h                   |   4 -
 include/uapi/linux/iommu.h                    | 181 ------
 .../drm/nouveau/nvkm/engine/device/tegra.c    |   2 +-
 drivers/iommu/amd/iommu.c                     |  23 +-
 drivers/iommu/amd/iommu_v2.c                  |   2 +-
 drivers/iommu/apple-dart.c                    |  20 +-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   |  18 +-
 drivers/iommu/arm/arm-smmu/arm-smmu.c         |  20 +-
 drivers/iommu/arm/arm-smmu/qcom_iommu.c       |  18 +-
 drivers/iommu/exynos-iommu.c                  |  14 +-
 drivers/iommu/fsl_pamu_domain.c               |  10 +-
 drivers/iommu/intel/debugfs.c                 |   3 +-
 drivers/iommu/intel/iommu.c                   | 540 +-----------------
 drivers/iommu/intel/pasid.c                   | 161 ------
 drivers/iommu/intel/svm.c                     | 209 -------
 drivers/iommu/iommu.c                         | 339 ++---------
 drivers/iommu/ipmmu-vmsa.c                    |  18 +-
 drivers/iommu/msm_iommu.c                     |  30 +-
 drivers/iommu/mtk_iommu.c                     |  20 +-
 drivers/iommu/mtk_iommu_v1.c                  |  14 +-
 drivers/iommu/omap-iommu.c                    |  14 +-
 drivers/iommu/rockchip-iommu.c                |  14 +-
 drivers/iommu/s390-iommu.c                    |  14 +-
 drivers/iommu/sprd-iommu.c                    |  18 +-
 drivers/iommu/sun50i-iommu.c                  |  18 +-
 drivers/iommu/tegra-gart.c                    |  18 +-
 drivers/iommu/tegra-smmu.c                    |  14 +-
 drivers/iommu/virtio-iommu.c                  |  14 +-
 32 files changed, 308 insertions(+), 1688 deletions(-)

-- 
2.25.1

Re: [PATCH v3 00/10] iommu cleanup and refactoring
Posted by Joerg Roedel 4 years, 4 months ago
On Mon, Feb 14, 2022 at 09:55:28AM +0800, Lu Baolu wrote:
> v3:
>  - Remove ops check when dev_iommu_ops() is used.
>  - This version of series is available on github:
>    https://github.com/LuBaolu/intel-iommu/commits/iommu-domain-ops-v3
> 
> Lu Baolu (10):
>   iommu/vt-d: Remove guest pasid related callbacks
>   iommu: Remove guest pasid related interfaces and definitions
>   iommu/vt-d: Remove aux-domain related callbacks
>   iommu: Remove aux-domain related interfaces and iommu_ops
>   iommu: Remove apply_resv_region
>   drm/nouveau/device: Get right pgsize_bitmap of iommu_domain
>   iommu: Use right way to retrieve iommu_ops
>   iommu: Remove unused argument in is_attach_deferred
>   iommu: Use dev_iommu_ops() helper
>   iommu: Split struct iommu_ops

Really cool, thanks for doing this, Baolu! I am currently running some
tests on this series to make sure there are no build breakages. And I
agree with Jason that:

	iommu: Use right way to retrieve iommu_ops and
	iommu: Use dev_iommu_ops() helper

can be combined into one patch. Splitting iommu_ops was something I have
been thinking about for some time, so thanks again for doing this.

Regards,

	Joerg
Re: [PATCH v3 00/10] iommu cleanup and refactoring
Posted by Lu Baolu 4 years, 4 months ago
Hi Joerg,

On 2/14/22 10:14 PM, Joerg Roedel wrote:
> On Mon, Feb 14, 2022 at 09:55:28AM +0800, Lu Baolu wrote:
>> v3:
>>   - Remove ops check when dev_iommu_ops() is used.
>>   - This version of series is available on github:
>>     https://github.com/LuBaolu/intel-iommu/commits/iommu-domain-ops-v3
>>
>> Lu Baolu (10):
>>    iommu/vt-d: Remove guest pasid related callbacks
>>    iommu: Remove guest pasid related interfaces and definitions
>>    iommu/vt-d: Remove aux-domain related callbacks
>>    iommu: Remove aux-domain related interfaces and iommu_ops
>>    iommu: Remove apply_resv_region
>>    drm/nouveau/device: Get right pgsize_bitmap of iommu_domain
>>    iommu: Use right way to retrieve iommu_ops
>>    iommu: Remove unused argument in is_attach_deferred
>>    iommu: Use dev_iommu_ops() helper
>>    iommu: Split struct iommu_ops
> 
> Really cool, thanks for doing this, Baolu! I am currently running some
> tests on this series to make sure there are no build breakages. And I
> agree with Jason that:
> 
> 	iommu: Use right way to retrieve iommu_ops and
> 	iommu: Use dev_iommu_ops() helper
> 
> can be combined into one patch. Splitting iommu_ops was something I have
> been thinking about for some time, so thanks again for doing this.

You are welcome!

Do you want me to send a new version with below changes:

- Remove WARN_ON() in dev_iommu_ops();
- Merge above two patches.

Or, you can change above yourself?

> 
> Regards,
> 
> 	Joerg

Best regards,
baolu
Re: [PATCH v3 00/10] iommu cleanup and refactoring
Posted by Joerg Roedel 4 years, 4 months ago
Hi Baolu,

On Tue, Feb 15, 2022 at 10:05:42AM +0800, Lu Baolu wrote:
> Do you want me to send a new version with below changes:
> 
> - Remove WARN_ON() in dev_iommu_ops();
> - Merge above two patches.
> 
> Or, you can change above yourself?

Please make the changes and send a new version. I will apply it to the
iommu core branch then. The build-tests with this patch-set went well
and I havn't spotted anything else in my review, so I think it is in
good shape for linux-next testing.

Regards,

	Joerg
Re: [PATCH v3 00/10] iommu cleanup and refactoring
Posted by Lu Baolu 4 years, 4 months ago
On 2/15/22 5:17 PM, Joerg Roedel wrote:
> Hi Baolu,
> 
> On Tue, Feb 15, 2022 at 10:05:42AM +0800, Lu Baolu wrote:
>> Do you want me to send a new version with below changes:
>>
>> - Remove WARN_ON() in dev_iommu_ops();
>> - Merge above two patches.
>>
>> Or, you can change above yourself?
> 
> Please make the changes and send a new version. I will apply it to the
> iommu core branch then. The build-tests with this patch-set went well
> and I havn't spotted anything else in my review, so I think it is in
> good shape for linux-next testing.

Sure and done.

Best regards,
baolu