Zero-Tang / NoirVisor

The Grimoire Hypervisor solution for x86 Processors with experimental nested virtualization support. Remastering with Rust in progress.
MIT License
474 stars 81 forks source link

您好前辈,向您请教一个问题。 #28

Closed progromyang closed 2 years ago

progromyang commented 2 years ago

在intel处理器处理vt时,我发现有时候会因为 Expected Exit Reason: 3,INIT signal 初始化信号而陷入VT 我翻阅了intel手册,对比了自己的代码,我的代码里 没有明确的标记要接管这个INIT signal 信号, 但是他确实无时间规律的陷入VT,请问我怎样可以关闭这个 INIT事件的陷入?

Zero-Tang commented 2 years ago

在操作系统完成启动之后,不应该再收到INIT信号了,否则是严重的逻辑错误,收到INIT信号的逻辑处理器将无法恢复到收到信号前的状态。如果你会收到INIT信号,就应该检查是谁发了INIT信号,而不是考虑怎么关闭INIT信号引起的VM-Exit。比方说,EPT映射有误,把某个页指到了Local APIC页上。 此外就是,在Intel上,INIT信号是必然引起VM-Exit的,你关不掉它的。而在AMD上即便是可以选择不拦截INIT,未被拦截的INIT信号也会引起处理器发生无法预测行为。

progromyang commented 2 years ago

真的是听君一席话 ,胜读十年书。非常感谢前辈的解答, 茫茫技术海洋里能遇到前辈这盏明灯非常有幸。 再次感谢前辈的解答,谢谢 /抱拳