[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/13] hw/core/null-machine: Add the possibility to i
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PULL 11/13] hw/core/null-machine: Add the possibility to instantiate a CPU and RAM |
Date: |
Mon, 23 Jan 2017 21:27:36 -0200 |
From: Thomas Huth <address@hidden>
Sometimes it is useful to have just a machine with CPU and RAM, without
any further hardware in it, e.g. if you just want to do some instruction
debugging for TCG with a remote GDB attached to QEMU, or run some embedded
code with the "-semihosting" QEMU parameter. qemu-system-m68k already
features a "dummy" machine, and xtensa a "sim" machine for exactly this
purpose.
All target architectures have nowadays also a "none" machine, which would
be a perfect match for this, too - but it currently does not allow to add
CPU and RAM yet. Thus let's add these possibilities in a generic way to the
"none" machine, too, so that we hopefully do not need additional "dummy"
machines in the future anymore (and maybe can also get rid of the already
existing "dummy"/"sim" machines one day).
Note that the default behaviour of the "none" machine is not changed, i.e.
no CPU and no RAM is instantiated by default. You have explicitely got to
specify the CPU model with "-cpu" and the amount of RAM with "-m" to get
these new features.
Signed-off-by: Thomas Huth <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
hw/core/null-machine.c | 27 +++++++++++++++++++++++++--
hw/core/Makefile.objs | 2 +-
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/hw/core/null-machine.c b/hw/core/null-machine.c
index 0351ba7828..27c8369b57 100644
--- a/hw/core/null-machine.c
+++ b/hw/core/null-machine.c
@@ -13,18 +13,41 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
+#include "qemu/error-report.h"
#include "hw/hw.h"
#include "hw/boards.h"
+#include "sysemu/sysemu.h"
+#include "exec/address-spaces.h"
+#include "cpu.h"
-static void machine_none_init(MachineState *machine)
+static void machine_none_init(MachineState *mch)
{
+ CPUState *cpu = NULL;
+
+ /* Initialize CPU (if a model has been specified) */
+ if (mch->cpu_model) {
+ cpu = cpu_init(mch->cpu_model);
+ if (!cpu) {
+ error_report("Unable to initialize CPU");
+ exit(1);
+ }
+ }
+
+ /* RAM at address zero */
+ if (mch->ram_size) {
+ MemoryRegion *ram = g_new(MemoryRegion, 1);
+
+ memory_region_allocate_system_memory(ram, NULL, "ram", mch->ram_size);
+ memory_region_add_subregion(get_system_memory(), 0, ram);
+ }
}
static void machine_none_machine_init(MachineClass *mc)
{
mc->desc = "empty machine";
mc->init = machine_none_init;
- mc->max_cpus = 0;
+ mc->max_cpus = 1;
+ mc->default_ram_size = 0;
}
DEFINE_MACHINE("none", machine_none_machine_init)
diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs
index 833fd46897..7f8c9dc659 100644
--- a/hw/core/Makefile.objs
+++ b/hw/core/Makefile.objs
@@ -12,7 +12,6 @@ common-obj-$(CONFIG_XILINX_AXI) += stream.o
common-obj-$(CONFIG_PTIMER) += ptimer.o
common-obj-$(CONFIG_SOFTMMU) += sysbus.o
common-obj-$(CONFIG_SOFTMMU) += machine.o
-common-obj-$(CONFIG_SOFTMMU) += null-machine.o
common-obj-$(CONFIG_SOFTMMU) += loader.o
common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
common-obj-$(CONFIG_SOFTMMU) += register.o
@@ -20,3 +19,4 @@ common-obj-$(CONFIG_SOFTMMU) += or-irq.o
common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o
obj-$(CONFIG_SOFTMMU) += generic-loader.o
+obj-$(CONFIG_SOFTMMU) += null-machine.o
--
2.11.0.259.g40922b1
- [Qemu-devel] [PULL 01/13] x86: add AVX512_VPOPCNTDQ features, (continued)
- [Qemu-devel] [PULL 01/13] x86: add AVX512_VPOPCNTDQ features, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 02/13] i386: Remove AMD feature flag aliases from Opteron models, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 03/13] i386: Return migration-safe field on query-cpu-definitions, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 05/13] arch_init: Remove unnecessary default_config_files table, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 04/13] vl: Ensure the numa_post_machine_init func in the appropriate location, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 06/13] pc: cleanup: move smbios_set_cpuid() into pc_build_smbios(), Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 07/13] pc: don't return cpu pointer from pc_new_cpu() as it's not needed anymore, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 09/13] MAINTAINERS: Add an entry for hw/core/null-machine.c, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 08/13] machine: Make possible_cpu_arch_ids() return const pointer, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 10/13] qemu-options: Rename variables on the -numa "cpus" option, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 11/13] hw/core/null-machine: Add the possibility to instantiate a CPU and RAM,
Eduardo Habkost <=
- [Qemu-devel] [PULL 12/13] kvm: Simplify invtsc check, Eduardo Habkost, 2017/01/23
- [Qemu-devel] [PULL 13/13] kvm: Allow invtsc migration if tsc-khz is set explicitly, Eduardo Habkost, 2017/01/23
- Re: [Qemu-devel] [PULL 00/13] x86, machine, numa queue (2017-01-23), Peter Maydell, 2017/01/24
- Re: [Qemu-devel] [PULL 00/13] x86, machine, numa queue (2017-01-23), Peter Maydell, 2017/01/24