diff --git a/debian/changelog b/debian/changelog index 727e17435..94fba942f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,9 @@ linux (4.3~rc6-1~exp1) UNRELEASED; urgency=medium * New upstream release candidate + [ Ben Hutchings ] + * [x86] smpboot: Fix CPU #1 boot timeout (Closes: #802464) + -- Ben Hutchings Mon, 19 Oct 2015 02:21:23 +0100 linux (4.3~rc5-1~exp1) experimental; urgency=medium diff --git a/debian/patches/bugfix/x86/x86-smpboot-Fix-CPU-1-boot-timeout.patch b/debian/patches/bugfix/x86/x86-smpboot-Fix-CPU-1-boot-timeout.patch new file mode 100644 index 000000000..410860e0d --- /dev/null +++ b/debian/patches/bugfix/x86/x86-smpboot-Fix-CPU-1-boot-timeout.patch @@ -0,0 +1,62 @@ +From: Len Brown +Date: Fri, 16 Oct 2015 00:14:29 -0400 +Subject: x86/smpboot: Fix CPU #1 boot timeout +Origin: https://git.kernel.org/linus/fcafddec4e78a7776db4b6685db6b2902d4300fc +Bug-Debian: https://bugs.debian.org/802464 + +The following commit: + + a9bcaa02a5104ac ("x86/smpboot: Remove SIPI delays from cpu_up()") + +Caused some Intel Core2 processors to time-out when bringing up CPU #1, +resulting in the missing of that CPU after bootup. + +That patch reduced the SIPI delays from udelay() 300, 200 to udelay() 0, +0 on modern processors. + +Several Intel(R) Core(TM)2 systems failed to bring up CPU #1 10/10 times +after that change. + +Increasing either of the SIPI delays to udelay(1) results in +success. So here we increase both to udelay(10). While this may +be 20x slower than the absolute minimum, it is still 20x to 30x +faster than the original code. + +Tested-by: Donald Parsons +Tested-by: Shane +Signed-off-by: Len Brown +Cc: Linus Torvalds +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Cc: dparsons@brightdsl.net +Cc: shrybman@teksavvy.com +Link: http://lkml.kernel.org/r/6dd554ee8945984d85aafb2ad35793174d068af0.1444968087.git.len.brown@intel.com +Signed-off-by: Ingo Molnar +--- + arch/x86/kernel/smpboot.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/arch/x86/kernel/smpboot.c ++++ b/arch/x86/kernel/smpboot.c +@@ -657,7 +657,9 @@ wakeup_secondary_cpu_via_init(int phys_a + /* + * Give the other CPU some time to accept the IPI. + */ +- if (init_udelay) ++ if (init_udelay == 0) ++ udelay(10); ++ else + udelay(300); + + pr_debug("Startup point 1\n"); +@@ -668,7 +670,9 @@ wakeup_secondary_cpu_via_init(int phys_a + /* + * Give the other CPU some time to accept the IPI. + */ +- if (init_udelay) ++ if (init_udelay == 0) ++ udelay(10); ++ else + udelay(200); + + if (maxlvt > 3) /* Due to the Pentium erratum 3AP. */ diff --git a/debian/patches/series b/debian/patches/series index c93dc190b..dd81fa9b3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -81,3 +81,4 @@ features/all/grsecurity/grkernsec_perf_harden.patch bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch +bugfix/x86/x86-smpboot-Fix-CPU-1-boot-timeout.patch