Am 13.01.2023 um 15:52 schrieb Heinrich Schuchardt:
On 1/13/23 14:47, Michael Lawnick wrote:
Hi,

I am trying to printf-debug EFI execution triggered by Linux call.
Specifically I remove a persistent variable via Linux console and want
to follow execution. Without any printf() this works fine. I need this

Hello Michael,

U-Boot does not implement SetVariable() at runtime yet.

Hi Heinrich,

seems we got this by our SoC Vendor who provides us with U-Boot with EFI
support.

to refine existing implementation of saving variables to SPI flash.

While printf() works in U-Boot startup context it leads to crash when
EFI function was called from Linux. Same for putc().
Next I tried efi_st_printf() but this already crashes in U-Boot startup
context.
How do you achieve printf() debugging in this scenario?
Which initialization steps are required to get efi_st_printf() working
outside self_test context?

TIA & KR
Michael

U-Boots print functions can only be used before ExitBootServices().
Don't use any library function that is not declared __efi_runtime after
this point.

that was my problem.

At UEFI runtime you might be able to invoke a Linux syscall. I never
tried it.

Meanwhile I found out that the SPI write is moved into ATF from where I
have much less restrictions. As such my problem is solved for now.

Or move the debug output into a different UEFI variable using

* efi_var_mem_del() to delete the existing instance
* efi_var_mem_ins() to create the new instance

Both calls are needed.

Nice ugly idea :-)

THX
Michael


Reply via email to