qdev: hotplug: drop HotplugHandler.post_plug callback
as nvdimm acpi is okay to build fit when the nvdimm device has not been 'realized' Suggested-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
This commit is contained in:
parent
0d34fbabc1
commit
c7f8d0f3a5
@ -38,11 +38,7 @@ static int nvdimm_plugged_device_list(Object *obj, void *opaque)
|
|||||||
GSList **list = opaque;
|
GSList **list = opaque;
|
||||||
|
|
||||||
if (object_dynamic_cast(obj, TYPE_NVDIMM)) {
|
if (object_dynamic_cast(obj, TYPE_NVDIMM)) {
|
||||||
DeviceState *dev = DEVICE(obj);
|
*list = g_slist_append(*list, DEVICE(obj));
|
||||||
|
|
||||||
if (dev->realized) { /* only realized NVDIMMs matter */
|
|
||||||
*list = g_slist_append(*list, DEVICE(obj));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object_child_foreach(obj, nvdimm_plugged_device_list, opaque);
|
object_child_foreach(obj, nvdimm_plugged_device_list, opaque);
|
||||||
|
@ -35,17 +35,6 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void hotplug_handler_post_plug(HotplugHandler *plug_handler,
|
|
||||||
DeviceState *plugged_dev,
|
|
||||||
Error **errp)
|
|
||||||
{
|
|
||||||
HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
|
|
||||||
|
|
||||||
if (hdc->post_plug) {
|
|
||||||
hdc->post_plug(plug_handler, plugged_dev, errp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
|
void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
|
||||||
DeviceState *plugged_dev,
|
DeviceState *plugged_dev,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
|
@ -945,21 +945,10 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
|
|||||||
goto child_realize_fail;
|
goto child_realize_fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->hotplugged) {
|
if (dev->hotplugged) {
|
||||||
device_reset(dev);
|
device_reset(dev);
|
||||||
}
|
}
|
||||||
dev->pending_deleted_event = false;
|
dev->pending_deleted_event = false;
|
||||||
dev->realized = value;
|
|
||||||
|
|
||||||
if (hotplug_ctrl) {
|
|
||||||
hotplug_handler_post_plug(hotplug_ctrl, dev, &local_err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (local_err != NULL) {
|
|
||||||
dev->realized = value;
|
|
||||||
goto post_realize_fail;
|
|
||||||
}
|
|
||||||
} else if (!value && dev->realized) {
|
} else if (!value && dev->realized) {
|
||||||
Error **local_errp = NULL;
|
Error **local_errp = NULL;
|
||||||
QLIST_FOREACH(bus, &dev->child_bus, sibling) {
|
QLIST_FOREACH(bus, &dev->child_bus, sibling) {
|
||||||
@ -976,14 +965,13 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
|
|||||||
}
|
}
|
||||||
dev->pending_deleted_event = true;
|
dev->pending_deleted_event = true;
|
||||||
DEVICE_LISTENER_CALL(unrealize, Reverse, dev);
|
DEVICE_LISTENER_CALL(unrealize, Reverse, dev);
|
||||||
|
|
||||||
if (local_err != NULL) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->realized = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (local_err != NULL) {
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
dev->realized = value;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
child_realize_fail:
|
child_realize_fail:
|
||||||
|
23
hw/i386/pc.c
23
hw/i386/pc.c
@ -1715,22 +1715,16 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) {
|
||||||
|
nvdimm_acpi_hotplug(&pcms->acpi_nvdimm_state);
|
||||||
|
}
|
||||||
|
|
||||||
hhc = HOTPLUG_HANDLER_GET_CLASS(pcms->acpi_dev);
|
hhc = HOTPLUG_HANDLER_GET_CLASS(pcms->acpi_dev);
|
||||||
hhc->plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &error_abort);
|
hhc->plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &error_abort);
|
||||||
out:
|
out:
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pc_dimm_post_plug(HotplugHandler *hotplug_dev,
|
|
||||||
DeviceState *dev, Error **errp)
|
|
||||||
{
|
|
||||||
PCMachineState *pcms = PC_MACHINE(hotplug_dev);
|
|
||||||
|
|
||||||
if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) {
|
|
||||||
nvdimm_acpi_hotplug(&pcms->acpi_nvdimm_state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev,
|
static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev,
|
||||||
DeviceState *dev, Error **errp)
|
DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
@ -2008,14 +2002,6 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pc_machine_device_post_plug_cb(HotplugHandler *hotplug_dev,
|
|
||||||
DeviceState *dev, Error **errp)
|
|
||||||
{
|
|
||||||
if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
|
|
||||||
pc_dimm_post_plug(hotplug_dev, dev, errp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
|
static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
|
||||||
DeviceState *dev, Error **errp)
|
DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
@ -2322,7 +2308,6 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
|
|||||||
mc->reset = pc_machine_reset;
|
mc->reset = pc_machine_reset;
|
||||||
hc->pre_plug = pc_machine_device_pre_plug_cb;
|
hc->pre_plug = pc_machine_device_pre_plug_cb;
|
||||||
hc->plug = pc_machine_device_plug_cb;
|
hc->plug = pc_machine_device_plug_cb;
|
||||||
hc->post_plug = pc_machine_device_post_plug_cb;
|
|
||||||
hc->unplug_request = pc_machine_device_unplug_request_cb;
|
hc->unplug_request = pc_machine_device_unplug_request_cb;
|
||||||
hc->unplug = pc_machine_device_unplug_cb;
|
hc->unplug = pc_machine_device_unplug_cb;
|
||||||
nc->nmi_monitor_handler = x86_nmi;
|
nc->nmi_monitor_handler = x86_nmi;
|
||||||
|
@ -47,7 +47,6 @@ typedef void (*hotplug_fn)(HotplugHandler *plug_handler,
|
|||||||
* @parent: Opaque parent interface.
|
* @parent: Opaque parent interface.
|
||||||
* @pre_plug: pre plug callback called at start of device.realize(true)
|
* @pre_plug: pre plug callback called at start of device.realize(true)
|
||||||
* @plug: plug callback called at end of device.realize(true).
|
* @plug: plug callback called at end of device.realize(true).
|
||||||
* @post_pug: post plug callback called after device is successfully plugged.
|
|
||||||
* @unplug_request: unplug request callback.
|
* @unplug_request: unplug request callback.
|
||||||
* Used as a means to initiate device unplug for devices that
|
* Used as a means to initiate device unplug for devices that
|
||||||
* require asynchronous unplug handling.
|
* require asynchronous unplug handling.
|
||||||
@ -62,7 +61,6 @@ typedef struct HotplugHandlerClass {
|
|||||||
/* <public> */
|
/* <public> */
|
||||||
hotplug_fn pre_plug;
|
hotplug_fn pre_plug;
|
||||||
hotplug_fn plug;
|
hotplug_fn plug;
|
||||||
hotplug_fn post_plug;
|
|
||||||
hotplug_fn unplug_request;
|
hotplug_fn unplug_request;
|
||||||
hotplug_fn unplug;
|
hotplug_fn unplug;
|
||||||
} HotplugHandlerClass;
|
} HotplugHandlerClass;
|
||||||
@ -85,15 +83,6 @@ void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
|
|||||||
DeviceState *plugged_dev,
|
DeviceState *plugged_dev,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
/**
|
|
||||||
* hotplug_handler_post_plug:
|
|
||||||
*
|
|
||||||
* Call #HotplugHandlerClass.post_plug callback of @plug_handler.
|
|
||||||
*/
|
|
||||||
void hotplug_handler_post_plug(HotplugHandler *plug_handler,
|
|
||||||
DeviceState *plugged_dev,
|
|
||||||
Error **errp);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hotplug_handler_unplug_request:
|
* hotplug_handler_unplug_request:
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user