Lines Matching refs:mempool
2025 dma_object = ring->mempool->memblocks_dma_arr; in __vxge_hw_ring_first_block_address_get()
2480 static void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool) in __vxge_hw_mempool_destroy() argument
2483 struct __vxge_hw_device *devh = mempool->devh; in __vxge_hw_mempool_destroy()
2485 for (i = 0; i < mempool->memblocks_allocated; i++) { in __vxge_hw_mempool_destroy()
2488 vxge_assert(mempool->memblocks_arr[i]); in __vxge_hw_mempool_destroy()
2489 vxge_assert(mempool->memblocks_dma_arr + i); in __vxge_hw_mempool_destroy()
2491 dma_object = mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_destroy()
2493 for (j = 0; j < mempool->items_per_memblock; j++) { in __vxge_hw_mempool_destroy()
2494 u32 index = i * mempool->items_per_memblock + j; in __vxge_hw_mempool_destroy()
2497 if (index >= mempool->items_current) in __vxge_hw_mempool_destroy()
2501 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_destroy()
2503 __vxge_hw_blockpool_free(devh, mempool->memblocks_arr[i], in __vxge_hw_mempool_destroy()
2504 mempool->memblock_size, dma_object); in __vxge_hw_mempool_destroy()
2507 vfree(mempool->items_arr); in __vxge_hw_mempool_destroy()
2508 vfree(mempool->memblocks_dma_arr); in __vxge_hw_mempool_destroy()
2509 vfree(mempool->memblocks_priv_arr); in __vxge_hw_mempool_destroy()
2510 vfree(mempool->memblocks_arr); in __vxge_hw_mempool_destroy()
2511 vfree(mempool); in __vxge_hw_mempool_destroy()
2519 __vxge_hw_mempool_grow(struct vxge_hw_mempool *mempool, u32 num_allocate, in __vxge_hw_mempool_grow() argument
2522 u32 i, first_time = mempool->memblocks_allocated == 0 ? 1 : 0; in __vxge_hw_mempool_grow()
2523 u32 n_items = mempool->items_per_memblock; in __vxge_hw_mempool_grow()
2524 u32 start_block_idx = mempool->memblocks_allocated; in __vxge_hw_mempool_grow()
2525 u32 end_block_idx = mempool->memblocks_allocated + num_allocate; in __vxge_hw_mempool_grow()
2530 if (end_block_idx > mempool->memblocks_max) { in __vxge_hw_mempool_grow()
2539 mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_grow()
2547 mempool->memblocks_priv_arr[i] = in __vxge_hw_mempool_grow()
2548 vzalloc(array_size(mempool->items_priv_size, n_items)); in __vxge_hw_mempool_grow()
2549 if (mempool->memblocks_priv_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2555 mempool->memblocks_arr[i] = in __vxge_hw_mempool_grow()
2556 __vxge_hw_blockpool_malloc(mempool->devh, in __vxge_hw_mempool_grow()
2557 mempool->memblock_size, dma_object); in __vxge_hw_mempool_grow()
2558 if (mempool->memblocks_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2559 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_grow()
2565 mempool->memblocks_allocated++; in __vxge_hw_mempool_grow()
2567 memset(mempool->memblocks_arr[i], 0, mempool->memblock_size); in __vxge_hw_mempool_grow()
2569 the_memblock = mempool->memblocks_arr[i]; in __vxge_hw_mempool_grow()
2575 if (first_time && index >= mempool->items_initial) in __vxge_hw_mempool_grow()
2578 mempool->items_arr[index] = in __vxge_hw_mempool_grow()
2579 ((char *)the_memblock + j*mempool->item_size); in __vxge_hw_mempool_grow()
2582 if (mempool->item_func_alloc != NULL) in __vxge_hw_mempool_grow()
2583 mempool->item_func_alloc(mempool, i, in __vxge_hw_mempool_grow()
2586 mempool->items_current = index + 1; in __vxge_hw_mempool_grow()
2589 if (first_time && mempool->items_current == in __vxge_hw_mempool_grow()
2590 mempool->items_initial) in __vxge_hw_mempool_grow()
2616 struct vxge_hw_mempool *mempool = NULL; in __vxge_hw_mempool_create() local
2624 mempool = vzalloc(sizeof(struct vxge_hw_mempool)); in __vxge_hw_mempool_create()
2625 if (mempool == NULL) { in __vxge_hw_mempool_create()
2630 mempool->devh = devh; in __vxge_hw_mempool_create()
2631 mempool->memblock_size = memblock_size; in __vxge_hw_mempool_create()
2632 mempool->items_max = items_max; in __vxge_hw_mempool_create()
2633 mempool->items_initial = items_initial; in __vxge_hw_mempool_create()
2634 mempool->item_size = item_size; in __vxge_hw_mempool_create()
2635 mempool->items_priv_size = items_priv_size; in __vxge_hw_mempool_create()
2636 mempool->item_func_alloc = mp_callback->item_func_alloc; in __vxge_hw_mempool_create()
2637 mempool->userdata = userdata; in __vxge_hw_mempool_create()
2639 mempool->memblocks_allocated = 0; in __vxge_hw_mempool_create()
2641 mempool->items_per_memblock = memblock_size / item_size; in __vxge_hw_mempool_create()
2643 mempool->memblocks_max = (items_max + mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2644 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2647 mempool->memblocks_arr = in __vxge_hw_mempool_create()
2648 vzalloc(array_size(sizeof(void *), mempool->memblocks_max)); in __vxge_hw_mempool_create()
2649 if (mempool->memblocks_arr == NULL) { in __vxge_hw_mempool_create()
2650 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2652 mempool = NULL; in __vxge_hw_mempool_create()
2657 mempool->memblocks_priv_arr = in __vxge_hw_mempool_create()
2658 vzalloc(array_size(sizeof(void *), mempool->memblocks_max)); in __vxge_hw_mempool_create()
2659 if (mempool->memblocks_priv_arr == NULL) { in __vxge_hw_mempool_create()
2660 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2662 mempool = NULL; in __vxge_hw_mempool_create()
2667 mempool->memblocks_dma_arr = in __vxge_hw_mempool_create()
2669 mempool->memblocks_max)); in __vxge_hw_mempool_create()
2670 if (mempool->memblocks_dma_arr == NULL) { in __vxge_hw_mempool_create()
2671 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2673 mempool = NULL; in __vxge_hw_mempool_create()
2678 mempool->items_arr = vzalloc(array_size(sizeof(void *), in __vxge_hw_mempool_create()
2679 mempool->items_max)); in __vxge_hw_mempool_create()
2680 if (mempool->items_arr == NULL) { in __vxge_hw_mempool_create()
2681 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2683 mempool = NULL; in __vxge_hw_mempool_create()
2688 memblocks_to_allocate = (mempool->items_initial + in __vxge_hw_mempool_create()
2689 mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2690 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2693 status = __vxge_hw_mempool_grow(mempool, memblocks_to_allocate, in __vxge_hw_mempool_create()
2696 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2698 mempool = NULL; in __vxge_hw_mempool_create()
2703 return mempool; in __vxge_hw_mempool_create()
2773 if (ring->mempool) in __vxge_hw_ring_delete()
2774 __vxge_hw_mempool_destroy(ring->mempool); in __vxge_hw_ring_delete()
2853 ring->mempool = __vxge_hw_mempool_create(hldev, in __vxge_hw_ring_create()
2861 if (ring->mempool == NULL) { in __vxge_hw_ring_create()
3377 if (fifo->mempool) in __vxge_hw_fifo_delete()
3378 __vxge_hw_mempool_destroy(fifo->mempool); in __vxge_hw_fifo_delete()
3526 fifo->mempool = in __vxge_hw_fifo_create()
3536 if (fifo->mempool == NULL) { in __vxge_hw_fifo_create()