> I'll cook a diff to make glass console less eager in case no frame > buffer device is found.
This is what I had in mind. Index: arch/amd64/amd64/efifb.c =================================================================== RCS file: /OpenBSD/src/sys/arch/amd64/amd64/efifb.c,v retrieving revision 1.34 diff -u -p -r1.34 efifb.c --- arch/amd64/amd64/efifb.c 15 Jul 2022 17:57:25 -0000 1.34 +++ arch/amd64/amd64/efifb.c 9 Oct 2024 18:59:13 -0000 @@ -349,6 +349,15 @@ efifb_alloc_screen(void *v, const struct } int +efifb_cnprobe(void) +{ + if (bios_efiinfo == NULL || bios_efiinfo->fb_addr == 0) + return (-1); + + return (0); +} + +int efifb_cnattach(void) { if (bios_efiinfo == NULL || bios_efiinfo->fb_addr == 0) Index: arch/amd64/amd64/wscons_machdep.c =================================================================== RCS file: /OpenBSD/src/sys/arch/amd64/amd64/wscons_machdep.c,v retrieving revision 1.14 diff -u -p -r1.14 wscons_machdep.c --- arch/amd64/amd64/wscons_machdep.c 14 Oct 2017 04:44:43 -0000 1.14 +++ arch/amd64/amd64/wscons_machdep.c 9 Oct 2024 18:59:13 -0000 @@ -82,6 +82,25 @@ void wscnprobe(struct consdev *cp) { int maj; + int display = 0; + +#if (NEFIFB > 0) + if (efifb_cnprobe() == 0) + display = 1; +#endif +#if (NVGA > 0) + if (!display && vga_cnprobe(X86_BUS_SPACE_IO, X86_BUS_SPACE_MEM) == 0) + display = 1; +#endif +#if (NPCDISPLAY > 0) + if (!display && + pcdisplay_cnprobe(X86_BUS_SPACE_IO, X86_BUS_SPACE_MEM) == 0) + display = 1; +#endif + if (!display) { + cp->cn_pri = CN_DEAD; + return; + } /* locate the major number */ for (maj = 0; maj < nchrdev; maj++) { Index: arch/amd64/include/efifbvar.h =================================================================== RCS file: /OpenBSD/src/sys/arch/amd64/include/efifbvar.h,v retrieving revision 1.10 diff -u -p -r1.10 efifbvar.h --- arch/amd64/include/efifbvar.h 4 May 2019 11:34:47 -0000 1.10 +++ arch/amd64/include/efifbvar.h 9 Oct 2024 18:59:13 -0000 @@ -25,6 +25,7 @@ struct efifb_attach_args { struct pci_attach_args; +int efifb_cnprobe(void); int efifb_cnattach(void); void efifb_cnremap(void); int efifb_is_console(struct pci_attach_args *); Index: dev/ic/vga.c =================================================================== RCS file: /OpenBSD/src/sys/dev/ic/vga.c,v retrieving revision 1.74 diff -u -p -r1.74 vga.c --- dev/ic/vga.c 27 May 2021 23:24:40 -0000 1.74 +++ dev/ic/vga.c 9 Oct 2024 18:59:13 -0000 @@ -571,6 +571,15 @@ vga_extended_attach(struct device *self, } int +vga_cnprobe(bus_space_tag_t iot, bus_space_tag_t memt) +{ + if (!vga_common_probe(iot, memt)) + return (ENXIO); + + return (0); +} + +int vga_cnattach(bus_space_tag_t iot, bus_space_tag_t memt, int type, int check) { uint32_t defattr; Index: dev/ic/vgavar.h =================================================================== RCS file: /OpenBSD/src/sys/dev/ic/vgavar.h,v retrieving revision 1.13 diff -u -p -r1.13 vgavar.h --- dev/ic/vgavar.h 26 Jul 2015 03:17:07 -0000 1.13 +++ dev/ic/vgavar.h 9 Oct 2024 18:59:13 -0000 @@ -187,6 +187,7 @@ struct vga_config * vga_extended_attach(struct device *, bus_space_tag_t, bus_space_tag_t, int, paddr_t (*)(void *, off_t, int)); int vga_is_console(bus_space_tag_t, int); +int vga_cnprobe(bus_space_tag_t, bus_space_tag_t); int vga_cnattach(bus_space_tag_t, bus_space_tag_t, int, int); struct wsscreen_descr; Index: dev/isa/pcdisplay.c =================================================================== RCS file: /OpenBSD/src/sys/dev/isa/pcdisplay.c,v retrieving revision 1.15 diff -u -p -r1.15 pcdisplay.c --- dev/isa/pcdisplay.c 6 Apr 2022 18:59:28 -0000 1.15 +++ dev/isa/pcdisplay.c 9 Oct 2024 18:59:13 -0000 @@ -286,6 +286,16 @@ pcdisplay_attach(struct device *parent, int +pcdisplay_cnprobe(bus_space_tag_t iot, bus_space_tag_t memt) +{ + if (pcdisplay_probe_col(iot, memt)) + return (0); + if (pcdisplay_probe_mono(iot, memt)) + return (0); + return (ENXIO); +} + +int pcdisplay_cnattach(bus_space_tag_t iot, bus_space_tag_t memt) { int mono; Index: dev/isa/pcdisplayvar.h =================================================================== RCS file: /OpenBSD/src/sys/dev/isa/pcdisplayvar.h,v retrieving revision 1.4 diff -u -p -r1.4 pcdisplayvar.h --- dev/isa/pcdisplayvar.h 2 Apr 2004 04:39:51 -0000 1.4 +++ dev/isa/pcdisplayvar.h 9 Oct 2024 18:59:13 -0000 @@ -27,4 +27,5 @@ * */ +int pcdisplay_cnprobe(bus_space_tag_t, bus_space_tag_t); int pcdisplay_cnattach(bus_space_tag_t, bus_space_tag_t);