[Skiboot] [PATCH] libflash/blocklevel: Allow double ecc protecting a region
stewart at linux.vnet.ibm.com
Tue Jul 12 17:47:29 AEST 2016
Stewart Smith <stewart at linux.vnet.ibm.com> writes:
> Cyril Bur <cyril.bur at au1.ibm.com> writes:
>> Currently the policy for calling ECC protecting a range at the
>> blocklevel layer is that the requested region be completely
>> unprotected otherwise the call will return an error. It turns out that
>> duplicate calls to ffs_init() with true as the last parameter (for the
>> same blocklevel structure) will cause duplicate attempts to
>> ecc_protect() ranges.
>> Change the policy within blocklevel to allow duplicate protecting.
>> In fact the new policy almost guarantees no failure (baring something
>> odd like malloc() failing). It will detect that the range is currently
>> already fully protected and do nothing, detect that part of the range
>> is or is not and extend the existing range or detect that a range fits
>> perfectly between two ranges in which case it will merge the ranges.
>> Signed-off-by: Cyril Bur <cyril.bur at au1.ibm.com>
>> Fixes issue exposed by Alistairs patch: 74ba834 ("flash: Use
>> blocklevel to do ECC reads")
> Thanks, 74ba834 reapplied and this patch also applied to master as of
Just noticed make check failing just before I pushed:
make -j20 libflash/test/test-blocklevel-check
[ HOSTCC ] libflash/test/test-blocklevel.c
[ RUN-TEST ] libflash/test/test-blocklevel
Shouldn't have succeeded blocklevel_ecc_protect(0x100, 0x1000)
/home/stewart/skiboot/libflash/test/Makefile.check:17: recipe for target
So I haven't pushed that merge and reapply, and instead will go and make
'make check' output a bit saner.
OPAL Architect, IBM.
More information about the Skiboot