[dpdk-dev] [PATCH] eal/linux: fix negative value for undetermined numa_node

Liang, Cunming cunming.liang at intel.com
Mon Aug 3 03:46:54 CEST 2015


Hi,

On 8/1/2015 11:56 AM, Matthew Hall wrote:
> I asked about this many months ago and was informed that "-1" is a "standard
> error value" that I should expect from these APIs when NUMA is not present.
> Now we're saying I have to change my code again to handle a zero value?
>
> Also not sure how to tell the difference between no NUMA, something running on
> socket zero, and something with multiple sockets. Seems like we need a bit of
> thought about how the NUMA APIs should behave overall.
>
> Matthew.
>
> On Fri, Jul 31, 2015 at 09:36:12AM +0800, Cunming Liang wrote:
>> The patch sets zero as the default value of pci device numa_node
>> if the socket could not be determined.
>> It provides the same default value as FreeBSD which has no NUMA support,
>> and makes the return value of rte_eth_dev_socket_id() be consistent
>> with the API description.
>>
>> Signed-off-by: Cunming Liang <cunming.liang at intel.com>
>>
>>
/*
  * Return the NUMA socket to which an Ethernet device is connected
  *
  * @param port_id
  *   The port identifier of the Ethernet device
  * @return
  *   The NUMA socket id to which the Ethernet device is connected or
  *   a default of zero if the socket could not be determined.
  *   -1 is returned is the port_id value is out of range.
  */
extern int rte_eth_dev_socket_id(uint8_t port_id);

According to the API definition, if the socket could not be determined, 
a default of zero will take.
The '-1' is returned when the port_id value is out of range.

To your concern, "difference between no NUMA, something running on 
socket zero, and something with multiple sockets.".
The latter two belongs to the same situation, that is the numa_node 
stores the NUMA id.
So in fact the concern is about using '-1' or '0' when there's no NUMA 
detect.
If we won't plan to redefine the API return value, the fix patch is 
reasonable.

Btw, if it returns '-1' when no NUMA is detected, what will you do, do 
condition check '-1' and then use node 0 instead ?
In that way, you can't distinguish '-'1 is out of range port_id error or 
no NUMA detection error.
If it is, why not follow the API definition.

/Steve



More information about the dev mailing list