Lines Matching refs:tbl

54 static void tce_invalidate_pSeries_sw(struct iommu_table *tbl,  in tce_invalidate_pSeries_sw()  argument
57 u64 __iomem *invalidate = (u64 __iomem *)tbl->it_index; in tce_invalidate_pSeries_sw()
66 if (tbl->it_busno) { in tce_invalidate_pSeries_sw()
70 start |= tbl->it_busno; in tce_invalidate_pSeries_sw()
71 end |= tbl->it_busno; in tce_invalidate_pSeries_sw()
83 static int tce_build_pSeries(struct iommu_table *tbl, long index, in tce_build_pSeries() argument
97 tces = tcep = ((__be64 *)tbl->it_base) + index; in tce_build_pSeries()
108 if (tbl->it_type & TCE_PCI_SWINV_CREATE) in tce_build_pSeries()
109 tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); in tce_build_pSeries()
114 static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages) in tce_free_pSeries() argument
118 tces = tcep = ((__be64 *)tbl->it_base) + index; in tce_free_pSeries()
123 if (tbl->it_type & TCE_PCI_SWINV_FREE) in tce_free_pSeries()
124 tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); in tce_free_pSeries()
127 static unsigned long tce_get_pseries(struct iommu_table *tbl, long index) in tce_get_pseries() argument
131 tcep = ((__be64 *)tbl->it_base) + index; in tce_get_pseries()
139 static int tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum, in tce_build_pSeriesLP() argument
157 rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, tce); in tce_build_pSeriesLP()
161 tce_free_pSeriesLP(tbl, tcenum_start, in tce_build_pSeriesLP()
168 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_build_pSeriesLP()
182 static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum, in tce_buildmulti_pSeriesLP() argument
197 return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, in tce_buildmulti_pSeriesLP()
213 return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, in tce_buildmulti_pSeriesLP()
237 rc = plpar_tce_put_indirect((u64)tbl->it_index, in tce_buildmulti_pSeriesLP()
250 tce_freemulti_pSeriesLP(tbl, tcenum_start, in tce_buildmulti_pSeriesLP()
257 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_buildmulti_pSeriesLP()
265 static void tce_free_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages) in tce_free_pSeriesLP() argument
270 rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, 0); in tce_free_pSeriesLP()
274 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_free_pSeriesLP()
284 static void tce_freemulti_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages) in tce_freemulti_pSeriesLP() argument
288 rc = plpar_tce_stuff((u64)tbl->it_index, (u64)tcenum << 12, 0, npages); in tce_freemulti_pSeriesLP()
293 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_freemulti_pSeriesLP()
299 static unsigned long tce_get_pSeriesLP(struct iommu_table *tbl, long tcenum) in tce_get_pSeriesLP() argument
304 rc = plpar_tce_get((u64)tbl->it_index, (u64)tcenum << 12, &tce_ret); in tce_get_pSeriesLP()
308 printk("\tindex = 0x%llx\n", (u64)tbl->it_index); in tce_get_pSeriesLP()
467 struct iommu_table *tbl) in iommu_table_setparms() argument
483 tbl->it_base = (unsigned long)__va(*basep); in iommu_table_setparms()
486 memset((void *)tbl->it_base, 0, *sizep); in iommu_table_setparms()
488 tbl->it_busno = phb->bus->number; in iommu_table_setparms()
489 tbl->it_page_shift = IOMMU_PAGE_SHIFT_4K; in iommu_table_setparms()
492 tbl->it_offset = phb->dma_window_base_cur >> tbl->it_page_shift; in iommu_table_setparms()
503 tbl->it_size = phb->dma_window_size >> tbl->it_page_shift; in iommu_table_setparms()
505 tbl->it_index = 0; in iommu_table_setparms()
506 tbl->it_blocksize = 16; in iommu_table_setparms()
507 tbl->it_type = TCE_PCI; in iommu_table_setparms()
520 tbl->it_index = (unsigned long) ioremap(sw_inval[0], 8); in iommu_table_setparms()
521 tbl->it_busno = sw_inval[1]; /* overload this with magic */ in iommu_table_setparms()
522 tbl->it_type = TCE_PCI_SWINV_CREATE | TCE_PCI_SWINV_FREE; in iommu_table_setparms()
533 struct iommu_table *tbl, in iommu_table_setparms_lpar() argument
538 of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size); in iommu_table_setparms_lpar()
540 tbl->it_busno = phb->bus->number; in iommu_table_setparms_lpar()
541 tbl->it_page_shift = IOMMU_PAGE_SHIFT_4K; in iommu_table_setparms_lpar()
542 tbl->it_base = 0; in iommu_table_setparms_lpar()
543 tbl->it_blocksize = 16; in iommu_table_setparms_lpar()
544 tbl->it_type = TCE_PCI; in iommu_table_setparms_lpar()
545 tbl->it_offset = offset >> tbl->it_page_shift; in iommu_table_setparms_lpar()
546 tbl->it_size = size >> tbl->it_page_shift; in iommu_table_setparms_lpar()
552 struct iommu_table *tbl; in pci_dma_bus_setup_pSeries() local
613 tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, in pci_dma_bus_setup_pSeries()
616 iommu_table_setparms(pci->phb, dn, tbl); in pci_dma_bus_setup_pSeries()
617 pci->iommu_table = iommu_init_table(tbl, pci->phb->node); in pci_dma_bus_setup_pSeries()
618 iommu_register_group(tbl, pci_domain_nr(bus), 0); in pci_dma_bus_setup_pSeries()
631 struct iommu_table *tbl; in pci_dma_bus_setup_pSeriesLP() local
659 tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, in pci_dma_bus_setup_pSeriesLP()
661 iommu_table_setparms_lpar(ppci->phb, pdn, tbl, dma_window); in pci_dma_bus_setup_pSeriesLP()
662 ppci->iommu_table = iommu_init_table(tbl, ppci->phb->node); in pci_dma_bus_setup_pSeriesLP()
663 iommu_register_group(tbl, pci_domain_nr(bus), 0); in pci_dma_bus_setup_pSeriesLP()
672 struct iommu_table *tbl; in pci_dma_dev_setup_pSeries() local
686 tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, in pci_dma_dev_setup_pSeries()
688 iommu_table_setparms(phb, dn, tbl); in pci_dma_dev_setup_pSeries()
689 PCI_DN(dn)->iommu_table = iommu_init_table(tbl, phb->node); in pci_dma_dev_setup_pSeries()
690 iommu_register_group(tbl, pci_domain_nr(phb->bus), 0); in pci_dma_dev_setup_pSeries()
1076 struct iommu_table *tbl; in pci_dma_dev_setup_pSeriesLP() local
1108 tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, in pci_dma_dev_setup_pSeriesLP()
1110 iommu_table_setparms_lpar(pci->phb, pdn, tbl, dma_window); in pci_dma_dev_setup_pSeriesLP()
1111 pci->iommu_table = iommu_init_table(tbl, pci->phb->node); in pci_dma_dev_setup_pSeriesLP()
1112 iommu_register_group(tbl, pci_domain_nr(pci->phb->bus), 0); in pci_dma_dev_setup_pSeriesLP()