kvm: Relax aligment check of kvm_set_phys_mem
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 30 Apr 2009 08:17:39 +0000 (10:17 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 1 May 2009 14:38:33 +0000 (09:38 -0500)
There is no need to reject an unaligned memory region registration if
the region will be I/O memory and it will not split an existing KVM
slot. This fixes KVM support on PPC.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
kvm-all.c

index 32cd636f8f2f3aa0e783fb6dfa1cc12c61759efa..0da5c7aa8de60e75722504b2e5a064dd8b92e8a7 100644 (file)
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -583,7 +583,15 @@ void kvm_set_phys_mem(target_phys_addr_t start_addr,
     int err;
 
     if (start_addr & ~TARGET_PAGE_MASK) {
-        fprintf(stderr, "Only page-aligned memory slots supported\n");
+        if (flags >= IO_MEM_UNASSIGNED) {
+            if (!kvm_lookup_overlapping_slot(s, start_addr,
+                                             start_addr + size)) {
+                return;
+            }
+            fprintf(stderr, "Unaligned split of a KVM memory slot\n");
+        } else {
+            fprintf(stderr, "Only page-aligned memory slots supported\n");
+        }
         abort();
     }