xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Bader <stefan.bader@canonical.com>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>
Cc: Len Brown <len.brown@intel.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: Regression in 3.1 causes Xen to use wrong idle routine
Date: Wed, 26 Oct 2011 12:24:17 +0200	[thread overview]
Message-ID: <4EA7DFD1.9060608@canonical.com> (raw)

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.brown@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.brown@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 to be 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 incorrect.
One quick fix could be to add some Xen case into select_idle_routine() which
picks default_idle...

-Stefan

             reply	other threads:[~2011-10-26 10:24 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-26 10:24 Stefan Bader [this message]
2011-10-26 13:30 ` Regression in 3.1 causes Xen to use wrong idle routine Konrad Rzeszutek Wilk
2011-10-26 13:36   ` Stefan Bader
2011-10-26 13:48     ` Konrad Rzeszutek Wilk
2011-10-26 13:57       ` Stefan Bader
2011-11-09 17:58         ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-11-10  8:33           ` Stefan Bader
2011-11-10 14:55             ` Konrad Rzeszutek Wilk
2011-11-10 15:35               ` Stefan Bader
2011-11-13  3:46 ` Len Brown
2011-11-13 16:59   ` [Xen-devel] " Keir Fraser
2011-11-14 18:19     ` Konrad Rzeszutek Wilk
2011-11-14 20:11       ` Konrad Rzeszutek Wilk
2011-11-14 14:31   ` Konrad Rzeszutek Wilk
2011-11-14 18:26     ` [Xen-devel] " Konrad Rzeszutek Wilk

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=4EA7DFD1.9060608@canonical.com \
    --to=stefan.bader@canonical.com \
    --cc=konrad.wilk@oracle.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --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).