Lines Matching refs:mhdl
195 ldc_mhdl_t *mhdl; in ldc_mem_alloc_handle() local
216 mhdl = kmem_cache_alloc(ldcssp->memhdl_cache, KM_SLEEP); in ldc_mem_alloc_handle()
219 mutex_init(&mhdl->lock, NULL, MUTEX_DRIVER, NULL); in ldc_mem_alloc_handle()
221 mhdl->myshadow = B_FALSE; in ldc_mem_alloc_handle()
222 mhdl->memseg = NULL; in ldc_mem_alloc_handle()
223 mhdl->ldcp = ldcp; in ldc_mem_alloc_handle()
224 mhdl->status = LDC_UNBOUND; in ldc_mem_alloc_handle()
228 ldcp->mhdl_list = mhdl; in ldc_mem_alloc_handle()
229 mhdl->next = NULL; in ldc_mem_alloc_handle()
232 mhdl->next = ldcp->mhdl_list; in ldc_mem_alloc_handle()
233 ldcp->mhdl_list = mhdl; in ldc_mem_alloc_handle()
237 *mhandle = (ldc_mem_handle_t)mhdl; in ldc_mem_alloc_handle()
242 ldcp->id, mhdl); in ldc_mem_alloc_handle()
253 ldc_mhdl_t *mhdl, *phdl; in ldc_mem_free_handle() local
261 mhdl = (ldc_mhdl_t *)mhandle; in ldc_mem_free_handle()
263 mutex_enter(&mhdl->lock); in ldc_mem_free_handle()
265 ldcp = mhdl->ldcp; in ldc_mem_free_handle()
267 if (mhdl->status == LDC_BOUND || mhdl->status == LDC_MAPPED) { in ldc_mem_free_handle()
270 mhdl); in ldc_mem_free_handle()
271 mutex_exit(&mhdl->lock); in ldc_mem_free_handle()
274 mutex_exit(&mhdl->lock); in ldc_mem_free_handle()
281 if (phdl == mhdl) { in ldc_mem_free_handle()
282 ldcp->mhdl_list = mhdl->next; in ldc_mem_free_handle()
283 mutex_destroy(&mhdl->lock); in ldc_mem_free_handle()
284 kmem_cache_free(ldcssp->memhdl_cache, mhdl); in ldc_mem_free_handle()
288 ldcp->id, mhdl); in ldc_mem_free_handle()
292 if (phdl->next == mhdl) { in ldc_mem_free_handle()
293 phdl->next = mhdl->next; in ldc_mem_free_handle()
294 mutex_destroy(&mhdl->lock); in ldc_mem_free_handle()
295 kmem_cache_free(ldcssp->memhdl_cache, mhdl); in ldc_mem_free_handle()
298 "handle 0x%llx\n", ldcp->id, mhdl); in ldc_mem_free_handle()
307 "ldc_mem_free_handle: invalid handle 0x%llx\n", mhdl); in ldc_mem_free_handle()
348 ldc_mhdl_t *mhdl; in i_ldc_mem_bind_handle() local
367 mhdl = (ldc_mhdl_t *)mhandle; in i_ldc_mem_bind_handle()
368 ldcp = mhdl->ldcp; in i_ldc_mem_bind_handle()
373 mutex_enter(&mhdl->lock); in i_ldc_mem_bind_handle()
375 if (mhdl->status == LDC_BOUND || mhdl->memseg != NULL) { in i_ldc_mem_bind_handle()
379 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
387 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
442 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
483 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
488 memseg = mhdl->memseg = in i_ldc_mem_bind_handle()
562 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
641 mhdl->mtype = mtype; in i_ldc_mem_bind_handle()
642 mhdl->perm = perm; in i_ldc_mem_bind_handle()
643 mhdl->status = LDC_BOUND; in i_ldc_mem_bind_handle()
661 ldcp->id, mhdl, vaddr, npages, memseg->ncookies); in i_ldc_mem_bind_handle()
663 mutex_exit(&mhdl->lock); in i_ldc_mem_bind_handle()
673 ldc_mhdl_t *mhdl; in ldc_mem_nextcookie() local
682 mhdl = (ldc_mhdl_t *)mhandle; in ldc_mem_nextcookie()
684 mutex_enter(&mhdl->lock); in ldc_mem_nextcookie()
686 ldcp = mhdl->ldcp; in ldc_mem_nextcookie()
687 memseg = mhdl->memseg; in ldc_mem_nextcookie()
693 mutex_exit(&mhdl->lock); in ldc_mem_nextcookie()
709 mutex_exit(&mhdl->lock); in ldc_mem_nextcookie()
717 mutex_exit(&mhdl->lock); in ldc_mem_nextcookie()
729 ldc_mhdl_t *mhdl; in ldc_mem_unbind_handle() local
742 mhdl = (ldc_mhdl_t *)mhandle; in ldc_mem_unbind_handle()
744 mutex_enter(&mhdl->lock); in ldc_mem_unbind_handle()
746 if (mhdl->status == LDC_UNBOUND) { in ldc_mem_unbind_handle()
750 mutex_exit(&mhdl->lock); in ldc_mem_unbind_handle()
754 ldcp = mhdl->ldcp; in ldc_mem_unbind_handle()
757 memseg = mhdl->memseg; in ldc_mem_unbind_handle()
811 mhdl->memseg = NULL; in ldc_mem_unbind_handle()
812 mhdl->status = LDC_UNBOUND; in ldc_mem_unbind_handle()
815 ldcp->id, mhdl); in ldc_mem_unbind_handle()
817 mutex_exit(&mhdl->lock); in ldc_mem_unbind_handle()
828 ldc_mhdl_t *mhdl; in ldc_mem_info() local
834 mhdl = (ldc_mhdl_t *)mhandle; in ldc_mem_info()
841 mutex_enter(&mhdl->lock); in ldc_mem_info()
843 minfo->status = mhdl->status; in ldc_mem_info()
844 if (mhdl->status == LDC_BOUND || mhdl->status == LDC_MAPPED) { in ldc_mem_info()
845 minfo->vaddr = mhdl->memseg->vaddr; in ldc_mem_info()
846 minfo->raddr = mhdl->memseg->raddr; in ldc_mem_info()
847 minfo->mtype = mhdl->mtype; in ldc_mem_info()
848 minfo->perm = mhdl->perm; in ldc_mem_info()
850 mutex_exit(&mhdl->lock); in ldc_mem_info()
1263 ldc_mhdl_t *mhdl; in i_ldc_mem_map() local
1276 mhdl = (ldc_mhdl_t *)mhandle; in i_ldc_mem_map()
1278 mutex_enter(&mhdl->lock); in i_ldc_mem_map()
1280 if (mhdl->status == LDC_BOUND || mhdl->status == LDC_MAPPED || in i_ldc_mem_map()
1281 mhdl->memseg != NULL) { in i_ldc_mem_map()
1284 mutex_exit(&mhdl->lock); in i_ldc_mem_map()
1288 ldcp = mhdl->ldcp; in i_ldc_mem_map()
1297 mutex_exit(&mhdl->lock); in i_ldc_mem_map()
1304 mutex_exit(&mhdl->lock); in i_ldc_mem_map()
1325 memseg = mhdl->memseg = in i_ldc_mem_map()
1357 mutex_exit(&mhdl->lock); in i_ldc_mem_map()
1462 mhdl->myshadow = B_TRUE; in i_ldc_mem_map()
1493 mhdl->mtype = mtype; in i_ldc_mem_map()
1494 mhdl->perm = perm; in i_ldc_mem_map()
1495 mhdl->status = LDC_MAPPED; in i_ldc_mem_map()
1499 ldcp->id, mhdl, memseg->raddr, memseg->vaddr, in i_ldc_mem_map()
1510 mutex_exit(&mhdl->lock); in i_ldc_mem_map()
1521 ldc_mhdl_t *mhdl = (ldc_mhdl_t *)mhandle; in ldc_mem_unmap() local
1525 if (mhdl == 0 || mhdl->status != LDC_MAPPED) { in ldc_mem_unmap()
1532 mutex_enter(&mhdl->lock); in ldc_mem_unmap()
1534 ldcp = mhdl->ldcp; in ldc_mem_unmap()
1535 memseg = mhdl->memseg; in ldc_mem_unmap()
1538 ldcp->id, mhdl); in ldc_mem_unmap()
1541 if (mhdl->mtype == LDC_SHADOW_MAP && mhdl->myshadow) { in ldc_mem_unmap()
1543 } else if (mhdl->mtype == LDC_DIRECT_MAP) { in ldc_mem_unmap()
1568 mhdl->memseg = NULL; in ldc_mem_unmap()
1569 mhdl->status = LDC_UNBOUND; in ldc_mem_unmap()
1572 ldcp->id, mhdl); in ldc_mem_unmap()
1574 mutex_exit(&mhdl->lock); in ldc_mem_unmap()
1590 ldc_mhdl_t *mhdl; in i_ldc_mem_acquire_release() local
1601 mhdl = (ldc_mhdl_t *)mhandle; in i_ldc_mem_acquire_release()
1603 mutex_enter(&mhdl->lock); in i_ldc_mem_acquire_release()
1605 if (mhdl->status != LDC_MAPPED || mhdl->ldcp == NULL) { in i_ldc_mem_acquire_release()
1608 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1613 if (mhdl->mtype == LDC_DIRECT_MAP) { in i_ldc_mem_acquire_release()
1614 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1619 if ((direction == LDC_COPY_IN && (mhdl->perm & LDC_MEM_R) == 0) || in i_ldc_mem_acquire_release()
1620 (direction == LDC_COPY_OUT && (mhdl->perm & LDC_MEM_W) == 0)) { in i_ldc_mem_acquire_release()
1621 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1625 if (offset >= mhdl->memseg->size || in i_ldc_mem_acquire_release()
1626 (offset + size) > mhdl->memseg->size) { in i_ldc_mem_acquire_release()
1629 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1634 ldcp = mhdl->ldcp; in i_ldc_mem_acquire_release()
1635 memseg = mhdl->memseg; in i_ldc_mem_acquire_release()
1637 if (mhdl->mtype == LDC_SHADOW_MAP) { in i_ldc_mem_acquire_release()
1649 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1654 mutex_exit(&mhdl->lock); in i_ldc_mem_acquire_release()
1895 dringp->mhdl = mhandle; in ldc_mem_dring_bind()
1917 dringp->mhdl = NULL; in ldc_mem_dring_bind()
1973 rv = ldc_mem_nextcookie((ldc_mem_handle_t)dringp->mhdl, cookie); in ldc_mem_dring_nextcookie()
2034 (void) ldc_mem_unbind_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unbind()
2035 (void) ldc_mem_free_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unbind()
2038 dringp->mhdl = NULL; in ldc_mem_dring_unbind()
2051 ldc_mhdl_t *mhdl; in i_ldc_mem_inject_dring_clear() local
2069 if ((mhdl = (ldc_mhdl_t *)dp->mhdl) == NULL) in i_ldc_mem_inject_dring_clear()
2072 if ((memseg = mhdl->memseg) == NULL) in i_ldc_mem_inject_dring_clear()
2136 if (dringp->mhdl) { in ldc_mem_dring_info()
2137 rv = ldc_mem_info(dringp->mhdl, minfo); in ldc_mem_dring_info()
2245 dringp->mhdl = mhandle; in ldc_mem_dring_map()
2331 (void) ldc_mem_unmap(dringp->mhdl); in ldc_mem_dring_unmap()
2332 (void) ldc_mem_free_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unmap()
2362 ldc_mhdl_t *mhdl; in i_ldc_dring_acquire_release() local
2388 mhdl = (ldc_mhdl_t *)dringp->mhdl; in i_ldc_dring_acquire_release()
2389 if (mhdl == NULL) { in i_ldc_dring_acquire_release()
2396 if (mhdl->mtype != LDC_SHADOW_MAP) { in i_ldc_dring_acquire_release()
2399 mhdl->mtype); in i_ldc_dring_acquire_release()
2416 err = i_ldc_mem_acquire_release((ldc_mem_handle_t)dringp->mhdl, in i_ldc_dring_acquire_release()
2433 err = i_ldc_mem_acquire_release((ldc_mem_handle_t)dringp->mhdl, in i_ldc_dring_acquire_release()