Skip to contentSkip to conversation

eal: Set numa node value for system which not support it.

PATCH Superseded Tonghao Zhang 1 participant 1 message May 9, 2017

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 eal: Set numa node value for system which not support it.

The NUMA node information for PCI devices provided through sysfs is invalid for AMD Opteron(TM) Processor 62xx and 63xx on Red Hat Enterprise Linux 6, and VMs on some hypervisors. It is good to see more checking for valid values.

---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)
lib/librte_eal/linuxapp/eal/eal_pci.c +6 -10
index 595622b..19ef8bd 100644
@@ -310,19 +310,15 @@
 			dev->max_vfs = (uint16_t)tmp;
 	}
 
-	/* get numa node */
+	/* get numa node, default to 0 if not present */
 	snprintf(filename, sizeof(filename), "%s/numa_node",
 		 dirname);
-	if (access(filename, R_OK) != 0) {
-		/* if no NUMA support, set default to 0 */
-		dev->device.numa_node = 0;
-	} else {
-		if (eal_parse_sysfs_value(filename, &tmp) < 0) {
-			free(dev);
-			return -1;
-		}
+
+    if (eal_parse_sysfs_value(filename, &tmp) == 0 &&
+        tmp < RTE_MAX_NUMA_NODES)
 		dev->device.numa_node = tmp;
-	}
+    else
+        dev->device.numa_node = 0;
 
 	rte_pci_device_name(addr, dev->name, sizeof(dev->name));
 	dev->device.name = dev->name;
Signature · 1 line
1.8.3.1