From: Hernan Vargas <hernan.vargas@intel.com>
To: dev@dpdk.org, gakhil@marvell.com, trix@redhat.com,
maxime.coquelin@redhat.com
Cc: nicolas.chautru@intel.com, qi.z.zhang@intel.com,
Hernan Vargas <hernan.vargas@intel.com>,
stable@dpdk.org
Subject: [PATCH v4 08/30] baseband/acc100: allocate ring/queue mem when NULL
Date: Tue, 18 Oct 2022 17:38:56 -0700 [thread overview]
Message-ID: <20221019003918.257506-9-hernan.vargas@intel.com> (raw)
In-Reply-To: <20221019003918.257506-1-hernan.vargas@intel.com>
Allocate info ring, tail pointers and HARQ layout memory for a device
only if it hasn't already been allocated.
Fixes: 06531464151 ("baseband/acc100: support interrupt")
Cc: stable@dpdk.org
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 30 ++++++++++++++++++---------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index 1c83d591e3..00d02ce90d 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -408,9 +408,9 @@ allocate_info_ring(struct rte_bbdev *dev)
reg_addr = &vf_reg_addr;
/* Allocate InfoRing */
d->info_ring = rte_zmalloc_socket("Info Ring",
- ACC_INFO_RING_NUM_ENTRIES *
- sizeof(*d->info_ring), RTE_CACHE_LINE_SIZE,
- dev->data->socket_id);
+ ACC_INFO_RING_NUM_ENTRIES *
+ sizeof(*d->info_ring), RTE_CACHE_LINE_SIZE,
+ dev->data->socket_id);
if (d->info_ring == NULL) {
rte_bbdev_log(ERR,
"Failed to allocate Info Ring for %s:%u",
@@ -499,7 +499,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
acc_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);
@@ -507,8 +508,8 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
rte_bbdev_log(ERR, "Failed to allocate tail ptr for %s:%u",
dev->device->driver->name,
dev->data->dev_id);
- rte_free(d->sw_rings);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto free_sw_rings;
}
d->tail_ptr_iova = rte_malloc_virt2iova(d->tail_ptrs);
@@ -531,15 +532,16 @@ 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",
ACC_HARQ_LAYOUT * sizeof(*d->harq_layout),
RTE_CACHE_LINE_SIZE, dev->data->socket_id);
if (d->harq_layout == NULL) {
rte_bbdev_log(ERR, "Failed to allocate harq_layout for %s:%u",
dev->device->driver->name,
dev->data->dev_id);
- rte_free(d->sw_rings);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto free_tail_ptrs;
}
/* Mark as configured properly */
@@ -548,8 +550,16 @@ acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int socket_id)
rte_bbdev_log_debug(
"ACC100 (%s) configured sw_rings = %p, sw_rings_iova = %#"
PRIx64, dev->data->name, d->sw_rings, d->sw_rings_iova);
-
return 0;
+
+free_tail_ptrs:
+ rte_free(d->tail_ptrs);
+ d->tail_ptrs = NULL;
+free_sw_rings:
+ rte_free(d->sw_rings_base);
+ d->sw_rings = NULL;
+
+ return ret;
}
static int
--
2.37.1
next prev parent reply other threads:[~2022-10-18 16:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-19 0:38 [PATCH v4 00/30] baseband/acc100: changes for 22.11 Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 01/30] baseband/acc100: fix ring availability calculation Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 02/30] baseband/acc100: add function to check AQ availability Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 03/30] baseband/acc100: memory leak fix Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 04/30] baseband/acc100: add LDPC encoder padding function Hernan Vargas
2022-10-20 9:58 ` [EXT] " Akhil Goyal
2022-10-19 0:38 ` [PATCH v4 05/30] baseband/acc100: check turbo dec/enc input Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 06/30] baseband/acc100: check for unlikely operation vals Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 07/30] baseband/acc100: enforce additional check on FCW Hernan Vargas
2022-10-19 0:38 ` Hernan Vargas [this message]
2022-10-19 0:38 ` [PATCH v4 09/30] baseband/acc100: reduce input length for CRC24B Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 10/30] baseband/acc100: fix clearing PF IR outside handler Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 11/30] baseband/acc100: set device min alignment to 1 Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 12/30] baseband/acc100: add protection for NULL HARQ input Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 13/30] baseband/acc100: reset pointer after rte_free Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 14/30] baseband/acc100: fix debug print for LDPC FCW Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 15/30] baseband/acc100: add enqueue status Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 16/30] baseband/acc100: add scatter-gather support Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 17/30] baseband/acc100: add HARQ index helper function Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 18/30] baseband/acc100: enable input validation by default Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 19/30] baseband/acc100: added LDPC transport block support Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 20/30] baseband/acc100: update validate LDPC enc/dec Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 21/30] baseband/acc100: implement configurable queue depth Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 22/30] baseband/acc100: add queue stop operation Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 23/30] baseband/acc100: update uplink CB input length Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 24/30] baseband/acc100: update log messages Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 25/30] baseband/acc100: store FCW from first CB descriptor Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 26/30] baseband/acc100: update device info Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 27/30] baseband/acc100: add ring companion address Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 28/30] baseband/acc100: add workaround for deRM corner cases Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 29/30] baseband/acc100: configure PMON control registers Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 30/30] baseband/acc100: update guide docs Hernan Vargas
2022-10-20 9:59 ` [EXT] " Akhil Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221019003918.257506-9-hernan.vargas@intel.com \
--to=hernan.vargas@intel.com \
--cc=dev@dpdk.org \
--cc=gakhil@marvell.com \
--cc=maxime.coquelin@redhat.com \
--cc=nicolas.chautru@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=stable@dpdk.org \
--cc=trix@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).