Hi Maxime, > -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Tuesday, October 6, 2020 9:34 AM > To: Chautru, Nicolas <nicolas.chau...@intel.com>; dev@dpdk.org; > sta...@dpdk.org; t...@redhat.com > Subject: Re: [PATCH 1/2] baseband/fpga_5gnr_fec: fix segfaults with debug > > Hi Nicolas, > > On 10/6/20 6:14 PM, Chautru, Nicolas wrote: > > Thanks Maxime > > I am not totally sure that this actually got broken in the very commit you > point to (I think that there was another pci generic commit which changed > the assumption when this pointer was set), but it doesn't harm to change > anyway for stable build. > > Note this is already like this in the new PMD acc100. > > For fpga_5gnr_fec, we reproduced the issue with v20.05, which was the > version the driver was introduced. > > For fpga_lte_fec, it seems to be the same. The driver was in introduced in > v19.08, and dev->device.driver was also assigned after driver's probe > callback is called: > > http://code.dpdk.org/dpdk/v19.08/source/drivers/bus/pci/pci_common.c#L > 212
OK Thanks you are right. The change moving the driver assignment to end of probing was done in parallel prior to the formal upstreaming of these drivers. > > Thanks, > Maxime > > > Acked-By: Nicolas Chautru <nicolas.chau...@intel.com> > > > >> -----Original Message----- > >> From: Maxime Coquelin <maxime.coque...@redhat.com> > >> Sent: Tuesday, October 6, 2020 3:04 AM > >> To: dev@dpdk.org; sta...@dpdk.org; Chautru, Nicolas > >> <nicolas.chau...@intel.com>; t...@redhat.com > >> Cc: Maxime Coquelin <maxime.coque...@redhat.com> > >> Subject: [PATCH 1/2] baseband/fpga_5gnr_fec: fix segfaults with debug > >> > >> When RTE_LIBRTE_BBDEV_DEBUG is enabled, rte_device's driver pointer > >> is dereferenced twice in fpga_5gnr_fec's probe callback. > >> It causes a segmentation fault because this pointer is only assigned > >> after probe callback call. > >> > >> This patch makes use of rte_pci_driver pointer instead. > >> > >> Fixes: 0b5927cbcba7 ("baseband/fpga_5gnr_fec: add PMD for FPGA 5GNR > >> FEC") > >> > >> Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > >> --- > >> drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c | 4 ++-- > >> 1 file changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git a/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c > >> b/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c > >> index 61f9c04ba2..11ee4d3e10 100644 > >> --- a/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c > >> +++ b/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c > >> @@ -1839,7 +1839,7 @@ fpga_5gnr_fec_init(struct rte_bbdev *dev, > >> struct rte_pci_driver *drv) > >> > >> rte_bbdev_log_debug( > >> "Init device %s [%s] @ virtaddr %p phyaddr > %#"PRIx64, > >> - dev->device->driver->name, dev->data->name, > >> + drv->driver.name, dev->data->name, > >> (void *)pci_dev->mem_resource[0].addr, > >> pci_dev->mem_resource[0].phys_addr); > >> } > >> @@ -1895,7 +1895,7 @@ fpga_5gnr_fec_probe(struct rte_pci_driver > *pci_drv, > >> ((uint16_t)(version_id >> 16)), ((uint16_t)version_id)); > >> > >> #ifdef RTE_LIBRTE_BBDEV_DEBUG > >> - if (!strcmp(bbdev->device->driver->name, > >> + if (!strcmp(pci_drv->driver.name, > > > > Why do you have to change this one? > > > > Acked-by: Nicolas Chautru <nicolas.chau...@intel.com> > > > >> RTE_STR(FPGA_5GNR_FEC_PF_DRIVER_NAME))) > >> print_static_reg_debug_info(d->mmio_base); > >> #endif > >> -- > >> 2.26.2 > >