* [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug.
@ 2014-12-11 6:19 Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 1/5] acpi, pc: Add hotunplug request cb for pc machine Tang Chen
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronize procedures.
When the unplug operation happens, unplug request cb is called first.
And when ghest OS finished handling unplug, unplug cb will be called
to do the real removal of device.
They both need pc-machine, piix4 and ich9 unplug and unplug request cb.
So this patch set introduces these commom functions as part1, and memory
and CPU hot-unplug will come soon as part 2 and 3.
This patch-set is based on QEmu 2.2
Tang Chen (5):
acpi, pc: Add hotunplug request cb for pc machine.
acpi, ich9: Add hotunplug request cb for ich9.
acpi, pc: Add unplug cb for pc machine.
acpi, ich9: Add unplug cb for ich9.
acpi, piix4: Add unplug cb for piix4.
hw/acpi/ich9.c | 14 ++++++++++++++
hw/acpi/piix4.c | 8 ++++++++
hw/i386/pc.c | 16 ++++++++++++++++
hw/isa/lpc_ich9.c | 14 ++++++++++++--
include/hw/acpi/ich9.h | 4 ++++
5 files changed, 54 insertions(+), 2 deletions(-)
--
1.8.4.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH RESEND v1 Part1 1/5] acpi, pc: Add hotunplug request cb for pc machine.
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
@ 2014-12-11 6:19 ` Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 2/5] acpi, ich9: Add hotunplug request cb for ich9 Tang Chen
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronous procedures.
They both need unplug request callback to initiate unplug operation.
Add unplug handler to pc machine that will be used by following
CPU and memory unplug patches.
---
hw/i386/pc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f31d55e..765ad3c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1709,6 +1709,13 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
}
}
+static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ error_setg(errp, "acpi: device unplug request for not supported device"
+ " type: %s", object_get_typename(OBJECT(dev)));
+}
+
static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
DeviceState *dev)
{
@@ -1831,6 +1838,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
pcmc->get_hotplug_handler = mc->get_hotplug_handler;
mc->get_hotplug_handler = pc_get_hotpug_handler;
hc->plug = pc_machine_device_plug_cb;
+ hc->unplug_request = pc_machine_device_unplug_request_cb;
}
static const TypeInfo pc_machine_info = {
--
1.8.4.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH RESEND v1 Part1 2/5] acpi, ich9: Add hotunplug request cb for ich9.
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 1/5] acpi, pc: Add hotunplug request cb for pc machine Tang Chen
@ 2014-12-11 6:19 ` Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 3/5] acpi, pc: Add unplug cb for pc machine Tang Chen
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronize procedures.
They both need unplug request cb when the unplug operation happens.
This patch adds hotunplug request cb for ich9, and memory and CPU
hot unplug will base on it.
---
hw/acpi/ich9.c | 7 +++++++
hw/isa/lpc_ich9.c | 5 +++--
include/hw/acpi/ich9.h | 2 ++
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index ea991a3..5ce3aaf 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -301,6 +301,13 @@ void ich9_pm_device_plug_cb(ICH9LPCPMRegs *pm, DeviceState *dev, Error **errp)
}
}
+void ich9_pm_device_unplug_request_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
+ Error **errp)
+{
+ error_setg(errp, "acpi: device unplug request for not supported device"
+ " type: %s", object_get_typename(OBJECT(dev)));
+}
+
void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list)
{
ICH9LPCState *s = ICH9_LPC_DEVICE(adev);
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index 530b074..d00b223 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -610,8 +610,9 @@ static void ich9_device_plug_cb(HotplugHandler *hotplug_dev,
static void ich9_device_unplug_request_cb(HotplugHandler *hotplug_dev,
DeviceState *dev, Error **errp)
{
- error_setg(errp, "acpi: device unplug request for not supported device"
- " type: %s", object_get_typename(OBJECT(dev)));
+ ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev);
+
+ ich9_pm_device_unplug_request_cb(&lpc->pm, dev, errp);
}
static bool ich9_rst_cnt_needed(void *opaque)
diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
index fe975e6..86853c3 100644
--- a/include/hw/acpi/ich9.h
+++ b/include/hw/acpi/ich9.h
@@ -59,6 +59,8 @@ extern const VMStateDescription vmstate_ich9_pm;
void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp);
void ich9_pm_device_plug_cb(ICH9LPCPMRegs *pm, DeviceState *dev, Error **errp);
+void ich9_pm_device_unplug_request_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
+ Error **errp);
void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list);
#endif /* HW_ACPI_ICH9_H */
--
1.8.4.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH RESEND v1 Part1 3/5] acpi, pc: Add unplug cb for pc machine.
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 1/5] acpi, pc: Add hotunplug request cb for pc machine Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 2/5] acpi, ich9: Add hotunplug request cb for ich9 Tang Chen
@ 2014-12-11 6:19 ` Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 4/5] acpi, ich9: Add unplug cb for ich9 Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 5/5] acpi, piix4: Add unplug cb for piix4 Tang Chen
4 siblings, 0 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronize procedures.
When the unplug operation happens, unplug request cb is called first.
And when ghest OS finished handling unplug, unplug cb will be called
to do the real removal of device.
This patch adds hotunplug cb for pc machine, and memory and CPU
hot unplug will base on it.
---
hw/i386/pc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 765ad3c..27d82b1 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1716,6 +1716,13 @@ static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
" type: %s", object_get_typename(OBJECT(dev)));
}
+static void pc_machine_device_unplug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ error_setg(errp, "acpi: device unplug for not supported device"
+ " type: %s", object_get_typename(OBJECT(dev)));
+}
+
static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
DeviceState *dev)
{
@@ -1839,6 +1846,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
mc->get_hotplug_handler = pc_get_hotpug_handler;
hc->plug = pc_machine_device_plug_cb;
hc->unplug_request = pc_machine_device_unplug_request_cb;
+ hc->unplug = pc_machine_device_unplug_cb;
}
static const TypeInfo pc_machine_info = {
--
1.8.4.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH RESEND v1 Part1 4/5] acpi, ich9: Add unplug cb for ich9.
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
` (2 preceding siblings ...)
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 3/5] acpi, pc: Add unplug cb for pc machine Tang Chen
@ 2014-12-11 6:19 ` Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 5/5] acpi, piix4: Add unplug cb for piix4 Tang Chen
4 siblings, 0 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronize procedures.
When the unplug operation happens, unplug request cb is called first.
And when ghest OS finished handling unplug, unplug cb will be called
to do the real removal of device.
This patch adds hotunplug cb for ich9, and memory and CPU
hot unplug will base on it.
---
hw/acpi/ich9.c | 7 +++++++
hw/isa/lpc_ich9.c | 9 +++++++++
include/hw/acpi/ich9.h | 2 ++
3 files changed, 18 insertions(+)
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index 5ce3aaf..c48d176 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -308,6 +308,13 @@ void ich9_pm_device_unplug_request_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
" type: %s", object_get_typename(OBJECT(dev)));
}
+void ich9_pm_device_unplug_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
+ Error **errp)
+{
+ error_setg(errp, "acpi: device unplug for not supported device"
+ " type: %s", object_get_typename(OBJECT(dev)));
+}
+
void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list)
{
ICH9LPCState *s = ICH9_LPC_DEVICE(adev);
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index d00b223..16f5a0d 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -615,6 +615,14 @@ static void ich9_device_unplug_request_cb(HotplugHandler *hotplug_dev,
ich9_pm_device_unplug_request_cb(&lpc->pm, dev, errp);
}
+static void ich9_device_unplug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev);
+
+ ich9_pm_device_unplug_cb(&lpc->pm, dev, errp);
+}
+
static bool ich9_rst_cnt_needed(void *opaque)
{
ICH9LPCState *lpc = opaque;
@@ -678,6 +686,7 @@ static void ich9_lpc_class_init(ObjectClass *klass, void *data)
dc->cannot_instantiate_with_device_add_yet = true;
hc->plug = ich9_device_plug_cb;
hc->unplug_request = ich9_device_unplug_request_cb;
+ hc->unplug = ich9_device_unplug_cb;
adevc->ospm_status = ich9_pm_ospm_status;
}
diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
index 86853c3..fc87dad 100644
--- a/include/hw/acpi/ich9.h
+++ b/include/hw/acpi/ich9.h
@@ -61,6 +61,8 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp);
void ich9_pm_device_plug_cb(ICH9LPCPMRegs *pm, DeviceState *dev, Error **errp);
void ich9_pm_device_unplug_request_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
Error **errp);
+void ich9_pm_device_unplug_cb(ICH9LPCPMRegs *pm, DeviceState *dev,
+ Error **errp);
void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list);
#endif /* HW_ACPI_ICH9_H */
--
1.8.4.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH RESEND v1 Part1 5/5] acpi, piix4: Add unplug cb for piix4.
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
` (3 preceding siblings ...)
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 4/5] acpi, ich9: Add unplug cb for ich9 Tang Chen
@ 2014-12-11 6:19 ` Tang Chen
4 siblings, 0 replies; 6+ messages in thread
From: Tang Chen @ 2014-12-11 6:19 UTC (permalink / raw)
To: qemu-devel, imammedo, mst, pbonzini
Cc: guz.fnst, hutao, isimatu.yasuaki, zhugh.fnst, tangchen
Memory and CPU hot unplug are both asynchronize procedures.
When the unplug operation happens, unplug request cb is called first.
And when ghest OS finished handling unplug, unplug cb will be called
to do the real removal of device.
This patch adds hotunplug cb for piix4, and memory and CPU
hot unplug will base on it.
---
hw/acpi/piix4.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 481a16c..4407388 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -370,6 +370,13 @@ static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev,
}
}
+static void piix4_device_unplug_cb(HotplugHandler *hotplug_dev,
+ DeviceState *dev, Error **errp)
+{
+ error_setg(errp, "acpi: device unplug for not supported device"
+ " type: %s", object_get_typename(OBJECT(dev)));
+}
+
static void piix4_update_bus_hotplug(PCIBus *pci_bus, void *opaque)
{
PIIX4PMState *s = opaque;
@@ -610,6 +617,7 @@ static void piix4_pm_class_init(ObjectClass *klass, void *data)
dc->hotpluggable = false;
hc->plug = piix4_device_plug_cb;
hc->unplug_request = piix4_device_unplug_request_cb;
+ hc->unplug = piix4_device_unplug_cb;
adevc->ospm_status = piix4_ospm_status;
}
--
1.8.4.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-12-11 6:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-11 6:19 [Qemu-devel] [PATCH RESEND v1 Part1 0/5] Common unplug and unplug request cb for memory and CPU hot-unplug Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 1/5] acpi, pc: Add hotunplug request cb for pc machine Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 2/5] acpi, ich9: Add hotunplug request cb for ich9 Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 3/5] acpi, pc: Add unplug cb for pc machine Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 4/5] acpi, ich9: Add unplug cb for ich9 Tang Chen
2014-12-11 6:19 ` [Qemu-devel] [PATCH RESEND v1 Part1 5/5] acpi, piix4: Add unplug cb for piix4 Tang Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).