Root/
1 | SERIAL DEVICE NAMING |
2 | |
3 | As of 2.6.10, serial devices on ia64 are named based on the |
4 | order of ACPI and PCI enumeration. The first device in the |
5 | ACPI namespace (if any) becomes /dev/ttyS0, the second becomes |
6 | /dev/ttyS1, etc., and PCI devices are named sequentially |
7 | starting after the ACPI devices. |
8 | |
9 | Prior to 2.6.10, there were confusing exceptions to this: |
10 | |
11 | - Firmware on some machines (mostly from HP) provides an HCDP |
12 | table[1] that tells the kernel about devices that can be used |
13 | as a serial console. If the user specified "console=ttyS0" |
14 | or the EFI ConOut path contained only UART devices, the |
15 | kernel registered the device described by the HCDP as |
16 | /dev/ttyS0. |
17 | |
18 | - If there was no HCDP, we assumed there were UARTs at the |
19 | legacy COM port addresses (I/O ports 0x3f8 and 0x2f8), so |
20 | the kernel registered those as /dev/ttyS0 and /dev/ttyS1. |
21 | |
22 | Any additional ACPI or PCI devices were registered sequentially |
23 | after /dev/ttyS0 as they were discovered. |
24 | |
25 | With an HCDP, device names changed depending on EFI configuration |
26 | and "console=" arguments. Without an HCDP, device names didn't |
27 | change, but we registered devices that might not really exist. |
28 | |
29 | For example, an HP rx1600 with a single built-in serial port |
30 | (described in the ACPI namespace) plus an MP[2] (a PCI device) has |
31 | these ports: |
32 | |
33 | pre-2.6.10 pre-2.6.10 |
34 | MMIO (EFI console (EFI console |
35 | address on builtin) on MP port) 2.6.10 |
36 | ========== ========== ========== ====== |
37 | builtin 0xff5e0000 ttyS0 ttyS1 ttyS0 |
38 | MP UPS 0xf8031000 ttyS1 ttyS2 ttyS1 |
39 | MP Console 0xf8030000 ttyS2 ttyS0 ttyS2 |
40 | MP 2 0xf8030010 ttyS3 ttyS3 ttyS3 |
41 | MP 3 0xf8030038 ttyS4 ttyS4 ttyS4 |
42 | |
43 | CONSOLE SELECTION |
44 | |
45 | EFI knows what your console devices are, but it doesn't tell the |
46 | kernel quite enough to actually locate them. The DIG64 HCDP |
47 | table[1] does tell the kernel where potential serial console |
48 | devices are, but not all firmware supplies it. Also, EFI supports |
49 | multiple simultaneous consoles and doesn't tell the kernel which |
50 | should be the "primary" one. |
51 | |
52 | So how do you tell Linux which console device to use? |
53 | |
54 | - If your firmware supplies the HCDP, it is simplest to |
55 | configure EFI with a single device (either a UART or a VGA |
56 | card) as the console. Then you don't need to tell Linux |
57 | anything; the kernel will automatically use the EFI console. |
58 | |
59 | (This works only in 2.6.6 or later; prior to that you had |
60 | to specify "console=ttyS0" to get a serial console.) |
61 | |
62 | - Without an HCDP, Linux defaults to a VGA console unless you |
63 | specify a "console=" argument. |
64 | |
65 | NOTE: Don't assume that a serial console device will be /dev/ttyS0. |
66 | It might be ttyS1, ttyS2, etc. Make sure you have the appropriate |
67 | entries in /etc/inittab (for getty) and /etc/securetty (to allow |
68 | root login). |
69 | |
70 | EARLY SERIAL CONSOLE |
71 | |
72 | The kernel can't start using a serial console until it knows where |
73 | the device lives. Normally this happens when the driver enumerates |
74 | all the serial devices, which can happen a minute or more after the |
75 | kernel starts booting. |
76 | |
77 | 2.6.10 and later kernels have an "early uart" driver that works |
78 | very early in the boot process. The kernel will automatically use |
79 | this if the user supplies an argument like "console=uart,io,0x3f8", |
80 | or if the EFI console path contains only a UART device and the |
81 | firmware supplies an HCDP. |
82 | |
83 | TROUBLESHOOTING SERIAL CONSOLE PROBLEMS |
84 | |
85 | No kernel output after elilo prints "Uncompressing Linux... done": |
86 | |
87 | - You specified "console=ttyS0" but Linux changed the device |
88 | to which ttyS0 refers. Configure exactly one EFI console |
89 | device[3] and remove the "console=" option. |
90 | |
91 | - The EFI console path contains both a VGA device and a UART. |
92 | EFI and elilo use both, but Linux defaults to VGA. Remove |
93 | the VGA device from the EFI console path[3]. |
94 | |
95 | - Multiple UARTs selected as EFI console devices. EFI and |
96 | elilo use all selected devices, but Linux uses only one. |
97 | Make sure only one UART is selected in the EFI console |
98 | path[3]. |
99 | |
100 | - You're connected to an HP MP port[2] but have a non-MP UART |
101 | selected as EFI console device. EFI uses the MP as a |
102 | console device even when it isn't explicitly selected. |
103 | Either move the console cable to the non-MP UART, or change |
104 | the EFI console path[3] to the MP UART. |
105 | |
106 | Long pause (60+ seconds) between "Uncompressing Linux... done" and |
107 | start of kernel output: |
108 | |
109 | - No early console because you used "console=ttyS<n>". Remove |
110 | the "console=" option if your firmware supplies an HCDP. |
111 | |
112 | - If you don't have an HCDP, the kernel doesn't know where |
113 | your console lives until the driver discovers serial |
114 | devices. Use "console=uart, io,0x3f8" (or appropriate |
115 | address for your machine). |
116 | |
117 | Kernel and init script output works fine, but no "login:" prompt: |
118 | |
119 | - Add getty entry to /etc/inittab for console tty. Look for |
120 | the "Adding console on ttyS<n>" message that tells you which |
121 | device is the console. |
122 | |
123 | "login:" prompt, but can't login as root: |
124 | |
125 | - Add entry to /etc/securetty for console tty. |
126 | |
127 | No ACPI serial devices found in 2.6.17 or later: |
128 | |
129 | - Turn on CONFIG_PNP and CONFIG_PNPACPI. Prior to 2.6.17, ACPI |
130 | serial devices were discovered by 8250_acpi. In 2.6.17, |
131 | 8250_acpi was replaced by the combination of 8250_pnp and |
132 | CONFIG_PNPACPI. |
133 | |
134 | |
135 | |
136 | [1] http://www.dig64.org/specifications/agreement |
137 | The table was originally defined as the "HCDP" for "Headless |
138 | Console/Debug Port." The current version is the "PCDP" for |
139 | "Primary Console and Debug Port Devices." |
140 | |
141 | [2] The HP MP (management processor) is a PCI device that provides |
142 | several UARTs. One of the UARTs is often used as a console; the |
143 | EFI Boot Manager identifies it as "Acpi(HWP0002,700)/Pci(...)/Uart". |
144 | The external connection is usually a 25-pin connector, and a |
145 | special dongle converts that to three 9-pin connectors, one of |
146 | which is labelled "Console." |
147 | |
148 | [3] EFI console devices are configured using the EFI Boot Manager |
149 | "Boot option maintenance" menu. You may have to interrupt the |
150 | boot sequence to use this menu, and you will have to reset the |
151 | box after changing console configuration. |
152 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9