0001 ==============
0002 Serial Devices
0003 ==============
0004
0005 Serial Device Naming
0006 ====================
0007
0008 As of 2.6.10, serial devices on ia64 are named based on the
0009 order of ACPI and PCI enumeration. The first device in the
0010 ACPI namespace (if any) becomes /dev/ttyS0, the second becomes
0011 /dev/ttyS1, etc., and PCI devices are named sequentially
0012 starting after the ACPI devices.
0013
0014 Prior to 2.6.10, there were confusing exceptions to this:
0015
0016 - Firmware on some machines (mostly from HP) provides an HCDP
0017 table[1] that tells the kernel about devices that can be used
0018 as a serial console. If the user specified "console=ttyS0"
0019 or the EFI ConOut path contained only UART devices, the
0020 kernel registered the device described by the HCDP as
0021 /dev/ttyS0.
0022
0023 - If there was no HCDP, we assumed there were UARTs at the
0024 legacy COM port addresses (I/O ports 0x3f8 and 0x2f8), so
0025 the kernel registered those as /dev/ttyS0 and /dev/ttyS1.
0026
0027 Any additional ACPI or PCI devices were registered sequentially
0028 after /dev/ttyS0 as they were discovered.
0029
0030 With an HCDP, device names changed depending on EFI configuration
0031 and "console=" arguments. Without an HCDP, device names didn't
0032 change, but we registered devices that might not really exist.
0033
0034 For example, an HP rx1600 with a single built-in serial port
0035 (described in the ACPI namespace) plus an MP[2] (a PCI device) has
0036 these ports:
0037
0038 ========== ========== ============ ============ =======
0039 Type MMIO pre-2.6.10 pre-2.6.10 2.6.10+
0040 address
0041 (EFI console (EFI console
0042 on builtin) on MP port)
0043 ========== ========== ============ ============ =======
0044 builtin 0xff5e0000 ttyS0 ttyS1 ttyS0
0045 MP UPS 0xf8031000 ttyS1 ttyS2 ttyS1
0046 MP Console 0xf8030000 ttyS2 ttyS0 ttyS2
0047 MP 2 0xf8030010 ttyS3 ttyS3 ttyS3
0048 MP 3 0xf8030038 ttyS4 ttyS4 ttyS4
0049 ========== ========== ============ ============ =======
0050
0051 Console Selection
0052 =================
0053
0054 EFI knows what your console devices are, but it doesn't tell the
0055 kernel quite enough to actually locate them. The DIG64 HCDP
0056 table[1] does tell the kernel where potential serial console
0057 devices are, but not all firmware supplies it. Also, EFI supports
0058 multiple simultaneous consoles and doesn't tell the kernel which
0059 should be the "primary" one.
0060
0061 So how do you tell Linux which console device to use?
0062
0063 - If your firmware supplies the HCDP, it is simplest to
0064 configure EFI with a single device (either a UART or a VGA
0065 card) as the console. Then you don't need to tell Linux
0066 anything; the kernel will automatically use the EFI console.
0067
0068 (This works only in 2.6.6 or later; prior to that you had
0069 to specify "console=ttyS0" to get a serial console.)
0070
0071 - Without an HCDP, Linux defaults to a VGA console unless you
0072 specify a "console=" argument.
0073
0074 NOTE: Don't assume that a serial console device will be /dev/ttyS0.
0075 It might be ttyS1, ttyS2, etc. Make sure you have the appropriate
0076 entries in /etc/inittab (for getty) and /etc/securetty (to allow
0077 root login).
0078
0079 Early Serial Console
0080 ====================
0081
0082 The kernel can't start using a serial console until it knows where
0083 the device lives. Normally this happens when the driver enumerates
0084 all the serial devices, which can happen a minute or more after the
0085 kernel starts booting.
0086
0087 2.6.10 and later kernels have an "early uart" driver that works
0088 very early in the boot process. The kernel will automatically use
0089 this if the user supplies an argument like "console=uart,io,0x3f8",
0090 or if the EFI console path contains only a UART device and the
0091 firmware supplies an HCDP.
0092
0093 Troubleshooting Serial Console Problems
0094 =======================================
0095
0096 No kernel output after elilo prints "Uncompressing Linux... done":
0097
0098 - You specified "console=ttyS0" but Linux changed the device
0099 to which ttyS0 refers. Configure exactly one EFI console
0100 device[3] and remove the "console=" option.
0101
0102 - The EFI console path contains both a VGA device and a UART.
0103 EFI and elilo use both, but Linux defaults to VGA. Remove
0104 the VGA device from the EFI console path[3].
0105
0106 - Multiple UARTs selected as EFI console devices. EFI and
0107 elilo use all selected devices, but Linux uses only one.
0108 Make sure only one UART is selected in the EFI console
0109 path[3].
0110
0111 - You're connected to an HP MP port[2] but have a non-MP UART
0112 selected as EFI console device. EFI uses the MP as a
0113 console device even when it isn't explicitly selected.
0114 Either move the console cable to the non-MP UART, or change
0115 the EFI console path[3] to the MP UART.
0116
0117 Long pause (60+ seconds) between "Uncompressing Linux... done" and
0118 start of kernel output:
0119
0120 - No early console because you used "console=ttyS<n>". Remove
0121 the "console=" option if your firmware supplies an HCDP.
0122
0123 - If you don't have an HCDP, the kernel doesn't know where
0124 your console lives until the driver discovers serial
0125 devices. Use "console=uart,io,0x3f8" (or appropriate
0126 address for your machine).
0127
0128 Kernel and init script output works fine, but no "login:" prompt:
0129
0130 - Add getty entry to /etc/inittab for console tty. Look for
0131 the "Adding console on ttyS<n>" message that tells you which
0132 device is the console.
0133
0134 "login:" prompt, but can't login as root:
0135
0136 - Add entry to /etc/securetty for console tty.
0137
0138 No ACPI serial devices found in 2.6.17 or later:
0139
0140 - Turn on CONFIG_PNP and CONFIG_PNPACPI. Prior to 2.6.17, ACPI
0141 serial devices were discovered by 8250_acpi. In 2.6.17,
0142 8250_acpi was replaced by the combination of 8250_pnp and
0143 CONFIG_PNPACPI.
0144
0145
0146
0147 [1]
0148 http://www.dig64.org/specifications/agreement
0149 The table was originally defined as the "HCDP" for "Headless
0150 Console/Debug Port." The current version is the "PCDP" for
0151 "Primary Console and Debug Port Devices."
0152
0153 [2]
0154 The HP MP (management processor) is a PCI device that provides
0155 several UARTs. One of the UARTs is often used as a console; the
0156 EFI Boot Manager identifies it as "Acpi(HWP0002,700)/Pci(...)/Uart".
0157 The external connection is usually a 25-pin connector, and a
0158 special dongle converts that to three 9-pin connectors, one of
0159 which is labelled "Console."
0160
0161 [3]
0162 EFI console devices are configured using the EFI Boot Manager
0163 "Boot option maintenance" menu. You may have to interrupt the
0164 boot sequence to use this menu, and you will have to reset the
0165 box after changing console configuration.