diff options
| author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2004-11-18 22:53:56 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-11-18 22:53:56 -0800 |
| commit | 1af22f6d64f152e03d374b1eea2a7d2f9497c456 (patch) | |
| tree | 01d1b9d425c9592ed4905c072da4ae6c2b4984a5 /include/linux | |
| parent | 5b6c534999948ad1032adc44fab17a6e01d0a29f (diff) | |
[PATCH] move HCDP/PCDP to early uart console
This changes the HCDP/PCDP support to use the early uart console
rather than using early_serial_setup().
As a consequence, ia64 serial device names will now stay constant
regardless of firmware console settings. (A serial device selected as
an EFI console device on HP ia64 boxes used to automatically become
ttyS0.)
This also removes the ia64 early-boot kludge of assuming legacy COM
ports at 0x3f8 and 0x2f8. For boxes that have legacy ports but no
HCDP, "console=ttyS0" will still work, but the console won't start
working until after the serial driver initializes and discovers the
devices.
WARNING:
If you have an HP machine and you're using the MP serial console port
(the connector labelled "console" on the 3-headed cable), this patch
will break your console!
HOW TO FIX IT:
1) The console device will change from /dev/ttyS0 to /dev/ttyS1,
ttyS2, or ttyS3, so:
1a) Edit /etc/inittab to add a getty entry for
/dev/ttyS1 (rx4640, rx5670, rx7620, rx8620, Superdome),
/dev/ttyS2 (rx1600), or
/dev/ttyS3 (rx2600).
1b) Edit /etc/securetty to add ttyS1, ttyS2, or ttyS3.
1c) Leave the existing ttyS0 entries in /etc/inittab and
/etc/securetty so you can still boot old kernels.
2) Edit /etc/elilo.conf to remove any "console=" arguments (see [1]).
3) Run elilo to install the bootloader with new configuration.
4) Reboot and use the EFI boot option maintenance menu to select
exactly one device for console output, input, and standard error.
Then do a cold reset so the changes take effect.
For the MP console, be careful to select the device with
"Acpi(HWP0002,700)/Pci(...)/Uart" in the path (see [2]).
DETAILS:
- Prior to this patch, serial device names depended on the HCDP,
which in turn depends on EFI console settings. After this patch,
the naming always stays the same, regardless of firmware settings.
For example, an rx1600 with a single built-in serial port plus
an MP has these ports:
Old Old
MMIO (EFI console (EFI console
address on builtin) on MP port) New
========== ========== ========== ======
builtin 0xff5e0000 ttyS0 ttyS1 ttyS0
MP UPS 0xf8031000 ttyS1 ttyS2 ttyS1
MP Console 0xf8030000 ttyS2 ttyS0 ttyS2
MP 2 0xf8030010 ttyS3 ttyS3 ttyS3
MP 3 0xf8030038 ttyS4 ttyS4 ttyS4
- If you want to have multiple devices in the EFI console path, you
can, but Linux won't be able to deduce which console to use, so it
will default to using VGA. You can use "console=hcdp" (the UART
device from the EFI path) or "console=ttyS<n>" to select the
device directly.
TROUBLESHOOTING:
- No kernel output after "Uncompressing Linux... done":
-> You're using an MP port as the console and specified
"console=ttyS0". This port is now named something else.
Remove the "console=" option.
-> Multiple UARTs selected as EFI console devices, and you're
looking at the wrong one. Make sure only one UART is
selected (use the EFI Boot Manager "Boot option maintenance"
menu).
-> You're physically connected to the MP port but have a
non-MP UART selected as EFI console device. Either move
the console cable to the non-MP UART, or change the EFI
console path to the MP UART (the MP UART is the one with
"Acpi(HWP0002,700)/Pci(...)/Uart" in it.)
- Long pause (60+ seconds) between "Uncompressing Linux... done"
and start of kernel output:
-> No early console, probably because you used "console=ttyS<n>".
Remove the "console=" option.
- Kernel and init script output works fine, but no "login:" prompt:
-> Add getty entry to /etc/inittab for console tty. Use the table
in (1a) above or look for the "Adding console on ttyS<n>" message
that tells you which device is the console.
- "login:" prompt, but can't login as root:
-> Add entry to /etc/securetty for console tty.
[1] When the EFI console path contains exactly one device (either
serial or VGA), 2.6.6 and newer kernels default to that device
automatically. So if you remove "console=" arguments, you can use
the same elilo configuration to boot any 2.6.6 or newer kernel
with or without this patch.
If you need to boot kernels older than 2.6.6 (including RHEL3 and
SLES9), keep an 'append="console=ttyS0"' line in those elilo.conf
stanzas.
Non-HP machines will still need "console=" for serial consoles
because they don't supply the HCDP table.
[2] The HP management card (MP) causes confusion because it is always
active as an EFI console, even if it doesn't appear in the EFI
console path. If your console path is set to a non-MP UART, and
you happen to be attached to the MP UART, everything works in EFI,
but the kernel will think the non-MP UART is the console, so you
won't see any kernel output.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/efi.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h index 0c5c94ab1112..40c0cd72e925 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -306,7 +306,7 @@ extern int __init efi_set_rtc_mmss(unsigned long nowtime); extern struct efi_memory_map memmap; #ifdef CONFIG_EFI_PCDP -extern void __init efi_setup_pcdp_console(char *); +extern int __init efi_setup_pcdp_console(char *); #endif /* |
