From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f50.google.com (mail-pg0-f50.google.com [74.125.83.50]) by dpdk.org (Postfix) with ESMTP id AAA43D4E0 for ; Thu, 5 Jan 2017 17:26:42 +0100 (CET) Received: by mail-pg0-f50.google.com with SMTP id g1so202827240pgn.0 for ; Thu, 05 Jan 2017 08:26:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lakaku5o+UkGDVncSGPqUjv8zGb4JqY8aClwpdMrxzE=; b=gsm8H60GvLJnc0tjPbQOFDbukK4YVM2vRgIC6Vcz2wvIwUwsvrEfnXh8GPt/EPPZBG JbrFKWLqfuklV8E7tx3+J7+IwRFucBQdv+QknE9r45ZrPgexp+Ga6gLo7QjvBO0j6no1 YPz5HP9MMumhl310hxO0HQb8heI7PDq/PFnbPI5vTrib+lqAqFxFSLpuyUR2oY/zbJ6g /BAAbczUClq5j937jBjrieLjRnJPbcozj4DRg+m1nqHtnOXj6n22dZKzGCTdzCSL9o30 pkGTIhAxMosU3nyEsAZ6SWdrDsxHkHhDMVtzZcdL0yBsDc8zYVhFv8y8EeAKKjaPFg9o 3vuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lakaku5o+UkGDVncSGPqUjv8zGb4JqY8aClwpdMrxzE=; b=FE6fgpoIYEP+WdE5b9cQ/hcUTuTX7g53zMmgRUTonPcKV7AswWqwuHaskmNt0LSBzx j3g/aFDC7muqkeKYmkMynYE2uPC+mUDU85x0aDjj9Lk5g+FQxOr4fUHx/LIDj+jPyrlw OC9rxDqZ8+kIKVH1i7WGKRZdJOL+9FE1TU9zJaOYhGkaAoi+NcBkDpKMxJ7I65y0fF1h HUwbZ1FkIOUDIDufesNmFM9Pla35g4IFkhmM5XXaUIsChhvOSPGGWn/z9m28u5ETpOJW /sz6RKvEY/Ym9/1JI9io6+u5im3ECcG4dQni9SOQWYlcQH7+sUUTYXFbiH/Sz+AMAo8v 0/Yw== X-Gm-Message-State: AIkVDXLGjOnuJbJOKKVxYO4SqhJfAeIeMaqoKDL12c7XVDP3fhsV67Y8a7Uac5Bd53HZ6w== X-Received: by 10.84.137.169 with SMTP id 38mr158514542pln.128.1483633601804; Thu, 05 Jan 2017 08:26:41 -0800 (PST) Received: from xeon-e3 (204-195-18-65.wavecable.com. [204.195.18.65]) by smtp.gmail.com with ESMTPSA id 89sm154557207pfi.70.2017.01.05.08.26.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 05 Jan 2017 08:26:41 -0800 (PST) Date: Thu, 5 Jan 2017 08:26:33 -0800 From: Stephen Hemminger To: nickcooper-zhangtonghao Cc: dev@dpdk.org Message-ID: <20170105082633.48fc19df@xeon-e3> In-Reply-To: <1483617709-7088-1-git-send-email-nic@opencloud.tech> References: <1483617709-7088-1-git-send-email-nic@opencloud.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v2 1/5] eal: Set numa node value for system which not support NUMA. 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: Thu, 05 Jan 2017 16:26:43 -0000 On Thu, 5 Jan 2017 04:01:45 -0800 nickcooper-zhangtonghao wrote: > + /* 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. > + * In the upstream linux kernel, the numa_node is an integer, > + * which data type is int, not unsigned long. > + */ > + dev->device.numa_node = (int)tmp > 0 ? (int)tmp : 0; > } It is good to see more checking for valid values. I suspect that other systems may have the same problem. My preference would to have the code comment generic and to have the precise details of about where this was observed in the commit log. The following would do same thing but be simpler: diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 43501342..9f09cd98 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -306,19 +306,12 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus, 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; - } /* parse resources */ snprintf(filename, sizeof(filename), "%s/resource", dirname);