-----Original Message----- From: Pascal Mazon <pascal.ma...@6wind.com> Date: Monday, February 26, 2018 at 12:01 AM To: "dev@dpdk.org" <dev@dpdk.org>, "Mody, Rasesh" <rasesh.m...@cavium.com>, Harish Patil <harish.pa...@cavium.com>, "Shaikh, Shahed" <shahed.sha...@cavium.com> Cc: "pascal.ma...@6wind.com" <pascal.ma...@6wind.com>, "sta...@dpdk.org" <sta...@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: sta...@dpdk.org > >Signed-off-by: Pascal Mazon <pascal.ma...@6wind.com> >Acked-by: Harish Patil <harish.pa...@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.pa...@cavium.com> >