Lines Matching refs:mempool
2022 dma_object = ring->mempool->memblocks_dma_arr; in __vxge_hw_ring_first_block_address_get()
2486 static void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool) in __vxge_hw_mempool_destroy() argument
2489 struct __vxge_hw_device *devh = mempool->devh; in __vxge_hw_mempool_destroy()
2491 for (i = 0; i < mempool->memblocks_allocated; i++) { in __vxge_hw_mempool_destroy()
2494 vxge_assert(mempool->memblocks_arr[i]); in __vxge_hw_mempool_destroy()
2495 vxge_assert(mempool->memblocks_dma_arr + i); in __vxge_hw_mempool_destroy()
2497 dma_object = mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_destroy()
2499 for (j = 0; j < mempool->items_per_memblock; j++) { in __vxge_hw_mempool_destroy()
2500 u32 index = i * mempool->items_per_memblock + j; in __vxge_hw_mempool_destroy()
2503 if (index >= mempool->items_current) in __vxge_hw_mempool_destroy()
2507 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_destroy()
2509 __vxge_hw_blockpool_free(devh, mempool->memblocks_arr[i], in __vxge_hw_mempool_destroy()
2510 mempool->memblock_size, dma_object); in __vxge_hw_mempool_destroy()
2513 vfree(mempool->items_arr); in __vxge_hw_mempool_destroy()
2514 vfree(mempool->memblocks_dma_arr); in __vxge_hw_mempool_destroy()
2515 vfree(mempool->memblocks_priv_arr); in __vxge_hw_mempool_destroy()
2516 vfree(mempool->memblocks_arr); in __vxge_hw_mempool_destroy()
2517 vfree(mempool); in __vxge_hw_mempool_destroy()
2525 __vxge_hw_mempool_grow(struct vxge_hw_mempool *mempool, u32 num_allocate, in __vxge_hw_mempool_grow() argument
2528 u32 i, first_time = mempool->memblocks_allocated == 0 ? 1 : 0; in __vxge_hw_mempool_grow()
2529 u32 n_items = mempool->items_per_memblock; in __vxge_hw_mempool_grow()
2530 u32 start_block_idx = mempool->memblocks_allocated; in __vxge_hw_mempool_grow()
2531 u32 end_block_idx = mempool->memblocks_allocated + num_allocate; in __vxge_hw_mempool_grow()
2536 if (end_block_idx > mempool->memblocks_max) { in __vxge_hw_mempool_grow()
2545 mempool->memblocks_dma_arr + i; in __vxge_hw_mempool_grow()
2553 mempool->memblocks_priv_arr[i] = in __vxge_hw_mempool_grow()
2554 vzalloc(array_size(mempool->items_priv_size, n_items)); in __vxge_hw_mempool_grow()
2555 if (mempool->memblocks_priv_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2561 mempool->memblocks_arr[i] = in __vxge_hw_mempool_grow()
2562 __vxge_hw_blockpool_malloc(mempool->devh, in __vxge_hw_mempool_grow()
2563 mempool->memblock_size, dma_object); in __vxge_hw_mempool_grow()
2564 if (mempool->memblocks_arr[i] == NULL) { in __vxge_hw_mempool_grow()
2565 vfree(mempool->memblocks_priv_arr[i]); in __vxge_hw_mempool_grow()
2571 mempool->memblocks_allocated++; in __vxge_hw_mempool_grow()
2573 memset(mempool->memblocks_arr[i], 0, mempool->memblock_size); in __vxge_hw_mempool_grow()
2575 the_memblock = mempool->memblocks_arr[i]; in __vxge_hw_mempool_grow()
2581 if (first_time && index >= mempool->items_initial) in __vxge_hw_mempool_grow()
2584 mempool->items_arr[index] = in __vxge_hw_mempool_grow()
2585 ((char *)the_memblock + j*mempool->item_size); in __vxge_hw_mempool_grow()
2588 if (mempool->item_func_alloc != NULL) in __vxge_hw_mempool_grow()
2589 mempool->item_func_alloc(mempool, i, in __vxge_hw_mempool_grow()
2592 mempool->items_current = index + 1; in __vxge_hw_mempool_grow()
2595 if (first_time && mempool->items_current == in __vxge_hw_mempool_grow()
2596 mempool->items_initial) in __vxge_hw_mempool_grow()
2622 struct vxge_hw_mempool *mempool = NULL; in __vxge_hw_mempool_create() local
2630 mempool = vzalloc(sizeof(struct vxge_hw_mempool)); in __vxge_hw_mempool_create()
2631 if (mempool == NULL) { in __vxge_hw_mempool_create()
2636 mempool->devh = devh; in __vxge_hw_mempool_create()
2637 mempool->memblock_size = memblock_size; in __vxge_hw_mempool_create()
2638 mempool->items_max = items_max; in __vxge_hw_mempool_create()
2639 mempool->items_initial = items_initial; in __vxge_hw_mempool_create()
2640 mempool->item_size = item_size; in __vxge_hw_mempool_create()
2641 mempool->items_priv_size = items_priv_size; in __vxge_hw_mempool_create()
2642 mempool->item_func_alloc = mp_callback->item_func_alloc; in __vxge_hw_mempool_create()
2643 mempool->userdata = userdata; in __vxge_hw_mempool_create()
2645 mempool->memblocks_allocated = 0; in __vxge_hw_mempool_create()
2647 mempool->items_per_memblock = memblock_size / item_size; in __vxge_hw_mempool_create()
2649 mempool->memblocks_max = (items_max + mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2650 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2653 mempool->memblocks_arr = in __vxge_hw_mempool_create()
2654 vzalloc(array_size(sizeof(void *), mempool->memblocks_max)); in __vxge_hw_mempool_create()
2655 if (mempool->memblocks_arr == NULL) { in __vxge_hw_mempool_create()
2656 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2658 mempool = NULL; in __vxge_hw_mempool_create()
2663 mempool->memblocks_priv_arr = in __vxge_hw_mempool_create()
2664 vzalloc(array_size(sizeof(void *), mempool->memblocks_max)); in __vxge_hw_mempool_create()
2665 if (mempool->memblocks_priv_arr == NULL) { in __vxge_hw_mempool_create()
2666 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2668 mempool = NULL; in __vxge_hw_mempool_create()
2673 mempool->memblocks_dma_arr = in __vxge_hw_mempool_create()
2675 mempool->memblocks_max)); in __vxge_hw_mempool_create()
2676 if (mempool->memblocks_dma_arr == NULL) { in __vxge_hw_mempool_create()
2677 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2679 mempool = NULL; in __vxge_hw_mempool_create()
2684 mempool->items_arr = vzalloc(array_size(sizeof(void *), in __vxge_hw_mempool_create()
2685 mempool->items_max)); in __vxge_hw_mempool_create()
2686 if (mempool->items_arr == NULL) { in __vxge_hw_mempool_create()
2687 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2689 mempool = NULL; in __vxge_hw_mempool_create()
2694 memblocks_to_allocate = (mempool->items_initial + in __vxge_hw_mempool_create()
2695 mempool->items_per_memblock - 1) / in __vxge_hw_mempool_create()
2696 mempool->items_per_memblock; in __vxge_hw_mempool_create()
2699 status = __vxge_hw_mempool_grow(mempool, memblocks_to_allocate, in __vxge_hw_mempool_create()
2702 __vxge_hw_mempool_destroy(mempool); in __vxge_hw_mempool_create()
2704 mempool = NULL; in __vxge_hw_mempool_create()
2709 return mempool; in __vxge_hw_mempool_create()
2779 if (ring->mempool) in __vxge_hw_ring_delete()
2780 __vxge_hw_mempool_destroy(ring->mempool); in __vxge_hw_ring_delete()
2859 ring->mempool = __vxge_hw_mempool_create(hldev, in __vxge_hw_ring_create()
2867 if (ring->mempool == NULL) { in __vxge_hw_ring_create()
3383 if (fifo->mempool) in __vxge_hw_fifo_delete()
3384 __vxge_hw_mempool_destroy(fifo->mempool); in __vxge_hw_fifo_delete()
3532 fifo->mempool = in __vxge_hw_fifo_create()
3542 if (fifo->mempool == NULL) { in __vxge_hw_fifo_create()