Lines Matching refs:mmu_p

176 px_dma_lmts2hdl(dev_info_t *dip, dev_info_t *rdip, px_mmu_t *mmu_p,
181 uint64_t syslo = mmu_p->mmu_dvma_base;
182 uint64_t syshi = mmu_p->mmu_dvma_end;
183 uint64_t fasthi = mmu_p->mmu_dvma_fast_end;
269 px_mmu_t *mmu_p = px_p->px_mmu_p;
318 syslo = mmu_p->mmu_dvma_base;
319 syshi = mmu_p->mmu_dvma_end;
352 syshi = mmu_p->mmu_dvma_fast_end;
700 px_dvma_map_fast(px_mmu_t *mmu_p, ddi_dma_impl_t *mp)
706 int i = mmu_p->mmu_dvma_addr_scan_start;
707 uint8_t *lock_addr = mmu_p->mmu_dvma_cache_locks + i;
710 dev_info_t *dip = mmu_p->mmu_px_p->px_dip;
719 lock_addr = mmu_p->mmu_dvma_cache_locks;
730 mmu_p->mmu_dvma_addr_scan_start = (i + 1) & (entries - 1);
733 dvma_pg = mmu_p->dvma_base_pg + i;
768 if (PX_DVMA_DBG_ON(mmu_p))
769 px_dvma_alloc_debug(mmu_p, (char *)mp->dmai_mapping,
779 px_dvma_map(ddi_dma_impl_t *mp, ddi_dma_req_t *dmareq, px_mmu_t *mmu_p)
797 dvma_addr = vmem_alloc(mmu_p->mmu_dvma_map,
804 dvma_addr = vmem_xalloc(mmu_p->mmu_dvma_map,
817 dvma_pg_index = dvma_pg - mmu_p->dvma_base_pg;
827 if ((ret = px_mmu_map_pages(mmu_p,
830 vmem_free(mmu_p->mmu_dvma_map, (void *)dvma_addr,
836 vmem_xfree(mmu_p->mmu_dvma_map, (void *)dvma_addr,
849 &mmu_p->mmu_dvma_clid);
856 px_dvma_unmap(px_mmu_t *mmu_p, ddi_dma_impl_t *mp)
863 px_iopfn_t index = dvma_pg - mmu_p->dvma_base_pg;
867 mmu_p->mmu_dvma_cache_locks[index] = 0;
875 vmem_free(mmu_p->mmu_dvma_map, (void *)dvma_addr,
882 vmem_xfree(mmu_p->mmu_dvma_map, (void *)dvma_addr,
1257 px_dvma_debug_init(px_mmu_t *mmu_p)
1260 ASSERT(MUTEX_HELD(&mmu_p->dvma_debug_lock));
1261 cmn_err(CE_NOTE, "PCI Express DVMA %p stat ON", mmu_p);
1263 mmu_p->dvma_alloc_rec = kmem_alloc(sz, KM_SLEEP);
1264 mmu_p->dvma_free_rec = kmem_alloc(sz, KM_SLEEP);
1266 mmu_p->dvma_active_list = NULL;
1267 mmu_p->dvma_alloc_rec_index = 0;
1268 mmu_p->dvma_free_rec_index = 0;
1269 mmu_p->dvma_active_count = 0;
1273 px_dvma_debug_fini(px_mmu_t *mmu_p)
1277 uint64_t mask = ~(1ull << mmu_p->mmu_inst);
1278 cmn_err(CE_NOTE, "PCI Express DVMA %p stat OFF", mmu_p);
1280 if (mmu_p->dvma_alloc_rec) {
1281 kmem_free(mmu_p->dvma_alloc_rec, sz);
1282 mmu_p->dvma_alloc_rec = NULL;
1284 if (mmu_p->dvma_free_rec) {
1285 kmem_free(mmu_p->dvma_free_rec, sz);
1286 mmu_p->dvma_free_rec = NULL;
1289 prev = mmu_p->dvma_active_list;
1296 mmu_p->dvma_active_list = NULL;
1297 mmu_p->dvma_alloc_rec_index = 0;
1298 mmu_p->dvma_free_rec_index = 0;
1299 mmu_p->dvma_active_count = 0;
1306 px_dvma_alloc_debug(px_mmu_t *mmu_p, char *address, uint_t len,
1310 mutex_enter(&mmu_p->dvma_debug_lock);
1312 if (!mmu_p->dvma_alloc_rec)
1313 px_dvma_debug_init(mmu_p);
1314 if (PX_DVMA_DBG_OFF(mmu_p)) {
1315 px_dvma_debug_fini(mmu_p);
1319 ptr = &mmu_p->dvma_alloc_rec[mmu_p->dvma_alloc_rec_index];
1323 if (++mmu_p->dvma_alloc_rec_index == px_dvma_debug_rec)
1324 mmu_p->dvma_alloc_rec_index = 0;
1331 ptr->next = mmu_p->dvma_active_list;
1332 mmu_p->dvma_active_list = ptr;
1333 mmu_p->dvma_active_count++;
1335 mutex_exit(&mmu_p->dvma_debug_lock);
1339 px_dvma_free_debug(px_mmu_t *mmu_p, char *address, uint_t len,
1343 mutex_enter(&mmu_p->dvma_debug_lock);
1345 if (!mmu_p->dvma_alloc_rec)
1346 px_dvma_debug_init(mmu_p);
1347 if (PX_DVMA_DBG_OFF(mmu_p)) {
1348 px_dvma_debug_fini(mmu_p);
1352 ptr = &mmu_p->dvma_free_rec[mmu_p->dvma_free_rec_index];
1356 if (++mmu_p->dvma_free_rec_index == px_dvma_debug_rec)
1357 mmu_p->dvma_free_rec_index = 0;
1359 ptr_save = mmu_p->dvma_active_list;
1370 if (ptr == mmu_p->dvma_active_list)
1371 mmu_p->dvma_active_list = ptr->next;
1375 mmu_p->dvma_active_count--;
1377 mutex_exit(&mmu_p->dvma_debug_lock);