提交 29e2435f 编写于 作者: C Catalin Marinas 提交者: Matt Fleming

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: NCatalin Marinas <catalin.marinas@arm.com>
Acked-by: NLeif Lindholm <leif.lindholm@linaro.org>
Tested-by: NLeif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
上级 a55c072d
...@@ -346,6 +346,7 @@ static __initdata struct { ...@@ -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, ...@@ -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, ...@@ -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 */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册