usb/early: Add driver for xhci debug capability
authorLu Baolu <baolu.lu@linux.intel.com>
Tue, 21 Mar 2017 08:01:30 +0000 (16:01 +0800)
committerIngo Molnar <mingo@kernel.org>
Tue, 21 Mar 2017 11:30:05 +0000 (12:30 +0100)
commitaeb9dd1de98c1a5f2007ea5d2a154c1244caf8a0
tree8882865e704b39e2408f072794a653f1f58966ec
parentdd759d93f4dd4fd2f345a78ad1223bb3edf3ee7b
usb/early: Add driver for xhci debug capability

XHCI debug capability (DbC) is an optional but standalone
functionality provided by an xHCI host controller. Software
learns this capability by walking through the extended
capability list of the host. XHCI specification describes
DbC in section 7.6.

This patch introduces the code to probe and initialize the
debug capability hardware during early boot. With hardware
initialized, the debug target (system on which this code is
running) will present a debug device through the debug port
(normally the first USB3 port). The debug device is fully
compliant with the USB framework and provides the equivalent
of a very high performance (USB3) full-duplex serial link
between the debug host and target. The DbC functionality is
independent of the xHCI host. There isn't any precondition
from the xHCI host side for the DbC to work.

One use for this feature is kernel debugging, for example
when your machine crashes very early before the regular
console code is initialized. Other uses include simpler,
lockless logging instead of a full-blown printk console
driver and klogd.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-usb@vger.kernel.org
Link: http://lkml.kernel.org/r/1490083293-3792-3-git-send-email-baolu.lu@linux.intel.com
[ Small fix to the Kconfig help text. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/Kconfig.debug
drivers/usb/Makefile
drivers/usb/early/Makefile
drivers/usb/early/xhci-dbc.c [new file with mode: 0644]
drivers/usb/early/xhci-dbc.h [new file with mode: 0644]
include/linux/usb/xhci-dbgp.h [new file with mode: 0644]