facing problem in kernel init, Imprecise external abort (0x1c06) at ...........

M

Manish Jindgar

Guest
Hi,

I get a error says: "Imprecise external abort (0x1c06) at ......"

We get above error after the below print
"CPU: Testing write buffer coherency: OK"

I am booting linux kernel on Freescale Vybrid platform VF600

Has anyone faced this issue???

Regards
Manish
 


To properly help we need ALL of the log. Maybe upload the log to google drive, or some other service. In case you were wondering though:
Any external abort which may be recognized at a point when the instruction that caused that access has retired, is considered an 'imprecise' abort (e.g. any external access except accesses to Strongly ordered memory, loads to the pc or cpsr, loads done in low-interrupt latency mode, or the load portion of a SWP instruction). These imprecise aborts are recognized only when the 'A' bit in the CPSR has been cleared. In general, it is not possible to determine the precise instruction which caused the abort and the OS will typically respond by killing the failing application.
 
Hi,
I've attached the log file.
In the log, at location 0x80490ce6, we get the error msg:
<1>Unhandled fault: imprecise external abort (0x1c06) at 0xebeffdfa.
The logs after this are all incomplete with zeros inspersed amongst them. So, this is another problem other than kernel not initializing. For your assistance, I'm posting the complete error msgs for the garbled ones below (these i've taken from other forum). The error msgs are same but mem locations might be different.

Internal error: : 1c06 [#1]
Modules linked in:
CPU: 0 Not tainted (3.0.15-ts-armv7l #81)
PC is at kernel_thread_helper+0x0/0x10
LR is at kernel_thread_helper+0x0/0x10
pc : [<800358a8>] lr : [<800358a8>] psr: 00000093
sp : 8602fff8 ip : 00000000 fp : 00000000
r10: 00000000 r9 : 00000000 r8 : 00000000
r7 : 00000013 r6 : 8004dd20 r5 : 80063678 r4 : 00000000
r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : 00000000
Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 10c53c7d Table: 80004059 DAC: 00000015
Process swapper (pid: 2, stack limit = 0x8602e2e8)
Stack: (0x8602fff8 to 0x86030000)
ffe0: 1deef747 fe73ef5e
Backtrace: no frame pointer
Code: eb0cbf58 e89da800 80486e78 80411b94 (e121f007)


Regards,
Manish
 

Attachments

  • teraterm3.txt
    12.5 KB · Views: 1,480
no easier way??
Also, some more light on probable error cause will also be helpful.

Regards,
Manish
 
no easier way??
Also, some more light on probable error cause will also be helpful.

Regards,
Manish

Honestly probably not no. Looks like you need to debug..
From the ARM site:
In general, it is not possible to determine the precise instruction which caused the abort and the OS will typically respond by killing the failing application.
 
Last edited:
From searching the web, it looks like a dual core ARM based SoC.

Is this a custom kernel? What distro are you running?
 
Hi,
So we didn't try debugging but we masked the A flag in CPSR (ARM cortex A5), which was getting unmasked in 'arch/arm/kernel/process.c'. This prevented the abort and kernel boot progressed further. But after the print 'Freeing init memory', we again recieved error:
Freeing init memory: 156K
Unhandled fault: imprecise external abort (0x1c06) at 0x2ab69830
Kernel panic - not syncing: Attempted to kill init!
Backtrace:
[<80037ff4>] (dump_backtrace+0x0/0x10c) from [<8035bd8c>] (dump_stack+0x18/0x1c)
r6:9ffce000 r5:9ffd0000 r4:8048dc00 r3:8046549c
[<8035bd74>] (dump_stack+0x0/0x1c) from [<8035c108>] (panic+0x64/0x17c)
[<8035c0a4>] (panic+0x0/0x17c) from [<8004c3ec>] (do_exit+0x58c/0x634)
r3:804668bc r2:9ffd1e38 r1:9ffd1e38 r0:803ff72c
r7:9ffd0000
[<8004be60>] (do_exit+0x0/0x634) from [<8004c6f4>] (do_group_exit+0x44/0xb0)
r7:9ffd0000
[<8004c6b0>] (do_group_exit+0x0/0xb0) from [<80056d88>] (get_signal_to_deliver+0x138/0x364)
r4:00000007 r3:80000113
[<80056c50>] (get_signal_to_deliver+0x0/0x364) from [<8003717c>] (do_signal+0x6c/0x4fc)
[<80037110>] (do_signal+0x0/0x4fc) from [<80037ba4>] (do_notify_resume+0x50/0x5c)
[<80037b54>] (do_notify_resume+0x0/0x5c) from [<80035058>] (work_pending+0x24/0x28)
r4:ffffffff r3:9ffce000


Now, to test where we recieved the error (by putting multiple 'printk's), we found that probably the error was coming in 'run_init_process("/sbin/init")' in 'init/main.c'.
So can anyone suggest where is it going wrong?
 
In Unix-based computer operating systems, init (short for initialization) is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct or indirect ancestor of all other processes and automatically adopts all orphaned processes. Init is started by the kernel using a hard-coded filename, and if the kernel is unable to start it, a kernel panic will result. Init is typically assigned process identifier 1
I still think this is some kind of memory issue.
 
Hi all,
so good news! the error is now resolved!! actually the error was in sdhc0 initialization code in u-boot area. There was a variable 'no_snoop' which when zero, enabled cache snooping (I don't know what it is). We made it 1 and the code worked.

Thanks for your support!!
 

Members online


Top