Unable to lock flash
Michael Sander
msander at appliedlogix.com
Mon Jul 20 17:08:37 EDT 2020
I am seeing the following failure:
root at localhost:~# flash_unlock -i /dev/mtd0
flash_unlock: error!: could not check lock status device: /dev/mtd0
error 95 (Operation not supported)
I can read and write the flash without any problems.
The kernel version is: 4.14.0-xilinx-v2018.3
I am using Petalinux on a Xilinx Zynq 7000 family SOC
dmesg is not showing any kernel errors associated with the call.
The MTD version is:
root at localhost:~# flash_unlock -V
flash_unlock (mtd-utils) 2.0.0
Looking at the source, it appears that the "95" error is from the
library call to the driver, and in the driver I see:
int mtd_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)
{
if (!mtd->_is_locked)
return -EOPNOTSUPP;
if (ofs < 0 || ofs >= mtd->size || len > mtd->size - ofs)
return -EINVAL;
if (!len)
return 0;
return mtd->_is_locked(mtd, ofs, len);
}
EXPORT_SYMBOL_GPL(mtd_is_locked);
So the driver appears to think the locking functionality is not supported.
The flash chip is a MT25QL128ABA8E12-1SIT which appears to support locking.
The device tree is as follows
&qspi {
#address-cells = <1>;
#size-cells = <0>;
flash0: flash at 0 {
compatible = "n25q512a","micron,m25p80";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
/delete-node/ partition at qspi-fsbl-uboot;
/delete-node/ partition at qspi-linux;
/delete-node/ partition at qspi-device-tree;
/delete-node/ partition at qspi-rootfs;
/delete-node/ partition at qspi-bitstream;
partition at 0x00000000 {
label = "fs-boot";
reg = <0x00000000 0x00120000>;
};
partition at 0x00120000 {
label = "fs-bootenv";
reg = <0x00120000 0x00020000>;
};
partition at 0x00140000 {
label = "fs-kernel";
reg = <0x00140000 0x00d00000>;
};
partition at 0x00e40000 {
label = "boot";
reg = <0x00e40000 0x00120000>;
};
partition at 0x00f60000 {
label = "bootenv";
reg = <0x00f60000 0x00020000>;
};
partition at 0x00f80000 {
label = "envshare";
reg = <0x00f80000 0x00010000>;
};
partition at 0x00f90000 {
label = "spare";
reg = <0x00f90000 0x00070000>;
};
};
};
And mtdinfo is as follows, apologies, we have a few partitions set up.
root at localhost:~# mtdinfo -a
Count of MTD devices: 7
Present MTD devices: mtd0, mtd1, mtd2, mtd3, mtd4, mtd5, mtd6
Sysfs interface supported: yes
mtd0
Name: fs-boot
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 18 (1179648 bytes, 1.1 MiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:0
Bad blocks are allowed: false
Device is writable: true
mtd1
Name: fs-bootenv
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 2 (131072 bytes, 128.0 KiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:2
Bad blocks are allowed: false
Device is writable: true
mtd2
Name: fs-kernel
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 208 (13631488 bytes, 13.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:4
Bad blocks are allowed: false
Device is writable: true
mtd3
Name: boot
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 18 (1179648 bytes, 1.1 MiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:6
Bad blocks are allowed: false
Device is writable: true
mtd4
Name: bootenv
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 2 (131072 bytes, 128.0 KiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:8
Bad blocks are allowed: false
Device is writable: true
mtd5
Name: envshare
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 1 (65536 bytes, 64.0 KiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:10
Bad blocks are allowed: false
Device is writable: true
mtd6
Name: spare
Type: nor
Eraseblock size: 65536 bytes, 64.0 KiB
Amount of eraseblocks: 7 (458752 bytes, 448.0 KiB)
Minimum input/output unit size: 1 byte
Sub-page size: 1 byte
Character device major/minor: 90:12
Bad blocks are allowed: false
Device is writable: true
thanks,
--
Michael Sander
www.appliedlogix.com
More information about the linux-mtd
mailing list