diff options
author | Mauro S M Rodrigues <[email protected]> | 2018-05-02 17:26:28 -0300 |
---|---|---|
committer | Jeff Kirsher <[email protected]> | 2018-05-17 09:00:54 -0700 |
commit | b212d815e77c72be921979119c715166cc8987b1 (patch) | |
tree | 803056590e26254b65911a936b33920e4427e489 /tools/perf/scripts/python/sctop.py | |
parent | 9cfbfa701b55868cda4d638164887d5c74c7bfdd (diff) |
ixgbe/ixgbevf: Free IRQ when PCI error recovery removes the device
Since commit f7f37e7ff2b9 ("ixgbe: handle close/suspend race with
netif_device_detach/present") ixgbe_close_suspend is called, from
ixgbe_close, only if the device is present, i.e. if it isn't detached.
That exposed a situation where IRQs weren't freed if a PCI error
recovery system opts to remove the device. For such case the pci channel
state is set to pci_channel_io_perm_failure and ixgbe_io_error_detected
was returning PCI_ERS_RESULT_DISCONNECT before calling
ixgbe_close_suspend consequentially not freeing IRQ and crashing when
the remove handler calls pci_disable_device, hitting a BUG_ON at
free_msi_irqs, which asserts that there is no non-free IRQ associated
with the device to be removed:
BUG_ON(irq_has_action(entry->irq + i));
The issue is fixed by calling the ixgbe_close_suspend before evaluate
the pci channel state.
Reported-by: Naresh Bannoth <[email protected]>
Reported-by: Abdul Haleem <[email protected]>
Signed-off-by: Mauro S M Rodrigues <[email protected]>
Reviewed-by: Alexander Duyck <[email protected]>
Tested-by: Andrew Bowers <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/sctop.py')
0 files changed, 0 insertions, 0 deletions