• Zachary Amsden's avatar
    [PATCH] paravirt: kpte flush · 23002d88
    Zachary Amsden authored
    Create a new PTE function which combines clearing a kernel PTE with the
    subsequent flush.  This allows the two to be easily combined into a single
    hypercall or paravirt-op.  More subtly, reverse the order of the flush for
    kmap_atomic.  Instead of flushing on establishing a mapping, flush on clearing
    a mapping.  This eliminates the possibility of leaving stale kmap entries
    which may still have valid TLB mappings.  This is required for direct mode
    hypervisors, which need to reprotect all mappings of a given page when
    changing the page type from a normal page to a protected page (such as a page
    table or descriptor table page).  But it also provides some nicer semantics
    for real hardware, by providing extra debug-proofing against using stale
    mappings, as well as ensuring that no stale mappings exist when changing the
    cacheability attributes of a page, which could lead to cache conflicts when
    two different types of mappings exist for the same page.
    Signed-off-by: default avatarZachary Amsden <zach@vmware.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Jeremy Fitzhardinge <jeremy@xensource.com>
    Cc: Andi Kleen <ak@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>