Thread (23 messages) 23 messages, 5 authors, 2025-11-06

Re: [PATCH v4] powerpc: Use shared font data

From: Finn Thain <fthain@linux-m68k.org>
Date: 2025-11-05 23:48:21
Also in: lkml

On Wed, 5 Nov 2025, Christophe Leroy wrote:
quoted hunk ↗ jump to hunk
quoted
I wonder if bodging those in lib/fonts/Makefile for 
lib/fonts/font_sun8x16.c fixes it?
But... this is data - there's no code is there - are any of those 
flags relevant for data only?
I think -fPIC is relevant for data-only here because font_sun_8x16 
contains a pointer to fontdata_sun8x16 in font_sun_8x16.data

I see two things to try:

1/ Either build font_sun8x16.o with -fPIC
diff --git a/lib/fonts/Makefile b/lib/fonts/Makefile
index e16f68492174a..844306d7b15e9 100644
--- a/lib/fonts/Makefile
+++ b/lib/fonts/Makefile
@@ -20,3 +20,5 @@ font-objs-$(CONFIG_FONT_6x8)       += font_6x8.o
 font-objs += $(font-objs-y)

 obj-$(CONFIG_FONT_SUPPORT)         += font.o
+
+CFLAGS_font_sun8x16.o             += -fPIC
2/ Or add a PTRRELOC:
diff --git a/arch/powerpc/kernel/btext.c b/arch/powerpc/kernel/btext.c
index 7f63f1cdc6c39..fc461cfaf4a34 100644
--- a/arch/powerpc/kernel/btext.c
+++ b/arch/powerpc/kernel/btext.c
@@ -20,6 +20,7 @@
 #include <asm/io.h>
 #include <asm/processor.h>
 #include <asm/udbg.h>
+#include <asm/setup.h>

 #define NO_SCROLL
@@ -463,7 +464,7 @@ static noinline void draw_byte(unsigned char c, long locX,
long locY)
 {
 	unsigned char *base	= calc_base(locX << 3, locY << 4);
 	unsigned int font_index = c * 16;
-	const unsigned char *font	= font_sun_8x16.data + font_index;
+	const unsigned char *font	= PTRRELOC(font_sun_8x16.data) +
font_index;
 	int rb			= dispDeviceRowBytes;

 	rmci_maybe_on();
Patch 2 has the virtue that it only needs to be tested on powerpc.
Patch 1 has the virtue that other architectures might benefit.

Commit 0ebc7feae79a ("powerpc: Use shared font data"), which caused the 
regression, has a sparc equivalent in commit 0f1991949d9b ("sparc: Use 
shared font data"). So I wonder whether CONFIG_EARLYFB has also regressed 
(for CONFIG_SPARC64). Maybe QEMU could help answer that question.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help