All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 24/25 v7][RFC] Local: Hack: of: Limit FDT size for CRC check on arm64
@ 2015-08-24  2:32 Kuninori Morimoto
  2015-08-24 10:44 ` Khiem Nguyen
  0 siblings, 1 reply; 2+ messages in thread
From: Kuninori Morimoto @ 2015-08-24  2:32 UTC (permalink / raw)
  To: linux-sh

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;
 	}
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 24/25 v7][RFC] Local: Hack: of: Limit FDT size for CRC check on arm64
  2015-08-24  2:32 [PATCH 24/25 v7][RFC] Local: Hack: of: Limit FDT size for CRC check on arm64 Kuninori Morimoto
@ 2015-08-24 10:44 ` Khiem Nguyen
  0 siblings, 0 replies; 2+ messages in thread
From: Khiem Nguyen @ 2015-08-24 10:44 UTC (permalink / raw)
  To: linux-sh

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;
>   	}
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-08-24 10:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-24  2:32 [PATCH 24/25 v7][RFC] Local: Hack: of: Limit FDT size for CRC check on arm64 Kuninori Morimoto
2015-08-24 10:44 ` Khiem Nguyen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.