diff -u 25-akpm/drivers/firmware/pcdp.c b/drivers/firmware/pcdp.c --- 25-akpm/drivers/firmware/pcdp.c Thu Oct 28 15:45:44 2004 +++ b/drivers/firmware/pcdp.c 2004-11-05 15:11:45.395095471 -0700 @@ -18,7 +18,7 @@ #include "pcdp.h" static int __init -setup_serial_console(int rev, struct pcdp_uart *uart) +setup_serial_console(struct pcdp_uart *uart) { #ifdef CONFIG_SERIAL_8250_CONSOLE int mmio; @@ -66,15 +66,21 @@ printk(KERN_INFO "PCDP: v%d at 0x%lx\n", pcdp->rev, __pa(pcdp)); - if (pcdp->rev < 3) { - if (strstr(cmdline, "console=hcdp") || efi_uart_console_only()) + if (strstr(cmdline, "console=hcdp")) { + if (pcdp->rev < 3) serial = 1; + } else if (strstr(cmdline, "console=")) { + printk(KERN_INFO "Explicit \"console=\"; ignoring PCDP\n"); + return -ENODEV; } + if (pcdp->rev < 3 && efi_uart_console_only()) + serial = 1; + for (i = 0, uart = pcdp->uart; i < pcdp->num_uarts; i++, uart++) { if (uart->flags & PCDP_UART_PRIMARY_CONSOLE || serial) { if (uart->type == PCDP_CONSOLE_UART) { - return setup_serial_console(pcdp->rev, uart); + return setup_serial_console(uart); } } } only in patch2: unchanged: --- a/drivers/firmware/Kconfig.orig 2004-11-05 13:22:30.771152328 -0700 +++ b/drivers/firmware/Kconfig 2004-11-05 15:11:45.395095471 -0700 @@ -59,7 +59,11 @@ use the first serial port it describes as the Linux console, say Y here. If your EFI ConOut path contains only a UART device, it will become the console automatically. Otherwise, - you must specify the "console=ttyS0" kernel boot argument. + you must specify the "console=hcdp" kernel boot argument. + + Neither the PCDP nor the HCDP affects naming of serial devices, + so a serial console may be /dev/ttyS0, /dev/ttyS1, etc, depending + on how the driver discovers devices. You must also enable the appropriate drivers (serial, VGA, etc.)