All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/5] tools: mkimage: fix imximage header size
Date: Wed, 15 Jul 2015 09:37:10 +0200	[thread overview]
Message-ID: <20150715093710.119815ec@lilith> (raw)
In-Reply-To: <874a6782a666faec3520e1e9a58f7092@agner.ch>

Hello Stefan,

On Tue, 14 Jul 2015 12:29:52 +0200, Stefan Agner <stefan@agner.ch>
wrote:
> Hi Stefano,
> 
> On 2015-07-10 10:14, Stefano Babic wrote:
> > On 19/06/2015 14:18, Albert ARIBAUD (3ADEV) wrote:
> >> imximage header size is 4-byte, not 8-byte aligned.
> >> This produces .imx images that a Vybrid cannot boot
> >> on.
> >>
> >> Fix by adding a "padding" field in header.
> >>
> >> Signed-off-by: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
> >> ---
> >>
> >>  tools/imximage.h | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/tools/imximage.h b/tools/imximage.h
> >> index 36fe095..a913329 100644
> >> --- a/tools/imximage.h
> >> +++ b/tools/imximage.h
> >> @@ -129,6 +129,7 @@ typedef struct {
> >>  	ivt_header_t header;
> >>  	write_dcd_command_t write_dcd_command;
> >>  	dcd_addr_data_t addr_data[MAX_HW_CFG_SIZE_V2];
> >> +	uint32_t padding[1]; /* end up on an 8-byte boundary */
> >>  } dcd_v2_t;
> >>
> >>  typedef struct {
> >>
> > 
> > Applied to u-boot-imx, thanks !
> 
> Sorry, just stumbled over this message now.
> 
> We discussed exactly this issue already more than a year ago, see:
> http://lists.denx.de/pipermail/u-boot/2014-April/177580.html
> 
> Back then you asked whether I asked Freescale about it. Earlier this
> year I tried to get hold of that issue and asked Freescale on Community,
> see:
> https://community.freescale.com/thread/355161
> 
> However, no official confirmation or explanation so far.
> 
> I think my patch back then solves the issue nicer. The struct dcd_v2_t
> is not the reason the whole header is not aligned by 8-byte, it is a
> problem of the boot_data_t header which is 12 bytes long. So inserting
> the padding just after struct boot_data_t (or inside of struct
> boot_data_t) seems to be more appropriate.

After reading the U-Boot and Freescale discussions, IIUC you have come
to the conclusion that the missing 4 bytes were in boot_data_t because
it was the only structure in the header which was not 8-bytes-aligned.

However, the available documentation does not specify this constraint,
and from a more experimental vewpoint, my patch adds 4 bytes at the end
of the overall header, thus leaving boot data at 12 bytes (therefore
leaving the dcd_table not 8-byte-aligned) and yet Vybrid can boot.

To me, this proves that the size alignment problem is not with
boot_data_t but with the overall header.

Aside:

My own hypothesis on the reason for the non-written 8-byte-alignment
requirement is that the ROM code initially loads the NAND sector
containing the header at some fixed address then calls some function to
copy the header just below the image destination address, and that
function is 'optimized' to use 8-byte chunks (probably because it
only had two free regs for ldm/stm) and thus assumes an 8 bytes header
size, and nobody cared to document (or possibly even realized the
existence of) that assumption.

> --
> Stefan

Amicalement,
-- 
Albert.

  parent reply	other threads:[~2015-07-15  7:37 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-19 12:18 [U-Boot] [PATCH 0/5] Add support for Vybrid VF610-based PCM052 Albert ARIBAUD
2015-06-19 12:18 ` [U-Boot] [PATCH 1/5] net: fec_mxc: remove useless struct nbuf Albert ARIBAUD
2015-06-19 12:18   ` [U-Boot] [PATCH 2/5] vf610: refactor DDRMC code Albert ARIBAUD
2015-06-19 12:18     ` [U-Boot] [PATCH 3/5] i2c: fix vf610 support Albert ARIBAUD
2015-06-19 12:18       ` [U-Boot] [PATCH 4/5] tools: mkimage: fix imximage header size Albert ARIBAUD
2015-06-19 12:18         ` [U-Boot] [PATCH 5/5] vf610: add support for Phytec PCM052 Albert ARIBAUD
2015-07-10  8:14         ` [U-Boot] [PATCH 4/5] tools: mkimage: fix imximage header size Stefano Babic
2015-07-14 10:29           ` Stefan Agner
2015-07-15  7:19             ` Stefano Babic
2015-07-15  7:54               ` Albert ARIBAUD
2015-07-15 10:41                 ` Stefan Agner
2015-07-15 11:44                   ` Albert ARIBAUD
2015-07-15 12:36                     ` Stefan Agner
2015-07-15 12:54                       ` Albert ARIBAUD
2015-07-15  7:37             ` Albert ARIBAUD [this message]
2015-07-10  8:11       ` [U-Boot] [PATCH 3/5] i2c: fix vf610 support Stefano Babic
2015-06-19 15:13     ` [U-Boot] [PATCH 2/5] vf610: refactor DDRMC code Stefan Agner
2015-06-19 16:50       ` Albert ARIBAUD
2015-06-19 17:33       ` Albert ARIBAUD
2015-07-10  8:09         ` Stefano Babic
2015-07-13 19:01           ` Stefan Agner
2015-07-14  7:16             ` [U-Boot] (rather [LONG], sorry) " Albert ARIBAUD
2015-06-19 15:38   ` [U-Boot] [PATCH 1/5] net: fec_mxc: remove useless struct nbuf Joe Hershberger
2015-07-10  8:03   ` Stefano Babic

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=20150715093710.119815ec@lilith \
    --to=albert.u.boot@aribaud.net \
    --cc=u-boot@lists.denx.de \
    /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.