1b47d1fcdSLinu Cherian=================================================== 2b47d1fcdSLinu CherianUsing Coresight for Kernel panic and Watchdog reset 3b47d1fcdSLinu Cherian=================================================== 4b47d1fcdSLinu Cherian 5b47d1fcdSLinu CherianIntroduction 6b47d1fcdSLinu Cherian------------ 7b47d1fcdSLinu CherianThis documentation is about using Linux coresight trace support to 8b47d1fcdSLinu Cheriandebug kernel panic and watchdog reset scenarios. 9b47d1fcdSLinu Cherian 10b47d1fcdSLinu CherianCoresight trace during Kernel panic 11b47d1fcdSLinu Cherian----------------------------------- 12b47d1fcdSLinu CherianFrom the coresight driver point of view, addressing the kernel panic 13b47d1fcdSLinu Cheriansituation has four main requirements. 14b47d1fcdSLinu Cherian 15b47d1fcdSLinu Cheriana. Support for allocation of trace buffer pages from reserved memory area. 16b47d1fcdSLinu Cherian Platform can advertise this using a new device tree property added to 17b47d1fcdSLinu Cherian relevant coresight nodes. 18b47d1fcdSLinu Cherian 19b47d1fcdSLinu Cherianb. Support for stopping coresight blocks at the time of panic 20b47d1fcdSLinu Cherian 21b47d1fcdSLinu Cherianc. Saving required metadata in the specified format 22b47d1fcdSLinu Cherian 23b47d1fcdSLinu Cheriand. Support for reading trace data captured at the time of panic 24b47d1fcdSLinu Cherian 25b47d1fcdSLinu CherianAllocation of trace buffer pages from reserved RAM 26b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27b47d1fcdSLinu CherianA new optional device tree property "memory-region" is added to the 28b47d1fcdSLinu CherianCoresight TMC device nodes, that would give the base address and size of trace 29b47d1fcdSLinu Cherianbuffer. 30b47d1fcdSLinu Cherian 31b47d1fcdSLinu CherianStatic allocation of trace buffers would ensure that both IOMMU enabled 32b47d1fcdSLinu Cherianand disabled cases are handled. Also, platforms that support persistent 33b47d1fcdSLinu CherianRAM will allow users to read trace data in the subsequent boot without 34b47d1fcdSLinu Cherianbooting the crashdump kernel. 35b47d1fcdSLinu Cherian 36b47d1fcdSLinu CherianNote: 37b47d1fcdSLinu CherianFor ETR sink devices, this reserved region will be used for both trace 38b47d1fcdSLinu Cheriancapture and trace data retrieval. 39b47d1fcdSLinu CherianFor ETF sink devices, internal SRAM would be used for trace capture, 40b47d1fcdSLinu Cherianand they would be synced to reserved region for retrieval. 41b47d1fcdSLinu Cherian 42b47d1fcdSLinu Cherian 43b47d1fcdSLinu CherianDisabling coresight blocks at the time of panic 44b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45b47d1fcdSLinu CherianIn order to avoid the situation of losing relevant trace data after a 46b47d1fcdSLinu Cheriankernel panic, it would be desirable to stop the coresight blocks at the 47b47d1fcdSLinu Cheriantime of panic. 48b47d1fcdSLinu Cherian 49b47d1fcdSLinu CherianThis can be achieved by configuring the comparator, CTI and sink 50b47d1fcdSLinu Cheriandevices as below:: 51b47d1fcdSLinu Cherian 52b47d1fcdSLinu Cherian Trigger on panic 53b47d1fcdSLinu Cherian Comparator --->External out --->CTI -->External In---->ETR/ETF stop 54b47d1fcdSLinu Cherian 55b47d1fcdSLinu CherianSaving metadata at the time of kernel panic 56b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57b47d1fcdSLinu CherianCoresight metadata involves all additional data that are required for a 58b47d1fcdSLinu Cheriansuccessful trace decode in addition to the trace data. This involves 59b47d1fcdSLinu CherianETR/ETF/ETB register snapshot etc. 60b47d1fcdSLinu Cherian 61b47d1fcdSLinu CherianA new optional device property "memory-region" is added to 62b47d1fcdSLinu Cherianthe ETR/ETF/ETB device nodes for this. 63b47d1fcdSLinu Cherian 64b47d1fcdSLinu CherianReading trace data captured at the time of panic 65b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66b47d1fcdSLinu CherianTrace data captured at the time of panic, can be read from rebooted kernel 67b47d1fcdSLinu Cherianor from crashdump kernel using a special device file /dev/crash_tmc_xxx. 68b47d1fcdSLinu CherianThis device file is created only when there is a valid crashdata available. 69b47d1fcdSLinu Cherian 70b47d1fcdSLinu CherianGeneral flow of trace capture and decode in case of kernel panic 71*52092c1dSHendrik Hamerlinck~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 72b47d1fcdSLinu Cherian1. Enable source and sink on all the cores using the sysfs interface. 73b47d1fcdSLinu Cherian ETR sinks should have trace buffers allocated from reserved memory, 74b47d1fcdSLinu Cherian by selecting "resrv" buffer mode from sysfs. 75b47d1fcdSLinu Cherian 76b47d1fcdSLinu Cherian2. Run relevant tests. 77b47d1fcdSLinu Cherian 78b47d1fcdSLinu Cherian3. On a kernel panic, all coresight blocks are disabled, necessary 79b47d1fcdSLinu Cherian metadata is synced by kernel panic handler. 80b47d1fcdSLinu Cherian 81b47d1fcdSLinu Cherian System would eventually reboot or boot a crashdump kernel. 82b47d1fcdSLinu Cherian 83b47d1fcdSLinu Cherian4. For platforms that supports crashdump kernel, raw trace data can be 84b47d1fcdSLinu Cherian dumped using the coresight sysfs interface from the crashdump kernel 85b47d1fcdSLinu Cherian itself. Persistent RAM is not a requirement in this case. 86b47d1fcdSLinu Cherian 87b47d1fcdSLinu Cherian5. For platforms that supports persistent RAM, trace data can be dumped 88b47d1fcdSLinu Cherian using the coresight sysfs interface in the subsequent Linux boot. 89b47d1fcdSLinu Cherian Crashdump kernel is not a requirement in this case. Persistent RAM 90b47d1fcdSLinu Cherian ensures that trace data is intact across reboot. 91b47d1fcdSLinu Cherian 92b47d1fcdSLinu CherianCoresight trace during Watchdog reset 93b47d1fcdSLinu Cherian------------------------------------- 94b47d1fcdSLinu CherianThe main difference between addressing the watchdog reset and kernel panic 95b47d1fcdSLinu Cheriancase are below, 96b47d1fcdSLinu Cherian 97b47d1fcdSLinu Cheriana. Saving coresight metadata need to be taken care by the 98b47d1fcdSLinu Cherian SCP(system control processor) firmware in the specified format, 99b47d1fcdSLinu Cherian instead of kernel. 100b47d1fcdSLinu Cherian 101b47d1fcdSLinu Cherianb. Reserved memory region given by firmware for trace buffer and metadata 102b47d1fcdSLinu Cherian has to be in persistent RAM. 103b47d1fcdSLinu Cherian Note: This is a requirement for watchdog reset case but optional 104b47d1fcdSLinu Cherian in kernel panic case. 105b47d1fcdSLinu Cherian 106b47d1fcdSLinu CherianWatchdog reset can be supported only on platforms that meet the above 107b47d1fcdSLinu Cheriantwo requirements. 108b47d1fcdSLinu Cherian 109b47d1fcdSLinu CherianSample commands for testing a Kernel panic case with ETR sink 110b47d1fcdSLinu Cherian------------------------------------------------------------- 111b47d1fcdSLinu Cherian 112b47d1fcdSLinu Cherian1. Boot Linux kernel with "crash_kexec_post_notifiers" added to the kernel 113b47d1fcdSLinu Cherian bootargs. This is mandatory if the user would like to read the tracedata 114b47d1fcdSLinu Cherian from the crashdump kernel. 115b47d1fcdSLinu Cherian 116b47d1fcdSLinu Cherian2. Enable the preloaded ETM configuration:: 117b47d1fcdSLinu Cherian 118b47d1fcdSLinu Cherian #echo 1 > /sys/kernel/config/cs-syscfg/configurations/panicstop/enable 119b47d1fcdSLinu Cherian 120b47d1fcdSLinu Cherian3. Configure CTI using sysfs interface:: 121b47d1fcdSLinu Cherian 122b47d1fcdSLinu Cherian #./cti_setup.sh 123b47d1fcdSLinu Cherian 124b47d1fcdSLinu Cherian #cat cti_setup.sh 125b47d1fcdSLinu Cherian 126b47d1fcdSLinu Cherian 127b47d1fcdSLinu Cherian cd /sys/bus/coresight/devices/ 128b47d1fcdSLinu Cherian 129b47d1fcdSLinu Cherian ap_cti_config () { 130b47d1fcdSLinu Cherian #ETM trig out[0] trigger to Channel 0 131b47d1fcdSLinu Cherian echo 0 4 > channels/trigin_attach 132b47d1fcdSLinu Cherian } 133b47d1fcdSLinu Cherian 134b47d1fcdSLinu Cherian etf_cti_config () { 135b47d1fcdSLinu Cherian #ETF Flush in trigger from Channel 0 136b47d1fcdSLinu Cherian echo 0 1 > channels/trigout_attach 137b47d1fcdSLinu Cherian echo 1 > channels/trig_filter_enable 138b47d1fcdSLinu Cherian } 139b47d1fcdSLinu Cherian 140b47d1fcdSLinu Cherian etr_cti_config () { 141b47d1fcdSLinu Cherian #ETR Flush in from Channel 0 142b47d1fcdSLinu Cherian echo 0 1 > channels/trigout_attach 143b47d1fcdSLinu Cherian echo 1 > channels/trig_filter_enable 144b47d1fcdSLinu Cherian } 145b47d1fcdSLinu Cherian 146b47d1fcdSLinu Cherian ctidevs=`find . -name "cti*"` 147b47d1fcdSLinu Cherian 148b47d1fcdSLinu Cherian for i in $ctidevs 149b47d1fcdSLinu Cherian do 150b47d1fcdSLinu Cherian cd $i 151b47d1fcdSLinu Cherian 152b47d1fcdSLinu Cherian connection=`find . -name "ete*"` 153b47d1fcdSLinu Cherian if [ ! -z "$connection" ] 154b47d1fcdSLinu Cherian then 155b47d1fcdSLinu Cherian echo "AP CTI config for $i" 156b47d1fcdSLinu Cherian ap_cti_config 157b47d1fcdSLinu Cherian fi 158b47d1fcdSLinu Cherian 159b47d1fcdSLinu Cherian connection=`find . -name "tmc_etf*"` 160b47d1fcdSLinu Cherian if [ ! -z "$connection" ] 161b47d1fcdSLinu Cherian then 162b47d1fcdSLinu Cherian echo "ETF CTI config for $i" 163b47d1fcdSLinu Cherian etf_cti_config 164b47d1fcdSLinu Cherian fi 165b47d1fcdSLinu Cherian 166b47d1fcdSLinu Cherian connection=`find . -name "tmc_etr*"` 167b47d1fcdSLinu Cherian if [ ! -z "$connection" ] 168b47d1fcdSLinu Cherian then 169b47d1fcdSLinu Cherian echo "ETR CTI config for $i" 170b47d1fcdSLinu Cherian etr_cti_config 171b47d1fcdSLinu Cherian fi 172b47d1fcdSLinu Cherian 173b47d1fcdSLinu Cherian cd .. 174b47d1fcdSLinu Cherian done 175b47d1fcdSLinu Cherian 176b47d1fcdSLinu CherianNote: CTI connections are SOC specific and hence the above script is 177b47d1fcdSLinu Cherianadded just for reference. 178b47d1fcdSLinu Cherian 179b47d1fcdSLinu Cherian4. Choose reserved buffer mode for ETR buffer:: 180b47d1fcdSLinu Cherian 181b47d1fcdSLinu Cherian #echo "resrv" > /sys/bus/coresight/devices/tmc_etr0/buf_mode_preferred 182b47d1fcdSLinu Cherian 183b47d1fcdSLinu Cherian5. Enable stop on flush trigger configuration:: 184b47d1fcdSLinu Cherian 185b47d1fcdSLinu Cherian #echo 1 > /sys/bus/coresight/devices/tmc_etr0/stop_on_flush 186b47d1fcdSLinu Cherian 187b47d1fcdSLinu Cherian6. Start Coresight tracing on cores 1 and 2 using sysfs interface 188b47d1fcdSLinu Cherian 189b47d1fcdSLinu Cherian7. Run some application on core 1:: 190b47d1fcdSLinu Cherian 191b47d1fcdSLinu Cherian #taskset -c 1 dd if=/dev/urandom of=/dev/null & 192b47d1fcdSLinu Cherian 193b47d1fcdSLinu Cherian8. Invoke kernel panic on core 2:: 194b47d1fcdSLinu Cherian 195b47d1fcdSLinu Cherian #echo 1 > /proc/sys/kernel/panic 196b47d1fcdSLinu Cherian #taskset -c 2 echo c > /proc/sysrq-trigger 197b47d1fcdSLinu Cherian 198b47d1fcdSLinu Cherian9. From rebooted kernel or crashdump kernel, read crashdata:: 199b47d1fcdSLinu Cherian 200b47d1fcdSLinu Cherian #dd if=/dev/crash_tmc_etr0 of=/trace/cstrace.bin 201b47d1fcdSLinu Cherian 202b47d1fcdSLinu Cherian10. Run opencsd decoder tools/scripts to generate the instruction trace. 203b47d1fcdSLinu Cherian 204b47d1fcdSLinu CherianSample instruction trace dump 205b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 206b47d1fcdSLinu Cherian 207b47d1fcdSLinu CherianCore1 dump:: 208b47d1fcdSLinu Cherian 209b47d1fcdSLinu Cherian A etm4_enable_hw: ffff800008ae1dd4 210b47d1fcdSLinu Cherian CONTEXT EL2 etm4_enable_hw: ffff800008ae1dd4 211b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dd4: 212b47d1fcdSLinu Cherian d503201f nop 213b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dd8: 214b47d1fcdSLinu Cherian d503201f nop 215b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1ddc: 216b47d1fcdSLinu Cherian d503201f nop 217b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de0: 218b47d1fcdSLinu Cherian d503201f nop 219b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de4: 220b47d1fcdSLinu Cherian d503201f nop 221b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de8: 222b47d1fcdSLinu Cherian d503233f paciasp 223b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dec: 224b47d1fcdSLinu Cherian a9be7bfd stp x29, x30, [sp, #-32]! 225b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df0: 226b47d1fcdSLinu Cherian 910003fd mov x29, sp 227b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df4: 228b47d1fcdSLinu Cherian a90153f3 stp x19, x20, [sp, #16] 229b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df8: 230b47d1fcdSLinu Cherian 2a0003f4 mov w20, w0 231b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dfc: 232b47d1fcdSLinu Cherian 900085b3 adrp x19, ffff800009b95000 <reserved_mem+0xc48> 233b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1e00: 234b47d1fcdSLinu Cherian 910f4273 add x19, x19, #0x3d0 235b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1e04: 236b47d1fcdSLinu Cherian f8747a60 ldr x0, [x19, x20, lsl #3] 237b47d1fcdSLinu Cherian E etm4_enable_hw: ffff800008ae1e08: 238b47d1fcdSLinu Cherian b4000140 cbz x0, ffff800008ae1e30 <etm4_starting_cpu+0x50> 239b47d1fcdSLinu Cherian I 149.039572921 etm4_enable_hw: ffff800008ae1e30: 240b47d1fcdSLinu Cherian a94153f3 ldp x19, x20, [sp, #16] 241b47d1fcdSLinu Cherian I 149.039572921 etm4_enable_hw: ffff800008ae1e34: 242b47d1fcdSLinu Cherian 52800000 mov w0, #0x0 // #0 243b47d1fcdSLinu Cherian I 149.039572921 etm4_enable_hw: ffff800008ae1e38: 244b47d1fcdSLinu Cherian a8c27bfd ldp x29, x30, [sp], #32 245b47d1fcdSLinu Cherian 246b47d1fcdSLinu Cherian ..snip 247b47d1fcdSLinu Cherian 248b47d1fcdSLinu Cherian 149.052324811 chacha_block_generic: ffff800008642d80: 249b47d1fcdSLinu Cherian 9100a3e0 add x0, 250b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d84: 251b47d1fcdSLinu Cherian b86178a2 ldr w2, [x5, x1, lsl #2] 252b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d88: 253b47d1fcdSLinu Cherian 8b010803 add x3, x0, x1, lsl #2 254b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d8c: 255b47d1fcdSLinu Cherian b85fc063 ldur w3, [x3, #-4] 256b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d90: 257b47d1fcdSLinu Cherian 0b030042 add w2, w2, w3 258b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d94: 259b47d1fcdSLinu Cherian b8217882 str w2, [x4, x1, lsl #2] 260b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d98: 261b47d1fcdSLinu Cherian 91000421 add x1, x1, #0x1 262b47d1fcdSLinu Cherian I 149.052324811 chacha_block_generic: ffff800008642d9c: 263b47d1fcdSLinu Cherian f100443f cmp x1, #0x11 264b47d1fcdSLinu Cherian 265b47d1fcdSLinu Cherian 266b47d1fcdSLinu CherianCore 2 dump:: 267b47d1fcdSLinu Cherian 268b47d1fcdSLinu Cherian A etm4_enable_hw: ffff800008ae1dd4 269b47d1fcdSLinu Cherian CONTEXT EL2 etm4_enable_hw: ffff800008ae1dd4 270b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dd4: 271b47d1fcdSLinu Cherian d503201f nop 272b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dd8: 273b47d1fcdSLinu Cherian d503201f nop 274b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1ddc: 275b47d1fcdSLinu Cherian d503201f nop 276b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de0: 277b47d1fcdSLinu Cherian d503201f nop 278b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de4: 279b47d1fcdSLinu Cherian d503201f nop 280b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1de8: 281b47d1fcdSLinu Cherian d503233f paciasp 282b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dec: 283b47d1fcdSLinu Cherian a9be7bfd stp x29, x30, [sp, #-32]! 284b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df0: 285b47d1fcdSLinu Cherian 910003fd mov x29, sp 286b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df4: 287b47d1fcdSLinu Cherian a90153f3 stp x19, x20, [sp, #16] 288b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1df8: 289b47d1fcdSLinu Cherian 2a0003f4 mov w20, w0 290b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1dfc: 291b47d1fcdSLinu Cherian 900085b3 adrp x19, ffff800009b95000 <reserved_mem+0xc48> 292b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1e00: 293b47d1fcdSLinu Cherian 910f4273 add x19, x19, #0x3d0 294b47d1fcdSLinu Cherian I etm4_enable_hw: ffff800008ae1e04: 295b47d1fcdSLinu Cherian f8747a60 ldr x0, [x19, x20, lsl #3] 296b47d1fcdSLinu Cherian E etm4_enable_hw: ffff800008ae1e08: 297b47d1fcdSLinu Cherian b4000140 cbz x0, ffff800008ae1e30 <etm4_starting_cpu+0x50> 298b47d1fcdSLinu Cherian I 149.046243445 etm4_enable_hw: ffff800008ae1e30: 299b47d1fcdSLinu Cherian a94153f3 ldp x19, x20, [sp, #16] 300b47d1fcdSLinu Cherian I 149.046243445 etm4_enable_hw: ffff800008ae1e34: 301b47d1fcdSLinu Cherian 52800000 mov w0, #0x0 // #0 302b47d1fcdSLinu Cherian I 149.046243445 etm4_enable_hw: ffff800008ae1e38: 303b47d1fcdSLinu Cherian a8c27bfd ldp x29, x30, [sp], #32 304b47d1fcdSLinu Cherian I 149.046243445 etm4_enable_hw: ffff800008ae1e3c: 305b47d1fcdSLinu Cherian d50323bf autiasp 306b47d1fcdSLinu Cherian E 149.046243445 etm4_enable_hw: ffff800008ae1e40: 307b47d1fcdSLinu Cherian d65f03c0 ret 308b47d1fcdSLinu Cherian A ete_sysreg_write: ffff800008adfa18 309b47d1fcdSLinu Cherian 310b47d1fcdSLinu Cherian ..snip 311b47d1fcdSLinu Cherian 312b47d1fcdSLinu Cherian I 149.05422547 panic: ffff800008096300: 313b47d1fcdSLinu Cherian a90363f7 stp x23, x24, [sp, #48] 314b47d1fcdSLinu Cherian I 149.05422547 panic: ffff800008096304: 315b47d1fcdSLinu Cherian 6b00003f cmp w1, w0 316b47d1fcdSLinu Cherian I 149.05422547 panic: ffff800008096308: 317b47d1fcdSLinu Cherian 3a411804 ccmn w0, #0x1, #0x4, ne // ne = any 318b47d1fcdSLinu Cherian N 149.05422547 panic: ffff80000809630c: 319b47d1fcdSLinu Cherian 540001e0 b.eq ffff800008096348 <panic+0xe0> // b.none 320b47d1fcdSLinu Cherian I 149.05422547 panic: ffff800008096310: 321b47d1fcdSLinu Cherian f90023f9 str x25, [sp, #64] 322b47d1fcdSLinu Cherian E 149.05422547 panic: ffff800008096314: 323b47d1fcdSLinu Cherian 97fe44ef bl ffff8000080276d0 <panic_smp_self_stop> 324b47d1fcdSLinu Cherian A panic: ffff80000809634c 325b47d1fcdSLinu Cherian I 149.05422547 panic: ffff80000809634c: 326b47d1fcdSLinu Cherian 910102d5 add x21, x22, #0x40 327b47d1fcdSLinu Cherian I 149.05422547 panic: ffff800008096350: 328b47d1fcdSLinu Cherian 52800020 mov w0, #0x1 // #1 329b47d1fcdSLinu Cherian E 149.05422547 panic: ffff800008096354: 330b47d1fcdSLinu Cherian 94166b8b bl ffff800008631180 <bust_spinlocks> 331b47d1fcdSLinu Cherian N 149.054225518 bust_spinlocks: ffff800008631180: 332b47d1fcdSLinu Cherian 340000c0 cbz w0, ffff800008631198 <bust_spinlocks+0x18> 333b47d1fcdSLinu Cherian I 149.054225518 bust_spinlocks: ffff800008631184: 334b47d1fcdSLinu Cherian f000a321 adrp x1, ffff800009a98000 <pbufs.0+0xbb8> 335b47d1fcdSLinu Cherian I 149.054225518 bust_spinlocks: ffff800008631188: 336b47d1fcdSLinu Cherian b9405c20 ldr w0, [x1, #92] 337b47d1fcdSLinu Cherian I 149.054225518 bust_spinlocks: ffff80000863118c: 338b47d1fcdSLinu Cherian 11000400 add w0, w0, #0x1 339b47d1fcdSLinu Cherian I 149.054225518 bust_spinlocks: ffff800008631190: 340b47d1fcdSLinu Cherian b9005c20 str w0, [x1, #92] 341b47d1fcdSLinu Cherian E 149.054225518 bust_spinlocks: ffff800008631194: 342b47d1fcdSLinu Cherian d65f03c0 ret 343b47d1fcdSLinu Cherian A panic: ffff800008096358 344b47d1fcdSLinu Cherian 345b47d1fcdSLinu CherianPerf based testing 346b47d1fcdSLinu Cherian------------------ 347b47d1fcdSLinu Cherian 348b47d1fcdSLinu CherianStarting perf session 349b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~ 350b47d1fcdSLinu CherianETF:: 351b47d1fcdSLinu Cherian 352b47d1fcdSLinu Cherian perf record -e cs_etm/panicstop,@tmc_etf1/ -C 1 353b47d1fcdSLinu Cherian perf record -e cs_etm/panicstop,@tmc_etf2/ -C 2 354b47d1fcdSLinu Cherian 355b47d1fcdSLinu CherianETR:: 356b47d1fcdSLinu Cherian 357b47d1fcdSLinu Cherian perf record -e cs_etm/panicstop,@tmc_etr0/ -C 1,2 358b47d1fcdSLinu Cherian 359b47d1fcdSLinu CherianReading trace data after panic 360b47d1fcdSLinu Cherian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 361b47d1fcdSLinu CherianSame sysfs based method explained above can be used to retrieve and 362b47d1fcdSLinu Cheriandecode the trace data after the reboot on kernel panic. 363