All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
To: Petko Manolov <petkan@nucleusys.com>
Cc: netdev@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH] net/usb: rtl8150: allocate URB transfer_buffer and setup_packet separately
Date: Sat, 10 Aug 2013 10:38:19 +0300	[thread overview]
Message-ID: <5205EDEB.3010707@iki.fi> (raw)
In-Reply-To: <alpine.DEB.2.10.1308092149270.3114@fry.nucleusys.com>

On 09.08.2013 21:50, Petko Manolov wrote:
> On Thu, 8 Aug 2013, Jussi Kivilinna wrote:
> 
>> On 08.08.2013 18:14, Petko Manolov wrote:
>>> On Wed, 7 Aug 2013, Jussi Kivilinna wrote:
>>>
>>>> rtl8150 allocates URB transfer_buffer and setup_packet as part of same 
>>>> structure 'struct async_req'. This can cause same cacheline to be 
>>>> DMA-mapped twice with same URB. This can lead to memory corruption on 
>>>> some systems.
>>>
>>> I can see performance impact due to the double mapping.  However, memory 
>>> corruption seems a bit too much for sane cache and DMA controllers.  Out 
>>> of interest - which is the architecture that will potentially corrupt the 
>>> memory.
>>
>> rtlwifi driver had similar structure to allocate both setup_packet and 
>> transfer_buffer in single go (overlapping dma-mapping cachelines) and 
>> this caused problems on ARM/sunxi. Problems means: memory corruptions at 
>> random locations, device freezes and lock-ups.
> 
> Broken controllers?..
> 

At first I thought so too, but I discussed about this at linux-usb, and answer
was that driver which uses same (dma/-)cacheline for multiple buffers is buggy..
  http://marc.info/?l=linux-usb&m=137130407121137&w=2 (at end)
  http://marc.info/?l=linux-usb&m=137137080902265&w=2
  http://marc.info/?l=linux-usb&m=137242422120782&w=2

-Jussi

      reply	other threads:[~2013-08-10  7:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-07 13:36 [PATCH] net/usb: rtl8150: allocate URB transfer_buffer and setup_packet separately Jussi Kivilinna
2013-08-08 15:14 ` Petko Manolov
     [not found]   ` <alpine.DEB.2.10.1308081809120.4258-WOI+tvYbpdBn9MRfDTB0XAC/G2K4zDHf@public.gmane.org>
2013-08-08 19:43     ` Jussi Kivilinna
2013-08-09 18:50       ` Petko Manolov
2013-08-10  7:38         ` Jussi Kivilinna [this message]

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=5205EDEB.3010707@iki.fi \
    --to=jussi.kivilinna@iki.fi \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=petkan@nucleusys.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.