• Jan Beulich's avatar
    x86-64/efi: Use EFI to deal with platform wall clock · bacef661
    Jan Beulich authored
    Other than ix86, x86-64 on EFI so far didn't set the
    {g,s}et_wallclock accessors to the EFI routines, thus
    incorrectly using raw RTC accesses instead.
    
    Simply removing the #ifdef around the respective code isn't
    enough, however: While so far early get-time calls were done in
    physical mode, this doesn't work properly for x86-64, as virtual
    addresses would still need to be set up for all runtime regions
    (which wasn't the case on the system I have access to), so
    instead the patch moves the call to efi_enter_virtual_mode()
    ahead (which in turn allows to drop all code related to calling
    efi-get-time in physical mode).
    
    Additionally the earlier calling of efi_set_executable()
    requires the CPA code to cope, i.e. during early boot it must be
    avoided to call cpa_flush_array(), as the first thing this
    function does is a BUG_ON(irqs_disabled()).
    
    Also make the two EFI functions in question here static -
    they're not being referenced elsewhere.
    Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
    Tested-by: default avatarMatt Fleming <matt.fleming@intel.com>
    Acked-by: default avatarMatthew Garrett <mjg@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/4FBFBF5F020000780008637F@nat28.tlf.novell.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    bacef661
efi.c 23.4 KB