From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Hancock Subject: Re: USB transfer_buffer allocations on 64bit systems Date: Thu, 08 Apr 2010 18:01:27 -0600 Message-ID: <4BBE6E57.6020600@gmail.com> References: <20100408003313.GE4365@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20100408003313.GE4365@kroah.com> Sender: linux-kernel-owner@vger.kernel.org To: Greg KH Cc: Alan Stern , alsa-devel@alsa-project.org, linux-usb@vger.kernel.org, Takashi Iwai , Greg KH , linux-kernel@vger.kernel.org, Pedro Ribeiro , akpm@linux-foundation.org, sarah.a.sharp@linux.intel.com List-Id: alsa-devel@alsa-project.org 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... True.. except for the fact that the xhci driver currently doesn't do 64-bit DMA either, nor does it support MSI even though the HW supports it (surprisingly enough the NEC Windows driver does, MSI-X even). At this point only Intel likely knows how to do this properly, though, since AFAICS the spec isn't publicly available yet.