[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 16/21] microvm: wire up hotplug
From: |
Gerd Hoffmann |
Subject: |
[PATCH v4 16/21] microvm: wire up hotplug |
Date: |
Thu, 2 Jul 2020 22:48:54 +0200 |
The cpu hotplug code handles the initialization of coldplugged cpus
too, so it is needed even in case cpu hotplug is not supported.
Wire cpu hotplug up for microvm.
Without this we get a broken MADT table.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/i386/microvm.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 3d8a66cfc3ac..a5b16b728f9f 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -320,6 +320,39 @@ static void microvm_fix_kernel_cmdline(MachineState
*machine)
g_free(cmdline);
}
+static void microvm_device_pre_plug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ x86_cpu_pre_plug(hotplug_dev, dev, errp);
+}
+
+static void microvm_device_plug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ x86_cpu_plug(hotplug_dev, dev, errp);
+}
+
+static void microvm_device_unplug_request_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ error_setg(errp, "unplug not supported by microvm");
+}
+
+static void microvm_device_unplug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ error_setg(errp, "unplug not supported by microvm");
+}
+
+static HotplugHandler *microvm_get_hotplug_handler(MachineState *machine,
+ DeviceState *dev)
+{
+ if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
+ return HOTPLUG_HANDLER(machine);
+ }
+ return NULL;
+}
+
static void microvm_machine_state_init(MachineState *machine)
{
MicrovmMachineState *mms = MICROVM_MACHINE(machine);
@@ -503,6 +536,7 @@ static void microvm_machine_initfn(Object *obj)
static void microvm_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
+ HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
mc->init = microvm_machine_state_init;
@@ -523,6 +557,13 @@ static void microvm_class_init(ObjectClass *oc, void *data)
/* Machine class handlers */
mc->reset = microvm_machine_reset;
+ /* hotplug (for cpu coldplug) */
+ mc->get_hotplug_handler = microvm_get_hotplug_handler;
+ hc->pre_plug = microvm_device_pre_plug_cb;
+ hc->plug = microvm_device_plug_cb;
+ hc->unplug_request = microvm_device_unplug_request_cb;
+ hc->unplug = microvm_device_unplug_cb;
+
object_class_property_add(oc, MICROVM_MACHINE_PIC, "OnOffAuto",
microvm_machine_get_pic,
microvm_machine_set_pic,
@@ -572,6 +613,7 @@ static const TypeInfo microvm_machine_info = {
.class_size = sizeof(MicrovmMachineClass),
.class_init = microvm_class_init,
.interfaces = (InterfaceInfo[]) {
+ { TYPE_HOTPLUG_HANDLER },
{ }
},
};
--
2.18.4
- [PATCH v4 04/21] acpi: ged: add control regs, (continued)
- [PATCH v4 04/21] acpi: ged: add control regs, Gerd Hoffmann, 2020/07/02
- [PATCH v4 09/21] microvm/acpi: add acpi_dsdt_add_virtio() for x86, Gerd Hoffmann, 2020/07/02
- [PATCH v4 03/21] seabios: add bios-microvm.bin binary, Gerd Hoffmann, 2020/07/02
- [PATCH v4 08/21] microvm/acpi: add minimal acpi support, Gerd Hoffmann, 2020/07/02
- [PATCH v4 21/21] tests/acpi: update expected data files for microvm, Gerd Hoffmann, 2020/07/02
- [PATCH v4 07/21] microvm: make virtio irq base runtime configurable, Gerd Hoffmann, 2020/07/02
- [PATCH v4 16/21] microvm: wire up hotplug,
Gerd Hoffmann <=
- [PATCH v4 19/21] tests/acpi: allow override blkdev, Gerd Hoffmann, 2020/07/02
- [PATCH v4 15/21] x86: move cpu plug from pc to x86, Gerd Hoffmann, 2020/07/02
- [PATCH v4 12/21] microvm/acpi: disable virtio-mmio cmdline hack, Gerd Hoffmann, 2020/07/02
- [PATCH v4 13/21] x86: constify x86_machine_is_*_enabled, Gerd Hoffmann, 2020/07/02
- [PATCH v4 20/21] tests/acpi: add microvm test, Gerd Hoffmann, 2020/07/02
- [PATCH v4 14/21] x86: move acpi_dev from pc/microvm, Gerd Hoffmann, 2020/07/02
- [PATCH v4 11/21] microvm/acpi: use seabios with acpi=on, Gerd Hoffmann, 2020/07/02
- [PATCH v4 10/21] microvm/acpi: use GSI 16-23 for virtio, Gerd Hoffmann, 2020/07/02
- [PATCH v4 05/21] acpi: ged: add x86 device variant., Gerd Hoffmann, 2020/07/02
- [PATCH v4 18/21] tests/acpi: allow microvm test data updates., Gerd Hoffmann, 2020/07/02