diff options
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
| -rw-r--r-- | arch/powerpc/kernel/traps.c | 29 | 
1 files changed, 12 insertions, 17 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 0ff4ab98d50c..f19d9777d3c1 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -34,6 +34,7 @@  #include <linux/bug.h>  #include <linux/kdebug.h>  #include <linux/debugfs.h> +#include <linux/ratelimit.h>  #include <asm/emulated_ops.h>  #include <asm/pgtable.h> @@ -197,12 +198,11 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)  		if (die("Exception in kernel mode", regs, signr))  			return;  	} else if (show_unhandled_signals && -		    unhandled_signal(current, signr) && -		    printk_ratelimit()) { -			printk(regs->msr & MSR_64BIT ? fmt64 : fmt32, -				current->comm, current->pid, signr, -				addr, regs->nip, regs->link, code); -		} +		   unhandled_signal(current, signr)) { +		printk_ratelimited(regs->msr & MSR_64BIT ? fmt64 : fmt32, +				   current->comm, current->pid, signr, +				   addr, regs->nip, regs->link, code); +	}  	memset(&info, 0, sizeof(info));  	info.si_signo = signr; @@ -425,7 +425,7 @@ int machine_check_e500mc(struct pt_regs *regs)  	unsigned long reason = mcsr;  	int recoverable = 1; -	if (reason & MCSR_BUS_RBERR) { +	if (reason & MCSR_LD) {  		recoverable = fsl_rio_mcheck_exception(regs);  		if (recoverable == 1)  			goto silent_out; @@ -1342,9 +1342,8 @@ void altivec_assist_exception(struct pt_regs *regs)  	} else {  		/* didn't recognize the instruction */  		/* XXX quick hack for now: set the non-Java bit in the VSCR */ -		if (printk_ratelimit()) -			printk(KERN_ERR "Unrecognized altivec instruction " -			       "in %s at %lx\n", current->comm, regs->nip); +		printk_ratelimited(KERN_ERR "Unrecognized altivec instruction " +				   "in %s at %lx\n", current->comm, regs->nip);  		current->thread.vscr.u[3] |= 0x10000;  	}  } @@ -1388,10 +1387,7 @@ void SPEFloatingPointException(struct pt_regs *regs)  	int code = 0;  	int err; -	preempt_disable(); -	if (regs->msr & MSR_SPE) -		giveup_spe(current); -	preempt_enable(); +	flush_spe_to_thread(current);  	spefscr = current->thread.spefscr;  	fpexc_mode = current->thread.fpexc_mode; @@ -1548,9 +1544,8 @@ u32 ppc_warn_emulated;  void ppc_warn_emulated_print(const char *type)  { -	if (printk_ratelimit()) -		pr_warning("%s used emulated %s instruction\n", current->comm, -			   type); +	pr_warn_ratelimited("%s used emulated %s instruction\n", current->comm, +			    type);  }  static int __init ppc_warn_emulated_init(void)  |