Skip to content

Commit 2f66790

Browse files
committed
test(shmbridge): replace brittle dmesg checks with sysfs and current-boot log validation
Stop relying on raw dmesg grep for qcom_scm presence. Validate qcom_scm via sysfs first and use current-boot kernel log only for targeted qcom_scm-related error detection to avoid false failures from log flooding. Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
1 parent 908ebcf commit 2f66790

1 file changed

Lines changed: 35 additions & 20 deletions

File tree

  • Runner/suites/Kernel/Baseport/shmbridge

Runner/suites/Kernel/Baseport/shmbridge/run.sh

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
2-
2+
33
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4-
# SPDX-License-Identifier: BSD-3-Clause
4+
# SPDX-License-Identifier: BSD-3-Clause
55
# Locate and source init_env
66
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
77
INIT_ENV=""
@@ -13,15 +13,15 @@ while [ "$SEARCH" != "/" ]; do
1313
fi
1414
SEARCH=$(dirname "$SEARCH")
1515
done
16-
16+
1717
if [ -z "$INIT_ENV" ]; then
1818
echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2
1919
exit 1
2020
fi
21-
21+
2222
# shellcheck disable=SC1090
2323
. "$INIT_ENV"
24-
24+
2525
# shellcheck disable=SC1090,SC1091
2626
. "$TOOLS/functestlib.sh"
2727

@@ -36,8 +36,8 @@ log_info "==== Test Initialization ===="
3636

3737
log_info "Checking if required tools are available"
3838

39-
if ! check_dependencies zcat grep dmesg; then
40-
log_skip "$TESTNAME SKIP - missing one or more of zcat grep dmesg utils"
39+
if ! check_dependencies grep; then
40+
log_skip "$TESTNAME SKIP - missing required grep utility"
4141
echo "$TESTNAME SKIP" >"$res_file"
4242
exit 0
4343
fi
@@ -48,22 +48,37 @@ if ! check_kernel_config "CONFIG_QCOM_SCM"; then
4848
echo "$TESTNAME SKIP" > "$res_file"
4949
exit 0
5050
fi
51-
52-
log_info "Scanning dmesg logs for qcom_scm initialization"
5351

54-
if dmesg | grep -q 'qcom_scm'; then
55-
if ! scan_dmesg_errors . "" ""; then
56-
log_pass "$TESTNAME : Test Passed (qcom_scm present and no probe failures)"
57-
echo "$TESTNAME PASS" > "$res_file"
58-
else
59-
log_fail "FAIL: 'probe failure' detected in dmesg."
60-
echo "$TESTNAME FAIL" > "$res_file"
61-
fi
52+
log_info "Checking qcom_scm presence using sysfs/current-boot kernel log"
53+
54+
if [ -d /sys/module/qcom_scm ]; then
55+
log_pass "qcom_scm driver is present in sysfs."
56+
elif get_kernel_log 2>/dev/null | grep -qi '\bqcom_scm\b'; then
57+
log_pass "qcom_scm present in current-boot kernel log."
6258
else
63-
log_fail "FAIL: 'qcom_scm' not found in dmesg."
59+
log_fail "FAIL: qcom_scm not found in sysfs or current-boot kernel log."
60+
echo "$TESTNAME FAIL" > "$res_file"
61+
exit 0
62+
fi
63+
64+
scm_log="./qcom_scm_kernel.log"
65+
scm_err="./qcom_scm_errors.log"
66+
err_patterns='probe failed|fail(ed)?|error|timed out|not found|invalid|corrupt|abort|panic|oops|unhandled'
67+
68+
log_info "Scanning current-boot kernel log for qcom_scm-related errors"
69+
get_kernel_log > "$scm_log" 2>/dev/null || true
70+
grep -iE "qcom_scm.*($err_patterns)" "$scm_log" > "$scm_err" || true
71+
72+
if [ -s "$scm_err" ]; then
73+
while IFS= read -r line; do
74+
[ -n "$line" ] || continue
75+
log_info "[kernel] $line"
76+
done < "$scm_err"
77+
log_fail "FAIL: qcom_scm-related errors detected in current-boot kernel log."
6478
echo "$TESTNAME FAIL" > "$res_file"
79+
else
80+
log_pass "$TESTNAME : Test Passed (qcom_scm present and no qcom_scm-related kernel errors)"
81+
echo "$TESTNAME PASS" > "$res_file"
6582
fi
6683

6784
log_info "-------------------Completed $TESTNAME Testcase----------------------------"
68-
69-

0 commit comments

Comments
 (0)