[v2] raw/ntb: add check for disabling interrupt in dev close ops
Checks
Commit Message
During EAL cleanup stage, all bus devices are cleaned up properly.
In the meantime, the ntb example app will also do the device cleanup
process, which may call the dev ops '*dev->dev_ops->dev_close' twice.
If this dev ops for ntb was called twice, the interrupt handle for
EAL will be disabled twice and will lead to error for the seconde
time. Like this: "EAL: Error disabling MSI-X interrupts for fd xx"
Thus, this patch added the check process for disabling interrupt in
dev_close ops, to ensure that interrupt only be disabled once.
Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
Cc: stable@dpdk.org
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
drivers/raw/ntb/ntb.c | 5 +++++
1 file changed, 5 insertions(+)
Comments
> -----Original Message-----
> From: Junfeng Guo <junfeng.guo@intel.com>
> Sent: Wednesday, June 28, 2023 5:12 PM
> To: Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org; He, Xingguang
> <xingguang.he@intel.com>; Laatz, Kevin <kevin.laatz@intel.com>; Guo,
> Junfeng <junfeng.guo@intel.com>
> Subject: [PATCH v2] raw/ntb: add check for disabling interrupt in dev close
> ops
>
> During EAL cleanup stage, all bus devices are cleaned up properly.
> In the meantime, the ntb example app will also do the device cleanup
> process, which may call the dev ops '*dev->dev_ops->dev_close' twice.
>
> If this dev ops for ntb was called twice, the interrupt handle for EAL will be
> disabled twice and will lead to error for the seconde time. Like this: "EAL:
> Error disabling MSI-X interrupts for fd xx"
>
> Thus, this patch added the check process for disabling interrupt in dev_close
> ops, to ensure that interrupt only be disabled once.
>
> Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
> Cc: stable@dpdk.org
>
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
> ---
> drivers/raw/ntb/ntb.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
Tested-by: Wei Ling <weix.ling@intel.com>
> -----Original Message-----
> From: Guo, Junfeng <junfeng.guo@intel.com>
> Sent: Wednesday, June 28, 2023 5:12 PM
> To: Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org; He, Xingguang <xingguang.he@intel.com>; Laatz, Kevin
> <kevin.laatz@intel.com>; Guo, Junfeng <junfeng.guo@intel.com>
> Subject: [PATCH v2] raw/ntb: add check for disabling interrupt in dev close ops
>
> During EAL cleanup stage, all bus devices are cleaned up properly.
> In the meantime, the ntb example app will also do the device cleanup
> process, which may call the dev ops '*dev->dev_ops->dev_close' twice.
>
> If this dev ops for ntb was called twice, the interrupt handle for
> EAL will be disabled twice and will lead to error for the seconde
> time. Like this: "EAL: Error disabling MSI-X interrupts for fd xx"
>
> Thus, this patch added the check process for disabling interrupt in
> dev_close ops, to ensure that interrupt only be disabled once.
>
> Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
> Cc: stable@dpdk.org
>
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
03/07/2023 08:53, Wu, Jingjing:
>
> > -----Original Message-----
> > From: Guo, Junfeng <junfeng.guo@intel.com>
> > Sent: Wednesday, June 28, 2023 5:12 PM
> > To: Wu, Jingjing <jingjing.wu@intel.com>
> > Cc: dev@dpdk.org; stable@dpdk.org; He, Xingguang <xingguang.he@intel.com>; Laatz, Kevin
> > <kevin.laatz@intel.com>; Guo, Junfeng <junfeng.guo@intel.com>
> > Subject: [PATCH v2] raw/ntb: add check for disabling interrupt in dev close ops
> >
> > During EAL cleanup stage, all bus devices are cleaned up properly.
> > In the meantime, the ntb example app will also do the device cleanup
> > process, which may call the dev ops '*dev->dev_ops->dev_close' twice.
> >
> > If this dev ops for ntb was called twice, the interrupt handle for
> > EAL will be disabled twice and will lead to error for the seconde
> > time. Like this: "EAL: Error disabling MSI-X interrupts for fd xx"
> >
> > Thus, this patch added the check process for disabling interrupt in
> > dev_close ops, to ensure that interrupt only be disabled once.
> >
> > Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
>
> Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Applied, thanks.
@@ -1045,6 +1045,11 @@ ntb_dev_close(struct rte_rawdev *dev)
hw->queue_pairs = 0;
intr_handle = hw->pci_dev->intr_handle;
+ /* Disable interrupt only once */
+ if (!rte_intr_nb_efd_get(intr_handle) &&
+ !rte_intr_max_intr_get(intr_handle))
+ return 0;
+
/* Clean datapath event and vec mapping */
rte_intr_efd_disable(intr_handle);
rte_intr_vec_list_free(intr_handle);