Blame view

Documentation/ia64/serial.txt 6.35 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
  SERIAL DEVICE NAMING
  
      As of 2.6.10, serial devices on ia64 are named based on the
      order of ACPI and PCI enumeration.  The first device in the
      ACPI namespace (if any) becomes /dev/ttyS0, the second becomes
      /dev/ttyS1, etc., and PCI devices are named sequentially
      starting after the ACPI devices.
  
      Prior to 2.6.10, there were confusing exceptions to this:
  
  	- Firmware on some machines (mostly from HP) provides an HCDP
  	  table[1] that tells the kernel about devices that can be used
  	  as a serial console.  If the user specified "console=ttyS0"
  	  or the EFI ConOut path contained only UART devices, the
  	  kernel registered the device described by the HCDP as
  	  /dev/ttyS0.
  
  	- If there was no HCDP, we assumed there were UARTs at the
  	  legacy COM port addresses (I/O ports 0x3f8 and 0x2f8), so
  	  the kernel registered those as /dev/ttyS0 and /dev/ttyS1.
  
      Any additional ACPI or PCI devices were registered sequentially
      after /dev/ttyS0 as they were discovered.
  
      With an HCDP, device names changed depending on EFI configuration
      and "console=" arguments.  Without an HCDP, device names didn't
      change, but we registered devices that might not really exist.
  
      For example, an HP rx1600 with a single built-in serial port
      (described in the ACPI namespace) plus an MP[2] (a PCI device) has
      these ports:
  
                                    pre-2.6.10      pre-2.6.10
                      MMIO         (EFI console    (EFI console
                     address        on builtin)     on MP port)    2.6.10
                    ==========      ==========      ==========     ======
        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
  
  CONSOLE SELECTION
  
      EFI knows what your console devices are, but it doesn't tell the
      kernel quite enough to actually locate them.  The DIG64 HCDP
      table[1] does tell the kernel where potential serial console
      devices are, but not all firmware supplies it.  Also, EFI supports
      multiple simultaneous consoles and doesn't tell the kernel which
      should be the "primary" one.
  
      So how do you tell Linux which console device to use?
  
  	- If your firmware supplies the HCDP, it is simplest to
  	  configure EFI with a single device (either a UART or a VGA
  	  card) as the console.  Then you don't need to tell Linux
  	  anything; the kernel will automatically use the EFI console.
  
  	  (This works only in 2.6.6 or later; prior to that you had
  	  to specify "console=ttyS0" to get a serial console.)
  
  	- Without an HCDP, Linux defaults to a VGA console unless you
  	  specify a "console=" argument.
  
      NOTE: Don't assume that a serial console device will be /dev/ttyS0.
      It might be ttyS1, ttyS2, etc.  Make sure you have the appropriate
      entries in /etc/inittab (for getty) and /etc/securetty (to allow
      root login).
  
  EARLY SERIAL CONSOLE
  
      The kernel can't start using a serial console until it knows where
      the device lives.  Normally this happens when the driver enumerates
      all the serial devices, which can happen a minute or more after the
      kernel starts booting.
  
      2.6.10 and later kernels have an "early uart" driver that works
      very early in the boot process.  The kernel will automatically use
      this if the user supplies an argument like "console=uart,io,0x3f8",
      or if the EFI console path contains only a UART device and the
      firmware supplies an HCDP.
  
  TROUBLESHOOTING SERIAL CONSOLE PROBLEMS
  
      No kernel output after elilo prints "Uncompressing Linux... done":
  
  	- You specified "console=ttyS0" but Linux changed the device
  	  to which ttyS0 refers.  Configure exactly one EFI console
  	  device[3] and remove the "console=" option.
  
  	- The EFI console path contains both a VGA device and a UART.
  	  EFI and elilo use both, but Linux defaults to VGA.  Remove
  	  the VGA device from the EFI console path[3].
  
  	- Multiple UARTs selected as EFI console devices.  EFI and
  	  elilo use all selected devices, but Linux uses only one.
  	  Make sure only one UART is selected in the EFI console
  	  path[3].
  
  	- You're connected to an HP MP port[2] but have a non-MP UART
  	  selected as EFI console device.  EFI uses the MP as a
  	  console device even when it isn't explicitly selected.
  	  Either move the console cable to the non-MP UART, or change
  	  the EFI console path[3] to the MP UART.
  
      Long pause (60+ seconds) between "Uncompressing Linux... done" and
      start of kernel output:
  
  	- No early console because you used "console=ttyS<n>".  Remove
  	  the "console=" option if your firmware supplies an HCDP.
  
  	- If you don't have an HCDP, the kernel doesn't know where
  	  your console lives until the driver discovers serial
  	  devices.  Use "console=uart, io,0x3f8" (or appropriate
  	  address for your machine).
  
      Kernel and init script output works fine, but no "login:" prompt:
  
  	- Add getty entry to /etc/inittab for console tty.  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.
1ab54a936   Bjorn Helgaas   [PATCH] ia64: not...
126
127
128
129
130
131
      No ACPI serial devices found in 2.6.17 or later:
  
  	- Turn on CONFIG_PNP and CONFIG_PNPACPI.  Prior to 2.6.17, ACPI
  	  serial devices were discovered by 8250_acpi.  In 2.6.17,
  	  8250_acpi was replaced by the combination of 8250_pnp and
  	  CONFIG_PNPACPI.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132

0ea6e6112   Justin P. Mattock   Documentation: up...
133
  [1] http://www.dig64.org/specifications/agreement 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
      The table was originally defined as the "HCDP" for "Headless
      Console/Debug Port."  The current version is the "PCDP" for
      "Primary Console and Debug Port Devices."
  
  [2] The HP MP (management processor) is a PCI device that provides
      several UARTs.  One of the UARTs is often used as a console; the
      EFI Boot Manager identifies it as "Acpi(HWP0002,700)/Pci(...)/Uart".
      The external connection is usually a 25-pin connector, and a
      special dongle converts that to three 9-pin connectors, one of
      which is labelled "Console."
  
  [3] EFI console devices are configured using the EFI Boot Manager
      "Boot option maintenance" menu.  You may have to interrupt the
      boot sequence to use this menu, and you will have to reset the
      box after changing console configuration.