• J
    xen: implement ptep_modify_prot_start/commit · e57778a1
    Jeremy Fitzhardinge 提交于
    Xen has a pte update function which will update a pte while preserving
    its accessed and dirty bits.  This means that ptep_modify_prot_start() can be
    implemented as a simple read of the pte value.  The hardware may
    update the pte in the meantime, but ptep_modify_prot_commit() updates it while
    preserving any changes that may have happened in the meantime.
    
    The updates in ptep_modify_prot_commit() are batched if we're currently in lazy
    mmu mode.
    
    The mmu_update hypercall can take a batch of updates to perform, but
    this code doesn't make particular use of that feature, in favour of
    using generic multicall batching to get them all into the hypervisor.
    
    The net effect of this is that each mprotect pte update turns from two
    expensive trap-and-emulate faults into they hypervisor into a single
    hypercall whose cost is amortized in a batched multicall.
    Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
    Acked-by: NHugh Dickins <hugh@veritas.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    e57778a1
mmu.c 19.4 KB