[Linux-kernel-mentees] [PATCH v1 2/2] realtek/8139cp: Remove Legacy Power Management
helgaas at kernel.org
Fri Apr 24 12:44:32 UTC 2020
On Fri, Apr 24, 2020 at 04:01:43PM +0530, Vaibhav Gupta wrote:
> On Fri, 24 Apr 2020 at 09:17, Bjorn Helgaas <helgaas at kernel.org> wrote:
> > On Thu, Apr 23, 2020 at 06:58:01PM +0530, Vaibhav Gupta wrote:
> > > Upgrade Power Management from legacy to generic using dev_pm_ops.
> > >
> > > Remove pci_save_sate(), pci_set_state(), etc. No need of directive
> > > '#ifdef CONFIG_PM' as, if CONFIG_PM is not defined, the binding
> > > will be by deafult set to NULL.
> > s/deafult/default/
> > I didn't quite follow this argument. SIMPLE_DEV_PM_OPS() is defined
> > to SET_SYSTEM_SLEEP_PM_OPS(), and SET_SYSTEM_SLEEP_PM_OPS() is defined
> > to nothing unless CONFIG_PM_SLEEP (not CONFIG_PM).
> yes, and we can find about CONFIG_PM_SLEEP inside kernel/power/kconfig
> It is defined as:
> config PM_SLEEP
> def_bool y
> depends on SUSPEND || HIBERNATE_CALLBACKS
> select PM
> select SRCU
> Hence it is selecting CONFIG_PM. So any of the macro check works.So i
> should go with
> #ifded CONFIG_PM
> #ifdef CONFIG_PM_SLEEP ?
Well, the point was that it's possible to have CONFIG_PM=y but
CONFIG_PM_SLEEP unset. In that case, using "#ifdef CONFIG_PM" will
mean those functions will be compiled but not referenced.
> > But in any case, we don't want cp_suspend() and cp_resume() to be
> > compiled at all if they're not referenced. So I think converting the
> > "#ifdef CONFIG_PM" to "#ifdef CONFIG_PM_SLEEP" is the right thing.
> Actually I removed it because Andy also removed them in
> 226e6b866d74, thought it has to be done that way.
Hmm, yes, I see that. I wish we had one canonical way to do this.
In 226e6b866d74 ("gpio: pch: Convert to dev_pm_ops"), I see that Andy
also added "__maybe_unused", which I think turns off the compiler
warning about the function being unused.
I had been looking at recent additions of SIMPLE_DEV_PM_OPS() via
$ git log -p drivers/
and searching with "/^\+.*SIMPLE_DEV_PM_OPS". There's a mix of using
"#ifdef CONFIG_PM_SLEEP" and using "__maybe_unused", but it does look
like "__maybe_unused" is winning. It leaves unusable code in the
image but arguably looks a little prettier.
So I guess I'm fine with either way. But I do think we need either
"#ifdef CONFIG_PM_SLEEP" or "__maybe_unused" so we don't get compiler
More information about the Linux-kernel-mentees