Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what do these kernel panic errors mean?

I insmod a kernel module on ARM platform and I get a kernel panic which causes this three errors to be printed to screen

  1. Unhandled fault: external abort on non-linefetch (0x008)
  2. Unhandled fault: imprecise external abort (0xc06)
  3. Kernel panic - not syncing: Fatal exception in interrupt

    • What are those values in parenthesis ?
    • What does 3 mean It sounds like scheduling while atomic but there is no such thing in a kernel module.?
like image 378
0x90 Avatar asked Apr 08 '13 21:04

0x90


1 Answers

The values in parenthesis are the ifsr (instruction fault status) register. There are many causes for aborts and these give a specific cause. There are some tables in the kernel that handle particular fault causes and other have a handler which does a printk and aborts a task or can panic() the kernel. See: arm/mm/fault.c. The value is probably not valuable unless you are developing a fault handler. Although it can give an idea of what the fault is about, it is better just to get the PC and look at the code at that address (which I think was already printed?).

These faults can occur anywhere; in a user task, a kernel task or an interrupt handler, etc. Since your interrupt handler has crashed, Linux decides to stop everything and not bother proceeding. Otherwise, you could corrupts disks (even more), etc.

Note: Each fault status register has an abort.S file which is different for the particular ARM CPU. For example see abort-ev7.S v7_early_abort. This is put in a processor table which is matched at boot time.

  1. Unhandled fault - trying to read memory that is not mapped (via MMU).
  2. Kernel panic - an unhandled fault occurred in code deemed un-recoverable.
like image 172
artless noise Avatar answered Nov 12 '22 02:11

artless noise