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
next prev parent reply other threads:[~2016-05-07 13:26 UTC|newest]
Thread overview: 8+ 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
-- strict thread matches above, loose matches on Subject: below --
2016-08-28 16:37 [PATCH] " 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 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.