@@ -77,60 +77,112 @@ run_loggers()
7777 local collect_secs=2
7878
7979 if is_zephyr; then
80- local cavstool
81- cavstool=$( type -p cavstool.py)
80+ # Collect logs from Zephyr logging backends
8281
83- dlogi " Trying to get Zephyr logs from etrace with background $cavstool ..."
82+ if is_ipc4 ; then
83+ # Get logs via SOF kernel IPC4 SRAM logging interfaces (mtrace)
84+
85+ if [ -z " $MTRACE " ]; then
86+ MTRACE=$( command -v mtrace-reader.py) || {
87+ die " No mtrace-reader.py found in PATH"
88+ }
89+ fi
90+ local mtracetool=" $MTRACE "
91+ dlogi " Trying to get Zephyr logs from mtrace with background $mtracetool ..."
92+ dlogc \
93+ " sudo $mtracetool > $etrace_file 2> $etrace_stderr_file "
94+ # shellcheck disable=SC2024
95+ sudo timeout -k 3 " $collect_secs " \
96+ " $mtracetool " > " $etrace_file " 2> " $etrace_stderr_file " & mtracetoolPID=$!
97+ else
98+ # SOF kernel IPC3 SRAM logging interface (etrace)
99+
100+ local cavstool
101+ cavstool=$( type -p cavstool.py)
102+
103+ dlogi " Trying to get Zephyr logs from etrace with background $cavstool ..."
104+ dlogc \
105+ " sudo $cavstool --log-only > $etrace_file 2>&1"
106+ # Firmware messages are on stdout and local messages on
107+ # stderr. Merge them and then grep ERROR below.
108+ # shellcheck disable=SC2024
109+ sudo timeout -k 3 " $collect_secs " \
110+ " $cavstool " --log-only > " $etrace_file " 2>&1 & cavstoolPID=$!
111+ fi
112+ fi
113+
114+ if ! is_ipc4 ; then
115+ # Sof-logger DMA logging (IPC3 only)
116+
117+ dlogi " Trying to get the DMA .ldc trace log with background sof-logger ..."
84118 dlogc \
85- " sudo $cavstool --log-only > $etrace_file 2>&1"
86- # Firmware messages are on stdout and local messages on
87- # stderr. Merge them and then grep ERROR below.
119+ " sudo $loggerBin -t -f 3 -l $ldcFile > $data_file 2> $error_file &"
88120 # shellcheck disable=SC2024
89- sudo timeout -k 3 " $collect_secs " \
90- " $cavstool " --log-only > " $etrace_file " 2>&1 & cavstoolPID=$!
121+ sudo timeout -k 3 " $collect_secs " \
122+ " $loggerBin " -t -f 3 -l " $ldcFile " \
123+ > " $data_file " 2> " $error_file " & dmaPID=$!
91124 fi
92125
93- dlogi " Trying to get the DMA .ldc trace log with background sof-logger ..."
94- dlogc \
95- " sudo $loggerBin -t -f 3 -l $ldcFile > $data_file 2> $error_file &"
96- # shellcheck disable=SC2024
97- sudo timeout -k 3 " $collect_secs " \
98- " $loggerBin " -t -f 3 -l " $ldcFile " \
99- > " $data_file " 2> " $error_file " & dmaPID=$!
100-
101126 sleep " $collect_secs "
102127
103- loggerStatus=0; wait " $dmaPID " || loggerStatus=$?
104- # 124 is the normal timeout exit status
105- test " $loggerStatus " -eq 124 || {
106- cat " $error_file "
107- die " timeout sof-logger returned unexpected: $loggerStatus "
108- }
128+ if ! is_ipc4 ; then
129+ # Sof-logger DMA logging (IPC3 only)
109130
110- if is_zephyr ; then
111- loggerStatus=0 ; wait " $cavstoolPID " || loggerStatus= $?
131+ loggerStatus=0 ; wait " $dmaPID " || loggerStatus= $?
132+ # 124 is the normal timeout exit status
112133 test " $loggerStatus " -eq 124 || {
113134 cat " $error_file "
114- die " timeout $cavstool returned unexpected: $loggerStatus "
135+ die " timeout sof-logger returned unexpected: $loggerStatus "
115136 }
116- ( set -x
117- grep -i ERROR " $etrace_file " > " $etrace_stderr_file "
118- ) || true
137+ fi
138+
139+ if is_zephyr; then
140+ # Zephyr logging backends
141+
142+ if is_ipc4 ; then
143+ # SOF kernel IPC4 SRAM logging interface (mtrace)
144+
145+ loggerStatus=0; wait " $mtracetoolPID " || loggerStatus=$?
146+ test " $loggerStatus " -eq 124 || {
147+ cat " $error_file "
148+ die " timeout $mtracetool returned unexpected: $loggerStatus "
149+ }
150+ else
151+ # SOF kernel IPC3 SRAM logging interface (etrace)
152+
153+ loggerStatus=0; wait " $cavstoolPID " || loggerStatus=$?
154+ test " $loggerStatus " -eq 124 || {
155+ cat " $error_file "
156+ die " timeout $cavstool returned unexpected: $loggerStatus "
157+ }
158+ ( set -x
159+ grep -i ERROR " $etrace_file " > " $etrace_stderr_file "
160+ ) || true
161+ fi
162+
163+ # All Zephyr backends checked at this point, we can return
119164 return 0
120165 fi
121166
122- dlogi " Trying to get the .ldc log from the etrace mailbox ..."
123- dlogc \
124- " sudo $loggerBin -f 3 -l $ldcFile 2> $etrace_stderr_file > $etrace_file "
125- # shellcheck disable=SC2024
126- sudo " $loggerBin " -f 3 -l " $ldcFile " 2> " $etrace_stderr_file " > " $etrace_file " || {
127- etrace_exit=$?
128- cat " $etrace_stderr_file " >&2
129- }
167+ if ! is_ipc4 ; then
168+ # Sof-logger error log over SRAM (XTOS and IPC3 only, etrace)
130169
131- printf ' \n'
170+ dlogi " Trying to get the .ldc log from the etrace mailbox ..."
171+ dlogc \
172+ " sudo $loggerBin -f 3 -l $ldcFile 2> $etrace_stderr_file > $etrace_file "
173+ # shellcheck disable=SC2024
174+ sudo " $loggerBin " -f 3 -l " $ldcFile " 2> " $etrace_stderr_file " > " $etrace_file " || {
175+ etrace_exit=$?
176+ cat " $etrace_stderr_file " >&2
177+ }
132178
133- return $etrace_exit
179+ printf ' \n'
180+
181+ return $etrace_exit
182+ fi
183+
184+ # XTOS IPC4 case
185+ return 0
134186}
135187
136188
@@ -194,10 +246,13 @@ main()
194246{
195247 # Keeping these confusing DMA names because they're used in
196248 # several other places.
197- stdout_files=(data etrace)
198- # This is not actually stderr for cavstool, see comment at cavstool
199- # invocation
200- stderr_files=(error etrace_stderr)
249+ if is_ipc4 ; then
250+ stdout_files=(etrace)
251+ stderr_files=(etrace_stderr)
252+ else
253+ stdout_files=(data etrace)
254+ stderr_files=(error etrace_stderr)
255+ fi
201256
202257 reload_drivers
203258 # cavstool is now racing against D3
@@ -226,7 +281,12 @@ main()
226281 test -e " $tracef " || die " $tracef " not found
227282
228283 local tool_banner boot_banner
229- if is_zephyr && [ " $f " = ' etrace' ]; then
284+ if is_ipc4 && is_zephyr && [ " $f " = ' etrace' ]; then
285+ # mtrace
286+ # No specific tool banner, just check some logs are visible.
287+ tool_banner=' .*<.*>'
288+ boot_banner=' FW ABI.*tag.*zephyr'
289+ elif is_zephyr && [ " $f " = ' etrace' ]; then
230290 # cavstool
231291 tool_banner=' :cavs-fw:'
232292 boot_banner=' FW ABI.*tag.*zephyr'
0 commit comments