[Linux-kernel-mentees] [PATCH v1 2/2] realtek/8139cp: Remove Legacy Power Management

Bjorn Helgaas 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 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
> or
> #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 mailing list