Lines Matching refs:nslabs

233 	if (!mem->nslabs) {  in swiotlb_print_info()
239 (mem->nslabs << IO_TLB_SHIFT) >> 20); in swiotlb_print_info()
263 if (!mem->nslabs || mem->late_alloc) in swiotlb_update_mem_attributes()
265 bytes = PAGE_ALIGN(mem->nslabs << IO_TLB_SHIFT); in swiotlb_update_mem_attributes()
270 unsigned long nslabs, bool late_alloc, unsigned int nareas) in swiotlb_init_io_tlb_pool() argument
273 unsigned long bytes = nslabs << IO_TLB_SHIFT, i; in swiotlb_init_io_tlb_pool()
275 mem->nslabs = nslabs; in swiotlb_init_io_tlb_pool()
280 mem->area_nslabs = nslabs / mem->nareas; in swiotlb_init_io_tlb_pool()
288 for (i = 0; i < mem->nslabs; i++) { in swiotlb_init_io_tlb_pool()
290 mem->nslabs - i); in swiotlb_init_io_tlb_pool()
311 mem->nslabs += pool->nslabs; in add_mem_pool()
314 mem->nslabs = pool->nslabs; in add_mem_pool()
318 static void __init *swiotlb_memblock_alloc(unsigned long nslabs, in swiotlb_memblock_alloc() argument
320 int (*remap)(void *tlb, unsigned long nslabs)) in swiotlb_memblock_alloc()
322 size_t bytes = PAGE_ALIGN(nslabs << IO_TLB_SHIFT); in swiotlb_memblock_alloc()
341 if (remap && remap(tlb, nslabs) < 0) { in swiotlb_memblock_alloc()
355 int (*remap)(void *tlb, unsigned long nslabs)) in swiotlb_init_remap() argument
358 unsigned long nslabs; in swiotlb_init_remap() local
383 nslabs = default_nslabs; in swiotlb_init_remap()
384 nareas = limit_nareas(default_nareas, nslabs); in swiotlb_init_remap()
385 while ((tlb = swiotlb_memblock_alloc(nslabs, flags, remap)) == NULL) { in swiotlb_init_remap()
386 if (nslabs <= IO_TLB_MIN_SLABS) in swiotlb_init_remap()
388 nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE); in swiotlb_init_remap()
389 nareas = limit_nareas(nareas, nslabs); in swiotlb_init_remap()
392 if (default_nslabs != nslabs) { in swiotlb_init_remap()
394 default_nslabs, nslabs); in swiotlb_init_remap()
395 default_nslabs = nslabs; in swiotlb_init_remap()
398 alloc_size = PAGE_ALIGN(array_size(sizeof(*mem->slots), nslabs)); in swiotlb_init_remap()
413 swiotlb_init_io_tlb_pool(mem, __pa(tlb), nslabs, false, nareas); in swiotlb_init_remap()
431 int (*remap)(void *tlb, unsigned long nslabs)) in swiotlb_init_late() argument
434 unsigned long nslabs = ALIGN(size >> IO_TLB_SHIFT, IO_TLB_SEGSIZE); in swiotlb_init_late() local
441 if (io_tlb_default_mem.nslabs) in swiotlb_init_late()
464 order = get_order(nslabs << IO_TLB_SHIFT); in swiotlb_init_late()
465 nslabs = SLABS_PER_PAGE << order; in swiotlb_init_late()
473 nslabs = SLABS_PER_PAGE << order; in swiotlb_init_late()
481 rc = remap(vstart, nslabs); in swiotlb_init_late()
485 nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE); in swiotlb_init_late()
486 if (nslabs < IO_TLB_MIN_SLABS) in swiotlb_init_late()
497 nareas = limit_nareas(default_nareas, nslabs); in swiotlb_init_late()
505 get_order(array_size(sizeof(*mem->slots), nslabs))); in swiotlb_init_late()
510 (nslabs << IO_TLB_SHIFT) >> PAGE_SHIFT); in swiotlb_init_late()
511 swiotlb_init_io_tlb_pool(mem, virt_to_phys(vstart), nslabs, true, in swiotlb_init_late()
535 if (!mem->nslabs) in swiotlb_exit()
541 slots_size = PAGE_ALIGN(array_size(sizeof(*mem->slots), mem->nslabs)); in swiotlb_exit()
684 unsigned long minslabs, unsigned long nslabs, in swiotlb_alloc_pool() argument
693 if (nslabs > SLABS_PER_PAGE << MAX_PAGE_ORDER) { in swiotlb_alloc_pool()
694 nslabs = SLABS_PER_PAGE << MAX_PAGE_ORDER; in swiotlb_alloc_pool()
695 nareas = limit_nareas(nareas, nslabs); in swiotlb_alloc_pool()
704 tlb_size = nslabs << IO_TLB_SHIFT; in swiotlb_alloc_pool()
706 if (nslabs <= minslabs) in swiotlb_alloc_pool()
708 nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE); in swiotlb_alloc_pool()
709 nareas = limit_nareas(nareas, nslabs); in swiotlb_alloc_pool()
710 tlb_size = nslabs << IO_TLB_SHIFT; in swiotlb_alloc_pool()
713 slot_order = get_order(array_size(sizeof(*pool->slots), nslabs)); in swiotlb_alloc_pool()
719 swiotlb_init_io_tlb_pool(pool, page_to_phys(tlb), nslabs, true, nareas); in swiotlb_alloc_pool()
757 size_t slots_size = array_size(sizeof(*pool->slots), pool->nslabs); in swiotlb_dyn_free()
1187 unsigned long nslabs; in swiotlb_find_slots() local
1209 nslabs = nr_slots(alloc_size); in swiotlb_find_slots()
1211 pool = swiotlb_alloc_pool(dev, nslabs, nslabs, 1, phys_limit, in swiotlb_find_slots()
1227 inc_transient_used(mem, pool->nslabs); in swiotlb_find_slots()
1382 if (!mem || !mem->nslabs) { in swiotlb_tbl_map_single()
1408 size, mem->nslabs, mem_used(mem)); in swiotlb_tbl_map_single()
1516 dec_used(dev->dma_io_tlb_mem, pool->nslabs); in swiotlb_del_transient()
1518 dec_transient_used(dev->dma_io_tlb_mem, pool->nslabs); in swiotlb_del_transient()
1626 return io_tlb_default_mem.nslabs; in is_swiotlb_allocated()
1633 return mem && mem->nslabs; in is_swiotlb_active()
1718 if (!mem->nslabs) in swiotlb_create_debugfs_files()
1721 debugfs_create_ulong("io_tlb_nslabs", 0400, mem->debugfs, &mem->nslabs); in swiotlb_create_debugfs_files()
1796 unsigned long nslabs = rmem->size >> IO_TLB_SHIFT; in rmem_swiotlb_device_init() local
1819 pool->slots = kcalloc(nslabs, sizeof(*pool->slots), GFP_KERNEL); in rmem_swiotlb_device_init()
1835 swiotlb_init_io_tlb_pool(pool, rmem->base, nslabs, in rmem_swiotlb_device_init()