[U-Boot] [PATCH] ARM: cfi_flash: Avoid generation of unaligned accesses

Gabbasov, Andrew Andrew_Gabbasov at mentor.com
Mon Apr 29 11:40:03 CEST 2013


> From: Marek Vasut [marek.vasut at gmail.com]
> Sent: Sunday, April 28, 2013 22:58
> To: u-boot at lists.denx.de
> Cc: Gabbasov, Andrew; Albert ARIBAUD; Tom Rini
> Subject: Re: [U-Boot] [PATCH] ARM: cfi_flash: Avoid generation of unaligned accesses
> 
> 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.
> >
> > Since fixing the code to use some other way of accessing those fields
> > seems quite expensive, just force the compiler to use
> > -mno-unaligned-access.
> >
> > Signed-off-by: Andrew Gabbasov <andrew_gabbasov at mentor.com>
> > ---
> >  drivers/mtd/Makefile |    3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
> > index 543c845..a120f0b 100644
> > --- a/drivers/mtd/Makefile
> > +++ b/drivers/mtd/Makefile
> > @@ -46,6 +46,9 @@ all:        $(LIB)
> >  $(LIB):      $(obj).depend $(OBJS)
> >       $(call cmd_link_o_target, $(OBJS))
> >
> > +# SEE README.arm-unaligned-accesses
> > +$(obj)cfi_flash.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
> > +
> >  #########################################################################
> >
> >  # defines $(obj).depend target
> 
> I'd say rather fix the structure than use this workaround. See, using
> 
> u8[3]
> u16
> 
> will make unaligned access. The fix would be to split that u16 into two u8 and
> add a proper accessor. It'll be much larger effort, but it'd also be more
> correct.
> 
> Best regards,
> Marek Vasut

Hi Marek,

Thank you for your response.

I was thinking about this way of fixing, but it seemed too require too much effort.
However, after some closer look it turned out to be not quite difficult, since
there are quite a few accesses to such unaligned fields. So, I made another fix and
sent to separately to the list with Subject: "[U-Boot][PATCH] ARM: cfi_flash: Fix unaligned
accesses to cfi_qry structure". Please, look at it, if it is OK from your point of view.

Thanks.

Best regards,
Andrew


More information about the U-Boot mailing list