93 lines
2.9 KiB
ReStructuredText
93 lines
2.9 KiB
ReStructuredText
SkiBoot Console Log
|
|
===================
|
|
|
|
Skiboot maintains a circular textual log buffer in memory.
|
|
|
|
It can be accessed using any debugging method that can peek at
|
|
memory contents. While the debug_descriptor does hold the location
|
|
of the memory console, we're pretty keen on keeping its location
|
|
static.
|
|
|
|
Events are logged in the following format:
|
|
``[S.T,L] message`` where:
|
|
|
|
:S: Seconds, which is the timebase divided by 512,000,000.
|
|
**NOTE**: The timebase is reset during boot, so zero is a few dozen
|
|
messages into skiboot booting.
|
|
:T: Remaining Timebase. It is *NOT* a fraction of a second, but rather
|
|
timebase%512000000
|
|
:L: Log level (see below)
|
|
|
|
Example: ::
|
|
|
|
[ 2.223466021,5] FLASH: Found system flash: Macronix MXxxL51235F id:0
|
|
[ 3.494892796,7] FLASH: flash subpartition eyecatcher CAPP
|
|
|
|
You should use the new prlog() call for any log message and set the
|
|
log level/priority appropriately.
|
|
|
|
printf() is mapped to PR_PRINTF and should be phased out and replaced
|
|
with prlog() calls.
|
|
|
|
See timebase.h for full timebase explanation.
|
|
|
|
Log levels
|
|
----------
|
|
|
|
=============== ==========
|
|
Define Value
|
|
=============== ==========
|
|
PR_EMERG 0
|
|
PR_ALERT 1
|
|
PR_CRIT 2
|
|
PR_ERR 3
|
|
PR_WARNING 4
|
|
PR_NOTICE 5
|
|
PR_PRINTF PR_NOTICE
|
|
PR_INFO 6
|
|
PR_DEBUG 7
|
|
PR_TRACE 8
|
|
PR_INSANE 9
|
|
=============== ==========
|
|
|
|
The console_log_levels byte in the debug_descriptor controls what
|
|
messages are written to any console drivers (e.g. fsp, uart) and
|
|
what level is just written to the in memory console (or not at all).
|
|
|
|
This enables (advanced) users to vary what level of output they want
|
|
at runtime in the memory console and through console drivers (fsp/uart)
|
|
|
|
You can vary two things by poking in the debug descriptor:
|
|
|
|
1. what log level is printed at all
|
|
e.g. only turn on PR_TRACE at specific points during runtime
|
|
2. what log level goes out the fsp/uart console, defaults to PR_PRINTF
|
|
|
|
We use two 4bit numbers (1 byte) for this in debug descriptor (saving
|
|
some space, not needlessly wasting space that we may want in future).
|
|
|
|
The default is 0x75 (7=PR_DEBUG to in memory console, 5=PR_PRINTF to drivers
|
|
|
|
If you write 0x77 you will get debug info on uart/fsp console as
|
|
well as in memory. If you write 0x95 you get PR_INSANE in memory but
|
|
still only PR_NOTICE through drivers.
|
|
|
|
People who write something like 0x1f will get a very quiet boot indeed.
|
|
|
|
Debugging
|
|
---------
|
|
|
|
You can change the log level of what goes to the in memory buffer and whta
|
|
goes to the driver (i.e. serial port / IPMI Serial over LAN) at boot time
|
|
by setting NVRAM variables: ::
|
|
|
|
nvram -p ibm,skiboot --update-config log-level-driver=7
|
|
nvram -p ibm,skiboot --update-config log-level-memory=7
|
|
|
|
You can also use the named versions of emerg, alert, crit, err,
|
|
warning, notice, printf, info, debug, trace or insane. ie. ::
|
|
|
|
nvram -p ibm,skiboot --update-config log-level-driver=insane
|
|
|
|
|
|
You an also write to the debug_descriptor to change it at runtime.
|