The current handling will properly handle MMIO checks for holes anchored
at the beginning of the conversion range, but misses subsequent holes.
The current handle_memory_hole() helper already processes all MMIO
ranges up to and including the sections found at each iteration, so
handle this by simply calling handle_memory_hole() for each additional
section/sub-range.
Fixes: c5d9425ef4da ("kvm/tdx: Don't complain when converting vMMIO region to
shared")
Signed-off-by: Michael Roth <[email protected]>
---
accel/kvm/kvm-all.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 463bbdadd2..518baa35b9 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -3492,7 +3492,12 @@ int kvm_convert_memory(hwaddr start, hwaddr size, bool
to_private)
ret = handle_memory_hole(§ion, to_private, start, &skip);
if (ret || skip) {
memory_region_unref(section.mr);
- break;
+ if (ret) {
+ break;
+ }
+ size -= section_end - start;
+ start = section_end;
+ continue;
}
ret = kvm_convert_section(§ion, to_private);
--
2.43.0