From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
To: Robert Hancock <hancockrwd@gmail.com>
Cc: Greg KH <greg@kroah.com>, Alan Stern <stern@rowland.harvard.edu>,
alsa-devel@alsa-project.org, linux-usb@vger.kernel.org,
Takashi Iwai <tiwai@suse.de>, Greg KH <gregkh@suse.de>,
linux-kernel@vger.kernel.org, Pedro Ribeiro <pedrib@gmail.com>,
akpm@linux-foundation.org
Subject: Re: USB transfer_buffer allocations on 64bit systems
Date: Fri, 9 Apr 2010 09:50:14 -0700 [thread overview]
Message-ID: <20100409165014.GC5184@xanatos> (raw)
In-Reply-To: <4BBE6E57.6020600@gmail.com>
On Thu, Apr 08, 2010 at 06:01:27PM -0600, Robert Hancock wrote:
> On 04/07/2010 06:33 PM, Greg KH wrote:
> >On Wed, Apr 07, 2010 at 03:13:11PM -0400, Alan Stern wrote:
> >>On Wed, 7 Apr 2010, Takashi Iwai wrote:
> >>
> >>>>Ok, I'll write some dummies for usb_malloc() and usb_zalloc() which
> >>>>will just call kmalloc() with GFP_DMA32 for now.
> >>>
> >>>Can't we provide only zalloc() variant? Zero'ing doesn't cost much,
> >>>and the buffer allocation shouldn't be called too often.
> >>
> >>Linus specifically requested us to avoid using kzalloc in usbfs. I
> >>can't find the message in the email archives, but Greg KH should be
> >>able to confirm it.
> >>
> >>As long as we're imitating kmalloc for one use, we might as well make
> >>it available to all.
> >>
> >>>>And while at it,
> >>>>usb_alloc_buffer() will be renamed to usb_alloc_consistent().
> >>>
> >>>Most of recent functions are named with "coherent".
> >>
> >>Yes, the terminology got a little confused between the PCI and DMA
> >>realms. I agree, "coherent" is better.
> >>
> >>BTW, although some EHCI controllers may support 64-bit DMA, the driver
> >>contains this:
> >>
> >> if (HCC_64BIT_ADDR(hcc_params)) {
> >> ehci_writel(ehci, 0,&ehci->regs->segment);
> >>#if 0
> >>// this is deeply broken on almost all architectures
> >> if (!dma_set_mask(hcd->self.controller, DMA_BIT_MASK(64)))
> >> ehci_info(ehci, "enabled 64bit DMA\n");
> >>#endif
> >> }
> >>
> >>I don't know if the comment is still true, but until the "#if 0" is
> >>removed, ehci-hcd won't make use of 64-bit DMA.
> >
> >I think someone tried to remove it recently, but I wouldn't let them :)
> >
> >What a mess, hopefully xhci will just take over and save the world from
> >this whole thing...
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.
> True.. except for the fact that the xhci driver currently doesn't do
> 64-bit DMA either
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.
> nor does it support MSI even though the HW
> supports it (surprisingly enough the NEC Windows driver does, MSI-X
> even).
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.
> At this point only Intel likely knows how to do this
> properly, though, since AFAICS the spec isn't publicly available
> yet.
I have tried very hard to fix this, and will continue to do so.
Sarah Sharp
next prev parent reply other threads:[~2010-04-09 16:50 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-07 9:06 USB transfer_buffer allocations on 64bit systems Daniel Mack
[not found] ` <p2g581ef6d61004070220z1153d40ez955b356e01220848@mail.gmail.com>
2010-04-07 9:26 ` USB HID gadget driver (was: Re: USB transfer_buffer allocations on 64bit systems) Daniel Mack
2010-04-07 14:59 ` USB transfer_buffer allocations on 64bit systems Alan Stern
2010-04-07 15:11 ` Daniel Mack
2010-04-07 15:31 ` Greg KH
2010-04-07 15:35 ` Daniel Mack
2010-04-07 15:51 ` Greg KH
2010-04-07 16:04 ` Alan Stern
2010-04-08 6:09 ` Oliver Neukum
2010-04-08 11:07 ` Daniel Mack
2010-04-07 15:55 ` Alan Stern
2010-04-07 16:16 ` Daniel Mack
2010-04-07 16:47 ` Alan Stern
2010-04-07 17:55 ` Takashi Iwai
2010-04-07 17:59 ` Daniel Mack
2010-04-07 18:06 ` Takashi Iwai
2010-04-07 19:13 ` Alan Stern
2010-04-07 23:59 ` Robert Hancock
2010-04-08 0:33 ` Greg KH
2010-04-09 0:01 ` Robert Hancock
2010-04-09 16:50 ` Sarah Sharp [this message]
2010-04-09 23:38 ` Robert Hancock
2010-04-10 8:34 ` [alsa-devel] " Daniel Mack
2010-04-10 17:02 ` Robert Hancock
2010-04-12 18:56 ` Sarah Sharp
2010-04-12 20:39 ` Robert Hancock
2010-04-12 20:58 ` Sarah Sharp
2010-04-12 11:17 ` [PATCH] USB: rename usb_buffer_alloc() and usb_buffer_free() Daniel Mack
2010-04-13 18:16 ` Daniel Mack
2010-04-13 19:27 ` Alan Stern
2010-04-13 20:26 ` Greg KH
2010-04-13 21:47 ` Daniel Mack
2010-04-07 17:52 ` USB transfer_buffer allocations on 64bit systems Takashi Iwai
2010-04-07 15:46 ` Alan Stern
2010-04-08 6:12 ` Oliver Neukum
2010-04-08 16:59 ` Alan Stern
2010-04-08 21:24 ` Oliver Neukum
2010-04-08 22:20 ` Alan Stern
2010-04-09 6:04 ` Oliver Neukum
2010-04-09 14:41 ` Alan Stern
2010-04-09 14:50 ` Oliver Neukum
2010-04-09 15:15 ` Alan Stern
2010-04-09 20:51 ` Oliver Neukum
2010-04-09 21:21 ` Alan Stern
2010-04-07 16:54 ` Oliver Neukum
2010-04-07 17:00 ` Daniel Mack
2010-04-07 23:55 ` Robert Hancock
2010-04-08 2:10 ` Alan Stern
2010-04-08 7:30 ` Daniel Mack
2010-04-08 16:57 ` Alan Stern
2010-04-08 17:17 ` Pedro Ribeiro
2010-04-08 18:17 ` Alan Stern
2010-04-08 23:13 ` Pedro Ribeiro
2010-04-09 16:01 ` Alan Stern
2010-04-09 18:09 ` Daniel Mack
2010-04-09 18:19 ` Pedro Ribeiro
2010-04-09 19:34 ` Alan Stern
2010-04-09 20:14 ` Daniel Mack
2010-04-09 20:25 ` [LKML] " Konrad Rzeszutek Wilk
2010-04-09 21:23 ` Alan Stern
2010-04-09 22:11 ` Robert Hancock
2010-04-12 10:48 ` Daniel Mack
2010-04-12 12:06 ` Pedro Ribeiro
2010-04-10 12:49 ` Daniel Mack
2010-04-10 13:21 ` Pedro Ribeiro
2010-04-12 8:59 ` Andi Kleen
2010-04-12 11:14 ` Daniel Mack
2010-04-12 11:53 ` Andi Kleen
2010-04-12 12:11 ` Pedro Ribeiro
2010-04-12 12:12 ` Andi Kleen
2010-04-12 12:32 ` Daniel Mack
2010-04-12 12:47 ` Andi Kleen
2010-04-12 12:54 ` Daniel Mack
2010-04-12 15:43 ` Andi Kleen
2010-04-12 16:17 ` Alan Stern
2010-04-12 16:29 ` Andi Kleen
2010-04-12 16:57 ` Alan Stern
2010-04-12 17:15 ` Daniel Mack
2010-04-12 17:22 ` Andi Kleen
2010-04-12 17:56 ` Daniel Mack
2010-04-12 17:52 ` [LKML] " Konrad Rzeszutek Wilk
2010-04-13 18:22 ` Daniel Mack
2010-04-13 23:46 ` Pedro Ribeiro
2010-04-14 10:09 ` Daniel Mack
2010-04-14 10:47 ` Pedro Ribeiro
2010-04-14 11:02 ` Pedro Ribeiro
2010-04-14 13:18 ` [LKML] " Konrad Rzeszutek Wilk
2010-04-14 14:08 ` Alan Stern
2010-04-14 16:36 ` Daniel Mack
2010-04-14 17:21 ` Pedro Ribeiro
2010-04-14 18:23 ` Alan Stern
2010-04-14 18:27 ` Pedro Ribeiro
2010-04-14 18:53 ` Alan Stern
2010-04-15 7:35 ` Daniel Mack
2010-04-14 18:15 ` Alan Stern
2010-04-14 18:36 ` David Woodhouse
2010-04-14 21:12 ` Pedro Ribeiro
2010-04-14 22:25 ` Chris Wright
2010-04-14 22:56 ` Pedro Ribeiro
2010-04-14 23:37 ` Chris Wright
2010-04-15 1:20 ` Pedro Ribeiro
2010-04-15 15:20 ` Alan Stern
2010-04-20 0:16 ` Pedro Ribeiro
2010-05-07 7:48 ` Daniel Mack
2010-05-07 9:47 ` [alsa-devel] " Clemens Ladisch
2010-05-07 10:24 ` Daniel Mack
2010-05-07 14:51 ` Alan Stern
2010-05-10 2:50 ` FUJITA Tomonori
2010-05-10 9:21 ` David Woodhouse
2010-05-10 14:58 ` Alan Stern
2010-05-11 1:06 ` FUJITA Tomonori
2010-05-11 14:00 ` Alan Stern
2010-05-11 14:22 ` FUJITA Tomonori
2010-05-11 14:24 ` Konrad Rzeszutek Wilk
2010-05-11 14:38 ` FUJITA Tomonori
2010-05-11 15:04 ` Alan Stern
2010-05-11 15:34 ` FUJITA Tomonori
2010-05-11 16:06 ` Alan Stern
2010-05-11 16:09 ` Daniel Mack
2010-05-11 16:48 ` Pedro Ribeiro
2010-05-11 17:10 ` Daniel Mack
2010-05-11 17:32 ` Pedro Ribeiro
2010-05-11 17:38 ` Daniel Mack
2010-05-12 23:50 ` Pedro Ribeiro
2010-05-13 9:36 ` Daniel Mack
2010-05-14 0:17 ` Pedro Ribeiro
2010-05-11 14:57 ` Alan Stern
2010-05-11 15:05 ` Daniel Mack
2010-05-10 14:31 ` Konrad Rzeszutek Wilk
2010-05-07 11:42 ` Oliver Neukum
2010-05-07 11:47 ` Oliver Neukum
2010-05-07 11:58 ` Daniel Mack
2010-05-07 14:45 ` Alan Stern
2010-04-14 18:38 ` Chris Wright
2010-04-14 20:29 ` Alan Stern
2010-04-14 21:01 ` Konrad Rzeszutek Wilk
2010-04-14 21:12 ` Pedro Ribeiro
2010-04-15 1:50 ` Alan Stern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100409165014.GC5184@xanatos \
--to=sarah.a.sharp@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=alsa-devel@alsa-project.org \
--cc=greg@kroah.com \
--cc=gregkh@suse.de \
--cc=hancockrwd@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=pedrib@gmail.com \
--cc=stern@rowland.harvard.edu \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox