From: Paul Mackerras If we should happen to get an altivec assist exception while executing in the kernel, we will currently try to handle it and fail, and end up oopsing with (apparently) a segfault. (An altivec assist exception occurs for floating-point altivec instructions with denormalized inputs or outputs if the altivec unit is in java mode.) This patch checks explicitly if we are in user mode and prints a useful message if not. Signed-off-by: Paul Mackerras Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc/kernel/traps.c | 7 +++++++ 1 files changed, 7 insertions(+) diff -puN arch/ppc/kernel/traps.c~ppc32-oops-on-kernel-altivec-assist-exceptions arch/ppc/kernel/traps.c --- 25/arch/ppc/kernel/traps.c~ppc32-oops-on-kernel-altivec-assist-exceptions 2005-04-04 01:59:47.000000000 -0700 +++ 25-akpm/arch/ppc/kernel/traps.c 2005-04-04 01:59:47.000000000 -0700 @@ -805,6 +805,13 @@ void AltivecAssistException(struct pt_re if (regs->msr & MSR_VEC) giveup_altivec(current); preempt_enable(); + if (!user_mode(regs)) { + printk(KERN_ERR "altivec assist exception in kernel mode" + " at %lx\n", regs->nip); + debugger(regs); + die("altivec assist exception", regs, SIGFPE); + return; + } err = emulate_altivec(regs); if (err == 0) { _