[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 2/8] qdev: export qdev_reset() for later use.
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH v2 2/8] qdev: export qdev_reset() for later use. |
Date: |
Thu, 5 Aug 2010 11:08:59 +0900 |
export qdev_reset() for later use.
Signed-off-by: Isaku Yamahata <address@hidden>
---
hw/qdev.c | 29 +++++++++++++++++++++++++----
hw/qdev.h | 1 +
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/hw/qdev.c b/hw/qdev.c
index e99c73f..322b315 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -256,13 +256,34 @@ DeviceState *qdev_device_add(QemuOpts *opts)
return qdev;
}
-static void qdev_reset(void *opaque)
+/*
+ * reset the device.
+ * Bring the device into initial known state (to some extent)
+ * on warm reset(system reset).
+ * Typically on system reset(or power-on reset), bus reset occurs on
+ * each bus which causes devices to reset.
+ * This reset doesn't include software reset which is triggered by
+ * issuing reset command. Those device reset would be implemented in a bus
+ * specific way.
+ *
+ * For example
+ * PCI: reset with RST# signal asserted. Not FLR of advanced feature capability
+ * PCIe: conventional reset. Not FLR.
+ * ATA: hardware reset with RESET- signal asserted. Not DEVICE RESET command.
+ * SCSI: hard reset with SCSI RST signal asserted.
+ * Not bus device reset message.
+ */
+void qdev_reset(DeviceState *dev)
{
- DeviceState *dev = opaque;
if (dev->info->reset)
dev->info->reset(dev);
}
+static void qdev_reset_fn(void *opaque)
+{
+ qdev_reset(opaque);
+}
+
/* Initialize a device. Device properties should be set before calling
this function. IRQs and MMIO regions should be connected/mapped after
calling this function.
@@ -278,7 +299,7 @@ int qdev_init(DeviceState *dev)
qdev_free(dev);
return rc;
}
- qemu_register_reset(qdev_reset, dev);
+ qemu_register_reset(qdev_reset_fn, dev);
if (dev->info->vmsd) {
vmstate_register_with_alias_id(dev, -1, dev->info->vmsd, dev,
dev->instance_id_alias,
@@ -350,7 +371,7 @@ void qdev_free(DeviceState *dev)
if (dev->opts)
qemu_opts_del(dev->opts);
}
- qemu_unregister_reset(qdev_reset, dev);
+ qemu_unregister_reset(qdev_reset_fn, dev);
QLIST_REMOVE(dev, sibling);
for (prop = dev->info->props; prop && prop->name; prop++) {
if (prop->info->free) {
diff --git a/hw/qdev.h b/hw/qdev.h
index 678f8b7..10f6769 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -162,6 +162,7 @@ struct DeviceInfo {
extern DeviceInfo *device_info_list;
void qdev_register(DeviceInfo *info);
+void qdev_reset(DeviceState *dev);
/* Register device properties. */
/* GPIO inputs also double as IRQ sinks. */
--
1.7.1.1
- [Qemu-devel] [PATCH v2 0/8] qbus reset callback and implement pci bus reset, Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 5/8] qdev: introduce bus reset callback and helper functions., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 3/8] pci: export pci_bus_reset() and pci_device_reset() for later use., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 7/8] pci: eliminate work around in pci_device_reset()., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 4/8] pci: make pci_device_reset() aware of qdev., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 6/8] pci: use qbus bus reset callback., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 1/8] apb: fix typo., Isaku Yamahata, 2010/08/04
- [Qemu-devel] [PATCH v2 2/8] qdev: export qdev_reset() for later use.,
Isaku Yamahata <=
- [Qemu-devel] [PATCH v2 8/8] pci bridge: implement secondary bus reset., Isaku Yamahata, 2010/08/04