From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org,
len.brown@intel.com, tglx@linutronix.de, jeremy@goop.org,
hpa@zytor.com, bp@alien8.de, tj@kernel.org, trenn@suse.de
Cc: stable@kernel.org, mingo@redhat.com, xen-devel@lists.xensource.com
Subject: Re: [Xen-devel] [PATCH 1/3] cpuidle: If disable_cpuidle() is called, set pm_idle to default_idle.
Date: Wed, 9 Nov 2011 23:06:44 -0500 [thread overview]
Message-ID: <20111110040644.GA5434@phenom.dumpdata.com> (raw)
In-Reply-To: <1320786914-10541-2-git-send-email-konrad.wilk@oracle.com>
On Tue, Nov 08, 2011 at 04:15:12PM -0500, Konrad Rzeszutek Wilk wrote:
> . however we ignore the disable_cpuidle() directive and
> in select_idle_routine() set it to type preferred by the CPU.
>
> This is a regression introduced by
>
> commit a0bfa1373859e9d11dc92561a8667588803e42d8
> Author: Len Brown <len.brown@intel.com>
> Date: Fri Apr 1 19:34:59 2011 -0400
>
> cpuidle: stop depending on pm_idle
>
> specifically this patch:
>
> 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
>
> ..scribble on pm_idle and access default_idle,
> have it simply disable_cpuidle() so acpi_idle will not load and
> architecture default HLT will be used.
>
> .. but the default HLT does not get used. Instead we end up in the
> situation that select_idle_routine() is called from arch/x86/kernel/cpu/common.c
> and if we called cpuidle_disable(), then the pm_idle is not set, and
> we end up setting pm_idle to mwait_idle or amd_e400_idle.
>
> This patch uses the cpuidle_disabled() functionality and
> makes select_idle_routine() adhere to that.
>
> Reported-by: Stefan Bader <stefan.bader@canonical.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
And just found that there is a BZ for this as well:
https://bugzilla.redhat.com/show_bug.cgi?id=739499
And this patch fixes the Linux kernel to boot under Amazon EC2.
Another option which I played with today was to do this instead:
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 46d6d21..45136f2 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -448,6 +448,6 @@ void __init xen_arch_setup(void)
#endif
disable_cpuidle();
boot_option_idle_override = IDLE_HALT;
-
+ pm_idle = default_idle;
fiddle_vdso();
}
But that defeats the whole purpose of the patch series that Len developed
where we would _not_ scribble on the pm_idle. <sigh>
Thoughts?
>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: x86@kernel.org
> CC: Len Brown <len.brown@intel.com>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Tejun Heo <tj@kernel.org>
> CC: Thomas Renninger <trenn@suse.de>
> CC: stable@kernel.org
> ---
> arch/x86/kernel/process.c | 5 +++++
> include/linux/cpuidle.h | 2 ++
> 2 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
> index e7e3b01..1f7f8c8 100644
> --- a/arch/x86/kernel/process.c
> +++ b/arch/x86/kernel/process.c
> @@ -14,6 +14,7 @@
> #include <linux/utsname.h>
> #include <trace/events/power.h>
> #include <linux/hw_breakpoint.h>
> +#include <linux/cpuidle.h>
> #include <asm/cpu.h>
> #include <asm/system.h>
> #include <asm/apic.h>
> @@ -587,6 +588,10 @@ void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)
> if (pm_idle)
> return;
>
> + if (cpuidle_disabled()) {
> + pm_idle = default_idle;
> + return;
> + }
> if (cpu_has(c, X86_FEATURE_MWAIT) && mwait_usable(c)) {
> /*
> * One CPU supports mwait => All CPUs supports mwait
> diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
> index b51629e..123fe9e 100644
> --- a/include/linux/cpuidle.h
> +++ b/include/linux/cpuidle.h
> @@ -122,6 +122,7 @@ struct cpuidle_driver {
> };
>
> #ifdef CONFIG_CPU_IDLE
> +extern int cpuidle_disabled(void);
> extern void disable_cpuidle(void);
> extern int cpuidle_idle_call(void);
>
> @@ -137,6 +138,7 @@ extern int cpuidle_enable_device(struct cpuidle_device *dev);
> extern void cpuidle_disable_device(struct cpuidle_device *dev);
>
> #else
> +static inline int cpuidle_disabled(void) { return 1; }
> static inline void disable_cpuidle(void) { }
> static inline int cpuidle_idle_call(void) { return -ENODEV; }
>
> --
> 1.7.7.1
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
next prev parent reply other threads:[~2011-11-10 4:07 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-08 21:15 [PATCH] x86/acpi fixes for 3.2 (v1) impacting distributions Konrad Rzeszutek Wilk
2011-11-08 21:15 ` [PATCH 1/3] cpuidle: If disable_cpuidle() is called, set pm_idle to default_idle Konrad Rzeszutek Wilk
2011-11-09 10:19 ` Deepthi Dharwar
2011-11-09 10:51 ` Deepthi Dharwar
2011-11-09 14:44 ` Konrad Rzeszutek Wilk
2011-11-11 11:41 ` Deepthi Dharwar
2011-11-15 14:40 ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-11-22 13:46 ` Konrad Rzeszutek Wilk
2011-11-23 11:06 ` Deepthi Dharwar
2011-11-10 4:06 ` Konrad Rzeszutek Wilk [this message]
2011-11-13 6:00 ` [Xen-devel] " Len Brown
2011-11-13 6:00 ` Len Brown
2011-11-14 14:37 ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-11-14 14:37 ` Konrad Rzeszutek Wilk
2011-11-08 21:15 ` [PATCH 2/3] x86/cpa: Use pte_attrs instead of pte_flags on CPA/set_p.._wb/wc operations Konrad Rzeszutek Wilk
2011-12-02 23:31 ` Konrad Rzeszutek Wilk
2011-11-08 21:15 ` [PATCH 3/3] x86/paravirt: Use pte_val instead of pte_flags on CPA pageattr_test 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=20111110040644.GA5434@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=stable@kernel.org \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=trenn@suse.de \
--cc=x86@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.