• Xiao Guangrong's avatar
    KVM: MMU: lazily drop large spte · c126d94f
    Xiao Guangrong authored
    Currently, kvm zaps the large spte if write-protected is needed, the later
    read can fault on that spte. Actually, we can make the large spte readonly
    instead of making them un-present, the page fault caused by read access can
    be avoided
    
    The idea is from Avi:
    | As I mentioned before, write-protecting a large spte is a good idea,
    | since it moves some work from protect-time to fault-time, so it reduces
    | jitter.  This removes the need for the return value.
    
    This version has fixed the issue reported in 6b73a960, the reason of that
    issue is that fast_page_fault() directly sets the readonly large spte to
    writable but only dirty the first page into the dirty-bitmap that means
    other pages are missed. Fixed it by only the normal sptes (on the
    PT_PAGE_TABLE_LEVEL level) can be fast fixed
    Reviewed-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: default avatarXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    c126d94f
mmu.c 112 KB