The following commit changes calls to pm_idle into first trying 
cpuidle_call_idle() and if that returns non-zero to fall back to
call pm_idle().

commit a0bfa1373859e9d11dc92561a8667588803e42d8
Author: Len Brown <len.br...@intel.com>
Date:   Fri Apr 1 19:34:59 2011 -0400

    cpuidle: stop depending on pm_idle

However cpuidle_call_idle() will return -ENODEV if it is supposed to be
disabled by cpuidle.off. Which then causes pm_idle() to be called.

This has some bad interaction with the following change that tries to
make use of disabling cpuidle in Xen to fall back to hlt.

commit d91ee5863b71e8c90eaf6035bff3078a85e2e7b5
Author: Len Brown <len.br...@intel.com>
Date:   Fri Apr 1 18:28:35 2011 -0400

    cpuidle: replace xen access to x86 pm_idle and default_idle

The problem I see is that select_idle_routine() is called from 
arch/x86/kernel/cpu/common.c and since Xen setup does not set pm_idle anymore, 
it can cause mwait_idle or amd_e400_idle functions get selected.
In testing it seem amd_e400_idle in PVM domU at least does not immediately 
cause problems, but mwait_idle just causes crashes. From the reports I have 
this may be related to older Hypervisors (3.1 and older) not clearing the mwait 
capability. But overall there seems something wrong in the interaction.

I am not really sure whether the logic of calling pm_idle() on all
errors from cpuidle_call_idle() is already flawed or the assumption in
the Xen patch about being able to prevent the wrong idle function by
turning cpuidle off is wrong.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/881076

Title:
  precise kernels do not boot on ec2

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/881076/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to