[PATCH] ARM: Delete ARM11MPCore (ARM11 ARMv6K SMP) support

Arnd Bergmann arnd at arndb.de
Mon Dec 4 22:59:32 PST 2023


On Mon, Dec 4, 2023, at 23:36, Linus Walleij wrote:
> This ARM11 SMP configuration was one of the first SMP configurations
> the ARM kernel supported, but it has the downside of odd DMA handling,
> odd cache tagging, and often (as of recent) completely broken cache
> handling on the ARM RealView PB11MPCore test chips. To boot the
> platform it was necessary to completely disable the cache.
> When it comes to the EB 11MPCore it is unclear if this ever worked.
>
> These reference designs are now the only ARMv6K SMP platforms.
>
> As only reference designs of purely academic interest remain, and
> since the special-cased DMA and PMU code is hard to maintain and
> doesn't really work, it is not really worth our time.
>
> Delete the ARM11MPCore support along with:
>
> - The special DMA quirk CONFIG_DMA_CACHE_RWFO that is only used
>   on ARMv6K SMP, and we are the last ARMV6K system leaving the
>   building and the cache handling is awkward, so good-bye.
>
> - The special PMU handling that was only used by ARM11MPCore.
>
> The following is left behind:
>
> - TIMER_OF_DECLARE(arm_twd_11mp, "arm,arm11mp-twd-timer", ...)
>   in arch/arm/kernel/smp_twd.c, this is still in use by Marvell MMP3
>   arch/arm/boot/dts/marvell/mmp3.dtsi
>
> - IRQCHIP_DECLARE(arm11mp_gic, "arm,arm11mp-gic", ...)
>   in drivers/irqchip/irq-gic.c, this is still in use by Marvell MMP3
>   arch/arm/boot/dts/marvell/mmp3.dtsi
>
> These are unfortunate but will need to be kept around for
> compatibility. New Marvell-specific compatibles should however probably
> be added.
>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

This looks good to me (one small issue below), thanks for the cleanup!

Reviewed-by: Arnd Bergmann <arnd at arndb.de>

>  arch/arm/kernel/perf_event_v6.c            | 34 ------------------------------
>  arch/arm/mach-versatile/Kconfig            | 17 ---------------
>  arch/arm/mach-versatile/platsmp-realview.c |  2 --
>  arch/arm/mach-versatile/realview.c         |  1 -
>  arch/arm/mm/Kconfig                        | 18 ----------------
>  arch/arm/mm/cache-v6.S                     | 31 ---------------------------
>  6 files changed, 103 deletions(-)

Russell, this touches both mach-versatile and core Arm
code, any preference for how we should merge it (provided
you are happy with the changes)?

I'm fine with the combined change going through your
tree or mine, or splitting it up.

--- a/arch/arm/mach-versatile/platsmp-realview.c
+++ b/arch/arm/mach-versatile/platsmp-realview.c
@@ -18,7 +18,6 @@
 #define REALVIEW_SYS_FLAGSSET_OFFSET	0x30
 
 static const struct of_device_id realview_scu_match[] = {
-	{ .compatible = "arm,arm11mp-scu", },
 	{ .compatible = "arm,cortex-a9-scu", },
 	{ .compatible = "arm,cortex-a5-scu", },
 	{ }

I see that the arm,arm11mp-scu device is provided by
arm-realview-eb-mp.dtsi, which in turn gets included
by both arm-realview-eb-11mp.dts and arm-realview-eb-a9mp.dts,
so the Cortex-A9 dtb ends up with the wrong compatible
string at the moment.

The driver doesn't care either way, and we can easily
change the dtsi file use the Cortex-A9 compatibles
later, but I think we probably want to leave the
platsmp code to match the old string as well for
compatibility with old dtb files.

     Arnd



More information about the linux-arm-kernel mailing list