This is a note to let you know that I've just added the patch titled powerpc/pseries: Fix kexec on recent firmware versions
to the 3.0-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: powerpc-pseries-fix-kexec-on-recent-firmware-versions.patch and it can be found in the queue-3.0 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <sta...@kernel.org> know about it. >From b1301797f30370c430244979671978fc232f4533 Mon Sep 17 00:00:00 2001 From: Anton Blanchard <an...@samba.org> Date: Mon, 25 Jul 2011 01:46:32 +0000 Subject: powerpc/pseries: Fix kexec on recent firmware versions From: Anton Blanchard <an...@samba.org> commit b1301797f30370c430244979671978fc232f4533 upstream. Recent versions of firmware will fail to unmap the virtual processor area if we have a dispatch trace log registered. This causes kexec to fail. If a trace log is registered this patch unregisters it before the SLB shadow and virtual processor areas, fixing the problem. The address argument is ignored by firmware on unregister so we may as well remove it. Signed-off-by: Anton Blanchard <an...@samba.org> Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> Signed-off-by: Greg Kroah-Hartman <gre...@suse.de> --- arch/powerpc/platforms/pseries/dtl.c | 2 +- arch/powerpc/platforms/pseries/kexec.c | 11 +++++++++++ arch/powerpc/platforms/pseries/plpar_wrappers.h | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) --- a/arch/powerpc/platforms/pseries/dtl.c +++ b/arch/powerpc/platforms/pseries/dtl.c @@ -181,7 +181,7 @@ static void dtl_stop(struct dtl *dtl) lppaca_of(dtl->cpu).dtl_enable_mask = 0x0; - unregister_dtl(hwcpu, __pa(dtl->buf)); + unregister_dtl(hwcpu); } static u64 dtl_current_index(struct dtl *dtl) --- a/arch/powerpc/platforms/pseries/kexec.c +++ b/arch/powerpc/platforms/pseries/kexec.c @@ -26,6 +26,17 @@ static void pseries_kexec_cpu_down(int c /* Don't risk a hypervisor call if we're crashing */ if (firmware_has_feature(FW_FEATURE_SPLPAR) && !crash_shutdown) { unsigned long addr; + int ret; + + if (get_lppaca()->dtl_enable_mask) { + ret = unregister_dtl(hard_smp_processor_id()); + if (ret) { + pr_err("WARNING: DTL deregistration for cpu " + "%d (hw %d) failed with %d\n", + smp_processor_id(), + hard_smp_processor_id(), ret); + } + } addr = __pa(get_slb_shadow()); if (unregister_slb_shadow(hard_smp_processor_id(), addr)) --- a/arch/powerpc/platforms/pseries/plpar_wrappers.h +++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h @@ -73,9 +73,9 @@ static inline long register_slb_shadow(u return vpa_call(0x3, cpu, vpa); } -static inline long unregister_dtl(unsigned long cpu, unsigned long vpa) +static inline long unregister_dtl(unsigned long cpu) { - return vpa_call(0x6, cpu, vpa); + return vpa_call(0x6, cpu, 0); } static inline long register_dtl(unsigned long cpu, unsigned long vpa) Patches currently in stable-queue which might be from an...@samba.org are queue-3.0/powerpc-pseries-fix-kexec-on-machines-with-more-than-4tb-of-ram.patch queue-3.0/net-cap-number-of-elements-for-sendmmsg.patch queue-3.0/net-fix-security_socket_sendmsg-bypass-problem.patch queue-3.0/powerpc-fix-device-tree-claim-code.patch queue-3.0/net-sendmmsg-should-only-return-an-error-if-no-messages-were-sent.patch queue-3.0/powerpc-pseries-fix-kexec-on-recent-firmware-versions.patch _______________________________________________ stable mailing list stable@linux.kernel.org http://linux.kernel.org/mailman/listinfo/stable