Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29e2435f authored by Catalin Marinas's avatar Catalin Marinas Committed by Matt Fleming
Browse files

efi: fdt: Do not report an error during boot if UEFI is not available



Currently, fdt_find_uefi_params() reports an error if no EFI parameters
are found in the DT. This is however a valid case for non-UEFI kernel
booting. This patch checks changes the error reporting to a
pr_info("UEFI not found") when no EFI parameters are found in the DT.

Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Acked-by: default avatarLeif Lindholm <leif.lindholm@linaro.org>
Tested-by: default avatarLeif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent a55c072d
Loading
Loading
Loading
Loading
+15 −7
Original line number Original line Diff line number Diff line
@@ -346,6 +346,7 @@ static __initdata struct {


struct param_info {
struct param_info {
	int verbose;
	int verbose;
	int found;
	void *params;
	void *params;
};
};


@@ -362,16 +363,12 @@ static int __init fdt_find_uefi_params(unsigned long node, const char *uname,
	    (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0))
	    (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0))
		return 0;
		return 0;


	pr_info("Getting parameters from FDT:\n");

	for (i = 0; i < ARRAY_SIZE(dt_params); i++) {
	for (i = 0; i < ARRAY_SIZE(dt_params); i++) {
		prop = of_get_flat_dt_prop(node, dt_params[i].propname, &len);
		prop = of_get_flat_dt_prop(node, dt_params[i].propname, &len);
		if (!prop) {
		if (!prop)
			pr_err("Can't find %s in device tree!\n",
			       dt_params[i].name);
			return 0;
			return 0;
		}
		dest = info->params + dt_params[i].offset;
		dest = info->params + dt_params[i].offset;
		info->found++;


		val = of_read_number(prop, len / sizeof(u32));
		val = of_read_number(prop, len / sizeof(u32));


@@ -390,10 +387,21 @@ static int __init fdt_find_uefi_params(unsigned long node, const char *uname,
int __init efi_get_fdt_params(struct efi_fdt_params *params, int verbose)
int __init efi_get_fdt_params(struct efi_fdt_params *params, int verbose)
{
{
	struct param_info info;
	struct param_info info;
	int ret;

	pr_info("Getting EFI parameters from FDT:\n");


	info.verbose = verbose;
	info.verbose = verbose;
	info.found = 0;
	info.params = params;
	info.params = params;


	return of_scan_flat_dt(fdt_find_uefi_params, &info);
	ret = of_scan_flat_dt(fdt_find_uefi_params, &info);
	if (!info.found)
		pr_info("UEFI not found.\n");
	else if (!ret)
		pr_err("Can't find '%s' in device tree!\n",
		       dt_params[info.found].name);

	return ret;
}
}
#endif /* CONFIG_EFI_PARAMS_FROM_FDT */
#endif /* CONFIG_EFI_PARAMS_FROM_FDT */