linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: u.kleine-koenig@pengutronix.de (Uwe Kleine-König)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: zImage: Allow DTB to override broken ATAG_MEM
Date: Wed, 7 May 2014 10:06:50 +0200	[thread overview]
Message-ID: <20140507080650.GA28564@pengutronix.de> (raw)
In-Reply-To: <1399439776-18535-1-git-send-email-bjorn.andersson@sonymobile.com>

On Tue, May 06, 2014 at 10:16:16PM -0700, Bjorn Andersson wrote:
> Support overriding ATAG_MEM, by specifying non-zero content of the /memory/reg
> property in the appended DTB. This is needed to work around bootloaders passing
> broken tags.
This feels wrong. I think it's quite usual that the device tree
specifies a non-0 /memory/reg property. I checked four more or less
random dts files[1], and three of them have this property set with
actual values.

So I wouldn't be surprised if this patch results in more damage than
it's worth. The optimal fix would be to make the bootloader do the right
thing. And if you trust your dtb more than your bootloader, disable
ARM_ATAG_DTB_COMPAT.

Best regards
Uwe

[1]
arch/arm/boot/dts/am335x-bone-common.dtsi
arch/arm/boot/dts/exynos5440-sd5v1.dts
arch/arm/boot/dts/imx6q-wandboard.dts
arch/arm/boot/dts/tegra30-cardhu.dtsi
> 
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
> ---
>  arch/arm/boot/compressed/atags_to_fdt.c |   18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c
> index d1153c8..b534cd6 100644
> --- a/arch/arm/boot/compressed/atags_to_fdt.c
> +++ b/arch/arm/boot/compressed/atags_to_fdt.c
> @@ -95,6 +95,22 @@ static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
>  	setprop_string(fdt, "/chosen", "bootargs", cmdline);
>  }
>  
> +static int fdt_overrides_atag_mem(void *fdt)
> +{
> +	const char *memory;
> +	int len = 0;
> +
> +	memory = getprop(fdt, "/memory", "reg", &len);
> +	if (memory) {
> +		while (len--) {
> +			if (*memory++ != '\0')
[added fixup noted in follow-up-mail]

> +				return 1;
> +		}
> +	}
> +
> +	return 0;
> +}
> +
>  /*
>   * Convert and fold provided ATAGs into the provided FDT.
>   *
> @@ -180,7 +196,7 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)
>  		}
>  	}
>  
> -	if (memcount) {
> +	if (memcount && !fdt_overrides_atag_mem(fdt)) {
>  		setprop(fdt, "/memory", "reg", mem_reg_property,
>  			4 * memcount * memsize);
>  	}
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

  parent reply	other threads:[~2014-05-07  8:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-07  5:16 [PATCH] ARM: zImage: Allow DTB to override broken ATAG_MEM Bjorn Andersson
2014-05-07  5:32 ` Bjorn Andersson
2014-05-07  8:06 ` Uwe Kleine-König [this message]
2014-05-07 15:29   ` Bjorn Andersson
2014-05-07 21:24     ` Andreas Färber
2014-06-14 20:33       ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140507080650.GA28564@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).