Lines Matching refs:mtbl
350 ldc_mtbl_t *mtbl; in i_ldc_mem_bind_handle() local
397 if ((mtbl = ldcp->mtbl) == NULL) { in i_ldc_mem_bind_handle()
400 mtbl = kmem_zalloc(sizeof (ldc_mtbl_t), KM_SLEEP); in i_ldc_mem_bind_handle()
401 mtbl->num_entries = mtbl->num_avail = ldc_maptable_entries; in i_ldc_mem_bind_handle()
402 mtbl->size = ldc_maptable_entries * sizeof (ldc_mte_slot_t); in i_ldc_mem_bind_handle()
403 mtbl->next_entry = NULL; in i_ldc_mem_bind_handle()
404 mtbl->contigmem = B_TRUE; in i_ldc_mem_bind_handle()
407 mtbl->table = (ldc_mte_slot_t *) in i_ldc_mem_bind_handle()
408 contig_mem_alloc_align(mtbl->size, MMU_PAGESIZE); in i_ldc_mem_bind_handle()
409 if (mtbl->table == NULL) { in i_ldc_mem_bind_handle()
412 mtbl->table = kmem_alloc(MMU_PAGESIZE, KM_SLEEP); in i_ldc_mem_bind_handle()
413 mtbl->size = MMU_PAGESIZE; in i_ldc_mem_bind_handle()
414 mtbl->contigmem = B_FALSE; in i_ldc_mem_bind_handle()
415 mtbl->num_entries = mtbl->num_avail = in i_ldc_mem_bind_handle()
416 mtbl->size / sizeof (ldc_mte_slot_t); in i_ldc_mem_bind_handle()
419 "to %lx entries\n", ldcp->id, mtbl->num_entries); in i_ldc_mem_bind_handle()
423 bzero(mtbl->table, mtbl->size); in i_ldc_mem_bind_handle()
426 mutex_init(&mtbl->lock, NULL, MUTEX_DRIVER, NULL); in i_ldc_mem_bind_handle()
430 va_to_pa(mtbl->table), mtbl->num_entries); in i_ldc_mem_bind_handle()
435 if (mtbl->contigmem) in i_ldc_mem_bind_handle()
436 contig_mem_free(mtbl->table, mtbl->size); in i_ldc_mem_bind_handle()
438 kmem_free(mtbl->table, mtbl->size); in i_ldc_mem_bind_handle()
439 mutex_destroy(&mtbl->lock); in i_ldc_mem_bind_handle()
440 kmem_free(mtbl, sizeof (ldc_mtbl_t)); in i_ldc_mem_bind_handle()
446 ldcp->mtbl = mtbl; in i_ldc_mem_bind_handle()
450 ldcp->id, ldcp->mtbl->table); in i_ldc_mem_bind_handle()
477 mutex_enter(&mtbl->lock); in i_ldc_mem_bind_handle()
479 if (npages > mtbl->num_avail) { in i_ldc_mem_bind_handle()
482 mutex_exit(&mtbl->lock); in i_ldc_mem_bind_handle()
518 index = mtbl->next_entry; in i_ldc_mem_bind_handle()
547 while (mtbl->table[index].entry.ll != 0) { in i_ldc_mem_bind_handle()
549 index = (index + 1) % mtbl->num_entries; in i_ldc_mem_bind_handle()
551 if (index == mtbl->next_entry) { in i_ldc_mem_bind_handle()
561 mutex_exit(&mtbl->lock); in i_ldc_mem_bind_handle()
577 mtbl->table[index].entry = tmp_mte; in i_ldc_mem_bind_handle()
605 memseg->pages[i].mte = &(mtbl->table[index]); in i_ldc_mem_bind_handle()
625 mtbl->num_avail--; in i_ldc_mem_bind_handle()
632 index = (index + 1) % mtbl->num_entries; in i_ldc_mem_bind_handle()
635 mtbl->next_entry = index; in i_ldc_mem_bind_handle()
638 mutex_exit(&mtbl->lock); in i_ldc_mem_bind_handle()
731 ldc_mtbl_t *mtbl; in ldc_mem_unbind_handle() local
755 mtbl = ldcp->mtbl; in ldc_mem_unbind_handle()
760 mutex_enter(&mtbl->lock); in ldc_mem_unbind_handle()
800 mtbl->num_avail++; in ldc_mem_unbind_handle()
802 mutex_exit(&mtbl->lock); in ldc_mem_unbind_handle()
2052 ldc_mtbl_t *mtbl; in i_ldc_mem_inject_dring_clear() local
2059 if ((mtbl = ldcp->mtbl) == NULL) in i_ldc_mem_inject_dring_clear()
2063 mutex_enter(&mtbl->lock); in i_ldc_mem_inject_dring_clear()
2108 mtbl->num_avail++; in i_ldc_mem_inject_dring_clear()
2113 mutex_exit(&mtbl->lock); in i_ldc_mem_inject_dring_clear()