QEMU有一个用于MCE注入的内置机制。 然而,该机制并不完美,QEMU只是用部分数据填充MCA寄存器,然后触发MCE。
我想在触发MCE之前添加真正的损坏。
我尝试的第一件事是按照英特尔软件开发人员手册中的说明添加所有MSR,但似乎客户操作系统仍然不知道我添加的新寄存器。
我做了以下事情: 1.在CPUX86State中添加了MSR。 2.增加了对helper_rdmsr&中读取新MSR的支持。 helper_wrmsr。
为什么客户操作系统仍然没有意识到这些MSR?
我还试图在触发MCE之前破坏EIP,但是客户操作系统刚刚崩溃而没有到达MCE处理程序。
在我的理解中,MCE处理程序正是为了处理这些错误。 我错过了什么?