diff --git a/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/README.md b/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/README.md new file mode 100644 index 00000000..8b9a308a --- /dev/null +++ b/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/README.md @@ -0,0 +1,65 @@ +# PCIe Validation Test + +© Qualcomm Technologies, Inc. and/or its subsidiaries. +SPDX-License-Identifier: BSD-3-Clause-Clear + +## Overview + +This test case validates the PCIe interface on the target device by checking for the presence of key PCIe attributes using the `lspci -vvv` command. It ensures that the PCIe subsystem is correctly enumerated and functional. + +### The test checks for: +- Presence of **Device Tree Node** +- Availability of **PCIe Capabilities** +- Binding of a **Kernel Driver** + +These checks help confirm that the PCIe root port is properly initialized and ready for use. + +--- + +## Usage + +### Instructions: + +1. **Copy the test suite to the target device** using `scp` or any preferred method. +2. **Navigate to the test directory** on the target device. +3. **Run the test script** using the test runner or directly. + +--- + +### Quick Example + +```bash +git clone +cd +scp -r common Runner user@target_device_ip: +ssh user@target_device_ip +cd /Runner && ./run-test.sh pcie +``` +--- +### Prerequisites +1. `lspci` must be available on the target device +2. PCIe interface must be exposed and initialized +3. Root access may be required depending on system configuration +--- +## Result Format +Test result will be saved in `pcie.res` as: + + + +## Output +A .res file is generated in the same directory: + +`pcie PASS` OR `pcie FAIL` + +## Sample Log +``` +Output + +[INFO] 1980-01-06 01:51:08 - -------------------------------------------------------- +[INFO] 1980-01-06 01:51:08 - -------------------Starting pcie Testcase---------------------------- +[INFO] 1980-01-06 01:51:08 - === Test Initialization === +[INFO] 1980-01-06 01:51:08 - Running PCIe Test +[INFO] 1980-01-06 01:51:08 - Yes, 'Device tree node:' is found +[INFO] 1980-01-06 01:51:08 - Yes, 'Capabilities:' is found +[INFO] 1980-01-06 01:51:09 - Yes, 'Kernel driver in use:' is found +[PASS] 1980-01-06 01:51:09 - pcie : Test Passed diff --git a/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/run.sh b/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/run.sh new file mode 100755 index 00000000..e031aa29 --- /dev/null +++ b/Runner/suites/Kernel/FunctionalArea/baseport/PCIe/run.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# Robustly find and source init_env +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +INIT_ENV="" +SEARCH="$SCRIPT_DIR" +while [ "$SEARCH" != "/" ]; do + if [ -f "$SEARCH/init_env" ]; then + INIT_ENV="$SEARCH/init_env" + break + fi + SEARCH=$(dirname "$SEARCH") +done + +if [ -z "$INIT_ENV" ]; then + echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2 + exit 1 +fi + +# Only source if not already loaded (idempotent) +if [ -z "$__INIT_ENV_LOADED" ]; then + # shellcheck disable=SC1090 + . "$INIT_ENV" +fi +# Always source functestlib.sh, using $TOOLS exported by init_env +# shellcheck disable=SC1090,SC1091 +. "$TOOLS/functestlib.sh" + +TESTNAME="pcie" +test_path=$(find_test_case_by_name "$TESTNAME") +cd "$test_path" || exit 1 +res_file="./$TESTNAME.res" + +log_info "-----------------------------------------------------------------------------------------" +log_info "-------------------Starting $TESTNAME Testcase----------------------------" +log_info "=== Test Initialization ===" +check_dependencies "lspci" +log_info "Running PCIe " +lspci_output=$(lspci -vvv) + +missing="" + +if echo "$lspci_output" | grep -q "Device tree node:"; then + log_info "Yes, 'Device tree node:' is found" +else + log_warn "No, 'Device tree node:' is missing" + missing=1 +fi + +if echo "$lspci_output" | grep -q "Capabilities:"; then + log_info "Yes, 'Capabilities:' is found" +else + log_warn "No, 'Capabilities:' is missing" + missing=1 +fi + +if echo "$lspci_output" | grep -q "Kernel driver in use:"; then + log_info "Yes, 'Kernel driver in use:' is found" +else + log_warn "No, 'Kernel driver in use:' is missing" + missing=1 +fi + +if [ -z "$missing" ]; then + log_pass "$TESTNAME : Test Passed" + echo "$TESTNAME PASS" > "$res_file" + exit 0 +else + log_fail "$TESTNAME : Test Failed" + echo "$TESTNAME FAIL" > "$res_file" + exit 1 +fi + +log_info "-------------------Completed $TESTNAME Testcase----------------------------"