[U-Boot] [PATCH] ARM: cfi_flash: Fix unaligned accesses to cfi_qry structure

Gabbasov, Andrew Andrew_Gabbasov at mentor.com
Wed May 8 19:38:39 CEST 2013


Hi Marek,

> From: Marek Vasut [marex at denx.de]
> Sent: Wednesday, May 08, 2013 21:26
> To: u-boot at lists.denx.de
> Cc: Gabbasov, Andrew; Tom Rini; Albert Aribaud
> Subject: Re: [U-Boot] [PATCH] ARM: cfi_flash: Fix unaligned accesses to cfi_qry structure
> 
> Dear Andrew Gabbasov,
> 
> > Packed structure cfi_qry contains unaligned 16- and 32-bits members,
> > accessing which causes problems when cfi_flash driver is compiled with
> > -munaligned-access option: flash initialization hangs, probably
> > due to data error.
> >
> > This fix converts 16- and 32-bit members to byte arrays and uses special
> > macros to access such fields. It removes possible unaligned accesses
> > in cfi_flash driver.
> >
> > Signed-off-by: Andrew Gabbasov <andrew_gabbasov at mentor.com>
> 
> It seems OK. I just wonder if the le16_to_cpu you removed can have no impact now
> on obscure-endian architectures, that's my only concern.
> 
> Best regards,
> Marek Vasut

Thank you for your feedback.

Using le16_to_cpu macros assumed that the data, read from flash, are always in little-endian
order, that is the LSB byte comes first in those 2-bytes unaligned fields. This is exactly how
the data is read by new macros. So, it looks like new macros should work on any host
endianness.

Thanks.

Best regards,
Andrew



More information about the U-Boot mailing list