Home
last modified time | relevance | path

Searched refs:iommu (Results 1 – 25 of 385) sorted by relevance

12345678910>>...16

/linux-6.15/drivers/iommu/intel/
H A Dprq.c73 iommu = info->iommu; in intel_iommu_drain_pasid_prq()
294 if (!iommu->prq) { in intel_iommu_enable_prq()
296 iommu->name); in intel_iommu_enable_prq()
300 irq = dmar_alloc_hwirq(IOMMU_IRQ_ID_OFFSET_PRQ + iommu->seq_id, iommu->node, iommu); in intel_iommu_enable_prq()
309 snprintf(iommu->iopfq_name, sizeof(iommu->iopfq_name), in intel_iommu_enable_prq()
319 snprintf(iommu->prq_name, sizeof(iommu->prq_name), "dmar%d-prq", iommu->seq_id); in intel_iommu_enable_prq()
322 iommu->prq_name, iommu); in intel_iommu_enable_prq()
341 iommu->pr_irq = 0; in intel_iommu_enable_prq()
344 iommu->prq = NULL; in intel_iommu_enable_prq()
356 free_irq(iommu->pr_irq, iommu); in intel_iommu_finish_prq()
[all …]
H A Dpasid.c285 iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH); in intel_pasid_tear_down_entry()
637 iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH); in intel_pasid_setup_dirty_tracking()
920 struct intel_iommu *iommu = info->iommu; in device_pasid_table_teardown() local
982 struct intel_iommu *iommu = info->iommu; in context_entry_set_pasid_table() local
1008 struct intel_iommu *iommu = info->iommu; in device_pasid_table_setup() local
1036 iommu->flush.flush_context(iommu, 0, in device_pasid_table_setup()
1041 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); in device_pasid_table_setup()
1062 iommu->flush.flush_context(iommu, 0, in device_pasid_table_setup()
1066 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_DSI_FLUSH); in device_pasid_table_setup()
1130 struct intel_iommu *iommu = info->iommu; in intel_context_flush_no_pasid() local
[all …]
H A Dirq_remapping.c132 irq_iommu->iommu = iommu; in alloc_irte()
168 iommu = irq_iommu->iommu; in modify_irte()
233 iommu = irq_iommu->iommu; in clear_entries()
628 if (iommu && iommu->ir_table) { in intel_teardown_irq_remapping()
854 if (ir_hpet[count].iommu == iommu && in ir_parse_one_hpet_scope()
865 ir_hpet[free].iommu = iommu; in ir_parse_one_hpet_scope()
899 if (ir_ioapic[count].iommu == iommu && in ir_parse_one_ioapic_scope()
912 ir_ioapic[free].iommu = iommu; in ir_parse_one_ioapic_scope()
949 if (ir_hpet[i].iommu == iommu) in ir_remove_ioapic_hpet_scope()
953 if (ir_ioapic[i].iommu == iommu) in ir_remove_ioapic_hpet_scope()
[all …]
H A Diommu.c161 struct intel_iommu *iommu = info->iommu; in device_rbtree_remove() local
471 if (!iommu || iommu->drhd->ignored) in iommu_is_dummy()
1412 info->iommu = iommu; in domain_attach_iommu()
1510 iommu->flush.flush_context(iommu, 0, in context_present_cache_flush()
1574 struct intel_iommu *iommu = info->iommu; in domain_context_mapping_cb() local
1585 struct intel_iommu *iommu = info->iommu; in domain_context_mapping() local
1771 struct intel_iommu *iommu = info->iommu; in domain_context_clear_one() local
2912 iommu = drhd->iommu; in intel_iommu_shutdown()
3713 if (!iommu || !iommu->iommu.ops) in intel_iommu_probe_device()
3731 info->iommu = iommu; in intel_iommu_probe_device()
[all …]
H A Ddmar.c975 if (!request_mem_region(iommu->reg_phys, iommu->reg_size, iommu->name)) { in map_iommu()
981 iommu->reg = ioremap(iommu->reg_phys, iommu->reg_size); in map_iommu()
1011 iommu->reg = ioremap(iommu->reg_phys, iommu->reg_size); in map_iommu()
1063 snprintf(iommu->name, sizeof(iommu->name), "dmar%d", iommu->seq_id); in alloc_iommu()
1130 iommu->iommu.max_pasids = 2UL << ecap_pss(iommu->ecap); in alloc_iommu()
1151 drhd->iommu = iommu; in alloc_iommu()
1172 iommu_device_unregister(&iommu->iommu); in free_iommu()
1180 free_irq(iommu->pr_irq, iommu); in free_iommu()
1184 free_irq(iommu->irq, iommu); in free_iommu()
2024 irq = dmar_alloc_hwirq(iommu->seq_id, iommu->node, iommu); in dmar_set_interrupt()
[all …]
H A Dcache.c34 return tag->iommu == iommu; in cache_tage_match()
48 struct intel_iommu *iommu = info->iommu; in cache_tag_assign() local
58 tag->iommu = iommu; in cache_tag_assign()
66 tag->dev = iommu->iommu.dev; in cache_tag_assign()
78 if (temp->iommu == iommu) in cache_tag_assign()
458 if (iommu && iommu != tag->iommu) in cache_tag_flush_range()
460 iommu = tag->iommu; in cache_tag_flush_range()
501 if (iommu && iommu != tag->iommu) in cache_tag_flush_all()
503 iommu = tag->iommu; in cache_tag_flush_all()
545 if (iommu && iommu != tag->iommu) in cache_tag_flush_range_np()
[all …]
H A Ddebugfs.c116 struct intel_iommu *iommu; in iommu_regset_show() local
267 spin_lock(&iommu->lock); in root_tbl_walk()
293 iommu->name); in dmar_translation_struct_show()
296 root_tbl_walk(m, iommu); in dmar_translation_struct_show()
372 iommu->name); in domain_translation_struct_show()
389 spin_lock(&iommu->lock); in domain_translation_struct_show()
519 qi = iommu->qi; in invalidation_queue_show()
520 shift = qi_shift(iommu); in invalidation_queue_show()
610 iommu->name); in ir_translation_struct_show()
630 iommu->name); in ir_translation_struct_show()
[all …]
/linux-6.15/drivers/iommu/amd/
H A Dinit.c284 iommu->index, iommu->pci_seg->id, in get_global_efr()
1650 if (iommu->iommu.dev) { in free_sysfs()
1651 iommu_device_unregister(&iommu->iommu); in free_sysfs()
1652 iommu_device_sysfs_remove(&iommu->iommu); in free_sysfs()
1851 iommu->pci_seg->rlookup_table[iommu->devid] = NULL; in init_iommu_one_late()
2052 iommu->iommu.max_pasids = (1 << (pasmax + 1)) - 1; in iommu_init_pci()
2054 BUG_ON(iommu->iommu.max_pasids & ~PASID_MASK); in iommu_init_pci()
2103 iommu->stored_l2[i] = iommu_read_l2(iommu, i); in iommu_init_pci()
2109 ret = iommu_device_sysfs_add(&iommu->iommu, &iommu->dev->dev, in iommu_init_pci()
2690 iommu_write_l2(iommu, i, iommu->stored_l2[i]); in iommu_apply_resume_quirks()
[all …]
H A Dppr.c22 iommu->ppr_log = iommu_alloc_4k_pages(iommu, GFP_KERNEL | __GFP_ZERO, in amd_iommu_alloc_ppr_log()
31 if (iommu->ppr_log == NULL) in amd_iommu_enable_ppr_log()
83 struct device *dev = iommu->iommu.dev; in ppr_is_valid()
166 if (iommu->ppr_log == NULL) in amd_iommu_poll_ppr_log()
222 if (iommu->iopf_queue) in amd_iommu_iopf_init()
225 snprintf(iommu->iopfq_name, sizeof(iommu->iopfq_name), "amdvi-%#x", in amd_iommu_iopf_init()
226 PCI_SEG_DEVID_TO_SBDF(iommu->pci_seg->id, iommu->devid)); in amd_iommu_iopf_init()
228 iommu->iopf_queue = iopf_queue_alloc(iommu->iopfq_name); in amd_iommu_iopf_init()
229 if (!iommu->iopf_queue) in amd_iommu_iopf_init()
239 iommu->iopf_queue = NULL; in amd_iommu_iopf_uninit()
[all …]
H A Diommu.c865 struct device *dev = iommu->iommu.dev; in iommu_print_event()
2197 pdom_iommu_info->iommu = iommu; in pdom_attach_iommu()
2368 if (!iommu->iommu.ops) in amd_iommu_probe_device()
2372 return &iommu->iommu; in amd_iommu_probe_device()
2383 iommu_dev = &iommu->iommu; in amd_iommu_probe_device()
3195 int nid = iommu && iommu->dev ? dev_to_node(&iommu->dev->dev) : NUMA_NO_NODE; in alloc_irq_table()
3561 struct amd_iommu *iommu = data->iommu; in irq_remapping_prepare_irte() local
3701 data->iommu = iommu; in irq_remapping_alloc()
3754 struct amd_iommu *iommu = data->iommu; in irq_remapping_activate() local
3771 struct amd_iommu *iommu = data->iommu; in irq_remapping_deactivate() local
[all …]
H A Damd_iommu.h23 void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
24 void amd_iommu_restart_ppr_log(struct amd_iommu *iommu);
26 void iommu_feature_enable(struct amd_iommu *iommu, u8 bit);
27 void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu,
31 void amd_iommu_debugfs_setup(struct amd_iommu *iommu);
63 int amd_iommu_iopf_init(struct amd_iommu *iommu);
64 void amd_iommu_iopf_uninit(struct amd_iommu *iommu);
67 int amd_iommu_iopf_add_device(struct amd_iommu *iommu,
80 void amd_iommu_enable_ppr_log(struct amd_iommu *iommu);
81 void amd_iommu_poll_ppr_log(struct amd_iommu *iommu);
[all …]
/linux-6.15/drivers/iommu/
H A Dsun50i-iommu.c294 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_table_flush() local
387 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_iommu_flush_iotlb_all() local
398 if (!iommu) in sun50i_iommu_flush_iotlb_all()
410 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_iommu_iotlb_sync_map() local
559 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_dte_get_page_table() local
600 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_iommu_map() local
726 sun50i_domain->iommu = iommu; in sun50i_iommu_attach_domain()
804 if (!iommu) in sun50i_iommu_attach_device()
829 return &iommu->iommu; in sun50i_iommu_probe_device()
1057 iommu_device_unregister(&iommu->iommu); in sun50i_iommu_probe()
[all …]
H A Drockchip-iommu.c625 report_iommu_fault(iommu->domain, iommu->dev, iova, in rk_iommu_irq()
644 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_irq()
701 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_zap_iova()
923 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_disable()
957 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_enable()
971 if (!iommu) in rk_iommu_identity_attach()
1135 return &iommu->iommu; in rk_iommu_probe_device()
1236 iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks, in rk_iommu_probe()
1249 err = devm_clk_bulk_get(iommu->dev, iommu->num_clocks, iommu->clocks); in rk_iommu_probe()
1287 iommu_device_sysfs_remove(&iommu->iommu); in rk_iommu_probe()
[all …]
H A Dmsm_iommu.c73 if (iommu->clk) in __disable_clocks()
388 if (!iommu) in msm_iommu_probe_device()
391 return &iommu->iommu; in msm_iommu_probe_device()
722 if (!iommu) in msm_iommu_probe()
730 return dev_err_probe(iommu->dev, PTR_ERR(iommu->pclk), in msm_iommu_probe()
735 return dev_err_probe(iommu->dev, PTR_ERR(iommu->clk), in msm_iommu_probe()
739 iommu->base = devm_ioremap_resource(iommu->dev, r); in msm_iommu_probe()
757 msm_iommu_reset(iommu->base, iommu->ncb); in msm_iommu_probe()
775 iommu); in msm_iommu_probe()
783 ret = iommu_device_sysfs_add(&iommu->iommu, iommu->dev, NULL, in msm_iommu_probe()
[all …]
H A Diommu-sysfs.c62 iommu->dev = kzalloc(sizeof(*iommu->dev), GFP_KERNEL); in iommu_device_sysfs_add()
63 if (!iommu->dev) in iommu_device_sysfs_add()
66 device_initialize(iommu->dev); in iommu_device_sysfs_add()
68 iommu->dev->class = &iommu_class; in iommu_device_sysfs_add()
69 iommu->dev->parent = parent; in iommu_device_sysfs_add()
70 iommu->dev->groups = groups; in iommu_device_sysfs_add()
78 ret = device_add(iommu->dev); in iommu_device_sysfs_add()
82 dev_set_drvdata(iommu->dev, iommu); in iommu_device_sysfs_add()
87 put_device(iommu->dev); in iommu_device_sysfs_add()
95 device_unregister(iommu->dev); in iommu_device_sysfs_remove()
[all …]
/linux-6.15/arch/sparc/kernel/
H A Diommu.c157 struct iommu *iommu, in alloc_npages() argument
202 struct iommu *iommu; in dma_4u_alloc_coherent() local
221 iommu = dev->archdata.iommu; in dma_4u_alloc_coherent()
250 struct iommu *iommu; in dma_4u_free_coherent() local
268 struct iommu *iommu; in dma_4u_map_page() local
390 struct iommu *iommu; in dma_4u_unmap_page() local
443 struct iommu *iommu; in dma_4u_map_sg() local
612 struct iommu *iommu; in dma_4u_unmap_sg() local
661 struct iommu *iommu; in dma_4u_sync_single_for_cpu() local
699 struct iommu *iommu; in dma_4u_sync_sg_for_cpu() local
[all …]
H A Diommu-common.c66 iommu->nr_pools = npools; in iommu_tbl_pool_init()
78 iommu->poolsize = num_entries/iommu->nr_pools; in iommu_tbl_pool_init()
80 iommu->poolsize = (num_entries * 3 / 4)/iommu->nr_pools; in iommu_tbl_pool_init()
152 shift = iommu->table_map_base >> iommu->table_shift; in iommu_tbl_range_alloc()
176 boundary_size = iommu->poolsize * iommu->nr_pools; in iommu_tbl_range_alloc()
179 iommu->table_shift); in iommu_tbl_range_alloc()
187 set_flush(iommu); in iommu_tbl_range_alloc()
196 set_flush(iommu); in iommu_tbl_range_alloc()
205 if (iommu->lazy_flush && in iommu_tbl_range_alloc()
207 clear_flush(iommu); in iommu_tbl_range_alloc()
[all …]
/linux-6.15/drivers/iommu/riscv/
H A Diommu.c234 queue->iommu = iommu; in riscv_iommu_queue_enable()
287 struct riscv_iommu_device *iommu = queue->iommu; in riscv_iommu_queue_disable() local
290 if (!iommu) in riscv_iommu_queue_disable()
530 struct riscv_iommu_device *iommu = queue->iommu; in riscv_iommu_fltq_process() local
696 iommu->ddt_root = devm_ioremap(iommu->dev, in riscv_iommu_iodir_alloc()
704 iommu->ddt_phys = __pa(iommu->ddt_root); in riscv_iommu_iodir_alloc()
1524 return &iommu->iommu; in riscv_iommu_probe_device()
1602 iommu_device_unregister(&iommu->iommu); in riscv_iommu_remove()
1603 iommu_device_sysfs_remove(&iommu->iommu); in riscv_iommu_remove()
1653 rc = iommu_device_register(&iommu->iommu, &riscv_iommu_ops, iommu->dev); in riscv_iommu_init()
[all …]
H A Diommu-platform.c52 iommu = devm_kzalloc(dev, sizeof(*iommu), GFP_KERNEL); in riscv_iommu_platform_probe()
53 if (!iommu) in riscv_iommu_platform_probe()
56 iommu->dev = dev; in riscv_iommu_platform_probe()
58 if (IS_ERR(iommu->reg)) in riscv_iommu_platform_probe()
62 dev_set_drvdata(dev, iommu); in riscv_iommu_platform_probe()
65 iommu->caps = riscv_iommu_readq(iommu, RISCV_IOMMU_REG_CAPABILITIES); in riscv_iommu_platform_probe()
66 iommu->fctl = riscv_iommu_readl(iommu, RISCV_IOMMU_REG_FCTL); in riscv_iommu_platform_probe()
69 if (iommu->irqs_count <= 0) in riscv_iommu_platform_probe()
100 riscv_iommu_writel(iommu, RISCV_IOMMU_REG_FCTL, iommu->fctl); in riscv_iommu_platform_probe()
121 riscv_iommu_writel(iommu, RISCV_IOMMU_REG_FCTL, iommu->fctl); in riscv_iommu_platform_probe()
[all …]
H A Diommu-pci.c36 struct riscv_iommu_device *iommu; in riscv_iommu_pci_probe() local
53 iommu = devm_kzalloc(dev, sizeof(*iommu), GFP_KERNEL); in riscv_iommu_pci_probe()
54 if (!iommu) in riscv_iommu_pci_probe()
57 iommu->dev = dev; in riscv_iommu_pci_probe()
61 dev_set_drvdata(dev, iommu); in riscv_iommu_pci_probe()
64 iommu->caps = riscv_iommu_readq(iommu, RISCV_IOMMU_REG_CAPABILITIES); in riscv_iommu_pci_probe()
65 iommu->fctl = riscv_iommu_readl(iommu, RISCV_IOMMU_REG_FCTL); in riscv_iommu_pci_probe()
84 iommu->irqs_count = rc; in riscv_iommu_pci_probe()
91 riscv_iommu_writel(iommu, RISCV_IOMMU_REG_FCTL, iommu->fctl); in riscv_iommu_pci_probe()
101 riscv_iommu_remove(iommu); in riscv_iommu_pci_remove()
[all …]
H A Diommu.h38 struct iommu_device iommu; member
65 int riscv_iommu_init(struct riscv_iommu_device *iommu);
66 void riscv_iommu_remove(struct riscv_iommu_device *iommu);
69 #define riscv_iommu_readl(iommu, addr) \ argument
70 readl_relaxed((iommu)->reg + (addr))
72 #define riscv_iommu_readq(iommu, addr) \ argument
73 readq_relaxed((iommu)->reg + (addr))
75 #define riscv_iommu_writel(iommu, addr, val) \ argument
76 writel_relaxed((val), (iommu)->reg + (addr))
78 #define riscv_iommu_writeq(iommu, addr, val) \ argument
[all …]
/linux-6.15/drivers/vfio/
H A Dvfio_iommu_type1.c827 if (!iommu->v2) in vfio_iommu_type1_pin_pages()
1146 iommu->dma_avail++; in vfio_remove_dma()
2561 iommu = kzalloc(sizeof(*iommu), GFP_KERNEL); in vfio_iommu_type1_open()
2562 if (!iommu) in vfio_iommu_type1_open()
2570 iommu->v2 = true; in vfio_iommu_type1_open()
2573 kfree(iommu); in vfio_iommu_type1_open()
2587 return iommu; in vfio_iommu_type1_open()
2627 kfree(iommu); in vfio_iommu_type1_release()
2670 return iommu && !vfio_iommu_has_emulated(iommu); in vfio_iommu_type1_check_extension()
2672 if (!iommu) in vfio_iommu_type1_check_extension()
[all …]
/linux-6.15/Documentation/devicetree/bindings/pci/
H A Dpci-iommu.txt26 Documentation/devicetree/bindings/iommu/iommu.txt.
39 (rid-base,iommu,iommu-base,length).
55 iommu: iommu@a {
70 iommu-map = <0x0 &iommu 0x0 0x10000>;
82 iommu: iommu@a {
97 iommu-map = <0x0 &iommu 0x0 0x10000>;
110 iommu: iommu@a {
125 iommu-map = <0x0000 &iommu 0x8000 0x8000>,
138 iommu_a: iommu@a {
144 iommu_b: iommu@b {
[all …]
/linux-6.15/arch/sparc/mm/
H A Diommu.c60 struct iommu_struct *iommu; in sbus_iommu_init() local
68 if (!iommu) { in sbus_iommu_init()
75 if (!iommu->regs) { in sbus_iommu_init()
87 iommu_invalidate(iommu->regs); in sbus_iommu_init()
88 iommu->start = IOMMU_START; in sbus_iommu_init()
89 iommu->end = 0xffffffff; in sbus_iommu_init()
132 op->dev.archdata.iommu = iommu; in sbus_iommu_init()
187 struct iommu_struct *iommu = dev->archdata.iommu; in __sbus_iommu_map_page() local
283 struct iommu_struct *iommu = dev->archdata.iommu; in sbus_iommu_unmap_page() local
316 struct iommu_struct *iommu = dev->archdata.iommu; in sbus_iommu_alloc() local
[all …]
/linux-6.15/Documentation/devicetree/bindings/iommu/
H A Dqcom,iommu.yaml4 $id: http://devicetree.org/schemas/iommu/qcom,iommu.yaml#
23 - qcom,msm8916-iommu
24 - qcom,msm8917-iommu
52 qcom,iommu-secure-id:
63 '#iommu-cells':
67 "^iommu-ctx@[0-9a-f]+$":
101 - '#iommu-cells'
110 apps_iommu: iommu@1e20000 {
111 compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
119 #iommu-cells = <1>;
[all …]

12345678910>>...16