xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] x86: default-disable MWAIT-based idle driver for CPUs without ARAT
@ 2012-09-26 14:00 Jan Beulich
  2012-09-26 14:37 ` Keir Fraser
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Beulich @ 2012-09-26 14:00 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 1102 bytes --]

Without ARAT, and apparently only when using HPET broadcast mode as
replacement, CPUs occasionally fail to wake up, causing the system to
(transiently) hang. Until the reason is understood, disable the driver
on such systems.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/cpu/mwait-idle.c
+++ b/xen/arch/x86/cpu/mwait-idle.c
@@ -71,7 +71,7 @@
 # define pr_debug(fmt...)
 #endif
 
-static __initdata bool_t no_mwait_idle;
+static __initdata s8 no_mwait_idle = -1;
 invbool_param("mwait-idle", no_mwait_idle);
 
 static unsigned int mwait_substates;
@@ -500,6 +500,13 @@ int __init mwait_idle_init(struct notifi
 	if (pm_idle_save)
 		return -ENODEV;
 
+	/* XXX The no-ARAT case is supposedly being taken care of, but at
+	 * least some systems without ARAT hang for some reason, apparently
+	 * only when using HPET broadcast mode (PIT broadcast mode seems to
+	 * be fine). */
+	if (no_mwait_idle < 0 && boot_cpu_has(X86_FEATURE_ARAT))
+		no_mwait_idle = 0;
+
 	err = mwait_idle_probe();
 	if (!err) {
 		if (!boot_cpu_has(X86_FEATURE_ARAT))




[-- Attachment #2: x86-mwait-idle-no-ARAT.patch --]
[-- Type: text/plain, Size: 1166 bytes --]

x86: default-disable MWAIT-based idle driver for CPUs without ARAT

Without ARAT, and apparently only when using HPET broadcast mode as
replacement, CPUs occasionally fail to wake up, causing the system to
(transiently) hang. Until the reason is understood, disable the driver
on such systems.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/cpu/mwait-idle.c
+++ b/xen/arch/x86/cpu/mwait-idle.c
@@ -71,7 +71,7 @@
 # define pr_debug(fmt...)
 #endif
 
-static __initdata bool_t no_mwait_idle;
+static __initdata s8 no_mwait_idle = -1;
 invbool_param("mwait-idle", no_mwait_idle);
 
 static unsigned int mwait_substates;
@@ -500,6 +500,13 @@ int __init mwait_idle_init(struct notifi
 	if (pm_idle_save)
 		return -ENODEV;
 
+	/* XXX The no-ARAT case is supposedly being taken care of, but at
+	 * least some systems without ARAT hang for some reason, apparently
+	 * only when using HPET broadcast mode (PIT broadcast mode seems to
+	 * be fine). */
+	if (no_mwait_idle < 0 && boot_cpu_has(X86_FEATURE_ARAT))
+		no_mwait_idle = 0;
+
 	err = mwait_idle_probe();
 	if (!err) {
 		if (!boot_cpu_has(X86_FEATURE_ARAT))

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] x86: default-disable MWAIT-based idle driver for CPUs without ARAT
  2012-09-26 14:00 [PATCH] x86: default-disable MWAIT-based idle driver for CPUs without ARAT Jan Beulich
@ 2012-09-26 14:37 ` Keir Fraser
  0 siblings, 0 replies; 2+ messages in thread
From: Keir Fraser @ 2012-09-26 14:37 UTC (permalink / raw)
  To: Jan Beulich, xen-devel

On 26/09/2012 15:00, "Jan Beulich" <JBeulich@suse.com> wrote:

> Without ARAT, and apparently only when using HPET broadcast mode as
> replacement, CPUs occasionally fail to wake up, causing the system to
> (transiently) hang. Until the reason is understood, disable the driver
> on such systems.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Keir Fraser <keir@xen.org>

> --- a/xen/arch/x86/cpu/mwait-idle.c
> +++ b/xen/arch/x86/cpu/mwait-idle.c
> @@ -71,7 +71,7 @@
>  # define pr_debug(fmt...)
>  #endif
>  
> -static __initdata bool_t no_mwait_idle;
> +static __initdata s8 no_mwait_idle = -1;
>  invbool_param("mwait-idle", no_mwait_idle);
>  
>  static unsigned int mwait_substates;
> @@ -500,6 +500,13 @@ int __init mwait_idle_init(struct notifi
> if (pm_idle_save)
> return -ENODEV;
>  
> + /* XXX The no-ARAT case is supposedly being taken care of, but at
> +  * least some systems without ARAT hang for some reason, apparently
> +  * only when using HPET broadcast mode (PIT broadcast mode seems to
> +  * be fine). */
> + if (no_mwait_idle < 0 && boot_cpu_has(X86_FEATURE_ARAT))
> +  no_mwait_idle = 0;
> +
> err = mwait_idle_probe();
> if (!err) {
> if (!boot_cpu_has(X86_FEATURE_ARAT))
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-09-26 14:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-26 14:00 [PATCH] x86: default-disable MWAIT-based idle driver for CPUs without ARAT Jan Beulich
2012-09-26 14:37 ` Keir Fraser

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).