Call for testing: spi-mem driver for Aspeed SMC controllers

Cédric Le Goater clg at kaod.org
Thu Mar 3 20:51:16 AEDT 2022


On 3/3/22 10:45, Joel Stanley wrote:
> On Wed, 2 Mar 2022 at 05:45, Cédric Le Goater <clg at kaod.org> wrote:
>>
>> On 3/1/22 13:20, Joel Stanley wrote:
> 
>>> [    0.746796] spi-nor spi0.0: w25q512jv (65536 Kbytes)
>>> [    0.808104] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0641]
>>> [    0.862687] spi-nor spi0.1: w25q512jv (65536 Kbytes)
>>> [    0.923991] spi-aspeed-smc 1e620000.spi: CE1 read buswidth:2 [0x203c0641]
>>
>>
>> On the FMC controller, could you please increase the clock to :
>>
>>          spi-max-frequency = <100000000>;
>>
>> and check the results ?
> 
> +++ b/arch/arm/boot/dts/aspeed-ast2600-evb.dts
> @@ -162,7 +162,7 @@ flash at 0 {
>                  status = "okay";
>                  m25p,fast-read;
>                  label = "bmc";
> -               spi-max-frequency = <50000000>;
> +               spi-max-frequency = <100000000>;
>   #include "openbmc-flash-layout-64.dtsi"
>          };
> 
> @@ -170,6 +170,7 @@ flash at 1 {
>                  status = "okay";
>                  m25p,fast-read;
>                  label = "alt-bmc";
> +               spi-max-frequency = <100000000>;
>          };
>   };
> 
> 
> 
> # dmesg |grep spi
> [    0.746939] spi-nor spi0.0: w25q512jv (65536 Kbytes)
> [    0.904547] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0741]
> [    0.959048] spi-nor spi0.1: w25q512jv (65536 Kbytes)
> [    1.116603] spi-aspeed-smc 1e620000.spi: CE1 read buswidth:2 [0x203c0741]
> [    1.130483] spi-nor spi1.0: w25q256 (32768 Kbytes)
> [    1.255015] spi-aspeed-smc 1e630000.spi: CE0 read buswidth:2 [0x203c0741]
> [    1.269188] spi-nor spi2.0: gd25q256 (32768 Kbytes)
> [    1.366623] spi-aspeed-smc 1e631000.spi: CE0 read buswidth:2 [0x203c0741]
> 
> # fdtget /sys/firmware/fdt /ahb/spi at 1e620000/flash at 0 spi-max-frequency
> 100000000
> # fdtget /sys/firmware/fdt /ahb/spi at 1e620000/flash at 0 spi-max-frequency
> 100000000
> 
> l# ./mtd-stress.sh mtd5 mtd6
> 22+0 records in
> 22+0 records out
> 23068672 bytes (23 MB, 22 MiB) copied, 2.39988 s, 9.6 MB/s
> 28deb0d7b7ac61a3a748661d17caad9b  /tmp/tmp.F0iA2sCa75
> Erasing blocks: 352/352 (100%)
> Writing data: 22528k/22528k (100%)
> Verifying data: 22528k/22528k (100%)
> 
> real    2m51.548s
> user    0m0.010s
> sys     2m46.316s
> 28deb0d7b7ac61a3a748661d17caad9b  /dev/mtd5
> 
> real    0m2.473s
> user    0m0.158s
> sys     0m2.286s
> 64+0 records in
> 64+0 records out
> 67108864 bytes (67 MB, 64 MiB) copied, 5.34609 s, 12.6 MB/s
> 33e2d1b6b58feaf69ae03bce376cbad3  /tmp/tmp.bCJiVeGiSh
> Erasing blocks: 1024/1024 (100%)
> Writing data: 65536k/65536k (100%)
> Verifying data: 65536k/65536k (100%)
> 
> real    7m50.545s
> user    0m0.200s
> sys     7m35.033s
> 33e2d1b6b58feaf69ae03bce376cbad3  /dev/mtd6
> 
> real    0m7.187s
> user    0m0.485s
> sys     0m6.635s
> 
> 
> Do we expect it to take the same amount of time?

There is a nice boost on the reads. Write are the same but that's expected.

> 
>>
>>> [    0.937639] spi-nor spi1.0: w25q256 (32768 Kbytes)
>>> [    1.062246] spi-aspeed-smc 1e630000.spi: CE0 read buswidth:2 [0x203c0741]
>>> [    1.076507] spi-nor spi2.0: gd25q256 (32768 Kbytes)
>>> [    1.173951] spi-aspeed-smc 1e631000.spi: CE0 read buswidth:2 [0x203c0741]
>>>
>>> ./mtd-stress.sh mtd5 mtd6 mtd7 mtd8
>>
>> A good test would be to read from /dev/mtd0 and reflash the resulting file.
>> Keep an external programmer close at hand just in case :)
> 
> I did this, while crossing my legs, arms, fingers and toes.
> 
> root at apolo:~# ./mtd-stress.sh mtd0
> 64+0 records in
> 64+0 records out
> 67108864 bytes (67 MB, 64 MiB) copied, 5.15611 s, 13.0 MB/s
> 8a439fdfec504f3e8574c4260d0389ee  /tmp/tmp.kbTNY4G8Qd
> Erasing blocks: 1024/1024 (100%)
> Writing data: 65536k/65536k (100%)
> Verifying data: 5590k/65536k (8%)File does not seem to match flash
> data. First mismatch at 0x00573000-0x00575800

ouch. we should keep the 50MHz value then.

> real    7m56.061s
> user    0m0.050s
> sys     7m54.697s
> 343335c0dc778b95afc83a95307921a7  /dev/mtd0
> 
> real    0m7.191s
> user    0m0.482s
> sys     0m6.597s
> 
> Oh no! A failure!
> 
> I ran it again and it succeeded. Both tests were with random data. I
> wrote to it a third time, this time restoring the original file, and
> it succeeded.

and did you reboot ? :)

Cheers,

C.


More information about the openbmc mailing list