Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc

Pull powerpc fixes from Benjamin Herrenschmidt:
"So here are 3 fixes still for 3.10. Fixes are simple, bugs are nasty
(though not recent regressions, nasty enough) and all targeted at
stable"

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc: Fix missing/delayed calls to irq_work
powerpc: Fix emulation of illegal instructions on PowerNV platform
powerpc: Fix stack overflow crash in resume_kernel when ftracing

+15 -5
+1 -1
arch/powerpc/include/asm/exception-64s.h
··· 513 513 */ 514 514 #define STD_EXCEPTION_COMMON_ASYNC(trap, label, hdlr) \ 515 515 EXCEPTION_COMMON(trap, label, hdlr, ret_from_except_lite, \ 516 - FINISH_NAP;RUNLATCH_ON;DISABLE_INTS) 516 + FINISH_NAP;DISABLE_INTS;RUNLATCH_ON) 517 517 518 518 /* 519 519 * When the idle code in power4_idle puts the CPU into NAP mode,
+1 -1
arch/powerpc/kernel/exceptions-64s.S
··· 683 683 STD_EXCEPTION_COMMON(0xb00, trap_0b, .unknown_exception) 684 684 STD_EXCEPTION_COMMON(0xd00, single_step, .single_step_exception) 685 685 STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception) 686 - STD_EXCEPTION_COMMON(0xe40, emulation_assist, .program_check_exception) 686 + STD_EXCEPTION_COMMON(0xe40, emulation_assist, .emulation_assist_interrupt) 687 687 STD_EXCEPTION_COMMON(0xe60, hmi_exception, .unknown_exception) 688 688 #ifdef CONFIG_PPC_DOORBELL 689 689 STD_EXCEPTION_COMMON_ASYNC(0xe80, h_doorbell, .doorbell_exception)
+1 -1
arch/powerpc/kernel/irq.c
··· 162 162 * in case we also had a rollover while hard disabled 163 163 */ 164 164 local_paca->irq_happened &= ~PACA_IRQ_DEC; 165 - if (decrementer_check_overflow()) 165 + if ((happened & PACA_IRQ_DEC) || decrementer_check_overflow()) 166 166 return 0x900; 167 167 168 168 /* Finally check if an external interrupt happened */
+2 -2
arch/powerpc/kernel/process.c
··· 1369 1369 1370 1370 #ifdef CONFIG_PPC64 1371 1371 /* Called with hard IRQs off */ 1372 - void __ppc64_runlatch_on(void) 1372 + void notrace __ppc64_runlatch_on(void) 1373 1373 { 1374 1374 struct thread_info *ti = current_thread_info(); 1375 1375 unsigned long ctrl; ··· 1382 1382 } 1383 1383 1384 1384 /* Called with hard IRQs off */ 1385 - void __ppc64_runlatch_off(void) 1385 + void notrace __ppc64_runlatch_off(void) 1386 1386 { 1387 1387 struct thread_info *ti = current_thread_info(); 1388 1388 unsigned long ctrl;
+10
arch/powerpc/kernel/traps.c
··· 1165 1165 exception_exit(prev_state); 1166 1166 } 1167 1167 1168 + /* 1169 + * This occurs when running in hypervisor mode on POWER6 or later 1170 + * and an illegal instruction is encountered. 1171 + */ 1172 + void __kprobes emulation_assist_interrupt(struct pt_regs *regs) 1173 + { 1174 + regs->msr |= REASON_ILLEGAL; 1175 + program_check_exception(regs); 1176 + } 1177 + 1168 1178 void alignment_exception(struct pt_regs *regs) 1169 1179 { 1170 1180 enum ctx_state prev_state = exception_enter();