On Tue, Nov 2, 2021 at 10:35 AM Jiang, YuX <yux.ji...@intel.com> wrote: > > -----Original Message----- > > From: David Marchand <david.march...@redhat.com> > > Sent: Tuesday, November 2, 2021 3:53 PM > > To: dev@dpdk.org > > Cc: Jiang, YuX <yux.ji...@intel.com>; Harman Kalra <hka...@marvell.com> > > Subject: [PATCH] eal: fix device hotplug > > > > The device event interrupt handler was always freed. > > > > Bugzilla ID: 845 > > Fixes: c2bd9367e18f ("lib: remove direct access to interrupt handle") > > > > Signed-off-by: David Marchand <david.march...@redhat.com> > > --- > > lib/eal/linux/eal_dev.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c index > > 06820a3666..925cdba553 100644 > > --- a/lib/eal/linux/eal_dev.c > > +++ b/lib/eal/linux/eal_dev.c > > @@ -317,10 +317,12 @@ rte_dev_event_monitor_start(void) > > goto exit; > > } > > > > - if (rte_intr_type_set(intr_handle, RTE_INTR_HANDLE_DEV_EVENT)) > > + ret = rte_intr_type_set(intr_handle, > > RTE_INTR_HANDLE_DEV_EVENT); > > + if (ret) > > goto exit; > > > > - if (rte_intr_fd_set(intr_handle, -1)) > > + ret = rte_intr_fd_set(intr_handle, -1); > > + if (ret) > > goto exit; > > > > ret = dev_uev_socket_fd_create(); > > @@ -339,7 +341,10 @@ rte_dev_event_monitor_start(void) > > monitor_refcount++; > > > > exit: > > - rte_intr_instance_free(intr_handle); > > + if (ret) { > > + rte_intr_instance_free(intr_handle); > > + intr_handle = NULL; > > + } > > rte_rwlock_write_unlock(&monitor_lock); > > return ret; > > } > > @@ -370,6 +375,7 @@ rte_dev_event_monitor_stop(void) > > > > close(rte_intr_fd_get(intr_handle)); > > rte_intr_instance_free(intr_handle); > > + intr_handle = NULL; > > > > monitor_refcount--; > > > > -- > > 2.23.0 > Hi David, > > The patch > https://patchwork.dpdk.org/project/dpdk/patch/20211102075259.3392-1-david.march...@redhat.com/ > failed to verify. > > after executing "device_del dev1" in the qemu window, the testpmd window > hangs to death and output as following: > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0) > EAL: Cannot find bus for device (0000:00:05.0)
Replying on the ml, since the discussion mainly happened in bugzilla. This first patch was not enough, another issue was caught in the pci bus hotplug code. -- David Marchand