linux-stable/lib
Miquel Raynal 1759279ad1 lib/bch: Allow easy bit swapping
It seems that several hardware ECC engine use a swapped representation
of bytes compared to software. This might having to do with how the
ECC engine is wired to the NAND controller or the order the bits are
passed to the hardware BCH logic.

This means that when the software BCH engine is working in conjunction
with data generated with hardware, sometimes we might need to swap the
bits inside bytes, eg:

    0x0A = b0000_1010 -> b0101_0000 = 0x50

Make it possible by adding a boolean to the BCH initialization routine.

Regarding the implementation itself, this is a rather simple approach
that can probably be enhanced in the future by preparing the
->a_{mod,pow}_tab tables with the swapping in mind.

Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-3-miquel.raynal@bootlin.com
2020-05-24 20:48:11 +02:00
..
842
crypto crypto: arm64/chacha - correctly walk through blocks 2020-03-20 14:35:27 +11:00
dim lib/dim: Fix -Wunused-const-variable warnings 2019-07-25 11:34:39 -07:00
fonts
kunit kunit: subtests should be indented 4 spaces according to TAP 2020-03-26 14:08:41 -06:00
livepatch livepatch/samples/selftest: Use klp_shadow_alloc() API correctly 2020-01-17 11:12:06 +01:00
lz4 lz4: do not export static symbol 2019-09-20 09:06:26 -07:00
lzo lib/lzo/lzo1x_compress.c: fix alignment bug in lzo-rle 2019-09-25 17:51:41 -07:00
math lib/math/rational.c: fix possible incorrect result from rational fractions helper 2019-12-04 19:44:13 -08:00
mpi lib/mpi: Fix building for powerpc with clang 2020-04-24 13:14:59 +10:00
raid6 x86: update AS_* macros to binutils >=2.23, supporting ADX and AVX2 2020-04-09 00:12:48 +09:00
reed_solomon
vdso lib/vdso: Enable common headers 2020-03-21 15:24:03 +01:00
xz lib/xz: fix XZ_DYNALLOC to avoid useless memory reallocations 2019-11-15 18:34:00 -08:00
zlib_deflate lib/zlib: add zlib_deflate_dfltcc_enabled() function 2020-01-31 10:30:40 -08:00
zlib_dfltcc lib/zlib: add zlib_deflate_dfltcc_enabled() function 2020-01-31 10:30:40 -08:00
zlib_inflate lib/zlib: add s390 hardware support for kernel zlib_inflate 2020-01-31 10:30:40 -08:00
zstd lib/zstd/mem.h: replace __inline by inline 2019-09-15 19:42:16 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c
assoc_array.c
atomic64.c
atomic64_test.c
audit.c
bcd.c
bch.c lib/bch: Allow easy bit swapping 2020-05-24 20:48:11 +02:00
bitmap.c lib: rework bitmap_parse() 2020-02-04 03:05:26 +00:00
bitrev.c
bootconfig.c tools/bootconfig: Show line and column in parse error 2020-03-03 17:38:42 -05:00
bsearch.c lib/bsearch: Use generic type for comparator function 2019-11-14 13:15:11 -05:00
btree.c
bucket_locks.c
bug.c bug: move WARN_ON() "cut here" into exception handler 2019-09-25 17:51:41 -07:00
build_OID_registry
bust_spinlocks.c
check_signature.c
checksum.c
clz_ctz.c
clz_tab.c
cmdline.c
cmpdi2.c
compat_audit.c
cpu_rmap.c lib: cpu_rmap: Use pr_warn instead of pr_warning 2019-10-18 15:01:57 +02:00
cpumask.c sched/core: Distribute tasks within affinity masks 2020-03-20 13:06:18 +01:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c
crc32defs.h
crc32test.c
crc64.c lib: crc64: include <linux/crc64.h> for 'crc64_be' 2020-01-23 11:40:01 -07:00
ctype.c
debug_info.c
debug_locks.c
debugobjects.c debugobjects: Fix various data races 2020-01-17 15:45:01 +01:00
dec_and_lock.c
decompress.c
decompress_bunzip2.c
decompress_inflate.c lib/zlib: add s390 hardware support for kernel zlib_inflate 2020-01-31 10:30:40 -08:00
decompress_unlz4.c
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
devres.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
digsig.c Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs" 2019-07-10 18:43:43 -07:00
dump_stack.c dump_stack: avoid the livelock of the dump_lock 2019-11-06 08:47:50 -08:00
dynamic_debug.c lib/dynamic_debug.c: use address-of operator on section symbols 2020-04-07 10:43:43 -07:00
dynamic_queue_limits.c
earlycpio.c
errname.c printf: add support for printing symbolic error names 2019-10-17 16:23:25 +02:00
error-inject.c
errseq.c
extable.c lib/extable.c: add missing prototypes 2019-09-25 17:51:39 -07:00
fault-inject.c
fdt.c
fdt_addresses.c libfdt: include fdt_addresses.c 2020-01-08 16:59:19 +00:00
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c lib/find_bit.c: uninline helper _find_next_bit() 2020-01-31 10:30:41 -08:00
find_bit_benchmark.c
flex_proportions.c
gen_crc32table.c
gen_crc64table.c
genalloc.c lib/genalloc.c: rename addr_in_gen_pool to gen_pool_has_addr 2019-12-04 19:44:13 -08:00
generic-radix-tree.c lib/generic-radix-tree.c: add kmemleak annotations 2019-10-14 15:04:00 -07:00
glob.c
globtest.c
hexdump.c lib/hexdump: make print_hex_dump_bytes() a nop on !DEBUG builds 2019-09-25 17:51:39 -07:00
hweight.c
idr.c idr: Fix idr_get_next_ul race with idr_remove 2019-11-01 22:26:34 -04:00
inflate.c
interval_tree.c
interval_tree_test.c
iomap.c
iomap_copy.c
iommu-helper.c
ioremap.c lib: provide a simple generic ioremap implementation 2019-11-11 21:18:20 +01:00
iov_iter.c pipe: Fix bogus dereference in iov_iter_alignment() 2019-12-16 12:48:10 -05:00
irq_poll.c
irq_regs.c
is_single_threaded.c
kasprintf.c
Kconfig mm/memremap_pages: Introduce memremap_compat_align() 2020-02-20 16:58:55 -08:00
Kconfig.debug Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 2020-04-09 17:39:22 -07:00
Kconfig.kasan kasan: support backing vmalloc space with real shadow memory 2019-12-01 12:59:05 -08:00
Kconfig.kgdb lib/: fix Kconfig indentation 2019-12-07 11:00:19 -08:00
Kconfig.ubsan ubsan: split "bounds" checker from other options 2020-04-07 10:43:44 -07:00
kfifo.c Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()" 2019-08-30 18:47:15 -07:00
klist.c
kobject.c
kobject_uevent.c
kstrtox.c
kstrtox.h
libcrc32c.c
list-test.c Fix linked-list KUnit test when run multiple times 2020-03-25 16:38:39 -06:00
list_debug.c
list_sort.c
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c locking/lockdep: Remove unused @nested argument from lock_release() 2019-10-09 12:46:10 +02:00
lockref.c
logic_pio.c lib: logic_pio: Enforce LOGIC_PIO_INDIRECT region ops are set at registration 2019-11-05 08:45:25 +08:00
lru_cache.c
lshrdi3.c
Makefile ubsan: add trap instrumentation option 2020-04-07 10:43:44 -07:00
memcat_p.c
memory-notifier-error-inject.c
memregion.c lib: Uplevel the pmem "region" ida to a global allocator 2019-11-07 15:44:29 +01:00
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c
nmi_backtrace.c
nodemask.c
notifier-error-inject.c
notifier-error-inject.h
objagg.c lib: objagg: Replace zero-length arrays with flexible-array member 2020-02-16 18:33:00 -08:00
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c
packing.c
parman.c
parser.c
pci_iomap.c
percpu-refcount.c percpu_ref: Fix comment regarding percpu_ref_init flags 2020-03-05 13:10:26 -08:00
percpu_counter.c
percpu_test.c
plist.c
pm-notifier-error-inject.c
radix-tree.c ida: remove abandoned macros 2020-01-31 15:09:49 -05:00
random32.c
ratelimit.c
rbtree.c lib/rbtree: fix coding style of assignments 2020-04-07 10:43:43 -07:00
rbtree_test.c augmented rbtree: add new RB_DECLARE_CALLBACKS_MAX macro 2019-09-25 17:51:39 -07:00
refcount.c locking/refcount: Consolidate implementations of refcount_t 2019-11-25 09:15:32 +01:00
rhashtable.c
sbitmap.c sbitmap: only queue kyber's wait callback if not already active 2019-12-20 16:51:54 -07:00
scatterlist.c lib/scatterlist: fix sg_copy_buffer() kerneldoc 2020-04-07 10:43:43 -07:00
seq_buf.c seq_buf: Add printing formatted hex dumps 2019-11-14 13:15:12 -05:00
sg_pool.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
sg_split.c lib: scatterlist: Fix to support no mapped sg 2019-08-08 07:45:01 -06:00
sha1.c
show_mem.c mm: remove quicklist page table caches 2019-09-24 15:54:09 -07:00
siphash.c
smp_processor_id.c lib/smp_processor_id: Don't use cpumask_equal() 2019-10-09 12:46:10 +02:00
sort.c lib/sort: Move swap, cmp and cmp_r function types for wider use 2019-11-14 13:15:11 -05:00
stackdepot.c kasan: stackdepot: move filter_irq_stacks() to stackdepot.c 2020-04-07 10:43:43 -07:00
stmp_device.c
string.c lib/string.c: update match_string() doc-strings with correct behavior 2020-02-21 11:22:15 -08:00
string_helpers.c lib/string_helpers: fix some kerneldoc warnings 2019-07-16 19:23:22 -07:00
strncpy_from_user.c lib: Reduce user_access_begin() boundaries in strncpy_from_user() and strnlen_user() 2020-01-24 09:27:34 -08:00
strnlen_user.c lib: Reduce user_access_begin() boundaries in strncpy_from_user() and strnlen_user() 2020-01-24 09:27:34 -08:00
syscall.c
test-kstrtox.c
test-string_helpers.c
test_bitfield.c
test_bitmap.c lib/test_bitmap.c: make use of EXP2_IN_BITS 2020-04-07 10:43:43 -07:00
test_blackhole_dev.c
test_bpf.c bpf/tests: Use migrate disable instead of preempt disable 2020-02-24 16:20:09 -08:00
test_debug_virtual.c
test_firmware.c test_firmware: add support for firmware_request_platform 2020-03-20 14:54:04 +01:00
test_hash.c
test_hexdump.c
test_ida.c
test_kasan.c kasan: add test for invalid size in memmove 2020-04-02 09:35:30 -07:00
test_kmod.c lib/test_kmod.c: remove a NULL test 2020-04-07 10:43:43 -07:00
test_list_sort.c
test_lockup.c lib/test_lockup.c: add parameters for locking generic vfs locks 2020-04-07 10:43:42 -07:00
test_memcat_p.c
test_meminit.c lib/test_meminit.c: add bulk alloc/free tests 2019-12-04 19:44:13 -08:00
test_min_heap.c lib: Introduce generic min-heap 2020-03-06 11:56:59 +01:00
test_module.c
test_objagg.c
test_overflow.c lib/test_overflow.c: avoid tainting the kernel and fix wrap size 2019-07-16 19:23:22 -07:00
test_parman.c
test_printf.c Device properties framework updates for 5.5-rc1 2019-11-26 19:45:12 -08:00
test_rhashtable.c
test_siphash.c
test_sort.c
test_stackinit.c lib: test_stackinit.c: XFAIL switch variable init tests 2020-04-07 10:43:43 -07:00
test_static_key_base.c
test_static_keys.c
test_string.c lib/test_string.c: add some testcases for strchr and strnchr 2019-07-16 19:23:22 -07:00
test_strscpy.c
test_sysctl.c
test_ubsan.c
test_user_copy.c usercopy: Avoid soft lockups in test_check_nonzero_user() 2019-10-16 14:56:21 +02:00
test_uuid.c
test_vmalloc.c
test_xarray.c XArray: Fix xas_pause for large multi-index entries 2020-01-31 15:09:49 -05:00
textsearch.c lib: textsearch: fix escapes in example code 2019-10-03 12:12:23 -04:00
timerqueue.c lib/timerqueue: Rely on rbtree semantics for next timer 2019-07-24 17:38:01 +02:00
ts_bm.c lib/ts_bm.c: replace zero-length array with flexible-array member 2020-04-07 10:43:42 -07:00
ts_fsm.c lib/ts_fsm.c: replace zero-length array with flexible-array member 2020-04-07 10:43:43 -07:00
ts_kmp.c lib/ts_kmp.c: replace zero-length array with flexible-array member 2020-04-07 10:43:43 -07:00
ubsan.c ubsan: include bug type in report header 2020-04-07 10:43:44 -07:00
ubsan.h int128: move __uint128_t compiler test to Kconfig 2019-11-17 09:02:42 +08:00
ucmpdi2.c
ucs2_string.c
usercopy.c lib: introduce copy_struct_from_user() helper 2019-10-01 15:45:03 +02:00
uuid.c uuid: Provide a GUID generator for raw buffer 2020-03-23 17:01:47 +01:00
vsprintf.c rss_stat: add support to detect RSS updates of external mm 2019-12-01 06:29:18 -08:00
win_minmax.c
xarray.c xarray: Fix early termination of xas_for_each_marked 2020-03-12 17:42:08 -04:00
xxhash.c