Re: [PATCH 1/6] PM / sleep: Re-implement suspend-to-idle handling

Rafael J. Wysocki
2015-02-12T16:18:00Z

On Thursday, February 12, 2015 02:14:20 PM Peter Zijlstra wrote:
> On Wed, Feb 11, 2015 at 05:01:09AM +0100, Rafael J. Wysocki wrote:
> > +/* Suspend-to-idle state machnine. */
> > +enum freeze_state {
> > + FREEZE_STATE_NONE, /* Not suspended/suspending. */
> > + FREEZE_STATE_ENTER, /* Enter suspend-to-idle. */
> > + FREEZE_STATE_WAKE, /* Wake up from suspend-to-idle. */
> > +};
> > +
> > +static enum freeze_state __read_mostly suspend_freeze_state;
> > +static DEFINE_SPINLOCK(suspend_freeze_lock);
> > +
> > +bool idle_should_freeze(void)
> > +{
> > + return unlikely(suspend_freeze_state == FREEZE_STATE_ENTER);
> > +}
>
> I don't see how a compiler can propagate the unlikely through an actual
> function call. AFAICT that needs to be an inline function for that to
> work.

Oh.

That was silly, I'll send an update later today.

> It would mean exposing suspend_freeze_state and the enum; is there a
> reason not to want to do that?

Not really.