Merge branches 'arm/exynos', 'arm/mediatek', 'arm/msm', 'arm/smmu', 'virtio', 'x86...
authorJoerg Roedel <jroedel@suse.de>
Fri, 29 Jul 2022 10:06:56 +0000 (12:06 +0200)
committerJoerg Roedel <jroedel@suse.de>
Fri, 29 Jul 2022 10:06:56 +0000 (12:06 +0200)
12 files changed:
1  2  3  4  5  6  7  8  9 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
arch/x86/kvm/x86.c
drivers/iommu/Kconfig
drivers/iommu/amd/iommu.c
drivers/iommu/arm/arm-smmu/arm-smmu.c
drivers/iommu/arm/arm-smmu/qcom_iommu.c
drivers/iommu/exynos-iommu.c
drivers/iommu/intel/iommu.c
drivers/iommu/msm_iommu.c
drivers/iommu/mtk_iommu.c
drivers/iommu/virtio-iommu.c

diff --cc MAINTAINERS
index 64379c699903bc022dc7656eb02dadc8a18818b1,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,8f9ed151ad4c4c534662fead97eb0e4d2db2f818,3cf9842d9233c8f0d5e29ba8b95fd54651f6e73d,b61dd738a11b54b9b079c0265670ed0aaf74db15..8aa2f0adfda06d25e718f6db05e42cbd09a4d3c5
@@@@@@@@@@ -10448,10 -10352,10 -10352,10 -10352,10 -10352,10 -10352,10 -10448,10 -10352,10 -10352,21 +10447,21 @@@@@@@@@@ T:    git git://git.kernel.org/pub/scm/fs/
         F:     fs/iomap/
         F:     include/linux/iomap.h
         
-------- IOMMU DRIVERS
++++++++ IOMMU DMA-API LAYER
++++++++ M:     Robin Murphy <robin.murphy@arm.com>
++++++++ L:     iommu@lists.linux.dev
++++++++ S:     Maintained
++++++++ T:     git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
++++++++ F:     drivers/iommu/dma-iommu.c
++++++++ F:     drivers/iommu/iova.c
++++++++ F:     include/linux/dma-iommu.h
++++++++ F:     include/linux/iova.h
++++++++ 
++++++++ IOMMU SUBSYSTEM
         M:     Joerg Roedel <joro@8bytes.org>
         M:     Will Deacon <will@kernel.org>
 ----- - L:     iommu@lists.linux-foundation.org
++++++++ R:     Robin Murphy <robin.murphy@arm.com>
        -L:     iommu@lists.linux-foundation.org
 +++++ ++L:     iommu@lists.linux.dev
         S:     Maintained
         T:     git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
         F:     Documentation/devicetree/bindings/iommu/
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 5c0dce78586aa56c4927f3c35ca4c4d5e8ab0466,44016594831de562b80c59e2d964f26a4e1a27fe,44016594831de562b80c59e2d964f26a4e1a27fe,44016594831de562b80c59e2d964f26a4e1a27fe,44016594831de562b80c59e2d964f26a4e1a27fe,44016594831de562b80c59e2d964f26a4e1a27fe,3ba0d7e76efdbb7f6bd2c05f69d03a637e0e844d,44016594831de562b80c59e2d964f26a4e1a27fe,49d616aa214898b42f9f9f393933fccb367ca727..7cca030a508e1e22603a369335d6033b385f1b90
@@@@@@@@@@ -314,12 -314,36 -314,36 -314,36 -314,36 -314,36 -300,6 -314,36 -314,36 +300,6 @@@@@@@@@@ static int iommu_skip_te_disable
         #define IDENTMAP_GFX           2
         #define IDENTMAP_AZALIA                4
         
------ --int intel_iommu_gfx_mapped;
------ --EXPORT_SYMBOL_GPL(intel_iommu_gfx_mapped);
------ --
------ --DEFINE_SPINLOCK(device_domain_lock);
------ --static LIST_HEAD(device_domain_list);
 ----- --
 ----- --/*
 ----- -- * Iterate over elements in device_domain_list and call the specified
 ----- -- * callback @fn against each element.
 ----- -- */
 ----- --int for_each_device_domain(int (*fn)(struct device_domain_info *info,
 ----- --                                    void *data), void *data)
 ----- --{
 ----- --       int ret = 0;
 ----- --       unsigned long flags;
 ----- --       struct device_domain_info *info;
 ----- --
 ----- --       spin_lock_irqsave(&device_domain_lock, flags);
 ----- --       list_for_each_entry(info, &device_domain_list, global) {
 ----- --               ret = fn(info, data);
 ----- --               if (ret) {
 ----- --                       spin_unlock_irqrestore(&device_domain_lock, flags);
 ----- --                       return ret;
 ----- --               }
 ----- --       }
 ----- --       spin_unlock_irqrestore(&device_domain_lock, flags);
 ----- --
 ----- --       return 0;
 ----- --}
------ --
         const struct iommu_ops intel_iommu_ops;
         
         static bool translation_pre_enabled(struct intel_iommu *iommu)
         static void domain_detach_iommu(struct dmar_domain *domain,
                                        struct intel_iommu *iommu)
         {
------ --       int num;
-        
-               assert_spin_locked(&device_domain_lock);
-               assert_spin_locked(&iommu->lock);
++++++ ++       struct iommu_domain_info *info;
         
 ----- --       assert_spin_locked(&device_domain_lock);
 ----- --       assert_spin_locked(&iommu->lock);
 ----- --
------ --       domain->iommu_refcnt[iommu->seq_id] -= 1;
------ --       if (domain->iommu_refcnt[iommu->seq_id] == 0) {
------ --               num = domain->iommu_did[iommu->seq_id];
------ --               clear_bit(num, iommu->domain_ids);
++++++ ++       spin_lock(&iommu->lock);
++++++ ++       info = xa_load(&domain->iommu_array, iommu->seq_id);
++++++ ++       if (--info->refcnt == 0) {
++++++ ++               clear_bit(info->did, iommu->domain_ids);
++++++ ++               xa_erase(&domain->iommu_array, iommu->seq_id);
++++++ ++               domain->nid = NUMA_NO_NODE;
                        domain_update_iommu_cap(domain);
------ --               domain->iommu_did[iommu->seq_id] = 0;
++++++ ++               kfree(info);
                }
++++++ ++       spin_unlock(&iommu->lock);
         }
         
         static inline int guestwidth_to_adjustwidth(int gaw)
Simple merge
Simple merge
Simple merge