Call for testing: spi-mem driver for Aspeed SMC controllers
Cédric Le Goater
clg at kaod.org
Tue Mar 8 20:30:27 AEDT 2022
Hello Lei,
On 3/8/22 02:53, Lei Yu wrote:
> On Mon, Mar 7, 2022 at 9:06 PM Cédric Le Goater <clg at kaod.org> wrote:
>>
>> Hello,
>>
>> On 3/7/22 10:41, Lei Yu wrote:
>>> We hit some issues with the new driver, and here is some detailed info.
>>>
>>> * Our system (not yet upstreamed) uses `mx66l51235f` as the FMC SPI
>>> flash, and we created a QEMU model.
>>>
>>> * When the dts is like "default":
>>> &fmc {
>>> pinctrl-names = "default";
>>> status = "okay";
>>> flash at 0 {
>>> status = "okay";
>>> m25p,fast-read;
>>> label = "bmc";
>>> spi-max-frequency = <50000000>;
>>> #include "openbmc-flash-layout-64.dtsi"
>>> };
>>> };
>>> 1. Run the image in ast2600-evb QEMU, it boots fine;
>>> 2. We have a model (g220b) in QEMU that uses mx66l51235f as the fmc
>>> SPI (`amc->fmc_model = "mx66l51235f";`), it boots with below error:
>>> [ 1.848286] vmap allocation for size 268439552 failed: use
>>> vmalloc=<size> to increase size
>>> [ 1.848774] spi-aspeed-smc 1e620000.spi: ioremap failed for
>>> resource [mem 0x20000000-0x2fffffff]
>>> [ 1.849898] spi-aspeed-smc: probe of 1e620000.spi failed with error -12
>>> 3. If I manually add vmalloc to the kernel command line (setenv
>>> bootargs 'console=ttyS4,115200n8 root=/dev/ram rw vmalloc=400M'), the
>>> above QEMU model boots fine.
>>> 4. On the real system, it behaves the same as QEMU, that I need to add
>>> `vmalloc=400M` to make it boot OK.
>>
>> I don't see why. Is that the same kernel version and config ?
>>
>> May be check the allocations in
>>
>> /proc/vmallocinfo
>
> It shows a large area as below:
>
> 0xc1d30472-0x406b4a0c 268439552 __devm_ioremap_resource+0x178/0x1f0
> phys=0x20000000 ioremap
Is CONFIG_VMSPLIT_2G set ?
>
>>
>>> * When the dts set `spi-tx-bus-width/spi-rx-bus-width = <4>`, and uses
>>> pinctrl_fwqspid_default from @Joel Stanley's pinctrl patch:
>>> &fmc {
>>> pinctrl-names = "default";
>>> pinctrl-0 = <&pinctrl_fwqspid_default>;
>>> status = "okay";
>>> flash at 0 {
>>> status = "okay";
>>> m25p,fast-read;
>>> label = "bmc";
>>> spi-max-frequency = <50000000>;
>>> spi-tx-bus-width = <4>;
>>> spi-rx-bus-width = <4>;
>>> #include "openbmc-flash-layout-64.dtsi"
>>> };
>>> };
>>> 1. It fails to boot in ast2600-evb QEMU:
>>> [ 0.586654] spi-nor: probe of spi0.0 failed with error -5
>>> [ 0.587654] spi-nor spi0.1: unrecognized JEDEC id bytes: 00 00 00 00 00 00
>>> 2. It fails to boot in the g220b model with the same vmalloc failure issue.
>>> 2. With `vmalloc=400M`, the g220b model boots fine in QEMU.
>>> 3. On the real system, it still fails to boot with `vmalloc=400M` due
>>> to the below error:
>>> [ 0.970091] spi-nor spi0.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
>>> [ 0.977902] spi-nor: probe of spi0.0 failed with error -2
>>
>>
>> I could not make Quad work reliably on HW. This is the next step after the
>> new driver is merged.
>
> Got it.
People are looking into it. When fixed, activating Quad should only be
a DT change.
Thanks,
C.
More information about the openbmc
mailing list