• Jeremy Fitzhardinge's avatar
    x86/pvops: add a paravirt_ident functions to allow special patching · 41edafdb
    Jeremy Fitzhardinge authored
    Impact: Optimization
    
    Several paravirt ops implementations simply return their arguments,
    the most obvious being the make_pte/pte_val class of operations on
    native.
    
    On 32-bit, the identity function is literally a no-op, as the calling
    convention uses the same registers for the first argument and return.
    On 64-bit, it can be implemented with a single "mov".
    
    This patch adds special identity functions for 32 and 64 bit argument,
    and machinery to recognize them and replace them with either nops or a
    mov as appropriate.
    
    At the moment, the only users for the identity functions are the
    pagetable entry conversion functions.
    
    The result is a measureable improvement on pagetable-heavy benchmarks
    (2-3%, reducing the pvops overhead from 5 to 2%).
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    41edafdb
paravirt.h 43.7 KB