summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2014-12-15 14:39:28 -0500
committerJosh Boyer <jwboyer@fedoraproject.org>2014-12-15 14:39:32 -0500
commit2b541ad477628208e70997d3a8cd4279ea216964 (patch)
treeb526287015c19f53080854359b14eea8be21e801
parent32f1e15e155aa239cedc2fba1a319ed38b7674e5 (diff)
downloadkernel-2b541ad477628208e70997d3a8cd4279ea216964.tar.gz
kernel-2b541ad477628208e70997d3a8cd4279ea216964.tar.xz
kernel-2b541ad477628208e70997d3a8cd4279ea216964.zip
Fix ppc64 boot with smt-enabled=off (rhbz 1173806)
-rw-r--r--kernel.spec7
-rw-r--r--powerpc-powernv-force-all-CPUs-to-be-bootable.patch46
2 files changed, 53 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec
index 215c64e2d..372fe9110 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -630,6 +630,9 @@ Patch26099: deal-with-deadlock-in-d_walk.patch
#CVE-2014-8133 rhbz 1172797 1174374
Patch26100: x86-tls-Validate-TLS-entries-to-protect-espfix.patch
+#rhbz 1173806
+Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch
+
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
Patch30000: kernel-arm64.patch
@@ -1369,6 +1372,9 @@ ApplyPatch deal-with-deadlock-in-d_walk.patch
#CVE-2014-8133 rhbz 1172797 1174374
ApplyPatch x86-tls-Validate-TLS-entries-to-protect-espfix.patch
+#rhbz 1173806
+ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch
+
%if 0%{?aarch64patches}
ApplyPatch kernel-arm64.patch
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
@@ -2238,6 +2244,7 @@ fi
# || ||
%changelog
* Mon Dec 15 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix ppc64 boot with smt-enabled=off (rhbz 1173806)
- CVE-2014-8133 x86: espfix(64) bypass via set_thread_area and CLONE_SETTLS (rhbz 1172797 1174374)
- CVE-2014-8559 deadlock due to incorrect usage of rename_lock (rhbz 1159313 1173814)
diff --git a/powerpc-powernv-force-all-CPUs-to-be-bootable.patch b/powerpc-powernv-force-all-CPUs-to-be-bootable.patch
new file mode 100644
index 000000000..f98ac878d
--- /dev/null
+++ b/powerpc-powernv-force-all-CPUs-to-be-bootable.patch
@@ -0,0 +1,46 @@
+From: Greg Kurz <gkurz@linux.vnet.ibm.com>
+Date: Fri, 12 Dec 2014 12:37:40 +0100
+Subject: [PATCH] powerpc/powernv: force all CPUs to be bootable
+
+The subcore logic needs all the CPUs declared in the DT to be bootable,
+otherwise the kernel hangs at boot time. Since subcore support starts
+with POWER8, we can keep the current behaviour for older CPUs.
+
+Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
+---
+ arch/powerpc/platforms/powernv/smp.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
+index 4753958cd509..44ecd0925f56 100644
+--- a/arch/powerpc/platforms/powernv/smp.c
++++ b/arch/powerpc/platforms/powernv/smp.c
+@@ -185,13 +185,24 @@ static void pnv_smp_cpu_kill_self(void)
+
+ #endif /* CONFIG_HOTPLUG_CPU */
+
++static int pnv_cpu_bootable(unsigned int nr)
++{
++ /* Starting with POWER8, all CPUs need to be booted to avoid hangs
++ * during subcore init.
++ */
++ if (cpu_has_feature(CPU_FTR_ARCH_207S))
++ return 1;
++
++ return smp_generic_cpu_bootable(nr);
++}
++
+ static struct smp_ops_t pnv_smp_ops = {
+ .message_pass = smp_muxed_ipi_message_pass,
+ .cause_ipi = NULL, /* Filled at runtime by xics_smp_probe() */
+ .probe = xics_smp_probe,
+ .kick_cpu = pnv_smp_kick_cpu,
+ .setup_cpu = pnv_smp_setup_cpu,
+- .cpu_bootable = smp_generic_cpu_bootable,
++ .cpu_bootable = pnv_cpu_bootable,
+ #ifdef CONFIG_HOTPLUG_CPU
+ .cpu_disable = pnv_smp_cpu_disable,
+ .cpu_die = generic_cpu_die,
+--
+2.1.0
+