Virtio-mem dynamic memslots are intentionally exposed as separate memory regions. If a guest places a vring part across two adjacent slots, a later memory update fails vhost ring verification because the complete ring part is not contained in one vhost memory region.
Coalesce coherent adjacent sections only when a descriptor table, available ring, or used ring crosses their boundary. Unrelated unmergeable sections remain separate so they can still be updated independently. Patch 2 adds an end-to-end qtest reproducer using a fake vhost-user backend and virtio-mem dynamic memslots. It also verifies that a newly activated slot is not folded into the merge required by the crossing vring. Tested with the vhost-user/mem-slots/boundary qtest. Buglink: https://redhat.atlassian.net/browse/RHEL-146583 Alex Fishman (2): vhost: coalesce unmergeable sections across vring boundaries tests/qtest: Add vhost-user memslot boundary test hw/virtio/vhost.c | 72 ++++++- tests/qtest/vhost-user-test.c | 395 +++++++++++++++++++++++++++++++++- 2 files changed, 452 insertions(+), 15 deletions(-) base-commit: ff1d2d19d7e24893e2012d879f8e73077e17b9bd -- 2.52.0
