Commit 1d239c1e authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'iommu-updates-v5.20-or-v6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu

Pull iommu updates from Joerg Roedel:

 - The most intrusive patch is small and changes the default allocation
   policy for DMA addresses.

   Before the change the allocator tried its best to find an address in
   the first 4GB. But that lead to performance problems when that space
   gets exhaused, and since most devices are capable of 64-bit DMA these
   days, we changed it to search in the full DMA-mask range from the
   beginning.

   This change has the potential to uncover bugs elsewhere, in the
   kernel or the hardware. There is a Kconfig option and a command line
   option to restore the old behavior, but none of them is enabled by
   default.

 - Add Robin Murphy as reviewer of IOMMU code and maintainer for the
   dma-iommu and iova code

 - Chaning IOVA magazine size from 1032 to 1024 bytes to save memory

 - Some core code cleanups and dead-code removal

 - Support for ACPI IORT RMR node

 - Support for multiple PCI domains in the AMD-Vi driver

 - ARM SMMU changes from Will Deacon:
      - Add even more Qualcomm device-tree compatible strings
      - Support dumping of IMP DEF Qualcomm registers on TLB sync
        timeout
      - Fix reference count leak on device tree node in Qualcomm driver

 - Intel VT-d driver updates from Lu Baolu:
      - Make intel-iommu.h private
      - Optimize the use of two locks
      - Extend the driver to support large-scale platforms
      - Cleanup some dead code

 - MediaTek IOMMU refactoring and support for TTBR up to 35bit

 - Basic support for Exynos SysMMU v7

 - VirtIO IOMMU driver gets a map/unmap_pages() implementation

 - Other smaller cleanups and fixes

* tag 'iommu-updates-v5.20-or-v6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (116 commits)
  iommu/amd: Fix compile warning in init code
  iommu/amd: Add support for AVIC when SNP is enabled
  iommu/amd: Simplify and Consolidate Virtual APIC (AVIC) Enablement
  ACPI/IORT: Fix build error implicit-function-declaration
  drivers: iommu: fix clang -wformat warning
  iommu/arm-smmu: qcom_iommu: Add of_node_put() when breaking out of loop
  iommu/arm-smmu-qcom: Add SM6375 SMMU compatible
  dt-bindings: arm-smmu: Add compatible for Qualcomm SM6375
  MAINTAINERS: Add Robin Murphy as IOMMU SUBSYTEM reviewer
  iommu/amd: Do not support IOMMUv2 APIs when SNP is enabled
  iommu/amd: Do not support IOMMU_DOMAIN_IDENTITY after SNP is enabled
  iommu/amd: Set translation valid bit only when IO page tables are in use
  iommu/amd: Introduce function to check and enable SNP
  iommu/amd: Globally detect SNP support
  iommu/amd: Process all IVHDs before enabling IOMMU features
  iommu/amd: Introduce global variable for storing common EFR and EFR2
  iommu/amd: Introduce Support for Extended Feature 2 Register
  iommu/amd: Change macro for IOMMU control register bit shift to decimal value
  iommu/exynos: Enable default VM instance on SysMMU v7
  iommu/exynos: Add SysMMU v7 register set
  ...
parents 75b9fcb5 c10100a4
Loading
Loading
Loading
Loading
+25 −9
Original line number Diff line number Diff line
@@ -2274,23 +2274,39 @@

	ivrs_ioapic	[HW,X86-64]
			Provide an override to the IOAPIC-ID<->DEVICE-ID
			mapping provided in the IVRS ACPI table. For
			example, to map IOAPIC-ID decimal 10 to
			PCI device 00:14.0 write the parameter as:
			mapping provided in the IVRS ACPI table.
			By default, PCI segment is 0, and can be omitted.
			For example:
			* To map IOAPIC-ID decimal 10 to PCI device 00:14.0
			  write the parameter as:
				ivrs_ioapic[10]=00:14.0
			* To map IOAPIC-ID decimal 10 to PCI segment 0x1 and
			  PCI device 00:14.0 write the parameter as:
				ivrs_ioapic[10]=0001:00:14.0

	ivrs_hpet	[HW,X86-64]
			Provide an override to the HPET-ID<->DEVICE-ID
			mapping provided in the IVRS ACPI table. For
			example, to map HPET-ID decimal 0 to
			PCI device 00:14.0 write the parameter as:
			mapping provided in the IVRS ACPI table.
			By default, PCI segment is 0, and can be omitted.
			For example:
			* To map HPET-ID decimal 0 to PCI device 00:14.0
			  write the parameter as:
				ivrs_hpet[0]=00:14.0
			* To map HPET-ID decimal 10 to PCI segment 0x1 and
			  PCI device 00:14.0 write the parameter as:
				ivrs_ioapic[10]=0001:00:14.0

	ivrs_acpihid	[HW,X86-64]
			Provide an override to the ACPI-HID:UID<->DEVICE-ID
			mapping provided in the IVRS ACPI table. For
			example, to map UART-HID:UID AMD0020:0 to
			PCI device 00:14.5 write the parameter as:
			mapping provided in the IVRS ACPI table.

			For example, to map UART-HID:UID AMD0020:0 to
			PCI segment 0x1 and PCI device ID 00:14.5,
			write the parameter as:
				ivrs_acpihid[0001:00:14.5]=AMD0020:0

			By default, PCI segment is 0, and can be omitted.
			For example, PCI device 00:14.5 write the parameter as:
				ivrs_acpihid[00:14.5]=AMD0020:0

	js=		[HW,JOY] Analog joystick
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ properties:
              - qcom,sdx55-smmu-500
              - qcom,sdx65-smmu-500
              - qcom,sm6350-smmu-500
              - qcom,sm6375-smmu-500
              - qcom,sm8150-smmu-500
              - qcom,sm8250-smmu-500
              - qcom,sm8350-smmu-500
+17 −0
Original line number Diff line number Diff line
@@ -101,6 +101,10 @@ properties:
    items:
      - const: bclk

  mediatek,infracfg:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle to the mediatek infracfg syscon

  mediatek,larbs:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    minItems: 1
@@ -167,6 +171,18 @@ allOf:
      required:
        - power-domains

  - if:
      properties:
        compatible:
          contains:
            enum:
              - mediatek,mt2712-m4u
              - mediatek,mt8173-m4u

    then:
      required:
        - mediatek,infracfg

  - if: # The IOMMUs don't have larbs.
      not:
        properties:
@@ -191,6 +207,7 @@ examples:
            interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_LOW>;
            clocks = <&infracfg CLK_INFRA_M4U>;
            clock-names = "bclk";
            mediatek,infracfg = <&infracfg>;
            mediatek,larbs = <&larb0>, <&larb1>, <&larb2>,
                             <&larb3>, <&larb4>, <&larb5>;
            #iommu-cells = <1>;
+12 −2
Original line number Diff line number Diff line
@@ -10233,7 +10233,6 @@ L: iommu@lists.linux.dev
S:	Supported
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
F:	drivers/iommu/intel/
F:	include/linux/intel-iommu.h
F:	include/linux/intel-svm.h
INTEL IOP-ADMA DMA DRIVER
@@ -10605,9 +10604,20 @@ T: git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
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>
R:	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
+0 −15
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
 * Copyright (c) 2006-2009, Intel Corporation
 */

#include <linux/intel-iommu.h>
#include <linux/init_task.h>
#include <linux/spinlock.h>
#include <linux/export.h>
@@ -516,17 +515,3 @@ struct acpi_table_header *tboot_get_dmar_table(struct acpi_table_header *dmar_tb

	return dmar_tbl;
}

int tboot_force_iommu(void)
{
	if (!tboot_enabled())
		return 0;

	if (no_iommu || dmar_disabled)
		pr_warn("Forcing Intel-IOMMU to enabled\n");

	dmar_disabled = 0;
	no_iommu = 0;

	return 1;
}
Loading