On 12/6/25 7:52 AM, Tao Tang wrote:
Introduce qos-smmuv3, a reusable library for SMMUv3-related qtest
operations. This module encapsulates common tasks like:

- SMMUv3 initialization (enabling, configuring command/event queues)
- Stream Table Entry (STE) and Context Descriptor (CD) setup
- Multi-level page table construction (L0-L3 for 4KB granules)
- Support for Stage 1, Stage 2, and nested translation modes
- Could be easily extended to support multi-space testing infrastructure
     (Non-Secure, Secure, Root, Realm)

The library provides high-level abstractions that allow test code to
focus on IOMMU behavior validation rather than low-level register
manipulation and page table encoding. Key features include:

- Automatic memory allocation for translation structures with proper
     alignment
- Helper functions to build valid STEs/CDs for different translation
     scenarios
- Page table walkers that handle address offset calculations per
     security space
- Command queue management for SMMU configuration commands

This infrastructure is designed to be used by iommu-testdev-based tests
and future SMMUv3 test suites, reducing code duplication and improving
test maintainability.

Signed-off-by: Tao Tang <[email protected]>
---
  tests/qtest/libqos/meson.build  |   3 +
  tests/qtest/libqos/qos-smmuv3.c | 632 ++++++++++++++++++++++++++++++++
  tests/qtest/libqos/qos-smmuv3.h | 256 +++++++++++++
  3 files changed, 891 insertions(+)
  create mode 100644 tests/qtest/libqos/qos-smmuv3.c
  create mode 100644 tests/qtest/libqos/qos-smmuv3.h

Reviewed-by: Pierrick Bouvier <[email protected]>


Reply via email to