From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: Johannes Stezenbach <js@linuxtv.org>
Cc: "Linux Media Mailing List" <linux-media@vger.kernel.org>,
"Mauro Carvalho Chehab" <mchehab@infradead.org>,
"Andy Lutomirski" <luto@amacapital.net>,
"Jiri Kosina" <jikos@kernel.org>,
"Patrick Boettcher" <patrick.boettcher@posteo.de>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Andy Lutomirski" <luto@kernel.org>,
"Michael Krufky" <mkrufky@linuxtv.org>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Jörg Otte" <jrg.otte@gmail.com>
Subject: Re: [PATCH v2 02/31] cinergyT2-core: don't do DMA on stack
Date: Mon, 17 Oct 2016 15:12:37 -0200 [thread overview]
Message-ID: <20161017151237.36baa8a1@vento.lan> (raw)
In-Reply-To: <20161015205449.pagb3a7nld7q6al4@linuxtv.org>
Em Sat, 15 Oct 2016 22:54:49 +0200
Johannes Stezenbach <js@linuxtv.org> escreveu:
> On Tue, Oct 11, 2016 at 07:09:17AM -0300, Mauro Carvalho Chehab wrote:
> > --- a/drivers/media/usb/dvb-usb/cinergyT2-core.c
> > +++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c
> > @@ -41,6 +41,8 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
> >
> > struct cinergyt2_state {
> > u8 rc_counter;
> > + unsigned char data[64];
> > + struct mutex data_mutex;
> > };
>
> Sometimes my thinking is slow but it just occured to me
> that this creates a potential issue with cache line sharing.
> On an architecture which manages cache coherence in software
> (ARM, MIPS etc.) a write to e.g. rc_counter in this example
> would dirty the cache line, and a later writeback from the
> cache could overwrite parts of data[] which was received via DMA.
> In contrast, if the DMA buffer is allocated seperately via
> kmalloc it is guaranteed to be safe wrt cache line sharing.
> (see bottom of Documentation/DMA-API-HOWTO.txt).
>
Interesting point. I'm not sure well this would work with non-fully
coherent cache lines. I guess that will depend on how the USB
driver will be handling it.
> But of course DMA on stack also had the same issue
> and no one ever noticed so it's apparently not critical...
Yes, this shouldn't do it any worse than what we currently have.
In the past, I tested some drivers that uses a shared buffed for control
URB transfers in the past, on arm32 and arm64. I don't remember seeing
anything weird there that could be related to cache coherency, although
I remember several problems with USB on OMAP and RPi version 1, leading
troubles after several minutes of ISOC transfers on analog TV,
but they seemed to be unrelated to URB control traffic.
I'd say that we should keep our eyes on those drivers, after applying
this patch series and see if people will notice bad behavior on non-x86
archs.
Thanks,
Mauro
next prev parent reply other threads:[~2016-10-17 17:12 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-11 10:09 [PATCH v2 00/31] Don't use stack for DMA transers on media usb drivers Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 01/31] af9005: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 02/31] cinergyT2-core: " Mauro Carvalho Chehab
2016-10-15 20:54 ` Johannes Stezenbach
2016-10-17 17:12 ` Mauro Carvalho Chehab [this message]
2016-10-11 10:09 ` [PATCH v2 03/31] cinergyT2-core: handle error code on RC query Mauro Carvalho Chehab
2016-10-12 2:13 ` [PATCH v2.1 " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 04/31] cinergyT2-fe: cache stats at cinergyt2_fe_read_status() Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 05/31] cinergyT2-fe: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 06/31] cxusb: " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 07/31] dib0700: be sure that dib0700_ctrl_rd() users can do DMA Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 08/31] dib0700_core: don't use stack on I2C reads Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 09/31] dibusb: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 10/31] dibusb: handle error code on RC query Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 11/31] digitv: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 12/31] dtt200u-fe: don't keep waiting for lock at set_frontend() Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 13/31] dtt200u-fe: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 14/31] dtt200u-fe: handle errors on USB control messages Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 15/31] dtt200u: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 16/31] dtt200u: handle USB control message errors Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 17/31] dtv5100: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 18/31] gp8psk: " Mauro Carvalho Chehab
2016-11-06 19:51 ` VDR User
2016-11-07 11:29 ` Johannes Stezenbach
2016-11-07 12:53 ` Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 19/31] gp8psk: don't go past the buffer size Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 20/31] nova-t-usb2: don't do DMA on stack Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 21/31] pctv452e: " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 22/31] pctv452e: don't call BUG_ON() on non-fatal error Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 23/31] technisat-usb2: use DMA buffers for I2C transfers Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 24/31] dvb-usb: warn if return value for USB read/write routines is not checked Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 25/31] nova-t-usb2: handle error code on RC query Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 26/31] dw2102: return error if su3000_power_ctrl() fails Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 27/31] digitv: handle error code on RC query Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 28/31] cpia2_usb: don't use stack for DMA Mauro Carvalho Chehab
2016-10-11 22:56 ` Kosuke Tatsukawa
2016-10-12 2:18 ` [PATCH v2 .1 " Mauro Carvalho Chehab
2016-10-12 2:19 ` [PATCH v2 " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 29/31] s2255drv: " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 30/31] stk-webcam: " Mauro Carvalho Chehab
2016-10-11 10:09 ` [PATCH v2 31/31] flexcop-usb: " Mauro Carvalho Chehab
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=20161017151237.36baa8a1@vento.lan \
--to=mchehab@s-opensource.com \
--cc=jikos@kernel.org \
--cc=jrg.otte@gmail.com \
--cc=js@linuxtv.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mchehab@infradead.org \
--cc=mchehab@kernel.org \
--cc=mkrufky@linuxtv.org \
--cc=patrick.boettcher@posteo.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;
as well as URLs for NNTP newsgroup(s).