Messages in this thread | | | From | Joerg Roedel <> | Subject | [PATCH 00/11 v3] Let IOMMU core know about individual IOMMUs | Date | Thu, 9 Feb 2017 12:32:49 +0100 |
| |
Changes since v2:
* Fixed build issues resulting from wrong patch order, everything should be nicely bisectable now * Introduced wrapper functions around 'struct iommu_device' members, to keep the struct empty when !CONFIG_IOMMU_API * Renamed the iommu-devices on Exynos as suggested by Marek Szyprowski
Changes since v1:
* Rebased to v4.10-rc7 * Fixed build failures found by the kbuild test robot
Hi,
the IOMMU core code already has two ways of representing individual hardware IOMMUs. One is the sysfs code and the other is the newer iommu_register_instance interface. These two interfaces are special purpose and can be unified.
This unification is attempted in this patch-set. It introduces an extensible 'struct iommu_device' which represents a hardware IOMMU in the IOMMU core code.
For now the struct contains a pointer to the iommu_ops, which is a step to get rid of the per-bus iommu_ops, and a pointer to a firmware-node structure.
The patches have been tested on x86 hardware and an AMD Seattle ARM64 system.
Please review, test and provide feedback!
Thanks a lot,
Joerg
Joerg Roedel (11): iommu: Rename iommu_get_instance() iommu: Rename struct iommu_device iommu: Introduce new 'struct iommu_device' iommu: Add sysfs bindings for struct iommu_device iommu: Make iommu_device_link/unlink take a struct iommu_device iommu: Add iommu_device_set_fwnode() interface iommu/arm-smmu: Make use of the iommu_register interface iommu/msm: Make use of iommu_device_register interface iommu/mediatek: Make use of iommu_device_register interface iommu/exynos: Make use of iommu_device_register interface iommu: Remove iommu_register_instance interface
drivers/acpi/arm64/iort.c | 2 +- drivers/iommu/amd_iommu.c | 18 +++++---- drivers/iommu/amd_iommu_init.c | 9 +++-- drivers/iommu/amd_iommu_types.h | 4 +- drivers/iommu/arm-smmu-v3.c | 22 ++++++++++- drivers/iommu/arm-smmu.c | 31 ++++++++++++++- drivers/iommu/dmar.c | 20 ++++++---- drivers/iommu/exynos-iommu.c | 16 +++++++- drivers/iommu/intel-iommu.c | 19 +++++---- drivers/iommu/iommu-sysfs.c | 61 +++++++++++++---------------- drivers/iommu/iommu.c | 68 +++++++++++++++------------------ drivers/iommu/msm_iommu.c | 73 ++++++++++++++++++++++++++++++++++- drivers/iommu/msm_iommu.h | 3 ++ drivers/iommu/mtk_iommu.c | 27 ++++++++++++- drivers/iommu/mtk_iommu.h | 2 + include/linux/intel-iommu.h | 3 +- include/linux/iommu.h | 85 +++++++++++++++++++++++++++++++---------- include/linux/of_iommu.h | 8 +--- 18 files changed, 335 insertions(+), 136 deletions(-)
-- 1.9.1
| |