> -----Original Message----- > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com] > Sent: Tuesday, June 23, 2015 5:02 AM > To: Liang, Cunming > Cc: dev at dpdk.org; Jayakumar, Muthurajan > Subject: Re: [dpdk-dev] [PATCH v1] app/test: fix pmd_perf issue in no NUMA > case > > 2015-06-08 14:33, Cunming Liang: > > Reported-by: Jayakumar, Muthurajan <muthurajan.jayakumar at intel.com> > > Signed-off-by: Cunming Liang <cunming.liang at intel.com> > > Please explain exactly what you try to fix. > Is it still needed since this patch? > http://dpdk.org/browse/dpdk/commit/?id=94ef2964148a4540 > > > + socket_id = rte_eth_dev_socket_id(port_id); > > + if (socket_id < 0) > > + /* enforce using socket 0 when no NUMA support */ > > + socket_id = 0;
The referred patch 94ef29 fixes eal_cpu_socket_id() for the socket id of a logical core. It's not for the case here which trying to get socket id of a port. The original purpose of the patch is to allow the unit test works even without NUMA support. Now I have a look on the function definition, when socket could not be determined, the default shall be zero instead of -1. So I think the below change should be made in eal_pci.c /* * Return the NUMA socket to which an Ethernet device is connected * @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); diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index d2adc66..8f9f136 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -317,8 +317,8 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus, snprintf(filename, sizeof(filename), "%s/numa_node", dirname); if (access(filename, R_OK) != 0) { - /* if no NUMA support just set node to -1 */ - dev->numa_node = -1; + /* if no NUMA support just set node to 0 */ + dev->numa_node = 0; } else { if (eal_parse_sysfs_value(filename, &tmp) < 0) { free(dev); /Steve