From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier MATZ Subject: Re: [PATCH v4 10/17] malloc: fix the issue of SOCKET_ID_ANY Date: Mon, 09 Feb 2015 18:43:28 +0100 Message-ID: <54D8F1C0.9060904@6wind.com> References: <1422491072-5114-1-git-send-email-cunming.liang@intel.com> <1422842559-13617-1-git-send-email-cunming.liang@intel.com> <1422842559-13617-11-git-send-email-cunming.liang@intel.com> <54D7C074.20204@6wind.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit To: "Liang, Cunming" , "dev-VfR2kkLFssw@public.gmane.org" Return-path: In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Hi, On 02/09/2015 03:08 PM, Liang, Cunming wrote: > > >> -----Original Message----- >> From: Olivier MATZ [mailto:olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org] >> Sent: Monday, February 09, 2015 4:01 AM >> To: Liang, Cunming; dev-VfR2kkLFssw@public.gmane.org >> Subject: Re: [dpdk-dev] [PATCH v4 10/17] malloc: fix the issue of SOCKET_ID_ANY >> >> Hi, >> >> On 02/02/2015 03:02 AM, Cunming Liang wrote: >>> Add check for rte_socket_id(), avoid get unexpected return like (-1). >>> >>> Signed-off-by: Cunming Liang >>> --- >>> lib/librte_malloc/malloc_heap.h | 7 ++++++- >>> 1 file changed, 6 insertions(+), 1 deletion(-) >>> >>> diff --git a/lib/librte_malloc/malloc_heap.h b/lib/librte_malloc/malloc_heap.h >>> index b4aec45..a47136d 100644 >>> --- a/lib/librte_malloc/malloc_heap.h >>> +++ b/lib/librte_malloc/malloc_heap.h >>> @@ -44,7 +44,12 @@ extern "C" { >>> static inline unsigned >>> malloc_get_numa_socket(void) >>> { >>> - return rte_socket_id(); >>> + unsigned socket_id = rte_socket_id(); >>> + >>> + if (socket_id == (unsigned)SOCKET_ID_ANY) >>> + return 0; >>> + >>> + return socket_id; >>> } >>> >>> void * >>> >> >> The documentation off rte_malloc_socket() says: >> >> @param socket >> NUMA socket to allocate memory on. If SOCKET_ID_ANY is used, this >> function will behave the same as rte_malloc(). >> >> void * >> rte_malloc_socket(const char *type, size_t size, unsigned align, int >> socket); >> >> >> Your patch changes the behavior of rte_malloc() without explaining >> why, and the documentation becomes wrong. >> >> Can you explain why you need this change? > [LCM] I don't think I change the declaration of rte_malloc_socket(). > If socket_arg=SOCKET_ID_ANY, the socket value expect to the return value of malloc_get_numa_socket(). > The malloc_get_numa_socket() supposed to return the correct TLS _socket_id. > It works fine for normal cases. But as we change the default value of TLS _socket_id to SOCKET_ID_ANY. > And one lcore can run on multiple cpu, if all cpus in the cpuset are not belongs to one NUMA node, the _socket_id would be SOCKET_ID_ANY. > When user call rte_malloc_socket(SOCKET_ID_ANY), it does provide the same behavior as rte_malloc(). > They both will get socket_id from malloc_get_numa_socket(). The addition part is the exception path process. Sorry, I checked again, you are right.