From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Anton Blanchard <anton@samba.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: [24/26] powerpc: Copy down exception vectors after feature fixups
Date: Fri, 18 Nov 2011 16:03:00 -0800 [thread overview]
Message-ID: <20111119000330.043648616@clark.kroah.org> (raw)
In-Reply-To: <20111119000336.GA8452@kroah.com>
3.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anton Blanchard <anton@samba.org>
commit d715e433b7ad19c02fc4becf0d5e9a59f97925de upstream.
kdump fails because we try to execute an HV only instruction. Feature
fixups are being applied after we copy the exception vectors down to 0
so they miss out on any updates.
We have always had this issue but it only became critical in v3.0
when we added CFAR support (breaks POWER5) and v3.1 when we added
POWERNV (breaks everyone).
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/powerpc/include/asm/sections.h | 2 +-
arch/powerpc/include/asm/synch.h | 1 +
arch/powerpc/kernel/kvm.c | 1 -
arch/powerpc/kernel/setup_32.c | 2 ++
arch/powerpc/kernel/setup_64.c | 1 +
arch/powerpc/lib/feature-fixups.c | 23 +++++++++++++++++++++++
6 files changed, 28 insertions(+), 2 deletions(-)
--- a/arch/powerpc/include/asm/sections.h
+++ b/arch/powerpc/include/asm/sections.h
@@ -8,7 +8,7 @@
#ifdef __powerpc64__
-extern char _end[];
+extern char __end_interrupts[];
static inline int in_kernel_text(unsigned long addr)
{
--- a/arch/powerpc/include/asm/synch.h
+++ b/arch/powerpc/include/asm/synch.h
@@ -13,6 +13,7 @@
extern unsigned int __start___lwsync_fixup, __stop___lwsync_fixup;
extern void do_lwsync_fixups(unsigned long value, void *fixup_start,
void *fixup_end);
+extern void do_final_fixups(void);
static inline void eieio(void)
{
--- a/arch/powerpc/kernel/kvm.c
+++ b/arch/powerpc/kernel/kvm.c
@@ -131,7 +131,6 @@ static void kvm_patch_ins_b(u32 *inst, i
/* On relocatable kernels interrupts handlers and our code
can be in different regions, so we don't patch them */
- extern u32 __end_interrupts;
if ((ulong)inst < (ulong)&__end_interrupts)
return;
#endif
--- a/arch/powerpc/kernel/setup_32.c
+++ b/arch/powerpc/kernel/setup_32.c
@@ -107,6 +107,8 @@ notrace unsigned long __init early_init(
PTRRELOC(&__start___lwsync_fixup),
PTRRELOC(&__stop___lwsync_fixup));
+ do_final_fixups();
+
return KERNELBASE + offset;
}
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -353,6 +353,7 @@ void __init setup_system(void)
&__start___fw_ftr_fixup, &__stop___fw_ftr_fixup);
do_lwsync_fixups(cur_cpu_spec->cpu_features,
&__start___lwsync_fixup, &__stop___lwsync_fixup);
+ do_final_fixups();
/*
* Unflatten the device-tree passed by prom_init or kexec
--- a/arch/powerpc/lib/feature-fixups.c
+++ b/arch/powerpc/lib/feature-fixups.c
@@ -18,6 +18,8 @@
#include <linux/init.h>
#include <asm/cputable.h>
#include <asm/code-patching.h>
+#include <asm/page.h>
+#include <asm/sections.h>
struct fixup_entry {
@@ -128,6 +130,27 @@ void do_lwsync_fixups(unsigned long valu
}
}
+void do_final_fixups(void)
+{
+#if defined(CONFIG_PPC64) && defined(CONFIG_RELOCATABLE)
+ int *src, *dest;
+ unsigned long length;
+
+ if (PHYSICAL_START == 0)
+ return;
+
+ src = (int *)(KERNELBASE + PHYSICAL_START);
+ dest = (int *)KERNELBASE;
+ length = (__end_interrupts - _stext) / sizeof(int);
+
+ while (length--) {
+ patch_instruction(dest, *src);
+ src++;
+ dest++;
+ }
+#endif
+}
+
#ifdef CONFIG_FTR_FIXUP_SELFTEST
#define check(x) \
next prev parent reply other threads:[~2011-11-19 0:10 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-19 0:03 [00/26] 3.1.2-stable review Greg KH
2011-11-19 0:02 ` [01/26] ALSA: hda - fix internal mic on Dell Vostro 3500 laptop Greg KH
2011-11-19 0:02 ` [02/26] ALSA: hda - Dont add elements of other codecs to vmaster slave Greg KH
2011-11-19 0:02 ` [03/26] virtio-pci: fix use after free Greg KH
2011-11-19 0:02 ` [04/26] ARM: at91: Fix USBA gadget registration Greg KH
2011-11-19 0:02 ` [05/26] ASoC: Dont use wm8994->control_data in wm8994_readable_register() Greg KH
2011-11-19 0:02 ` [06/26] sh: Fix cached/uncaced address calculation in 29bit mode Greg KH
2011-11-19 0:02 ` [07/26] drm/i915: Fix object refcount leak on mmappable size limit error path Greg KH
2011-11-19 0:02 ` [08/26] drm/nouveau: initialize chan->fence.lock before use Greg KH
2011-11-19 0:02 ` [09/26] drm/radeon/kms: make an aux failure debug only Greg KH
2011-11-19 0:02 ` [10/26] ALSA: usb-audio - Check the dB-range validity in the later read, too Greg KH
2011-11-19 0:02 ` [11/26] ALSA: usb-audio - Fix the missing volume quirks at delayed init Greg KH
2011-11-19 0:02 ` [12/26] KEYS: Fix a NULL pointer deref in the user-defined key type Greg KH
2011-11-19 0:02 ` [13/26] hfs: add sanity check for file name length Greg KH
2011-11-19 0:02 ` [14/26] Revert "leds: save the delay values after a successful call to blink_set()" Greg KH
2011-11-19 0:02 ` [15/26] drm/radeon: add some missing FireMV pci ids Greg KH
2011-11-19 0:02 ` [16/26] staging: brcm80211: fill in proper rx rate in mac80211 rx status Greg KH
2011-11-19 0:02 ` [17/26] b43: refuse to load unsupported firmware Greg KH
2011-11-19 17:22 ` Ben Hutchings
2011-11-19 19:05 ` Greg KH
2011-11-19 19:49 ` Ben Hutchings
2011-11-19 0:02 ` [18/26] mfd: Fix twl4030 dependencies for audio codec Greg KH
2011-11-19 0:02 ` [19/26] xen:pvhvm: enable PVHVM VCPU placement when using more than 32 CPUs Greg KH
2011-11-19 0:02 ` [20/26] xen-gntalloc: integer overflow in gntalloc_ioctl_alloc() Greg KH
2011-11-19 0:02 ` [21/26] xen-gntalloc: signedness bug in add_grefs() Greg KH
2011-11-19 0:02 ` [22/26] powerpc/ps3: Fix lost SMP IPIs Greg KH
2011-11-19 0:02 ` [23/26] powerpc: Add hvcall.h include to book3s_hv.c Greg KH
2011-11-19 0:03 ` Greg KH [this message]
2011-11-19 0:03 ` [25/26] backing-dev: ensure wakeup_timer is deleted Greg KH
2011-11-19 0:03 ` [26/26] block: Always check length of all iov entries in blk_rq_map_user_iov() Greg KH
2011-11-19 19:57 ` [00/26] 3.1.2-stable review Woody Suwalski
2011-11-20 0:43 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2011-11-19 0:00 [00/26] 3.0.10-stable review Greg KH
2011-11-18 23:58 ` [24/26] powerpc: Copy down exception vectors after feature fixups Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111119000330.043648616@clark.kroah.org \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®