From: Daniel Mack <zonque@gmail.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Stephen Warren <swarren@nvidia.com>,
kexec@lists.infradead.org, Eric Biederman <ebiederm@xmission.com>,
Sven Neumann <neumann@teufel.de>
Subject: Re: [PATCH] kexec-zImage-arm: simply cmdline-related DTB resizing
Date: Thu, 20 Dec 2012 10:01:25 +0800 [thread overview]
Message-ID: <50D27175.7030006@gmail.com> (raw)
In-Reply-To: <1355959196-14500-1-git-send-email-swarren@wwwdotorg.org>
On 12/20/2012 07:19 AM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> When resizing a dtb to add the command-line, only resize the DTB once,
> rather than once to add the /chosen node, and once to add the bootargs
> property.
>
> Also, simply add 1K of overhead (beyond strlen(cmdline)) to the buffer,
> to avoid requiring precise knowledge of the size impact of the requested
> FTB changes. In particular, some padding is performed when setting
> property values, which was not accounted for in the current code, which
> caused failures to set the bootargs values in some cases.
>
> Cc: Daniel Mack <zonque@gmail.com>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Much cleaner, thanks Stephen.
Daniel
> ---
> kexec/arch/arm/kexec-zImage-arm.c | 21 ++++++---------------
> 1 file changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/kexec/arch/arm/kexec-zImage-arm.c b/kexec/arch/arm/kexec-zImage-arm.c
> index 0950897..db29a7b 100644
> --- a/kexec/arch/arm/kexec-zImage-arm.c
> +++ b/kexec/arch/arm/kexec-zImage-arm.c
> @@ -370,31 +370,22 @@ int zImage_arm_load(int argc, char **argv, const char *buf, off_t len,
> const char *prop_name = "bootargs";
> int off;
>
> + dtb_length = fdt_totalsize(dtb_buf) + 1024 +
> + strlen(command_line);
> + dtb_buf = xrealloc(dtb_buf, dtb_length);
> + fdt_set_totalsize(dtb_buf, dtb_length);
> +
> /* check if a /choosen subnode already exists */
> off = fdt_path_offset(dtb_buf, node_name);
>
> - if (off == -FDT_ERR_NOTFOUND) {
> - dtb_length = fdt_totalsize(dtb_buf)
> - + strlen(node_name) + 1
> - + sizeof(struct fdt_node_header)
> - + FDT_TAGSIZE;
> - dtb_buf = xrealloc(dtb_buf, dtb_length);
> - fdt_set_totalsize(dtb_buf, dtb_length);
> + if (off == -FDT_ERR_NOTFOUND)
> off = fdt_add_subnode(dtb_buf, off, node_name);
> - }
>
> if (off < 0) {
> fprintf(stderr, "FDT: Error adding %s node.\n", node_name);
> return -1;
> }
>
> - dtb_length = fdt_totalsize(dtb_buf)
> - + strlen(prop_name)
> - + strlen(command_line) + 1
> - + sizeof(struct fdt_property);
> - dtb_buf = xrealloc(dtb_buf, dtb_length);
> - fdt_set_totalsize(dtb_buf, dtb_length);
> -
> if (fdt_setprop(dtb_buf, off, prop_name,
> command_line, strlen(command_line) + 1) != 0) {
> fprintf(stderr, "FDT: Error setting %s/%s property.\n",
>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2012-12-20 2:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-19 23:19 [PATCH] kexec-zImage-arm: simply cmdline-related DTB resizing Stephen Warren
2012-12-20 2:01 ` Daniel Mack [this message]
2012-12-23 7:14 ` Simon Horman
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=50D27175.7030006@gmail.com \
--to=zonque@gmail.com \
--cc=ebiederm@xmission.com \
--cc=kexec@lists.infradead.org \
--cc=neumann@teufel.de \
--cc=swarren@nvidia.com \
--cc=swarren@wwwdotorg.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 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.