Re: [RFC PATCH V1 0/2] cpuidle: global registration of idle stateswith per-cpu statistics
From: Vaidyanathan Srinivasan
Date: Fri Mar 25 2011 - 13:20:34 EST
* Len Brown <lenb@xxxxxxxxxx> [2011-03-25 03:28:59]:
> On Tue, 22 Mar 2011, Trinabh Gupta wrote:
>
> > This patch series is an early RFC to discuss the feasibility of
> > avoiding registering of idle states from each cpu.
> >
> > The core change is to split the cpuidle_device structure into parts
> > that can be global and parts that has to remain per-cpu. The per-cpu
> > pieces are mostly generic statistics that can be independent of
> > current running driver.
> >
> > Motivation:
> > * Simplify the cpuidle subsystem framework and have
> > registration/unregistration done by single cpu.
> >
> > * Minimise the data structure that needs to be maintained for multiple
> > cpuidle drivers
> >
> > * Reference: https://lkml.org/lkml/2011/2/10/37
> >
> > Advantages:
> > * Make the cpuidle framework simple for most use cases where C-States
> > are symmetric. In case there are asymmetric C-States detected,
> > fallback mechanism should be incorporated to maintain the system
> > functional
> > https://lkml.org/lkml/2011/2/10/257
> > https://lkml.org/lkml/2011/2/10/37
> >
> > * Non x86 archs that does not have asymmetric C-States like POWER, may
> > not need the fallback mechanism and hence the framework will be
> > simple for most use cases.
> >
> > Disadvantages:
> > * Asymmetric C-States are part of x86 ACPI specification. Incorrect
> > handling may functionally affect the system
>
> I think this is a non-issue.
Hi Len,
Thanks for the confirmation. This gives us the right direction to
proceed with the cleanup.
> > * Incorporating per-cpu masks for each state to allow/dis-allow global
> > states on subset of CPUs may result in an implementation that is
> > not better than current solution of having per-cpu states.
>
> I don't think this is needed.
>
> > This patch series applies on top of the pm_idle cleanup patch
> > https://lkml.org/lkml/2011/3/22/150 (cpuidle: Cleanup pm_idle and
> > include driver/cpuidle.c in-kernel)
> >
> > This patch series is tested on x86 Nehalem system with multiple ACPI
> > C-States.
> >
> > This patch series has limitations of not handling multiple driver
> > registration and switching between drivers on all CPUs mainly due to
> > incomplete handling of per-cpu enable/disable and driver_data.
>
> I think this series is more important than the feature of multiple
> driver/system support, and thus should come first.
Removing pm_idle() gets us to the situation where we have to support
multiple registration to allow default_idle driver to register and do
mwait. Your cleanup patch to x86 idle will make the transition much
simple. Lets us have removal of pm_idle() and removal of per-cpu
registration in the same patch series as the next step.
--Vaidy
--
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/