From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by dpdk.org (Postfix) with ESMTP id A9F1A2C38 for ; Tue, 9 May 2017 08:56:14 +0200 (CEST) X-QQ-mid: bizesmtp13t1494312968toyp4xvh Received: from local.opencloud.tech.localdomai (unknown [106.120.127.10]) by esmtp4.qq.com (ESMTP) with id ; Tue, 09 May 2017 14:56:02 +0800 (CST) X-QQ-SSF: 01100000002000F0FG70000A0000000 X-QQ-FEAT: EMV4NoGYbnBkHzdVHwcFen7JseudFN14AawZk4Q44lMdR4DntcclbTxIPZTis DLIw4mxAa+ElV85i2TC1Xr5Hub27r9TGNSX61pbtKQ3bfglL5l+Ul10Offn76sf716qSIIN 3hxmTRmOKVV+OJ/3/H2c7dpn9UjH+3EtFuOW5zwDKPQSc1JnQci0hKx/xkkj16Vlkx2pHr1 4oWzckE1nu8V2CVZFCt2crdU+tph/Lqb27VwLbzN8fLAC6DB+NwR/Qg3KjZAexU1FhY84ms wyCiRbWOiM4lABFRmEXGlxowI= X-QQ-GoodBg: 0 From: Tonghao Zhang To: dev@dpdk.org Cc: stephen@networkplumber.org, Tonghao Zhang Date: Mon, 8 May 2017 23:55:51 -0700 Message-Id: <1494312951-40556-1-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Subject: [dpdk-dev] [PATCH v3] eal: Set numa node value for system which not support it. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 May 2017 06:56:17 -0000 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. Signed-off-by: Tonghao Zhang --- lib/librte_eal/linuxapp/eal/eal_pci.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 595622b..95a051f 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -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; -- 1.8.3.1