=== USB Kernel Debugging Improvements

Contact: Tom Jones <thj@FreeBSD.org>

XHCI USB controllers offer a mode which allows them to be used as a system debugging interface.
XHCI debug uses a special USB 3 cable with VBUS, D+ and D- disconnected.
The feature can be used to live debug the FreeBSD kernel, enabling investigation of issues which cause the system video console to lock up and there is not an alternative such as a serial console.
This can happen when debugging issues with graphics drivers.

mailto:hrs@FreeBSD.org[Hiroki Sato] developed support for the XHCI debug interface and made it available as some in progress git branches.
This implementation enables FreeBSD to operate as both a Debug Host and a Debug Target, with support for debugging from the loader through to the kernel.

In this quarter the Debug Host side of the XHCI debug has been committed to FreeBSD main and will be available in FreeBSD 15.
The Debug Host driver enables a FreeBSD machine to debug Linux and Windows systems acting as Debug Targets.
The Debug Host driver has been split from the patch series to enable debugging of FreeBSD 16 and onwards from FreeBSD 15.

The Debug Target side of XHCI debug has progressed in this quarter, with an improved interface between the loader and the kernel and a lock up sending data from a Target resolved.
The remaining work for the host implementation is to enable XHCI debug as a console very early in boot and to convert some methods to use bus space allocations.

In the coming quarter I plan to update the developers handbook section on kernel debugging.

Sponsor: The FreeBSD Foundation
