• Juergen Gross's avatar
    x86/paravirt: Convert simple paravirt functions to asm · 11af36cb
    Juergen Gross authored
    All functions referenced via __PV_IS_CALLEE_SAVE() need to be assembler
    functions, as those functions calls are hidden from the compiler.
    
    In case the kernel is compiled with "-fzero-call-used-regs" the compiler
    will clobber caller-saved registers at the end of C functions, which
    will result in unexpectedly zeroed registers at the call site of the
    related paravirt functions.
    
    Replace the C functions with DEFINE_PARAVIRT_ASM() constructs using
    the same instructions as the related paravirt calls in the
    PVOP_ALT_[V]CALLEE*() macros. And since they're not C functions visible
    to the compiler anymore, latter won't do the callee-clobbered zeroing
    invoked by -fzero-call-used-regs and thus won't corrupt registers.
    
      [ bp: Extend commit message. ]
    Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20230317063325.361-1-jgross@suse.com
    11af36cb
paravirt.c 9.45 KB