From: Fengyuan Yu <15fengyuan@gmail.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>, "Yi Liu" <yi.l.liu@intel.com>,
"Clément Mathieu--Drif" <clement.mathieu--drif@bull.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Laurent Vivier" <lvivier@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Tao Tang" <tangtao1634@phytium.com.cn>
Cc: qemu-devel@nongnu.org, Chao Liu <chao.liu.zevorn@gmail.com>,
Fengyuan Yu <15fengyuan@gmail.com>
Subject: [PATCH v3 0/2] tests/qtest: Add Intel IOMMU bare-metal test using iommu-testdev
Date: Wed, 25 Mar 2026 15:09:04 +0800 [thread overview]
Message-ID: <cover.1774421649.git.15fengyuan@gmail.com> (raw)
Hi,
This patch series adds a bare-metal qtest for the Intel IOMMU (VT-d) using
the iommu-testdev framework. The test exercises address translation paths
without requiring a full guest OS boot.
Motivation
----------
The Intel IOMMU implementation in QEMU supports various translation
modes. Currently, comprehensive testing of these translation paths
requires booting a full guest OS with appropriate drivers, which is
time-consuming and makes regression testing difficult.
This new test fills that gap by using iommu-testdev to trigger DMA
transactions and validate the IOMMU's translation logic directly.
Test Coverage
-------------
The new test provides:
- Legacy pass-through mode (identity mapping)
- Legacy translated mode with 4-level second-level page table walks
- Scalable pass-through mode (PGTT=100b)
- Scalable second-level translation mode (PGTT=010b)
- Scalable first-level translation mode (PGTT=001b)
- Root/Context Entry, PASID Directory/Table Entry configuration
- Complete 48-bit address space translation
- End-to-end DMA verification with memory validation
Testing
-------
QTEST_QEMU_BINARY=./build/qemu-system-x86_64 \
./build/tests/qtest/iommu-intel-test --tap -k
Changes v1 -> v2
----------------
- Rebase onto latest upstream to resolve compilation errors
- Add scalable translation mode tests (SLT, FLT, PassThrough)
- Add spec-aligned register field comments for improved readability
Changes v2 -> v3
----------------
- Fix MAINTAINERS: move qos-intel-iommu* to "QTest IOMMU helpers"
section, move iommu-intel-test.c entry to patch 2/2, remove
duplicate entries from x86 general section
- Remove duplicate Q35_IOMMU_BASE macro, use existing
Q35_HOST_BRIDGE_IOMMU_ADDR instead
- Drop unused QVTD_TM_SCALABLE_NESTED enum value
- Fix parameter alignment in function declarations
- Clarify qvtd_build_dma_attrs() comment: PASID=0 is reached via
VT-d's no-PASID fallback, not via DMA attributes
Thanks,
Fengyuan
Fengyuan Yu (2):
tests/qtest/libqos: Add Intel IOMMU helper library
tests/qtest: Add Intel IOMMU bare-metal test
MAINTAINERS | 2 +
tests/qtest/iommu-intel-test.c | 216 +++++++++++++
tests/qtest/libqos/meson.build | 3 +
tests/qtest/libqos/qos-intel-iommu.c | 454 +++++++++++++++++++++++++++
tests/qtest/libqos/qos-intel-iommu.h | 185 +++++++++++
tests/qtest/meson.build | 2 +
6 files changed, 862 insertions(+)
create mode 100644 tests/qtest/iommu-intel-test.c
create mode 100644 tests/qtest/libqos/qos-intel-iommu.c
create mode 100644 tests/qtest/libqos/qos-intel-iommu.h
--
2.39.5
next reply other threads:[~2026-03-25 7:10 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-25 7:09 Fengyuan Yu [this message]
2026-03-25 7:09 ` [PATCH v3 1/2] tests/qtest/libqos: Add Intel IOMMU helper library Fengyuan Yu
2026-03-27 15:39 ` Fabiano Rosas
2026-03-30 9:09 ` Tao Tang
2026-03-25 7:09 ` [PATCH v3 2/2] tests/qtest: Add Intel IOMMU bare-metal test Fengyuan Yu
2026-03-27 15:40 ` Fabiano Rosas
2026-03-30 9:11 ` Tao Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1774421649.git.15fengyuan@gmail.com \
--to=15fengyuan@gmail.com \
--cc=chao.liu.zevorn@gmail.com \
--cc=clement.mathieu--drif@bull.com \
--cc=farosas@suse.de \
--cc=jasowang@redhat.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=tangtao1634@phytium.com.cn \
--cc=yi.l.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.