merged to 5.10, but this doesn't apply to linux-yocto-dev (5.12.2). Bruce
In message: [PATCH][linux-yocto][linux-yocto v5.10/standard/sdkv5.4/xlnx-soc][linux-yocto-dev standard/xlnx-soc] arm: fix IPI_CPU_BACKTRACE wrong number and handler missing issue on 12/05/2021 quanyang.wang wrote: > From: Quanyang Wang <[email protected]> > > IPI_CPU_BACKTRACE should be 7 not 8 and the handler for IPI_CPU_BACKTRACE > was dropped when I porting SDK patches. Let's add it back to fix the issue > when echo "l" to /proc/sysrq-trigger failed. > > Signed-off-by: Quanyang Wang <[email protected]> > --- > arch/arm/kernel/smp.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c > index 137e4bf0c7c9..eb759a366a01 100644 > --- a/arch/arm/kernel/smp.c > +++ b/arch/arm/kernel/smp.c > @@ -66,12 +66,11 @@ enum ipi_msg_type { > IPI_CPU_STOP, > IPI_IRQ_WORK, > IPI_COMPLETION, > - NR_IPI_P = NR_IPI, > /* > * CPU_BACKTRACE is special and not included in NR_IPI > * or tracable with trace_ipi_* > */ > - IPI_CPU_BACKTRACE = NR_IPI, > + IPI_CPU_BACKTRACE, > /* > * SGI8-15 can be reserved by secure firmware, and thus may > * not be usable by the kernel. Please keep the above limited > @@ -82,7 +81,7 @@ enum ipi_msg_type { > > static int ipi_irq_base __read_mostly; > static int nr_ipi __read_mostly = NR_IPI; > -static struct irq_desc *ipi_desc[MAX_IPI] __read_mostly; > +static struct irq_desc *ipi_desc[NR_IPI] __read_mostly; > > static void ipi_setup(int cpu); > > @@ -530,6 +529,7 @@ struct ipi { > > static void ipi_cpu_stop(void); > static void ipi_complete(void); > +static void ipi_cpu_backtrace(void); > > #define IPI_DESC_STRING_IPI_WAKEUP "CPU wakeup interrupts" > #define IPI_DESC_STRING_IPI_TIMER "Timer broadcast interrupts" > @@ -538,6 +538,7 @@ static void ipi_complete(void); > #define IPI_DESC_STRING_IPI_CPU_STOP "CPU stop interrupts" > #define IPI_DESC_STRING_IPI_IRQ_WORK "IRQ work interrupts" > #define IPI_DESC_STRING_IPI_COMPLETION "completion interrupts" > +#define IPI_DESC_STRING_IPI_CPU_BACKTRACE "CPU backtrace interrupts" > > #define IPI_DESC_STR(x) IPI_DESC_STRING_ ## x > > @@ -550,6 +551,7 @@ static const char* ipi_desc_strings[] __tracepoint_string > = > [IPI_CPU_STOP] = IPI_DESC_STR(IPI_CPU_STOP), > [IPI_IRQ_WORK] = IPI_DESC_STR(IPI_IRQ_WORK), > [IPI_COMPLETION] = IPI_DESC_STR(IPI_COMPLETION), > + [IPI_CPU_BACKTRACE] = IPI_DESC_STR(IPI_CPU_BACKTRACE), > }; > > > @@ -571,6 +573,7 @@ static struct ipi ipi_types[NR_IPI] = { > S(IPI_IRQ_WORK, irq_work_run), > #endif > S(IPI_COMPLETION, ipi_complete), > + S(IPI_CPU_BACKTRACE, ipi_cpu_backtrace), > }; > > > @@ -669,6 +672,13 @@ static void ipi_complete(void) > complete(per_cpu(cpu_completion, cpu)); > } > > +static void ipi_cpu_backtrace(void) > +{ > + printk_nmi_enter(); > + nmi_cpu_backtrace(get_irq_regs()); > + printk_nmi_exit(); > +} > + > /* > * Main handler for inter-processor interrupts > */ > @@ -758,7 +768,7 @@ void __init set_smp_ipi_range(int ipi_base, int n) > { > int i; > > - nr_ipi = min(n, MAX_IPI); > + nr_ipi = min(n, NR_IPI); > > for (i = 0; i < nr_ipi; i++) { > int err; > -- > 2.25.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9871): https://lists.yoctoproject.org/g/linux-yocto/message/9871 Mute This Topic: https://lists.yoctoproject.org/mt/82764306/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
