From patchwork Thu Mar 12 10:17:52 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tetsuya Mukawa X-Patchwork-Id: 3989 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 9EF669AD2; Thu, 12 Mar 2015 11:18:47 +0100 (CET) Received: from mail-pa0-f47.google.com (mail-pa0-f47.google.com [209.85.220.47]) by dpdk.org (Postfix) with ESMTP id 6EC4F9AA2 for ; Thu, 12 Mar 2015 11:18:42 +0100 (CET) Received: by paceu11 with SMTP id eu11so19429665pac.4 for ; Thu, 12 Mar 2015 03:18:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=A2LyNKs+Adod2e1r/hxML4IRd3mK5pcwn+lyHbIyETk=; b=PGJ1Ndva8VBLHZIYSdzHsGBZPO2paCNBSQora2m2U32YhGIRpakukV63AbEKImdezu Q2J25WCWsm+RwLxQ7ALiaJIMqKiZBndU0k0mOZIHsrCtS/OkLA4D8TWqfvDq7nnXOMWO V96jV4YuNfpUX9wNEKFr4oH8lEzYYxlzBeaSqZW0OzuQUwmZG3edk0BuaW+aEC4I5AmJ xehnov90v6jbydHUEvbckNYF+6t3CSnocrTIDHFJ/2agNtBszqApm8NcXhhfGgr+SnOi gOsccq+OzEaxM5C/gUjlmtylMfQHHG8pm8//1gd8lIwklYNzt7fQIYwFfo93MrDcZWvY pYPg== X-Gm-Message-State: ALoCoQmKUBbmX64tb77axDZe56U6S0ciG5wg1PgtIngNNdH24LKSYy9kueuJDmkm90+at3h5M+RZ X-Received: by 10.70.51.131 with SMTP id k3mr87627391pdo.155.1426155521865; Thu, 12 Mar 2015 03:18:41 -0700 (PDT) Received: from localhost.localdomain (napt.igel.co.jp. [219.106.231.132]) by mx.google.com with ESMTPSA id z4sm10080331pdi.90.2015.03.12.03.18.40 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Mar 2015 03:18:41 -0700 (PDT) From: Tetsuya Mukawa To: dev@dpdk.org Date: Thu, 12 Mar 2015 19:17:52 +0900 Message-Id: <1426155474-1596-14-git-send-email-mukawa@igel.co.jp> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1426155474-1596-1-git-send-email-mukawa@igel.co.jp> References: <1425438703-18895-1-git-send-email-mukawa@igel.co.jp> <1426155474-1596-1-git-send-email-mukawa@igel.co.jp> Subject: [dpdk-dev] [PATCH v2 13/15] eal: Consolidate pci_map/unmap_resource() of linuxapp and bsdapp X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The patch consolidates below functions, and implemented in common eal code. - pci_map_resource() - pci_unmap_resource() Signed-off-by: Tetsuya Mukawa --- lib/librte_eal/bsdapp/eal/eal_pci.c | 24 ----------------- lib/librte_eal/common/eal_common_pci.c | 43 ++++++++++++++++++++++++++++++ lib/librte_eal/common/include/rte_pci.h | 11 ++++++++ lib/librte_eal/linuxapp/eal/eal_pci.c | 42 ----------------------------- lib/librte_eal/linuxapp/eal/eal_pci_init.h | 5 ---- 5 files changed, 54 insertions(+), 71 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c b/lib/librte_eal/bsdapp/eal/eal_pci.c index 1e42e42..d7d6439 100644 --- a/lib/librte_eal/bsdapp/eal/eal_pci.c +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -96,29 +95,6 @@ pci_unbind_kernel_driver(struct rte_pci_device *dev __rte_unused) return -ENOTSUP; } -/* map a particular resource from a file */ -static void * -pci_map_resource(void *requested_addr, int fd, off_t offset, size_t size, - int additional_flags) -{ - void *mapaddr; - - /* Map the PCI memory resource of device */ - mapaddr = mmap(requested_addr, size, PROT_READ | PROT_WRITE, - MAP_SHARED | additional_flags, fd, offset); - if (mapaddr == MAP_FAILED) { - RTE_LOG(ERR, EAL, - "%s(): cannot mmap(%d, %p, 0x%lx, 0x%lx): %s (%p)\n", - __func__, fd, requested_addr, - (unsigned long)size, (unsigned long)offset, - strerror(errno), mapaddr); - } else { - RTE_LOG(DEBUG, EAL, " PCI memory mapped at %p\n", mapaddr); - } - - return mapaddr; -} - static int pci_uio_map_secondary(struct rte_pci_device *dev) { diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 726026f..6d98194 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,48 @@ static struct rte_devargs *pci_devargs_lookup(struct rte_pci_device *dev) return NULL; } +/* map a particular resource from a file */ +void * +pci_map_resource(void *requested_addr, int fd, off_t offset, size_t size, + int additional_flags) +{ + void *mapaddr; + + /* Map the PCI memory resource of device */ + mapaddr = mmap(requested_addr, size, PROT_READ | PROT_WRITE, + MAP_SHARED | additional_flags, fd, offset); + if (mapaddr == MAP_FAILED) { + RTE_LOG(ERR, EAL, + "%s(): cannot mmap(%d, %p, 0x%lx, 0x%lx): %s (%p)\n", + __func__, fd, requested_addr, + (unsigned long)size, (unsigned long)offset, + strerror(errno), mapaddr); + } else { + RTE_LOG(DEBUG, EAL, " PCI memory mapped at %p\n", mapaddr); + } + + return mapaddr; +} + +#ifdef RTE_LIBRTE_EAL_HOTPLUG +/* unmap a particular resource */ +void +pci_unmap_resource(void *requested_addr, size_t size) +{ + if (requested_addr == NULL) + return; + + /* Unmap the PCI memory resource of device */ + if (munmap(requested_addr, size)) { + RTE_LOG(ERR, EAL, "%s(): cannot munmap(%p, 0x%lx): %s\n", + __func__, requested_addr, (unsigned long)size, + strerror(errno)); + } else + RTE_LOG(DEBUG, EAL, " PCI memory unmapped at %p\n", + requested_addr); +} +#endif /* RTE_LIBRTE_EAL_HOTPLUG */ + /* Map pci device */ static int pci_map_device(struct rte_pci_device *dev) diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h index 47345b8..d3b883e 100644 --- a/lib/librte_eal/common/include/rte_pci.h +++ b/lib/librte_eal/common/include/rte_pci.h @@ -363,8 +363,19 @@ int rte_eal_pci_scan(void); */ int rte_eal_pci_probe(void); +/** + * Map pci resouce. + */ +void *pci_map_resource(void *requested_addr, int fd, off_t offset, + size_t size, int additional_flags); + #ifdef RTE_LIBRTE_EAL_HOTPLUG /** + * Map pci resouce. + */ +void pci_unmap_resource(void *requested_addr, size_t size); + +/** * Probe the single PCI device. * * Scan the content of the PCI bus, and find the pci device specified by pci diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 6a8153c..d072e98 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -33,7 +33,6 @@ #include #include -#include #include #include @@ -142,47 +141,6 @@ pci_find_max_end_va(void) return RTE_PTR_ADD(last->addr, last->len); } - -/* map a particular resource from a file */ -void * -pci_map_resource(void *requested_addr, int fd, off_t offset, size_t size, - int additional_flags) -{ - void *mapaddr; - - /* Map the PCI memory resource of device */ - mapaddr = mmap(requested_addr, size, PROT_READ | PROT_WRITE, - MAP_SHARED | additional_flags, fd, offset); - if (mapaddr == MAP_FAILED) { - RTE_LOG(ERR, EAL, - "%s(): cannot mmap(%d, %p, 0x%lx, 0x%lx): %s (%p)\n", - __func__, fd, requested_addr, - (unsigned long)size, (unsigned long)offset, - strerror(errno), mapaddr); - } else { - RTE_LOG(DEBUG, EAL, " PCI memory mapped at %p\n", mapaddr); - } - - return mapaddr; -} - -/* unmap a particular resource */ -void -pci_unmap_resource(void *requested_addr, size_t size) -{ - if (requested_addr == NULL) - return; - - /* Unmap the PCI memory resource of device */ - if (munmap(requested_addr, size)) { - RTE_LOG(ERR, EAL, "%s(): cannot munmap(%p, 0x%lx): %s\n", - __func__, requested_addr, (unsigned long)size, - strerror(errno)); - } else - RTE_LOG(DEBUG, EAL, " PCI memory unmapped at %p\n", - requested_addr); -} - /* parse the "resource" sysfs file */ static int pci_parse_sysfs_resource(const char *filename, struct rte_pci_device *dev) diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_init.h b/lib/librte_eal/linuxapp/eal/eal_pci_init.h index d9d1878..d426b27 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci_init.h +++ b/lib/librte_eal/linuxapp/eal/eal_pci_init.h @@ -42,14 +42,9 @@ extern void *pci_map_addr; void *pci_find_max_end_va(void); -void *pci_map_resource(void *requested_addr, int fd, off_t offset, - size_t size, int additional_flags); - /* map IGB_UIO resource prototype */ int pci_uio_map_resource(struct rte_pci_device *dev); -void pci_unmap_resource(void *requested_addr, size_t size); - #ifdef RTE_LIBRTE_EAL_HOTPLUG /* unmap IGB_UIO resource prototype */ void pci_uio_unmap_resource(struct rte_pci_device *dev);