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

Commit 03ebe48e authored by Joerg Roedel's avatar Joerg Roedel
Browse files

Merge branches 'iommu/fixes', 'arm/renesas', 'arm/mediatek', 'arm/tegra',...

Merge branches 'iommu/fixes', 'arm/renesas', 'arm/mediatek', 'arm/tegra', 'arm/omap', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1683,12 +1683,12 @@
			By default, super page will be supported if Intel IOMMU
			has the capability. With this option, super page will
			not be supported.
		ecs_off [Default Off]
			By default, extended context tables will be supported if
			the hardware advertises that it has support both for the
			extended tables themselves, and also PASID support. With
			this option set, extended tables will not be used even
			on hardware which claims to support them.
		sm_off [Default Off]
			By default, scalable mode will be supported if the
			hardware advertises that it has support for the scalable
			mode translation. With this option set, scalable mode
			will not be used even on hardware which claims to support
			it.
		tboot_noforce [Default Off]
			Do not force the Intel IOMMU enabled under tboot.
			By default, tboot will force Intel IOMMU on, which
+43 −0
Original line number Diff line number Diff line
@@ -17,10 +17,20 @@ conditions.
                        "arm,mmu-401"
                        "arm,mmu-500"
                        "cavium,smmu-v2"
                        "qcom,smmu-v2"

                  depending on the particular implementation and/or the
                  version of the architecture implemented.

                  Qcom SoCs must contain, as below, SoC-specific compatibles
                  along with "qcom,smmu-v2":
                  "qcom,msm8996-smmu-v2", "qcom,smmu-v2",
                  "qcom,sdm845-smmu-v2", "qcom,smmu-v2".

                  Qcom SoCs implementing "arm,mmu-500" must also include,
                  as below, SoC-specific compatibles:
                  "qcom,sdm845-smmu-500", "arm,mmu-500"

- reg           : Base address and size of the SMMU.

- #global-interrupts : The number of global interrupts exposed by the
@@ -71,6 +81,22 @@ conditions.
                  or using stream matching with #iommu-cells = <2>, and
                  may be ignored if present in such cases.

- clock-names:    List of the names of clocks input to the device. The
                  required list depends on particular implementation and
                  is as follows:
                  - for "qcom,smmu-v2":
                    - "bus": clock required for downstream bus access and
                             for the smmu ptw,
                    - "iface": clock required to access smmu's registers
                               through the TCU's programming interface.
                  - unspecified for other implementations.

- clocks:         Specifiers for all clocks listed in the clock-names property,
                  as per generic clock bindings.

- power-domains:  Specifiers for power domains required to be powered on for
                  the SMMU to operate, as per generic power domain bindings.

** Deprecated properties:

- mmu-masters (deprecated in favour of the generic "iommus" binding) :
@@ -137,3 +163,20 @@ conditions.
                iommu-map = <0 &smmu3 0 0x400>;
                ...
        };

	/* Qcom's arm,smmu-v2 implementation */
	smmu4: iommu@d00000 {
		compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
		reg = <0xd00000 0x10000>;

		#global-interrupts = <1>;
		interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
		#iommu-cells = <1>;
		power-domains = <&mmcc MDSS_GDSC>;

		clocks = <&mmcc SMMU_MDP_AXI_CLK>,
			 <&mmcc SMMU_MDP_AHB_CLK>;
		clock-names = "bus", "iface";
	};
+2 −0
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ Required Properties:
    - "renesas,ipmmu-r8a7743" for the R8A7743 (RZ/G1M) IPMMU.
    - "renesas,ipmmu-r8a7744" for the R8A7744 (RZ/G1N) IPMMU.
    - "renesas,ipmmu-r8a7745" for the R8A7745 (RZ/G1E) IPMMU.
    - "renesas,ipmmu-r8a774a1" for the R8A774A1 (RZ/G2M) IPMMU.
    - "renesas,ipmmu-r8a774c0" for the R8A774C0 (RZ/G2E) IPMMU.
    - "renesas,ipmmu-r8a7790" for the R8A7790 (R-Car H2) IPMMU.
    - "renesas,ipmmu-r8a7791" for the R8A7791 (R-Car M2-W) IPMMU.
    - "renesas,ipmmu-r8a7793" for the R8A7793 (R-Car M2-N) IPMMU.
+1 −1
Original line number Diff line number Diff line
@@ -1472,7 +1472,7 @@ static int dev_has_iommu_table(struct device *dev, void *data)
	if (!dev)
		return 0;

	if (dev->iommu_group) {
	if (device_iommu_mapped(dev)) {
		*ppdev = pdev;
		return 1;
	}
+3 −3
Original line number Diff line number Diff line
@@ -1086,7 +1086,7 @@ int iommu_add_device(struct device *dev)
	if (!device_is_registered(dev))
		return -ENOENT;

	if (dev->iommu_group) {
	if (device_iommu_mapped(dev)) {
		pr_debug("%s: Skipping device %s with iommu group %d\n",
			 __func__, dev_name(dev),
			 iommu_group_id(dev->iommu_group));
@@ -1129,7 +1129,7 @@ void iommu_del_device(struct device *dev)
	 * and we needn't detach them from the associated
	 * IOMMU groups
	 */
	if (!dev->iommu_group) {
	if (!device_iommu_mapped(dev)) {
		pr_debug("iommu_tce: skipping device %s with no tbl\n",
			 dev_name(dev));
		return;
@@ -1148,7 +1148,7 @@ static int tce_iommu_bus_notifier(struct notifier_block *nb,
        case BUS_NOTIFY_ADD_DEVICE:
                return iommu_add_device(dev);
        case BUS_NOTIFY_DEL_DEVICE:
                if (dev->iommu_group)
                if (device_iommu_mapped(dev))
                        iommu_del_device(dev);
                return 0;
        default:
Loading