Hi there,

I am working on an EDK-I based x86-64 firmware (BIOS) running on x86
platform. The firmware uses DEBUG() macro to print all of its debug output.
I have briefly looked at EDK-II SDK and it seems that DEBUG() macro remains
same. Please bear with me if that's inaccurate. I need your help with very
simple problem.

On our system, we want to keep the firmware output to console (serial port)
minimum. As a solution, we do not want to print any debug output. Instead,
we want to save it to a ring-buffer stored somewhere in memory (and not
send it to console) and then dump it to console whenever there's a need for
it - usually when there is some failure and the firmware cannot proceed.

The difficulty that I've ran in to is this: I see there are 3
implementations of DEBUG() for each DXE, SMM and Runtime mode. From some
testing, it looks like the firmware invokes all 3 of them all over the
place during boot. Unless I misunderstood how these are compiled, it looks
like all 3 DEBUG()s are dumping output to console independently. In other
words, I cannot declare a global ring-buffer (of say 2K size) along with
global head/tail pointers in the ring-buffer and save output from each of
these DEBUG()s in it and retrieve it at later stages.

Is there any way by which, starting from DXE phase, I can store output of
DEBUG() in some common ring-buffer which I can retrieve anytime up to right
before OS boot?

Thanks for your help.

Tejas
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to