[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 50/50] exec.c: workaround regression caused by alignm
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 50/50] exec.c: workaround regression caused by alignment change in d2f39ad |
Date: |
Mon, 24 Oct 2016 15:47:35 +0200 |
From: Haozhong Zhang <address@hidden>
Commit d2f39ad "exec.c: Ensure right alignment also for file backed ram"
added an additional alignment requirement on the size of backend file
besides the previous page size. On x86, the alignment is changed from
4KB in QEMU 2.6 to 2MB in QEMU 2.7.
This change breaks certain usages in QEMU 2.7 on x86, e.g.
-object memory-backend-file,id=mem1,mem-path=/tmp/,size=$SZ
-device pc-dimm,id=dimm1,memdev=mem1
where $SZ is multiple of 4KB but not 2MB (e.g. 1023M). QEMU 2.7
reports the following error message and aborts:
qemu-system-x86_64: -device pc-dimm,memdev=mem1,id=nv1: backend memory size
must be multiple of 0x200000
The same regression may also happen in other platforms as indicated by
Igor Mammedov. This change is however necessary for s390 according to
the commit message of d2f39ad, so we workaround the regression by taking
the change only on s390.
Signed-off-by: Haozhong Zhang <address@hidden>
Reported-by: "Xu, Anthony" <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
exec.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/exec.c b/exec.c
index e63c5a1..6d7f600 100644
--- a/exec.c
+++ b/exec.c
@@ -1254,7 +1254,12 @@ static void *file_ram_alloc(RAMBlock *block,
}
block->page_size = qemu_fd_getpagesize(fd);
- block->mr->align = MAX(block->page_size, QEMU_VMALLOC_ALIGN);
+ block->mr->align = block->page_size;
+#if defined(__s390x__)
+ if (kvm_enabled()) {
+ block->mr->align = MAX(block->mr->align, QEMU_VMALLOC_ALIGN);
+ }
+#endif
if (memory < block->page_size) {
error_setg(errp, "memory size 0x" RAM_ADDR_FMT " must be equal to "
--
1.8.3.1
- [Qemu-devel] [PULL 45/50] char: use an enum for CHR_EVENT, (continued)
- [Qemu-devel] [PULL 45/50] char: use an enum for CHR_EVENT, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 38/50] char: make some qemu_chr_fe skip if no driver, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 40/50] char: move front end handlers in CharBackend, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 46/50] char: remove unused qemu_chr_fe_event, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 42/50] char: remove explicit_fe_open, use a set_handlers argument, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 34/50] char: use qemu_chr_fe* functions with CharBackend argument, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 44/50] char: remove unused CHR_EVENT_FOCUS, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 47/50] char: replace avail_connections, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 48/50] char: use common error path in qmp_chardev_add, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 49/50] char: remove explicit_be_open from CharDriverState, Paolo Bonzini, 2016/10/24
- [Qemu-devel] [PULL 50/50] exec.c: workaround regression caused by alignment change in d2f39ad,
Paolo Bonzini <=
- Re: [Qemu-devel] [PULL 00/50] Miscellaneous patches for 2016-10-24, Peter Maydell, 2016/10/24