Patch "arm64: smp: Fix missing IPI statistics" has been added to the 6.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    arm64: smp: Fix missing IPI statistics

to the 6.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     arm64-smp-fix-missing-ipi-statistics.patch
and it can be found in the queue-6.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6baec69330b727eb402b56fc49dab3b80a20cc3e
Author: Jinjie Ruan <ruanjinjie@xxxxxxxxxx>
Date:   Thu Jun 20 14:36:00 2024 +0800

    arm64: smp: Fix missing IPI statistics
    
    [ Upstream commit 916b93f4e865b35563902f5862b443fc122631b4 ]
    
    commit 83cfac95c018 ("genirq: Allow interrupts to be excluded from
    /proc/interrupts") is to avoid IPIs appear twice in /proc/interrupts.
    But the commit 331a1b3a836c ("arm64: smp: Add arch support for backtrace
    using pseudo-NMI") and commit 2f5cd0c7ffde("arm64: kgdb: Implement
    kgdb_roundup_cpus() to enable pseudo-NMI roundup") set CPU_BACKTRACE and
    KGDB_ROUNDUP IPIs "IRQ_HIDDEN" flag but not show them in
    arch_show_interrupts(), which cause the interrupt kstat_irqs accounting
    is missing in display.
    
    Before this patch, CPU_BACKTRACE and KGDB_ROUNDUP IPIs are missing:
            / # cat /proc/interrupts
                       CPU0       CPU1       CPU2       CPU3
             11:        466        600        309        332     GICv3  27 Level     arch_timer
             13:         24          0          0          0     GICv3  33 Level     uart-pl011
             15:         64          0          0          0     GICv3  78 Edge      virtio0
             16:          0          0          0          0     GICv3  79 Edge      virtio1
             17:          0          0          0          0     GICv3  34 Level     rtc-pl031
             18:          3          3          3          3     GICv3  23 Level     arm-pmu
             19:          0          0          0          0 9030000.pl061   3 Edge      GPIO Key Poweroff
            IPI0:         7         14          9         26       Rescheduling interrupts
            IPI1:       354         93        233        255       Function call interrupts
            IPI2:         0          0          0          0       CPU stop interrupts
            IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
            IPI4:         0          0          0          0       Timer broadcast interrupts
            IPI5:         1          0          0          0       IRQ work interrupts
            Err:          0
    
    After this pacth, CPU_BACKTRACE and KGDB_ROUNDUP IPIs are displayed:
            / # cat /proc/interrupts
                       CPU0       CPU1       CPU2       CPU3
             11:        393        281        532        449     GICv3  27 Level     arch_timer
             13:         15          0          0          0     GICv3  33 Level     uart-pl011
             15:         64          0          0          0     GICv3  78 Edge      virtio0
             16:          0          0          0          0     GICv3  79 Edge      virtio1
             17:          0          0          0          0     GICv3  34 Level     rtc-pl031
             18:          2          2          2          2     GICv3  23 Level     arm-pmu
             19:          0          0          0          0 9030000.pl061   3 Edge      GPIO Key Poweroff
            IPI0:        11         19          4         23       Rescheduling interrupts
            IPI1:       279        347        222         72       Function call interrupts
            IPI2:         0          0          0          0       CPU stop interrupts
            IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
            IPI4:         0          0          0          0       Timer broadcast interrupts
            IPI5:         1          0          0          1       IRQ work interrupts
            IPI6:         0          0          0          0       CPU backtrace interrupts
            IPI7:         0          0          0          0       KGDB roundup interrupts
            Err:          0
    
    Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
    Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx>
    Suggested-by: Doug Anderson <dianders@xxxxxxxxxxxx>
    Acked-by: Will Deacon <will@xxxxxxxxxx>
    Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240620063600.573559-1-ruanjinjie@xxxxxxxxxx
    Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index 31c8b3094dd7b..5de85dccc09cd 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -767,13 +767,15 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
 	}
 }
 
-static const char *ipi_types[NR_IPI] __tracepoint_string = {
+static const char *ipi_types[MAX_IPI] __tracepoint_string = {
 	[IPI_RESCHEDULE]	= "Rescheduling interrupts",
 	[IPI_CALL_FUNC]		= "Function call interrupts",
 	[IPI_CPU_STOP]		= "CPU stop interrupts",
 	[IPI_CPU_CRASH_STOP]	= "CPU stop (for crash dump) interrupts",
 	[IPI_TIMER]		= "Timer broadcast interrupts",
 	[IPI_IRQ_WORK]		= "IRQ work interrupts",
+	[IPI_CPU_BACKTRACE]	= "CPU backtrace interrupts",
+	[IPI_KGDB_ROUNDUP]	= "KGDB roundup interrupts",
 };
 
 static void smp_cross_call(const struct cpumask *target, unsigned int ipinr);
@@ -784,7 +786,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
 {
 	unsigned int cpu, i;
 
-	for (i = 0; i < NR_IPI; i++) {
+	for (i = 0; i < MAX_IPI; i++) {
 		seq_printf(p, "%*s%u:%s", prec - 1, "IPI", i,
 			   prec >= 4 ? " " : "");
 		for_each_online_cpu(cpu)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux