SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Postmortem Debugging with Coresight
HKG18-TR14
Leo Yan, Linaro Support and Solutions Engineering
Introduction
This session discusses postmortem
debugging techniques in the Linux kernel.
Firstly we will review ramoops (aka.
pstore) with software tracing for
postmortem debugging, then go through
two Coresight debugging methods with
hardware assisted tracing.
We will finish this material + 3 demos in
25 minutes.
Kernel
panic
System
hang
Dump
capture
kernel
Second
boot
kernel
Crash
Coresight tracer
Perf + OpenCSD
ramoops
Coresight
CPU debug
Working flow with debugging tools
Overview
● Discussion for practical scenarios
○ Finding program execution flow for system hang
○ CPU is dead, how to read current CPU state?
○ Offline analysis of program execution flow
● You can extend for your SoC
The scenario - Finding program execution flow for system hang
When a system hangs, we cannot always rely
on the console for printing log messages
Modern CPUs improve performance by using
asynchronous operations on external bus or
memory system (early acknowledge, OoO,
etc), such systems may not hang immediately
after running a ‘bad’ instruction
To narrow down the cause, we need to
reverse program execution flow to find hints.
● Ramoops (aka. pstore) is general
framework to dump logs into
persistent RAM and which survive
after a restart
● Ramoops can dump:
○ Console message
○ Oops and panic log
○ Function tracing
● Ramoops function tracing is used
to reverse program execution flow
Demo for ramoops
Step 1: Enable all required kconfig options
CONFIG_PSTORE=y
CONFIG_PSTORE_FTRACE=y
CONFIG_DEBUG_FS=y
Step 2: Prepare for testing
Enable ramoops for function tracing
# mount -t debugfs debugfs /sys/kernel/debug/
# echo 1 > /sys/kernel/debug/pstore/record_ftrace
Enable watchdog
# echo 1 > /dev/watchdog
Step 3: Run testing case until system hangs
Step 4: Reboot with watchdog timeout
Step 5: Analyze tracing data
# mount -t pstore pstore /mnt
# cat /mnt/ftrace-ramoops-0 > tracing.log
Demo and ramoops log
CPU:0 ts:1000329 ffff0000082c87ec ffff0000082c9030 single_start <- seq_read+0x1a0/0x4c0
CPU:0 ts:1000330 ffff0000087214d4 ffff0000082c9058 dbg_ws_hang_show <- seq_read+0x1c8/0x4c0
CPU:0 ts:1000331 ffff0000080a428c ffff00000872151c __ioremap <- dbg_ws_hang_show+0x54/0xa8
CPU:0 ts:1000332 ffff0000080a41b0 ffff0000080a42a0 __ioremap_caller <- __ioremap+0x38/0x50
CPU:0 ts:1000333 ffff0000080a3c44 ffff0000080a41d8 pfn_valid <- __ioremap_caller+0x60/0xf0
CPU:0 ts:1000334 ffff0000082569c4 ffff0000080a3c4c memblock_is_map_memory <- pfn_valid+0x1c/0x30
CPU:0 ts:1000335 ffff0000082517f8 ffff0000080a41ec get_vm_area_caller <- __ioremap_caller+0x74/0xf0
CPU:0 ts:1000336 ffff000008251438 ffff00000825182c __get_vm_area_node <- get_vm_area_caller+0x54/0x68
https://youtu.be/2_SIdeQrG-Y
Overview
● Discussion for practical scenarios
○ Finding program execution flow for system hang
○ CPU is dead, how to read current CPU state?
○ Offline analysis of program execution flow
● You can extend for your SoC
The scenario - CPU is dead, how to read current CPU state?
When a CPU dies, perhaps locked up with
IRQ/FIQ masked or a stuck waiting for a bus
access, the dead CPU cannot react to SMP
inter-processor interrupt to dump backtrace.
JTAG debugger could be used to check dead
CPU state, but we can explore a more
convenient method in kernel for systems that
have other CPUs are still alive so can dump
PC value for dead CPU.
● CORESIGHT_CPU_DEBUG:
Coresight CPU debug module
allows Linux SMP partners to
watch each other (enhanced
LOCKUP_DETECTOR).
● Can be used to dump CPU state
based on ARM sample-based
profiling extension.
● Last CPU PC before failure is
stored in its debug unit and other
processors can extract this too (no
cache problems)!
Demo for Coresight CPU debug
Step 1: Enable all required kconfig options
CONFIG_CORESIGHT_CPU_DEBUG=y
Step 2: Prepare for testing
Disable CPU idle states in command line (if need): nohlt
Enable panic on RCU stall if system doesn’t support
hard lock detection:
# sysctl -w kernel.panic_on_rcu_stall=1
Step 3: Run test case until system panic
Step 4: Read debug info logged during panic
Demo video and Coresight CPU debug log
[ 79.171171] coresight-cpu-debug f65d0000.debug: CPU[4]:
[ 79.176408] coresight-cpu-debug f65d0000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock)
[ 79.184512] coresight-cpu-debug f65d0000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8
[ 79.193743] coresight-cpu-debug f65d0000.debug: EDCIDSR: 00000000
[ 79.199931] coresight-cpu-debug f65d0000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0)
[ 79.210468] coresight-cpu-debug f65d2000.debug: CPU[5]:
[ 79.215705] coresight-cpu-debug f65d2000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock)
[ 79.223810] coresight-cpu-debug f65d2000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8
[ 79.233041] coresight-cpu-debug f65d2000.debug: EDCIDSR: 00000000
[ 79.239229] coresight-cpu-debug f65d2000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0)
[ 79.249765] coresight-cpu-debug f65d4000.debug: CPU[6]:
[ 79.255003] coresight-cpu-debug f65d4000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock)
[ 79.263107] coresight-cpu-debug f65d4000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8
[ 79.272338] coresight-cpu-debug f65d4000.debug: EDCIDSR: 00000000
[ 79.278526] coresight-cpu-debug f65d4000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0)
[ 79.289062] coresight-cpu-debug f65d6000.debug: CPU[7]:
[ 79.294299] coresight-cpu-debug f65d6000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock)
[ 79.302407] coresight-cpu-debug f65d6000.debug: EDPCSR: [<ffff00000871ee54>] cpu_lock+0x44/0x50
[ 79.311290] coresight-cpu-debug f65d6000.debug: EDCIDSR: 00000000
[ 79.317478] coresight-cpu-debug f65d6000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0)
https://youtu.be/mFuvWrUrlwo
Overview
● Discussion for practical scenarios
○ Finding program execution flow for system hang
○ CPU is dead, how to know CPU current state?
○ Offline analysis of program execution flow
● You can extend for your SoC
The scenario - Offline analysis of program execution flow
If hang or panic issues happen in production
release, we usually need to use analyse
program execution flow offline using host tools.
Ramoops with function tracing is often no
enabled for production testing because it might
downgrade performance seriously; and thus
alter or prevent reproduction for heisenbugs.
Coresight hardware tracer is a good candidate
to record program execution flow with
minimising overhead.
● Coresight + kdump can store hardware
tracing data in dump file for kernel panic
and we can rely on crash tool to extract
tracing data
● Perf + OpenCSD tool decodes tracing
data and outputs readable program flow
● It smoothly supports kernel panic
debugging but so far it isn’t for
debugging system hang
● Trick: If Coresight RAM is preserved after
reset then useful Coresight tracing data
can still be extracted for debugging hang
issues
Demo for Coresight + Kdump
Step 1: Enable all required kconfig options
CONFIG_CORESIGHT=y
CONFIG_CORESIGHT_LINKS_AND_SINKS=y
CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
CONFIG_CORESIGHT_SOURCE_ETM4X=y
CONFIG_CORESIGHT_PANIC_KDUMP=y
CONFIG_KEXEC=y
CONFIG_CRASH_DUMP=y
Step 2: Prepare for testing
Enable Coresight tracer and sink
Use kexec to load capture-dump kernel and dtb
Step 3: Run test case until system panic
Step 4: Boot capture-dump kernel, save core file
Step 5: Extract Coresight tracing data with crash
# crash vmlinux vmcore
crash> extend csdump.so
crash> csdump out_folder
Step 6: Boot original kernel for analysis with perf
To avoid kernel build id mismatch when analysing
coresight trace data, we can run original kernel with
kernel symbol file:
# perf script -v -a -F cpu,event,ip,sym,symoff
-i perf.data --kallsyms /proc/kallsyms
Demo video and perf decodes program flow
# ./perf script -f -v -a -F cpu,event,ip,sym,symoff --kallsyms /proc/kallsyms
build id event received for [kernel.kallsyms]: 32eeb5c9c99d00a63d0921cbd815c32385c36710
Using /proc/kcore for kernel object code
Using /proc/kallsyms for symbols
Frame deformatter: Found 4 FSYNCS
[000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc
[000] branches: ffff000008afa6e8 __delay+0x90
[000] branches: ffff000008afa6dc __delay+0x84
[000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc
[000] branches: ffff000008afa6e8 __delay+0x90
[000] branches: ffff000008afa6dc __delay+0x84
[000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc
[000] branches: ffff000008afa6e8 __delay+0x90
[000] branches: ffff000008afa6dc __delay+0x84
[000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc
[000] branches: ffff000008afa6e8 __delay+0x90
[000] branches: ffff000008afa6dc __delay+0x84
[000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc
[000] branches: ffff000008afa6e8 __delay+0x90
[000] branches: ffff000008afa6dc __delay+0x84
https://youtu.be/oLlBpzVGeFU
Overview
● Discussion for practical scenarios
○ Finding program execution flow for system hang
○ CPU is dead, how to know CPU current state?
○ Offline analysis of program execution flow
● You can extend for your SoC
You can extend for your SoC
You can extend to use other bus masters
(DSP, MCU, etc) to access coresight CPU
debug module to recover last PC in case
all CPUs for Linux are dead.
You can extend other bus masters to
support support a kdump-like workflow to
preserve DDR and coresight trace data
(preserved after reset) which can then be
analysed using open source tools.
Kernel
panic
System
hang
Dump
capture
kernel
Second
boot
kernel
Crash
Coresight tracer
Perf + OpenCSD
ramoops
Coresight
CPU debug
Extended working flow
MCU
Related materials
● Coresight related patches and testing case
○ https://git.linaro.org/people/leo.yan/linux-debug-workshop.git/log/?h=acme_perf_core_cs_dev
○ Ramoops and coresight CPU debug module has been merged into mainline kernel
○ Coresight for kdump supporting patches are working in progress
● This session adds new ideas not found in our previous debugging session:
BUD17-TR04: Kernel Debug Stories
○ Presented by Daniel Thompson: http://connect.linaro.org/resource/bud17/bud17-tr04/
○ Kernel Debug Stories covers far too many techniques to allow time for live demos ;-)
Linaro Limited Lifetime Warranty
This training presentation comes with a
lifetime warranty.
Everyone here today can send questions
about today’s session and suggestions for
future topics to support@linaro.org .
Member engineers can also use this address to get support on
any other Linaro output. Engineers from club and core members
are welcome to contact us to discuss how Support and Solutions
Engineering can help you with additional services and training.
With thanks to Andrew Hennigan for introducing the idea of placing a guarantee on training.
Graphic by Jost, CC0-PD
Thank You
#HKG18
HKG18 keynotes and videos on: connect.linaro.org
For further information: support@linaro.org or www.linaro.org

Weitere ähnliche Inhalte

Was ist angesagt?

Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Linaro
 
SCADA Strangelove: взлом во имя
SCADA Strangelove: взлом во имяSCADA Strangelove: взлом во имя
SCADA Strangelove: взлом во имяEkaterina Melnik
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)Simen Li
 
建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card艾鍗科技
 
Demystifying Secure enclave processor
Demystifying Secure enclave processorDemystifying Secure enclave processor
Demystifying Secure enclave processorPriyanka Aash
 
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMU
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMUSFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMU
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMULinaro
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreGlobalLogic Ukraine
 
Breaking hardware enforced security with hypervisors
Breaking hardware enforced security with hypervisorsBreaking hardware enforced security with hypervisors
Breaking hardware enforced security with hypervisorsPriyanka Aash
 
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGNVictor Asanza
 
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC [DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC DefconRussia
 
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacks
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other AttacksExploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacks
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacksinside-BigData.com
 
Stop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production SystemsStop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production SystemsBrendan Gregg
 
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Orgad Kimchi
 
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevLearn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevJian-Hong Pan
 

Was ist angesagt? (20)

Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
 
SCADA Strangelove: взлом во имя
SCADA Strangelove: взлом во имяSCADA Strangelove: взлом во имя
SCADA Strangelove: взлом во имя
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (2)
 
建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card
 
Demystifying Secure enclave processor
Demystifying Secure enclave processorDemystifying Secure enclave processor
Demystifying Secure enclave processor
 
Esp with thepic16f877
Esp with thepic16f877Esp with thepic16f877
Esp with thepic16f877
 
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMU
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMUSFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMU
SFO15-202: Towards Multi-Threaded Tiny Code Generator (TCG) in QEMU
 
Boot prom basics
Boot prom basicsBoot prom basics
Boot prom basics
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/Spectre
 
Breaking hardware enforced security with hypervisors
Breaking hardware enforced security with hypervisorsBreaking hardware enforced security with hypervisors
Breaking hardware enforced security with hypervisors
 
Backtrack Manual Part8
Backtrack Manual Part8Backtrack Manual Part8
Backtrack Manual Part8
 
Uvm dac2011 final_color
Uvm dac2011 final_colorUvm dac2011 final_color
Uvm dac2011 final_color
 
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN
⭐⭐⭐⭐⭐ PROTEUS PCB DESIGN
 
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC [DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
 
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacks
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other AttacksExploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacks
Exploiting Modern Microarchitectures: Meltdown, Spectre, and other Attacks
 
Stop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production SystemsStop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production Systems
 
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
Performance analysis in a multitenant cloud environment Using Hadoop Cluster ...
 
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevLearn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev
 
Minsoc
MinsocMinsoc
Minsoc
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 

Ähnlich wie HKG18-TR14 - Postmortem Debugging with Coresight

Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernellcplcp1
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time OptimizationKan-Ru Chen
 
Troubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device DriversTroubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device DriversSatpal Parmar
 
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1Jagadisha Maiya
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel CrashdumpMarian Marinov
 
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringOSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringNETWAYS
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisAnne Nicolas
 
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdf
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdfBasics_of_Kernel_Panic_Hang_and_ Kdump.pdf
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdfstroganovboris
 
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerNETWAYS
 
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerNETWAYS
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemCyber Security Alliance
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniquesSatpal Parmar
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenLex Yu
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceBrendan Gregg
 
Linux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisLinux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisPaul V. Novarese
 
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFBrendan Gregg
 
Advanced Root Cause Analysis
Advanced Root Cause AnalysisAdvanced Root Cause Analysis
Advanced Root Cause AnalysisEric Sloof
 

Ähnlich wie HKG18-TR14 - Postmortem Debugging with Coresight (20)

Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernel
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
Troubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device DriversTroubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device Drivers
 
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1
Troubleshooting linux-kernel-modules-and-device-drivers-1233050713693744-1
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel Crashdump
 
Debugging 2013- Jesper Brouer
Debugging 2013- Jesper BrouerDebugging 2013- Jesper Brouer
Debugging 2013- Jesper Brouer
 
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringOSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoring
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysis
 
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdf
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdfBasics_of_Kernel_Panic_Hang_and_ Kdump.pdf
Basics_of_Kernel_Panic_Hang_and_ Kdump.pdf
 
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015: Linux Performance Profiling and Monitoring by Werner Fischer
 
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner FischerOSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
OSMC 2015 | Linux Performance Profiling and Monitoring by Werner Fischer
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande Modem
 
Techno-Fest-15nov16
Techno-Fest-15nov16Techno-Fest-15nov16
Techno-Fest-15nov16
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniques
 
Crash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_TizenCrash_Report_Mechanism_In_Tizen
Crash_Report_Mechanism_In_Tizen
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems Performance
 
Linux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisLinux Crash Dump Capture and Analysis
Linux Crash Dump Capture and Analysis
 
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
 
Advanced Root Cause Analysis
Advanced Root Cause AnalysisAdvanced Root Cause Analysis
Advanced Root Cause Analysis
 

Mehr von Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

Mehr von Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Kürzlich hochgeladen

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Kürzlich hochgeladen (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

HKG18-TR14 - Postmortem Debugging with Coresight

  • 1. Postmortem Debugging with Coresight HKG18-TR14 Leo Yan, Linaro Support and Solutions Engineering
  • 2. Introduction This session discusses postmortem debugging techniques in the Linux kernel. Firstly we will review ramoops (aka. pstore) with software tracing for postmortem debugging, then go through two Coresight debugging methods with hardware assisted tracing. We will finish this material + 3 demos in 25 minutes. Kernel panic System hang Dump capture kernel Second boot kernel Crash Coresight tracer Perf + OpenCSD ramoops Coresight CPU debug Working flow with debugging tools
  • 3. Overview ● Discussion for practical scenarios ○ Finding program execution flow for system hang ○ CPU is dead, how to read current CPU state? ○ Offline analysis of program execution flow ● You can extend for your SoC
  • 4. The scenario - Finding program execution flow for system hang When a system hangs, we cannot always rely on the console for printing log messages Modern CPUs improve performance by using asynchronous operations on external bus or memory system (early acknowledge, OoO, etc), such systems may not hang immediately after running a ‘bad’ instruction To narrow down the cause, we need to reverse program execution flow to find hints. ● Ramoops (aka. pstore) is general framework to dump logs into persistent RAM and which survive after a restart ● Ramoops can dump: ○ Console message ○ Oops and panic log ○ Function tracing ● Ramoops function tracing is used to reverse program execution flow
  • 5. Demo for ramoops Step 1: Enable all required kconfig options CONFIG_PSTORE=y CONFIG_PSTORE_FTRACE=y CONFIG_DEBUG_FS=y Step 2: Prepare for testing Enable ramoops for function tracing # mount -t debugfs debugfs /sys/kernel/debug/ # echo 1 > /sys/kernel/debug/pstore/record_ftrace Enable watchdog # echo 1 > /dev/watchdog Step 3: Run testing case until system hangs Step 4: Reboot with watchdog timeout Step 5: Analyze tracing data # mount -t pstore pstore /mnt # cat /mnt/ftrace-ramoops-0 > tracing.log
  • 6. Demo and ramoops log CPU:0 ts:1000329 ffff0000082c87ec ffff0000082c9030 single_start <- seq_read+0x1a0/0x4c0 CPU:0 ts:1000330 ffff0000087214d4 ffff0000082c9058 dbg_ws_hang_show <- seq_read+0x1c8/0x4c0 CPU:0 ts:1000331 ffff0000080a428c ffff00000872151c __ioremap <- dbg_ws_hang_show+0x54/0xa8 CPU:0 ts:1000332 ffff0000080a41b0 ffff0000080a42a0 __ioremap_caller <- __ioremap+0x38/0x50 CPU:0 ts:1000333 ffff0000080a3c44 ffff0000080a41d8 pfn_valid <- __ioremap_caller+0x60/0xf0 CPU:0 ts:1000334 ffff0000082569c4 ffff0000080a3c4c memblock_is_map_memory <- pfn_valid+0x1c/0x30 CPU:0 ts:1000335 ffff0000082517f8 ffff0000080a41ec get_vm_area_caller <- __ioremap_caller+0x74/0xf0 CPU:0 ts:1000336 ffff000008251438 ffff00000825182c __get_vm_area_node <- get_vm_area_caller+0x54/0x68 https://youtu.be/2_SIdeQrG-Y
  • 7. Overview ● Discussion for practical scenarios ○ Finding program execution flow for system hang ○ CPU is dead, how to read current CPU state? ○ Offline analysis of program execution flow ● You can extend for your SoC
  • 8. The scenario - CPU is dead, how to read current CPU state? When a CPU dies, perhaps locked up with IRQ/FIQ masked or a stuck waiting for a bus access, the dead CPU cannot react to SMP inter-processor interrupt to dump backtrace. JTAG debugger could be used to check dead CPU state, but we can explore a more convenient method in kernel for systems that have other CPUs are still alive so can dump PC value for dead CPU. ● CORESIGHT_CPU_DEBUG: Coresight CPU debug module allows Linux SMP partners to watch each other (enhanced LOCKUP_DETECTOR). ● Can be used to dump CPU state based on ARM sample-based profiling extension. ● Last CPU PC before failure is stored in its debug unit and other processors can extract this too (no cache problems)!
  • 9. Demo for Coresight CPU debug Step 1: Enable all required kconfig options CONFIG_CORESIGHT_CPU_DEBUG=y Step 2: Prepare for testing Disable CPU idle states in command line (if need): nohlt Enable panic on RCU stall if system doesn’t support hard lock detection: # sysctl -w kernel.panic_on_rcu_stall=1 Step 3: Run test case until system panic Step 4: Read debug info logged during panic
  • 10. Demo video and Coresight CPU debug log [ 79.171171] coresight-cpu-debug f65d0000.debug: CPU[4]: [ 79.176408] coresight-cpu-debug f65d0000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock) [ 79.184512] coresight-cpu-debug f65d0000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8 [ 79.193743] coresight-cpu-debug f65d0000.debug: EDCIDSR: 00000000 [ 79.199931] coresight-cpu-debug f65d0000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0) [ 79.210468] coresight-cpu-debug f65d2000.debug: CPU[5]: [ 79.215705] coresight-cpu-debug f65d2000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock) [ 79.223810] coresight-cpu-debug f65d2000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8 [ 79.233041] coresight-cpu-debug f65d2000.debug: EDCIDSR: 00000000 [ 79.239229] coresight-cpu-debug f65d2000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0) [ 79.249765] coresight-cpu-debug f65d4000.debug: CPU[6]: [ 79.255003] coresight-cpu-debug f65d4000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock) [ 79.263107] coresight-cpu-debug f65d4000.debug: EDPCSR: [<ffff00000809560c>] handle_IPI+0x27c/0x2d8 [ 79.272338] coresight-cpu-debug f65d4000.debug: EDCIDSR: 00000000 [ 79.278526] coresight-cpu-debug f65d4000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0) [ 79.289062] coresight-cpu-debug f65d6000.debug: CPU[7]: [ 79.294299] coresight-cpu-debug f65d6000.debug: EDPRSR: 00000001 (Power:On DLK:Unlock) [ 79.302407] coresight-cpu-debug f65d6000.debug: EDPCSR: [<ffff00000871ee54>] cpu_lock+0x44/0x50 [ 79.311290] coresight-cpu-debug f65d6000.debug: EDCIDSR: 00000000 [ 79.317478] coresight-cpu-debug f65d6000.debug: EDVIDSR: 90000000 (State:Non-secure Mode:EL1/0 Width:64bits VMID:0) https://youtu.be/mFuvWrUrlwo
  • 11. Overview ● Discussion for practical scenarios ○ Finding program execution flow for system hang ○ CPU is dead, how to know CPU current state? ○ Offline analysis of program execution flow ● You can extend for your SoC
  • 12. The scenario - Offline analysis of program execution flow If hang or panic issues happen in production release, we usually need to use analyse program execution flow offline using host tools. Ramoops with function tracing is often no enabled for production testing because it might downgrade performance seriously; and thus alter or prevent reproduction for heisenbugs. Coresight hardware tracer is a good candidate to record program execution flow with minimising overhead. ● Coresight + kdump can store hardware tracing data in dump file for kernel panic and we can rely on crash tool to extract tracing data ● Perf + OpenCSD tool decodes tracing data and outputs readable program flow ● It smoothly supports kernel panic debugging but so far it isn’t for debugging system hang ● Trick: If Coresight RAM is preserved after reset then useful Coresight tracing data can still be extracted for debugging hang issues
  • 13. Demo for Coresight + Kdump Step 1: Enable all required kconfig options CONFIG_CORESIGHT=y CONFIG_CORESIGHT_LINKS_AND_SINKS=y CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y CONFIG_CORESIGHT_SOURCE_ETM4X=y CONFIG_CORESIGHT_PANIC_KDUMP=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y Step 2: Prepare for testing Enable Coresight tracer and sink Use kexec to load capture-dump kernel and dtb Step 3: Run test case until system panic Step 4: Boot capture-dump kernel, save core file Step 5: Extract Coresight tracing data with crash # crash vmlinux vmcore crash> extend csdump.so crash> csdump out_folder Step 6: Boot original kernel for analysis with perf To avoid kernel build id mismatch when analysing coresight trace data, we can run original kernel with kernel symbol file: # perf script -v -a -F cpu,event,ip,sym,symoff -i perf.data --kallsyms /proc/kallsyms
  • 14. Demo video and perf decodes program flow # ./perf script -f -v -a -F cpu,event,ip,sym,symoff --kallsyms /proc/kallsyms build id event received for [kernel.kallsyms]: 32eeb5c9c99d00a63d0921cbd815c32385c36710 Using /proc/kcore for kernel object code Using /proc/kallsyms for symbols Frame deformatter: Found 4 FSYNCS [000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc [000] branches: ffff000008afa6e8 __delay+0x90 [000] branches: ffff000008afa6dc __delay+0x84 [000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc [000] branches: ffff000008afa6e8 __delay+0x90 [000] branches: ffff000008afa6dc __delay+0x84 [000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc [000] branches: ffff000008afa6e8 __delay+0x90 [000] branches: ffff000008afa6dc __delay+0x84 [000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc [000] branches: ffff000008afa6e8 __delay+0x90 [000] branches: ffff000008afa6dc __delay+0x84 [000] branches: ffff000008972e7c arch_counter_get_cntpct+0xc [000] branches: ffff000008afa6e8 __delay+0x90 [000] branches: ffff000008afa6dc __delay+0x84 https://youtu.be/oLlBpzVGeFU
  • 15. Overview ● Discussion for practical scenarios ○ Finding program execution flow for system hang ○ CPU is dead, how to know CPU current state? ○ Offline analysis of program execution flow ● You can extend for your SoC
  • 16. You can extend for your SoC You can extend to use other bus masters (DSP, MCU, etc) to access coresight CPU debug module to recover last PC in case all CPUs for Linux are dead. You can extend other bus masters to support support a kdump-like workflow to preserve DDR and coresight trace data (preserved after reset) which can then be analysed using open source tools. Kernel panic System hang Dump capture kernel Second boot kernel Crash Coresight tracer Perf + OpenCSD ramoops Coresight CPU debug Extended working flow MCU
  • 17. Related materials ● Coresight related patches and testing case ○ https://git.linaro.org/people/leo.yan/linux-debug-workshop.git/log/?h=acme_perf_core_cs_dev ○ Ramoops and coresight CPU debug module has been merged into mainline kernel ○ Coresight for kdump supporting patches are working in progress ● This session adds new ideas not found in our previous debugging session: BUD17-TR04: Kernel Debug Stories ○ Presented by Daniel Thompson: http://connect.linaro.org/resource/bud17/bud17-tr04/ ○ Kernel Debug Stories covers far too many techniques to allow time for live demos ;-)
  • 18. Linaro Limited Lifetime Warranty This training presentation comes with a lifetime warranty. Everyone here today can send questions about today’s session and suggestions for future topics to support@linaro.org . Member engineers can also use this address to get support on any other Linaro output. Engineers from club and core members are welcome to contact us to discuss how Support and Solutions Engineering can help you with additional services and training. With thanks to Andrew Hennigan for introducing the idea of placing a guarantee on training. Graphic by Jost, CC0-PD
  • 19. Thank You #HKG18 HKG18 keynotes and videos on: connect.linaro.org For further information: support@linaro.org or www.linaro.org