Linux 这些内核死机错误意味着什么?
ILinux 这些内核死机错误意味着什么?,linux,module,linux-kernel,arm,Linux,Module,Linux Kernel,Arm,IinsmodARM平台上的一个内核模块,我得到一个内核死机,导致这三个错误被打印到屏幕上 未处理的故障:非linefetch(0x008)上的外部中止 未处理的故障:不精确的外部中止(0xc06) 内核死机-不同步:中断中出现致命异常 括号中的值是什么 3是什么意思听起来像是原子调度,但实际上是原子调度 在内核模块中没有这样的东西 括号中的值是ifsr()寄存器。中止的原因有很多,这些都给出了具体的原因。内核中有一些表处理特定的故障原因,另一些表有一个处理程序,它执行printk并中止任务
insmod
ARM平台上的一个内核模块,我得到一个内核死机,导致这三个错误被打印到屏幕上
未处理的故障:非linefetch(0x008)上的外部中止
未处理的故障:不精确的外部中止(0xc06)
内核死机-不同步:中断中出现致命异常
- 括号中的值是什么
是什么意思听起来像是原子调度,但实际上是原子调度 在内核模块中没有这样的东西3
括号中的值是
ifsr
()寄存器。中止的原因有很多,这些都给出了具体的原因。内核中有一些表处理特定的故障原因,另一些表有一个处理程序,它执行printk
并中止任务,或者可以panic()
内核。请参阅:。除非您正在开发错误处理程序,否则该值可能没有价值。虽然它可以给出故障的原因,但最好是拿到PC
并查看该地址的代码(我认为已经打印了?)
这些故障可能发生在任何地方;在用户任务、内核任务或中断
处理程序等中。由于您的中断
处理程序已崩溃,Linux决定停止所有操作,不再继续。否则,可能会损坏磁盘(甚至更多),等等
注意:每个都有一个abort.S文件,这对于特定的ARM CPU是不同的。例如,请参见v7\u early\u abort
。这被放入一个在引导时匹配的文件中
很抱歉,这些表最近被移动到单独的
C
文件中。有关将ifsr
映射到函数类型的表,请参见:和。至少在2.6.36中,这些表位于fault.c
中。我认为,与未映射的页面相比,一些FSR代码可能指示硬件
错误;这取决于CPU(即ARMV5、ARMV8等)。您可能已经正确设置了设备映射。一种常见情况是,外围设备的时钟未启用,并且设备不响应总线请求;特别是外部中止类型的消息,可能是由于缺少clk\u prepare\u enable()
。