Re: [PATCH 5/5] iova: add KUnit test suite

From: Rik van Riel

Date: Fri May 15 2026 - 23:21:25 EST


On Fri, 2026-05-15 at 19:43 -0300, Jason Gunthorpe wrote:
> On Tue, May 12, 2026 at 10:00:22PM -0400, Rik van Riel wrote:
> > From: Rik van Riel <riel@xxxxxxxx>
> >
> > Add a kunit suite for the augmented-rbtree IOVA allocator, plus an
> > iova_domain_verify_invariants() helper (compiled only when the test
> > config is enabled) that walks the tree and confirms every node's
> > gap_to_prev, clamped_gap32, __subtree_max_gap, and
> > __subtree_max_gap32
> > match what recomputation from scratch yields.
> >
> > Test cases:
> >   - test_init_destroy: domain lifecycle, no leaks.
> >   - test_basic_alloc_free: single alloc/free roundtrip, top-down
> > reuse.
> >   - test_size_aligned: alignment of size_aligned allocs across
> > orders 0..7.
> >   - test_top_down_preference: sequential allocs decrease in pfn_lo.
> >   - test_limit_pfn_respected: 100 allocs all stay <= limit_pfn.
> >   - test_reserve_iova: allocs avoid the reserved range.
> >   - test_find_iova: lookup by pfn returns the right iova.
> >   - test_32bit_in_64bit_domain: 1000 64-bit allocs followed by a
> > 32-bit
> >     alloc must still find a slot below DMA_BIT_MASK(32) --
> > exercises
> >     the __subtree_max_gap32 augmentation.
> >   - test_two_phase_alignment: pack size-2 size_aligned allocs, free
> >     every other; subsequent size-2 alloc must succeed via the
> > phase-2
> >     fallback search since phase-1's S+A-1 threshold prunes the
> > size-2
> >     gaps.
> >   - test_pci_32bit_workaround_pattern: alternate 32-bit-first
> > allocation
> >     attempts with 64-bit fallback, mirroring dma-iommu.c.
> >   - test_stress_random: 2048 random alloc/free operations with
> > mixed
> >     sizes, alignments, and 32/64-bit limits, with periodic
> > invariant
> >     checks.
> >
> > Each test verifies the augmented invariants both during and after
> > the
> > test run so that any sequencing bug in insert / erase / rotate /
> > propagate is caught at the operation that introduced it.
> >
> > Tested by: building drivers/iommu/iova.o and drivers/iommu/iova-
> > kunit.o
> > (no warnings); runtime execution requires booting a kernel with
> > CONFIG_IOMMU_IOVA_KUNIT_TEST=y under qemu-system-x86_64 (not
> > available
> > on this devvm).
>     ^^^^^^^^^^^^^^^
>
> Heh, you should still read the patches when using claude :)
>
I saw it. Then I got distracted by something else,
and forgot to fix it :/

> Can you add a .kunitconfig please? The tests should run with a
> command like:

I'll address your comments, and also the issues
found by Sashiko. I'll try to get v2 ready within
a week or two.

--
All Rights Reversed.