diff mbox

ARM: zImage: ensure header in LE format for BE8 kernels

Message ID alpine.LFD.2.11.1406191630260.16842@knanqh.ubzr
State Accepted
Commit 9696fcae9251610f5935a3823be40d1365649720
Headers show

Commit Message

Nicolas Pitre June 19, 2014, 8:32 p.m. UTC
On Thu, 19 Jun 2014, Kevin Hilman wrote:

> I think this should probably be officialized since we've taken away the
> ability for magic-number checking tools (like 'file') to distinguish
> between big- and little-endian zImages.
> 
> For now, I've updated my tools to check for 'setend be' in ARM and
> Thumb2 mode, but if this does get officialized, I'll gladly move over to
> it.

Would you ACK this patch?

----- >8
ARM: zImage: identify kernel endianness

With patch #8067/1 applied, it is no longer possible to determine the
endianness of a compiled kernel image.  This normally shouldn't matter
to the boot environment, except for those cases where the selection of
a ramdisk or root filesystem with a matching endianness has to be
automated.

Let's add a flag to the zImage header indicating the actual endianness.
Four bytes from offset 0x30 can be interpreted as follows:

	04 03 02 01	big endian kernel

	01 02 03 04	little endian kernel

Anything else should be interpreted as "unknown", in which case it is
most likely that patch #8067/1 was not applied either and the zImage
magic number at offset 0x24 could be used instead to determine
endianness. No zImage before this patch ever produced 0x01020304 nor
0x04030201 at offset 0x30 so there is no confusion possible.

Signed-off-by: Nicolas Pitre <nico@linaro.org>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Comments

Kevin Hilman June 19, 2014, 8:57 p.m. UTC | #1
Nicolas Pitre <nicolas.pitre@linaro.org> writes:

> On Thu, 19 Jun 2014, Kevin Hilman wrote:
>
>> I think this should probably be officialized since we've taken away the
>> ability for magic-number checking tools (like 'file') to distinguish
>> between big- and little-endian zImages.
>> 
>> For now, I've updated my tools to check for 'setend be' in ARM and
>> Thumb2 mode, but if this does get officialized, I'll gladly move over to
>> it.
>
> Would you ACK this patch?
>
> ----- >8
> ARM: zImage: identify kernel endianness
>
> With patch #8067/1 applied, it is no longer possible to determine the

minor nit: I'd rather see a commit id (commit subject) instead of the
reference in RMK's patch tracker, but other than that...

> endianness of a compiled kernel image.  This normally shouldn't matter
> to the boot environment, except for those cases where the selection of
> a ramdisk or root filesystem with a matching endianness has to be
> automated.
>
> Let's add a flag to the zImage header indicating the actual endianness.
> Four bytes from offset 0x30 can be interpreted as follows:
>
> 	04 03 02 01	big endian kernel
>
> 	01 02 03 04	little endian kernel
>
> Anything else should be interpreted as "unknown", in which case it is
> most likely that patch #8067/1 was not applied either and the zImage
> magic number at offset 0x24 could be used instead to determine
> endianness. No zImage before this patch ever produced 0x01020304 nor
> 0x04030201 at offset 0x30 so there is no confusion possible.
>
> Signed-off-by: Nicolas Pitre <nico@linaro.org>

Acked-by: Kevin Hilman <khilman@linaro.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Nicolas Pitre June 19, 2014, 9:49 p.m. UTC | #2
On Thu, 19 Jun 2014, Kevin Hilman wrote:

> Nicolas Pitre <nicolas.pitre@linaro.org> writes:
> 
> > On Thu, 19 Jun 2014, Kevin Hilman wrote:
> >
> >> I think this should probably be officialized since we've taken away the
> >> ability for magic-number checking tools (like 'file') to distinguish
> >> between big- and little-endian zImages.
> >> 
> >> For now, I've updated my tools to check for 'setend be' in ARM and
> >> Thumb2 mode, but if this does get officialized, I'll gladly move over to
> >> it.
> >
> > Would you ACK this patch?
> >
> > ----- >8
> > ARM: zImage: identify kernel endianness
> >
> > With patch #8067/1 applied, it is no longer possible to determine the
> 
> minor nit: I'd rather see a commit id (commit subject) instead of the
> reference in RMK's patch tracker, but other than that...

The commit ID may not be stable, unless RMK moves it to his devel-stable 
branch.  I'll add the commit subject though.

Queued as patch #8079/1.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
diff mbox

Patch

diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index c95feab6ce..413fd94b53 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -128,6 +128,7 @@  start:
 		.word	_magic_sig	@ Magic numbers to help the loader
 		.word	_magic_start	@ absolute load/run zImage address
 		.word	_magic_end	@ zImage end address
+		.word	0x04030201	@ endianness flag
 
  THUMB(		.thumb			)
 1: