forked from mirrors/linux
		
	 ccd477028a
			
		
	
	
		ccd477028a
		
	
	
	
	
		
			
			HV interrupts that use HSRR registers do not enter with MSR[RI] clear, but their entry code is not recoverable vs NMI, due to shared use of HSPRG1 as a scratch register to save r13. This means that a system reset or machine check that hits in HSRR interrupt entry can cause r13 to be silently corrupted. Fix this by marking NMIs non-recoverable if they land in HV interrupt ranges. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
		
			
				
	
	
		
			19 lines
		
	
	
	
		
			532 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
	
		
			532 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _ASM_NMI_H
 | |
| #define _ASM_NMI_H
 | |
| 
 | |
| #ifdef CONFIG_PPC_WATCHDOG
 | |
| extern void arch_touch_nmi_watchdog(void);
 | |
| #else
 | |
| static inline void arch_touch_nmi_watchdog(void) {}
 | |
| #endif
 | |
| 
 | |
| #if defined(CONFIG_NMI_IPI) && defined(CONFIG_STACKTRACE)
 | |
| extern void arch_trigger_cpumask_backtrace(const cpumask_t *mask,
 | |
| 					   bool exclude_self);
 | |
| #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
 | |
| #endif
 | |
| 
 | |
| extern void hv_nmi_check_nonrecoverable(struct pt_regs *regs);
 | |
| 
 | |
| #endif /* _ASM_NMI_H */
 |