iommu              94 arch/arc/mm/dma.c 			const struct iommu_ops *iommu, bool coherent)
iommu              13 arch/arm/include/asm/device.h 	void *iommu; /* private IOMMU data */
iommu             192 arch/arm/mm/dma-mapping-nommu.c 			const struct iommu_ops *iommu, bool coherent)
iommu            2243 arch/arm/mm/dma-mapping.c 				    const struct iommu_ops *iommu)
iommu            2247 arch/arm/mm/dma-mapping.c 	if (!iommu)
iommu            2281 arch/arm/mm/dma-mapping.c 				    const struct iommu_ops *iommu)
iommu            2293 arch/arm/mm/dma-mapping.c 			const struct iommu_ops *iommu, bool coherent)
iommu            2310 arch/arm/mm/dma-mapping.c 	if (arm_setup_iommu_dma_ops(dev, dma_base, size, iommu))
iommu              10 arch/arm64/include/asm/device.h 	void *iommu;			/* private IOMMU data */
iommu              41 arch/arm64/mm/dma-mapping.c 			const struct iommu_ops *iommu, bool coherent)
iommu              52 arch/arm64/mm/dma-mapping.c 	if (iommu)
iommu             254 arch/ia64/hp/common/sba_iommu.c 			 ? ((struct ioc *) PCI_CONTROLLER(to_pci_dev(dev))->iommu) : NULL)
iommu            1736 arch/ia64/hp/common/sba_iommu.c 	controller->iommu = ioc;
iommu            1940 arch/ia64/hp/common/sba_iommu.c 	if (PCI_CONTROLLER(bus)->iommu)
iommu            1955 arch/ia64/hp/common/sba_iommu.c 				PCI_CONTROLLER(bus)->iommu = ioc;
iommu              10 arch/ia64/include/asm/device.h 	void *iommu; /* hook for IOMMU specific extension */
iommu              48 arch/ia64/include/asm/pci.h 	void *iommu;
iommu             146 arch/mips/mm/dma-noncoherent.c 		const struct iommu_ops *iommu, bool coherent)
iommu              59 arch/parisc/include/asm/pci.h 	struct ioc	*iommu;		/* IOMMU this device is under */
iommu             102 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu;
iommu             129 arch/powerpc/platforms/cell/iommu.c static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte,
iommu             136 arch/powerpc/platforms/cell/iommu.c 	reg = iommu->xlate_regs + IOC_IOPT_CacheInvd;
iommu             193 arch/powerpc/platforms/cell/iommu.c 	invalidate_tce_cache(window->iommu, io_pte, npages);
iommu             216 arch/powerpc/platforms/cell/iommu.c 		__pa(window->iommu->pad_page) |
iommu             227 arch/powerpc/platforms/cell/iommu.c 	invalidate_tce_cache(window->iommu, io_pte, npages);
iommu             233 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu = data;
iommu             235 arch/powerpc/platforms/cell/iommu.c 	stat = in_be64(iommu->xlate_regs + IOC_IO_ExcpStat);
iommu             251 arch/powerpc/platforms/cell/iommu.c 	out_be64(iommu->xlate_regs + IOC_IO_ExcpStat, stat);
iommu             296 arch/powerpc/platforms/cell/iommu.c static void cell_iommu_setup_stab(struct cbe_iommu *iommu,
iommu             306 arch/powerpc/platforms/cell/iommu.c 			__func__, iommu->nid, segments);
iommu             310 arch/powerpc/platforms/cell/iommu.c 	page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size));
iommu             312 arch/powerpc/platforms/cell/iommu.c 	iommu->stab = page_address(page);
iommu             313 arch/powerpc/platforms/cell/iommu.c 	memset(iommu->stab, 0, stab_size);
iommu             316 arch/powerpc/platforms/cell/iommu.c static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu,
iommu             334 arch/powerpc/platforms/cell/iommu.c 			iommu->nid, ptab_size, get_order(ptab_size));
iommu             335 arch/powerpc/platforms/cell/iommu.c 	page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size));
iommu             345 arch/powerpc/platforms/cell/iommu.c 			__func__, iommu->nid, iommu->stab, ptab,
iommu             368 arch/powerpc/platforms/cell/iommu.c 		iommu->stab[i] = reg | (__pa(ptab) + (n_pte_pages << 12) *
iommu             370 arch/powerpc/platforms/cell/iommu.c 		pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]);
iommu             376 arch/powerpc/platforms/cell/iommu.c static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
iommu             382 arch/powerpc/platforms/cell/iommu.c 	if (cell_iommu_find_ioc(iommu->nid, &xlate_base))
iommu             384 arch/powerpc/platforms/cell/iommu.c 		      __func__, iommu->nid);
iommu             386 arch/powerpc/platforms/cell/iommu.c 	iommu->xlate_regs = ioremap(xlate_base, IOC_Reg_Size);
iommu             387 arch/powerpc/platforms/cell/iommu.c 	iommu->cmd_regs = iommu->xlate_regs + IOC_IOCmd_Offset;
iommu             393 arch/powerpc/platforms/cell/iommu.c 	reg = in_be64(iommu->xlate_regs + IOC_IO_ExcpStat);
iommu             394 arch/powerpc/platforms/cell/iommu.c 	out_be64(iommu->xlate_regs + IOC_IO_ExcpStat,
iommu             396 arch/powerpc/platforms/cell/iommu.c 	out_be64(iommu->xlate_regs + IOC_IO_ExcpMask,
iommu             400 arch/powerpc/platforms/cell/iommu.c 			IIC_IRQ_IOEX_ATI | (iommu->nid << IIC_IRQ_NODE_SHIFT));
iommu             403 arch/powerpc/platforms/cell/iommu.c 	ret = request_irq(virq, ioc_interrupt, 0, iommu->name, iommu);
iommu             407 arch/powerpc/platforms/cell/iommu.c 	reg = IOC_IOST_Origin_E | __pa(iommu->stab) | IOC_IOST_Origin_HW;
iommu             408 arch/powerpc/platforms/cell/iommu.c 	out_be64(iommu->xlate_regs + IOC_IOST_Origin, reg);
iommu             409 arch/powerpc/platforms/cell/iommu.c 	in_be64(iommu->xlate_regs + IOC_IOST_Origin);
iommu             412 arch/powerpc/platforms/cell/iommu.c 	reg = in_be64(iommu->cmd_regs + IOC_IOCmd_Cfg) | IOC_IOCmd_Cfg_TE;
iommu             413 arch/powerpc/platforms/cell/iommu.c 	out_be64(iommu->cmd_regs + IOC_IOCmd_Cfg, reg);
iommu             416 arch/powerpc/platforms/cell/iommu.c static void cell_iommu_setup_hardware(struct cbe_iommu *iommu,
iommu             419 arch/powerpc/platforms/cell/iommu.c 	cell_iommu_setup_stab(iommu, base, size, 0, 0);
iommu             420 arch/powerpc/platforms/cell/iommu.c 	iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0,
iommu             422 arch/powerpc/platforms/cell/iommu.c 	cell_iommu_enable_hardware(iommu);
iommu             426 arch/powerpc/platforms/cell/iommu.c static struct iommu_window *find_window(struct cbe_iommu *iommu,
iommu             433 arch/powerpc/platforms/cell/iommu.c 	list_for_each_entry(window, &(iommu->windows), list) {
iommu             462 arch/powerpc/platforms/cell/iommu.c cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
iommu             472 arch/powerpc/platforms/cell/iommu.c 	window = kzalloc_node(sizeof(*window), GFP_KERNEL, iommu->nid);
iommu             478 arch/powerpc/platforms/cell/iommu.c 	window->iommu = iommu;
iommu             481 arch/powerpc/platforms/cell/iommu.c 	window->table.it_base = (unsigned long)iommu->ptab;
iommu             482 arch/powerpc/platforms/cell/iommu.c 	window->table.it_index = iommu->nid;
iommu             489 arch/powerpc/platforms/cell/iommu.c 	iommu_init_table(&window->table, iommu->nid, 0, 0);
iommu             497 arch/powerpc/platforms/cell/iommu.c 	list_add(&window->list, &iommu->windows);
iommu             509 arch/powerpc/platforms/cell/iommu.c 	page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0);
iommu             511 arch/powerpc/platforms/cell/iommu.c 	iommu->pad_page = page_address(page);
iommu             512 arch/powerpc/platforms/cell/iommu.c 	clear_page(iommu->pad_page);
iommu             516 arch/powerpc/platforms/cell/iommu.c 		       (unsigned long)iommu->pad_page, DMA_TO_DEVICE, 0);
iommu             542 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu;
iommu             548 arch/powerpc/platforms/cell/iommu.c 	iommu = cell_iommu_for_node(dev_to_node(dev));
iommu             549 arch/powerpc/platforms/cell/iommu.c 	if (iommu == NULL || list_empty(&iommu->windows)) {
iommu             554 arch/powerpc/platforms/cell/iommu.c 	window = list_entry(iommu->windows.next, struct iommu_window, list);
iommu             619 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu;
iommu             648 arch/powerpc/platforms/cell/iommu.c 	iommu = &iommus[i];
iommu             649 arch/powerpc/platforms/cell/iommu.c 	iommu->stab = NULL;
iommu             650 arch/powerpc/platforms/cell/iommu.c 	iommu->nid = nid;
iommu             651 arch/powerpc/platforms/cell/iommu.c 	snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i);
iommu             652 arch/powerpc/platforms/cell/iommu.c 	INIT_LIST_HEAD(&iommu->windows);
iommu             654 arch/powerpc/platforms/cell/iommu.c 	return iommu;
iommu             660 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu;
iommu             663 arch/powerpc/platforms/cell/iommu.c 	iommu = cell_iommu_alloc(np);
iommu             664 arch/powerpc/platforms/cell/iommu.c 	if (!iommu)
iommu             674 arch/powerpc/platforms/cell/iommu.c 	cell_iommu_setup_hardware(iommu, base, size);
iommu             677 arch/powerpc/platforms/cell/iommu.c 	cell_iommu_setup_window(iommu, np, base, size,
iommu             875 arch/powerpc/platforms/cell/iommu.c static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu,
iommu             881 arch/powerpc/platforms/cell/iommu.c 	ptab = cell_iommu_alloc_ptab(iommu, fbase, fsize, dbase, dsize, 24);
iommu             914 arch/powerpc/platforms/cell/iommu.c 	struct cbe_iommu *iommu;
iommu             988 arch/powerpc/platforms/cell/iommu.c 		iommu = cell_iommu_alloc(np);
iommu             989 arch/powerpc/platforms/cell/iommu.c 		BUG_ON(!iommu);
iommu             999 arch/powerpc/platforms/cell/iommu.c 			"fixed window 0x%lx-0x%lx\n", iommu->nid, dbase,
iommu            1002 arch/powerpc/platforms/cell/iommu.c 		cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize);
iommu            1003 arch/powerpc/platforms/cell/iommu.c 		iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0,
iommu            1005 arch/powerpc/platforms/cell/iommu.c 		cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize,
iommu            1007 arch/powerpc/platforms/cell/iommu.c 		cell_iommu_enable_hardware(iommu);
iommu            1008 arch/powerpc/platforms/cell/iommu.c 		cell_iommu_setup_window(iommu, np, dbase, dsize, 0);
iommu              14 arch/sparc/include/asm/device.h 	void			*iommu;
iommu              35 arch/sparc/include/asm/iommu-common.h extern void iommu_tbl_pool_init(struct iommu_map_table *iommu,
iommu              43 arch/sparc/include/asm/iommu-common.h 					   struct iommu_map_table *iommu,
iommu              49 arch/sparc/include/asm/iommu-common.h extern void iommu_tbl_range_free(struct iommu_map_table *iommu,
iommu              89 arch/sparc/include/asm/iommu_64.h int iommu_table_init(struct iommu *iommu, int tsbsize,
iommu              19 arch/sparc/kernel/iommu-common.c static inline bool need_flush(struct iommu_map_table *iommu)
iommu              21 arch/sparc/kernel/iommu-common.c 	return ((iommu->flags & IOMMU_NEED_FLUSH) != 0);
iommu              24 arch/sparc/kernel/iommu-common.c static inline void set_flush(struct iommu_map_table *iommu)
iommu              26 arch/sparc/kernel/iommu-common.c 	iommu->flags |= IOMMU_NEED_FLUSH;
iommu              29 arch/sparc/kernel/iommu-common.c static inline void clear_flush(struct iommu_map_table *iommu)
iommu              31 arch/sparc/kernel/iommu-common.c 	iommu->flags &= ~IOMMU_NEED_FLUSH;
iommu              52 arch/sparc/kernel/iommu-common.c void iommu_tbl_pool_init(struct iommu_map_table *iommu,
iommu              60 arch/sparc/kernel/iommu-common.c 	struct iommu_pool *p = &(iommu->large_pool);
iommu              64 arch/sparc/kernel/iommu-common.c 		iommu->nr_pools = IOMMU_NR_POOLS;
iommu              66 arch/sparc/kernel/iommu-common.c 		iommu->nr_pools = npools;
iommu              69 arch/sparc/kernel/iommu-common.c 	iommu->table_shift = table_shift;
iommu              70 arch/sparc/kernel/iommu-common.c 	iommu->lazy_flush = lazy_flush;
iommu              73 arch/sparc/kernel/iommu-common.c 		iommu->flags |= IOMMU_NO_SPAN_BOUND;
iommu              75 arch/sparc/kernel/iommu-common.c 		iommu->flags |= IOMMU_HAS_LARGE_POOL;
iommu              78 arch/sparc/kernel/iommu-common.c 		iommu->poolsize = num_entries/iommu->nr_pools;
iommu              80 arch/sparc/kernel/iommu-common.c 		iommu->poolsize = (num_entries * 3 / 4)/iommu->nr_pools;
iommu              81 arch/sparc/kernel/iommu-common.c 	for (i = 0; i < iommu->nr_pools; i++) {
iommu              82 arch/sparc/kernel/iommu-common.c 		spin_lock_init(&(iommu->pools[i].lock));
iommu              83 arch/sparc/kernel/iommu-common.c 		iommu->pools[i].start = start;
iommu              84 arch/sparc/kernel/iommu-common.c 		iommu->pools[i].hint = start;
iommu              85 arch/sparc/kernel/iommu-common.c 		start += iommu->poolsize; /* start for next pool */
iommu              86 arch/sparc/kernel/iommu-common.c 		iommu->pools[i].end = start - 1;
iommu              98 arch/sparc/kernel/iommu-common.c 				struct iommu_map_table *iommu,
iommu             109 arch/sparc/kernel/iommu-common.c 	unsigned int npools = iommu->nr_pools;
iommu             111 arch/sparc/kernel/iommu-common.c 	bool large_pool = ((iommu->flags & IOMMU_HAS_LARGE_POOL) != 0);
iommu             126 arch/sparc/kernel/iommu-common.c 		pool = &(iommu->large_pool);
iommu             131 arch/sparc/kernel/iommu-common.c 		pool = &(iommu->pools[pool_nr]);
iommu             152 arch/sparc/kernel/iommu-common.c 	shift = iommu->table_map_base >> iommu->table_shift;
iommu             161 arch/sparc/kernel/iommu-common.c 			pool = &(iommu->pools[0]);
iommu             171 arch/sparc/kernel/iommu-common.c 				      1 << iommu->table_shift);
iommu             173 arch/sparc/kernel/iommu-common.c 		boundary_size = ALIGN(1ULL << 32, 1 << iommu->table_shift);
iommu             175 arch/sparc/kernel/iommu-common.c 	boundary_size = boundary_size >> iommu->table_shift;
iommu             181 arch/sparc/kernel/iommu-common.c 	if ((iommu->flags & IOMMU_NO_SPAN_BOUND) != 0) {
iommu             183 arch/sparc/kernel/iommu-common.c 		boundary_size = iommu->poolsize * iommu->nr_pools;
iommu             185 arch/sparc/kernel/iommu-common.c 	n = iommu_area_alloc(iommu->map, limit, start, npages, shift,
iommu             191 arch/sparc/kernel/iommu-common.c 			set_flush(iommu);
iommu             194 arch/sparc/kernel/iommu-common.c 		} else if (!largealloc && pass <= iommu->nr_pools) {
iommu             196 arch/sparc/kernel/iommu-common.c 			pool_nr = (pool_nr + 1) & (iommu->nr_pools - 1);
iommu             197 arch/sparc/kernel/iommu-common.c 			pool = &(iommu->pools[pool_nr]);
iommu             200 arch/sparc/kernel/iommu-common.c 			set_flush(iommu);
iommu             209 arch/sparc/kernel/iommu-common.c 	if (iommu->lazy_flush &&
iommu             210 arch/sparc/kernel/iommu-common.c 	    (n < pool->hint || need_flush(iommu))) {
iommu             211 arch/sparc/kernel/iommu-common.c 		clear_flush(iommu);
iommu             212 arch/sparc/kernel/iommu-common.c 		iommu->lazy_flush(iommu);
iommu             250 arch/sparc/kernel/iommu-common.c void iommu_tbl_range_free(struct iommu_map_table *iommu, u64 dma_addr,
iommu             255 arch/sparc/kernel/iommu-common.c 	unsigned long shift = iommu->table_shift;
iommu             258 arch/sparc/kernel/iommu-common.c 		entry = (dma_addr - iommu->table_map_base) >> shift;
iommu             259 arch/sparc/kernel/iommu-common.c 	pool = get_pool(iommu, entry);
iommu             262 arch/sparc/kernel/iommu-common.c 	bitmap_clear(iommu->map, entry, npages);
iommu              52 arch/sparc/kernel/iommu.c 	struct iommu *iommu = container_of(iommu_map_table, struct iommu, tbl);
iommu              53 arch/sparc/kernel/iommu.c 	if (iommu->iommu_flushinv) {
iommu              54 arch/sparc/kernel/iommu.c 		iommu_write(iommu->iommu_flushinv, ~(u64)0);
iommu              59 arch/sparc/kernel/iommu.c 		tag = iommu->iommu_tags;
iommu              66 arch/sparc/kernel/iommu.c 		(void) iommu_read(iommu->write_complete_reg);
iommu              80 arch/sparc/kernel/iommu.c #define IOPTE_IS_DUMMY(iommu, iopte)	\
iommu              81 arch/sparc/kernel/iommu.c 	((iopte_val(*iopte) & IOPTE_PAGE) == (iommu)->dummy_page_pa)
iommu              83 arch/sparc/kernel/iommu.c static inline void iopte_make_dummy(struct iommu *iommu, iopte_t *iopte)
iommu              88 arch/sparc/kernel/iommu.c 	val |= iommu->dummy_page_pa;
iommu              93 arch/sparc/kernel/iommu.c int iommu_table_init(struct iommu *iommu, int tsbsize,
iommu             103 arch/sparc/kernel/iommu.c 	spin_lock_init(&iommu->lock);
iommu             104 arch/sparc/kernel/iommu.c 	iommu->ctx_lowest_free = 1;
iommu             105 arch/sparc/kernel/iommu.c 	iommu->tbl.table_map_base = dma_offset;
iommu             106 arch/sparc/kernel/iommu.c 	iommu->dma_addr_mask = dma_addr_mask;
iommu             111 arch/sparc/kernel/iommu.c 	iommu->tbl.map = kzalloc_node(sz, GFP_KERNEL, numa_node);
iommu             112 arch/sparc/kernel/iommu.c 	if (!iommu->tbl.map)
iommu             115 arch/sparc/kernel/iommu.c 	iommu_tbl_pool_init(&iommu->tbl, num_tsb_entries, IO_PAGE_SHIFT,
iommu             127 arch/sparc/kernel/iommu.c 	iommu->dummy_page = (unsigned long) page_address(page);
iommu             128 arch/sparc/kernel/iommu.c 	memset((void *)iommu->dummy_page, 0, PAGE_SIZE);
iommu             129 arch/sparc/kernel/iommu.c 	iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page);
iommu             138 arch/sparc/kernel/iommu.c 	iommu->page_table = (iopte_t *)page_address(page);
iommu             141 arch/sparc/kernel/iommu.c 		iopte_make_dummy(iommu, &iommu->page_table[i]);
iommu             146 arch/sparc/kernel/iommu.c 	free_page(iommu->dummy_page);
iommu             147 arch/sparc/kernel/iommu.c 	iommu->dummy_page = 0UL;
iommu             150 arch/sparc/kernel/iommu.c 	kfree(iommu->tbl.map);
iommu             151 arch/sparc/kernel/iommu.c 	iommu->tbl.map = NULL;
iommu             157 arch/sparc/kernel/iommu.c 				    struct iommu *iommu,
iommu             162 arch/sparc/kernel/iommu.c 	entry = iommu_tbl_range_alloc(dev, &iommu->tbl, npages, NULL,
iommu             167 arch/sparc/kernel/iommu.c 	return iommu->page_table + entry;
iommu             170 arch/sparc/kernel/iommu.c static int iommu_alloc_ctx(struct iommu *iommu)
iommu             172 arch/sparc/kernel/iommu.c 	int lowest = iommu->ctx_lowest_free;
iommu             173 arch/sparc/kernel/iommu.c 	int n = find_next_zero_bit(iommu->ctx_bitmap, IOMMU_NUM_CTXS, lowest);
iommu             176 arch/sparc/kernel/iommu.c 		n = find_next_zero_bit(iommu->ctx_bitmap, lowest, 1);
iommu             183 arch/sparc/kernel/iommu.c 		__set_bit(n, iommu->ctx_bitmap);
iommu             188 arch/sparc/kernel/iommu.c static inline void iommu_free_ctx(struct iommu *iommu, int ctx)
iommu             191 arch/sparc/kernel/iommu.c 		__clear_bit(ctx, iommu->ctx_bitmap);
iommu             192 arch/sparc/kernel/iommu.c 		if (ctx < iommu->ctx_lowest_free)
iommu             193 arch/sparc/kernel/iommu.c 			iommu->ctx_lowest_free = ctx;
iommu             202 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             221 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             223 arch/sparc/kernel/iommu.c 	iopte = alloc_npages(dev, iommu, size >> IO_PAGE_SHIFT);
iommu             230 arch/sparc/kernel/iommu.c 	*dma_addrp = (iommu->tbl.table_map_base +
iommu             231 arch/sparc/kernel/iommu.c 		      ((iopte - iommu->page_table) << IO_PAGE_SHIFT));
iommu             250 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             254 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             256 arch/sparc/kernel/iommu.c 	iommu_tbl_range_free(&iommu->tbl, dvma, npages, IOMMU_ERROR_CODE);
iommu             268 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             276 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             286 arch/sparc/kernel/iommu.c 	base = alloc_npages(dev, iommu, npages);
iommu             287 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             289 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush)
iommu             290 arch/sparc/kernel/iommu.c 		ctx = iommu_alloc_ctx(iommu);
iommu             291 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             296 arch/sparc/kernel/iommu.c 	bus_addr = (iommu->tbl.table_map_base +
iommu             297 arch/sparc/kernel/iommu.c 		    ((base - iommu->page_table) << IO_PAGE_SHIFT));
iommu             313 arch/sparc/kernel/iommu.c 	iommu_free_ctx(iommu, ctx);
iommu             320 arch/sparc/kernel/iommu.c static void strbuf_flush(struct strbuf *strbuf, struct iommu *iommu,
iommu             327 arch/sparc/kernel/iommu.c 	    iommu->iommu_ctxflush) {
iommu             370 arch/sparc/kernel/iommu.c 	(void) iommu_read(iommu->write_complete_reg);
iommu             390 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             401 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             406 arch/sparc/kernel/iommu.c 	base = iommu->page_table +
iommu             407 arch/sparc/kernel/iommu.c 		((bus_addr - iommu->tbl.table_map_base) >> IO_PAGE_SHIFT);
iommu             410 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             414 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush)
iommu             419 arch/sparc/kernel/iommu.c 		strbuf_flush(strbuf, iommu, bus_addr, ctx,
iommu             424 arch/sparc/kernel/iommu.c 		iopte_make_dummy(iommu, base + i);
iommu             426 arch/sparc/kernel/iommu.c 	iommu_free_ctx(iommu, ctx);
iommu             427 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             429 arch/sparc/kernel/iommu.c 	iommu_tbl_range_free(&iommu->tbl, bus_addr, npages, IOMMU_ERROR_CODE);
iommu             443 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             448 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             450 arch/sparc/kernel/iommu.c 	if (nelems == 0 || !iommu)
iommu             453 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             456 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush)
iommu             457 arch/sparc/kernel/iommu.c 		ctx = iommu_alloc_ctx(iommu);
iommu             477 arch/sparc/kernel/iommu.c 	base_shift = iommu->tbl.table_map_base >> IO_PAGE_SHIFT;
iommu             491 arch/sparc/kernel/iommu.c 		entry = iommu_tbl_range_alloc(dev, &iommu->tbl, npages,
iommu             498 arch/sparc/kernel/iommu.c 				       " npages %lx\n", iommu, paddr, npages);
iommu             502 arch/sparc/kernel/iommu.c 		base = iommu->page_table + entry;
iommu             505 arch/sparc/kernel/iommu.c 		dma_addr = iommu->tbl.table_map_base +
iommu             546 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             566 arch/sparc/kernel/iommu.c 			entry = (vaddr - iommu->tbl.table_map_base)
iommu             568 arch/sparc/kernel/iommu.c 			base = iommu->page_table + entry;
iommu             571 arch/sparc/kernel/iommu.c 				iopte_make_dummy(iommu, base + j);
iommu             573 arch/sparc/kernel/iommu.c 			iommu_tbl_range_free(&iommu->tbl, vaddr, npages,
iommu             582 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             590 arch/sparc/kernel/iommu.c static unsigned long fetch_sg_ctx(struct iommu *iommu, struct scatterlist *sg)
iommu             594 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush) {
iommu             597 arch/sparc/kernel/iommu.c 		struct iommu_map_table *tbl = &iommu->tbl;
iommu             600 arch/sparc/kernel/iommu.c 		base = iommu->page_table +
iommu             615 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             619 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             622 arch/sparc/kernel/iommu.c 	ctx = fetch_sg_ctx(iommu, sglist);
iommu             624 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             638 arch/sparc/kernel/iommu.c 		entry = ((dma_handle - iommu->tbl.table_map_base)
iommu             640 arch/sparc/kernel/iommu.c 		base = iommu->page_table + entry;
iommu             644 arch/sparc/kernel/iommu.c 			strbuf_flush(strbuf, iommu, dma_handle, ctx,
iommu             648 arch/sparc/kernel/iommu.c 			iopte_make_dummy(iommu, base + i);
iommu             650 arch/sparc/kernel/iommu.c 		iommu_tbl_range_free(&iommu->tbl, dma_handle, npages,
iommu             655 arch/sparc/kernel/iommu.c 	iommu_free_ctx(iommu, ctx);
iommu             657 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             664 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             668 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             674 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             682 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush &&
iommu             685 arch/sparc/kernel/iommu.c 		struct iommu_map_table *tbl = &iommu->tbl;
iommu             687 arch/sparc/kernel/iommu.c 		iopte = iommu->page_table +
iommu             693 arch/sparc/kernel/iommu.c 	strbuf_flush(strbuf, iommu, bus_addr, ctx, npages, direction);
iommu             695 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             702 arch/sparc/kernel/iommu.c 	struct iommu *iommu;
iommu             708 arch/sparc/kernel/iommu.c 	iommu = dev->archdata.iommu;
iommu             714 arch/sparc/kernel/iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             718 arch/sparc/kernel/iommu.c 	if (iommu->iommu_ctxflush &&
iommu             721 arch/sparc/kernel/iommu.c 		struct iommu_map_table *tbl = &iommu->tbl;
iommu             723 arch/sparc/kernel/iommu.c 		iopte = iommu->page_table + ((sglist[0].dma_address -
iommu             739 arch/sparc/kernel/iommu.c 	strbuf_flush(strbuf, iommu, bus_addr, ctx, npages, direction);
iommu             741 arch/sparc/kernel/iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             746 arch/sparc/kernel/iommu.c 	struct iommu *iommu = dev->archdata.iommu;
iommu             751 arch/sparc/kernel/iommu.c 	if (device_mask < iommu->dma_addr_mask)
iommu             146 arch/sparc/kernel/ldc.c 	struct ldc_iommu		iommu;
iommu            1022 arch/sparc/kernel/ldc.c static void ldc_demap(struct ldc_iommu *iommu, unsigned long id, u64 cookie,
iommu            1029 arch/sparc/kernel/ldc.c 	base = iommu->page_table + entry;
iommu            1044 arch/sparc/kernel/ldc.c 	struct ldc_iommu *ldc_iommu = &lp->iommu;
iommu            1045 arch/sparc/kernel/ldc.c 	struct iommu_map_table *iommu = &ldc_iommu->iommu_map_table;
iommu            1056 arch/sparc/kernel/ldc.c 	iommu->map = kzalloc(sz, GFP_KERNEL);
iommu            1057 arch/sparc/kernel/ldc.c 	if (!iommu->map) {
iommu            1061 arch/sparc/kernel/ldc.c 	iommu_tbl_pool_init(iommu, num_tsb_entries, PAGE_SHIFT,
iommu            1094 arch/sparc/kernel/ldc.c 	kfree(iommu->map);
iommu            1095 arch/sparc/kernel/ldc.c 	iommu->map = NULL;
iommu            1102 arch/sparc/kernel/ldc.c 	struct ldc_iommu *ldc_iommu = &lp->iommu;
iommu            1103 arch/sparc/kernel/ldc.c 	struct iommu_map_table *iommu = &ldc_iommu->iommu_map_table;
iommu            1108 arch/sparc/kernel/ldc.c 	num_tsb_entries = iommu->poolsize * iommu->nr_pools;
iommu            1115 arch/sparc/kernel/ldc.c 	kfree(iommu->map);
iommu            1116 arch/sparc/kernel/ldc.c 	iommu->map = NULL;
iommu            2017 arch/sparc/kernel/ldc.c static struct ldc_mtable_entry *alloc_npages(struct ldc_iommu *iommu,
iommu            2022 arch/sparc/kernel/ldc.c 	entry = iommu_tbl_range_alloc(NULL, &iommu->iommu_map_table,
iommu            2027 arch/sparc/kernel/ldc.c 	return iommu->page_table + entry;
iommu            2155 arch/sparc/kernel/ldc.c 	struct ldc_iommu *iommu;
iommu            2170 arch/sparc/kernel/ldc.c 	iommu = &lp->iommu;
iommu            2172 arch/sparc/kernel/ldc.c 	base = alloc_npages(iommu, npages);
iommu            2177 arch/sparc/kernel/ldc.c 	state.page_table = iommu->page_table;
iommu            2181 arch/sparc/kernel/ldc.c 	state.pte_idx = (base - iommu->page_table);
iommu            2201 arch/sparc/kernel/ldc.c 	struct ldc_iommu *iommu;
iommu            2212 arch/sparc/kernel/ldc.c 	iommu = &lp->iommu;
iommu            2214 arch/sparc/kernel/ldc.c 	base = alloc_npages(iommu, npages);
iommu            2219 arch/sparc/kernel/ldc.c 	state.page_table = iommu->page_table;
iommu            2223 arch/sparc/kernel/ldc.c 	state.pte_idx = (base - iommu->page_table);
iommu            2233 arch/sparc/kernel/ldc.c static void free_npages(unsigned long id, struct ldc_iommu *iommu,
iommu            2240 arch/sparc/kernel/ldc.c 	entry = ldc_cookie_to_index(cookie, iommu);
iommu            2241 arch/sparc/kernel/ldc.c 	ldc_demap(iommu, id, cookie, entry, npages);
iommu            2242 arch/sparc/kernel/ldc.c 	iommu_tbl_range_free(&iommu->iommu_map_table, cookie, npages, entry);
iommu            2248 arch/sparc/kernel/ldc.c 	struct ldc_iommu *iommu = &lp->iommu;
iommu            2252 arch/sparc/kernel/ldc.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu            2257 arch/sparc/kernel/ldc.c 		free_npages(lp->id, iommu, addr, size);
iommu            2259 arch/sparc/kernel/ldc.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu              66 arch/sparc/kernel/of_device_common.c 		op->dev.archdata.iommu = bus_sd->iommu;
iommu             251 arch/sparc/kernel/pci.c static void pci_init_dev_archdata(struct dev_archdata *sd, void *iommu,
iommu             256 arch/sparc/kernel/pci.c 	sd->iommu = iommu;
iommu             278 arch/sparc/kernel/pci.c 	pci_init_dev_archdata(sd, pbm->iommu, &pbm->stc, pbm, op,
iommu             281 arch/sparc/kernel/pci.c 	sd->iommu = pbm->iommu;
iommu             964 arch/sparc/kernel/pci.c 	struct iommu *iommu = dev->archdata.iommu;
iommu             981 arch/sparc/kernel/pci.c 	if (iommu->dma_addr_mask & 0x80000000)
iommu            1026 arch/sparc/kernel/pci.c 		pci_init_dev_archdata(&dev->dev.archdata, psd->iommu,
iommu              32 arch/sparc/kernel/pci_fire.c 	struct iommu *iommu = pbm->iommu;
iommu              44 arch/sparc/kernel/pci_fire.c 	iommu->iommu_control  = pbm->pbm_regs + FIRE_IOMMU_CONTROL;
iommu              45 arch/sparc/kernel/pci_fire.c 	iommu->iommu_tsbbase  = pbm->pbm_regs + FIRE_IOMMU_TSBBASE;
iommu              46 arch/sparc/kernel/pci_fire.c 	iommu->iommu_flush    = pbm->pbm_regs + FIRE_IOMMU_FLUSH;
iommu              47 arch/sparc/kernel/pci_fire.c 	iommu->iommu_flushinv = pbm->pbm_regs + FIRE_IOMMU_FLUSHINV;
iommu              52 arch/sparc/kernel/pci_fire.c 	iommu->write_complete_reg = pbm->controller_regs + 0x410000UL;
iommu              57 arch/sparc/kernel/pci_fire.c 	upa_writeq(~(u64)0, iommu->iommu_flushinv);
iommu              59 arch/sparc/kernel/pci_fire.c 	err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask,
iommu              64 arch/sparc/kernel/pci_fire.c 	upa_writeq(__pa(iommu->page_table) | 0x7UL, iommu->iommu_tsbbase);
iommu              66 arch/sparc/kernel/pci_fire.c 	control = upa_readq(iommu->iommu_control);
iommu              71 arch/sparc/kernel/pci_fire.c 	upa_writeq(control, iommu->iommu_control);
iommu             463 arch/sparc/kernel/pci_fire.c 	struct iommu *iommu;
iommu             476 arch/sparc/kernel/pci_fire.c 	iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL);
iommu             477 arch/sparc/kernel/pci_fire.c 	if (!iommu) {
iommu             482 arch/sparc/kernel/pci_fire.c 	pbm->iommu = iommu;
iommu             493 arch/sparc/kernel/pci_fire.c 	kfree(pbm->iommu);
iommu             151 arch/sparc/kernel/pci_impl.h 	struct iommu			*iommu;
iommu             513 arch/sparc/kernel/pci_psycho.c 	struct iommu *iommu;
iommu             528 arch/sparc/kernel/pci_psycho.c 		iommu = pbm->sibling->iommu;
iommu             530 arch/sparc/kernel/pci_psycho.c 		iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL);
iommu             531 arch/sparc/kernel/pci_psycho.c 		if (!iommu) {
iommu             537 arch/sparc/kernel/pci_psycho.c 	pbm->iommu = iommu;
iommu             588 arch/sparc/kernel/pci_psycho.c 		kfree(pbm->iommu);
iommu             464 arch/sparc/kernel/pci_sabre.c 	struct iommu *iommu;
iommu             490 arch/sparc/kernel/pci_sabre.c 	iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
iommu             491 arch/sparc/kernel/pci_sabre.c 	if (!iommu) {
iommu             496 arch/sparc/kernel/pci_sabre.c 	pbm->iommu = iommu;
iommu             579 arch/sparc/kernel/pci_sabre.c 	kfree(pbm->iommu);
iommu             239 arch/sparc/kernel/pci_schizo.c 	struct iommu *iommu = pbm->iommu;
iommu             246 arch/sparc/kernel/pci_schizo.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             247 arch/sparc/kernel/pci_schizo.c 	control = upa_readq(iommu->iommu_control);
iommu             254 arch/sparc/kernel/pci_schizo.c 		upa_writeq(control, iommu->iommu_control);
iommu             285 arch/sparc/kernel/pci_schizo.c 			   iommu->iommu_control);
iommu             301 arch/sparc/kernel/pci_schizo.c 		upa_writeq(control, iommu->iommu_control);
iommu             343 arch/sparc/kernel/pci_schizo.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            1137 arch/sparc/kernel/pci_schizo.c 	struct iommu *iommu = pbm->iommu;
iommu            1170 arch/sparc/kernel/pci_schizo.c 	iommu->iommu_control  = pbm->pbm_regs + SCHIZO_IOMMU_CONTROL;
iommu            1171 arch/sparc/kernel/pci_schizo.c 	iommu->iommu_tsbbase  = pbm->pbm_regs + SCHIZO_IOMMU_TSBBASE;
iommu            1172 arch/sparc/kernel/pci_schizo.c 	iommu->iommu_flush    = pbm->pbm_regs + SCHIZO_IOMMU_FLUSH;
iommu            1173 arch/sparc/kernel/pci_schizo.c 	iommu->iommu_tags     = iommu->iommu_flush + (0xa580UL - 0x0210UL);
iommu            1174 arch/sparc/kernel/pci_schizo.c 	iommu->iommu_ctxflush = pbm->pbm_regs + SCHIZO_IOMMU_CTXFLUSH;
iommu            1179 arch/sparc/kernel/pci_schizo.c 	iommu->write_complete_reg = pbm->controller_regs + 0x10000UL;
iommu            1184 arch/sparc/kernel/pci_schizo.c 	control = upa_readq(iommu->iommu_control);
iommu            1186 arch/sparc/kernel/pci_schizo.c 	upa_writeq(control, iommu->iommu_control);
iommu            1198 arch/sparc/kernel/pci_schizo.c 	err = iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask,
iommu            1205 arch/sparc/kernel/pci_schizo.c 	upa_writeq(__pa(iommu->page_table), iommu->iommu_tsbbase);
iommu            1207 arch/sparc/kernel/pci_schizo.c 	control = upa_readq(iommu->iommu_control);
iommu            1219 arch/sparc/kernel/pci_schizo.c 	upa_writeq(control, iommu->iommu_control);
iommu            1419 arch/sparc/kernel/pci_schizo.c 	struct iommu *iommu;
iommu            1434 arch/sparc/kernel/pci_schizo.c 	iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL);
iommu            1435 arch/sparc/kernel/pci_schizo.c 	if (!iommu) {
iommu            1440 arch/sparc/kernel/pci_schizo.c 	pbm->iommu = iommu;
iommu            1453 arch/sparc/kernel/pci_schizo.c 	kfree(pbm->iommu);
iommu              76 arch/sparc/kernel/pci_sun4v.c static inline bool iommu_use_atu(struct iommu *iommu, u64 mask)
iommu              78 arch/sparc/kernel/pci_sun4v.c 	return iommu->atu && mask > DMA_BIT_MASK(32);
iommu             100 arch/sparc/kernel/pci_sun4v.c 		if (!iommu_use_atu(pbm->iommu, mask)) {
iommu             117 arch/sparc/kernel/pci_sun4v.c 			iotsb_num = pbm->iommu->atu->iotsb->iotsb_num;
iommu             186 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             211 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             213 arch/sparc/kernel/pci_sun4v.c 	if (!iommu_use_atu(iommu, mask))
iommu             214 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->tbl;
iommu             216 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->atu->tbl;
iommu             325 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             333 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             335 arch/sparc/kernel/pci_sun4v.c 	atu = iommu->atu;
iommu             338 arch/sparc/kernel/pci_sun4v.c 	if (!iommu_use_atu(iommu, dvma)) {
iommu             339 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->tbl;
iommu             358 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             368 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             369 arch/sparc/kernel/pci_sun4v.c 	atu = iommu->atu;
iommu             379 arch/sparc/kernel/pci_sun4v.c 	if (!iommu_use_atu(iommu, mask))
iommu             380 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->tbl;
iommu             432 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             446 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             448 arch/sparc/kernel/pci_sun4v.c 	atu = iommu->atu;
iommu             457 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->tbl;
iommu             477 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             486 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             487 arch/sparc/kernel/pci_sun4v.c 	if (nelems == 0 || !iommu)
iommu             489 arch/sparc/kernel/pci_sun4v.c 	atu = iommu->atu;
iommu             515 arch/sparc/kernel/pci_sun4v.c 	if (!iommu_use_atu(iommu, mask))
iommu             516 arch/sparc/kernel/pci_sun4v.c 		tbl = &iommu->tbl;
iommu             631 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu             639 arch/sparc/kernel/pci_sun4v.c 	iommu = dev->archdata.iommu;
iommu             641 arch/sparc/kernel/pci_sun4v.c 	atu = iommu->atu;
iommu             660 arch/sparc/kernel/pci_sun4v.c 			tbl = &iommu->tbl;
iommu             678 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu = dev->archdata.iommu;
iommu             682 arch/sparc/kernel/pci_sun4v.c 	if (device_mask < iommu->dma_addr_mask)
iommu             711 arch/sparc/kernel/pci_sun4v.c 					    struct iommu_map_table *iommu)
iommu             718 arch/sparc/kernel/pci_sun4v.c 	for (pool_nr = 0; pool_nr < iommu->nr_pools; pool_nr++) {
iommu             719 arch/sparc/kernel/pci_sun4v.c 		pool = &(iommu->pools[pool_nr]);
iommu             733 arch/sparc/kernel/pci_sun4v.c 					__set_bit(i, iommu->map);
iommu             743 arch/sparc/kernel/pci_sun4v.c 	struct atu *atu = pbm->iommu->atu;
iommu             804 arch/sparc/kernel/pci_sun4v.c 	struct atu *atu = pbm->iommu->atu;
iommu             870 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu = pbm->iommu;
iommu             891 arch/sparc/kernel/pci_sun4v.c 	spin_lock_init(&iommu->lock);
iommu             892 arch/sparc/kernel/pci_sun4v.c 	iommu->ctx_lowest_free = 1;
iommu             893 arch/sparc/kernel/pci_sun4v.c 	iommu->tbl.table_map_base = dma_offset;
iommu             894 arch/sparc/kernel/pci_sun4v.c 	iommu->dma_addr_mask = dma_mask;
iommu             899 arch/sparc/kernel/pci_sun4v.c 	iommu->tbl.map = kzalloc(sz, GFP_KERNEL);
iommu             900 arch/sparc/kernel/pci_sun4v.c 	if (!iommu->tbl.map) {
iommu             904 arch/sparc/kernel/pci_sun4v.c 	iommu_tbl_pool_init(&iommu->tbl, num_tsb_entries, IO_PAGE_SHIFT,
iommu             908 arch/sparc/kernel/pci_sun4v.c 	sz = probe_existing_entries(pbm, &iommu->tbl);
iommu            1207 arch/sparc/kernel/pci_sun4v.c 	if (pbm->iommu->atu) {
iommu            1210 arch/sparc/kernel/pci_sun4v.c 			kfree(pbm->iommu->atu);
iommu            1211 arch/sparc/kernel/pci_sun4v.c 			pbm->iommu->atu = NULL;
iommu            1228 arch/sparc/kernel/pci_sun4v.c 	struct iommu *iommu;
iommu            1295 arch/sparc/kernel/pci_sun4v.c 	iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL);
iommu            1296 arch/sparc/kernel/pci_sun4v.c 	if (!iommu) {
iommu            1301 arch/sparc/kernel/pci_sun4v.c 	pbm->iommu = iommu;
iommu            1302 arch/sparc/kernel/pci_sun4v.c 	iommu->atu = NULL;
iommu            1308 arch/sparc/kernel/pci_sun4v.c 			iommu->atu = atu;
iommu            1320 arch/sparc/kernel/pci_sun4v.c 	kfree(iommu->atu);
iommu            1321 arch/sparc/kernel/pci_sun4v.c 	kfree(pbm->iommu);
iommu             208 arch/sparc/kernel/psycho_common.c 	struct iommu *iommu = pbm->iommu;
iommu             211 arch/sparc/kernel/psycho_common.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             212 arch/sparc/kernel/psycho_common.c 	control = upa_readq(iommu->iommu_control);
iommu             217 arch/sparc/kernel/psycho_common.c 		upa_writeq(control, iommu->iommu_control);
iommu             247 arch/sparc/kernel/psycho_common.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             404 arch/sparc/kernel/psycho_common.c 	struct iommu *iommu = pbm->iommu;
iommu             408 arch/sparc/kernel/psycho_common.c 	iommu->iommu_control  = pbm->controller_regs + PSYCHO_IOMMU_CONTROL;
iommu             409 arch/sparc/kernel/psycho_common.c 	iommu->iommu_tsbbase  = pbm->controller_regs + PSYCHO_IOMMU_TSBBASE;
iommu             410 arch/sparc/kernel/psycho_common.c 	iommu->iommu_flush    = pbm->controller_regs + PSYCHO_IOMMU_FLUSH;
iommu             411 arch/sparc/kernel/psycho_common.c 	iommu->iommu_tags     = pbm->controller_regs + PSYCHO_IOMMU_TAG;
iommu             412 arch/sparc/kernel/psycho_common.c 	iommu->write_complete_reg = (pbm->controller_regs +
iommu             415 arch/sparc/kernel/psycho_common.c 	iommu->iommu_ctxflush = 0;
iommu             417 arch/sparc/kernel/psycho_common.c 	control = upa_readq(iommu->iommu_control);
iommu             419 arch/sparc/kernel/psycho_common.c 	upa_writeq(control, iommu->iommu_control);
iommu             424 arch/sparc/kernel/psycho_common.c 	err = iommu_table_init(iommu, tsbsize * 1024 * 8,
iommu             429 arch/sparc/kernel/psycho_common.c 	upa_writeq(__pa(iommu->page_table), iommu->iommu_tsbbase);
iommu             431 arch/sparc/kernel/psycho_common.c 	control = upa_readq(iommu->iommu_control);
iommu             446 arch/sparc/kernel/psycho_common.c 	upa_writeq(control, iommu->iommu_control);
iommu              62 arch/sparc/kernel/sbus.c 	struct iommu *iommu = dev->archdata.iommu;
iommu              77 arch/sparc/kernel/sbus.c 	cfg_reg = iommu->write_complete_reg;
iommu             212 arch/sparc/kernel/sbus.c 	struct iommu *iommu = op->dev.archdata.iommu;
iommu             213 arch/sparc/kernel/sbus.c 	unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
iommu             274 arch/sparc/kernel/sbus.c 	struct iommu *iommu = op->dev.archdata.iommu;
iommu             275 arch/sparc/kernel/sbus.c 	unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
iommu             348 arch/sparc/kernel/sbus.c 	struct iommu *iommu = op->dev.archdata.iommu;
iommu             349 arch/sparc/kernel/sbus.c 	unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
iommu             427 arch/sparc/kernel/sbus.c 	struct iommu *iommu = op->dev.archdata.iommu;
iommu             432 arch/sparc/kernel/sbus.c 	reg_base = iommu->write_complete_reg - 0x2000UL;
iommu             496 arch/sparc/kernel/sbus.c 	struct iommu *iommu = op->dev.archdata.iommu;
iommu             497 arch/sparc/kernel/sbus.c 	unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
iommu             534 arch/sparc/kernel/sbus.c 	control = upa_readq(iommu->write_complete_reg);
iommu             536 arch/sparc/kernel/sbus.c 	upa_writeq(control, iommu->write_complete_reg);
iommu             544 arch/sparc/kernel/sbus.c 	struct iommu *iommu;
iommu             558 arch/sparc/kernel/sbus.c 	iommu = kzalloc(sizeof(*iommu), GFP_ATOMIC);
iommu             560 arch/sparc/kernel/sbus.c 	if (!iommu || !strbuf)
iommu             563 arch/sparc/kernel/sbus.c 	op->dev.archdata.iommu = iommu;
iommu             568 arch/sparc/kernel/sbus.c 	iommu->iommu_control = reg_base + IOMMU_CONTROL;
iommu             569 arch/sparc/kernel/sbus.c 	iommu->iommu_tsbbase = reg_base + IOMMU_TSBBASE;
iommu             570 arch/sparc/kernel/sbus.c 	iommu->iommu_flush = reg_base + IOMMU_FLUSH;
iommu             571 arch/sparc/kernel/sbus.c 	iommu->iommu_tags = iommu->iommu_control +
iommu             591 arch/sparc/kernel/sbus.c 	iommu->write_complete_reg = regs + 0x2000UL;
iommu             598 arch/sparc/kernel/sbus.c 	if (iommu_table_init(iommu, IO_TSB_SIZE, MAP_BASE, 0xffffffff, -1))
iommu             601 arch/sparc/kernel/sbus.c 	control = upa_readq(iommu->iommu_control);
iommu             606 arch/sparc/kernel/sbus.c 	upa_writeq(control, iommu->iommu_control);
iommu             614 arch/sparc/kernel/sbus.c 		dram = iommu->iommu_control + (IOMMU_DRAMDIAG - IOMMU_CONTROL);
iommu             615 arch/sparc/kernel/sbus.c 		tag = iommu->iommu_control + (IOMMU_TAGDIAG - IOMMU_CONTROL);
iommu             622 arch/sparc/kernel/sbus.c 	upa_readq(iommu->write_complete_reg);
iommu             625 arch/sparc/kernel/sbus.c 	upa_writeq(__pa(iommu->page_table), iommu->iommu_tsbbase);
iommu             647 arch/sparc/kernel/sbus.c 	control = upa_readq(iommu->write_complete_reg);
iommu             649 arch/sparc/kernel/sbus.c 	upa_writeq(control, iommu->write_complete_reg);
iommu             659 arch/sparc/kernel/sbus.c 	kfree(iommu);
iommu              66 arch/sparc/mm/io-unit.c 	op->dev.archdata.iommu = iounit;
iommu             148 arch/sparc/mm/io-unit.c 	struct iounit_struct *iounit = dev->archdata.iommu;
iommu             164 arch/sparc/mm/io-unit.c 	struct iounit_struct *iounit = dev->archdata.iommu;
iommu             182 arch/sparc/mm/io-unit.c 	struct iounit_struct *iounit = dev->archdata.iommu;
iommu             197 arch/sparc/mm/io-unit.c 	struct iounit_struct *iounit = dev->archdata.iommu;
iommu             217 arch/sparc/mm/io-unit.c 	struct iounit_struct *iounit = dev->archdata.iommu;
iommu              59 arch/sparc/mm/iommu.c 	struct iommu_struct *iommu;
iommu              66 arch/sparc/mm/iommu.c 	iommu = kmalloc(sizeof(struct iommu_struct), GFP_KERNEL);
iommu              67 arch/sparc/mm/iommu.c 	if (!iommu) {
iommu              72 arch/sparc/mm/iommu.c 	iommu->regs = of_ioremap(&op->resource[0], 0, PAGE_SIZE * 3,
iommu              74 arch/sparc/mm/iommu.c 	if (!iommu->regs) {
iommu              79 arch/sparc/mm/iommu.c 	control = sbus_readl(&iommu->regs->control);
iommu              84 arch/sparc/mm/iommu.c 	sbus_writel(control, &iommu->regs->control);
iommu              86 arch/sparc/mm/iommu.c 	iommu_invalidate(iommu->regs);
iommu              87 arch/sparc/mm/iommu.c 	iommu->start = IOMMU_START;
iommu              88 arch/sparc/mm/iommu.c 	iommu->end = 0xffffffff;
iommu             101 arch/sparc/mm/iommu.c 	iommu->page_table = (iopte_t *)tmp;
iommu             104 arch/sparc/mm/iommu.c 	memset(iommu->page_table, 0, IOMMU_NPTES*sizeof(iopte_t));
iommu             108 arch/sparc/mm/iommu.c 	base = __pa((unsigned long)iommu->page_table) >> 4;
iommu             109 arch/sparc/mm/iommu.c 	sbus_writel(base, &iommu->regs->base);
iommu             110 arch/sparc/mm/iommu.c 	iommu_invalidate(iommu->regs);
iommu             118 arch/sparc/mm/iommu.c 	bit_map_init(&iommu->usemap, bitmap, IOMMU_NPTES);
iommu             123 arch/sparc/mm/iommu.c 		iommu->usemap.num_colors = vac_cache_size >> PAGE_SHIFT;
iommu             125 arch/sparc/mm/iommu.c 		iommu->usemap.num_colors = 1;
iommu             128 arch/sparc/mm/iommu.c 	       impl, vers, iommu->page_table,
iommu             131 arch/sparc/mm/iommu.c 	op->dev.archdata.iommu = iommu;
iommu             181 arch/sparc/mm/iommu.c 	struct iommu_struct *iommu = dev->archdata.iommu;
iommu             208 arch/sparc/mm/iommu.c 	ioptex = bit_map_string_get(&iommu->usemap, npages, pfn);
iommu             211 arch/sparc/mm/iommu.c 	busa0 = iommu->start + (ioptex << PAGE_SHIFT);
iommu             212 arch/sparc/mm/iommu.c 	iopte0 = &iommu->page_table[ioptex];
iommu             218 arch/sparc/mm/iommu.c 		iommu_invalidate_page(iommu->regs, busa);
iommu             277 arch/sparc/mm/iommu.c 	struct iommu_struct *iommu = dev->archdata.iommu;
iommu             281 arch/sparc/mm/iommu.c 	unsigned int ioptex = (busa - iommu->start) >> PAGE_SHIFT;
iommu             284 arch/sparc/mm/iommu.c 	BUG_ON(busa < iommu->start);
iommu             286 arch/sparc/mm/iommu.c 		iopte_val(iommu->page_table[ioptex + i]) = 0;
iommu             287 arch/sparc/mm/iommu.c 		iommu_invalidate_page(iommu->regs, busa);
iommu             290 arch/sparc/mm/iommu.c 	bit_map_clear(&iommu->usemap, ioptex, npages);
iommu             310 arch/sparc/mm/iommu.c 	struct iommu_struct *iommu = dev->archdata.iommu;
iommu             312 arch/sparc/mm/iommu.c 	iopte_t *iopte = iommu->page_table;
iommu             334 arch/sparc/mm/iommu.c 	ioptex = bit_map_string_get(&iommu->usemap, len >> PAGE_SHIFT,
iommu             381 arch/sparc/mm/iommu.c 	iommu_invalidate(iommu->regs);
iommu             383 arch/sparc/mm/iommu.c 	*dma_handle = iommu->start + (ioptex << PAGE_SHIFT);
iommu             394 arch/sparc/mm/iommu.c 	struct iommu_struct *iommu = dev->archdata.iommu;
iommu             395 arch/sparc/mm/iommu.c 	iopte_t *iopte = iommu->page_table;
iommu             397 arch/sparc/mm/iommu.c 	int ioptex = (busa - iommu->start) >> PAGE_SHIFT;
iommu             413 arch/sparc/mm/iommu.c 	iommu_invalidate(iommu->regs);
iommu             414 arch/sparc/mm/iommu.c 	bit_map_clear(&iommu->usemap, ioptex, len >> PAGE_SHIFT);
iommu              39 arch/x86/events/amd/iommu.c 	struct amd_iommu *iommu;
iommu             235 arch/x86/events/amd/iommu.c 	return (container_of(ev->pmu, struct perf_amd_iommu, pmu))->iommu;
iommu             240 arch/x86/events/amd/iommu.c 	struct amd_iommu *iommu = perf_event_2_iommu(ev);
iommu             247 arch/x86/events/amd/iommu.c 	amd_iommu_pc_set_reg(iommu, bank, cntr, IOMMU_PC_COUNTER_SRC_REG, &reg);
iommu             253 arch/x86/events/amd/iommu.c 	amd_iommu_pc_set_reg(iommu, bank, cntr, IOMMU_PC_DEVID_MATCH_REG, &reg);
iommu             259 arch/x86/events/amd/iommu.c 	amd_iommu_pc_set_reg(iommu, bank, cntr, IOMMU_PC_PASID_MATCH_REG, &reg);
iommu             265 arch/x86/events/amd/iommu.c 	amd_iommu_pc_set_reg(iommu, bank, cntr, IOMMU_PC_DOMID_MATCH_REG, &reg);
iommu             270 arch/x86/events/amd/iommu.c 	struct amd_iommu *iommu = perf_event_2_iommu(event);
iommu             274 arch/x86/events/amd/iommu.c 	amd_iommu_pc_set_reg(iommu, hwc->iommu_bank, hwc->iommu_cntr,
iommu             290 arch/x86/events/amd/iommu.c 		struct amd_iommu *iommu = perf_event_2_iommu(event);
iommu             292 arch/x86/events/amd/iommu.c 		amd_iommu_pc_set_reg(iommu, hwc->iommu_bank, hwc->iommu_cntr,
iommu             305 arch/x86/events/amd/iommu.c 	struct amd_iommu *iommu = perf_event_2_iommu(event);
iommu             307 arch/x86/events/amd/iommu.c 	if (amd_iommu_pc_get_reg(iommu, hwc->iommu_bank, hwc->iommu_cntr,
iommu             424 arch/x86/events/amd/iommu.c 	perf_iommu->iommu        = get_amd_iommu(idx);
iommu             428 arch/x86/events/amd/iommu.c 	if (!perf_iommu->iommu ||
iommu              35 arch/x86/events/amd/iommu.h extern int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
iommu              38 arch/x86/events/amd/iommu.h extern int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
iommu               7 arch/x86/include/asm/device.h 	void *iommu; /* hook for IOMMU specific extension */
iommu              24 arch/x86/include/asm/pci.h 	void		*iommu;		/* IOMMU private data */
iommu              11 arch/x86/include/asm/pci_64.h 	return sd->iommu;
iommu              17 arch/x86/include/asm/pci_64.h 	sd->iommu = val;
iommu             160 arch/x86/include/asm/x86_init.h 	struct x86_init_iommu		iommu;
iommu             422 arch/x86/kernel/aperture_64.c 			x86_init.iommu.iommu_init = gart_iommu_init;
iommu            1450 arch/x86/kernel/pci-calgary_64.c 		x86_init.iommu.iommu_init = calgary_iommu_init;
iommu             132 arch/x86/kernel/pci-dma.c 	x86_init.iommu.iommu_init();
iommu              80 arch/x86/kernel/x86_init.c 	.iommu = {
iommu             751 drivers/acpi/arm64/iort.c 	struct acpi_iort_node *iommu;
iommu             754 drivers/acpi/arm64/iort.c 	iommu = iort_get_iort_node(fwspec->iommu_fwnode);
iommu             756 drivers/acpi/arm64/iort.c 	if (iommu && (iommu->type == ACPI_IORT_NODE_SMMU_V3)) {
iommu             759 drivers/acpi/arm64/iort.c 		smmu = (struct acpi_iort_smmu_v3 *)iommu->node_data;
iommu             761 drivers/acpi/arm64/iort.c 			return iommu;
iommu            1464 drivers/acpi/scan.c 	const struct iommu_ops *iommu;
iommu            1474 drivers/acpi/scan.c 	iommu = iort_iommu_configure(dev);
iommu            1475 drivers/acpi/scan.c 	if (IS_ERR(iommu) && PTR_ERR(iommu) == -EPROBE_DEFER)
iommu            1479 drivers/acpi/scan.c 				iommu, attr == DEV_DMA_COHERENT);
iommu             250 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 	mdev->iommu = iommu_get_domain_for_dev(mdev->dev);
iommu             251 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 	if (!mdev->iommu)
iommu             254 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 	if (mdev->iommu && mdev->funcs->connect_iommu) {
iommu             257 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 			mdev->iommu = NULL;
iommu             291 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 	if (mdev->iommu && mdev->funcs->disconnect_iommu)
iommu             293 drivers/gpu/drm/arm/display/komeda/komeda_dev.c 	mdev->iommu = NULL;
iommu             190 drivers/gpu/drm/arm/display/komeda/komeda_dev.h 	struct iommu_domain *iommu;
iommu             196 drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c 	kfb->is_va = mdev->iommu ? true : false;
iommu             698 drivers/gpu/drm/i915/i915_gpu_error.c 	err_printf(m, "IOMMU enabled?: %d\n", error->iommu);
iommu            1629 drivers/gpu/drm/i915/i915_gpu_error.c 	error->iommu = -1;
iommu            1631 drivers/gpu/drm/i915/i915_gpu_error.c 	error->iommu = intel_iommu_gfx_mapped;
iommu              46 drivers/gpu/drm/i915/i915_gpu_error.h 	int iommu;
iommu             149 drivers/gpu/drm/i915/selftests/mock_gem_device.c 	pdev->dev.archdata.iommu = (void *)-1;
iommu             517 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 	if (config->iommu) {
iommu             519 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 				config->iommu, "mdp4");
iommu             577 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 	config.iommu = iommu_domain_alloc(&platform_bus_type);
iommu             578 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 	if (config.iommu) {
iommu             579 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 		config.iommu->geometry.aperture_start = 0x1000;
iommu             580 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 		config.iommu->geometry.aperture_end = 0xffffffff;
iommu              47 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h 	struct iommu_domain *iommu;
iommu             845 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 	config.iommu = iommu_domain_alloc(&platform_bus_type);
iommu             846 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 	if (config.iommu) {
iommu             847 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 		config.iommu->geometry.aperture_start = 0x1000;
iommu             848 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 		config.iommu->geometry.aperture_end = 0xffffffff;
iommu             102 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h 	struct iommu_domain *iommu;
iommu             726 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c 	if (config->platform.iommu) {
iommu             732 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c 				config->platform.iommu, "mdp5");
iommu             819 drivers/gpu/drm/msm/msm_gpu.c 		struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type);
iommu             820 drivers/gpu/drm/msm/msm_gpu.c 		if (!iommu)
iommu             823 drivers/gpu/drm/msm/msm_gpu.c 		iommu->geometry.aperture_start = va_start;
iommu             824 drivers/gpu/drm/msm/msm_gpu.c 		iommu->geometry.aperture_end = va_end;
iommu             828 drivers/gpu/drm/msm/msm_gpu.c 		aspace = msm_gem_address_space_create(&pdev->dev, iommu, "gpu");
iommu             830 drivers/gpu/drm/msm/msm_gpu.c 			iommu_domain_free(iommu);
iommu              19 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = arg;
iommu              20 drivers/gpu/drm/msm/msm_iommu.c 	if (iommu->base.handler)
iommu              21 drivers/gpu/drm/msm/msm_iommu.c 		return iommu->base.handler(iommu->base.arg, iova, flags);
iommu              29 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = to_msm_iommu(mmu);
iommu              31 drivers/gpu/drm/msm/msm_iommu.c 	return iommu_attach_device(iommu->domain, mmu->dev);
iommu              37 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = to_msm_iommu(mmu);
iommu              39 drivers/gpu/drm/msm/msm_iommu.c 	iommu_detach_device(iommu->domain, mmu->dev);
iommu              45 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = to_msm_iommu(mmu);
iommu              48 drivers/gpu/drm/msm/msm_iommu.c 	ret = iommu_map_sg(iommu->domain, iova, sgt->sgl, sgt->nents, prot);
iommu              56 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = to_msm_iommu(mmu);
iommu              58 drivers/gpu/drm/msm/msm_iommu.c 	iommu_unmap(iommu->domain, iova, len);
iommu              65 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu = to_msm_iommu(mmu);
iommu              66 drivers/gpu/drm/msm/msm_iommu.c 	iommu_domain_free(iommu->domain);
iommu              67 drivers/gpu/drm/msm/msm_iommu.c 	kfree(iommu);
iommu              80 drivers/gpu/drm/msm/msm_iommu.c 	struct msm_iommu *iommu;
iommu              82 drivers/gpu/drm/msm/msm_iommu.c 	iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
iommu              83 drivers/gpu/drm/msm/msm_iommu.c 	if (!iommu)
iommu              86 drivers/gpu/drm/msm/msm_iommu.c 	iommu->domain = domain;
iommu              87 drivers/gpu/drm/msm/msm_iommu.c 	msm_mmu_init(&iommu->base, dev, &funcs);
iommu              88 drivers/gpu/drm/msm/msm_iommu.c 	iommu_set_fault_handler(domain, msm_fault_handler, iommu);
iommu              90 drivers/gpu/drm/msm/msm_iommu.c 	return &iommu->base;
iommu              29 drivers/gpu/drm/nouveau/include/nvkm/core/tegra.h 	} iommu;
iommu             124 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	mutex_init(&tdev->iommu.mutex);
iommu             127 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		tdev->iommu.domain = iommu_domain_alloc(&platform_bus_type);
iommu             128 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		if (!tdev->iommu.domain)
iommu             136 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		pgsize_bitmap = tdev->iommu.domain->ops->pgsize_bitmap;
iommu             138 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 			tdev->iommu.pgshift = PAGE_SHIFT;
iommu             140 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 			tdev->iommu.pgshift = fls(pgsize_bitmap & ~PAGE_MASK);
iommu             141 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 			if (tdev->iommu.pgshift == 0) {
iommu             145 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 			tdev->iommu.pgshift -= 1;
iommu             148 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		ret = iommu_attach_device(tdev->iommu.domain, dev);
iommu             152 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		ret = nvkm_mm_init(&tdev->iommu.mm, 0, 0,
iommu             154 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 				   tdev->iommu.pgshift, 1);
iommu             162 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	iommu_detach_device(tdev->iommu.domain, dev);
iommu             165 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	iommu_domain_free(tdev->iommu.domain);
iommu             168 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	tdev->iommu.domain = NULL;
iommu             169 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	tdev->iommu.pgshift = 0;
iommu             178 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 	if (tdev->iommu.domain) {
iommu             179 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		nvkm_mm_fini(&tdev->iommu.mm);
iommu             180 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		iommu_detach_device(tdev->iommu.domain, tdev->device.dev);
iommu             181 drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c 		iommu_domain_free(tdev->iommu.domain);
iommu             588 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c 	if (tdev->iommu.domain) {
iommu             589 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c 		imem->mm_mutex = &tdev->iommu.mutex;
iommu             590 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c 		imem->mm = &tdev->iommu.mm;
iommu             591 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c 		imem->domain = tdev->iommu.domain;
iommu             592 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c 		imem->iommu_pgshift = tdev->iommu.pgshift;
iommu             366 drivers/gpu/drm/rockchip/rockchip_drm_drv.c 		struct device_node *iommu;
iommu             377 drivers/gpu/drm/rockchip/rockchip_drm_drv.c 		iommu = of_parse_phandle(port->parent, "iommus", 0);
iommu             378 drivers/gpu/drm/rockchip/rockchip_drm_drv.c 		if (!iommu || !of_device_is_available(iommu->parent)) {
iommu             391 drivers/gpu/drm/rockchip/rockchip_drm_drv.c 		of_node_put(iommu);
iommu             286 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu             295 drivers/iommu/amd_iommu.c 		if (translation_pre_enabled(iommu))
iommu             304 drivers/iommu/amd_iommu.c 	return dev->archdata.iommu;
iommu             402 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu             405 drivers/iommu/amd_iommu.c 	if (dev->archdata.iommu)
iommu             412 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu             428 drivers/iommu/amd_iommu.c 		struct amd_iommu *iommu;
iommu             430 drivers/iommu/amd_iommu.c 		iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu             431 drivers/iommu/amd_iommu.c 		dev_data->iommu_v2 = iommu->is_iommu_v2;
iommu             434 drivers/iommu/amd_iommu.c 	dev->archdata.iommu = dev_data;
iommu             436 drivers/iommu/amd_iommu.c 	iommu_device_link(&iommu->iommu, dev);
iommu             458 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu             465 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu             474 drivers/iommu/amd_iommu.c 	iommu_device_unlink(&iommu->iommu, dev);
iommu             558 drivers/iommu/amd_iommu.c static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
iommu             560 drivers/iommu/amd_iommu.c 	struct device *dev = iommu->iommu.dev;
iommu             641 drivers/iommu/amd_iommu.c static void iommu_poll_events(struct amd_iommu *iommu)
iommu             645 drivers/iommu/amd_iommu.c 	head = readl(iommu->mmio_base + MMIO_EVT_HEAD_OFFSET);
iommu             646 drivers/iommu/amd_iommu.c 	tail = readl(iommu->mmio_base + MMIO_EVT_TAIL_OFFSET);
iommu             649 drivers/iommu/amd_iommu.c 		iommu_print_event(iommu, iommu->evt_buf + head);
iommu             653 drivers/iommu/amd_iommu.c 	writel(head, iommu->mmio_base + MMIO_EVT_HEAD_OFFSET);
iommu             656 drivers/iommu/amd_iommu.c static void iommu_handle_ppr_entry(struct amd_iommu *iommu, u64 *raw)
iommu             674 drivers/iommu/amd_iommu.c static void iommu_poll_ppr_log(struct amd_iommu *iommu)
iommu             678 drivers/iommu/amd_iommu.c 	if (iommu->ppr_log == NULL)
iommu             681 drivers/iommu/amd_iommu.c 	head = readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
iommu             682 drivers/iommu/amd_iommu.c 	tail = readl(iommu->mmio_base + MMIO_PPR_TAIL_OFFSET);
iommu             689 drivers/iommu/amd_iommu.c 		raw = (u64 *)(iommu->ppr_log + head);
iommu             714 drivers/iommu/amd_iommu.c 		writel(head, iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
iommu             717 drivers/iommu/amd_iommu.c 		iommu_handle_ppr_entry(iommu, entry);
iommu             720 drivers/iommu/amd_iommu.c 		head = readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
iommu             721 drivers/iommu/amd_iommu.c 		tail = readl(iommu->mmio_base + MMIO_PPR_TAIL_OFFSET);
iommu             736 drivers/iommu/amd_iommu.c static void iommu_poll_ga_log(struct amd_iommu *iommu)
iommu             740 drivers/iommu/amd_iommu.c 	if (iommu->ga_log == NULL)
iommu             743 drivers/iommu/amd_iommu.c 	head = readl(iommu->mmio_base + MMIO_GA_HEAD_OFFSET);
iommu             744 drivers/iommu/amd_iommu.c 	tail = readl(iommu->mmio_base + MMIO_GA_TAIL_OFFSET);
iommu             750 drivers/iommu/amd_iommu.c 		raw = (u64 *)(iommu->ga_log + head);
iommu             758 drivers/iommu/amd_iommu.c 		writel(head, iommu->mmio_base + MMIO_GA_HEAD_OFFSET);
iommu             787 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = (struct amd_iommu *) data;
iommu             788 drivers/iommu/amd_iommu.c 	u32 status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET);
iommu             793 drivers/iommu/amd_iommu.c 			iommu->mmio_base + MMIO_STATUS_OFFSET);
iommu             797 drivers/iommu/amd_iommu.c 			iommu_poll_events(iommu);
iommu             802 drivers/iommu/amd_iommu.c 			iommu_poll_ppr_log(iommu);
iommu             808 drivers/iommu/amd_iommu.c 			iommu_poll_ga_log(iommu);
iommu             825 drivers/iommu/amd_iommu.c 		status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET);
iommu             858 drivers/iommu/amd_iommu.c static void copy_cmd_to_buffer(struct amd_iommu *iommu,
iommu             863 drivers/iommu/amd_iommu.c 	target = iommu->cmd_buf + iommu->cmd_buf_tail;
iommu             865 drivers/iommu/amd_iommu.c 	iommu->cmd_buf_tail += sizeof(*cmd);
iommu             866 drivers/iommu/amd_iommu.c 	iommu->cmd_buf_tail %= CMD_BUFFER_SIZE;
iommu             872 drivers/iommu/amd_iommu.c 	writel(iommu->cmd_buf_tail, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
iommu            1028 drivers/iommu/amd_iommu.c static int __iommu_queue_command_sync(struct amd_iommu *iommu,
iommu            1035 drivers/iommu/amd_iommu.c 	next_tail = (iommu->cmd_buf_tail + sizeof(*cmd)) % CMD_BUFFER_SIZE;
iommu            1037 drivers/iommu/amd_iommu.c 	left      = (iommu->cmd_buf_head - next_tail) % CMD_BUFFER_SIZE;
iommu            1051 drivers/iommu/amd_iommu.c 		iommu->cmd_buf_head = readl(iommu->mmio_base +
iommu            1057 drivers/iommu/amd_iommu.c 	copy_cmd_to_buffer(iommu, cmd);
iommu            1060 drivers/iommu/amd_iommu.c 	iommu->need_sync = sync;
iommu            1065 drivers/iommu/amd_iommu.c static int iommu_queue_command_sync(struct amd_iommu *iommu,
iommu            1072 drivers/iommu/amd_iommu.c 	raw_spin_lock_irqsave(&iommu->lock, flags);
iommu            1073 drivers/iommu/amd_iommu.c 	ret = __iommu_queue_command_sync(iommu, cmd, sync);
iommu            1074 drivers/iommu/amd_iommu.c 	raw_spin_unlock_irqrestore(&iommu->lock, flags);
iommu            1079 drivers/iommu/amd_iommu.c static int iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd)
iommu            1081 drivers/iommu/amd_iommu.c 	return iommu_queue_command_sync(iommu, cmd, true);
iommu            1088 drivers/iommu/amd_iommu.c static int iommu_completion_wait(struct amd_iommu *iommu)
iommu            1094 drivers/iommu/amd_iommu.c 	if (!iommu->need_sync)
iommu            1098 drivers/iommu/amd_iommu.c 	build_completion_wait(&cmd, (u64)&iommu->cmd_sem);
iommu            1100 drivers/iommu/amd_iommu.c 	raw_spin_lock_irqsave(&iommu->lock, flags);
iommu            1102 drivers/iommu/amd_iommu.c 	iommu->cmd_sem = 0;
iommu            1104 drivers/iommu/amd_iommu.c 	ret = __iommu_queue_command_sync(iommu, &cmd, false);
iommu            1108 drivers/iommu/amd_iommu.c 	ret = wait_on_sem(&iommu->cmd_sem);
iommu            1111 drivers/iommu/amd_iommu.c 	raw_spin_unlock_irqrestore(&iommu->lock, flags);
iommu            1116 drivers/iommu/amd_iommu.c static int iommu_flush_dte(struct amd_iommu *iommu, u16 devid)
iommu            1122 drivers/iommu/amd_iommu.c 	return iommu_queue_command(iommu, &cmd);
iommu            1125 drivers/iommu/amd_iommu.c static void amd_iommu_flush_dte_all(struct amd_iommu *iommu)
iommu            1130 drivers/iommu/amd_iommu.c 		iommu_flush_dte(iommu, devid);
iommu            1132 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            1139 drivers/iommu/amd_iommu.c static void amd_iommu_flush_tlb_all(struct amd_iommu *iommu)
iommu            1147 drivers/iommu/amd_iommu.c 		iommu_queue_command(iommu, &cmd);
iommu            1150 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            1153 drivers/iommu/amd_iommu.c static void amd_iommu_flush_tlb_domid(struct amd_iommu *iommu, u32 dom_id)
iommu            1159 drivers/iommu/amd_iommu.c 	iommu_queue_command(iommu, &cmd);
iommu            1161 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            1164 drivers/iommu/amd_iommu.c static void amd_iommu_flush_all(struct amd_iommu *iommu)
iommu            1170 drivers/iommu/amd_iommu.c 	iommu_queue_command(iommu, &cmd);
iommu            1171 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            1174 drivers/iommu/amd_iommu.c static void iommu_flush_irt(struct amd_iommu *iommu, u16 devid)
iommu            1180 drivers/iommu/amd_iommu.c 	iommu_queue_command(iommu, &cmd);
iommu            1183 drivers/iommu/amd_iommu.c static void amd_iommu_flush_irt_all(struct amd_iommu *iommu)
iommu            1188 drivers/iommu/amd_iommu.c 		iommu_flush_irt(iommu, devid);
iommu            1190 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            1193 drivers/iommu/amd_iommu.c void iommu_flush_all_caches(struct amd_iommu *iommu)
iommu            1195 drivers/iommu/amd_iommu.c 	if (iommu_feature(iommu, FEATURE_IA)) {
iommu            1196 drivers/iommu/amd_iommu.c 		amd_iommu_flush_all(iommu);
iommu            1198 drivers/iommu/amd_iommu.c 		amd_iommu_flush_dte_all(iommu);
iommu            1199 drivers/iommu/amd_iommu.c 		amd_iommu_flush_irt_all(iommu);
iommu            1200 drivers/iommu/amd_iommu.c 		amd_iommu_flush_tlb_all(iommu);
iommu            1210 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            1215 drivers/iommu/amd_iommu.c 	iommu    = amd_iommu_rlookup_table[dev_data->devid];
iommu            1219 drivers/iommu/amd_iommu.c 	return iommu_queue_command(iommu, &cmd);
iommu            1224 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = data;
iommu            1226 drivers/iommu/amd_iommu.c 	return iommu_flush_dte(iommu, alias);
iommu            1234 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            1238 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu            1242 drivers/iommu/amd_iommu.c 					     device_flush_dte_alias, iommu);
iommu            1244 drivers/iommu/amd_iommu.c 		ret = iommu_flush_dte(iommu, dev_data->devid);
iommu            1250 drivers/iommu/amd_iommu.c 		ret = iommu_flush_dte(iommu, alias);
iommu            1972 drivers/iommu/amd_iommu.c 		struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu            1974 drivers/iommu/amd_iommu.c 		if (iommu_feature(iommu, FEATURE_EPHSUP))
iommu            2017 drivers/iommu/amd_iommu.c 		struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu            2019 drivers/iommu/amd_iommu.c 		amd_iommu_flush_tlb_domid(iommu, old_domid);
iommu            2035 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            2038 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu            2046 drivers/iommu/amd_iommu.c 	domain->dev_iommu[iommu->index] += 1;
iommu            2059 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            2061 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu            2079 drivers/iommu/amd_iommu.c 	domain->dev_iommu[iommu->index] -= 1;
iommu            2266 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            2276 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            2304 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            2311 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            2321 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            2324 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3035 drivers/iommu/amd_iommu.c 	struct iommu_dev_data *dev_data = dev->archdata.iommu;
iommu            3036 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3049 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            3050 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            3059 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3067 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3073 drivers/iommu/amd_iommu.c 	dev_data = dev->archdata.iommu;
iommu            3075 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu            3076 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            3093 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3253 drivers/iommu/amd_iommu.c 	struct iommu_dev_data *dev_data = dev->archdata.iommu;
iommu            3414 drivers/iommu/amd_iommu.c 		struct amd_iommu *iommu;
iommu            3425 drivers/iommu/amd_iommu.c 		iommu = amd_iommu_rlookup_table[dev_data->devid];
iommu            3430 drivers/iommu/amd_iommu.c 		ret = iommu_queue_command(iommu, &cmd);
iommu            3584 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3588 drivers/iommu/amd_iommu.c 	iommu    = amd_iommu_rlookup_table[dev_data->devid];
iommu            3593 drivers/iommu/amd_iommu.c 	return iommu_queue_command(iommu, &cmd);
iommu            3734 drivers/iommu/amd_iommu.c static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid,
iommu            3739 drivers/iommu/amd_iommu.c 	iommu_flush_dte(iommu, devid);
iommu            3759 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3765 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            3766 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            3776 drivers/iommu/amd_iommu.c 		set_remap_table_entry(iommu, devid, table);
iommu            3794 drivers/iommu/amd_iommu.c 		set_remap_table_entry(iommu, devid, table);
iommu            3805 drivers/iommu/amd_iommu.c 		set_remap_table_entry(iommu, devid, table);
iommu            3808 drivers/iommu/amd_iommu.c 		set_remap_table_entry(iommu, alias, table);
iommu            3811 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3829 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu            3831 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            3846 drivers/iommu/amd_iommu.c 		if (!iommu->irte_ops->is_allocated(table, index)) {
iommu            3856 drivers/iommu/amd_iommu.c 				iommu->irte_ops->set_allocated(table, index - c + 1);
iommu            3877 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3881 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            3882 drivers/iommu/amd_iommu.c 	if (iommu == NULL)
iommu            3902 drivers/iommu/amd_iommu.c 	iommu_flush_irt(iommu, devid);
iommu            3903 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3911 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3914 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            3915 drivers/iommu/amd_iommu.c 	if (iommu == NULL)
iommu            3926 drivers/iommu/amd_iommu.c 	iommu_flush_irt(iommu, devid);
iommu            3927 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            3935 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            3938 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            3939 drivers/iommu/amd_iommu.c 	if (iommu == NULL)
iommu            3947 drivers/iommu/amd_iommu.c 	iommu->irte_ops->clear_allocated(table, index);
iommu            3950 drivers/iommu/amd_iommu.c 	iommu_flush_irt(iommu, devid);
iommu            3951 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu            4112 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            4120 drivers/iommu/amd_iommu.c 		iommu = amd_iommu_rlookup_table[devid];
iommu            4121 drivers/iommu/amd_iommu.c 		if (iommu)
iommu            4122 drivers/iommu/amd_iommu.c 			return iommu->ir_domain;
iommu            4130 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            4143 drivers/iommu/amd_iommu.c 		iommu = amd_iommu_rlookup_table[devid];
iommu            4144 drivers/iommu/amd_iommu.c 		if (iommu)
iommu            4145 drivers/iommu/amd_iommu.c 			return iommu->msi_domain;
iommu            4172 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu            4174 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            4179 drivers/iommu/amd_iommu.c 	iommu->irte_ops->prepare(data->entry, apic->irq_delivery_mode,
iommu            4265 drivers/iommu/amd_iommu.c 		struct amd_iommu *iommu;
iommu            4275 drivers/iommu/amd_iommu.c 				iommu = amd_iommu_rlookup_table[devid];
iommu            4277 drivers/iommu/amd_iommu.c 					iommu->irte_ops->set_allocated(table, i);
iommu            4365 drivers/iommu/amd_iommu.c static void amd_ir_update_irte(struct irq_data *irqd, struct amd_iommu *iommu,
iommu            4375 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid];
iommu            4378 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            4381 drivers/iommu/amd_iommu.c 	iommu->irte_ops->activate(data->entry, irte_info->devid,
iommu            4383 drivers/iommu/amd_iommu.c 	amd_ir_update_irte(irq_data, iommu, data, irte_info, cfg);
iommu            4392 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid];
iommu            4394 drivers/iommu/amd_iommu.c 	if (iommu)
iommu            4395 drivers/iommu/amd_iommu.c 		iommu->irte_ops->deactivate(data->entry, irte_info->devid,
iommu            4458 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            4485 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[irte_info->devid];
iommu            4486 drivers/iommu/amd_iommu.c 	if (iommu == NULL)
iommu            4512 drivers/iommu/amd_iommu.c static void amd_ir_update_irte(struct irq_data *irqd, struct amd_iommu *iommu,
iommu            4522 drivers/iommu/amd_iommu.c 	iommu->irte_ops->set_affinity(ir_data->entry, irte_info->devid,
iommu            4534 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid];
iommu            4537 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            4544 drivers/iommu/amd_iommu.c 	amd_ir_update_irte(data, iommu, ir_data, irte_info, cfg);
iommu            4570 drivers/iommu/amd_iommu.c int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
iommu            4574 drivers/iommu/amd_iommu.c 	fn = irq_domain_alloc_named_id_fwnode("AMD-IR", iommu->index);
iommu            4577 drivers/iommu/amd_iommu.c 	iommu->ir_domain = irq_domain_create_tree(fn, &amd_ir_domain_ops, iommu);
iommu            4579 drivers/iommu/amd_iommu.c 	if (!iommu->ir_domain)
iommu            4582 drivers/iommu/amd_iommu.c 	iommu->ir_domain->parent = arch_get_ir_parent_domain();
iommu            4583 drivers/iommu/amd_iommu.c 	iommu->msi_domain = arch_create_remap_msi_irq_domain(iommu->ir_domain,
iommu            4585 drivers/iommu/amd_iommu.c 							     iommu->index);
iommu            4592 drivers/iommu/amd_iommu.c 	struct amd_iommu *iommu;
iommu            4603 drivers/iommu/amd_iommu.c 	iommu = amd_iommu_rlookup_table[devid];
iommu            4604 drivers/iommu/amd_iommu.c 	if (!iommu)
iommu            4626 drivers/iommu/amd_iommu.c 	iommu_flush_irt(iommu, devid);
iommu            4627 drivers/iommu/amd_iommu.c 	iommu_completion_wait(iommu);
iommu              21 drivers/iommu/amd_iommu_debugfs.c void amd_iommu_debugfs_setup(struct amd_iommu *iommu)
iommu              31 drivers/iommu/amd_iommu_debugfs.c 	snprintf(name, MAX_NAME_LEN, "iommu%02d", iommu->index);
iommu              32 drivers/iommu/amd_iommu_debugfs.c 	iommu->debugfs = debugfs_create_dir(name, amd_iommu_debugfs);
iommu             259 drivers/iommu/amd_iommu_init.c bool translation_pre_enabled(struct amd_iommu *iommu)
iommu             261 drivers/iommu/amd_iommu_init.c 	return (iommu->flags & AMD_IOMMU_FLAG_TRANS_PRE_ENABLED);
iommu             265 drivers/iommu/amd_iommu_init.c static void clear_translation_pre_enabled(struct amd_iommu *iommu)
iommu             267 drivers/iommu/amd_iommu_init.c 	iommu->flags &= ~AMD_IOMMU_FLAG_TRANS_PRE_ENABLED;
iommu             270 drivers/iommu/amd_iommu_init.c static void init_translation_status(struct amd_iommu *iommu)
iommu             274 drivers/iommu/amd_iommu_init.c 	ctrl = readq(iommu->mmio_base + MMIO_CONTROL_OFFSET);
iommu             276 drivers/iommu/amd_iommu_init.c 		iommu->flags |= AMD_IOMMU_FLAG_TRANS_PRE_ENABLED;
iommu             300 drivers/iommu/amd_iommu_init.c static u32 iommu_read_l1(struct amd_iommu *iommu, u16 l1, u8 address)
iommu             304 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf8, (address | l1 << 16));
iommu             305 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, 0xfc, &val);
iommu             309 drivers/iommu/amd_iommu_init.c static void iommu_write_l1(struct amd_iommu *iommu, u16 l1, u8 address, u32 val)
iommu             311 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf8, (address | l1 << 16 | 1 << 31));
iommu             312 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xfc, val);
iommu             313 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf8, (address | l1 << 16));
iommu             316 drivers/iommu/amd_iommu_init.c static u32 iommu_read_l2(struct amd_iommu *iommu, u8 address)
iommu             320 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf0, address);
iommu             321 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, 0xf4, &val);
iommu             325 drivers/iommu/amd_iommu_init.c static void iommu_write_l2(struct amd_iommu *iommu, u8 address, u32 val)
iommu             327 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf0, (address | 1 << 8));
iommu             328 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf4, val);
iommu             344 drivers/iommu/amd_iommu_init.c static void iommu_set_exclusion_range(struct amd_iommu *iommu)
iommu             346 drivers/iommu/amd_iommu_init.c 	u64 start = iommu->exclusion_start & PAGE_MASK;
iommu             347 drivers/iommu/amd_iommu_init.c 	u64 limit = (start + iommu->exclusion_length - 1) & PAGE_MASK;
iommu             350 drivers/iommu/amd_iommu_init.c 	if (!iommu->exclusion_start)
iommu             354 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_EXCL_BASE_OFFSET,
iommu             358 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_EXCL_LIMIT_OFFSET,
iommu             363 drivers/iommu/amd_iommu_init.c static void iommu_set_device_table(struct amd_iommu *iommu)
iommu             367 drivers/iommu/amd_iommu_init.c 	BUG_ON(iommu->mmio_base == NULL);
iommu             371 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET,
iommu             376 drivers/iommu/amd_iommu_init.c static void iommu_feature_enable(struct amd_iommu *iommu, u8 bit)
iommu             380 drivers/iommu/amd_iommu_init.c 	ctrl = readq(iommu->mmio_base +  MMIO_CONTROL_OFFSET);
iommu             382 drivers/iommu/amd_iommu_init.c 	writeq(ctrl, iommu->mmio_base +  MMIO_CONTROL_OFFSET);
iommu             385 drivers/iommu/amd_iommu_init.c static void iommu_feature_disable(struct amd_iommu *iommu, u8 bit)
iommu             389 drivers/iommu/amd_iommu_init.c 	ctrl = readq(iommu->mmio_base + MMIO_CONTROL_OFFSET);
iommu             391 drivers/iommu/amd_iommu_init.c 	writeq(ctrl, iommu->mmio_base + MMIO_CONTROL_OFFSET);
iommu             394 drivers/iommu/amd_iommu_init.c static void iommu_set_inv_tlb_timeout(struct amd_iommu *iommu, int timeout)
iommu             398 drivers/iommu/amd_iommu_init.c 	ctrl = readq(iommu->mmio_base + MMIO_CONTROL_OFFSET);
iommu             401 drivers/iommu/amd_iommu_init.c 	writeq(ctrl, iommu->mmio_base + MMIO_CONTROL_OFFSET);
iommu             405 drivers/iommu/amd_iommu_init.c static void iommu_enable(struct amd_iommu *iommu)
iommu             407 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_IOMMU_EN);
iommu             410 drivers/iommu/amd_iommu_init.c static void iommu_disable(struct amd_iommu *iommu)
iommu             412 drivers/iommu/amd_iommu_init.c 	if (!iommu->mmio_base)
iommu             416 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_CMDBUF_EN);
iommu             419 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_EVT_INT_EN);
iommu             420 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_EVT_LOG_EN);
iommu             423 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_GALOG_EN);
iommu             424 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_GAINT_EN);
iommu             427 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_IOMMU_EN);
iommu             446 drivers/iommu/amd_iommu_init.c static void __init iommu_unmap_mmio_space(struct amd_iommu *iommu)
iommu             448 drivers/iommu/amd_iommu_init.c 	if (iommu->mmio_base)
iommu             449 drivers/iommu/amd_iommu_init.c 		iounmap(iommu->mmio_base);
iommu             450 drivers/iommu/amd_iommu_init.c 	release_mem_region(iommu->mmio_phys, iommu->mmio_phys_end);
iommu             596 drivers/iommu/amd_iommu_init.c static int __init alloc_command_buffer(struct amd_iommu *iommu)
iommu             598 drivers/iommu/amd_iommu_init.c 	iommu->cmd_buf = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
iommu             601 drivers/iommu/amd_iommu_init.c 	return iommu->cmd_buf ? 0 : -ENOMEM;
iommu             608 drivers/iommu/amd_iommu_init.c void amd_iommu_reset_cmd_buffer(struct amd_iommu *iommu)
iommu             610 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_CMDBUF_EN);
iommu             612 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_CMD_HEAD_OFFSET);
iommu             613 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
iommu             614 drivers/iommu/amd_iommu_init.c 	iommu->cmd_buf_head = 0;
iommu             615 drivers/iommu/amd_iommu_init.c 	iommu->cmd_buf_tail = 0;
iommu             617 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_CMDBUF_EN);
iommu             624 drivers/iommu/amd_iommu_init.c static void iommu_enable_command_buffer(struct amd_iommu *iommu)
iommu             628 drivers/iommu/amd_iommu_init.c 	BUG_ON(iommu->cmd_buf == NULL);
iommu             630 drivers/iommu/amd_iommu_init.c 	entry = iommu_virt_to_phys(iommu->cmd_buf);
iommu             633 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET,
iommu             636 drivers/iommu/amd_iommu_init.c 	amd_iommu_reset_cmd_buffer(iommu);
iommu             642 drivers/iommu/amd_iommu_init.c static void iommu_disable_command_buffer(struct amd_iommu *iommu)
iommu             644 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_CMDBUF_EN);
iommu             647 drivers/iommu/amd_iommu_init.c static void __init free_command_buffer(struct amd_iommu *iommu)
iommu             649 drivers/iommu/amd_iommu_init.c 	free_pages((unsigned long)iommu->cmd_buf, get_order(CMD_BUFFER_SIZE));
iommu             653 drivers/iommu/amd_iommu_init.c static int __init alloc_event_buffer(struct amd_iommu *iommu)
iommu             655 drivers/iommu/amd_iommu_init.c 	iommu->evt_buf = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
iommu             658 drivers/iommu/amd_iommu_init.c 	return iommu->evt_buf ? 0 : -ENOMEM;
iommu             661 drivers/iommu/amd_iommu_init.c static void iommu_enable_event_buffer(struct amd_iommu *iommu)
iommu             665 drivers/iommu/amd_iommu_init.c 	BUG_ON(iommu->evt_buf == NULL);
iommu             667 drivers/iommu/amd_iommu_init.c 	entry = iommu_virt_to_phys(iommu->evt_buf) | EVT_LEN_MASK;
iommu             669 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_EVT_BUF_OFFSET,
iommu             673 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_EVT_HEAD_OFFSET);
iommu             674 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_EVT_TAIL_OFFSET);
iommu             676 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_EVT_LOG_EN);
iommu             682 drivers/iommu/amd_iommu_init.c static void iommu_disable_event_buffer(struct amd_iommu *iommu)
iommu             684 drivers/iommu/amd_iommu_init.c 	iommu_feature_disable(iommu, CONTROL_EVT_LOG_EN);
iommu             687 drivers/iommu/amd_iommu_init.c static void __init free_event_buffer(struct amd_iommu *iommu)
iommu             689 drivers/iommu/amd_iommu_init.c 	free_pages((unsigned long)iommu->evt_buf, get_order(EVT_BUFFER_SIZE));
iommu             693 drivers/iommu/amd_iommu_init.c static int __init alloc_ppr_log(struct amd_iommu *iommu)
iommu             695 drivers/iommu/amd_iommu_init.c 	iommu->ppr_log = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
iommu             698 drivers/iommu/amd_iommu_init.c 	return iommu->ppr_log ? 0 : -ENOMEM;
iommu             701 drivers/iommu/amd_iommu_init.c static void iommu_enable_ppr_log(struct amd_iommu *iommu)
iommu             705 drivers/iommu/amd_iommu_init.c 	if (iommu->ppr_log == NULL)
iommu             708 drivers/iommu/amd_iommu_init.c 	entry = iommu_virt_to_phys(iommu->ppr_log) | PPR_LOG_SIZE_512;
iommu             710 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_PPR_LOG_OFFSET,
iommu             714 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
iommu             715 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_PPR_TAIL_OFFSET);
iommu             717 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_PPFLOG_EN);
iommu             718 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_PPR_EN);
iommu             721 drivers/iommu/amd_iommu_init.c static void __init free_ppr_log(struct amd_iommu *iommu)
iommu             723 drivers/iommu/amd_iommu_init.c 	if (iommu->ppr_log == NULL)
iommu             726 drivers/iommu/amd_iommu_init.c 	free_pages((unsigned long)iommu->ppr_log, get_order(PPR_LOG_SIZE));
iommu             729 drivers/iommu/amd_iommu_init.c static void free_ga_log(struct amd_iommu *iommu)
iommu             732 drivers/iommu/amd_iommu_init.c 	if (iommu->ga_log)
iommu             733 drivers/iommu/amd_iommu_init.c 		free_pages((unsigned long)iommu->ga_log,
iommu             735 drivers/iommu/amd_iommu_init.c 	if (iommu->ga_log_tail)
iommu             736 drivers/iommu/amd_iommu_init.c 		free_pages((unsigned long)iommu->ga_log_tail,
iommu             741 drivers/iommu/amd_iommu_init.c static int iommu_ga_log_enable(struct amd_iommu *iommu)
iommu             746 drivers/iommu/amd_iommu_init.c 	if (!iommu->ga_log)
iommu             749 drivers/iommu/amd_iommu_init.c 	status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET);
iommu             755 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_GAINT_EN);
iommu             756 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_GALOG_EN);
iommu             759 drivers/iommu/amd_iommu_init.c 		status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET);
iommu             771 drivers/iommu/amd_iommu_init.c static int iommu_init_ga_log(struct amd_iommu *iommu)
iommu             778 drivers/iommu/amd_iommu_init.c 	iommu->ga_log = (u8 *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
iommu             780 drivers/iommu/amd_iommu_init.c 	if (!iommu->ga_log)
iommu             783 drivers/iommu/amd_iommu_init.c 	iommu->ga_log_tail = (u8 *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
iommu             785 drivers/iommu/amd_iommu_init.c 	if (!iommu->ga_log_tail)
iommu             788 drivers/iommu/amd_iommu_init.c 	entry = iommu_virt_to_phys(iommu->ga_log) | GA_LOG_SIZE_512;
iommu             789 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_GA_LOG_BASE_OFFSET,
iommu             791 drivers/iommu/amd_iommu_init.c 	entry = (iommu_virt_to_phys(iommu->ga_log_tail) &
iommu             793 drivers/iommu/amd_iommu_init.c 	memcpy_toio(iommu->mmio_base + MMIO_GA_LOG_TAIL_OFFSET,
iommu             795 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_GA_HEAD_OFFSET);
iommu             796 drivers/iommu/amd_iommu_init.c 	writel(0x00, iommu->mmio_base + MMIO_GA_TAIL_OFFSET);
iommu             800 drivers/iommu/amd_iommu_init.c 	free_ga_log(iommu);
iommu             805 drivers/iommu/amd_iommu_init.c static int iommu_init_ga(struct amd_iommu *iommu)
iommu             814 drivers/iommu/amd_iommu_init.c 	    !iommu_feature(iommu, FEATURE_GAM_VAPIC))
iommu             817 drivers/iommu/amd_iommu_init.c 	ret = iommu_init_ga_log(iommu);
iommu             823 drivers/iommu/amd_iommu_init.c static void iommu_enable_xt(struct amd_iommu *iommu)
iommu             832 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_XT_EN);
iommu             836 drivers/iommu/amd_iommu_init.c static void iommu_enable_gt(struct amd_iommu *iommu)
iommu             838 drivers/iommu/amd_iommu_init.c 	if (!iommu_feature(iommu, FEATURE_GT))
iommu             841 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_GT_EN);
iommu             868 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu             877 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu             879 drivers/iommu/amd_iommu_init.c 		lo = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET);
iommu             880 drivers/iommu/amd_iommu_init.c 		hi = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET + 4);
iommu             884 drivers/iommu/amd_iommu_init.c 				iommu->index);
iommu             892 drivers/iommu/amd_iommu_init.c 				iommu->index);
iommu             974 drivers/iommu/amd_iommu_init.c static void __init set_iommu_for_device(struct amd_iommu *iommu, u16 devid)
iommu             976 drivers/iommu/amd_iommu_init.c 	amd_iommu_rlookup_table[devid] = iommu;
iommu             983 drivers/iommu/amd_iommu_init.c static void __init set_dev_entry_from_acpi(struct amd_iommu *iommu,
iommu            1003 drivers/iommu/amd_iommu_init.c 	set_iommu_for_device(iommu, devid);
iommu            1119 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
iommu            1124 drivers/iommu/amd_iommu_init.c 	if (iommu) {
iommu            1131 drivers/iommu/amd_iommu_init.c 		iommu->exclusion_start = m->range_start;
iommu            1132 drivers/iommu/amd_iommu_init.c 		iommu->exclusion_length = m->range_length;
iommu            1140 drivers/iommu/amd_iommu_init.c static int __init init_iommu_from_acpi(struct amd_iommu *iommu,
iommu            1162 drivers/iommu/amd_iommu_init.c 	iommu->acpi_flags = h->flags;
iommu            1186 drivers/iommu/amd_iommu_init.c 				set_dev_entry_from_acpi(iommu, dev_i, e->flags, 0);
iommu            1198 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid, e->flags, 0);
iommu            1228 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid   , e->flags, 0);
iommu            1229 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid_to, e->flags, 0);
iommu            1261 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid, e->flags,
iommu            1289 drivers/iommu/amd_iommu_init.c 					set_dev_entry_from_acpi(iommu,
iommu            1292 drivers/iommu/amd_iommu_init.c 				set_dev_entry_from_acpi(iommu, dev_i,
iommu            1328 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid, e->flags, 0);
iommu            1393 drivers/iommu/amd_iommu_init.c 			set_dev_entry_from_acpi(iommu, devid, e->flags, 0);
iommu            1407 drivers/iommu/amd_iommu_init.c static void __init free_iommu_one(struct amd_iommu *iommu)
iommu            1409 drivers/iommu/amd_iommu_init.c 	free_command_buffer(iommu);
iommu            1410 drivers/iommu/amd_iommu_init.c 	free_event_buffer(iommu);
iommu            1411 drivers/iommu/amd_iommu_init.c 	free_ppr_log(iommu);
iommu            1412 drivers/iommu/amd_iommu_init.c 	free_ga_log(iommu);
iommu            1413 drivers/iommu/amd_iommu_init.c 	iommu_unmap_mmio_space(iommu);
iommu            1418 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu, *next;
iommu            1420 drivers/iommu/amd_iommu_init.c 	for_each_iommu_safe(iommu, next) {
iommu            1421 drivers/iommu/amd_iommu_init.c 		list_del(&iommu->list);
iommu            1422 drivers/iommu/amd_iommu_init.c 		free_iommu_one(iommu);
iommu            1423 drivers/iommu/amd_iommu_init.c 		kfree(iommu);
iommu            1433 drivers/iommu/amd_iommu_init.c static void amd_iommu_erratum_746_workaround(struct amd_iommu *iommu)
iommu            1442 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf0, 0x90);
iommu            1443 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, 0xf4, &value);
iommu            1449 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf0, 0x90 | (1 << 8));
iommu            1451 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf4, value | 0x4);
iommu            1452 drivers/iommu/amd_iommu_init.c 	pci_info(iommu->dev, "Applying erratum 746 workaround\n");
iommu            1455 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, 0xf0, 0x90);
iommu            1464 drivers/iommu/amd_iommu_init.c static void amd_iommu_ats_write_check_workaround(struct amd_iommu *iommu)
iommu            1474 drivers/iommu/amd_iommu_init.c 	value = iommu_read_l2(iommu, 0x47);
iommu            1480 drivers/iommu/amd_iommu_init.c 	iommu_write_l2(iommu, 0x47, value | BIT(0));
iommu            1482 drivers/iommu/amd_iommu_init.c 	pci_info(iommu->dev, "Applying ATS write check workaround\n");
iommu            1490 drivers/iommu/amd_iommu_init.c static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
iommu            1494 drivers/iommu/amd_iommu_init.c 	raw_spin_lock_init(&iommu->lock);
iommu            1497 drivers/iommu/amd_iommu_init.c 	list_add_tail(&iommu->list, &amd_iommu_list);
iommu            1498 drivers/iommu/amd_iommu_init.c 	iommu->index = amd_iommus_present++;
iommu            1500 drivers/iommu/amd_iommu_init.c 	if (unlikely(iommu->index >= MAX_IOMMUS)) {
iommu            1506 drivers/iommu/amd_iommu_init.c 	amd_iommus[iommu->index] = iommu;
iommu            1511 drivers/iommu/amd_iommu_init.c 	iommu->devid   = h->devid;
iommu            1512 drivers/iommu/amd_iommu_init.c 	iommu->cap_ptr = h->cap_ptr;
iommu            1513 drivers/iommu/amd_iommu_init.c 	iommu->pci_seg = h->pci_seg;
iommu            1514 drivers/iommu/amd_iommu_init.c 	iommu->mmio_phys = h->mmio_phys;
iommu            1522 drivers/iommu/amd_iommu_init.c 			iommu->mmio_phys_end = MMIO_REG_END_OFFSET;
iommu            1524 drivers/iommu/amd_iommu_init.c 			iommu->mmio_phys_end = MMIO_CNTR_CONF_OFFSET;
iommu            1531 drivers/iommu/amd_iommu_init.c 			iommu->mmio_phys_end = MMIO_REG_END_OFFSET;
iommu            1533 drivers/iommu/amd_iommu_init.c 			iommu->mmio_phys_end = MMIO_CNTR_CONF_OFFSET;
iommu            1550 drivers/iommu/amd_iommu_init.c 	iommu->mmio_base = iommu_map_mmio_space(iommu->mmio_phys,
iommu            1551 drivers/iommu/amd_iommu_init.c 						iommu->mmio_phys_end);
iommu            1552 drivers/iommu/amd_iommu_init.c 	if (!iommu->mmio_base)
iommu            1555 drivers/iommu/amd_iommu_init.c 	if (alloc_command_buffer(iommu))
iommu            1558 drivers/iommu/amd_iommu_init.c 	if (alloc_event_buffer(iommu))
iommu            1561 drivers/iommu/amd_iommu_init.c 	iommu->int_enabled = false;
iommu            1563 drivers/iommu/amd_iommu_init.c 	init_translation_status(iommu);
iommu            1564 drivers/iommu/amd_iommu_init.c 	if (translation_pre_enabled(iommu) && !is_kdump_kernel()) {
iommu            1565 drivers/iommu/amd_iommu_init.c 		iommu_disable(iommu);
iommu            1566 drivers/iommu/amd_iommu_init.c 		clear_translation_pre_enabled(iommu);
iommu            1568 drivers/iommu/amd_iommu_init.c 			iommu->index);
iommu            1571 drivers/iommu/amd_iommu_init.c 		amd_iommu_pre_enabled = translation_pre_enabled(iommu);
iommu            1573 drivers/iommu/amd_iommu_init.c 	ret = init_iommu_from_acpi(iommu, h);
iommu            1577 drivers/iommu/amd_iommu_init.c 	ret = amd_iommu_create_irq_domain(iommu);
iommu            1585 drivers/iommu/amd_iommu_init.c 	amd_iommu_rlookup_table[iommu->devid] = NULL;
iommu            1624 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            1642 drivers/iommu/amd_iommu_init.c 			iommu = kzalloc(sizeof(struct amd_iommu), GFP_KERNEL);
iommu            1643 drivers/iommu/amd_iommu_init.c 			if (iommu == NULL)
iommu            1646 drivers/iommu/amd_iommu_init.c 			ret = init_iommu_one(iommu, h);
iommu            1658 drivers/iommu/amd_iommu_init.c static int iommu_pc_get_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
iommu            1661 drivers/iommu/amd_iommu_init.c static void init_iommu_perf_ctr(struct amd_iommu *iommu)
iommu            1663 drivers/iommu/amd_iommu_init.c 	struct pci_dev *pdev = iommu->dev;
iommu            1666 drivers/iommu/amd_iommu_init.c 	if (!iommu_feature(iommu, FEATURE_PC))
iommu            1672 drivers/iommu/amd_iommu_init.c 	if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, false))
iommu            1676 drivers/iommu/amd_iommu_init.c 	if ((iommu_pc_get_set_reg(iommu, 0, 0, 0, &val, true)) ||
iommu            1677 drivers/iommu/amd_iommu_init.c 	    (iommu_pc_get_set_reg(iommu, 0, 0, 0, &val2, false)) ||
iommu            1682 drivers/iommu/amd_iommu_init.c 	if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, true))
iommu            1687 drivers/iommu/amd_iommu_init.c 	val = readl(iommu->mmio_base + MMIO_CNTR_CONF_OFFSET);
iommu            1688 drivers/iommu/amd_iommu_init.c 	iommu->max_banks = (u8) ((val >> 12) & 0x3f);
iommu            1689 drivers/iommu/amd_iommu_init.c 	iommu->max_counters = (u8) ((val >> 7) & 0xf);
iommu            1703 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu = dev_to_amd_iommu(dev);
iommu            1704 drivers/iommu/amd_iommu_init.c 	return sprintf(buf, "%x\n", iommu->cap);
iommu            1712 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu = dev_to_amd_iommu(dev);
iommu            1713 drivers/iommu/amd_iommu_init.c 	return sprintf(buf, "%llx\n", iommu->features);
iommu            1733 drivers/iommu/amd_iommu_init.c static int __init iommu_init_pci(struct amd_iommu *iommu)
iommu            1735 drivers/iommu/amd_iommu_init.c 	int cap_ptr = iommu->cap_ptr;
iommu            1739 drivers/iommu/amd_iommu_init.c 	iommu->dev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(iommu->devid),
iommu            1740 drivers/iommu/amd_iommu_init.c 						 iommu->devid & 0xff);
iommu            1741 drivers/iommu/amd_iommu_init.c 	if (!iommu->dev)
iommu            1745 drivers/iommu/amd_iommu_init.c 	iommu->dev->match_driver = false;
iommu            1747 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, cap_ptr + MMIO_CAP_HDR_OFFSET,
iommu            1748 drivers/iommu/amd_iommu_init.c 			      &iommu->cap);
iommu            1749 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, cap_ptr + MMIO_RANGE_OFFSET,
iommu            1751 drivers/iommu/amd_iommu_init.c 	pci_read_config_dword(iommu->dev, cap_ptr + MMIO_MISC_OFFSET,
iommu            1754 drivers/iommu/amd_iommu_init.c 	if (!(iommu->cap & (1 << IOMMU_CAP_IOTLB)))
iommu            1758 drivers/iommu/amd_iommu_init.c 	low  = readl(iommu->mmio_base + MMIO_EXT_FEATURES);
iommu            1759 drivers/iommu/amd_iommu_init.c 	high = readl(iommu->mmio_base + MMIO_EXT_FEATURES + 4);
iommu            1761 drivers/iommu/amd_iommu_init.c 	iommu->features = ((u64)high << 32) | low;
iommu            1763 drivers/iommu/amd_iommu_init.c 	if (iommu_feature(iommu, FEATURE_GT)) {
iommu            1768 drivers/iommu/amd_iommu_init.c 		pasmax = iommu->features & FEATURE_PASID_MASK;
iommu            1776 drivers/iommu/amd_iommu_init.c 		glxval   = iommu->features & FEATURE_GLXVAL_MASK;
iommu            1785 drivers/iommu/amd_iommu_init.c 	if (iommu_feature(iommu, FEATURE_GT) &&
iommu            1786 drivers/iommu/amd_iommu_init.c 	    iommu_feature(iommu, FEATURE_PPR)) {
iommu            1787 drivers/iommu/amd_iommu_init.c 		iommu->is_iommu_v2   = true;
iommu            1791 drivers/iommu/amd_iommu_init.c 	if (iommu_feature(iommu, FEATURE_PPR) && alloc_ppr_log(iommu))
iommu            1794 drivers/iommu/amd_iommu_init.c 	ret = iommu_init_ga(iommu);
iommu            1798 drivers/iommu/amd_iommu_init.c 	if (iommu->cap & (1UL << IOMMU_CAP_NPCACHE))
iommu            1801 drivers/iommu/amd_iommu_init.c 	init_iommu_perf_ctr(iommu);
iommu            1803 drivers/iommu/amd_iommu_init.c 	if (is_rd890_iommu(iommu->dev)) {
iommu            1806 drivers/iommu/amd_iommu_init.c 		iommu->root_pdev =
iommu            1807 drivers/iommu/amd_iommu_init.c 			pci_get_domain_bus_and_slot(0, iommu->dev->bus->number,
iommu            1815 drivers/iommu/amd_iommu_init.c 		pci_read_config_dword(iommu->dev, iommu->cap_ptr + 4,
iommu            1816 drivers/iommu/amd_iommu_init.c 				&iommu->stored_addr_lo);
iommu            1817 drivers/iommu/amd_iommu_init.c 		pci_read_config_dword(iommu->dev, iommu->cap_ptr + 8,
iommu            1818 drivers/iommu/amd_iommu_init.c 				&iommu->stored_addr_hi);
iommu            1821 drivers/iommu/amd_iommu_init.c 		iommu->stored_addr_lo &= ~1;
iommu            1825 drivers/iommu/amd_iommu_init.c 				iommu->stored_l1[i][j] = iommu_read_l1(iommu, i, j);
iommu            1828 drivers/iommu/amd_iommu_init.c 			iommu->stored_l2[i] = iommu_read_l2(iommu, i);
iommu            1831 drivers/iommu/amd_iommu_init.c 	amd_iommu_erratum_746_workaround(iommu);
iommu            1832 drivers/iommu/amd_iommu_init.c 	amd_iommu_ats_write_check_workaround(iommu);
iommu            1834 drivers/iommu/amd_iommu_init.c 	iommu_device_sysfs_add(&iommu->iommu, &iommu->dev->dev,
iommu            1835 drivers/iommu/amd_iommu_init.c 			       amd_iommu_groups, "ivhd%d", iommu->index);
iommu            1836 drivers/iommu/amd_iommu_init.c 	iommu_device_set_ops(&iommu->iommu, &amd_iommu_ops);
iommu            1837 drivers/iommu/amd_iommu_init.c 	iommu_device_register(&iommu->iommu);
iommu            1839 drivers/iommu/amd_iommu_init.c 	return pci_enable_device(iommu->dev);
iommu            1848 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            1850 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu            1851 drivers/iommu/amd_iommu_init.c 		struct pci_dev *pdev = iommu->dev;
iommu            1854 drivers/iommu/amd_iommu_init.c 		pci_info(pdev, "Found IOMMU cap 0x%hx\n", iommu->cap_ptr);
iommu            1856 drivers/iommu/amd_iommu_init.c 		if (iommu->cap & (1 << IOMMU_CAP_EFR)) {
iommu            1858 drivers/iommu/amd_iommu_init.c 				 iommu->features);
iommu            1860 drivers/iommu/amd_iommu_init.c 				if (iommu_feature(iommu, (1ULL << i)))
iommu            1864 drivers/iommu/amd_iommu_init.c 			if (iommu->features & FEATURE_GAM_VAPIC)
iommu            1881 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            1884 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu            1885 drivers/iommu/amd_iommu_init.c 		ret = iommu_init_pci(iommu);
iommu            1904 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu)
iommu            1905 drivers/iommu/amd_iommu_init.c 		iommu_flush_all_caches(iommu);
iommu            1922 drivers/iommu/amd_iommu_init.c static int iommu_setup_msi(struct amd_iommu *iommu)
iommu            1926 drivers/iommu/amd_iommu_init.c 	r = pci_enable_msi(iommu->dev);
iommu            1930 drivers/iommu/amd_iommu_init.c 	r = request_threaded_irq(iommu->dev->irq,
iommu            1934 drivers/iommu/amd_iommu_init.c 				 iommu);
iommu            1937 drivers/iommu/amd_iommu_init.c 		pci_disable_msi(iommu->dev);
iommu            1941 drivers/iommu/amd_iommu_init.c 	iommu->int_enabled = true;
iommu            1956 drivers/iommu/amd_iommu_init.c static void iommu_update_intcapxt(struct amd_iommu *iommu)
iommu            1959 drivers/iommu/amd_iommu_init.c 	u32 addr_lo = readl(iommu->mmio_base + MMIO_MSI_ADDR_LO_OFFSET);
iommu            1960 drivers/iommu/amd_iommu_init.c 	u32 addr_hi = readl(iommu->mmio_base + MMIO_MSI_ADDR_HI_OFFSET);
iommu            1961 drivers/iommu/amd_iommu_init.c 	u32 data    = readl(iommu->mmio_base + MMIO_MSI_DATA_OFFSET);
iommu            1977 drivers/iommu/amd_iommu_init.c 	writeq(val, iommu->mmio_base + MMIO_INTCAPXT_EVT_OFFSET);
iommu            1978 drivers/iommu/amd_iommu_init.c 	writeq(val, iommu->mmio_base + MMIO_INTCAPXT_PPR_OFFSET);
iommu            1979 drivers/iommu/amd_iommu_init.c 	writeq(val, iommu->mmio_base + MMIO_INTCAPXT_GALOG_OFFSET);
iommu            1985 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            1987 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu            1988 drivers/iommu/amd_iommu_init.c 		if (iommu->dev->irq == notify->irq) {
iommu            1989 drivers/iommu/amd_iommu_init.c 			iommu_update_intcapxt(iommu);
iommu            1999 drivers/iommu/amd_iommu_init.c static int iommu_init_intcapxt(struct amd_iommu *iommu)
iommu            2002 drivers/iommu/amd_iommu_init.c 	struct irq_affinity_notify *notify = &iommu->intcapxt_notify;
iommu            2015 drivers/iommu/amd_iommu_init.c 	notify->irq = iommu->dev->irq;
iommu            2018 drivers/iommu/amd_iommu_init.c 	ret = irq_set_affinity_notifier(iommu->dev->irq, notify);
iommu            2021 drivers/iommu/amd_iommu_init.c 		       iommu->devid, iommu->dev->irq);
iommu            2025 drivers/iommu/amd_iommu_init.c 	iommu_update_intcapxt(iommu);
iommu            2026 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_INTCAPXT_EN);
iommu            2030 drivers/iommu/amd_iommu_init.c static int iommu_init_msi(struct amd_iommu *iommu)
iommu            2034 drivers/iommu/amd_iommu_init.c 	if (iommu->int_enabled)
iommu            2037 drivers/iommu/amd_iommu_init.c 	if (iommu->dev->msi_cap)
iommu            2038 drivers/iommu/amd_iommu_init.c 		ret = iommu_setup_msi(iommu);
iommu            2046 drivers/iommu/amd_iommu_init.c 	ret = iommu_init_intcapxt(iommu);
iommu            2050 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
iommu            2052 drivers/iommu/amd_iommu_init.c 	if (iommu->ppr_log != NULL)
iommu            2053 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_PPFINT_EN);
iommu            2055 drivers/iommu/amd_iommu_init.c 	iommu_ga_log_enable(iommu);
iommu            2204 drivers/iommu/amd_iommu_init.c static void iommu_init_flags(struct amd_iommu *iommu)
iommu            2206 drivers/iommu/amd_iommu_init.c 	iommu->acpi_flags & IVHD_FLAG_HT_TUN_EN_MASK ?
iommu            2207 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_HT_TUN_EN) :
iommu            2208 drivers/iommu/amd_iommu_init.c 		iommu_feature_disable(iommu, CONTROL_HT_TUN_EN);
iommu            2210 drivers/iommu/amd_iommu_init.c 	iommu->acpi_flags & IVHD_FLAG_PASSPW_EN_MASK ?
iommu            2211 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_PASSPW_EN) :
iommu            2212 drivers/iommu/amd_iommu_init.c 		iommu_feature_disable(iommu, CONTROL_PASSPW_EN);
iommu            2214 drivers/iommu/amd_iommu_init.c 	iommu->acpi_flags & IVHD_FLAG_RESPASSPW_EN_MASK ?
iommu            2215 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_RESPASSPW_EN) :
iommu            2216 drivers/iommu/amd_iommu_init.c 		iommu_feature_disable(iommu, CONTROL_RESPASSPW_EN);
iommu            2218 drivers/iommu/amd_iommu_init.c 	iommu->acpi_flags & IVHD_FLAG_ISOC_EN_MASK ?
iommu            2219 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_ISOC_EN) :
iommu            2220 drivers/iommu/amd_iommu_init.c 		iommu_feature_disable(iommu, CONTROL_ISOC_EN);
iommu            2225 drivers/iommu/amd_iommu_init.c 	iommu_feature_enable(iommu, CONTROL_COHERENT_EN);
iommu            2228 drivers/iommu/amd_iommu_init.c 	iommu_set_inv_tlb_timeout(iommu, CTRL_INV_TO_1S);
iommu            2231 drivers/iommu/amd_iommu_init.c static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
iommu            2235 drivers/iommu/amd_iommu_init.c 	struct pci_dev *pdev = iommu->root_pdev;
iommu            2238 drivers/iommu/amd_iommu_init.c 	if (!is_rd890_iommu(iommu->dev) || !pdev)
iommu            2255 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, iommu->cap_ptr + 4,
iommu            2256 drivers/iommu/amd_iommu_init.c 			       iommu->stored_addr_lo);
iommu            2257 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, iommu->cap_ptr + 8,
iommu            2258 drivers/iommu/amd_iommu_init.c 			       iommu->stored_addr_hi);
iommu            2263 drivers/iommu/amd_iommu_init.c 			iommu_write_l1(iommu, i, j, iommu->stored_l1[i][j]);
iommu            2267 drivers/iommu/amd_iommu_init.c 		iommu_write_l2(iommu, i, iommu->stored_l2[i]);
iommu            2270 drivers/iommu/amd_iommu_init.c 	pci_write_config_dword(iommu->dev, iommu->cap_ptr + 4,
iommu            2271 drivers/iommu/amd_iommu_init.c 			       iommu->stored_addr_lo | 1);
iommu            2274 drivers/iommu/amd_iommu_init.c static void iommu_enable_ga(struct amd_iommu *iommu)
iommu            2279 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_GAM_EN);
iommu            2282 drivers/iommu/amd_iommu_init.c 		iommu_feature_enable(iommu, CONTROL_GA_EN);
iommu            2283 drivers/iommu/amd_iommu_init.c 		iommu->irte_ops = &irte_128_ops;
iommu            2286 drivers/iommu/amd_iommu_init.c 		iommu->irte_ops = &irte_32_ops;
iommu            2292 drivers/iommu/amd_iommu_init.c static void early_enable_iommu(struct amd_iommu *iommu)
iommu            2294 drivers/iommu/amd_iommu_init.c 	iommu_disable(iommu);
iommu            2295 drivers/iommu/amd_iommu_init.c 	iommu_init_flags(iommu);
iommu            2296 drivers/iommu/amd_iommu_init.c 	iommu_set_device_table(iommu);
iommu            2297 drivers/iommu/amd_iommu_init.c 	iommu_enable_command_buffer(iommu);
iommu            2298 drivers/iommu/amd_iommu_init.c 	iommu_enable_event_buffer(iommu);
iommu            2299 drivers/iommu/amd_iommu_init.c 	iommu_set_exclusion_range(iommu);
iommu            2300 drivers/iommu/amd_iommu_init.c 	iommu_enable_ga(iommu);
iommu            2301 drivers/iommu/amd_iommu_init.c 	iommu_enable_xt(iommu);
iommu            2302 drivers/iommu/amd_iommu_init.c 	iommu_enable(iommu);
iommu            2303 drivers/iommu/amd_iommu_init.c 	iommu_flush_all_caches(iommu);
iommu            2316 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2331 drivers/iommu/amd_iommu_init.c 		for_each_iommu(iommu) {
iommu            2332 drivers/iommu/amd_iommu_init.c 			clear_translation_pre_enabled(iommu);
iommu            2333 drivers/iommu/amd_iommu_init.c 			early_enable_iommu(iommu);
iommu            2340 drivers/iommu/amd_iommu_init.c 		for_each_iommu(iommu) {
iommu            2341 drivers/iommu/amd_iommu_init.c 			iommu_disable_command_buffer(iommu);
iommu            2342 drivers/iommu/amd_iommu_init.c 			iommu_disable_event_buffer(iommu);
iommu            2343 drivers/iommu/amd_iommu_init.c 			iommu_enable_command_buffer(iommu);
iommu            2344 drivers/iommu/amd_iommu_init.c 			iommu_enable_event_buffer(iommu);
iommu            2345 drivers/iommu/amd_iommu_init.c 			iommu_enable_ga(iommu);
iommu            2346 drivers/iommu/amd_iommu_init.c 			iommu_enable_xt(iommu);
iommu            2347 drivers/iommu/amd_iommu_init.c 			iommu_set_device_table(iommu);
iommu            2348 drivers/iommu/amd_iommu_init.c 			iommu_flush_all_caches(iommu);
iommu            2360 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2362 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu            2363 drivers/iommu/amd_iommu_init.c 		iommu_enable_ppr_log(iommu);
iommu            2364 drivers/iommu/amd_iommu_init.c 		iommu_enable_gt(iommu);
iommu            2377 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2379 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu)
iommu            2380 drivers/iommu/amd_iommu_init.c 		iommu_disable(iommu);
iommu            2395 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2397 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu)
iommu            2398 drivers/iommu/amd_iommu_init.c 		iommu_apply_resume_quirks(iommu);
iommu            2685 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2688 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu) {
iommu            2689 drivers/iommu/amd_iommu_init.c 		ret = iommu_init_msi(iommu);
iommu            2790 drivers/iommu/amd_iommu_init.c 			struct amd_iommu *iommu;
iommu            2793 drivers/iommu/amd_iommu_init.c 			for_each_iommu(iommu)
iommu            2794 drivers/iommu/amd_iommu_init.c 				iommu_flush_all_caches(iommu);
iommu            2866 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            2880 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu)
iommu            2881 drivers/iommu/amd_iommu_init.c 		amd_iommu_debugfs_setup(iommu);
iommu            2927 drivers/iommu/amd_iommu_init.c 	x86_init.iommu.iommu_init = amd_iommu_init;
iommu            3088 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu;
iommu            3090 drivers/iommu/amd_iommu_init.c 	for_each_iommu(iommu)
iommu            3092 drivers/iommu/amd_iommu_init.c 			return iommu;
iommu            3106 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu = get_amd_iommu(idx);
iommu            3108 drivers/iommu/amd_iommu_init.c 	if (iommu)
iommu            3109 drivers/iommu/amd_iommu_init.c 		return iommu->max_banks;
iommu            3123 drivers/iommu/amd_iommu_init.c 	struct amd_iommu *iommu = get_amd_iommu(idx);
iommu            3125 drivers/iommu/amd_iommu_init.c 	if (iommu)
iommu            3126 drivers/iommu/amd_iommu_init.c 		return iommu->max_counters;
iommu            3132 drivers/iommu/amd_iommu_init.c static int iommu_pc_get_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
iommu            3143 drivers/iommu/amd_iommu_init.c 	if (WARN_ON(!iommu || (fxn > 0x28) || (fxn & 7)))
iommu            3149 drivers/iommu/amd_iommu_init.c 	max_offset_lim = (u32)(((0x40 | iommu->max_banks) << 12) |
iommu            3150 drivers/iommu/amd_iommu_init.c 				(iommu->max_counters << 8) | 0x28);
iommu            3158 drivers/iommu/amd_iommu_init.c 		writel((u32)val, iommu->mmio_base + offset);
iommu            3159 drivers/iommu/amd_iommu_init.c 		writel((val >> 32), iommu->mmio_base + offset + 4);
iommu            3161 drivers/iommu/amd_iommu_init.c 		*value = readl(iommu->mmio_base + offset + 4);
iommu            3163 drivers/iommu/amd_iommu_init.c 		*value |= readl(iommu->mmio_base + offset);
iommu            3170 drivers/iommu/amd_iommu_init.c int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, u8 fxn, u64 *value)
iommu            3172 drivers/iommu/amd_iommu_init.c 	if (!iommu)
iommu            3175 drivers/iommu/amd_iommu_init.c 	return iommu_pc_get_set_reg(iommu, bank, cntr, fxn, value, false);
iommu            3179 drivers/iommu/amd_iommu_init.c int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, u8 fxn, u64 *value)
iommu            3181 drivers/iommu/amd_iommu_init.c 	if (!iommu)
iommu            3184 drivers/iommu/amd_iommu_init.c 	return iommu_pc_get_set_reg(iommu, bank, cntr, fxn, value, true);
iommu              18 drivers/iommu/amd_iommu_proto.h extern void amd_iommu_reset_cmd_buffer(struct amd_iommu *iommu);
iommu              25 drivers/iommu/amd_iommu_proto.h void amd_iommu_debugfs_setup(struct amd_iommu *iommu);
iommu              27 drivers/iommu/amd_iommu_proto.h static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {}
iommu              55 drivers/iommu/amd_iommu_proto.h extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
iommu              57 drivers/iommu/amd_iommu_proto.h static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
iommu              76 drivers/iommu/amd_iommu_proto.h static inline bool iommu_feature(struct amd_iommu *iommu, u64 f)
iommu              78 drivers/iommu/amd_iommu_proto.h 	if (!(iommu->cap & (1 << IOMMU_CAP_EFR)))
iommu              81 drivers/iommu/amd_iommu_proto.h 	return !!(iommu->features & f);
iommu              94 drivers/iommu/amd_iommu_proto.h extern bool translation_pre_enabled(struct amd_iommu *iommu);
iommu             429 drivers/iommu/amd_iommu_types.h #define for_each_iommu(iommu) \
iommu             430 drivers/iommu/amd_iommu_types.h 	list_for_each_entry((iommu), &amd_iommu_list, list)
iommu             431 drivers/iommu/amd_iommu_types.h #define for_each_iommu_safe(iommu, next) \
iommu             432 drivers/iommu/amd_iommu_types.h 	list_for_each_entry_safe((iommu), (next), &amd_iommu_list, list)
iommu             564 drivers/iommu/amd_iommu_types.h 	struct iommu_device iommu;
iommu             607 drivers/iommu/amd_iommu_types.h 	struct iommu_device *iommu = dev_to_iommu_device(dev);
iommu             609 drivers/iommu/amd_iommu_types.h 	return container_of(iommu, struct amd_iommu, iommu);
iommu             759 drivers/iommu/amd_iommu_types.h extern void iommu_flush_all_caches(struct amd_iommu *iommu);
iommu             629 drivers/iommu/arm-smmu-v3.c 	struct iommu_device		iommu;
iommu            2580 drivers/iommu/arm-smmu-v3.c 		iommu_device_link(&smmu->iommu, dev);
iommu            2599 drivers/iommu/arm-smmu-v3.c 	iommu_device_unlink(&smmu->iommu, dev);
iommu            3651 drivers/iommu/arm-smmu-v3.c 	ret = iommu_device_sysfs_add(&smmu->iommu, dev, NULL,
iommu            3656 drivers/iommu/arm-smmu-v3.c 	iommu_device_set_ops(&smmu->iommu, &arm_smmu_ops);
iommu            3657 drivers/iommu/arm-smmu-v3.c 	iommu_device_set_fwnode(&smmu->iommu, dev->fwnode);
iommu            3659 drivers/iommu/arm-smmu-v3.c 	ret = iommu_device_register(&smmu->iommu);
iommu            1374 drivers/iommu/arm-smmu.c 	iommu_device_link(&smmu->iommu, dev);
iommu            1405 drivers/iommu/arm-smmu.c 	iommu_device_unlink(&smmu->iommu, dev);
iommu            2112 drivers/iommu/arm-smmu.c 	err = iommu_device_sysfs_add(&smmu->iommu, smmu->dev, NULL,
iommu            2119 drivers/iommu/arm-smmu.c 	iommu_device_set_ops(&smmu->iommu, &arm_smmu_ops);
iommu            2120 drivers/iommu/arm-smmu.c 	iommu_device_set_fwnode(&smmu->iommu, dev->fwnode);
iommu            2122 drivers/iommu/arm-smmu.c 	err = iommu_device_register(&smmu->iommu);
iommu             278 drivers/iommu/arm-smmu.h 	struct iommu_device		iommu;
iommu              65 drivers/iommu/dmar.c static void free_iommu(struct intel_iommu *iommu);
iommu             440 drivers/iommu/dmar.c 	if (dmaru->iommu)
iommu             441 drivers/iommu/dmar.c 		free_iommu(dmaru->iommu);
iommu             480 drivers/iommu/dmar.c 			drhd->iommu->node = node;
iommu             909 drivers/iommu/dmar.c 		x86_init.iommu.iommu_init = intel_iommu_init;
iommu             921 drivers/iommu/dmar.c static void unmap_iommu(struct intel_iommu *iommu)
iommu             923 drivers/iommu/dmar.c 	iounmap(iommu->reg);
iommu             924 drivers/iommu/dmar.c 	release_mem_region(iommu->reg_phys, iommu->reg_size);
iommu             935 drivers/iommu/dmar.c static int map_iommu(struct intel_iommu *iommu, u64 phys_addr)
iommu             939 drivers/iommu/dmar.c 	iommu->reg_phys = phys_addr;
iommu             940 drivers/iommu/dmar.c 	iommu->reg_size = VTD_PAGE_SIZE;
iommu             942 drivers/iommu/dmar.c 	if (!request_mem_region(iommu->reg_phys, iommu->reg_size, iommu->name)) {
iommu             948 drivers/iommu/dmar.c 	iommu->reg = ioremap(iommu->reg_phys, iommu->reg_size);
iommu             949 drivers/iommu/dmar.c 	if (!iommu->reg) {
iommu             955 drivers/iommu/dmar.c 	iommu->cap = dmar_readq(iommu->reg + DMAR_CAP_REG);
iommu             956 drivers/iommu/dmar.c 	iommu->ecap = dmar_readq(iommu->reg + DMAR_ECAP_REG);
iommu             958 drivers/iommu/dmar.c 	if (iommu->cap == (uint64_t)-1 && iommu->ecap == (uint64_t)-1) {
iommu             965 drivers/iommu/dmar.c 	map_size = max_t(int, ecap_max_iotlb_offset(iommu->ecap),
iommu             966 drivers/iommu/dmar.c 			 cap_max_fault_reg_offset(iommu->cap));
iommu             968 drivers/iommu/dmar.c 	if (map_size > iommu->reg_size) {
iommu             969 drivers/iommu/dmar.c 		iounmap(iommu->reg);
iommu             970 drivers/iommu/dmar.c 		release_mem_region(iommu->reg_phys, iommu->reg_size);
iommu             971 drivers/iommu/dmar.c 		iommu->reg_size = map_size;
iommu             972 drivers/iommu/dmar.c 		if (!request_mem_region(iommu->reg_phys, iommu->reg_size,
iommu             973 drivers/iommu/dmar.c 					iommu->name)) {
iommu             978 drivers/iommu/dmar.c 		iommu->reg = ioremap(iommu->reg_phys, iommu->reg_size);
iommu             979 drivers/iommu/dmar.c 		if (!iommu->reg) {
iommu             989 drivers/iommu/dmar.c 	iounmap(iommu->reg);
iommu             991 drivers/iommu/dmar.c 	release_mem_region(iommu->reg_phys, iommu->reg_size);
iommu             996 drivers/iommu/dmar.c static int dmar_alloc_seq_id(struct intel_iommu *iommu)
iommu             998 drivers/iommu/dmar.c 	iommu->seq_id = find_first_zero_bit(dmar_seq_ids,
iommu            1000 drivers/iommu/dmar.c 	if (iommu->seq_id >= DMAR_UNITS_SUPPORTED) {
iommu            1001 drivers/iommu/dmar.c 		iommu->seq_id = -1;
iommu            1003 drivers/iommu/dmar.c 		set_bit(iommu->seq_id, dmar_seq_ids);
iommu            1004 drivers/iommu/dmar.c 		sprintf(iommu->name, "dmar%d", iommu->seq_id);
iommu            1007 drivers/iommu/dmar.c 	return iommu->seq_id;
iommu            1010 drivers/iommu/dmar.c static void dmar_free_seq_id(struct intel_iommu *iommu)
iommu            1012 drivers/iommu/dmar.c 	if (iommu->seq_id >= 0) {
iommu            1013 drivers/iommu/dmar.c 		clear_bit(iommu->seq_id, dmar_seq_ids);
iommu            1014 drivers/iommu/dmar.c 		iommu->seq_id = -1;
iommu            1020 drivers/iommu/dmar.c 	struct intel_iommu *iommu;
iommu            1031 drivers/iommu/dmar.c 	iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
iommu            1032 drivers/iommu/dmar.c 	if (!iommu)
iommu            1035 drivers/iommu/dmar.c 	if (dmar_alloc_seq_id(iommu) < 0) {
iommu            1041 drivers/iommu/dmar.c 	err = map_iommu(iommu, drhd->reg_base_addr);
iommu            1043 drivers/iommu/dmar.c 		pr_err("Failed to map %s\n", iommu->name);
iommu            1048 drivers/iommu/dmar.c 	agaw = iommu_calculate_agaw(iommu);
iommu            1051 drivers/iommu/dmar.c 			iommu->seq_id);
iommu            1054 drivers/iommu/dmar.c 	msagaw = iommu_calculate_max_sagaw(iommu);
iommu            1057 drivers/iommu/dmar.c 			iommu->seq_id);
iommu            1060 drivers/iommu/dmar.c 	iommu->agaw = agaw;
iommu            1061 drivers/iommu/dmar.c 	iommu->msagaw = msagaw;
iommu            1062 drivers/iommu/dmar.c 	iommu->segment = drhd->segment;
iommu            1064 drivers/iommu/dmar.c 	iommu->node = NUMA_NO_NODE;
iommu            1066 drivers/iommu/dmar.c 	ver = readl(iommu->reg + DMAR_VER_REG);
iommu            1068 drivers/iommu/dmar.c 		iommu->name,
iommu            1071 drivers/iommu/dmar.c 		(unsigned long long)iommu->cap,
iommu            1072 drivers/iommu/dmar.c 		(unsigned long long)iommu->ecap);
iommu            1075 drivers/iommu/dmar.c 	sts = readl(iommu->reg + DMAR_GSTS_REG);
iommu            1077 drivers/iommu/dmar.c 		iommu->gcmd |= DMA_GCMD_IRE;
iommu            1079 drivers/iommu/dmar.c 		iommu->gcmd |= DMA_GCMD_TE;
iommu            1081 drivers/iommu/dmar.c 		iommu->gcmd |= DMA_GCMD_QIE;
iommu            1083 drivers/iommu/dmar.c 	raw_spin_lock_init(&iommu->register_lock);
iommu            1086 drivers/iommu/dmar.c 		err = iommu_device_sysfs_add(&iommu->iommu, NULL,
iommu            1088 drivers/iommu/dmar.c 					     "%s", iommu->name);
iommu            1092 drivers/iommu/dmar.c 		iommu_device_set_ops(&iommu->iommu, &intel_iommu_ops);
iommu            1094 drivers/iommu/dmar.c 		err = iommu_device_register(&iommu->iommu);
iommu            1099 drivers/iommu/dmar.c 	drhd->iommu = iommu;
iommu            1104 drivers/iommu/dmar.c 	unmap_iommu(iommu);
iommu            1106 drivers/iommu/dmar.c 	dmar_free_seq_id(iommu);
iommu            1108 drivers/iommu/dmar.c 	kfree(iommu);
iommu            1112 drivers/iommu/dmar.c static void free_iommu(struct intel_iommu *iommu)
iommu            1115 drivers/iommu/dmar.c 		iommu_device_unregister(&iommu->iommu);
iommu            1116 drivers/iommu/dmar.c 		iommu_device_sysfs_remove(&iommu->iommu);
iommu            1119 drivers/iommu/dmar.c 	if (iommu->irq) {
iommu            1120 drivers/iommu/dmar.c 		if (iommu->pr_irq) {
iommu            1121 drivers/iommu/dmar.c 			free_irq(iommu->pr_irq, iommu);
iommu            1122 drivers/iommu/dmar.c 			dmar_free_hwirq(iommu->pr_irq);
iommu            1123 drivers/iommu/dmar.c 			iommu->pr_irq = 0;
iommu            1125 drivers/iommu/dmar.c 		free_irq(iommu->irq, iommu);
iommu            1126 drivers/iommu/dmar.c 		dmar_free_hwirq(iommu->irq);
iommu            1127 drivers/iommu/dmar.c 		iommu->irq = 0;
iommu            1130 drivers/iommu/dmar.c 	if (iommu->qi) {
iommu            1131 drivers/iommu/dmar.c 		free_page((unsigned long)iommu->qi->desc);
iommu            1132 drivers/iommu/dmar.c 		kfree(iommu->qi->desc_status);
iommu            1133 drivers/iommu/dmar.c 		kfree(iommu->qi);
iommu            1136 drivers/iommu/dmar.c 	if (iommu->reg)
iommu            1137 drivers/iommu/dmar.c 		unmap_iommu(iommu);
iommu            1139 drivers/iommu/dmar.c 	dmar_free_seq_id(iommu);
iommu            1140 drivers/iommu/dmar.c 	kfree(iommu);
iommu            1156 drivers/iommu/dmar.c static int qi_check_fault(struct intel_iommu *iommu, int index)
iommu            1160 drivers/iommu/dmar.c 	struct q_inval *qi = iommu->qi;
iommu            1162 drivers/iommu/dmar.c 	int shift = qi_shift(iommu);
iommu            1167 drivers/iommu/dmar.c 	fault = readl(iommu->reg + DMAR_FSTS_REG);
iommu            1175 drivers/iommu/dmar.c 		head = readl(iommu->reg + DMAR_IQH_REG);
iommu            1189 drivers/iommu/dmar.c 			writel(DMA_FSTS_IQE, iommu->reg + DMAR_FSTS_REG);
iommu            1199 drivers/iommu/dmar.c 		head = readl(iommu->reg + DMAR_IQH_REG);
iommu            1202 drivers/iommu/dmar.c 		tail = readl(iommu->reg + DMAR_IQT_REG);
iommu            1205 drivers/iommu/dmar.c 		writel(DMA_FSTS_ITE, iommu->reg + DMAR_FSTS_REG);
iommu            1218 drivers/iommu/dmar.c 		writel(DMA_FSTS_ICE, iommu->reg + DMAR_FSTS_REG);
iommu            1227 drivers/iommu/dmar.c int qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu)
iommu            1230 drivers/iommu/dmar.c 	struct q_inval *qi = iommu->qi;
iommu            1251 drivers/iommu/dmar.c 	shift = qi_shift(iommu);
iommu            1274 drivers/iommu/dmar.c 	writel(qi->free_head << shift, iommu->reg + DMAR_IQT_REG);
iommu            1284 drivers/iommu/dmar.c 		rc = qi_check_fault(iommu, index);
iommu            1307 drivers/iommu/dmar.c void qi_global_iec(struct intel_iommu *iommu)
iommu            1317 drivers/iommu/dmar.c 	qi_submit_sync(&desc, iommu);
iommu            1320 drivers/iommu/dmar.c void qi_flush_context(struct intel_iommu *iommu, u16 did, u16 sid, u8 fm,
iommu            1331 drivers/iommu/dmar.c 	qi_submit_sync(&desc, iommu);
iommu            1334 drivers/iommu/dmar.c void qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr,
iommu            1342 drivers/iommu/dmar.c 	if (cap_write_drain(iommu->cap))
iommu            1345 drivers/iommu/dmar.c 	if (cap_read_drain(iommu->cap))
iommu            1355 drivers/iommu/dmar.c 	qi_submit_sync(&desc, iommu);
iommu            1358 drivers/iommu/dmar.c void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 pfsid,
iommu            1377 drivers/iommu/dmar.c 	qi_submit_sync(&desc, iommu);
iommu            1383 drivers/iommu/dmar.c void dmar_disable_qi(struct intel_iommu *iommu)
iommu            1389 drivers/iommu/dmar.c 	if (!ecap_qis(iommu->ecap))
iommu            1392 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu            1394 drivers/iommu/dmar.c 	sts =  readl(iommu->reg + DMAR_GSTS_REG);
iommu            1401 drivers/iommu/dmar.c 	while ((readl(iommu->reg + DMAR_IQT_REG) !=
iommu            1402 drivers/iommu/dmar.c 		readl(iommu->reg + DMAR_IQH_REG)) &&
iommu            1406 drivers/iommu/dmar.c 	iommu->gcmd &= ~DMA_GCMD_QIE;
iommu            1407 drivers/iommu/dmar.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu            1409 drivers/iommu/dmar.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, readl,
iommu            1412 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu            1418 drivers/iommu/dmar.c static void __dmar_enable_qi(struct intel_iommu *iommu)
iommu            1422 drivers/iommu/dmar.c 	struct q_inval *qi = iommu->qi;
iommu            1432 drivers/iommu/dmar.c 	if (ecap_smts(iommu->ecap))
iommu            1435 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu            1438 drivers/iommu/dmar.c 	writel(0, iommu->reg + DMAR_IQT_REG);
iommu            1440 drivers/iommu/dmar.c 	dmar_writeq(iommu->reg + DMAR_IQA_REG, val);
iommu            1442 drivers/iommu/dmar.c 	iommu->gcmd |= DMA_GCMD_QIE;
iommu            1443 drivers/iommu/dmar.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu            1446 drivers/iommu/dmar.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, readl, (sts & DMA_GSTS_QIES), sts);
iommu            1448 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu            1456 drivers/iommu/dmar.c int dmar_enable_qi(struct intel_iommu *iommu)
iommu            1461 drivers/iommu/dmar.c 	if (!ecap_qis(iommu->ecap))
iommu            1467 drivers/iommu/dmar.c 	if (iommu->qi)
iommu            1470 drivers/iommu/dmar.c 	iommu->qi = kmalloc(sizeof(*qi), GFP_ATOMIC);
iommu            1471 drivers/iommu/dmar.c 	if (!iommu->qi)
iommu            1474 drivers/iommu/dmar.c 	qi = iommu->qi;
iommu            1480 drivers/iommu/dmar.c 	desc_page = alloc_pages_node(iommu->node, GFP_ATOMIC | __GFP_ZERO,
iommu            1481 drivers/iommu/dmar.c 				     !!ecap_smts(iommu->ecap));
iommu            1484 drivers/iommu/dmar.c 		iommu->qi = NULL;
iommu            1494 drivers/iommu/dmar.c 		iommu->qi = NULL;
iommu            1500 drivers/iommu/dmar.c 	__dmar_enable_qi(iommu);
iommu            1620 drivers/iommu/dmar.c static inline int dmar_msi_reg(struct intel_iommu *iommu, int irq)
iommu            1622 drivers/iommu/dmar.c 	if (iommu->irq == irq)
iommu            1624 drivers/iommu/dmar.c 	else if (iommu->pr_irq == irq)
iommu            1632 drivers/iommu/dmar.c 	struct intel_iommu *iommu = irq_data_get_irq_handler_data(data);
iommu            1633 drivers/iommu/dmar.c 	int reg = dmar_msi_reg(iommu, data->irq);
iommu            1637 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1638 drivers/iommu/dmar.c 	writel(0, iommu->reg + reg);
iommu            1640 drivers/iommu/dmar.c 	readl(iommu->reg + reg);
iommu            1641 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1646 drivers/iommu/dmar.c 	struct intel_iommu *iommu = irq_data_get_irq_handler_data(data);
iommu            1647 drivers/iommu/dmar.c 	int reg = dmar_msi_reg(iommu, data->irq);
iommu            1651 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1652 drivers/iommu/dmar.c 	writel(DMA_FECTL_IM, iommu->reg + reg);
iommu            1654 drivers/iommu/dmar.c 	readl(iommu->reg + reg);
iommu            1655 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1660 drivers/iommu/dmar.c 	struct intel_iommu *iommu = irq_get_handler_data(irq);
iommu            1661 drivers/iommu/dmar.c 	int reg = dmar_msi_reg(iommu, irq);
iommu            1664 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1665 drivers/iommu/dmar.c 	writel(msg->data, iommu->reg + reg + 4);
iommu            1666 drivers/iommu/dmar.c 	writel(msg->address_lo, iommu->reg + reg + 8);
iommu            1667 drivers/iommu/dmar.c 	writel(msg->address_hi, iommu->reg + reg + 12);
iommu            1668 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1673 drivers/iommu/dmar.c 	struct intel_iommu *iommu = irq_get_handler_data(irq);
iommu            1674 drivers/iommu/dmar.c 	int reg = dmar_msi_reg(iommu, irq);
iommu            1677 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1678 drivers/iommu/dmar.c 	msg->data = readl(iommu->reg + reg + 4);
iommu            1679 drivers/iommu/dmar.c 	msg->address_lo = readl(iommu->reg + reg + 8);
iommu            1680 drivers/iommu/dmar.c 	msg->address_hi = readl(iommu->reg + reg + 12);
iommu            1681 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1684 drivers/iommu/dmar.c static int dmar_fault_do_one(struct intel_iommu *iommu, int type,
iommu            1710 drivers/iommu/dmar.c 	struct intel_iommu *iommu = dev_id;
iommu            1718 drivers/iommu/dmar.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1719 drivers/iommu/dmar.c 	fault_status = readl(iommu->reg + DMAR_FSTS_REG);
iommu            1728 drivers/iommu/dmar.c 	reg = cap_fault_reg_offset(iommu->cap);
iommu            1740 drivers/iommu/dmar.c 		data = readl(iommu->reg + reg +
iommu            1750 drivers/iommu/dmar.c 			data = readl(iommu->reg + reg +
iommu            1755 drivers/iommu/dmar.c 			guest_addr = dmar_readq(iommu->reg + reg +
iommu            1761 drivers/iommu/dmar.c 		writel(DMA_FRCD_F, iommu->reg + reg +
iommu            1764 drivers/iommu/dmar.c 		raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1768 drivers/iommu/dmar.c 			dmar_fault_do_one(iommu, type, fault_reason,
iommu            1773 drivers/iommu/dmar.c 		if (fault_index >= cap_num_fault_regs(iommu->cap))
iommu            1775 drivers/iommu/dmar.c 		raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1779 drivers/iommu/dmar.c 	       iommu->reg + DMAR_FSTS_REG);
iommu            1782 drivers/iommu/dmar.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1786 drivers/iommu/dmar.c int dmar_set_interrupt(struct intel_iommu *iommu)
iommu            1793 drivers/iommu/dmar.c 	if (iommu->irq)
iommu            1796 drivers/iommu/dmar.c 	irq = dmar_alloc_hwirq(iommu->seq_id, iommu->node, iommu);
iommu            1798 drivers/iommu/dmar.c 		iommu->irq = irq;
iommu            1804 drivers/iommu/dmar.c 	ret = request_irq(irq, dmar_fault, IRQF_NO_THREAD, iommu->name, iommu);
iommu            1813 drivers/iommu/dmar.c 	struct intel_iommu *iommu;
iommu            1818 drivers/iommu/dmar.c 	for_each_iommu(iommu, drhd) {
iommu            1820 drivers/iommu/dmar.c 		int ret = dmar_set_interrupt(iommu);
iommu            1831 drivers/iommu/dmar.c 		dmar_fault(iommu->irq, iommu);
iommu            1832 drivers/iommu/dmar.c 		fault_status = readl(iommu->reg + DMAR_FSTS_REG);
iommu            1833 drivers/iommu/dmar.c 		writel(fault_status, iommu->reg + DMAR_FSTS_REG);
iommu            1842 drivers/iommu/dmar.c int dmar_reenable_qi(struct intel_iommu *iommu)
iommu            1844 drivers/iommu/dmar.c 	if (!ecap_qis(iommu->ecap))
iommu            1847 drivers/iommu/dmar.c 	if (!iommu->qi)
iommu            1853 drivers/iommu/dmar.c 	dmar_disable_qi(iommu);
iommu            1859 drivers/iommu/dmar.c 	__dmar_enable_qi(iommu);
iommu             176 drivers/iommu/exynos-iommu.c #define has_sysmmu(dev)		(dev->archdata.iommu != NULL)
iommu             278 drivers/iommu/exynos-iommu.c 	struct iommu_device iommu;	/* IOMMU core handle */
iommu             628 drivers/iommu/exynos-iommu.c 	ret = iommu_device_sysfs_add(&data->iommu, &pdev->dev, NULL,
iommu             633 drivers/iommu/exynos-iommu.c 	iommu_device_set_ops(&data->iommu, &exynos_iommu_ops);
iommu             634 drivers/iommu/exynos-iommu.c 	iommu_device_set_fwnode(&data->iommu, &dev->of_node->fwnode);
iommu             636 drivers/iommu/exynos-iommu.c 	ret = iommu_device_register(&data->iommu);
iommu             673 drivers/iommu/exynos-iommu.c 		struct exynos_iommu_owner *owner = master->archdata.iommu;
iommu             691 drivers/iommu/exynos-iommu.c 		struct exynos_iommu_owner *owner = master->archdata.iommu;
iommu             840 drivers/iommu/exynos-iommu.c 	struct exynos_iommu_owner *owner = dev->archdata.iommu;
iommu             878 drivers/iommu/exynos-iommu.c 	struct exynos_iommu_owner *owner = dev->archdata.iommu;
iommu            1240 drivers/iommu/exynos-iommu.c 	struct exynos_iommu_owner *owner = dev->archdata.iommu;
iommu            1269 drivers/iommu/exynos-iommu.c 	struct exynos_iommu_owner *owner = dev->archdata.iommu;
iommu            1294 drivers/iommu/exynos-iommu.c 	struct exynos_iommu_owner *owner = dev->archdata.iommu;
iommu            1312 drivers/iommu/exynos-iommu.c 		dev->archdata.iommu = owner;
iommu             112 drivers/iommu/intel-iommu-debugfs.c 	struct intel_iommu *iommu;
iommu             118 drivers/iommu/intel-iommu-debugfs.c 	for_each_active_iommu(iommu, drhd) {
iommu             126 drivers/iommu/intel-iommu-debugfs.c 			   iommu->name, drhd->reg_base_addr);
iommu             132 drivers/iommu/intel-iommu-debugfs.c 		raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu             134 drivers/iommu/intel-iommu-debugfs.c 			value = dmar_readl(iommu->reg + iommu_regs_32[i].offset);
iommu             140 drivers/iommu/intel-iommu-debugfs.c 			value = dmar_readq(iommu->reg + iommu_regs_64[i].offset);
iommu             145 drivers/iommu/intel-iommu-debugfs.c 		raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu             213 drivers/iommu/intel-iommu-debugfs.c static void ctx_tbl_walk(struct seq_file *m, struct intel_iommu *iommu, u16 bus)
iommu             235 drivers/iommu/intel-iommu-debugfs.c 		context = iommu_context_addr(iommu, bus, devfn, 0);
iommu             244 drivers/iommu/intel-iommu-debugfs.c 		tbl_wlk.rt_entry = &iommu->root_entry[bus];
iommu             248 drivers/iommu/intel-iommu-debugfs.c 		if (dmar_readq(iommu->reg + DMAR_RTADDR_REG) & DMA_RTADDR_SMT) {
iommu             259 drivers/iommu/intel-iommu-debugfs.c static void root_tbl_walk(struct seq_file *m, struct intel_iommu *iommu)
iommu             264 drivers/iommu/intel-iommu-debugfs.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             265 drivers/iommu/intel-iommu-debugfs.c 	seq_printf(m, "IOMMU %s: Root Table Address: 0x%llx\n", iommu->name,
iommu             266 drivers/iommu/intel-iommu-debugfs.c 		   (u64)virt_to_phys(iommu->root_entry));
iommu             275 drivers/iommu/intel-iommu-debugfs.c 		ctx_tbl_walk(m, iommu, bus);
iommu             277 drivers/iommu/intel-iommu-debugfs.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             283 drivers/iommu/intel-iommu-debugfs.c 	struct intel_iommu *iommu;
iommu             287 drivers/iommu/intel-iommu-debugfs.c 	for_each_active_iommu(iommu, drhd) {
iommu             288 drivers/iommu/intel-iommu-debugfs.c 		sts = dmar_readl(iommu->reg + DMAR_GSTS_REG);
iommu             291 drivers/iommu/intel-iommu-debugfs.c 				   iommu->name);
iommu             294 drivers/iommu/intel-iommu-debugfs.c 		root_tbl_walk(m, iommu);
iommu             305 drivers/iommu/intel-iommu-debugfs.c 				    struct intel_iommu *iommu)
iommu             315 drivers/iommu/intel-iommu-debugfs.c 		ri_entry = &iommu->ir_table->base[idx];
iommu             329 drivers/iommu/intel-iommu-debugfs.c 				     struct intel_iommu *iommu)
iommu             339 drivers/iommu/intel-iommu-debugfs.c 		pi_entry = &iommu->ir_table->base[idx];
iommu             361 drivers/iommu/intel-iommu-debugfs.c 	struct intel_iommu *iommu;
iommu             366 drivers/iommu/intel-iommu-debugfs.c 	for_each_active_iommu(iommu, drhd) {
iommu             367 drivers/iommu/intel-iommu-debugfs.c 		if (!ecap_ir_support(iommu->ecap))
iommu             371 drivers/iommu/intel-iommu-debugfs.c 			   iommu->name);
iommu             373 drivers/iommu/intel-iommu-debugfs.c 		sts = dmar_readl(iommu->reg + DMAR_GSTS_REG);
iommu             374 drivers/iommu/intel-iommu-debugfs.c 		if (iommu->ir_table && (sts & DMA_GSTS_IRES)) {
iommu             375 drivers/iommu/intel-iommu-debugfs.c 			irta = virt_to_phys(iommu->ir_table->base);
iommu             377 drivers/iommu/intel-iommu-debugfs.c 			ir_tbl_remap_entry_show(m, iommu);
iommu             386 drivers/iommu/intel-iommu-debugfs.c 	for_each_active_iommu(iommu, drhd) {
iommu             387 drivers/iommu/intel-iommu-debugfs.c 		if (!cap_pi_support(iommu->cap))
iommu             391 drivers/iommu/intel-iommu-debugfs.c 			   iommu->name);
iommu             393 drivers/iommu/intel-iommu-debugfs.c 		if (iommu->ir_table) {
iommu             394 drivers/iommu/intel-iommu-debugfs.c 			irta = virt_to_phys(iommu->ir_table->base);
iommu             396 drivers/iommu/intel-iommu-debugfs.c 			ir_tbl_posted_entry_show(m, iommu);
iommu             344 drivers/iommu/intel-iommu.c static void domain_context_clear(struct intel_iommu *iommu,
iommu             347 drivers/iommu/intel-iommu.c 			       struct intel_iommu *iommu);
iommu             412 drivers/iommu/intel-iommu.c static bool translation_pre_enabled(struct intel_iommu *iommu)
iommu             414 drivers/iommu/intel-iommu.c 	return (iommu->flags & VTD_FLAG_TRANS_PRE_ENABLED);
iommu             417 drivers/iommu/intel-iommu.c static void clear_translation_pre_enabled(struct intel_iommu *iommu)
iommu             419 drivers/iommu/intel-iommu.c 	iommu->flags &= ~VTD_FLAG_TRANS_PRE_ENABLED;
iommu             422 drivers/iommu/intel-iommu.c static void init_translation_status(struct intel_iommu *iommu)
iommu             426 drivers/iommu/intel-iommu.c 	gsts = readl(iommu->reg + DMAR_GSTS_REG);
iommu             428 drivers/iommu/intel-iommu.c 		iommu->flags |= VTD_FLAG_TRANS_PRE_ENABLED;
iommu             484 drivers/iommu/intel-iommu.c static struct dmar_domain* get_iommu_domain(struct intel_iommu *iommu, u16 did)
iommu             489 drivers/iommu/intel-iommu.c 	domains = iommu->domains[idx];
iommu             496 drivers/iommu/intel-iommu.c static void set_iommu_domain(struct intel_iommu *iommu, u16 did,
iommu             502 drivers/iommu/intel-iommu.c 	if (!iommu->domains[idx]) {
iommu             504 drivers/iommu/intel-iommu.c 		iommu->domains[idx] = kzalloc(size, GFP_ATOMIC);
iommu             507 drivers/iommu/intel-iommu.c 	domains = iommu->domains[idx];
iommu             563 drivers/iommu/intel-iommu.c static int __iommu_calculate_agaw(struct intel_iommu *iommu, int max_gaw)
iommu             568 drivers/iommu/intel-iommu.c 	sagaw = cap_sagaw(iommu->cap);
iommu             581 drivers/iommu/intel-iommu.c int iommu_calculate_max_sagaw(struct intel_iommu *iommu)
iommu             583 drivers/iommu/intel-iommu.c 	return __iommu_calculate_agaw(iommu, MAX_AGAW_WIDTH);
iommu             591 drivers/iommu/intel-iommu.c int iommu_calculate_agaw(struct intel_iommu *iommu)
iommu             593 drivers/iommu/intel-iommu.c 	return __iommu_calculate_agaw(iommu, DEFAULT_DOMAIN_ADDRESS_WIDTH);
iommu             617 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu             635 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu             636 drivers/iommu/intel-iommu.c 		if (!ecap_coherent(iommu->ecap)) {
iommu             647 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu             651 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu             652 drivers/iommu/intel-iommu.c 		if (iommu != skip) {
iommu             653 drivers/iommu/intel-iommu.c 			if (!ecap_sc_support(iommu->ecap)) {
iommu             667 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu             676 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu             677 drivers/iommu/intel-iommu.c 		if (iommu != skip) {
iommu             678 drivers/iommu/intel-iommu.c 			mask &= cap_super_page_val(iommu->cap);
iommu             696 drivers/iommu/intel-iommu.c struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
iommu             699 drivers/iommu/intel-iommu.c 	struct root_entry *root = &iommu->root_entry[bus];
iommu             704 drivers/iommu/intel-iommu.c 	if (sm_supported(iommu)) {
iommu             718 drivers/iommu/intel-iommu.c 		context = alloc_pgtable_page(iommu->node);
iommu             722 drivers/iommu/intel-iommu.c 		__iommu_flush_cache(iommu, (void *)context, CONTEXT_SIZE);
iommu             725 drivers/iommu/intel-iommu.c 		__iommu_flush_cache(iommu, entry, sizeof(*entry));
iommu             732 drivers/iommu/intel-iommu.c 	return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO;
iommu             765 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu             794 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu             824 drivers/iommu/intel-iommu.c 	iommu = NULL;
iommu             828 drivers/iommu/intel-iommu.c 	return iommu;
iommu             838 drivers/iommu/intel-iommu.c static int device_context_mapped(struct intel_iommu *iommu, u8 bus, u8 devfn)
iommu             844 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             845 drivers/iommu/intel-iommu.c 	context = iommu_context_addr(iommu, bus, devfn, 0);
iommu             848 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu             852 drivers/iommu/intel-iommu.c static void free_context_table(struct intel_iommu *iommu)
iommu             858 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu             859 drivers/iommu/intel-iommu.c 	if (!iommu->root_entry) {
iommu             863 drivers/iommu/intel-iommu.c 		context = iommu_context_addr(iommu, i, 0, 0);
iommu             867 drivers/iommu/intel-iommu.c 		if (!sm_supported(iommu))
iommu             870 drivers/iommu/intel-iommu.c 		context = iommu_context_addr(iommu, i, 0x80, 0);
iommu             875 drivers/iommu/intel-iommu.c 	free_pgtable_page(iommu->root_entry);
iommu             876 drivers/iommu/intel-iommu.c 	iommu->root_entry = NULL;
iommu             878 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            1190 drivers/iommu/intel-iommu.c static int iommu_alloc_root_entry(struct intel_iommu *iommu)
iommu            1195 drivers/iommu/intel-iommu.c 	root = (struct root_entry *)alloc_pgtable_page(iommu->node);
iommu            1198 drivers/iommu/intel-iommu.c 			iommu->name);
iommu            1202 drivers/iommu/intel-iommu.c 	__iommu_flush_cache(iommu, root, ROOT_SIZE);
iommu            1204 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu            1205 drivers/iommu/intel-iommu.c 	iommu->root_entry = root;
iommu            1206 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            1211 drivers/iommu/intel-iommu.c static void iommu_set_root_entry(struct intel_iommu *iommu)
iommu            1217 drivers/iommu/intel-iommu.c 	addr = virt_to_phys(iommu->root_entry);
iommu            1218 drivers/iommu/intel-iommu.c 	if (sm_supported(iommu))
iommu            1221 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1222 drivers/iommu/intel-iommu.c 	dmar_writeq(iommu->reg + DMAR_RTADDR_REG, addr);
iommu            1224 drivers/iommu/intel-iommu.c 	writel(iommu->gcmd | DMA_GCMD_SRTP, iommu->reg + DMAR_GCMD_REG);
iommu            1227 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu            1230 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1233 drivers/iommu/intel-iommu.c void iommu_flush_write_buffer(struct intel_iommu *iommu)
iommu            1238 drivers/iommu/intel-iommu.c 	if (!rwbf_quirk && !cap_rwbf(iommu->cap))
iommu            1241 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1242 drivers/iommu/intel-iommu.c 	writel(iommu->gcmd | DMA_GCMD_WBF, iommu->reg + DMAR_GCMD_REG);
iommu            1245 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu            1248 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1252 drivers/iommu/intel-iommu.c static void __iommu_flush_context(struct intel_iommu *iommu,
iommu            1275 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1276 drivers/iommu/intel-iommu.c 	dmar_writeq(iommu->reg + DMAR_CCMD_REG, val);
iommu            1279 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_CCMD_REG,
iommu            1282 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1286 drivers/iommu/intel-iommu.c static void __iommu_flush_iotlb(struct intel_iommu *iommu, u16 did,
iommu            1289 drivers/iommu/intel-iommu.c 	int tlb_offset = ecap_iotlb_offset(iommu->ecap);
iommu            1315 drivers/iommu/intel-iommu.c 	if (cap_read_drain(iommu->cap))
iommu            1318 drivers/iommu/intel-iommu.c 	if (cap_write_drain(iommu->cap))
iommu            1321 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1324 drivers/iommu/intel-iommu.c 		dmar_writeq(iommu->reg + tlb_offset, val_iva);
iommu            1325 drivers/iommu/intel-iommu.c 	dmar_writeq(iommu->reg + tlb_offset + 8, val);
iommu            1328 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, tlb_offset + 8,
iommu            1331 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1343 drivers/iommu/intel-iommu.c iommu_support_dev_iotlb (struct dmar_domain *domain, struct intel_iommu *iommu,
iommu            1350 drivers/iommu/intel-iommu.c 	if (!iommu->qi)
iommu            1354 drivers/iommu/intel-iommu.c 		if (info->iommu == iommu && info->bus == bus &&
iommu            1402 drivers/iommu/intel-iommu.c 	if (!ecap_dit(info->iommu->ecap))
iommu            1480 drivers/iommu/intel-iommu.c 		qi_flush_dev_iotlb(info->iommu, sid, info->pfsid,
iommu            1486 drivers/iommu/intel-iommu.c static void iommu_flush_iotlb_psi(struct intel_iommu *iommu,
iommu            1493 drivers/iommu/intel-iommu.c 	u16 did = domain->iommu_did[iommu->seq_id];
iommu            1505 drivers/iommu/intel-iommu.c 	if (!cap_pgsel_inv(iommu->cap) || mask > cap_max_amask_val(iommu->cap))
iommu            1506 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, did, 0, 0,
iommu            1509 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, did, addr | ih, mask,
iommu            1516 drivers/iommu/intel-iommu.c 	if (!cap_caching_mode(iommu->cap) || !map)
iommu            1521 drivers/iommu/intel-iommu.c static inline void __mapping_notify_one(struct intel_iommu *iommu,
iommu            1526 drivers/iommu/intel-iommu.c 	if (cap_caching_mode(iommu->cap))
iommu            1527 drivers/iommu/intel-iommu.c 		iommu_flush_iotlb_psi(iommu, domain, pfn, pages, 0, 1);
iommu            1529 drivers/iommu/intel-iommu.c 		iommu_flush_write_buffer(iommu);
iommu            1540 drivers/iommu/intel-iommu.c 		struct intel_iommu *iommu = g_iommus[idx];
iommu            1541 drivers/iommu/intel-iommu.c 		u16 did = domain->iommu_did[iommu->seq_id];
iommu            1543 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH);
iommu            1545 drivers/iommu/intel-iommu.c 		if (!cap_caching_mode(iommu->cap))
iommu            1546 drivers/iommu/intel-iommu.c 			iommu_flush_dev_iotlb(get_iommu_domain(iommu, did),
iommu            1551 drivers/iommu/intel-iommu.c static void iommu_disable_protect_mem_regions(struct intel_iommu *iommu)
iommu            1556 drivers/iommu/intel-iommu.c 	if (!cap_plmr(iommu->cap) && !cap_phmr(iommu->cap))
iommu            1559 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu            1560 drivers/iommu/intel-iommu.c 	pmen = readl(iommu->reg + DMAR_PMEN_REG);
iommu            1562 drivers/iommu/intel-iommu.c 	writel(pmen, iommu->reg + DMAR_PMEN_REG);
iommu            1565 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_PMEN_REG,
iommu            1568 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu            1571 drivers/iommu/intel-iommu.c static void iommu_enable_translation(struct intel_iommu *iommu)
iommu            1576 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu            1577 drivers/iommu/intel-iommu.c 	iommu->gcmd |= DMA_GCMD_TE;
iommu            1578 drivers/iommu/intel-iommu.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu            1581 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu            1584 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu            1587 drivers/iommu/intel-iommu.c static void iommu_disable_translation(struct intel_iommu *iommu)
iommu            1592 drivers/iommu/intel-iommu.c 	raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            1593 drivers/iommu/intel-iommu.c 	iommu->gcmd &= ~DMA_GCMD_TE;
iommu            1594 drivers/iommu/intel-iommu.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu            1597 drivers/iommu/intel-iommu.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu            1600 drivers/iommu/intel-iommu.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            1603 drivers/iommu/intel-iommu.c static int iommu_init_domains(struct intel_iommu *iommu)
iommu            1608 drivers/iommu/intel-iommu.c 	ndomains = cap_ndoms(iommu->cap);
iommu            1610 drivers/iommu/intel-iommu.c 		 iommu->name, ndomains);
iommu            1613 drivers/iommu/intel-iommu.c 	spin_lock_init(&iommu->lock);
iommu            1615 drivers/iommu/intel-iommu.c 	iommu->domain_ids = kcalloc(nlongs, sizeof(unsigned long), GFP_KERNEL);
iommu            1616 drivers/iommu/intel-iommu.c 	if (!iommu->domain_ids) {
iommu            1618 drivers/iommu/intel-iommu.c 		       iommu->name);
iommu            1623 drivers/iommu/intel-iommu.c 	iommu->domains = kzalloc(size, GFP_KERNEL);
iommu            1625 drivers/iommu/intel-iommu.c 	if (iommu->domains) {
iommu            1627 drivers/iommu/intel-iommu.c 		iommu->domains[0] = kzalloc(size, GFP_KERNEL);
iommu            1630 drivers/iommu/intel-iommu.c 	if (!iommu->domains || !iommu->domains[0]) {
iommu            1632 drivers/iommu/intel-iommu.c 		       iommu->name);
iommu            1633 drivers/iommu/intel-iommu.c 		kfree(iommu->domain_ids);
iommu            1634 drivers/iommu/intel-iommu.c 		kfree(iommu->domains);
iommu            1635 drivers/iommu/intel-iommu.c 		iommu->domain_ids = NULL;
iommu            1636 drivers/iommu/intel-iommu.c 		iommu->domains    = NULL;
iommu            1646 drivers/iommu/intel-iommu.c 	set_bit(0, iommu->domain_ids);
iommu            1655 drivers/iommu/intel-iommu.c 	if (sm_supported(iommu))
iommu            1656 drivers/iommu/intel-iommu.c 		set_bit(FLPT_DEFAULT_DID, iommu->domain_ids);
iommu            1661 drivers/iommu/intel-iommu.c static void disable_dmar_iommu(struct intel_iommu *iommu)
iommu            1666 drivers/iommu/intel-iommu.c 	if (!iommu->domains || !iommu->domain_ids)
iommu            1671 drivers/iommu/intel-iommu.c 		if (info->iommu != iommu)
iommu            1681 drivers/iommu/intel-iommu.c 	if (iommu->gcmd & DMA_GCMD_TE)
iommu            1682 drivers/iommu/intel-iommu.c 		iommu_disable_translation(iommu);
iommu            1685 drivers/iommu/intel-iommu.c static void free_dmar_iommu(struct intel_iommu *iommu)
iommu            1687 drivers/iommu/intel-iommu.c 	if ((iommu->domains) && (iommu->domain_ids)) {
iommu            1688 drivers/iommu/intel-iommu.c 		int elems = ALIGN(cap_ndoms(iommu->cap), 256) >> 8;
iommu            1692 drivers/iommu/intel-iommu.c 			kfree(iommu->domains[i]);
iommu            1693 drivers/iommu/intel-iommu.c 		kfree(iommu->domains);
iommu            1694 drivers/iommu/intel-iommu.c 		kfree(iommu->domain_ids);
iommu            1695 drivers/iommu/intel-iommu.c 		iommu->domains = NULL;
iommu            1696 drivers/iommu/intel-iommu.c 		iommu->domain_ids = NULL;
iommu            1699 drivers/iommu/intel-iommu.c 	g_iommus[iommu->seq_id] = NULL;
iommu            1702 drivers/iommu/intel-iommu.c 	free_context_table(iommu);
iommu            1705 drivers/iommu/intel-iommu.c 	if (pasid_supported(iommu)) {
iommu            1706 drivers/iommu/intel-iommu.c 		if (ecap_prs(iommu->ecap))
iommu            1707 drivers/iommu/intel-iommu.c 			intel_svm_finish_prq(iommu);
iommu            1731 drivers/iommu/intel-iommu.c 			       struct intel_iommu *iommu)
iommu            1737 drivers/iommu/intel-iommu.c 	assert_spin_locked(&iommu->lock);
iommu            1739 drivers/iommu/intel-iommu.c 	domain->iommu_refcnt[iommu->seq_id] += 1;
iommu            1741 drivers/iommu/intel-iommu.c 	if (domain->iommu_refcnt[iommu->seq_id] == 1) {
iommu            1742 drivers/iommu/intel-iommu.c 		ndomains = cap_ndoms(iommu->cap);
iommu            1743 drivers/iommu/intel-iommu.c 		num      = find_first_zero_bit(iommu->domain_ids, ndomains);
iommu            1746 drivers/iommu/intel-iommu.c 			pr_err("%s: No free domain ids\n", iommu->name);
iommu            1747 drivers/iommu/intel-iommu.c 			domain->iommu_refcnt[iommu->seq_id] -= 1;
iommu            1752 drivers/iommu/intel-iommu.c 		set_bit(num, iommu->domain_ids);
iommu            1753 drivers/iommu/intel-iommu.c 		set_iommu_domain(iommu, num, domain);
iommu            1755 drivers/iommu/intel-iommu.c 		domain->iommu_did[iommu->seq_id] = num;
iommu            1756 drivers/iommu/intel-iommu.c 		domain->nid			 = iommu->node;
iommu            1765 drivers/iommu/intel-iommu.c 			       struct intel_iommu *iommu)
iommu            1770 drivers/iommu/intel-iommu.c 	assert_spin_locked(&iommu->lock);
iommu            1772 drivers/iommu/intel-iommu.c 	domain->iommu_refcnt[iommu->seq_id] -= 1;
iommu            1774 drivers/iommu/intel-iommu.c 	if (domain->iommu_refcnt[iommu->seq_id] == 0) {
iommu            1775 drivers/iommu/intel-iommu.c 		num = domain->iommu_did[iommu->seq_id];
iommu            1776 drivers/iommu/intel-iommu.c 		clear_bit(num, iommu->domain_ids);
iommu            1777 drivers/iommu/intel-iommu.c 		set_iommu_domain(iommu, num, NULL);
iommu            1780 drivers/iommu/intel-iommu.c 		domain->iommu_did[iommu->seq_id] = 0;
iommu            1847 drivers/iommu/intel-iommu.c static int domain_init(struct dmar_domain *domain, struct intel_iommu *iommu,
iommu            1864 drivers/iommu/intel-iommu.c 	if (guest_width > cap_mgaw(iommu->cap))
iommu            1865 drivers/iommu/intel-iommu.c 		guest_width = cap_mgaw(iommu->cap);
iommu            1869 drivers/iommu/intel-iommu.c 	sagaw = cap_sagaw(iommu->cap);
iommu            1879 drivers/iommu/intel-iommu.c 	if (ecap_coherent(iommu->ecap))
iommu            1884 drivers/iommu/intel-iommu.c 	if (ecap_sc_support(iommu->ecap))
iommu            1890 drivers/iommu/intel-iommu.c 		domain->iommu_superpage = fls(cap_super_page_val(iommu->cap));
iommu            1894 drivers/iommu/intel-iommu.c 	domain->nid = iommu->node;
iommu            1900 drivers/iommu/intel-iommu.c 	__iommu_flush_cache(iommu, domain->pgd, PAGE_SIZE);
iommu            1974 drivers/iommu/intel-iommu.c 				      struct intel_iommu *iommu,
iommu            1978 drivers/iommu/intel-iommu.c 	u16 did = domain->iommu_did[iommu->seq_id];
iommu            1996 drivers/iommu/intel-iommu.c 	spin_lock(&iommu->lock);
iommu            1999 drivers/iommu/intel-iommu.c 	context = iommu_context_addr(iommu, bus, devfn, 1);
iommu            2019 drivers/iommu/intel-iommu.c 		if (did_old < cap_ndoms(iommu->cap)) {
iommu            2020 drivers/iommu/intel-iommu.c 			iommu->flush.flush_context(iommu, did_old,
iommu            2024 drivers/iommu/intel-iommu.c 			iommu->flush.flush_iotlb(iommu, did_old, 0, 0,
iommu            2031 drivers/iommu/intel-iommu.c 	if (sm_supported(iommu)) {
iommu            2048 drivers/iommu/intel-iommu.c 		info = iommu_support_dev_iotlb(domain, iommu, bus, devfn);
iommu            2064 drivers/iommu/intel-iommu.c 			for (agaw = domain->agaw; agaw > iommu->agaw; agaw--) {
iommu            2071 drivers/iommu/intel-iommu.c 			info = iommu_support_dev_iotlb(domain, iommu, bus, devfn);
iommu            2085 drivers/iommu/intel-iommu.c 			context_set_address_width(context, iommu->msagaw);
iommu            2101 drivers/iommu/intel-iommu.c 	if (cap_caching_mode(iommu->cap)) {
iommu            2102 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context(iommu, 0,
iommu            2106 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, did, 0, 0, DMA_TLB_DSI_FLUSH);
iommu            2108 drivers/iommu/intel-iommu.c 		iommu_flush_write_buffer(iommu);
iommu            2115 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            2123 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2132 drivers/iommu/intel-iommu.c 	return domain_context_mapping_one(data->domain, data->iommu,
iommu            2142 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2145 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            2146 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2152 drivers/iommu/intel-iommu.c 		return domain_context_mapping_one(domain, iommu, table,
iommu            2156 drivers/iommu/intel-iommu.c 	data.iommu = iommu;
iommu            2166 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = opaque;
iommu            2168 drivers/iommu/intel-iommu.c 	return !device_context_mapped(iommu, PCI_BUS_NUM(alias), alias & 0xff);
iommu            2173 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2176 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            2177 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2181 drivers/iommu/intel-iommu.c 		return device_context_mapped(iommu, bus, devfn);
iommu            2184 drivers/iommu/intel-iommu.c 				       domain_context_mapped_cb, iommu);
iommu            2343 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2351 drivers/iommu/intel-iommu.c 		iommu = g_iommus[iommu_id];
iommu            2352 drivers/iommu/intel-iommu.c 		__mapping_notify_one(iommu, domain, iov_pfn, nr_pages);
iommu            2372 drivers/iommu/intel-iommu.c static void domain_context_clear_one(struct intel_iommu *iommu, u8 bus, u8 devfn)
iommu            2378 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2381 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu            2382 drivers/iommu/intel-iommu.c 	context = iommu_context_addr(iommu, bus, devfn, 0);
iommu            2384 drivers/iommu/intel-iommu.c 		spin_unlock_irqrestore(&iommu->lock, flags);
iommu            2389 drivers/iommu/intel-iommu.c 	__iommu_flush_cache(iommu, context, sizeof(*context));
iommu            2390 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            2391 drivers/iommu/intel-iommu.c 	iommu->flush.flush_context(iommu,
iommu            2396 drivers/iommu/intel-iommu.c 	iommu->flush.flush_iotlb(iommu,
iommu            2409 drivers/iommu/intel-iommu.c 		info->dev->archdata.iommu = NULL;
iommu            2431 drivers/iommu/intel-iommu.c 	if (unlikely(dev->archdata.iommu == DEFER_DEVICE_DOMAIN_INFO)) {
iommu            2434 drivers/iommu/intel-iommu.c 		dev->archdata.iommu = NULL;
iommu            2441 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            2454 drivers/iommu/intel-iommu.c 		if (info->iommu->segment == segment && info->bus == bus &&
iommu            2461 drivers/iommu/intel-iommu.c static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,
iommu            2482 drivers/iommu/intel-iommu.c 	info->iommu = iommu;
iommu            2492 drivers/iommu/intel-iommu.c 		    ecap_dev_iotlb_support(iommu->ecap) &&
iommu            2497 drivers/iommu/intel-iommu.c 		if (sm_supported(iommu)) {
iommu            2498 drivers/iommu/intel-iommu.c 			if (pasid_supported(iommu)) {
iommu            2504 drivers/iommu/intel-iommu.c 			if (info->ats_supported && ecap_prs(iommu->ecap) &&
iommu            2516 drivers/iommu/intel-iommu.c 		info2 = dmar_search_domain_by_dev_info(iommu->segment, bus, devfn);
iommu            2530 drivers/iommu/intel-iommu.c 	spin_lock(&iommu->lock);
iommu            2531 drivers/iommu/intel-iommu.c 	ret = domain_attach_iommu(domain, iommu);
iommu            2532 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            2543 drivers/iommu/intel-iommu.c 		dev->archdata.iommu = info;
iommu            2547 drivers/iommu/intel-iommu.c 	if (dev && dev_is_pci(dev) && sm_supported(iommu)) {
iommu            2556 drivers/iommu/intel-iommu.c 		spin_lock(&iommu->lock);
iommu            2558 drivers/iommu/intel-iommu.c 			ret = intel_pasid_setup_pass_through(iommu, domain,
iommu            2561 drivers/iommu/intel-iommu.c 			ret = intel_pasid_setup_second_level(iommu, domain,
iommu            2563 drivers/iommu/intel-iommu.c 		spin_unlock(&iommu->lock);
iommu            2590 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2595 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            2596 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2609 drivers/iommu/intel-iommu.c 			iommu = info->iommu;
iommu            2623 drivers/iommu/intel-iommu.c 	if (domain_init(domain, iommu, gaw)) {
iommu            2635 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2640 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            2641 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2653 drivers/iommu/intel-iommu.c 			tmp = dmar_insert_one_dev_info(iommu, PCI_BUS_NUM(dma_alias),
iommu            2661 drivers/iommu/intel-iommu.c 	tmp = dmar_insert_one_dev_info(iommu, bus, devfn, dev, domain);
iommu            2791 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            2801 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            2804 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            2805 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            2808 drivers/iommu/intel-iommu.c 	ndomain = dmar_insert_one_dev_info(iommu, bus, devfn, dev, domain);
iommu            2955 drivers/iommu/intel-iommu.c static void intel_iommu_init_qi(struct intel_iommu *iommu)
iommu            2963 drivers/iommu/intel-iommu.c 	if (!iommu->qi) {
iommu            2967 drivers/iommu/intel-iommu.c 		dmar_fault(-1, iommu);
iommu            2972 drivers/iommu/intel-iommu.c 		dmar_disable_qi(iommu);
iommu            2975 drivers/iommu/intel-iommu.c 	if (dmar_enable_qi(iommu)) {
iommu            2979 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context = __iommu_flush_context;
iommu            2980 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb = __iommu_flush_iotlb;
iommu            2982 drivers/iommu/intel-iommu.c 			iommu->name);
iommu            2984 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context = qi_flush_context;
iommu            2985 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb = qi_flush_iotlb;
iommu            2986 drivers/iommu/intel-iommu.c 		pr_info("%s: Using Queued invalidation\n", iommu->name);
iommu            2990 drivers/iommu/intel-iommu.c static int copy_context_table(struct intel_iommu *iommu,
iommu            3012 drivers/iommu/intel-iommu.c 				__iommu_flush_cache(iommu, new_ce,
iommu            3042 drivers/iommu/intel-iommu.c 			new_ce = alloc_pgtable_page(iommu->node);
iommu            3056 drivers/iommu/intel-iommu.c 		if (did >= 0 && did < cap_ndoms(iommu->cap))
iommu            3057 drivers/iommu/intel-iommu.c 			set_bit(did, iommu->domain_ids);
iommu            3083 drivers/iommu/intel-iommu.c 	__iommu_flush_cache(iommu, new_ce, VTD_PAGE_SIZE);
iommu            3092 drivers/iommu/intel-iommu.c static int copy_translation_tables(struct intel_iommu *iommu)
iommu            3103 drivers/iommu/intel-iommu.c 	rtaddr_reg = dmar_readq(iommu->reg + DMAR_RTADDR_REG);
iommu            3105 drivers/iommu/intel-iommu.c 	new_ext    = !!ecap_ecs(iommu->ecap);
iommu            3132 drivers/iommu/intel-iommu.c 		ret = copy_context_table(iommu, &old_rt[bus],
iommu            3136 drivers/iommu/intel-iommu.c 				iommu->name, bus);
iommu            3141 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu            3150 drivers/iommu/intel-iommu.c 			iommu->root_entry[bus].lo = val;
iommu            3157 drivers/iommu/intel-iommu.c 		iommu->root_entry[bus].hi = val;
iommu            3160 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            3164 drivers/iommu/intel-iommu.c 	__iommu_flush_cache(iommu, iommu->root_entry, PAGE_SIZE);
iommu            3177 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            3211 drivers/iommu/intel-iommu.c 	for_each_iommu(iommu, drhd) {
iommu            3213 drivers/iommu/intel-iommu.c 			iommu_disable_translation(iommu);
iommu            3222 drivers/iommu/intel-iommu.c 		if (pasid_supported(iommu)) {
iommu            3223 drivers/iommu/intel-iommu.c 			u32 temp = 2 << ecap_pss(iommu->ecap);
iommu            3229 drivers/iommu/intel-iommu.c 		g_iommus[iommu->seq_id] = iommu;
iommu            3231 drivers/iommu/intel-iommu.c 		intel_iommu_init_qi(iommu);
iommu            3233 drivers/iommu/intel-iommu.c 		ret = iommu_init_domains(iommu);
iommu            3237 drivers/iommu/intel-iommu.c 		init_translation_status(iommu);
iommu            3239 drivers/iommu/intel-iommu.c 		if (translation_pre_enabled(iommu) && !is_kdump_kernel()) {
iommu            3240 drivers/iommu/intel-iommu.c 			iommu_disable_translation(iommu);
iommu            3241 drivers/iommu/intel-iommu.c 			clear_translation_pre_enabled(iommu);
iommu            3243 drivers/iommu/intel-iommu.c 				iommu->name);
iommu            3251 drivers/iommu/intel-iommu.c 		ret = iommu_alloc_root_entry(iommu);
iommu            3255 drivers/iommu/intel-iommu.c 		if (translation_pre_enabled(iommu)) {
iommu            3258 drivers/iommu/intel-iommu.c 			ret = copy_translation_tables(iommu);
iommu            3270 drivers/iommu/intel-iommu.c 				       iommu->name);
iommu            3271 drivers/iommu/intel-iommu.c 				iommu_disable_translation(iommu);
iommu            3272 drivers/iommu/intel-iommu.c 				clear_translation_pre_enabled(iommu);
iommu            3275 drivers/iommu/intel-iommu.c 					iommu->name);
iommu            3279 drivers/iommu/intel-iommu.c 		if (!ecap_pass_through(iommu->ecap))
iommu            3282 drivers/iommu/intel-iommu.c 		if (pasid_supported(iommu))
iommu            3283 drivers/iommu/intel-iommu.c 			intel_svm_init(iommu);
iommu            3292 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            3293 drivers/iommu/intel-iommu.c 		iommu_flush_write_buffer(iommu);
iommu            3294 drivers/iommu/intel-iommu.c 		iommu_set_root_entry(iommu);
iommu            3295 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL);
iommu            3296 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
iommu            3322 drivers/iommu/intel-iommu.c 	for_each_iommu(iommu, drhd) {
iommu            3329 drivers/iommu/intel-iommu.c 				iommu_disable_protect_mem_regions(iommu);
iommu            3333 drivers/iommu/intel-iommu.c 		iommu_flush_write_buffer(iommu);
iommu            3336 drivers/iommu/intel-iommu.c 		if (pasid_supported(iommu) && ecap_prs(iommu->ecap)) {
iommu            3342 drivers/iommu/intel-iommu.c 			ret = intel_svm_enable_prq(iommu);
iommu            3348 drivers/iommu/intel-iommu.c 		ret = dmar_set_interrupt(iommu);
iommu            3356 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            3357 drivers/iommu/intel-iommu.c 		disable_dmar_iommu(iommu);
iommu            3358 drivers/iommu/intel-iommu.c 		free_dmar_iommu(iommu);
iommu            3500 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            3509 drivers/iommu/intel-iommu.c 	iommu = domain_get_iommu(domain);
iommu            3521 drivers/iommu/intel-iommu.c 			!cap_zlr(iommu->cap))
iommu            3578 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            3585 drivers/iommu/intel-iommu.c 	iommu = domain_get_iommu(domain);
iommu            3599 drivers/iommu/intel-iommu.c 		iommu_flush_iotlb_psi(iommu, domain, start_pfn,
iommu            3719 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            3729 drivers/iommu/intel-iommu.c 	iommu = domain_get_iommu(domain);
iommu            3746 drivers/iommu/intel-iommu.c 			!cap_zlr(iommu->cap))
iommu            3813 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            3824 drivers/iommu/intel-iommu.c 	iommu = domain_get_iommu(domain);
iommu            3825 drivers/iommu/intel-iommu.c 	if (WARN_ON(!iommu))
iommu            3839 drivers/iommu/intel-iommu.c 			!cap_zlr(iommu->cap))
iommu            4124 drivers/iommu/intel-iommu.c 		pdev->dev.archdata.iommu = DUMMY_DEVICE_DOMAIN_INFO;
iommu            4163 drivers/iommu/intel-iommu.c 				dev->archdata.iommu = DUMMY_DEVICE_DOMAIN_INFO;
iommu            4172 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = NULL;
iommu            4174 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd)
iommu            4175 drivers/iommu/intel-iommu.c 		if (iommu->qi)
iommu            4176 drivers/iommu/intel-iommu.c 			dmar_reenable_qi(iommu);
iommu            4178 drivers/iommu/intel-iommu.c 	for_each_iommu(iommu, drhd) {
iommu            4185 drivers/iommu/intel-iommu.c 				iommu_disable_protect_mem_regions(iommu);
iommu            4189 drivers/iommu/intel-iommu.c 		iommu_flush_write_buffer(iommu);
iommu            4191 drivers/iommu/intel-iommu.c 		iommu_set_root_entry(iommu);
iommu            4193 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context(iommu, 0, 0, 0,
iommu            4195 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
iommu            4196 drivers/iommu/intel-iommu.c 		iommu_enable_translation(iommu);
iommu            4197 drivers/iommu/intel-iommu.c 		iommu_disable_protect_mem_regions(iommu);
iommu            4206 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            4208 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            4209 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context(iommu, 0, 0, 0,
iommu            4211 drivers/iommu/intel-iommu.c 		iommu->flush.flush_iotlb(iommu, 0, 0, 0,
iommu            4219 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = NULL;
iommu            4222 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            4223 drivers/iommu/intel-iommu.c 		iommu->iommu_state = kcalloc(MAX_SR_DMAR_REGS, sizeof(u32),
iommu            4225 drivers/iommu/intel-iommu.c 		if (!iommu->iommu_state)
iommu            4231 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            4232 drivers/iommu/intel-iommu.c 		iommu_disable_translation(iommu);
iommu            4234 drivers/iommu/intel-iommu.c 		raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            4236 drivers/iommu/intel-iommu.c 		iommu->iommu_state[SR_DMAR_FECTL_REG] =
iommu            4237 drivers/iommu/intel-iommu.c 			readl(iommu->reg + DMAR_FECTL_REG);
iommu            4238 drivers/iommu/intel-iommu.c 		iommu->iommu_state[SR_DMAR_FEDATA_REG] =
iommu            4239 drivers/iommu/intel-iommu.c 			readl(iommu->reg + DMAR_FEDATA_REG);
iommu            4240 drivers/iommu/intel-iommu.c 		iommu->iommu_state[SR_DMAR_FEADDR_REG] =
iommu            4241 drivers/iommu/intel-iommu.c 			readl(iommu->reg + DMAR_FEADDR_REG);
iommu            4242 drivers/iommu/intel-iommu.c 		iommu->iommu_state[SR_DMAR_FEUADDR_REG] =
iommu            4243 drivers/iommu/intel-iommu.c 			readl(iommu->reg + DMAR_FEUADDR_REG);
iommu            4245 drivers/iommu/intel-iommu.c 		raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            4250 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd)
iommu            4251 drivers/iommu/intel-iommu.c 		kfree(iommu->iommu_state);
iommu            4259 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = NULL;
iommu            4270 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            4272 drivers/iommu/intel-iommu.c 		raw_spin_lock_irqsave(&iommu->register_lock, flag);
iommu            4274 drivers/iommu/intel-iommu.c 		writel(iommu->iommu_state[SR_DMAR_FECTL_REG],
iommu            4275 drivers/iommu/intel-iommu.c 			iommu->reg + DMAR_FECTL_REG);
iommu            4276 drivers/iommu/intel-iommu.c 		writel(iommu->iommu_state[SR_DMAR_FEDATA_REG],
iommu            4277 drivers/iommu/intel-iommu.c 			iommu->reg + DMAR_FEDATA_REG);
iommu            4278 drivers/iommu/intel-iommu.c 		writel(iommu->iommu_state[SR_DMAR_FEADDR_REG],
iommu            4279 drivers/iommu/intel-iommu.c 			iommu->reg + DMAR_FEADDR_REG);
iommu            4280 drivers/iommu/intel-iommu.c 		writel(iommu->iommu_state[SR_DMAR_FEUADDR_REG],
iommu            4281 drivers/iommu/intel-iommu.c 			iommu->reg + DMAR_FEUADDR_REG);
iommu            4283 drivers/iommu/intel-iommu.c 		raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
iommu            4286 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd)
iommu            4287 drivers/iommu/intel-iommu.c 		kfree(iommu->iommu_state);
iommu            4438 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dmaru->iommu;
iommu            4440 drivers/iommu/intel-iommu.c 	if (g_iommus[iommu->seq_id])
iommu            4443 drivers/iommu/intel-iommu.c 	if (hw_pass_through && !ecap_pass_through(iommu->ecap)) {
iommu            4445 drivers/iommu/intel-iommu.c 			iommu->name);
iommu            4448 drivers/iommu/intel-iommu.c 	if (!ecap_sc_support(iommu->ecap) &&
iommu            4449 drivers/iommu/intel-iommu.c 	    domain_update_iommu_snooping(iommu)) {
iommu            4451 drivers/iommu/intel-iommu.c 			iommu->name);
iommu            4454 drivers/iommu/intel-iommu.c 	sp = domain_update_iommu_superpage(iommu) - 1;
iommu            4455 drivers/iommu/intel-iommu.c 	if (sp >= 0 && !(cap_super_page_val(iommu->cap) & (1 << sp))) {
iommu            4457 drivers/iommu/intel-iommu.c 			iommu->name);
iommu            4464 drivers/iommu/intel-iommu.c 	if (iommu->gcmd & DMA_GCMD_TE)
iommu            4465 drivers/iommu/intel-iommu.c 		iommu_disable_translation(iommu);
iommu            4467 drivers/iommu/intel-iommu.c 	g_iommus[iommu->seq_id] = iommu;
iommu            4468 drivers/iommu/intel-iommu.c 	ret = iommu_init_domains(iommu);
iommu            4470 drivers/iommu/intel-iommu.c 		ret = iommu_alloc_root_entry(iommu);
iommu            4475 drivers/iommu/intel-iommu.c 	if (pasid_supported(iommu))
iommu            4476 drivers/iommu/intel-iommu.c 		intel_svm_init(iommu);
iommu            4484 drivers/iommu/intel-iommu.c 			iommu_disable_protect_mem_regions(iommu);
iommu            4488 drivers/iommu/intel-iommu.c 	intel_iommu_init_qi(iommu);
iommu            4489 drivers/iommu/intel-iommu.c 	iommu_flush_write_buffer(iommu);
iommu            4492 drivers/iommu/intel-iommu.c 	if (pasid_supported(iommu) && ecap_prs(iommu->ecap)) {
iommu            4493 drivers/iommu/intel-iommu.c 		ret = intel_svm_enable_prq(iommu);
iommu            4498 drivers/iommu/intel-iommu.c 	ret = dmar_set_interrupt(iommu);
iommu            4502 drivers/iommu/intel-iommu.c 	iommu_set_root_entry(iommu);
iommu            4503 drivers/iommu/intel-iommu.c 	iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL);
iommu            4504 drivers/iommu/intel-iommu.c 	iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
iommu            4505 drivers/iommu/intel-iommu.c 	iommu_enable_translation(iommu);
iommu            4507 drivers/iommu/intel-iommu.c 	iommu_disable_protect_mem_regions(iommu);
iommu            4511 drivers/iommu/intel-iommu.c 	disable_dmar_iommu(iommu);
iommu            4513 drivers/iommu/intel-iommu.c 	free_dmar_iommu(iommu);
iommu            4520 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dmaru->iommu;
iommu            4524 drivers/iommu/intel-iommu.c 	if (iommu == NULL)
iommu            4530 drivers/iommu/intel-iommu.c 		disable_dmar_iommu(iommu);
iommu            4531 drivers/iommu/intel-iommu.c 		free_dmar_iommu(iommu);
iommu            4674 drivers/iommu/intel-iommu.c 			struct intel_iommu *iommu;
iommu            4696 drivers/iommu/intel-iommu.c 			for_each_active_iommu(iommu, drhd)
iommu            4697 drivers/iommu/intel-iommu.c 				iommu_flush_iotlb_psi(iommu, si_domain,
iommu            4722 drivers/iommu/intel-iommu.c 		struct intel_iommu *iommu = g_iommus[i];
iommu            4726 drivers/iommu/intel-iommu.c 		if (!iommu)
iommu            4729 drivers/iommu/intel-iommu.c 		for (did = 0; did < cap_ndoms(iommu->cap); did++) {
iommu            4730 drivers/iommu/intel-iommu.c 			domain = get_iommu_domain(iommu, (u16)did);
iommu            4747 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = NULL;
iommu            4750 drivers/iommu/intel-iommu.c 	for_each_iommu(iommu, drhd)
iommu            4751 drivers/iommu/intel-iommu.c 		iommu_disable_translation(iommu);
iommu            4758 drivers/iommu/intel-iommu.c 	return container_of(iommu_dev, struct intel_iommu, iommu);
iommu            4765 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4766 drivers/iommu/intel-iommu.c 	u32 ver = readl(iommu->reg + DMAR_VER_REG);
iommu            4776 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4777 drivers/iommu/intel-iommu.c 	return sprintf(buf, "%llx\n", iommu->reg_phys);
iommu            4785 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4786 drivers/iommu/intel-iommu.c 	return sprintf(buf, "%llx\n", iommu->cap);
iommu            4794 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4795 drivers/iommu/intel-iommu.c 	return sprintf(buf, "%llx\n", iommu->ecap);
iommu            4803 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4804 drivers/iommu/intel-iommu.c 	return sprintf(buf, "%ld\n", cap_ndoms(iommu->cap));
iommu            4812 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = dev_to_intel_iommu(dev);
iommu            4813 drivers/iommu/intel-iommu.c 	return sprintf(buf, "%d\n", bitmap_weight(iommu->domain_ids,
iommu            4814 drivers/iommu/intel-iommu.c 						  cap_ndoms(iommu->cap)));
iommu            4874 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu __maybe_unused;
iommu            4878 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            4917 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            4967 drivers/iommu/intel-iommu.c 			for_each_iommu(iommu, drhd)
iommu            4968 drivers/iommu/intel-iommu.c 				iommu_disable_protect_mem_regions(iommu);
iommu            5021 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            5022 drivers/iommu/intel-iommu.c 		iommu_device_sysfs_add(&iommu->iommu, NULL,
iommu            5024 drivers/iommu/intel-iommu.c 				       "%s", iommu->name);
iommu            5025 drivers/iommu/intel-iommu.c 		iommu_device_set_ops(&iommu->iommu, &intel_iommu_ops);
iommu            5026 drivers/iommu/intel-iommu.c 		iommu_device_register(&iommu->iommu);
iommu            5041 drivers/iommu/intel-iommu.c 	for_each_iommu(iommu, drhd) {
iommu            5042 drivers/iommu/intel-iommu.c 		if (!drhd->ignored && !translation_pre_enabled(iommu))
iommu            5043 drivers/iommu/intel-iommu.c 			iommu_enable_translation(iommu);
iommu            5045 drivers/iommu/intel-iommu.c 		iommu_disable_protect_mem_regions(iommu);
iommu            5066 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu = opaque;
iommu            5068 drivers/iommu/intel-iommu.c 	domain_context_clear_one(iommu, PCI_BUS_NUM(alias), alias & 0xff);
iommu            5078 drivers/iommu/intel-iommu.c static void domain_context_clear(struct intel_iommu *iommu, struct device *dev)
iommu            5080 drivers/iommu/intel-iommu.c 	if (!iommu || !dev || !dev_is_pci(dev))
iommu            5083 drivers/iommu/intel-iommu.c 	pci_for_each_dma_alias(to_pci_dev(dev), &domain_context_clear_one_cb, iommu);
iommu            5089 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5097 drivers/iommu/intel-iommu.c 	iommu = info->iommu;
iommu            5101 drivers/iommu/intel-iommu.c 		if (dev_is_pci(info->dev) && sm_supported(iommu))
iommu            5102 drivers/iommu/intel-iommu.c 			intel_pasid_tear_down_entry(iommu, info->dev,
iommu            5106 drivers/iommu/intel-iommu.c 		domain_context_clear(iommu, info->dev);
iommu            5112 drivers/iommu/intel-iommu.c 	spin_lock_irqsave(&iommu->lock, flags);
iommu            5113 drivers/iommu/intel-iommu.c 	domain_detach_iommu(domain, iommu);
iommu            5114 drivers/iommu/intel-iommu.c 	spin_unlock_irqrestore(&iommu->lock, flags);
iommu            5131 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            5221 drivers/iommu/intel-iommu.c 	struct device_domain_info *info = dev->archdata.iommu;
iommu            5230 drivers/iommu/intel-iommu.c 	struct device_domain_info *info = dev->archdata.iommu;
iommu            5243 drivers/iommu/intel-iommu.c 	struct device_domain_info *info = dev->archdata.iommu;
iommu            5262 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5264 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5265 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            5286 drivers/iommu/intel-iommu.c 	spin_lock(&iommu->lock);
iommu            5287 drivers/iommu/intel-iommu.c 	ret = domain_attach_iommu(domain, iommu);
iommu            5292 drivers/iommu/intel-iommu.c 	ret = intel_pasid_setup_second_level(iommu, domain, dev,
iommu            5296 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            5305 drivers/iommu/intel-iommu.c 	domain_detach_iommu(domain, iommu);
iommu            5307 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            5319 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5326 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            5327 drivers/iommu/intel-iommu.c 	iommu = info->iommu;
iommu            5331 drivers/iommu/intel-iommu.c 	spin_lock(&iommu->lock);
iommu            5332 drivers/iommu/intel-iommu.c 	intel_pasid_tear_down_entry(iommu, dev, domain->default_pasid);
iommu            5333 drivers/iommu/intel-iommu.c 	domain_detach_iommu(domain, iommu);
iommu            5334 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            5343 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5347 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5348 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            5352 drivers/iommu/intel-iommu.c 	addr_width = agaw_to_width(iommu->agaw);
iommu            5353 drivers/iommu/intel-iommu.c 	if (addr_width > cap_mgaw(iommu->cap))
iommu            5354 drivers/iommu/intel-iommu.c 		addr_width = cap_mgaw(iommu->cap);
iommu            5367 drivers/iommu/intel-iommu.c 	while (iommu->agaw < dmar_domain->agaw) {
iommu            5533 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5537 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            5538 drivers/iommu/intel-iommu.c 		if (!sm_supported(iommu)) {
iommu            5551 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5555 drivers/iommu/intel-iommu.c 	for_each_active_iommu(iommu, drhd) {
iommu            5556 drivers/iommu/intel-iommu.c 		if (!pasid_supported(iommu)) {
iommu            5580 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5585 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5586 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            5589 drivers/iommu/intel-iommu.c 	iommu_device_link(&iommu->iommu, dev);
iommu            5591 drivers/iommu/intel-iommu.c 	if (translation_pre_enabled(iommu))
iommu            5592 drivers/iommu/intel-iommu.c 		dev->archdata.iommu = DEFER_DEVICE_DOMAIN_INFO;
iommu            5643 drivers/iommu/intel-iommu.c 	iommu_device_unlink(&iommu->iommu, dev);
iommu            5649 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5652 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5653 drivers/iommu/intel-iommu.c 	if (!iommu)
iommu            5660 drivers/iommu/intel-iommu.c 	iommu_device_unlink(&iommu->iommu, dev);
iommu            5732 drivers/iommu/intel-iommu.c int intel_iommu_enable_pasid(struct intel_iommu *iommu, struct device *dev)
iommu            5746 drivers/iommu/intel-iommu.c 	spin_lock(&iommu->lock);
iommu            5749 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            5753 drivers/iommu/intel-iommu.c 	context = iommu_context_addr(iommu, info->bus, info->devfn, 0);
iommu            5763 drivers/iommu/intel-iommu.c 		iommu->flush.flush_context(iommu,
iommu            5764 drivers/iommu/intel-iommu.c 					   domain->iommu_did[iommu->seq_id],
iommu            5777 drivers/iommu/intel-iommu.c 	spin_unlock(&iommu->lock);
iommu            5806 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5815 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5816 drivers/iommu/intel-iommu.c 	if ((!iommu)) {
iommu            5821 drivers/iommu/intel-iommu.c 	return iommu;
iommu            5828 drivers/iommu/intel-iommu.c 	struct intel_iommu *iommu;
iommu            5833 drivers/iommu/intel-iommu.c 	iommu = device_to_iommu(dev, &bus, &devfn);
iommu            5834 drivers/iommu/intel-iommu.c 	if (!iommu || dmar_disabled)
iommu            5837 drivers/iommu/intel-iommu.c 	if (!sm_supported(iommu) || !pasid_supported(iommu))
iommu            5840 drivers/iommu/intel-iommu.c 	ret = intel_iommu_enable_pasid(iommu, dev);
iommu            5845 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            5858 drivers/iommu/intel-iommu.c 	info = dev->archdata.iommu;
iommu            5935 drivers/iommu/intel-iommu.c 	struct device_domain_info *info = dev->archdata.iommu;
iommu            5955 drivers/iommu/intel-iommu.c 	return dev->archdata.iommu == DEFER_DEVICE_DOMAIN_INFO;
iommu              96 drivers/iommu/intel-pasid.c 	if (info->iommu->segment == data->segment &&
iommu             133 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             155 drivers/iommu/intel-pasid.c 	pages = alloc_pages_node(info->iommu->node,
iommu             180 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             206 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             217 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             238 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             245 drivers/iommu/intel-pasid.c 		entries = alloc_pgtable_page(info->iommu->node);
iommu             399 drivers/iommu/intel-pasid.c pasid_cache_invalidation_with_pasid(struct intel_iommu *iommu,
iommu             409 drivers/iommu/intel-pasid.c 	qi_submit_sync(&desc, iommu);
iommu             413 drivers/iommu/intel-pasid.c iotlb_invalidation_with_pasid(struct intel_iommu *iommu, u16 did, u32 pasid)
iommu             423 drivers/iommu/intel-pasid.c 	qi_submit_sync(&desc, iommu);
iommu             427 drivers/iommu/intel-pasid.c devtlb_invalidation_with_pasid(struct intel_iommu *iommu,
iommu             433 drivers/iommu/intel-pasid.c 	info = dev->archdata.iommu;
iommu             441 drivers/iommu/intel-pasid.c 	qi_flush_dev_iotlb(iommu, sid, pfsid, qdep, 0, 64 - VTD_PAGE_SHIFT);
iommu             444 drivers/iommu/intel-pasid.c void intel_pasid_tear_down_entry(struct intel_iommu *iommu,
iommu             457 drivers/iommu/intel-pasid.c 	if (!ecap_coherent(iommu->ecap))
iommu             460 drivers/iommu/intel-pasid.c 	pasid_cache_invalidation_with_pasid(iommu, did, pasid);
iommu             461 drivers/iommu/intel-pasid.c 	iotlb_invalidation_with_pasid(iommu, did, pasid);
iommu             464 drivers/iommu/intel-pasid.c 	if (!cap_caching_mode(iommu->cap))
iommu             465 drivers/iommu/intel-pasid.c 		devtlb_invalidation_with_pasid(iommu, dev, pasid);
iommu             472 drivers/iommu/intel-pasid.c int intel_pasid_setup_first_level(struct intel_iommu *iommu,
iommu             478 drivers/iommu/intel-pasid.c 	if (!ecap_flts(iommu->ecap)) {
iommu             480 drivers/iommu/intel-pasid.c 		       iommu->name);
iommu             493 drivers/iommu/intel-pasid.c 		if (!ecap_srs(iommu->ecap)) {
iommu             495 drivers/iommu/intel-pasid.c 			       iommu->name);
iommu             504 drivers/iommu/intel-pasid.c 		if (cap_5lp_support(iommu->cap)) {
iommu             515 drivers/iommu/intel-pasid.c 	pasid_set_address_width(pte, iommu->agaw);
iommu             516 drivers/iommu/intel-pasid.c 	pasid_set_page_snoop(pte, !!ecap_smpwc(iommu->ecap));
iommu             522 drivers/iommu/intel-pasid.c 	if (!ecap_coherent(iommu->ecap))
iommu             525 drivers/iommu/intel-pasid.c 	if (cap_caching_mode(iommu->cap)) {
iommu             526 drivers/iommu/intel-pasid.c 		pasid_cache_invalidation_with_pasid(iommu, did, pasid);
iommu             527 drivers/iommu/intel-pasid.c 		iotlb_invalidation_with_pasid(iommu, did, pasid);
iommu             529 drivers/iommu/intel-pasid.c 		iommu_flush_write_buffer(iommu);
iommu             538 drivers/iommu/intel-pasid.c int intel_pasid_setup_second_level(struct intel_iommu *iommu,
iommu             552 drivers/iommu/intel-pasid.c 	if (!ecap_slts(iommu->ecap)) {
iommu             554 drivers/iommu/intel-pasid.c 		       iommu->name);
iommu             563 drivers/iommu/intel-pasid.c 	for (agaw = domain->agaw; agaw > iommu->agaw; agaw--) {
iommu             572 drivers/iommu/intel-pasid.c 	did = domain->iommu_did[iommu->seq_id];
iommu             586 drivers/iommu/intel-pasid.c 	pasid_set_page_snoop(pte, !!ecap_smpwc(iommu->ecap));
iommu             595 drivers/iommu/intel-pasid.c 	if (!ecap_coherent(iommu->ecap))
iommu             598 drivers/iommu/intel-pasid.c 	if (cap_caching_mode(iommu->cap)) {
iommu             599 drivers/iommu/intel-pasid.c 		pasid_cache_invalidation_with_pasid(iommu, did, pasid);
iommu             600 drivers/iommu/intel-pasid.c 		iotlb_invalidation_with_pasid(iommu, did, pasid);
iommu             602 drivers/iommu/intel-pasid.c 		iommu_flush_write_buffer(iommu);
iommu             611 drivers/iommu/intel-pasid.c int intel_pasid_setup_pass_through(struct intel_iommu *iommu,
iommu             626 drivers/iommu/intel-pasid.c 	pasid_set_address_width(pte, iommu->agaw);
iommu             629 drivers/iommu/intel-pasid.c 	pasid_set_page_snoop(pte, !!ecap_smpwc(iommu->ecap));
iommu             638 drivers/iommu/intel-pasid.c 	if (!ecap_coherent(iommu->ecap))
iommu             641 drivers/iommu/intel-pasid.c 	if (cap_caching_mode(iommu->cap)) {
iommu             642 drivers/iommu/intel-pasid.c 		pasid_cache_invalidation_with_pasid(iommu, did, pasid);
iommu             643 drivers/iommu/intel-pasid.c 		iotlb_invalidation_with_pasid(iommu, did, pasid);
iommu             645 drivers/iommu/intel-pasid.c 		iommu_flush_write_buffer(iommu);
iommu              87 drivers/iommu/intel-pasid.h int intel_pasid_setup_first_level(struct intel_iommu *iommu,
iommu              90 drivers/iommu/intel-pasid.h int intel_pasid_setup_second_level(struct intel_iommu *iommu,
iommu              93 drivers/iommu/intel-pasid.h int intel_pasid_setup_pass_through(struct intel_iommu *iommu,
iommu              96 drivers/iommu/intel-pasid.h void intel_pasid_tear_down_entry(struct intel_iommu *iommu,
iommu              26 drivers/iommu/intel-svm.c int intel_svm_init(struct intel_iommu *iommu)
iommu              29 drivers/iommu/intel-svm.c 			!cap_fl1gp_support(iommu->cap))
iommu              33 drivers/iommu/intel-svm.c 			!cap_5lp_support(iommu->cap))
iommu              41 drivers/iommu/intel-svm.c int intel_svm_enable_prq(struct intel_iommu *iommu)
iommu              49 drivers/iommu/intel-svm.c 			iommu->name);
iommu              52 drivers/iommu/intel-svm.c 	iommu->prq = page_address(pages);
iommu              54 drivers/iommu/intel-svm.c 	irq = dmar_alloc_hwirq(DMAR_UNITS_SUPPORTED + iommu->seq_id, iommu->node, iommu);
iommu              57 drivers/iommu/intel-svm.c 		       iommu->name);
iommu              60 drivers/iommu/intel-svm.c 		free_pages((unsigned long)iommu->prq, PRQ_ORDER);
iommu              61 drivers/iommu/intel-svm.c 		iommu->prq = NULL;
iommu              64 drivers/iommu/intel-svm.c 	iommu->pr_irq = irq;
iommu              66 drivers/iommu/intel-svm.c 	snprintf(iommu->prq_name, sizeof(iommu->prq_name), "dmar%d-prq", iommu->seq_id);
iommu              69 drivers/iommu/intel-svm.c 				   iommu->prq_name, iommu);
iommu              72 drivers/iommu/intel-svm.c 		       iommu->name);
iommu              74 drivers/iommu/intel-svm.c 		iommu->pr_irq = 0;
iommu              77 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQH_REG, 0ULL);
iommu              78 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQT_REG, 0ULL);
iommu              79 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQA_REG, virt_to_phys(iommu->prq) | PRQ_ORDER);
iommu              84 drivers/iommu/intel-svm.c int intel_svm_finish_prq(struct intel_iommu *iommu)
iommu              86 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQH_REG, 0ULL);
iommu              87 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQT_REG, 0ULL);
iommu              88 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQA_REG, 0ULL);
iommu              90 drivers/iommu/intel-svm.c 	if (iommu->pr_irq) {
iommu              91 drivers/iommu/intel-svm.c 		free_irq(iommu->pr_irq, iommu);
iommu              92 drivers/iommu/intel-svm.c 		dmar_free_hwirq(iommu->pr_irq);
iommu              93 drivers/iommu/intel-svm.c 		iommu->pr_irq = 0;
iommu              96 drivers/iommu/intel-svm.c 	free_pages((unsigned long)iommu->prq, PRQ_ORDER);
iommu              97 drivers/iommu/intel-svm.c 	iommu->prq = NULL;
iommu             126 drivers/iommu/intel-svm.c 	qi_submit_sync(&desc, svm->iommu);
iommu             150 drivers/iommu/intel-svm.c 		qi_submit_sync(&desc, svm->iommu);
iommu             195 drivers/iommu/intel-svm.c 		intel_pasid_tear_down_entry(svm->iommu, sdev->dev, svm->pasid);
iommu             212 drivers/iommu/intel-svm.c 	struct intel_iommu *iommu = intel_svm_device_to_iommu(dev);
iommu             220 drivers/iommu/intel-svm.c 	if (!iommu || dmar_disabled)
iommu             231 drivers/iommu/intel-svm.c 		if (!ecap_srs(iommu->ecap))
iommu             277 drivers/iommu/intel-svm.c 	ret = intel_iommu_enable_pasid(iommu, dev);
iommu             285 drivers/iommu/intel-svm.c 	info = dev->archdata.iommu;
iommu             312 drivers/iommu/intel-svm.c 		svm->iommu = iommu;
iommu             319 drivers/iommu/intel-svm.c 					   !!cap_caching_mode(iommu->cap),
iommu             343 drivers/iommu/intel-svm.c 		spin_lock(&iommu->lock);
iommu             344 drivers/iommu/intel-svm.c 		ret = intel_pasid_setup_first_level(iommu, dev,
iommu             348 drivers/iommu/intel-svm.c 		spin_unlock(&iommu->lock);
iommu             364 drivers/iommu/intel-svm.c 		spin_lock(&iommu->lock);
iommu             365 drivers/iommu/intel-svm.c 		ret = intel_pasid_setup_first_level(iommu, dev,
iommu             369 drivers/iommu/intel-svm.c 		spin_unlock(&iommu->lock);
iommu             391 drivers/iommu/intel-svm.c 	struct intel_iommu *iommu;
iommu             396 drivers/iommu/intel-svm.c 	iommu = intel_svm_device_to_iommu(dev);
iommu             397 drivers/iommu/intel-svm.c 	if (!iommu)
iommu             417 drivers/iommu/intel-svm.c 				intel_pasid_tear_down_entry(iommu, dev, svm->pasid);
iommu             448 drivers/iommu/intel-svm.c 	struct intel_iommu *iommu;
iommu             453 drivers/iommu/intel-svm.c 	iommu = intel_svm_device_to_iommu(dev);
iommu             454 drivers/iommu/intel-svm.c 	if (!iommu)
iommu             533 drivers/iommu/intel-svm.c 	struct intel_iommu *iommu = d;
iommu             539 drivers/iommu/intel-svm.c 	writel(DMA_PRS_PPR, iommu->reg + DMAR_PRS_REG);
iommu             541 drivers/iommu/intel-svm.c 	tail = dmar_readq(iommu->reg + DMAR_PQT_REG) & PRQ_RING_MASK;
iommu             542 drivers/iommu/intel-svm.c 	head = dmar_readq(iommu->reg + DMAR_PQH_REG) & PRQ_RING_MASK;
iommu             554 drivers/iommu/intel-svm.c 		req = &iommu->prq[head / sizeof(*req)];
iommu             560 drivers/iommu/intel-svm.c 			       iommu->name, ((unsigned long long *)req)[0],
iommu             575 drivers/iommu/intel-svm.c 				       iommu->name, req->pasid, ((unsigned long long *)req)[0],
iommu             660 drivers/iommu/intel-svm.c 			qi_submit_sync(&resp, iommu);
iommu             665 drivers/iommu/intel-svm.c 	dmar_writeq(iommu->reg + DMAR_PQH_REG, tail);
iommu              32 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu              39 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu              46 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu              82 drivers/iommu/intel_irq_remapping.c static void iommu_disable_irq_remapping(struct intel_iommu *iommu);
iommu              85 drivers/iommu/intel_irq_remapping.c static bool ir_pre_enabled(struct intel_iommu *iommu)
iommu              87 drivers/iommu/intel_irq_remapping.c 	return (iommu->flags & VTD_FLAG_IRQ_REMAP_PRE_ENABLED);
iommu              90 drivers/iommu/intel_irq_remapping.c static void clear_ir_pre_enabled(struct intel_iommu *iommu)
iommu              92 drivers/iommu/intel_irq_remapping.c 	iommu->flags &= ~VTD_FLAG_IRQ_REMAP_PRE_ENABLED;
iommu              95 drivers/iommu/intel_irq_remapping.c static void init_ir_status(struct intel_iommu *iommu)
iommu              99 drivers/iommu/intel_irq_remapping.c 	gsts = readl(iommu->reg + DMAR_GSTS_REG);
iommu             101 drivers/iommu/intel_irq_remapping.c 		iommu->flags |= VTD_FLAG_IRQ_REMAP_PRE_ENABLED;
iommu             104 drivers/iommu/intel_irq_remapping.c static int alloc_irte(struct intel_iommu *iommu,
iommu             107 drivers/iommu/intel_irq_remapping.c 	struct ir_table *table = iommu->ir_table;
iommu             120 drivers/iommu/intel_irq_remapping.c 	if (mask > ecap_max_handle_mask(iommu->ecap)) {
iommu             123 drivers/iommu/intel_irq_remapping.c 		       ecap_max_handle_mask(iommu->ecap));
iommu             131 drivers/iommu/intel_irq_remapping.c 		pr_warn("IR%d: can't allocate an IRTE\n", iommu->seq_id);
iommu             133 drivers/iommu/intel_irq_remapping.c 		irq_iommu->iommu = iommu;
iommu             144 drivers/iommu/intel_irq_remapping.c static int qi_flush_iec(struct intel_iommu *iommu, int index, int mask)
iommu             154 drivers/iommu/intel_irq_remapping.c 	return qi_submit_sync(&desc, iommu);
iommu             160 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             170 drivers/iommu/intel_irq_remapping.c 	iommu = irq_iommu->iommu;
iommu             173 drivers/iommu/intel_irq_remapping.c 	irte = &iommu->ir_table->base[index];
iommu             195 drivers/iommu/intel_irq_remapping.c 	__iommu_flush_cache(iommu, irte, sizeof(*irte));
iommu             197 drivers/iommu/intel_irq_remapping.c 	rc = qi_flush_iec(iommu, index, 0);
iommu             211 drivers/iommu/intel_irq_remapping.c 		if (ir_hpet[i].id == hpet_id && ir_hpet[i].iommu)
iommu             212 drivers/iommu/intel_irq_remapping.c 			return ir_hpet[i].iommu;
iommu             221 drivers/iommu/intel_irq_remapping.c 		if (ir_ioapic[i].id == apic && ir_ioapic[i].iommu)
iommu             222 drivers/iommu/intel_irq_remapping.c 			return ir_ioapic[i].iommu;
iommu             234 drivers/iommu/intel_irq_remapping.c 	return drhd->iommu;
iommu             240 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             246 drivers/iommu/intel_irq_remapping.c 	iommu = irq_iommu->iommu;
iommu             249 drivers/iommu/intel_irq_remapping.c 	start = iommu->ir_table->base + index;
iommu             256 drivers/iommu/intel_irq_remapping.c 	bitmap_release_region(iommu->ir_table->bitmap, index,
iommu             259 drivers/iommu/intel_irq_remapping.c 	return qi_flush_iec(iommu, index, irq_iommu->irte_mask);
iommu             319 drivers/iommu/intel_irq_remapping.c 		if (ir_ioapic[i].iommu && ir_ioapic[i].id == apic) {
iommu             346 drivers/iommu/intel_irq_remapping.c 		if (ir_hpet[i].iommu && ir_hpet[i].id == id) {
iommu             432 drivers/iommu/intel_irq_remapping.c static int iommu_load_old_irte(struct intel_iommu *iommu)
iommu             441 drivers/iommu/intel_irq_remapping.c 	irta = dmar_readq(iommu->reg + DMAR_IRTA_REG);
iommu             455 drivers/iommu/intel_irq_remapping.c 	memcpy(iommu->ir_table->base, old_ir_table, size);
iommu             457 drivers/iommu/intel_irq_remapping.c 	__iommu_flush_cache(iommu, iommu->ir_table->base, size);
iommu             464 drivers/iommu/intel_irq_remapping.c 		if (iommu->ir_table->base[i].present)
iommu             465 drivers/iommu/intel_irq_remapping.c 			bitmap_set(iommu->ir_table->bitmap, i, 1);
iommu             474 drivers/iommu/intel_irq_remapping.c static void iommu_set_irq_remapping(struct intel_iommu *iommu, int mode)
iommu             480 drivers/iommu/intel_irq_remapping.c 	addr = virt_to_phys((void *)iommu->ir_table->base);
iommu             482 drivers/iommu/intel_irq_remapping.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu             484 drivers/iommu/intel_irq_remapping.c 	dmar_writeq(iommu->reg + DMAR_IRTA_REG,
iommu             488 drivers/iommu/intel_irq_remapping.c 	writel(iommu->gcmd | DMA_GCMD_SIRTP, iommu->reg + DMAR_GCMD_REG);
iommu             490 drivers/iommu/intel_irq_remapping.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu             492 drivers/iommu/intel_irq_remapping.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu             498 drivers/iommu/intel_irq_remapping.c 	qi_global_iec(iommu);
iommu             501 drivers/iommu/intel_irq_remapping.c static void iommu_enable_irq_remapping(struct intel_iommu *iommu)
iommu             506 drivers/iommu/intel_irq_remapping.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu             509 drivers/iommu/intel_irq_remapping.c 	iommu->gcmd |= DMA_GCMD_IRE;
iommu             510 drivers/iommu/intel_irq_remapping.c 	iommu->gcmd &= ~DMA_GCMD_CFI;  /* Block compatibility-format MSIs */
iommu             511 drivers/iommu/intel_irq_remapping.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu             513 drivers/iommu/intel_irq_remapping.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu             526 drivers/iommu/intel_irq_remapping.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu             529 drivers/iommu/intel_irq_remapping.c static int intel_setup_irq_remapping(struct intel_iommu *iommu)
iommu             536 drivers/iommu/intel_irq_remapping.c 	if (iommu->ir_table)
iommu             543 drivers/iommu/intel_irq_remapping.c 	pages = alloc_pages_node(iommu->node, GFP_KERNEL | __GFP_ZERO,
iommu             547 drivers/iommu/intel_irq_remapping.c 		       iommu->seq_id, INTR_REMAP_PAGE_ORDER);
iommu             553 drivers/iommu/intel_irq_remapping.c 		pr_err("IR%d: failed to allocate bitmap\n", iommu->seq_id);
iommu             557 drivers/iommu/intel_irq_remapping.c 	fn = irq_domain_alloc_named_id_fwnode("INTEL-IR", iommu->seq_id);
iommu             561 drivers/iommu/intel_irq_remapping.c 	iommu->ir_domain =
iommu             565 drivers/iommu/intel_irq_remapping.c 					    iommu);
iommu             567 drivers/iommu/intel_irq_remapping.c 	if (!iommu->ir_domain) {
iommu             568 drivers/iommu/intel_irq_remapping.c 		pr_err("IR%d: failed to allocate irqdomain\n", iommu->seq_id);
iommu             571 drivers/iommu/intel_irq_remapping.c 	iommu->ir_msi_domain =
iommu             572 drivers/iommu/intel_irq_remapping.c 		arch_create_remap_msi_irq_domain(iommu->ir_domain,
iommu             574 drivers/iommu/intel_irq_remapping.c 						 iommu->seq_id);
iommu             578 drivers/iommu/intel_irq_remapping.c 	iommu->ir_table = ir_table;
iommu             584 drivers/iommu/intel_irq_remapping.c 	if (!iommu->qi) {
iommu             588 drivers/iommu/intel_irq_remapping.c 		dmar_fault(-1, iommu);
iommu             589 drivers/iommu/intel_irq_remapping.c 		dmar_disable_qi(iommu);
iommu             591 drivers/iommu/intel_irq_remapping.c 		if (dmar_enable_qi(iommu)) {
iommu             597 drivers/iommu/intel_irq_remapping.c 	init_ir_status(iommu);
iommu             599 drivers/iommu/intel_irq_remapping.c 	if (ir_pre_enabled(iommu)) {
iommu             602 drivers/iommu/intel_irq_remapping.c 				iommu->name);
iommu             603 drivers/iommu/intel_irq_remapping.c 			clear_ir_pre_enabled(iommu);
iommu             604 drivers/iommu/intel_irq_remapping.c 			iommu_disable_irq_remapping(iommu);
iommu             605 drivers/iommu/intel_irq_remapping.c 		} else if (iommu_load_old_irte(iommu))
iommu             607 drivers/iommu/intel_irq_remapping.c 			       iommu->name);
iommu             610 drivers/iommu/intel_irq_remapping.c 				iommu->name);
iommu             613 drivers/iommu/intel_irq_remapping.c 	iommu_set_irq_remapping(iommu, eim_mode);
iommu             624 drivers/iommu/intel_irq_remapping.c 	iommu->ir_table  = NULL;
iommu             629 drivers/iommu/intel_irq_remapping.c static void intel_teardown_irq_remapping(struct intel_iommu *iommu)
iommu             631 drivers/iommu/intel_irq_remapping.c 	if (iommu && iommu->ir_table) {
iommu             632 drivers/iommu/intel_irq_remapping.c 		if (iommu->ir_msi_domain) {
iommu             633 drivers/iommu/intel_irq_remapping.c 			irq_domain_remove(iommu->ir_msi_domain);
iommu             634 drivers/iommu/intel_irq_remapping.c 			iommu->ir_msi_domain = NULL;
iommu             636 drivers/iommu/intel_irq_remapping.c 		if (iommu->ir_domain) {
iommu             637 drivers/iommu/intel_irq_remapping.c 			irq_domain_remove(iommu->ir_domain);
iommu             638 drivers/iommu/intel_irq_remapping.c 			iommu->ir_domain = NULL;
iommu             640 drivers/iommu/intel_irq_remapping.c 		free_pages((unsigned long)iommu->ir_table->base,
iommu             642 drivers/iommu/intel_irq_remapping.c 		bitmap_free(iommu->ir_table->bitmap);
iommu             643 drivers/iommu/intel_irq_remapping.c 		kfree(iommu->ir_table);
iommu             644 drivers/iommu/intel_irq_remapping.c 		iommu->ir_table = NULL;
iommu             651 drivers/iommu/intel_irq_remapping.c static void iommu_disable_irq_remapping(struct intel_iommu *iommu)
iommu             656 drivers/iommu/intel_irq_remapping.c 	if (!ecap_ir_support(iommu->ecap))
iommu             663 drivers/iommu/intel_irq_remapping.c 	qi_global_iec(iommu);
iommu             665 drivers/iommu/intel_irq_remapping.c 	raw_spin_lock_irqsave(&iommu->register_lock, flags);
iommu             667 drivers/iommu/intel_irq_remapping.c 	sts = readl(iommu->reg + DMAR_GSTS_REG);
iommu             671 drivers/iommu/intel_irq_remapping.c 	iommu->gcmd &= ~DMA_GCMD_IRE;
iommu             672 drivers/iommu/intel_irq_remapping.c 	writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG);
iommu             674 drivers/iommu/intel_irq_remapping.c 	IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG,
iommu             678 drivers/iommu/intel_irq_remapping.c 	raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
iommu             693 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             695 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu             696 drivers/iommu/intel_irq_remapping.c 		if (ecap_ir_support(iommu->ecap)) {
iommu             697 drivers/iommu/intel_irq_remapping.c 			iommu_disable_irq_remapping(iommu);
iommu             698 drivers/iommu/intel_irq_remapping.c 			intel_teardown_irq_remapping(iommu);
iommu             709 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             734 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd)
iommu             735 drivers/iommu/intel_irq_remapping.c 		if (!ecap_ir_support(iommu->ecap))
iommu             747 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu             748 drivers/iommu/intel_irq_remapping.c 		if (eim && !ecap_eim_support(iommu->ecap)) {
iommu             749 drivers/iommu/intel_irq_remapping.c 			pr_info("%s does not support EIM\n", iommu->name);
iommu             759 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu             760 drivers/iommu/intel_irq_remapping.c 		if (intel_setup_irq_remapping(iommu)) {
iommu             762 drivers/iommu/intel_irq_remapping.c 			       iommu->name);
iommu             780 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             794 drivers/iommu/intel_irq_remapping.c 		for_each_iommu(iommu, drhd)
iommu             795 drivers/iommu/intel_irq_remapping.c 			if (!cap_pi_support(iommu->cap)) {
iommu             806 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             812 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu             813 drivers/iommu/intel_irq_remapping.c 		if (!ir_pre_enabled(iommu))
iommu             814 drivers/iommu/intel_irq_remapping.c 			iommu_enable_irq_remapping(iommu);
iommu             835 drivers/iommu/intel_irq_remapping.c 				   struct intel_iommu *iommu,
iommu             858 drivers/iommu/intel_irq_remapping.c 		if (ir_hpet[count].iommu == iommu &&
iommu             861 drivers/iommu/intel_irq_remapping.c 		else if (ir_hpet[count].iommu == NULL && free == -1)
iommu             869 drivers/iommu/intel_irq_remapping.c 	ir_hpet[free].iommu = iommu;
iommu             880 drivers/iommu/intel_irq_remapping.c 				     struct intel_iommu *iommu,
iommu             903 drivers/iommu/intel_irq_remapping.c 		if (ir_ioapic[count].iommu == iommu &&
iommu             906 drivers/iommu/intel_irq_remapping.c 		else if (ir_ioapic[count].iommu == NULL && free == -1)
iommu             916 drivers/iommu/intel_irq_remapping.c 	ir_ioapic[free].iommu = iommu;
iommu             919 drivers/iommu/intel_irq_remapping.c 		scope->enumeration_id, drhd->address, iommu->seq_id);
iommu             925 drivers/iommu/intel_irq_remapping.c 				      struct intel_iommu *iommu)
iommu             939 drivers/iommu/intel_irq_remapping.c 			ret = ir_parse_one_ioapic_scope(scope, iommu, drhd);
iommu             941 drivers/iommu/intel_irq_remapping.c 			ret = ir_parse_one_hpet_scope(scope, iommu, drhd);
iommu             948 drivers/iommu/intel_irq_remapping.c static void ir_remove_ioapic_hpet_scope(struct intel_iommu *iommu)
iommu             953 drivers/iommu/intel_irq_remapping.c 		if (ir_hpet[i].iommu == iommu)
iommu             954 drivers/iommu/intel_irq_remapping.c 			ir_hpet[i].iommu = NULL;
iommu             957 drivers/iommu/intel_irq_remapping.c 		if (ir_ioapic[i].iommu == iommu)
iommu             958 drivers/iommu/intel_irq_remapping.c 			ir_ioapic[i].iommu = NULL;
iommu             968 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu             972 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu             975 drivers/iommu/intel_irq_remapping.c 		if (!ecap_ir_support(iommu->ecap))
iommu             978 drivers/iommu/intel_irq_remapping.c 		ret = ir_parse_ioapic_hpet_scope(drhd->hdr, iommu);
iommu            1019 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu = NULL;
iommu            1024 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu            1025 drivers/iommu/intel_irq_remapping.c 		if (!ecap_ir_support(iommu->ecap))
iommu            1028 drivers/iommu/intel_irq_remapping.c 		iommu_disable_irq_remapping(iommu);
iommu            1042 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu = NULL;
iommu            1044 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd)
iommu            1045 drivers/iommu/intel_irq_remapping.c 		if (iommu->qi)
iommu            1046 drivers/iommu/intel_irq_remapping.c 			dmar_reenable_qi(iommu);
iommu            1051 drivers/iommu/intel_irq_remapping.c 	for_each_iommu(iommu, drhd) {
iommu            1052 drivers/iommu/intel_irq_remapping.c 		if (!ecap_ir_support(iommu->ecap))
iommu            1056 drivers/iommu/intel_irq_remapping.c 		iommu_set_irq_remapping(iommu, eim);
iommu            1057 drivers/iommu/intel_irq_remapping.c 		iommu_enable_irq_remapping(iommu);
iommu            1097 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu = NULL;
iommu            1104 drivers/iommu/intel_irq_remapping.c 		iommu = map_ioapic_to_ir(info->ioapic_id);
iommu            1107 drivers/iommu/intel_irq_remapping.c 		iommu = map_hpet_to_ir(info->hpet_id);
iommu            1111 drivers/iommu/intel_irq_remapping.c 		iommu = map_dev_to_ir(info->msi_dev);
iommu            1118 drivers/iommu/intel_irq_remapping.c 	return iommu ? iommu->ir_domain : NULL;
iommu            1123 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu;
iommu            1131 drivers/iommu/intel_irq_remapping.c 		iommu = map_dev_to_ir(info->msi_dev);
iommu            1132 drivers/iommu/intel_irq_remapping.c 		if (iommu)
iommu            1133 drivers/iommu/intel_irq_remapping.c 			return iommu->ir_msi_domain;
iommu            1347 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu = domain->host_data;
iommu            1354 drivers/iommu/intel_irq_remapping.c 	if (!info || !iommu)
iommu            1377 drivers/iommu/intel_irq_remapping.c 	index = alloc_irte(iommu, &data->irq_2_iommu, nr_irqs);
iommu            1453 drivers/iommu/intel_irq_remapping.c static int dmar_ir_add(struct dmar_drhd_unit *dmaru, struct intel_iommu *iommu)
iommu            1458 drivers/iommu/intel_irq_remapping.c 	if (eim && !ecap_eim_support(iommu->ecap)) {
iommu            1460 drivers/iommu/intel_irq_remapping.c 			iommu->reg_phys, iommu->ecap);
iommu            1464 drivers/iommu/intel_irq_remapping.c 	if (ir_parse_ioapic_hpet_scope(dmaru->hdr, iommu)) {
iommu            1466 drivers/iommu/intel_irq_remapping.c 			iommu->reg_phys);
iommu            1473 drivers/iommu/intel_irq_remapping.c 	ret = intel_setup_irq_remapping(iommu);
iommu            1476 drivers/iommu/intel_irq_remapping.c 		       iommu->name);
iommu            1477 drivers/iommu/intel_irq_remapping.c 		intel_teardown_irq_remapping(iommu);
iommu            1478 drivers/iommu/intel_irq_remapping.c 		ir_remove_ioapic_hpet_scope(iommu);
iommu            1480 drivers/iommu/intel_irq_remapping.c 		iommu_enable_irq_remapping(iommu);
iommu            1489 drivers/iommu/intel_irq_remapping.c 	struct intel_iommu *iommu = dmaru->iommu;
iommu            1493 drivers/iommu/intel_irq_remapping.c 	if (iommu == NULL)
iommu            1495 drivers/iommu/intel_irq_remapping.c 	if (!ecap_ir_support(iommu->ecap))
iommu            1498 drivers/iommu/intel_irq_remapping.c 	    !cap_pi_support(iommu->cap))
iommu            1502 drivers/iommu/intel_irq_remapping.c 		if (!iommu->ir_table)
iommu            1503 drivers/iommu/intel_irq_remapping.c 			ret = dmar_ir_add(dmaru, iommu);
iommu            1505 drivers/iommu/intel_irq_remapping.c 		if (iommu->ir_table) {
iommu            1506 drivers/iommu/intel_irq_remapping.c 			if (!bitmap_empty(iommu->ir_table->bitmap,
iommu            1510 drivers/iommu/intel_irq_remapping.c 				iommu_disable_irq_remapping(iommu);
iommu            1511 drivers/iommu/intel_irq_remapping.c 				intel_teardown_irq_remapping(iommu);
iommu            1512 drivers/iommu/intel_irq_remapping.c 				ir_remove_ioapic_hpet_scope(iommu);
iommu              54 drivers/iommu/iommu-sysfs.c int iommu_device_sysfs_add(struct iommu_device *iommu,
iommu              62 drivers/iommu/iommu-sysfs.c 	iommu->dev = kzalloc(sizeof(*iommu->dev), GFP_KERNEL);
iommu              63 drivers/iommu/iommu-sysfs.c 	if (!iommu->dev)
iommu              66 drivers/iommu/iommu-sysfs.c 	device_initialize(iommu->dev);
iommu              68 drivers/iommu/iommu-sysfs.c 	iommu->dev->class = &iommu_class;
iommu              69 drivers/iommu/iommu-sysfs.c 	iommu->dev->parent = parent;
iommu              70 drivers/iommu/iommu-sysfs.c 	iommu->dev->groups = groups;
iommu              73 drivers/iommu/iommu-sysfs.c 	ret = kobject_set_name_vargs(&iommu->dev->kobj, fmt, vargs);
iommu              78 drivers/iommu/iommu-sysfs.c 	ret = device_add(iommu->dev);
iommu              82 drivers/iommu/iommu-sysfs.c 	dev_set_drvdata(iommu->dev, iommu);
iommu              87 drivers/iommu/iommu-sysfs.c 	put_device(iommu->dev);
iommu              91 drivers/iommu/iommu-sysfs.c void iommu_device_sysfs_remove(struct iommu_device *iommu)
iommu              93 drivers/iommu/iommu-sysfs.c 	dev_set_drvdata(iommu->dev, NULL);
iommu              94 drivers/iommu/iommu-sysfs.c 	device_unregister(iommu->dev);
iommu              95 drivers/iommu/iommu-sysfs.c 	iommu->dev = NULL;
iommu             103 drivers/iommu/iommu-sysfs.c int iommu_device_link(struct iommu_device *iommu, struct device *link)
iommu             107 drivers/iommu/iommu-sysfs.c 	if (!iommu || IS_ERR(iommu))
iommu             110 drivers/iommu/iommu-sysfs.c 	ret = sysfs_add_link_to_group(&iommu->dev->kobj, "devices",
iommu             115 drivers/iommu/iommu-sysfs.c 	ret = sysfs_create_link_nowarn(&link->kobj, &iommu->dev->kobj, "iommu");
iommu             117 drivers/iommu/iommu-sysfs.c 		sysfs_remove_link_from_group(&iommu->dev->kobj, "devices",
iommu             123 drivers/iommu/iommu-sysfs.c void iommu_device_unlink(struct iommu_device *iommu, struct device *link)
iommu             125 drivers/iommu/iommu-sysfs.c 	if (!iommu || IS_ERR(iommu))
iommu             129 drivers/iommu/iommu-sysfs.c 	sysfs_remove_link_from_group(&iommu->dev->kobj, "devices", dev_name(link));
iommu             137 drivers/iommu/iommu.c int iommu_device_register(struct iommu_device *iommu)
iommu             140 drivers/iommu/iommu.c 	list_add_tail(&iommu->list, &iommu_device_list);
iommu             145 drivers/iommu/iommu.c void iommu_device_unregister(struct iommu_device *iommu)
iommu             148 drivers/iommu/iommu.c 	list_del(&iommu->list);
iommu            2280 drivers/iommu/iommu.c 	struct iommu_device *iommu;
iommu            2283 drivers/iommu/iommu.c 	list_for_each_entry(iommu, &iommu_device_list, list)
iommu            2284 drivers/iommu/iommu.c 		if (iommu->fwnode == fwnode) {
iommu            2285 drivers/iommu/iommu.c 			ops = iommu->ops;
iommu              58 drivers/iommu/ipmmu-vmsa.c 	struct iommu_device iommu;
iommu             933 drivers/iommu/ipmmu-vmsa.c 	iommu_device_link(&mmu->iommu, dev);
iommu             941 drivers/iommu/ipmmu-vmsa.c 	iommu_device_unlink(&mmu->iommu, dev);
iommu            1132 drivers/iommu/ipmmu-vmsa.c 		ret = iommu_device_sysfs_add(&mmu->iommu, &pdev->dev, NULL,
iommu            1137 drivers/iommu/ipmmu-vmsa.c 		iommu_device_set_ops(&mmu->iommu, &ipmmu_ops);
iommu            1138 drivers/iommu/ipmmu-vmsa.c 		iommu_device_set_fwnode(&mmu->iommu,
iommu            1141 drivers/iommu/ipmmu-vmsa.c 		ret = iommu_device_register(&mmu->iommu);
iommu            1166 drivers/iommu/ipmmu-vmsa.c 	iommu_device_sysfs_remove(&mmu->iommu);
iommu            1167 drivers/iommu/ipmmu-vmsa.c 	iommu_device_unregister(&mmu->iommu);
iommu              55 drivers/iommu/msm_iommu.c static int __enable_clocks(struct msm_iommu_dev *iommu)
iommu              59 drivers/iommu/msm_iommu.c 	ret = clk_enable(iommu->pclk);
iommu              63 drivers/iommu/msm_iommu.c 	if (iommu->clk) {
iommu              64 drivers/iommu/msm_iommu.c 		ret = clk_enable(iommu->clk);
iommu              66 drivers/iommu/msm_iommu.c 			clk_disable(iommu->pclk);
iommu              72 drivers/iommu/msm_iommu.c static void __disable_clocks(struct msm_iommu_dev *iommu)
iommu              74 drivers/iommu/msm_iommu.c 	if (iommu->clk)
iommu              75 drivers/iommu/msm_iommu.c 		clk_disable(iommu->clk);
iommu              76 drivers/iommu/msm_iommu.c 	clk_disable(iommu->pclk);
iommu             121 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu = NULL;
iommu             125 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &priv->list_attached, dom_node) {
iommu             126 drivers/iommu/msm_iommu.c 		ret = __enable_clocks(iommu);
iommu             130 drivers/iommu/msm_iommu.c 		list_for_each_entry(master, &iommu->ctx_list, list)
iommu             131 drivers/iommu/msm_iommu.c 			SET_CTX_TLBIALL(iommu->base, master->num, 0);
iommu             133 drivers/iommu/msm_iommu.c 		__disable_clocks(iommu);
iommu             143 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu = NULL;
iommu             148 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &priv->list_attached, dom_node) {
iommu             149 drivers/iommu/msm_iommu.c 		ret = __enable_clocks(iommu);
iommu             153 drivers/iommu/msm_iommu.c 		list_for_each_entry(master, &iommu->ctx_list, list) {
iommu             157 drivers/iommu/msm_iommu.c 				iova |= GET_CONTEXTIDR_ASID(iommu->base,
iommu             159 drivers/iommu/msm_iommu.c 				SET_TLBIVA(iommu->base, master->num, iova);
iommu             164 drivers/iommu/msm_iommu.c 		__disable_clocks(iommu);
iommu             214 drivers/iommu/msm_iommu.c static void config_mids(struct msm_iommu_dev *iommu,
iommu             223 drivers/iommu/msm_iommu.c 		SET_M2VCBR_N(iommu->base, mid, 0);
iommu             224 drivers/iommu/msm_iommu.c 		SET_CBACR_N(iommu->base, ctx, 0);
iommu             227 drivers/iommu/msm_iommu.c 		SET_VMID(iommu->base, mid, 0);
iommu             230 drivers/iommu/msm_iommu.c 		SET_CBNDX(iommu->base, mid, ctx);
iommu             233 drivers/iommu/msm_iommu.c 		SET_CBVMID(iommu->base, ctx, 0);
iommu             236 drivers/iommu/msm_iommu.c 		SET_CONTEXTIDR_ASID(iommu->base, ctx, ctx);
iommu             239 drivers/iommu/msm_iommu.c 		SET_NSCFG(iommu->base, mid, 3);
iommu             375 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu, *ret = NULL;
iommu             378 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &qcom_iommu_devices, dev_node) {
iommu             379 drivers/iommu/msm_iommu.c 		master = list_first_entry(&iommu->ctx_list,
iommu             383 drivers/iommu/msm_iommu.c 			ret = iommu;
iommu             393 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             398 drivers/iommu/msm_iommu.c 	iommu = find_iommu_for_dev(dev);
iommu             401 drivers/iommu/msm_iommu.c 	if (iommu)
iommu             402 drivers/iommu/msm_iommu.c 		iommu_device_link(&iommu->iommu, dev);
iommu             417 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             421 drivers/iommu/msm_iommu.c 	iommu = find_iommu_for_dev(dev);
iommu             424 drivers/iommu/msm_iommu.c 	if (iommu)
iommu             425 drivers/iommu/msm_iommu.c 		iommu_device_unlink(&iommu->iommu, dev);
iommu             434 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             442 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &qcom_iommu_devices, dev_node) {
iommu             443 drivers/iommu/msm_iommu.c 		master = list_first_entry(&iommu->ctx_list,
iommu             447 drivers/iommu/msm_iommu.c 			ret = __enable_clocks(iommu);
iommu             451 drivers/iommu/msm_iommu.c 			list_for_each_entry(master, &iommu->ctx_list, list) {
iommu             458 drivers/iommu/msm_iommu.c 					msm_iommu_alloc_ctx(iommu->context_map,
iommu             459 drivers/iommu/msm_iommu.c 							    0, iommu->ncb);
iommu             464 drivers/iommu/msm_iommu.c 				config_mids(iommu, master);
iommu             465 drivers/iommu/msm_iommu.c 				__program_context(iommu->base, master->num,
iommu             468 drivers/iommu/msm_iommu.c 			__disable_clocks(iommu);
iommu             469 drivers/iommu/msm_iommu.c 			list_add(&iommu->dom_node, &priv->list_attached);
iommu             484 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             491 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &priv->list_attached, dom_node) {
iommu             492 drivers/iommu/msm_iommu.c 		ret = __enable_clocks(iommu);
iommu             496 drivers/iommu/msm_iommu.c 		list_for_each_entry(master, &iommu->ctx_list, list) {
iommu             497 drivers/iommu/msm_iommu.c 			msm_iommu_free_ctx(iommu->context_map, master->num);
iommu             498 drivers/iommu/msm_iommu.c 			__reset_context(iommu->base, master->num);
iommu             500 drivers/iommu/msm_iommu.c 		__disable_clocks(iommu);
iommu             537 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             546 drivers/iommu/msm_iommu.c 	iommu = list_first_entry(&priv->list_attached,
iommu             549 drivers/iommu/msm_iommu.c 	if (list_empty(&iommu->ctx_list))
iommu             552 drivers/iommu/msm_iommu.c 	master = list_first_entry(&iommu->ctx_list,
iommu             557 drivers/iommu/msm_iommu.c 	ret = __enable_clocks(iommu);
iommu             562 drivers/iommu/msm_iommu.c 	SET_CTX_TLBIALL(iommu->base, master->num, 0);
iommu             563 drivers/iommu/msm_iommu.c 	SET_V2PPR(iommu->base, master->num, va & V2Pxx_VA);
iommu             565 drivers/iommu/msm_iommu.c 	par = GET_PAR(iommu->base, master->num);
iommu             568 drivers/iommu/msm_iommu.c 	if (GET_NOFAULT_SS(iommu->base, master->num))
iommu             573 drivers/iommu/msm_iommu.c 	if (GET_FAULT(iommu->base, master->num))
iommu             576 drivers/iommu/msm_iommu.c 	__disable_clocks(iommu);
iommu             613 drivers/iommu/msm_iommu.c 				struct msm_iommu_dev **iommu,
iommu             616 drivers/iommu/msm_iommu.c 	struct msm_iommu_ctx_dev *master = dev->archdata.iommu;
iommu             619 drivers/iommu/msm_iommu.c 	if (list_empty(&(*iommu)->ctx_list)) {
iommu             622 drivers/iommu/msm_iommu.c 		list_add(&master->list, &(*iommu)->ctx_list);
iommu             623 drivers/iommu/msm_iommu.c 		dev->archdata.iommu = master;
iommu             639 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             644 drivers/iommu/msm_iommu.c 	list_for_each_entry(iommu, &qcom_iommu_devices, dev_node)
iommu             645 drivers/iommu/msm_iommu.c 		if (iommu->dev->of_node == spec->np)
iommu             648 drivers/iommu/msm_iommu.c 	if (!iommu || iommu->dev->of_node != spec->np) {
iommu             653 drivers/iommu/msm_iommu.c 	insert_iommu_master(dev, &iommu, spec);
iommu             662 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu = dev_id;
iommu             668 drivers/iommu/msm_iommu.c 	if (!iommu) {
iommu             674 drivers/iommu/msm_iommu.c 	pr_err("base = %08x\n", (unsigned int)iommu->base);
iommu             676 drivers/iommu/msm_iommu.c 	ret = __enable_clocks(iommu);
iommu             680 drivers/iommu/msm_iommu.c 	for (i = 0; i < iommu->ncb; i++) {
iommu             681 drivers/iommu/msm_iommu.c 		fsr = GET_FSR(iommu->base, i);
iommu             685 drivers/iommu/msm_iommu.c 			print_ctx_regs(iommu->base, i);
iommu             686 drivers/iommu/msm_iommu.c 			SET_FSR(iommu->base, i, 0x4000000F);
iommu             689 drivers/iommu/msm_iommu.c 	__disable_clocks(iommu);
iommu             722 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu;
iommu             725 drivers/iommu/msm_iommu.c 	iommu = devm_kzalloc(&pdev->dev, sizeof(*iommu), GFP_KERNEL);
iommu             726 drivers/iommu/msm_iommu.c 	if (!iommu)
iommu             729 drivers/iommu/msm_iommu.c 	iommu->dev = &pdev->dev;
iommu             730 drivers/iommu/msm_iommu.c 	INIT_LIST_HEAD(&iommu->ctx_list);
iommu             732 drivers/iommu/msm_iommu.c 	iommu->pclk = devm_clk_get(iommu->dev, "smmu_pclk");
iommu             733 drivers/iommu/msm_iommu.c 	if (IS_ERR(iommu->pclk)) {
iommu             734 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not get smmu_pclk\n");
iommu             735 drivers/iommu/msm_iommu.c 		return PTR_ERR(iommu->pclk);
iommu             738 drivers/iommu/msm_iommu.c 	ret = clk_prepare(iommu->pclk);
iommu             740 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not prepare smmu_pclk\n");
iommu             744 drivers/iommu/msm_iommu.c 	iommu->clk = devm_clk_get(iommu->dev, "iommu_clk");
iommu             745 drivers/iommu/msm_iommu.c 	if (IS_ERR(iommu->clk)) {
iommu             746 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not get iommu_clk\n");
iommu             747 drivers/iommu/msm_iommu.c 		clk_unprepare(iommu->pclk);
iommu             748 drivers/iommu/msm_iommu.c 		return PTR_ERR(iommu->clk);
iommu             751 drivers/iommu/msm_iommu.c 	ret = clk_prepare(iommu->clk);
iommu             753 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not prepare iommu_clk\n");
iommu             754 drivers/iommu/msm_iommu.c 		clk_unprepare(iommu->pclk);
iommu             759 drivers/iommu/msm_iommu.c 	iommu->base = devm_ioremap_resource(iommu->dev, r);
iommu             760 drivers/iommu/msm_iommu.c 	if (IS_ERR(iommu->base)) {
iommu             761 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not get iommu base\n");
iommu             762 drivers/iommu/msm_iommu.c 		ret = PTR_ERR(iommu->base);
iommu             767 drivers/iommu/msm_iommu.c 	iommu->irq = platform_get_irq(pdev, 0);
iommu             768 drivers/iommu/msm_iommu.c 	if (iommu->irq < 0) {
iommu             773 drivers/iommu/msm_iommu.c 	ret = of_property_read_u32(iommu->dev->of_node, "qcom,ncb", &val);
iommu             775 drivers/iommu/msm_iommu.c 		dev_err(iommu->dev, "could not get ncb\n");
iommu             778 drivers/iommu/msm_iommu.c 	iommu->ncb = val;
iommu             780 drivers/iommu/msm_iommu.c 	msm_iommu_reset(iommu->base, iommu->ncb);
iommu             781 drivers/iommu/msm_iommu.c 	SET_M(iommu->base, 0, 1);
iommu             782 drivers/iommu/msm_iommu.c 	SET_PAR(iommu->base, 0, 0);
iommu             783 drivers/iommu/msm_iommu.c 	SET_V2PCFG(iommu->base, 0, 1);
iommu             784 drivers/iommu/msm_iommu.c 	SET_V2PPR(iommu->base, 0, 0);
iommu             785 drivers/iommu/msm_iommu.c 	par = GET_PAR(iommu->base, 0);
iommu             786 drivers/iommu/msm_iommu.c 	SET_V2PCFG(iommu->base, 0, 0);
iommu             787 drivers/iommu/msm_iommu.c 	SET_M(iommu->base, 0, 0);
iommu             795 drivers/iommu/msm_iommu.c 	ret = devm_request_threaded_irq(iommu->dev, iommu->irq, NULL,
iommu             799 drivers/iommu/msm_iommu.c 					iommu);
iommu             801 drivers/iommu/msm_iommu.c 		pr_err("Request IRQ %d failed with ret=%d\n", iommu->irq, ret);
iommu             805 drivers/iommu/msm_iommu.c 	list_add(&iommu->dev_node, &qcom_iommu_devices);
iommu             807 drivers/iommu/msm_iommu.c 	ret = iommu_device_sysfs_add(&iommu->iommu, iommu->dev, NULL,
iommu             814 drivers/iommu/msm_iommu.c 	iommu_device_set_ops(&iommu->iommu, &msm_iommu_ops);
iommu             815 drivers/iommu/msm_iommu.c 	iommu_device_set_fwnode(&iommu->iommu, &pdev->dev.of_node->fwnode);
iommu             817 drivers/iommu/msm_iommu.c 	ret = iommu_device_register(&iommu->iommu);
iommu             826 drivers/iommu/msm_iommu.c 		iommu->base, iommu->irq, iommu->ncb);
iommu             830 drivers/iommu/msm_iommu.c 	clk_unprepare(iommu->clk);
iommu             831 drivers/iommu/msm_iommu.c 	clk_unprepare(iommu->pclk);
iommu             842 drivers/iommu/msm_iommu.c 	struct msm_iommu_dev *iommu = platform_get_drvdata(pdev);
iommu             844 drivers/iommu/msm_iommu.c 	clk_unprepare(iommu->clk);
iommu             845 drivers/iommu/msm_iommu.c 	clk_unprepare(iommu->pclk);
iommu              60 drivers/iommu/msm_iommu.h 	struct iommu_device iommu;
iommu             507 drivers/iommu/mtk_iommu.c 	iommu_device_link(&data->iommu, dev);
iommu             526 drivers/iommu/mtk_iommu.c 	iommu_device_unlink(&data->iommu, dev);
iommu             744 drivers/iommu/mtk_iommu.c 	ret = iommu_device_sysfs_add(&data->iommu, dev, NULL,
iommu             749 drivers/iommu/mtk_iommu.c 	iommu_device_set_ops(&data->iommu, &mtk_iommu_ops);
iommu             750 drivers/iommu/mtk_iommu.c 	iommu_device_set_fwnode(&data->iommu, &pdev->dev.of_node->fwnode);
iommu             752 drivers/iommu/mtk_iommu.c 	ret = iommu_device_register(&data->iommu);
iommu             769 drivers/iommu/mtk_iommu.c 	iommu_device_sysfs_remove(&data->iommu);
iommu             770 drivers/iommu/mtk_iommu.c 	iommu_device_unregister(&data->iommu);
iommu              63 drivers/iommu/mtk_iommu.h 	struct iommu_device		iommu;
iommu             405 drivers/iommu/mtk_iommu_v1.c 	mtk_mapping = m4udev->archdata.iommu;
iommu             413 drivers/iommu/mtk_iommu_v1.c 		m4udev->archdata.iommu = mtk_mapping;
iommu             463 drivers/iommu/mtk_iommu_v1.c 	mtk_mapping = data->dev->archdata.iommu;
iommu             470 drivers/iommu/mtk_iommu_v1.c 	return iommu_device_link(&data->iommu, dev);
iommu             482 drivers/iommu/mtk_iommu_v1.c 	iommu_device_unlink(&data->iommu, dev);
iommu             626 drivers/iommu/mtk_iommu_v1.c 	ret = iommu_device_sysfs_add(&data->iommu, &pdev->dev, NULL,
iommu             631 drivers/iommu/mtk_iommu_v1.c 	iommu_device_set_ops(&data->iommu, &mtk_iommu_ops);
iommu             633 drivers/iommu/mtk_iommu_v1.c 	ret = iommu_device_register(&data->iommu);
iommu             647 drivers/iommu/mtk_iommu_v1.c 	iommu_device_sysfs_remove(&data->iommu);
iommu             648 drivers/iommu/mtk_iommu_v1.c 	iommu_device_unregister(&data->iommu);
iommu              85 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu             115 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu             964 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu             971 drivers/iommu/omap-iommu.c 	iommu = omap_domain->iommus;
iommu             972 drivers/iommu/omap-iommu.c 	iommu += (omap_domain->num_iommus - 1);
iommu             973 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu--) {
iommu             974 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu             993 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu            1000 drivers/iommu/omap-iommu.c 	iommu = omap_domain->iommus;
iommu            1001 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
iommu            1002 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu            1245 drivers/iommu/omap-iommu.c 		err = iommu_device_sysfs_add(&obj->iommu, obj->dev, NULL,
iommu            1250 drivers/iommu/omap-iommu.c 		iommu_device_set_ops(&obj->iommu, &omap_iommu_ops);
iommu            1252 drivers/iommu/omap-iommu.c 		err = iommu_device_register(&obj->iommu);
iommu            1274 drivers/iommu/omap-iommu.c 	iommu_device_sysfs_remove(&obj->iommu);
iommu            1288 drivers/iommu/omap-iommu.c 		iommu_device_sysfs_remove(&obj->iommu);
iommu            1289 drivers/iommu/omap-iommu.c 		iommu_device_unregister(&obj->iommu);
iommu            1346 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu            1363 drivers/iommu/omap-iommu.c 	iommu = omap_domain->iommus;
iommu            1364 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
iommu            1365 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu            1376 drivers/iommu/omap-iommu.c 			iommu--;
iommu            1377 drivers/iommu/omap-iommu.c 			oiommu = iommu->iommu_dev;
iommu            1390 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu            1398 drivers/iommu/omap-iommu.c 	iommu = omap_domain->iommus;
iommu            1399 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu++) {
iommu            1400 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu            1417 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu            1432 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu            1439 drivers/iommu/omap-iommu.c 	odomain->iommus = kcalloc(odomain->num_iommus, sizeof(*iommu),
iommu            1444 drivers/iommu/omap-iommu.c 	iommu = odomain->iommus;
iommu            1445 drivers/iommu/omap-iommu.c 	for (i = 0; i < odomain->num_iommus; i++, iommu++) {
iommu            1446 drivers/iommu/omap-iommu.c 		iommu->pgtable = kzalloc(IOPGD_TABLE_SIZE, GFP_ATOMIC);
iommu            1447 drivers/iommu/omap-iommu.c 		if (!iommu->pgtable)
iommu            1454 drivers/iommu/omap-iommu.c 		if (WARN_ON(!IS_ALIGNED((long)iommu->pgtable,
iommu            1465 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu = odomain->iommus;
iommu            1467 drivers/iommu/omap-iommu.c 	for (i = 0; iommu && i < odomain->num_iommus; i++, iommu++)
iommu            1468 drivers/iommu/omap-iommu.c 		kfree(iommu->pgtable);
iommu            1479 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu            1480 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu;
iommu            1506 drivers/iommu/omap-iommu.c 	iommu = omap_domain->iommus;
iommu            1507 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu++, arch_data++) {
iommu            1510 drivers/iommu/omap-iommu.c 		ret = omap_iommu_attach(oiommu, iommu->pgtable);
iommu            1517 drivers/iommu/omap-iommu.c 		iommu->iommu_dev = oiommu;
iommu            1526 drivers/iommu/omap-iommu.c 		iommu--;
iommu            1528 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu            1530 drivers/iommu/omap-iommu.c 		iommu->iommu_dev = NULL;
iommu            1543 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu            1544 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu = omap_domain->iommus;
iommu            1563 drivers/iommu/omap-iommu.c 	iommu += (omap_domain->num_iommus - 1);
iommu            1565 drivers/iommu/omap-iommu.c 	for (i = 0; i < omap_domain->num_iommus; i++, iommu--, arch_data--) {
iommu            1566 drivers/iommu/omap-iommu.c 		oiommu = iommu->iommu_dev;
iommu            1570 drivers/iommu/omap-iommu.c 		iommu->iommu_dev = NULL;
iommu            1627 drivers/iommu/omap-iommu.c 	struct omap_iommu_device *iommu = omap_domain->iommus;
iommu            1628 drivers/iommu/omap-iommu.c 	struct omap_iommu *oiommu = iommu->iommu_dev;
iommu            1743 drivers/iommu/omap-iommu.c 	ret = iommu_device_link(&oiommu->iommu, dev);
iommu            1749 drivers/iommu/omap-iommu.c 	dev->archdata.iommu = arch_data;
iommu            1757 drivers/iommu/omap-iommu.c 		iommu_device_unlink(&oiommu->iommu, dev);
iommu            1758 drivers/iommu/omap-iommu.c 		dev->archdata.iommu = NULL;
iommu            1780 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu            1785 drivers/iommu/omap-iommu.c 	iommu_device_unlink(&arch_data->iommu_dev->iommu, dev);
iommu            1788 drivers/iommu/omap-iommu.c 	dev->archdata.iommu = NULL;
iommu            1795 drivers/iommu/omap-iommu.c 	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
iommu              82 drivers/iommu/omap-iommu.h 	struct iommu_device iommu;
iommu              44 drivers/iommu/qcom_iommu.c 	struct iommu_device	 iommu;
iommu              67 drivers/iommu/qcom_iommu.c 	struct qcom_iommu_dev	*iommu;
iommu             234 drivers/iommu/qcom_iommu.c 	if (qcom_domain->iommu)
iommu             245 drivers/iommu/qcom_iommu.c 	qcom_domain->iommu = qcom_iommu;
iommu             311 drivers/iommu/qcom_iommu.c 	qcom_domain->iommu = NULL;
iommu             350 drivers/iommu/qcom_iommu.c 	if (qcom_domain->iommu) {
iommu             357 drivers/iommu/qcom_iommu.c 		pm_runtime_get_sync(qcom_domain->iommu->dev);
iommu             359 drivers/iommu/qcom_iommu.c 		pm_runtime_put_sync(qcom_domain->iommu->dev);
iommu             388 drivers/iommu/qcom_iommu.c 	if (qcom_domain->iommu != qcom_iommu) {
iommu             391 drivers/iommu/qcom_iommu.c 			dev_name(qcom_domain->iommu->dev),
iommu             406 drivers/iommu/qcom_iommu.c 	if (WARN_ON(!qcom_domain->iommu))
iommu             454 drivers/iommu/qcom_iommu.c 	pm_runtime_get_sync(qcom_domain->iommu->dev);
iommu             458 drivers/iommu/qcom_iommu.c 	pm_runtime_put_sync(qcom_domain->iommu->dev);
iommu             471 drivers/iommu/qcom_iommu.c 	pm_runtime_get_sync(qcom_domain->iommu->dev);
iommu             473 drivers/iommu/qcom_iommu.c 	pm_runtime_put_sync(qcom_domain->iommu->dev);
iommu             542 drivers/iommu/qcom_iommu.c 	iommu_device_link(&qcom_iommu->iommu, dev);
iommu             554 drivers/iommu/qcom_iommu.c 	iommu_device_unlink(&qcom_iommu->iommu, dev);
iommu             860 drivers/iommu/qcom_iommu.c 	ret = iommu_device_sysfs_add(&qcom_iommu->iommu, dev, NULL,
iommu             867 drivers/iommu/qcom_iommu.c 	iommu_device_set_ops(&qcom_iommu->iommu, &qcom_iommu_ops);
iommu             868 drivers/iommu/qcom_iommu.c 	iommu_device_set_fwnode(&qcom_iommu->iommu, dev->fwnode);
iommu             870 drivers/iommu/qcom_iommu.c 	ret = iommu_device_register(&qcom_iommu->iommu);
iommu             895 drivers/iommu/qcom_iommu.c 	iommu_device_sysfs_remove(&qcom_iommu->iommu);
iommu             896 drivers/iommu/qcom_iommu.c 	iommu_device_unregister(&qcom_iommu->iommu);
iommu             107 drivers/iommu/rockchip-iommu.c 	struct iommu_device iommu;
iommu             115 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu             285 drivers/iommu/rockchip-iommu.c static void rk_iommu_command(struct rk_iommu *iommu, u32 command)
iommu             289 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++)
iommu             290 drivers/iommu/rockchip-iommu.c 		writel(command, iommu->bases[i] + RK_MMU_COMMAND);
iommu             297 drivers/iommu/rockchip-iommu.c static void rk_iommu_zap_lines(struct rk_iommu *iommu, dma_addr_t iova_start,
iommu             306 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++) {
iommu             310 drivers/iommu/rockchip-iommu.c 			rk_iommu_write(iommu->bases[i], RK_MMU_ZAP_ONE_LINE, iova);
iommu             314 drivers/iommu/rockchip-iommu.c static bool rk_iommu_is_stall_active(struct rk_iommu *iommu)
iommu             319 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++)
iommu             320 drivers/iommu/rockchip-iommu.c 		active &= !!(rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
iommu             326 drivers/iommu/rockchip-iommu.c static bool rk_iommu_is_paging_enabled(struct rk_iommu *iommu)
iommu             331 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++)
iommu             332 drivers/iommu/rockchip-iommu.c 		enable &= !!(rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
iommu             338 drivers/iommu/rockchip-iommu.c static bool rk_iommu_is_reset_done(struct rk_iommu *iommu)
iommu             343 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++)
iommu             344 drivers/iommu/rockchip-iommu.c 		done &= rk_iommu_read(iommu->bases[i], RK_MMU_DTE_ADDR) == 0;
iommu             349 drivers/iommu/rockchip-iommu.c static int rk_iommu_enable_stall(struct rk_iommu *iommu)
iommu             354 drivers/iommu/rockchip-iommu.c 	if (rk_iommu_is_stall_active(iommu))
iommu             358 drivers/iommu/rockchip-iommu.c 	if (!rk_iommu_is_paging_enabled(iommu))
iommu             361 drivers/iommu/rockchip-iommu.c 	rk_iommu_command(iommu, RK_MMU_CMD_ENABLE_STALL);
iommu             363 drivers/iommu/rockchip-iommu.c 	ret = readx_poll_timeout(rk_iommu_is_stall_active, iommu, val,
iommu             367 drivers/iommu/rockchip-iommu.c 		for (i = 0; i < iommu->num_mmu; i++)
iommu             368 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Enable stall request timed out, status: %#08x\n",
iommu             369 drivers/iommu/rockchip-iommu.c 				rk_iommu_read(iommu->bases[i], RK_MMU_STATUS));
iommu             374 drivers/iommu/rockchip-iommu.c static int rk_iommu_disable_stall(struct rk_iommu *iommu)
iommu             379 drivers/iommu/rockchip-iommu.c 	if (!rk_iommu_is_stall_active(iommu))
iommu             382 drivers/iommu/rockchip-iommu.c 	rk_iommu_command(iommu, RK_MMU_CMD_DISABLE_STALL);
iommu             384 drivers/iommu/rockchip-iommu.c 	ret = readx_poll_timeout(rk_iommu_is_stall_active, iommu, val,
iommu             388 drivers/iommu/rockchip-iommu.c 		for (i = 0; i < iommu->num_mmu; i++)
iommu             389 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Disable stall request timed out, status: %#08x\n",
iommu             390 drivers/iommu/rockchip-iommu.c 				rk_iommu_read(iommu->bases[i], RK_MMU_STATUS));
iommu             395 drivers/iommu/rockchip-iommu.c static int rk_iommu_enable_paging(struct rk_iommu *iommu)
iommu             400 drivers/iommu/rockchip-iommu.c 	if (rk_iommu_is_paging_enabled(iommu))
iommu             403 drivers/iommu/rockchip-iommu.c 	rk_iommu_command(iommu, RK_MMU_CMD_ENABLE_PAGING);
iommu             405 drivers/iommu/rockchip-iommu.c 	ret = readx_poll_timeout(rk_iommu_is_paging_enabled, iommu, val,
iommu             409 drivers/iommu/rockchip-iommu.c 		for (i = 0; i < iommu->num_mmu; i++)
iommu             410 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Enable paging request timed out, status: %#08x\n",
iommu             411 drivers/iommu/rockchip-iommu.c 				rk_iommu_read(iommu->bases[i], RK_MMU_STATUS));
iommu             416 drivers/iommu/rockchip-iommu.c static int rk_iommu_disable_paging(struct rk_iommu *iommu)
iommu             421 drivers/iommu/rockchip-iommu.c 	if (!rk_iommu_is_paging_enabled(iommu))
iommu             424 drivers/iommu/rockchip-iommu.c 	rk_iommu_command(iommu, RK_MMU_CMD_DISABLE_PAGING);
iommu             426 drivers/iommu/rockchip-iommu.c 	ret = readx_poll_timeout(rk_iommu_is_paging_enabled, iommu, val,
iommu             430 drivers/iommu/rockchip-iommu.c 		for (i = 0; i < iommu->num_mmu; i++)
iommu             431 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Disable paging request timed out, status: %#08x\n",
iommu             432 drivers/iommu/rockchip-iommu.c 				rk_iommu_read(iommu->bases[i], RK_MMU_STATUS));
iommu             437 drivers/iommu/rockchip-iommu.c static int rk_iommu_force_reset(struct rk_iommu *iommu)
iommu             443 drivers/iommu/rockchip-iommu.c 	if (iommu->reset_disabled)
iommu             450 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++) {
iommu             451 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR, DTE_ADDR_DUMMY);
iommu             453 drivers/iommu/rockchip-iommu.c 		dte_addr = rk_iommu_read(iommu->bases[i], RK_MMU_DTE_ADDR);
iommu             455 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Error during raw reset. MMU_DTE_ADDR is not functioning\n");
iommu             460 drivers/iommu/rockchip-iommu.c 	rk_iommu_command(iommu, RK_MMU_CMD_FORCE_RESET);
iommu             462 drivers/iommu/rockchip-iommu.c 	ret = readx_poll_timeout(rk_iommu_is_reset_done, iommu, val,
iommu             466 drivers/iommu/rockchip-iommu.c 		dev_err(iommu->dev, "FORCE_RESET command timed out\n");
iommu             473 drivers/iommu/rockchip-iommu.c static void log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova)
iommu             475 drivers/iommu/rockchip-iommu.c 	void __iomem *base = iommu->bases[index];
iommu             512 drivers/iommu/rockchip-iommu.c 	dev_err(iommu->dev, "iova = %pad: dte_index: %#03x pte_index: %#03x page_offset: %#03x\n",
iommu             514 drivers/iommu/rockchip-iommu.c 	dev_err(iommu->dev, "mmu_dte_addr: %pa dte@%pa: %#08x valid: %u pte@%pa: %#08x valid: %u page@%pa flags: %#03x\n",
iommu             522 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu = dev_id;
iommu             529 drivers/iommu/rockchip-iommu.c 	err = pm_runtime_get_if_in_use(iommu->dev);
iommu             533 drivers/iommu/rockchip-iommu.c 	if (WARN_ON(clk_bulk_enable(iommu->num_clocks, iommu->clocks)))
iommu             536 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++) {
iommu             537 drivers/iommu/rockchip-iommu.c 		int_status = rk_iommu_read(iommu->bases[i], RK_MMU_INT_STATUS);
iommu             542 drivers/iommu/rockchip-iommu.c 		iova = rk_iommu_read(iommu->bases[i], RK_MMU_PAGE_FAULT_ADDR);
iommu             547 drivers/iommu/rockchip-iommu.c 			status = rk_iommu_read(iommu->bases[i], RK_MMU_STATUS);
iommu             551 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "Page fault at %pad of type %s\n",
iommu             555 drivers/iommu/rockchip-iommu.c 			log_iova(iommu, i, iova);
iommu             562 drivers/iommu/rockchip-iommu.c 			if (iommu->domain)
iommu             563 drivers/iommu/rockchip-iommu.c 				report_iommu_fault(iommu->domain, iommu->dev, iova,
iommu             566 drivers/iommu/rockchip-iommu.c 				dev_err(iommu->dev, "Page fault while iommu not attached to domain?\n");
iommu             568 drivers/iommu/rockchip-iommu.c 			rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE);
iommu             569 drivers/iommu/rockchip-iommu.c 			rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_PAGE_FAULT_DONE);
iommu             573 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "BUS_ERROR occurred at %pad\n", &iova);
iommu             576 drivers/iommu/rockchip-iommu.c 			dev_err(iommu->dev, "unexpected int_status: %#08x\n",
iommu             579 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_INT_CLEAR, int_status);
iommu             582 drivers/iommu/rockchip-iommu.c 	clk_bulk_disable(iommu->num_clocks, iommu->clocks);
iommu             585 drivers/iommu/rockchip-iommu.c 	pm_runtime_put(iommu->dev);
iommu             626 drivers/iommu/rockchip-iommu.c 		struct rk_iommu *iommu;
iommu             629 drivers/iommu/rockchip-iommu.c 		iommu = list_entry(pos, struct rk_iommu, node);
iommu             632 drivers/iommu/rockchip-iommu.c 		ret = pm_runtime_get_if_in_use(iommu->dev);
iommu             636 drivers/iommu/rockchip-iommu.c 			WARN_ON(clk_bulk_enable(iommu->num_clocks,
iommu             637 drivers/iommu/rockchip-iommu.c 						iommu->clocks));
iommu             638 drivers/iommu/rockchip-iommu.c 			rk_iommu_zap_lines(iommu, iova, size);
iommu             639 drivers/iommu/rockchip-iommu.c 			clk_bulk_disable(iommu->num_clocks, iommu->clocks);
iommu             640 drivers/iommu/rockchip-iommu.c 			pm_runtime_put(iommu->dev);
iommu             839 drivers/iommu/rockchip-iommu.c 	struct rk_iommudata *data = dev->archdata.iommu;
iommu             841 drivers/iommu/rockchip-iommu.c 	return data ? data->iommu : NULL;
iommu             845 drivers/iommu/rockchip-iommu.c static void rk_iommu_disable(struct rk_iommu *iommu)
iommu             850 drivers/iommu/rockchip-iommu.c 	WARN_ON(clk_bulk_enable(iommu->num_clocks, iommu->clocks));
iommu             851 drivers/iommu/rockchip-iommu.c 	rk_iommu_enable_stall(iommu);
iommu             852 drivers/iommu/rockchip-iommu.c 	rk_iommu_disable_paging(iommu);
iommu             853 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++) {
iommu             854 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, 0);
iommu             855 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR, 0);
iommu             857 drivers/iommu/rockchip-iommu.c 	rk_iommu_disable_stall(iommu);
iommu             858 drivers/iommu/rockchip-iommu.c 	clk_bulk_disable(iommu->num_clocks, iommu->clocks);
iommu             862 drivers/iommu/rockchip-iommu.c static int rk_iommu_enable(struct rk_iommu *iommu)
iommu             864 drivers/iommu/rockchip-iommu.c 	struct iommu_domain *domain = iommu->domain;
iommu             868 drivers/iommu/rockchip-iommu.c 	ret = clk_bulk_enable(iommu->num_clocks, iommu->clocks);
iommu             872 drivers/iommu/rockchip-iommu.c 	ret = rk_iommu_enable_stall(iommu);
iommu             876 drivers/iommu/rockchip-iommu.c 	ret = rk_iommu_force_reset(iommu);
iommu             880 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_mmu; i++) {
iommu             881 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR,
iommu             883 drivers/iommu/rockchip-iommu.c 		rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE);
iommu             884 drivers/iommu/rockchip-iommu.c 		rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, RK_MMU_IRQ_MASK);
iommu             887 drivers/iommu/rockchip-iommu.c 	ret = rk_iommu_enable_paging(iommu);
iommu             890 drivers/iommu/rockchip-iommu.c 	rk_iommu_disable_stall(iommu);
iommu             892 drivers/iommu/rockchip-iommu.c 	clk_bulk_disable(iommu->num_clocks, iommu->clocks);
iommu             899 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu             905 drivers/iommu/rockchip-iommu.c 	iommu = rk_iommu_from_dev(dev);
iommu             906 drivers/iommu/rockchip-iommu.c 	if (!iommu)
iommu             912 drivers/iommu/rockchip-iommu.c 	if (iommu->domain != domain)
iommu             915 drivers/iommu/rockchip-iommu.c 	iommu->domain = NULL;
iommu             918 drivers/iommu/rockchip-iommu.c 	list_del_init(&iommu->node);
iommu             921 drivers/iommu/rockchip-iommu.c 	ret = pm_runtime_get_if_in_use(iommu->dev);
iommu             924 drivers/iommu/rockchip-iommu.c 		rk_iommu_disable(iommu);
iommu             925 drivers/iommu/rockchip-iommu.c 		pm_runtime_put(iommu->dev);
iommu             932 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu             941 drivers/iommu/rockchip-iommu.c 	iommu = rk_iommu_from_dev(dev);
iommu             942 drivers/iommu/rockchip-iommu.c 	if (!iommu)
iommu             948 drivers/iommu/rockchip-iommu.c 	if (iommu->domain == domain)
iommu             951 drivers/iommu/rockchip-iommu.c 	if (iommu->domain)
iommu             952 drivers/iommu/rockchip-iommu.c 		rk_iommu_detach_device(iommu->domain, dev);
iommu             954 drivers/iommu/rockchip-iommu.c 	iommu->domain = domain;
iommu             957 drivers/iommu/rockchip-iommu.c 	list_add_tail(&iommu->node, &rk_domain->iommus);
iommu             960 drivers/iommu/rockchip-iommu.c 	ret = pm_runtime_get_if_in_use(iommu->dev);
iommu             964 drivers/iommu/rockchip-iommu.c 	ret = rk_iommu_enable(iommu);
iommu             966 drivers/iommu/rockchip-iommu.c 		rk_iommu_detach_device(iommu->domain, dev);
iommu             968 drivers/iommu/rockchip-iommu.c 	pm_runtime_put(iommu->dev);
iommu            1060 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu            1063 drivers/iommu/rockchip-iommu.c 	data = dev->archdata.iommu;
iommu            1067 drivers/iommu/rockchip-iommu.c 	iommu = rk_iommu_from_dev(dev);
iommu            1074 drivers/iommu/rockchip-iommu.c 	iommu_device_link(&iommu->iommu, dev);
iommu            1075 drivers/iommu/rockchip-iommu.c 	data->link = device_link_add(dev, iommu->dev,
iommu            1083 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu            1084 drivers/iommu/rockchip-iommu.c 	struct rk_iommudata *data = dev->archdata.iommu;
iommu            1086 drivers/iommu/rockchip-iommu.c 	iommu = rk_iommu_from_dev(dev);
iommu            1089 drivers/iommu/rockchip-iommu.c 	iommu_device_unlink(&iommu->iommu, dev);
iommu            1095 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu            1097 drivers/iommu/rockchip-iommu.c 	iommu = rk_iommu_from_dev(dev);
iommu            1099 drivers/iommu/rockchip-iommu.c 	return iommu_group_ref_get(iommu->group);
iommu            1114 drivers/iommu/rockchip-iommu.c 	data->iommu = platform_get_drvdata(iommu_dev);
iommu            1115 drivers/iommu/rockchip-iommu.c 	dev->archdata.iommu = data;
iommu            1140 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu;
iommu            1145 drivers/iommu/rockchip-iommu.c 	iommu = devm_kzalloc(dev, sizeof(*iommu), GFP_KERNEL);
iommu            1146 drivers/iommu/rockchip-iommu.c 	if (!iommu)
iommu            1149 drivers/iommu/rockchip-iommu.c 	platform_set_drvdata(pdev, iommu);
iommu            1150 drivers/iommu/rockchip-iommu.c 	iommu->dev = dev;
iommu            1151 drivers/iommu/rockchip-iommu.c 	iommu->num_mmu = 0;
iommu            1153 drivers/iommu/rockchip-iommu.c 	iommu->bases = devm_kcalloc(dev, num_res, sizeof(*iommu->bases),
iommu            1155 drivers/iommu/rockchip-iommu.c 	if (!iommu->bases)
iommu            1162 drivers/iommu/rockchip-iommu.c 		iommu->bases[i] = devm_ioremap_resource(&pdev->dev, res);
iommu            1163 drivers/iommu/rockchip-iommu.c 		if (IS_ERR(iommu->bases[i]))
iommu            1165 drivers/iommu/rockchip-iommu.c 		iommu->num_mmu++;
iommu            1167 drivers/iommu/rockchip-iommu.c 	if (iommu->num_mmu == 0)
iommu            1168 drivers/iommu/rockchip-iommu.c 		return PTR_ERR(iommu->bases[0]);
iommu            1170 drivers/iommu/rockchip-iommu.c 	iommu->num_irq = platform_irq_count(pdev);
iommu            1171 drivers/iommu/rockchip-iommu.c 	if (iommu->num_irq < 0)
iommu            1172 drivers/iommu/rockchip-iommu.c 		return iommu->num_irq;
iommu            1174 drivers/iommu/rockchip-iommu.c 	iommu->reset_disabled = device_property_read_bool(dev,
iommu            1177 drivers/iommu/rockchip-iommu.c 	iommu->num_clocks = ARRAY_SIZE(rk_iommu_clocks);
iommu            1178 drivers/iommu/rockchip-iommu.c 	iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks,
iommu            1179 drivers/iommu/rockchip-iommu.c 				     sizeof(*iommu->clocks), GFP_KERNEL);
iommu            1180 drivers/iommu/rockchip-iommu.c 	if (!iommu->clocks)
iommu            1183 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_clocks; ++i)
iommu            1184 drivers/iommu/rockchip-iommu.c 		iommu->clocks[i].id = rk_iommu_clocks[i];
iommu            1191 drivers/iommu/rockchip-iommu.c 	err = devm_clk_bulk_get(iommu->dev, iommu->num_clocks, iommu->clocks);
iommu            1193 drivers/iommu/rockchip-iommu.c 		iommu->num_clocks = 0;
iommu            1197 drivers/iommu/rockchip-iommu.c 	err = clk_bulk_prepare(iommu->num_clocks, iommu->clocks);
iommu            1201 drivers/iommu/rockchip-iommu.c 	iommu->group = iommu_group_alloc();
iommu            1202 drivers/iommu/rockchip-iommu.c 	if (IS_ERR(iommu->group)) {
iommu            1203 drivers/iommu/rockchip-iommu.c 		err = PTR_ERR(iommu->group);
iommu            1207 drivers/iommu/rockchip-iommu.c 	err = iommu_device_sysfs_add(&iommu->iommu, dev, NULL, dev_name(dev));
iommu            1211 drivers/iommu/rockchip-iommu.c 	iommu_device_set_ops(&iommu->iommu, &rk_iommu_ops);
iommu            1212 drivers/iommu/rockchip-iommu.c 	iommu_device_set_fwnode(&iommu->iommu, &dev->of_node->fwnode);
iommu            1214 drivers/iommu/rockchip-iommu.c 	err = iommu_device_register(&iommu->iommu);
iommu            1230 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_irq; i++) {
iommu            1236 drivers/iommu/rockchip-iommu.c 		err = devm_request_irq(iommu->dev, irq, rk_iommu_irq,
iommu            1237 drivers/iommu/rockchip-iommu.c 				       IRQF_SHARED, dev_name(dev), iommu);
iommu            1246 drivers/iommu/rockchip-iommu.c 	iommu_device_sysfs_remove(&iommu->iommu);
iommu            1248 drivers/iommu/rockchip-iommu.c 	iommu_group_put(iommu->group);
iommu            1250 drivers/iommu/rockchip-iommu.c 	clk_bulk_unprepare(iommu->num_clocks, iommu->clocks);
iommu            1256 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu = platform_get_drvdata(pdev);
iommu            1259 drivers/iommu/rockchip-iommu.c 	for (i = 0; i < iommu->num_irq; i++) {
iommu            1262 drivers/iommu/rockchip-iommu.c 		devm_free_irq(iommu->dev, irq, iommu);
iommu            1270 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu = dev_get_drvdata(dev);
iommu            1272 drivers/iommu/rockchip-iommu.c 	if (!iommu->domain)
iommu            1275 drivers/iommu/rockchip-iommu.c 	rk_iommu_disable(iommu);
iommu            1281 drivers/iommu/rockchip-iommu.c 	struct rk_iommu *iommu = dev_get_drvdata(dev);
iommu            1283 drivers/iommu/rockchip-iommu.c 	if (!iommu->domain)
iommu            1286 drivers/iommu/rockchip-iommu.c 	return rk_iommu_enable(iommu);
iommu              45 drivers/iommu/tegra-gart.c 	struct iommu_device	iommu;		/* IOMMU Core handle */
iommu             116 drivers/iommu/tegra-gart.c 	} else if (dev->archdata.iommu != domain) {
iommu             117 drivers/iommu/tegra-gart.c 		dev->archdata.iommu = domain;
iommu             134 drivers/iommu/tegra-gart.c 	if (dev->archdata.iommu == domain) {
iommu             135 drivers/iommu/tegra-gart.c 		dev->archdata.iommu = NULL;
iommu             259 drivers/iommu/tegra-gart.c 	iommu_device_link(&gart_handle->iommu, dev);
iommu             267 drivers/iommu/tegra-gart.c 	iommu_device_unlink(&gart_handle->iommu, dev);
iommu             361 drivers/iommu/tegra-gart.c 	err = iommu_device_sysfs_add(&gart->iommu, dev, NULL, "gart");
iommu             365 drivers/iommu/tegra-gart.c 	iommu_device_set_ops(&gart->iommu, &gart_iommu_ops);
iommu             366 drivers/iommu/tegra-gart.c 	iommu_device_set_fwnode(&gart->iommu, dev->fwnode);
iommu             368 drivers/iommu/tegra-gart.c 	err = iommu_device_register(&gart->iommu);
iommu             382 drivers/iommu/tegra-gart.c 	iommu_device_unregister(&gart->iommu);
iommu             384 drivers/iommu/tegra-gart.c 	iommu_device_sysfs_remove(&gart->iommu);
iommu              45 drivers/iommu/tegra-smmu.c 	struct iommu_device iommu;	/* IOMMU Core code handle */
iommu             463 drivers/iommu/tegra-smmu.c 	struct tegra_smmu *smmu = dev->archdata.iommu;
iommu             736 drivers/iommu/tegra-smmu.c 	const struct iommu_ops *ops = smmu->iommu.ops;
iommu             779 drivers/iommu/tegra-smmu.c 			dev->archdata.iommu = smmu;
iommu             781 drivers/iommu/tegra-smmu.c 			iommu_device_link(&smmu->iommu, dev);
iommu             804 drivers/iommu/tegra-smmu.c 	struct tegra_smmu *smmu = dev->archdata.iommu;
iommu             807 drivers/iommu/tegra-smmu.c 		iommu_device_unlink(&smmu->iommu, dev);
iommu             809 drivers/iommu/tegra-smmu.c 	dev->archdata.iommu = NULL;
iommu             869 drivers/iommu/tegra-smmu.c 	struct tegra_smmu *smmu = dev->archdata.iommu;
iommu            1061 drivers/iommu/tegra-smmu.c 	err = iommu_device_sysfs_add(&smmu->iommu, dev, NULL, dev_name(dev));
iommu            1065 drivers/iommu/tegra-smmu.c 	iommu_device_set_ops(&smmu->iommu, &tegra_smmu_ops);
iommu            1066 drivers/iommu/tegra-smmu.c 	iommu_device_set_fwnode(&smmu->iommu, dev->fwnode);
iommu            1068 drivers/iommu/tegra-smmu.c 	err = iommu_device_register(&smmu->iommu);
iommu            1070 drivers/iommu/tegra-smmu.c 		iommu_device_sysfs_remove(&smmu->iommu);
iommu            1076 drivers/iommu/tegra-smmu.c 		iommu_device_unregister(&smmu->iommu);
iommu            1077 drivers/iommu/tegra-smmu.c 		iommu_device_sysfs_remove(&smmu->iommu);
iommu            1089 drivers/iommu/tegra-smmu.c 	iommu_device_unregister(&smmu->iommu);
iommu            1090 drivers/iommu/tegra-smmu.c 	iommu_device_sysfs_remove(&smmu->iommu);
iommu              36 drivers/iommu/virtio-iommu.c 	struct iommu_device		iommu;
iommu             899 drivers/iommu/virtio-iommu.c 	ret = iommu_device_link(&viommu->iommu, dev);
iommu             918 drivers/iommu/virtio-iommu.c 	iommu_device_unlink(&viommu->iommu, dev);
iommu             937 drivers/iommu/virtio-iommu.c 	iommu_device_unlink(&vdev->viommu->iommu, dev);
iommu            1084 drivers/iommu/virtio-iommu.c 	ret = iommu_device_sysfs_add(&viommu->iommu, dev, NULL, "%s",
iommu            1089 drivers/iommu/virtio-iommu.c 	iommu_device_set_ops(&viommu->iommu, &viommu_ops);
iommu            1090 drivers/iommu/virtio-iommu.c 	iommu_device_set_fwnode(&viommu->iommu, parent_dev->fwnode);
iommu            1092 drivers/iommu/virtio-iommu.c 	iommu_device_register(&viommu->iommu);
iommu            1124 drivers/iommu/virtio-iommu.c 	iommu_device_sysfs_remove(&viommu->iommu);
iommu            1125 drivers/iommu/virtio-iommu.c 	iommu_device_unregister(&viommu->iommu);
iommu            1136 drivers/iommu/virtio-iommu.c 	iommu_device_sysfs_remove(&viommu->iommu);
iommu            1137 drivers/iommu/virtio-iommu.c 	iommu_device_unregister(&viommu->iommu);
iommu             133 drivers/media/platform/qcom/venus/firmware.c 	struct iommu_domain *iommu;
iommu             141 drivers/media/platform/qcom/venus/firmware.c 	iommu = core->fw.iommu_domain;
iommu             144 drivers/media/platform/qcom/venus/firmware.c 	ret = iommu_map(iommu, VENUS_FW_START_ADDR, mem_phys, mem_size,
iommu             159 drivers/media/platform/qcom/venus/firmware.c 	struct iommu_domain *iommu;
iommu             173 drivers/media/platform/qcom/venus/firmware.c 	iommu = core->fw.iommu_domain;
iommu             175 drivers/media/platform/qcom/venus/firmware.c 	unmapped = iommu_unmap(iommu, VENUS_FW_START_ADDR, mapped);
iommu             284 drivers/media/platform/qcom/venus/firmware.c 	struct iommu_domain *iommu;
iommu             289 drivers/media/platform/qcom/venus/firmware.c 	iommu = core->fw.iommu_domain;
iommu             291 drivers/media/platform/qcom/venus/firmware.c 	iommu_detach_device(iommu, core->fw.dev);
iommu             292 drivers/media/platform/qcom/venus/firmware.c 	iommu_domain_free(iommu);
iommu              14 drivers/media/platform/s5p-mfc/s5p_mfc_iommu.h 	return dev->archdata.iommu != NULL;
iommu              95 drivers/of/device.c 	const struct iommu_ops *iommu;
iommu             162 drivers/of/device.c 	iommu = of_iommu_configure(dev, np);
iommu             163 drivers/of/device.c 	if (IS_ERR(iommu) && PTR_ERR(iommu) == -EPROBE_DEFER)
iommu             167 drivers/of/device.c 		iommu ? " " : " not ");
iommu             169 drivers/of/device.c 	arch_setup_dma_ops(dev, dma_addr, size, iommu, coherent);
iommu            1550 drivers/parisc/ccio-dma.c 	hba->iommu = ioc;
iommu             980 drivers/parisc/dino.c 	dino_dev->hba.iommu = ccio_get_iommu(dev);
iommu             309 drivers/parisc/eisa.c 	eisa_dev.hba.iommu = ccio_get_iommu(dev);
iommu              35 drivers/parisc/iommu.h 	return pdata->iommu;
iommu            1557 drivers/parisc/lba_pci.c 	lba_dev->hba.iommu = sba_get_iommu(dev);  /* get iommu data */
iommu             124 drivers/vfio/vfio_iommu_type1.c #define IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu)	\
iommu             125 drivers/vfio/vfio_iommu_type1.c 					(!list_empty(&iommu->domain_list))
iommu             134 drivers/vfio/vfio_iommu_type1.c static struct vfio_dma *vfio_find_dma(struct vfio_iommu *iommu,
iommu             137 drivers/vfio/vfio_iommu_type1.c 	struct rb_node *node = iommu->dma_list.rb_node;
iommu             153 drivers/vfio/vfio_iommu_type1.c static void vfio_link_dma(struct vfio_iommu *iommu, struct vfio_dma *new)
iommu             155 drivers/vfio/vfio_iommu_type1.c 	struct rb_node **link = &iommu->dma_list.rb_node, *parent = NULL;
iommu             169 drivers/vfio/vfio_iommu_type1.c 	rb_insert_color(&new->node, &iommu->dma_list);
iommu             172 drivers/vfio/vfio_iommu_type1.c static void vfio_unlink_dma(struct vfio_iommu *iommu, struct vfio_dma *old)
iommu             174 drivers/vfio/vfio_iommu_type1.c 	rb_erase(&old->node, &iommu->dma_list);
iommu             546 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu             552 drivers/vfio/vfio_iommu_type1.c 	if (!iommu || !user_pfn || !phys_pfn)
iommu             556 drivers/vfio/vfio_iommu_type1.c 	if (!iommu->v2)
iommu             559 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu             562 drivers/vfio/vfio_iommu_type1.c 	if (!iommu->notifier.head) {
iommu             572 drivers/vfio/vfio_iommu_type1.c 	do_accounting = !IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu);
iommu             579 drivers/vfio/vfio_iommu_type1.c 		dma = vfio_find_dma(iommu, iova, PAGE_SIZE);
iommu             618 drivers/vfio/vfio_iommu_type1.c 		dma = vfio_find_dma(iommu, iova, PAGE_SIZE);
iommu             623 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu             631 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu             635 drivers/vfio/vfio_iommu_type1.c 	if (!iommu || !user_pfn)
iommu             639 drivers/vfio/vfio_iommu_type1.c 	if (!iommu->v2)
iommu             642 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu             644 drivers/vfio/vfio_iommu_type1.c 	do_accounting = !IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu);
iommu             650 drivers/vfio/vfio_iommu_type1.c 		dma = vfio_find_dma(iommu, iova, PAGE_SIZE);
iommu             657 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu             752 drivers/vfio/vfio_iommu_type1.c static long vfio_unmap_unpin(struct vfio_iommu *iommu, struct vfio_dma *dma,
iommu             765 drivers/vfio/vfio_iommu_type1.c 	if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu))
iommu             775 drivers/vfio/vfio_iommu_type1.c 	domain = d = list_first_entry(&iommu->domain_list,
iommu             778 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry_continue(d, &iommu->domain_list, next) {
iommu             836 drivers/vfio/vfio_iommu_type1.c static void vfio_remove_dma(struct vfio_iommu *iommu, struct vfio_dma *dma)
iommu             838 drivers/vfio/vfio_iommu_type1.c 	vfio_unmap_unpin(iommu, dma, true);
iommu             839 drivers/vfio/vfio_iommu_type1.c 	vfio_unlink_dma(iommu, dma);
iommu             842 drivers/vfio/vfio_iommu_type1.c 	iommu->dma_avail++;
iommu             845 drivers/vfio/vfio_iommu_type1.c static unsigned long vfio_pgsize_bitmap(struct vfio_iommu *iommu)
iommu             850 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu             851 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(domain, &iommu->domain_list, next)
iommu             853 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu             871 drivers/vfio/vfio_iommu_type1.c static int vfio_dma_do_unmap(struct vfio_iommu *iommu,
iommu             879 drivers/vfio/vfio_iommu_type1.c 	mask = ((uint64_t)1 << __ffs(vfio_pgsize_bitmap(iommu))) - 1;
iommu             891 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu             924 drivers/vfio/vfio_iommu_type1.c 	if (iommu->v2) {
iommu             925 drivers/vfio/vfio_iommu_type1.c 		dma = vfio_find_dma(iommu, unmap->iova, 1);
iommu             930 drivers/vfio/vfio_iommu_type1.c 		dma = vfio_find_dma(iommu, unmap->iova + unmap->size - 1, 0);
iommu             937 drivers/vfio/vfio_iommu_type1.c 	while ((dma = vfio_find_dma(iommu, unmap->iova, unmap->size))) {
iommu             938 drivers/vfio/vfio_iommu_type1.c 		if (!iommu->v2 && unmap->iova > dma->iova)
iommu             966 drivers/vfio/vfio_iommu_type1.c 			mutex_unlock(&iommu->lock);
iommu             967 drivers/vfio/vfio_iommu_type1.c 			blocking_notifier_call_chain(&iommu->notifier,
iommu             973 drivers/vfio/vfio_iommu_type1.c 		vfio_remove_dma(iommu, dma);
iommu             977 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu             985 drivers/vfio/vfio_iommu_type1.c static int vfio_iommu_map(struct vfio_iommu *iommu, dma_addr_t iova,
iommu             991 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(d, &iommu->domain_list, next) {
iommu            1003 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry_continue_reverse(d, &iommu->domain_list, next)
iommu            1009 drivers/vfio/vfio_iommu_type1.c static int vfio_pin_map_dma(struct vfio_iommu *iommu, struct vfio_dma *dma,
iommu            1030 drivers/vfio/vfio_iommu_type1.c 		ret = vfio_iommu_map(iommu, iova + dma->size, pfn, npage,
iommu            1045 drivers/vfio/vfio_iommu_type1.c 		vfio_remove_dma(iommu, dma);
iommu            1053 drivers/vfio/vfio_iommu_type1.c static bool vfio_iommu_iova_dma_valid(struct vfio_iommu *iommu,
iommu            1056 drivers/vfio/vfio_iommu_type1.c 	struct list_head *iova = &iommu->iova_list;
iommu            1071 drivers/vfio/vfio_iommu_type1.c static int vfio_dma_do_map(struct vfio_iommu *iommu,
iommu            1085 drivers/vfio/vfio_iommu_type1.c 	mask = ((uint64_t)1 << __ffs(vfio_pgsize_bitmap(iommu))) - 1;
iommu            1102 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu            1104 drivers/vfio/vfio_iommu_type1.c 	if (vfio_find_dma(iommu, iova, size)) {
iommu            1109 drivers/vfio/vfio_iommu_type1.c 	if (!iommu->dma_avail) {
iommu            1114 drivers/vfio/vfio_iommu_type1.c 	if (!vfio_iommu_iova_dma_valid(iommu, iova, iova + size - 1)) {
iommu            1125 drivers/vfio/vfio_iommu_type1.c 	iommu->dma_avail--;
iommu            1162 drivers/vfio/vfio_iommu_type1.c 	vfio_link_dma(iommu, dma);
iommu            1165 drivers/vfio/vfio_iommu_type1.c 	if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu))
iommu            1168 drivers/vfio/vfio_iommu_type1.c 		ret = vfio_pin_map_dma(iommu, dma, size);
iommu            1171 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            1187 drivers/vfio/vfio_iommu_type1.c static int vfio_iommu_replay(struct vfio_iommu *iommu,
iommu            1196 drivers/vfio/vfio_iommu_type1.c 	d = list_first_entry(&iommu->domain_list, struct vfio_domain, next);
iommu            1197 drivers/vfio/vfio_iommu_type1.c 	n = rb_first(&iommu->dma_list);
iommu            1460 drivers/vfio/vfio_iommu_type1.c static bool vfio_iommu_aper_conflict(struct vfio_iommu *iommu,
iommu            1464 drivers/vfio/vfio_iommu_type1.c 	struct list_head *iova = &iommu->iova_list;
iommu            1477 drivers/vfio/vfio_iommu_type1.c 		if (vfio_find_dma(iommu, first->start, start - first->start))
iommu            1483 drivers/vfio/vfio_iommu_type1.c 		if (vfio_find_dma(iommu, end + 1, last->end - end))
iommu            1534 drivers/vfio/vfio_iommu_type1.c static bool vfio_iommu_resv_conflict(struct vfio_iommu *iommu,
iommu            1544 drivers/vfio/vfio_iommu_type1.c 		if (vfio_find_dma(iommu, region->start, region->length))
iommu            1623 drivers/vfio/vfio_iommu_type1.c static int vfio_iommu_iova_get_copy(struct vfio_iommu *iommu,
iommu            1626 drivers/vfio/vfio_iommu_type1.c 	struct list_head *iova = &iommu->iova_list;
iommu            1643 drivers/vfio/vfio_iommu_type1.c static void vfio_iommu_iova_insert_copy(struct vfio_iommu *iommu,
iommu            1646 drivers/vfio/vfio_iommu_type1.c 	struct list_head *iova = &iommu->iova_list;
iommu            1655 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            1666 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu            1668 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(d, &iommu->domain_list, next) {
iommu            1670 drivers/vfio/vfio_iommu_type1.c 			mutex_unlock(&iommu->lock);
iommu            1675 drivers/vfio/vfio_iommu_type1.c 	if (iommu->external_domain) {
iommu            1676 drivers/vfio/vfio_iommu_type1.c 		if (find_iommu_group(iommu->external_domain, iommu_group)) {
iommu            1677 drivers/vfio/vfio_iommu_type1.c 			mutex_unlock(&iommu->lock);
iommu            1705 drivers/vfio/vfio_iommu_type1.c 			if (!iommu->external_domain) {
iommu            1707 drivers/vfio/vfio_iommu_type1.c 				iommu->external_domain = domain;
iommu            1713 drivers/vfio/vfio_iommu_type1.c 				 &iommu->external_domain->group_list);
iommu            1714 drivers/vfio/vfio_iommu_type1.c 			mutex_unlock(&iommu->lock);
iommu            1728 drivers/vfio/vfio_iommu_type1.c 	if (iommu->nesting) {
iommu            1744 drivers/vfio/vfio_iommu_type1.c 	if (vfio_iommu_aper_conflict(iommu, geo.aperture_start,
iommu            1754 drivers/vfio/vfio_iommu_type1.c 	if (vfio_iommu_resv_conflict(iommu, &group_resv_regions)) {
iommu            1764 drivers/vfio/vfio_iommu_type1.c 	ret = vfio_iommu_iova_get_copy(iommu, &iova_copy);
iommu            1802 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(d, &iommu->domain_list, next) {
iommu            1822 drivers/vfio/vfio_iommu_type1.c 	ret = vfio_iommu_replay(iommu, domain);
iommu            1832 drivers/vfio/vfio_iommu_type1.c 	list_add(&domain->next, &iommu->domain_list);
iommu            1835 drivers/vfio/vfio_iommu_type1.c 	vfio_iommu_iova_insert_copy(iommu, &iova_copy);
iommu            1836 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            1850 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            1854 drivers/vfio/vfio_iommu_type1.c static void vfio_iommu_unmap_unpin_all(struct vfio_iommu *iommu)
iommu            1858 drivers/vfio/vfio_iommu_type1.c 	while ((node = rb_first(&iommu->dma_list)))
iommu            1859 drivers/vfio/vfio_iommu_type1.c 		vfio_remove_dma(iommu, rb_entry(node, struct vfio_dma, node));
iommu            1862 drivers/vfio/vfio_iommu_type1.c static void vfio_iommu_unmap_unpin_reaccount(struct vfio_iommu *iommu)
iommu            1866 drivers/vfio/vfio_iommu_type1.c 	n = rb_first(&iommu->dma_list);
iommu            1872 drivers/vfio/vfio_iommu_type1.c 		unlocked += vfio_unmap_unpin(iommu, dma, false);
iommu            1885 drivers/vfio/vfio_iommu_type1.c static void vfio_sanity_check_pfn_list(struct vfio_iommu *iommu)
iommu            1889 drivers/vfio/vfio_iommu_type1.c 	n = rb_first(&iommu->dma_list);
iommu            1899 drivers/vfio/vfio_iommu_type1.c 	WARN_ON(iommu->notifier.head);
iommu            1907 drivers/vfio/vfio_iommu_type1.c static void vfio_iommu_aper_expand(struct vfio_iommu *iommu,
iommu            1919 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(domain, &iommu->domain_list, next) {
iommu            1941 drivers/vfio/vfio_iommu_type1.c static int vfio_iommu_resv_refresh(struct vfio_iommu *iommu,
iommu            1954 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(d, &iommu->domain_list, next) {
iommu            1985 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            1990 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu            1992 drivers/vfio/vfio_iommu_type1.c 	if (iommu->external_domain) {
iommu            1993 drivers/vfio/vfio_iommu_type1.c 		group = find_iommu_group(iommu->external_domain, iommu_group);
iommu            1998 drivers/vfio/vfio_iommu_type1.c 			if (list_empty(&iommu->external_domain->group_list)) {
iommu            1999 drivers/vfio/vfio_iommu_type1.c 				vfio_sanity_check_pfn_list(iommu);
iommu            2001 drivers/vfio/vfio_iommu_type1.c 				if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu))
iommu            2002 drivers/vfio/vfio_iommu_type1.c 					vfio_iommu_unmap_unpin_all(iommu);
iommu            2004 drivers/vfio/vfio_iommu_type1.c 				kfree(iommu->external_domain);
iommu            2005 drivers/vfio/vfio_iommu_type1.c 				iommu->external_domain = NULL;
iommu            2016 drivers/vfio/vfio_iommu_type1.c 	vfio_iommu_iova_get_copy(iommu, &iova_copy);
iommu            2018 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(domain, &iommu->domain_list, next) {
iommu            2034 drivers/vfio/vfio_iommu_type1.c 			if (list_is_singular(&iommu->domain_list)) {
iommu            2035 drivers/vfio/vfio_iommu_type1.c 				if (!iommu->external_domain)
iommu            2036 drivers/vfio/vfio_iommu_type1.c 					vfio_iommu_unmap_unpin_all(iommu);
iommu            2038 drivers/vfio/vfio_iommu_type1.c 					vfio_iommu_unmap_unpin_reaccount(iommu);
iommu            2043 drivers/vfio/vfio_iommu_type1.c 			vfio_iommu_aper_expand(iommu, &iova_copy);
iommu            2048 drivers/vfio/vfio_iommu_type1.c 	if (!vfio_iommu_resv_refresh(iommu, &iova_copy))
iommu            2049 drivers/vfio/vfio_iommu_type1.c 		vfio_iommu_iova_insert_copy(iommu, &iova_copy);
iommu            2054 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            2059 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu;
iommu            2061 drivers/vfio/vfio_iommu_type1.c 	iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
iommu            2062 drivers/vfio/vfio_iommu_type1.c 	if (!iommu)
iommu            2069 drivers/vfio/vfio_iommu_type1.c 		iommu->nesting = true;
iommu            2072 drivers/vfio/vfio_iommu_type1.c 		iommu->v2 = true;
iommu            2075 drivers/vfio/vfio_iommu_type1.c 		kfree(iommu);
iommu            2079 drivers/vfio/vfio_iommu_type1.c 	INIT_LIST_HEAD(&iommu->domain_list);
iommu            2080 drivers/vfio/vfio_iommu_type1.c 	INIT_LIST_HEAD(&iommu->iova_list);
iommu            2081 drivers/vfio/vfio_iommu_type1.c 	iommu->dma_list = RB_ROOT;
iommu            2082 drivers/vfio/vfio_iommu_type1.c 	iommu->dma_avail = dma_entry_limit;
iommu            2083 drivers/vfio/vfio_iommu_type1.c 	mutex_init(&iommu->lock);
iommu            2084 drivers/vfio/vfio_iommu_type1.c 	BLOCKING_INIT_NOTIFIER_HEAD(&iommu->notifier);
iommu            2086 drivers/vfio/vfio_iommu_type1.c 	return iommu;
iommu            2107 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            2110 drivers/vfio/vfio_iommu_type1.c 	if (iommu->external_domain) {
iommu            2111 drivers/vfio/vfio_iommu_type1.c 		vfio_release_domain(iommu->external_domain, true);
iommu            2112 drivers/vfio/vfio_iommu_type1.c 		vfio_sanity_check_pfn_list(iommu);
iommu            2113 drivers/vfio/vfio_iommu_type1.c 		kfree(iommu->external_domain);
iommu            2116 drivers/vfio/vfio_iommu_type1.c 	vfio_iommu_unmap_unpin_all(iommu);
iommu            2119 drivers/vfio/vfio_iommu_type1.c 				 &iommu->domain_list, next) {
iommu            2125 drivers/vfio/vfio_iommu_type1.c 	vfio_iommu_iova_free(&iommu->iova_list);
iommu            2127 drivers/vfio/vfio_iommu_type1.c 	kfree(iommu);
iommu            2130 drivers/vfio/vfio_iommu_type1.c static int vfio_domains_have_iommu_cache(struct vfio_iommu *iommu)
iommu            2135 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu            2136 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(domain, &iommu->domain_list, next) {
iommu            2142 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            2168 drivers/vfio/vfio_iommu_type1.c static int vfio_iommu_iova_build_caps(struct vfio_iommu *iommu,
iommu            2176 drivers/vfio/vfio_iommu_type1.c 	mutex_lock(&iommu->lock);
iommu            2178 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(iova, &iommu->iova_list, list)
iommu            2200 drivers/vfio/vfio_iommu_type1.c 	list_for_each_entry(iova, &iommu->iova_list, list) {
iommu            2210 drivers/vfio/vfio_iommu_type1.c 	mutex_unlock(&iommu->lock);
iommu            2217 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            2227 drivers/vfio/vfio_iommu_type1.c 			if (!iommu)
iommu            2229 drivers/vfio/vfio_iommu_type1.c 			return vfio_domains_have_iommu_cache(iommu);
iommu            2257 drivers/vfio/vfio_iommu_type1.c 		info.iova_pgsizes = vfio_pgsize_bitmap(iommu);
iommu            2259 drivers/vfio/vfio_iommu_type1.c 		ret = vfio_iommu_iova_build_caps(iommu, &caps);
iommu            2298 drivers/vfio/vfio_iommu_type1.c 		return vfio_dma_do_map(iommu, &map);
iommu            2312 drivers/vfio/vfio_iommu_type1.c 		ret = vfio_dma_do_unmap(iommu, &unmap);
iommu            2327 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            2336 drivers/vfio/vfio_iommu_type1.c 	return blocking_notifier_chain_register(&iommu->notifier, nb);
iommu            2342 drivers/vfio/vfio_iommu_type1.c 	struct vfio_iommu *iommu = iommu_data;
iommu            2344 drivers/vfio/vfio_iommu_type1.c 	return blocking_notifier_chain_unregister(&iommu->notifier, nb);
iommu             706 include/linux/dma-mapping.h 		const struct iommu_ops *iommu, bool coherent);
iommu             709 include/linux/dma-mapping.h 		u64 size, const struct iommu_ops *iommu, bool coherent)
iommu              51 include/linux/dmar.h 	struct intel_iommu *iommu;
iommu              84 include/linux/dmar.h 		if (i=drhd->iommu, drhd->ignored) {} else
iommu              89 include/linux/dmar.h 		if (i=drhd->iommu, 0) {} else 
iommu             278 include/linux/dmar.h extern int dmar_set_interrupt(struct intel_iommu *iommu);
iommu             285 include/linux/intel-iommu.h #define IOMMU_WAIT_OP(iommu, offset, op, cond, sts)			\
iommu             289 include/linux/intel-iommu.h 		sts = op(iommu->reg + offset);				\
iommu             389 include/linux/intel-iommu.h #define qi_shift(iommu)		(DMAR_IQ_SHIFT + !!ecap_smts((iommu)->ecap))
iommu             424 include/linux/intel-iommu.h 	void (*flush_context)(struct intel_iommu *iommu, u16 did, u16 sid,
iommu             426 include/linux/intel-iommu.h 	void (*flush_iotlb)(struct intel_iommu *iommu, u16 did, u64 addr,
iommu             443 include/linux/intel-iommu.h #define sm_supported(iommu)	(intel_iommu_sm && ecap_smts((iommu)->ecap))
iommu             444 include/linux/intel-iommu.h #define pasid_supported(iommu)	(sm_supported(iommu) &&			\
iommu             445 include/linux/intel-iommu.h 				 ecap_pasid((iommu)->ecap))
iommu             556 include/linux/intel-iommu.h 	struct iommu_device iommu;  /* IOMMU core code handle */
iommu             581 include/linux/intel-iommu.h 	struct intel_iommu *iommu; /* IOMMU used by this device */
iommu             587 include/linux/intel-iommu.h 	struct intel_iommu *iommu, void *addr, int size)
iommu             589 include/linux/intel-iommu.h 	if (!ecap_coherent(iommu->ecap))
iommu             639 include/linux/intel-iommu.h extern int dmar_enable_qi(struct intel_iommu *iommu);
iommu             640 include/linux/intel-iommu.h extern void dmar_disable_qi(struct intel_iommu *iommu);
iommu             641 include/linux/intel-iommu.h extern int dmar_reenable_qi(struct intel_iommu *iommu);
iommu             642 include/linux/intel-iommu.h extern void qi_global_iec(struct intel_iommu *iommu);
iommu             644 include/linux/intel-iommu.h extern void qi_flush_context(struct intel_iommu *iommu, u16 did, u16 sid,
iommu             646 include/linux/intel-iommu.h extern void qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr,
iommu             648 include/linux/intel-iommu.h extern void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 pfsid,
iommu             650 include/linux/intel-iommu.h extern int qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu);
iommu             659 include/linux/intel-iommu.h void iommu_flush_write_buffer(struct intel_iommu *iommu);
iommu             660 include/linux/intel-iommu.h int intel_iommu_enable_pasid(struct intel_iommu *iommu, struct device *dev);
iommu             663 include/linux/intel-iommu.h int intel_svm_init(struct intel_iommu *iommu);
iommu             664 include/linux/intel-iommu.h extern int intel_svm_enable_prq(struct intel_iommu *iommu);
iommu             665 include/linux/intel-iommu.h extern int intel_svm_finish_prq(struct intel_iommu *iommu);
iommu             683 include/linux/intel-iommu.h 	struct intel_iommu *iommu;
iommu             701 include/linux/intel-iommu.h struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
iommu             705 include/linux/intel-iommu.h extern int iommu_calculate_agaw(struct intel_iommu *iommu);
iommu             706 include/linux/intel-iommu.h extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu);
iommu             711 include/linux/intel-iommu.h static inline int iommu_calculate_agaw(struct intel_iommu *iommu)
iommu             715 include/linux/intel-iommu.h static inline int iommu_calculate_max_sagaw(struct intel_iommu *iommu)
iommu             369 include/linux/iommu.h int  iommu_device_register(struct iommu_device *iommu);
iommu             370 include/linux/iommu.h void iommu_device_unregister(struct iommu_device *iommu);
iommu             371 include/linux/iommu.h int  iommu_device_sysfs_add(struct iommu_device *iommu,
iommu             375 include/linux/iommu.h void iommu_device_sysfs_remove(struct iommu_device *iommu);
iommu             376 include/linux/iommu.h int  iommu_device_link(struct iommu_device   *iommu, struct device *link);
iommu             377 include/linux/iommu.h void iommu_device_unlink(struct iommu_device *iommu, struct device *link);
iommu             379 include/linux/iommu.h static inline void iommu_device_set_ops(struct iommu_device *iommu,
iommu             382 include/linux/iommu.h 	iommu->ops = ops;
iommu             385 include/linux/iommu.h static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
iommu             388 include/linux/iommu.h 	iommu->fwnode = fwnode;
iommu             868 include/linux/iommu.h static inline int  iommu_device_register(struct iommu_device *iommu)
iommu             873 include/linux/iommu.h static inline void iommu_device_set_ops(struct iommu_device *iommu,
iommu             878 include/linux/iommu.h static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
iommu             898 include/linux/iommu.h static inline void iommu_device_unregister(struct iommu_device *iommu)
iommu             902 include/linux/iommu.h static inline int  iommu_device_sysfs_add(struct iommu_device *iommu,
iommu             910 include/linux/iommu.h static inline void iommu_device_sysfs_remove(struct iommu_device *iommu)
iommu               9 include/trace/events/iommu.h #define TRACE_SYSTEM iommu