Home
last modified time | relevance | path

Searched full:smmu (Results 1 – 25 of 77) sorted by relevance

1234

/linux/drivers/iommu/arm/arm-smmu/
H A Darm-smmu.c3 * IOMMU API for ARM architected SMMU implementations.
13 * - Non-secure access to the SMMU
18 #define pr_fmt(fmt) "arm-smmu: " fmt
41 #include "arm-smmu.h"
45 * Apparently, some Qualcomm arm64 platforms which appear to expose their SMMU
59 …"Force SMMU mappings to be installed at a particular stage of translation. A value of '1' or '2' f…
64 …domain will report an abort back to the device and will not be allowed to pass through the SMMU.");
72 static inline int arm_smmu_rpm_get(struct arm_smmu_device *smmu) in arm_smmu_rpm_get() argument
74 if (pm_runtime_enabled(smmu->dev)) in arm_smmu_rpm_get()
75 return pm_runtime_resume_and_get(smmu->dev); in arm_smmu_rpm_get()
[all …]
H A Darm-smmu-nvidia.c12 #include "arm-smmu.h"
21 * In addition, the SMMU driver needs to coordinate with the memory controller
30 * SMMU instance.
35 struct arm_smmu_device smmu; member
41 static inline struct nvidia_smmu *to_nvidia_smmu(struct arm_smmu_device *smmu) in to_nvidia_smmu() argument
43 return container_of(smmu, struct nvidia_smmu, smmu); in to_nvidia_smmu()
46 static inline void __iomem *nvidia_smmu_page(struct arm_smmu_device *smmu, in nvidia_smmu_page() argument
51 nvidia_smmu = container_of(smmu, struct nvidia_smmu, smmu); in nvidia_smmu_page()
52 return nvidia_smmu->bases[inst] + (page << smmu->pgshift); in nvidia_smmu_page()
55 static u32 nvidia_smmu_read_reg(struct arm_smmu_device *smmu, in nvidia_smmu_read_reg() argument
[all …]
H A Darm-smmu-qcom-debug.c19 #include "arm-smmu.h"
20 #include "arm-smmu-qcom.h"
59 static struct qcom_smmu *to_qcom_smmu(struct arm_smmu_device *smmu) in to_qcom_smmu() argument
61 return container_of(smmu, struct qcom_smmu, smmu); in to_qcom_smmu()
64 void qcom_smmu_tlb_sync_debug(struct arm_smmu_device *smmu) in qcom_smmu_tlb_sync_debug() argument
68 struct qcom_smmu *qsmmu = container_of(smmu, struct qcom_smmu, smmu); in qcom_smmu_tlb_sync_debug()
74 dev_err(smmu->dev, "TLB sync timed out -- SMMU may be deadlocked\n"); in qcom_smmu_tlb_sync_debug()
80 ret = qcom_scm_io_readl(smmu->ioaddr + cfg->reg_offset[QCOM_SMMU_TBU_PWR_STATUS], in qcom_smmu_tlb_sync_debug()
83 dev_err(smmu->dev, in qcom_smmu_tlb_sync_debug()
86 ret = qcom_scm_io_readl(smmu->ioaddr + cfg->reg_offset[QCOM_SMMU_STATS_SYNC_INV_TBU_ACK], in qcom_smmu_tlb_sync_debug()
[all …]
H A DMakefile4 arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-nvidia.o
5 arm_smmu-$(CONFIG_ARM_SMMU_QCOM) += arm-smmu-qcom.o
6 arm_smmu-$(CONFIG_ARM_SMMU_QCOM_DEBUG) += arm-smmu-qcom-debug.o
/linux/drivers/iommu/
H A Dtegra-smmu.c26 struct tegra_smmu *smmu; member
59 struct tegra_smmu *smmu; member
75 static inline void smmu_writel(struct tegra_smmu *smmu, u32 value, in smmu_writel() argument
78 writel(value, smmu->regs + offset); in smmu_writel()
81 static inline u32 smmu_readl(struct tegra_smmu *smmu, unsigned long offset) in smmu_readl() argument
83 return readl(smmu->regs + offset); in smmu_readl()
92 #define SMMU_TLB_CONFIG_ACTIVE_LINES(smmu) \ argument
93 ((smmu)->soc->num_tlb_lines & (smmu)->tlb_mask)
179 static bool smmu_dma_addr_valid(struct tegra_smmu *smmu, dma_addr_t addr) in smmu_dma_addr_valid() argument
182 return (addr & smmu->pfn_mask) == addr; in smmu_dma_addr_valid()
[all …]
/linux/arch/arm64/boot/dts/marvell/
H A Darmada-8040.dtsi14 <0x0 &smmu 0x480 0x20>,
15 <0x100 &smmu 0x4a0 0x20>,
16 <0x200 &smmu 0x4c0 0x20>;
30 iommus = <&smmu 0x444>;
34 iommus = <&smmu 0x445>;
38 iommus = <&smmu 0x440>;
42 iommus = <&smmu 0x441>;
46 iommus = <&smmu 0x454>;
50 iommus = <&smmu 0x450>;
54 iommus = <&smmu 0x451>;
H A Darmada-7040.dtsi14 <0x0 &smmu 0x480 0x20>,
15 <0x100 &smmu 0x4a0 0x20>,
16 <0x200 &smmu 0x4c0 0x20>;
21 iommus = <&smmu 0x444>;
25 iommus = <&smmu 0x445>;
29 iommus = <&smmu 0x440>;
33 iommus = <&smmu 0x441>;
H A Dcn9130-crb-A.dts22 <0x0 &smmu 0x480 0x20>,
23 <0x100 &smmu 0x4a0 0x20>,
24 <0x200 &smmu 0x4c0 0x20>;
/linux/drivers/iommu/arm/arm-smmu-v3/
H A Darm-smmu-v3-iommufd.c8 #include "arm-smmu-v3.h"
14 const struct arm_smmu_impl_ops *impl_ops = master->smmu->impl_ops; in arm_smmu_hw_info()
23 return impl_ops->hw_info(master->smmu, length, type); in arm_smmu_hw_info()
30 base_idr = master->smmu->base + ARM_SMMU_IDR0; in arm_smmu_hw_info()
33 info->iidr = readl_relaxed(master->smmu->base + ARM_SMMU_IIDR); in arm_smmu_hw_info()
34 info->aidr = readl_relaxed(master->smmu->base + ARM_SMMU_AIDR); in arm_smmu_hw_info()
138 mutex_lock(&master->smmu->streams_mutex); in arm_smmu_attach_commit_vmaster()
141 mutex_unlock(&master->smmu->streams_mutex); in arm_smmu_attach_commit_vmaster()
166 if (nested_domain->vsmmu->smmu != master->smmu) in arm_smmu_attach_dev_nested()
357 struct arm_smmu_device *smmu = vsmmu->smmu; in arm_vsmmu_cache_invalidate() local
[all …]
H A DMakefile3 arm_smmu_v3-y := arm-smmu-v3.o
4 arm_smmu_v3-$(CONFIG_ARM_SMMU_V3_IOMMUFD) += arm-smmu-v3-iommufd.o
5 arm_smmu_v3-$(CONFIG_ARM_SMMU_V3_SVA) += arm-smmu-v3-sva.o
8 obj-$(CONFIG_ARM_SMMU_V3_KUNIT_TEST) += arm-smmu-v3-test.o
/linux/drivers/acpi/arm64/
H A Diort.c437 struct acpi_iort_smmu_v3 *smmu; in iort_get_id_mapping_index() local
449 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in iort_get_id_mapping_index()
455 if (smmu->event_gsiv && smmu->pri_gsiv && in iort_get_id_mapping_index()
456 smmu->gerr_gsiv && smmu->sync_gsiv) in iort_get_id_mapping_index()
458 } else if (!(smmu->flags & ACPI_IORT_SMMU_V3_DEVICEID_VALID)) { in iort_get_id_mapping_index()
462 if (smmu->id_mapping_index >= node->mapping_count) { in iort_get_id_mapping_index()
468 return smmu->id_mapping_index; in iort_get_id_mapping_index()
561 * as NC (named component) -> SMMU -> ITS. If the type is matched, in iort_node_map_platform_id()
581 * device (such as SMMU, PMCG),its iort node already cached in iort_find_dev_node()
1009 struct acpi_iort_node *smmu, in iort_get_rmrs() argument
[all …]
/linux/Documentation/devicetree/bindings/iommu/
H A Dnvidia,tegra30-smmu.txt1 NVIDIA Tegra 30 IOMMU H/W, SMMU (System Memory Management Unit)
4 - compatible : "nvidia,tegra30-smmu"
6 of the SMMU register blocks.
10 - nvidia,ahb : phandle to the ahb bus connected to SMMU.
13 smmu {
14 compatible = "nvidia,tegra30-smmu";
H A Dqcom,tbu.yaml38 Phandle of a SMMU device and Stream ID range (address and size) that
43 - description: phandle of a smmu node
/linux/include/linux/
H A Dadreno-smmu-priv.h38 * struct adreno_smmu_priv - private interface between adreno-smmu and GPU
40 * @cookie: An opque token provided by adreno-smmu and passed
59 * The GPU driver (drm/msm) and adreno-smmu work together for controlling
60 * the GPU's SMMU instance. This is by necessity, as the GPU is directly
61 * updating the SMMU for context switches, while on the other hand we do
62 * not want to duplicate all of the initial setup logic from arm-smmu.
/linux/Documentation/devicetree/bindings/perf/
H A Darm,smmu-v3-pmcg.yaml4 $id: http://devicetree.org/schemas/perf/arm,smmu-v3-pmcg.yaml#
25 - const: arm,smmu-v3-pmcg
26 - const: arm,smmu-v3-pmcg
57 compatible = "arm,smmu-v3-pmcg";
65 compatible = "arm,smmu-v3-pmcg";
/linux/arch/arm64/boot/dts/xilinx/
H A Dversal-net-vn-x-b2197-01-revA.dts79 iommus = <&smmu 0x235>;
93 iommus = <&smmu 0x245>;
100 iommus = <&smmu 0x243>;
114 &smmu {
/linux/drivers/iommu/arm/
H A DMakefile2 obj-y += arm-smmu/ arm-smmu-v3/
/linux/arch/arm64/boot/dts/intel/
H A Dsocfpga_agilex.dtsi184 iommus = <&smmu 1>;
202 iommus = <&smmu 2>;
220 iommus = <&smmu 3>;
334 iommus = <&smmu 5>;
403 smmu: iommu@fa000000 { label
404 compatible = "arm,mmu-500", "arm,smmu-v2";
554 iommus = <&smmu 6>;
566 iommus = <&smmu 7>;
/linux/Documentation/devicetree/bindings/misc/
H A Dfsl,qoriq-mc.yaml38 For arm-smmu binding, see:
39 Documentation/devicetree/bindings/iommu/arm,smmu.yaml.
171 iommu-map = <23 &smmu 23 41>;
/linux/Documentation/devicetree/bindings/bus/
H A Dxlnx,versal-net-cdx.yaml20 are used to configure SMMU and GIC-ITS respectively.
77 iommu-map = <250 &smmu 250 10>;
/linux/arch/arm64/boot/dts/arm/
H A Djuno-base.dtsi36 compatible = "arm,mmu-400", "arm,smmu-v1";
48 compatible = "arm,mmu-401", "arm,smmu-v1";
59 compatible = "arm,mmu-401", "arm,smmu-v1";
663 /* The SMMU is only really of interest to bare-metal hypervisors */
804 compatible = "arm,mmu-401", "arm,smmu-v1";
814 compatible = "arm,mmu-401", "arm,smmu-v1";
823 compatible = "arm,mmu-401", "arm,smmu-v1";
832 compatible = "arm,mmu-401", "arm,smmu-v1";
/linux/Documentation/devicetree/bindings/display/tegra/
H A Dnvidia,tegra186-display.yaml162 iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
181 iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
200 iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
/linux/drivers/perf/
H A Darm_smmuv3_pmu.c9 * <phys_addr_page> is the physical page address of the SMMU PMCG wrapped
31 * information is available in the SMMU documentation.
33 * SMMU events are not attributable to a CPU, so task mode and sampling
989 { .compatible = "arm,smmu-v3-pmcg" },
997 .name = "arm-smmu-v3-pmcg",
1033 MODULE_ALIAS("platform:arm-smmu-v3-pmcg");
/linux/drivers/gpu/drm/msm/
H A Dmsm_iommu.c7 #include <linux/adreno-smmu-priv.h>
230 * disable TTBR0 in the arm-smmu driver in msm_iommu_pagetable_destroy()
519 * qcom_smmu_impl_of_match[] in arm-smmu-qcom.c in msm_iommu_pagetable_create()
578 * the arm-smmu driver as a trigger to set up TTBR0 in msm_iommu_pagetable_create()
684 /* The arm-smmu driver expects the addresses to be sign extended */ in msm_iommu_map()
/linux/include/dt-bindings/memory/
H A Dtegra186-mc.h78 /* for SMMU tests */
115 /* Misses from System Memory Management Unit (SMMU) Page Table Cache (PTC) */

1234