KVM: Update shadow pte on write to guest pte
authorAvi Kivity <avi@qumranet.com>
Tue, 1 May 2007 13:53:31 +0000 (16:53 +0300)
committerAvi Kivity <avi@qumranet.com>
Mon, 16 Jul 2007 09:05:39 +0000 (12:05 +0300)
commit0028425f647b6b78a0de8810d6b782fc3ce6c272
tree8afece215ec531f993c28cc3dee17b0c2c1dd3b1
parentfce0657ff9f14f6b1f147b5fcd6db2f54c06424e
KVM: Update shadow pte on write to guest pte

A typical demand page/copy on write pattern is:

- page fault on vaddr
- kvm propagates fault to guest
- guest handles fault, updates pte
- kvm traps write, clears shadow pte, resumes guest
- guest returns to userspace, re-faults on same vaddr
- kvm installs shadow pte, resumes guest
- guest continues

So, three vmexits for a single guest page fault.  But if instead of clearing
the page table entry, we update to correspond to the value that the guest
has just written, we eliminate the third vmexit.

This patch does exactly that, reducing kbuild time by about 10%.

Signed-off-by: Avi Kivity <avi@qumranet.com>
drivers/kvm/mmu.c
drivers/kvm/paging_tmpl.h