[U-Boot] ELF_RELOC causes strange I-cache issues
Wolfgang Denk
wd at denx.de
Wed Oct 20 20:49:30 CEST 2010
Hello everybody,
after nailing down a few USB and FAT related bugs we had USB running
stable on i.MX31, but suddenly the current mainline code behaves
strangely again:
Repeating simple calls like "usb read 80800000 0 1000" will reliably
hard hang the system after 3...5 calls.
The problem can be avoided by switching off the instruction cache
(using the "icache off" command).
Trying to track down this problem it turns out that somehow the
ELF_RELOC patches seem to be responsible for it. I have a source tree
that works perfectly fine, with I-caches on, and after cherry-picking
the following commits from the elf_reloc branch the problem appears:
92d5ecb 2010-10-13 10:10:21 arm: implement ELF relocations
bafe743 2010-10-13 10:12:52 arm1136, qong: add support for ELF relocations
However, we cannot find a real cause in the modified code.
Here my request for help:
- Has anybody experienced similar problems?
- Did your tests of the elf_reloc code include any thorough testing
of USB mass storage devices?
- If you have any suitable hardware around, could you please run a few
such tests (as mentioned above, a simple "usb read <addr> 0 1000",
repeated 5 times or so, should be sufficient. If you want to be
sure, increase the block count and repeat more often.
All ideas welcome. Thanks a lot in advance.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Anyone who isn't confused here doesn't really know what's going on.
More information about the U-Boot
mailing list