On Tue, Mar 20 2018, Matt Redfearn wrote:
Hi Neil,
On 20/03/18 08:22, NeilBrown wrote:
Further testing showed that the original version of this
patch wasn't 100% reliable. Very occasionally the read
of SYSC_REG_CHIP_NAME0 returns garbage. Repeating the
read seems to be reliable, but it hasn't happened enough
for me to be completely confident.
So this version repeats that first read.
You almost certainly need a sync() to ensure that the write to gcr_reg0
has completed before attempting to read sysc + SYSC_REG_CHIP_NAME0.
That sound like exactly the right sort of thing to do, though
I assume you mean __sync().
I tried to reproduce the problem so I could test the fix, and of course
I failed. Over 700 reboot cycles and never read any garbage from
SYSC_REG_CHIP_NAME0.
So I cannot test that this works, but I have tested that it doesn't
cause any obvious regression.
I'll send the v3 patch separately.
Thanks a lot,
NeilBrown