After looking more at the code it is more clear what is going on. With unmodified Qi it tries to load_uimage() first, but stops reading after 4 bad blocks. nand_read_ll() returns -1, read_file() prints "Bad kernel header". Then it tries load_zimage() but magic does not match.
When I remove the 4 bad block limit it seems to read the kernel fine, skipping as expected 256 512-blocks. But CRC does not match. Then load_zimage() prints bad magic error as before. So it looks like Qi skips bad blocks correctly. But the kernel image is bad. Since NOR Uboot loads the image fine I see 2 possibilities here: 1. Error in Qi. 2. Old uboot version from NOR handles bad blocks (flashes/reads kernel) in a different way from Qi. I am not sure what to do next, so waiting for advise :) Regards, Dmitry
