Re: [PATCH 6/6] video/logo: move logo selection logic to Kconfig
From: Vincent Mailhol
Date: Thu Jan 01 2026 - 08:17:13 EST
Happy new year!
On 30/12/2025 at 23:20, Vincent Mailhol wrote:
> Now that the path to the logo file can be directly entered in Kbuild,
> there is no more need to handle all the logo file selection in the
> Makefile and the C files.
>
> Move all the logo file selection logic to Kbuild, this done, clean-up
> the C code to only leave one entry for each logo type (monochrome,
> 16-colors and 224-colors).
>
> Signed-off-by: Vincent Mailhol <mailhol@xxxxxxxxxx>
> ---
> drivers/video/logo/Kconfig | 49 +++++++++------------------------------------
> drivers/video/logo/Makefile | 21 +------------------
> drivers/video/logo/logo.c | 46 ++++--------------------------------------
> include/linux/linux_logo.h | 9 ---------
> 4 files changed, 14 insertions(+), 111 deletions(-)
>
> diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
> index 1d1651c067a1..9bf8f14c6856 100644
> --- a/drivers/video/logo/Kconfig
> +++ b/drivers/video/logo/Kconfig
> @@ -25,6 +25,7 @@ config LOGO_LINUX_MONO
> config LOGO_LINUX_MONO_FILE
> string "Monochrome logo .pbm file"
> depends on LOGO_LINUX_MONO
> + default "drivers/video/logo/logo_superh_mono.pbm" if SUPERH
> default "drivers/video/logo/logo_linux_mono.pbm"
> help
> Takes a path to a monochromatic logo in the portable pixmap file
> @@ -42,6 +43,7 @@ config LOGO_LINUX_VGA16
> config LOGO_LINUX_VGA16_FILE
> string "16-color logo .ppm file"
> depends on LOGO_LINUX_VGA16
> + default "drivers/video/logo/logo_superh_vga16.ppm" if SUPERH
> default "drivers/video/logo/logo_linux_vga16.ppm"
> help
> Takes a path to a logo in the portable pixmap file format (.ppm),
> @@ -61,6 +63,13 @@ config LOGO_LINUX_CLUT224
> config LOGO_LINUX_CLUT224_FILE
> string "224-color logo .ppm file"
> depends on LOGO_LINUX_CLUT224
> + default "drivers/video/logo/logo_dec_clut224.ppm" if MACH_DECSTATION || ALPHA
> + default "drivers/video/logo/logo_mac_clut224.ppm" if MAC
> + default "drivers/video/logo/logo_parisc_clut224.ppm" if PARISC
> + default "drivers/video/logo/logo_sgi_clut224.ppm" if SGI_IP22 || SGI_IP27 || SGI_IP32
> + default "drivers/video/logo/logo_sun_clut224.ppm" if SPARC
> + default "drivers/video/logo/logo_superh_clut224.ppm" if SUPERH
> + default "drivers/video/logo/logo_spe_clut224.ppm" if SPU_BASE
> default "drivers/video/logo/logo_linux_clut224.ppm"
> help
> Takes a path to a 224-color logo in the portable pixmap file
> @@ -71,44 +80,4 @@ config LOGO_LINUX_CLUT224_FILE
>
> magick source_image -compress none -colors 224 destination.ppm
>
> -config LOGO_DEC_CLUT224
> - bool "224-color Digital Equipment Corporation Linux logo"
> - depends on MACH_DECSTATION || ALPHA
> - default y
> -
> -config LOGO_MAC_CLUT224
> - bool "224-color Macintosh Linux logo"
> - depends on MAC
> - default y
> -
> -config LOGO_PARISC_CLUT224
> - bool "224-color PA-RISC Linux logo"
> - depends on PARISC
> - default y
> -
> -config LOGO_SGI_CLUT224
> - bool "224-color SGI Linux logo"
> - depends on SGI_IP22 || SGI_IP27 || SGI_IP32
> - default y
> -
> -config LOGO_SUN_CLUT224
> - bool "224-color Sun Linux logo"
> - depends on SPARC
> - default y
> -
> -config LOGO_SUPERH_MONO
> - bool "Black and white SuperH Linux logo"
> - depends on SUPERH
> - default y
> -
> -config LOGO_SUPERH_VGA16
> - bool "16-color SuperH Linux logo"
> - depends on SUPERH
> - default y
> -
> -config LOGO_SUPERH_CLUT224
> - bool "224-color SuperH Linux logo"
> - depends on SUPERH
> - default y
> -
> endif # LOGO
> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
> index ac8e9da3f51a..c32238fddaa6 100644
> --- a/drivers/video/logo/Makefile
> +++ b/drivers/video/logo/Makefile
> @@ -5,16 +5,6 @@ obj-$(CONFIG_LOGO) += logo.o
> obj-$(CONFIG_LOGO_LINUX_MONO) += logo_linux_mono.o
> obj-$(CONFIG_LOGO_LINUX_VGA16) += logo_linux_vga16.o
> obj-$(CONFIG_LOGO_LINUX_CLUT224) += logo_linux_clut224.o
> -obj-$(CONFIG_LOGO_DEC_CLUT224) += logo_dec_clut224.o
> -obj-$(CONFIG_LOGO_MAC_CLUT224) += logo_mac_clut224.o
> -obj-$(CONFIG_LOGO_PARISC_CLUT224) += logo_parisc_clut224.o
> -obj-$(CONFIG_LOGO_SGI_CLUT224) += logo_sgi_clut224.o
> -obj-$(CONFIG_LOGO_SUN_CLUT224) += logo_sun_clut224.o
> -obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
> -obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
> -obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
> -
> -obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
Removing the logo_spe_clut224.o target was a mistake. This removes the
logo_spe_clut224 object which is still being referenced in
arch/powerpc/platforms/cell/spu_base.c
The Cell processor (found, for example in the PS3) has a unique
feature in the kernel: it will not only show the standard penguin
logos for each of the core, but also show an extra line of logos for
each of its SPE core. More details with a screenshot here:
Link: https://lore.kernel.org/all/20070710122702.765654000@xxxxxxxxxxxxxxxxxxxx/
And indeed, on a ps3_defconfig, I am getting this build error:
CC arch/powerpc/platforms/cell/spu_base.o
arch/powerpc/platforms/cell/spu_base.c: In function 'init_spu_base':
arch/powerpc/platforms/cell/spu_base.c:775:39: error: 'logo_spe_clut224' undeclared (first use in this function); did you mean 'logo_linux_clut224'?
775 | fb_append_extra_logo(&logo_spe_clut224, ret);
| ^~~~~~~~~~~~~~~~
| logo_linux_clut224
This extra logo feature is a weird beast only used by a single CPU. I
will just restore the logo_spe_clut224.o target in v2 and leave it
untouched.
I checked and the other logo objects are not being referenced anymore
throughout the kernel.
Yours sincerely,
Vincent Mailhol