There are some platforms which have bugs in this area, so there are
other reasons to defer freeing up boot memory until as late in the
boot process as we can possibly get away with.
free_initmem() is presuambly the place that makes most sense.
You're suggesting a call from free_initmem() to
efi_free_boot_services()? Or, from init_post() right before the call to
free_initmem()?
This
is EFI-specific but not x86-specific, let's not commingle those
concepts, please...
init/main.c already calls the x86-specific efi_enter_virtual_mode
(defined in arch/x86/platform/efi/efi.c), and I split the call to the
x86-specific efi_free_boot_services out of that. Neither of those
functions exists on non-x86 platforms, and thus I mirrored the #ifdef
currently wrapped around efi_enter_virtual_mode for the new call to
efi_free_boot_services. While it might make sense for that code to
exist on non-x86 EFI platforms, it currently doesn't. At best, I could
add static inline stubs to linux/efi.h for those functions to avoid the
ifdefs, but as far as I can tell the same issue applies to quite a few
more functions in efi.h.
Would you like me to add the static inline stubs for the couple of
functions called from init/main.c, or leave the #ifdefs?