This series is a revival of an RFC series sent in Dec 2016 [1].
Given the amount of code and the lack of traction at that time,
I haven't respinned until now. However a recent bug found related
to the ITS migration convinced me that this work may deserve to be
respinned and enhanced.
Tests exercise main ITS commands and also test migration.
With the migration framework, we are able to trigger the
migration from guest and that is very practical actually.
What is particular with the ITS programming is that most of
the commands are passed through queues and there is real error
handling. Invalid commands are just ignored and that is not
really tester friendly.
This series includes Andre's patch: "arm: gic: Provide
per-IRQ helper functions" [2]
test_migrate_unmapped_collection is currently failing with
upstream kernel. See [3].
The series can be fount at:
https://github.com/eauger/kut/tree/its-v2
Best Regards
Eric
History:
v1 -> v2:
- took into account Zenghui's comments
- collect R-b's from Thomas
References:
[1] [kvm-unit-tests RFC 00/15] arm/arm64: add ITS framework
https://lists.gnu.org/archive/html/qemu-devel/2016-12/msg00575.html
[2] [kvm-unit-tests PATCH 00/17] arm: gic: Test SPIs and interrupt groups
https://patchwork.kernel.org/cover/11234975/
[3] [PATCH] KVM: arm/arm64: vgic-its: Fix restoration of unmappedxi
collections (https://lkml.org/lkml/2019/12/13/205)
Execution:
x For ITS migration testing use:
./run_tests.sh -g migration (blocks on TCG)
x For other ITS tests:
./run_tests.sh -g its
x non migration tests can be launched invidually. For instance:
./arm-run arm/gic.flat -smp 8 -append 'its-trigger'
Andre Przywara (1):
arm: gic: Provide per-IRQ helper functions
Eric Auger (15):
libcflat: Add other size defines
arm/arm64: gic: Introduce setup_irq() helper
arm/arm64: gicv3: Add some re-distributor defines
arm/arm64: ITS: Introspection tests
arm/arm64: ITS: Test BASER
arm/arm64: ITS: Set the LPI config and pending tables
arm/arm64: ITS: Init the command queue
arm/arm64: ITS: Enable/Disable LPIs at re-distributor level
arm/arm64: ITS: its_enable_defaults
arm/arm64: ITS: Device and collection Initialization
arm/arm64: ITS: commands
arm/arm64: ITS: INT functional tests
arm/run: Allow Migration tests
arm/arm64: ITS: migration tests
arm/arm64: ITS: pending table migration test
arm/Makefile.common | 3 +-
arm/gic.c | 446 ++++++++++++++++++++++++++++++++++--
arm/run | 2 +-
arm/unittests.cfg | 39 ++++
lib/arm/asm/gic-v3-its.h | 177 +++++++++++++++
lib/arm/asm/gic-v3.h | 20 ++
lib/arm/asm/gic.h | 12 +
lib/arm/gic-v3-its-cmd.c | 453 +++++++++++++++++++++++++++++++++++++
lib/arm/gic-v3-its.c | 327 ++++++++++++++++++++++++++
lib/arm/gic.c | 132 ++++++++++-
lib/arm/io.c | 13 ++
lib/arm64/asm/gic-v3-its.h | 1 +
lib/libcflat.h | 3 +
13 files changed, 1600 insertions(+), 28 deletions(-)
create mode 100644 lib/arm/asm/gic-v3-its.h
create mode 100644 lib/arm/gic-v3-its-cmd.c
create mode 100644 lib/arm/gic-v3-its.c
create mode 100644 lib/arm64/asm/gic-v3-its.h
--
2.20.1