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
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
metadata:
name: DMAEngine_Data_Integrity_Validation
format: "Lava-Test Test Definition 1.0"
description: "Run bounded DMAEngine memcpy operations with source and destination data verification"
os:
- linux
scope:
- functional

params:
DMA_CHANNEL: "auto"
ITERATIONS: "20"
TIMEOUT_MS: "3000"
RUN_TIMEOUT_SECONDS: "90"

run:
steps:
- REPO_PATH=$PWD
- cd Runner/suites/Kernel/Baseport/DMAEngine_Data_Integrity_Validation
- ./run.sh --channel "${DMA_CHANNEL:-auto}" --iterations "${ITERATIONS:-20}" --timeout-ms "${TIMEOUT_MS:-3000}" --run-timeout "${RUN_TIMEOUT_SECONDS:-90}" || true
- $REPO_PATH/Runner/utils/send-to-lava.sh DMAEngine_Data_Integrity_Validation.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# DMAEngine data-integrity validation

`DMAEngine_Data_Integrity_Validation` uses the upstream kernel `dmatest`
driver to perform bounded DMA memcpy operations with verification enabled.
`dmatest` initializes source and destination buffers with different patterns,
executes DMA transfers at varied offsets and lengths, and verifies the copied
region, untouched bytes, byte ordering, and source-buffer integrity.

This is stronger evidence of a working DMA data path than traffic counters
alone. It can expose DMA driver, mapping, cache-maintenance, or data-corruption
problems, but it does not identify CCI as the unique cause of a failure.

## Options

```text
--channel NAME|auto
--iterations N
--timeout-ms N
--run-timeout N
```

The equivalent LAVA environment variables are `DMA_CHANNEL`, `ITERATIONS`,
`TIMEOUT_MS`, and `RUN_TIMEOUT_SECONDS`. Command-line values take precedence.

With `auto`, the suite selects the first idle channel accepted by `dmatest`.
Use an explicit channel when the platform reserves particular DMA channels for
validation.

The suite skips when no suitable idle channel exists or `dmatest` is absent
for the running kernel. Modules found only under a different kernel tree are
not loaded.
It refuses to interrupt an existing dmatest run or configured test list. If it
loads the module, it unloads only that module. For a pre-existing idle module,
it restores scalar parameters after releasing the selected channel.

Kernel log snapshots and the new dmatest result lines are retained for LAVA
triage. No package is installed at runtime.
Loading
Loading