From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tetsuya Mukawa Subject: Re: [PATCH v2 5/6] eal: Use map_idx in pci_uio_map_resource() of bsdapp to work same as linuxapp Date: Thu, 26 Mar 2015 11:50:34 +0900 Message-ID: <551373FA.9090001@igel.co.jp> References: <1426584645-28828-7-git-send-email-mukawa@igel.co.jp> <1427170717-13879-1-git-send-email-mukawa@igel.co.jp> <1427170717-13879-6-git-send-email-mukawa@igel.co.jp> <8CEF83825BEC744B83065625E567D7C204A0245E@IRSMSX108.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit To: "Iremonger, Bernard" , "dev-VfR2kkLFssw@public.gmane.org" Return-path: In-Reply-To: <8CEF83825BEC744B83065625E567D7C204A0245E-kPTMFJFq+rEMvF1YICWikbfspsVTdybXVpNB7YpNyf8@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On 2015/03/26 0:27, Iremonger, Bernard wrote: > >> -----Original Message----- >> From: Tetsuya Mukawa [mailto:mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org] >> Sent: Tuesday, March 24, 2015 4:19 AM >> To: dev-VfR2kkLFssw@public.gmane.org >> Cc: Iremonger, Bernard; Richardson, Bruce; david.marchand-pdR9zngts4EAvxtiuMwx3w@public.gmane.org; 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 >> --- >> 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 > Regards, > > Bernard. > >> rte_free(uio_res); >> return -1; >> } >> >> - maps[j].addr = mapaddr; >> - uio_res->nb_maps++; >> + maps[map_idx].addr = mapaddr; >> + map_idx++; >> dev->mem_resource[i].addr = mapaddr; >> } >> >> + uio_res->nb_maps = map_idx; >> + >> TAILQ_INSERT_TAIL(uio_res_list, uio_res, next); >> >> return 0; >> -- >> 1.9.1