qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Regression caused by d2f39ad "exec.c: Ensure right alig


From: Haozhong Zhang
Subject: Re: [Qemu-devel] Regression caused by d2f39ad "exec.c: Ensure right alignment also for file backed ram"
Date: Mon, 24 Oct 2016 20:06:46 +0800
User-agent: NeoMutt/20161014 (1.7.1)

On 10/24/16 13:44 +0200, Igor Mammedov wrote:
On Fri, 21 Oct 2016 16:28:01 +0800
Haozhong Zhang <address@hidden> wrote:

Hi,

Commit d2f39ad "exec.c: Ensure right alignment also for file backed
ram" added an additional alignment requirement besides to the previous
page size for the size of the backend file. On x86, the alignment
requirement for the size of the backend file is changed from 4KB in
QEMU 2.6 to 2MB in QEMU 2.7.

This change immediately breaks the usage of "-object 
memory-backend-file,...,size=$SIZE"
on x86, where $SIZE is multiple of 4KB but not 2MB. It works on QEMU 2.6.
Could this be considered as a regression?

The commit message shows it's for s390. I'm wondering whether the same
regression happens on s390 and ARM. If not, could I fix the regression
on x86 by keeping using the original alignment only on x86, e.g.
I don't see a nice way to work around this regression, so perhaps
we should tree 2.7 as broken (wrt migration when *dimm devices with file
backends with pagesize < 2Mb are used) and unbreak 2.8 and onwards.

Could you send a proper patch to list with commit message
explaining what is broken and how + CLI example.


Sure, I'll send a patch later.


modified   exec.c
@@ -1254,7 +1254,11 @@ static void *file_ram_alloc(RAMBlock *block,
     }

     block->page_size = qemu_fd_getpagesize(fd);
+#if defined(__x86_64__) || defined(__i386__)
+    block->mr->align = block->page_size;
+#else
     block->mr->align = MAX(block->page_size, QEMU_VMALLOC_ALIGN);
maybe it's worth to do other way around i.e. for special s390 case
do above and for the rest leave page_size alignment?


+#endif

     if (memory < block->page_size) {
         error_setg(errp, "memory size 0x" RAM_ADDR_FMT " must be equal to "


Thanks,
Haozhong





reply via email to

[Prev in Thread] Current Thread [Next in Thread]