~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux-2.6.17/Documentation/ia64/serial.txt

Version: ~ [ 2.6.16 ] ~ [ 2.6.17 ] ~
Architecture: ~ [ ia64 ] ~ [ i386 ] ~ [ arm ] ~ [ ppc ] ~ [ sparc64 ] ~

  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 
128 
129 [1] http://www.dig64.org/specifications/DIG64_PCDPv20.pdf
130     The table was originally defined as the "HCDP" for "Headless
131     Console/Debug Port."  The current version is the "PCDP" for
132     "Primary Console and Debug Port Devices."
133 
134 [2] The HP MP (management processor) is a PCI device that provides
135     several UARTs.  One of the UARTs is often used as a console; the
136     EFI Boot Manager identifies it as "Acpi(HWP0002,700)/Pci(...)/Uart".
137     The external connection is usually a 25-pin connector, and a
138     special dongle converts that to three 9-pin connectors, one of
139     which is labelled "Console."
140 
141 [3] EFI console devices are configured using the EFI Boot Manager
142     "Boot option maintenance" menu.  You may have to interrupt the
143     boot sequence to use this menu, and you will have to reset the
144     box after changing console configuration.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.