Re: [PATCH 01/10] MIPS: smp: Make IPI interrupts scalable

Thomas Bogendoerfer
2024-07-04T13:15:12Z

On Thu, Jul 04, 2024 at 04:15:21AM +0800, Jiaxun Yang wrote:
>
>
> 在2024年7月3日七月 下午11:04，Thomas Bogendoerfer写道：
> > On Sun, Jun 16, 2024 at 10:03:05PM +0100, Jiaxun Yang wrote:
> >> Define enum ipi_message_type as other architectures did to
> >> allow easy extension to number of IPI interrupts, fiddle
> >> around platform IPI code to adopt to the new infra, add
> >> extensive BUILD_BUG_ON on IPI numbers to ensure future
> >> extensions won't break existing platforms.
> >>
> >> IPI related stuff are pulled to asm/ipi.h to avoid include
> >> linux/interrupt.h in asm/smp.h.
> >>
> >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >> ---
> >> arch/mips/cavium-octeon/smp.c | 109 ++++++++++++-----------------------
> >> arch/mips/include/asm/ipi.h | 34 +++++++++++
> >> arch/mips/include/asm/smp-ops.h | 8 +--
> >> arch/mips/include/asm/smp.h | 42 ++++++--------
> >> arch/mips/kernel/smp-bmips.c | 43 +++++++-------
> >> arch/mips/kernel/smp-cps.c | 1 +
> >> arch/mips/kernel/smp.c | 124 ++++++++++++++++++++--------------------
> >> arch/mips/loongson64/smp.c | 51 +++++++++--------
> >> arch/mips/mm/c-octeon.c | 2 +-
> >> arch/mips/sgi-ip27/ip27-smp.c | 15 +++--
> >> arch/mips/sgi-ip30/ip30-smp.c | 15 +++--
> >> arch/mips/sibyte/bcm1480/smp.c | 19 +++---
> >> arch/mips/sibyte/sb1250/smp.c | 13 +++--
> >> 13 files changed, 236 insertions(+), 240 deletions(-)
> >
> > you are touching a lot of platforms, how many did you test ?
>
> As mentioned in cover letter:
>
> ```
> It has been tested on MIPS Boston I6500, malta SOC-It, Loongson-2K,
> Cavium CN7130 (EdgeRouter 4), and an unannounced interaptiv UP MT
> platform with EIC.
>
> I don't really know broadcom platforms and SGI platforms well so
> changes to those platforms are kept minimal (no functional change).

I get a merge conflict in arch/mips/loongson64/smp.c and see following
warnings:

IP30 build:

CC arch/mips/fw/arc/init.o
In file included from /local/tbogendoerfer/korg/linux/arch/mips/fw/arc/init.c:15:
/local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:23:40: error: ‘enum ipi_message_type’ declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
23 | void (*send_ipi_single)(int cpu, enum ipi_message_type op);
| ^~~~~~~~~~~~~~~~
/local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:24:57: error: ‘enum ipi_message_type’ declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
24 | void (*send_ipi_mask)(const struct cpumask *mask, enum ipi_message_type op);
|

/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c: In function ‘smp_prepare_cpus’:
/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c:475:6: warning: unused variable ‘rc’ [-Wunused-variable]
475 | int rc;

/local/tbogendoerfer/korg/linux/arch/mips/include/asm/ipi.h:49:13: warning: ‘mips_smp_show_ipi_stats’ defined but not used [-Wunused-function]
49 | static void mips_smp_show_ipi_stats(struct seq_file *p, int prec)

bcm1480 build:

/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c: In function ‘smp_prepare_cpus’:
/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c:475:6: warning: unused variable ‘rc’ [-Wunused-variable]
475 | int rc;
| ^~

In file included from /local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c:34:
At top level:
/local/tbogendoerfer/korg/linux/arch/mips/include/asm/ipi.h:49:13: warning: ‘mips_smp_show_ipi_stats’ defined but not used [-Wunused-function]
49 | static void mips_smp_show_ipi_stats(struct seq_file *p, int prec)

octeon build:

/local/tbogendoerfer/korg/linux/arch/mips/cavium-octeon/smp.c:84:6: warning: no previous prototype for ‘octeon_send_ipi_single’ [-Wmissing-prototypes]
84 | void octeon_send_ipi_single(int cpu, enum ipi_message_type op)
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from /local/tbogendoerfer/korg/linux/arch/mips/cavium-octeon/smp.c:20:
/local/tbogendoerfer/korg/linux/arch/mips/include/asm/ipi.h:49:13: warning: ‘mips_smp_show_ipi_stats’ defined but not used [-Wunused-function]
49 | static void mips_smp_show_ipi_stats(struct seq_file *p, int prec)
| ^~~~~~~~~~~~~~~~~~~~~~~

/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c: In function ‘smp_prepare_cpus’:
/local/tbogendoerfer/korg/linux/arch/mips/kernel/smp.c:475:6: warning: unused variable ‘rc’ [-Wunused-variable]
475 | int rc;

/local/tbogendoerfer/korg/linux/arch/mips/include/asm/ipi.h:49:13: warning: ‘mips_smp_show_ipi_stats’ defined but not used [-Wunused-function]
49 | static void mips_smp_show_ipi_stats(struct seq_file *p, int prec)

Please fix.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]