[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[qemu-s390x] [PATCH v2 17/17] s390x: support memory devices
From: |
David Hildenbrand |
Subject: |
[qemu-s390x] [PATCH v2 17/17] s390x: support memory devices |
Date: |
Fri, 11 May 2018 15:19:53 +0200 |
Let's route all memory devices we can hotplug through the machine hotplug
handler, just like on pc and spapr.
Signed-off-by: David Hildenbrand <address@hidden>
---
default-configs/s390x-softmmu.mak | 1 +
hw/s390x/s390-virtio-ccw.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/default-configs/s390x-softmmu.mak
b/default-configs/s390x-softmmu.mak
index 2f4bfe73b4..6b017b65fc 100644
--- a/default-configs/s390x-softmmu.mak
+++ b/default-configs/s390x-softmmu.mak
@@ -9,3 +9,4 @@ CONFIG_S390_FLIC=y
CONFIG_S390_FLIC_KVM=$(CONFIG_KVM)
CONFIG_VFIO_CCW=$(CONFIG_LINUX)
CONFIG_WDT_DIAG288=y
+CONFIG_MEM_HOTPLUG=y
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 09b755282b..91687ca327 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -35,6 +35,7 @@
#include "migration/register.h"
#include "cpu_models.h"
#include "hw/nmi.h"
+#include "hw/mem/memory-device.h"
S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
{
@@ -436,12 +437,29 @@ static void s390_machine_device_plug(HotplugHandler
*hotplug_dev,
{
Error *local_err = NULL;
+ /* first stage hotplug handler */
+ if (object_dynamic_cast(OBJECT(dev), TYPE_MEMORY_DEVICE)) {
+ memory_device_plug(MACHINE(hotplug_dev), MEMORY_DEVICE(dev), NULL,
+ &local_err);
+ }
+
+ if (local_err) {
+ error_propagate(errp, local_err);
+ return;
+ }
+
/* final stage hotplug handler */
if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
s390_cpu_plug(hotplug_dev, dev, &local_err);
} else if (dev->parent_bus && dev->parent_bus->hotplug_handler) {
hotplug_handler_plug(dev->parent_bus->hotplug_handler, dev,
&local_err);
}
+
+ if (local_err) {
+ if (object_dynamic_cast(OBJECT(dev), TYPE_MEMORY_DEVICE)) {
+ memory_device_unplug(MACHINE(hotplug_dev), MEMORY_DEVICE(dev));
+ }
+ }
error_propagate(errp, local_err);
}
@@ -468,6 +486,16 @@ static void s390_machine_device_unplug(HotplugHandler
*hotplug_dev,
&local_err);
}
error_propagate(errp, local_err);
+
+ if (local_err) {
+ error_propagate(errp, local_err);
+ return;
+ }
+
+ /* first stage hotplug handler */
+ if (object_dynamic_cast(OBJECT(dev), TYPE_MEMORY_DEVICE)) {
+ memory_device_unplug(MACHINE(hotplug_dev), MEMORY_DEVICE(dev));
+ }
}
static CpuInstanceProperties s390_cpu_index_to_props(MachineState *ms,
@@ -509,6 +537,13 @@ static HotplugHandler
*s390_get_hotplug_handler(MachineState *machine,
if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
return HOTPLUG_HANDLER(machine);
}
+
+ if (dev->parent_bus) {
+ if (object_dynamic_cast(OBJECT(dev), TYPE_MEMORY_DEVICE)) {
+ return HOTPLUG_HANDLER(machine);
+ }
+ }
+
return NULL;
}
--
2.14.3
- [qemu-s390x] [PATCH v2 13/17] memory-device: factor out plug into hotplug handler, (continued)
- [qemu-s390x] [PATCH v2 13/17] memory-device: factor out plug into hotplug handler, David Hildenbrand, 2018/05/11
- [qemu-s390x] [PATCH v2 14/17] s390x/sclp: make sure ram_size and maxram_size stay in sync, David Hildenbrand, 2018/05/11
- [qemu-s390x] [PATCH v2 16/17] s390x: initialize memory region for memory devices, David Hildenbrand, 2018/05/11
- Re: [qemu-s390x] [Qemu-devel] [PATCH v2 16/17] s390x: initialize memory region for memory devices, Murilo Opsfelder Araujo, 2018/05/11
- Re: [qemu-s390x] [Qemu-devel] [PATCH v2 16/17] s390x: initialize memory region for memory devices, Eduardo Habkost, 2018/05/11
- Re: [qemu-s390x] [Qemu-devel] [PATCH v2 16/17] s390x: initialize memory region for memory devices, David Hildenbrand, 2018/05/12
- Re: [qemu-s390x] [Qemu-ppc] [Qemu-devel] [PATCH v2 16/17] s390x: initialize memory region for memory devices, Murilo Opsfelder Araujo, 2018/05/14
- Re: [qemu-s390x] [Qemu-devel] [Qemu-ppc] [PATCH v2 16/17] s390x: initialize memory region for memory devices, Markus Armbruster, 2018/05/15
- Re: [qemu-s390x] [Qemu-devel] [Qemu-ppc] [PATCH v2 16/17] s390x: initialize memory region for memory devices, David Hildenbrand, 2018/05/15
- Re: [qemu-s390x] [Qemu-ppc] [Qemu-devel] [PATCH v2 16/17] s390x: initialize memory region for memory devices, Murilo Opsfelder Araujo, 2018/05/15
[qemu-s390x] [PATCH v2 17/17] s390x: support memory devices,
David Hildenbrand <=
[qemu-s390x] [PATCH v2 15/17] s390x: prepare for multi stage hotplug handlers, David Hildenbrand, 2018/05/11