From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f174.google.com (mail-wr0-f174.google.com [209.85.128.174]) by dpdk.org (Postfix) with ESMTP id 9F4A17CAA for ; Tue, 11 Jul 2017 01:19:30 +0200 (CEST) Received: by mail-wr0-f174.google.com with SMTP id r103so159320747wrb.0 for ; Mon, 10 Jul 2017 16:19:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=rUvIu39NFE5uV5uBKQu2aPWw2Vn6FTf2x0DNMWE5bVA=; b=rifiqAeH8DzZan27SR9eoUYqVYuyyPnTPaiA5vA4ssjyFnGp/JVmQGRReCItS+2V/5 /Sve7MqfPs4kKuHbHdHJxuPJoXUV9MRM2OL7YmWZ/SVpkWyX9KsK9CMltJdJA8Cn+A7h LtVrWoPd5bnFK6zO4Wt60mAfx23hWpIJdsSj8J/wbfI7uaqXuyaGn1MB6r2KbBaHNguy Ztvm+DYU6wFo3vOJsg0+OSOLfH/9KnvSRiR2NSv2I9samIFyCJ7lfLQ43rjJxZoACHgi un2c713dxTAltUo1OEAxV4RPBdUTjO5m2dd+xYYP2NYVbSC0FXvxRLoGucXnYOw9YQc6 MfSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=rUvIu39NFE5uV5uBKQu2aPWw2Vn6FTf2x0DNMWE5bVA=; b=Z7JqkjvWlqqB3x0gXeI4zWAhs5ekSnl0vexGZ6+f4Gb+Dii4TQQV5Ezb+B6Z4lTNXR qNrZ8nGD9z7ZQrYh85RpBsF0jpzgNxp38IUrmniuA89JbRW7Z6JtNcKHP9N84vUFusm9 THDhNDP2Udgp1RYHpkhBVefeTM8/DdnzHNflVNsRgcVBs7lbdrdZsTRHHqTkUFS+80Km B+JnBjAepGRIVDidupPr8Xij4HjTcyDwDUQAuP0WBwj+SyiECgmkPmTc099/I3zTeli0 +k6a4z5vvJbXybMm6BZ9mvybsUDT/n72kVhnzBSri740hnJpu8nHQkwOICradXMJreHv 8kUg== X-Gm-Message-State: AIVw110g5RYwLxcY5olmOecKXvWmoLdpORIk70WzWIBMpvpQvQncepw2 bIWXIICQ82sUiOKKcr4= X-Received: by 10.28.45.197 with SMTP id t188mr8371893wmt.78.1499728769764; Mon, 10 Jul 2017 16:19:29 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id j190sm43773wmd.22.2017.07.10.16.19.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 10 Jul 2017 16:19:28 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Gaetan Rivet , stable@dpdk.org Date: Tue, 11 Jul 2017 01:19:04 +0200 Message-Id: <846173ac225560e48d665fb1d6d847919694d3e8.1499728330.git.gaetan.rivet@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 5/8] pci: use given name as generic name 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: Mon, 10 Jul 2017 23:19:30 -0000 The PCI device is referenced by other DPDK systems by the name of its parameter, not by the system name. Moreover, this name should be set once and for all, as early as possible. This means linking the rte_devargs associated with the PCI device during its scan, making available other metadatas used afterward upon probing and device search for plugging. Fixes: beec692c5157 ("eal: add name field to generic device") Cc: stable@dpdk.org Signed-off-by: Gaetan Rivet --- lib/librte_eal/bsdapp/eal/eal_pci.c | 4 ++-- lib/librte_eal/common/eal_common_pci.c | 21 ++++++++++++++++----- lib/librte_eal/common/eal_private.h | 5 +++++ lib/librte_eal/linuxapp/eal/eal_pci.c | 4 ++-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c b/lib/librte_eal/bsdapp/eal/eal_pci.c index e321461..97a88ec 100644 --- a/lib/librte_eal/bsdapp/eal/eal_pci.c +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c @@ -282,8 +282,7 @@ pci_scan_one(int dev_pci_fd, struct pci_conf *conf) /* FreeBSD has no NUMA support (yet) */ dev->device.numa_node = 0; - rte_pci_device_name(&dev->addr, dev->name, sizeof(dev->name)); - dev->device.name = dev->name; + pci_name_set(dev); /* FreeBSD has only one pass through driver */ dev->kdrv = RTE_KDRV_NIC_UIO; @@ -334,6 +333,7 @@ pci_scan_one(int dev_pci_fd, struct pci_conf *conf) } else { /* already registered */ dev2->kdrv = dev->kdrv; dev2->max_vfs = dev->max_vfs; + pci_name_set(dev2); memmove(dev2->mem_resource, dev->mem_resource, sizeof(dev->mem_resource)); diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 76bbcc8..b100525 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -88,6 +88,21 @@ static struct rte_devargs *pci_devargs_lookup(struct rte_pci_device *dev) return NULL; } +void +pci_name_set(struct rte_pci_device *dev) +{ + struct rte_devargs *devargs; + + rte_pci_device_name(&dev->addr, + dev->name, sizeof(dev->name)); + devargs = pci_devargs_lookup(dev); + dev->device.devargs = devargs; + if (devargs != NULL) + dev->device.name = dev->device.devargs->name; + else + dev->device.name = dev->name; +} + /* map a particular resource from a file */ void * pci_map_resource(void *requested_addr, int fd, off_t offset, size_t size, @@ -396,11 +411,7 @@ rte_pci_probe(void) FOREACH_DEVICE_ON_PCIBUS(dev) { probed++; - /* set devargs in PCI structure */ - devargs = pci_devargs_lookup(dev); - if (devargs != NULL) - dev->device.devargs = devargs; - + devargs = dev->device.devargs; /* probe all or only whitelisted devices */ if (probe_all) ret = pci_probe_all_drivers(dev); diff --git a/lib/librte_eal/common/eal_private.h b/lib/librte_eal/common/eal_private.h index 0836339..597d82e 100644 --- a/lib/librte_eal/common/eal_private.h +++ b/lib/librte_eal/common/eal_private.h @@ -113,6 +113,11 @@ struct rte_pci_driver; struct rte_pci_device; /** + * Find the name of a PCI device. + */ +void pci_name_set(struct rte_pci_device *dev); + +/** * Add a PCI device to the PCI Bus (append to PCI Device list). This function * also updates the bus references of the PCI Device (and the generic device * object embedded within. diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 7d9e1a9..556ae2c 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -324,8 +324,7 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) dev->device.numa_node = 0; } - rte_pci_device_name(addr, dev->name, sizeof(dev->name)); - dev->device.name = dev->name; + pci_name_set(dev); /* parse resources */ snprintf(filename, sizeof(filename), "%s/resource", dirname); @@ -373,6 +372,7 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) } else { /* already registered */ dev2->kdrv = dev->kdrv; dev2->max_vfs = dev->max_vfs; + pci_name_set(dev2); memmove(dev2->mem_resource, dev->mem_resource, sizeof(dev->mem_resource)); free(dev); -- 2.1.4