[dpdk-dev] i40e: fix base driver allocation when on numa != 0

Message ID 1441286610-16935-1-git-send-email-david.marchand@6wind.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

David Marchand Sept. 3, 2015, 1:23 p.m. UTC
  Seen by code review.

If dpdk is run with memory only available on socket 0, then i40e pmd
refuses to initialize ports as this pmd requires some memory on socket 0.
Fix this by setting socket to SOCKET_ID_ANY, so that allocations happen on
the caller socket.

Signed-off-by: David Marchand <david.marchand@6wind.com>
---
 drivers/net/i40e/i40e_ethdev.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

Zhang, Helin Sept. 6, 2015, 1:33 a.m. UTC | #1
> -----Original Message-----
> From: David Marchand [mailto:david.marchand@6wind.com]
> Sent: Thursday, September 3, 2015 9:24 PM
> To: dev@dpdk.org
> Cc: Zhang, Helin
> Subject: [PATCH] i40e: fix base driver allocation when on numa != 0
> 
> Seen by code review.
> 
> If dpdk is run with memory only available on socket 0, then i40e pmd refuses to
> initialize ports as this pmd requires some memory on socket 0.
> Fix this by setting socket to SOCKET_ID_ANY, so that allocations happen on the
> caller socket.
> 
> Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
  
Thomas Monjalon Sept. 9, 2015, 1:22 p.m. UTC | #2
> > Seen by code review.
> > 
> > If dpdk is run with memory only available on socket 0, then i40e pmd refuses to
> > initialize ports as this pmd requires some memory on socket 0.
> > Fix this by setting socket to SOCKET_ID_ANY, so that allocations happen on the
> > caller socket.
> > 
> > Signed-off-by: David Marchand <david.marchand@6wind.com>
> Acked-by: Helin Zhang <helin.zhang@intel.com>

Applied, thanks
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 40b0526..2dd9fdc 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2099,10 +2099,11 @@  i40e_allocate_dma_mem_d(__attribute__((unused)) struct i40e_hw *hw,
 	id++;
 	snprintf(z_name, sizeof(z_name), "i40e_dma_%"PRIu64, id);
 #ifdef RTE_LIBRTE_XEN_DOM0
-	mz = rte_memzone_reserve_bounded(z_name, size, 0, 0, alignment,
-							RTE_PGSIZE_2M);
+	mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY, 0,
+					 alignment, RTE_PGSIZE_2M);
 #else
-	mz = rte_memzone_reserve_aligned(z_name, size, 0, 0, alignment);
+	mz = rte_memzone_reserve_aligned(z_name, size, SOCKET_ID_ANY, 0,
+					 alignment);
 #endif
 	if (!mz)
 		return I40E_ERR_NO_MEMORY;