Message ID | 20240425075143.24683-1-mrgolin@amazon.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [for-rc] RDMA/efa: Add shutdown notifier | expand |
Hi Michael, Thanks a lot for the patch. Thanks, Tao Liu On Thu, Apr 25, 2024 at 3:52 PM Michael Margolin <mrgolin@amazon.com> 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@amazon.com> > Reviewed-by: Yonatan Nachum <ynachum@amazon.com> > Signed-off-by: Michael Margolin <mrgolin@amazon.com> > --- > 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 >
On 25.04.24 09:51, Michael Margolin 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 s/cased/caused ? Zhu Yanjun > interrupts when booting kernel using kexec and possible data integrity > issues when the system is being shutdown during traffic. > > Reviewed-by: Firas Jahjah <firasj@amazon.com> > Reviewed-by: Yonatan Nachum <ynachum@amazon.com> > Signed-off-by: Michael Margolin <mrgolin@amazon.com> > --- > 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);
On 4/25/2024 2:12 PM, Zhu Yanjun wrote: > CAUTION: This email originated from outside of the organization. Do > not click links or open attachments unless you can confirm the sender > and know the content is safe. > > > > On 25.04.24 09:51, Michael Margolin 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 > > s/cased/caused ? > > Zhu Yanjun Right, thanks. Michael
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);