Re: [PATCH] cpuidle: Make cpuidle_enable_device() call poll_idle_init()

From: Thomas Renninger
Date: Tue Jan 11 2011 - 04:37:19 EST


On Tuesday 11 January 2011 01:05:53 Rafael J. Wysocki wrote:
> On Tuesday, January 11, 2011, Rafael J. Wysocki wrote:
> > On Tuesday, January 11, 2011, Len Brown wrote:
> > > > /**
> > > > * cpuidle_enable_device - enables idle PM for a CPU
> > > > * @dev: the CPU
> > > > @@ -176,6 +215,8 @@ int cpuidle_enable_device(struct cpuidle
> > > > ret = __cpuidle_register_device(dev);
> > > > if (ret)
> > > > return ret;
> > > > + } else {
> > > > + poll_idle_init(dev);
> > > > }
> > >
> > > how about calling poll_idle_init() unconditionally here
> > > and deleting the call to it from within __cpuidle_register_device()?
> >
> > Fine by me, as long as poll_idle_init() is called before the conditional. :-)
>
> In fact, it even doesn't need to be called before the conditional.
>
> So fine by me anyway.
What exactly was broken?
Is it only sysfs values?
Looks like an uninitialized "poll" state can cause cpuidle
to not enter "poll" state when it should or enter "poll" when
it should not.
Hm, if cpuidle would try to call state[0]->enter,
it might even segfault?
Even not that many machines might be affected because most won't
implement runtime C-state changes, shouldn't this still be
submitted for stable@ kernels?

Thanks,

Thomas
--
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/