d715e433b7
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> Cc: <stable@kernel.org> [v3.0+] Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
42 lines
833 B
C
42 lines
833 B
C
#ifndef _ASM_POWERPC_SECTIONS_H
|
|
#define _ASM_POWERPC_SECTIONS_H
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/elf.h>
|
|
#include <linux/uaccess.h>
|
|
#include <asm-generic/sections.h>
|
|
|
|
#ifdef __powerpc64__
|
|
|
|
extern char __end_interrupts[];
|
|
|
|
static inline int in_kernel_text(unsigned long addr)
|
|
{
|
|
if (addr >= (unsigned long)_stext && addr < (unsigned long)__init_end)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline int overlaps_kernel_text(unsigned long start, unsigned long end)
|
|
{
|
|
return start < (unsigned long)__init_end &&
|
|
(unsigned long)_stext < end;
|
|
}
|
|
|
|
#undef dereference_function_descriptor
|
|
static inline void *dereference_function_descriptor(void *ptr)
|
|
{
|
|
struct ppc64_opd_entry *desc = ptr;
|
|
void *p;
|
|
|
|
if (!probe_kernel_address(&desc->funcaddr, p))
|
|
ptr = p;
|
|
return ptr;
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* _ASM_POWERPC_SECTIONS_H */
|