| From foo@baz Sun 01 Mar 2020 10:24:06 AM CET |
| From: Vasundhara Volam <vasundhara-v.volam@broadcom.com> |
| Date: Thu, 20 Feb 2020 17:26:35 -0500 |
| Subject: bnxt_en: Issue PCIe FLR in kdump kernel to cleanup pending DMAs. |
| |
| From: Vasundhara Volam <vasundhara-v.volam@broadcom.com> |
| |
| [ Upstream commit 8743db4a9acfd51f805ac0c87bcaae92c42d1061 ] |
| |
| If crashed kernel does not shutdown the NIC properly, PCIe FLR |
| is required in the kdump kernel in order to initialize all the |
| functions properly. |
| |
| Fixes: d629522e1d66 ("bnxt_en: Reduce memory usage when running in kdump kernel.") |
| Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com> |
| Signed-off-by: Michael Chan <michael.chan@broadcom.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c |
| +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c |
| @@ -11775,6 +11775,14 @@ static int bnxt_init_one(struct pci_dev |
| if (version_printed++ == 0) |
| pr_info("%s", version); |
| |
| + /* Clear any pending DMA transactions from crash kernel |
| + * while loading driver in capture kernel. |
| + */ |
| + if (is_kdump_kernel()) { |
| + pci_clear_master(pdev); |
| + pcie_flr(pdev); |
| + } |
| + |
| max_irqs = bnxt_get_max_irq(pdev); |
| dev = alloc_etherdev_mq(sizeof(*bp), max_irqs); |
| if (!dev) |