From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:25:49
This series allows the user to replace the default kernel boot logo by
a custom one directly in the kernel configuration. This makes it
easier to customise the boot logo without the need to modify the
sources and allows such customisation to remain persistent after
applying the configuration to another version of the kernel.
Patch #1 and #2 are clean-up and preparation while patch #3 is the
main feature of this series: making the boot logo customisable.
While working on this, I realised that managing the logo file directly
in Kbuild allows us to simplify how we handle the different existing
variants of the Tux logo. This series thus ends with a clean-up which
moves all the logo selection logic to Kbuild except from one special
case (details in the patch description), simplifying the Makefile and
the C code.
Patch #4 and #5 do a tree-wide clean-up on the Kconfig symbols that
are to be removed in patch #6 and patch #6 simplify the logic as
explained above.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
Changes in v2:
- By removing the logo_spe_clut224.o target from the Makefile, v1
also removed the logo_spe_clut224 object which is still being
referenced in
arch/powerpc/platforms/cell/spu_base.c
Restore the logo_spe_clut224.o target.
Link to v1: https://lore.kernel.org/r/20251230-custom-logo-v1-0-4736374569ee@kernel.org
---
Vincent Mailhol (6):
video/logo: remove orphan .pgm Makefile rule
video/logo: add a type parameter to the logo makefile function
video/logo: allow custom logo
newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224
sh: defconfig: remove CONFIG_LOGO_SUPERH_*
video/logo: move logo selection logic to Kconfig
arch/sh/configs/dreamcast_defconfig | 2 -
arch/sh/configs/ecovec24_defconfig | 2 -
arch/sh/configs/kfr2r09_defconfig | 2 -
arch/sh/configs/migor_defconfig | 2 -
arch/sh/configs/rts7751r2d1_defconfig | 2 -
arch/sh/configs/rts7751r2dplus_defconfig | 2 -
arch/sh/configs/se7724_defconfig | 2 -
arch/sh/configs/se7780_defconfig | 2 -
arch/sh/configs/sh7785lcr_defconfig | 3 --
arch/sh/configs/urquell_defconfig | 3 --
drivers/video/console/newport_con.c | 4 +-
drivers/video/logo/Kconfig | 83 ++++++++++++++++++--------------
drivers/video/logo/Makefile | 27 +++++------
drivers/video/logo/logo.c | 46 ++----------------
include/linux/linux_logo.h | 8 ---
15 files changed, 63 insertions(+), 127 deletions(-)
---
base-commit: b69053dd3ffbc0d2dedbbc86182cdef6f641fe1b
change-id: 20251227-custom-logo-932df316a02c
Best regards,
--
Vincent Mailhol [off-list ref]
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:25:52
The kernel has no actual grey-scale logos. And looking at the git
history, it seems that there never was one (or maybe there was in the
pre-git history? I did not check that far…)
Remove the Makefile rule for the .pgm grey scale images.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
drivers/video/logo/Makefile | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:25:55
When translating a portable pixmap file into a .c file, the pnmtologo
tool expects to receive the image type (either mono, vga16 or clut224)
as an argument under the -t option.
Currently, this information is stored in the file name. Because we
will allow for custom logo in an upcoming change, it is preferable to
decouple the image name from its type.
Add a new $2 parameter to the Makefile logo function which contains
the image type.
Update all the individual targets to provide this new argument.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
drivers/video/logo/Makefile | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:25:58
Some people like to replace the default Tux boot logo by an image of
their own. There exist a few tutorials here [1] and there [2]. But
this requires modifying the sources which is a bit cumbersome.
Add a string entry in Kbuild for each of the logo categories
(monochrome, 16-colors, 224-colors). The string entry takes a path to
a .pbm or .ppm image allowing the user to more easily provide a custom
logo without having to modify the sources.
Add an help entry with a short hint on how to convert images to the
portable pixmap file format.
Update the Makefile accordingly. When converted to .c file, the logo
will have one of these fixed file name:
- logo_linux_mono.c
- logo_linux_vga16.c
- logo_linux_clut224.c:
depending on the image type and this regardless of the name of the
.pgm/.ppm source filename. This will allow for further simplifications
in an upcoming change.
[1] ArmadeuS Project wiki -- Linux Boot Logo
Link: https://www.armadeus.org/wiki/index.php?title=Linux_Boot_Logo
[2] Timesys -- How To Use a Custom Boot Logo / Splash Screen
Link: https://linuxlink.timesys.com/docs/wiki/engineering/HOWTO_Use_a_custom_boot_logo
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
drivers/video/logo/Kconfig | 41 +++++++++++++++++++++++++++++++++++++++++
drivers/video/logo/Makefile | 11 ++++++++++-
2 files changed, 51 insertions(+), 1 deletion(-)
@@ -22,14 +22,55 @@ config LOGO_LINUX_MONObool"Standard black and white Linux logo"defaulty+configLOGO_LINUX_MONO_FILE+string"Monochrome logo .pbm file"+depends onLOGO_LINUX_MONO+default"drivers/video/logo/logo_linux_mono.pbm"+help+Takesapathtoamonochromaticlogointheportablepixmapfile+format(.pbm).ThisdefaultstotheTuxpenguin.++Forexample,thebelowImageMagickcommandcanbeusedtoreduce+animagetoblackandwhiteandconvertitintoapbmfile:++magicksource_image-compressnonedestination.pbm+configLOGO_LINUX_VGA16bool"Standard 16-color Linux logo"defaulty+configLOGO_LINUX_VGA16_FILE+string"16-color logo .ppm file"+depends onLOGO_LINUX_VGA16+default"drivers/video/logo/logo_linux_vga16.ppm"+help+Takesapathtoalogointheportablepixmapfileformat(.ppm),+usingthe16colorsfromthedrivers/video/logo/clut_vga16.ppm+palette.ThisdefaultstotheTuxpenguin.++Forexample,thebelowImageMagickcommandcanbeusedtoreducean+imagetotheVGA16colorspaletteandconvertintoappmfile:++magicksource_image-compressnone\+-remapdrivers/video/logo/clut_vga16.ppmdestination.ppm+configLOGO_LINUX_CLUT224bool"Standard 224-color Linux logo"defaulty+configLOGO_LINUX_CLUT224_FILE+string"224-color logo .ppm file"+depends onLOGO_LINUX_CLUT224+default"drivers/video/logo/logo_linux_clut224.ppm"+help+Takesapathtoa224-colorlogointheportablepixmapfile+format(.ppm).ThisdefaultstotheTuxpenguin.++Forexample,thebelowImageMagickcommandcanbeusedtoreduce+animagepaletteto224colorsandconvertitintoappmfile:++magicksource_image-compressnone-colors224destination.ppm+configLOGO_DEC_CLUT224bool"224-color Digital Equipment Corporation Linux logo"depends onMACH_DECSTATION||ALPHA
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:26:01
newport_show_logo() is only activated if CONFIG_LOGO_LINUX_CLUT224 is
set (otherwise it is a NOP). This configuration value will be removed
in an upcoming change so instead, make it depend on LOGO_LINUX_CLUT224.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
drivers/video/console/newport_con.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:26:04
CONFIG_LOGO_SUPERH_MONO, CONFIG_LOGO_SUPERH_VGA16 and
CONFIG_LOGO_SUPERH_CLUT224 will be removed in an upcoming change but
are still referenced in some of the defconfig.
Remove all the occurrences of CONFIG_LOGO_SUPERH_*.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
arch/sh/configs/dreamcast_defconfig | 2 --
arch/sh/configs/ecovec24_defconfig | 2 --
arch/sh/configs/kfr2r09_defconfig | 2 --
arch/sh/configs/migor_defconfig | 2 --
arch/sh/configs/rts7751r2d1_defconfig | 2 --
arch/sh/configs/rts7751r2dplus_defconfig | 2 --
arch/sh/configs/se7724_defconfig | 2 --
arch/sh/configs/se7780_defconfig | 2 --
arch/sh/configs/sh7785lcr_defconfig | 3 ---
arch/sh/configs/urquell_defconfig | 3 ---
10 files changed, 22 deletions(-)
@@ -60,8 +60,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set # CONFIG_DNOTIFY is not set CONFIG_PROC_KCORE=y CONFIG_TMPFS=y
@@ -78,8 +78,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_SEQUENCER=y
@@ -66,8 +66,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_CLUT224 is not set CONFIG_USB_GADGET=y CONFIG_USB_CDC_COMPOSITE=m CONFIG_MMC=y
@@ -71,8 +71,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_CLUT224 is not set CONFIG_USB_GADGET=y CONFIG_USB_GADGET_M66592=y CONFIG_USB_G_SERIAL=m
@@ -50,8 +50,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set CONFIG_SOUND=y CONFIG_SND=m CONFIG_SND_YMFPCI=m
@@ -55,8 +55,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set CONFIG_SOUND=y CONFIG_SND=m CONFIG_SND_YMFPCI=m
@@ -79,8 +79,6 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set CONFIG_SOUND=y CONFIG_SND=m # CONFIG_SND_DRIVERS is not set
@@ -66,8 +66,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set CONFIG_SOUND=y CONFIG_SOUND_PRIME=y CONFIG_HID_A4TECH=y
@@ -60,9 +60,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set-# CONFIG_LOGO_SUPERH_CLUT224 is not set CONFIG_HID_A4TECH=y CONFIG_HID_APPLE=y CONFIG_HID_BELKIN=y
@@ -86,9 +86,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set-# CONFIG_LOGO_SUPERH_MONO is not set-# CONFIG_LOGO_SUPERH_VGA16 is not set-# CONFIG_LOGO_SUPERH_CLUT224 is not set CONFIG_HID_A4TECH=y CONFIG_HID_APPLE=y CONFIG_HID_BELKIN=y
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-01 15:26:07
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.
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
**Changelog**
v1 -> v2:
- By removing the logo_spe_clut224.o target from the Makefile, v1
also removed the logo_spe_clut224 object which is still being
referenced in
arch/powerpc/platforms/cell/spu_base.c
Restore the logo_spe_clut224.o target.
Link: https://lore.kernel.org/all/20251230-custom-logo-v1-6-4736374569ee@kernel.org/
---
drivers/video/logo/Kconfig | 48 ++++++++-------------------------------------
drivers/video/logo/Makefile | 14 -------------
drivers/video/logo/logo.c | 46 ++++---------------------------------------
include/linux/linux_logo.h | 8 --------
4 files changed, 12 insertions(+), 104 deletions(-)
@@ -25,6 +25,7 @@ config LOGO_LINUX_MONOconfigLOGO_LINUX_MONO_FILEstring"Monochrome logo .pbm file"depends onLOGO_LINUX_MONO+default"drivers/video/logo/logo_superh_mono.pbm"ifSUPERHdefault"drivers/video/logo/logo_linux_mono.pbm"helpTakesapathtoamonochromaticlogointheportablepixmapfile
@@ -42,6 +43,7 @@ config LOGO_LINUX_VGA16configLOGO_LINUX_VGA16_FILEstring"16-color logo .ppm file"depends onLOGO_LINUX_VGA16+default"drivers/video/logo/logo_superh_vga16.ppm"ifSUPERHdefault"drivers/video/logo/logo_linux_vga16.ppm"helpTakesapathtoalogointheportablepixmapfileformat(.ppm),
@@ -61,6 +63,12 @@ config LOGO_LINUX_CLUT224configLOGO_LINUX_CLUT224_FILEstring"224-color logo .ppm file"depends onLOGO_LINUX_CLUT224+default"drivers/video/logo/logo_dec_clut224.ppm"ifMACH_DECSTATION||ALPHA+default"drivers/video/logo/logo_mac_clut224.ppm"ifMAC+default"drivers/video/logo/logo_parisc_clut224.ppm"ifPARISC+default"drivers/video/logo/logo_sgi_clut224.ppm"ifSGI_IP22||SGI_IP27||SGI_IP32+default"drivers/video/logo/logo_sun_clut224.ppm"ifSPARC+default"drivers/video/logo/logo_superh_clut224.ppm"ifSUPERHdefault"drivers/video/logo/logo_linux_clut224.ppm"helpTakesapathtoa224-colorlogointheportablepixmapfile
@@ -71,44 +79,4 @@ config LOGO_LINUX_CLUT224_FILEmagicksource_image-compressnone-colors224destination.ppm-configLOGO_DEC_CLUT224-bool"224-color Digital Equipment Corporation Linux logo"-depends onMACH_DECSTATION||ALPHA-defaulty--configLOGO_MAC_CLUT224-bool"224-color Macintosh Linux logo"-depends onMAC-defaulty--configLOGO_PARISC_CLUT224-bool"224-color PA-RISC Linux logo"-depends onPARISC-defaulty--configLOGO_SGI_CLUT224-bool"224-color SGI Linux logo"-depends onSGI_IP22||SGI_IP27||SGI_IP32-defaulty--configLOGO_SUN_CLUT224-bool"224-color Sun Linux logo"-depends onSPARC-defaulty--configLOGO_SUPERH_MONO-bool"Black and white SuperH Linux logo"-depends onSUPERH-defaulty--configLOGO_SUPERH_VGA16-bool"16-color SuperH Linux logo"-depends onSUPERH-defaulty--configLOGO_SUPERH_CLUT224-bool"224-color SuperH Linux logo"-depends onSUPERH-defaulty-endif# LOGO
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)if(nologo||logos_freed)returnNULL;-if(depth>=1){#ifdef CONFIG_LOGO_LINUX_MONO-/* Generic Linux logo */+if(depth>=1)logo=&logo_linux_mono;#endif-#ifdef CONFIG_LOGO_SUPERH_MONO-/* SuperH Linux logo */-logo=&logo_superh_mono;-#endif-}-if(depth>=4){#ifdef CONFIG_LOGO_LINUX_VGA16-/* Generic Linux logo */+if(depth>=4)logo=&logo_linux_vga16;#endif-#ifdef CONFIG_LOGO_SUPERH_VGA16-/* SuperH Linux logo */-logo=&logo_superh_vga16;-#endif-}-if(depth>=8){#ifdef CONFIG_LOGO_LINUX_CLUT224-/* Generic Linux logo */+if(depth>=8)logo=&logo_linux_clut224;#endif-#ifdef CONFIG_LOGO_DEC_CLUT224-/* DEC Linux logo on MIPS/MIPS64 or ALPHA */-logo=&logo_dec_clut224;-#endif-#ifdef CONFIG_LOGO_MAC_CLUT224-/* Macintosh Linux logo on m68k */-if(MACH_IS_MAC)-logo=&logo_mac_clut224;-#endif-#ifdef CONFIG_LOGO_PARISC_CLUT224-/* PA-RISC Linux logo */-logo=&logo_parisc_clut224;-#endif-#ifdef CONFIG_LOGO_SGI_CLUT224-/* SGI Linux logo on MIPS/MIPS64 */-logo=&logo_sgi_clut224;-#endif-#ifdef CONFIG_LOGO_SUN_CLUT224-/* Sun Linux logo */-logo=&logo_sun_clut224;-#endif-#ifdef CONFIG_LOGO_SUPERH_CLUT224-/* SuperH Linux logo */-logo=&logo_superh_clut224;-#endif-}+returnlogo;}EXPORT_SYMBOL_GPL(fb_find_logo);
Hi Vincent,
CC linux-m68k
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] 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.
This may do the wrong thing when booting a multi-platform kernel.
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
@@ -61,6 +63,12 @@ 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
E.g. an m68k multi-platform kernel including Mac support will scare
non-Mac users into thinking their machine was assimilated by the
Apple Empire...
+ 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_linux_clut224.ppm"
help
Takes a path to a 224-color logo in the portable pixmap file
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)if(nologo||logos_freed)returnNULL;-if(depth>=1){#ifdef CONFIG_LOGO_LINUX_MONO-/* Generic Linux logo */+if(depth>=1)logo=&logo_linux_mono;#endif-#ifdef CONFIG_LOGO_SUPERH_MONO-/* SuperH Linux logo */-logo=&logo_superh_mono;-#endif-}-if(depth>=4){#ifdef CONFIG_LOGO_LINUX_VGA16-/* Generic Linux logo */+if(depth>=4)logo=&logo_linux_vga16;#endif-#ifdef CONFIG_LOGO_SUPERH_VGA16-/* SuperH Linux logo */-logo=&logo_superh_vga16;-#endif-}-if(depth>=8){#ifdef CONFIG_LOGO_LINUX_CLUT224-/* Generic Linux logo */+if(depth>=8)logo=&logo_linux_clut224;#endif-#ifdef CONFIG_LOGO_DEC_CLUT224-/* DEC Linux logo on MIPS/MIPS64 or ALPHA */-logo=&logo_dec_clut224;-#endif-#ifdef CONFIG_LOGO_MAC_CLUT224-/* Macintosh Linux logo on m68k */-if(MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
- logo = &logo_mac_clut224;
-#endif
-#ifdef CONFIG_LOGO_PARISC_CLUT224
- /* PA-RISC Linux logo */
- logo = &logo_parisc_clut224;
-#endif
-#ifdef CONFIG_LOGO_SGI_CLUT224
- /* SGI Linux logo on MIPS/MIPS64 */
- logo = &logo_sgi_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUN_CLUT224
- /* Sun Linux logo */
- logo = &logo_sun_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUPERH_CLUT224
- /* SuperH Linux logo */
- logo = &logo_superh_clut224;
-#endif
- }
+
return logo;
}
EXPORT_SYMBOL_GPL(fb_find_logo);
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-06 20:10:25
On 06/01/2026 at 12:48, Geert Uytterhoeven wrote:
Hi Vincent,
CC linux-m68k
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] wrote:
quoted
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.
This may do the wrong thing when booting a multi-platform kernel.
quoted
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
@@ -61,6 +63,12 @@ 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
E.g. an m68k multi-platform kernel including Mac support will scare
non-Mac users into thinking their machine was assimilated by the
Apple Empire...
quoted
+ 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_linux_clut224.ppm"
help
Takes a path to a 224-color logo in the portable pixmap file
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)if(nologo||logos_freed)returnNULL;-if(depth>=1){#ifdef CONFIG_LOGO_LINUX_MONO-/* Generic Linux logo */+if(depth>=1)logo=&logo_linux_mono;#endif-#ifdef CONFIG_LOGO_SUPERH_MONO-/* SuperH Linux logo */-logo=&logo_superh_mono;-#endif-}-if(depth>=4){#ifdef CONFIG_LOGO_LINUX_VGA16-/* Generic Linux logo */+if(depth>=4)logo=&logo_linux_vga16;#endif-#ifdef CONFIG_LOGO_SUPERH_VGA16-/* SuperH Linux logo */-logo=&logo_superh_vga16;-#endif-}-if(depth>=8){#ifdef CONFIG_LOGO_LINUX_CLUT224-/* Generic Linux logo */+if(depth>=8)logo=&logo_linux_clut224;#endif-#ifdef CONFIG_LOGO_DEC_CLUT224-/* DEC Linux logo on MIPS/MIPS64 or ALPHA */-logo=&logo_dec_clut224;-#endif-#ifdef CONFIG_LOGO_MAC_CLUT224-/* Macintosh Linux logo on m68k */-if(MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
OK. I missed this.
I think there are two options to fix this:
1. Keep CONFIG_LOGO_MAC_CLUT224 untouched
2. Remove logo_mac_clut224.ppm
The first option is less controversial but I would like to ask you what
you think about removing the logo_mac_clut224 file.
Here, we are speaking of the Macintosh 68k which ended sales in 1995,
right? So the user base should be rather small, I guess.
And people who still want the custom MAC logo would still be able to add
CONFIG_LOGO_MAC_CLUT224="path/to/logo_mac_clut224.ppm"
to their config to restore the old behaviour anyway.
My choice would go more toward the removal option but what do you think?
quoted
- logo = &logo_mac_clut224;
-#endif
-#ifdef CONFIG_LOGO_PARISC_CLUT224
- /* PA-RISC Linux logo */
- logo = &logo_parisc_clut224;
-#endif
-#ifdef CONFIG_LOGO_SGI_CLUT224
- /* SGI Linux logo on MIPS/MIPS64 */
- logo = &logo_sgi_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUN_CLUT224
- /* Sun Linux logo */
- logo = &logo_sun_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUPERH_CLUT224
- /* SuperH Linux logo */
- logo = &logo_superh_clut224;
-#endif
- }
+
return logo;
}
EXPORT_SYMBOL_GPL(fb_find_logo);
Hi Vincent,
On Tue, 6 Jan 2026 at 21:10, Vincent Mailhol [off-list ref] wrote:
On 06/01/2026 at 12:48, Geert Uytterhoeven wrote:
quoted
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] wrote:
quoted
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.
This may do the wrong thing when booting a multi-platform kernel.
quoted
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
@@ -61,6 +63,12 @@ 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
E.g. an m68k multi-platform kernel including Mac support will scare
non-Mac users into thinking their machine was assimilated by the
Apple Empire...
quoted
+ 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_linux_clut224.ppm"
help
Takes a path to a 224-color logo in the portable pixmap file
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)if(nologo||logos_freed)returnNULL;-if(depth>=1){#ifdef CONFIG_LOGO_LINUX_MONO-/* Generic Linux logo */+if(depth>=1)logo=&logo_linux_mono;#endif-#ifdef CONFIG_LOGO_SUPERH_MONO-/* SuperH Linux logo */-logo=&logo_superh_mono;-#endif-}-if(depth>=4){#ifdef CONFIG_LOGO_LINUX_VGA16-/* Generic Linux logo */+if(depth>=4)logo=&logo_linux_vga16;#endif-#ifdef CONFIG_LOGO_SUPERH_VGA16-/* SuperH Linux logo */-logo=&logo_superh_vga16;-#endif-}-if(depth>=8){#ifdef CONFIG_LOGO_LINUX_CLUT224-/* Generic Linux logo */+if(depth>=8)logo=&logo_linux_clut224;#endif-#ifdef CONFIG_LOGO_DEC_CLUT224-/* DEC Linux logo on MIPS/MIPS64 or ALPHA */-logo=&logo_dec_clut224;-#endif-#ifdef CONFIG_LOGO_MAC_CLUT224-/* Macintosh Linux logo on m68k */-if(MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
OK. I missed this.
I think there are two options to fix this:
1. Keep CONFIG_LOGO_MAC_CLUT224 untouched
2. Remove logo_mac_clut224.ppm
The first option is less controversial but I would like to ask you what
you think about removing the logo_mac_clut224 file.
Here, we are speaking of the Macintosh 68k which ended sales in 1995,
right? So the user base should be rather small, I guess.
Yes, the user base is small.
BTW, the only reason you don't have this issue with MACH_DECSTATION and
the various SGI_IP* options is that MIPS does not support multi-platform
kernels.
And people who still want the custom MAC logo would still be able to add
CONFIG_LOGO_MAC_CLUT224="path/to/logo_mac_clut224.ppm"
LOGO_LINUX_CLUT224_FILE ;-)
to their config to restore the old behaviour anyway.
My choice would go more toward the removal option but what do you think?
I am not too attached to keeping the dynamic behavior for the Mac logo,
I just wanted to point out the impact.
I expect most people who care about logos (in products) just have their
own custom out-of-tree code. As fb_find_logo() and the underlying
infrastructure still exists, I don't expect them to have too much
trouble forward porting that to newer kernels.
What do other people think?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Hi Vincent,
On Tue, 6 Jan 2026 at 21:10, Vincent Mailhol [off-list ref] wrote:
quoted
On 06/01/2026 at 12:48, Geert Uytterhoeven wrote:
quoted
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] wrote:
quoted
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.
This may do the wrong thing when booting a multi-platform kernel.
quoted
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
@@ -61,6 +63,12 @@ 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
E.g. an m68k multi-platform kernel including Mac support will scare
non-Mac users into thinking their machine was assimilated by the
Apple Empire...
quoted
+ 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_linux_clut224.ppm"
help
Takes a path to a 224-color logo in the portable pixmap file
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)if(nologo||logos_freed)returnNULL;-if(depth>=1){#ifdef CONFIG_LOGO_LINUX_MONO-/* Generic Linux logo */+if(depth>=1)logo=&logo_linux_mono;#endif-#ifdef CONFIG_LOGO_SUPERH_MONO-/* SuperH Linux logo */-logo=&logo_superh_mono;-#endif-}-if(depth>=4){#ifdef CONFIG_LOGO_LINUX_VGA16-/* Generic Linux logo */+if(depth>=4)logo=&logo_linux_vga16;#endif-#ifdef CONFIG_LOGO_SUPERH_VGA16-/* SuperH Linux logo */-logo=&logo_superh_vga16;-#endif-}-if(depth>=8){#ifdef CONFIG_LOGO_LINUX_CLUT224-/* Generic Linux logo */+if(depth>=8)logo=&logo_linux_clut224;#endif-#ifdef CONFIG_LOGO_DEC_CLUT224-/* DEC Linux logo on MIPS/MIPS64 or ALPHA */-logo=&logo_dec_clut224;-#endif-#ifdef CONFIG_LOGO_MAC_CLUT224-/* Macintosh Linux logo on m68k */-if(MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
OK. I missed this.
I think there are two options to fix this:
1. Keep CONFIG_LOGO_MAC_CLUT224 untouched
2. Remove logo_mac_clut224.ppm
The first option is less controversial but I would like to ask you what
you think about removing the logo_mac_clut224 file.
Here, we are speaking of the Macintosh 68k which ended sales in 1995,
right? So the user base should be rather small, I guess.
Yes, the user base is small.
BTW, the only reason you don't have this issue with MACH_DECSTATION and
the various SGI_IP* options is that MIPS does not support multi-platform
kernels.
quoted
And people who still want the custom MAC logo would still be able to add
CONFIG_LOGO_MAC_CLUT224="path/to/logo_mac_clut224.ppm"
LOGO_LINUX_CLUT224_FILE ;-)
quoted
to their config to restore the old behaviour anyway.
My choice would go more toward the removal option but what do you think?
I am not too attached to keeping the dynamic behavior for the Mac logo,
I just wanted to point out the impact.
I expect most people who care about logos (in products) just have their
own custom out-of-tree code. As fb_find_logo() and the underlying
infrastructure still exists, I don't expect them to have too much
trouble forward porting that to newer kernels.
What do other people think?
This is about a small visible icon. It's not some relevant feature.
So, I think it's unfortunate that the patch then drops the specific mac logo.
But adding additional coding and complexity to simply make this logo
visible for such a small user base IMHO does not justify the effort.
Helge
Hi Helge,
On Wed, 7 Jan 2026 at 13:21, Helge Deller [off-list ref] wrote:
On 1/7/26 11:36, Geert Uytterhoeven wrote:
quoted
On Tue, 6 Jan 2026 at 21:10, Vincent Mailhol [off-list ref] wrote:
quoted
On 06/01/2026 at 12:48, Geert Uytterhoeven wrote:
quoted
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] wrote:
quoted
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.
This may do the wrong thing when booting a multi-platform kernel.
quoted
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
-#ifdef CONFIG_LOGO_MAC_CLUT224
- /* Macintosh Linux logo on m68k */
- if (MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
OK. I missed this.
I think there are two options to fix this:
1. Keep CONFIG_LOGO_MAC_CLUT224 untouched
2. Remove logo_mac_clut224.ppm
The first option is less controversial but I would like to ask you what
you think about removing the logo_mac_clut224 file.
Here, we are speaking of the Macintosh 68k which ended sales in 1995,
right? So the user base should be rather small, I guess.
Yes, the user base is small.
BTW, the only reason you don't have this issue with MACH_DECSTATION and
the various SGI_IP* options is that MIPS does not support multi-platform
kernels.
quoted
And people who still want the custom MAC logo would still be able to add
CONFIG_LOGO_MAC_CLUT224="path/to/logo_mac_clut224.ppm"
LOGO_LINUX_CLUT224_FILE ;-)
quoted
to their config to restore the old behaviour anyway.
My choice would go more toward the removal option but what do you think?
I am not too attached to keeping the dynamic behavior for the Mac logo,
I just wanted to point out the impact.
I expect most people who care about logos (in products) just have their
own custom out-of-tree code. As fb_find_logo() and the underlying
infrastructure still exists, I don't expect them to have too much
trouble forward porting that to newer kernels.
What do other people think?
This is about a small visible icon. It's not some relevant feature.
So, I think it's unfortunate that the patch then drops the specific mac logo.
But adding additional coding and complexity to simply make this logo
visible for such a small user base IMHO does not justify the effort.
This patch does not drop the specific Mac logo.
Instead, it prioritizes the Mac logo over the generic logo when Mac
support is enabled in a multi-platform kernel.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: Vincent Mailhol <mailhol@kernel.org> Date: 2026-01-08 19:03:29
On 07/01/2026 at 14:53, Geert Uytterhoeven wrote:
Hi Helge,
On Wed, 7 Jan 2026 at 13:21, Helge Deller [off-list ref] wrote:
quoted
On 1/7/26 11:36, Geert Uytterhoeven wrote:
quoted
On Tue, 6 Jan 2026 at 21:10, Vincent Mailhol [off-list ref] wrote:
quoted
On 06/01/2026 at 12:48, Geert Uytterhoeven wrote:
quoted
Thanks for your patch, which is now commit bd710b3da7308cb1
("video/logo: move logo selection logic to Kconfig") in fbdev/for-next.
On Thu, 1 Jan 2026 at 16:26, Vincent Mailhol [off-list ref] wrote:
quoted
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.
This may do the wrong thing when booting a multi-platform kernel.
quoted
The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.
Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).
[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
-#ifdef CONFIG_LOGO_MAC_CLUT224
- /* Macintosh Linux logo on m68k */
- if (MACH_IS_MAC)
MACH_IS_MAC can be a runtime check.
OK. I missed this.
I think there are two options to fix this:
1. Keep CONFIG_LOGO_MAC_CLUT224 untouched
2. Remove logo_mac_clut224.ppm
The first option is less controversial but I would like to ask you what
you think about removing the logo_mac_clut224 file.
Here, we are speaking of the Macintosh 68k which ended sales in 1995,
right? So the user base should be rather small, I guess.
Yes, the user base is small.
BTW, the only reason you don't have this issue with MACH_DECSTATION and
the various SGI_IP* options is that MIPS does not support multi-platform
kernels.
quoted
And people who still want the custom MAC logo would still be able to add
CONFIG_LOGO_MAC_CLUT224="path/to/logo_mac_clut224.ppm"
LOGO_LINUX_CLUT224_FILE ;-)
D'oh!
quoted
quoted
quoted
to their config to restore the old behaviour anyway.
My choice would go more toward the removal option but what do you think?
I am not too attached to keeping the dynamic behavior for the Mac logo,
I just wanted to point out the impact.
I expect most people who care about logos (in products) just have their
own custom out-of-tree code. As fb_find_logo() and the underlying
infrastructure still exists, I don't expect them to have too much
trouble forward porting that to newer kernels.
What do other people think?
This is about a small visible icon. It's not some relevant feature.
So, I think it's unfortunate that the patch then drops the specific mac logo.
But adding additional coding and complexity to simply make this logo
visible for such a small user base IMHO does not justify the effort.
This patch does not drop the specific Mac logo.
Instead, it prioritizes the Mac logo over the generic logo when Mac
support is enabled in a multi-platform kernel.
It seems that there is a consensus between the three of us that we can
drop the MAC logo.
I will send right away a v3 with will contain one extra patch to drop
the Macintosh logo with a note in the patch of how to restore it using
LOGO_LINUX_CLUT224_FILE.
Yours sincerely,
Vincent Mailhol