From: "Dr. David Alan Gilbert" <[email protected]> The dirty bitmaps are built from 'long'sand there is fast-path code for synchronising the case where the RAMBlock is aligned to the start of a long boundary. Align the allocation to this boundary to cause the fast path to be used.
Offsets before change: [email protected]:find_ram_offset size: 0x1e0000 @ 0x8000000 [email protected]:find_ram_offset size: 0x20000 @ 0x81e0000 [email protected]:find_ram_offset size: 0x20000 @ 0x8200000 [email protected]:find_ram_offset size: 0x1000000 @ 0x8220000 [email protected]:find_ram_offset size: 0x10000 @ 0x9220000 [email protected]:find_ram_offset size: 0x40000 @ 0x9230000 [email protected]:find_ram_offset size: 0x200000 @ 0x9270000 [email protected]:find_ram_offset size: 0x1000 @ 0x9470000 [email protected]:find_ram_offset size: 0x1000 @ 0x9471000 after change: [email protected]:find_ram_offset size: 0x1e0000 @ 0x8000000 [email protected]:find_ram_offset size: 0x20000 @ 0x8200000 [email protected]:find_ram_offset size: 0x20000 @ 0x8240000 [email protected]:find_ram_offset size: 0x1000000 @ 0x8280000 [email protected]:find_ram_offset size: 0x10000 @ 0x9280000 [email protected]:find_ram_offset size: 0x40000 @ 0x92c0000 [email protected]:find_ram_offset size: 0x200000 @ 0x9300000 [email protected]:find_ram_offset size: 0x1000 @ 0x9500000 [email protected]:find_ram_offset size: 0x1000 @ 0x9540000 Suggested-by: Paolo Bonzini <[email protected]> Signed-off-by: Dr. David Alan Gilbert <[email protected]> --- exec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/exec.c b/exec.c index 7966570231..644603f05e 100644 --- a/exec.c +++ b/exec.c @@ -1694,6 +1694,11 @@ static ram_addr_t find_ram_offset(ram_addr_t size) } } + /* Align blocks to start on a 'long' in the bitmap + * which makes the bitmap sync'ing take the fast path. + */ + end = ROUND_UP(end, BITS_PER_LONG << TARGET_PAGE_BITS); + /* If it fits remember our place and remember the size * of gap, but keep going so that we might find a smaller * gap to fill so avoiding fragmentation. -- 2.14.3
