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. 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); +#endif if (memory < block->page_size) { error_setg(errp, "memory size 0x" RAM_ADDR_FMT " must be equal to " Thanks, Haozhong