/linux/drivers/iommu/arm/arm-smmu/ |
H A D | arm-smmu.c | 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() 80 static inline void arm_smmu_rpm_put(struct arm_smmu_device *smmu) in arm_smmu_rpm_put() argument 82 if (pm_runtime_enabled(smmu->dev)) in arm_smmu_rpm_put() 83 pm_runtime_put_autosuspend(smmu->dev); in arm_smmu_rpm_put() 86 static void arm_smmu_rpm_use_autosuspend(struct arm_smmu_device *smmu) in arm_smmu_rpm_use_autosuspend() argument 99 pm_runtime_set_autosuspend_delay(smmu->dev, 20); in arm_smmu_rpm_use_autosuspend() 100 pm_runtime_use_autosuspend(smmu->dev); in arm_smmu_rpm_use_autosuspend() 148 struct arm_smmu_device **smmu) in arm_smmu_register_legacy_master() argument [all …]
|
H A D | arm-smmu-nvidia.c | 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 58 void __iomem *reg = nvidia_smmu_page(smmu, 0, page) + offset; in nvidia_smmu_read_reg() 63 static void nvidia_smmu_write_reg(struct arm_smmu_device *smmu, in nvidia_smmu_write_reg() argument 66 struct nvidia_smmu *nvidia = to_nvidia_smmu(smmu); in nvidia_smmu_write_reg() [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/drivers/iommu/ |
H A D | tegra-smmu.c | 26 struct tegra_smmu *smmu; member 56 struct tegra_smmu *smmu; member 72 static inline void smmu_writel(struct tegra_smmu *smmu, u32 value, in smmu_writel() argument 75 writel(value, smmu->regs + offset); in smmu_writel() 78 static inline u32 smmu_readl(struct tegra_smmu *smmu, unsigned long offset) in smmu_readl() argument 80 return readl(smmu->regs + offset); in smmu_readl() 89 #define SMMU_TLB_CONFIG_ACTIVE_LINES(smmu) \ argument 90 ((smmu)->soc->num_tlb_lines & (smmu)->tlb_mask) 168 static bool smmu_dma_addr_valid(struct tegra_smmu *smmu, dma_addr_t addr) in smmu_dma_addr_valid() argument 171 return (addr & smmu->pfn_mask) == addr; in smmu_dma_addr_valid() [all …]
|
/linux/drivers/iommu/arm/arm-smmu-v3/ |
H A D | arm-smmu-v3.c | 111 static void parse_driver_options(struct arm_smmu_device *smmu) in parse_driver_options() argument 116 if (of_property_read_bool(smmu->dev->of_node, in parse_driver_options() 118 smmu->options |= arm_smmu_options[i].opt; in parse_driver_options() 119 dev_notice(smmu->dev, "option %s\n", in parse_driver_options() 214 static void queue_poll_init(struct arm_smmu_device *smmu, in queue_poll_init() argument 219 qp->wfe = !!(smmu->features & ARM_SMMU_FEAT_SEV); in queue_poll_init() 371 static struct arm_smmu_cmdq *arm_smmu_get_cmdq(struct arm_smmu_device *smmu, in arm_smmu_get_cmdq() argument 376 if (smmu->impl_ops && smmu->impl_ops->get_secondary_cmdq) in arm_smmu_get_cmdq() 377 cmdq = smmu->impl_ops->get_secondary_cmdq(smmu, ent); in arm_smmu_get_cmdq() 379 return cmdq ?: &smmu->cmdq; in arm_smmu_get_cmdq() [all …]
|
H A D | tegra241-cmdqv.c | 174 struct arm_smmu_device smmu; member 267 __arm_smmu_cmdq_skip_err(&vintf->cmdqv->smmu, &vcmdq->cmdq); in tegra241_vintf0_handle_error() 318 tegra241_cmdqv_get_cmdq(struct arm_smmu_device *smmu, in tegra241_cmdqv_get_cmdq() argument 322 container_of(smmu, struct tegra241_cmdqv, smmu); in tegra241_cmdqv_get_cmdq() 457 static int tegra241_cmdqv_hw_reset(struct arm_smmu_device *smmu) in tegra241_cmdqv_hw_reset() argument 460 container_of(smmu, struct tegra241_cmdqv, smmu); in tegra241_cmdqv_hw_reset() 498 dmam_free_coherent(vcmdq->cmdqv->smmu.dev, qsz, q->base, q->base_dma); in tegra241_vcmdq_free_smmu_cmdq() 503 struct arm_smmu_device *smmu = &vcmdq->cmdqv->smmu; in tegra241_vcmdq_alloc_smmu_cmdq() local 513 regval = readl_relaxed(smmu->base + ARM_SMMU_IDR1); in tegra241_vcmdq_alloc_smmu_cmdq() 518 ret = arm_smmu_init_one_queue(smmu, q, vcmdq->page0, in tegra241_vcmdq_alloc_smmu_cmdq() [all …]
|
H A D | arm-smmu-v3-iommufd.c | 21 base_idr = master->smmu->base + ARM_SMMU_IDR0; in arm_smmu_hw_info() 24 info->iidr = readl_relaxed(master->smmu->base + ARM_SMMU_IIDR); in arm_smmu_hw_info() 25 info->aidr = readl_relaxed(master->smmu->base + ARM_SMMU_AIDR); in arm_smmu_hw_info() 102 if (nested_domain->vsmmu->smmu != master->smmu) in arm_smmu_attach_dev_nested() 291 struct arm_smmu_device *smmu = vsmmu->smmu; in arm_vsmmu_cache_invalidate() local 323 ret = arm_smmu_cmdq_issue_cmdlist(smmu, &smmu->cmdq, last->cmd, in arm_vsmmu_cache_invalidate() 347 struct arm_smmu_device *smmu = in arm_vsmmu_alloc() local 356 if (!(smmu->features & ARM_SMMU_FEAT_NESTING)) in arm_vsmmu_alloc() 359 if (s2_parent->smmu != master->smmu) in arm_vsmmu_alloc() 367 if (WARN_ON(smmu->options & ARM_SMMU_OPT_CMDQ_FORCE_SYNC)) in arm_vsmmu_alloc() [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-test.c | 26 static struct arm_smmu_device smmu = { variable 183 .smmu = &smmu, in arm_smmu_test_make_cdtable_ste() 302 .smmu = &smmu, in arm_smmu_test_make_s2_ste() 455 .smmu = &smmu, in arm_smmu_test_make_s1_cd() 505 .smmu = &smmu, in arm_smmu_test_make_sva_cd() 515 .smmu = &smmu, in arm_smmu_test_make_sva_release_cd() 598 arm_smmu_make_bypass_ste(&smmu, &bypass_ste); in arm_smmu_v3_test_suite_init()
|
/linux/drivers/memory/tegra/ |
H A D | tegra210.c | 20 .smmu = { 36 .smmu = { 52 .smmu = { 68 .smmu = { 84 .smmu = { 100 .smmu = { 116 .smmu = { 132 .smmu = { 148 .smmu = { 164 .smmu = { [all …]
|
H A D | tegra114.c | 31 .smmu = { 47 .smmu = { 63 .smmu = { 79 .smmu = { 95 .smmu = { 111 .smmu = { 127 .smmu = { 143 .smmu = { 159 .smmu = { 175 .smmu = { [all …]
|
H A D | tegra124.c | 32 .smmu = { 48 .smmu = { 64 .smmu = { 80 .smmu = { 96 .smmu = { 112 .smmu = { 128 .smmu = { 144 .smmu = { 160 .smmu = { 176 .smmu = { [all …]
|
H A D | tegra30.c | 54 .smmu = { 71 .smmu = { 88 .smmu = { 105 .smmu = { 122 .smmu = { 139 .smmu = { 156 .smmu = { 173 .smmu = { 190 .smmu = { 207 .smmu = { [all …]
|
/linux/arch/arm64/boot/dts/marvell/ |
H A D | armada-8040.dtsi | 20 <0x0 &smmu 0x480 0x20>, 21 <0x100 &smmu 0x4a0 0x20>, 22 <0x200 &smmu 0x4c0 0x20>; 36 iommus = <&smmu 0x444>; 40 iommus = <&smmu 0x445>; 44 iommus = <&smmu 0x440>; 48 iommus = <&smmu 0x441>; 52 iommus = <&smmu 0x454>; 56 iommus = <&smmu 0x450>; 60 iommus = <&smmu 0x451>;
|
H A D | armada-7040.dtsi | 20 <0x0 &smmu 0x480 0x20>, 21 <0x100 &smmu 0x4a0 0x20>, 22 <0x200 &smmu 0x4c0 0x20>; 27 iommus = <&smmu 0x444>; 31 iommus = <&smmu 0x445>; 35 iommus = <&smmu 0x440>; 39 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/acpi/arm64/ |
H A D | iort.c | 412 struct acpi_iort_smmu_v3 *smmu; in iort_get_id_mapping_index() local 424 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in iort_get_id_mapping_index() 430 if (smmu->event_gsiv && smmu->pri_gsiv && in iort_get_id_mapping_index() 431 smmu->gerr_gsiv && smmu->sync_gsiv) in iort_get_id_mapping_index() 433 } else if (!(smmu->flags & ACPI_IORT_SMMU_V3_DEVICEID_VALID)) { in iort_get_id_mapping_index() 437 if (smmu->id_mapping_index >= node->mapping_count) { in iort_get_id_mapping_index() 443 return smmu->id_mapping_index; in iort_get_id_mapping_index() 888 struct acpi_iort_node *smmu, in iort_get_rmrs() argument 981 struct acpi_iort_node *smmu = NULL; in iort_node_get_rmr_info() local 1032 iort_get_rmrs(node, smmu, sids, num_sids, head); in iort_node_get_rmr_info() [all …]
|
/linux/arch/arm64/boot/dts/xilinx/ |
H A D | zynqmp.dtsi | 586 /* iommus = <&smmu 0x14e8>; */ 599 /* iommus = <&smmu 0x14e9>; */ 612 /* iommus = <&smmu 0x14ea>; */ 625 /* iommus = <&smmu 0x14eb>; */ 638 /* iommus = <&smmu 0x14ec>; */ 651 /* iommus = <&smmu 0x14ed>; */ 664 /* iommus = <&smmu 0x14ee>; */ 677 /* iommus = <&smmu 0x14ef>; */ 722 /* iommus = <&smmu 0x868>; */ 735 /* iommus = <&smmu 0x869>; */ [all …]
|
/linux/include/soc/tegra/ |
H A D | mc.h | 50 } smmu; member 104 void tegra_smmu_remove(struct tegra_smmu *smmu); 113 static inline void tegra_smmu_remove(struct tegra_smmu *smmu) in tegra_smmu_remove() argument 186 const struct tegra_smmu_soc *smmu; member 204 struct tegra_smmu *smmu; member
|
/linux/Documentation/devicetree/bindings/iommu/ |
H A D | nvidia,tegra30-smmu.txt | 4 - compatible : "nvidia,tegra30-smmu" 13 smmu { 14 compatible = "nvidia,tegra30-smmu";
|
/linux/drivers/iommu/arm/ |
H A D | Makefile | 2 obj-y += arm-smmu/ arm-smmu-v3/
|
/linux/arch/arm64/boot/dts/nvidia/ |
H A D | tegra186.dtsi | 66 iommus = <&smmu TEGRA186_SID_EQOS>; 114 iommus = <&smmu TEGRA186_SID_GPCDMA_0>; 860 iommus = <&smmu TEGRA186_SID_SDMMC1>; 890 iommus = <&smmu TEGRA186_SID_SDMMC2>; 915 iommus = <&smmu TEGRA186_SID_SDMMC3>; 945 iommus = <&smmu TEGRA186_SID_SDMMC4>; 971 iommus = <&smmu TEGRA186_SID_SATA>; 1004 iommus = <&smmu TEGRA186_SID_HDA>; 1135 iommus = <&smmu TEGRA186_SID_XUSB_HOST>; 1157 iommus = <&smmu TEGRA186_SID_XUSB_DEV>; [all …]
|
H A D | tegra194.dtsi | 159 iommus = <&smmu TEGRA194_SID_EQOS>; 208 iommus = <&smmu TEGRA194_SID_GPCDMA_0>; 592 iommus = <&smmu TEGRA194_SID_APE>; 1037 iommus = <&smmu TEGRA194_SID_SDMMC1>; 1076 iommus = <&smmu TEGRA194_SID_SDMMC3>; 1115 iommus = <&smmu TEGRA194_SID_SDMMC4>; 1151 iommus = <&smmu TEGRA194_SID_HDA>; 1277 iommus = <&smmu TEGRA194_SID_XUSB_DEV>; 1311 iommus = <&smmu TEGRA194_SID_XUSB_HOST>; 1734 compatible = "nvidia,tegra194-smmu", "nvidia,smmu-500"; [all …]
|
/linux/arch/arm64/boot/dts/altera/ |
H A D | socfpga_stratix10.dtsi | 184 iommus = <&smmu 1>; 202 iommus = <&smmu 2>; 220 iommus = <&smmu 3>; 332 iommus = <&smmu 5>; 402 smmu: iommu@fa000000 { label 403 compatible = "arm,mmu-500", "arm,smmu-v2"; 522 iommus = <&smmu 6>; 536 iommus = <&smmu 7>;
|
/linux/Documentation/devicetree/bindings/crypto/ |
H A D | hisilicon,hip07-sec.txt | 22 - iommus: The SEC units are behind smmu-v3 iommus. 23 Refer to iommu/arm,smmu-v3.txt for more information.
|