/titanic_41/usr/src/uts/sun4u/io/pci/ |
H A D | pci_iommu.c | 46 static void iommu_tlb_flushall(iommu_t *iommu_p); 47 static void iommu_preserve_tsb(iommu_t *iommu_p); 53 iommu_t *iommu_p; in iommu_create() local 67 iommu_p = (iommu_t *)kmem_zalloc(sizeof (iommu_t), KM_SLEEP); in iommu_create() 68 pci_p->pci_iommu_p = iommu_p; in iommu_create() 69 iommu_p->iommu_pci_p = pci_p; in iommu_create() 70 iommu_p->iommu_inst = ddi_get_instance(dip); in iommu_create() 75 iommu_p->iommu_dvma_end = pci_iommu_dvma_end; in iommu_create() 76 a = pci_iommu_setup(iommu_p); in iommu_create() 81 iommu_p->iommu_ctrl_reg = in iommu_create() [all …]
|
H A D | pci_dma.c | 357 pci_dma_lmts2hdl(dev_info_t *dip, dev_info_t *rdip, iommu_t *iommu_p, in pci_dma_lmts2hdl() argument 362 uint64_t syslo = iommu_p->iommu_dvma_base; in pci_dma_lmts2hdl() 363 uint64_t syshi = iommu_p->iommu_dvma_end; in pci_dma_lmts2hdl() 364 uint64_t fasthi = iommu_p->iommu_dvma_fast_end; in pci_dma_lmts2hdl() 427 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_attr2hdl() local 458 syslo = iommu_p->iommu_dma_bypass_base; in pci_dma_attr2hdl() 459 syshi = iommu_p->iommu_dma_bypass_end; in pci_dma_attr2hdl() 470 syslo = iommu_p->iommu_dvma_base; in pci_dma_attr2hdl() 471 syshi = iommu_p->iommu_dvma_end; in pci_dma_attr2hdl() 501 syshi = iommu_p->iommu_dvma_fast_end; in pci_dma_attr2hdl() [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() 112 iommu_p->iommu_tsb_vaddr[pg_index + i] = tte | IOMMU_PTOB(pfn); 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() 207 if ((long)atomic_add_long_nv(&iommu_p->iommu_dvma_reserve, in pci_fdvma_reserve() 209 atomic_add_long(&iommu_p->iommu_dvma_reserve, npages); in pci_fdvma_reserve() 224 dvma_pg = IOMMU_BTOP((ulong_t)vmem_xalloc(iommu_p->iommu_dvma_map, in pci_fdvma_reserve() 229 atomic_add_long(&iommu_p->iommu_dvma_reserve, npages); in pci_fdvma_reserve() [all …]
|
H A D | pcisch.c | 79 static void tm_vmem_free(ddi_dma_impl_t *mp, iommu_t *iommu_p, 1011 pci_iommu_get_dvma_context(iommu_t *iommu_p, dvma_addr_t dvma_pg_index) in pci_iommu_get_dvma_context() argument 1017 uint64_t *bucket_ptr = iommu_p->iommu_ctx_bitmap + bucket_no; in pci_iommu_get_dvma_context() 1040 DEBUG3(DBG_DMA_MAP, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_get_dvma_context() 1047 pci_iommu_free_dvma_context(iommu_t *iommu_p, dvma_context_t ctx) in pci_iommu_free_dvma_context() argument 1052 uint64_t *bucket_ptr = iommu_p->iommu_ctx_bitmap + bucket_no; in pci_iommu_free_dvma_context() 1054 DEBUG1(DBG_DMA_MAP, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_free_dvma_context() 1184 pci_iommu_setup(iommu_t *iommu_p) in pci_iommu_setup() argument 1190 pci_t *pci_p = iommu_p->iommu_pci_p; in pci_iommu_setup() 1199 iommu_p->iommu_mtlb_nreq = 0; in pci_iommu_setup() [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 | 1079 pci_iommu_get_dvma_context(iommu_t *iommu_p, dvma_addr_t dvma_pg_index) in pci_iommu_get_dvma_context() argument 1087 pci_iommu_free_dvma_context(iommu_t *iommu_p, dvma_context_t ctx) in pci_iommu_free_dvma_context() argument 1093 pci_iommu_config(iommu_t *iommu_p, uint64_t iommu_ctl, uint64_t cfgpa) in pci_iommu_config() argument 1096 get_pbm_reg_base(iommu_p->iommu_pci_p); in pci_iommu_config() 1099 volatile uint64_t *iommu_ctl_p = iommu_p->iommu_ctrl_reg; in pci_iommu_config() 1100 volatile uint64_t tsb_bar_val = iommu_p->iommu_tsb_paddr; in pci_iommu_config() 1101 volatile uint64_t *tsb_bar_p = iommu_p->iommu_tsb_base_addr_reg; in pci_iommu_config() 1103 DEBUG2(DBG_ATTACH, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_config() 1106 DEBUG2(DBG_ATTACH|DBG_CONT, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_config() 1109 DEBUG2(DBG_ATTACH|DBG_CONT, iommu_p->iommu_pci_p->pci_dip, in pci_iommu_config() [all …]
|
H A D | pci.c | 573 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_setup() local 581 if (!(mp = pci_dma_lmts2hdl(dip, rdip, iommu_p, dmareq))) in pci_dma_setup() 596 if (!pci_dvma_map_fast(iommu_p, mp)) in pci_dma_setup() 603 if (ret = pci_dvma_map(mp, dmareq, iommu_p)) in pci_dma_setup() 697 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_bindhdl() local 721 if (!pci_dvma_map_fast(iommu_p, mp)) in pci_dma_bindhdl() 727 if (ret = pci_dvma_map(mp, dmareq, iommu_p)) in pci_dma_bindhdl() 771 iommu_t *iommu_p = pci_p->pci_iommu_p; in pci_dma_unbindhdl() local 786 pci_dvma_unmap(iommu_p, mp); in pci_dma_unbindhdl() 798 if (iommu_p->iommu_dvma_clid != 0) { in pci_dma_unbindhdl() [all …]
|
/titanic_41/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 210 *(iommu_p)->iommu_flush_page_reg = IOMMU_PTOB(dvma_pg) 211 #define IOMMU_UNLOAD_TTE(iommu_p, pg_index) \ argument 212 (iommu_p)->iommu_tsb_vaddr[pg_index] = COMMON_IOMMU_INVALID_TTE 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 [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,
|