Lines Matching refs:mempool
2026 dma_object = ring->mempool->memblocks_dma_arr; in __vxge_hw_ring_first_block_address_get()
2500 static void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool) in __vxge_hw_mempool_destroy() argument
2503 struct __vxge_hw_device *devh = mempool->devh; in __vxge_hw_mempool_destroy()
2505 for (i = 0; i < mempool->memblocks_allocated; i++) { in __vxge_hw_mempool_destroy()
2508 vxge_assert(mempool->memblocks_arr[i]); in __vxge_hw_mempool_destroy()
2509 vxge_assert(mempool->memblocks_dma_arr + i); in __vxge_hw_mempool_destroy()
2511 dma_object = mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_destroy()
2513 for (j = 0; j < mempool->items_per_memblock; j++) { in __vxge_hw_mempool_destroy()
2514 u32 index = i * mempool->items_per_memblock + j; in __vxge_hw_mempool_destroy()
2517 if (index >= mempool->items_current) in __vxge_hw_mempool_destroy()
2521 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_destroy()
2523 __vxge_hw_blockpool_free(devh, mempool->memblocks_arr[i], in __vxge_hw_mempool_destroy()
2524 mempool->memblock_size, dma_object); in __vxge_hw_mempool_destroy()
2527 vfree(mempool->items_arr); in __vxge_hw_mempool_destroy()
2528 vfree(mempool->memblocks_dma_arr); in __vxge_hw_mempool_destroy()
2529 vfree(mempool->memblocks_priv_arr); in __vxge_hw_mempool_destroy()
2530 vfree(mempool->memblocks_arr); in __vxge_hw_mempool_destroy()
2531 vfree(mempool); in __vxge_hw_mempool_destroy()
2539 __vxge_hw_mempool_grow(struct vxge_hw_mempool *mempool, u32 num_allocate, in __vxge_hw_mempool_grow() argument
2542 u32 i, first_time = mempool->memblocks_allocated == 0 ? 1 : 0; in __vxge_hw_mempool_grow()
2543 u32 n_items = mempool->items_per_memblock; in __vxge_hw_mempool_grow()
2544 u32 start_block_idx = mempool->memblocks_allocated; in __vxge_hw_mempool_grow()
2545 u32 end_block_idx = mempool->memblocks_allocated + num_allocate; in __vxge_hw_mempool_grow()
2550 if (end_block_idx > mempool->memblocks_max) { in __vxge_hw_mempool_grow()
2559 mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_grow()
2567 mempool->memblocks_priv_arr[i] = in __vxge_hw_mempool_grow()
2568 vzalloc(mempool->items_priv_size * n_items); in __vxge_hw_mempool_grow()
2569 if (mempool->memblocks_priv_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2575 mempool->memblocks_arr[i] = in __vxge_hw_mempool_grow()
2576 __vxge_hw_blockpool_malloc(mempool->devh, in __vxge_hw_mempool_grow()
2577 mempool->memblock_size, dma_object); in __vxge_hw_mempool_grow()
2578 if (mempool->memblocks_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2579 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_grow()
2585 mempool->memblocks_allocated++; in __vxge_hw_mempool_grow()
2587 memset(mempool->memblocks_arr[i], 0, mempool->memblock_size); in __vxge_hw_mempool_grow()
2589 the_memblock = mempool->memblocks_arr[i]; in __vxge_hw_mempool_grow()
2595 if (first_time && index >= mempool->items_initial) in __vxge_hw_mempool_grow()
2598 mempool->items_arr[index] = in __vxge_hw_mempool_grow()
2599 ((char *)the_memblock + j*mempool->item_size); in __vxge_hw_mempool_grow()
2602 if (mempool->item_func_alloc != NULL) in __vxge_hw_mempool_grow()
2603 mempool->item_func_alloc(mempool, i, in __vxge_hw_mempool_grow()
2606 mempool->items_current = index + 1; in __vxge_hw_mempool_grow()
2609 if (first_time && mempool->items_current == in __vxge_hw_mempool_grow()
2610 mempool->items_initial) in __vxge_hw_mempool_grow()
2636 struct vxge_hw_mempool *mempool = NULL; in __vxge_hw_mempool_create() local
2644 mempool = vzalloc(sizeof(struct vxge_hw_mempool)); in __vxge_hw_mempool_create()
2645 if (mempool == NULL) { in __vxge_hw_mempool_create()
2650 mempool->devh = devh; in __vxge_hw_mempool_create()
2651 mempool->memblock_size = memblock_size; in __vxge_hw_mempool_create()
2652 mempool->items_max = items_max; in __vxge_hw_mempool_create()
2653 mempool->items_initial = items_initial; in __vxge_hw_mempool_create()
2654 mempool->item_size = item_size; in __vxge_hw_mempool_create()
2655 mempool->items_priv_size = items_priv_size; in __vxge_hw_mempool_create()
2656 mempool->item_func_alloc = mp_callback->item_func_alloc; in __vxge_hw_mempool_create()
2657 mempool->userdata = userdata; in __vxge_hw_mempool_create()
2659 mempool->memblocks_allocated = 0; in __vxge_hw_mempool_create()
2661 mempool->items_per_memblock = memblock_size / item_size; in __vxge_hw_mempool_create()
2663 mempool->memblocks_max = (items_max + mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2664 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2667 mempool->memblocks_arr = in __vxge_hw_mempool_create()
2668 vzalloc(sizeof(void *) * mempool->memblocks_max); in __vxge_hw_mempool_create()
2669 if (mempool->memblocks_arr == NULL) { in __vxge_hw_mempool_create()
2670 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2672 mempool = NULL; in __vxge_hw_mempool_create()
2677 mempool->memblocks_priv_arr = in __vxge_hw_mempool_create()
2678 vzalloc(sizeof(void *) * mempool->memblocks_max); in __vxge_hw_mempool_create()
2679 if (mempool->memblocks_priv_arr == NULL) { in __vxge_hw_mempool_create()
2680 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2682 mempool = NULL; in __vxge_hw_mempool_create()
2687 mempool->memblocks_dma_arr = in __vxge_hw_mempool_create()
2689 mempool->memblocks_max); in __vxge_hw_mempool_create()
2690 if (mempool->memblocks_dma_arr == NULL) { in __vxge_hw_mempool_create()
2691 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2693 mempool = NULL; in __vxge_hw_mempool_create()
2698 mempool->items_arr = vzalloc(sizeof(void *) * mempool->items_max); in __vxge_hw_mempool_create()
2699 if (mempool->items_arr == NULL) { in __vxge_hw_mempool_create()
2700 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2702 mempool = NULL; in __vxge_hw_mempool_create()
2707 memblocks_to_allocate = (mempool->items_initial + in __vxge_hw_mempool_create()
2708 mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2709 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2712 status = __vxge_hw_mempool_grow(mempool, memblocks_to_allocate, in __vxge_hw_mempool_create()
2715 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2717 mempool = NULL; in __vxge_hw_mempool_create()
2722 return mempool; in __vxge_hw_mempool_create()
2792 if (ring->mempool) in __vxge_hw_ring_delete()
2793 __vxge_hw_mempool_destroy(ring->mempool); in __vxge_hw_ring_delete()
2872 ring->mempool = __vxge_hw_mempool_create(hldev, in __vxge_hw_ring_create()
2880 if (ring->mempool == NULL) { in __vxge_hw_ring_create()
3396 if (fifo->mempool) in __vxge_hw_fifo_delete()
3397 __vxge_hw_mempool_destroy(fifo->mempool); in __vxge_hw_fifo_delete()
3545 fifo->mempool = in __vxge_hw_fifo_create()
3555 if (fifo->mempool == NULL) { in __vxge_hw_fifo_create()