]> Git Repo - J-linux.git/commitdiff
Merge branches 'intel/vt-d', 'amd/amd-vi' and 'iommufd/arm-smmuv3-nested' into next
authorJoerg Roedel <[email protected]>
Fri, 15 Nov 2024 08:27:43 +0000 (09:27 +0100)
committerJoerg Roedel <[email protected]>
Fri, 15 Nov 2024 08:27:43 +0000 (09:27 +0100)
1  2  3  4 
drivers/iommu/Kconfig
drivers/iommu/amd/amd_iommu.h
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
drivers/iommu/arm/arm-smmu/arm-smmu.c
drivers/iommu/intel/iommu.c
drivers/iommu/iommu.c
include/linux/iommu.h
include/uapi/linux/iommufd.h

Simple merge
Simple merge
index 826db8894fb76ede48d27451fbefb1988663c21a,f70165f544dfa79feaaf0350ff31963cfa74f25f,8a193141f003d7fa1beaf8848b268d3fd5939fae,b4b03206afbf488ad6d69e2af89a1cae8cec3519..7ee3cbbe3744b3c12ea3ce37182744d1befc75dc
@@@@@ -3084,8 -3082,7 -3084,8 -3102,8 +3100,9 @@@@@ arm_smmu_domain_alloc_user(struct devic
                           const struct iommu_user_data *user_data)
    {
        struct arm_smmu_master *master = dev_iommu_priv_get(dev);
 -      const u32 PAGING_FLAGS = IOMMU_HWPT_ALLOC_DIRTY_TRACKING;
 +      const u32 PAGING_FLAGS = IOMMU_HWPT_ALLOC_DIRTY_TRACKING |
- -                                     IOMMU_HWPT_ALLOC_PASID;
++++                             IOMMU_HWPT_ALLOC_PASID |
+++                              IOMMU_HWPT_ALLOC_NEST_PARENT;
        struct arm_smmu_domain *smmu_domain;
        int ret;
    
Simple merge
index e860bc9439a28358b04d11682c6a877af3b71d85,b380b38315b2ae66c5714953f51ac4f346a98474,9f6b0780f2ef5e7347d702b5337d99edbcc92292,9f6b0780f2ef5e7347d702b5337d99edbcc92292..527f6f89d8a1f56d48d98e2c3b2a8a3ebedffaa4
@@@@@ -1908,23 -1792,12 -1908,23 -1908,23 +1792,12 @@@@@ static int domain_setup_passthrough(str
    static int domain_setup_first_level(struct intel_iommu *iommu,
                                    struct dmar_domain *domain,
                                    struct device *dev,
- --                                u32 pasid)
+ ++                                u32 pasid, struct iommu_domain *old)
    {
        struct dma_pte *pgd = domain->pgd;
- --    int agaw, level;
- --    int flags = 0;
-   
-       /*
-        * Skip top levels of page tables for iommu which has
-        * less agaw than default. Unnecessary for PT mode.
-        */
-       for (agaw = domain->agaw; agaw > iommu->agaw; agaw--) {
-               pgd = phys_to_virt(dma_pte_addr(pgd));
-               if (!dma_pte_present(pgd))
-                       return -ENOMEM;
-       }
+ ++    int level, flags = 0;
    
  --    /*
  --     * Skip top levels of page tables for iommu which has
  --     * less agaw than default. Unnecessary for PT mode.
  --     */
  --    for (agaw = domain->agaw; agaw > iommu->agaw; agaw--) {
  --            pgd = phys_to_virt(dma_pte_addr(pgd));
  --            if (!dma_pte_present(pgd))
  --                    return -ENOMEM;
  --    }
  --
- --    level = agaw_to_level(agaw);
+ ++    level = agaw_to_level(domain->agaw);
        if (level != 4 && level != 5)
                return -EINVAL;
    
Simple merge
index 9a3215b5c1e5d46f5fb000b2d32c352b818ee553,27f923450a7c8fde27968e922d744c4141b9fd38,8cce372a33f10f5c0a91c2a01ae4f6f19deafd38,4ad9b9ec6c9b2713fa8663fc1885949dbf5e1fe0..0c3bfb66dc7c3287c647a7a95f2c651cbe4cffea
@@@@@ -782,14 -785,12 -782,14 -782,12 +781,14 @@@@@ static inline void iommu_iotlb_gather_i
        };
    }
    
 ---extern int bus_iommu_probe(const struct bus_type *bus);
  + extern bool iommu_present(const struct bus_type *bus);
    extern bool device_iommu_capable(struct device *dev, enum iommu_cap cap);
    extern bool iommu_group_has_isolated_msi(struct iommu_group *group);
 - -extern struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus);
 - -struct iommu_domain *iommu_paging_domain_alloc(struct device *dev);
 + +struct iommu_domain *iommu_paging_domain_alloc_flags(struct device *dev, unsigned int flags);
 + +static inline struct iommu_domain *iommu_paging_domain_alloc(struct device *dev)
 + +{
 + +    return iommu_paging_domain_alloc_flags(dev, 0);
 + +}
    extern void iommu_domain_free(struct iommu_domain *domain);
    extern int iommu_attach_device(struct iommu_domain *domain,
                               struct device *dev);
Simple merge
This page took 0.128999 seconds and 4 git commands to generate.