On 05/08/2018 10:33 PM, Kevin Darbyshire-Bryant wrote: > > >> On 8 May 2018, at 21:11, Rosen Penev <ros...@gmail.com> wrote: >> >>> >>> So out of curiosity I built this for my Archer C7 v2 ar71xx device. I also >>> modified the code to not give up on ‘OK’, so it always iterated 10 times. >>> I then ran this repeatedly using ‘watch’. Observations: >>> >>> 1) Failure only occurred on 1st check, it never appeared/re-appeared on >>> subsequent passes. >>> 2) Failure offsets are always at 32 byte intervals. That corresponds >>> nicely with cache-line size. >> Yeah the L1 >>> >>> Grabbing at straws to some extent. > > So I modified the user space code a little more, namely moving the usleep to > before the check (obviously still after the mmap) - I am yet to see an error. > > printf("mmap addr: %p\n", addr); > data = addr; > > for (i = 0; i < 10; i++) { > usleep(500000); > check_data(data, page_size); > } > > So that smells more of a race condition between the writer filling with 0xFF > and the reader catching up. The open() syscall does the memset(0xff) and blocks. This ensures the memory is initialized before the open() returns. I don't think there is a race. > > Again, assume that I am an idiot and am missing something fundamental. > > >
-- Regards Daniel Danzberger embeDD GmbH, Alter Postplatz 2, CH-6370 Stans _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev