[dpdk-dev] [PATCH v2] net/qede: fix alloc from socket 0

Patil, Harish Harish.Patil at cavium.com
Mon Feb 26 19:38:42 CET 2018


-----Original Message-----
From: Pascal Mazon <pascal.mazon at 6wind.com>
Date: Monday, February 26, 2018 at 12:01 AM
To: "dev at dpdk.org" <dev at dpdk.org>, "Mody, Rasesh"
<Rasesh.Mody at cavium.com>, Harish Patil <Harish.Patil at cavium.com>, "Shaikh,
Shahed" <Shahed.Shaikh at cavium.com>
Cc: "pascal.mazon at 6wind.com" <pascal.mazon at 6wind.com>, "stable at dpdk.org"
<stable at dpdk.org>
Subject: [PATCH v2] net/qede: fix alloc from socket 0

>In case osal_dma_alloc_coherent() or osal_dma_alloc_coherent_aligned() are
>called from a management thread, core_id turn out to be LCORE_ID_ANY, and
>the resulting socket for alloc will be socket 0.
>
>This is not desirable when using a NIC from socket 1 which might very
>likely be configured to use memory from that socket only.
>In that case, allocation will fail.
>
>To address this, use master lcore instead when called from mgmt thread.
>The associated socket should have memory available.
>
>Fixes: ec94dbc57362 ("qede: add base driver")
>Cc: stable at dpdk.org
>
>Signed-off-by: Pascal Mazon <pascal.mazon at 6wind.com>
>Acked-by: Harish Patil <harish.patil at cavium.com>
>---
>
>v2:
>  - Add similar change in osal_dma_alloc_coherent_aligned()
>
> drivers/net/qede/base/bcm_osal.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/qede/base/bcm_osal.c
>b/drivers/net/qede/base/bcm_osal.c
>index fe42f3256400..91017b89aa26 100644
>--- a/drivers/net/qede/base/bcm_osal.c
>+++ b/drivers/net/qede/base/bcm_osal.c
>@@ -133,7 +133,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
> 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
> 					(unsigned long)rte_get_timer_cycles());
> 	if (core_id == (unsigned int)LCORE_ID_ANY)
>-		core_id = 0;
>+		core_id = rte_get_master_lcore();
> 	socket_id = rte_lcore_to_socket_id(core_id);
> 	mz = rte_memzone_reserve_aligned(mz_name, size,
> 					 socket_id, 0, RTE_CACHE_LINE_SIZE);
>@@ -172,7 +172,7 @@ void *osal_dma_alloc_coherent_aligned(struct
>ecore_dev *p_dev,
> 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
> 					(unsigned long)rte_get_timer_cycles());
> 	if (core_id == (unsigned int)LCORE_ID_ANY)
>-		core_id = 0;
>+		core_id = rte_get_master_lcore();
> 	socket_id = rte_lcore_to_socket_id(core_id);
> 	mz = rte_memzone_reserve_aligned(mz_name, size, socket_id, 0, align);
> 	if (!mz) {
>-- 
>2.16.1.72.g5be1f00a9
>
Acked-by: Harish Patil <harish.patil at cavium.com>

>



More information about the dev mailing list