while playing with dfu, I tapped in an unaligned access when doing on the host side a "lsusb -d [vendornr]: -v" I get on the board: GADGET DRIVER: usb_dnl_dfu data abort MAYBE you should read doc/README.arm-unaligned-accesses pc : [<8ff71db8>] lr : [<8ff75aec>] sp : 8ef40d18 ip : 00000005 fp : 00000000 r10: 00000000 r9 : 47401410 r8 : 8ef40f38 r7 : 8ef4aae8 r6 : 0000000a r5 : 8ef4ab28 r4 : 8ef4ab80 r3 : 0000000a r2 : 00000006 r1 : 00000006 r0 : 8ef4aae8 Flags: Nzcv IRQs off FIQs on Mode SVC_32 Resetting CPU ... reason is that in the "struct usb_composite_dev" the "struct usb_device_descriptor desc;" is on an odd address, and this struct gets accessed in drivers/usb/gadget/composite.c device_qual() Fix it, by align this var "struct desc" fix to an aligned address. Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Samuel Egli <samuel.egli@siemens.com> |
||
---|---|---|
.. | ||
byteorder | ||
mtd | ||
unaligned | ||
usb | ||
apm_bios.h | ||
bch.h | ||
bitops.h | ||
bitrev.h | ||
compat.h | ||
compiler-gcc.h | ||
compiler-gcc3.h | ||
compiler-gcc4.h | ||
compiler.h | ||
config.h | ||
crc7.h | ||
crc32.h | ||
ctype.h | ||
edd.h | ||
err.h | ||
ethtool.h | ||
fb.h | ||
input.h | ||
ioctl.h | ||
ioport.h | ||
kbuild.h | ||
linkage.h | ||
linux_string.h | ||
list.h | ||
lzo.h | ||
math64.h | ||
mc146818rtc.h | ||
mdio.h | ||
mii.h | ||
netdevice.h | ||
poison.h | ||
posix_types.h | ||
rbtree.h | ||
screen_info.h | ||
stat.h | ||
stddef.h | ||
string.h | ||
stringify.h | ||
time.h | ||
types.h |