Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0fb1b36 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull IOMMU updates from Joerg Roedel:
 "The updates include:

   - rate limiting for the VT-d fault handler

   - remove statistics code from the AMD IOMMU driver.  It is unused and
     should be replaced by something more generic if needed

   - per-domain pagesize-bitmaps in IOMMU core code to support systems
     with different types of IOMMUs

   - support for ACPI devices in the AMD IOMMU driver

   - 4GB mode support for Mediatek IOMMU driver

   - ARM-SMMU updates from Will Deacon:
      - support for 64k pages with SMMUv1 implementations (e.g MMU-401)
      - remove open-coded 64-bit MMIO accessors
      - initial support for 16-bit VMIDs, as supported by some ThunderX
        SMMU implementations
      - a couple of errata workarounds for silicon in the field

   - various fixes here and there"

* tag 'iommu-updates-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (44 commits)
  iommu/arm-smmu: Use per-domain page sizes.
  iommu/amd: Remove statistics code
  iommu/dma: Finish optimising higher-order allocations
  iommu: Allow selecting page sizes per domain
  iommu: of: enforce const-ness of struct iommu_ops
  iommu: remove unused priv field from struct iommu_ops
  iommu/dma: Implement scatterlist segment merging
  iommu/arm-smmu: Clear cache lock bit of ACR
  iommu/arm-smmu: Support SMMUv1 64KB supplement
  iommu/arm-smmu: Decouple context format from kernel config
  iommu/arm-smmu: Tidy up 64-bit/atomic I/O accesses
  io-64-nonatomic: Add relaxed accessor variants
  iommu/arm-smmu: Work around MMU-500 prefetch errata
  iommu/arm-smmu: Convert ThunderX workaround to new method
  iommu/arm-smmu: Differentiate specific implementations
  iommu/arm-smmu: Workaround for ThunderX erratum #27704
  iommu/arm-smmu: Add support for 16 bit VMID
  iommu/amd: Move get_device_id() and friends to beginning of file
  iommu/amd: Don't use IS_ERR_VALUE to check integer values
  iommu/amd: Signedness bug in acpihid_device_group()
  ...
parents f4c80d5a 6c0b43df
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -53,7 +53,9 @@ stable kernels.
| ARM            | Cortex-A57      | #832075         | ARM64_ERRATUM_832075    |
| ARM            | Cortex-A57      | #852523         | N/A                     |
| ARM            | Cortex-A57      | #834220         | ARM64_ERRATUM_834220    |
| ARM            | MMU-500         | #841119,#826419 | N/A                     |
|                |                 |                 |                         |
| Cavium         | ThunderX ITS    | #22375, #24313  | CAVIUM_ERRATUM_22375    |
| Cavium         | ThunderX GICv3  | #23154          | CAVIUM_ERRATUM_23154    |
| Cavium         | ThunderX Core   | #27456          | CAVIUM_ERRATUM_27456    |
| Cavium         | ThunderX SMMUv2 | #27704          | N/A		       |
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ conditions.
                        "arm,mmu-400"
                        "arm,mmu-401"
                        "arm,mmu-500"
                        "cavium,smmu-v2"

                  depending on the particular implementation and/or the
                  version of the architecture implemented.
+7 −0
Original line number Diff line number Diff line
@@ -1787,6 +1787,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			PCI device 00:14.0 write the parameter as:
				ivrs_hpet[0]=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:
				ivrs_acpihid[00:14.5]=AMD0020:0

	js=		[HW,JOY] Analog joystick
			See Documentation/input/joystick.txt.

+1 −1
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ static inline unsigned long dma_max_pfn(struct device *dev)

#define arch_setup_dma_ops arch_setup_dma_ops
extern void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
			       struct iommu_ops *iommu, bool coherent);
			       const struct iommu_ops *iommu, bool coherent);

#define arch_teardown_dma_ops arch_teardown_dma_ops
extern void arch_teardown_dma_ops(struct device *dev);
+3 −3
Original line number Diff line number Diff line
@@ -2215,7 +2215,7 @@ static struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent)
}

static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size,
				    struct iommu_ops *iommu)
				    const struct iommu_ops *iommu)
{
	struct dma_iommu_mapping *mapping;

@@ -2253,7 +2253,7 @@ static void arm_teardown_iommu_dma_ops(struct device *dev)
#else

static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size,
				    struct iommu_ops *iommu)
				    const struct iommu_ops *iommu)
{
	return false;
}
@@ -2270,7 +2270,7 @@ static struct dma_map_ops *arm_get_dma_map_ops(bool coherent)
}

void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
			struct iommu_ops *iommu, bool coherent)
			const struct iommu_ops *iommu, bool coherent)
{
	struct dma_map_ops *dma_ops;

Loading