[v2,26/37] baseband/acc100: allocate ring/queue mem when NULL
Checks
Commit Message
Allocate info ring, tail pointers and HARQ layout memory for a device
only if it hasn't already been allocated.
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc100/rte_acc100_pmd.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
Comments
On 8/20/22 04:31, Hernan Vargas wrote:
> Allocate info ring, tail pointers and HARQ layout memory for a device
> only if it hasn't already been allocated.
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc100/rte_acc100_pmd.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/baseband/acc100/rte_acc100_pmd.c b/drivers/baseband/acc100/rte_acc100_pmd.c
> index 8898147239..36455d5338 100644
> --- a/drivers/baseband/acc100/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc100/rte_acc100_pmd.c
> @@ -582,7 +582,8 @@ allocate_info_ring(struct rte_bbdev *dev)
> else
> reg_addr = &vf_reg_addr;
> /* Allocate InfoRing */
> - d->info_ring = rte_zmalloc_socket("Info Ring",
> + if (d->info_ring == NULL)
> + d->info_ring = rte_zmalloc_socket("Info Ring",
> ACC100_INFO_RING_NUM_ENTRIES *
> sizeof(*d->info_ring), RTE_CACHE_LINE_SIZE,
> dev->data->socket_id);
> @@ -679,7 +680,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
> acc100_reg_write(d, reg_addr->ring_size, value);
>
> /* Configure tail pointer for use when SDONE enabled */
> - d->tail_ptrs = rte_zmalloc_socket(
> + if (d->tail_ptrs == NULL)
> + d->tail_ptrs = rte_zmalloc_socket(
> dev->device->driver->name,
> ACC100_NUM_QGRPS * ACC100_NUM_AQS * sizeof(uint32_t),
> RTE_CACHE_LINE_SIZE, socket_id);
> @@ -711,7 +713,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
> /* Continue */
> }
>
> - d->harq_layout = rte_zmalloc_socket("HARQ Layout",
> + if (d->harq_layout == NULL)
> + d->harq_layout = rte_zmalloc_socket("HARQ Layout",
> ACC100_HARQ_LAYOUT * sizeof(*d->harq_layout),
> RTE_CACHE_LINE_SIZE, dev->data->socket_id);
> if (d->harq_layout == NULL) {
It looks like a fix (memory leak without this patch).
Please mark it as so.
@@ -582,7 +582,8 @@ allocate_info_ring(struct rte_bbdev *dev)
else
reg_addr = &vf_reg_addr;
/* Allocate InfoRing */
- d->info_ring = rte_zmalloc_socket("Info Ring",
+ if (d->info_ring == NULL)
+ d->info_ring = rte_zmalloc_socket("Info Ring",
ACC100_INFO_RING_NUM_ENTRIES *
sizeof(*d->info_ring), RTE_CACHE_LINE_SIZE,
dev->data->socket_id);
@@ -679,7 +680,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
acc100_reg_write(d, reg_addr->ring_size, value);
/* Configure tail pointer for use when SDONE enabled */
- d->tail_ptrs = rte_zmalloc_socket(
+ if (d->tail_ptrs == NULL)
+ d->tail_ptrs = rte_zmalloc_socket(
dev->device->driver->name,
ACC100_NUM_QGRPS * ACC100_NUM_AQS * sizeof(uint32_t),
RTE_CACHE_LINE_SIZE, socket_id);
@@ -711,7 +713,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
/* Continue */
}
- d->harq_layout = rte_zmalloc_socket("HARQ Layout",
+ if (d->harq_layout == NULL)
+ d->harq_layout = rte_zmalloc_socket("HARQ Layout",
ACC100_HARQ_LAYOUT * sizeof(*d->harq_layout),
RTE_CACHE_LINE_SIZE, dev->data->socket_id);
if (d->harq_layout == NULL) {