Home
last modified time | relevance | path

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

12345678

/linux/drivers/iommu/
H A Dsun50i-iommu.c101 struct iommu_device iommu; member
125 struct sun50i_iommu *iommu; member
138 static u32 iommu_read(struct sun50i_iommu *iommu, u32 offset) in iommu_read() argument
140 return readl(iommu->base + offset); in iommu_read()
143 static void iommu_write(struct sun50i_iommu *iommu, u32 offset, u32 value) in iommu_write() argument
145 writel(value, iommu->base + offset); in iommu_write()
294 struct sun50i_iommu *iommu = sun50i_domain->iommu; in sun50i_table_flush() local
298 dma_sync_single_for_device(iommu->dev, dma, size, DMA_TO_DEVICE); in sun50i_table_flush()
301 static void sun50i_iommu_zap_iova(struct sun50i_iommu *iommu, in sun50i_iommu_zap_iova() argument
307 iommu_write(iommu, IOMMU_TLB_IVLD_ADDR_REG, iova); in sun50i_iommu_zap_iova()
[all …]
H A Dvsi-iommu.c46 struct iommu_device iommu; member
194 struct vsi_iommu *iommu = dev_id; in vsi_iommu_irq() local
199 if (pm_runtime_resume_and_get(iommu->dev) < 0) in vsi_iommu_irq()
202 spin_lock_irqsave(&iommu->lock, flags); in vsi_iommu_irq()
204 status = readl(iommu->regs + VSI_MMU_STATUS_BASE); in vsi_iommu_irq()
206 dev_err(iommu->dev, "unexpected int_status=%08x\n", status); in vsi_iommu_irq()
207 iova = readl(iommu->regs + VSI_MMU_PAGE_FAULT_ADDR); in vsi_iommu_irq()
208 report_iommu_fault(iommu->domain, iommu->dev, iova, status); in vsi_iommu_irq()
210 writel(0, iommu->regs + VSI_MMU_STATUS_BASE); in vsi_iommu_irq()
212 spin_unlock_irqrestore(&iommu->lock, flags); in vsi_iommu_irq()
[all …]
H A Diommu-sysfs.c54 int iommu_device_sysfs_add(struct iommu_device *iommu, in iommu_device_sysfs_add() argument
62 iommu->dev = kzalloc_obj(*iommu->dev); 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()
73 ret = kobject_set_name_vargs(&iommu->dev->kobj, fmt, vargs); 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()
[all …]
/linux/drivers/iommu/amd/
H A Dinit.c19 #include <linux/amd-iommu.h>
25 #include <asm/iommu.h>
38 #include "../iommu-pages.h"
238 bool translation_pre_enabled(struct amd_iommu *iommu) in translation_pre_enabled() argument
240 return (iommu->flags & AMD_IOMMU_FLAG_TRANS_PRE_ENABLED); in translation_pre_enabled()
243 static void clear_translation_pre_enabled(struct amd_iommu *iommu) in clear_translation_pre_enabled() argument
245 iommu->flags &= ~AMD_IOMMU_FLAG_TRANS_PRE_ENABLED; in clear_translation_pre_enabled()
248 static void init_translation_status(struct amd_iommu *iommu) in init_translation_status() argument
252 ctrl = readq(iommu->mmio_base + MMIO_CONTROL_OFFSET); in init_translation_status()
254 iommu in init_translation_status()
273 struct amd_iommu *iommu; get_global_efr() local
308 early_iommu_features_init(struct amd_iommu * iommu,struct ivhd_header * h) early_iommu_features_init() argument
321 iommu_read_l1(struct amd_iommu * iommu,u16 l1,u8 address) iommu_read_l1() argument
330 iommu_write_l1(struct amd_iommu * iommu,u16 l1,u8 address,u32 val) iommu_write_l1() argument
337 iommu_read_l2(struct amd_iommu * iommu,u8 address) iommu_read_l2() argument
346 iommu_write_l2(struct amd_iommu * iommu,u8 address,u32 val) iommu_write_l2() argument
361 iommu_set_cwwb_range(struct amd_iommu * iommu) iommu_set_cwwb_range() argument
385 iommu_set_device_table(struct amd_iommu * iommu) iommu_set_device_table() argument
402 iommu_feature_set(struct amd_iommu * iommu,u64 val,u64 mask,u8 shift) iommu_feature_set() argument
414 iommu_feature_enable(struct amd_iommu * iommu,u8 bit) iommu_feature_enable() argument
419 iommu_feature_disable(struct amd_iommu * iommu,u8 bit) iommu_feature_disable() argument
425 iommu_enable(struct amd_iommu * iommu) iommu_enable() argument
430 iommu_disable(struct amd_iommu * iommu) iommu_disable() argument
473 iommu_unmap_mmio_space(struct amd_iommu * iommu) iommu_unmap_mmio_space() argument
725 alloc_command_buffer(struct amd_iommu * iommu) alloc_command_buffer() argument
736 amd_iommu_restart_log(struct amd_iommu * iommu,const char * evt_type,u8 cntrl_intr,u8 cntrl_log,u32 status_run_mask,u32 status_overflow_mask) amd_iommu_restart_log() argument
761 amd_iommu_restart_event_logging(struct amd_iommu * iommu) amd_iommu_restart_event_logging() argument
772 amd_iommu_restart_ga_log(struct amd_iommu * iommu) amd_iommu_restart_ga_log() argument
783 amd_iommu_reset_cmd_buffer(struct amd_iommu * iommu) amd_iommu_reset_cmd_buffer() argument
799 iommu_enable_command_buffer(struct amd_iommu * iommu) iommu_enable_command_buffer() argument
822 iommu_disable_command_buffer(struct amd_iommu * iommu) iommu_disable_command_buffer() argument
827 free_command_buffer(struct amd_iommu * iommu) free_command_buffer() argument
832 iommu_alloc_4k_pages(struct amd_iommu * iommu,gfp_t gfp,size_t size) iommu_alloc_4k_pages() argument
854 struct amd_iommu *iommu; alloc_event_buffer() local
868 struct amd_iommu *iommu; iommu_enable_event_buffer() local
898 iommu_disable_event_buffer(struct amd_iommu * iommu) iommu_disable_event_buffer() argument
903 free_event_buffer(struct amd_iommu * iommu) free_event_buffer() argument
908 free_ga_log(struct amd_iommu * iommu) free_ga_log() argument
919 iommu_ga_log_enable(struct amd_iommu * iommu) iommu_ga_log_enable() argument
954 iommu_init_ga_log(struct amd_iommu * iommu) iommu_init_ga_log() argument
979 alloc_cwwb_sem(struct amd_iommu * iommu) alloc_cwwb_sem() argument
990 struct amd_iommu *iommu; remap_event_buffer() local
1004 remap_command_buffer(struct amd_iommu * iommu) remap_command_buffer() argument
1015 remap_or_alloc_cwwb_sem(struct amd_iommu * iommu) remap_or_alloc_cwwb_sem() argument
1037 alloc_iommu_buffers(struct amd_iommu * iommu) alloc_iommu_buffers() argument
1066 free_cwwb_sem(struct amd_iommu * iommu) free_cwwb_sem() argument
1071 unmap_cwwb_sem(struct amd_iommu * iommu) unmap_cwwb_sem() argument
1081 unmap_command_buffer(struct amd_iommu * iommu) unmap_command_buffer() argument
1086 unmap_event_buffer(struct amd_iommu * iommu) unmap_event_buffer() argument
1091 free_iommu_buffers(struct amd_iommu * iommu) free_iommu_buffers() argument
1104 iommu_enable_xt(struct amd_iommu * iommu) iommu_enable_xt() argument
1117 iommu_enable_gt(struct amd_iommu * iommu) iommu_enable_gt() argument
1142 __reuse_device_table(struct amd_iommu * iommu) __reuse_device_table() argument
1206 struct amd_iommu *iommu; reuse_device_table() local
1273 set_dev_entry_from_acpi_range(struct amd_iommu * iommu,u16 first,u16 last,u32 flags,u32 ext_flags) set_dev_entry_from_acpi_range() argument
1328 set_dev_entry_from_acpi(struct amd_iommu * iommu,u16 devid,u32 flags,u32 ext_flags) set_dev_entry_from_acpi() argument
1445 init_iommu_from_acpi(struct amd_iommu * iommu,struct ivhd_header * h) init_iommu_from_acpi() argument
1783 free_sysfs(struct amd_iommu * iommu) free_sysfs() argument
1791 free_iommu_one(struct amd_iommu * iommu) free_iommu_one() argument
1803 struct amd_iommu *iommu, *next; free_iommu_all() local
1818 amd_iommu_erratum_746_workaround(struct amd_iommu * iommu) amd_iommu_erratum_746_workaround() argument
1849 amd_iommu_ats_write_check_workaround(struct amd_iommu * iommu) amd_iommu_ats_write_check_workaround() argument
1875 init_iommu_one(struct amd_iommu * iommu,struct ivhd_header * h,struct acpi_table_header * ivrs_base) init_iommu_one() argument
1954 init_iommu_one_late(struct amd_iommu * iommu) init_iommu_one_late() argument
2023 struct amd_iommu *iommu; init_iommu_all() local
2068 init_iommu_perf_ctr(struct amd_iommu * iommu) init_iommu_perf_ctr() argument
2091 struct amd_iommu *iommu = dev_to_amd_iommu(dev); amd_iommu_show_cap() local
2125 late_iommu_features_init(struct amd_iommu * iommu) late_iommu_features_init() argument
2155 iommu_init_pci(struct amd_iommu * iommu) iommu_init_pci() argument
2308 struct amd_iommu *iommu; amd_iommu_init_pci() local
2357 iommu_setup_msi(struct amd_iommu * iommu) iommu_setup_msi() argument
2437 struct amd_iommu *iommu = irqd->chip_data; intcapxt_unmask_irq() local
2452 struct amd_iommu *iommu = irqd->chip_data; intcapxt_mask_irq() local
2517 __iommu_setup_intcapxt(struct amd_iommu * iommu,const char * devname,int hwirq,irq_handler_t thread_fn) __iommu_setup_intcapxt() argument
2551 iommu_setup_intcapxt(struct amd_iommu * iommu) iommu_setup_intcapxt() argument
2582 iommu_init_irq(struct amd_iommu * iommu) iommu_init_irq() argument
2760 iommu_init_flags(struct amd_iommu * iommu) iommu_init_flags() argument
2791 iommu_apply_resume_quirks(struct amd_iommu * iommu) iommu_apply_resume_quirks() argument
2834 iommu_enable_ga(struct amd_iommu * iommu) iommu_enable_ga() argument
2850 iommu_disable_irtcachedis(struct amd_iommu * iommu) iommu_disable_irtcachedis() argument
2855 iommu_enable_irtcachedis(struct amd_iommu * iommu) iommu_enable_irtcachedis() argument
2877 iommu_enable_2k_int(struct amd_iommu * iommu) iommu_enable_2k_int() argument
2888 early_enable_iommu(struct amd_iommu * iommu) early_enable_iommu() argument
2913 struct amd_iommu *iommu; early_enable_iommus() local
2968 struct amd_iommu *iommu; enable_iommus_ppr() local
2981 struct amd_iommu *iommu; enable_iommus_vapic() local
3043 struct amd_iommu *iommu; disable_iommus() local
3061 struct amd_iommu *iommu; amd_iommu_resume() local
3343 struct amd_iommu *iommu; amd_iommu_enable_interrupts() local
3560 struct amd_iommu *iommu; state_next() local
3982 struct amd_iommu *iommu; get_amd_iommu() local
3999 struct amd_iommu *iommu = get_amd_iommu(idx); amd_iommu_pc_get_max_banks() local
4014 struct amd_iommu *iommu = get_amd_iommu(idx); amd_iommu_pc_get_max_counters() local
4022 iommu_pc_get_set_reg(struct amd_iommu * iommu,u8 bank,u8 cntr,u8 fxn,u64 * value,bool is_write) iommu_pc_get_set_reg() argument
4060 amd_iommu_pc_get_reg(struct amd_iommu * iommu,u8 bank,u8 cntr,u8 fxn,u64 * value) amd_iommu_pc_get_reg() argument
4068 amd_iommu_pc_set_reg(struct amd_iommu * iommu,u8 bank,u8 cntr,u8 fxn,u64 * value) amd_iommu_pc_set_reg() argument
4134 struct amd_iommu *iommu; amd_iommu_snp_disable() local
[all...]
H A Dppr.c20 int __init amd_iommu_alloc_ppr_log(struct amd_iommu *iommu) in amd_iommu_alloc_ppr_log() argument
22 iommu->ppr_log = iommu_alloc_4k_pages(iommu, GFP_KERNEL | __GFP_ZERO, in amd_iommu_alloc_ppr_log()
24 return iommu->ppr_log ? 0 : -ENOMEM; in amd_iommu_alloc_ppr_log()
27 void amd_iommu_enable_ppr_log(struct amd_iommu *iommu) in amd_iommu_enable_ppr_log() argument
31 if (iommu->ppr_log == NULL) in amd_iommu_enable_ppr_log()
34 iommu_feature_enable(iommu, CONTROL_PPR_EN); in amd_iommu_enable_ppr_log()
36 entry = iommu_virt_to_phys(iommu->ppr_log); in amd_iommu_enable_ppr_log()
40 memcpy_toio(iommu->mmio_base + MMIO_PPR_LOG_OFFSET, in amd_iommu_enable_ppr_log()
44 writel(0x00, iommu->mmio_base + MMIO_PPR_HEAD_OFFSET); in amd_iommu_enable_ppr_log()
45 writel(0x00, iommu->mmio_base + MMIO_PPR_TAIL_OFFSET); in amd_iommu_enable_ppr_log()
[all …]
H A Diommu.c23 #include <linux/iommu-helper.h>
25 #include <linux/amd-iommu.h>
39 #include <asm/iommu.h>
43 #include <linux/generic_pt/iommu.h>
48 #include "../iommu-pages.h"
75 static void set_dte_entry(struct amd_iommu *iommu,
84 static void iommu_flush_dte_sync(struct amd_iommu *iommu, u16 devid);
86 static struct iommu_dev_data *find_dev_data(struct amd_iommu *iommu, u16 devid);
91 static void clone_aliases(struct amd_iommu *iommu, struct device *dev);
93 static int iommu_completion_wait(struct amd_iommu *iommu);
149 update_dte256(struct amd_iommu * iommu,struct iommu_dev_data * dev_data,struct dev_table_entry * new) update_dte256() argument
215 amd_iommu_update_dte(struct amd_iommu * iommu,struct iommu_dev_data * dev_data,struct dev_table_entry * new) amd_iommu_update_dte() argument
225 get_dte256(struct amd_iommu * iommu,struct iommu_dev_data * dev_data,struct dev_table_entry * dte) get_dte256() argument
315 get_dev_table(struct amd_iommu * iommu) get_dev_table() argument
345 amd_iommu_set_rlookup_table(struct amd_iommu * iommu,u16 devid) amd_iommu_set_rlookup_table() argument
377 alloc_dev_data(struct amd_iommu * iommu,u16 devid) alloc_dev_data() argument
395 search_dev_data(struct amd_iommu * iommu,u16 devid) search_dev_data() argument
416 struct amd_iommu *iommu; clone_alias() local
452 clone_aliases(struct amd_iommu * iommu,struct device * dev) clone_aliases() argument
470 setup_aliases(struct amd_iommu * iommu,struct device * dev) setup_aliases() argument
492 find_dev_data(struct amd_iommu * iommu,u16 devid) find_dev_data() argument
681 struct amd_iommu *iommu; check_device() local
704 iommu_init_device(struct amd_iommu * iommu,struct device * dev) iommu_init_device() argument
744 iommu_ignore_device(struct amd_iommu * iommu,struct device * dev) iommu_ignore_device() argument
768 dump_dte_entry(struct amd_iommu * iommu,u16 devid) dump_dte_entry() argument
789 amd_iommu_report_rmp_hw_error(struct amd_iommu * iommu,volatile u32 * event) amd_iommu_report_rmp_hw_error() argument
821 amd_iommu_report_rmp_fault(struct amd_iommu * iommu,volatile u32 * event) amd_iommu_report_rmp_fault() argument
860 amd_iommu_report_page_fault(struct amd_iommu * iommu,u16 devid,u16 domain_id,u64 address,int flags) amd_iommu_report_page_fault() argument
911 amd_iommu_report_ppr_err(struct amd_iommu * iommu,volatile u32 * event,u16 devid,u64 address,int flags) amd_iommu_report_ppr_err() argument
945 iommu_print_event(struct amd_iommu * iommu,void * __evt) iommu_print_event() argument
1039 iommu_poll_events(struct amd_iommu * iommu) iommu_poll_events() argument
1075 iommu_poll_ga_log(struct amd_iommu * iommu) iommu_poll_ga_log() argument
1115 amd_iommu_set_pci_msi_domain(struct device * dev,struct amd_iommu * iommu) amd_iommu_set_pci_msi_domain() argument
1126 amd_iommu_set_pci_msi_domain(struct device * dev,struct amd_iommu * iommu) amd_iommu_set_pci_msi_domain() argument
1134 struct amd_iommu *iommu = (struct amd_iommu *) data; amd_iommu_handle_irq() local
1212 dump_command_buffer(struct amd_iommu * iommu) dump_command_buffer() argument
1231 wait_on_sem(struct amd_iommu * iommu,u64 data) wait_on_sem() argument
1260 copy_cmd_to_buffer(struct amd_iommu * iommu,struct iommu_cmd * cmd) copy_cmd_to_buffer() argument
1279 build_completion_wait(struct iommu_cmd * cmd,struct amd_iommu * iommu,u64 data) build_completion_wait() argument
1410 __iommu_queue_command_sync(struct amd_iommu * iommu,struct iommu_cmd * cmd,bool sync) __iommu_queue_command_sync() argument
1447 iommu_queue_command_sync(struct amd_iommu * iommu,struct iommu_cmd * cmd,bool sync) iommu_queue_command_sync() argument
1461 iommu_queue_command(struct amd_iommu * iommu,struct iommu_cmd * cmd) iommu_queue_command() argument
1466 get_cmdsem_val(struct amd_iommu * iommu) get_cmdsem_val() argument
1476 iommu_completion_wait(struct amd_iommu * iommu) iommu_completion_wait() argument
1527 iommu_flush_dte(struct amd_iommu * iommu,u16 devid) iommu_flush_dte() argument
1536 iommu_flush_dte_sync(struct amd_iommu * iommu,u16 devid) iommu_flush_dte_sync() argument
1545 amd_iommu_flush_dte_all(struct amd_iommu * iommu) amd_iommu_flush_dte_all() argument
1560 amd_iommu_flush_tlb_all(struct amd_iommu * iommu) amd_iommu_flush_tlb_all() argument
1576 amd_iommu_flush_tlb_domid(struct amd_iommu * iommu,u32 dom_id) amd_iommu_flush_tlb_domid() argument
1597 struct amd_iommu *iommu = container_of(aviommu->core.iommu_dev, iommu_flush_pages_v1_hdom_ids() local
1615 amd_iommu_flush_all(struct amd_iommu * iommu) amd_iommu_flush_all() argument
1625 iommu_flush_irt(struct amd_iommu * iommu,u16 devid) iommu_flush_irt() argument
1634 amd_iommu_flush_irt_all(struct amd_iommu * iommu) amd_iommu_flush_irt_all() argument
1648 amd_iommu_flush_all_caches(struct amd_iommu * iommu) amd_iommu_flush_all_caches() argument
1665 struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data); device_flush_iotlb() local
1677 struct amd_iommu *iommu = data; device_flush_dte_alias() local
1687 struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data); device_flush_dte() local
1730 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev_data->dev); domain_flush_pages_v2() local
1863 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev_data->dev); amd_iommu_dev_flush_pasid_pages() local
1887 struct amd_iommu *iommu; __amd_iommu_complete_ppr() local
2002 setup_gcr3_table(struct gcr3_tbl_info * gcr3_info,struct amd_iommu * iommu,int pasids) setup_gcr3_table() argument
2199 set_dte_entry(struct amd_iommu * iommu,struct iommu_dev_data * dev_data,phys_addr_t top_paddr,unsigned int top_level) set_dte_entry() argument
2237 clear_dte_entry(struct amd_iommu * iommu,struct iommu_dev_data * dev_data) clear_dte_entry() argument
2248 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev_data->dev); dev_update_dte() local
2263 struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data); init_gcr3_table() local
2310 pdom_attach_iommu(struct amd_iommu * iommu,struct protection_domain * pdom) pdom_attach_iommu() argument
2347 pdom_detach_iommu(struct amd_iommu * iommu,struct protection_domain * pdom) pdom_detach_iommu() argument
2378 struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data); attach_device() local
2440 struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data); detach_device() local
2490 struct amd_iommu *iommu; amd_iommu_probe_device() local
2611 amd_iommu_hd_support(struct amd_iommu * iommu) amd_iommu_hd_support() argument
2641 struct amd_iommu *iommu = rlookup_amd_iommu(dev_data->dev); amd_iommu_change_top() local
2862 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev); amd_iommu_domain_alloc_paging_flags() local
2993 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev); amd_iommu_attach_device() local
3041 struct amd_iommu *iommu = get_amd_iommu_from_dev(dev); amd_iommu_capable() local
3065 struct amd_iommu *iommu; amd_iommu_set_dirty_tracking() local
3104 struct amd_iommu *iommu; amd_iommu_get_resv_regions() local
3233 struct amd_iommu *iommu = data; iommu_flush_dev_irt() local
3240 iommu_flush_irt_and_complete(struct amd_iommu * iommu,u16 devid) iommu_flush_irt_and_complete() argument
3285 set_dte_irq_entry(struct amd_iommu * iommu,u16 devid,struct irq_remap_table * table) set_dte_irq_entry() argument
3307 get_irq_table(struct amd_iommu * iommu,u16 devid) get_irq_table() argument
3344 set_remap_table_entry(struct amd_iommu * iommu,u16 devid,struct irq_remap_table * table) set_remap_table_entry() argument
3359 struct amd_iommu *iommu = rlookup_amd_iommu(&pdev->dev); set_remap_table_entry_alias() local
3380 alloc_irq_table(struct amd_iommu * iommu,u16 devid,struct pci_dev * pdev,unsigned int max_irqs) alloc_irq_table() argument
3448 alloc_irq_index(struct amd_iommu * iommu,u16 devid,int count,bool align,struct pci_dev * pdev,unsigned long max_irqs) alloc_irq_index() argument
3495 __modify_irte_ga(struct amd_iommu * iommu,u16 devid,int index,struct irte_ga * irte) __modify_irte_ga() argument
3526 modify_irte_ga(struct amd_iommu * iommu,u16 devid,int index,struct irte_ga * irte) modify_irte_ga() argument
3540 modify_irte(struct amd_iommu * iommu,u16 devid,int index,union irte * irte) modify_irte() argument
3559 free_irte(struct amd_iommu * iommu,u16 devid,int index) free_irte() argument
3605 irte_activate(struct amd_iommu * iommu,void * entry,u16 devid,u16 index) irte_activate() argument
3613 irte_ga_activate(struct amd_iommu * iommu,void * entry,u16 devid,u16 index) irte_ga_activate() argument
3621 irte_deactivate(struct amd_iommu * iommu,void * entry,u16 devid,u16 index) irte_deactivate() argument
3629 irte_ga_deactivate(struct amd_iommu * iommu,void * entry,u16 devid,u16 index) irte_ga_deactivate() argument
3637 irte_set_affinity(struct amd_iommu * iommu,void * entry,u16 devid,u16 index,u8 vector,u32 dest_apicid) irte_set_affinity() argument
3647 irte_ga_set_affinity(struct amd_iommu * iommu,void * entry,u16 devid,u16 index,u8 vector,u32 dest_apicid) irte_ga_set_affinity() argument
3754 struct amd_iommu *iommu = data->iommu; irq_remapping_prepare_irte() local
3805 struct amd_iommu *iommu; irq_remapping_alloc() local
3946 struct amd_iommu *iommu = data->iommu; irq_remapping_activate() local
3963 struct amd_iommu *iommu = data->iommu; irq_remapping_deactivate() local
3973 struct amd_iommu *iommu; irq_remapping_select() local
4156 amd_ir_update_irte(struct irq_data * irqd,struct amd_iommu * iommu,struct amd_ir_data * ir_data,struct irq_2_irte * irte_info,struct irq_cfg * cfg) amd_ir_update_irte() argument
4178 struct amd_iommu *iommu = ir_data->iommu; amd_ir_set_affinity() local
4222 amd_iommu_create_irq_domain(struct amd_iommu * iommu) amd_iommu_create_irq_domain() argument
[all...]
H A Damd_iommu.h21 void amd_iommu_restart_log(struct amd_iommu *iommu, const char *evt_type,
24 void amd_iommu_restart_event_logging(struct amd_iommu *iommu);
25 void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
26 void amd_iommu_restart_ppr_log(struct amd_iommu *iommu);
27 void amd_iommu_set_rlookup_table(struct amd_iommu *iommu, u16 devid);
28 void iommu_feature_enable(struct amd_iommu *iommu, u8 bit);
29 void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu,
64 int amd_iommu_iopf_init(struct amd_iommu *iommu);
65 void amd_iommu_iopf_uninit(struct amd_iommu *iommu);
68 int amd_iommu_iopf_add_device(struct amd_iommu *iommu,
[all …]
/linux/arch/sparc/kernel/
H A Diommu.c52 struct iommu *iommu = container_of(iommu_map_table, struct iommu, tbl); in iommu_flushall() local
53 if (iommu->iommu_flushinv) { in iommu_flushall()
54 iommu_write(iommu->iommu_flushinv, ~(u64)0); in iommu_flushall()
59 tag = iommu->iommu_tags; in iommu_flushall()
66 (void) iommu_read(iommu->write_complete_reg); in iommu_flushall()
80 #define IOPTE_IS_DUMMY(iommu, iopte) \ argument
81 ((iopte_val(*iopte) & IOPTE_PAGE) == (iommu)->dummy_page_pa)
83 static inline void iopte_make_dummy(struct iommu *iommu, iopte_t *iopte) in iopte_make_dummy() argument
88 val |= iommu->dummy_page_pa; in iopte_make_dummy()
93 int iommu_table_init(struct iommu *iommu, int tsbsize, in iommu_table_init() argument
[all …]
H A Diommu-common.c19 static inline bool need_flush(struct iommu_map_table *iommu) in need_flush() argument
21 return ((iommu->flags & IOMMU_NEED_FLUSH) != 0); in need_flush()
24 static inline void set_flush(struct iommu_map_table *iommu) in set_flush() argument
26 iommu->flags |= IOMMU_NEED_FLUSH; in set_flush()
29 static inline void clear_flush(struct iommu_map_table *iommu) in clear_flush() argument
31 iommu->flags &= ~IOMMU_NEED_FLUSH; in clear_flush()
52 void iommu_tbl_pool_init(struct iommu_map_table *iommu, in iommu_tbl_pool_init() argument
60 struct iommu_pool *p = &(iommu->large_pool); in iommu_tbl_pool_init()
64 iommu->nr_pools = IOMMU_NR_POOLS; in iommu_tbl_pool_init()
66 iommu->nr_pools = npools; in iommu_tbl_pool_init()
[all …]
H A Dsbus.c63 struct iommu *iommu = dev->archdata.iommu; in sbus_set_sbus64() local
78 cfg_reg = iommu->write_complete_reg; in sbus_set_sbus64()
213 struct iommu *iommu = op->dev.archdata.iommu; in sbus_build_irq() local
214 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; in sbus_build_irq()
275 struct iommu *iommu = op->dev.archdata.iommu; in sysio_ue_handler() local
276 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; in sysio_ue_handler()
349 struct iommu *iommu = op->dev.archdata.iommu; in sysio_ce_handler() local
350 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL; in sysio_ce_handler()
428 struct iommu *iommu = op->dev.archdata.iommu; in sysio_sbus_error_handler() local
433 reg_base = iommu->write_complete_reg - 0x2000UL; in sysio_sbus_error_handler()
[all …]
H A Dpci_sun4v.c78 static inline bool iommu_use_atu(struct iommu *iommu, u64 mask) in iommu_use_atu() argument
80 return iommu->atu && mask > DMA_BIT_MASK(32); in iommu_use_atu()
102 if (!iommu_use_atu(pbm->iommu, mask)) { in iommu_batch_flush()
119 iotsb_num = pbm->iommu->atu->iotsb->iotsb_num; in iommu_batch_flush()
188 struct iommu *iommu; in dma_4v_alloc_coherent() local
213 iommu = dev->archdata.iommu; in dma_4v_alloc_coherent()
215 if (!iommu_use_atu(iommu, mask)) in dma_4v_alloc_coherent()
216 tbl = &iommu->tbl; in dma_4v_alloc_coherent()
218 tbl = &iommu->atu->tbl; in dma_4v_alloc_coherent()
327 struct iommu *iommu; in dma_4v_free_coherent() local
[all …]
H A Dpsycho_common.c209 struct iommu *iommu = pbm->iommu; in psycho_check_iommu_error() local
212 spin_lock_irqsave(&iommu->lock, flags); in psycho_check_iommu_error()
213 control = upa_readq(iommu->iommu_control); in psycho_check_iommu_error()
218 upa_writeq(control, iommu->iommu_control); in psycho_check_iommu_error()
248 spin_unlock_irqrestore(&iommu->lock, flags); in psycho_check_iommu_error()
405 struct iommu *iommu = pbm->iommu; in psycho_iommu_init() local
409 iommu->iommu_control = pbm->controller_regs + PSYCHO_IOMMU_CONTROL; in psycho_iommu_init()
410 iommu->iommu_tsbbase = pbm->controller_regs + PSYCHO_IOMMU_TSBBASE; in psycho_iommu_init()
411 iommu->iommu_flush = pbm->controller_regs + PSYCHO_IOMMU_FLUSH; in psycho_iommu_init()
412 iommu->iommu_tags = pbm->controller_regs + PSYCHO_IOMMU_TAG; in psycho_iommu_init()
[all …]
/linux/drivers/iommu/riscv/
H A Diommu.c45 iommu_get_iommu_dev(dev, struct riscv_iommu_device, iommu)
71 static void *riscv_iommu_get_pages(struct riscv_iommu_device *iommu, in riscv_iommu_get_pages() argument
77 addr = iommu_alloc_pages_node_sz(dev_to_node(iommu->dev), in riscv_iommu_get_pages()
92 devres_add(iommu->dev, devres); in riscv_iommu_get_pages()
97 static void riscv_iommu_free_pages(struct riscv_iommu_device *iommu, void *addr) in riscv_iommu_free_pages() argument
101 devres_release(iommu->dev, riscv_iommu_devres_pages_release, in riscv_iommu_free_pages()
132 static int riscv_iommu_queue_alloc(struct riscv_iommu_device *iommu, in riscv_iommu_queue_alloc() argument
143 riscv_iommu_writeq(iommu, queue->qbr, RISCV_IOMMU_QUEUE_LOG2SZ_FIELD); in riscv_iommu_queue_alloc()
144 qb = riscv_iommu_readq(iommu, queue->qbr); in riscv_iommu_queue_alloc()
164 queue->base = devm_ioremap(iommu->dev, queue->phys, queue_size); in riscv_iommu_queue_alloc()
[all …]
H A Diommu.h30 struct riscv_iommu_device *iommu; /* iommu device handling the queue when active */ member
40 struct iommu_device iommu; member
67 int riscv_iommu_init(struct riscv_iommu_device *iommu);
68 void riscv_iommu_remove(struct riscv_iommu_device *iommu);
69 void riscv_iommu_disable(struct riscv_iommu_device *iommu);
71 #define riscv_iommu_readl(iommu, addr) \ argument
72 readl_relaxed((iommu)->reg + (addr))
74 #define riscv_iommu_readq(iommu, addr) \ argument
75 readq_relaxed((iommu)->reg + (addr))
77 #define riscv_iommu_writel(iommu, addr, val) \ argument
[all …]
/linux/tools/testing/selftests/vfio/lib/
H A Diommu.c69 int __iommu_hva2iova(struct iommu *iommu, void *vaddr, iova_t *iova) in __iommu_hva2iova() argument
73 list_for_each_entry(region, &iommu->dma_regions, link) { in __iommu_hva2iova()
89 iova_t iommu_hva2iova(struct iommu *iommu, void *vaddr) in iommu_hva2iova() argument
94 ret = __iommu_hva2iova(iommu, vaddr, &iova); in iommu_hva2iova()
100 static int vfio_iommu_map(struct iommu *iommu, struct dma_region *region) in vfio_iommu_map() argument
110 if (ioctl(iommu->container_fd, VFIO_IOMMU_MAP_DMA, &args)) in vfio_iommu_map()
116 static int iommufd_map(struct iommu *iommu, struct dma_region *region) in iommufd_map() argument
126 .ioas_id = iommu->ioas_id, in iommufd_map()
129 if (ioctl(iommu->iommufd, IOMMU_IOAS_MAP, &args)) in iommufd_map()
135 int __iommu_map(struct iommu *iommu, struct dma_region *region) in __iommu_map() argument
[all …]
/linux/tools/testing/selftests/vfio/lib/include/libvfio/
H A Diommu.h27 struct iommu { struct
35 struct iommu *iommu_init(const char *iommu_mode); argument
36 void iommu_cleanup(struct iommu *iommu);
38 int __iommu_map(struct iommu *iommu, struct dma_region *region);
40 static inline void iommu_map(struct iommu *iommu, struct dma_region *region) in iommu_map() argument
42 VFIO_ASSERT_EQ(__iommu_map(iommu, region), 0); in iommu_map()
45 int __iommu_unmap(struct iommu *iomm
28 modeiommu global() argument
30 iommufdiommu global() argument
47 iommu_unmap(struct iommu * iommu,struct dma_region * region) iommu_unmap() argument
54 iommu_unmap_all(struct iommu * iommu) iommu_unmap_all() argument
[all...]
/linux/arch/sparc/mm/
H A Diommu.c60 struct iommu_struct *iommu; in sbus_iommu_init() local
67 iommu = kmalloc_obj(struct iommu_struct); in sbus_iommu_init()
68 if (!iommu) { in sbus_iommu_init()
73 iommu->regs = of_ioremap(&op->resource[0], 0, PAGE_SIZE * 3, in sbus_iommu_init()
75 if (!iommu->regs) { in sbus_iommu_init()
80 control = sbus_readl(&iommu->regs->control); in sbus_iommu_init()
85 sbus_writel(control, &iommu->regs->control); 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()
[all …]
/linux/Documentation/ABI/testing/
H A Ddebugfs-amd-iommu1 What: /sys/kernel/debug/iommu/amd/iommu<x>/mmio
6 MMIO register offset for iommu<x>, and the file outputs the corresponding
7 MMIO register value of iommu<x>
11 $ echo "0x18" > /sys/kernel/debug/iommu/amd/iommu00/mmio
12 $ cat /sys/kernel/debug/iommu/amd/iommu00/mmio
18 What: /sys/kernel/debug/iommu/amd/iommu<x>/capability
23 capability register offset for iommu<x>, and the file outputs the
24 corresponding capability register value of iommu<x>.
28 $ echo "0x10" > /sys/kernel/debug/iommu/amd/iommu00/capability
29 $ cat /sys/kernel/debug/iommu/amd/iommu00/capability
[all …]
H A Dsysfs-class-iommu-intel-iommu1 What: /sys/class/iommu/<iommu>/intel-iommu/address
8 intel-iommu with a DMAR DRHD table entry.
10 What: /sys/class/iommu/<iommu>/intel-iommu/cap
18 What: /sys/class/iommu/<iommu>/intel-iommu/ecap
26 What: /sys/class/iommu/<iommu>/intel-iommu/version
/linux/drivers/gpu/drm/msm/
H A Dmsm_iommu.c147 struct msm_iommu *iommu = to_msm_iommu(pagetable->parent); in msm_iommu_pagetable_map_prr() local
148 phys_addr_t phys = page_to_phys(iommu->prr_page); in msm_iommu_pagetable_map_prr()
233 struct msm_iommu *iommu = to_msm_iommu(pagetable->parent); in msm_iommu_pagetable_destroy() local
241 mutex_lock(&iommu->init_lock); in msm_iommu_pagetable_destroy()
242 if (--iommu->pagetables == 0) { in msm_iommu_pagetable_destroy()
247 __free_page(iommu->prr_page); in msm_iommu_pagetable_destroy()
248 iommu->prr_page = NULL; in msm_iommu_pagetable_destroy()
251 mutex_unlock(&iommu->init_lock); in msm_iommu_pagetable_destroy()
278 struct msm_iommu *iommu = to_msm_iommu(mmu); in msm_iommu_get_geometry() local
280 return &iommu->domain->geometry; in msm_iommu_get_geometry()
[all …]
/linux/drivers/iommu/intel/
H A Dperf.c18 bool dmar_latency_enabled(struct intel_iommu *iommu, enum latency_type type) in dmar_latency_enabled() argument
20 struct latency_statistic *lstat = iommu->perf_statistic; in dmar_latency_enabled()
25 int dmar_latency_enable(struct intel_iommu *iommu, enum latency_type type) in dmar_latency_enable() argument
31 if (dmar_latency_enabled(iommu, type)) in dmar_latency_enable()
35 if (!iommu->perf_statistic) { in dmar_latency_enable()
36 iommu->perf_statistic = kzalloc_objs(*lstat, DMAR_LATENCY_NUM, in dmar_latency_enable()
38 if (!iommu->perf_statistic) { in dmar_latency_enable()
44 lstat = iommu->perf_statistic; in dmar_latency_enable()
57 void dmar_latency_disable(struct intel_iommu *iommu, enum latency_type type) in dmar_latency_disable() argument
59 struct latency_statistic *lstat = iommu->perf_statistic; in dmar_latency_disable()
[all …]
H A Dsvm.c28 void intel_svm_check(struct intel_iommu *iommu) in intel_svm_check() argument
30 if (!pasid_supported(iommu) || !ecap_smpwc(iommu->ecap)) in intel_svm_check()
34 !cap_fl1gp_support(iommu->cap)) { in intel_svm_check()
36 iommu->name); in intel_svm_check()
41 !cap_fl5lp_support(iommu->cap)) { in intel_svm_check()
43 iommu->name); in intel_svm_check()
47 iommu->flags |= VTD_FLAG_SVM_CAPABLE; in intel_svm_check()
92 intel_pasid_tear_down_entry(info->iommu, dev_pasid->dev, in intel_mm_release()
116 struct intel_iommu *iommu; in intel_iommu_sva_supported() local
121 iommu = info->iommu; in intel_iommu_sva_supported()
[all …]
H A Dperfmon.h39 int alloc_iommu_pmu(struct intel_iommu *iommu);
40 void free_iommu_pmu(struct intel_iommu *iommu);
41 void iommu_pmu_register(struct intel_iommu *iommu);
42 void iommu_pmu_unregister(struct intel_iommu *iommu);
45 alloc_iommu_pmu(struct intel_iommu *iommu) in alloc_iommu_pmu() argument
51 free_iommu_pmu(struct intel_iommu *iommu) in free_iommu_pmu() argument
56 iommu_pmu_register(struct intel_iommu *iommu) in iommu_pmu_register() argument
61 iommu_pmu_unregister(struct intel_iommu *iommu) in iommu_pmu_unregister() argument
/linux/tools/testing/selftests/vfio/
H A Dvfio_pci_driver_test.c28 static void region_setup(struct iommu *iommu, in region_setup() argument
43 iommu_map(iommu, region); in region_setup()
46 static void region_teardown(struct iommu *iommu, struct dma_region *region) in region_teardown() argument
48 iommu_unmap(iommu, region); in region_teardown()
53 struct iommu *iommu; in FIXTURE() local
83 self->iommu = iommu_init(variant->iommu_mode); in FIXTURE_SETUP()
84 self->device = vfio_pci_device_init(device_bdf, self->iommu); in FIXTURE_SETUP()
85 self->iova_allocator = iova_allocator_init(self->iommu); in FIXTURE_SETUP()
89 region_setup(self->iommu, self->iova_allocator, &self->memcpy_region, SZ_1G); in FIXTURE_SETUP()
90 region_setup(self->iommu, self->iova_allocator, &driver->region, SZ_2M); in FIXTURE_SETUP()
[all …]
H A Dvfio_dma_mapping_test.c48 "/sys/kernel/debug/iommu/intel/%s/domain_translation_struct", in intel_iommu_mapping_get()
89 if (!access("/sys/kernel/debug/iommu/intel", F_OK)) in iommu_mapping_get()
96 struct iommu *iommu; in FIXTURE() local
122 self->iommu = iommu_init(variant->iommu_mode); in FIXTURE_SETUP()
123 self->device = vfio_pci_device_init(device_bdf, self->iommu); in FIXTURE_SETUP()
124 self->iova_allocator = iova_allocator_init(self->iommu); in FIXTURE_SETUP()
131 iommu_cleanup(self->iommu); in FIXTURE_TEARDOWN()
155 iommu_map(self->iommu, &region); in TEST_F()
164 if (self->iommu in TEST_F()
204 struct iommu *iommu; FIXTURE() local
[all...]

12345678