[U-Boot-Users] Re: PATCH: bi_iic_fast[] initialization

Dear Tolunay,
in message 14824.216.110.51.8.1079378410.squirrel@www.orkun.us you wrote:
- Allow bi_iic_fast[] to be initialized via env. variable "i2cfast"
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.
Please send a fix.
Best regards,
Wolfgang Denk

Wolfgang,
Dear Tolunay,
- Allow bi_iic_fast[] to be initialized via env. variable "i2cfast"
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.
I believe, there is no reason why it should be done by board_init_f().
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.
What do you think? Which fix should I attempt:
1) Fix in board_init_f() using getenv_r() 2) Fix by moving to board_init_r() 3) 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)
Please send a fix.
I will as soon as I get feedback from you.
Regards, Tolunay

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

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.
Attached patch fixes this.
Changelog:
- Relocate initialization of bi_iic_fast[] from board_init_f() to board_init_r()
Best regards, Tolunay Orkun

In message 33993.216.110.51.8.1081356365.squirrel@www.orkun.us you wrote:
Changelog:
- Relocate initialization of bi_iic_fast[] from board_init_f() to board_init_r()
Thanks, added.
Best regards,
Wolfgang Denk
participants (2)
-
Tolunay Orkun
-
Wolfgang Denk