On Thu, May 18, 2017 at 09:08:34AM +0100, Dr. David Alan Gilbert wrote: > * Juan Quintela (quint...@redhat.com) wrote: > > "Dr. David Alan Gilbert (git)" <dgilb...@redhat.com> wrote: > > > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > > > > > It turns out that it's legal to create a VM with RAMBlocks that aren't > > > a multiple of the pagesize in use; e.g. a 1025M main memory using > > > 2M host pages. That breaks postcopy's atomic placement of pages, > > > so disallow it. > > > > > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > > > > Reviewed-by: Juan Quintela <quint...@redhat.com> > > Thanks > > > > } > > > > > > /* We don't support postcopy with shared RAM yet */ > > > - if (qemu_ram_foreach_block(test_range_shared, NULL)) { > > > + if (qemu_ram_foreach_block(test_ramblock_postcopiable, NULL)) { > > > > When I was looking at this code, I still don't know why > > qemu_ram_foreach_block() don't pass the block directly. It needs it > > almost all callers. > > > > When I saw it I was about to change it, but got sidetracked on other > > things :-p > > I think originally it passed very little information at all, and > that RAMBlocks were these mystical things no one outside exec.c > was really supposed to know about.
(Yeah I got the same question before. That's why I got RAMBLOCK_FOREACH() but didn't use qemu_ram_foreach_block() since I need at least page size info for the block...) -- Peter Xu