mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-23 10:01:59 -06:00
exec: sort the memory from biggest to smallest
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
a3161038a1
commit
abb26d63e7
2 changed files with 12 additions and 32 deletions
14
exec.c
14
exec.c
|
@ -1007,7 +1007,7 @@ static int memory_try_enable_merging(void *addr, size_t len)
|
|||
ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
|
||||
MemoryRegion *mr)
|
||||
{
|
||||
RAMBlock *new_block;
|
||||
RAMBlock *block, *new_block;
|
||||
|
||||
size = TARGET_PAGE_ALIGN(size);
|
||||
new_block = g_malloc0(sizeof(*new_block));
|
||||
|
@ -1043,7 +1043,17 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
|
|||
}
|
||||
new_block->length = size;
|
||||
|
||||
QTAILQ_INSERT_HEAD(&ram_list.blocks, new_block, next);
|
||||
/* Keep the list sorted from biggest to smallest block. */
|
||||
QTAILQ_FOREACH(block, &ram_list.blocks, next) {
|
||||
if (block->length < new_block->length) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (block) {
|
||||
QTAILQ_INSERT_BEFORE(block, new_block, next);
|
||||
} else {
|
||||
QTAILQ_INSERT_TAIL(&ram_list.blocks, new_block, next);
|
||||
}
|
||||
ram_list.mru_block = NULL;
|
||||
|
||||
ram_list.phys_dirty = g_realloc(ram_list.phys_dirty,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue