Re: [PATCH v2] efi: Introduce EFI bootloader control driver

From: Matt Fleming
Date: Fri Mar 18 2016 - 12:15:15 EST


On Fri, 18 Mar, at 12:11:50PM, Daniel Baluta wrote:
> From: Matt Gumbel <matthew.k.gumbel@xxxxxxxxx>
>
> This driver intercepts system reboot requests and populates the
> LoaderEntryOneShot EFI variable with the user-supplied reboot
> argument. EFI bootloaders such as Gummiboot will consume this
> variable and use it to control which OS is booted next.
>
> We use this with Android where reboot() tells the kernel that
> we want to boot into recovery or other non-default OS environment.
>
> It is the bootloader's job to guard against this variable being
> uninitialzed or containing invalid data, and just boot normally
> if that is the case.
>
> Signed-off-by: Matt Gumbel <matthew.k.gumbel@xxxxxxxxx>
> Signed-off-by: Mohamed Abbas <mohamed.abbas@xxxxxxxxx>
> Signed-off-by: Constantin Musca <constantin.musca@xxxxxxxxx>
> Signed-off-by: Daniel Baluta <daniel.baluta@xxxxxxxxx>
> ---
> Changes since v1:
> * updated Makefile after changing source name from efibc.c -> efi-bc.c
> to comply with naming rules in drivers/firmware/efi/
>
> drivers/firmware/efi/Kconfig | 11 ++
> drivers/firmware/efi/Makefile | 1 +
> drivers/firmware/efi/efi-bc.c | 251 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 263 insertions(+)
> create mode 100644 drivers/firmware/efi/efi-bc.c

Why does this require a driver? Why is it not possible to solve this
problem by creating the variable in userspace before invoking
reboot(2)?