diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2010-08-23 15:10:12 -0500 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-08-23 15:10:12 -0500 |
commit | e945fb76271eb4c8ceed6bff417a0b98744e1af3 (patch) | |
tree | ecc17332bcce1ff6424f3e5dea01a9617c4f67dc /kvm-all.c | |
parent | 03b0ba70ab8a5b5d78907216345bd6982b692d4b (diff) | |
parent | 14542fea73f294b2a195a8e17c5a0dd15f60640e (diff) |
Merge remote branch 'qemu-kvm/uq/master' into staging
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 19 |
1 files changed, 7 insertions, 12 deletions
@@ -274,6 +274,9 @@ static int kvm_set_migration_log(int enable) for (i = 0; i < ARRAY_SIZE(s->slots); i++) { mem = &s->slots[i]; + if (!mem->memory_size) { + continue; + } if (!!(mem->flags & KVM_MEM_LOG_DIRTY_PAGES) == enable) { continue; } @@ -429,18 +432,10 @@ static void kvm_set_phys_mem(target_phys_addr_t start_addr, KVMSlot *mem, old; int err; - if (start_addr & ~TARGET_PAGE_MASK) { - 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(); - } + /* kvm works in page size chunks, but the function may be called + with sub-page size and unaligned start address. */ + size = TARGET_PAGE_ALIGN(size); + start_addr = TARGET_PAGE_ALIGN(start_addr); /* KVM does not support read-only slots */ phys_offset &= ~IO_MEM_ROM; |