From 2b541ad477628208e70997d3a8cd4279ea216964 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Mon, 15 Dec 2014 14:39:28 -0500 Subject: [PATCH] Fix ppc64 boot with smt-enabled=off (rhbz 1173806) --- kernel.spec | 7 +++ ...owernv-force-all-CPUs-to-be-bootable.patch | 46 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 powerpc-powernv-force-all-CPUs-to-be-bootable.patch 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 +- 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 +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 +--- + 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 +