Lines Matching defs:memseg

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