Message ID | 20240705-b4-mips-ipi-improvements-v2-5-2d50b56268e8@flygoat.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | MIPS: IPI Improvements | expand |
Hi Jiaxun, kernel test robot noticed the following build warnings: [auto build test WARNING on 0b58e108042b0ed28a71cd7edf5175999955b233] url: https://github.com/intel-lab-lkp/linux/commits/Jiaxun-Yang/MIPS-smp-Make-IPI-interrupts-scalable/20240706-040839 base: 0b58e108042b0ed28a71cd7edf5175999955b233 patch link: https://lore.kernel.org/r/20240705-b4-mips-ipi-improvements-v2-5-2d50b56268e8%40flygoat.com patch subject: [PATCH v2 05/10] MIPS: smp: Implement IPI stats config: mips-rb532_defconfig (https://download.01.org/0day-ci/archive/20240707/202407070535.1mCAxzdO-lkp@intel.com/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project a0c6b8aef853eedaa0980f07c0a502a5a8a9740e) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240707/202407070535.1mCAxzdO-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202407070535.1mCAxzdO-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from arch/mips/kernel/irq.c:17: In file included from include/linux/mm.h:2229: include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ In file included from arch/mips/kernel/irq.c:29: >> arch/mips/include/asm/ipi.h:54:6: warning: no previous prototype for function 'mips_smp_ipi_set_virq_range' [-Wmissing-prototypes] 54 | void mips_smp_ipi_set_virq_range(int virq, int nr) | ^ arch/mips/include/asm/ipi.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 54 | void mips_smp_ipi_set_virq_range(int virq, int nr) | ^ | static >> arch/mips/include/asm/ipi.h:58:6: warning: no previous prototype for function 'mips_smp_ipi_set_irqdomain' [-Wmissing-prototypes] 58 | void mips_smp_ipi_set_irqdomain(struct irq_domain *d) | ^ arch/mips/include/asm/ipi.h:58:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 58 | void mips_smp_ipi_set_irqdomain(struct irq_domain *d) | ^ | static 3 warnings generated. vim +/mips_smp_ipi_set_virq_range +54 arch/mips/include/asm/ipi.h 42d789a89e6b90 Jiaxun Yang 2024-07-05 48 42d789a89e6b90 Jiaxun Yang 2024-07-05 49 static inline void mips_smp_show_ipi_stats(struct seq_file *p, int prec) 42d789a89e6b90 Jiaxun Yang 2024-07-05 50 { 42d789a89e6b90 Jiaxun Yang 2024-07-05 51 } b7a65e07e35cdf Jiaxun Yang 2024-07-05 52 #endif /* CONFIG_GENERIC_IRQ_IPI */ 877ae81debcbb0 Jiaxun Yang 2024-07-05 53 #else 877ae81debcbb0 Jiaxun Yang 2024-07-05 @54 void mips_smp_ipi_set_virq_range(int virq, int nr) 877ae81debcbb0 Jiaxun Yang 2024-07-05 55 { 877ae81debcbb0 Jiaxun Yang 2024-07-05 56 } 877ae81debcbb0 Jiaxun Yang 2024-07-05 57 877ae81debcbb0 Jiaxun Yang 2024-07-05 @58 void mips_smp_ipi_set_irqdomain(struct irq_domain *d) 877ae81debcbb0 Jiaxun Yang 2024-07-05 59 { 877ae81debcbb0 Jiaxun Yang 2024-07-05 60 } 877ae81debcbb0 Jiaxun Yang 2024-07-05 61
Hi Jiaxun, kernel test robot noticed the following build warnings: [auto build test WARNING on 0b58e108042b0ed28a71cd7edf5175999955b233] url: https://github.com/intel-lab-lkp/linux/commits/Jiaxun-Yang/MIPS-smp-Make-IPI-interrupts-scalable/20240706-040839 base: 0b58e108042b0ed28a71cd7edf5175999955b233 patch link: https://lore.kernel.org/r/20240705-b4-mips-ipi-improvements-v2-5-2d50b56268e8%40flygoat.com patch subject: [PATCH v2 05/10] MIPS: smp: Implement IPI stats config: mips-allnoconfig (https://download.01.org/0day-ci/archive/20240707/202407070524.LKSlICvH-lkp@intel.com/config) compiler: mips-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240707/202407070524.LKSlICvH-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202407070524.LKSlICvH-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from arch/mips/kernel/irq.c:29: >> arch/mips/include/asm/ipi.h:54:6: warning: no previous prototype for 'mips_smp_ipi_set_virq_range' [-Wmissing-prototypes] 54 | void mips_smp_ipi_set_virq_range(int virq, int nr) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> arch/mips/include/asm/ipi.h:58:6: warning: no previous prototype for 'mips_smp_ipi_set_irqdomain' [-Wmissing-prototypes] 58 | void mips_smp_ipi_set_irqdomain(struct irq_domain *d) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/mips_smp_ipi_set_virq_range +54 arch/mips/include/asm/ipi.h 42d789a89e6b90 Jiaxun Yang 2024-07-05 48 42d789a89e6b90 Jiaxun Yang 2024-07-05 49 static inline void mips_smp_show_ipi_stats(struct seq_file *p, int prec) 42d789a89e6b90 Jiaxun Yang 2024-07-05 50 { 42d789a89e6b90 Jiaxun Yang 2024-07-05 51 } b7a65e07e35cdf Jiaxun Yang 2024-07-05 52 #endif /* CONFIG_GENERIC_IRQ_IPI */ 877ae81debcbb0 Jiaxun Yang 2024-07-05 53 #else 877ae81debcbb0 Jiaxun Yang 2024-07-05 @54 void mips_smp_ipi_set_virq_range(int virq, int nr) 877ae81debcbb0 Jiaxun Yang 2024-07-05 55 { 877ae81debcbb0 Jiaxun Yang 2024-07-05 56 } 877ae81debcbb0 Jiaxun Yang 2024-07-05 57 877ae81debcbb0 Jiaxun Yang 2024-07-05 @58 void mips_smp_ipi_set_irqdomain(struct irq_domain *d) 877ae81debcbb0 Jiaxun Yang 2024-07-05 59 { 877ae81debcbb0 Jiaxun Yang 2024-07-05 60 } 877ae81debcbb0 Jiaxun Yang 2024-07-05 61
diff --git a/arch/mips/include/asm/ipi.h b/arch/mips/include/asm/ipi.h index 0fc8c31c6a52..96c6e76d72c9 100644 --- a/arch/mips/include/asm/ipi.h +++ b/arch/mips/include/asm/ipi.h @@ -36,6 +36,7 @@ void mips_smp_ipi_disable(void); extern bool mips_smp_ipi_have_virq_range(void); void mips_smp_ipi_set_irqdomain(struct irq_domain *d); extern void mips_smp_ipi_set_virq_range(int virq, int nr); +extern void mips_smp_show_ipi_stats(struct seq_file *p, int prec); #else static inline void mips_smp_ipi_enable(void) { @@ -44,6 +45,10 @@ static inline void mips_smp_ipi_enable(void) static inline void mips_smp_ipi_disable(void) { } + +static inline void mips_smp_show_ipi_stats(struct seq_file *p, int prec) +{ +} #endif /* CONFIG_GENERIC_IRQ_IPI */ #else void mips_smp_ipi_set_virq_range(int virq, int nr) @@ -58,5 +63,9 @@ static inline bool mips_smp_ipi_have_virq_range(void) { return false; } + +static inline void mips_smp_show_ipi_stats(struct seq_file *p, int prec) +{ +} #endif /* CONFIG_SMP */ #endif diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 5e11582fe308..c3ea8d80e0cb 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c @@ -26,6 +26,8 @@ #include <linux/atomic.h> #include <linux/uaccess.h> +#include <asm/ipi.h> + void *irq_stack[NR_CPUS]; /* @@ -42,6 +44,8 @@ atomic_t irq_err_count; int arch_show_interrupts(struct seq_file *p, int prec) { seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); + mips_smp_show_ipi_stats(p, prec); + return 0; } diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index f29259d16a37..49be86e15b49 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c @@ -243,6 +243,19 @@ void mips_smp_ipi_disable(void) disable_percpu_irq(ipi_virqs[i]); } +void mips_smp_show_ipi_stats(struct seq_file *p, int prec) +{ + unsigned int cpu, i; + + for (i = 0; i < IPI_MAX; i++) { + seq_printf(p, "%*s%u:%s", prec - 1, "IPI", i, + prec >= 4 ? " " : ""); + for_each_online_cpu(cpu) + seq_printf(p, "%10u ", irq_desc_kstat_cpu(ipi_desc[i], cpu)); + seq_printf(p, " %s\n", ipi_names[i]); + } +} + static void smp_ipi_init_one(unsigned int virq, const char *name, irq_handler_t handler) {
Show IPI statistics in arch_show_interrupts to help users analysis IPI performance. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- arch/mips/include/asm/ipi.h | 9 +++++++++ arch/mips/kernel/irq.c | 4 ++++ arch/mips/kernel/smp.c | 13 +++++++++++++ 3 files changed, 26 insertions(+)