| /linux/drivers/iommu/ |
| H A D | tegra-smmu.c | 26 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/drivers/iommu/arm/arm-smmu/ |
| H A D | arm-smmu-nvidia.c | 12 #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 D | arm-smmu-qcom-debug.c | 18 #include "arm-smmu.h" 19 #include "arm-smmu-qcom.h" 58 static struct qcom_smmu *to_qcom_smmu(struct arm_smmu_device *smmu) in to_qcom_smmu() argument 60 return container_of(smmu, struct qcom_smmu, smmu); in to_qcom_smmu() 63 void qcom_smmu_tlb_sync_debug(struct arm_smmu_device *smmu) in qcom_smmu_tlb_sync_debug() argument 67 struct qcom_smmu *qsmmu = container_of(smmu, struct qcom_smmu, smmu); in qcom_smmu_tlb_sync_debug() 73 dev_err(smmu->dev, "TLB sync timed out -- SMMU may be deadlocked\n"); in qcom_smmu_tlb_sync_debug() 79 ret = qcom_scm_io_readl(smmu->ioaddr + cfg->reg_offset[QCOM_SMMU_TBU_PWR_STATUS], in qcom_smmu_tlb_sync_debug() 82 dev_err(smmu->dev, in qcom_smmu_tlb_sync_debug() 85 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 D | Makefile | 4 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/arch/arm64/boot/dts/marvell/ |
| H A D | armada-8040.dtsi | 14 <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 D | armada-7040.dtsi | 14 <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 D | cn9130-crb-A.dts | 22 <0x0 &smmu 0x480 0x20>, 23 <0x100 &smmu 0x4a0 0x20>, 24 <0x200 &smmu 0x4c0 0x20>;
|
| /linux/drivers/iommu/arm/arm-smmu-v3/ |
| H A D | arm-smmu-v3-iommufd.c | 8 #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() 141 mutex_lock(&master->smmu->streams_mutex); in arm_smmu_attach_commit_vmaster() 144 mutex_unlock(&master->smmu->streams_mutex); in arm_smmu_attach_commit_vmaster() 169 if (nested_domain->vsmmu->smmu != master->smmu) in arm_smmu_attach_dev_nested() 374 struct arm_smmu_device *smmu = vsmmu->smmu; in arm_vsmmu_cache_invalidate() local [all …]
|
| H A D | Makefile | 3 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
|
| H A D | arm-smmu-v3.h | 378 * When the SMMU only supports linear context descriptor tables, pick a 734 struct arm_smmu_device *smmu; member 779 * A domain can be shared across SMMU instances. When an instance gets removed, 780 * it would delete all the entries that belong to that SMMU instance. Then, a 783 * to the command queue of a removed SMMU instance. 876 int (*device_reset)(struct arm_smmu_device *smmu); 877 void (*device_disable)(struct arm_smmu_device *smmu); 878 void (*device_remove)(struct arm_smmu_device *smmu); 879 int (*init_structures)(struct arm_smmu_device *smmu); 881 struct arm_smmu_device *smmu, struct arm_smmu_cmd *cmd); [all …]
|
| /linux/Documentation/devicetree/bindings/iommu/ |
| H A D | nvidia,tegra30-smmu.txt | 1 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 D | qcom,tbu.yaml | 38 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 D | adreno-smmu-priv.h | 38 * 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 D | arm,smmu-v3-pmcg.yaml | 4 $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 D | versal-net-vn-x-b2197-01-revA.dts | 79 iommus = <&smmu 0x235>; 93 iommus = <&smmu 0x245>; 100 iommus = <&smmu 0x243>; 114 &smmu {
|
| /linux/drivers/iommu/arm/ |
| H A D | Makefile | 2 obj-y += arm-smmu/ arm-smmu-v3/
|
| /linux/arch/arm64/boot/dts/intel/ |
| H A D | socfpga_agilex.dtsi | 184 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/bus/ |
| H A D | xlnx,versal-net-cdx.yaml | 20 are used to configure SMMU and GIC-ITS respectively. 77 iommu-map = <250 &smmu 250 10>;
|
| /linux/arch/arm64/boot/dts/arm/ |
| H A D | juno-base.dtsi | 36 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 D | nvidia,tegra186-display.yaml | 162 iommus = <&smmu TEGRA186_SID_NVDISPLAY>; 181 iommus = <&smmu TEGRA186_SID_NVDISPLAY>; 200 iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
|
| /linux/drivers/perf/ |
| H A D | arm_smmuv3_pmu.c | 9 * <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/include/uapi/misc/uacce/ |
| H A D | uacce.h | 24 * Support device page faults (PCI PRI or SMMU Stall)
|
| /linux/include/dt-bindings/memory/ |
| H A D | tegra186-mc.h | 78 /* for SMMU tests */ 115 /* Misses from System Memory Management Unit (SMMU) Page Table Cache (PTC) */
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-bus-platform-devices-ampere-smpro | 93 …| SMMU (other) | 6 | TCU | 100 | RC # … 95 …| SMMU (other) | 6 | TBU0 | 0 | RC # … 97 …| SMMU (other) | 6 | TBU1 | 1 | RC # … 99 …| SMMU (other) | 6 | TBU2 | 2 | RC # … 101 …| SMMU (other) | 6 | TBU3 | 3 | RC # … 103 …| SMMU (other) | 6 | TBU4 | 4 | RC # … 105 …| SMMU (other) | 6 | TBU5 | 5 | RC # … 107 …| SMMU (other) | 6 | TBU6 | 6 | RC # … 109 …| SMMU (other) | 6 | TBU7 | 7 | RC # … 111 …| SMMU (other) | 6 | TBU8 | 8 | RC # … [all …]
|
| /linux/Documentation/devicetree/bindings/crypto/ |
| H A D | nvidia,tegra234-se-hash.yaml | 49 iommus = <&smmu TEGRA234_SID_SES_SE2>;
|