Unverified Commit 780692d2 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!3599 arm64: Add framework to turn IPI as NMI

Merge Pull Request from: @ci-robot 
 
PR sync from: Liao Chen <liaochen4@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/QPQFMRFALXJP72YVC2GG4GFET2HOARNZ/ 
Config Dependencies:
CONFIG_PSEUDO_NMI=y
CONFIG_LOCKUP_DETECTOR=y
CONFIG_SOFTLOCKUP_DETECTOR=y
CONFIG_LKDTM=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_HONOUR_BLOCKLIST=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_KDB=y

Sumit Garg (7):
  arm64: Add framework to turn IPI as NMI
  irqchip/gic-v3: Enable support for SGIs to act as NMIs
  arm64: smp: Assign and setup an IPI as NMI
  nmi: backtrace: Allow runtime arch specific override
  arm64: ipi_nmi: Add support for NMI backtrace
  kgdb: Expose default CPUs roundup fallback mechanism
  arm64: kgdb: Roundup cpus using IPI as NMI


-- 
2.34.1
 
https://gitee.com/openeuler/kernel/issues/I8PLUM?from=project-issue 
 
Link:https://gitee.com/openeuler/kernel/pulls/3599

 

Reviewed-by: default avatarZhang Jianhua <chris.zjh@huawei.com>
Reviewed-by: default avatarXu Kuohai <xukuohai@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
Acked-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
parents 5adc2032 5092895d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ void handle_IRQ(unsigned int, struct pt_regs *);
#ifdef CONFIG_SMP
#include <linux/cpumask.h>

extern void arch_trigger_cpumask_backtrace(const cpumask_t *mask,
extern bool arch_trigger_cpumask_backtrace(const cpumask_t *mask,
					   int exclude_cpu);
#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
#endif
+2 −1
Original line number Diff line number Diff line
@@ -846,7 +846,8 @@ static void raise_nmi(cpumask_t *mask)
	__ipi_send_mask(ipi_desc[IPI_CPU_BACKTRACE], mask);
}

void arch_trigger_cpumask_backtrace(const cpumask_t *mask, int exclude_cpu)
bool arch_trigger_cpumask_backtrace(const cpumask_t *mask, int exclude_cpu)
{
	nmi_trigger_cpumask_backtrace(mask, exclude_cpu, raise_nmi);
	return true;
}
+6 −0
Original line number Diff line number Diff line
@@ -6,6 +6,12 @@

#include <asm-generic/irq.h>

#ifdef CONFIG_SMP
extern bool arch_trigger_cpumask_backtrace(const cpumask_t *mask,
					   int exclude_cpu);
#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
#endif

struct pt_regs;

int set_handle_irq(void (*handle_irq)(struct pt_regs *));
+17 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_NMI_H
#define __ASM_NMI_H

#ifndef __ASSEMBLER__

#include <linux/cpumask.h>

extern bool arm64_supports_nmi(void);
extern void arm64_send_nmi(cpumask_t *mask);

void set_smp_dynamic_ipi(int ipi);
void dynamic_ipi_setup(int cpu);
void dynamic_ipi_teardown(int cpu);

#endif /* !__ASSEMBLER__ */
#endif
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ obj-y := debug-monitors.o entry.o irq.o fpsimd.o \
			   cpufeature.o alternative.o cacheinfo.o		\
			   smp.o smp_spin_table.o topology.o smccc-call.o	\
			   syscall.o proton-pack.o idreg-override.o idle.o	\
			   patching.o
			   patching.o ipi_nmi.o

obj-$(CONFIG_AARCH32_EL0)		+= binfmt_elf32.o sys32.o signal32.o			\
					   sys_compat.o
Loading