From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f50.google.com (mail-oi0-f50.google.com [209.85.218.50]) by dpdk.org (Postfix) with ESMTP id AD4EC5A29 for ; Tue, 7 Jul 2015 10:05:34 +0200 (CEST) Received: by oihr66 with SMTP id r66so79952778oih.2 for ; Tue, 07 Jul 2015 01:05:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=+43tkEw1Jb9ZEX4GY4ynofMpQFcET4bjTEfJaj83fZI=; b=JQUm5uClrcBo4LnK4XAEEVLH+Pc9Aq0rxWY5KNhm98235AeP6pWcv6TF1AUoAmo1hq DqhescBLWEbveDCAXF20N3yILmXxRPEt4HsMTjLsaLzCzrRjzbEnA2XMCGW7HvYmSgk3 mcPoi4HnKc+4caZqSfuZRbfuAcL1uO0phgfp4pAenVKUVq1X2wQfHDwlq56AOPBVygEs 0426CLDgiB+R4hQclbAaQamQQmfdIi/cG0dN6KOwLqMXitUCmNjKt357JzAdS1BgXN4o YPi6kNW5gDPIhWIN0uyy+VZq/ZRXMzXYt5am+CLjypwqsrhVduVaKYXajMQl7hrhimeA n/lA== X-Gm-Message-State: ALoCoQn/F5KBDuOgc0M2j0w4iTkbcq/Y2TLxXD6GStLBA7u7Wz0/5Ye4YwyMSviImKufDeyjDnZK MIME-Version: 1.0 X-Received: by 10.202.178.212 with SMTP id b203mr2771199oif.0.1436256334160; Tue, 07 Jul 2015 01:05:34 -0700 (PDT) Received: by 10.76.84.233 with HTTP; Tue, 7 Jul 2015 01:05:34 -0700 (PDT) In-Reply-To: <1436163861-3025-10-git-send-email-mukawa@igel.co.jp> References: <1435652668-3380-12-git-send-email-mukawa@igel.co.jp> <1436163861-3025-1-git-send-email-mukawa@igel.co.jp> <1436163861-3025-10-git-send-email-mukawa@igel.co.jp> Date: Tue, 7 Jul 2015 10:05:34 +0200 Message-ID: From: David Marchand To: Tetsuya Mukawa Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v8 09/12] 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: , X-List-Received-Date: Tue, 07 Jul 2015 08:05:35 -0000 On Mon, Jul 6, 2015 at 8:24 AM, Tetsuya Mukawa wrote: > From: "Tetsuya.Mukawa" > > 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 | 22 ---------------- > lib/librte_eal/common/eal_common_pci.c | 40 > +++++++++++++++++++++++++++++ > lib/librte_eal/common/include/rte_pci.h | 32 +++++++++++++++++++++++ > lib/librte_eal/linuxapp/eal/eal_pci.c | 41 > ------------------------------ > lib/librte_eal/linuxapp/eal/eal_pci_init.h | 5 ---- > 5 files changed, 72 insertions(+), 68 deletions(-) > > diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c > b/lib/librte_eal/bsdapp/eal/eal_pci.c > index 6067e31..5bb93cd 100644 > --- a/lib/librte_eal/bsdapp/eal/eal_pci.c > +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c > @@ -97,28 +97,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 4229aaf..eab147a 100644 > --- a/lib/librte_eal/common/eal_common_pci.c > +++ b/lib/librte_eal/common/eal_common_pci.c > @@ -2,6 +2,7 @@ > * BSD LICENSE > * > * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. > + * Copyright(c) 2015 IGEL Co., Ltd. > * All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > @@ -67,6 +68,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -98,6 +100,44 @@ 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; > +} > + > +/* 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); > +} > + > /* > * If vendor/device ID match, call the devinit() function of all > * registered driver for the given device. Return -1 if initialization > diff --git a/lib/librte_eal/common/include/rte_pci.h > b/lib/librte_eal/common/include/rte_pci.h > index d95747e..4a4641c 100644 > --- a/lib/librte_eal/common/include/rte_pci.h > +++ b/lib/librte_eal/common/include/rte_pci.h > @@ -365,6 +365,38 @@ int rte_eal_pci_scan(void); > */ > int rte_eal_pci_probe(void); > > +/** > + * @internal > + * Map a particular resource from a file. > + * > + * @param requested_addr > + * The starting address for the new mapping range. > + * @param fd > + * The file descriptor. > + * @param offset > + * The offset for the mapping range. > + * @param size > + * The size for the mapping range. > + * @param additional_flags > + * The additional flags for the mapping range. > + * @return > + * - On success, the function returns a pointer to the mapped area. > + * - On error, the value MAP_FAILED is returned. > + */ > +void *pci_map_resource(void *requested_addr, int fd, off_t offset, > + size_t size, int additional_flags); > + > +/** > + * @internal > + * Unmap a particular resource. > + * > + * @param requested_addr > + * The address for the unmapping range. > + * @param size > + * The size for the unmapping range. > + */ > +void pci_unmap_resource(void *requested_addr, size_t size); > + > #ifdef RTE_LIBRTE_EAL_HOTPLUG > /** > * Probe the single PCI device. > diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c > b/lib/librte_eal/linuxapp/eal/eal_pci.c > index d2adc66..fc99eaa 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,46 +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); > -- > 2.1.4 > > Acked-by: David Marchand -- David Marchand