• Jinjie Ruan's avatar
    arm64: smp: Fix missing IPI statistics · 916b93f4
    Jinjie Ruan authored
    commit 83cfac95 ("genirq: Allow interrupts to be excluded from
    /proc/interrupts") is to avoid IPIs appear twice in /proc/interrupts.
    But the commit 331a1b3a ("arm64: smp: Add arch support for backtrace
    using pseudo-NMI") and commit 2f5cd0c7("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: 331a1b3a ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
    Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
    Suggested-by: default avatarDoug Anderson <dianders@chromium.org>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20240620063600.573559-1-ruanjinjie@huawei.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    916b93f4
smp.c 26.4 KB