From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <nic@opencloud.tech>
Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128])
 by dpdk.org (Postfix) with ESMTP id 2B8CF14EC
 for <dev@dpdk.org>; Thu, 11 May 2017 03:56:50 +0200 (CEST)
X-QQ-mid: bizesmtp1t1494467805tpl9ux2a4
Received: from local.opencloud.tech.localdomai (unknown [106.120.127.10])
 by esmtp4.qq.com (ESMTP) with 
 id ; Thu, 11 May 2017 09:56:39 +0800 (CST)
X-QQ-SSF: 01100000002000F0FG80B00A0000000
X-QQ-FEAT: lAMFKCBSPHs8TO5JtEIZWYUCXgh4KnK1ToNQpB/bA4U5SSYcS2LWMFZRuoc0S
 h1G/J5cuRfphs1Jbzlzxcomw8uWcumBCwYOX/PhiK5kmMcrlQuFw2YA3xcZ1VHd/MKPk0Ig
 XpWT+SEnPnsYdPufIIo0PNaqo3DOBLFJjgsXFqtVcXck/VcNLBMyd1ADe34BkOWWSo5luBM
 GUj4QPbJWRqrgbdIaiUEFiAnMaAj+0zDe3oBnNZT5nXL5kZbvQcT8A3NrKHHKKrHSi4GUd/
 XrU/w1ZTJC6eri
X-QQ-GoodBg: 0
From: Tonghao Zhang <nic@opencloud.tech>
To: dev@dpdk.org
Cc: Tonghao Zhang <nic@opencloud.tech>
Date: Wed, 10 May 2017 18:56:33 -0700
Message-Id: <1494467793-19887-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 v4] 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 <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 11 May 2017 01:56:52 -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 <nic@opencloud.tech>
---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 595622b..c817b4c 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -310,18 +310,18 @@
 			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 {
+		RTE_LOG(WARNING, EAL,
+			"numa_node is invalid or not present. "
+			"Set it 0 as default\n");
+		dev->device.numa_node = 0;
 	}
 
 	rte_pci_device_name(addr, dev->name, sizeof(dev->name));
-- 
1.8.3.1