2019-05-19 21:07:45 +09:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2005-04-17 07:20:36 +09:00
|
|
|
#
|
|
|
|
# Library configuration
|
|
|
|
#
|
|
|
|
|
2009-03-07 01:21:46 +09:00
|
|
|
config BINARY_PRINTF
|
|
|
|
def_bool n
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
menu "Library routines"
|
|
|
|
|
2009-07-13 19:35:12 +09:00
|
|
|
config RAID6_PQ
|
|
|
|
tristate
|
|
|
|
|
2018-11-13 08:26:52 +09:00
|
|
|
config RAID6_PQ_BENCHMARK
|
|
|
|
bool "Automatically choose fastest RAID6 PQ functions"
|
|
|
|
depends on RAID6_PQ
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Benchmark all available RAID6 PQ functions on init and choose the
|
|
|
|
fastest one.
|
|
|
|
|
2019-05-03 05:23:29 +09:00
|
|
|
config PACKING
|
|
|
|
bool "Generic bitfield packing and unpacking"
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
This option provides the packing() helper function, which permits
|
|
|
|
converting bitfields between a CPU-usable representation and a
|
|
|
|
memory representation that can have any combination of these quirks:
|
|
|
|
- Is little endian (bytes are reversed within a 32-bit group)
|
|
|
|
- The least-significant 32-bit word comes first (within a 64-bit
|
|
|
|
group)
|
|
|
|
- The most significant bit of a byte is at its right (bit 0 of a
|
|
|
|
register description is numerically 2^7).
|
|
|
|
Drivers may use these helpers to match the bit indices as described
|
|
|
|
in the data sheets of the peripherals they are in control of.
|
|
|
|
|
|
|
|
When in doubt, say N.
|
|
|
|
|
2006-12-08 19:36:25 +09:00
|
|
|
config BITREVERSE
|
|
|
|
tristate
|
|
|
|
|
2014-11-03 11:01:03 +09:00
|
|
|
config HAVE_ARCH_BITREVERSE
|
2015-02-17 09:00:20 +09:00
|
|
|
bool
|
2014-11-03 11:01:03 +09:00
|
|
|
default n
|
|
|
|
help
|
2015-04-17 04:49:07 +09:00
|
|
|
This option enables the use of hardware bit-reversal instructions on
|
|
|
|
architectures which support such operations.
|
2014-11-03 11:01:03 +09:00
|
|
|
|
2012-05-25 05:12:28 +09:00
|
|
|
config GENERIC_STRNCPY_FROM_USER
|
|
|
|
bool
|
|
|
|
|
2012-05-27 03:06:38 +09:00
|
|
|
config GENERIC_STRNLEN_USER
|
|
|
|
bool
|
|
|
|
|
2013-06-05 01:46:26 +09:00
|
|
|
config GENERIC_NET_UTILS
|
|
|
|
bool
|
|
|
|
|
2008-04-25 20:12:53 +09:00
|
|
|
config GENERIC_FIND_FIRST_BIT
|
2008-10-16 14:01:38 +09:00
|
|
|
bool
|
2008-04-25 20:12:53 +09:00
|
|
|
|
2019-05-15 07:43:05 +09:00
|
|
|
source "lib/math/Kconfig"
|
|
|
|
|
2012-01-30 07:20:48 +09:00
|
|
|
config NO_GENERIC_PCI_IOPORT_MAP
|
|
|
|
bool
|
|
|
|
|
2011-11-25 03:45:20 +09:00
|
|
|
config GENERIC_PCI_IOMAP
|
|
|
|
bool
|
|
|
|
|
2011-11-24 21:54:28 +09:00
|
|
|
config GENERIC_IOMAP
|
|
|
|
bool
|
2011-11-25 03:45:20 +09:00
|
|
|
select GENERIC_PCI_IOMAP
|
2011-11-24 21:54:28 +09:00
|
|
|
|
lib: add support for stmp-style devices
MX23/28 use IP cores which follow a register layout I have first seen on
STMP3xxx SoCs. In this layout, every register actually has four u32:
1.) to store a value directly
2.) a SET register where every 1-bit sets the corresponding bit,
others are unaffected
3.) same with a CLR register
4.) same with a TOG (toggle) register
Also, the 2 MSBs in register 0 are always the same and can be used to reset
the IP core.
All this is strictly speaking not mach-specific (but IP core specific) and,
thus, doesn't need to be in mach-mxs/include. At least mx6 also uses IP cores
following this stmp-style. So:
Introduce a stmp-style device, put the code and defines for that in a public
place (lib/), and let drivers for stmp-style devices select that code.
To avoid regressions and ease reviewing, the actual code is simply copied from
mach-mxs. It definately wants updates, but those need a seperate patch series.
Voila, mach dependency gone, reusable code introduced. Note that I didn't
remove the duplicated code from mach-mxs yet, first the drivers have to be
converted.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
2011-09-01 03:35:40 +09:00
|
|
|
config STMP_DEVICE
|
|
|
|
bool
|
2012-12-18 09:01:39 +09:00
|
|
|
|
lockref: implement lockless reference count updates using cmpxchg()
Instead of taking the spinlock, the lockless versions atomically check
that the lock is not taken, and do the reference count update using a
cmpxchg() loop. This is semantically identical to doing the reference
count update protected by the lock, but avoids the "wait for lock"
contention that you get when accesses to the reference count are
contended.
Note that a "lockref" is absolutely _not_ equivalent to an atomic_t.
Even when the lockref reference counts are updated atomically with
cmpxchg, the fact that they also verify the state of the spinlock means
that the lockless updates can never happen while somebody else holds the
spinlock.
So while "lockref_put_or_lock()" looks a lot like just another name for
"atomic_dec_and_lock()", and both optimize to lockless updates, they are
fundamentally different: the decrement done by atomic_dec_and_lock() is
truly independent of any lock (as long as it doesn't decrement to zero),
so a locked region can still see the count change.
The lockref structure, in contrast, really is a *locked* reference
count. If you hold the spinlock, the reference count will be stable and
you can modify the reference count without using atomics, because even
the lockless updates will see and respect the state of the lock.
In order to enable the cmpxchg lockless code, the architecture needs to
do three things:
(1) Make sure that the "arch_spinlock_t" and an "unsigned int" can fit
in an aligned u64, and have a "cmpxchg()" implementation that works
on such a u64 data type.
(2) define a helper function to test for a spinlock being unlocked
("arch_spin_value_unlocked()")
(3) select the "ARCH_USE_CMPXCHG_LOCKREF" config variable in its
Kconfig file.
This enables it for x86-64 (but not 32-bit, we'd need to make sure
cmpxchg() turns into the proper cmpxchg8b in order to enable it for
32-bit mode).
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-09-03 04:12:15 +09:00
|
|
|
config ARCH_USE_CMPXCHG_LOCKREF
|
|
|
|
bool
|
|
|
|
|
2014-09-14 03:14:53 +09:00
|
|
|
config ARCH_HAS_FAST_MULTIPLIER
|
|
|
|
bool
|
|
|
|
|
2018-03-15 03:15:50 +09:00
|
|
|
config INDIRECT_PIO
|
|
|
|
bool "Access I/O in non-MMIO mode"
|
|
|
|
depends on ARM64
|
|
|
|
help
|
|
|
|
On some platforms where no separate I/O space exists, there are I/O
|
|
|
|
hosts which can not be accessed in MMIO mode. Using the logical PIO
|
|
|
|
mechanism, the host-local I/O resource can be mapped into system
|
|
|
|
logic PIO space shared with MMIO hosts, such as PCI/PCIe, then the
|
|
|
|
system can access the I/O devices with the mapped-logic PIO through
|
|
|
|
I/O accessors.
|
|
|
|
|
|
|
|
This way has relatively little I/O performance cost. Please make
|
|
|
|
sure your devices really need this configure item enabled.
|
|
|
|
|
|
|
|
When in doubt, say N.
|
|
|
|
|
This is the 5.4.200 stable release
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmKzBvAACgkQONu9yGCS
aT7I5A//eBWtBQ7E3MDCDTiZW8RQ+VT0dG87UmqmxJBnafbxuywkvasN3ysJu5Pk
xA5k5MM5zbb5YFVlO+BRqjgj4d/CM1sNW5k6/PQgJnlHTYC4oCRFr5FlBLaGT4ER
IGIyJciELMJTL02OWIdUFd0yylrDP1tyjpxlmBt3BapY5n4VxqbDQWYHnrZPKAw3
f2wDzMLMwm5M6/W+TihCaJNOp6N/SZRW1j9RquKBiur3CwA2yRpmIIE/LawVtpK3
BDuGYYgmQevi7cV2ZIYp8kb05M9n6WEXFlzy0jq2qLfrsc5+pCiiqtjOTDDzQRFd
k/NXRNoRLNmAZn3JPoF6rMyDlV2LPC16tJ+JsBMHB5CMbcv7kdTh9wxdx842UEkR
Sck+DRBoErBIIP7uD63fTMTwX7jgC4C7YsZ1abmrY0+ANJ5ribXEKj+XeasDoT5Y
kt9IJ3HersxM1e6NEDi3L4z7x9v3LbghUmDzZPHnuSZsb3CKUFwDs3hOf+XxhjWE
Hds98MabbBuzqnWR+GIhBhA1C+CiFF3f3sMMK43sY3dhrqs9S3aZMxWdmBK1Us4y
D6OK1BCp9oQ5bdstdGtx80HTMU8hUqlu51GMxXolfwcyIKAvLswYzBvGi7Pft2v1
s+z/1kSIAWpeUf14AUir3eCR07QWEyGiLKgn7JrD2p3irWhfBCM=
=6xFB
-----END PGP SIGNATURE-----
Merge 5.4.200 into android11-5.4-lts
Changes in 5.4.200
9p: missing chunk of "fs/9p: Don't update file type when updating file attributes"
bpf: Fix incorrect memory charge cost calculation in stack_map_alloc()
nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION
crypto: blake2s - generic C library implementation and selftest
lib/crypto: blake2s: move hmac construction into wireguard
lib/crypto: sha1: re-roll loops to reduce code size
compat_ioctl: remove /dev/random commands
random: don't forget compat_ioctl on urandom
random: Don't wake crng_init_wait when crng_init == 1
random: Add a urandom_read_nowait() for random APIs that don't warn
random: add GRND_INSECURE to return best-effort non-cryptographic bytes
random: ignore GRND_RANDOM in getentropy(2)
random: make /dev/random be almost like /dev/urandom
random: remove the blocking pool
random: delete code to pull data into pools
random: remove kernel.random.read_wakeup_threshold
random: remove unnecessary unlikely()
random: convert to ENTROPY_BITS for better code readability
random: Add and use pr_fmt()
random: fix typo in add_timer_randomness()
random: remove some dead code of poolinfo
random: split primary/secondary crng init paths
random: avoid warnings for !CONFIG_NUMA builds
x86: Remove arch_has_random, arch_has_random_seed
powerpc: Remove arch_has_random, arch_has_random_seed
s390: Remove arch_has_random, arch_has_random_seed
linux/random.h: Remove arch_has_random, arch_has_random_seed
linux/random.h: Use false with bool
linux/random.h: Mark CONFIG_ARCH_RANDOM functions __must_check
powerpc: Use bool in archrandom.h
random: add arch_get_random_*long_early()
random: avoid arch_get_random_seed_long() when collecting IRQ randomness
random: remove dead code left over from blocking pool
MAINTAINERS: co-maintain random.c
crypto: blake2s - include <linux/bug.h> instead of <asm/bug.h>
crypto: blake2s - adjust include guard naming
random: document add_hwgenerator_randomness() with other input functions
random: remove unused irq_flags argument from add_interrupt_randomness()
random: use BLAKE2s instead of SHA1 in extraction
random: do not sign extend bytes for rotation when mixing
random: do not re-init if crng_reseed completes before primary init
random: mix bootloader randomness into pool
random: harmonize "crng init done" messages
random: use IS_ENABLED(CONFIG_NUMA) instead of ifdefs
random: initialize ChaCha20 constants with correct endianness
random: early initialization of ChaCha constants
random: avoid superfluous call to RDRAND in CRNG extraction
random: don't reset crng_init_cnt on urandom_read()
random: fix typo in comments
random: cleanup poolinfo abstraction
random: cleanup integer types
random: remove incomplete last_data logic
random: remove unused extract_entropy() reserved argument
random: rather than entropy_store abstraction, use global
random: remove unused OUTPUT_POOL constants
random: de-duplicate INPUT_POOL constants
random: prepend remaining pool constants with POOL_
random: cleanup fractional entropy shift constants
random: access input_pool_data directly rather than through pointer
random: selectively clang-format where it makes sense
random: simplify arithmetic function flow in account()
random: continually use hwgenerator randomness
random: access primary_pool directly rather than through pointer
random: only call crng_finalize_init() for primary_crng
random: use computational hash for entropy extraction
random: simplify entropy debiting
random: use linear min-entropy accumulation crediting
random: always wake up entropy writers after extraction
random: make credit_entropy_bits() always safe
random: remove use_input_pool parameter from crng_reseed()
random: remove batched entropy locking
random: fix locking in crng_fast_load()
random: use RDSEED instead of RDRAND in entropy extraction
random: get rid of secondary crngs
random: inline leaves of rand_initialize()
random: ensure early RDSEED goes through mixer on init
random: do not xor RDRAND when writing into /dev/random
random: absorb fast pool into input pool after fast load
random: use simpler fast key erasure flow on per-cpu keys
random: use hash function for crng_slow_load()
random: make more consistent use of integer types
random: remove outdated INT_MAX >> 6 check in urandom_read()
random: zero buffer after reading entropy from userspace
random: fix locking for crng_init in crng_reseed()
random: tie batched entropy generation to base_crng generation
random: remove ifdef'd out interrupt bench
random: remove unused tracepoints
random: add proper SPDX header
random: deobfuscate irq u32/u64 contributions
random: introduce drain_entropy() helper to declutter crng_reseed()
random: remove useless header comment
random: remove whitespace and reorder includes
random: group initialization wait functions
random: group crng functions
random: group entropy extraction functions
random: group entropy collection functions
random: group userspace read/write functions
random: group sysctl functions
random: rewrite header introductory comment
random: defer fast pool mixing to worker
random: do not take pool spinlock at boot
random: unify early init crng load accounting
random: check for crng_init == 0 in add_device_randomness()
random: pull add_hwgenerator_randomness() declaration into random.h
random: clear fast pool, crng, and batches in cpuhp bring up
random: round-robin registers as ulong, not u32
random: only wake up writers after zap if threshold was passed
random: cleanup UUID handling
random: unify cycles_t and jiffies usage and types
random: do crng pre-init loading in worker rather than irq
random: give sysctl_random_min_urandom_seed a more sensible value
random: don't let 644 read-only sysctls be written to
random: replace custom notifier chain with standard one
random: use SipHash as interrupt entropy accumulator
random: make consistent usage of crng_ready()
random: reseed more often immediately after booting
random: check for signal and try earlier when generating entropy
random: skip fast_init if hwrng provides large chunk of entropy
random: treat bootloader trust toggle the same way as cpu trust toggle
random: re-add removed comment about get_random_{u32,u64} reseeding
random: mix build-time latent entropy into pool at init
random: do not split fast init input in add_hwgenerator_randomness()
random: do not allow user to keep crng key around on stack
random: check for signal_pending() outside of need_resched() check
random: check for signals every PAGE_SIZE chunk of /dev/[u]random
random: allow partial reads if later user copies fail
random: make random_get_entropy() return an unsigned long
random: document crng_fast_key_erasure() destination possibility
random: fix sysctl documentation nits
init: call time_init() before rand_initialize()
ia64: define get_cycles macro for arch-override
s390: define get_cycles macro for arch-override
parisc: define get_cycles macro for arch-override
alpha: define get_cycles macro for arch-override
powerpc: define get_cycles macro for arch-override
timekeeping: Add raw clock fallback for random_get_entropy()
m68k: use fallback for random_get_entropy() instead of zero
mips: use fallback for random_get_entropy() instead of just c0 random
arm: use fallback for random_get_entropy() instead of zero
nios2: use fallback for random_get_entropy() instead of zero
x86/tsc: Use fallback for random_get_entropy() instead of zero
um: use fallback for random_get_entropy() instead of zero
sparc: use fallback for random_get_entropy() instead of zero
xtensa: use fallback for random_get_entropy() instead of zero
random: insist on random_get_entropy() existing in order to simplify
random: do not use batches when !crng_ready()
random: use first 128 bits of input as fast init
random: do not pretend to handle premature next security model
random: order timer entropy functions below interrupt functions
random: do not use input pool from hard IRQs
random: help compiler out with fast_mix() by using simpler arguments
siphash: use one source of truth for siphash permutations
random: use symbolic constants for crng_init states
random: avoid initializing twice in credit race
random: move initialization out of reseeding hot path
random: remove ratelimiting for in-kernel unseeded randomness
random: use proper jiffies comparison macro
random: handle latent entropy and command line from random_init()
random: credit architectural init the exact amount
random: use static branch for crng_ready()
random: remove extern from functions in header
random: use proper return types on get_random_{int,long}_wait()
random: make consistent use of buf and len
random: move initialization functions out of hot pages
random: move randomize_page() into mm where it belongs
random: unify batched entropy implementations
random: convert to using fops->read_iter()
random: convert to using fops->write_iter()
random: wire up fops->splice_{read,write}_iter()
random: check for signals after page of pool writes
Revert "random: use static branch for crng_ready()"
crypto: drbg - always seeded with SP800-90B compliant noise source
crypto: drbg - prepare for more fine-grained tracking of seeding state
crypto: drbg - track whether DRBG was seeded with !rng_is_initialized()
crypto: drbg - move dynamic ->reseed_threshold adjustments to __drbg_seed()
crypto: drbg - always try to free Jitter RNG instance
crypto: drbg - make reseeding from get_random_bytes() synchronous
random: avoid checking crng_ready() twice in random_init()
random: mark bootloader randomness code as __init
random: account for arch randomness in bits
powerpc/kasan: Silence KASAN warnings in __get_wchan()
ASoC: nau8822: Add operation for internal PLL off and on
dma-debug: make things less spammy under memory pressure
ASoC: cs42l52: Fix TLV scales for mixer controls
ASoC: cs35l36: Update digital volume TLV
ASoC: cs53l30: Correct number of volume levels on SX controls
ASoC: cs42l52: Correct TLV for Bypass Volume
ASoC: cs42l56: Correct typo in minimum level for SX volume controls
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
ASoC: wm8962: Fix suspend while playing music
ASoC: es8328: Fix event generation for deemphasis control
ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()
scsi: vmw_pvscsi: Expand vcpuHint to 16 bits
scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion
scsi: ipr: Fix missing/incorrect resource cleanup in error case
scsi: pmcraid: Fix missing resource cleanup in error case
ALSA: hda/realtek - Add HW8326 support
virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg
net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag
random: credit cpu and bootloader seeds by default
pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource()
i40e: Fix adding ADQ filter to TC0
i40e: Fix calculating the number of queue pairs
i40e: Fix call trace in setup_tx_descriptors
tty: goldfish: Fix free_irq() on remove
misc: atmel-ssc: Fix IRQ check in ssc_probe
mlxsw: spectrum_cnt: Reorder counter pools
net: bgmac: Fix an erroneous kfree() in bgmac_remove()
arm64: ftrace: fix branch range checks
certs/blacklist_hashes.c: fix const confusion in certs blacklist
faddr2line: Fix overlapping text section failures, the sequel
irqchip/gic/realview: Fix refcount leak in realview_gic_of_init
irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions
irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions
i2c: designware: Use standard optional ref clock implementation
comedi: vmk80xx: fix expression for tx buffer size
USB: serial: option: add support for Cinterion MV31 with new baseline
USB: serial: io_ti: add Agilent E5805A support
usb: dwc2: Fix memory leak in dwc2_hcd_init
usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe
serial: 8250: Store to lsr_save_flags after lsr read
dm mirror log: round up region bitmap size to BITS_PER_LONG
ext4: fix bug_on ext4_mb_use_inode_pa
ext4: make variable "count" signed
ext4: add reserved GDT blocks check
ALSA: hda/realtek: fix mute/micmute LEDs for HP 440 G8
ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine
virtio-pci: Remove wrong address verification in vp_del_vqs()
net/sched: act_police: more accurate MTU policing
net: openvswitch: fix misuse of the cached connection on tuple changes
net: openvswitch: fix leak of nested actions
arm64: kprobes: Use BRK instead of single-step when executing instructions out-of-line
RISC-V: fix barrier() use in <vdso/processor.h>
riscv: Less inefficient gcc tishift helpers (and export their symbols)
powerpc/mm: Switch obsolete dssall to .long
Linux 5.4.200
Also includes in this merge resolution the following commits from 5.10.y
in order to handle merge issues with previous blake2s changes that are
in the Android tree:
6048fdcc5f26 ("lib/crypto: blake2s: include as built-in")
d2a02e3c8bb6 ("lib/crypto: blake2s: avoid indirect calls to compression function for Clang CFI")
e56e18985596 ("lib/crypto: add prompts back to crypto libraries")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie836943a404704937d2d6575f0f51e1d02d24e55
2022-06-23 20:47:42 +09:00
|
|
|
source "lib/crypto/Kconfig"
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
config CRC_CCITT
|
|
|
|
tristate "CRC-CCITT functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC-CCITT functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC-CCITT
|
|
|
|
functions require M here.
|
|
|
|
|
2005-08-17 20:17:26 +09:00
|
|
|
config CRC16
|
|
|
|
tristate "CRC16 functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC16 functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC16
|
|
|
|
functions require M here.
|
|
|
|
|
2008-06-26 00:22:42 +09:00
|
|
|
config CRC_T10DIF
|
|
|
|
tristate "CRC calculation for the T10 Data Integrity Field"
|
2013-09-07 11:56:26 +09:00
|
|
|
select CRYPTO
|
|
|
|
select CRYPTO_CRCT10DIF
|
2008-06-26 00:22:42 +09:00
|
|
|
help
|
|
|
|
This option is only needed if a module that's not in the
|
|
|
|
kernel tree needs to calculate CRC checks for use with the
|
|
|
|
SCSI data integrity subsystem.
|
|
|
|
|
2006-06-12 23:17:04 +09:00
|
|
|
config CRC_ITU_T
|
|
|
|
tristate "CRC ITU-T V.41 functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC ITU-T V.41 functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC ITU-T V.41
|
|
|
|
functions require M here.
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
config CRC32
|
2012-03-24 07:02:25 +09:00
|
|
|
tristate "CRC32/CRC32c functions"
|
2005-04-17 07:20:36 +09:00
|
|
|
default y
|
2006-12-08 19:36:25 +09:00
|
|
|
select BITREVERSE
|
2005-04-17 07:20:36 +09:00
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
2012-03-24 07:02:25 +09:00
|
|
|
modules require CRC32/CRC32c functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC32/CRC32c
|
|
|
|
functions require M here.
|
2005-04-17 07:20:36 +09:00
|
|
|
|
2012-03-24 07:02:22 +09:00
|
|
|
config CRC32_SELFTEST
|
2017-02-25 08:00:49 +09:00
|
|
|
tristate "CRC32 perform self test on init"
|
2012-03-24 07:02:22 +09:00
|
|
|
depends on CRC32
|
|
|
|
help
|
|
|
|
This option enables the CRC32 library functions to perform a
|
|
|
|
self test on initialization. The self test computes crc32_le
|
|
|
|
and crc32_be over byte strings with random alignment and length
|
|
|
|
and computes the total elapsed time and number of bytes processed.
|
|
|
|
|
2012-03-24 07:02:26 +09:00
|
|
|
choice
|
|
|
|
prompt "CRC32 implementation"
|
|
|
|
depends on CRC32
|
|
|
|
default CRC32_SLICEBY8
|
2012-03-29 06:42:56 +09:00
|
|
|
help
|
|
|
|
This option allows a kernel builder to override the default choice
|
|
|
|
of CRC32 algorithm. Choose the default ("slice by 8") unless you
|
|
|
|
know that you need one of the others.
|
2012-03-24 07:02:26 +09:00
|
|
|
|
|
|
|
config CRC32_SLICEBY8
|
|
|
|
bool "Slice by 8 bytes"
|
|
|
|
help
|
|
|
|
Calculate checksum 8 bytes at a time with a clever slicing algorithm.
|
|
|
|
This is the fastest algorithm, but comes with a 8KiB lookup table.
|
|
|
|
Most modern processors have enough cache to hold this table without
|
|
|
|
thrashing the cache.
|
|
|
|
|
|
|
|
This is the default implementation choice. Choose this one unless
|
|
|
|
you have a good reason not to.
|
|
|
|
|
|
|
|
config CRC32_SLICEBY4
|
|
|
|
bool "Slice by 4 bytes"
|
|
|
|
help
|
|
|
|
Calculate checksum 4 bytes at a time with a clever slicing algorithm.
|
|
|
|
This is a bit slower than slice by 8, but has a smaller 4KiB lookup
|
|
|
|
table.
|
|
|
|
|
|
|
|
Only choose this option if you know what you are doing.
|
|
|
|
|
|
|
|
config CRC32_SARWATE
|
|
|
|
bool "Sarwate's Algorithm (one byte at a time)"
|
|
|
|
help
|
|
|
|
Calculate checksum a byte at a time using Sarwate's algorithm. This
|
|
|
|
is not particularly fast, but has a small 256 byte lookup table.
|
|
|
|
|
|
|
|
Only choose this option if you know what you are doing.
|
|
|
|
|
|
|
|
config CRC32_BIT
|
|
|
|
bool "Classic Algorithm (one bit at a time)"
|
|
|
|
help
|
|
|
|
Calculate checksum one bit at a time. This is VERY slow, but has
|
|
|
|
no lookup table. This is provided as a debugging option.
|
|
|
|
|
|
|
|
Only choose this option if you are debugging crc32.
|
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
lib: add crc64 calculation routines
Patch series "add crc64 calculation as kernel library", v5.
This patchset adds basic implementation of crc64 calculation as a Linux
kernel library. Since bcache already does crc64 by itself, this patchset
also modifies bcache code to use the new crc64 library routine.
Currently bcache is the only user of crc64 calculation, another potential
user is bcachefs which is on the way to be in mainline kernel. Therefore
it makes sense to make crc64 calculation to be a public library.
bcache uses crc64 as storage checksum, if a change of crc lib routines
results an inconsistent result, the unmatched checksum may make bcache
'think' the on-disk is corrupted, such a change should be avoided or
detected as early as possible. Therefore a patch is being prepared which
adds a crc test framework, to check consistency of different calculations.
This patch (of 2):
Add the re-write crc64 calculation routines for Linux kernel. The CRC64
polynomical arithmetic follows ECMA-182 specification, inspired by CRC
paper of Dr. Ross N. Williams (see
http://www.ross.net/crc/download/crc_v3.txt) and other public domain
implementations.
All the changes work in this way,
- When Linux kernel is built, host program lib/gen_crc64table.c will be
compiled to lib/gen_crc64table and executed.
- The output of gen_crc64table execution is an array called as lookup
table (a.k.a POLY 0x42f0e1eba9ea369) which contain 256 64-bit long
numbers, this table is dumped into header file lib/crc64table.h.
- Then the header file is included by lib/crc64.c for normal 64bit crc
calculation.
- Function declaration of the crc64 calculation routines is placed in
include/linux/crc64.h
Currently bcache is the only user of crc64_be(), another potential user is
bcachefs which is on the way to be in mainline kernel. Therefore it makes
sense to move crc64 calculation into lib/crc64.c as public code.
[colyli@suse.de: fix review comments from v4]
Link: http://lkml.kernel.org/r/20180726053352.2781-2-colyli@suse.de
Link: http://lkml.kernel.org/r/20180718165545.1622-2-colyli@suse.de
Signed-off-by: Coly Li <colyli@suse.de>
Co-developed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Michael Lyle <mlyle@lyle.org>
Cc: Kent Overstreet <kent.overstreet@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Eric Biggers <ebiggers3@gmail.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Noah Massey <noah.massey@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-08-22 13:57:11 +09:00
|
|
|
config CRC64
|
|
|
|
tristate "CRC64 functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC64 functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC64
|
|
|
|
functions require M here.
|
|
|
|
|
2017-06-07 06:08:39 +09:00
|
|
|
config CRC4
|
|
|
|
tristate "CRC4 functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC4 functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC4
|
|
|
|
functions require M here.
|
|
|
|
|
2007-07-17 20:04:03 +09:00
|
|
|
config CRC7
|
|
|
|
tristate "CRC7 functions"
|
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC7 functions, but a module built outside
|
|
|
|
the kernel tree does. Such modules that use library CRC7
|
|
|
|
functions require M here.
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
config LIBCRC32C
|
|
|
|
tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
|
2008-11-13 23:05:13 +09:00
|
|
|
select CRYPTO
|
2008-11-07 16:11:47 +09:00
|
|
|
select CRYPTO_CRC32C
|
2005-04-17 07:20:36 +09:00
|
|
|
help
|
|
|
|
This option is provided for the case where no in-kernel-tree
|
|
|
|
modules require CRC32c functions, but a module built outside the
|
|
|
|
kernel tree does. Such modules that use library CRC32c functions
|
|
|
|
require M here. See Castagnoli93.
|
|
|
|
Module will be libcrc32c.
|
|
|
|
|
2011-05-31 18:22:15 +09:00
|
|
|
config CRC8
|
|
|
|
tristate "CRC8 function"
|
|
|
|
help
|
|
|
|
This option provides CRC8 function. Drivers may select this
|
|
|
|
when they need to do cyclic redundancy check according CRC8
|
|
|
|
algorithm. Module will be called crc8.
|
|
|
|
|
lib: Add xxhash module
Adds xxhash kernel module with xxh32 and xxh64 hashes. xxhash is an
extremely fast non-cryptographic hash algorithm for checksumming.
The zstd compression and decompression modules added in the next patch
require xxhash. I extracted it out from zstd since it is useful on its
own. I copied the code from the upstream XXHash source repository and
translated it into kernel style. I ran benchmarks and tests in the kernel
and tests in userland.
I benchmarked xxhash as a special character device. I ran in four modes,
no-op, xxh32, xxh64, and crc32. The no-op mode simply copies the data to
kernel space and ignores it. The xxh32, xxh64, and crc32 modes compute
hashes on the copied data. I also ran it with four different buffer sizes.
The benchmark file is located in the upstream zstd source repository under
`contrib/linux-kernel/xxhash_test.c` [1].
I ran the benchmarks on a Ubuntu 14.04 VM with 2 cores and 4 GiB of RAM.
The VM is running on a MacBook Pro with a 3.1 GHz Intel Core i7 processor,
16 GB of RAM, and a SSD. I benchmarked using the file `filesystem.squashfs`
from `ubuntu-16.10-desktop-amd64.iso`, which is 1,536,217,088 B large.
Run the following commands for the benchmark:
modprobe xxhash_test
mknod xxhash_test c 245 0
time cp filesystem.squashfs xxhash_test
The time is reported by the time of the userland `cp`.
The GB/s is computed with
1,536,217,008 B / time(buffer size, hash)
which includes the time to copy from userland.
The Normalized GB/s is computed with
1,536,217,088 B / (time(buffer size, hash) - time(buffer size, none)).
| Buffer Size (B) | Hash | Time (s) | GB/s | Adjusted GB/s |
|-----------------|-------|----------|------|---------------|
| 1024 | none | 0.408 | 3.77 | - |
| 1024 | xxh32 | 0.649 | 2.37 | 6.37 |
| 1024 | xxh64 | 0.542 | 2.83 | 11.46 |
| 1024 | crc32 | 1.290 | 1.19 | 1.74 |
| 4096 | none | 0.380 | 4.04 | - |
| 4096 | xxh32 | 0.645 | 2.38 | 5.79 |
| 4096 | xxh64 | 0.500 | 3.07 | 12.80 |
| 4096 | crc32 | 1.168 | 1.32 | 1.95 |
| 8192 | none | 0.351 | 4.38 | - |
| 8192 | xxh32 | 0.614 | 2.50 | 5.84 |
| 8192 | xxh64 | 0.464 | 3.31 | 13.60 |
| 8192 | crc32 | 1.163 | 1.32 | 1.89 |
| 16384 | none | 0.346 | 4.43 | - |
| 16384 | xxh32 | 0.590 | 2.60 | 6.30 |
| 16384 | xxh64 | 0.466 | 3.30 | 12.80 |
| 16384 | crc32 | 1.183 | 1.30 | 1.84 |
Tested in userland using the test-suite in the zstd repo under
`contrib/linux-kernel/test/XXHashUserlandTest.cpp` [2] by mocking the
kernel functions. A line in each branch of every function in `xxhash.c`
was commented out to ensure that the test-suite fails. Additionally
tested while testing zstd and with SMHasher [3].
[1] https://phabricator.intern.facebook.com/P57526246
[2] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/test/XXHashUserlandTest.cpp
[3] https://github.com/aappleby/smhasher
zstd source repository: https://github.com/facebook/zstd
XXHash source repository: https://github.com/cyan4973/xxhash
Signed-off-by: Nick Terrell <terrelln@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
2017-08-05 05:19:17 +09:00
|
|
|
config XXHASH
|
|
|
|
tristate
|
|
|
|
|
2006-09-12 16:04:40 +09:00
|
|
|
config AUDIT_GENERIC
|
|
|
|
bool
|
|
|
|
depends on AUDIT && !AUDIT_ARCH
|
|
|
|
default y
|
|
|
|
|
2014-03-15 14:48:00 +09:00
|
|
|
config AUDIT_ARCH_COMPAT_GENERIC
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
|
|
|
config AUDIT_COMPAT_GENERIC
|
|
|
|
bool
|
|
|
|
depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
|
|
|
|
default y
|
|
|
|
|
2013-11-11 20:20:37 +09:00
|
|
|
config RANDOM32_SELFTEST
|
|
|
|
bool "PRNG perform self test on init"
|
|
|
|
help
|
|
|
|
This option enables the 32 bit PRNG library functions to perform a
|
|
|
|
self test on initialization.
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
#
|
|
|
|
# compression support is select'ed if needed
|
|
|
|
#
|
2015-05-08 02:49:14 +09:00
|
|
|
config 842_COMPRESS
|
2016-01-14 07:24:02 +09:00
|
|
|
select CRC32
|
2015-05-08 02:49:14 +09:00
|
|
|
tristate
|
|
|
|
|
|
|
|
config 842_DECOMPRESS
|
2016-01-14 07:24:02 +09:00
|
|
|
select CRC32
|
2015-05-08 02:49:14 +09:00
|
|
|
tristate
|
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
config ZLIB_INFLATE
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config ZLIB_DEFLATE
|
|
|
|
tristate
|
2015-10-16 07:28:35 +09:00
|
|
|
select BITREVERSE
|
2005-04-17 07:20:36 +09:00
|
|
|
|
2007-07-11 09:22:24 +09:00
|
|
|
config LZO_COMPRESS
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config LZO_DECOMPRESS
|
|
|
|
tristate
|
|
|
|
|
2013-07-09 08:01:49 +09:00
|
|
|
config LZ4_COMPRESS
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config LZ4HC_COMPRESS
|
|
|
|
tristate
|
|
|
|
|
2013-07-09 08:01:46 +09:00
|
|
|
config LZ4_DECOMPRESS
|
|
|
|
tristate
|
|
|
|
|
lib: Add zstd modules
Add zstd compression and decompression kernel modules.
zstd offers a wide varity of compression speed and quality trade-offs.
It can compress at speeds approaching lz4, and quality approaching lzma.
zstd decompressions at speeds more than twice as fast as zlib, and
decompression speed remains roughly the same across all compression levels.
The code was ported from the upstream zstd source repository. The
`linux/zstd.h` header was modified to match linux kernel style.
The cross-platform and allocation code was stripped out. Instead zstd
requires the caller to pass a preallocated workspace. The source files
were clang-formatted [1] to match the Linux Kernel style as much as
possible. Otherwise, the code was unmodified. We would like to avoid
as much further manual modification to the source code as possible, so it
will be easier to keep the kernel zstd up to date.
I benchmarked zstd compression as a special character device. I ran zstd
and zlib compression at several levels, as well as performing no
compression, which measure the time spent copying the data to kernel space.
Data is passed to the compresser 4096 B at a time. The benchmark file is
located in the upstream zstd source repository under
`contrib/linux-kernel/zstd_compress_test.c` [2].
I ran the benchmarks on a Ubuntu 14.04 VM with 2 cores and 4 GiB of RAM.
The VM is running on a MacBook Pro with a 3.1 GHz Intel Core i7 processor,
16 GB of RAM, and a SSD. I benchmarked using `silesia.tar` [3], which is
211,988,480 B large. Run the following commands for the benchmark:
sudo modprobe zstd_compress_test
sudo mknod zstd_compress_test c 245 0
sudo cp silesia.tar zstd_compress_test
The time is reported by the time of the userland `cp`.
The MB/s is computed with
1,536,217,008 B / time(buffer size, hash)
which includes the time to copy from userland.
The Adjusted MB/s is computed with
1,536,217,088 B / (time(buffer size, hash) - time(buffer size, none)).
The memory reported is the amount of memory the compressor requests.
| Method | Size (B) | Time (s) | Ratio | MB/s | Adj MB/s | Mem (MB) |
|----------|----------|----------|-------|---------|----------|----------|
| none | 11988480 | 0.100 | 1 | 2119.88 | - | - |
| zstd -1 | 73645762 | 1.044 | 2.878 | 203.05 | 224.56 | 1.23 |
| zstd -3 | 66988878 | 1.761 | 3.165 | 120.38 | 127.63 | 2.47 |
| zstd -5 | 65001259 | 2.563 | 3.261 | 82.71 | 86.07 | 2.86 |
| zstd -10 | 60165346 | 13.242 | 3.523 | 16.01 | 16.13 | 13.22 |
| zstd -15 | 58009756 | 47.601 | 3.654 | 4.45 | 4.46 | 21.61 |
| zstd -19 | 54014593 | 102.835 | 3.925 | 2.06 | 2.06 | 60.15 |
| zlib -1 | 77260026 | 2.895 | 2.744 | 73.23 | 75.85 | 0.27 |
| zlib -3 | 72972206 | 4.116 | 2.905 | 51.50 | 52.79 | 0.27 |
| zlib -6 | 68190360 | 9.633 | 3.109 | 22.01 | 22.24 | 0.27 |
| zlib -9 | 67613382 | 22.554 | 3.135 | 9.40 | 9.44 | 0.27 |
I benchmarked zstd decompression using the same method on the same machine.
The benchmark file is located in the upstream zstd repo under
`contrib/linux-kernel/zstd_decompress_test.c` [4]. The memory reported is
the amount of memory required to decompress data compressed with the given
compression level. If you know the maximum size of your input, you can
reduce the memory usage of decompression irrespective of the compression
level.
| Method | Time (s) | MB/s | Adjusted MB/s | Memory (MB) |
|----------|----------|---------|---------------|-------------|
| none | 0.025 | 8479.54 | - | - |
| zstd -1 | 0.358 | 592.15 | 636.60 | 0.84 |
| zstd -3 | 0.396 | 535.32 | 571.40 | 1.46 |
| zstd -5 | 0.396 | 535.32 | 571.40 | 1.46 |
| zstd -10 | 0.374 | 566.81 | 607.42 | 2.51 |
| zstd -15 | 0.379 | 559.34 | 598.84 | 4.61 |
| zstd -19 | 0.412 | 514.54 | 547.77 | 8.80 |
| zlib -1 | 0.940 | 225.52 | 231.68 | 0.04 |
| zlib -3 | 0.883 | 240.08 | 247.07 | 0.04 |
| zlib -6 | 0.844 | 251.17 | 258.84 | 0.04 |
| zlib -9 | 0.837 | 253.27 | 287.64 | 0.04 |
Tested in userland using the test-suite in the zstd repo under
`contrib/linux-kernel/test/UserlandTest.cpp` [5] by mocking the kernel
functions. Fuzz tested using libfuzzer [6] with the fuzz harnesses under
`contrib/linux-kernel/test/{RoundTripCrash.c,DecompressCrash.c}` [7] [8]
with ASAN, UBSAN, and MSAN. Additionaly, it was tested while testing the
BtrFS and SquashFS patches coming next.
[1] https://clang.llvm.org/docs/ClangFormat.html
[2] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/zstd_compress_test.c
[3] http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia
[4] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/zstd_decompress_test.c
[5] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/test/UserlandTest.cpp
[6] http://llvm.org/docs/LibFuzzer.html
[7] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/test/RoundTripCrash.c
[8] https://github.com/facebook/zstd/blob/dev/contrib/linux-kernel/test/DecompressCrash.c
zstd source repository: https://github.com/facebook/zstd
Signed-off-by: Nick Terrell <terrelln@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
2017-08-10 11:35:53 +09:00
|
|
|
config ZSTD_COMPRESS
|
|
|
|
select XXHASH
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config ZSTD_DECOMPRESS
|
|
|
|
select XXHASH
|
|
|
|
tristate
|
|
|
|
|
2011-01-13 10:01:22 +09:00
|
|
|
source "lib/xz/Kconfig"
|
|
|
|
|
2009-01-06 06:48:31 +09:00
|
|
|
#
|
|
|
|
# These all provide a common interface (hence the apparent duplication with
|
|
|
|
# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
|
|
|
|
#
|
|
|
|
config DECOMPRESS_GZIP
|
2009-01-07 17:01:43 +09:00
|
|
|
select ZLIB_INFLATE
|
2009-01-06 06:48:31 +09:00
|
|
|
tristate
|
|
|
|
|
|
|
|
config DECOMPRESS_BZIP2
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config DECOMPRESS_LZMA
|
|
|
|
tristate
|
|
|
|
|
decompressors: add boot-time XZ support
This implements the API defined in <linux/decompress/generic.h> which is
used for kernel, initramfs, and initrd decompression. This patch together
with the first patch is enough for XZ-compressed initramfs and initrd;
XZ-compressed kernel will need arch-specific changes.
The buffering requirements described in decompress_unxz.c are stricter
than with gzip, so the relevant changes should be done to the
arch-specific code when adding support for XZ-compressed kernel.
Similarly, the heap size in arch-specific pre-boot code may need to be
increased (30 KiB is enough).
The XZ decompressor needs memmove(), memeq() (memcmp() == 0), and
memzero() (memset(ptr, 0, size)), which aren't available in all
arch-specific pre-boot environments. I'm including simple versions in
decompress_unxz.c, but a cleaner solution would naturally be nicer.
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Alain Knaff <alain@knaff.lu>
Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
Cc: Phillip Lougher <phillip@lougher.demon.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-01-13 10:01:23 +09:00
|
|
|
config DECOMPRESS_XZ
|
|
|
|
select XZ_DEC
|
|
|
|
tristate
|
|
|
|
|
2010-01-09 07:42:46 +09:00
|
|
|
config DECOMPRESS_LZO
|
|
|
|
select LZO_DECOMPRESS
|
|
|
|
tristate
|
|
|
|
|
2013-07-09 08:01:46 +09:00
|
|
|
config DECOMPRESS_LZ4
|
|
|
|
select LZ4_DECOMPRESS
|
|
|
|
tristate
|
|
|
|
|
2005-06-22 09:15:02 +09:00
|
|
|
#
|
|
|
|
# Generic allocator support is selected if needed
|
|
|
|
#
|
|
|
|
config GENERIC_ALLOCATOR
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-06-22 09:15:02 +09:00
|
|
|
|
2005-04-17 07:20:36 +09:00
|
|
|
#
|
|
|
|
# reed solomon support is select'ed if needed
|
|
|
|
#
|
|
|
|
config REED_SOLOMON
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config REED_SOLOMON_ENC8
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-04-17 07:20:36 +09:00
|
|
|
|
|
|
|
config REED_SOLOMON_DEC8
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-04-17 07:20:36 +09:00
|
|
|
|
|
|
|
config REED_SOLOMON_ENC16
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-04-17 07:20:36 +09:00
|
|
|
|
|
|
|
config REED_SOLOMON_DEC16
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-04-17 07:20:36 +09:00
|
|
|
|
lib: add shared BCH ECC library
This is a new software BCH encoding/decoding library, similar to the shared
Reed-Solomon library.
Binary BCH (Bose-Chaudhuri-Hocquenghem) codes are widely used to correct
errors in NAND flash devices requiring more than 1-bit ecc correction; they
are generally better suited for NAND flash than RS codes because NAND bit
errors do not occur in bursts. Latest SLC NAND devices typically require at
least 4-bit ecc protection per 512 bytes block.
This library provides software encoding/decoding, but may also be used with
ASIC/SoC hardware BCH engines to perform error correction. It is being
currently used for this purpose on an OMAP3630 board (4bit/8bit HW BCH). It
has also been used to decode raw dumps of NAND devices with on-die BCH ecc
engines (e.g. Micron 4bit ecc SLC devices).
Latest NAND devices (including SLC) can exhibit high error rates (typically
a dozen or more bitflips per hour during stress tests); in order to
minimize the performance impact of error correction, this library
implements recently developed algorithms for fast polynomial root finding
(see bch.c header for details) instead of the traditional exhaustive Chien
root search; a few performance figures are provided below:
Platform: arm926ejs @ 468 MHz, 32 KiB icache, 16 KiB dcache
BCH ecc : 4-bit per 512 bytes
Encoding average throughput: 250 Mbits/s
Error correction time (compared with Chien search):
average worst average (Chien) worst (Chien)
----------------------------------------------------------
1 bit 8.5 µs 11 µs 200 µs 383 µs
2 bit 9.7 µs 12.5 µs 477 µs 728 µs
3 bit 18.1 µs 20.6 µs 758 µs 1010 µs
4 bit 19.5 µs 23 µs 1028 µs 1280 µs
In the above figures, "worst" is meant in terms of error pattern, not in
terms of cache miss / page faults effects (not taken into account here).
The library has been extensively tested on the following platforms: x86,
x86_64, arm926ejs, omap3630, qemu-ppc64, qemu-mips.
Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2011-03-11 19:05:32 +09:00
|
|
|
#
|
|
|
|
# BCH support is selected if needed
|
|
|
|
#
|
|
|
|
config BCH
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config BCH_CONST_PARAMS
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
lib: add shared BCH ECC library
This is a new software BCH encoding/decoding library, similar to the shared
Reed-Solomon library.
Binary BCH (Bose-Chaudhuri-Hocquenghem) codes are widely used to correct
errors in NAND flash devices requiring more than 1-bit ecc correction; they
are generally better suited for NAND flash than RS codes because NAND bit
errors do not occur in bursts. Latest SLC NAND devices typically require at
least 4-bit ecc protection per 512 bytes block.
This library provides software encoding/decoding, but may also be used with
ASIC/SoC hardware BCH engines to perform error correction. It is being
currently used for this purpose on an OMAP3630 board (4bit/8bit HW BCH). It
has also been used to decode raw dumps of NAND devices with on-die BCH ecc
engines (e.g. Micron 4bit ecc SLC devices).
Latest NAND devices (including SLC) can exhibit high error rates (typically
a dozen or more bitflips per hour during stress tests); in order to
minimize the performance impact of error correction, this library
implements recently developed algorithms for fast polynomial root finding
(see bch.c header for details) instead of the traditional exhaustive Chien
root search; a few performance figures are provided below:
Platform: arm926ejs @ 468 MHz, 32 KiB icache, 16 KiB dcache
BCH ecc : 4-bit per 512 bytes
Encoding average throughput: 250 Mbits/s
Error correction time (compared with Chien search):
average worst average (Chien) worst (Chien)
----------------------------------------------------------
1 bit 8.5 µs 11 µs 200 µs 383 µs
2 bit 9.7 µs 12.5 µs 477 µs 728 µs
3 bit 18.1 µs 20.6 µs 758 µs 1010 µs
4 bit 19.5 µs 23 µs 1028 µs 1280 µs
In the above figures, "worst" is meant in terms of error pattern, not in
terms of cache miss / page faults effects (not taken into account here).
The library has been extensively tested on the following platforms: x86,
x86_64, arm926ejs, omap3630, qemu-ppc64, qemu-mips.
Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2011-03-11 19:05:32 +09:00
|
|
|
help
|
|
|
|
Drivers may select this option to force specific constant
|
|
|
|
values for parameters 'm' (Galois field order) and 't'
|
|
|
|
(error correction capability). Those specific values must
|
|
|
|
be set by declaring default values for symbols BCH_CONST_M
|
|
|
|
and BCH_CONST_T.
|
|
|
|
Doing so will enable extra compiler optimizations,
|
|
|
|
improving encoding and decoding performance up to 2x for
|
|
|
|
usual (m,t) values (typically such that m*t < 200).
|
|
|
|
When this option is selected, the BCH library supports
|
|
|
|
only a single (m,t) configuration. This is mainly useful
|
|
|
|
for NAND flash board drivers requiring known, fixed BCH
|
|
|
|
parameters.
|
|
|
|
|
|
|
|
config BCH_CONST_M
|
|
|
|
int
|
|
|
|
range 5 15
|
|
|
|
help
|
|
|
|
Constant value for Galois field order 'm'. If 'k' is the
|
|
|
|
number of data bits to protect, 'm' should be chosen such
|
|
|
|
that (k + m*t) <= 2**m - 1.
|
|
|
|
Drivers should declare a default value for this symbol if
|
|
|
|
they select option BCH_CONST_PARAMS.
|
|
|
|
|
|
|
|
config BCH_CONST_T
|
|
|
|
int
|
|
|
|
help
|
|
|
|
Constant value for error correction capability in bits 't'.
|
|
|
|
Drivers should declare a default value for this symbol if
|
|
|
|
they select option BCH_CONST_PARAMS.
|
|
|
|
|
2005-06-25 09:39:03 +09:00
|
|
|
#
|
|
|
|
# Textsearch support is select'ed if needed
|
|
|
|
#
|
2005-06-24 12:49:30 +09:00
|
|
|
config TEXTSEARCH
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2005-04-17 07:20:36 +09:00
|
|
|
|
[LIB]: Knuth-Morris-Pratt textsearch algorithm
Implements a linear-time string-matching algorithm due to Knuth,
Morris, and Pratt [1]. Their algorithm avoids the explicit
computation of the transition function DELTA altogether. Its
matching time is O(n), for n being length(text), using just an
auxiliary function PI[1..m], for m being length(pattern),
precomputed from the pattern in time O(m). The array PI allows
the transition function DELTA to be computed efficiently
"on the fly" as needed. Roughly speaking, for any state
"q" = 0,1,...,m and any character "a" in SIGMA, the value
PI["q"] contains the information that is independent of "a" and
is needed to compute DELTA("q", "a") [2]. Since the array PI
has only m entries, whereas DELTA has O(m|SIGMA|) entries, we
save a factor of |SIGMA| in the preprocessing time by computing
PI rather than DELTA.
[1] Cormen, Leiserson, Rivest, Stein
Introdcution to Algorithms, 2nd Edition, MIT Press
[2] See finite automation theory
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-06-24 12:58:37 +09:00
|
|
|
config TEXTSEARCH_KMP
|
2005-06-25 09:39:03 +09:00
|
|
|
tristate
|
[LIB]: Knuth-Morris-Pratt textsearch algorithm
Implements a linear-time string-matching algorithm due to Knuth,
Morris, and Pratt [1]. Their algorithm avoids the explicit
computation of the transition function DELTA altogether. Its
matching time is O(n), for n being length(text), using just an
auxiliary function PI[1..m], for m being length(pattern),
precomputed from the pattern in time O(m). The array PI allows
the transition function DELTA to be computed efficiently
"on the fly" as needed. Roughly speaking, for any state
"q" = 0,1,...,m and any character "a" in SIGMA, the value
PI["q"] contains the information that is independent of "a" and
is needed to compute DELTA("q", "a") [2]. Since the array PI
has only m entries, whereas DELTA has O(m|SIGMA|) entries, we
save a factor of |SIGMA| in the preprocessing time by computing
PI rather than DELTA.
[1] Cormen, Leiserson, Rivest, Stein
Introdcution to Algorithms, 2nd Edition, MIT Press
[2] See finite automation theory
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-06-24 12:58:37 +09:00
|
|
|
|
2005-08-26 08:12:22 +09:00
|
|
|
config TEXTSEARCH_BM
|
2005-08-26 08:23:11 +09:00
|
|
|
tristate
|
2005-08-26 08:12:22 +09:00
|
|
|
|
2005-06-24 12:59:16 +09:00
|
|
|
config TEXTSEARCH_FSM
|
2005-06-25 09:39:03 +09:00
|
|
|
tristate
|
2005-06-24 12:59:16 +09:00
|
|
|
|
2009-11-21 04:13:39 +09:00
|
|
|
config BTREE
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2009-11-21 04:13:39 +09:00
|
|
|
|
2014-03-17 21:21:54 +09:00
|
|
|
config INTERVAL_TREE
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2014-03-17 21:21:54 +09:00
|
|
|
help
|
|
|
|
Simple, embeddable, interval-tree. Can find the start of an
|
|
|
|
overlapping range in log(n) time and then iterate over all
|
|
|
|
overlapping nodes. The algorithm is implemented as an
|
|
|
|
augmented rbtree.
|
|
|
|
|
|
|
|
See:
|
|
|
|
|
|
|
|
Documentation/rbtree.txt
|
|
|
|
|
|
|
|
for more information.
|
|
|
|
|
2017-11-04 12:09:45 +09:00
|
|
|
config XARRAY_MULTI
|
2016-05-21 09:01:54 +09:00
|
|
|
bool
|
2017-11-04 12:09:45 +09:00
|
|
|
help
|
|
|
|
Support entries which occupy multiple consecutive indices in the
|
|
|
|
XArray.
|
2016-05-21 09:01:54 +09:00
|
|
|
|
Add a generic associative array implementation.
Add a generic associative array implementation that can be used as the
container for keyrings, thereby massively increasing the capacity available
whilst also speeding up searching in keyrings that contain a lot of keys.
This may also be useful in FS-Cache for tracking cookies.
Documentation is added into Documentation/associative_array.txt
Some of the properties of the implementation are:
(1) Objects are opaque pointers. The implementation does not care where they
point (if anywhere) or what they point to (if anything).
[!] NOTE: Pointers to objects _must_ be zero in the two least significant
bits.
(2) Objects do not need to contain linkage blocks for use by the array. This
permits an object to be located in multiple arrays simultaneously.
Rather, the array is made up of metadata blocks that point to objects.
(3) Objects are labelled as being one of two types (the type is a bool value).
This information is stored in the array, but has no consequence to the
array itself or its algorithms.
(4) Objects require index keys to locate them within the array.
(5) Index keys must be unique. Inserting an object with the same key as one
already in the array will replace the old object.
(6) Index keys can be of any length and can be of different lengths.
(7) Index keys should encode the length early on, before any variation due to
length is seen.
(8) Index keys can include a hash to scatter objects throughout the array.
(9) The array can iterated over. The objects will not necessarily come out in
key order.
(10) The array can be iterated whilst it is being modified, provided the RCU
readlock is being held by the iterator. Note, however, under these
circumstances, some objects may be seen more than once. If this is a
problem, the iterator should lock against modification. Objects will not
be missed, however, unless deleted.
(11) Objects in the array can be looked up by means of their index key.
(12) Objects can be looked up whilst the array is being modified, provided the
RCU readlock is being held by the thread doing the look up.
The implementation uses a tree of 16-pointer nodes internally that are indexed
on each level by nibbles from the index key. To improve memory efficiency,
shortcuts can be emplaced to skip over what would otherwise be a series of
single-occupancy nodes. Further, nodes pack leaf object pointers into spare
space in the node rather than making an extra branch until as such time an
object needs to be added to a full node.
Signed-off-by: David Howells <dhowells@redhat.com>
2013-09-24 18:35:17 +09:00
|
|
|
config ASSOCIATIVE_ARRAY
|
|
|
|
bool
|
|
|
|
help
|
|
|
|
Generic associative array. Can be searched and iterated over whilst
|
|
|
|
it is being modified. It is also reasonably quick to search and
|
|
|
|
modify. The algorithms are non-recursive, and the trees are highly
|
|
|
|
capacious.
|
|
|
|
|
|
|
|
See:
|
|
|
|
|
2018-05-09 03:14:57 +09:00
|
|
|
Documentation/core-api/assoc_array.rst
|
Add a generic associative array implementation.
Add a generic associative array implementation that can be used as the
container for keyrings, thereby massively increasing the capacity available
whilst also speeding up searching in keyrings that contain a lot of keys.
This may also be useful in FS-Cache for tracking cookies.
Documentation is added into Documentation/associative_array.txt
Some of the properties of the implementation are:
(1) Objects are opaque pointers. The implementation does not care where they
point (if anywhere) or what they point to (if anything).
[!] NOTE: Pointers to objects _must_ be zero in the two least significant
bits.
(2) Objects do not need to contain linkage blocks for use by the array. This
permits an object to be located in multiple arrays simultaneously.
Rather, the array is made up of metadata blocks that point to objects.
(3) Objects are labelled as being one of two types (the type is a bool value).
This information is stored in the array, but has no consequence to the
array itself or its algorithms.
(4) Objects require index keys to locate them within the array.
(5) Index keys must be unique. Inserting an object with the same key as one
already in the array will replace the old object.
(6) Index keys can be of any length and can be of different lengths.
(7) Index keys should encode the length early on, before any variation due to
length is seen.
(8) Index keys can include a hash to scatter objects throughout the array.
(9) The array can iterated over. The objects will not necessarily come out in
key order.
(10) The array can be iterated whilst it is being modified, provided the RCU
readlock is being held by the iterator. Note, however, under these
circumstances, some objects may be seen more than once. If this is a
problem, the iterator should lock against modification. Objects will not
be missed, however, unless deleted.
(11) Objects in the array can be looked up by means of their index key.
(12) Objects can be looked up whilst the array is being modified, provided the
RCU readlock is being held by the thread doing the look up.
The implementation uses a tree of 16-pointer nodes internally that are indexed
on each level by nibbles from the index key. To improve memory efficiency,
shortcuts can be emplaced to skip over what would otherwise be a series of
single-occupancy nodes. Further, nodes pack leaf object pointers into spare
space in the node rather than making an extra branch until as such time an
object needs to be added to a full node.
Signed-off-by: David Howells <dhowells@redhat.com>
2013-09-24 18:35:17 +09:00
|
|
|
|
|
|
|
for more information.
|
|
|
|
|
2007-02-12 00:41:31 +09:00
|
|
|
config HAS_IOMEM
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2007-02-12 00:41:31 +09:00
|
|
|
depends on !NO_IOMEM
|
|
|
|
default y
|
|
|
|
|
2014-04-08 07:39:19 +09:00
|
|
|
config HAS_IOPORT_MAP
|
2014-12-21 05:41:11 +09:00
|
|
|
bool
|
2014-04-08 07:39:19 +09:00
|
|
|
depends on HAS_IOMEM && !NO_IOPORT_MAP
|
2006-12-13 17:35:00 +09:00
|
|
|
default y
|
|
|
|
|
2018-06-13 02:01:45 +09:00
|
|
|
source "kernel/dma/Kconfig"
|
2007-05-07 06:49:09 +09:00
|
|
|
|
2018-01-06 01:26:46 +09:00
|
|
|
config SGL_ALLOC
|
|
|
|
bool
|
|
|
|
default n
|
|
|
|
|
2018-04-03 22:47:59 +09:00
|
|
|
config IOMMU_HELPER
|
|
|
|
bool
|
|
|
|
|
2007-08-23 06:01:36 +09:00
|
|
|
config CHECK_SIGNATURE
|
|
|
|
bool
|
|
|
|
|
2008-12-13 19:50:27 +09:00
|
|
|
config CPUMASK_OFFSTACK
|
|
|
|
bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
|
|
|
|
help
|
|
|
|
Use dynamic allocation for cpumask_var_t, instead of putting
|
|
|
|
them on the stack. This is a bit more expensive, but avoids
|
|
|
|
stack overflow.
|
|
|
|
|
2011-01-19 20:03:25 +09:00
|
|
|
config CPU_RMAP
|
|
|
|
bool
|
|
|
|
depends on SMP
|
|
|
|
|
dql: Dynamic queue limits
Implementation of dynamic queue limits (dql). This is a libary which
allows a queue limit to be dynamically managed. The goal of dql is
to set the queue limit, number of objects to the queue, to be minimized
without allowing the queue to be starved.
dql would be used with a queue which has these properties:
1) Objects are queued up to some limit which can be expressed as a
count of objects.
2) Periodically a completion process executes which retires consumed
objects.
3) Starvation occurs when limit has been reached, all queued data has
actually been consumed but completion processing has not yet run,
so queuing new data is blocked.
4) Minimizing the amount of queued data is desirable.
A canonical example of such a queue would be a NIC HW transmit queue.
The queue limit is dynamic, it will increase or decrease over time
depending on the workload. The queue limit is recalculated each time
completion processing is done. Increases occur when the queue is
starved and can exponentially increase over successive intervals.
Decreases occur when more data is being maintained in the queue than
needed to prevent starvation. The number of extra objects, or "slack",
is measured over successive intervals, and to avoid hysteresis the
limit is only reduced by the miminum slack seen over a configurable
time period.
dql API provides routines to manage the queue:
- dql_init is called to intialize the dql structure
- dql_reset is called to reset dynamic values
- dql_queued called when objects are being enqueued
- dql_avail returns availability in the queue
- dql_completed is called when objects have be consumed in the queue
Configuration consists of:
- max_limit, maximum limit
- min_limit, minimum limit
- slack_hold_time, time to measure instances of slack before reducing
queue limit
Signed-off-by: Tom Herbert <therbert@google.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-11-29 01:32:35 +09:00
|
|
|
config DQL
|
|
|
|
bool
|
|
|
|
|
2014-08-07 08:09:23 +09:00
|
|
|
config GLOB
|
|
|
|
bool
|
|
|
|
# This actually supports modular compilation, but the module overhead
|
|
|
|
# is ridiculous for the amount of code involved. Until an out-of-tree
|
|
|
|
# driver asks for it, we'll just link it directly it into the kernel
|
|
|
|
# when required. Since we're ignoring out-of-tree users, there's also
|
|
|
|
# no need bother prompting for a manual decision:
|
|
|
|
# prompt "glob_match() function"
|
|
|
|
help
|
|
|
|
This option provides a glob_match function for performing
|
|
|
|
simple text pattern matching. It originated in the ATA code
|
|
|
|
to blacklist particular drive models, but other device drivers
|
|
|
|
may need similar functionality.
|
|
|
|
|
|
|
|
All drivers in the Linux kernel tree that require this function
|
|
|
|
should automatically select this option. Say N unless you
|
|
|
|
are compiling an out-of tree driver which tells you that it
|
|
|
|
depends on this.
|
|
|
|
|
2014-08-07 08:09:25 +09:00
|
|
|
config GLOB_SELFTEST
|
2017-02-25 08:00:52 +09:00
|
|
|
tristate "glob self-test on init"
|
2014-08-07 08:09:25 +09:00
|
|
|
depends on GLOB
|
|
|
|
help
|
|
|
|
This option enables a simple self-test of the glob_match
|
|
|
|
function on startup. It is primarily useful for people
|
|
|
|
working on the code to ensure they haven't introduced any
|
|
|
|
regressions.
|
|
|
|
|
|
|
|
It only adds a little bit of code and slows kernel boot (or
|
|
|
|
module load) by a small amount, so you're welcome to play with
|
|
|
|
it, but you probably don't need it.
|
|
|
|
|
2009-03-04 15:53:30 +09:00
|
|
|
#
|
|
|
|
# Netlink attribute parsing support is select'ed if needed
|
|
|
|
#
|
|
|
|
config NLATTR
|
|
|
|
bool
|
|
|
|
|
2009-06-13 06:10:05 +09:00
|
|
|
#
|
|
|
|
# Generic 64-bit atomic support is selected if needed
|
|
|
|
#
|
|
|
|
config GENERIC_ATOMIC64
|
|
|
|
bool
|
|
|
|
|
2009-09-26 08:07:19 +09:00
|
|
|
config LRU_CACHE
|
|
|
|
tristate
|
|
|
|
|
2012-02-02 07:17:54 +09:00
|
|
|
config CLZ_TAB
|
|
|
|
bool
|
|
|
|
|
2015-11-10 22:56:14 +09:00
|
|
|
config IRQ_POLL
|
|
|
|
bool "IRQ polling library"
|
|
|
|
help
|
|
|
|
Helper library to poll interrupt mitigation using polling.
|
|
|
|
|
2011-08-31 20:05:16 +09:00
|
|
|
config MPILIB
|
2012-01-18 00:12:06 +09:00
|
|
|
tristate
|
2012-02-02 07:17:54 +09:00
|
|
|
select CLZ_TAB
|
2011-08-31 20:05:16 +09:00
|
|
|
help
|
|
|
|
Multiprecision maths library from GnuPG.
|
|
|
|
It is used to implement RSA digital signature verification,
|
|
|
|
which is used by IMA/EVM digital signature extension.
|
|
|
|
|
2012-01-18 00:12:03 +09:00
|
|
|
config SIGNATURE
|
2012-01-18 00:12:06 +09:00
|
|
|
tristate
|
2014-07-12 00:59:45 +09:00
|
|
|
depends on KEYS
|
|
|
|
select CRYPTO
|
2012-01-18 00:12:04 +09:00
|
|
|
select CRYPTO_SHA1
|
2011-10-14 21:25:16 +09:00
|
|
|
select MPILIB
|
|
|
|
help
|
|
|
|
Digital signature verification. Currently only RSA is supported.
|
|
|
|
Implementation is done using GnuPG MPI library
|
|
|
|
|
2019-01-11 00:33:17 +09:00
|
|
|
config DIMLIB
|
2019-09-25 01:02:59 +09:00
|
|
|
bool
|
2019-01-11 00:33:17 +09:00
|
|
|
help
|
|
|
|
Dynamic Interrupt Moderation library.
|
2019-09-26 09:20:42 +09:00
|
|
|
Implements an algorithm for dynamically changing CQ moderation values
|
2019-01-11 00:33:17 +09:00
|
|
|
according to run time performance.
|
|
|
|
|
2012-07-06 01:12:38 +09:00
|
|
|
#
|
|
|
|
# libfdt files, only selected if needed.
|
|
|
|
#
|
|
|
|
config LIBFDT
|
|
|
|
bool
|
|
|
|
|
2012-09-22 07:30:46 +09:00
|
|
|
config OID_REGISTRY
|
|
|
|
tristate
|
|
|
|
help
|
|
|
|
Enable fast lookup object identifier registry.
|
|
|
|
|
2013-04-16 05:09:45 +09:00
|
|
|
config UCS2_STRING
|
|
|
|
tristate
|
|
|
|
|
2019-06-21 18:52:29 +09:00
|
|
|
#
|
|
|
|
# generic vdso
|
|
|
|
#
|
|
|
|
source "lib/vdso/Kconfig"
|
|
|
|
|
2013-06-09 18:46:43 +09:00
|
|
|
source "lib/fonts/Kconfig"
|
|
|
|
|
lib: scatterlist: add sg splitting function
Sometimes a scatter-gather has to be split into several chunks, or sub
scatter lists. This happens for example if a scatter list will be
handled by multiple DMA channels, each one filling a part of it.
A concrete example comes with the media V4L2 API, where the scatter list
is allocated from userspace to hold an image, regardless of the
knowledge of how many DMAs will fill it :
- in a simple RGB565 case, one DMA will pump data from the camera ISP
to memory
- in the trickier YUV422 case, 3 DMAs will pump data from the camera
ISP pipes, one for pipe Y, one for pipe U and one for pipe V
For these cases, it is necessary to split the original scatter list into
multiple scatter lists, which is the purpose of this patch.
The guarantees that are required for this patch are :
- the intersection of spans of any couple of resulting scatter lists is
empty.
- the union of spans of all resulting scatter lists is a subrange of
the span of the original scatter list.
- streaming DMA API operations (mapping, unmapping) should not happen
both on both the resulting and the original scatter list. It's either
the first or the later ones.
- the caller is reponsible to call kfree() on the resulting
scatterlists.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-08-08 17:44:10 +09:00
|
|
|
config SG_SPLIT
|
|
|
|
def_bool n
|
|
|
|
help
|
2015-09-04 19:45:05 +09:00
|
|
|
Provides a helper to split scatterlists into chunks, each chunk being
|
|
|
|
a scatterlist. This should be selected by a driver or an API which
|
|
|
|
whishes to split a scatterlist amongst multiple DMA channels.
|
lib: scatterlist: add sg splitting function
Sometimes a scatter-gather has to be split into several chunks, or sub
scatter lists. This happens for example if a scatter list will be
handled by multiple DMA channels, each one filling a part of it.
A concrete example comes with the media V4L2 API, where the scatter list
is allocated from userspace to hold an image, regardless of the
knowledge of how many DMAs will fill it :
- in a simple RGB565 case, one DMA will pump data from the camera ISP
to memory
- in the trickier YUV422 case, 3 DMAs will pump data from the camera
ISP pipes, one for pipe Y, one for pipe U and one for pipe V
For these cases, it is necessary to split the original scatter list into
multiple scatter lists, which is the purpose of this patch.
The guarantees that are required for this patch are :
- the intersection of spans of any couple of resulting scatter lists is
empty.
- the union of spans of all resulting scatter lists is a subrange of
the span of the original scatter list.
- streaming DMA API operations (mapping, unmapping) should not happen
both on both the resulting and the original scatter list. It's either
the first or the later ones.
- the caller is reponsible to call kfree() on the resulting
scatterlists.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-08-08 17:44:10 +09:00
|
|
|
|
2016-04-05 06:48:11 +09:00
|
|
|
config SG_POOL
|
|
|
|
def_bool n
|
|
|
|
help
|
|
|
|
Provides a helper to allocate chained scatterlists. This should be
|
|
|
|
selected by a driver or an API which whishes to allocate chained
|
|
|
|
scatterlist.
|
|
|
|
|
2014-08-09 06:23:25 +09:00
|
|
|
#
|
|
|
|
# sg chaining option
|
|
|
|
#
|
|
|
|
|
2018-11-09 17:51:00 +09:00
|
|
|
config ARCH_NO_SG_CHAIN
|
2014-08-09 06:23:25 +09:00
|
|
|
def_bool n
|
|
|
|
|
2015-06-25 16:08:39 +09:00
|
|
|
config ARCH_HAS_PMEM_API
|
|
|
|
bool
|
|
|
|
|
2019-04-24 01:38:08 +09:00
|
|
|
# use memcpy to implement user copies for nommu architectures
|
|
|
|
config UACCESS_MEMCPY
|
|
|
|
bool
|
|
|
|
|
2017-05-30 04:22:50 +09:00
|
|
|
config ARCH_HAS_UACCESS_FLUSHCACHE
|
|
|
|
bool
|
|
|
|
|
2018-05-23 15:17:03 +09:00
|
|
|
config ARCH_HAS_UACCESS_MCSAFE
|
|
|
|
bool
|
|
|
|
|
2019-04-25 18:45:21 +09:00
|
|
|
# Temporary. Goes away when all archs are cleaned up
|
|
|
|
config ARCH_STACKWALK
|
|
|
|
bool
|
|
|
|
|
2016-03-26 06:22:08 +09:00
|
|
|
config STACKDEPOT
|
|
|
|
bool
|
|
|
|
select STACKTRACE
|
|
|
|
|
2018-06-07 15:14:53 +09:00
|
|
|
config STACK_HASH_ORDER_SHIFT
|
|
|
|
int "stack depot hash size (12 => 4KB, 20 => 1024KB)"
|
|
|
|
range 12 20
|
|
|
|
default 20
|
|
|
|
depends on STACKDEPOT
|
|
|
|
help
|
|
|
|
Select the hash size as a power of 2 for the stackdepot hash table.
|
|
|
|
Choose a lower value to reduce the memory impact.
|
|
|
|
|
2016-09-17 23:38:44 +09:00
|
|
|
config SBITMAP
|
|
|
|
bool
|
|
|
|
|
2017-02-03 18:29:06 +09:00
|
|
|
config PARMAN
|
2017-02-24 19:25:55 +09:00
|
|
|
tristate "parman" if COMPILE_TEST
|
2017-02-03 18:29:06 +09:00
|
|
|
|
2019-09-10 06:54:21 +09:00
|
|
|
config OBJAGG
|
|
|
|
tristate "objagg" if COMPILE_TEST
|
|
|
|
|
2017-09-09 08:13:52 +09:00
|
|
|
config STRING_SELFTEST
|
2017-11-18 08:27:56 +09:00
|
|
|
tristate "Test string functions"
|
2017-09-09 08:13:52 +09:00
|
|
|
|
2005-06-24 12:49:30 +09:00
|
|
|
endmenu
|
2017-05-24 02:28:26 +09:00
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_ASHLDI3
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_ASHRDI3
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_LSHRDI3
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_MULDI3
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_CMPDI2
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|
|
|
|
|
2018-04-11 16:50:17 +09:00
|
|
|
config GENERIC_LIB_UCMPDI2
|
2017-05-24 02:28:26 +09:00
|
|
|
bool
|