* [PATCH iwl-next v1 0/2] net: intel: cleanup power ops @ 2024-02-10 22:01 Jesse Brandeburg 2024-02-10 22:01 ` [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration Jesse Brandeburg 2024-02-10 22:01 ` [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations Jesse Brandeburg 0 siblings, 2 replies; 11+ messages in thread From: Jesse Brandeburg @ 2024-02-10 22:01 UTC (permalink / raw) To: intel-wired-lan Cc: Jesse Brandeburg, netdev, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Do a quick refactor of igb to clean up some unnecessary declarations, noticed while doing the real work of 2/2. Follow that with a change of all the Intel drivers to use the current power management declaration APIs, to avoid complication and maintenance issues with CONFIG_PM=<m|y|n>. This is as per [1] Mostly compile-tested only. ice driver is skipped in this series because the driver was fixed as part of a bug fix to make it use the new APIs, and will be arriving via -net tree. [1] https://lore.kernel.org/netdev/20211207002102.26414-1-paul@crapouillou.net/ Jesse Brandeburg (2): igb: simplify pci ops declaration net: intel: implement modern PM ops declarations drivers/net/ethernet/intel/e100.c | 8 +-- drivers/net/ethernet/intel/e1000/e1000_main.c | 14 ++--- drivers/net/ethernet/intel/e1000e/netdev.c | 22 +++---- drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 10 ++-- drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++-- drivers/net/ethernet/intel/iavf/iavf_main.c | 8 +-- drivers/net/ethernet/intel/igb/igb_main.c | 59 ++++++++----------- drivers/net/ethernet/intel/igbvf/netdev.c | 6 +- drivers/net/ethernet/intel/igc/igc_main.c | 24 +++----- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +-- .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 8 +-- 11 files changed, 74 insertions(+), 103 deletions(-) base-commit: b63cc73341e076961d564a74cc3d29b2fd444079 -- 2.39.3 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-10 22:01 [PATCH iwl-next v1 0/2] net: intel: cleanup power ops Jesse Brandeburg @ 2024-02-10 22:01 ` Jesse Brandeburg 2024-02-14 10:32 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy 2024-02-19 9:15 ` Simon Horman 2024-02-10 22:01 ` [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations Jesse Brandeburg 1 sibling, 2 replies; 11+ messages in thread From: Jesse Brandeburg @ 2024-02-10 22:01 UTC (permalink / raw) To: intel-wired-lan Cc: Jesse Brandeburg, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni The igb driver was pre-declaring tons of functions just so that it could have an early declaration of the pci_driver struct. Delete a bunch of the declarations and move the struct to the bottom of the file, after all the functions are declared. Reviewed-by: Alan Brady <alan.brady@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> --- e1p v2: add back mistakenly deleted pm ops struct. --- drivers/net/ethernet/intel/igb/igb_main.c | 51 ++++++++++------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 4df8d4153aa5..fdca4901defa 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -106,8 +106,6 @@ static int igb_setup_all_rx_resources(struct igb_adapter *); static void igb_free_all_tx_resources(struct igb_adapter *); static void igb_free_all_rx_resources(struct igb_adapter *); static void igb_setup_mrqc(struct igb_adapter *); -static int igb_probe(struct pci_dev *, const struct pci_device_id *); -static void igb_remove(struct pci_dev *pdev); static void igb_init_queue_configuration(struct igb_adapter *adapter); static int igb_sw_init(struct igb_adapter *); int igb_open(struct net_device *); @@ -178,20 +176,6 @@ static int igb_vf_configure(struct igb_adapter *adapter, int vf); static int igb_disable_sriov(struct pci_dev *dev, bool reinit); #endif -static int igb_suspend(struct device *); -static int igb_resume(struct device *); -static int igb_runtime_suspend(struct device *dev); -static int igb_runtime_resume(struct device *dev); -static int igb_runtime_idle(struct device *dev); -#ifdef CONFIG_PM -static const struct dev_pm_ops igb_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(igb_suspend, igb_resume) - SET_RUNTIME_PM_OPS(igb_runtime_suspend, igb_runtime_resume, - igb_runtime_idle) -}; -#endif -static void igb_shutdown(struct pci_dev *); -static int igb_pci_sriov_configure(struct pci_dev *dev, int num_vfs); #ifdef CONFIG_IGB_DCA static int igb_notify_dca(struct notifier_block *, unsigned long, void *); static struct notifier_block dca_notifier = { @@ -219,19 +203,6 @@ static const struct pci_error_handlers igb_err_handler = { static void igb_init_dmac(struct igb_adapter *adapter, u32 pba); -static struct pci_driver igb_driver = { - .name = igb_driver_name, - .id_table = igb_pci_tbl, - .probe = igb_probe, - .remove = igb_remove, -#ifdef CONFIG_PM - .driver.pm = &igb_pm_ops, -#endif - .shutdown = igb_shutdown, - .sriov_configure = igb_pci_sriov_configure, - .err_handler = &igb_err_handler -}; - MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>"); MODULE_DESCRIPTION("Intel(R) Gigabit Ethernet Network Driver"); MODULE_LICENSE("GPL v2"); @@ -647,6 +618,8 @@ struct net_device *igb_get_hw_dev(struct e1000_hw *hw) return adapter->netdev; } +static struct pci_driver igb_driver; + /** * igb_init_module - Driver Registration Routine * @@ -10169,4 +10142,24 @@ static void igb_nfc_filter_restore(struct igb_adapter *adapter) spin_unlock(&adapter->nfc_lock); } + +#ifdef CONFIG_PM +static const struct dev_pm_ops igb_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(igb_suspend, igb_resume) + SET_RUNTIME_PM_OPS(igb_runtime_suspend, igb_runtime_resume, + igb_runtime_idle) +}; +#endif + +static struct pci_driver igb_driver = { + .name = igb_driver_name, + .id_table = igb_pci_tbl, + .probe = igb_probe, + .remove = igb_remove, + .driver.pm = &igb_pm_ops, + .shutdown = igb_shutdown, + .sriov_configure = igb_pci_sriov_configure, + .err_handler = &igb_err_handler +}; + /* igb_main.c */ -- 2.39.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-10 22:01 ` [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration Jesse Brandeburg @ 2024-02-14 10:32 ` Pucha, HimasekharX Reddy 2024-02-19 9:15 ` Simon Horman 1 sibling, 0 replies; 11+ messages in thread From: Pucha, HimasekharX Reddy @ 2024-02-14 10:32 UTC (permalink / raw) To: Brandeburg, Jesse, intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, Brandeburg, Jesse, Eric Dumazet, Nguyen, Anthony L, Brady, Alan, Jakub Kicinski, Paolo Abeni, David S. Miller > -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Jesse Brandeburg > Sent: Sunday, February 11, 2024 3:31 AM > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; Brandeburg, Jesse <jesse.brandeburg@intel.com>; Eric Dumazet <edumazet@google.com>; Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Brady, Alan <alan.brady@intel.com>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; David S. Miller <davem@davemloft.net> > Subject: [Intel-wired-lan] [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration > > The igb driver was pre-declaring tons of functions just so that it could > have an early declaration of the pci_driver struct. > > Delete a bunch of the declarations and move the struct to the bottom of the > file, after all the functions are declared. > > Reviewed-by: Alan Brady <alan.brady@intel.com> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> > --- > e1p v2: add back mistakenly deleted pm ops struct. > --- > drivers/net/ethernet/intel/igb/igb_main.c | 51 ++++++++++------------- > 1 file changed, 22 insertions(+), 29 deletions(-) > Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-10 22:01 ` [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration Jesse Brandeburg 2024-02-14 10:32 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy @ 2024-02-19 9:15 ` Simon Horman 2024-02-20 16:48 ` Jesse Brandeburg 1 sibling, 1 reply; 11+ messages in thread From: Simon Horman @ 2024-02-19 9:15 UTC (permalink / raw) To: Jesse Brandeburg Cc: intel-wired-lan, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni On Sat, Feb 10, 2024 at 02:01:08PM -0800, Jesse Brandeburg wrote: > The igb driver was pre-declaring tons of functions just so that it could > have an early declaration of the pci_driver struct. > > Delete a bunch of the declarations and move the struct to the bottom of the > file, after all the functions are declared. > > Reviewed-by: Alan Brady <alan.brady@intel.com> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> ... > @@ -219,19 +203,6 @@ static const struct pci_error_handlers igb_err_handler = { > > static void igb_init_dmac(struct igb_adapter *adapter, u32 pba); > > -static struct pci_driver igb_driver = { > - .name = igb_driver_name, > - .id_table = igb_pci_tbl, > - .probe = igb_probe, > - .remove = igb_remove, > -#ifdef CONFIG_PM > - .driver.pm = &igb_pm_ops, > -#endif > - .shutdown = igb_shutdown, > - .sriov_configure = igb_pci_sriov_configure, > - .err_handler = &igb_err_handler > -}; > - > MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>"); > MODULE_DESCRIPTION("Intel(R) Gigabit Ethernet Network Driver"); > MODULE_LICENSE("GPL v2"); ... > @@ -10169,4 +10142,24 @@ static void igb_nfc_filter_restore(struct igb_adapter *adapter) > > spin_unlock(&adapter->nfc_lock); > } > + > +#ifdef CONFIG_PM > +static const struct dev_pm_ops igb_pm_ops = { > + SET_SYSTEM_SLEEP_PM_OPS(igb_suspend, igb_resume) > + SET_RUNTIME_PM_OPS(igb_runtime_suspend, igb_runtime_resume, > + igb_runtime_idle) > +}; > +#endif > + > +static struct pci_driver igb_driver = { > + .name = igb_driver_name, > + .id_table = igb_pci_tbl, > + .probe = igb_probe, > + .remove = igb_remove, > + .driver.pm = &igb_pm_ops, Hi Jesse, the line above causes a build failure if CONFIG_PM is not set. > + .shutdown = igb_shutdown, > + .sriov_configure = igb_pci_sriov_configure, > + .err_handler = &igb_err_handler > +}; > + > /* igb_main.c */ ... ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-19 9:15 ` Simon Horman @ 2024-02-20 16:48 ` Jesse Brandeburg 2024-02-21 10:35 ` Simon Horman 0 siblings, 1 reply; 11+ messages in thread From: Jesse Brandeburg @ 2024-02-20 16:48 UTC (permalink / raw) To: Simon Horman Cc: intel-wired-lan, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni On 2/19/2024 1:15 AM, Simon Horman wrote: > On Sat, Feb 10, 2024 at 02:01:08PM -0800, Jesse Brandeburg wrote: >> The igb driver was pre-declaring tons of functions just so that it could >> have an early declaration of the pci_driver struct. >> >> Delete a bunch of the declarations and move the struct to the bottom of the >> file, after all the functions are declared. >> >> Reviewed-by: Alan Brady <alan.brady@intel.com> >> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> >> - .probe = igb_probe, >> - .remove = igb_remove, >> -#ifdef CONFIG_PM >> - .driver.pm = &igb_pm_ops, >> -#endif >> - .shutdown = igb_shutdown, >> + .probe = igb_probe, >> + .remove = igb_remove, >> + .driver.pm = &igb_pm_ops, > > Hi Jesse, > > the line above causes a build failure if CONFIG_PM is not set. Hi Simon, thanks! Yeah I missed that, but do we care since patch 2/2 then fixes it? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-20 16:48 ` Jesse Brandeburg @ 2024-02-21 10:35 ` Simon Horman 2024-02-21 11:02 ` [Intel-wired-lan] " Paul Menzel 0 siblings, 1 reply; 11+ messages in thread From: Simon Horman @ 2024-02-21 10:35 UTC (permalink / raw) To: Jesse Brandeburg Cc: intel-wired-lan, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni On Tue, Feb 20, 2024 at 08:48:28AM -0800, Jesse Brandeburg wrote: > On 2/19/2024 1:15 AM, Simon Horman wrote: > > On Sat, Feb 10, 2024 at 02:01:08PM -0800, Jesse Brandeburg wrote: > >> The igb driver was pre-declaring tons of functions just so that it could > >> have an early declaration of the pci_driver struct. > >> > >> Delete a bunch of the declarations and move the struct to the bottom of the > >> file, after all the functions are declared. > >> > >> Reviewed-by: Alan Brady <alan.brady@intel.com> > >> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> > > >> - .probe = igb_probe, > >> - .remove = igb_remove, > >> -#ifdef CONFIG_PM > >> - .driver.pm = &igb_pm_ops, > >> -#endif > >> - .shutdown = igb_shutdown, > > > >> + .probe = igb_probe, > >> + .remove = igb_remove, > >> + .driver.pm = &igb_pm_ops, > > > > Hi Jesse, > > > > the line above causes a build failure if CONFIG_PM is not set. > > Hi Simon, thanks! > > Yeah I missed that, but do we care since patch 2/2 then fixes it? Right. TBH I wrote the above before noticing 2/2. And I guess it is not a big deal either way. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration 2024-02-21 10:35 ` Simon Horman @ 2024-02-21 11:02 ` Paul Menzel 0 siblings, 0 replies; 11+ messages in thread From: Paul Menzel @ 2024-02-21 11:02 UTC (permalink / raw) To: Jesse Brandeburg, Simon Horman Cc: netdev, Eric Dumazet, Tony Nguyen, Alan Brady, Jakub Kicinski, intel-wired-lan, Paolo Abeni, David S. Miller Dear Jesse, dear Simon, Am 21.02.24 um 11:35 schrieb Simon Horman: > On Tue, Feb 20, 2024 at 08:48:28AM -0800, Jesse Brandeburg wrote: >> On 2/19/2024 1:15 AM, Simon Horman wrote: >>> On Sat, Feb 10, 2024 at 02:01:08PM -0800, Jesse Brandeburg wrote: >>>> The igb driver was pre-declaring tons of functions just so that it could >>>> have an early declaration of the pci_driver struct. >>>> >>>> Delete a bunch of the declarations and move the struct to the bottom of the >>>> file, after all the functions are declared. >>>> >>>> Reviewed-by: Alan Brady <alan.brady@intel.com> >>>> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> >> >>>> - .probe = igb_probe, >>>> - .remove = igb_remove, >>>> -#ifdef CONFIG_PM >>>> - .driver.pm = &igb_pm_ops, >>>> -#endif >>>> - .shutdown = igb_shutdown, >> >> >>>> + .probe = igb_probe, >>>> + .remove = igb_remove, >>>> + .driver.pm = &igb_pm_ops, >>> the line above causes a build failure if CONFIG_PM is not set. >> Yeah I missed that, but do we care since patch 2/2 then fixes it? > > Right. TBH I wrote the above before noticing 2/2. > And I guess it is not a big deal either way. In my opinion, to ease bisecting, each commit should build, so if a build failure can be avoided, it’d be great if you could fix this before committing. Kind regards, Paul ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations 2024-02-10 22:01 [PATCH iwl-next v1 0/2] net: intel: cleanup power ops Jesse Brandeburg 2024-02-10 22:01 ` [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration Jesse Brandeburg @ 2024-02-10 22:01 ` Jesse Brandeburg 2024-02-14 10:37 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy 2024-02-19 9:22 ` Simon Horman 1 sibling, 2 replies; 11+ messages in thread From: Jesse Brandeburg @ 2024-02-10 22:01 UTC (permalink / raw) To: intel-wired-lan Cc: Jesse Brandeburg, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Switch the Intel networking drivers to use the new power management ops declaration formats and macros, which allows us to drop __maybe_unused, as well as a bunch of ifdef checking CONFIG_PM. This is safe to do because the compiler drops the unused functions, verified by checking for any of the power management function symbols being present in System.map for a build without CONFIG_PM. If a driver has runtime PM, define the ops with pm_ptr(), and if the driver has Simple PM, use pm_sleep_ptr(), as well as the new versions of the macros for declaring the members of the pm_ops structs. Checked with network-enabled allnoconfig, allyesconfig, allmodconfig on x64_64. Reviewed-by: Alan Brady <alan.brady@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> --- e1p-v2: dropped errant idpf change, updated after v2 1/2 updates to move the declation down for igb_pm_ops. --- drivers/net/ethernet/intel/e100.c | 8 +++---- drivers/net/ethernet/intel/e1000/e1000_main.c | 14 +++++------ drivers/net/ethernet/intel/e1000e/netdev.c | 22 +++++++---------- drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 10 ++++---- drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++++---- drivers/net/ethernet/intel/iavf/iavf_main.c | 8 +++---- drivers/net/ethernet/intel/igb/igb_main.c | 24 ++++++++----------- drivers/net/ethernet/intel/igbvf/netdev.c | 6 ++--- drivers/net/ethernet/intel/igc/igc_main.c | 24 +++++++------------ drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +++---- .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 8 +++---- 11 files changed, 60 insertions(+), 82 deletions(-) diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index 01f0f12035ca..5a9e8cf4b2ee 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c @@ -3037,7 +3037,7 @@ static int __e100_power_off(struct pci_dev *pdev, bool wake) return 0; } -static int __maybe_unused e100_suspend(struct device *dev_d) +static int e100_suspend(struct device *dev_d) { bool wake; @@ -3046,7 +3046,7 @@ static int __maybe_unused e100_suspend(struct device *dev_d) return 0; } -static int __maybe_unused e100_resume(struct device *dev_d) +static int e100_resume(struct device *dev_d) { struct net_device *netdev = dev_get_drvdata(dev_d); struct nic *nic = netdev_priv(netdev); @@ -3163,7 +3163,7 @@ static const struct pci_error_handlers e100_err_handler = { .resume = e100_io_resume, }; -static SIMPLE_DEV_PM_OPS(e100_pm_ops, e100_suspend, e100_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(e100_pm_ops, e100_suspend, e100_resume); static struct pci_driver e100_driver = { .name = DRV_NAME, @@ -3172,7 +3172,7 @@ static struct pci_driver e100_driver = { .remove = e100_remove, /* Power Management hooks */ - .driver.pm = &e100_pm_ops, + .driver.pm = pm_sleep_ptr(&e100_pm_ops), .shutdown = e100_shutdown, .err_handler = &e100_err_handler, diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c index 1d1e93686af2..5b43f9b194fc 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -149,8 +149,8 @@ static int e1000_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid); static void e1000_restore_vlan(struct e1000_adapter *adapter); -static int __maybe_unused e1000_suspend(struct device *dev); -static int __maybe_unused e1000_resume(struct device *dev); +static int e1000_suspend(struct device *dev); +static int e1000_resume(struct device *dev); static void e1000_shutdown(struct pci_dev *pdev); #ifdef CONFIG_NET_POLL_CONTROLLER @@ -175,16 +175,14 @@ static const struct pci_error_handlers e1000_err_handler = { .resume = e1000_io_resume, }; -static SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume); static struct pci_driver e1000_driver = { .name = e1000_driver_name, .id_table = e1000_pci_tbl, .probe = e1000_probe, .remove = e1000_remove, - .driver = { - .pm = &e1000_pm_ops, - }, + .driver.pm = pm_sleep_ptr(&e1000_pm_ops), .shutdown = e1000_shutdown, .err_handler = &e1000_err_handler }; @@ -5135,7 +5133,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake) return 0; } -static int __maybe_unused e1000_suspend(struct device *dev) +static int e1000_suspend(struct device *dev) { int retval; struct pci_dev *pdev = to_pci_dev(dev); @@ -5147,7 +5145,7 @@ static int __maybe_unused e1000_suspend(struct device *dev) return retval; } -static int __maybe_unused e1000_resume(struct device *dev) +static int e1000_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct net_device *netdev = pci_get_drvdata(pdev); diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index af5d9d97a0d6..cb2d56054bba 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -6950,13 +6950,13 @@ static int __e1000_resume(struct pci_dev *pdev) return 0; } -static __maybe_unused int e1000e_pm_prepare(struct device *dev) +static int e1000e_pm_prepare(struct device *dev) { return pm_runtime_suspended(dev) && pm_suspend_via_firmware(); } -static __maybe_unused int e1000e_pm_suspend(struct device *dev) +static int e1000e_pm_suspend(struct device *dev) { struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev)); struct e1000_adapter *adapter = netdev_priv(netdev); @@ -6979,7 +6979,7 @@ static __maybe_unused int e1000e_pm_suspend(struct device *dev) return rc; } -static __maybe_unused int e1000e_pm_resume(struct device *dev) +static int e1000e_pm_resume(struct device *dev) { struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev)); struct e1000_adapter *adapter = netdev_priv(netdev); @@ -7013,7 +7013,7 @@ static __maybe_unused int e1000e_pm_runtime_idle(struct device *dev) return -EBUSY; } -static __maybe_unused int e1000e_pm_runtime_resume(struct device *dev) +static int e1000e_pm_runtime_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct net_device *netdev = pci_get_drvdata(pdev); @@ -7032,7 +7032,7 @@ static __maybe_unused int e1000e_pm_runtime_resume(struct device *dev) return rc; } -static __maybe_unused int e1000e_pm_runtime_suspend(struct device *dev) +static int e1000e_pm_runtime_suspend(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct net_device *netdev = pci_get_drvdata(pdev); @@ -7919,8 +7919,7 @@ static const struct pci_device_id e1000_pci_tbl[] = { }; MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); -static const struct dev_pm_ops e1000_pm_ops = { -#ifdef CONFIG_PM_SLEEP +static const struct dev_pm_ops e1000e_pm_ops = { .prepare = e1000e_pm_prepare, .suspend = e1000e_pm_suspend, .resume = e1000e_pm_resume, @@ -7928,9 +7927,8 @@ static const struct dev_pm_ops e1000_pm_ops = { .thaw = e1000e_pm_thaw, .poweroff = e1000e_pm_suspend, .restore = e1000e_pm_resume, -#endif - SET_RUNTIME_PM_OPS(e1000e_pm_runtime_suspend, e1000e_pm_runtime_resume, - e1000e_pm_runtime_idle) + RUNTIME_PM_OPS(e1000e_pm_runtime_suspend, e1000e_pm_runtime_resume, + e1000e_pm_runtime_idle) }; /* PCI Device API Driver */ @@ -7939,9 +7937,7 @@ static struct pci_driver e1000_driver = { .id_table = e1000_pci_tbl, .probe = e1000_probe, .remove = e1000_remove, - .driver = { - .pm = &e1000_pm_ops, - }, + .driver.pm = pm_ptr(&e1000e_pm_ops), .shutdown = e1000_shutdown, .err_handler = &e1000_err_handler }; diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c index d748b98274e7..92de609b7218 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c @@ -2342,7 +2342,7 @@ static int fm10k_handle_resume(struct fm10k_intfc *interface) * suspend or hibernation. This function does not need to handle lower PCIe * device state as the stack takes care of that for us. **/ -static int __maybe_unused fm10k_resume(struct device *dev) +static int fm10k_resume(struct device *dev) { struct fm10k_intfc *interface = dev_get_drvdata(dev); struct net_device *netdev = interface->netdev; @@ -2369,7 +2369,7 @@ static int __maybe_unused fm10k_resume(struct device *dev) * system suspend or hibernation. This function does not need to handle lower * PCIe device state as the stack takes care of that for us. **/ -static int __maybe_unused fm10k_suspend(struct device *dev) +static int fm10k_suspend(struct device *dev) { struct fm10k_intfc *interface = dev_get_drvdata(dev); struct net_device *netdev = interface->netdev; @@ -2502,16 +2502,14 @@ static const struct pci_error_handlers fm10k_err_handler = { .reset_done = fm10k_io_reset_done, }; -static SIMPLE_DEV_PM_OPS(fm10k_pm_ops, fm10k_suspend, fm10k_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(fm10k_pm_ops, fm10k_suspend, fm10k_resume); static struct pci_driver fm10k_driver = { .name = fm10k_driver_name, .id_table = fm10k_pci_tbl, .probe = fm10k_probe, .remove = fm10k_remove, - .driver = { - .pm = &fm10k_pm_ops, - }, + .driver.pm = pm_sleep_ptr(&fm10k_pm_ops), .sriov_configure = fm10k_iov_configure, .err_handler = &fm10k_err_handler }; diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 6e7fd473abfd..cb78f9b948ef 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -16596,7 +16596,7 @@ static void i40e_shutdown(struct pci_dev *pdev) * i40e_suspend - PM callback for moving to D3 * @dev: generic device information structure **/ -static int __maybe_unused i40e_suspend(struct device *dev) +static int i40e_suspend(struct device *dev) { struct i40e_pf *pf = dev_get_drvdata(dev); struct i40e_hw *hw = &pf->hw; @@ -16647,7 +16647,7 @@ static int __maybe_unused i40e_suspend(struct device *dev) * i40e_resume - PM callback for waking up from D3 * @dev: generic device information structure **/ -static int __maybe_unused i40e_resume(struct device *dev) +static int i40e_resume(struct device *dev) { struct i40e_pf *pf = dev_get_drvdata(dev); int err; @@ -16693,16 +16693,14 @@ static const struct pci_error_handlers i40e_err_handler = { .resume = i40e_pci_error_resume, }; -static SIMPLE_DEV_PM_OPS(i40e_pm_ops, i40e_suspend, i40e_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(i40e_pm_ops, i40e_suspend, i40e_resume); static struct pci_driver i40e_driver = { .name = i40e_driver_name, .id_table = i40e_pci_tbl, .probe = i40e_probe, .remove = i40e_remove, - .driver = { - .pm = &i40e_pm_ops, - }, + .driver.pm = pm_sleep_ptr(&i40e_pm_ops), .shutdown = i40e_shutdown, .err_handler = &i40e_err_handler, .sriov_configure = i40e_pci_sriov_configure, diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 335fd13e86f7..b9ae6281def5 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -5032,7 +5032,7 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) * * Called when the system (VM) is entering sleep/suspend. **/ -static int __maybe_unused iavf_suspend(struct device *dev_d) +static int iavf_suspend(struct device *dev_d) { struct net_device *netdev = dev_get_drvdata(dev_d); struct iavf_adapter *adapter = netdev_priv(netdev); @@ -5060,7 +5060,7 @@ static int __maybe_unused iavf_suspend(struct device *dev_d) * * Called when the system (VM) is resumed from sleep/suspend. **/ -static int __maybe_unused iavf_resume(struct device *dev_d) +static int iavf_resume(struct device *dev_d) { struct pci_dev *pdev = to_pci_dev(dev_d); struct iavf_adapter *adapter; @@ -5247,14 +5247,14 @@ static void iavf_shutdown(struct pci_dev *pdev) pci_set_power_state(pdev, PCI_D3hot); } -static SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume); static struct pci_driver iavf_driver = { .name = iavf_driver_name, .id_table = iavf_pci_tbl, .probe = iavf_probe, .remove = iavf_remove, - .driver.pm = &iavf_pm_ops, + .driver.pm = pm_sleep_ptr(&iavf_pm_ops), .shutdown = iavf_shutdown, }; diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index fdca4901defa..4ee220821ff1 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -9438,12 +9438,12 @@ static void igb_deliver_wake_packet(struct net_device *netdev) netif_rx(skb); } -static int __maybe_unused igb_suspend(struct device *dev) +static int igb_suspend(struct device *dev) { return __igb_shutdown(to_pci_dev(dev), NULL, 0); } -static int __maybe_unused __igb_resume(struct device *dev, bool rpm) +static int __igb_resume(struct device *dev, bool rpm) { struct pci_dev *pdev = to_pci_dev(dev); struct net_device *netdev = pci_get_drvdata(pdev); @@ -9499,12 +9499,12 @@ static int __maybe_unused __igb_resume(struct device *dev, bool rpm) return err; } -static int __maybe_unused igb_resume(struct device *dev) +static int igb_resume(struct device *dev) { return __igb_resume(dev, false); } -static int __maybe_unused igb_runtime_idle(struct device *dev) +static int igb_runtime_idle(struct device *dev) { struct net_device *netdev = dev_get_drvdata(dev); struct igb_adapter *adapter = netdev_priv(netdev); @@ -9515,12 +9515,12 @@ static int __maybe_unused igb_runtime_idle(struct device *dev) return -EBUSY; } -static int __maybe_unused igb_runtime_suspend(struct device *dev) +static int igb_runtime_suspend(struct device *dev) { return __igb_shutdown(to_pci_dev(dev), NULL, 1); } -static int __maybe_unused igb_runtime_resume(struct device *dev) +static int igb_runtime_resume(struct device *dev) { return __igb_resume(dev, true); } @@ -10143,20 +10143,16 @@ static void igb_nfc_filter_restore(struct igb_adapter *adapter) spin_unlock(&adapter->nfc_lock); } -#ifdef CONFIG_PM -static const struct dev_pm_ops igb_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(igb_suspend, igb_resume) - SET_RUNTIME_PM_OPS(igb_runtime_suspend, igb_runtime_resume, - igb_runtime_idle) -}; -#endif +static _DEFINE_DEV_PM_OPS(igb_pm_ops, igb_suspend, igb_resume, + igb_runtime_suspend, igb_runtime_resume, + igb_runtime_idle); static struct pci_driver igb_driver = { .name = igb_driver_name, .id_table = igb_pci_tbl, .probe = igb_probe, .remove = igb_remove, - .driver.pm = &igb_pm_ops, + .driver.pm = pm_ptr(&igb_pm_ops), .shutdown = igb_shutdown, .sriov_configure = igb_pci_sriov_configure, .err_handler = &igb_err_handler diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c index a4d4f00e6a87..9b5faf7d4c19 100644 --- a/drivers/net/ethernet/intel/igbvf/netdev.c +++ b/drivers/net/ethernet/intel/igbvf/netdev.c @@ -2470,7 +2470,7 @@ static int igbvf_suspend(struct device *dev_d) return 0; } -static int __maybe_unused igbvf_resume(struct device *dev_d) +static int igbvf_resume(struct device *dev_d) { struct pci_dev *pdev = to_pci_dev(dev_d); struct net_device *netdev = pci_get_drvdata(pdev); @@ -2957,7 +2957,7 @@ static const struct pci_device_id igbvf_pci_tbl[] = { }; MODULE_DEVICE_TABLE(pci, igbvf_pci_tbl); -static SIMPLE_DEV_PM_OPS(igbvf_pm_ops, igbvf_suspend, igbvf_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(igbvf_pm_ops, igbvf_suspend, igbvf_resume); /* PCI Device API Driver */ static struct pci_driver igbvf_driver = { @@ -2965,7 +2965,7 @@ static struct pci_driver igbvf_driver = { .id_table = igbvf_pci_tbl, .probe = igbvf_probe, .remove = igbvf_remove, - .driver.pm = &igbvf_pm_ops, + .driver.pm = pm_sleep_ptr(&igbvf_pm_ops), .shutdown = igbvf_shutdown, .err_handler = &igbvf_err_handler }; diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index c3fe62813f43..3f26d03582bb 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -7114,8 +7114,7 @@ static int __igc_shutdown(struct pci_dev *pdev, bool *enable_wake, return 0; } -#ifdef CONFIG_PM -static int __maybe_unused igc_runtime_suspend(struct device *dev) +static int igc_runtime_suspend(struct device *dev) { return __igc_shutdown(to_pci_dev(dev), NULL, 1); } @@ -7150,7 +7149,7 @@ static void igc_deliver_wake_packet(struct net_device *netdev) netif_rx(skb); } -static int __maybe_unused igc_resume(struct device *dev) +static int igc_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct net_device *netdev = pci_get_drvdata(pdev); @@ -7203,12 +7202,12 @@ static int __maybe_unused igc_resume(struct device *dev) return err; } -static int __maybe_unused igc_runtime_resume(struct device *dev) +static int igc_runtime_resume(struct device *dev) { return igc_resume(dev); } -static int __maybe_unused igc_suspend(struct device *dev) +static int igc_suspend(struct device *dev) { return __igc_shutdown(to_pci_dev(dev), NULL, 0); } @@ -7223,7 +7222,6 @@ static int __maybe_unused igc_runtime_idle(struct device *dev) return -EBUSY; } -#endif /* CONFIG_PM */ static void igc_shutdown(struct pci_dev *pdev) { @@ -7338,22 +7336,16 @@ static const struct pci_error_handlers igc_err_handler = { .resume = igc_io_resume, }; -#ifdef CONFIG_PM -static const struct dev_pm_ops igc_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(igc_suspend, igc_resume) - SET_RUNTIME_PM_OPS(igc_runtime_suspend, igc_runtime_resume, - igc_runtime_idle) -}; -#endif +static _DEFINE_DEV_PM_OPS(igc_pm_ops, igc_suspend, igc_resume, + igc_runtime_suspend, igc_runtime_resume, + igc_runtime_idle); static struct pci_driver igc_driver = { .name = igc_driver_name, .id_table = igc_pci_tbl, .probe = igc_probe, .remove = igc_remove, -#ifdef CONFIG_PM - .driver.pm = &igc_pm_ops, -#endif + .driver.pm = pm_ptr(&igc_pm_ops), .shutdown = igc_shutdown, .err_handler = &igc_err_handler, }; diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index e23c3614fb10..97c82e04bf14 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -6944,7 +6944,7 @@ int ixgbe_close(struct net_device *netdev) return 0; } -static int __maybe_unused ixgbe_resume(struct device *dev_d) +static int ixgbe_resume(struct device *dev_d) { struct pci_dev *pdev = to_pci_dev(dev_d); struct ixgbe_adapter *adapter = pci_get_drvdata(pdev); @@ -7052,7 +7052,7 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake) return 0; } -static int __maybe_unused ixgbe_suspend(struct device *dev_d) +static int ixgbe_suspend(struct device *dev_d) { struct pci_dev *pdev = to_pci_dev(dev_d); int retval; @@ -11516,14 +11516,14 @@ static const struct pci_error_handlers ixgbe_err_handler = { .resume = ixgbe_io_resume, }; -static SIMPLE_DEV_PM_OPS(ixgbe_pm_ops, ixgbe_suspend, ixgbe_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(ixgbe_pm_ops, ixgbe_suspend, ixgbe_resume); static struct pci_driver ixgbe_driver = { .name = ixgbe_driver_name, .id_table = ixgbe_pci_tbl, .probe = ixgbe_probe, .remove = ixgbe_remove, - .driver.pm = &ixgbe_pm_ops, + .driver.pm = pm_sleep_ptr(&ixgbe_pm_ops), .shutdown = ixgbe_shutdown, .sriov_configure = ixgbe_pci_sriov_configure, .err_handler = &ixgbe_err_handler diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index a44e4bd56142..c852d8ac0c37 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c @@ -4300,7 +4300,7 @@ static int ixgbevf_change_mtu(struct net_device *netdev, int new_mtu) return 0; } -static int __maybe_unused ixgbevf_suspend(struct device *dev_d) +static int ixgbevf_suspend(struct device *dev_d) { struct net_device *netdev = dev_get_drvdata(dev_d); struct ixgbevf_adapter *adapter = netdev_priv(netdev); @@ -4317,7 +4317,7 @@ static int __maybe_unused ixgbevf_suspend(struct device *dev_d) return 0; } -static int __maybe_unused ixgbevf_resume(struct device *dev_d) +static int ixgbevf_resume(struct device *dev_d) { struct pci_dev *pdev = to_pci_dev(dev_d); struct net_device *netdev = pci_get_drvdata(pdev); @@ -4854,7 +4854,7 @@ static const struct pci_error_handlers ixgbevf_err_handler = { .resume = ixgbevf_io_resume, }; -static SIMPLE_DEV_PM_OPS(ixgbevf_pm_ops, ixgbevf_suspend, ixgbevf_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(ixgbevf_pm_ops, ixgbevf_suspend, ixgbevf_resume); static struct pci_driver ixgbevf_driver = { .name = ixgbevf_driver_name, @@ -4863,7 +4863,7 @@ static struct pci_driver ixgbevf_driver = { .remove = ixgbevf_remove, /* Power Management Hooks */ - .driver.pm = &ixgbevf_pm_ops, + .driver.pm = pm_sleep_ptr(&ixgbevf_pm_ops), .shutdown = ixgbevf_shutdown, .err_handler = &ixgbevf_err_handler -- 2.39.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations 2024-02-10 22:01 ` [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations Jesse Brandeburg @ 2024-02-14 10:37 ` Pucha, HimasekharX Reddy 2024-02-19 9:22 ` Simon Horman 1 sibling, 0 replies; 11+ messages in thread From: Pucha, HimasekharX Reddy @ 2024-02-14 10:37 UTC (permalink / raw) To: Brandeburg, Jesse, intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, Brandeburg, Jesse, Eric Dumazet, Nguyen, Anthony L, Brady, Alan, Jakub Kicinski, Paolo Abeni, David S. Miller > -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Jesse Brandeburg > Sent: Sunday, February 11, 2024 3:31 AM > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; Brandeburg, Jesse <jesse.brandeburg@intel.com>; Eric Dumazet <edumazet@google.com>; Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Brady, Alan <alan.brady@intel.com>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; David S. Miller <davem@davemloft.net> > Subject: [Intel-wired-lan] [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations > > Switch the Intel networking drivers to use the new power management ops > declaration formats and macros, which allows us to drop __maybe_unused, > as well as a bunch of ifdef checking CONFIG_PM. > > This is safe to do because the compiler drops the unused functions, > verified by checking for any of the power management function symbols > being present in System.map for a build without CONFIG_PM. > > If a driver has runtime PM, define the ops with pm_ptr(), and if the > driver has Simple PM, use pm_sleep_ptr(), as well as the new versions of > the macros for declaring the members of the pm_ops structs. > > Checked with network-enabled allnoconfig, allyesconfig, allmodconfig on > x64_64. > > Reviewed-by: Alan Brady <alan.brady@intel.com> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> > --- > e1p-v2: dropped errant idpf change, updated after v2 1/2 updates to > move the declation down for igb_pm_ops. > --- > drivers/net/ethernet/intel/e100.c | 8 +++---- > drivers/net/ethernet/intel/e1000/e1000_main.c | 14 +++++------ > drivers/net/ethernet/intel/e1000e/netdev.c | 22 +++++++---------- > drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 10 ++++---- > drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++++---- > drivers/net/ethernet/intel/iavf/iavf_main.c | 8 +++---- > drivers/net/ethernet/intel/igb/igb_main.c | 24 ++++++++----------- > drivers/net/ethernet/intel/igbvf/netdev.c | 6 ++--- > drivers/net/ethernet/intel/igc/igc_main.c | 24 +++++++------------ > drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +++---- > .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 8 +++---- > 11 files changed, 60 insertions(+), 82 deletions(-) > Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations 2024-02-10 22:01 ` [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations Jesse Brandeburg 2024-02-14 10:37 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy @ 2024-02-19 9:22 ` Simon Horman 2024-02-22 13:05 ` [Intel-wired-lan] " Romanowski, Rafal 1 sibling, 1 reply; 11+ messages in thread From: Simon Horman @ 2024-02-19 9:22 UTC (permalink / raw) To: Jesse Brandeburg Cc: intel-wired-lan, netdev, Alan Brady, Tony Nguyen, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni On Sat, Feb 10, 2024 at 02:01:09PM -0800, Jesse Brandeburg wrote: > Switch the Intel networking drivers to use the new power management ops > declaration formats and macros, which allows us to drop __maybe_unused, > as well as a bunch of ifdef checking CONFIG_PM. > > This is safe to do because the compiler drops the unused functions, > verified by checking for any of the power management function symbols > being present in System.map for a build without CONFIG_PM. > > If a driver has runtime PM, define the ops with pm_ptr(), and if the > driver has Simple PM, use pm_sleep_ptr(), as well as the new versions of > the macros for declaring the members of the pm_ops structs. > > Checked with network-enabled allnoconfig, allyesconfig, allmodconfig on > x64_64. > > Reviewed-by: Alan Brady <alan.brady@intel.com> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations 2024-02-19 9:22 ` Simon Horman @ 2024-02-22 13:05 ` Romanowski, Rafal 0 siblings, 0 replies; 11+ messages in thread From: Romanowski, Rafal @ 2024-02-22 13:05 UTC (permalink / raw) To: Simon Horman, Brandeburg, Jesse Cc: netdev@vger.kernel.org, Eric Dumazet, Nguyen, Anthony L, Brady, Alan, Jakub Kicinski, intel-wired-lan@lists.osuosl.org, Paolo Abeni, David S. Miller > -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Simon Horman > Sent: Monday, February 19, 2024 10:22 AM > To: Brandeburg, Jesse <jesse.brandeburg@intel.com> > Cc: netdev@vger.kernel.org; Eric Dumazet <edumazet@google.com>; Nguyen, > Anthony L <anthony.l.nguyen@intel.com>; Brady, Alan > <alan.brady@intel.com>; Jakub Kicinski <kuba@kernel.org>; intel-wired- > lan@lists.osuosl.org; Paolo Abeni <pabeni@redhat.com>; David S. Miller > <davem@davemloft.net> > Subject: Re: [Intel-wired-lan] [PATCH iwl-next v1 2/2] net: intel: implement > modern PM ops declarations > > On Sat, Feb 10, 2024 at 02:01:09PM -0800, Jesse Brandeburg wrote: > > Switch the Intel networking drivers to use the new power management > > ops declaration formats and macros, which allows us to drop > > __maybe_unused, as well as a bunch of ifdef checking CONFIG_PM. > > > > This is safe to do because the compiler drops the unused functions, > > verified by checking for any of the power management function symbols > > being present in System.map for a build without CONFIG_PM. > > > > If a driver has runtime PM, define the ops with pm_ptr(), and if the > > driver has Simple PM, use pm_sleep_ptr(), as well as the new versions > > of the macros for declaring the members of the pm_ops structs. > > > > Checked with network-enabled allnoconfig, allyesconfig, allmodconfig > > on x64_64. > > > > Reviewed-by: Alan Brady <alan.brady@intel.com> > > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> > > Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-02-22 13:05 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-02-10 22:01 [PATCH iwl-next v1 0/2] net: intel: cleanup power ops Jesse Brandeburg 2024-02-10 22:01 ` [PATCH iwl-next v1 1/2] igb: simplify pci ops declaration Jesse Brandeburg 2024-02-14 10:32 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy 2024-02-19 9:15 ` Simon Horman 2024-02-20 16:48 ` Jesse Brandeburg 2024-02-21 10:35 ` Simon Horman 2024-02-21 11:02 ` [Intel-wired-lan] " Paul Menzel 2024-02-10 22:01 ` [PATCH iwl-next v1 2/2] net: intel: implement modern PM ops declarations Jesse Brandeburg 2024-02-14 10:37 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy 2024-02-19 9:22 ` Simon Horman 2024-02-22 13:05 ` [Intel-wired-lan] " Romanowski, Rafal
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).