On Wed, Oct 15, 2025 at 01:23:30AM +0900, Ryo ONODERA wrote:
> However with this changes and probabley related commits,
> bootx64.efi prevents kernel boot for my laptops.
> Kernel boot process just stopped after loaded.

I realize that I tested a lot on real hardware, but not
with screen and keyboard console hooked.

The problem was that console defaulted to com0. The machine
did not crash, it just displayed elsewhere.

The atatched patch fixes the problem. Is it fine for you?

-- 
Emmanuel Dreyfus
[email protected]
Index: sys/arch/i386/stand/efiboot/eficons.c
===================================================================
RCS file: /cvsroot/src/sys/arch/i386/stand/efiboot/eficons.c,v
retrieving revision 1.17
diff -U 4 -r1.17 eficons.c
--- sys/arch/i386/stand/efiboot/eficons.c	14 Oct 2025 07:16:18 -0000	1.17
+++ sys/arch/i386/stand/efiboot/eficons.c	15 Oct 2025 08:57:57 -0000
@@ -140,8 +140,9 @@
 			    efi_com_putc('(') &&
 			    awaitkey(7, 0))
 				goto ok;
 		}
+		goto nocom;
 ok:
 		break;
 
 	case CONSDEV_COM0:
@@ -164,9 +165,9 @@
 
 	case CONSDEV_COM0KBD:
 	case CONSDEV_COM1KBD:
 	case CONSDEV_COM2KBD:
-	case CONSDEV_COM3KBD: /* XXXmanu */
+	case CONSDEV_COM3KBD:
 		consname = "com";
 		btinfo_console.addr = getcomaddr(unit);
 
 		if (!switchcons)
@@ -200,12 +201,12 @@
 		if (!switchcons)
 			break;
 		internal_putchar = efi_cons_putc;
 kbd:
-		consname = "com";
 		if (!switchcons)
 			break;
-		com_unit = unit;
+		if (unit != -1)
+			com_unit = unit;
 		internal_getchar = efi_cons_getc;
 		internal_iskey = efi_cons_iskey;
 		internal_waitforinputevent = efi_cons_waitforinputevent;
 		memset(keybuf, 0, sizeof(keybuf));

Reply via email to