Message ID | 87twrp5si9.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
Hi Morimoto-san, Thanks for your patch. I wonder this patch is really needed for Gen3 support. The commit log and the referred weblink discussed about the issue of UEFI firmware boot up non-EFI kernel on Juno board. In the meantime, I guess UEFI support is out of Gen3 support scope. Then, maybe, we don't need this patch. Could you try kernel boot without this patch ? Thanks. On 8/24/2015 9:32 AM, Kuninori Morimoto wrote: > From: Jon Medhurst <tixy@linaro.org> > > There is a bug in the UEFI implementation used on Juno and 64-bit > FVPs which corrupts the reported size of the FDT. Work around this > by limiting the size for CRC checks to 2MB. > > See http://lists.infradead.org/pipermail/linux-arm-kernel/2014-December/310106.html > > Signed-off-by: Jon Medhurst <tixy@linaro.org> > Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com> > --- > v5 -> v7 > > - no change > > drivers/of/fdt.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index 07496560..53f8c82 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -28,6 +28,12 @@ > #include <asm/setup.h> /* for COMMAND_LINE_SIZE */ > #include <asm/page.h> > > +#ifdef CONFIG_ARM64 > +#define fdt_crc_size_hack(_s) min(fdt_totalsize(_s),(unsigned)0x200000) > +#else > +#define fdt_crc_size_hack(_s) fdt_totalsize(_s) > +#endif > + > /* > * of_fdt_limit_memory - limit the number of regions in the /memory node > * @limit: maximum entries > @@ -1059,7 +1065,7 @@ bool __init early_init_dt_verify(void *params) > /* Setup flat device-tree pointer */ > initial_boot_params = params; > of_fdt_crc32 = crc32_be(~0, initial_boot_params, > - fdt_totalsize(initial_boot_params)); > + fdt_crc_size_hack(initial_boot_params)); > return true; > } > > @@ -1155,7 +1161,7 @@ static int __init of_fdt_raw_init(void) > return 0; > > if (of_fdt_crc32 != crc32_be(~0, initial_boot_params, > - fdt_totalsize(initial_boot_params))) { > + fdt_crc_size_hack(initial_boot_params))) { > pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n"); > return 0; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 07496560..53f8c82 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -28,6 +28,12 @@ #include <asm/setup.h> /* for COMMAND_LINE_SIZE */ #include <asm/page.h> +#ifdef CONFIG_ARM64 +#define fdt_crc_size_hack(_s) min(fdt_totalsize(_s),(unsigned)0x200000) +#else +#define fdt_crc_size_hack(_s) fdt_totalsize(_s) +#endif + /* * of_fdt_limit_memory - limit the number of regions in the /memory node * @limit: maximum entries @@ -1059,7 +1065,7 @@ bool __init early_init_dt_verify(void *params) /* Setup flat device-tree pointer */ initial_boot_params = params; of_fdt_crc32 = crc32_be(~0, initial_boot_params, - fdt_totalsize(initial_boot_params)); + fdt_crc_size_hack(initial_boot_params)); return true; } @@ -1155,7 +1161,7 @@ static int __init of_fdt_raw_init(void) return 0; if (of_fdt_crc32 != crc32_be(~0, initial_boot_params, - fdt_totalsize(initial_boot_params))) { + fdt_crc_size_hack(initial_boot_params))) { pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n"); return 0; }