• A
    kvm: Fix page ageing bugs · 57128468
    Andres Lagar-Cavilla 提交于
    1. We were calling clear_flush_young_notify in unmap_one, but we are
    within an mmu notifier invalidate range scope. The spte exists no more
    (due to range_start) and the accessed bit info has already been
    propagated (due to kvm_pfn_set_accessed). Simply call
    clear_flush_young.
    
    2. We clear_flush_young on a primary MMU PMD, but this may be mapped
    as a collection of PTEs by the secondary MMU (e.g. during log-dirty).
    This required expanding the interface of the clear_flush_young mmu
    notifier, so a lot of code has been trivially touched.
    
    3. In the absence of shadow_accessed_mask (e.g. EPT A bit), we emulate
    the access bit by blowing the spte. This requires proper synchronizing
    with MMU notifier consumers, like every other removal of spte's does.
    Signed-off-by: NAndres Lagar-Cavilla <andreslc@google.com>
    Acked-by: NRik van Riel <riel@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    57128468
rmap.c 48.4 KB