在 KVM 之外处理 CPU 个异常
Handle CPU exceptions outside of KVM
我想在 KVM 之外捕获和处理 CPU 异常。我怎样才能做到这一点?
/* KVM_EXIT_EXCEPTION */
struct {
__u32 exception;
__u32 error_code;
} ex;
Unused.
来自文档。这个退出状态显然没有实现。
然而,要处理异常 afaik,无论如何您都必须先退出来宾。
我不会在来宾中编写 IDT,请放心。
所以,我通过处理非特权异常(在用户模式下)解决了这个问题,并使用任何方法简单地陷入管理程序,比如写入一个陷阱 MMIO 地址。在我的例子中,来宾总是没有特权并且不能修改它自己的页面表,因此主机将在进入来宾之前设置所有内容。
这完全可以正常工作,但是需要远程处理回溯。
我想在 KVM 之外捕获和处理 CPU 异常。我怎样才能做到这一点?
/* KVM_EXIT_EXCEPTION */
struct {
__u32 exception;
__u32 error_code;
} ex;
Unused.
来自文档。这个退出状态显然没有实现。 然而,要处理异常 afaik,无论如何您都必须先退出来宾。
我不会在来宾中编写 IDT,请放心。
所以,我通过处理非特权异常(在用户模式下)解决了这个问题,并使用任何方法简单地陷入管理程序,比如写入一个陷阱 MMIO 地址。在我的例子中,来宾总是没有特权并且不能修改它自己的页面表,因此主机将在进入来宾之前设置所有内容。
这完全可以正常工作,但是需要远程处理回溯。