beyond printf – real-time uefi debugging
TRANSCRIPT
![Page 1: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/1.jpg)
presented by
Beyond Printf –Real-Time UEFI Debugging
UEFI 2021 Virtual PlugfestOctober 27, 2021
Alan Sguigna, ASSET InterTech, Inc.
www.uefi.org 1
![Page 2: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/2.jpg)
Meet the Presenter
Alan SguignaVice President, Sales & Customer Service, ASSET InterTech, Inc.
www.uefi.org 2
![Page 3: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/3.jpg)
Agenda• Intel Trace Hub
– Trace Sources– Trace Sinks
• Instruction Trace• Setting up the Trace Hub• Setting up At-Speed Printf• Demo
www.uefi.org 3
![Page 4: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/4.jpg)
JTAG Access• XDP – Open Chassis:
“MinnowBoard”
• Direct Connect Interface (DCI) –Closed Chassis:“AAEON UP Xtreme i11”
www.uefi.org 4
![Page 5: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/5.jpg)
“New” Intel Trace Features
• Instruction Trace (Intel Processor Trace)• Event Trace (Intel Trace Hub)
www.uefi.org 5
Between the two, provides for full system debug: testing the interaction of hardware and software as
they produce complex system behaviors.
![Page 6: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/6.jpg)
Intel Processor Trace (IPT)• Globally timestamped• Highly compressed; no significant impact on
execution speed• Trace buffer in system memory
www.uefi.org 6
![Page 7: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/7.jpg)
Intel Trace Hub (ITH)• Logic that comprises trace sources, a
global hub with timestamp, trace destinations, and a trigger unit
• A sink device for writes from cores and any other trace sources
• Acts as a PCI device, and aligned with industry standards
• Trace sources: AET, ME, SW/FW, etc.• Trace destinations include:
– MTB (8kB, out of reset)– System Memory (after MRC)– Direct Connect Interface – DCI (out of
reset, supports streaming trace)
www.uefi.org 7
![Page 8: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/8.jpg)
ITH Sources: AET
www.uefi.org 8
Event Type Event SubTypes DescriptionHW/SW Interrupt HW_INTR HW interrupt traceIRET IRET IRET traceException Exception Exception, fault, trap traceMSR RDMSR, WRMSR MSR tracePower Management POWER_ENTRY, POWER_EXIT Power managementIO PORT_IN, PORT_OUT, PORT_IN_ADDR IO traceSGX AEX, EENTER, ERESUME, EEXIT SGX traceCODE_BP CODE_BP Code breakpoint traceDATA_BP DATA_BP Data breakpointFIXED_INT SMI, RSM, NMI “Fixed” interrupt traceSW_POWER MONITOR/MWAIT MONITOR/MWAIT traceWBINVD WBINVD_BEGIN, WBINVD_END Write-back invalidate trace
![Page 9: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/9.jpg)
ITH Sources: SW/FWSW/FW Trace• “At-Speed Printf” (ASPF)
– Printf pointer goes to Trace Hub, and the PC host processes string
– Speeds up debug build boot– Avoids backpressure from serial
port and printf code execution– Great for “Heisenbugs”
• Timestamped, and can be correlated with IPT, AET and other run-control and trace data
www.uefi.org
![Page 10: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/10.jpg)
ITH Sinks• MTB (2kB – 8kB; available out of reset)• System memory (post-MRC)• Direct Connect Interface (DCI) – streaming
out of reset– DbC3: USB Type A/C, S0 power state only– DbC2: USB Type A/C, S0ix debug, survives Sx
power state transitions and warm/cold resets
www.uefi.org 10
![Page 11: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/11.jpg)
Setting up ITH and At-Speed Printf• ITH is configured in BIOS• Access it early before it gets “hidden”• Build DEBUG printf “hooks” replaced with
calls to system trace library– Typically DEBUG, RCPRINTF, and
ASSERT_EFI_ERROR• Use printf as you normally would
www.uefi.org 11
![Page 12: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/12.jpg)
Setup: Implementation Steps
\MdePkg\Library\BaseDebugLibSerialPort\DebugLib.c
VA_START(Marker, Format);AsciiVSPrint(Buffer, sizeof(Buffer), Format, Marker);VA_END(Marker);// Send print string to a Serial PortSerialPortWrite((UINT8*)Buffer, AsciiStrLen(Buffer));
www.uefi.org 12
\MdePkg\Library\BaseDebugSystemTrace\DebugLib.c
// Send print string to a Serial Trace DeviceVA_START(Marker, Format);SystemTraceWrite((UINT8*)Format, AsciiStrLen(Format), Marker);VA_END(Marker);
Add ASSET System Trace Library to MdePkg.dsc :MdePkg/Library/BaseDebugLibSystemTrace/BaseDebugLibSystemTrace.infand use ASSET-provided BaseDebugLibSystemTrace.inf and header and .c files. The Trace Library can now be included.
1. Modify within the PlatformPkg.dsc file:DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf toDebugLib|MdePkg/Library/BaseDebugLibSystemTrace/BaseDebugLibSystemTrace.inf
OR
2. Use compiler option:In build script, VAR_BUILD_FLAGS= …….-DASSET_SYSTEM_TRACE=TRUEAnd for each module add conditional code:!if $(ASSET_SYSTEM_TRACE) == TRUE
DebugLib|MdePkg/Library/BaseDebugLibSystemTrace/BaseDebugLibSystemTrace.inf!else
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf!endif
![Page 13: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/13.jpg)
Instruction Trace + Event Trace (DCI)Pre-MRC completion• Instruction Trace: LBR• Event Trace: Trace Hub out of reset (AET w/LBR,
ME, ASPF, …)
Post-MRC completion• Full Intel Processor Trace to System Memory• Event Trace: Trace Hub out of reset (AET w/LBR,
ME, ASPF, …)
www.uefi.org 13
![Page 14: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/14.jpg)
Demo Configuration
www.uefi.org 14
SourcePoint debugger
Ice Lake Client
“Special” USB cable
Intel DesignInTools,DataPro
![Page 15: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/15.jpg)
www.uefi.org 15
Demo
![Page 16: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/16.jpg)
Call to Action• Take advantage of UEFI learning/ development
opportunities– Debugging Intel Firmware using DCI & USB 3.0– UEFI Debug with Intel Architectural Event Trace– ASSET blog
• Access ASPF support files at www.asset-intertech.com/sourcepoint-academy/at-speed-printf
www.uefi.org 16
![Page 17: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/17.jpg)
Questions?
www.uefi.org 17
![Page 18: Beyond Printf – Real-Time UEFI Debugging](https://reader030.vdocument.in/reader030/viewer/2022012714/61ac9562a3acb651a37d6e23/html5/thumbnails/18.jpg)
Thanks for attending the UEFI 2021 Virtual Plugfest
For more information on UEFI Forum and UEFI Specifications, visit http://www.uefi.org
presented by
www.uefi.org 18