mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 00:29:10 +07:00
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>
20 lines
532 B
C
20 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 */
|