KVM MMU: allow more shadow pages become asynchronous
v4 cover KVM MMU: allow more shadow pages become asynchronous
Changlog v4:
- fix the bug that reported by Marcelo
- fix the race in invlpg code
Changlog v3:
Those changes all form Avi's suggestion, thanks.
- use smart way to fix the bug in patch 1
- remove duplicates code in patch 5
- check error code and fix forgot release page in patch 9
- sync shadow pages in a batch instead of one by one
And, there is one TODO thing:
Marker shadow page as unsync at create time avoid write-protect, this idea is from Avi:
|Another interesting case is to create new shadow pages in the unsync state. |That can help when the guest starts a short lived process: we can avoid write |protecting its pagetables completely
I'll send the patch out after this patchset applied.
Changlog v2:
- when level is PT_DIRECTORY_LEVEL, the 'offset' should be 'role.quadrant << 8', thanks Avi for point it out
- keep invlpg code in paging_tmpl.h address Avi's suggestion
- split kvm_sync_page() into kvm_sync_page() and kvm_sync_page_transient() to clarify the code address Avi's suggestion
Hi Avi, Marcelo,
patch 5 and patch 6 are can't apply to current kvm tree, i'll rebase those two patches.
Marcelo, does this patchset fix your issue? I have tested it with Fedora12/Ubuntu/CentOS 32/64 guests, it works well.
Thanks,
Xiao