Message ID | 20230719123944.3438363-2-arnd@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | video: screen_info cleanups | expand |
On 7/19/23 6:39 AM, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > 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 (malta, 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. > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Khalid Aziz <khalid@gonehiking.org> > --- > drivers/video/console/Kconfig | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig > index 1b5a319971ed0..6af90db6d2da9 100644 > --- a/drivers/video/console/Kconfig > +++ b/drivers/video/console/Kconfig > @@ -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
Arnd Bergmann <arnd@kernel.org> writes: > From: Arnd Bergmann <arnd@arndb.de> > > 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 Not disputing this, but how did you come to that conclusion? I grepped around and couldn't convince myself whether it can work on powerpc or not. ie. currently it's possible to enable CONFIG_VGA_CONSOLE and powerpc does have a struct screen_info defined which seems like it would allow vgacon_startup() to complete. My only concern is that someone could be using it with Qemu? cheers
On Fri, Jul 21, 2023, at 06:59, Michael Ellerman wrote: > Arnd Bergmann <arnd@kernel.org> writes: >> From: Arnd Bergmann <arnd@arndb.de> >> >> 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 > > Not disputing this, but how did you come to that conclusion? I grepped > around and couldn't convince myself whether it can work on powerpc or > not. ie. currently it's possible to enable CONFIG_VGA_CONSOLE and > powerpc does have a struct screen_info defined which seems like it would > allow vgacon_startup() to complete. The VGA console needs both screen_info and vga_con to work. In arch/ppc we had both, but in arch/powerpc we only retained the screen_info: $ git grep vga_con v2.6.26 -- arch/ppc arch/ppc64 arch/powerpc v2.6.26:arch/ppc/platforms/pplus.c: conswitchp = &vga_con; v2.6.26:arch/ppc/platforms/prep_setup.c: conswitchp = &vga_con; so after arch/ppc was removed, this became impossible to use on both pplus and prep. These two platforms were also (as far as I can tell) the only ones to support vga16fb as an alternative to vgacon, but both platforms were removed later on. > My only concern is that someone could be using it with Qemu? I have not yet ruled out anyone using vga16fb on qemu before commit 0db5b61e0dc07 ("fbdev/vga16fb: Create EGA/VGA devices in sysfb code"), but I can see that this has been broken for 12 months without anyone complaining about it, since vga16fb no longer works with the "orig_video_isVGA == 1" setting in arch/powerpc (the device is not created). In the qemu sources, I see five powerpc machines that intialize VGA support: mac_newworld, mac_oldworld, pegasos2, prep, and spapr. I think we can exclude prep (which was removed from the kernel) and spapr (64-bit VGA_MAP_MEM() looks broken). I think the macs always come up in graphical mode and only use offb/atifb/rivafb/matroxfb but not vga16fb that would require running the x86 VGA BIOS initialization. I suppose it's possible to use vga16fb (not vgacon) with "qemu-system-ppc -M pegasos2 -vga std" if that still boots at all. Support for pegasos2 hardware appears to have been removed with commit 04debf21fa174 ("powerpc: Remove core support for Marvell mv64x60 hostbridges"), but it's possible that this did not break qemu support if that only uses devices under arch/powerpc/platforms/chrp/pci.c. I could not get it to boot, but did not try very hard. Arnd
Hi Arnd, On Fri, Jul 21, 2023 at 10:29 AM Arnd Bergmann <arnd@arndb.de> wrote: > On Fri, Jul 21, 2023, at 06:59, Michael Ellerman wrote: > > Arnd Bergmann <arnd@kernel.org> writes: > >> From: Arnd Bergmann <arnd@arndb.de> > >> > >> 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 > > > > Not disputing this, but how did you come to that conclusion? I grepped > > around and couldn't convince myself whether it can work on powerpc or > > not. ie. currently it's possible to enable CONFIG_VGA_CONSOLE and > > powerpc does have a struct screen_info defined which seems like it would > > allow vgacon_startup() to complete. > > The VGA console needs both screen_info and vga_con to work. In arch/ppc > we had both, but in arch/powerpc we only retained the screen_info: > > $ git grep vga_con v2.6.26 -- arch/ppc arch/ppc64 arch/powerpc > v2.6.26:arch/ppc/platforms/pplus.c: conswitchp = &vga_con; > v2.6.26:arch/ppc/platforms/prep_setup.c: conswitchp = &vga_con; > > so after arch/ppc was removed, this became impossible to use on both > pplus and prep. These two platforms were also (as far as I can tell) > the only ones to support vga16fb as an alternative to vgacon, but > both platforms were removed later on. I did use vgacon and vga16fb on CHRP on a second video card (initialized using Gabriel Paubert's x86 BIOS emulator), but that was definitely before the advent of arch/powerpc/. Gr{oetje,eeting}s, Geert
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig index 1b5a319971ed0..6af90db6d2da9 100644 --- a/drivers/video/console/Kconfig +++ b/drivers/video/console/Kconfig @@ -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