Re: USB transfer_buffer allocations on 64bit systems

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Sarah Sharp
Date: Friday, April 9, 2010 - 9:50 am

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
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: USB transfer_buffer allocations on 64bit systems, Alan Stern, (Wed Apr 7, 12:13 pm)
Re: USB transfer_buffer allocations on 64bit systems, Robert Hancock, (Wed Apr 7, 4:59 pm)
Re: USB transfer_buffer allocations on 64bit systems, Robert Hancock, (Thu Apr 8, 5:01 pm)
Re: USB transfer_buffer allocations on 64bit systems, Sarah Sharp, (Fri Apr 9, 9:50 am)
Re: USB transfer_buffer allocations on 64bit systems, Robert Hancock, (Fri Apr 9, 4:38 pm)