public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Clemens Ladisch <clemens@ladisch.de>
To: Daniel Mack <zonque@gmail.com>
Cc: linux-usb@vger.kernel.org, alsa-devel@alsa-project.org,
	Takashi Iwai <tiwai@suse.de>,
	florian@mickler.org, pedrib@gmail.com,
	William Light <wrl@illest.net>, Greg KH <greg@kroah.com>,
	linux-kernel@vger.kernel.org
Subject: Re: Allocating buffers for USB transfers (again)
Date: Thu, 07 Jul 2011 14:14:00 +0200	[thread overview]
Message-ID: <4E15A308.7080502@ladisch.de> (raw)
In-Reply-To: <CACTFLANCYMXH=z+NxEF0aqpMGZp21Q16_uB=J3rndM3pW74qeA@mail.gmail.com>

Daniel Mack wrote:
> I have to revisit an issue we've discussed in length around a year ago
> and which still remains unsolved. I've been getting feedback from more
> users of my driver snd-usb-caiaq who report the issue found in bug
> #15580 in the kernel bugzilla:
> https://bugzilla.kernel.org/show_bug.cgi?id=15580
> 
> Let me quickly summarize the current state of this issue as I see it.
> 
> The problem seems to be that certain 64bit chipsets can't deal with
> the fact that an URB's transfer_buffer is allocated with
> kmalloc(GFP_KERNEL). The effect is that kmalloc() is very likely to
> hand out memory which is not addressable by devices that are connected
> via 32bit PCI busses, such as EHCI controllers. In theory, DMA bounce
> buffers should be installed in such cases, or the IOMMU would be in
> charge to re-map these buffers to suitable locations, but for at least
> two people who have reported the issue, this obviously fails.

The problem is that snd-usb-caiaq modifies the URB buffer after
submission.

USB drivers must always be prepared to work with host controllers that
use double buffering.  (IIRC there are some exotic ones where the
hardware works only with internal SRAM.)  DMA mapping, if available, is
only an optimization.

> The question now is how to proceed. I see three possible ways.
> ...
> 3. re-activate the currently disabled functions
> usb_buffer_{map,unmap,sync} functions and let the USB stack do the
> memory mapping

This is the only way that allows bounce buffers to be copied at the
correct time.

> What really puzzles me is that this doesn't hit a lot more people with
> other drivers.

I don't think there is any other driver that relies on the buffer being
coherently DMA-mapped.


Regards,
Clemens

  reply	other threads:[~2011-07-07 12:14 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-07 11:53 Allocating buffers for USB transfers (again) Daniel Mack
2011-07-07 12:14 ` Clemens Ladisch [this message]
2011-07-07 12:29   ` Daniel Mack
2011-07-07 12:33 ` Oliver Neukum
2011-07-07 12:38   ` Daniel Mack
2011-07-07 13:08     ` Oliver Neukum
2011-07-08 15:13       ` Daniel Mack
2011-07-07 15:06     ` Alan Stern
2011-07-07 15:16     ` Florian Mickler
2011-08-10  7:51       ` Daniel Mack
2011-08-10 14:32         ` Alan Stern
2011-08-10 15:33           ` Daniel Mack
2011-08-10 18:06             ` Takashi Iwai
2011-08-10 23:15             ` Sarah Sharp
2011-08-11  0:57               ` Daniel Mack
2011-08-11 16:45                 ` Sarah Sharp
2011-08-11 17:27                   ` Daniel Mack
2011-08-11 18:05                     ` Sarah Sharp
2011-08-11 21:39                       ` Daniel Mack
2011-08-11 23:29                         ` Matěj Laitl
2011-08-11 23:40                           ` Daniel Mack
2011-08-11 23:50                             ` Matěj Laitl
2011-08-12  1:28                               ` Daniel Mack
2011-08-12  4:46                                 ` Sarah Sharp
2011-08-12  9:55                                   ` Daniel Mack
2011-08-11  3:22               ` Andiry Xu
2011-08-11 14:36                 ` Alan Stern
2011-07-07 13:53 ` Johannes Stezenbach

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=4E15A308.7080502@ladisch.de \
    --to=clemens@ladisch.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=florian@mickler.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=pedrib@gmail.com \
    --cc=tiwai@suse.de \
    --cc=wrl@illest.net \
    --cc=zonque@gmail.com \
    /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