From: Len Brown <lenb@kernel.org>
To: Thomas Renninger <trenn@suse.de>
Cc: linux-pm@lists.linux-foundation.org, x86@kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [linux-pm] idle-test patches queued for upstream
Date: Thu, 27 May 2010 20:59:07 -0400 (EDT) [thread overview]
Message-ID: <alpine.LFD.2.00.1005272023510.24823@localhost.localdomain> (raw)
In-Reply-To: <201005271045.33500.trenn@suse.de>
> > ... we think we can do better than ACPI.
> Why exactly? Is there any info missing in the ACPI tables?
> Or is this just to be more independent from OEMs?
ACPI has a few fundmental flaws here. One is that it reports
exit latency instead of break-even power duration.
The other is that it requires a BIOS writer to
get the tables right.
Both of these are fatal flaws.
There are also more subtle problems, like bogus ACPI implementations
mapping LAPIC breaking C-states to ACPI-C2, causing Linux to need
to assume the LAPIC is always broken in in C2 -- which is erroneous.
I'll be speaking on this topic at length at Linuxcon this summer.
> > Indeed, on my (production level commerically available) Nehalem desktop
> > the ACPI tables are broken and an ACPI OS idles at 100W. With this
> > driver the box idles at 85W.
> What exactly was broken there?
Dell's BIOS developer botched a bug fix immediately before the system
went to market and disabled support for all ACPI C-states except C1.
After several month of shipping systems, they still were unable
to ship them with a fixed BIOS.
Of course, besides a 15% idle power hit,the other effect of that BIOS issue
was to disable all Turbo frequencies -- which is a somewhat important
feature on a Core-i7 desktop...
> IMO this is a step backward.
I don't dispute your right to have an opinion:-)
> CPUfreq runs rather well on nearly every machine supporting it without
> tons of static frequency tables in kernel. Even powernow-k8 might get merged
> into acpi-cpufreq.
There are a couple of important differences between cpufreq and idle
state enumeration. p-states are per-bin within each model.
Idle states not only span bins within a model, they span multiple
models which span multiple years. Note also the idle tables are
validated at run-time by CPUID.MWAIT, which means the same
table can be used for multiple parts -- the parts themselves
know which states they have -- and they can tell us.
So I don't expect a proliferation of idle tables in intel_idle.
I do expect to tune some of the latencies based on some of
the information that Intel instructs BIOS writers to convey,
but they fail to convey. In particular, the actual latencies
and power break-even points of the same model in different
configurations are actually different. I've not seen a single
BIOS get that part rigiht.
I expect a new table to cover sandy bridge plus the generation after it.
> Intel set up a huge ACPI API for this and now it's not used anymore?!?
> Will these parts get obsoleted in a future spec?
Both p-states and c-states will be moving to a more native enumeration
method - but there will still be BIOS ACPI support wrapping that
enumeration as long as somebody wants to run a legacy ACPI OS that
knows nothing else.
> While for C-states there are not that many static entries needed, another
> drawback could be that OEMs will disable/hide C-states on purpose.
Yes, there is a real possibility that a system has a device in it
that malfunctions when a deep C-state is used. On Linux, we
invented PM_QOS to address exactly this problem.
The number of devices requiring PM_QOS users is still quite small.
> Using ACPI table based C-states by default and using intel_idle.enable=1
> or similar for workarounds sounds safer.
> At least as long as the driver is experimental.
I plan to remove the EXPERIMENTAL in 1 release.
> Does Windows use ACPI C-state info for idle?
Yes, Windows uses ACPI.
On the Dell above, that is why Linux consumes 15% less idle power
and why Linux can take advantage of turbo mode and Windows can not.
cheers,
Len Brown, Intel Open Source Technology Center
next prev parent reply other threads:[~2010-05-28 0:59 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-27 2:42 idle-test patches queued for upstream Len Brown
2010-05-27 2:42 ` [PATCH 1/8] cpuidle: fail to register if !CONFIG_CPU_IDLE Len Brown
2010-05-27 2:42 ` [PATCH 2/8] cpuidle: add cpuidle_unregister_driver() error check Len Brown
2010-05-27 3:14 ` Andrew Morton
2010-05-27 5:11 ` [PATCH-v2 " Len Brown
2010-05-27 5:13 ` Andrew Morton
2010-05-27 2:42 ` [PATCH 3/8] cpuidle: make cpuidle_curr_driver static Len Brown
2010-05-27 5:27 ` [PATCH-v2 " Len Brown
2010-05-27 18:40 ` Luck, Tony
2010-05-27 23:30 ` Len Brown
2010-05-27 2:42 ` [PATCH 4/8] ACPI: allow a native cpuidle driver to displace ACPI Len Brown
2010-05-27 2:42 ` [PATCH 5/8] sched: clarify commment for TS_POLLING Len Brown
2010-05-27 5:25 ` (No subject header) Milton Miller
2010-05-27 5:47 ` Len Brown
2010-05-27 5:53 ` [PATCH-v2 5/8] sched: clarify commment for TS_POLLING Len Brown
2010-05-27 2:42 ` [PATCH 6/8] acpi_pad: uses MONITOR/MWAIT, so it doesn't need to clear TS_POLLING Len Brown
2010-05-27 2:42 ` [PATCH 7/8] ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case Len Brown
2010-05-27 2:42 ` [PATCH 8/8] intel_idle: create a native cpuidle driver for select intel processors Len Brown
2010-05-27 3:44 ` Andrew Morton
2010-05-28 3:57 ` Len Brown
2010-05-30 9:20 ` Andi Kleen
2010-05-27 8:53 ` [linux-pm] " Thomas Renninger
2010-05-28 1:44 ` Len Brown
2010-05-28 7:46 ` Thomas Renninger
2010-05-28 17:38 ` Len Brown
2010-05-29 4:17 ` Thomas Renninger
2010-05-27 14:14 ` Kevin Hilman
2010-05-27 14:22 ` Arjan van de Ven
2010-05-27 14:36 ` Kevin Hilman
2010-05-28 0:22 ` Len Brown
2010-05-28 17:28 ` Kevin Hilman
2010-05-27 14:51 ` [linux-pm] " Igor Stoppa
2010-05-28 3:14 ` Arjan van de Ven
2010-05-28 17:27 ` Kevin Hilman
2010-05-29 0:38 ` Arjan van de Ven
2010-05-28 2:32 ` Chase Douglas
2010-05-28 4:16 ` Len Brown
2010-05-28 15:09 ` Chase Douglas
2010-05-28 17:43 ` Len Brown
2010-05-28 19:51 ` Chase Douglas
2010-05-28 20:14 ` Chase Douglas
2010-05-27 8:45 ` [linux-pm] idle-test patches queued for upstream Thomas Renninger
2010-05-28 0:59 ` Len Brown [this message]
2010-05-28 8:07 ` Thomas Renninger
2010-05-28 17:42 ` Len Brown
2010-06-16 7:53 ` Pavel Machek
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=alpine.LFD.2.00.1005272023510.24823@localhost.localdomain \
--to=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=trenn@suse.de \
--cc=x86@kernel.org \
/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