On 8/19/25 4:25 PM, Michal Simek wrote:
[...]
ZynqMP> mtd read "U-Boot storage variables" 1000
It would be better to spray the 0x1000 area with pattern first,
otherwise, if the 'mtd read' fails, such failure might go undetected.
Reading 131072 byte(s) at offset 0x00000000
ZynqMP> md 1000
00001000: ffffffff ffffffff ffffffff ffffffff ................
00001010: ffffffff ffffffff ffffffff ffffffff ................
00001020: ffffffff ffffffff ffffffff ffffffff ................
[...]
ZynqMP> savee
"env save" is the modern equivalent.
Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...
offset 2200000
done
Valid environment: 2
OK
ZynqMP> mtd read "U-Boot storage variables" 1000
Reading 131072 byte(s) at offset 0x00000000
This here looks odd:
- Where is the "offset 2200000" print coming from ?
- The valid environment is indicated to be 2 , shouldn't that be 1
(primary copy = 1, redundant copy = 2) ?
- The dump of what looks like primary copy also seems valid, so
shouldn't Valid environment be 1 (see previous bullet)
ZynqMP> md 1000
00001000: 5d691224 63726101 72613d68 7561006d $.i].arch=arm.au
00001010: 6f6c6f74 6e3d6461 6162006f 61726475 toload=no.baudra
00001020: 313d6574 30323531 6f620030 3d647261 te=115200.board=
00001030: 716e797a 6200706d 6472616f 6e616d5f zynqmp.board_man
00001040: 63616675 65727574 49583d72 584e494c ufacturer=XILINX
00001050: 616f6200 6e5f6472 3d656d61 4b2d4d53 .board_name=SM-K
00001060: 582d3632 47324c43 44452d43 616f6200 26-XCL2GC-ED.boa
00001070: 725f6472 423d7665 616f6200 735f6472 rd_rev=B.board_s
00001080: 61697265 30353d6c 42323735 46313131 erial=50572B111F
00001090: 62004832 6472616f 7465735f 723d7075 2H.board_setup=r
000010a0: 64206374 30207665 797a203b 706d716e tc dev 0; zynqmp
000010b0: 696d6d20 72775f6f 20657469 46467830 mmio_write 0xFF
000010c0: 30304143 30203031 66666678 203b3020 CA0010 0xfff 0;
000010d0: 74206669 20747365 61637b24 5f316472 if test ${card1_
000010e0: 656d616e 203d207d 2d4b4353 472d564b name} = SCK-KV-G
000010f0: 6874203b 72206e65 74206e75 6b5f6d70 ; then run tpm_k
ZynqMP> mtd read "U-Boot storage variables backup" 1000
Reading 131072 byte(s) at offset 0x00000000
ZynqMP> md 1000
00001000: ffffffff ffffff00 ffffffff ffffffff ................
00001010: ffffffff ffffffff ffffffff ffffffff ................
00001020: ffffffff ffffffff ffffffff ffffffff ................
00001030: ffffffff ffffffff ffffffff ffffffff ................
00001040: ffffffff ffffffff ffffffff ffffffff ................
00001050: ffffffff ffffffff ffffffff ffffffff ................
00001060: ffffffff ffffffff ffffffff ffffffff ................
00001070: ffffffff ffffffff ffffffff ffffffff ................
00001080: ffffffff ffffffff ffffffff ffffffff ................
00001090: ffffffff ffffffff ffffffff ffffffff ................
000010a0: ffffffff ffffffff ffffffff ffffffff ................
000010b0: ffffffff ffffffff ffffffff ffffffff ................
000010c0: ffffffff ffffffff ffffffff ffffffff ................
000010d0: ffffffff ffffffff ffffffff ffffffff ................
000010e0: ffffffff ffffffff ffffffff ffffffff ................
000010f0: ffffffff ffffffff ffffffff ffffffff ................
ZynqMP> savee
Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...
offset 2200000
done
Valid environment: 1
OK
ZynqMP> mtd read "U-Boot storage variables" 1000
This behavior here looks correct .
Reading 131072 byte(s) at offset 0x00000000
ZynqMP> md 1000
00001000: 5d691224 63726101 72613d68 7561006d $.i].arch=arm.au
00001010: 6f6c6f74 6e3d6461 6162006f 61726475 toload=no.baudra
00001020: 313d6574 30323531 6f620030 3d647261 te=115200.board=
00001030: 716e797a 6200706d 6472616f 6e616d5f zynqmp.board_man
00001040: 63616675 65727574 49583d72 584e494c ufacturer=XILINX
00001050: 616f6200 6e5f6472 3d656d61 4b2d4d53 .board_name=SM-K
00001060: 582d3632 47324c43 44452d43 616f6200 26-XCL2GC-ED.boa
00001070: 725f6472 423d7665 616f6200 735f6472 rd_rev=B.board_s
00001080: 61697265 30353d6c 42323735 46313131 erial=50572B111F
00001090: 62004832 6472616f 7465735f 723d7075 2H.board_setup=r
000010a0: 64206374 30207665 797a203b 706d716e tc dev 0; zynqmp
000010b0: 696d6d20 72775f6f 20657469 46467830 mmio_write 0xFF
000010c0: 30304143 30203031 66666678 203b3020 CA0010 0xfff 0;
000010d0: 74206669 20747365 61637b24 5f316472 if test ${card1_
000010e0: 656d616e 203d207d 2d4b4353 472d564b name} = SCK-KV-G
000010f0: 6874203b 72206e65 74206e75 6b5f6d70 ; then run tpm_k
ZynqMP> mtd read "U-Boot storage variables backup" 1000
Reading 131072 byte(s) at offset 0x00000000
ZynqMP> md 1000
00001000: ffffffff ffffff00 ffffffff ffffffff ................
00001010: ffffffff ffffffff ffffffff ffffffff ................
00001020: ffffffff ffffffff ffffffff ffffffff ................
00001030: ffffffff ffffffff ffffffff ffffffff ................
00001040: ffffffff ffffffff ffffffff ffffffff ................
00001050: ffffffff ffffffff ffffffff ffffffff ................
00001060: ffffffff ffffffff ffffffff ffffffff ................
00001070: ffffffff ffffffff ffffffff ffffffff ................
00001080: ffffffff ffffffff ffffffff ffffffff ................
00001090: ffffffff ffffffff ffffffff ffffffff ................
000010a0: ffffffff ffffffff ffffffff ffffffff ................
000010b0: ffffffff ffffffff ffffffff ffffffff ................
000010c0: ffffffff ffffffff ffffffff ffffffff ................
000010d0: ffffffff ffffffff ffffffff ffffffff ................
000010e0: ffffffff ffffffff ffffffff ffffffff ................
000010f0: ffffffff ffffffff ffffffff ffffffff ................
ZynqMP> savee
Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...
offset 2220000
done
Valid environment: 2
OK
ZynqMP> savee
Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...
offset 2200000
done
Valid environment: 1
It would be good to validate that both copies of the env are actually
written where they are supposed to be written . This part is missing
from this test. And in fact -- it would be good if this fix did have a
proper test .