--- zzzz-none-000/linux-5.4.213/arch/arm/kernel/smp.c 2022-09-15 10:04:56.000000000 +0000 +++ miami-7690-761/linux-5.4.213/arch/arm/kernel/smp.c 2024-05-29 11:19:50.000000000 +0000 @@ -52,6 +52,12 @@ #define CREATE_TRACE_POINTS #include +#if defined(CONFIG_AVM_FASTIRQ) +/* necessary for avm_trigger_all_cpu_backtrace */ +#include +#include +#endif + /* * as from 2.5, kernels no longer have an init_tasks structure * so we need some other way of telling a new secondary core @@ -540,6 +546,9 @@ seq_printf(p, " %s\n", ipi_types[i]); } +#if defined(CONFIG_AVM_FASTIRQ) + avm_rte_ipi_show_list(p, prec, false); +#endif } u64 smp_irq_stat_cpu(unsigned int cpu) @@ -690,8 +699,14 @@ break; default: +#if defined(CONFIG_AVM_FASTIRQ) + if (avm_rte_ipi_handle(ipinr, regs) != IRQ_HANDLED) + pr_crit("CPU%u: Unknown IPI message 0x%x\n", + cpu, ipinr); +#else pr_crit("CPU%u: Unknown IPI message 0x%x\n", - cpu, ipinr); + cpu, ipinr); +#endif break; } @@ -805,12 +820,18 @@ #endif +#if !defined(CONFIG_AVM_FASTIRQ) static void raise_nmi(cpumask_t *mask) { __smp_cross_call(mask, IPI_CPU_BACKTRACE); } +#endif void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self) { +#if defined(CONFIG_AVM_FASTIRQ) + (void)avm_trigger_all_cpu_backtrace(NULL, NULL); +#else nmi_trigger_cpumask_backtrace(mask, exclude_self, raise_nmi); +#endif }