Re: [PATCH] efi/libstub/arm: add opt-in Kconfig option for the DTB loader

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

 



On Mon, Jun 25, 2018 at 08:34:05AM +0200, Ard Biesheuvel wrote:
> There are various ways a platform can provide a device tree binary
> to the kernel, with different levels of sophistication:
> - ideally, the UEFI firmware, which is tightly coupled with the
>   platform, provides a device tree image directly as a UEFI
>   configuration table, and typically permits the contents to be
>   manipulated either via menu options or via UEFI environment
>   variables that specify a replacement image,
> - GRUB for ARM has a 'devicetree' directive which allows a device
>   tree image to be loaded from any location accessible to GRUB, and
>   supersede the one provided by the firmware,

Just for comment - this too is considered an anomaly and will
eventually be phased out. (Some part of the functionality may be
retained in the form of overlay management.)

> - the EFI stub implements a dtb= command line option that allows a
>   device tree image to be loaded from a file residing in the same
>   file system as the one the kernel image was loaded from.
> 
> The dtb= command line option was never intended to be more than a
> development feature, to allow the other options to be implemented
> in parallel. So let's make it an opt-in feature that is disabled
> by default, but can be re-enabled at will.
> 
> Note that we already disable the dtb= command line option when we
> detect that we are running with UEFI Secure Boot enabled.
> 
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>

Acked-by: Leif Lindholm <leif.lindholm@xxxxxxxxxx>

> ---
>  drivers/firmware/efi/Kconfig            | 12 ++++++++++++
>  drivers/firmware/efi/libstub/arm-stub.c |  7 ++++---
>  2 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/firmware/efi/Kconfig b/drivers/firmware/efi/Kconfig
> index 781a4a337557..fc1cb2961d5b 100644
> --- a/drivers/firmware/efi/Kconfig
> +++ b/drivers/firmware/efi/Kconfig
> @@ -87,6 +87,18 @@ config EFI_RUNTIME_WRAPPERS
>  config EFI_ARMSTUB
>  	bool
>  
> +config EFI_ARMSTUB_DTB_LOADER
> +	bool "Enable the DTB loader"
> +	depends on EFI_ARMSTUB
> +	help
> +	  Select this config option to add support for the dtb= command
> +	  line parameter, allowing a device tree blob to be loaded into
> +	  memory from the EFI System Partition by the stub.
> +
> +	  The device tree is typically provided by the platform or by
> +	  the bootloader, and so this option is mostly for development
> +	  purposes only.
> +
>  config EFI_BOOTLOADER_CONTROL
>  	tristate "EFI Bootloader Control"
>  	depends on EFI_VARS
> diff --git a/drivers/firmware/efi/libstub/arm-stub.c b/drivers/firmware/efi/libstub/arm-stub.c
> index 01a9d78ee415..c98b1856fc3d 100644
> --- a/drivers/firmware/efi/libstub/arm-stub.c
> +++ b/drivers/firmware/efi/libstub/arm-stub.c
> @@ -202,9 +202,10 @@ unsigned long efi_entry(void *handle, efi_system_table_t *sys_table,
>  	 * 'dtb=' unless UEFI Secure Boot is disabled.  We assume that secure
>  	 * boot is enabled if we can't determine its state.
>  	 */
> -	if (secure_boot != efi_secureboot_mode_disabled &&
> -	    strstr(cmdline_ptr, "dtb=")) {
> -		pr_efi(sys_table, "Ignoring DTB from command line.\n");
> +	if (!IS_ENABLED(CONFIG_EFI_ARMSTUB_DTB_LOADER) ||
> +	     secure_boot != efi_secureboot_mode_disabled) {
> +		if (strstr(cmdline_ptr, "dtb="))
> +			pr_efi(sys_table, "Ignoring DTB from command line.\n");
>  	} else {
>  		status = handle_cmdline_files(sys_table, image, cmdline_ptr,
>  					      "dtb=",
> -- 
> 2.11.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux