linux/Documentation/ia64/serial.txt
<<
>>
Prefs
   1SERIAL 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
  43CONSOLE 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
  70EARLY 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
  83TROUBLESHOOTING 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
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.