关于triple fault

工作中遇到一个triple fault 的东西, 一脸懵逼。 这个fault 是 同事修改 ccx env 改出来的, 有关double fault 转载: http://www.lenky.info/archives/2012/04/1479
triple fault , spec 上一个example,
Example: A guest raises a #GP during delivery of which a #NP is raised (a scenario that, according to x86 rules, resolves to a #DF), and an intercepted #PF occurs during the attempt to deliver the #DF. Upon intercept of the #PF, EXITINTINFO indicates that the guest was in the process of delivering a #DF when the #PF occurred. The information about the intercepted page fault itself is encoded in the EXITCODE, EXITINFO1 and EXITINFO2 fields. If the VMM decides to repair and dismiss the #PF, it can resume guest execution by re-injecting (see “Event Injection” on page 479) the fault recorded in EXITINTINFO. If the VMM decides that the #PF should be reflected back to the guest, it must combine the event in EXITINTINFO with the intercepted exception according to x86 rules. In this case, a #DF plus a #PF would result in a triple fault or shutdown.
先记录问题,后续写理解,

个人初步理解,可能不对
本例中, 首先在代码执行过程中由于segment limit 产生一个 exception , #GP
代码进入handle处理这个exception的时候,需要先把当前的状态保存起来,一次需要读一些记录档当前状态的寄存器,在读寄存器的过程中, 又产生了一个#GP, 形成 Double Fault, 在之后的执行中, 又又遇到一个GP, 产生triple fault.

posted on 2019-08-02 11:01  老头去打猎  阅读(771)  评论(0编辑  收藏  举报

导航