On Thu, Apr 08, 2010 at 06:01:27PM -0600, Robert Hancock wrote:
I hate to break it to you, but 64-bit DMA support is optional for an
xHCI implementation. There's a bit in HCCPARAMS that tells whether the
host supports it (see the HCC_64BIT_ADDR macro in xhci.h). The xHCI
driver currently doesn't do anything with that bit, although it should.
All the implementations I've seen do 64-bit DMA.
What makes you think that? I've seen URB buffers with 64-bit DMA
addresses. I can tell when the debug polling loop runs and I look at
the DMA addresses the xHCI driver is feeding to the hardware:
Dev 1 endpoint ring 0:
xhci_hcd 0000:05:00.0: @71a49800 01000680 00080000 00000008 00000841
So the TRB at address 71a49800 is pointing to a buffer at address
0x0008000001000680.
If I'm setting a DMA mask wrong somewhere, or doing something else to
limit the DMA to 32-bit, then please let me know.
There's a patch from AMD to enable MSI-X. The code was there, just
commented out because the early prototypes didn't do MSI-X.
I have tried very hard to fix this, and will continue to do so.
Sarah Sharp
--