vgacon: rework Kconfig dependencies
Subsystems (14)
PATCH 1/4 vgacon: rework Kconfig dependencies
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
- powerpc used to support VGA consoles in the old arch/ppc codebase, but the merged arch/powerpc never did
- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
- mips has a few platforms (jazz, sibyte, and sni) that initialize screen_info, on everything else the console is selected but cannot actually work.
- csky, hexgagon, loongarch, nios2, riscv and xtensa are not listed in the opt-out table and declare a screen_info to allow building vga_con, but this cannot work because the console is never selected.
Replace this with an opt-in table that lists only the platforms that remain. This is effectively x86, plus a couple of historic workstation and server machines that reused parts of the x86 system architecture.
--- drivers/video/console/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/video/console/Kconfig +3 -3
@@ -7,9 +7,9 @@ menu "Console display driver support" config VGA_CONSOLE bool "VGA text console" if EXPERT || !X86 - depends on !4xx && !PPC_8xx && !SPARC && !M68K && !PARISC && !SUPERH && \ - (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER) && \ - !ARM64 && !ARC && !MICROBLAZE && !OPENRISC && !S390 && !UML + depends on ALPHA || IA64 || X86 || \ + (ARM && ARCH_FOOTBRIDGE) || \ + (MIPS && (MIPS_MALTA || SIBYTE_BCM112X || SIBYTE_SB1250 || SIBYTE_BCM1x80 || SNI_RM)) select APERTURE_HELPERS if (DRM || FB || VFIO_PCI_CORE) default y help
Signature · 1 line
2.39.2
PATCH 2/4 vgacon: rework screen_info #ifdef checks
From: Arnd Bergmann <[email protected]>
On non-x86 architectures, the screen_info variable is generally only used for the VGA console where supported, and in some cases the EFI framebuffer or vga16fb.
Now that we have a definite list of which architectures actually use it for what, use consistent #ifdef checks so the global variable is only defined when it is actually used on those architectures.
On powerpc, there is no support for vgacon, but there is support for vga16fb. Loongarch and riscv have no support for vgacon or vga16fb, but they support EFI firmware, so only that needs to be checked, and the initialization can be removed because that is handled by EFI. IA64 has both vgacon and EFI.
--- arch/alpha/kernel/setup.c | 2 ++ arch/alpha/kernel/sys_sio.c | 2 ++ arch/ia64/kernel/setup.c | 4 ++++ arch/loongarch/kernel/setup.c | 2 ++ arch/mips/jazz/setup.c | 2 +- arch/mips/kernel/setup.c | 2 +- arch/mips/sibyte/swarm/setup.c | 2 +- arch/mips/sni/setup.c | 2 +- arch/powerpc/kernel/setup-common.c | 2 +- arch/riscv/kernel/setup.c | 11 ++--------- 10 files changed, 17 insertions(+), 14 deletions(-)
arch/alpha/kernel/setup.c +2 -0
@@ -131,6 +131,7 @@ static void determine_cpu_caches (unsigned int);static char __initdata command_line[COMMAND_LINE_SIZE ]; +#ifdef CONFIG_VGA_CONSOLE /* * The format of "screen_info" is strange, and due to early * i386-setup code. This is just enough to make the console
@@ -147,6 +148,7 @@ struct screen_info screen_info = { };EXPORT_SYMBOL (screen_info); +#endif /* * The direct map I/O window, if any. This should be the same
arch/alpha/kernel/sys_sio.c +2 -0
@@ -57,11 +57,13 @@ sio_init_irq(void)static inline void __init alphabook1_init_arch (void ) { +#ifdef CONFIG_VGA_CONSOLE /* The AlphaBook1 has LCD video fixed at 800x600, 37 rows and 100 cols. */ screen_info.orig_y =37 ; screen_info.orig_video_cols =100 ; screen_info.orig_video_lines =37 ; +#endif lca_init_arch (); }
arch/ia64/kernel/setup.c +4 -0
@@ -86,9 +86,11 @@ EXPORT_SYMBOL(local_per_cpu_offset);#endif unsigned long ia64_cycles_per_usec;struct ia64_boot_param *ia64_boot_param; +#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_EFI )struct screen_info screen_info;unsigned long vga_console_iobase;unsigned long vga_console_membase; +#endif static struct resource data_resource = { .name ="Kernel data" ,
@@ -497,6 +499,7 @@ early_console_setup (char *cmdline)static void __init screen_info_setup (void ) { +#ifdef CONFIG_VGA_CONSOLE unsigned int orig_x, orig_y, num_cols, num_rows, font_height;memset (&screen_info,0 ,sizeof (screen_info));
@@ -525,6 +528,7 @@ screen_info_setup(void) screen_info.orig_video_mode =3 ;/* XXX fake */ screen_info.orig_video_isVGA =1 ;/* XXX fake */ screen_info.orig_video_ega_bx =3 ;/* XXX fake */ +#endif } static inline void
arch/loongarch/kernel/setup.c +2 -0
@@ -57,7 +57,9 @@#define SMBIOS_CORE_PACKAGE_OFFSET 0x23#define LOONGSON_EFI_ENABLE (1 << 3) +#ifdef CONFIG_EFI struct screen_info screen_info __section(".data"); +#endif unsigned long fw_arg0, fw_arg1, fw_arg2; DEFINE_PER_CPU(unsigned long, kernelsp);
arch/mips/jazz/setup.c +1 -1
@@ -76,7 +76,7 @@ void __init plat_mem_setup(void) _machine_restart = jazz_machine_restart; -#ifdef CONFIG_VT +#ifdef CONFIG_VGA_CONSOLE screen_info = (struct screen_info ) { .orig_video_cols =160 , .orig_video_lines = 64,
arch/mips/kernel/setup.c +1 -1
@@ -54,7 +54,7 @@ struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly;EXPORT_SYMBOL (cpu_data); -#ifdef CONFIG_VT +#ifdef CONFIG_VGA_CONSOLE struct screen_info screen_info;#endif
arch/mips/sibyte/swarm/setup.c +1 -1
@@ -129,7 +129,7 @@ void __init plat_mem_setup(void)if (m41t81_probe ()) swarm_rtc_type =RTC_M41T81 ; -#ifdef CONFIG_VT +#ifdef CONFIG_VGA_CONSOLE screen_info = (struct screen_info ) { .orig_video_page =52 , .orig_video_mode = 3,
arch/mips/sni/setup.c +1 -1
@@ -38,7 +38,7 @@ extern void sni_machine_power_off(void);static void __init sni_display_setup (void ) { -#if defined(CONFIG_VT ) && defined(CONFIG_VGA_CONSOLE ) && defined(CONFIG_FW_ARC ) +#if defined(CONFIG_VGA_CONSOLE ) && defined(CONFIG_FW_ARC )struct screen_info *si = &screen_info;DISPLAY_STATUS *di;
arch/powerpc/kernel/setup-common.c +1 -1
@@ -98,6 +98,7 @@ int boot_cpu_hwid = -1;int dcache_bsize;int icache_bsize; +#if IS_ENABLED (CONFIG_FB_VGA16 )/* * This still seems to be needed... -- paulus */
@@ -109,7 +110,6 @@ struct screen_info screen_info = { .orig_video_isVGA = 1, .orig_video_points =16 }; -#if defined(CONFIG_FB_VGA16_MODULE )EXPORT_SYMBOL (screen_info);#endif
arch/riscv/kernel/setup.c +2 -9
@@ -39,15 +39,8 @@#include "head.h" -#if defined(CONFIG_DUMMY_CONSOLE ) || defined(CONFIG_EFI ) -struct screen_info screen_info __section(".data") = { - .orig_video_lines = 30, - .orig_video_cols = 80, - .orig_video_mode = 0, - .orig_video_ega_bx = 0, - .orig_video_isVGA = 1, - .orig_video_points =8 -}; +#if defined(CONFIG_EFI ) +struct screen_info screen_info __section(".data");#endif /*
Signature · 1 line
2.39.2
Re: [PATCH 2/4] vgacon: rework screen_info #ifdef checks
Quoted 18 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
On non-x86 architectures, the
screen_infovariable is generally only used for the VGA console where supported, and in some cases the EFI framebuffer or vga16fb.Now that we have a definite list of which architectures actually use it for what, use consistent #ifdef checks so the global variable is only defined when it is actually used on those architectures.
On powerpc, there is no support for vgacon, but there is support for vga16fb. Loongarch and riscv have no support for vgacon or vga16fb, but they support EFI firmware, so only that needs to be checked, and the initialization can be removed because that is handled by EFI. IA64 has both vgacon and EFI.
Signed-off-by Arnd Bergmann <[email protected]>---
[...]
arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 90
Quoted 10 lines
arch/ia64/kernel/setup.c +1
-0@@ -86,9 +86,11 @@ EXPORT_SYMBOL(local_per_cpu_offset);#endif unsigned long ia64_cycles_per_usec;struct ia64_boot_param *ia64_boot_param; +#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_EFI )struct screen_info screen_info;
I think that only screen_info should be guarded by both symbols ?
arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 91
Quoted 1 line
arch/ia64/kernel/setup.c +0
-0unsigned long vga_console_iobase;
It seems this variable was never used since it was introduced by commit 66b7f8a30437 ("[IA64-SGI] pcdp: add PCDP pci interface support") ?
arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 92
Quoted 1 line
arch/ia64/kernel/setup.c +0
-0unsigned long vga_console_membase;
And this is only used by mdacon (not supported by ia64), vgacon and vga16fb (not supported by ia64 either).
So this could just be guarded just by CONFIG_VGA_CONSOLE for ia64 ?
The rest of the patch looks good to me.
Signature · 5 lines
Best regards, Javier Martinez Canillas Core Platforms Red Hat
Re: [PATCH 2/4] vgacon: rework screen_info #ifdef checks
Quoted 18 lines · Javier Martinez Canillas
arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 90
Quoted 10 lines
arch/ia64/kernel/setup.c +1
-0@@ -86,9 +86,11 @@ EXPORT_SYMBOL(local_per_cpu_offset);#endif unsigned long ia64_cycles_per_usec;struct ia64_boot_param *ia64_boot_param; +#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_EFI )struct screen_info screen_info;I think that only
screen_infoshould be guarded by both symbols ?arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 91
Quoted 1 line
arch/ia64/kernel/setup.c +0
-0unsigned long vga_console_iobase;It seems this variable was never used since it was introduced by commit
66b7f8a30437("[IA64-SGI] pcdp: add PCDP pci interface support") ?
Quoted 6 lines
arch/ia64/kernel/setup.c EXPORT_SYMBOL(local_per_cpu_offset); · line 92
Quoted 1 line
arch/ia64/kernel/setup.c +0
-0unsigned long vga_console_membase;And this is only used by mdacon (not supported by ia64), vgacon and vga16fb (not supported by ia64 either).
So this could just be guarded just by
CONFIG_VGA_CONSOLEfor ia64 ?
Right, I though about doing this more accurately, but in the end went for the simplest change rather than spending much more time trying to clean up the unused variables etc.
Let me know if you'd prefer me to respin this part, otherwise I'd call the ia64 bit good enough for the purpose of the series.
Arnd
Re: [PATCH 2/4] vgacon: rework screen_info #ifdef checks
Quoted 1 line · Arnd Bergmann
On Fri, Jul 7, 2023, at 15:40, Javier Martinez Canillas wrote:
[...]
Quoted 12 lines
Quoted 4 lines
And this is only used by mdacon (not supported by ia64), vgacon and vga16fb (not supported by ia64 either).
So this could just be guarded just by
CONFIG_VGA_CONSOLEfor ia64 ?Right, I though about doing this more accurately, but in the end went for the simplest change rather than spending much more time trying to clean up the unused variables etc.
Let me know if you'd prefer me to respin this part, otherwise I'd call the ia64 bit good enough for the purpose of the series.
No need to re-spin, agreed that makes sense to keep it simpler.
Signature · 5 lines
Best regards, Javier Martinez Canillas Core Platforms Red Hat
Thomas Bogendoerfer
maintainerRe: [PATCH 2/4] vgacon: rework screen_info #ifdef checks
In reply to Arnd Bergmannarch/mips/jazz/setup.c void __init plat_mem_setup(void) · line 82
Quoted 13 lines · Arnd Bergmann
arch/mips/jazz/setup.c +1
-1@@ -76,7 +76,7 @@ void __init plat_mem_setup(void) _machine_restart = jazz_machine_restart; -#ifdef CONFIG_VT +#ifdef CONFIG_VGA_CONSOLE screen_info = (struct screen_info ) { .orig_video_cols =160 , .orig_video_lines = 64,
that wssn't intended for VGA but for fbdev/g364fb, which doesn't use it. So removing it is probably the best thing.
Thomas.
Signature · 2 lines
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]
Algorithmic P-4000i, looking for the board manual
hi guys
I am looking for board manual of the old Algorithmic P-4000i. the purpose is to restore an old board for educational.
Does anyone happen to have the manual or info on the board? let me know
C.
PATCH 3/4 dummycon: limit Arm console size hack to footbridge
In reply to Arnd BergmannFrom: Arnd Bergmann <[email protected]>
The dummycon default console size used to be determined by architecture, but now this is a Kconfig setting on everything except ARM. Tracing this back in the historic git trees, this was used to match the size of VGA console or VGA framebuffer on early machines, but nowadays that code is no longer used, except probably on the old footbridge/netwinder since that is the only one that supports vgacon.
On machines with a framebuffer, booting with DT so far results in always using the hardcoded 80x30 size in dummycon, while on ATAGS the setting can come from a bootloader specific override. Both seem to be worse choices than the Kconfig setting, since the actual text size for fbcon also depends on the selected font.
Make this work the same way as everywhere else and use the normal Kconfig setting, except for the footbridge with vgacon, which keeps using the traditional code. If vgacon is disabled, footbridge can also ignore the setting. This means the screen_info only has to be provided when either vgacon or EFI are enabled now.
To limit the amount of surprises on Arm, change the Kconfig default to the previously used 80x30 setting instead of the usual 80x25.
--- arch/arm/kernel/atags_parse.c | 2 +- arch/arm/kernel/setup.c | 3 +-- drivers/video/console/Kconfig | 5 +++-- drivers/video/console/dummycon.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-)
arch/arm/kernel/atags_parse.c +1 -1
@@ -69,7 +69,7 @@ static int __init parse_tag_mem32(const struct tag *tag)__tagtable (ATAG_MEM , parse_tag_mem32); -#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_DUMMY_CONSOLE ) +#if defined(CONFIG_ARCH_FOOTBRIDGE ) && defined(CONFIG_VGA_CONSOLE )static int __init parse_tag_videotext (const struct tag *tag) { screen_info.orig_x = tag->u.videotext.x;
arch/arm/kernel/setup.c +1 -2
@@ -928,8 +928,7 @@ static void __init request_standard_resources(const struct machine_desc *mdesc)request_resource (&ioport_resource, &lp2); } -#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_DUMMY_CONSOLE ) || \ - defined(CONFIG_EFI ) +#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_EFI )struct screen_info screen_info = { .orig_video_lines =30 , .orig_video_cols = 80,
drivers/video/console/Kconfig +3 -2
@@ -52,7 +52,7 @@ config DUMMY_CONSOLE config DUMMY_CONSOLE_COLUMNS int "Initial number of console screen columns" - depends on DUMMY_CONSOLE && !ARM + depends on DUMMY_CONSOLE && !ARCH_FOOTBRIDGE default 160 if PARISC default 80 help
@@ -62,8 +62,9 @@ config DUMMY_CONSOLE_COLUMNS config DUMMY_CONSOLE_ROWS int "Initial number of console screen rows" - depends on DUMMY_CONSOLE && !ARM + depends on DUMMY_CONSOLE && !ARCH_FOOTBRIDGE default 64 if PARISC + default 30 if ARM default 25 help On PA-RISC, the default value is 64, which should fit a 1280x1024
drivers/video/console/dummycon.c +1 -1
@@ -18,7 +18,7 @@* Dummy console driver */ -#if defined(__arm__) +#if defined(CONFIG_ARCH_FOOTBRIDGE ) && defined(CONFIG_VGA_CONSOLE )#define DUMMY_COLUMNS screen_info.orig_video_cols#define DUMMY_ROWS screen_info.orig_video_lines#else
Signature · 1 line
2.39.2
Re: [PATCH 3/4] dummycon: limit Arm console size hack to footbridge
Quoted 21 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The dummycon default console size used to be determined by architecture, but now this is a
Kconfigsetting on everything except ARM. Tracing this back in the historic git trees, this was used to match the size of VGA console or VGA framebuffer on early machines, but nowadays that code is no longer used, except probably on the old footbridge/netwinder since that is the only one that supports vgacon.On machines with a framebuffer, booting with DT so far results in always using the hardcoded 80x30 size in dummycon, while on ATAGS the setting can come from a bootloader specific override. Both seem to be worse choices than the
Kconfigsetting, since the actual text size for fbcon also depends on the selected font.Make this work the same way as everywhere else and use the normal
Kconfigsetting, except for the footbridge with vgacon, which keeps using the traditional code. If vgacon is disabled, footbridge can also ignore the setting. This means thescreen_infoonly has to be provided when either vgacon or EFI are enabled now.
Quoted 4 lines
To limit the amount of surprises on Arm, change the
Kconfigdefault to the previously used 80x30 setting instead of the usual 80x25.Signed-off-by Arnd Bergmann <[email protected]>
Tested this before and after patch and it looks the same on the NetWinder.
The legacy in the cyber2000 FB driver supports pseudocolor which makes it a bit hard to rewrite into a simple DRM driver, which is something I could otherwise look into, it's not a very big or complex driver after all.
Yours,
Linus Walleij
Re: [PATCH 3/4] dummycon: limit Arm console size hack to footbridge
Quoted 7 lines · Linus Walleij
Quoted 3 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
Signed-off-by Arnd Bergmann <[email protected]>Tested this before and after patch and it looks the same on the NetWinder.
Tested-by Linus Walleij <[email protected]>
Great, thanks for testing!
Quoted 4 lines
The legacy in the cyber2000 FB driver supports pseudocolor which makes it a bit hard to rewrite into a simple DRM driver, which is something I could otherwise look into, it's not a very big or complex driver after all.
Not sure if that's worth it, my feeling is that we are stuck with fbdev on a lot of other workstations of the era, so unless someone puts significant energy into converting all the others as well, there is little benefit of changing this one. It would be a little different on platforms that actually run a regular Debian distro kernel that is shared with modern machines.
Since you have already spent the time to build and test a kernel with this patch, can you do one more test here and check the text size reported in the atags on this machine and the actual text sizes you get from both vgacon and cyber2000fb?
Arnd
Re: [PATCH 3/4] dummycon: limit Arm console size hack to footbridge
Quoted 4 lines · Arnd Bergmann
Since you have already spent the time to build and test a kernel with this patch, can you do one more test here and check the text size reported in the atags on this machine and the actual text sizes you get from both vgacon and cyber2000fb?
Heh I tested this then walked out of the office for vacation.
But I can put a note in my calendar to test it when I return to my equipment!
Yours,
Linus Walleij
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH 3/4] dummycon: limit Arm console size hack to footbridge
In reply to Arnd BergmannQuoted 21 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The dummycon default console size used to be determined by architecture, but now this is a
Kconfigsetting on everything except ARM. Tracing this back in the historic git trees, this was used to match the size of VGA console or VGA framebuffer on early machines, but nowadays that code is no longer used, except probably on the old footbridge/netwinder since that is the only one that supports vgacon.On machines with a framebuffer, booting with DT so far results in always using the hardcoded 80x30 size in dummycon, while on ATAGS the setting can come from a bootloader specific override. Both seem to be worse choices than the
Kconfigsetting, since the actual text size for fbcon also depends on the selected font.Make this work the same way as everywhere else and use the normal
Kconfigsetting, except for the footbridge with vgacon, which keeps using the traditional code. If vgacon is disabled, footbridge can also ignore the setting. This means thescreen_infoonly has to be provided when either vgacon or EFI are enabled now.
Quoted 5 lines
To limit the amount of surprises on Arm, change the
Kconfigdefault to the previously used 80x30 setting instead of the usual 80x25.Signed-off-by Arnd Bergmann <[email protected]>---
Signature · 5 lines
Best regards, Javier Martinez Canillas Core Platforms Red Hat
PATCH 4/4 vgacon, arch/*: remove unused screen_info definitions
In reply to Arnd BergmannFrom: Arnd Bergmann <[email protected]>
A number of architectures either kept the screen_info definition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.
Now that vgacon no longer builds on these architectures, remove the stale definitions.
--- arch/csky/kernel/setup.c | 12 ------------ arch/hexagon/kernel/Makefile | 2 -- arch/hexagon/kernel/screen_info.c | 3 --- arch/nios2/kernel/setup.c | 5 ----- arch/sh/kernel/setup.c | 5 ----- arch/sparc/kernel/setup_32.c | 13 ------------- arch/sparc/kernel/setup_64.c | 13 ------------- arch/xtensa/kernel/setup.c | 12 ------------ 8 files changed, 65 deletions(-) delete mode 100644 arch/hexagon/kernel/screen_info.c
arch/csky/kernel/setup.c +0 -12
@@ -8,22 +8,10 @@#include <linux/of_fdt.h> #include <linux/start_kernel.h> #include <linux/dma-map-ops.h> -#include <linux/screen_info.h> #include <asm/sections.h> #include <asm/mmu_context.h> #include <asm/pgalloc.h> -#ifdef CONFIG_DUMMY_CONSOLE -struct screen_info screen_info = { - .orig_video_lines =30 , - .orig_video_cols =80 , - .orig_video_mode =0 , - .orig_video_ega_bx =0 , - .orig_video_isVGA =1 , - .orig_video_points =8 -}; -#endif -static void __init csky_memblock_init (void ) {unsigned long lowmem_size =PFN_DOWN (LOWMEM_LIMIT -PHYS_OFFSET_OFFSET );
arch/hexagon/kernel/Makefile +0 -2
@@ -17,5 +17,3 @@ obj-y += vm_vectors.o obj-$(CONFIG_HAS_DMA) += dma.o obj-$(CONFIG_STACKTRACE) += stacktrace.o - -obj-$(CONFIG_VGA_CONSOLE) += screen_info.o
arch/hexagon/kernel/screen_info.c deleted +0 -3
@@ -1,3 +0,0 @@ -#include <linux/screen_info.h> - -struct screen_info screen_info;
arch/nios2/kernel/setup.c +0 -5
@@ -19,7 +19,6 @@#include <linux/memblock.h> #include <linux/initrd.h> #include <linux/of_fdt.h> -#include <linux/screen_info.h> #include <asm/mmu_context.h> #include <asm/sections.h>
@@ -36,10 +35,6 @@ static struct pt_regs fake_regs = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0 ,0 ,0 ,0 ,0 ,0 , 0}; -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -/* Copy a short hook instruction sequence to the exception address */ static inline void copy_exception_handler (unsigned int addr) {
arch/sh/kernel/setup.c +0 -5
@@ -7,7 +7,6 @@* Copyright (C) 1999 Niibe Yutaka * Copyright (C) 2002 - 2010 Paul Mundt */ -#include <linux/screen_info.h> #include <linux/ioport.h> #include <linux/init.h> #include <linux/initrd.h>
@@ -69,10 +68,6 @@ EXPORT_SYMBOL(cpu_data);struct sh_machine_vector sh_mv = { .mv_name ="generic" , };EXPORT_SYMBOL (sh_mv); -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -extern int root_mountflags;#define RAMDISK_IMAGE_START_MASK 0x07FF
arch/sparc/kernel/setup_32.c +0 -13
@@ -17,7 +17,6 @@#include <linux/initrd.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h>
@@ -51,18 +50,6 @@#include "kernel.h" -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* ega_ax, ega_bx, ega_cx */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -/* Typing sync at the prom prompt calls the function pointed to by * romvec->pv_synchook which I set to the following function. * This should sync all filesystems and return, for now it just
arch/sparc/kernel/setup_64.c +0 -13
@@ -15,7 +15,6 @@#include <linux/ptrace.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h>
@@ -68,18 +67,6 @@DEFINE_SPINLOCK (ns87303_lock);EXPORT_SYMBOL (ns87303_lock); -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* unused, ega_bx, unused */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -static void prom_console_write (struct console *con,const char *s,unsigned int n) {
arch/xtensa/kernel/setup.c +0 -12
@@ -19,7 +19,6 @@#include <linux/init.h> #include <linux/mm.h> #include <linux/proc_fs.h> -#include <linux/screen_info.h> #include <linux/kernel.h> #include <linux/percpu.h> #include <linux/reboot.h>
@@ -49,17 +48,6 @@#include <asm/timex.h> #include <asm/traps.h> -#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_DUMMY_CONSOLE ) -struct screen_info screen_info = { - .orig_x =0 , - .orig_y =24 , - .orig_video_cols =80 , - .orig_video_lines =24 , - .orig_video_isVGA =1 , - .orig_video_points =16 , -}; -#endif -#ifdef CONFIG_BLK_DEV_INITRD extern unsigned long initrd_start;extern unsigned long initrd_end;
Signature · 1 line
2.39.2
Re: [PATCH 4/4] vgacon, arch/*: remove unused screen_info definitions
Quoted 7 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
A number of architectures either kept the
screen_infodefinition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.
Quoted 5 lines
Now that vgacon no longer builds on these architectures, remove the stale definitions.
Signed-off-by Arnd Bergmann <[email protected]>---
Nice cleanup!
Signature · 5 lines
Best regards, Javier Martinez Canillas Core Platforms Red Hat
Re: [PATCH 4/4] vgacon, arch/*: remove unused screen_info definitions
In reply to Arnd BergmannQuoted 10 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
A number of architectures either kept the
screen_infodefinition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.Now that vgacon no longer builds on these architectures, remove the stale definitions.
Quoted 6 lines
Signed-off-by Arnd Bergmann <[email protected]>--- arch/csky/kernel/setup.c | 12 ------------ arch/hexagon/kernel/Makefile | 2 -- arch/hexagon/kernel/screen_info.c | 3 --- arch/nios2/kernel/setup.c | 5 -----
Re: [PATCH 4/4] vgacon, arch/*: remove unused screen_info definitions
In reply to Arnd BergmannQuoted 12 lines · On Fri, Jul 7, 2023 at 2:56 AM Arnd Bergmann <[email protected]> wrote:
From: Arnd Bergmann <[email protected]>
A number of architectures either kept the
screen_infodefinition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.Now that vgacon no longer builds on these architectures, remove the stale definitions.
Signed-off-by Arnd Bergmann <[email protected]>
Quoted 9 lines
--- arch/csky/kernel/setup.c | 12 ------------ arch/hexagon/kernel/Makefile | 2 -- arch/hexagon/kernel/screen_info.c | 3 --- arch/nios2/kernel/setup.c | 5 ----- arch/sh/kernel/setup.c | 5 ----- arch/sparc/kernel/setup_32.c | 13 ------------- arch/sparc/kernel/setup_64.c | 13 ------------- arch/xtensa/kernel/setup.c | 12 ------------
For xtensa:
Signature · 2 lines
Thanks. -- Max
Re: [PATCH 4/4] vgacon, arch/*: remove unused screen_info definitions
In reply to Arnd BergmannQuoted 197 lines · On Fri, 07 Jul 2023 02:52:26 PDT (-0700), [email protected] wrote:
From: Arnd Bergmann <[email protected]>
A number of architectures either kept the
screen_infodefinition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.Now that vgacon no longer builds on these architectures, remove the stale definitions.
Signed-off-by Arnd Bergmann <[email protected]>--- arch/csky/kernel/setup.c | 12 ------------ arch/hexagon/kernel/Makefile | 2 -- arch/hexagon/kernel/screen_info.c | 3 --- arch/nios2/kernel/setup.c | 5 ----- arch/sh/kernel/setup.c | 5 ----- arch/sparc/kernel/setup_32.c | 13 ------------- arch/sparc/kernel/setup_64.c | 13 ------------- arch/xtensa/kernel/setup.c | 12 ------------ 8 files changed, 65 deletions(-) delete mode 100644 arch/hexagon/kernel/screen_info.carch/csky/kernel/setup.c +0
-12@@ -8,22 +8,10 @@#include <linux/of_fdt.h> #include <linux/start_kernel.h> #include <linux/dma-map-ops.h> -#include <linux/screen_info.h> #include <asm/sections.h> #include <asm/mmu_context.h> #include <asm/pgalloc.h> -#ifdef CONFIG_DUMMY_CONSOLE -struct screen_info screen_info = { - .orig_video_lines =30 , - .orig_video_cols =80 , - .orig_video_mode =0 , - .orig_video_ega_bx =0 , - .orig_video_isVGA =1 , - .orig_video_points =8 -}; -#endif -static void __init csky_memblock_init (void ) {unsigned long lowmem_size =PFN_DOWN (LOWMEM_LIMIT -PHYS_OFFSET_OFFSET );arch/hexagon/kernel/Makefile +0
-2@@ -17,5 +17,3 @@ obj-y += vm_vectors.o obj-$(CONFIG_HAS_DMA) += dma.o obj-$(CONFIG_STACKTRACE) += stacktrace.o - -obj-$(CONFIG_VGA_CONSOLE) += screen_info.oarch/hexagon/kernel/screen_info.c deleted +0
-3@@ -1,3 +0,0 @@ -#include <linux/screen_info.h> - -struct screen_info screen_info;arch/nios2/kernel/setup.c +0
-5@@ -19,7 +19,6 @@#include <linux/memblock.h> #include <linux/initrd.h> #include <linux/of_fdt.h> -#include <linux/screen_info.h> #include <asm/mmu_context.h> #include <asm/sections.h> @@ -36,10 +35,6 @@ static struct pt_regs fake_regs = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0 ,0 ,0 ,0 ,0 ,0 , 0}; -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -/* Copy a short hook instruction sequence to the exception address */ static inline void copy_exception_handler (unsigned int addr) {arch/sh/kernel/setup.c +0
-5@@ -7,7 +7,6 @@* Copyright (C) 1999 Niibe Yutaka * Copyright (C) 2002 - 2010 Paul Mundt */ -#include <linux/screen_info.h> #include <linux/ioport.h> #include <linux/init.h> #include <linux/initrd.h> @@ -69,10 +68,6 @@ EXPORT_SYMBOL(cpu_data);struct sh_machine_vector sh_mv = { .mv_name ="generic" , };EXPORT_SYMBOL (sh_mv); -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -extern int root_mountflags;#define RAMDISK_IMAGE_START_MASK 0x07FFarch/sparc/kernel/setup_32.c +0
-13@@ -17,7 +17,6 @@#include <linux/initrd.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h> @@ -51,18 +50,6 @@#include "kernel.h" -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* ega_ax, ega_bx, ega_cx */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -/* Typing sync at the prom prompt calls the function pointed to by * romvec->pv_synchook which I set to the following function. * This should sync all filesystems and return, for now it just arch/sparc/kernel/setup_64.c +0
-13@@ -15,7 +15,6 @@#include <linux/ptrace.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h> @@ -68,18 +67,6 @@DEFINE_SPINLOCK (ns87303_lock);EXPORT_SYMBOL (ns87303_lock); -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* unused, ega_bx, unused */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -static void prom_console_write (struct console *con,const char *s,unsigned int n) {arch/xtensa/kernel/setup.c +0
-5@@ -19,7 +19,6 @@#include <linux/init.h> #include <linux/mm.h> #include <linux/proc_fs.h> -#include <linux/screen_info.h> #include <linux/kernel.h> #include <linux/percpu.h> #include <linux/reboot.h> @@ -49,17 +48,6 @@#include <asm/timex.h> #include <asm/traps.h> -#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_DUMMY_CONSOLE ) -struct screen_info screen_info = { - .orig_x =0 , - .orig_y = 24,
arch/xtensa/kernel/setup.c line 53
Quoted 10 lines
arch/xtensa/kernel/setup.c +0
-7- .orig_video_cols = 80, - .orig_video_lines = 24, - .orig_video_isVGA = 1, - .orig_video_points = 16, -}; -#endif -#ifdef CONFIG_BLK_DEV_INITRD extern unsigned long initrd_start;extern unsigned long initrd_end;
Re: [PATCH 4/4] vgacon, arch/*: remove unused screen_info definitions
In reply to Arnd Bergmanncsky:
Quoted 211 lines · On Fri, Jul 7, 2023 at 5:56 AM Arnd Bergmann <[email protected]> wrote:
From: Arnd Bergmann <[email protected]>
A number of architectures either kept the
screen_infodefinition for historical purposes as it used to be required by the generic VT code, or they copied it from another architecture in order to build the VGA console driver in an allmodconfig build.Now that vgacon no longer builds on these architectures, remove the stale definitions.
Signed-off-by Arnd Bergmann <[email protected]>--- arch/csky/kernel/setup.c | 12 ------------ arch/hexagon/kernel/Makefile | 2 -- arch/hexagon/kernel/screen_info.c | 3 --- arch/nios2/kernel/setup.c | 5 ----- arch/sh/kernel/setup.c | 5 ----- arch/sparc/kernel/setup_32.c | 13 ------------- arch/sparc/kernel/setup_64.c | 13 ------------- arch/xtensa/kernel/setup.c | 12 ------------ 8 files changed, 65 deletions(-) delete mode 100644 arch/hexagon/kernel/screen_info.carch/csky/kernel/setup.c +0
-12@@ -8,22 +8,10 @@#include <linux/of_fdt.h> #include <linux/start_kernel.h> #include <linux/dma-map-ops.h> -#include <linux/screen_info.h> #include <asm/sections.h> #include <asm/mmu_context.h> #include <asm/pgalloc.h> -#ifdef CONFIG_DUMMY_CONSOLE -struct screen_info screen_info = { - .orig_video_lines =30 , - .orig_video_cols =80 , - .orig_video_mode =0 , - .orig_video_ega_bx =0 , - .orig_video_isVGA =1 , - .orig_video_points =8 -}; -#endif -static void __init csky_memblock_init (void ) {unsigned long lowmem_size =PFN_DOWN (LOWMEM_LIMIT -PHYS_OFFSET_OFFSET );arch/hexagon/kernel/Makefile +0
-2@@ -17,5 +17,3 @@ obj-y += vm_vectors.o obj-$(CONFIG_HAS_DMA) += dma.o obj-$(CONFIG_STACKTRACE) += stacktrace.o - -obj-$(CONFIG_VGA_CONSOLE) += screen_info.oarch/hexagon/kernel/screen_info.c deleted +0
-3@@ -1,3 +0,0 @@ -#include <linux/screen_info.h> - -struct screen_info screen_info;arch/nios2/kernel/setup.c +0
-5@@ -19,7 +19,6 @@#include <linux/memblock.h> #include <linux/initrd.h> #include <linux/of_fdt.h> -#include <linux/screen_info.h> #include <asm/mmu_context.h> #include <asm/sections.h> @@ -36,10 +35,6 @@ static struct pt_regs fake_regs = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0 ,0 ,0 ,0 ,0 ,0 , 0}; -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -/* Copy a short hook instruction sequence to the exception address */ static inline void copy_exception_handler (unsigned int addr) {arch/sh/kernel/setup.c +0
-5@@ -7,7 +7,6 @@* Copyright (C) 1999 Niibe Yutaka * Copyright (C) 2002 - 2010 Paul Mundt */ -#include <linux/screen_info.h> #include <linux/ioport.h> #include <linux/init.h> #include <linux/initrd.h> @@ -69,10 +68,6 @@ EXPORT_SYMBOL(cpu_data);struct sh_machine_vector sh_mv = { .mv_name ="generic" , };EXPORT_SYMBOL (sh_mv); -#ifdef CONFIG_VT -struct screen_info screen_info; -#endif -extern int root_mountflags;#define RAMDISK_IMAGE_START_MASK 0x07FFarch/sparc/kernel/setup_32.c +0
-13@@ -17,7 +17,6 @@#include <linux/initrd.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h> @@ -51,18 +50,6 @@#include "kernel.h" -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* ega_ax, ega_bx, ega_cx */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -/* Typing sync at the prom prompt calls the function pointed to by * romvec->pv_synchook which I set to the following function. * This should sync all filesystems and return, for now it just arch/sparc/kernel/setup_64.c +0
-13@@ -15,7 +15,6 @@#include <linux/ptrace.h> #include <asm/smp.h> #include <linux/user.h> -#include <linux/screen_info.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/seq_file.h> @@ -68,18 +67,6 @@DEFINE_SPINLOCK (ns87303_lock);EXPORT_SYMBOL (ns87303_lock); -struct screen_info screen_info = { -0 ,0 ,/* orig-x, orig-y */ -0 ,/* unused */ -0 ,/* orig-video-page */ -0 ,/* orig-video-mode */ -128 ,/* orig-video-cols */ -0 ,0 ,0 ,/* unused, ega_bx, unused */ -54 ,/* orig-video-lines */ -0 ,/* orig-video-isVGA */ -16 /* orig-video-points */ -}; -static void prom_console_write (struct console *con,const char *s,unsigned int n) {arch/xtensa/kernel/setup.c +0
-13@@ -19,7 +19,6 @@#include <linux/init.h> #include <linux/mm.h> #include <linux/proc_fs.h> -#include <linux/screen_info.h> #include <linux/kernel.h> #include <linux/percpu.h> #include <linux/reboot.h> @@ -49,17 +48,6 @@#include <asm/timex.h> #include <asm/traps.h> -#if defined(CONFIG_VGA_CONSOLE ) || defined(CONFIG_DUMMY_CONSOLE ) -struct screen_info screen_info = { - .orig_x =0 , - .orig_y =24 , - .orig_video_cols =80 , - .orig_video_lines =24 , - .orig_video_isVGA =1 , - .orig_video_points =16 , -}; -#endif -#ifdef CONFIG_BLK_DEV_INITRD extern unsigned long initrd_start;extern unsigned long initrd_end; --2.39.2
Signature · 2 lines
Best Regards Guo Ren
Arnd Bergmann <[email protected]> writes:
Hello Arnd,
Quoted 21 lines
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
- powerpc used to support VGA consoles in the old
arch/ppccodebase, but the mergedarch/powerpcnever did- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
- mips has a few platforms (jazz, sibyte, and sni) that initialize
screen_info, on everything else the console is selected but cannot actually work.- csky, hexgagon, loongarch, nios2, riscv and xtensa are not listed in the opt-out table and declare a
screen_infoto allow buildingvga_con, but this cannot work because the console is never selected.
Quoted 6 lines
Replace this with an opt-in table that lists only the platforms that remain. This is effectively x86, plus a couple of historic workstation and server machines that reused parts of the x86 system architecture.
Signed-off-by Arnd Bergmann <[email protected]>---
Both our explanation and changes look good to me.
Signature · 5 lines
Best regards, Javier Martinez Canillas Core Platforms Red Hat
Hi,
for the whole series:
Best regards
Thomas
Am 07.07.23 um 11:52 schrieb Arnd Bergmann:
Quoted 47 lines
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
- powerpc used to support VGA consoles in the old
arch/ppccodebase, but the mergedarch/powerpcnever did- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
- mips has a few platforms (jazz, sibyte, and sni) that initialize
screen_info, on everything else the console is selected but cannot actually work.- csky, hexgagon, loongarch, nios2, riscv and xtensa are not listed in the opt-out table and declare a
screen_infoto allow buildingvga_con, but this cannot work because the console is never selected.Replace this with an opt-in table that lists only the platforms that remain. This is effectively x86, plus a couple of historic workstation and server machines that reused parts of the x86 system architecture.
Signed-off-by Arnd Bergmann <[email protected]>--- drivers/video/console/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)drivers/video/console/Kconfig +3
-3@@ -7,9 +7,9 @@ menu "Console display driver support" config VGA_CONSOLE bool "VGA text console" if EXPERT || !X86 - depends on !4xx && !PPC_8xx && !SPARC && !M68K && !PARISC && !SUPERH && \ - (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER) && \ - !ARM64 && !ARC && !MICROBLAZE && !OPENRISC && !S390 && !UML + depends on ALPHA || IA64 || X86 || \ + (ARM && ARCH_FOOTBRIDGE) || \ + (MIPS && (MIPS_MALTA || SIBYTE_BCM112X || SIBYTE_SB1250 || SIBYTE_BCM1x80 || SNI_RM)) select APERTURE_HELPERS if (DRM || FB || VFIO_PCI_CORE) default y help
Signature · 6 lines
Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
ping! What's the status of this patchset?
Am 07.07.23 um 11:52 schrieb Arnd Bergmann:
Quoted 47 lines
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
- powerpc used to support VGA consoles in the old
arch/ppccodebase, but the mergedarch/powerpcnever did- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
- mips has a few platforms (jazz, sibyte, and sni) that initialize
screen_info, on everything else the console is selected but cannot actually work.- csky, hexgagon, loongarch, nios2, riscv and xtensa are not listed in the opt-out table and declare a
screen_infoto allow buildingvga_con, but this cannot work because the console is never selected.Replace this with an opt-in table that lists only the platforms that remain. This is effectively x86, plus a couple of historic workstation and server machines that reused parts of the x86 system architecture.
Signed-off-by Arnd Bergmann <[email protected]>--- drivers/video/console/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)drivers/video/console/Kconfig +3
-3@@ -7,9 +7,9 @@ menu "Console display driver support" config VGA_CONSOLE bool "VGA text console" if EXPERT || !X86 - depends on !4xx && !PPC_8xx && !SPARC && !M68K && !PARISC && !SUPERH && \ - (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER) && \ - !ARM64 && !ARC && !MICROBLAZE && !OPENRISC && !S390 && !UML + depends on ALPHA || IA64 || X86 || \ + (ARM && ARCH_FOOTBRIDGE) || \ + (MIPS && (MIPS_MALTA || SIBYTE_BCM112X || SIBYTE_SB1250 || SIBYTE_BCM1x80 || SNI_RM)) select APERTURE_HELPERS if (DRM || FB || VFIO_PCI_CORE) default y help
Signature · 6 lines
Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
Russell King (Oracle)
maintainerQuoted 6 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
Quoted 6 lines
- powerpc used to support VGA consoles in the old
arch/ppccodebase, but the mergedarch/powerpcnever did- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
Integrator/AP has PCI, and I have had PCI VGA cards plugged in to that hardware when I've had it.
Provided any platform sets up PCI in a compatible way, and can run the VGA's BIOS to initialise the card, then vgacon is supportable.
Signature · 2 lines
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
Quoted 10 lines · Russell King (Oracle)
Quoted 9 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The list of dependencies here is phrased as an opt-out, but this is missing a lot of architectures that don't actually support VGA consoles, and some of the entries are stale:
- powerpc used to support VGA consoles in the old
arch/ppccodebase, but the mergedarch/powerpcnever did
Quoted 6 lines
Quoted 3 lines
- arm lists footbridge, integrator and netwinder, but netwinder is actually part of footbridge, and integrator does not appear to have an actual VGA hardware, or list it in its ATAG or DT.
Integrator/AP has PCI, and I have had PCI VGA cards plugged in to that hardware when I've had it.
I'm pretty sure it can no longer work and broke a while ago, so I would prefer to leave it out unless someone actually has a reason to use it and puts the work in to restore the support. From what I can tell, it's broken in at least three ways with the new PCI host driver:
- the PCI memory space is identity mapped to its CPU physical address as of d3721efce22d1 ("ARM: dts: integratorap: Fix PCI windows"), which is generally better for compatibility with broken drivers that read the BAR directly, but it prevents memory mapped ISA-style devices including VGA text buffer.
- vga_base is no longer set by the new PCI host driver, so any accesses to the text buffer just end up in user space memory at (__iomem*)0xb8000
- there is no DT binding for setting the global screen_info to whatever the boot firmware has initialized
the VGA BIOS to, and the default 80x30 on Arm does not match the typical 80x25 text that would be set by the BIOS.
Quoted 2 lines
Provided any platform sets up PCI in a compatible way, and can run the VGA's BIOS to initialise the card, then vgacon is supportable.
It looks like only footbridge does at this point, all the other platforms would need to fix at least some of the three things I mentioned above, in particular plat-orion is the only thing setting vga_base but also has the identity map issue.
My impression is that nobody has cared about vgacon on most Arm systems since it's harder to get working than fbcon with a native PCI driver (or the built-in pl110 on integrator) but also less useful.
Arnd