Debugging mips64:查找导致NMI看门狗重置的指令(错误epc寄存器)

Debugging mips64:查找导致NMI看门狗重置的指令(错误epc寄存器),debugging,linux-kernel,mips,virtual-memory,Debugging,Linux Kernel,Mips,Virtual Memory,我有一个在mips64上运行的设备,由于NMI看门狗重置,该设备会不时重新启动。我有err epc寄存器的内容,当NMI看门狗重置设备时,该寄存器保存指令寄存器的内容。err epc寄存器总是保存一个非常相似的地址,但并不总是完全相同的地址,这使我假设设备卡在一个循环中——可能是在执行NMI时 是否有一种方法可以通过仅具有err epc值来确定设备正在哪个模块中执行哪条指令,甚至最好是哪种方法?第一步是转储地址周围的内容虚拟内存,但我已经失败了 我已经检查了/proc/modules,并计算出所

我有一个在mips64上运行的设备,由于NMI看门狗重置,该设备会不时重新启动。我有err epc寄存器的内容,当NMI看门狗重置设备时,该寄存器保存指令寄存器的内容。err epc寄存器总是保存一个非常相似的地址,但并不总是完全相同的地址,这使我假设设备卡在一个循环中——可能是在执行NMI时

是否有一种方法可以通过仅具有err epc值来确定设备正在哪个模块中执行哪条指令,甚至最好是哪种方法?第一步是转储地址周围的内容虚拟内存,但我已经失败了

我已经检查了/proc/modules,并计算出所有模块都加载在虚拟内存的不同区域(失败的epc在0xFFFFFF80460980-0xFFFFFF804609D4的范围内,所有模块都在0xFFFFFFC0000000以上),因此我假设这是linux内核中的深层内容


非常感谢您提供有关如何进行的任何想法/提示

在MIPS64中,范围
0xffffffff8xxxxxxx
中的地址映射到
kseg0
,范围
0xffffffcxxxxxxx
中的地址映射到
kseg2

这台机器上似乎没有MMU,NMI是在运行在kseg0中的应用程序中触发的,而不是在内核中触发的。如果您能够知道正在运行的应用程序,那么应该能够围绕失败的EPC分解代码