[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 08/14] none-machine: add 'ram-addr' property
From: |
Damien Hedde |
Subject: |
[PATCH v4 08/14] none-machine: add 'ram-addr' property |
Date: |
Wed, 23 Feb 2022 10:07:00 +0100 |
Add the property to configure a the base address of the ram.
The default value remains zero.
This commit is needed to use the 'none' machine as a base, and
subsequently to dynamically populate it using qapi commands. Having
a non null 'ram' is really hard to workaround because of the actual
constraints on the generic loader: it prevents loading binaries
bigger than ram_size (with a null ram, we cannot load anything).
For now we need to be able to use the existing ram creation
feature of the none machine with a configurable base address.
Signed-off-by: Damien Hedde <damien.hedde@greensocs.com>
---
hw/core/null-machine.c | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/hw/core/null-machine.c b/hw/core/null-machine.c
index 7eb258af07..5fd1cc0218 100644
--- a/hw/core/null-machine.c
+++ b/hw/core/null-machine.c
@@ -16,9 +16,11 @@
#include "hw/boards.h"
#include "exec/address-spaces.h"
#include "hw/core/cpu.h"
+#include "qapi/visitor.h"
struct NoneMachineState {
MachineState parent;
+ uint64_t ram_addr;
};
#define TYPE_NONE_MACHINE MACHINE_TYPE_NAME("none")
@@ -26,6 +28,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(NoneMachineState, NONE_MACHINE)
static void machine_none_init(MachineState *mch)
{
+ NoneMachineState *nms = NONE_MACHINE(mch);
CPUState *cpu = NULL;
/* Initialize CPU (if user asked for it) */
@@ -37,9 +40,13 @@ static void machine_none_init(MachineState *mch)
}
}
- /* RAM at address zero */
+ /* RAM at configured address (default: 0) */
if (mch->ram) {
- memory_region_add_subregion(get_system_memory(), 0, mch->ram);
+ memory_region_add_subregion(get_system_memory(), nms->ram_addr,
+ mch->ram);
+ } else if (nms->ram_addr) {
+ error_report("'ram-addr' has been specified but the size is zero");
+ exit(1);
}
if (mch->kernel_filename) {
@@ -49,6 +56,22 @@ static void machine_none_init(MachineState *mch)
}
}
+static void machine_none_get_ram_addr(Object *obj, Visitor *v, const char
*name,
+ void *opaque, Error **errp)
+{
+ NoneMachineState *nms = NONE_MACHINE(obj);
+
+ visit_type_uint64(v, name, &nms->ram_addr, errp);
+}
+
+static void machine_none_set_ram_addr(Object *obj, Visitor *v, const char
*name,
+ void *opaque, Error **errp)
+{
+ NoneMachineState *nms = NONE_MACHINE(obj);
+
+ visit_type_uint64(v, name, &nms->ram_addr, errp);
+}
+
static void machine_none_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
@@ -63,6 +86,13 @@ static void machine_none_class_init(ObjectClass *oc, void
*data)
mc->no_floppy = 1;
mc->no_cdrom = 1;
mc->no_sdcard = 1;
+
+ object_class_property_add(oc, "ram-addr", "int",
+ machine_none_get_ram_addr,
+ machine_none_set_ram_addr,
+ NULL, NULL);
+ object_class_property_set_description(oc, "ram-addr",
+ "Base address of the RAM (default is 0)");
}
static const TypeInfo none_machine_info = {
--
2.35.1
- [PATCH v4 00/14] Initial support for machine creation via QMP, Damien Hedde, 2022/02/23
- [PATCH v4 05/14] qapi/device_add: handle the rom_order_override when cold-plugging, Damien Hedde, 2022/02/23
- [PATCH v4 10/14] none-machine: allow several cpus, Damien Hedde, 2022/02/23
- [PATCH v4 08/14] none-machine: add 'ram-addr' property,
Damien Hedde <=
- [PATCH v4 02/14] machine&vl: introduce phase_until() to handle phase transitions, Damien Hedde, 2022/02/23
- [PATCH v4 06/14] qapi/device_add: Allow execution in machine initialized phase, Damien Hedde, 2022/02/23
- [PATCH v4 07/14] none-machine: add the NoneMachineState structure, Damien Hedde, 2022/02/23
- [PATCH v4 01/14] machine: add phase_get() and document phase_check()/advance(), Damien Hedde, 2022/02/23
- [PATCH v4 03/14] vl: support machine-initialized target in phase_until(), Damien Hedde, 2022/02/23
- [PATCH v4 12/14] add sysbus-mmio-map qapi command, Damien Hedde, 2022/02/23
- [PATCH v4 04/14] qapi/device_add: compute is_hotplug flag, Damien Hedde, 2022/02/23
- [PATCH v4 09/14] none-machine: allow cold plugging sysbus devices, Damien Hedde, 2022/02/23
- [PATCH v4 13/14] hw/mem/system-memory: add a memory sysbus device, Damien Hedde, 2022/02/23