Documentation/arch/x86/earlyprintk.rst

Source file repositories/reference/linux-study-clean/Documentation/arch/x86/earlyprintk.rst

File Facts

System
Linux kernel
Corpus path
Documentation/arch/x86/earlyprintk.rst
Extension
.rst
Size
6365 bytes
Lines
152
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

.. SPDX-License-Identifier: GPL-2.0

============
Early Printk
============

Mini-HOWTO for using the earlyprintk=dbgp boot option with a
USB2 Debug port key and a debug cable, on x86 systems.

You need two computers, the 'USB debug key' special gadget and
two USB cables, connected like this::

  [host/target] <-------> [USB debug key] <-------> [client/console]

Hardware requirements
=====================

  a) Host/target system needs to have USB debug port capability.

     You can check this capability by looking at a 'Debug port' bit in
     the lspci -vvv output::

       # lspci -vvv
       ...
       00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03) (prog-if 20 [EHCI])
               Subsystem: Lenovo ThinkPad T61
               Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
               Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
               Latency: 0
               Interrupt: pin D routed to IRQ 19
               Region 0: Memory at fe227000 (32-bit, non-prefetchable) [size=1K]
               Capabilities: [50] Power Management version 2
                       Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                       Status: D0 PME-Enable- DSel=0 DScale=0 PME+
               Capabilities: [58] Debug port: BAR=1 offset=00a0
                            ^^^^^^^^^^^ <==================== [ HERE ]
               Kernel driver in use: ehci_hcd
               Kernel modules: ehci-hcd
       ...

     .. note::
       If your system does not list a debug port capability then you probably
       won't be able to use the USB debug key.

  b) You also need a NetChip USB debug cable/key:

        http://www.plxtech.com/products/NET2000/NET20DC/default.asp

     This is a small blue plastic connector with two USB connections;
     it draws power from its USB connections.

  c) You need a second client/console system with a high speed USB 2.0 port.

  d) The NetChip device must be plugged directly into the physical
     debug port on the "host/target" system. You cannot use a USB hub in
     between the physical debug port and the "host/target" system.

     The EHCI debug controller is bound to a specific physical USB
     port and the NetChip device will only work as an early printk
     device in this port.  The EHCI host controllers are electrically
     wired such that the EHCI debug controller is hooked up to the
     first physical port and there is no way to change this via software.
     You can find the physical port through experimentation by trying
     each physical port on the system and rebooting.  Or you can try
     and use lsusb or look at the kernel info messages emitted by the
     usb stack when you plug a usb device into various ports on the
     "host/target" system.

     Some hardware vendors do not expose the usb debug port with a
     physical connector and if you find such a device send a complaint

Annotation

Implementation Notes