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