]> www.infradead.org Git - users/jedix/linux-maple.git/commit
arm64: smp: Fix missing IPI statistics
authorJinjie Ruan <ruanjinjie@huawei.com>
Thu, 20 Jun 2024 06:36:00 +0000 (14:36 +0800)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 8 Jul 2024 17:05:23 +0000 (18:05 +0100)
commit916b93f4e865b35563902f5862b443fc122631b4
tree02d294b50f133cbd52b63788276a533380b31b52
parentcf938f91784f5b35d16fa9fc746a3bb03659ab50
arm64: smp: Fix missing IPI statistics

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@huawei.com>
Suggested-by: Doug Anderson <dianders@chromium.org>
Acked-by: Will Deacon <will@kernel.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20240620063600.573559-1-ruanjinjie@huawei.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/smp.c