• Lukas Wunner's avatar
    efi: Allow bitness-agnostic protocol calls · 3552fdf2
    Lukas Wunner authored
    We already have a macro to invoke boot services which on x86 adapts
    automatically to the bitness of the EFI firmware:  efi_call_early().
    
    The macro allows sharing of functions across arches and bitness variants
    as long as those functions only call boot services.  However in practice
    functions in the EFI stub contain a mix of boot services calls and
    protocol calls.
    
    Add an efi_call_proto() macro for bitness-agnostic protocol calls to
    allow sharing more code across arches as well as deduplicating 32 bit
    and 64 bit code paths.
    
    On x86, implement it using a new efi_table_attr() macro for bitness-
    agnostic table lookups.  Refactor efi_call_early() to make use of the
    same macro.  (The resulting object code remains identical.)
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Cc: Andreas Noever <andreas.noever@gmail.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20161112213237.8804-8-matt@codeblueprint.co.ukSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    3552fdf2
efi.h 6.4 KB