Part Number: AM5726
Tool/software:
Hi all,
I'm in the process of moving our AM5726 based product from VxWorks to Linux (6.15) and all is going well but I've run into an issue that has me stumped I was hoping someone could offer some clues on. I'm using yocto (scarthgap) for linux and everything is working ok with that. Our product uses one of the C66 DSP devices and everything with that is working with one exception. The problem I'm running into is the C66 application (SYS/BIOS app) uses one of the the system timers (timer 5) but when I enable use of that timer in the C66 application linux gets hammered with interrupts even if I don't actually start the timer. E.G. Simply doing SYS/BIOS Timer_create() causes the issue. Pasted below is what is getting shown on the linux system console. I've seen this sort of thing many times with other things during this porting adventure and it has always seemed to be related to one of two things. Either the module being accessed from the DSP was not enabled which was usually fixed by getting the correct information into the DTS. Or the issue was a result of not having an entry in the DSPs resource table for the range the DSP processor was attempting to access and that was easily fixed by adding an entry to the resource table. The main issue I have with the information shown by linux is a matter of how to interpret what is being shown. Specifically, is there a way to determine the address the DSP was attempting to access that caused the info to be printed. The info below shows the DSP was attempting to read something on L4_PER3_P3 but there are a number of modules on L4_PER3_P3. What I'm wondering is if there is anything in the information shown that can be used to determine the actual module on that interconnect that is being accessed? Also, is there a way to know if the reason for the interrupt is a result of a missing entry in the DSPs resource table or a result of the module not being enabled? The blue highlighted text below is what tells me the DSP attempted a read via it's MDMA device (through IOMMU0) from something on the L4_PER3_P3 interconnect. The portion highlighted in green is usually what I see when attempting to access a module that isn't enabled. Is that the correct interpretation of that text? TIA for any guidance anyone can offer.
[ 829.434143] ------------[ cut here ]------------
[ 829.438781] WARNING: CPU: 0 PID: 0 at /drivers/bus/omap_l3_noc.c:138 l3_interrupt_handler+0x348/0x394
[ 829.448059] 44000000.l3-noc:L3 Custom Error: MASTER DSP1_MDMA TARGET L4_PER3_P3 (Read): Data Access in User mode during Functional access
[ 829.460449] Modules linked in:
[ 829.463531] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 6.1.80-ti #1
[ 829.471221] Hardware name: Generic DRA74X (Flattened Device Tree)
[ 829.477355] unwind_backtrace from show_stack+0x18/0x1c
[ 829.482635] show_stack from dump_stack_lvl+0x40/0x4c
[ 829.487701] dump_stack_lvl from __warn+0x80/0x150
[ 829.492553] __warn from warn_slowpath_fmt+0x1f8/0x200
[ 829.497711] warn_slowpath_fmt from l3_interrupt_handler+0x348/0x394
[ 829.504119] l3_interrupt_handler from __handle_irq_event_percpu+0x5c/0x204
[ 829.511108] __handle_irq_event_percpu from handle_irq_event+0x40/0x88
[ 829.517700] handle_irq_event from handle_fasteoi_irq+0xbc/0x224
[ 829.523742] handle_fasteoi_irq from generic_handle_domain_irq+0x30/0x40
[ 829.530487] generic_handle_domain_irq from gic_handle_irq+0x6c/0x80
[ 829.536895] gic_handle_irq from generic_handle_arch_irq+0x58/0x78
[ 829.543121] generic_handle_arch_irq from __irq_svc+0x88/0xc8
[ 829.548889] Exception stack(0xc1701ef0 to 0xc1701f38)
[ 829.553985] 1ee0: 00000000 00000000 fe600000 00000000
[ 829.562194] 1f00: c170fa00 c170fa00 c170b090 c170b0f0 00000000 c16c7ee8 00000000 c1407bb4
[ 829.570434] 1f20: ffffffff c1701f40 c012714c c0109214 600f0013 ffffffff
[ 829.577056] __irq_svc from arch_cpu_idle+0x28/0x44
[ 829.582000] arch_cpu_idle from default_idle_call+0x34/0x11c
[ 829.587677] default_idle_call from do_idle+0x218/0x2ac
[ 829.592956] do_idle from cpu_startup_entry+0x30/0x34
[ 829.598022] cpu_startup_entry from rest_init+0xd8/0xdc
[ 829.603302] rest_init from arch_post_acpi_subsys_init+0x0/0x18
[ 829.609252] ---[ end trace 0000000000000000 ]---
[ 829.613922] l3_handle_target(c3b95dc0, f0500000, c1803a64, 1b)
[ 829.619781] l3_handle_target: base=f0500e00, tm=f0500e68, th=f0500e6c, ti=f0500e64
[ 829.627410] ------------[ cut here ]------------
Mike Lynch