It's like a shark eating a bunch of small fishes: in some situations (vga linear frame buffer mapping, for example), we need to register a new slot in place of older, smaller ones. This patch handles this case
Signed-off-by: Glauber Costa <glom...@redhat.com> --- kvm-all.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/kvm-all.c b/kvm-all.c index 11034df..3c12c37 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -582,6 +582,16 @@ void kvm_set_phys_mem(target_phys_addr_t start_addr, kvm_set_phys_mem(mem_start, mem_size, mem_offset); return; + } else if (start_addr <= mem->start_addr && + (start_addr + size) >= (mem->start_addr + + mem->memory_size)) { + KVMSlot slot; + /* unregister whole slot */ + memcpy(&slot, mem, sizeof(slot)); + mem->memory_size = 0; + kvm_set_user_memory_region(s, mem); + + kvm_set_phys_mem(start_addr, size, phys_offset); } else { printf("Registering overlapping slot\n"); abort(); -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html