From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
To: Ming Lei <tom.leiming@gmail.com>
Cc: linux-usb@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Network Development <netdev@vger.kernel.org>
Subject: Re: [RFC PATCH] usb: hcd: warn about URB buffers that are not DMA aligned and are about to be DMA mapped
Date: Sat, 15 Jun 2013 13:19:10 +0300 [thread overview]
Message-ID: <51BC3F9E.3010605@iki.fi> (raw)
In-Reply-To: <CACVXFVM4TsS-_qK_w01oajV1XcA_+OF8xdTX2xjjxOTFNAo6Sw@mail.gmail.com>
On 15.06.2013 10:41, Ming Lei wrote:
> Cc: netdev
>
> On Fri, Jun 14, 2013 at 9:38 PM, Jussi Kivilinna <jussi.kivilinna@iki.fi> wrote:
>> Appearently some out-of-tree USB host drivers do not handle DMA alignment for
>
> Looks these host drivers have to face the fact that the transfer buffer is often
> DMA non-aligned from network device drivers(in fact, the buffer is from
> network protocol stack), if you run usbnet, then you will get the added warning
> immediately.
>
Yes, getting warning immediately, but once, and blaming host driver seems ok.
>> URB buffers and let core/hcd.c to do the mapping on architectures that have
>> minimum DMA alignment requirements. This leads to random memory corruptions
>> and crashes when using USB device drivers that use unaligned URB buffers.
>
> Maybe you should check the dma mapping/unmapping implementation of
> the arch, non-aligned buffer should have be covered by the API easily.
>
> Also USB Host controller should have supported non-aligned DMA buffer.
>From what I found, there was some discussion about these issues around 2010:
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-August/022983.html
To me, it seems that non-aligned buffers cannot be easily handled by all archs
at dma mapping/unmapping phase and that HCD driver should do the alignment on
archs that set ARCH_DMA_MINALIGN. For example, ehci_tegra does copy unaligned
transfer buffers to temporary aligned buffers before letting them to USB core.
>
>>
>> Instead of fixing host drivers, users end up posting bug reports against
>> those USB device drivers that use unaligned buffers for URB; such as with
>> rtl8192cu (http://thread.gmane.org/gmane.linux.kernel.wireless.general/105631).
>
> Not only rtl8192cu driver, all USB network device drivers have the problem.
>
>>
>> Patch makes this issue more visible at core level, and hopefully gives hint
>> for future hcd driver implementors about this problem.
>
> So please find the root cause first, and don't add the noise now.
I think the root cause is that host driver is letting pass non-aligned buffers
to core on archs that have ARCH_DMA_MINALIGN set.
The warning given just before such unaligned buffer is passed to dma_map_single,
which requires ARCH_DMA_MINALIGN alignment. This seems reasonable to me.
-Jussi
>
>
> Thanks,
>
next prev parent reply other threads:[~2013-06-15 10:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20130614133803.25747.98705.stgit@localhost6.localdomain6>
[not found] ` <20130614133803.25747.98705.stgit-bi+AKbBUZKagILUCTcTcHdKyNwTtLsGr@public.gmane.org>
2013-06-15 7:41 ` [RFC PATCH] usb: hcd: warn about URB buffers that are not DMA aligned and are about to be DMA mapped Ming Lei
2013-06-15 10:19 ` Jussi Kivilinna [this message]
[not found] ` <51BC3F9E.3010605-X3B1VOXEql0@public.gmane.org>
2013-06-15 12:07 ` Ming Lei
[not found] ` <CACVXFVMe9fgdiDTRC0rWvwZJM8aT7AZY8Q1MwiOTc4ks0PQPOg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-15 13:10 ` Jussi Kivilinna
2013-06-15 13:22 ` Jussi Kivilinna
[not found] ` <51BC6A96.7030707-X3B1VOXEql0@public.gmane.org>
2013-06-16 8:21 ` Oliver Neukum
2013-06-16 10:35 ` Jussi Kivilinna
2013-06-28 12:39 ` Jussi Kivilinna
2013-06-28 12:58 ` Oliver Neukum
2013-06-15 13:47 ` Ming Lei
2013-06-16 10:34 ` Jussi Kivilinna
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=51BC3F9E.3010605@iki.fi \
--to=jussi.kivilinna@iki.fi \
--cc=gregkh@linuxfoundation.org \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=tom.leiming@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.