diff mbox series

[RFC] spi: cadence-quadspi: Disable DAC on SoCFPGA

Message ID 20220221043238.295369-1-marex@denx.de (mailing list archive)
State Accepted
Commit f724c296f2f2cc3f9342b0fc26239635cbed856e
Headers show
Series [RFC] spi: cadence-quadspi: Disable DAC on SoCFPGA | expand

Commit Message

Marek Vasut Feb. 21, 2022, 4:32 a.m. UTC
On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
leads to data abort, disable DAC to avoid triggering it:

Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
[0400d3e9] *pgd=00000000

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: Pratyush Yadav <p.yadav@ti.com>
---
 drivers/spi/spi-cadence-quadspi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dinh Nguyen Feb. 21, 2022, 4:38 p.m. UTC | #1
On 2/20/22 22:32, Marek Vasut wrote:
> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
> leads to data abort, disable DAC to avoid triggering it:
> 
> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
> [0400d3e9] *pgd=00000000
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Dinh Nguyen <dinguyen@kernel.org>
> Cc: Pratyush Yadav <p.yadav@ti.com>
> ---
>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c
> index b808c94641fa6..65f2c2449be09 100644
> --- a/drivers/spi/spi-cadence-quadspi.c
> +++ b/drivers/spi/spi-cadence-quadspi.c
> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata intel_lgm_qspi = {
>   };
>   
>   static const struct cqspi_driver_platdata socfpga_qspi = {
> -	.quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
> +	.quirks = CQSPI_DISABLE_DAC_MODE | CQSPI_NO_SUPPORT_WR_COMPLETION,
>   };
>   
>   static const struct cqspi_driver_platdata versal_ospi = {

Acked-by: Dinh Nguyen <dinguyen@kernel.org>
Marek Vasut Feb. 21, 2022, 5:05 p.m. UTC | #2
On 2/21/22 17:38, Dinh Nguyen wrote:
> 
> 
> On 2/20/22 22:32, Marek Vasut wrote:
>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>> leads to data abort, disable DAC to avoid triggering it:
>>
>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>> [0400d3e9] *pgd=00000000
>>
>> Signed-off-by: Marek Vasut <marex@denx.de>
>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>> Cc: Pratyush Yadav <p.yadav@ti.com>
>> ---
>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>> b/drivers/spi/spi-cadence-quadspi.c
>> index b808c94641fa6..65f2c2449be09 100644
>> --- a/drivers/spi/spi-cadence-quadspi.c
>> +++ b/drivers/spi/spi-cadence-quadspi.c
>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>> intel_lgm_qspi = {
>>   };
>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>> +    .quirks = CQSPI_DISABLE_DAC_MODE | CQSPI_NO_SUPPORT_WR_COMPLETION,
>>   };
>>   static const struct cqspi_driver_platdata versal_ospi = {
> 
> Acked-by: Dinh Nguyen <dinguyen@kernel.org>

Is this DAC really not working on socfpga gen5 or is there some other 
issue ?
Dinh Nguyen Feb. 22, 2022, 3:49 p.m. UTC | #3
On 2/21/22 11:05, Marek Vasut wrote:
> On 2/21/22 17:38, Dinh Nguyen wrote:
>>
>>
>> On 2/20/22 22:32, Marek Vasut wrote:
>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>> leads to data abort, disable DAC to avoid triggering it:
>>>
>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>> [0400d3e9] *pgd=00000000
>>>
>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>> ---
>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>> b/drivers/spi/spi-cadence-quadspi.c
>>> index b808c94641fa6..65f2c2449be09 100644
>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>> intel_lgm_qspi = {
>>>   };
>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>   };
>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>
>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
> 
> Is this DAC really not working on socfpga gen5 or is there some other 
> issue ?

I don't know the answer to this question. What is the DAC in the QSPI 
module and how do I go about testing it?

Dinh
Marek Vasut Feb. 22, 2022, 6:30 p.m. UTC | #4
On 2/22/22 16:49, Dinh Nguyen wrote:
> 
> 
> On 2/21/22 11:05, Marek Vasut wrote:
>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>
>>>
>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>
>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>> [0400d3e9] *pgd=00000000
>>>>
>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>> ---
>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>> index b808c94641fa6..65f2c2449be09 100644
>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>> intel_lgm_qspi = {
>>>>   };
>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>   };
>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>
>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>
>> Is this DAC really not working on socfpga gen5 or is there some other 
>> issue ?
> 
> I don't know the answer to this question. What is the DAC in the QSPI 
> module and how do I go about testing it?

DAC = direct access.

How do you go about testing this -- compile kernel with/without this 
patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel crashes 
without this patch on imprecise external abort.
Dinh Nguyen Feb. 22, 2022, 9:32 p.m. UTC | #5
On 2/22/22 12:30, Marek Vasut wrote:
> On 2/22/22 16:49, Dinh Nguyen wrote:
>>
>>
>> On 2/21/22 11:05, Marek Vasut wrote:
>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>
>>>>
>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>
>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>> [0400d3e9] *pgd=00000000
>>>>>
>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>> ---
>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>>> intel_lgm_qspi = {
>>>>>   };
>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>   };
>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>
>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>
>>> Is this DAC really not working on socfpga gen5 or is there some other 
>>> issue ?
>>
>> I don't know the answer to this question. What is the DAC in the QSPI 
>> module and how do I go about testing it?
> 
> DAC = direct access.
> 
> How do you go about testing this -- compile kernel with/without this 
> patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel crashes 
> without this patch on imprecise external abort.

Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be working 
fine:

[    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
[    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
[    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
[    1.762369] 2 fixed-partitions partitions found on MTD device 
ff705000.spi.0
[    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
[    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
[    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 Filesystem"
[    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends beyond 
the end of device "ff705000.spi.0" -- size truncated to 0x3800000

Dinh
Marek Vasut Feb. 23, 2022, 12:54 a.m. UTC | #6
On 2/22/22 22:32, Dinh Nguyen wrote:
> 
> 
> On 2/22/22 12:30, Marek Vasut wrote:
>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>
>>>
>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>
>>>>>
>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>
>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>> [0400d3e9] *pgd=00000000
>>>>>>
>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>> ---
>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>>>> intel_lgm_qspi = {
>>>>>>   };
>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>   };
>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>
>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>
>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>> other issue ?
>>>
>>> I don't know the answer to this question. What is the DAC in the QSPI 
>>> module and how do I go about testing it?
>>
>> DAC = direct access.
>>
>> How do you go about testing this -- compile kernel with/without this 
>> patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel crashes 
>> without this patch on imprecise external abort.
> 
> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be working 
> fine:
> 
> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
> [    1.762369] 2 fixed-partitions partitions found on MTD device 
> ff705000.spi.0
> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 Filesystem"
> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends beyond 
> the end of device "ff705000.spi.0" -- size truncated to 0x3800000

I wonder if we might be missing some clock enable somewhere.

Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
Dinh Nguyen Feb. 23, 2022, 4:28 p.m. UTC | #7
On 2/22/22 18:54, Marek Vasut wrote:
> On 2/22/22 22:32, Dinh Nguyen wrote:
>>
>>
>> On 2/22/22 12:30, Marek Vasut wrote:
>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>
>>>>
>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>
>>>>>>
>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>
>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>
>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>> ---
>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>>>>> intel_lgm_qspi = {
>>>>>>>   };
>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>   };
>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>
>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>
>>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>>> other issue ?
>>>>
>>>> I don't know the answer to this question. What is the DAC in the 
>>>> QSPI module and how do I go about testing it?
>>>
>>> DAC = direct access.
>>>
>>> How do you go about testing this -- compile kernel with/without this 
>>> patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel 
>>> crashes without this patch on imprecise external abort.
>>
>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>> working fine:
>>
>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>> ff705000.spi.0
>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 Filesystem"
>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>> beyond the end of device "ff705000.spi.0" -- size truncated to 0x3800000
> 
> I wonder if we might be missing some clock enable somewhere.
> 
> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)

I tested with U-Boot 2022.01 as well:


=> run nfsboot_dinh
Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
## Flattened Device Tree blob at 02000000
    Booting using the fdt blob at 0x2000000
    Loading Device Tree to 09ff8000, end 09fffeb1 ... OK

Starting kernel ...

Deasserting all peripheral resets
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
(arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, 
GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 08:51:18 CST 2022
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
instructio n cache
[    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
Development  Kit
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000]   HighMem  [mem 0x0000000030000000-0x000000003fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000] Initmem setup node 0 [mem 
0x0000000000000000-0x000000003fffffff]
[    0.000000] percpu: Embedded 15 pages/cpu s29068 r8192 d24180 u61440
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260608
[    0.000000] Kernel command line: root=/dev/nfs rw 
nfsroot=10.122.105.166:/hom e/dnguyen/rootfs_yocto,tcp ip=dhcp
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 
bytes,  linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 
bytes, li near)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1026164K/1048576K available (9216K kernel code, 
769K rwda ta, 1888K rodata, 1024K init, 139K bss, 22412K reserved, 0K 
cma-reserved, 262144 K highmem)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] ftrace: allocating 30749 entries in 91 pages
[    0.000000] ftrace: allocated 91 pages with 5 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000]  Rude variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay 
is 10 jif fies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] L2C-310 erratum 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 8 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB
[    0.000000] L2C-310: CACHE_ID 0x410030c9, AUX_CTRL 0x76460001
[    0.000000] random: get_random_bytes called from 
start_kernel+0x528/0x6cc wit h crng_init=0
[    0.000000] clocksource: timer1: mask: 0xffffffff max_cycles: 
0xffffffff, max _idle_ns: 19112604467 ns
[    0.000000] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps 
every 2147 4836475ns
[    0.000017] Switching to timer-based delay loop, resolution 10ns
[    0.000303] Console: colour dummy device 80x30
[    0.000691] printk: console [tty0] enabled
[    0.000734] Calibrating delay loop (skipped), value calculated using 
timer fr equency.. 200.00 BogoMIPS (lpj=1000000)
[    0.000765] pid_max: default: 32768 minimum: 301
[    0.000894] Mount-cache hash table entries: 2048 (order: 1, 8192 
bytes, linea r)
[    0.000923] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 
bytes,  linear)
[    0.001517] CPU: Testing write buffer coherency: ok
[    0.001575] CPU0: Spectre v2: using BPIALL workaround
[    0.001761] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002324] cblist_init_generic: Setting adjustable number of 
callback queues .
[    0.002356] cblist_init_generic: Setting shift to 1 and lim to 1.
[    0.002460] Setting up static identity map for 0x100000 - 0x100060
[    0.002595] rcu: Hierarchical SRCU implementation.
[    0.002912] smp: Bringing up secondary CPUs ...
[    0.003517] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.003534] CPU1: Spectre v2: using BPIALL workaround
[    0.003668] smp: Brought up 1 node, 2 CPUs
[    0.003695] SMP: Total of 2 processors activated (400.00 BogoMIPS).
[    0.003714] CPU: All CPU(s) started in SVC mode.
[    0.004253] devtmpfs: initialized
[    0.008177] VFP support v0.3: implementor 41 architecture 3 part 30 
variant 9  rev 4
[    0.008388] clocksource: jiffies: mask: 0xffffffff max_cycles: 
0xffffffff, ma x_idle_ns: 19112604462750000 ns
[    0.008426] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.009172] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.010014] DMA: preallocated 256 KiB pool for atomic coherent 
allocations
[    0.010998] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 
watchpoint  registers.
[    0.011030] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.029091] vgaarb: loaded
[    0.029322] SCSI subsystem initialized
[    0.029505] usbcore: registered new interface driver usbfs
[    0.029563] usbcore: registered new interface driver hub
[    0.029619] usbcore: registered new device driver usb
[    0.029847] usb_phy_generic soc:usbphy: supply vcc not found, using 
dummy reg ulator
[    0.030261] pps_core: LinuxPPS API ver. 1 registered
[    0.030285] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 
Rodolfo Giome tti giometti@linux.it<mailto:giometti@linux.it>
[    0.030319] PTP clock support registered
[    0.030470] FPGA manager framework
[    0.031309] clocksource: Switched to clocksource timer1
[    0.065908] NET: Registered PF_INET protocol family
[    0.066131] IP idents hash table entries: 16384 (order: 5, 131072 
bytes, line ar)
[    0.067138] tcp_listen_portaddr_hash hash table entries: 512 (order: 
0, 6144  bytes, linear)
[    0.067193] TCP established hash table entries: 8192 (order: 3, 32768 
bytes,  linear)
[    0.067276] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, 
linear)
[    0.067400] TCP: Hash tables configured (established 8192 bind 8192)
[    0.067523] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.067580] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, 
linear)
[    0.067751] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.071713] RPC: Registered named UNIX socket transport module.
[    0.071746] RPC: Registered udp transport module.
[    0.071762] RPC: Registered tcp transport module.
[    0.071776] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.071799] PCI: CLS 0 bytes, default 64
[    0.725286] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 
counter s available
[    0.726528] workingset: timestamp_bits=30 max_order=18 bucket_order=0
[    0.732082] NFS: Registering the id_resolver key type
[    0.732133] Key type id_resolver registered
[    0.732151] Key type id_legacy registered
[    0.732174] Installing knfsd (copyright (C) 1996 
okir@monad.swb.de<mailto:okir@monad.swb.de>).
[    0.732909] ntfs: driver 2.1.32 [Flags: R/W].
[    0.733097] jffs2: version 2.2. (NAND) (c) 2001-2006 Red Hat, Inc.
[    0.733690] bounce: pool size: 64 pages
[    0.733795] io scheduler mq-deadline registered
[    0.733816] io scheduler kyber registered
[    0.737748] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.738777] ffc02000.serial0: ttyS0 at MMIO 0xffc02000 (irq = 43, 
base_baud =  6250000) is a 16550A
[    1.377771] printk: console [ttyS0] enabled
[    1.382603] ffc03000.serial1: ttyS1 at MMIO 0xffc03000 (irq = 44, 
base_baud =  6250000) is a 16550A
[    1.393068] brd: module loaded
[    1.400992] loop: module loaded
[    1.407175] CAN device driver interface
[    1.411647] c_can_platform ffc00000.can: c_can_platform device 
registered (re gs=(ptrval), irq=30)
[    1.420796] socfpga-dwmac ff702000.ethernet: IRQ eth_wake_irq not found
[    1.427438] socfpga-dwmac ff702000.ethernet: IRQ eth_lpi not found
[    1.433718] socfpga-dwmac ff702000.ethernet: PTP uses main clock
[    1.439902] socfpga-dwmac ff702000.ethernet: Version ID not available
[    1.446361] socfpga-dwmac ff702000.ethernet:         DWMAC1000
[    1.451588] socfpga-dwmac ff702000.ethernet: DMA HW capability 
register suppo rted
[    1.459053] socfpga-dwmac ff702000.ethernet: RX Checksum Offload 
Engine suppo rted
[    1.466524] socfpga-dwmac ff702000.ethernet: COE Type 2
[    1.471743] socfpga-dwmac ff702000.ethernet: TX Checksum insertion 
supported
[    1.478770] socfpga-dwmac ff702000.ethernet: Enhanced/Alternate 
descriptors
[    1.485724] socfpga-dwmac ff702000.ethernet: Extended descriptors not 
support ed
[    1.493023] socfpga-dwmac ff702000.ethernet: Ring mode enabled
[    1.498848] socfpga-dwmac ff702000.ethernet: device MAC address 
0a:70:a0:4c:e 4:6f
[    1.514527] Micrel KSZ9021 Gigabit PHY stmmac-0:04: attached PHY 
driver (mii_ bus:phy_addr=stmmac-0:04, irq=POLL)
[    1.526181] dwc2 ffb40000.usb: supply vusb_d not found, using dummy 
regulator
[    1.533470] dwc2 ffb40000.usb: supply vusb_a not found, using dummy 
regulator
[    1.540831] dwc2 ffb40000.usb: EPs: 16, dedicated fifos, 8064 entries 
in SPRA M
[    1.548368] dwc2 ffb40000.usb: DWC OTG Controller
[    1.553116] dwc2 ffb40000.usb: new USB bus registered, assigned bus 
number 1
[    1.560172] dwc2 ffb40000.usb: irq 45, io mem 0xffb40000
[    1.566125] hub 1-0:1.0: USB hub found
[    1.569911] hub 1-0:1.0: 1 port detected
[    1.574627] usbcore: registered new interface driver usb-storage
[    1.580807] i2c_dev: i2c /dev entries driver
[    1.585982] Synopsys Designware Multimedia Card Interface Driver
[    1.592409] ledtrig-cpu: registered to indicate activity on CPUs
[    1.598541] usbcore: registered new interface driver usbhid
[    1.604129] usbhid: USB HID core driver
[    1.609205] NET: Registered PF_INET6 protocol family
[    1.615138] Segment Routing with IPv6
[    1.618827] In-situ OAM (IOAM) with IPv6
[    1.622844] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.629277] NET: Registered PF_PACKET protocol family
[    1.634369] NET: Registered PF_KEY protocol family
[    1.639152] can: controller area network core
[    1.643568] NET: Registered PF_CAN protocol family
[    1.648351] can: raw protocol
[    1.651328] can: broadcast manager protocol
[    1.655508] can: netlink gateway - max_hops=1
[    1.659989] 8021q: 802.1Q VLAN Support v1.8
[    1.664225] Key type dns_resolver registered
[    1.668566] ThumbEE CPU extension supported.
[    1.672846] Registering SWP/SWPB emulation handler
[    1.681725] at24 0-0051: supply vcc not found, using dummy regulator
[    1.689287] at24 0-0051: 4096 byte 24c32 EEPROM, writable, 32 bytes/write
[    1.701762] rtc-ds1307 0-0068: registered as rtc0
[    1.708271] rtc-ds1307 0-0068: setting system clock to 
2018-03-17T01:43:02 UT C (1521250982)
[    1.720866] dma-pl330 ffe01000.pdma: Loaded driver for PL330 DMAC-341330
[    1.727602] dma-pl330 ffe01000.pdma:         DBUFF-512x8bytes 
Num_Chans-8 Num _Peri-32 Num_Events-8
[    1.736593] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
[    1.742662] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
[    1.749048] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
[    1.754479] 2 fixed-partitions partitions found on MTD device 
ff705000.spi.0
[    1.761556] Creating 2 MTD partitions on "ff705000.spi.0":
[    1.767035] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
[    1.774038] 0x000000800000-0x000008000000 : "Flash 0 jffs2 Filesystem"
[    1.780562] mtd: partition "Flash 0 jffs2 Filesystem" extends beyond 
the end  of device "ff705000.spi.0" -- size truncated to 0x3800000
[    1.794865] dw_mmc ff704000.dwmmc0: IDMAC supports 32-bit address mode.
[    1.801560] dw_mmc ff704000.dwmmc0: Using internal DMA controller.
[    1.807737] dw_mmc ff704000.dwmmc0: Version ID is 240a
[    1.812917] dw_mmc ff704000.dwmmc0: DW MMC controller at irq 38,32 
bit host d ata width,1024 deep fifo
[    1.822428] dw_mmc ff704000.dwmmc0: Got CD GPIO
[    1.827005] mmc_host mmc0: card is polling.
[    1.841337] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 
400000Hz , actual 396825HZ div = 63)
[    1.865228] socfpga-dwmac ff702000.ethernet eth0: PHY [stmmac-0:04] 
driver [M icrel KSZ9021 Gigabit PHY] (irq=POLL)
[    1.875810] socfpga-dwmac ff702000.ethernet eth0: Register 
MEM_TYPE_PAGE_POOL  RxQ-0
[    1.886679] socfpga-dwmac ff702000.ethernet eth0: No Safety Features 
support  found
[    1.897468] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 
50000000 Hz, actual 50000000HZ div = 0)
[    1.904448] socfpga-dwmac ff702000.ethernet eth0: registered PTP clock
[    1.907277] mmc0: new high speed SDHC card at address 0001
[    1.919446] socfpga-dwmac ff702000.ethernet eth0: configuring for 
phy/rgmii l ink mode
[    1.919714] mmcblk0: mmc0:0001 SD8GB 7.24 GiB
[    1.933945]  mmcblk0: p1 p2 p3
[    6.072231] socfpga-dwmac ff702000.ethernet eth0: Link is Up - 
1Gbps/Full - f low control rx/tx
[    6.080856] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.131319] Sending DHCP requests .., OK
[    9.375268] IP-Config: Got DHCP answer from 10.122.105.2, my address 
is 10.12 2.105.45
[    9.383105] IP-Config: Complete:
[    9.386328]      device=eth0, hwaddr=0a:70:a0:4c:e4:6f, 
ipaddr=10.122.105.45,  mask=255.255.255.0, gw=10.122.105.1
[    9.396572]      host=10.122.105.45, domain=an.intel.com, 
nis-domain=(none)
[    9.403526]      bootserver=10.122.105.30, rootserver=10.122.105.166, 
rootpat h=
[    9.403536]      nameserver0=10.248.2.1, nameserver1=10.2.71.6, 
nameserver2=1 0.31.40.4
[    9.419206] dw-apb-uart ffc02000.serial0: forbid DMA for kernel console
[    9.440415] VFS: Mounted root (nfs filesystem) on device 0:13.
[    9.446908] devtmpfs: mounted
[    9.452213] Freeing unused kernel image (initmem) memory: 1024K
[    9.491560] Run /sbin/init as init process
INIT: version 2.88 booting
[    9.707166] random: fast init done
Starting Bootlog daemon: bootlogd.
mount: mounting 10.122.105.166:/home/dnguyen/rootfs_yocto on / failed: 
Invalid a rgument
Starting portmap daemon...
INIT: Entering runlevel: 5
Starting OpenBSD Secure Shell server: sshd
[   10.594905] random: sshd: uninitialized urandom read (32 bytes read)
done.
creating NFS state directory: done
starting 8 nfsd kernel threads: rpc.nfsd: unable to resolve ANYADDR:nfs 
to inet  address: Servname not supported for ai_socktype
rpc.nfsd: unable to set any sockets for nfsd
done
starting mountd: done
starting statd: done
Starting system log daemon...start-stop-daemon: can't execute 
'/sbin/syslogd': N o such file or directory
1
Starting kernel log daemon...start-stop-daemon: can't execute 
'/sbin/klogd': No  such file or directory
1
Starting Lighttpd Web Server: [   10.978345] random: lighttpd: 
uninitialized ura ndom read (4096 bytes read)
lighttpd.
Stopping Bootlog daemon: bootlogd.

Poky 8.0 (Yocto Project 1.3 Reference Distro) 1.3 socfpga_cyclone5 ttyS0

socfpga_cyclone5 login: root
login[158]: root login  on `ttyS0'

root@socfpga_cyclone5:~#
Marek Vasut Feb. 23, 2022, 4:43 p.m. UTC | #8
On 2/23/22 17:28, Dinh Nguyen wrote:
> 
> 
> On 2/22/22 18:54, Marek Vasut wrote:
>> On 2/22/22 22:32, Dinh Nguyen wrote:
>>>
>>>
>>> On 2/22/22 12:30, Marek Vasut wrote:
>>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>>
>>>>>
>>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in cqspi_direct_read_execute()
>>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>>
>>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>>
>>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>>> ---
>>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>>>>>> intel_lgm_qspi = {
>>>>>>>>   };
>>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>   };
>>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>>
>>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>
>>>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>>>> other issue ?
>>>>>
>>>>> I don't know the answer to this question. What is the DAC in the 
>>>>> QSPI module and how do I go about testing it?
>>>>
>>>> DAC = direct access.
>>>>
>>>> How do you go about testing this -- compile kernel with/without this 
>>>> patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel 
>>>> crashes without this patch on imprecise external abort.
>>>
>>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>>> working fine:
>>>
>>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
>>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>>> ff705000.spi.0
>>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 
>>> Filesystem"
>>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>>> beyond the end of device "ff705000.spi.0" -- size truncated to 0x3800000
>>
>> I wonder if we might be missing some clock enable somewhere.
>>
>> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
> 
> I tested with U-Boot 2022.01 as well:
> 
> 
> => run nfsboot_dinh
> Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
> ## Flattened Device Tree blob at 02000000
>     Booting using the fdt blob at 0x2000000
>     Loading Device Tree to 09ff8000, end 09fffeb1 ... OK
> 
> Starting kernel ...
> 
> Deasserting all peripheral resets
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
> (arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, 
> GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 08:51:18 CST 2022
> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
> cr=10c5387d
> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
> instructio n cache
> [    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
> Development  Kit
> [    0.000000] Memory policy: Data cache writealloc

This is weird.

One more thing, I have two SPI NORs on this CQSPI, one on each chip 
select, do you think that can make any difference ?

Besides that, I used latest next for my tests, not latest linus tree.

Maybe I should try and find the CV devkit too and test on that.
Dinh Nguyen Feb. 23, 2022, 4:46 p.m. UTC | #9
On 2/23/22 10:43, Marek Vasut wrote:
> On 2/23/22 17:28, Dinh Nguyen wrote:
>>
>>
>> On 2/22/22 18:54, Marek Vasut wrote:
>>> On 2/22/22 22:32, Dinh Nguyen wrote:
>>>>
>>>>
>>>> On 2/22/22 12:30, Marek Vasut wrote:
>>>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>>>
>>>>>>
>>>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in 
>>>>>>>>> cqspi_direct_read_execute()
>>>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>>>
>>>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>>>
>>>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>>>> ---
>>>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>> @@ -1870,7 +1870,7 @@ static const struct cqspi_driver_platdata 
>>>>>>>>> intel_lgm_qspi = {
>>>>>>>>>   };
>>>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>   };
>>>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>>>
>>>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>
>>>>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>>>>> other issue ?
>>>>>>
>>>>>> I don't know the answer to this question. What is the DAC in the 
>>>>>> QSPI module and how do I go about testing it?
>>>>>
>>>>> DAC = direct access.
>>>>>
>>>>> How do you go about testing this -- compile kernel with/without 
>>>>> this patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the kernel 
>>>>> crashes without this patch on imprecise external abort.
>>>>
>>>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>>>> working fine:
>>>>
>>>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>>>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f FTC-40000
>>>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>>>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>>>> ff705000.spi.0
>>>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>>>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>>>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 
>>>> Filesystem"
>>>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>>>> beyond the end of device "ff705000.spi.0" -- size truncated to 
>>>> 0x3800000
>>>
>>> I wonder if we might be missing some clock enable somewhere.
>>>
>>> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
>>
>> I tested with U-Boot 2022.01 as well:
>>
>>
>> => run nfsboot_dinh
>> Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
>> ## Flattened Device Tree blob at 02000000
>>     Booting using the fdt blob at 0x2000000
>>     Loading Device Tree to 09ff8000, end 09fffeb1 ... OK
>>
>> Starting kernel ...
>>
>> Deasserting all peripheral resets
>> [    0.000000] Booting Linux on physical CPU 0x0
>> [    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
>> (arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, 
>> GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 08:51:18 CST 
>> 2022
>> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
>> cr=10c5387d
>> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
>> instructio n cache
>> [    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
>> Development  Kit
>> [    0.000000] Memory policy: Data cache writealloc
> 
> This is weird.
> 
> One more thing, I have two SPI NORs on this CQSPI, one on each chip 
> select, do you think that can make any difference ?
> 
> Besides that, I used latest next for my tests, not latest linus tree.

Let me test on latest next.

> 
> Maybe I should try and find the CV devkit too and test on that.
Marek Vasut Feb. 23, 2022, 5:16 p.m. UTC | #10
On 2/23/22 17:46, Dinh Nguyen wrote:
> 
> 
> On 2/23/22 10:43, Marek Vasut wrote:
>> On 2/23/22 17:28, Dinh Nguyen wrote:
>>>
>>>
>>> On 2/22/22 18:54, Marek Vasut wrote:
>>>> On 2/22/22 22:32, Dinh Nguyen wrote:
>>>>>
>>>>>
>>>>> On 2/22/22 12:30, Marek Vasut wrote:
>>>>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in 
>>>>>>>>>> cqspi_direct_read_execute()
>>>>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>>>>
>>>>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>>>>
>>>>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>>>>> ---
>>>>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>>
>>>>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>> @@ -1870,7 +1870,7 @@ static const struct 
>>>>>>>>>> cqspi_driver_platdata intel_lgm_qspi = {
>>>>>>>>>>   };
>>>>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>>   };
>>>>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>>>>
>>>>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>
>>>>>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>>>>>> other issue ?
>>>>>>>
>>>>>>> I don't know the answer to this question. What is the DAC in the 
>>>>>>> QSPI module and how do I go about testing it?
>>>>>>
>>>>>> DAC = direct access.
>>>>>>
>>>>>> How do you go about testing this -- compile kernel with/without 
>>>>>> this patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the 
>>>>>> kernel crashes without this patch on imprecise external abort.
>>>>>
>>>>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>>>>> working fine:
>>>>>
>>>>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>>>>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f 
>>>>> FTC-40000
>>>>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>>>>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>>>>> ff705000.spi.0
>>>>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>>>>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>>>>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 
>>>>> Filesystem"
>>>>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>>>>> beyond the end of device "ff705000.spi.0" -- size truncated to 
>>>>> 0x3800000
>>>>
>>>> I wonder if we might be missing some clock enable somewhere.
>>>>
>>>> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
>>>
>>> I tested with U-Boot 2022.01 as well:
>>>
>>>
>>> => run nfsboot_dinh
>>> Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
>>> ## Flattened Device Tree blob at 02000000
>>>     Booting using the fdt blob at 0x2000000
>>>     Loading Device Tree to 09ff8000, end 09fffeb1 ... OK
>>>
>>> Starting kernel ...
>>>
>>> Deasserting all peripheral resets
>>> [    0.000000] Booting Linux on physical CPU 0x0
>>> [    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
>>> (arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, 
>>> GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 08:51:18 
>>> CST 2022
>>> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
>>> cr=10c5387d
>>> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
>>> instructio n cache
>>> [    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
>>> Development  Kit
>>> [    0.000000] Memory policy: Data cache writealloc
>>
>> This is weird.
>>
>> One more thing, I have two SPI NORs on this CQSPI, one on each chip 
>> select, do you think that can make any difference ?
>>
>> Besides that, I used latest next for my tests, not latest linus tree.
> 
> Let me test on latest next.

Thank you

If you cannot reproduce it there, drop this patch and I'll revisit this 
on my side.
Dinh Nguyen Feb. 23, 2022, 10:18 p.m. UTC | #11
On 2/23/22 11:16, Marek Vasut wrote:
> On 2/23/22 17:46, Dinh Nguyen wrote:
>>
>>
>> On 2/23/22 10:43, Marek Vasut wrote:
>>> On 2/23/22 17:28, Dinh Nguyen wrote:
>>>>
>>>>
>>>> On 2/22/22 18:54, Marek Vasut wrote:
>>>>> On 2/22/22 22:32, Dinh Nguyen wrote:
>>>>>>
>>>>>>
>>>>>> On 2/22/22 12:30, Marek Vasut wrote:
>>>>>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in 
>>>>>>>>>>> cqspi_direct_read_execute()
>>>>>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>>>>>
>>>>>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 0x0400d3e9
>>>>>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>>>>>
>>>>>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>>>>>> ---
>>>>>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>> @@ -1870,7 +1870,7 @@ static const struct 
>>>>>>>>>>> cqspi_driver_platdata intel_lgm_qspi = {
>>>>>>>>>>>   };
>>>>>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>>>   };
>>>>>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>>>>>
>>>>>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>>
>>>>>>>>> Is this DAC really not working on socfpga gen5 or is there some 
>>>>>>>>> other issue ?
>>>>>>>>
>>>>>>>> I don't know the answer to this question. What is the DAC in the 
>>>>>>>> QSPI module and how do I go about testing it?
>>>>>>>
>>>>>>> DAC = direct access.
>>>>>>>
>>>>>>> How do you go about testing this -- compile kernel with/without 
>>>>>>> this patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the 
>>>>>>> kernel crashes without this patch on imprecise external abort.
>>>>>>
>>>>>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>>>>>> working fine:
>>>>>>
>>>>>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>>>>>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f 
>>>>>> FTC-40000
>>>>>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>>>>>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>>>>>> ff705000.spi.0
>>>>>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>>>>>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>>>>>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 
>>>>>> Filesystem"
>>>>>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>>>>>> beyond the end of device "ff705000.spi.0" -- size truncated to 
>>>>>> 0x3800000
>>>>>
>>>>> I wonder if we might be missing some clock enable somewhere.
>>>>>
>>>>> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
>>>>
>>>> I tested with U-Boot 2022.01 as well:
>>>>
>>>>
>>>> => run nfsboot_dinh
>>>> Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
>>>> ## Flattened Device Tree blob at 02000000
>>>>     Booting using the fdt blob at 0x2000000
>>>>     Loading Device Tree to 09ff8000, end 09fffeb1 ... OK
>>>>
>>>> Starting kernel ...
>>>>
>>>> Deasserting all peripheral resets
>>>> [    0.000000] Booting Linux on physical CPU 0x0
>>>> [    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
>>>> (arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 
>>>> 7.5.0, GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 
>>>> 08:51:18 CST 2022
>>>> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
>>>> cr=10c5387d
>>>> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT 
>>>> aliasing instructio n cache
>>>> [    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
>>>> Development  Kit
>>>> [    0.000000] Memory policy: Data cache writealloc
>>>
>>> This is weird.
>>>
>>> One more thing, I have two SPI NORs on this CQSPI, one on each chip 
>>> select, do you think that can make any difference ?
>>>
>>> Besides that, I used latest next for my tests, not latest linus tree.
>>
>> Let me test on latest next.
> 
> Thank you
> 
> If you cannot reproduce it there, drop this patch and I'll revisit this 
> on my side.

Hmm...it doesn't look like the same error, but I'm getting this on the 
-next. I disable QSPI and the error still shows up. I'll dig more into it.

[    1.685301] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 
5.17.0-rc5-next-20220222 #3
[    1.692771] Hardware name: Altera SOCFPGA
[    1.696771] Backtrace:
[    1.699217]  dump_backtrace from show_stack+0x20/0x24
[    1.704277]  r7:c0d03cc8 r6:c05fb6dc r5:c0b1d644 r4:60000093
[    1.709919]  show_stack from dump_stack_lvl+0x48/0x54
[    1.714965]  dump_stack_lvl from dump_stack+0x18/0x1c
[    1.720009]  r5:c1020600 r4:c0dc0b98
[    1.723573]  dump_stack from check_flush_dependency+0x1d4/0x1d8
[    1.729483]  check_flush_dependency from __flush_work+0x88/0x268
[    1.735481]  r7:c0d03cc8 r6:c0d82520 r5:c1020800 r4:c0dc0b98
[    1.741122]  __flush_work from flush_work+0x1c/0x20
[    1.745996]  r8:c1178000 r7:00000000 r6:c05fbd2c r5:00000001 r4:c0ddb72c
[    1.752674]  flush_work from deferred_probe_initcall+0x58/0xb8
[    1.758508]  deferred_probe_initcall from do_one_initcall+0x58/0x218
[    1.764860]  r5:c0db1ea0 r4:c0d03cc8
[    1.768426]  do_one_initcall from kernel_init_freeable+0x250/0x298
[    1.774602]  r8:c10e0d00 r7:00000008 r6:c0c47838 r5:c0c741a8 r4:c0bd1920
[    1.781281]  kernel_init_freeable from kernel_init+0x24/0x148
[    1.787023]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
r6:00000000 r5:c0951e84
[    1.794828]  r4:00003cc0
[    1.797356]  kernel_init from ret_from_fork+0x14/0x2c
[    1.802401] Exception stack(0xf0831fb0 to 0xf0831ff8)
[    1.807441] 1fa0:                                     00000000 
00000000 00000000 00000000
[    1.815595] 1fc0: 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000
[    1.823748] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    1.830342]  r5:c0951e84 r4:00000000
[    1.834751] at24 0-0051: supply vcc not found, using dummy regulator
[    1.842334] at24 0-0051: 4096 byte 24c32 EEPROM, writable, 32 bytes/write
[    1.854814] rtc-ds1307 0-0068: registered as rtc0
[    1.861327] rtc-ds1307 0-0068: setting system clock to 
2018-03-17T07:37:25 UTC (1521272245)
[    1.874183] dma-pl330 ffe01000.pdma: Loaded driver for PL330 DMAC-341330
[    1.880887] dma-pl330 ffe01000.pdma:         DBUFF-512x8bytes 
Num_Chans-8 Num_Peri-32 Num_Events-8
Marek Vasut Feb. 23, 2022, 11:46 p.m. UTC | #12
On 2/23/22 23:18, Dinh Nguyen wrote:
> 
> 
> On 2/23/22 11:16, Marek Vasut wrote:
>> On 2/23/22 17:46, Dinh Nguyen wrote:
>>>
>>>
>>> On 2/23/22 10:43, Marek Vasut wrote:
>>>> On 2/23/22 17:28, Dinh Nguyen wrote:
>>>>>
>>>>>
>>>>> On 2/22/22 18:54, Marek Vasut wrote:
>>>>>> On 2/22/22 22:32, Dinh Nguyen wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 2/22/22 12:30, Marek Vasut wrote:
>>>>>>>> On 2/22/22 16:49, Dinh Nguyen wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 2/21/22 11:05, Marek Vasut wrote:
>>>>>>>>>> On 2/21/22 17:38, Dinh Nguyen wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 2/20/22 22:32, Marek Vasut wrote:
>>>>>>>>>>>> On SoCFPGA Gen5, DAC memcpy_fromio() in 
>>>>>>>>>>>> cqspi_direct_read_execute()
>>>>>>>>>>>> leads to data abort, disable DAC to avoid triggering it:
>>>>>>>>>>>>
>>>>>>>>>>>> Unhandled fault: imprecise external abort (0x1406) at 
>>>>>>>>>>>> 0x0400d3e9
>>>>>>>>>>>> [0400d3e9] *pgd=00000000
>>>>>>>>>>>>
>>>>>>>>>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>>>>>>>>>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>>>>> Cc: Pratyush Yadav <p.yadav@ti.com>
>>>>>>>>>>>> ---
>>>>>>>>>>>>   drivers/spi/spi-cadence-quadspi.c | 2 +-
>>>>>>>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>>>>
>>>>>>>>>>>> diff --git a/drivers/spi/spi-cadence-quadspi.c 
>>>>>>>>>>>> b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>>> index b808c94641fa6..65f2c2449be09 100644
>>>>>>>>>>>> --- a/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>>> +++ b/drivers/spi/spi-cadence-quadspi.c
>>>>>>>>>>>> @@ -1870,7 +1870,7 @@ static const struct 
>>>>>>>>>>>> cqspi_driver_platdata intel_lgm_qspi = {
>>>>>>>>>>>>   };
>>>>>>>>>>>>   static const struct cqspi_driver_platdata socfpga_qspi = {
>>>>>>>>>>>> -    .quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>>>> +    .quirks = CQSPI_DISABLE_DAC_MODE | 
>>>>>>>>>>>> CQSPI_NO_SUPPORT_WR_COMPLETION,
>>>>>>>>>>>>   };
>>>>>>>>>>>>   static const struct cqspi_driver_platdata versal_ospi = {
>>>>>>>>>>>
>>>>>>>>>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>>>>>>>>>
>>>>>>>>>> Is this DAC really not working on socfpga gen5 or is there 
>>>>>>>>>> some other issue ?
>>>>>>>>>
>>>>>>>>> I don't know the answer to this question. What is the DAC in 
>>>>>>>>> the QSPI module and how do I go about testing it?
>>>>>>>>
>>>>>>>> DAC = direct access.
>>>>>>>>
>>>>>>>> How do you go about testing this -- compile kernel with/without 
>>>>>>>> this patch, boot on SoCFPGA Gen5 with QSPI NOR attached, the 
>>>>>>>> kernel crashes without this patch on imprecise external abort.
>>>>>>>
>>>>>>> Hmm...I just tested v5.17-rc3 on a C5 board and QSPI looks to be 
>>>>>>> working fine:
>>>>>>>
>>>>>>> [    1.744489] spi-nor spi1.0: found n25q512ax3, expected mt25qu02g
>>>>>>> [    1.750534] dma-pl330 ffe01000.pdma: Reset Channel-0  CS-f 
>>>>>>> FTC-40000
>>>>>>> [    1.756941] spi-nor spi1.0: n25q512ax3 (65536 Kbytes)
>>>>>>> [    1.762369] 2 fixed-partitions partitions found on MTD device 
>>>>>>> ff705000.spi.0
>>>>>>> [    1.769425] Creating 2 MTD partitions on "ff705000.spi.0":
>>>>>>> [    1.774925] 0x000000000000-0x000000800000 : "Flash 0 Raw Data"
>>>>>>> [    1.781942] 0x000000800000-0x000008000000 : "Flash 0 jffs2 
>>>>>>> Filesystem"
>>>>>>> [    1.788468] mtd: partition "Flash 0 jffs2 Filesystem" extends 
>>>>>>> beyond the end of device "ff705000.spi.0" -- size truncated to 
>>>>>>> 0x3800000
>>>>>>
>>>>>> I wonder if we might be missing some clock enable somewhere.
>>>>>>
>>>>>> Can you mail me the whole boot log ? (I'm using u-boot 2022.01 btw.)
>>>>>
>>>>> I tested with U-Boot 2022.01 as well:
>>>>>
>>>>>
>>>>> => run nfsboot_dinh
>>>>> Kernel image @ 0x1000000 [ 0x000000 - 0x54edd0 ]
>>>>> ## Flattened Device Tree blob at 02000000
>>>>>     Booting using the fdt blob at 0x2000000
>>>>>     Loading Device Tree to 09ff8000, end 09fffeb1 ... OK
>>>>>
>>>>> Starting kernel ...
>>>>>
>>>>> Deasserting all peripheral resets
>>>>> [    0.000000] Booting Linux on physical CPU 0x0
>>>>> [    0.000000] Linux version 5.17.0-rc3 (dinguyen@linux-builds1) 
>>>>> (arm-linux-gnue abihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 
>>>>> 7.5.0, GNU ld (GNU Binutils for U buntu) 2.30) #1 SMP Wed Feb 23 
>>>>> 08:51:18 CST 2022
>>>>> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), 
>>>>> cr=10c5387d
>>>>> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT 
>>>>> aliasing instructio n cache
>>>>> [    0.000000] OF: fdt: Machine model: Altera SOCFPGA Cyclone V SoC 
>>>>> Development  Kit
>>>>> [    0.000000] Memory policy: Data cache writealloc
>>>>
>>>> This is weird.
>>>>
>>>> One more thing, I have two SPI NORs on this CQSPI, one on each chip 
>>>> select, do you think that can make any difference ?
>>>>
>>>> Besides that, I used latest next for my tests, not latest linus tree.
>>>
>>> Let me test on latest next.
>>
>> Thank you
>>
>> If you cannot reproduce it there, drop this patch and I'll revisit 
>> this on my side.
> 
> Hmm...it doesn't look like the same error, but I'm getting this on the 
> -next. I disable QSPI and the error still shows up. I'll dig more into it.
> 
> [    1.685301] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 
> 5.17.0-rc5-next-20220222 #3
> [    1.692771] Hardware name: Altera SOCFPGA
> [    1.696771] Backtrace:
> [    1.699217]  dump_backtrace from show_stack+0x20/0x24
> [    1.704277]  r7:c0d03cc8 r6:c05fb6dc r5:c0b1d644 r4:60000093
> [    1.709919]  show_stack from dump_stack_lvl+0x48/0x54

This looks like something else and it doesn't even come from the CQSPI, 
maybe it is some temporary issue that's already fixed in the upcoming next.
diff mbox series

Patch

diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c
index b808c94641fa6..65f2c2449be09 100644
--- a/drivers/spi/spi-cadence-quadspi.c
+++ b/drivers/spi/spi-cadence-quadspi.c
@@ -1870,7 +1870,7 @@  static const struct cqspi_driver_platdata intel_lgm_qspi = {
 };
 
 static const struct cqspi_driver_platdata socfpga_qspi = {
-	.quirks = CQSPI_NO_SUPPORT_WR_COMPLETION,
+	.quirks = CQSPI_DISABLE_DAC_MODE | CQSPI_NO_SUPPORT_WR_COMPLETION,
 };
 
 static const struct cqspi_driver_platdata versal_ospi = {