[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 16/20] microvm: wire up hotplug
From: |
Igor Mammedov |
Subject: |
Re: [PATCH v5 16/20] microvm: wire up hotplug |
Date: |
Fri, 10 Jul 2020 21:44:19 +0200 |
On Tue, 7 Jul 2020 14:53:52 +0200
Gerd Hoffmann <kraxel@redhat.com> wrote:
> 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>
Blame is on me for calling it hotplug, HotplugHandlerClass is basically
a set of hooks to wire things up regardless if it's hotplug or coldplug.
In hindsight it was obvious at the time it was introduced.
Reviewed-by: Igor Mammedov <imammedo@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 },
> { }
> },
> };
- [PATCH v5 14/20] x86: move acpi_dev from pc/microvm, (continued)
- [PATCH v5 14/20] x86: move acpi_dev from pc/microvm, Gerd Hoffmann, 2020/07/07
- [PATCH v5 20/20] tests/acpi: update expected data files for microvm, Gerd Hoffmann, 2020/07/07
- [PATCH v5 07/20] microvm: make virtio irq base runtime configurable, Gerd Hoffmann, 2020/07/07
- [PATCH v5 17/20] tests/acpi: allow microvm test data updates., Gerd Hoffmann, 2020/07/07
- [PATCH v5 13/20] x86: constify x86_machine_is_*_enabled, Gerd Hoffmann, 2020/07/07
- [PATCH v5 12/20] microvm/acpi: disable virtio-mmio cmdline hack, Gerd Hoffmann, 2020/07/07
- [PATCH v5 19/20] tests/acpi: add microvm test, Gerd Hoffmann, 2020/07/07
- [PATCH v5 16/20] microvm: wire up hotplug, Gerd Hoffmann, 2020/07/07
- Re: [PATCH v5 16/20] microvm: wire up hotplug,
Igor Mammedov <=
- [PATCH v5 11/20] microvm/acpi: use seabios with acpi=on, Gerd Hoffmann, 2020/07/07
- [PATCH v5 10/20] microvm/acpi: use GSI 16-23 for virtio, Gerd Hoffmann, 2020/07/07
- [PATCH v5 15/20] x86: move cpu plug from pc to x86, Gerd Hoffmann, 2020/07/07
- [PATCH v5 09/20] microvm/acpi: add acpi_dsdt_add_virtio() for x86, Gerd Hoffmann, 2020/07/07
- [PATCH v5 18/20] tests/acpi: allow override blkdev, Gerd Hoffmann, 2020/07/07
- Re: [PATCH v5 00/20] microvm: add acpi support, no-reply, 2020/07/07
- Re: [PATCH v5 00/20] microvm: add acpi support, no-reply, 2020/07/07