Re: [PATCH v7 1/2] PM / sleep: Go direct_complete if driver has no callbacks

From: Rafael J. Wysocki
Date: Wed Sep 30 2015 - 16:49:22 EST


On Wednesday, September 30, 2015 03:59:48 PM Tomeu Vizoso wrote:
> On 30 September 2015 at 15:05, Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote:
> > On Wednesday, September 30, 2015 01:33:29 PM Ulf Hansson wrote:
> >> On 30 September 2015 at 11:58, Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> wrote:
> >> > @@ -1369,6 +1372,8 @@ int pm_genpd_remove_device(struct generic_pm_domain *genpd,
> >> >
> >> > genpd_free_dev_data(dev, gpd_data);
> >> >
> >> > + device_check_pm_callbacks(dev);
> >> > +
> >> > return 0;
> >>
> >> I can't tell whether this is an interesting feature to use for devices
> >> that gets attached to the ACPI PM domain. Although, you currently
> >> doesn't deal with that case, and too me I think this looks a bit
> >> weird/unsymmetrical.
> >
> > Good point.
> >
> > It needs to be done in every situation where a PM domain is or can be used.
> >
> > I guess we might require all PM domains to be attached to devices after
> > a successful probe at the latest (no PM domains should be attached/detached
> > after probe succeeds IOW), in which case it should be sufficient to do the
> > device_check_pm_callbacks() thing each time after probe successds.
> >
> > Thoughts?
>
> Sound good to me. How were you thinking of doing that? Manually
> checking that that's currently the case and adding a WARN() if a
> pm_domain is attached to a device that has been probed already?

I guess we need a function for setting/clearing the pm_domain pointer that
will check whether or not the device has been probed and WARN() in that case.

Then, convert all users of PM domains to use that function instead of
manipulating the pointer directly.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/