Hi Michael, Thanks a lot for the patch. Thanks, Tao Liu On Thu, Apr 25, 2024 at 3:52 PM Michael Margolin <mrgolin@xxxxxxxxxx> wrote: > > Add driver function to stop the device and release any active IRQs as > preparation for shutdown. This should fix issues cased by unexpected AQ > interrupts when booting kernel using kexec and possible data integrity > issues when the system is being shutdown during traffic. > > Reviewed-by: Firas Jahjah <firasj@xxxxxxxxxx> > Reviewed-by: Yonatan Nachum <ynachum@xxxxxxxxxx> > Signed-off-by: Michael Margolin <mrgolin@xxxxxxxxxx> > --- > drivers/infiniband/hw/efa/efa_main.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/infiniband/hw/efa/efa_main.c b/drivers/infiniband/hw/efa/efa_main.c > index 5fa3603c80d8..d1a48f988f6c 100644 > --- a/drivers/infiniband/hw/efa/efa_main.c > +++ b/drivers/infiniband/hw/efa/efa_main.c > @@ -671,11 +671,22 @@ static void efa_remove(struct pci_dev *pdev) > efa_remove_device(pdev); > } > > +static void efa_shutdown(struct pci_dev *pdev) > +{ > + struct efa_dev *dev = pci_get_drvdata(pdev); > + > + efa_destroy_eqs(dev); > + efa_com_dev_reset(&dev->edev, EFA_REGS_RESET_SHUTDOWN); > + efa_free_irq(dev, &dev->admin_irq); > + efa_disable_msix(dev); > +} > + > static struct pci_driver efa_pci_driver = { > .name = DRV_MODULE_NAME, > .id_table = efa_pci_tbl, > .probe = efa_probe, > .remove = efa_remove, > + .shutdown = efa_shutdown, > }; > > module_pci_driver(efa_pci_driver); > -- > 2.40.1 >