> -----Original Message----- > From: Tetsuya Mukawa [mailto:mukawa at igel.co.jp] > Sent: Thursday, March 26, 2015 2:51 AM > To: Iremonger, Bernard; dev at dpdk.org > Cc: Richardson, Bruce; david.marchand at 6wind.com > Subject: Re: [PATCH v2 5/6] eal: Use map_idx in pci_uio_map_resource() of > bsdapp to work same as > linuxapp > > On 2015/03/26 0:27, Iremonger, Bernard wrote: > > > >> -----Original Message----- > >> From: Tetsuya Mukawa [mailto:mukawa at igel.co.jp] > >> Sent: Tuesday, March 24, 2015 4:19 AM > >> To: dev at dpdk.org > >> Cc: Iremonger, Bernard; Richardson, Bruce; david.marchand at 6wind.com; > >> Tetsuya Mukawa > >> Subject: [PATCH v2 5/6] eal: Use map_idx in pci_uio_map_resource() of > >> bsdapp to work same as linuxapp > >> > >> This patch changes code that maps pci resources in bsdapp. > >> Linuxapp has almost same code. To consolidate both, fix > >> implementation of bsdapp to work same as linuxapp. > >> > >> Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp> > >> --- > >> lib/librte_eal/bsdapp/eal/eal_pci.c | 24 ++++++++++++------------ > >> 1 file changed, 12 insertions(+), 12 deletions(-) > >> > >> diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c > >> b/lib/librte_eal/bsdapp/eal/eal_pci.c > >> index 85f8671..08b91b4 100644 > >> --- a/lib/librte_eal/bsdapp/eal/eal_pci.c > >> +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c > >> @@ -195,7 +195,7 @@ pci_uio_map_secondary(struct rte_pci_device *dev) > >> static int pci_uio_map_resource(struct rte_pci_device *dev) { > >> - int i, j; > >> + int i, map_idx; > >> char devname[PATH_MAX]; /* contains the /dev/uioX */ > >> void *mapaddr; > >> uint64_t phaddr; > >> @@ -247,31 +247,31 @@ pci_uio_map_resource(struct rte_pci_device *dev) > >> pagesz = sysconf(_SC_PAGESIZE); > >> > >> maps = uio_res->maps; > >> - for (i = uio_res->nb_maps = 0; i != PCI_MAX_RESOURCE; i++) { > >> + for (i = 0, map_idx = 0; i != PCI_MAX_RESOURCE; i++) { > >> > >> - j = uio_res->nb_maps; > >> /* skip empty BAR */ > >> if ((phaddr = dev->mem_resource[i].phys_addr) == 0) > >> continue; > >> > >> /* if matching map is found, then use it */ > >> offset = i * pagesz; > >> - maps[j].offset = offset; > >> - maps[j].phaddr = dev->mem_resource[i].phys_addr; > >> - maps[j].size = dev->mem_resource[i].len; > >> - if (maps[j].addr != NULL || > >> - (mapaddr = pci_map_resource(NULL, devname, (off_t)offset, > >> - (size_t)maps[j].size) > >> - ) == NULL) { > >> + maps[map_idx].offset = offset; > >> + maps[map_idx].phaddr = dev->mem_resource[i].phys_addr; > >> + maps[map_idx].size = dev->mem_resource[i].len; > >> + mapaddr = pci_map_resource(NULL, devname, (off_t)offset, > >> + (size_t)maps[map_idx].size); > >> + if ((maps[map_idx].addr != NULL) || (mapaddr == NULL)) { > > Hi Tetsuya, > > > > Should be checking for if (mapaddr == MAP_FAILED) here. > > Seems to be fixed in patch 6/6 though. > > Hi Bernard, > > Here, bsdapp still has old pci_map_resource(). > Old pci_map_resource() return NULL when mapping is failed. > And this behavior will be changed in 6/6. This is why MAP_FAILED is checked > in 6/6. > > Regards, > Tetsuya >
Hi Tetsuya, Would it make sense to squash patches 5/6 and 6/6 ? Regards, Bernard.