[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