Add a regression test for the bug fixed by commit 92f6d4130497 ("KVM: Fix coalesced_mmio_has_room() to avoid premature userspace exit"), and then do additional clean up on the offending KVM code. I wrote the test mainly so that I was confident I actually understood Ilias' fix. This applies on the aforementioned commit, which is sitting in kvm-x86/generic. Fully tested on x86 and arm64, compile tested on RISC-V. Ilias, I deliberately didn't include your Reviewed-by for the selftest, just in case I botched something during the (minor, in theory) rework. v2: - Collect a review. [Ilias] - Fix a typo in patch 2's changelog. [Ilias] - Rework the selftest to containerize the coalesced I/O ring and its state, to hopefully make it easier to extend the test to validate using a ring other than KVM's built-in default. [Ilias] Sean Christopherson (2): KVM: selftests: Add a test for coalesced MMIO (and PIO on x86) KVM: Clean up coalesced MMIO ring full check tools/testing/selftests/kvm/Makefile | 3 + .../testing/selftests/kvm/coalesced_io_test.c | 236 ++++++++++++++++++ .../testing/selftests/kvm/include/kvm_util.h | 26 ++ virt/kvm/coalesced_mmio.c | 29 +-- 4 files changed, 273 insertions(+), 21 deletions(-) create mode 100644 tools/testing/selftests/kvm/coalesced_io_test.c base-commit: 728d17c2cb8cc5f9ac899173d0e9a67fb8887622 -- 2.46.0.295.g3b9ea8a38a-goog