All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] x86 smpboot: re-enable init_udelay=0 by default on modern CPUs
@ 2015-11-22 23:16 Len Brown
  2015-11-23 16:16 ` [tip:x86/apic] x86/smpboot: Re-enable init_udelay= 0 " tip-bot for Len Brown
  2015-11-25 22:21 ` [tip:x86/urgent] x86 smpboot: " tip-bot for Len Brown
  0 siblings, 2 replies; 3+ messages in thread
From: Len Brown @ 2015-11-22 23:16 UTC (permalink / raw)
  To: x86, shrybman, dparsons, linux-pm, linux-kernel; +Cc: Len Brown

From: Len Brown <len.brown@intel.com>

Fix a Linux-4.3 performance regression:

commit f1ccd249319e ("x86/smpboot: Fix cpu_init_udelay=10000 corner case
boot parameter misbehavior")
allowed the cmdline  "cpu_init_udelay=" to work
with all values, including the default of 10000.

But in setting the default of 10000, it over-rode
the code stat sets the delay 0 on modern processors.

Also, tidy up use of INT/UINT.

Reported-by: Shane <shrybman@teksavvy.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/x86/kernel/smpboot.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 892ee2e5..fbabe4f 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -509,7 +509,7 @@ void __inquire_remote_apic(int apicid)
  */
 #define UDELAY_10MS_DEFAULT 10000
 
-static unsigned int init_udelay = INT_MAX;
+static unsigned int init_udelay = UINT_MAX;
 
 static int __init cpu_init_udelay(char *str)
 {
@@ -522,14 +522,15 @@ early_param("cpu_init_udelay", cpu_init_udelay);
 static void __init smp_quirk_init_udelay(void)
 {
 	/* if cmdline changed it from default, leave it alone */
-	if (init_udelay != INT_MAX)
+	if (init_udelay != UINT_MAX)
 		return;
 
 	/* if modern processor, use no delay */
 	if (((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 == 6)) ||
-	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF)))
+	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF))) {
 		init_udelay = 0;
-
+		return;
+	}
 	/* else, use legacy delay */
 	init_udelay = UDELAY_10MS_DEFAULT;
 }
-- 
2.6.3.368.gf34be46


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

* [tip:x86/apic] x86/smpboot: Re-enable init_udelay= 0 by default on modern CPUs
  2015-11-22 23:16 [PATCH 1/1] x86 smpboot: re-enable init_udelay=0 by default on modern CPUs Len Brown
@ 2015-11-23 16:16 ` tip-bot for Len Brown
  2015-11-25 22:21 ` [tip:x86/urgent] x86 smpboot: " tip-bot for Len Brown
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Len Brown @ 2015-11-23 16:16 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: shrybman, torvalds, hpa, mingo, tglx, peterz, linux-kernel, len.brown

Commit-ID:  2fde46b79e2fdbc90d0d97cf992782732b5a371c
Gitweb:     http://git.kernel.org/tip/2fde46b79e2fdbc90d0d97cf992782732b5a371c
Author:     Len Brown <len.brown@intel.com>
AuthorDate: Sun, 22 Nov 2015 18:16:15 -0500
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 23 Nov 2015 09:08:33 +0100

x86/smpboot: Re-enable init_udelay=0 by default on modern CPUs

Fix a Linux-4.3 corner case performance regression, introduced by commit:

  f1ccd249319e ("x86/smpboot: Fix cpu_init_udelay=10000 corner case boot parameter misbehavior")

which allowed the cmdline  "cpu_init_udelay=" to work with all values,
including the default of 10000.

But in setting the default of 10000, it over-rode the code stat sets
the delay 0 on modern processors.

Also, tidy up use of INT/UINT.

Reported-by: Shane <shrybman@teksavvy.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: dparsons@brightdsl.net
Link: http://lkml.kernel.org/r/9082eb809ef40dad02db714759c7aaf618c518d4.1448232494.git.len.brown@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/smpboot.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 892ee2e5..fbabe4f 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -509,7 +509,7 @@ void __inquire_remote_apic(int apicid)
  */
 #define UDELAY_10MS_DEFAULT 10000
 
-static unsigned int init_udelay = INT_MAX;
+static unsigned int init_udelay = UINT_MAX;
 
 static int __init cpu_init_udelay(char *str)
 {
@@ -522,14 +522,15 @@ early_param("cpu_init_udelay", cpu_init_udelay);
 static void __init smp_quirk_init_udelay(void)
 {
 	/* if cmdline changed it from default, leave it alone */
-	if (init_udelay != INT_MAX)
+	if (init_udelay != UINT_MAX)
 		return;
 
 	/* if modern processor, use no delay */
 	if (((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 == 6)) ||
-	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF)))
+	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF))) {
 		init_udelay = 0;
-
+		return;
+	}
 	/* else, use legacy delay */
 	init_udelay = UDELAY_10MS_DEFAULT;
 }

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

* [tip:x86/urgent] x86 smpboot: Re-enable init_udelay= 0 by default on modern CPUs
  2015-11-22 23:16 [PATCH 1/1] x86 smpboot: re-enable init_udelay=0 by default on modern CPUs Len Brown
  2015-11-23 16:16 ` [tip:x86/apic] x86/smpboot: Re-enable init_udelay= 0 " tip-bot for Len Brown
@ 2015-11-25 22:21 ` tip-bot for Len Brown
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Len Brown @ 2015-11-25 22:21 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: shrybman, hpa, linux-kernel, len.brown, mingo, tglx

Commit-ID:  656279a1f3b210cf48ccc572fd7c6b8e2250be77
Gitweb:     http://git.kernel.org/tip/656279a1f3b210cf48ccc572fd7c6b8e2250be77
Author:     Len Brown <len.brown@intel.com>
AuthorDate: Sun, 22 Nov 2015 18:16:15 -0500
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 25 Nov 2015 23:17:48 +0100

x86 smpboot: Re-enable init_udelay=0 by default on modern CPUs

commit f1ccd249319e allowed the cmdline "cpu_init_udelay=" to work
with all values, including the default of 10000.

But in setting the default of 10000, it over-rode the code that sets
the delay 0 on modern processors.

Also, tidy up use of INT/UINT.

Fixes: f1ccd249319e "x86/smpboot: Fix cpu_init_udelay=10000 corner case boot parameter misbehavior"
Reported-by: Shane <shrybman@teksavvy.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Cc: dparsons@brightdsl.net
Cc: stable@kernel.org
Link: http://lkml.kernel.org/r/9082eb809ef40dad02db714759c7aaf618c518d4.1448232494.git.len.brown@intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/kernel/smpboot.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 892ee2e5..fbabe4f 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -509,7 +509,7 @@ void __inquire_remote_apic(int apicid)
  */
 #define UDELAY_10MS_DEFAULT 10000
 
-static unsigned int init_udelay = INT_MAX;
+static unsigned int init_udelay = UINT_MAX;
 
 static int __init cpu_init_udelay(char *str)
 {
@@ -522,14 +522,15 @@ early_param("cpu_init_udelay", cpu_init_udelay);
 static void __init smp_quirk_init_udelay(void)
 {
 	/* if cmdline changed it from default, leave it alone */
-	if (init_udelay != INT_MAX)
+	if (init_udelay != UINT_MAX)
 		return;
 
 	/* if modern processor, use no delay */
 	if (((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 == 6)) ||
-	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF)))
+	    ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF))) {
 		init_udelay = 0;
-
+		return;
+	}
 	/* else, use legacy delay */
 	init_udelay = UDELAY_10MS_DEFAULT;
 }

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

end of thread, other threads:[~2015-11-25 22:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-22 23:16 [PATCH 1/1] x86 smpboot: re-enable init_udelay=0 by default on modern CPUs Len Brown
2015-11-23 16:16 ` [tip:x86/apic] x86/smpboot: Re-enable init_udelay= 0 " tip-bot for Len Brown
2015-11-25 22:21 ` [tip:x86/urgent] x86 smpboot: " tip-bot for Len Brown

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.