linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
To: Soeren Moch <smoch@web.de>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	Antti Palosaari <crope@iki.fi>
Subject: Re: [PATCH] media: dvb_ringbuffer: Add memory barriers
Date: Sat, 7 May 2016 10:26:06 -0300	[thread overview]
Message-ID: <20160507102606.73e86c0d@recife.lan> (raw)
In-Reply-To: <20160507102235.22e096d8@recife.lan>

Em Sat, 7 May 2016 10:22:35 -0300
Mauro Carvalho Chehab <mchehab@osg.samsung.com> escreveu:

> Hi Soeren,
> 
> Em Sun, 7 Feb 2016 20:22:36 +0100
> Soeren Moch <smoch@web.de> escreveu:
> 
> > On 27.12.2015 21:41, Soeren Moch wrote:
> > > Implement memory barriers according to Documentation/circular-buffers.txt:
> > > - use smp_store_release() to update ringbuffer read/write pointers
> > > - use smp_load_acquire() to load write pointer on reader side
> > > - use ACCESS_ONCE() to load read pointer on writer side
> > >
> > > This fixes data stream corruptions observed e.g. on an ARM Cortex-A9
> > > quad core system with different types (PCI, USB) of DVB tuners.
> > >
> > > Signed-off-by: Soeren Moch <smoch@web.de>
> > > Cc: stable@vger.kernel.org # 3.14+  
> > 
> > Mauro,
> > 
> > any news or comments on this?
> > Since this is a real fix for broken behaviour, can you pick this up, please?
> 
> The problem here is that I'm very reluctant to touch at the DVB core
> without doing some tests myself, as things like locking can be
> very sensible.

In addition, it is good if other DVB developers could also test it.
Even being sent for some time, until now, nobody else tested it.

> 
> I'll try to find some time to take a look on it for Kernel 4.8,
> but I'd like to reproduce the bug locally.
> 
> Could you please provide me enough info to reproduce it (and
> eventually some test MPEG-TS where you know this would happen)?
> 
> I have two DekTek RF generators here, so I should be able to
> play such TS and see what happens with and without the patch
> on x86, arm32 and arm64.

Ah,  forgot to mention, but checkpatch.pl wants comments for the memory
barriers:

WARNING: memory barrier without comment
#52: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:58:
+	return (rbuf->pread == smp_load_acquire(&rbuf->pwrite));

WARNING: memory barrier without comment
#70: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:79:
+	avail = smp_load_acquire(&rbuf->pwrite) - rbuf->pread;

WARNING: memory barrier without comment
#79: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:89:
+	smp_store_release(&rbuf->pread, smp_load_acquire(&rbuf->pwrite));

WARNING: memory barrier without comment
#87: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:96:
+	smp_store_release(&rbuf->pread, 0);

WARNING: memory barrier without comment
#88: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:97:
+	smp_store_release(&rbuf->pwrite, 0);

WARNING: memory barrier without comment
#97: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:123:
+		smp_store_release(&rbuf->pread, 0);

WARNING: memory barrier without comment
#103: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:128:
+	smp_store_release(&rbuf->pread, (rbuf->pread + todo) % rbuf->size);

WARNING: memory barrier without comment
#112: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:143:
+		smp_store_release(&rbuf->pread, 0);

WARNING: memory barrier without comment
#117: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:147:
+	smp_store_release(&rbuf->pread, (rbuf->pread + todo) % rbuf->size);

WARNING: memory barrier without comment
#126: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:162:
+		smp_store_release(&rbuf->pwrite, 0);

WARNING: memory barrier without comment
#130: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:165:
+	smp_store_release(&rbuf->pwrite, (rbuf->pwrite + todo) % rbuf->size);

WARNING: memory barrier without comment
#139: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:185:
+		smp_store_release(&rbuf->pwrite, 0);

WARNING: memory barrier without comment
#145: FILE: drivers/media/dvb-core/dvb_ringbuffer.c:190:
+	smp_store_release(&rbuf->pwrite, (rbuf->pwrite + todo) % rbuf->size);

Thanks,
Mauro

  reply	other threads:[~2016-05-07 13:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-27 20:41 [PATCH] media: dvb_ringbuffer: Add memory barriers Soeren Moch
2016-02-07 19:22 ` Soeren Moch
2016-05-07 13:22   ` Mauro Carvalho Chehab
2016-05-07 13:26     ` Mauro Carvalho Chehab [this message]
2016-05-10 22:03       ` Soeren Moch
2016-05-10 22:03     ` Soeren Moch
2016-03-16 13:42 ` [PATCH RESEND] " Soeren Moch

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=20160507102606.73e86c0d@recife.lan \
    --to=mchehab@osg.samsung.com \
    --cc=crope@iki.fi \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=smoch@web.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).