
In message 30399.216.110.51.8.1081349928.squirrel@www.orkun.us you wrote:
I think you should rework this patch. At the moment, you call getenv() in board_init_f() - but board_init_f() is still running from flash, which means that we don't have a full C runtime environment (uninitialized BSS, no writable data, limited stack space) so the use of getenv() is not allowd in that function. You may use getenv_r() instead.
I can convert it to use getenv_r() or I think it would be better to move that section dealing with initialization of bi_iic_fast[] flags to board_init_r(). bi_iic_fast[] is not used by u-boot itself. It is passed to Linux.
Then move it to board_init_r(), please.
Personally, the most appropriate place to initialize such things would be right before u-boot boots the OS. The immediate changes to the environment would also be captured without forcing an environment save and reset as well.
Be careful, though. Not everybody uses the same path to boot a kernel.
- Fix in board_init_f() using getenv_r()
- Fix by moving to board_init_r()
Go for 2.
- Create a new function (say board_init_preboot) and move that section
into it. Hook board_init_preboot() to the existing boot functions (boot, bootm etc. somehow)
No, please not yet another xxx_init_pre_before_early_reallybefore_preinit function.
Best regards,
Wolfgang Denk