Message ID | 20220906105620.26179-1-pieter.jansen-van-vuuren@amd.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 41e3b0722f6c7c756702f50d194b0d6caa0fba26 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] sfc: introduce shutdown entry point in efx pci driver | expand |
On 06/09/2022 11:56, pieter.jansen-van-vuuren@amd.com wrote: > From: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com> > > 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> > --- > drivers/net/ethernet/sfc/efx.c | 12 ++++++++++++ > drivers/net/ethernet/sfc/siena/efx.c | 12 ++++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c > index 153d68e29b8b..b85c95e1ae7c 100644 > --- a/drivers/net/ethernet/sfc/efx.c > +++ b/drivers/net/ethernet/sfc/efx.c > @@ -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, > diff --git a/drivers/net/ethernet/sfc/siena/efx.c b/drivers/net/ethernet/sfc/siena/efx.c > index 63d999e63960..cf09521b0c64 100644 > --- a/drivers/net/ethernet/sfc/siena/efx.c > +++ b/drivers/net/ethernet/sfc/siena/efx.c > @@ -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, >
Hello: This patch was applied to netdev/net-next.git (master) by Paolo Abeni <pabeni@redhat.com>: On Tue, 6 Sep 2022 11:56:20 +0100 you wrote: > From: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com> > > 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> > > [...] Here is the summary with links: - [net-next] sfc: introduce shutdown entry point in efx pci driver https://git.kernel.org/netdev/net-next/c/41e3b0722f6c You are awesome, thank you!
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index 153d68e29b8b..b85c95e1ae7c 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c @@ -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, diff --git a/drivers/net/ethernet/sfc/siena/efx.c b/drivers/net/ethernet/sfc/siena/efx.c index 63d999e63960..cf09521b0c64 100644 --- a/drivers/net/ethernet/sfc/siena/efx.c +++ b/drivers/net/ethernet/sfc/siena/efx.c @@ -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,