Commit f86d165b authored by Li Zhengyu's avatar Li Zhengyu Committed by Zheng Zengkai
Browse files

arm64: Add non nmi ipi backtrace support

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I59IQS


CVE: NA

--------------------------------

Use non nmi ipi to support backtrace on arm64 with nmi
unsupported.
It has been tested on qemu.

Signed-off-by: default avatarLi Zhengyu <lizhengyu3@huawei.com>
Reviewed-by: default avatarLiao Chang <liaochang1@huawei.com>
Reviewed-by: default avatarWei Li <liwei391@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent d08151e6
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -33,11 +33,23 @@ void arm64_send_nmi(cpumask_t *mask)
	__ipi_send_mask(ipi_nmi_desc, mask);
}

static void ipi_cpu_backtrace(void *info)
{
	printk_safe_enter();
	nmi_cpu_backtrace(get_irq_regs());
	printk_safe_exit();
}

static void arm64_send_ipi(cpumask_t *mask)
{
	smp_call_function_many(mask, ipi_cpu_backtrace, NULL, false);
}

bool arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
{
	if (!ipi_nmi_desc)
		return false;

		nmi_trigger_cpumask_backtrace(mask, exclude_self, arm64_send_ipi);
	else
		nmi_trigger_cpumask_backtrace(mask, exclude_self, arm64_send_nmi);

	return true;