Lines Matching refs:tbl

59 	struct iommu_table *tbl;  in iommu_pseries_alloc_table()  local
61 tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, node); in iommu_pseries_alloc_table()
62 if (!tbl) in iommu_pseries_alloc_table()
65 INIT_LIST_HEAD_RCU(&tbl->it_group_list); in iommu_pseries_alloc_table()
66 kref_init(&tbl->it_kref); in iommu_pseries_alloc_table()
67 return tbl; in iommu_pseries_alloc_table()
116 static int tce_build_pSeries(struct iommu_table *tbl, long index, in tce_build_pSeries() argument
124 const unsigned long tceshift = tbl->it_page_shift; in tce_build_pSeries()
125 const unsigned long pagesize = IOMMU_PAGE_SIZE(tbl); in tce_build_pSeries()
132 tcep = ((__be64 *)tbl->it_base) + index; in tce_build_pSeries()
146 static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages) in tce_free_pSeries() argument
150 tcep = ((__be64 *)tbl->it_base) + index; in tce_free_pSeries()
156 static unsigned long tce_get_pseries(struct iommu_table *tbl, long index) in tce_get_pseries() argument
160 tcep = ((__be64 *)tbl->it_base) + index; in tce_get_pseries()
211 static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum, in tce_buildmulti_pSeriesLP() argument
224 const unsigned long tceshift = tbl->it_page_shift; in tce_buildmulti_pSeriesLP()
227 return tce_build_pSeriesLP(tbl->it_index, tcenum, in tce_buildmulti_pSeriesLP()
244 return tce_build_pSeriesLP(tbl->it_index, tcenum, in tce_buildmulti_pSeriesLP()
269 rc = plpar_tce_put_indirect((u64)tbl->it_index, in tce_buildmulti_pSeriesLP()
282 tce_freemulti_pSeriesLP(tbl, tcenum_start, in tce_buildmulti_pSeriesLP()
289 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_buildmulti_pSeriesLP()
317 static void tce_freemulti_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages) in tce_freemulti_pSeriesLP() argument
324 return tce_free_pSeriesLP(tbl->it_index, tcenum, in tce_freemulti_pSeriesLP()
325 tbl->it_page_shift, npages); in tce_freemulti_pSeriesLP()
330 rc = plpar_tce_stuff((u64)tbl->it_index, in tce_freemulti_pSeriesLP()
331 (u64)tcenum << tbl->it_page_shift, 0, limit); in tce_freemulti_pSeriesLP()
340 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_freemulti_pSeriesLP()
346 static unsigned long tce_get_pSeriesLP(struct iommu_table *tbl, long tcenum) in tce_get_pSeriesLP() argument
351 rc = plpar_tce_get((u64)tbl->it_index, in tce_get_pSeriesLP()
352 (u64)tcenum << tbl->it_page_shift, &tce_ret); in tce_get_pSeriesLP()
356 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_get_pSeriesLP()
524 static void iommu_table_setparms_common(struct iommu_table *tbl, unsigned long busno, in iommu_table_setparms_common() argument
529 tbl->it_busno = busno; in iommu_table_setparms_common()
530 tbl->it_index = liobn; in iommu_table_setparms_common()
531 tbl->it_offset = win_addr >> page_shift; in iommu_table_setparms_common()
532 tbl->it_size = window_size >> page_shift; in iommu_table_setparms_common()
533 tbl->it_page_shift = page_shift; in iommu_table_setparms_common()
534 tbl->it_base = (unsigned long)base; in iommu_table_setparms_common()
535 tbl->it_blocksize = 16; in iommu_table_setparms_common()
536 tbl->it_type = TCE_PCI; in iommu_table_setparms_common()
537 tbl->it_ops = table_ops; in iommu_table_setparms_common()
544 struct iommu_table *tbl) in iommu_table_setparms() argument
565 iommu_table_setparms_common(tbl, phb->bus->number, 0, phb->dma_window_base_cur, in iommu_table_setparms()
570 memset((void *)tbl->it_base, 0, *sizep); in iommu_table_setparms()
586 struct iommu_table *tbl; in pci_dma_bus_setup_pSeries() local
648 tbl = pci->table_group->tables[0]; in pci_dma_bus_setup_pSeries()
650 iommu_table_setparms(pci->phb, dn, tbl); in pci_dma_bus_setup_pSeries()
652 if (!iommu_init_table(tbl, pci->phb->node, 0, 0)) in pci_dma_bus_setup_pSeries()
664 static int tce_exchange_pseries(struct iommu_table *tbl, long index, unsigned in tce_exchange_pseries() argument
668 unsigned long ioba = (unsigned long) index << tbl->it_page_shift; in tce_exchange_pseries()
673 spin_lock_irqsave(&tbl->large_pool.lock, flags); in tce_exchange_pseries()
675 rc = plpar_tce_get((u64)tbl->it_index, ioba, &oldtce); in tce_exchange_pseries()
677 rc = plpar_tce_put((u64)tbl->it_index, ioba, newtce); in tce_exchange_pseries()
684 spin_unlock_irqrestore(&tbl->large_pool.lock, flags); in tce_exchange_pseries()
773 struct iommu_table *tbl; in pci_dma_bus_setup_pSeriesLP() local
806 tbl = ppci->table_group->tables[0]; in pci_dma_bus_setup_pSeriesLP()
808 iommu_table_setparms_common(tbl, ppci->phb->bus->number, in pci_dma_bus_setup_pSeriesLP()
822 if (!iommu_init_table(tbl, ppci->phb->node, 0, 0)) in pci_dma_bus_setup_pSeriesLP()
835 struct iommu_table *tbl; in pci_dma_dev_setup_pSeries() local
850 tbl = PCI_DN(dn)->table_group->tables[0]; in pci_dma_dev_setup_pSeries()
851 iommu_table_setparms(phb, dn, tbl); in pci_dma_dev_setup_pSeries()
853 if (!iommu_init_table(tbl, phb->node, 0, 0)) in pci_dma_dev_setup_pSeries()
856 set_iommu_table_base(&dev->dev, tbl); in pci_dma_dev_setup_pSeries()
1576 struct iommu_table *tbl; in pci_dma_dev_setup_pSeriesLP() local
1603 tbl = pci->table_group->tables[0]; in pci_dma_dev_setup_pSeriesLP()
1605 iommu_table_setparms_common(tbl, pci->phb->bus->number, in pci_dma_dev_setup_pSeriesLP()
1619 iommu_init_table(tbl, pci->phb->node, 0, 0); in pci_dma_dev_setup_pSeriesLP()