Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 25 additions & 12 deletions Runner/config/pkg_command_map.conf
Original file line number Diff line number Diff line change
Expand Up @@ -280,11 +280,13 @@ ubuntu:package-set:fastrpc=fastrpc-support fastrpc-tests

debian:package-set:fastcv-runtime=qcom-fastcv-binaries libfastcvopt-dev
ubuntu:package-set:fastcv-runtime=qcom-fastcv-binaries libfastcvopt-dev
centos:package-set:fastcv-rpm-prerequisites=epel-release
centos:package-set:fastcv-runtime=qcom-fastcv-binaries libfastcvopt-devel
rhel:package-set:fastcv-rpm-prerequisites=epel-release
rhel:package-set:fastcv-runtime=qcom-fastcv-binaries libfastcvopt-devel

# Shared prerequisite for explicit Qualcomm RPM package preparation.
centos:package-set:qualcomm-rpm-prerequisites=epel-release
rhel:package-set:qualcomm-rpm-prerequisites=epel-release

# ---------------------------------------------------------------------------
# Qualcomm MinkIPC runtime and test packages.
#
Expand Down Expand Up @@ -350,13 +352,15 @@ ubuntu:package-set:urm=userspace-resource-manager userspace-resource-manager-tes
# for example:
# ./run.sh --overlay
#
# Currently available from qli-staging. Once promoted to qli, only the source
# selection in the caller needs to change. The package-set name remains graphics.
# Debian packages are currently available from qli-staging. Once promoted to
# qli, only the source selection in the caller needs to change. CentOS packages
# use the Qualcomm production RPM repositories.
#
# DKMS packages are skipped by lib_pkg_provider.sh when matching kernel headers
# are unavailable. Remaining userspace packages continue to install.
#
# No qcom-distro/rpm mapping is provided, so Yocto remains no-op.
# CentOS Stream 10 uses the verified Qualcomm RPM package names below.
# No qcom-distro mapping is provided, so Yocto remains no-op.
# ---------------------------------------------------------------------------

# Qualcomm proprietary graphics overlay package set.
Expand All @@ -371,16 +375,19 @@ ubuntu:package-set:graphics-base=libegl-mesa0 libgl1-mesa-dri libgbm1 libegl1 li
# Qualcomm proprietary graphics overlay package set for Ubuntu.
ubuntu:package-set:graphics=kgsl-dkms adreno-common libgbm-msm adreno-gles1 adreno-gles2 adreno-egl1 adreno-vulkan-icd adreno-opencl-icd adreno-opencl-dev

# CentOS Stream 10 Qualcomm graphics overlay. gbm-msm-backend is listed
# explicitly because graphics validation checks the installed GBM backend.
centos:package-set:graphics=gbm-msm-backend adreno-egl1 adreno-gles2 adreno-opencl-icd adreno-vulkan-icd

# ---------------------------------------------------------------------------
# Audio validation package recovery.
#
# Debian Audio tests use the upstream base Audio stack by default.
# Qualcomm AudioReach packages are installed only when --overlay is explicitly
# requested.
# Debian and CentOS Audio tests use the base Audio stack by default. Qualcomm
# AudioReach packages are installed only when --overlay is explicitly requested.
#
# No rpm, opkg, qcom-distro, or generic provider package-set mapping is
# provided. Yocto and other embedded images therefore continue using their
# image-provided Audio stack without package recovery.
# CentOS Stream 10 uses the verified Qualcomm RPM package names below. No opkg,
# qcom-distro, or generic provider package-set mapping is provided, so Yocto
# and other embedded images continue using their image-provided Audio stack.
# ---------------------------------------------------------------------------

# Base Debian Audio stack.
Expand All @@ -397,6 +404,9 @@ ubuntu:package-set:audio-desktop=pipewire pipewire-pulse wireplumber pipewire-bi
# This package set is complete by itself because overlay mode checks only
# "audio"; it does not check "audio-base" first.
debian:package-set:audio=alsa-utils pipewire-bin wireplumber pulseaudio-utils audioreach-pipewire-plugin audioreach-kernel-dkms audioreach-config

# CentOS Stream 10 Qualcomm AudioReach overlay.
centos:package-set:audio=audioreach-dkms audioreach-pal audioreach-pipewire-plugin

# Command recovery used by check_dependencies()/pkg_ensure_command().
apt:aplay=alsa-utils
Expand Down Expand Up @@ -463,4 +473,7 @@ centos:Sensors:ssc_drva_test=qcom-sensors-test-core qcom-sensors-test-apps

debian:package-set:camera-nhx=camx-dkms camx-glymur libcamx-glymur1 camx-firmware-glymur camx-nhx
ubuntu:package-set:camera-nhx=camx-dkms camx-glymur libcamx-glymur1 camx-firmware-glymur camx-nhx
centos:package-set:camera-nhx=camx-dkms camx-glymur libcamx-glymur1 camx-firmware-glymur camx-nhx
centos:package-set:camera-nhx=camx-dkms camx-firmware-kodiak camx-kodiak libcamx-kodiak1

# CentOS Stream 10 Qualcomm Iris video overlay.
centos:package-set:video-overlay=iris-vpu
12 changes: 12 additions & 0 deletions Runner/suites/Multimedia/Audio/AudioPlayback/Read_me.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,18 @@ the download when neither tool is provided by the image.
The optional `snd-soc-wcd938x` codec module is loaded only when the running
kernel provides it. Targets without that module are unchanged.

### CentOS Stream 10 overlay preparation

An explicit `./run.sh --overlay` request ensures EPEL and the Qualcomm CentOS
10 aarch64 and noarch repositories, refreshes DNF metadata, and installs:

```text
audioreach-dkms audioreach-pal audioreach-pipewire-plugin
```

If the DKMS package changes, the suite requests a reboot before validation.
Base mode continues to use the components provided by the CentOS image.

```sh
# Let the suite detect a server or desktop Ubuntu image
./run.sh --clip-name "playback_config1 playback_config7"
Expand Down
8 changes: 4 additions & 4 deletions Runner/suites/Multimedia/Audio/AudioPlayback/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ EXTRACT_AUDIO_ASSETS="${EXTRACT_AUDIO_ASSETS:-true}"
ENABLE_NETWORK_DOWNLOAD="${ENABLE_NETWORK_DOWNLOAD:-false}" # Default: no network operations
AUDIO_CLIPS_BASE_DIR="${AUDIO_CLIPS_BASE_DIR:-}" # Custom path for audio clips (CI use)

# Only the explicit --overlay option enables Debian AudioReach preparation.
# Only the explicit --overlay option enables AudioReach package preparation.
# AUDIO_OVERLAY_REQUESTED was derived above without consuming the CLI.
AUDIO_PLAYBACK_VOLUME="${AUDIO_PLAYBACK_VOLUME:-1.0}"
export AUDIO_OVERLAY_REQUESTED AUDIO_PLAYBACK_VOLUME
Expand Down Expand Up @@ -149,9 +149,9 @@ Usage: $0 [options]
--backend {pipewire|pulseaudio|alsa}
--sink {speakers|null}
--overlay
On Debian, ensure the Qualcomm AudioReach package set and prepare the
PipeWire runtime before playback. Without this flag, use the native/base
audio stack. qcom-distro/Yocto remains unchanged.
On Debian or CentOS, ensure the Qualcomm AudioReach package set before
playback. Debian also prepares its PipeWire runtime. Without this flag,
use the native/base audio stack. qcom-distro/Yocto remains unchanged.
--formats "wav" # Legacy matrix mode only
--durations "short|short medium" # Legacy matrix mode only (not recommended for new tests)
--clip-name "play_48KHz_16b_2ch" # Test specific clip(s) by name (space-separated)
Expand Down
12 changes: 9 additions & 3 deletions Runner/suites/Multimedia/Audio/AudioRecord/Read_me.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,15 @@ Before backend discovery, the suite enumerates runtime remoteprocs and checks th

If the matching remoteproc is `running`, the suite records its name and firmware evidence. If it is `offline`, the suite starts it only after confirming the corresponding firmware is provisioned. Generic audio DSP paths also require adjacent topology evidence. Shikra's modem-hosted path does not require an adjacent topology file because its public image packages `qdsp6sw` modem firmware and `lpaicp` audio firmware separately. The suite never stops a remoteproc. Platforms with no applicable audio remoteproc continue normally. Provisioning or start issues produce a clean skip with the reason.

## Overlay Build Support

For overlay builds using audioreach kernel modules, the test automatically:
## Overlay Build Support

On CentOS Stream 10, an explicit `./run.sh --overlay` request ensures EPEL and
the Qualcomm aarch64 and noarch RPM repositories, refreshes DNF metadata, and
installs `audioreach-dkms`, `audioreach-pal`, and
`audioreach-pipewire-plugin`. If the DKMS package changes, reboot before
rerunning validation. Yocto remains image-provided and non-installing.

For overlay builds using audioreach kernel modules, the test automatically:
- Detects the overlay build configuration
- Sets required DMA heap permissions
- Restarts PipeWire service
Expand Down
2 changes: 1 addition & 1 deletion Runner/suites/Multimedia/Audio/AudioRecord/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ usage() {
Usage: $0 [options]
--backend {pipewire|pulseaudio|alsa}
--source {mic|null}
--overlay Prepare the Debian Qualcomm AudioReach overlay
--overlay Prepare the Debian or CentOS Qualcomm AudioReach overlay
Without this flag, use the native/base stack.
--config-name "record_config1" # Test specific config(s) by name (space-separated)
# Also supports record_config1, record_config2, ..., record_config10
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ The test reports `FAIL` when:

## Command Line Usage

On CentOS Stream 10, `--overlay` prepares EPEL and the Qualcomm aarch64 and
noarch RPM repositories, refreshes DNF metadata, and installs
`audioreach-dkms`, `audioreach-pal`, and `audioreach-pipewire-plugin`. The
default mode continues to use image-provided audio components.

```sh
./run.sh [options]
```
Expand Down
11 changes: 5 additions & 6 deletions Runner/suites/Multimedia/Audio/Audio_Card_Registration/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# - validates ALSA sound card registration
# - validates /dev/snd/controlC<N> nodes
# - optionally validates PCM/playback/capture entries
# - optionally prepares Debian AudioReach packages with --overlay
# - optionally prepares Debian or CentOS AudioReach packages with --overlay
# - does not start/restart PipeWire, PulseAudio, ADSP, or remoteproc
# - does not play or record audio

Expand Down Expand Up @@ -49,7 +49,7 @@ fi

TESTNAME="Audio_Card_Registration"

# Only the explicit --overlay option enables Debian AudioReach preparation.
# Only the explicit --overlay option enables AudioReach package preparation.
# Ignore inherited values so native/base mode remains the default.
AUDIO_OVERLAY_REQUESTED=0
AUDIO_EARLY_HELP_REQUESTED=0
Expand All @@ -70,9 +70,9 @@ Usage: $0 [options]

Options:
--overlay
On Debian, ensure the Qualcomm AudioReach package set before validating
ALSA card registration. Without this flag, use the native/base audio
stack. This test never starts or restarts PipeWire.
On Debian or CentOS, ensure the Qualcomm AudioReach package set before
validating ALSA card registration. Without this flag, use the
native/base audio stack. This test never starts or restarts PipeWire.

--wait-secs N
Wait time for ALSA sound card registration.
Expand Down Expand Up @@ -547,4 +547,3 @@ fi

log_info "------------------- Completed $TESTNAME Testcase --------------------------"
exit 0

29 changes: 22 additions & 7 deletions Runner/suites/Multimedia/CDSP/fastrpc_test/fastrpc_test_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ Supported capabilities:
character endpoints. The fallback cannot discover PD support directly, so it uses the documented
conservative protocol map. The fallback recognizes both `sdsp` and the public `slpi` remoteproc
identity for the sensor DSP. Host, test, and DSP skeleton libraries remain runtime-discovered.
The functional invocation is the final capability proof. If an older or vendor-specific test
payload cannot represent a runtime-ready domain, that invocation is reported as FAIL without
relying on package-version or distribution checks.
- Multiple iterations with a required finite timeout.
- Precise control over binary location via `--bin-dir`.
- Line-buffered output through `stdbuf` when available.
Expand All @@ -26,7 +29,7 @@ Supported capabilities:
- CI-ready logs with timestamps and per-iteration, per-domain/PD results
- Parameterized control (`--arch`, `--repeat`, `--timeout`, `--bin-dir`, `--domain-mode`,
`--domain`, `--domain-name`, `--pd-mode`, `--unsigned-pd`, `--verbose`)
- Auto-discovery of system libraries and DSP skeletons for both Yocto and Debian layouts
- Auto-discovery of system libraries and DSP skeletons for Yocto, Debian, Ubuntu, and RPM layouts
- Runtime domain and PD discovery without SoC-name filtering

## Prerequisites
Expand All @@ -40,16 +43,18 @@ Have these on the target (or specify paths with the flags below):
is absent.
- FastRPC system libraries and DSP skeletons auto-discovered from standard locations:
- Yocto: `/usr/local/lib`, `/usr/local/lib/fastrpc_test`, `/usr/local/share/fastrpc_test`
- Debian: `/usr/lib/<multiarch>`, `/usr/lib/<multiarch>/fastrpc_test`, `/usr/share/fastrpc_test`
- RPM-based images: `/usr/lib64`, `/usr/lib64/fastrpc_test`, `/usr/share/fastrpc_test`
- Debian/Ubuntu: `/usr/lib/<multiarch>`, `/usr/lib/<multiarch>/fastrpc_test`, `/usr/share/fastrpc_test`
- CentOS and other RPM-based images: `/usr/lib64`, `/usr/lib64/fastrpc_test`, `/usr/share/fastrpc_test`
- A selected DSP skeleton directory must contain the complete calculator, HAP example, and
multithreading skeleton set. Discovered directories are prepended to the semicolon-separated
`DSP_LIBRARY_PATH` used by the public `fastrpc_test` utility while preserving existing DSP
search entries. The same merged value is exported through the domain-specific library paths.
- Optional but recommended:
- `stdbuf` for line-buffered output. Execution remains bounded without it.
- The suite does not install packages at runtime. Missing optional image assets are reported as
SKIP unless the operator explicitly selected a domain whose required runtime library is absent.
- The suite does not install packages at runtime on Yocto, Debian, Ubuntu, CentOS, or other
distributions. Provision `fastrpc_test`, its host libraries, and DSP skeletons in the image.
- Missing optional image assets are reported as SKIP unless the operator explicitly selected a
domain whose required runtime library is absent.

## Directory Structure

Expand Down Expand Up @@ -141,7 +146,10 @@ An explicitly selected domain fails when it is unavailable, lacks its runtime li
support the requested PD mode. Automatic selection from the runtime fallback excludes domains
without complete remoteproc and endpoint evidence. When `fastrpc-healthcheck` reports an online,
FastRPC-supported domain, a missing endpoint or required runtime library is treated as a broken
installation and fails the suite.
installation and fails the suite. The runner does not infer client capability from a distro name or
package version. When runtime fallback discovers a domain but the installed `fastrpc_test` payload
reports that it cannot represent that domain, the invocation is classified as FAIL so the image or
package gap remains visible until a matching payload is provisioned. Other domains still execute.

### LAVA integration example

Expand Down Expand Up @@ -186,6 +194,10 @@ installation and fails the suite.
domains continue.
- **Unsupported automatic domain**: Logged with the healthcheck reason and excluded. Other
runnable domains continue.
- **Test payload lacks a runtime-ready domain**: A retained invocation log proving that the
installed client cannot represent the selected numeric domain is classified as FAIL. This is
feature probing, not a package-version check, so it behaves the same on Yocto, Debian, Ubuntu,
and CentOS and automatically starts passing when a capable package is provisioned.
- **Offline explicitly requested domain**: Fails with the healthcheck or remoteproc state.
- **Missing runtime artifacts**: When the capability source is `fastrpc-healthcheck`, a domain
missing its endpoint or required runtime library fails the suite — healthcheck has declared it
Expand All @@ -194,6 +206,8 @@ installation and fails the suite.
Missing shared test libraries or DSP skeletons skip the suite before execution.
- **Binary resolved to /bin/fastrpc_test**: Blocked by default. Set `ALLOW_BIN_FASTRPC=1` or
use `--bin-dir` to a non-`/bin` path.
- **Missing binary on any distribution**: Package installation is not attempted. The suite reports
SKIP with the expected image-provided binary path.
- **Session create errors with -U 1**: If unsigned PD returns `0x80000416`, confirm your image
includes unsigned shells/policies (or use `--pd-mode signed-only`).
- **Domain not discovered**: Check `dmesg` for remoteproc firmware load errors. The test
Expand All @@ -208,7 +222,8 @@ installation and fails the suite.

- Domain and PD support are derived from `fastrpc-healthcheck` when available. The fallback is
selected only when the tool is absent and uses runtime remoteproc and endpoint evidence, with
a conservative protocol mapping for PD support.
a conservative protocol mapping for PD support. Actual invocation output then provides the
distro-independent functional proof that the installed client supports the selected domain.
- The existing `/usr/lib/dsp` compatibility links are prepared before healthcheck captures its
capability report, so the report and the subsequent functional run observe the same layout.
- This suite runs the public `fastrpc_test` character-device path and therefore requires either
Expand Down
22 changes: 21 additions & 1 deletion Runner/suites/Multimedia/CDSP/fastrpc_test/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ RUN_DIR="$BIN_DIR"
RUN_BIN="$RUN_DIR/fastrpc_test"

if [ ! -x "$RUN_BIN" ]; then
test_result_finish "SKIP" "$TESTNAME SKIP - fastrpc_test not installed (expected at: $RUN_BIN)"
test_result_finish "SKIP" "$TESTNAME SKIP - image-provided fastrpc_test is unavailable, expected=$RUN_BIN"
fi

# -------------------- Logging root -----------------------------
Expand Down Expand Up @@ -605,6 +605,26 @@ for DOMAIN in $DOMAINS_TO_TEST; do
echo "----- $iter_tag output end -----"
fi

domain_unsupported_reason=""
if [ -r "$iter_log" ]; then
domain_unsupported_reason="$(
fastrpc_invocation_domain_unsupported_reason \
"$iter_log" \
"$DOMAIN" || true
)"
fi

if [ -n "$domain_unsupported_reason" ]; then
test_result_record "FAIL" "$iter_tag: runtime domain=$dom_name id=$DOMAIN is unsupported by installed fastrpc_test, reason=$domain_unsupported_reason capability_source=$CAPABILITY_SOURCE selection=$SELECTION_SOURCE required=image-package-with-matching-domain-support"
combo_fail=$((combo_fail + 1))
combo_subtests_total=$((combo_subtests_total + 1))
combo_subtests_fail=$((combo_subtests_fail + 1))
RUNTIME_FAILURE_SEEN=1

i=$((i + 1))
continue
fi

if [ "$rc" -ne 0 ]; then
log_fail "$iter_tag: fastrpc_test exited $rc"
RUNTIME_FAILURE_SEEN=1
Expand Down
15 changes: 13 additions & 2 deletions Runner/suites/Multimedia/Camera/Camera_NHX/README_Camera_NHX.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,13 +111,24 @@ Snapshot JSON files are currently expected only for targets where the files are
## Desktop CAMX overlay flow

Yocto and meta-qcom LAVA images keep their image-provided camera stack and do
not use this flow. On Debian, Ubuntu, and CentOS, an explicit overlay request
installs the `camera-nhx` package set:
not use this flow. On Debian and Ubuntu, an explicit overlay request installs
the `camera-nhx` package set:

```text
camx-dkms camx-glymur libcamx-glymur1 camx-firmware-glymur camx-nhx
```

On CentOS Stream 10, the runner follows the Qualcomm overlay installation
guide and installs the Kodiak package set:

```text
camx-dkms camx-firmware-kodiak camx-kodiak libcamx-kodiak1
```

Before a missing CentOS package is installed, the shared package provider
ensures EPEL and both `qualcomm-linux-aarch64` and
`qualcomm-linux-noarch` repositories are enabled, then refreshes DNF metadata.

`--overlay` requires the CAMX FIT DTB and uses the compatibility name `camx`.
The same requirement can be stated explicitly with `--fit-dtb camx`:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ https://softwarecenter.qualcomm.com/nexus/rpm/centos/10/os/noarch/
When neither repository ID is already enabled, the suite creates
`/etc/yum.repos.d/qualcomm-linux.repo` with the
`qualcomm-linux-aarch64` and `qualcomm-linux-noarch` definitions from the RPM
image setup guide. It then checks and installs:
image setup guide. The suite runs the documented metadata cleanup and cache
refresh before it checks and installs:

```text
qcom-fastcv-binaries libfastcvopt-devel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ https://softwarecenter.qualcomm.com/nexus/rpm/centos/10/os/noarch/
```

When needed, their definitions are written to
`/etc/yum.repos.d/qualcomm-linux.repo`. The suite then checks and installs:
`/etc/yum.repos.d/qualcomm-linux.repo`. The suite runs the documented metadata
cleanup and cache refresh before it checks and installs:

```text
qcom-fastcv-binaries libfastcvopt-devel
Expand Down
Loading
Loading