lkml.org 
[lkml]   [2012]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/4] KVM: Avoid checking huge page mappings in get_dirty_log()
    Marcelo Tosatti <mtosatti@redhat.com> wrote:

    > guest fault enable dirty logging
    >
    > tdp_page_fault (all _page_fault functions) kvm_set_memory_region
    >
    >
    > level = mapping_level(vcpu, gfn)
    > (finds level == 2 or 3)
    >
    >
    > rcu_assign_pointer(slot
    > with
    > ->dirty_bitmap)
    > synchronize_srcu_expedited()

    Isn't here still in the SRCU read-side critical section?

    > schedule()
    > kvm_arch_commit_memory_region()
    > spin_lock(mmu_lock)
    > kvm_mmu_slot_remove_write_access()
    > removes large sptes
    > spin_unlock(mmu_lock)
    > spin_lock(mmu_lock)
    > create large spte accordingly
    > to level above
    > spin_unlock(mmu_lock)
    >

    If so, we cannot start kvm_arch_commit_memory_region() until the completion
    of the SRCU critical section and this race will not happen.

    Takuya


    \
     
     \ /
      Last update: 2012-03-14 06:31    [W:0.021 / U:66.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site