Re: [PATCH 0/2] cleanup on page size
Hi, All, I got one page size related question, hope to get some hint. There is one comment in page_size_init(). /* NOTE: we can always suppose that qemu_host_page_size >= TARGET_PAGE_SIZE */ The final result is true, since we compare qemu_host_page_size with TARGET_PAGE_SIZE and if not qemu_host_page_size will be assigned to TARGET_PAGE_SIZE. Generally, there is no problem, but one corner case for migration. In function ram_save_host_page(), it tries to save a whole host page. Or to be specific, it tries to save a whole REAL host page. The potential problem is when qemu_real_host_page_size < TARGET_PAGE_SIZE, this whole host page would be a wrong range. So I am wondering why we have the assumption written in page_size_init()? I tried to dig out who and why we have this comment, but found the first commit is commit 54936004fddc52c321cb3f9a9a51140e782bed5d Author: bellard Date: Tue May 13 00:25:15 2003 + mmap emulation git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@158 c046a42c-6fe2-441c-8c8c-71466251a162 There is no reason logged. On Sun, Oct 13, 2019 at 10:11:43AM +0800, Wei Yang wrote: >Patch 1 simplify the definition of xxx_PAGE_ALIGN. >Patch 2 replaces getpagesize() with qemu_real_host_page_size. This one touch a >volume of code. If some point is not correct, I'd appreciate your >notification. > >Wei Yang (2): > cpu: use ROUND_UP() to define xxx_PAGE_ALIGN > core: replace getpagesize() with qemu_real_host_page_size > > accel/kvm/kvm-all.c| 6 +++--- > backends/hostmem.c | 2 +- > block.c| 4 ++-- > block/file-posix.c | 9 + > block/io.c | 2 +- > block/parallels.c | 2 +- > block/qcow2-cache.c| 2 +- > contrib/vhost-user-gpu/vugbm.c | 2 +- > exec.c | 6 +++--- > hw/intc/s390_flic_kvm.c| 2 +- > hw/ppc/mac_newworld.c | 2 +- > hw/ppc/spapr_pci.c | 2 +- > hw/rdma/vmw/pvrdma_main.c | 2 +- > hw/vfio/spapr.c| 7 --- > include/exec/cpu-all.h | 7 +++ > include/exec/ram_addr.h| 2 +- > include/qemu/osdep.h | 4 ++-- > migration/migration.c | 2 +- > migration/postcopy-ram.c | 4 ++-- > monitor/misc.c | 2 +- > target/ppc/kvm.c | 2 +- > tests/vhost-user-bridge.c | 8 > util/mmap-alloc.c | 10 +- > util/oslib-posix.c | 4 ++-- > util/oslib-win32.c | 2 +- > util/vfio-helpers.c| 12 ++-- > 26 files changed, 55 insertions(+), 54 deletions(-) > >-- >2.17.1 -- Wei Yang Help you, Help me
Re: [PATCH 0/2] cleanup on page size
On Sun, Oct 13, 2019 at 10:11:43AM +0800, Wei Yang wrote: > Patch 1 simplify the definition of xxx_PAGE_ALIGN. > Patch 2 replaces getpagesize() with qemu_real_host_page_size. This one touch a > volume of code. If some point is not correct, I'd appreciate your > notification. Pls queue at the trivial branch. > Wei Yang (2): > cpu: use ROUND_UP() to define xxx_PAGE_ALIGN > core: replace getpagesize() with qemu_real_host_page_size > > accel/kvm/kvm-all.c| 6 +++--- > backends/hostmem.c | 2 +- > block.c| 4 ++-- > block/file-posix.c | 9 + > block/io.c | 2 +- > block/parallels.c | 2 +- > block/qcow2-cache.c| 2 +- > contrib/vhost-user-gpu/vugbm.c | 2 +- > exec.c | 6 +++--- > hw/intc/s390_flic_kvm.c| 2 +- > hw/ppc/mac_newworld.c | 2 +- > hw/ppc/spapr_pci.c | 2 +- > hw/rdma/vmw/pvrdma_main.c | 2 +- > hw/vfio/spapr.c| 7 --- > include/exec/cpu-all.h | 7 +++ > include/exec/ram_addr.h| 2 +- > include/qemu/osdep.h | 4 ++-- > migration/migration.c | 2 +- > migration/postcopy-ram.c | 4 ++-- > monitor/misc.c | 2 +- > target/ppc/kvm.c | 2 +- > tests/vhost-user-bridge.c | 8 > util/mmap-alloc.c | 10 +- > util/oslib-posix.c | 4 ++-- > util/oslib-win32.c | 2 +- > util/vfio-helpers.c| 12 ++-- > 26 files changed, 55 insertions(+), 54 deletions(-) > > -- > 2.17.1
[PATCH 0/2] cleanup on page size
Patch 1 simplify the definition of xxx_PAGE_ALIGN. Patch 2 replaces getpagesize() with qemu_real_host_page_size. This one touch a volume of code. If some point is not correct, I'd appreciate your notification. Wei Yang (2): cpu: use ROUND_UP() to define xxx_PAGE_ALIGN core: replace getpagesize() with qemu_real_host_page_size accel/kvm/kvm-all.c| 6 +++--- backends/hostmem.c | 2 +- block.c| 4 ++-- block/file-posix.c | 9 + block/io.c | 2 +- block/parallels.c | 2 +- block/qcow2-cache.c| 2 +- contrib/vhost-user-gpu/vugbm.c | 2 +- exec.c | 6 +++--- hw/intc/s390_flic_kvm.c| 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/spapr_pci.c | 2 +- hw/rdma/vmw/pvrdma_main.c | 2 +- hw/vfio/spapr.c| 7 --- include/exec/cpu-all.h | 7 +++ include/exec/ram_addr.h| 2 +- include/qemu/osdep.h | 4 ++-- migration/migration.c | 2 +- migration/postcopy-ram.c | 4 ++-- monitor/misc.c | 2 +- target/ppc/kvm.c | 2 +- tests/vhost-user-bridge.c | 8 util/mmap-alloc.c | 10 +- util/oslib-posix.c | 4 ++-- util/oslib-win32.c | 2 +- util/vfio-helpers.c| 12 ++-- 26 files changed, 55 insertions(+), 54 deletions(-) -- 2.17.1