rte_eth_dev_socket_id return
Danil Onishchenko
danil.onishchenko.info at gmail.com
Mon Aug 22 13:31:05 CEST 2022
Hi Dmitry,
Yes, /sys/bus/pci/devices/<addr>/numa_node contains -1.
On 17.08.2022 03:08, Dmitry Kozlyuk wrote:
> 2022-08-14 15:36 (UTC+0700), Danil Onishchenko:
>> Hello,
>>
>> I faced a confusing behavior of rte_eth_dev_socket_id() function. In my
>> application I configured eth port and if after that I call
>> rte_eth_dev_socket_id(port) it returns -1. In documentation of the
>> function it is said "Returns: 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.".
>> However if call rte_eth_dev_is_valid_port(port) with the same port id it
>> returns 1. The documentation of this function says "Returns: 0 if port
>> is out of range or not attached, 1 if device is attached". It looks like
>> this functions can't return -1 and 1 respectively for the same port
>> number. Are there any other cases when the first one can return -1?
> Hi Danil,
>
> This function returns whatever the bus driver discovers.
> Assuming Linux and PCI, the bus driver reads
> /sys/bus/pci/devices/<addr>/numa_node
> Does this file contain "-1" for your device?
>
> It's a DPDK bug anyway that documentation doesn't match behavior.
>
> Relevant bus driver code:
>
> /* get numa node, default to 0 if not present */
> snprintf(filename, sizeof(filename), "%s/numa_node",
> dirname);
>
> if (access(filename, F_OK) != -1) {
> if (eal_parse_sysfs_value(filename, &tmp) == 0)
> dev->device.numa_node = tmp;
> else
> dev->device.numa_node = -1;
> } else {
> dev->device.numa_node = 0;
> }
More information about the users
mailing list