TDA4VM: TDA4VM-SK : kernel panic after dsp firmware loaded

Part Number: TDA4VM


kernel: Linux version 6.12.17-ti-00781-g95010a7c186b (oe-user@oe-host) (aarch64-poky-linux-gcc (GCC) 13.3.0, GNU

After loading freertos_test_task_switch_c66xdsp_1_release.xe66 and linking to it from /lib/firmware

The firmware was built scripts in pdk_jacinto_08_04_00_21. 

freertos_test_ut_c66xdsp_1_release.zip

The kernel crashes but the dsp is able to run the firmware.

[    1.465241] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 14
[    1.472452] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64, Policers 8  
[    1.479820] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010a, freq:50000
[    1.490402] am65-cpts 310d0000.cpts: CPTS ver 0x4e8a010a, freq:200000000, ad0
[    1.499104] omap-mailbox 31f80000.mailbox: omap mailbox rev 0x66fc7100       
[    1.505961] omap-mailbox 31f81000.mailbox: omap mailbox rev 0x66fc7100       
[    1.512888] omap-mailbox 31f82000.mailbox: omap mailbox rev 0x66fc7100       
[    1.519740] omap-mailbox 31f83000.mailbox: omap mailbox rev 0x66fc7100       
[    1.526561] omap-mailbox 31f84000.mailbox: omap mailbox rev 0x66fc7100       
[    1.533611] k3-dsp-rproc 4d80800000.dsp: assigned reserved memory node c66-d0
[    1.542558] k3-dsp-rproc 4d80800000.dsp: configured DSP for IPC-only mode    
[    1.549449] remoteproc remoteproc0: 4d80800000.dsp is available              
[    1.555385] remoteproc remoteproc0: attaching to 4d80800000.dsp              
[    1.561303] Unable to handle kernel paging request at virtual address ffff80d
[    1.569203] Mem abort info:                                                  
[    1.571987]   ESR = 0x0000000096000005                                       
[    1.575726]   EC = 0x25: DABT (current EL), IL = 32 bits                     
[    1.581025]   SET = 0, FnV = 0                                               
[    1.584070]   EA = 0, S1PTW = 0                                              
[    1.587202]   FSC = 0x05: level 1 translation fault                          
[    1.592068] Data abort info:                                                 
[    1.594939]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000                   
[    1.600412]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0                        
[    1.605449]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0                     
[    1.610748] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000083158000     
[    1.617433] [ffff80004e91619d] pgd=0000000000000000, p4d=10000000835fb003, p0
[    1.626119] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP          
[    1.632368] Modules linked in:                                               
[    1.635411] CPU: 0 UID: 0 PID: 39 Comm: kworker/u8:2 Not tainted 6.12.17-ti-1
[    1.644350] Hardware name: Texas Instruments J721E SK (DT)                   
[    1.649817] Workqueue: events_unbound deferred_probe_work_func               
[    1.655645] pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)  
[    1.662587] pc : rproc_handle_resources.constprop.0+0x64/0x18c               
[    1.668409] lr : rproc_boot+0x37c/0x57c                                      
[    1.672231] sp : ffff800081d2ba10                                            
[    1.675532] x29: ffff800081d2ba10 x28: 0000000000000000 x27: 0000000000000000
[    1.682652] x26: 0000000000000000 x25: ffff0008011a51c0 x24: ffff80004e91619d
[    1.689771] x23: 0000000000000000 x22: ffff00080219e838 x21: ffff800081531f90
[    1.696889] x20: 0000000000000000 x19: ffff00080219e800 x18: 0000000000000006
[    1.704007] x17: 642d363663206564 x16: 6f6e2079726f6d65 x15: fb945feea70f5f97
[    1.711127] x14: 12b559cf933d062c x13: fb945feea70f5f97 x12: 12b559cf933d062c
[    1.718246] x11: 5c5c75c9e0a28957 x10: 3dfbe55c02c16a2f x9 : fc37bfad7fb57673
[    1.725364] x8 : 9d886772579c39de x7 : 715d50510adbf9c7 x6 : bf57f41015e9f8ef
[    1.732482] x5 : ffff00080223a800 x4 : ffff800086000000 x3 : 00000000376e9f5f
[    1.739601] x2 : 00000000c891619d x1 : ffff80004e9161a1 x0 : ffff800086000000
[    1.746721] Call trace:                                                      
[    1.749155]  rproc_handle_resources.constprop.0+0x64/0x18c                   
[    1.754626]  rproc_boot+0x37c/0x57c                                          
[    1.758101]  rproc_add+0x184/0x190                                           
[    1.761490]  devm_rproc_add+0x24/0x88                                        
[    1.765138]  k3_dsp_rproc_probe+0x33c/0x4c4                                  
[    1.769308]  platform_probe+0x68/0xc4                                        
[    1.772960]  really_probe+0xbc/0x29c                                         
[    1.776524]  __driver_probe_device+0x78/0x12c                                
[    1.780867]  driver_probe_device+0xd8/0x15c                                  
[    1.785036]  __device_attach_driver+0xb8/0x134                               
[    1.789467]  bus_for_each_drv+0x88/0xe8                                      
[    1.793289]  __device_attach+0xa0/0x190                                      
[    1.797113]  device_initial_probe+0x14/0x20                                  
[    1.801282]  bus_probe_device+0xac/0xb0                                      
[    1.805105]  deferred_probe_work_func+0x88/0xc0                              
[    1.809622]  process_one_work+0x148/0x28c                                    
[    1.813621]  worker_thread+0x2d0/0x3d8                                       
[    1.817358]  kthread+0x110/0x114                                             
[    1.820575]  ret_from_fork+0x10/0x20                                         
[    1.824140] Code: 6b020063 8b22c098 91001301 540007c4 (b862c880)             
[    1.830215] ---[ end trace 0000000000000000 ]---                             
                                                                                
execution time for task switches = 4880 ms                                      
number of task switches = 2000000                                               
time per task switch (semaphore give/take) = 2440 ns                            
                                                                                
execution time for task switches = 3363 ms                                      
number of task switches = 2000000                                               
time per task switch (direct-to-task notification give/take) = 1681 ns          
                                                                                
execution time for task yields = 1031 ms                                        
number of task yields = 1000000                                                 
time per task yield = 1031 ns                                                   
                                                                                
execution time for task - ISR - task switches = 669 ms                          
number of task switches = 1000000, num ISRs = 1000000                           
time per task - ISR - task switch (semaphore give/take) = 669 ns                
                                                                                
execution time for task - ISR - task switches = 743 ms                          
number of task switches = 1000000 , num ISR = 1000000                           
time per task - ISR - task switch (direct-to-task notification give/take) = 743s
                                                                                
execution time for task - ISR - task - task switches = 4878 ms                  
number of ISRs = 2000000.Ping ISR Count:1000000, Pong ISR Count:1000000         
time per task - ISR - task switch (semaphore give/take) = 2439 ns               
                                                                                
execution time for task - ISR - task switches = 3789 ms                         
number of task switches = 2000000                                               
number of isrs = 1000000,1000000                                                
time per task - ISR - task switch (direct-to-task notification give/take) = 189s
                                                                                
execution time for task switches = 4667 ms                                      
number of task switches = 2000000                                               
time per task switch (semaphore give/take) = 2333 ns                            
                                                                                
value after pow() computed b/w task switch = 1.8597                             
expected value = 1.8597                                                         
                                                                                
test_taskToIsrWithFloatOperations PASSED                                        
                                                                                
All tests have passed!! 

 Are there any changes to the linker file that we should be aware of ? and could you please share the procedure if any ?