| /linux/drivers/iommu/amd/ |
| A D | init.c | 295 iommu->index, iommu->pci_seg->id, in get_global_efr() 1633 if (iommu->iommu.dev) { in free_sysfs() 1634 iommu_device_unregister(&iommu->iommu); in free_sysfs() 1635 iommu_device_sysfs_remove(&iommu->iommu); in free_sysfs() 1748 amd_iommus[iommu->index] = iommu; in init_iommu_one() 1847 iommu->pci_seg->rlookup_table[iommu->devid] = NULL; in init_iommu_one_late() 2050 BUG_ON(iommu->iommu.max_pasids & ~PASID_MASK); in iommu_init_pci() 2107 iommu->stored_l2[i] = iommu_read_l2(iommu, i); in iommu_init_pci() 2113 ret = iommu_device_sysfs_add(&iommu->iommu, &iommu->dev->dev, in iommu_init_pci() 2688 iommu_write_l2(iommu, i, iommu->stored_l2[i]); in iommu_apply_resume_quirks() [all …]
|
| A D | ppr.c | 22 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 …]
|
| A D | iommu.c | 723 struct device *dev = iommu->iommu.dev; in iommu_print_event() 1186 iommu->cmd_buf_head = readl(iommu->mmio_base + in __iommu_queue_command_sync() 2169 if (!iommu->iommu.ops) in amd_iommu_probe_device() 2173 return &iommu->iommu; in amd_iommu_probe_device() 2184 iommu_dev = &iommu->iommu; in amd_iommu_probe_device() 3357 struct amd_iommu *iommu = data->iommu; in irq_remapping_prepare_irte() local 3490 data->iommu = iommu; in irq_remapping_alloc() 3544 struct amd_iommu *iommu = data->iommu; in irq_remapping_activate() local 3561 struct amd_iommu *iommu = data->iommu; in irq_remapping_deactivate() local 3586 return iommu && iommu->ir_domain == d; in irq_remapping_select() [all …]
|
| A D | amd_iommu.h | 24 void amd_iommu_restart_ga_log(struct amd_iommu *iommu); 25 void amd_iommu_restart_ppr_log(struct amd_iommu *iommu); 27 void iommu_feature_enable(struct amd_iommu *iommu, u8 bit); 28 void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu, 32 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/drivers/iommu/ |
| A D | sun50i-iommu.c | 294 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 …]
|
| A D | msm_iommu.c | 73 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() 728 iommu->pclk = devm_clk_get(iommu->dev, "smmu_pclk"); in msm_iommu_probe() 738 iommu->clk = devm_clk_get(iommu->dev, "iommu_clk"); in msm_iommu_probe() 752 iommu->base = devm_ioremap_resource(iommu->dev, r); in msm_iommu_probe() 772 msm_iommu_reset(iommu->base, iommu->ncb); in msm_iommu_probe() 791 iommu); in msm_iommu_probe() 799 ret = iommu_device_sysfs_add(&iommu->iommu, iommu->dev, NULL, in msm_iommu_probe() [all …]
|
| A D | rockchip-iommu.c | 624 report_iommu_fault(iommu->domain, iommu->dev, iova, in rk_iommu_irq() 643 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_irq() 700 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_zap_iova() 922 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_disable() 956 clk_bulk_disable(iommu->num_clocks, iommu->clocks); in rk_iommu_enable() 970 if (!iommu) in rk_iommu_identity_attach() 1134 return &iommu->iommu; in rk_iommu_probe_device() 1235 iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks, in rk_iommu_probe() 1248 err = devm_clk_bulk_get(iommu->dev, iommu->num_clocks, iommu->clocks); in rk_iommu_probe() 1296 iommu_device_sysfs_remove(&iommu->iommu); in rk_iommu_probe() [all …]
|
| A D | iommu-sysfs.c | 62 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/arch/sparc/kernel/ |
| A D | iommu.c | 157 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 …]
|
| A D | iommu-common.c | 66 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 …]
|
| A D | sbus.c | 63 struct iommu *iommu = dev->archdata.iommu; in sbus_set_sbus64() local 213 struct iommu *iommu = op->dev.archdata.iommu; in sbus_build_irq() local 275 struct iommu *iommu = op->dev.archdata.iommu; in sysio_ue_handler() local 349 struct iommu *iommu = op->dev.archdata.iommu; in sysio_ce_handler() local 428 struct iommu *iommu = op->dev.archdata.iommu; in sysio_sbus_error_handler() local 497 struct iommu *iommu = op->dev.archdata.iommu; in sysio_register_error_handlers() local 545 struct iommu *iommu; in sbus_iommu_init() local 559 iommu = kzalloc(sizeof(*iommu), GFP_ATOMIC); in sbus_iommu_init() 564 op->dev.archdata.iommu = iommu; in sbus_iommu_init() 572 iommu->iommu_tags = iommu->iommu_control + in sbus_iommu_init() [all …]
|
| /linux/drivers/iommu/intel/ |
| A D | irq_remapping.c | 138 irq_iommu->iommu = iommu; in alloc_irte() 175 iommu = irq_iommu->iommu; in modify_irte() 242 iommu = irq_iommu->iommu; in clear_entries() 637 if (iommu && iommu->ir_table) { in intel_teardown_irq_remapping() 866 if (ir_hpet[count].iommu == iommu && in ir_parse_one_hpet_scope() 877 ir_hpet[free].iommu = iommu; in ir_parse_one_hpet_scope() 911 if (ir_ioapic[count].iommu == iommu && in ir_parse_one_ioapic_scope() 924 ir_ioapic[free].iommu = iommu; in ir_parse_one_ioapic_scope() 961 if (ir_hpet[i].iommu == iommu) in ir_remove_ioapic_hpet_scope() 965 if (ir_ioapic[i].iommu == iommu) in ir_remove_ioapic_hpet_scope() [all …]
|
| A D | pasid.c | 265 iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH); in intel_pasid_tear_down_entry() 492 iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH); in intel_pasid_setup_dirty_tracking() 678 struct intel_iommu *iommu = info->iommu; in device_pasid_table_teardown() local 740 struct intel_iommu *iommu = info->iommu; in context_entry_set_pasid_table() local 764 struct intel_iommu *iommu = info->iommu; in device_pasid_table_setup() local 792 iommu->flush.flush_context(iommu, 0, in device_pasid_table_setup() 797 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); in device_pasid_table_setup() 818 iommu->flush.flush_context(iommu, 0, in device_pasid_table_setup() 822 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_DSI_FLUSH); in device_pasid_table_setup() 886 struct intel_iommu *iommu = info->iommu; in intel_context_flush_present() local [all …]
|
| A D | svm.c | 36 if (!iommu->prq) { in intel_svm_enable_prq() 38 iommu->name); in intel_svm_enable_prq() 42 irq = dmar_alloc_hwirq(IOMMU_IRQ_ID_OFFSET_PRQ + iommu->seq_id, iommu->node, iommu); in intel_svm_enable_prq() 51 snprintf(iommu->iopfq_name, sizeof(iommu->iopfq_name), in intel_svm_enable_prq() 61 snprintf(iommu->prq_name, sizeof(iommu->prq_name), "dmar%d-prq", iommu->seq_id); in intel_svm_enable_prq() 64 iommu->prq_name, iommu); in intel_svm_enable_prq() 83 iommu->pr_irq = 0; in intel_svm_enable_prq() 98 free_irq(iommu->pr_irq, iommu); in intel_svm_finish_prq() 204 struct intel_iommu *iommu = info->iommu; in intel_svm_set_dev_pasid() local 313 iommu = info->iommu; in intel_drain_pasid_prq() [all …]
|
| A D | iommu.c | 162 struct intel_iommu *iommu = info->iommu; in device_rbtree_remove() local 583 if (!iommu || iommu->drhd->ignored) in iommu_is_dummy() 1510 info->iommu = iommu; in domain_attach_iommu() 1624 iommu->flush.flush_context(iommu, 0, in context_present_cache_flush() 1700 struct intel_iommu *iommu = info->iommu; in domain_context_mapping_cb() local 1711 struct intel_iommu *iommu = info->iommu; in domain_context_mapping() local 3859 if (!iommu || !iommu->iommu.ops) in intel_iommu_probe_device() 3877 info->iommu = iommu; in intel_iommu_probe_device() 3944 return &iommu->iommu; in intel_iommu_probe_device() 4054 iommu = info->iommu; in intel_iommu_enable_sva() [all …]
|
| A D | dmar.c | 975 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() 1130 iommu->iommu.max_pasids = 2UL << ecap_pss(iommu->ecap); in alloc_iommu() 1151 drhd->iommu = iommu; in alloc_iommu() 1157 iommu_device_sysfs_remove(&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() 2037 irq = dmar_alloc_hwirq(iommu->seq_id, iommu->node, iommu); in dmar_set_interrupt() [all …]
|
| A D | cap_audit.c | 91 CHECK_FEATURE_MISMATCH_HOTPLUG(iommu, cap, zlr, CAP_ZLR_MASK); in cap_audit_hotplug() 93 CHECK_FEATURE_MISMATCH_HOTPLUG(iommu, cap, phmr, CAP_PHMR_MASK); in cap_audit_hotplug() 94 CHECK_FEATURE_MISMATCH_HOTPLUG(iommu, cap, plmr, CAP_PLMR_MASK); in cap_audit_hotplug() 96 CHECK_FEATURE_MISMATCH_HOTPLUG(iommu, cap, afl, CAP_AFL_MASK); in cap_audit_hotplug() 116 CHECK_FEATURE_MISMATCH_HOTPLUG(iommu, ecap, qis, ECAP_QI_MASK); in cap_audit_hotplug() 152 if (!iommu) { in cap_audit_static() 155 iommu = i; in cap_audit_static() 160 check_dmar_capabilities(iommu, i); in cap_audit_static() 162 check_irq_capabilities(iommu, i); in cap_audit_static() 183 return cap_audit_static(iommu, type); in intel_cap_audit() [all …]
|
| A D | cache.c | 34 return tag->iommu == iommu; in cache_tage_match() 48 struct intel_iommu *iommu = info->iommu; in cache_tag_assign() local 57 tag->iommu = iommu; in cache_tag_assign() 65 tag->dev = iommu->iommu.dev; in cache_tag_assign() 90 struct intel_iommu *iommu = info->iommu; in cache_tag_unassign() local 429 if (iommu && iommu != tag->iommu) in cache_tag_flush_range() 431 iommu = tag->iommu; in cache_tag_flush_range() 472 if (iommu && iommu != tag->iommu) in cache_tag_flush_all() 474 iommu = tag->iommu; in cache_tag_flush_all() 516 if (iommu && iommu != tag->iommu) in cache_tag_flush_range_np() [all …]
|
| A D | debugfs.c | 116 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 …]
|
| A D | perfmon.c | 327 struct intel_iommu *iommu = iommu_pmu->iommu; in iommu_pmu_start() local 364 struct intel_iommu *iommu = iommu_pmu->iommu; in iommu_pmu_stop() local 476 struct intel_iommu *iommu = iommu_pmu->iommu; in iommu_pmu_enable() local 484 struct intel_iommu *iommu = iommu_pmu->iommu; in iommu_pmu_disable() local 690 iommu_pmu->iommu = iommu; in alloc_iommu_pmu() 723 iommu->pmu = NULL; in free_iommu_pmu() 731 irq = dmar_alloc_hwirq(IOMMU_IRQ_ID_OFFSET_PERF + iommu->seq_id, iommu->node, iommu); in iommu_pmu_set_interrupt() 742 iommu->perf_irq = 0; in iommu_pmu_set_interrupt() 750 if (!iommu->perf_irq) in iommu_pmu_unset_interrupt() 753 free_irq(iommu->perf_irq, iommu); in iommu_pmu_unset_interrupt() [all …]
|
| /linux/drivers/vfio/ |
| A D | vfio_iommu_type1.c | 797 if (!iommu->v2) in vfio_iommu_type1_pin_pages() 1116 iommu->dma_avail++; in vfio_remove_dma() 2537 iommu = kzalloc(sizeof(*iommu), GFP_KERNEL); in vfio_iommu_type1_open() 2538 if (!iommu) in vfio_iommu_type1_open() 2548 iommu->v2 = true; in vfio_iommu_type1_open() 2551 kfree(iommu); in vfio_iommu_type1_open() 2565 return iommu; in vfio_iommu_type1_open() 2605 kfree(iommu); in vfio_iommu_type1_release() 2649 return iommu && !vfio_iommu_has_emulated(iommu); in vfio_iommu_type1_check_extension() 2651 if (!iommu) in vfio_iommu_type1_check_extension() [all …]
|
| /linux/Documentation/devicetree/bindings/pci/ |
| A D | pci-iommu.txt | 26 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/arch/powerpc/platforms/cell/ |
| A D | iommu.c | 347 __func__, iommu->nid, iommu->stab, ptab, in cell_iommu_alloc_ptab() 389 iommu->cmd_regs = iommu->xlate_regs + IOC_IOCmd_Offset; in cell_iommu_enable_hardware() 405 ret = request_irq(virq, ioc_interrupt, 0, iommu->name, iommu); in cell_iommu_enable_hardware() 422 iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0, in cell_iommu_setup_hardware() 463 window->iommu = iommu; in cell_iommu_setup_window() 535 if (iommu == NULL || list_empty(&iommu->windows)) { in cell_get_iommu_table() 637 snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i); in cell_iommu_alloc() 640 return iommu; in cell_iommu_alloc() 650 if (!iommu) in cell_iommu_init_one() 978 BUG_ON(!iommu); in cell_iommu_fixed_mapping_init() [all …]
|
| /linux/arch/sparc/mm/ |
| A D | iommu.c | 60 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/Documentation/devicetree/bindings/iommu/ |
| A D | qcom,iommu.yaml | 4 $id: http://devicetree.org/schemas/iommu/qcom,iommu.yaml# 23 - qcom,msm8916-iommu 24 - qcom,msm8953-iommu 50 qcom,iommu-secure-id: 61 '#iommu-cells': 65 "^iommu-ctx@[0-9a-f]+$": 99 - '#iommu-cells' 108 apps_iommu: iommu@1e20000 { 109 compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1"; 117 #iommu-cells = <1>; [all …]
|