sfc: introduce shutdown entry point in efx pci driver
Make the device inactive when the system shutdown callback has been invoked. This is achieved by freezing the driver and disabling the PCI bus mastering. Co-developed-by: Martin Habets <habetsm.xilinx@gmail.com> Signed-off-by: Martin Habets <habetsm.xilinx@gmail.com> Signed-off-by: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com> Acked-by: Edward Cree <ecree.xilinx@gmail.com> Link: https://lore.kernel.org/r/20220906105620.26179-1-pieter.jansen-van-vuuren@amd.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
169ccf0e40
commit
41e3b0722f
|
@ -1175,6 +1175,17 @@ static int efx_pm_freeze(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void efx_pci_shutdown(struct pci_dev *pci_dev)
|
||||
{
|
||||
struct efx_nic *efx = pci_get_drvdata(pci_dev);
|
||||
|
||||
if (!efx)
|
||||
return;
|
||||
|
||||
efx_pm_freeze(&pci_dev->dev);
|
||||
pci_disable_device(pci_dev);
|
||||
}
|
||||
|
||||
static int efx_pm_thaw(struct device *dev)
|
||||
{
|
||||
int rc;
|
||||
|
@ -1279,6 +1290,7 @@ static struct pci_driver efx_pci_driver = {
|
|||
.probe = efx_pci_probe,
|
||||
.remove = efx_pci_remove,
|
||||
.driver.pm = &efx_pm_ops,
|
||||
.shutdown = efx_pci_shutdown,
|
||||
.err_handler = &efx_err_handlers,
|
||||
#ifdef CONFIG_SFC_SRIOV
|
||||
.sriov_configure = efx_pci_sriov_configure,
|
||||
|
|
|
@ -1148,6 +1148,17 @@ static int efx_pm_freeze(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void efx_pci_shutdown(struct pci_dev *pci_dev)
|
||||
{
|
||||
struct efx_nic *efx = pci_get_drvdata(pci_dev);
|
||||
|
||||
if (!efx)
|
||||
return;
|
||||
|
||||
efx_pm_freeze(&pci_dev->dev);
|
||||
pci_disable_device(pci_dev);
|
||||
}
|
||||
|
||||
static int efx_pm_thaw(struct device *dev)
|
||||
{
|
||||
int rc;
|
||||
|
@ -1252,6 +1263,7 @@ static struct pci_driver efx_pci_driver = {
|
|||
.probe = efx_pci_probe,
|
||||
.remove = efx_pci_remove,
|
||||
.driver.pm = &efx_pm_ops,
|
||||
.shutdown = efx_pci_shutdown,
|
||||
.err_handler = &efx_siena_err_handlers,
|
||||
#ifdef CONFIG_SFC_SIENA_SRIOV
|
||||
.sriov_configure = efx_pci_sriov_configure,
|
||||
|
|
Loading…
Reference in New Issue