This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM437x Linux SDK error message about L3 interconnect

Guru 15510 points
Other Parts Discussed in Thread: AM4372

Hi,

I have questions about AM437x Linux SDK.

My customer are using "ti-processor-adk-linux-am437x-evm-01.00.00.00" and

they modified AM437x-GP-EVM base DTS(Device Tree Source) for their custom board.

But following error occured and having kernel panic:

"

[    0.207377] omap_l3_noc 44000000.ocp: L3 debug error: target 8 mod:0 (unclearable)

[    0.207406] omap_l3_noc 44000000.ocp: L3 debug error: target 13 mod:1 (unclearable)

[    0.207454] omap_l3_noc 44000000.ocp: L3 application error: target 8 mod:0 (unclearable)

[    0.207473] ------------[ cut here ]------------

[    0.207506] WARNING: CPU: 0 PID: 1 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x234/0x35c()

[    0.207519] 44000000.ocp:L3 Custom Error: MASTER M2 (64-bit) TARGET L4_WKUP (Read): Data Access in User mode during Functional access

"

Q1. What does following message mean and what kind of case does this error occur?

"44000000.ocp:L3 Custom Error: MASTER M2 (64-bit) TARGET L4_WKUP (Read): Data Access in User mode during Functional access"

 

best regards,

g.f.

  • Hi g.f. 

    g.f. said:
    Q1. What does following message mean and what kind of case does this error occur?

    Custom errors in L3 interconnect basically mean that the slave in the L3 communication returned a SResp=ERROR. 

    This error message means that the error is NOT internal to the L3 interconnect (it is not caused by unsupported l3 path, or firewall violation or address error).  You should look for the root of this outside of the interconnect, perhaps erroneous setting of some module (no clocks or memory fault).

    Unfortunately, I am not able to share more details about this, because L3 registers are not publicly available.  

    Best Regards, 
    Yordan

  • Hi Yordan,

    Thank you for the reply.

    I'm sorry but can I ask one more question?
    The customer are modifying DTS. Is the modification of DTS might cause this error?

    best regards,
    g.f.
  • What did they changed?

    I thinkyes, depends on what settings have they applied to the peripheral (can you share the modifications?). Later, if it is involved in L3 communication, it could return an error response, which is logged by the interconnect as a custom error.

    Best Regards,
    Yordan
  • Hi Yordan,

    Thank you so much for the reply.
    I will ask my customer about the modification of DTS.
    I will be back as soon as possible, so please wait for the reply.

    best regards,
    g.f.
  • Hi Yordan,

    I attached the DTS file(am437x-gp-evm.dts) which they are using.

    The modified part is surrounded with "#if - #endif".

    1732.am437x-gp-evm.dts.txt

    best regards,

    g.f.

  • Hi,

    Settings look ok.
    Just one remark, I see in some #if 0 (or #if 1) there is only status="okay", without any IP configurations, i.e.:
    &gpmc {
    #if 1 /* for Test */
    status = "okay";
    #else
    status = "okay"; /* Disable eMMC when enabling GPMC/NAND */
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&nand_flash_x8_default>;
    pinctrl-1 = <&nand_flash_x8_sleep>;
    ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */
    nand@0,0 {
    reg = <0 0 4>; /* device IO registers */
    ti,nand-ecc-opt = "bch16";

    Or
    &uart0 {
    status = "okay";
    #if 0 /* for Test */
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&uart0_pins_default>;
    pinctrl-1 = <&uart0_pins_sleep>;
    #endif /* for Test */
    };

    There were a few other IPs set this way. In this case, gpmc will be enabled (status = "okay") with reset gpmc conf values... and if later (in boot process or kernel) it is used as a communication interface it may cause an error.

    Is it possible to clean the dts from the #if 0 & #if 1 directives and test with the intended IP settings? Also regarding the Custom error in L3, were they modifying only the dts, or there were some IPs driver modifications as well?

    Best Regards,
    Yordan
  • Hi Yordan,

    Thank you for checking the attached dts file.

    As far as I know, they only modified the dts file.
    But I will ask them again to make me sure.

    And I will ask them to clean the dts from the #if 1 or #if 0 directives.

    best regards,
    g.f.
  • Hi Yordan,

    I ask my customer about the following part you asked:
    >There were a few other IPs set this way. In this case, gpmc will be enabled (status = "okay") with
    >reset gpmc conf values... and if later (in boot process or kernel) it is used as a
    >communication interface it may cause an error.

    The are setting these IPs at boot period, so that they are not setting in the dts files.

    They tried cleaning the dts from the #if 0 & #if 1 directives, but the result was same.
    And they only modified dts files.

    Is there any file need to be modified for customer board?

    best regards,
    g.f.
  • Hi,

    Can you attach the full log (dmesg or boot log whichever you refer to in your first post)?

    g.f. said:
    Is there any file need to be modified for customer board?

     

    The files, that usually need to be modified for custom boards are the dts file & defconfig (defconfig is optional, depending on which modules you'd like to be built in the kernel and which ones to be loadable). 

    In this case this could be some race condition/bus conflict: 

    "[    0.207519] 44000000.ocp:L3 Custom Error: MASTER M2 (64-bit) TARGET L4_WKUP (Read): Data Access in User mode during Functional access" 

    It is possible that some module tries to access memory region already accessed/locked by another IP and it returns an error through the L3. 

    Best Regards, 

    Yordan

  • Hi Yordan,

    Thank you for the reply.

    I attached the boot log file. Please take a look.

    I understood about the file which usually need to be modified.

    Thank you.

    5340.AM437x_Linux_boot_log.txt

    best regards,

    g.f.

  • Hi g.f. & Yordan,

    I have the same issue as you got.

    Do you have any update for this issue?

    How can I do to solve this?

    Best Regards,

    Wayne Kuo

  • Did this problem get resolved? I'm having the exact same issue. My boot log looks almost identical, starting with the "L3 debug error", dump, and finally a panic after the "imprecise external abort". Interestingly, if I use a initramfs as the root file system, Linux comes up ok even after the faults; it's only when I use a NFS or NAND based root fs that I have a panic.

    Like the original poster, I've modified the eval board device tree source file, mostly due to new pin assignments (from the pin mux tool device tree file) for a custom board.

    I added printk statements to the kernel and see that the problems start when the device '44000000.ocp' is added (defined in the am4372.dtsi file); specificially, when the debug interrupt handler is setup in function omap_l3_probe in file omap_l3_noc.c. I'm not sure if the problem is cause by the interrupt handler itself, or if the handler is just responding to a pending interrupt from a preexisting error.

    Any ideas will be appreciated.

     

  • Hi g.f.
    when I try to triger EDMA start transfers by PRU1_ICSS1,the kernel printf this message;and then crashed;What does following message mean?
    WARNING: CPU: 0 PID: 43 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x234/0x354()
    ---[ end trace 0000000000000002 ]---
  • Hi user4675462,

    This error usually come up when trying to access module that is disabled on region that is locked. You should check at which register/address access exactly this error is generating. See also the below e2e threads:

    e2e.ti.com/.../452551
    e2e.ti.com/.../475372

    Regards,
    Pavel
  • Hi
    Thanks for your answer,I have sloved this problems,because the destination address was wrong;