arch/arm64/kernel/smp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
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.
Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
arch/arm64/kernel/smp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index 31c8b3094dd7..7f9a5cf0f3b8 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -1039,7 +1039,8 @@ void __init set_smp_ipi_range(int ipi_base, int n)
}
ipi_desc[i] = irq_to_desc(ipi_base + i);
- irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
+ if (i < NR_IPI)
+ irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
}
ipi_irq_base = ipi_base;
--
2.34.1
On Fri, Jun 07, 2024 at 03:47:16PM +0800, Jinjie Ruan wrote:
> 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.
>
> Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
> arch/arm64/kernel/smp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
> index 31c8b3094dd7..7f9a5cf0f3b8 100644
> --- a/arch/arm64/kernel/smp.c
> +++ b/arch/arm64/kernel/smp.c
> @@ -1039,7 +1039,8 @@ void __init set_smp_ipi_range(int ipi_base, int n)
> }
>
> ipi_desc[i] = irq_to_desc(ipi_base + i);
> - irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
> + if (i < NR_IPI)
> + irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
> }
Please can you show the contents of /proc/interrupts before and after
this patch and put that in the commit message? I'm not seeing how the
two new IPIs get picked up by arch_show_interrupts().
Thanks,
Will
On 2024/6/19 21:32, Will Deacon wrote:
> On Fri, Jun 07, 2024 at 03:47:16PM +0800, Jinjie Ruan wrote:
>> 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.
>>
>> Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>> arch/arm64/kernel/smp.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
>> index 31c8b3094dd7..7f9a5cf0f3b8 100644
>> --- a/arch/arm64/kernel/smp.c
>> +++ b/arch/arm64/kernel/smp.c
>> @@ -1039,7 +1039,8 @@ void __init set_smp_ipi_range(int ipi_base, int n)
>> }
>>
>> ipi_desc[i] = irq_to_desc(ipi_base + i);
>> - irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
>> + if (i < NR_IPI)
>> + irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
>> }
>
> Please can you show the contents of /proc/interrupts before and after
> this patch and put that in the commit message? I'm not seeing how the
> two new IPIs get picked up by arch_show_interrupts().
Before this patch, CPU_BACKTRACE and KGDB_ROUNDUP IPIs are missing as below:
/ # cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
11: 463 656 243 654 GICv3 27 Level
arch_timer
13: 14 0 0 0 GICv3 33 Level
uart-pl011
17: 0 0 0 0 ITS-MSI 16384 Edge
virtio2-config
18: 0 5 0 0 ITS-MSI 16385 Edge
virtio2-input
19: 68 0 0 0 GICv3 78 Edge
virtio0
20: 0 0 0 0 GICv3 79 Edge
virtio1
21: 0 0 0 0 GICv3 34 Level
rtc-pl031
22: 2 2 2 2 GICv3 23 Level
arm-pmu
23: 0 0 0 0 ITS-MSI 32768 Edge
virtio3-config
24: 0 0 0 0 ITS-MSI 32769 Edge
virtio3-requests
25: 0 0 0 0 9030000.pl061 3 Edge
GPIO Key Poweroff
IPI0: 15 13 5 21 Rescheduling
interrupts
IPI1: 385 129 282 194 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 patch the hwirq6/7 IPI is also displayed:
/ # cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
7: 0 0 0 0 GICv3 6 Edge IPI
8: 0 0 0 0 GICv3 7 Edge IPI
11: 414 433 424 422 GICv3 27 Level
arch_timer
13: 21 0 0 0 GICv3 33 Level
uart-pl011
17: 0 0 0 0 ITS-MSI 16384 Edge
virtio2-config
18: 0 6 0 0 ITS-MSI 16385 Edge
virtio2-input
19: 60 0 0 0 GICv3 78 Edge
virtio0
20: 0 0 0 0 GICv3 79 Edge
virtio1
21: 0 0 0 0 GICv3 34 Level
rtc-pl031
22: 3 3 3 3 GICv3 23 Level
arm-pmu
23: 0 0 0 0 ITS-MSI 32768 Edge
virtio3-config
24: 0 0 0 0 ITS-MSI 32769 Edge
virtio3-requests
25: 0 0 0 0 9030000.pl061 3 Edge
GPIO Key Poweroff
IPI0: 15 13 19 12 Rescheduling
interrupts
IPI1: 241 162 328 252 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: 0 1 0 0 IRQ work interrupts
Err: 0
>
> Thanks,
>
> Will
Hi,
On Fri, Jun 7, 2024 at 12:45 AM Jinjie Ruan <ruanjinjie@huawei.com> wrote:
>
> 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.
>
> Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
> arch/arm64/kernel/smp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
While I won't object to your patch if everyone agrees that we want it,
fully excluding "cpu backtrace" and "kgdb roundup" from
/proc/interrupts was more of a design decision than a bug. Those two
IPIs are really special cases and not something that I'd expect anyone
to care about knowing the count of. Keeping them out of
"/proc/interrupts" just avoids noise. I'd also note that I believe
arm32 makes the same design choice for "cpu backtrace".
In any case, if we truly think people want the count of these IPIs
then it feels like we should report them in arch_show_interrupts()
where we can give them a nice string.
-Doug
On 2024/6/8 0:02, Doug Anderson wrote:
> Hi,
>
> On Fri, Jun 7, 2024 at 12:45 AM Jinjie Ruan <ruanjinjie@huawei.com> wrote:
>>
>> 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.
>>
>> Fixes: 331a1b3a836c ("arm64: smp: Add arch support for backtrace using pseudo-NMI")
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>> arch/arm64/kernel/smp.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> While I won't object to your patch if everyone agrees that we want it,
Hello, What's everyone's opinion?
> fully excluding "cpu backtrace" and "kgdb roundup" from
> /proc/interrupts was more of a design decision than a bug. Those two
> IPIs are really special cases and not something that I'd expect anyone
> to care about knowing the count of. Keeping them out of
> "/proc/interrupts" just avoids noise. I'd also note that I believe
> arm32 makes the same design choice for "cpu backtrace".
Yes, arm32 is same as arm64.
>
> In any case, if we truly think people want the count of these IPIs
> then it feels like we should report them in arch_show_interrupts()
> where we can give them a nice string.
That's a good idea.
>
> -Doug
© 2016 - 2026 Red Hat, Inc.