What do you use for kernel debugging?

O'Connor, Daniel Daniel.O'Connor at emc.com
Fri Oct 3 00:50:58 UTC 2014

On 1 Oct 2014, at 15:54, O'Connor, Daniel <Daniel.O'Connor at emc.com> wrote:
> On 1 Oct 2014, at 14:33, Adrian Chadd <adrian at freebsd.org> wrote:
>> There's also something for XHCI.
> So I see..
> Section 7.6 in here has details..
> http://www.intel.com.au/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf
> Interestingly unlike the EHCI version it does not require hardware between the debugger and debugee, only a special cable. (see http://msdn.microsoft.com/en-us/library/windows/hardware/hh439372(v=vs.85).aspx)

I wrote a quick program to dump xHCI extended capabilities https://gist.github.com/DanielO/c42819ae69a1f680039a

Run pciconf -lb and look for the base value for xhciX then run the command with that like so..
xhci0 at pci0:3:0:0:	class=0x0c0330 card=0x077815ad chip=0x077815ad rev=0x00 hdr=0x00
    bar   [10] = type Memory, range 64, base 0xfd4c0000, size 131072, enabled

root at foo:~ # ./xhcicap 0xfd4c0000
HCCPARAMS1 => 0x0388f283
xECP (0xfd4c0e20) => ID 2 (Supported protocol) Specific 0x0300
xECP (0xfd4c0e23) => ID 3 (Extended PM) Specific 0x4253
(this is a VMWare Fusion guest with USB3 enabled)

I ran it on Gigabyte Z77-D3H board (only real hardware I had handy with USB3) which has 2 USB3 controllers - one on the Intel chipset, the other an Etron EJ168. It shows..

HCCPARAMS1 => 0x20007181
xECP (0xf7f08000) => ID 2 (Supported protocol) Specific 0x200
xECP (0xf7f08008) => ID 1 (Legacy support) Specific 0x3001

HCCPARAMS1 => 0x040050af
xECP (0xf7c01000) => ID 1 (Legacy support) Specific 0x0000

Neither support debugging (and according to the spec the later is broken as it is supposed to have at least one ‘supported protocol’ entry).

	Daniel O’Connor

Senior Software Engineer
Isilon Platforms Team

More information about the freebsd-current mailing list