Lines Matching refs:memseg
222 mhdl->memseg = NULL; in ldc_mem_alloc_handle()
351 ldc_memseg_t *memseg; in i_ldc_mem_bind_handle() local
375 if (mhdl->status == LDC_BOUND || mhdl->memseg != NULL) { in i_ldc_mem_bind_handle()
488 memseg = mhdl->memseg = in i_ldc_mem_bind_handle()
492 memseg->pages = kmem_zalloc((sizeof (ldc_page_t) * npages), KM_SLEEP); in i_ldc_mem_bind_handle()
493 memseg->cookies = in i_ldc_mem_bind_handle()
603 memseg->pages[i].index = index; in i_ldc_mem_bind_handle()
604 memseg->pages[i].raddr = raddr; in i_ldc_mem_bind_handle()
605 memseg->pages[i].mte = &(mtbl->table[index]); in i_ldc_mem_bind_handle()
610 memseg->cookies[cookie_idx].addr = in i_ldc_mem_bind_handle()
612 memseg->cookies[cookie_idx].addr |= poffset; in i_ldc_mem_bind_handle()
613 memseg->cookies[cookie_idx].size = psize; in i_ldc_mem_bind_handle()
616 memseg->cookies[cookie_idx].size += psize; in i_ldc_mem_bind_handle()
646 memseg->vaddr = vaddr; in i_ldc_mem_bind_handle()
647 memseg->raddr = memseg->pages[0].raddr; in i_ldc_mem_bind_handle()
648 memseg->size = len; in i_ldc_mem_bind_handle()
649 memseg->npages = npages; in i_ldc_mem_bind_handle()
650 memseg->ncookies = cookie_idx + 1; in i_ldc_mem_bind_handle()
651 memseg->next_cookie = (memseg->ncookies > 1) ? 1 : 0; in i_ldc_mem_bind_handle()
654 *ccount = memseg->ncookies; in i_ldc_mem_bind_handle()
655 cookie->addr = memseg->cookies[0].addr; in i_ldc_mem_bind_handle()
656 cookie->size = memseg->cookies[0].size; in i_ldc_mem_bind_handle()
661 ldcp->id, mhdl, vaddr, npages, memseg->ncookies); in i_ldc_mem_bind_handle()
675 ldc_memseg_t *memseg; in ldc_mem_nextcookie() local
687 memseg = mhdl->memseg; in ldc_mem_nextcookie()
697 if (memseg->next_cookie != 0) { in ldc_mem_nextcookie()
698 cookie->addr = memseg->cookies[memseg->next_cookie].addr; in ldc_mem_nextcookie()
699 cookie->size = memseg->cookies[memseg->next_cookie].size; in ldc_mem_nextcookie()
700 memseg->next_cookie++; in ldc_mem_nextcookie()
701 if (memseg->next_cookie == memseg->ncookies) in ldc_mem_nextcookie()
702 memseg->next_cookie = 0; in ldc_mem_nextcookie()
732 ldc_memseg_t *memseg; in ldc_mem_unbind_handle() local
757 memseg = mhdl->memseg; in ldc_mem_unbind_handle()
763 for (i = 0; i < memseg->npages; i++) { in ldc_mem_unbind_handle()
766 memseg->pages[i].mte->entry.ll = 0; in ldc_mem_unbind_handle()
769 if (memseg->pages[i].mte->cookie) { in ldc_mem_unbind_handle()
773 cookie_addr = IDX2COOKIE(memseg->pages[i].index, in ldc_mem_unbind_handle()
778 cookie_addr, memseg->pages[i].mte->cookie); in ldc_mem_unbind_handle()
783 memseg->pages[i].mte->cookie); in ldc_mem_unbind_handle()
805 kmem_free(memseg->pages, (sizeof (ldc_page_t) * memseg->npages)); in ldc_mem_unbind_handle()
806 kmem_free(memseg->cookies, in ldc_mem_unbind_handle()
807 (sizeof (ldc_mem_cookie_t) * memseg->npages)); in ldc_mem_unbind_handle()
808 kmem_cache_free(ldcssp->memseg_cache, memseg); in ldc_mem_unbind_handle()
811 mhdl->memseg = NULL; in ldc_mem_unbind_handle()
845 minfo->vaddr = mhdl->memseg->vaddr; in ldc_mem_info()
846 minfo->raddr = mhdl->memseg->raddr; in ldc_mem_info()
1264 ldc_memseg_t *memseg; in i_ldc_mem_map() local
1281 mhdl->memseg != NULL) { in i_ldc_mem_map()
1325 memseg = mhdl->memseg = in i_ldc_mem_map()
1329 memseg->pages = kmem_zalloc((sizeof (ldc_page_t) * npages), KM_SLEEP); in i_ldc_mem_map()
1330 memseg->cookies = in i_ldc_mem_map()
1344 memseg->vaddr = vmem_xalloc(heap_arena, map_size, in i_ldc_mem_map()
1346 if (memseg->vaddr == NULL) { in i_ldc_mem_map()
1350 kmem_free(memseg->cookies, in i_ldc_mem_map()
1352 kmem_free(memseg->pages, in i_ldc_mem_map()
1354 kmem_cache_free(ldcssp->memseg_cache, memseg); in i_ldc_mem_map()
1362 hat_unload(kas.a_hat, memseg->vaddr, map_size, in i_ldc_mem_map()
1368 tmpaddr = memseg->vaddr; in i_ldc_mem_map()
1391 &memseg->pages[i].raddr, &map_perm); in i_ldc_mem_map()
1398 if (rv || memseg->pages[i].raddr == 0) { in i_ldc_mem_map()
1404 hat_unload(kas.a_hat, memseg->vaddr, map_size, in i_ldc_mem_map()
1408 memseg->pages[j].raddr); in i_ldc_mem_map()
1414 memseg->pages[j].raddr); in i_ldc_mem_map()
1419 vmem_free(heap_arena, (void *)memseg->vaddr, in i_ldc_mem_map()
1431 ldcp->id, tmpaddr, memseg->pages[i].raddr, in i_ldc_mem_map()
1441 (pfn_t)(memseg->pages[i].raddr >> pg_shift), in i_ldc_mem_map()
1447 memseg->pages[i].raddr, ldc_tte); in i_ldc_mem_map()
1461 memseg->vaddr = kmem_zalloc(exp_size, KM_SLEEP); in i_ldc_mem_map()
1465 "shadow page va=0x%llx\n", ldcp->id, memseg->vaddr); in i_ldc_mem_map()
1471 memseg->vaddr = *vaddr; in i_ldc_mem_map()
1475 for (i = 0, tmpaddr = memseg->vaddr; i < npages; i++) { in i_ldc_mem_map()
1476 memseg->pages[i].raddr = va_to_pa(tmpaddr); in i_ldc_mem_map()
1483 bcopy(cookie, memseg->cookies, ccount * sizeof (ldc_mem_cookie_t)); in i_ldc_mem_map()
1486 memseg->raddr = memseg->pages[0].raddr; in i_ldc_mem_map()
1487 memseg->size = (mtype == LDC_SHADOW_MAP) ? exp_size : map_size; in i_ldc_mem_map()
1488 memseg->npages = npages; in i_ldc_mem_map()
1489 memseg->ncookies = ccount; in i_ldc_mem_map()
1490 memseg->next_cookie = 0; in i_ldc_mem_map()
1499 ldcp->id, mhdl, memseg->raddr, memseg->vaddr, in i_ldc_mem_map()
1500 memseg->npages, memseg->ncookies); in i_ldc_mem_map()
1505 *raddr = (caddr_t)(memseg->raddr | base_off); in i_ldc_mem_map()
1507 *vaddr = (caddr_t)((uintptr_t)memseg->vaddr | base_off); in i_ldc_mem_map()
1523 ldc_memseg_t *memseg; in ldc_mem_unmap() local
1535 memseg = mhdl->memseg; in ldc_mem_unmap()
1542 kmem_free(memseg->vaddr, memseg->size); in ldc_mem_unmap()
1546 hat_unload(kas.a_hat, memseg->vaddr, memseg->size, in ldc_mem_unmap()
1549 for (i = 0; i < memseg->npages; i++) { in ldc_mem_unmap()
1550 rv = hv_ldc_unmap(memseg->pages[i].raddr); in ldc_mem_unmap()
1558 vmem_free(heap_arena, (void *)memseg->vaddr, memseg->size); in ldc_mem_unmap()
1562 kmem_free(memseg->pages, (sizeof (ldc_page_t) * memseg->npages)); in ldc_mem_unmap()
1563 kmem_free(memseg->cookies, in ldc_mem_unmap()
1564 (sizeof (ldc_mem_cookie_t) * memseg->ncookies)); in ldc_mem_unmap()
1565 kmem_cache_free(ldcssp->memseg_cache, memseg); in ldc_mem_unmap()
1568 mhdl->memseg = NULL; in ldc_mem_unmap()
1592 ldc_memseg_t *memseg; in i_ldc_mem_acquire_release() local
1625 if (offset >= mhdl->memseg->size || in i_ldc_mem_acquire_release()
1626 (offset + size) > mhdl->memseg->size) { in i_ldc_mem_acquire_release()
1635 memseg = mhdl->memseg; in i_ldc_mem_acquire_release()
1639 local_vaddr = memseg->vaddr + offset; in i_ldc_mem_acquire_release()
1644 ©_size, memseg->cookies, memseg->ncookies, in i_ldc_mem_acquire_release()
2053 ldc_memseg_t *memseg; in i_ldc_mem_inject_dring_clear() local
2072 if ((memseg = mhdl->memseg) == NULL) in i_ldc_mem_inject_dring_clear()
2076 for (i = 0; i < memseg->npages; i++) { in i_ldc_mem_inject_dring_clear()
2079 memseg->pages[i].mte->entry.ll = 0; in i_ldc_mem_inject_dring_clear()
2083 cookie_addr = IDX2COOKIE(memseg->pages[i].index, in i_ldc_mem_inject_dring_clear()
2089 memseg->pages[i].mte->cookie); in i_ldc_mem_inject_dring_clear()
2105 memseg->pages[i].mte->cookie, rv); in i_ldc_mem_inject_dring_clear()