[Skiboot] [PATCH] libflash/blocklevel: Allow double ecc protecting a region

Stewart Smith 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
> 0a602c35e5f42aa18ee769cbd6b356ea480eb0df

Actually, no.

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
        'libflash/test/test-blocklevel-check' failed

So I haven't pushed that merge and reapply, and instead will go and make
'make check' output a bit saner.

Stewart Smith
OPAL Architect, IBM.

More information about the Skiboot mailing list