[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 16/21] microvm: wire up hotplug
From: |
Gerd Hoffmann |
Subject: |
[PULL 16/21] microvm: wire up hotplug |
Date: |
Thu, 17 Sep 2020 15:53:18 +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>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Sergio Lopez <slp@redhat.com>
Message-id: 20200915120909.20838-17-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 9df15354ce0f..8de8ca864963 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;
@@ -524,6 +558,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,
@@ -573,6 +614,7 @@ static const TypeInfo microvm_machine_info = {
.class_size = sizeof(MicrovmMachineClass),
.class_init = microvm_class_init,
.interfaces = (InterfaceInfo[]) {
+ { TYPE_HOTPLUG_HANDLER },
{ }
},
};
--
2.27.0
- [PULL 01/21] microvm: name qboot binary qboot.rom, (continued)
- [PULL 01/21] microvm: name qboot binary qboot.rom, Gerd Hoffmann, 2020/09/17
- [PULL 10/21] microvm/acpi: use GSI 16-23 for virtio, Gerd Hoffmann, 2020/09/17
- [PULL 02/21] seabios: add microvm config, update build rules, Gerd Hoffmann, 2020/09/17
- [PULL 12/21] microvm/acpi: disable virtio-mmio cmdline hack, Gerd Hoffmann, 2020/09/17
- [PULL 07/21] microvm: make virtio irq base runtime configurable, Gerd Hoffmann, 2020/09/17
- [PULL 19/21] tests/acpi: add microvm test, Gerd Hoffmann, 2020/09/17
- [PULL 13/21] x86: constify x86_machine_is_*_enabled, Gerd Hoffmann, 2020/09/17
- [PULL 21/21] microvm: enable ramfb, Gerd Hoffmann, 2020/09/17
- [PULL 03/21] seabios: add bios-microvm.bin binary, Gerd Hoffmann, 2020/09/17
- [PULL 11/21] microvm/acpi: use seabios with acpi=on, Gerd Hoffmann, 2020/09/17
- [PULL 16/21] microvm: wire up hotplug,
Gerd Hoffmann <=
- [PULL 20/21] tests/acpi: update expected data files for microvm, Gerd Hoffmann, 2020/09/17
- [PULL 06/21] acpi: move acpi_dsdt_add_power_button() to ged, Gerd Hoffmann, 2020/09/17
- [PULL 09/21] microvm/acpi: add acpi_dsdt_add_virtio() for x86, Gerd Hoffmann, 2020/09/17
- [PULL 14/21] x86: move acpi_dev from pc/microvm, Gerd Hoffmann, 2020/09/17
- [PULL 08/21] microvm/acpi: add minimal acpi support, Gerd Hoffmann, 2020/09/17
- [PULL 15/21] x86: move cpu hotplug from pc to x86, Gerd Hoffmann, 2020/09/17
- [PULL 18/21] tests/acpi: allow override blkdev, Gerd Hoffmann, 2020/09/17
- Re: [PULL 00/21] Microvm 20200917 patches, Peter Maydell, 2020/09/18