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

Reply via email to