linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Trinabh Gupta <trinabh@linux.vnet.ibm.com>
Cc: Len Brown <lenb@kernel.org>,
	arjan@linux.intel.com, Stephen Rothwell <sfr@canb.auug.org.au>,
	peterz@infradead.org, suresh.b.siddha@intel.com,
	benh@kernel.crashing.org, venki@google.com, ak@linux.intel.com,
	linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com
Subject: Re: [RFC PATCH V4 5/5] cpuidle: cpuidle driver for apm
Date: Thu, 24 Mar 2011 21:51:31 +0530	[thread overview]
Message-ID: <20110324162131.GA16408@dirshya.in.ibm.com> (raw)
In-Reply-To: <4D8B550D.5000409@linux.vnet.ibm.com>

* Trinabh Gupta <trinabh@linux.vnet.ibm.com> [2011-03-24 19:58:29]:

> 
> 
> On 03/24/2011 02:02 AM, Len Brown wrote:
> >>>Also wondering why you would ever have a different idle routine on
> >>>different cpus?
> >>
> >>Yes, this is an ongoing debate. Apparently it is a possibility
> >>because of ACPI bugs. CPU's can have asymmetric C-states
> >>and overall different idle routines on different cpus. Please
> >>refer to http://lkml.org/lkml/2009/9/24/132 and
> >>https://lkml.org/lkml/2011/2/10/37 for a discussion around this.
> >
> >Althought the ACPI specification allows the BIOS to tell the OS
> >about different C-states per-processor, I know of zero system
> >in the field and zero systems in development that require that
> >capability.  That isn't a guarantee that capability will never
> >be used, but I'm not holding my breath.
> >
> >If there are systems with broken tables that make them
> >appear asymetric, then we should have a workaround that handles
> >that case, rather than complicating the normal code for
> >the broken case.
> >
> >So I recommend deleting the extra per-cpu registration stuff
> >unless there is some other architecture that requires it
> >and can't hadle the asymmetry in another way.

Hi Len,

The fear of breaking legacy hardware is what is holding us.  Arjan
also pointed that there are systems that has asymmetric C-States
either intentionally or due to a bug.  I agree with you that we should
remove per-cpu registration at this point and move forward with
a single registration.  We can workaround the corner cases.

> Yes, lets go forward with removal of per-cpu registration
> and handle rare case of asymmetry in some other may.

Yes.  Lets discuss the design/problems on the other patch series.
(http://lkml.org/lkml/2011/3/22/161)

> Using intersection or union of C-states for each cpu may
> be a solution. Using intersection or lowest common C-state
> has the corner case that we could have packages/cores
> supporting a new lower C-state in case of thermal limit and
> they would want OS to go to this state. Using intersection
> or lowest common C-state may prevent this.
> 
> Another option is to use union of C-states;
> but I am not sure what happens if a CPU uses a state that
> is not reported for it???
> 
> Maybe there is some other way to handle asymmetry ??

The simplest method will be a union of all C-States.  Basically let
the CPU that reports the maximum C-States to register or override the
current setup.  During boot-up allow the first CPU to do the
registration, but later override if another CPU comes up with more
C-States.

This will work assuming that calling a new (deeper) C-State on CPUs
that did not report them will cause no harm.  It should degenerate to
closest supported C-State.

> >
> >>I have posted a patch series that does global registration
> >>i.e same idle routines for each cpu. Please check
> >>http://lkml.org/lkml/2011/3/22/161 . That series applies on
> >>top of this series. Global registration significantly
> >>simplifies the design, but still we are not sure about the
> >>direction to take.
> >
> >I'll review that.
> Thanks; please review especially the data structure changes
> https://lkml.org/lkml/2011/3/22/162

Single registration will allow us to combine struct cpuidle_device and
struct cpuidle_driver, and simplify the framework for large systems.
AFAIK other archs like powerpc or ARM would not need per-cpu
definitions.

--Vaidy


  reply	other threads:[~2011-03-24 16:21 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-22 12:32 [RFC PATCH V4 0/5] cpuidle: Cleanup pm_idle and include driver/cpuidle.c in-kernel Trinabh Gupta
2011-03-22 12:32 ` [RFC PATCH V4 1/5] cpuidle: Remove pm_idle pointer for x86 Trinabh Gupta
2011-03-23  1:00   ` Stephen Rothwell
2011-03-23 10:10     ` Trinabh Gupta
2011-03-22 12:32 ` [RFC PATCH V4 2/5] cpuidle: list based cpuidle driver registration and selection Trinabh Gupta
2011-03-23  2:59   ` Len Brown
2011-03-23  9:22     ` Trinabh Gupta
2011-03-23 20:51       ` Len Brown
2011-03-24  4:41         ` Len Brown
2011-03-24 14:13         ` Trinabh Gupta
2011-03-24 16:52           ` Vaidyanathan Srinivasan
2011-03-25  7:13             ` Len Brown
2011-03-25  7:05           ` Len Brown
2011-03-25 15:35             ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-03-31  2:25               ` Len Brown
2011-03-22 12:33 ` [RFC PATCH V4 3/5] cpuidle: default idle driver for x86 Trinabh Gupta
2011-03-23  3:13   ` Len Brown
2011-03-23  9:31     ` Trinabh Gupta
2011-03-24 16:32       ` Vaidyanathan Srinivasan
2011-03-22 12:33 ` [RFC PATCH V4 4/5] cpuidle: driver for xen Trinabh Gupta
2011-03-22 14:50   ` Konrad Rzeszutek Wilk
2011-03-23  9:57     ` Trinabh Gupta
2011-03-24  7:18       ` Len Brown
2011-03-24 12:05         ` Konrad Rzeszutek Wilk
2011-03-25  7:19           ` Len Brown
2011-03-25 14:43             ` [Xen-devel] " Jeremy Fitzhardinge
2011-03-25 14:38           ` Jeremy Fitzhardinge
2011-03-31  2:02             ` Len Brown
2011-03-31 21:26               ` Len Brown
2011-03-31 22:36                 ` Jeremy Fitzhardinge
2011-04-01  3:03                   ` Len Brown
2011-03-22 12:33 ` [RFC PATCH V4 5/5] cpuidle: cpuidle driver for apm Trinabh Gupta
2011-03-23  1:14   ` Stephen Rothwell
2011-03-23 10:25     ` Trinabh Gupta
2011-03-23 20:32       ` Len Brown
2011-03-24 14:28         ` Trinabh Gupta
2011-03-24 16:21           ` Vaidyanathan Srinivasan [this message]
2011-03-25  7:24           ` Len Brown
2011-03-25 18:01             ` Vaidyanathan Srinivasan
2011-03-31  2:17               ` cpuidle asymmetry (was Re: [RFC PATCH V4 5/5] cpuidle: cpuidle driver for apm) Len Brown
2011-03-31 13:18                 ` Peter Zijlstra
2011-04-01  4:09                   ` Len Brown
2011-04-01  8:15                     ` Dipankar Sarma
2011-04-01 14:38                       ` Arjan van de Ven
2011-04-03 16:18                         ` Dipankar Sarma
2011-04-01 14:02                     ` Peter Zijlstra
2011-04-04 14:32                       ` Dipankar Sarma
2011-04-05 15:01                         ` Peter Zijlstra
2011-04-05 15:48                           ` Dipankar Sarma
2011-04-01  7:02                 ` Trinabh Gupta
2011-03-24  4:27   ` [RFC PATCH V4 5/5] cpuidle: cpuidle driver for apm Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110324162131.GA16408@dirshya.in.ibm.com \
    --to=svaidy@linux.vnet.ibm.com \
    --cc=ak@linux.intel.com \
    --cc=arjan@linux.intel.com \
    --cc=benh@kernel.crashing.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=sfr@canb.auug.org.au \
    --cc=suresh.b.siddha@intel.com \
    --cc=trinabh@linux.vnet.ibm.com \
    --cc=venki@google.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).