grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 1/2] efi: Move grub_reboot() into kernel


From: Leif Lindholm
Subject: Re: [PATCH v3 1/2] efi: Move grub_reboot() into kernel
Date: Tue, 29 Aug 2017 17:14:01 +0100
User-agent: NeoMutt/20170113 (1.7.2)

On Tue, Aug 29, 2017 at 06:00:34PM +0200, Alexander Graf wrote:
> The reboot function calls machine_fini() and then reboots the system.
> Currently it lives in lib/ which means it gets compiled into the
> reboot module which lives on the heap.
> 
> In a following patch, I want to free the heap on machine_fini()
> though, so we would free the memory that the code is running in. That
> obviously breaks with smarter UEFI implementations.
> 
> So this patch moves it into the core. That way we ensure that all
> code running after machine_fini() in the UEFI case is running from
> memory that got allocated (and gets deallocated) by the UEFI core.
> 
> Signed-off-by: Alexander Graf <address@hidden>
> ---
>  grub-core/Makefile.core.def | 9 +++++----
>  include/grub/misc.h         | 3 ++-
>  2 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
> index a65c27f7f..d01654b12 100644
> --- a/grub-core/Makefile.core.def
> +++ b/grub-core/Makefile.core.def
> @@ -235,6 +235,11 @@ kernel = {
>    arm64_efi = kern/arm64/efi/init.c;
>    arm64_efi = kern/efi/fdt.c;
>  
> +  ia64_efi = lib/efi/reboot.c;
> +  x86_64_efi = lib/efi/reboot.c;
> +  arm_efi = lib/efi/reboot.c;
> +  arm64_efi = lib/efi/reboot.c;
> +

Actually, if we're moving these (which I am all for), can we squash
this down to a single "efi =" line?

And as I am already in bikeshedding mode: if we move it into the
kernel image, should we also move the source file to
grub-core/kern/efi/?

/
    Leif

>    i386_pc = kern/i386/pc/init.c;
>    i386_pc = kern/i386/pc/mmap.c;
>    i386_pc = term/i386/pc/console.c;
> @@ -872,10 +877,6 @@ module = {
>    name = reboot;
>    i386 = lib/i386/reboot.c;
>    i386 = lib/i386/reboot_trampoline.S;
> -  ia64_efi = lib/efi/reboot.c;
> -  x86_64_efi = lib/efi/reboot.c;
> -  arm_efi = lib/efi/reboot.c;
> -  arm64_efi = lib/efi/reboot.c;
>    powerpc_ieee1275 = lib/ieee1275/reboot.c;
>    sparc64_ieee1275 = lib/ieee1275/reboot.c;
>    mips_arc = lib/mips/arc/reboot.c;
> diff --git a/include/grub/misc.h b/include/grub/misc.h
> index 2a9f87cc2..372f009e8 100644
> --- a/include/grub/misc.h
> +++ b/include/grub/misc.h
> @@ -396,7 +396,8 @@ grub_abs (int x)
>  }
>  
>  /* Reboot the machine.  */
> -#if defined (GRUB_MACHINE_EMU) || defined (GRUB_MACHINE_QEMU_MIPS)
> +#if defined (GRUB_MACHINE_EMU) || defined (GRUB_MACHINE_QEMU_MIPS) || \
> +    defined (GRUB_MACHINE_EFI)
>  void EXPORT_FUNC(grub_reboot) (void) __attribute__ ((noreturn));
>  #else
>  void grub_reboot (void) __attribute__ ((noreturn));
> -- 
> 2.12.3
> 
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]