xref: /OK3568_Linux_fs/kernel/drivers/mtd/ubi/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyunmenuconfig MTD_UBI
3*4882a593Smuzhiyun	tristate "Enable UBI - Unsorted block images"
4*4882a593Smuzhiyun	select CRC32
5*4882a593Smuzhiyun	help
6*4882a593Smuzhiyun	  UBI is a software layer above MTD layer which admits use of LVM-like
7*4882a593Smuzhiyun	  logical volumes on top of MTD devices, hides some complexities of
8*4882a593Smuzhiyun	  flash chips like wear and bad blocks and provides some other useful
9*4882a593Smuzhiyun	  capabilities. Please, consult the MTD web site for more details
10*4882a593Smuzhiyun	  (www.linux-mtd.infradead.org).
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunif MTD_UBI
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunconfig MTD_UBI_WL_THRESHOLD
15*4882a593Smuzhiyun	int "UBI wear-leveling threshold"
16*4882a593Smuzhiyun	default 4096
17*4882a593Smuzhiyun	range 2 65536
18*4882a593Smuzhiyun	help
19*4882a593Smuzhiyun	  This parameter defines the maximum difference between the highest
20*4882a593Smuzhiyun	  erase counter value and the lowest erase counter value of eraseblocks
21*4882a593Smuzhiyun	  of UBI devices. When this threshold is exceeded, UBI starts performing
22*4882a593Smuzhiyun	  wear leveling by means of moving data from eraseblock with low erase
23*4882a593Smuzhiyun	  counter to eraseblocks with high erase counter.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun	  The default value should be OK for SLC NAND flashes, NOR flashes and
26*4882a593Smuzhiyun	  other flashes which have eraseblock life-cycle 100000 or more.
27*4882a593Smuzhiyun	  However, in case of MLC NAND flashes which typically have eraseblock
28*4882a593Smuzhiyun	  life-cycle less than 10000, the threshold should be lessened (e.g.,
29*4882a593Smuzhiyun	  to 128 or 256, although it does not have to be power of 2).
30*4882a593Smuzhiyun
31*4882a593Smuzhiyunconfig MTD_UBI_BEB_LIMIT
32*4882a593Smuzhiyun	int "Maximum expected bad eraseblock count per 1024 eraseblocks"
33*4882a593Smuzhiyun	default 20
34*4882a593Smuzhiyun	range 0 768
35*4882a593Smuzhiyun	help
36*4882a593Smuzhiyun	  This option specifies the maximum bad physical eraseblocks UBI
37*4882a593Smuzhiyun	  expects on the MTD device (per 1024 eraseblocks). If the underlying
38*4882a593Smuzhiyun	  flash does not admit of bad eraseblocks (e.g. NOR flash), this value
39*4882a593Smuzhiyun	  is ignored.
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	  NAND datasheets often specify the minimum and maximum NVM (Number of
42*4882a593Smuzhiyun	  Valid Blocks) for the flashes' endurance lifetime. The maximum
43*4882a593Smuzhiyun	  expected bad eraseblocks per 1024 eraseblocks then can be calculated
44*4882a593Smuzhiyun	  as "1024 * (1 - MinNVB / MaxNVB)", which gives 20 for most NANDs
45*4882a593Smuzhiyun	  (MaxNVB is basically the total count of eraseblocks on the chip).
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun	  To put it differently, if this value is 20, UBI will try to reserve
48*4882a593Smuzhiyun	  about 1.9% of physical eraseblocks for bad blocks handling. And that
49*4882a593Smuzhiyun	  will be 1.9% of eraseblocks on the entire NAND chip, not just the MTD
50*4882a593Smuzhiyun	  partition UBI attaches. This means that if you have, say, a NAND
51*4882a593Smuzhiyun	  flash chip admits maximum 40 bad eraseblocks, and it is split on two
52*4882a593Smuzhiyun	  MTD partitions of the same size, UBI will reserve 40 eraseblocks when
53*4882a593Smuzhiyun	  attaching a partition.
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	  This option can be overridden by the "mtd=" UBI module parameter or
56*4882a593Smuzhiyun	  by the "attach" ioctl.
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun	  Leave the default value if unsure.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunconfig MTD_UBI_FASTMAP
61*4882a593Smuzhiyun	bool "UBI Fastmap (Experimental feature)"
62*4882a593Smuzhiyun	default n
63*4882a593Smuzhiyun	help
64*4882a593Smuzhiyun	   Important: this feature is experimental so far and the on-flash
65*4882a593Smuzhiyun	   format for fastmap may change in the next kernel versions
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun	   Fastmap is a mechanism which allows attaching an UBI device
68*4882a593Smuzhiyun	   in nearly constant time. Instead of scanning the whole MTD device it
69*4882a593Smuzhiyun	   only has to locate a checkpoint (called fastmap) on the device.
70*4882a593Smuzhiyun	   The on-flash fastmap contains all information needed to attach
71*4882a593Smuzhiyun	   the device. Using fastmap makes only sense on large devices where
72*4882a593Smuzhiyun	   attaching by scanning takes long. UBI will not automatically install
73*4882a593Smuzhiyun	   a fastmap on old images, but you can set the UBI module parameter
74*4882a593Smuzhiyun	   fm_autoconvert to 1 if you want so. Please note that fastmap-enabled
75*4882a593Smuzhiyun	   images are still usable with UBI implementations without
76*4882a593Smuzhiyun	   fastmap support. On typical flash devices the whole fastmap fits
77*4882a593Smuzhiyun	   into one PEB. UBI will reserve PEBs to hold two fastmaps.
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun	   If in doubt, say "N".
80*4882a593Smuzhiyun
81*4882a593Smuzhiyunconfig MTD_UBI_GLUEBI
82*4882a593Smuzhiyun	tristate "MTD devices emulation driver (gluebi)"
83*4882a593Smuzhiyun	help
84*4882a593Smuzhiyun	   This option enables gluebi - an additional driver which emulates MTD
85*4882a593Smuzhiyun	   devices on top of UBI volumes: for each UBI volumes an MTD device is
86*4882a593Smuzhiyun	   created, and all I/O to this MTD device is redirected to the UBI
87*4882a593Smuzhiyun	   volume. This is handy to make MTD-oriented software (like JFFS2)
88*4882a593Smuzhiyun	   work on top of UBI. Do not enable this unless you use legacy
89*4882a593Smuzhiyun	   software.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunconfig MTD_UBI_BLOCK
92*4882a593Smuzhiyun	bool "Read-only block devices on top of UBI volumes"
93*4882a593Smuzhiyun	default n
94*4882a593Smuzhiyun	depends on BLOCK
95*4882a593Smuzhiyun	help
96*4882a593Smuzhiyun	   This option enables read-only UBI block devices support. UBI block
97*4882a593Smuzhiyun	   devices will be layered on top of UBI volumes, which means that the
98*4882a593Smuzhiyun	   UBI driver will transparently handle things like bad eraseblocks and
99*4882a593Smuzhiyun	   bit-flips. You can put any block-oriented file system on top of UBI
100*4882a593Smuzhiyun	   volumes in read-only mode (e.g., ext4), but it is probably most
101*4882a593Smuzhiyun	   practical for read-only file systems, like squashfs.
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun	   When selected, this feature will be built in the UBI driver.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun	   If in doubt, say "N".
106*4882a593Smuzhiyun
107*4882a593Smuzhiyunendif # MTD_UBI
108