On Fri, Feb 23 2024 at 15:18, Bitao Hu wrote: > On 2024/2/22 21:22, Thomas Gleixner wrote: >>> - if (desc->kstat_irqs) { >>> - for_each_online_cpu(j) >>> - any_count |= data_race(*per_cpu_ptr(desc->kstat_irqs, j)); >>> - } >>> + if (desc->kstat_irqs) >>> + any_count = data_race(desc->tot_count); >> >> This is an unrelated change and needs to be split out into a separate >> patch with a proper changelog which explains why this is equivalent. >> > > Alright, I will remove this change witch is not related to the purpose > of this patch. > > I guess that the purpose of suggesting this change in your V1 response > was to speedup the 'show_interrupts'. However, after reviewing the > usage of 'desc->tot_count' in 'unsigned int kstat_irqs(unsigned int > irq)', I think the change might be as follows: > > diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c > index 623b8136e9af..53b8d6edd7ac 100644 > --- a/kernel/irq/proc.c > +++ b/kernel/irq/proc.c > @@ -489,8 +489,13 @@ int show_interrupts(struct seq_file *p, void *v) > goto outsparse; > > if (desc->kstat_irqs) { > - for_each_online_cpu(j) > - any_count |= > data_race(per_cpu(desc->kstat_irqs->cnt, j)); > + if (!irq_settings_is_per_cpu_devid(desc) && > + !irq_settings_is_per_cpu(desc) && > + !irq_is_nmi(desc)) > + any_count = data_race(desc->tot_count); > + else > + for_each_online_cpu(j) > + any_count |= > data_race(per_cpu(desc->kstat_irqs->cnt, j)); > } > > if ((!desc->action || irq_desc_is_chained(desc)) && !any_count) > > Is my idea correct? Yes.