http://bugzilla.kernel.org/show_bug.cgi?id=6519
------- Additional Comments From [EMAIL PROTECTED] 2006-05-15 13:39 -------
On Mon, 15 May 2006, Andrew Morton wrote:
> Linus Torvalds <[EMAIL PROTECTED]> wrote:
> >
> > Btw, I think we can close this report, aside from the question about why
> > that "no-hlt" was there in the first place. I bet the power usage will go
> > back to where it was with ACPI without that thing.
>
> Thanks, Linus.
>
> But.. Was Dave using no-hlt on earlier kernels? If so, why didn't they
> get hot as well?
Exactly because ACPI _ignored_ that option, so it would use the broken
ACPI C1 sleepstate.
So ACPI just does:
/*
* Invoke C1.
* Use the appropriate idle routine, the one that would
* be used without acpi C-states.
*/
if (pm_idle_save)
pm_idle_save();
else
acpi_safe_halt();
where acpi_safe_halt() just does
static void acpi_safe_halt(void)
{
clear_thread_flag(TIF_POLLING_NRFLAG);
smp_mb__after_clear_bit();
if (!need_resched())
safe_halt();
set_thread_flag(TIF_POLLING_NRFLAG);
}
and here probably pm_idle_save was NULL.
In contrast, the main CPU idle wil do
...
idle = pm_idle;
if (!idle)
idle = default_idle;
if (cpu_is_offline(cpu))
play_dead();
__get_cpu_var(irq_stat).idle_timestamp = jiffies;
idle();
...
ie if pm_idle is NULL (which is tha ACPI "saved_pm_idle") it will use
default_idle, which in turn does
if (!hlt_counter && boot_cpu_data.hlt_works_ok) {
clear_thread_flag(TIF_POLLING_NRFLAG);
smp_mb__after_clear_bit();
while (!need_resched()) {
local_irq_disable();
if (!need_resched())
safe_halt();
else
local_irq_enable();
}
set_thread_flag(TIF_POLLING_NRFLAG);
} else {
while (!need_resched())
cpu_relax();
}
ie it _honors_ that hlt_works_ok flag, unlike the ACPI one.
Now, I'm not saying that ACPI should honor the hlt_works_ok flag, because
ACPI wouldn't _exist_ on the kind of old machines hat needed it, but I
think it explains why ACPI ended up running in a cooler C1 than the normal
idle routine, which would just end up doing that endless loop of
"cpu_relax()" (which is not a halt, but a special no-op).
Linus
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
acpi-bugzilla mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla