Commit f1c243fc authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull iommu updates from Joerg Roedel:
 "Core changes:
   - PASID support for the blocked_domain

  ARM-SMMU Updates:
   - SMMUv2:
      - Implement per-client prefetcher configuration on Qualcomm SoCs
      - Support for the Adreno SMMU on Qualcomm's SDM670 SOC
   - SMMUv3:
      - Pretty-printing of event records
      - Drop the ->domain_alloc_paging implementation in favour of
        domain_alloc_paging_flags(flags==0)
   - IO-PGTable:
      - Generalisation of the page-table walker to enable external
        walkers (e.g. for debugging unexpected page-faults from the GPU)
      - Minor fix for handling concatenated PGDs at stage-2 with 16KiB
        pages
   - Misc:
      - Clean-up device probing and replace the crufty probe-deferral
        hack with a more robust implementation of
        arm_smmu_get_by_fwnode()
      - Device-tree binding updates for a bunch of Qualcomm platforms

  Intel VT-d Updates:
   - Remove domain_alloc_paging()
   - Remove capability audit code
   - Draining PRQ in sva unbind path when FPD bit set
   - Link cache tags of same iommu unit together

  AMD-Vi Updates:
   - Use CMPXCHG128 to update DTE
   - Cleanups of the domain_alloc_paging() path

  RiscV IOMMU:
   - Platform MSI support
   - Shutdown support

  Rockchip IOMMU:
   - Add DT bindings for Rockchip RK3576

  More smaller fixes and cleanups"

* tag 'iommu-updates-v6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux: (66 commits)
  iommu: Use str_enable_disable-like helpers
  iommu/amd: Fully decode all combinations of alloc_paging_flags
  iommu/amd: Move the nid to pdom_setup_pgtable()
  iommu/amd: Change amd_iommu_pgtable to use enum protection_domain_mode
  iommu/amd: Remove type argument from do_iommu_domain_alloc() and related
  iommu/amd: Remove dev == NULL checks
  iommu/amd: Remove domain_alloc()
  iommu/amd: Remove unused amd_iommu_domain_update()
  iommu/riscv: Fixup compile warning
  iommu/arm-smmu-v3: Add missing #include of linux/string_choices.h
  iommu/arm-smmu-v3: Use str_read_write helper w/ logs
  iommu/io-pgtable-arm: Add way to debug pgtable walk
  iommu/io-pgtable-arm: Re-use the pgtable walk for iova_to_phys
  iommu/io-pgtable-arm: Make pgtable walker more generic
  iommu/arm-smmu: Add ACTLR data and support for qcom_smmu_500
  iommu/arm-smmu: Introduce ACTLR custom prefetcher settings
  iommu/arm-smmu: Add support for PRR bit setup
  iommu/arm-smmu: Refactor qcom_smmu structure to include single pointer
  iommu/arm-smmu: Re-enable context caching in smmu reset operation
  iommu/vt-d: Link cache tags of same iommu unit together
  ...
parents c9c0543b 125f34e4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -198,7 +198,8 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| ARM            | Neoverse-V3     | #3312417        | ARM64_ERRATUM_3194386       |
+----------------+-----------------+-----------------+-----------------------------+
| ARM            | MMU-500         | #841119,826419  | N/A                         |
| ARM            | MMU-500         | #841119,826419  | ARM_SMMU_MMU_500_CPRE_ERRATA|
|                |                 | #562869,1047329 |                             |
+----------------+-----------------+-----------------+-----------------------------+
| ARM            | MMU-600         | #1076982,1209401| N/A                         |
+----------------+-----------------+-----------------+-----------------------------+
+22 −1
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ properties:
              - qcom,sm8450-smmu-500
              - qcom,sm8550-smmu-500
              - qcom,sm8650-smmu-500
              - qcom,sm8750-smmu-500
              - qcom,x1e80100-smmu-500
          - const: qcom,smmu-500
          - const: arm,mmu-500
@@ -88,6 +89,7 @@ properties:
        items:
          - enum:
              - qcom,qcm2290-smmu-500
              - qcom,qcs615-smmu-500
              - qcom,sa8255p-smmu-500
              - qcom,sa8775p-smmu-500
              - qcom,sar2130p-smmu-500
@@ -102,6 +104,7 @@ properties:
              - qcom,sm8450-smmu-500
              - qcom,sm8550-smmu-500
              - qcom,sm8650-smmu-500
              - qcom,sm8750-smmu-500
              - qcom,x1e80100-smmu-500
          - const: qcom,adreno-smmu
          - const: qcom,smmu-500
@@ -122,6 +125,7 @@ properties:
              - qcom,msm8996-smmu-v2
              - qcom,sc7180-smmu-v2
              - qcom,sdm630-smmu-v2
              - qcom,sdm670-smmu-v2
              - qcom,sdm845-smmu-v2
              - qcom,sm6350-smmu-v2
              - qcom,sm7150-smmu-v2
@@ -474,6 +478,7 @@ allOf:
          items:
            - enum:
                - qcom,qcm2290-smmu-500
                - qcom,qcs615-smmu-500
                - qcom,sm6115-smmu-500
                - qcom,sm6125-smmu-500
            - const: qcom,adreno-smmu
@@ -550,6 +555,23 @@ allOf:
            - description: GPU SNoC bus clock
            - description: GPU AHB clock

  - if:
      properties:
        compatible:
          items:
            - const: qcom,sm8750-smmu-500
            - const: qcom,adreno-smmu
            - const: qcom,smmu-500
            - const: arm,mmu-500
    then:
      properties:
        clock-names:
          items:
            - const: hlos
        clocks:
          items:
            - description: HLOS vote clock

  # Disallow clocks for all other platforms with specific compatibles
  - if:
      properties:
@@ -559,7 +581,6 @@ allOf:
              - cavium,smmu-v2
              - marvell,ap806-smmu-500
              - nvidia,smmu-500
              - qcom,qcs615-smmu-500
              - qcom,qcs8300-smmu-500
              - qcom,qdu1000-smmu-500
              - qcom,sa8255p-smmu-500
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ properties:
      - items:
          - enum:
              - qcom,msm8916-iommu
              - qcom,msm8917-iommu
              - qcom,msm8953-iommu
          - const: qcom,msm-iommu-v1
      - items:
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ properties:
          - rockchip,rk3568-iommu
      - items:
          - enum:
              - rockchip,rk3576-iommu
              - rockchip,rk3588-iommu
          - const: rockchip,rk3568-iommu

+12 −0
Original line number Diff line number Diff line
@@ -367,6 +367,18 @@ config ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT
	  'arm-smmu.disable_bypass' will continue to override this
	  config.

config ARM_SMMU_MMU_500_CPRE_ERRATA
	bool "Enable errata workaround for CPRE in SMMU reset path"
	depends on ARM_SMMU
	default y
	help
	  Say Y here (by default) to apply workaround to disable
	  MMU-500's next-page prefetcher for sake of 4 known errata.

	  Say N here only when it is sure that any errata related to
	  prefetch enablement are not applicable on the platform.
	  Refer silicon-errata.rst for info on errata IDs.

config ARM_SMMU_QCOM
	def_tristate y
	depends on ARM_SMMU && ARCH_QCOM
Loading