diff options
Diffstat (limited to 'softmmu')
| -rw-r--r-- | softmmu/arch_init.c | 8 | ||||
| -rw-r--r-- | softmmu/device_tree.c | 1 | ||||
| -rw-r--r-- | softmmu/memory.c | 2 | ||||
| -rw-r--r-- | softmmu/memory_mapping.c | 1 | ||||
| -rw-r--r-- | softmmu/physmem.c | 29 | ||||
| -rw-r--r-- | softmmu/qdev-monitor.c | 1 | ||||
| -rw-r--r-- | softmmu/vl.c | 2 |
7 files changed, 20 insertions, 24 deletions
diff --git a/softmmu/arch_init.c b/softmmu/arch_init.c index 7fd5c09b2b..6ff9f30bad 100644 --- a/softmmu/arch_init.c +++ b/softmmu/arch_init.c @@ -22,8 +22,6 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" -#include "cpu.h" -#include "sysemu/sysemu.h" #include "sysemu/arch_init.h" #include "hw/pci/pci.h" #include "hw/audio/soundhw.h" @@ -58,16 +56,12 @@ int graphic_depth = 32; #define QEMU_ARCH QEMU_ARCH_HPPA #elif defined(TARGET_I386) #define QEMU_ARCH QEMU_ARCH_I386 -#elif defined(TARGET_LM32) -#define QEMU_ARCH QEMU_ARCH_LM32 #elif defined(TARGET_M68K) #define QEMU_ARCH QEMU_ARCH_M68K #elif defined(TARGET_MICROBLAZE) #define QEMU_ARCH QEMU_ARCH_MICROBLAZE #elif defined(TARGET_MIPS) #define QEMU_ARCH QEMU_ARCH_MIPS -#elif defined(TARGET_MOXIE) -#define QEMU_ARCH QEMU_ARCH_MOXIE #elif defined(TARGET_NIOS2) #define QEMU_ARCH QEMU_ARCH_NIOS2 #elif defined(TARGET_OPENRISC) @@ -86,8 +80,6 @@ int graphic_depth = 32; #define QEMU_ARCH QEMU_ARCH_SPARC #elif defined(TARGET_TRICORE) #define QEMU_ARCH QEMU_ARCH_TRICORE -#elif defined(TARGET_UNICORE32) -#define QEMU_ARCH QEMU_ARCH_UNICORE32 #elif defined(TARGET_XTENSA) #define QEMU_ARCH QEMU_ARCH_XTENSA #elif defined(TARGET_AVR) diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c index 2691c58cf6..b621f63fba 100644 --- a/softmmu/device_tree.c +++ b/softmmu/device_tree.c @@ -23,7 +23,6 @@ #include "qemu/bswap.h" #include "qemu/cutils.h" #include "sysemu/device_tree.h" -#include "sysemu/sysemu.h" #include "hw/loader.h" #include "hw/boards.h" #include "qemu/config-file.h" diff --git a/softmmu/memory.c b/softmmu/memory.c index d4493ef9e4..3bb533c0bc 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -16,9 +16,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" -#include "cpu.h" #include "exec/memory.h" -#include "exec/address-spaces.h" #include "qapi/visitor.h" #include "qemu/bitops.h" #include "qemu/error-report.h" diff --git a/softmmu/memory_mapping.c b/softmmu/memory_mapping.c index 18d0b8067c..e7af276546 100644 --- a/softmmu/memory_mapping.c +++ b/softmmu/memory_mapping.c @@ -14,7 +14,6 @@ #include "qemu/osdep.h" #include "qapi/error.h" -#include "cpu.h" #include "sysemu/memory_mapping.h" #include "exec/memory.h" #include "exec/address-spaces.h" diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 85034d9c11..e1da81ed2f 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -23,7 +23,6 @@ #include "qemu/cutils.h" #include "qemu/cacheflush.h" -#include "cpu.h" #ifdef CONFIG_TCG #include "hw/core/tcg-cpu-ops.h" @@ -36,7 +35,6 @@ #include "hw/boards.h" #include "hw/xen/xen.h" #include "sysemu/kvm.h" -#include "sysemu/sysemu.h" #include "sysemu/tcg.h" #include "sysemu/qtest.h" #include "qemu/timer.h" @@ -48,7 +46,6 @@ #include "sysemu/dma.h" #include "sysemu/hostmem.h" #include "sysemu/hw_accel.h" -#include "exec/address-spaces.h" #include "sysemu/xen-mapcache.h" #include "trace/trace-root.h" @@ -1697,6 +1694,11 @@ ram_addr_t qemu_ram_get_used_length(RAMBlock *rb) return rb->used_length; } +ram_addr_t qemu_ram_get_max_length(RAMBlock *rb) +{ + return rb->max_length; +} + bool qemu_ram_is_shared(RAMBlock *rb) { return rb->flags & RAM_SHARED; @@ -1796,8 +1798,9 @@ static int memory_try_enable_merging(void *addr, size_t len) return qemu_madvise(addr, len, QEMU_MADV_MERGEABLE); } -/* Only legal before guest might have detected the memory size: e.g. on - * incoming migration, or right after reset. +/* + * Resizing RAM while migrating can result in the migration being canceled. + * Care has to be taken if the guest might have already detected the memory. * * As memory core doesn't know how is memory accessed, it is up to * resize callback to update device state and/or add assertions to detect @@ -1805,6 +1808,7 @@ static int memory_try_enable_merging(void *addr, size_t len) */ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp) { + const ram_addr_t oldsize = block->used_length; const ram_addr_t unaligned_size = newsize; assert(block); @@ -1841,6 +1845,11 @@ int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp) return -EINVAL; } + /* Notify before modifying the ram block and touching the bitmaps. */ + if (block->host) { + ram_block_notify_resize(block->host, oldsize, newsize); + } + cpu_physical_memory_clear_dirty_range(block->offset, block->used_length); block->used_length = newsize; cpu_physical_memory_set_dirty_range(block->offset, block->used_length, @@ -2008,7 +2017,8 @@ static void ram_block_add(RAMBlock *new_block, Error **errp, bool shared) qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_DONTFORK); } - ram_block_notify_add(new_block->host, new_block->max_length); + ram_block_notify_add(new_block->host, new_block->used_length, + new_block->max_length); } } @@ -2187,7 +2197,8 @@ void qemu_ram_free(RAMBlock *block) } if (block->host) { - ram_block_notify_remove(block->host, block->max_length); + ram_block_notify_remove(block->host, block->used_length, + block->max_length); } qemu_mutex_lock_ramlist(); @@ -3489,7 +3500,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) goto err; } - if ((start + length) <= rb->used_length) { + if ((start + length) <= rb->max_length) { bool need_madvise, need_fallocate; if (!QEMU_IS_ALIGNED(length, rb->page_size)) { error_report("ram_block_discard_range: Unaligned length: %zx", @@ -3556,7 +3567,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) } else { error_report("ram_block_discard_range: Overrun block '%s' (%" PRIu64 "/%zx/" RAM_ADDR_FMT")", - rb->idstr, start, length, rb->used_length); + rb->idstr, start, length, rb->max_length); } err: diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index a9955b97a0..721dec2d82 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -35,7 +35,6 @@ #include "qemu/qemu-print.h" #include "qemu/option_int.h" #include "sysemu/block-backend.h" -#include "sysemu/sysemu.h" #include "migration/misc.h" #include "migration/migration.h" #include "qemu/cutils.h" diff --git a/softmmu/vl.c b/softmmu/vl.c index aadb526138..93e78469bc 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -27,7 +27,6 @@ #include "qemu/datadir.h" #include "qemu/units.h" #include "exec/cpu-common.h" -#include "hw/boards.h" #include "hw/qdev-properties.h" #include "qapi/compat-policy.h" #include "qapi/error.h" @@ -3596,7 +3595,6 @@ void qemu_init(int argc, char **argv, char **envp) current_machine->cpu_type = parse_cpu_option(cpu_option); } /* NB: for machine none cpu_type could STILL be NULL here! */ - accel_init_interfaces(ACCEL_GET_CLASS(current_machine->accelerator)); qemu_resolve_machine_memdev(); parse_numa_opts(current_machine); |