Logging
SBL provides logging for debugging purpose. It can be configured at build time
for verbosity. One can control debug messages in multiple ways by modifying the following PCDs defined in BootloaderCorePkg.yaml
file:
PCD Name |
Description |
---|---|
PcdFixedDebugPrintErrorLevel |
Build time debug message level compiled into the image |
PcdDebugPropertyMask |
Runtime debug message level sent to the console |
PcdDebugOutputDeviceMask |
Debug output destinations: serial console or log buffer |
Commonly used definitions for these PCDs are listed here.
PcdFixedDebugPrintErrorLevel
definitions:
#define DEBUG_INIT 0x00000001 // Initialization
#define DEBUG_WARN 0x00000002 // Warnings
#define DEBUG_INFO 0x00000040 // Informational debug messages
#define DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may
// significantly impact boot performance
#define DEBUG_ERROR 0x80000000 // Error
PcdDebugPropertyMask
definitions:
#define DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED 0x01
#define DEBUG_PROPERTY_DEBUG_PRINT_ENABLED 0x02
#define DEBUG_PROPERTY_DEBUG_CODE_ENABLED 0x04
#define DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED 0x08
#define DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED 0x10
#define DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED 0x20
PcdDebugOutputDeviceMask
definitions:
#define DEBUG_OUTPUT_DEVICE_LOG_BUFFER BIT0
#define DEBUG_OUTPUT_DEVICE_SERIAL_PORT BIT1
For more details, see DebugLib.h
and LoaderPlatformDataGuid.h
.
An example of minimum debug output from SBL release build on QEMU emulator:
Intel Slim Bootloader
SBID: SB_QEMU
ISVN: 00001
IVER: 000.00001.11095
BOOT: BP0
MODE: 0
BoardID: 00
Memory Init
PCI Enum
ACPI Init
MP InitJump to payload
Payload startup