KVM: x86: fix possible infinite loop caused by reexecute_instruction
authorXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Tue, 21 Aug 2012 02:57:42 +0000 (10:57 +0800)
committerAvi Kivity <avi@redhat.com>
Wed, 22 Aug 2012 12:08:49 +0000 (15:08 +0300)
commit8e3d9d061b5d132217629e7b5635ff0c02488e65
tree5af8ab12b3a61d46157d665ad0898b1ad0fc135e
parent8fbe6a541f50eeec5e3e49bd92db23ade9496673
KVM: x86: fix possible infinite loop caused by reexecute_instruction

Currently, we reexecute all unhandleable instructions if they do not
access on the mmio, however, it can not work if host map the readonly
memory to guest. If the instruction try to write this kind of memory,
it will fault again when guest retry it, then we will goto a infinite
loop: retry instruction -> write #PF -> emulation fail ->
retry instruction -> ...

Fix it by retrying the instruction only when it faults on the writable
memory

Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/x86.c