xref: /linux/Documentation/trace/coresight/panic.rst (revision 3e443d167327b10966166c1953631936547b03d0)
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