/illumos-gate/usr/src/uts/sun4u/io/pci/ |
H A D | pci_iommu.c | 53 iommu_t *iommu_p; in iommu_create() local 96 iommu_p->iommu_tsb_paddr = va_to_pa((caddr_t)iommu_p->iommu_tsb_vaddr); in iommu_create() 100 iommu_p->iommu_dvma_base = iommu_p->iommu_dvma_end + 1 in iommu_create() 102 iommu_p->dvma_base_pg = IOMMU_BTOP(iommu_p->iommu_dvma_base); in iommu_create() 104 iommu_p->dvma_end_pg = IOMMU_BTOP(iommu_p->iommu_dvma_end); in iommu_create() 114 iommu_p->iommu_dvma_end - iommu_p->iommu_dvma_base + 1; in iommu_create() 120 iommu_p->iommu_ctrl_reg, iommu_p->iommu_tsb_base_addr_reg); in iommu_create() 122 iommu_p->iommu_flush_page_reg, iommu_p->iommu_flush_ctx_reg); in iommu_create() 124 iommu_p->iommu_tsb_vaddr, iommu_p->iommu_tsb_paddr); in iommu_create() 132 iommu_p->iommu_tsb_size, iommu_p->iommu_tsb_entries, in iommu_create() [all …]
|
H A D | pci_dma.c | 976 if (DVMA_DBG_ON(iommu_p)) in pci_dvma_map_fast() 1531 iommu_p->dvma_alloc_rec = iommu_p->dvma_free_rec = NULL; in pci_dvma_debug_fini() 1556 if (!iommu_p->dvma_alloc_rec) in pci_dvma_alloc_debug() 1557 pci_dvma_debug_init(iommu_p); in pci_dvma_alloc_debug() 1558 if (DVMA_DBG_OFF(iommu_p)) { in pci_dvma_alloc_debug() 1563 ptr = &iommu_p->dvma_alloc_rec[iommu_p->dvma_alloc_rec_index]; in pci_dvma_alloc_debug() 1577 iommu_p->dvma_active_count++; in pci_dvma_alloc_debug() 1589 if (!iommu_p->dvma_alloc_rec) in pci_dvma_free_debug() 1591 if (DVMA_DBG_OFF(iommu_p)) { in pci_dvma_free_debug() 1596 ptr = &iommu_p->dvma_free_rec[iommu_p->dvma_free_rec_index]; in pci_dvma_free_debug() [all …]
|
H A D | pci_fdvma.c | 55 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_fdvma_load() local 86 pg_index = dvma_pg - iommu_p->dvma_base_pg; in pci_fdvma_load() 113 IOMMU_PAGE_FLUSH(iommu_p, (dvma_pg + i)); in pci_fdvma_load() 183 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_fdvma_reserve() local 200 if ((lo >= hi) || (hi < iommu_p->iommu_dvma_base)) in pci_fdvma_reserve() 209 atomic_add_long(&iommu_p->iommu_dvma_reserve, npages); in pci_fdvma_reserve() 229 atomic_add_long(&iommu_p->iommu_dvma_reserve, npages); in pci_fdvma_reserve() 273 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_fdvma_release() local 292 atomic_add_long(&iommu_p->iommu_dvma_reserve, npages); in pci_fdvma_release() 296 if (iommu_p->iommu_dvma_clid != 0) { in pci_fdvma_release() [all …]
|
H A D | pcisch.c | 1199 iommu_p->iommu_mtlb_nreq = 0; in pci_iommu_setup() 1200 iommu_p->iommu_mtlb_npgs = 0; in pci_iommu_setup() 1226 iommu_p->iommu_ctx_bitmap = in pci_iommu_setup() 1236 iommu_p->iommu_flush_ctx_reg = in pci_iommu_setup() 1239 iommu_p->iommu_tfar_reg = in pci_iommu_setup() 1248 iommu_ctx_free(iommu_p); in pci_iommu_teardown() 1254 iommu_p->iommu_mtlb_nreq = 0; in pci_iommu_teardown() 1255 iommu_p->iommu_mtlb_npgs = iommu_p->iommu_mtlb_maxpgs = 0; in pci_iommu_teardown() 3599 if (iommu_p->iommu_mtlb_npgs <= iommu_p->iommu_mtlb_maxpgs) in tm_vmem_free() 3621 pci_vmem_do_free(iommu_p, in tm_vmem_free() [all …]
|
H A D | pci_reloc.c | 194 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dvma_remap() local 209 iommu_remap_pages(iommu_p, mp, dvma_pg, npgs, idx); in pci_dvma_remap() 220 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_fdvma_remap() local 223 dvma_addr_t pg_index = dvma_pg - iommu_p->dvma_base_pg; in pci_fdvma_remap() 241 iommu_p->iommu_tsb_vaddr[pg_index + i]); in pci_fdvma_remap() 250 iommu_p->iommu_tsb_vaddr[pg_index + i] = tte | IOMMU_PTOB(pfn); in pci_fdvma_remap() 251 IOMMU_PAGE_FLUSH(iommu_p, (dvma_pg + i)); in pci_fdvma_remap()
|
H A D | pcipsy.c | 1069 get_pbm_reg_base(iommu_p->iommu_pci_p); in pci_iommu_config() 1072 volatile uint64_t *iommu_ctl_p = iommu_p->iommu_ctrl_reg; in pci_iommu_config() 1073 volatile uint64_t tsb_bar_val = iommu_p->iommu_tsb_paddr; in pci_iommu_config() 1076 DEBUG2(DBG_ATTACH, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_config() 1159 pci_iommu_setup(iommu_t *iommu_p) in pci_iommu_setup() argument 1164 pci_t *pci_p = iommu_p->iommu_pci_p; in pci_iommu_setup() 1179 iommu_p->iommu_dvma_end = dvma_prop->dvma_base + in pci_iommu_setup() 1194 iommu_p->iommu_ctx_bitmap = NULL; in pci_iommu_setup() 1195 iommu_p->iommu_flush_ctx_reg = NULL; in pci_iommu_setup() 1208 pci_iommu_teardown(iommu_t *iommu_p) in pci_iommu_teardown() argument [all …]
|
H A D | pci.c | 575 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_setup() local 583 if (!(mp = pci_dma_lmts2hdl(dip, rdip, iommu_p, dmareq))) in pci_dma_setup() 598 if (!pci_dvma_map_fast(iommu_p, mp)) in pci_dma_setup() 605 if (ret = pci_dvma_map(mp, dmareq, iommu_p)) in pci_dma_setup() 699 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_bindhdl() local 723 if (!pci_dvma_map_fast(iommu_p, mp)) in pci_dma_bindhdl() 729 if (ret = pci_dvma_map(mp, dmareq, iommu_p)) in pci_dma_bindhdl() 779 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_unbindhdl() local 794 pci_dvma_unmap(iommu_p, mp); in pci_dma_unbindhdl() 806 if (iommu_p->iommu_dvma_clid != 0) { in pci_dma_unbindhdl() [all …]
|
/illumos-gate/usr/src/uts/sun4u/sys/pci/ |
H A D | pci_iommu.h | 208 #define IOMMU_PAGE_INDEX(iommu_p, dvma_pg) ((dvma_pg) - (iommu_p)->dvma_base_pg) argument 209 #define IOMMU_PAGE_FLUSH(iommu_p, dvma_pg) \ argument 211 #define IOMMU_UNLOAD_TTE(iommu_p, pg_index) \ argument 213 #define IOMMU_PAGE_TTEPA(iommu_p, dvma_pg) \ argument 214 ((iommu_p)->iommu_tsb_paddr + (IOMMU_PAGE_INDEX(iommu_p, dvma_pg) << 3)) 225 #define DVMA_DBG_ON(iommu_p) \ argument 226 ((1ull << (iommu_p)->iommu_inst) & pci_dvma_debug_on) 227 #define DVMA_DBG_OFF(iommu_p) \ argument 230 extern void pci_dvma_debug_fini(iommu_t *iommu_p); 243 extern void iommu_map_window(iommu_t *iommu_p, [all …]
|
H A D | pci_chip.h | 77 extern uintptr_t pci_iommu_setup(iommu_t *iommu_p); 78 extern void pci_iommu_teardown(iommu_t *iommu_p); 79 extern void pci_iommu_config(iommu_t *iommu_p, uint64_t iommu_ctl, 82 extern dvma_context_t pci_iommu_get_dvma_context(iommu_t *iommu_p, 84 extern void pci_iommu_free_dvma_context(iommu_t *iommu_p, dvma_context_t ctx); 116 extern void pci_vmem_free(iommu_t *iommu_p, ddi_dma_impl_t *mp,
|
H A D | pci_dma.h | 239 iommu_t *iommu_p, ddi_dma_req_t *dmareq); 246 extern int pci_dvma_map_fast(iommu_t *iommu_p, ddi_dma_impl_t *mp); 248 iommu_t *iommu_p); 249 extern void pci_dvma_unmap(iommu_t *iommu_p, ddi_dma_impl_t *mp); 260 extern void pci_vmem_do_free(iommu_t *iommu_p, void *base_addr, size_t npages,
|