[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 21/23] s390: unify allocation of initial memory
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PULL 21/23] s390: unify allocation of initial memory |
Date: |
Mon, 7 Sep 2015 16:48:35 +0200 |
From: David Hildenbrand <address@hidden>
Now that the calculation of the initial memory is hidden in the sclp
device, we can unify the allocation of the initial memory.
The remaining ugly part is the reserved memory for the virtio queues,
but that can be cleaned up later.
Reviewed-by: Matthew Rosato <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
hw/s390x/s390-virtio-ccw.c | 24 ++++++++++++++----------
hw/s390x/s390-virtio.c | 9 +--------
hw/s390x/s390-virtio.h | 1 +
3 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index eae1305..27a8360 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -100,15 +100,28 @@ static void virtio_ccw_register_hcalls(void)
virtio_ccw_hcall_early_printk);
}
-static void ccw_init(MachineState *machine)
+void s390_memory_init(ram_addr_t mem_size)
{
MemoryRegion *sysmem = get_system_memory();
MemoryRegion *ram = g_new(MemoryRegion, 1);
+
+ /* allocate RAM for core */
+ memory_region_init_ram(ram, NULL, "s390.ram", mem_size, &error_abort);
+ vmstate_register_ram_global(ram);
+ memory_region_add_subregion(sysmem, 0, ram);
+
+ /* Initialize storage key device */
+ s390_skeys_init();
+}
+
+static void ccw_init(MachineState *machine)
+{
int ret;
VirtualCssBus *css_bus;
DeviceState *dev;
s390_sclp_init();
+ s390_memory_init(machine->ram_size);
/* get a BUS */
css_bus = virtual_css_bus_init();
@@ -124,15 +137,6 @@ static void ccw_init(MachineState *machine)
/* register hypercalls */
virtio_ccw_register_hcalls();
- /* allocate RAM for core */
- memory_region_init_ram(ram, NULL, "s390.ram", machine->ram_size,
- &error_abort);
- vmstate_register_ram_global(ram);
- memory_region_add_subregion(sysmem, 0, ram);
-
- /* Initialize storage key device */
- s390_skeys_init();
-
/* init CPUs */
s390_init_cpus(machine->cpu_model);
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index c8e4737..e4000c9 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -262,8 +262,6 @@ int gtod_load(QEMUFile *f, void *opaque, int version_id)
static void s390_init(MachineState *machine)
{
ram_addr_t my_ram_size;
- MemoryRegion *sysmem = get_system_memory();
- MemoryRegion *ram = g_new(MemoryRegion, 1);
void *virtio_region;
hwaddr virtio_region_len;
hwaddr virtio_region_start;
@@ -285,9 +283,7 @@ static void s390_init(MachineState *machine)
s390_virtio_register_hcalls();
/* allocate RAM */
- memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size, &error_abort);
- vmstate_register_ram_global(ram);
- memory_region_add_subregion(sysmem, 0, ram);
+ s390_memory_init(my_ram_size);
/* clear virtio region */
virtio_region_len = my_ram_size - ram_size;
@@ -298,9 +294,6 @@ static void s390_init(MachineState *machine)
cpu_physical_memory_unmap(virtio_region, virtio_region_len, 1,
virtio_region_len);
- /* Initialize storage key device */
- s390_skeys_init();
-
/* init CPUs */
s390_init_cpus(machine->cpu_model);
diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio.h
index cf68796..f389aa1 100644
--- a/hw/s390x/s390-virtio.h
+++ b/hw/s390x/s390-virtio.h
@@ -27,4 +27,5 @@ void s390_init_ipl_dev(const char *kernel_filename,
bool enforce_bios);
void s390_create_virtio_net(BusState *bus, const char *name);
void s390_nmi(NMIState *n, int cpu_index, Error **errp);
+void s390_memory_init(ram_addr_t mem_size);
#endif
--
2.5.1
- [Qemu-devel] [PULL 05/23] s390x/event-facility: fix location of receive mask, (continued)
- [Qemu-devel] [PULL 05/23] s390x/event-facility: fix location of receive mask, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 06/23] pc-bios/s390-ccw: Device detection in higher subchannel sets, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 07/23] pc-bios/s390-ccw: rebuild image, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 11/23] s390/sclp: rework sclp event facility initialization + device realization, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 12/23] s390/sclp: replace sclp event types with proper defines, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 04/23] s390x/css: start with cleared cstat/dstat, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 18/23] s390: disallow memory hotplug for the s390-virtio machine, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 08/23] s390x/kvm: make setting of in-kernel irq routes more efficient, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 16/23] s390/sclp: move sclp_service_interrupt into the sclp device, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 14/23] s390/sclp: introduce a root sclp device, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 21/23] s390: unify allocation of initial memory,
Cornelia Huck <=
- [Qemu-devel] [PULL 19/23] s390/sclp: ignore memory hotplug operations if it is disabled, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 15/23] s390/sclp: move sclp_execute related functions into the SCLP class, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 20/23] s390: move memory calculation into the sclp device, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 09/23] s390x/gdb: support reading/writing of control registers, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 13/23] s390/sclp: temporarily fix unassignment/reassignment of memory subregions, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 22/23] s390/sclp: store the increment_size in the sclp device, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 17/23] s390: no need to manually parse for slots and maxmem, Cornelia Huck, 2015/09/07
- [Qemu-devel] [PULL 23/23] s390/sclp: simplify calculation of rnmax, Cornelia Huck, 2015/09/07
- Re: [Qemu-devel] [PULL 00/23] s390x: further patches, Peter Maydell, 2015/09/07