KVM: MMU: fix infinite fault access retry
authorXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Tue, 8 Jan 2013 06:36:51 +0000 (14:36 +0800)
committerMarcelo Tosatti <mtosatti@redhat.com>
Thu, 10 Jan 2013 17:28:30 +0000 (15:28 -0200)
commit7751babd3c6d365316e7a405f516bdd0bc7cec60
tree378e6855a6faa626f214e9df98adff27203d7f89
parentc22885050e651c2f5d2a1706cdc2eb38698db968
KVM: MMU: fix infinite fault access retry

We have two issues in current code:
- if target gfn is used as its page table, guest will refault then kvm will use
  small page size to map it. We need two #PF to fix its shadow page table

- sometimes, say a exception is triggered during vm-exit caused by #PF
  (see handle_exception() in vmx.c), we remove all the shadow pages shadowed
  by the target gfn before go into page fault path, it will cause infinite
  loop:
  delete shadow pages shadowed by the gfn -> try to use large page size to map
  the gfn -> retry the access ->...

To fix these, we can adjust page size early if the target gfn is used as page
table

Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/mmu.c
arch/x86/kvm/paging_tmpl.h