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.

Unhandled fault: imprecise external abort (0x1406)

Running a user space application with custom kernel modules to access PL.  Petalinux 2015.2.1.  Linux LTS 3.18.

After running a while, it dies with the kernel panic message below.  

============================================================================

Unhandled fault: imprecise external abort (0x1406) at 0x0013109c

Internal error: Oops - BUG: 1406 [#1] PREEMPT SMP ARM
Modules linked in: m1553brm(O) fifocustom(O) directdma(O) uartlitecustom(O)fifocustom 4000e500.fifoCustom12: FifoCustomRelease: releasing device [12]

xilinx_can gpio_xilinx i2c_dev i2c_xiic spidev spi_xilinx fpga(O) xilinx_xadc industrialio_triggered_buffer irq_xilinx_intc ipv6
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G O 3.18.0-xilinx #2
task: 41835d28 ti: 4182a000 task.ti: 4182a000
PC is at cpuidle_enter_state+0x4c/0xc4
LR is at ktime_get+0x9c/0xc4
pc : [<4035c294>] lr : [<4005e0e8>] psr: 900f0013
sp : 4182bf90 ip : 00000008 fp : 4182a000
r10: 00000000 r9 : 4185e658 r8 : 4185e658
r7 : 00000e26 r6 : 89391412 r5 : 00000000 r4 : 77790f30
r3 : 00000e26 r2 : 893a1915 r1 : 00000e26 r0 : 893a1915
Flags: NzcV IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 18c5387d Table: 0108404a DAC: 00000015
Process swapper/0 (pid: 0, stack limit = 0x4182a238)
Stack: (0x4182bf90 to 0x4182c000)
bf80: 893a1915 00000e26 41828b00 77790f30
bfa0: 41827f28 40475e70 00000000 4004808c 40478518 41832400 00000000 40637bc0
bfc0: ffffffff ffffffff 4063766c 00000000 00000000 40661d40 41866594 4183247c
bfe0: 40661d3c 41836e0c 0000406a 413fc090 00000000 00008074 00000000 00000000
[<4035c294>] (cpuidle_enter_state) from [<4004808c>] (cpu_startup_entry+0x174/0x1f4)
[<4004808c>] (cpu_startup_entry) from [<40637bc0>] (start_kernel+0x318/0x378)
Code: e1a0000d ebf4076f e1cd00d0 f1080080 (e0500006)
---[ end trace c1ed5a0ee0f6a541 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
CPU1: stopping
CPU: 1 PID: 1864 Comm: ets Tainted: G D O 3.18.0-xilinx #2
[<40014814>] (unwind_backtrace) from [<40010d68>] (show_stack+0x10/0x14)
[<40010d68>] (show_stack) from [<4046f6e4>] (dump_stack+0x84/0xc8)
[<4046f6e4>] (dump_stack) from [<400131e8>] (ipi_cpu_stop+0x3c/0x6c)
[<400131e8>] (ipi_cpu_stop) from [<400137d4>] (handle_IPI+0x64/0x84)
[<400137d4>] (handle_IPI) from [<400085ec>] (gic_handle_irq+0x54/0x5c)
[<400085ec>] (gic_handle_irq) from [<400119c4>] (__irq_usr+0x44/0x60)
Exception stack(0x7397ffb0 to 0x7397fff8)
ffa0: 36e0b7c0 0013ac60 ffffffe0 00000021
ffc0: 0013ac60 00000020 0000ddc0 00000000 00000000 00000000 36fd5000 3ebd3914
ffe0: 000000ec 3ebd38a8 00016abc 36d4768c 20010010 ffffffff
---[ end Kernel panic - not syncing: Attempted to kill the idle task!

  • Hi Sundeep,

    When you look into the abort, it is external abort. External abort, when referred to means external to MMU. I could see DMA, FIFO etc, terms in your panic logs. Would suggest to check your DMA related code.

    1. What is the hardware ?
    2. What is the software package used ? Is it TI provided ?
    3. How many times do you see the crash ? Is it crashing at the same place(I doubt it would).
    4. Can you check in your System.map in root folder to check few register values 4185e658, 4185e658 (r9 : 4185e658 r8 : 4185e658) point to any function. That could give clue.
  • 1) It's a Zynq 7020.

    2) Just Petalinux provided by xilinx.  It's Xilinx provided toolchain for running Linux on the hardware.

    3) It occurs after several hours of continuous running.  

    4) No, they don't point to any function in the system.map.  The error indicates it's happening during the kernel idle task.

  • 4) No, they don't point to any function in the system.map.  The error indicates it's happening during the kernel idle task.

    Yeah, it is obvious from the PC that it is from cpu Idle Task. Have you modified/customized the kernel core code ? If not, it is due to the custom kernel modules misbehaving. Have you tried to run for a long duration, without inserting the custom kernel modules ? Thereby you can make sure your kernel is stable.