mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 22:02:28 +00:00
edbc4540e0
The drivers' _read() method, absent an error, returns a non-negative integer indicating the maximum number of bit errors that were corrected in any one region comprising an ecc step. MTD returns -EUCLEAN if this is >= bitflip_threshold, 0 otherwise. If bitflip_threshold is zero, the comparison is not made since these devices lack ECC and always return zero in the non-error case (thanks Brian)¹. Note that this is a subtle change to the driver interface. This and the preceding patches in this set were tested with ubi on top of the nandsim and docg4 devices, running the ubi test io_basic from mtd-utils. ¹ http://lists.infradead.org/pipermail/linux-mtd/2012-March/040468.html Signed-off-by: Mike Dunn <mikedunn@newsguy.com> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Acked-by: Brian Norris <computersforpeace@gmail.com> Ivan Djelic <ivan.djelic@parrot.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
177 lines
6.1 KiB
Plaintext
177 lines
6.1 KiB
Plaintext
What: /sys/class/mtd/
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
The mtd/ class subdirectory belongs to the MTD subsystem
|
|
(MTD core).
|
|
|
|
What: /sys/class/mtd/mtdX/
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
The /sys/class/mtd/mtd{0,1,2,3,...} directories correspond
|
|
to each /dev/mtdX character device. These may represent
|
|
physical/simulated flash devices, partitions on a flash
|
|
device, or concatenated flash devices. They exist regardless
|
|
of whether CONFIG_MTD_CHAR is actually enabled.
|
|
|
|
What: /sys/class/mtd/mtdXro/
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
These directories provide the corresponding read-only device
|
|
nodes for /sys/class/mtd/mtdX/ . They are only created
|
|
(for the benefit of udev) if CONFIG_MTD_CHAR is enabled.
|
|
|
|
What: /sys/class/mtd/mtdX/dev
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Major and minor numbers of the character device corresponding
|
|
to this MTD device (in <major>:<minor> format). This is the
|
|
read-write device so <minor> will be even.
|
|
|
|
What: /sys/class/mtd/mtdXro/dev
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Major and minor numbers of the character device corresponding
|
|
to the read-only variant of thie MTD device (in
|
|
<major>:<minor> format). In this case <minor> will be odd.
|
|
|
|
What: /sys/class/mtd/mtdX/erasesize
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
"Major" erase size for the device. If numeraseregions is
|
|
zero, this is the eraseblock size for the entire device.
|
|
Otherwise, the MEMGETREGIONCOUNT/MEMGETREGIONINFO ioctls
|
|
can be used to determine the actual eraseblock layout.
|
|
|
|
What: /sys/class/mtd/mtdX/flags
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
A hexadecimal value representing the device flags, ORed
|
|
together:
|
|
|
|
0x0400: MTD_WRITEABLE - device is writable
|
|
0x0800: MTD_BIT_WRITEABLE - single bits can be flipped
|
|
0x1000: MTD_NO_ERASE - no erase necessary
|
|
0x2000: MTD_POWERUP_LOCK - always locked after reset
|
|
|
|
What: /sys/class/mtd/mtdX/name
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
A human-readable ASCII name for the device or partition.
|
|
This will match the name in /proc/mtd .
|
|
|
|
What: /sys/class/mtd/mtdX/numeraseregions
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
For devices that have variable eraseblock sizes, this
|
|
provides the total number of erase regions. Otherwise,
|
|
it will read back as zero.
|
|
|
|
What: /sys/class/mtd/mtdX/oobsize
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Number of OOB bytes per page.
|
|
|
|
What: /sys/class/mtd/mtdX/size
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Total size of the device/partition, in bytes.
|
|
|
|
What: /sys/class/mtd/mtdX/type
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
One of the following ASCII strings, representing the device
|
|
type:
|
|
|
|
absent, ram, rom, nor, nand, dataflash, ubi, unknown
|
|
|
|
What: /sys/class/mtd/mtdX/writesize
|
|
Date: April 2009
|
|
KernelVersion: 2.6.29
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Minimal writable flash unit size. This will always be
|
|
a positive integer.
|
|
|
|
In the case of NOR flash it is 1 (even though individual
|
|
bits can be cleared).
|
|
|
|
In the case of NAND flash it is one NAND page (or a
|
|
half page, or a quarter page).
|
|
|
|
In the case of ECC NOR, it is the ECC block size.
|
|
|
|
What: /sys/class/mtd/mtdX/ecc_strength
|
|
Date: April 2012
|
|
KernelVersion: 3.4
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
Maximum number of bit errors that the device is capable of
|
|
correcting within each region covering an ecc step. This will
|
|
always be a non-negative integer. Note that some devices will
|
|
have multiple ecc steps within each writesize region.
|
|
|
|
In the case of devices lacking any ECC capability, it is 0.
|
|
|
|
What: /sys/class/mtd/mtdX/bitflip_threshold
|
|
Date: April 2012
|
|
KernelVersion: 3.4
|
|
Contact: linux-mtd@lists.infradead.org
|
|
Description:
|
|
This allows the user to examine and adjust the criteria by which
|
|
mtd returns -EUCLEAN from mtd_read(). If the maximum number of
|
|
bit errors that were corrected on any single region comprising
|
|
an ecc step (as reported by the driver) equals or exceeds this
|
|
value, -EUCLEAN is returned. Otherwise, absent an error, 0 is
|
|
returned. Higher layers (e.g., UBI) use this return code as an
|
|
indication that an erase block may be degrading and should be
|
|
scrutinized as a candidate for being marked as bad.
|
|
|
|
The initial value may be specified by the flash device driver.
|
|
If not, then the default value is ecc_strength.
|
|
|
|
The introduction of this feature brings a subtle change to the
|
|
meaning of the -EUCLEAN return code. Previously, it was
|
|
interpreted to mean simply "one or more bit errors were
|
|
corrected". Its new interpretation can be phrased as "a
|
|
dangerously high number of bit errors were corrected on one or
|
|
more regions comprising an ecc step". The precise definition of
|
|
"dangerously high" can be adjusted by the user with
|
|
bitflip_threshold. Users are discouraged from doing this,
|
|
however, unless they know what they are doing and have intimate
|
|
knowledge of the properties of their device. Broadly speaking,
|
|
bitflip_threshold should be low enough to detect genuine erase
|
|
block degradation, but high enough to avoid the consequences of
|
|
a persistent return value of -EUCLEAN on devices where sticky
|
|
bitflips occur. Note that if bitflip_threshold exceeds
|
|
ecc_strength, -EUCLEAN is never returned by mtd_read().
|
|
Conversely, if bitflip_threshold is zero, -EUCLEAN is always
|
|
returned, absent a hard error.
|
|
|
|
This is generally applicable only to NAND flash devices with ECC
|
|
capability. It is ignored on devices lacking ECC capability;
|
|
i.e., devices for which ecc_strength is zero.
|