首页 > 解决方案 > 管理程序类型 1 外部中断处理

问题描述

我在处理类型 1 管理程序的外部中断时遇到问题,类型 2 在 Windows 10 上工作正常,但类型 1 导致 Windows 10 在登录屏幕中挂断。

这就是我启用外部中断的方式:在设置 cpu 时,我启用 VM 退出控制位 15“确认外部中断”和基于引脚的位 0“外部中断退出”,并且我在每个 cpu 上下文中为挂起的中断分配缓冲区。

当 VM 退出原因 1“外部中断退出”时,我执行 VMX 读取 0x4404“VM 退出中断信息”并检查位 31“有效”和位 10:8“中断类型”等于 0“外部中断”,也我检查 VMX 读取 0x4406“退出中断错误代码”的第 11 位,在注入中断之前,我检查是否可中断 VMX 读取 0x6820“访客 RFLAGS”位 9“中断启用标志”和 VMX 读取 0x4824“访客中断状态”位1 "blocking by mov ss", if guest interruptible VMX-write 0x4016 "VM-entry interrupt information field" and VMX-write 0x4018 "VM-entry error code" 如果错误代码有效,否则我将错误代码和中断信息保存到挂起的中断缓冲区并设置中断窗口退出基于主进程的位 2。

当VM退出原因7“中断窗口退出”时,我在分配的缓冲区中搜索挂起的中断,如果找到注入中断,否则清除中断窗口退出。

标签: windowsvirtual-machinevirtualizationinterrupt-handlinghypervisor

解决方案


推荐阅读