]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commit
net/mlx5: Cancel health poll before sending panic teardown command
authorHuy Nguyen <huyn@mellanox.com>
Tue, 26 Sep 2017 20:11:56 +0000 (15:11 -0500)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 14 Mar 2018 10:41:46 +0000 (11:41 +0100)
commitfca6900ca49ef62b552edc1455cb5c841732e490
treee77fb95222a02f599a0a26aba6e98b37d57cea4c
parentbee3c63f23dd808d1fbaaeefc566cc66afbf8147
net/mlx5: Cancel health poll before sending panic teardown command

BugLink: http://bugs.launchpad.net/bugs/1744213
[ Upstream commit d2aa060d40fa060e963f9a356d43481e43ba3dac ]

After the panic teardown firmware command, health_care detects the error
in PCI bus and calls the mlx5_pci_err_detected. This health_care flow is
no longer needed because the panic teardown firmware command will bring
down the PCI bus communication with the HCA.

The solution is to cancel the health care timer and its pending
workqueue request before sending panic teardown firmware command.

Kernel trace:
mlx5_core 0033:01:00.0: Shutdown was called
mlx5_core 0033:01:00.0: health_care:154:(pid 9304): handling bad device here
mlx5_core 0033:01:00.0: mlx5_handle_bad_state:114:(pid 9304): NIC state 1
mlx5_core 0033:01:00.0: mlx5_pci_err_detected was called
mlx5_core 0033:01:00.0: mlx5_enter_error_state:96:(pid 9304): start
mlx5_3:mlx5_ib_event:3061:(pid 9304): warning: event on port 0
mlx5_core 0033:01:00.0: mlx5_enter_error_state:104:(pid 9304): end
Unable to handle kernel paging request for data at address 0x0000003f
Faulting instruction address: 0xc0080000434b8c80

Fixes: 8812c24d28f4 ('net/mlx5: Add fast unload support in shutdown flow')
Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Moshe Shemesh <moshe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/ethernet/mellanox/mlx5/core/main.c