[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 09/10] hw/core/: add warm reset helpers for devic
From: |
Damien Hedde |
Subject: |
[Qemu-devel] [PATCH v4 09/10] hw/core/: add warm reset helpers for devices and buses |
Date: |
Wed, 21 Aug 2019 18:33:40 +0200 |
This add helpers to trigger warm reset and to retrieve the
reset current reset type.
Signed-off-by: Damien Hedde <address@hidden>
---
hw/core/bus.c | 11 +++++++++++
hw/core/qdev.c | 11 +++++++++++
include/hw/qdev-core.h | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/hw/core/bus.c b/hw/core/bus.c
index 3be65ad041..b245fd6937 100644
--- a/hw/core/bus.c
+++ b/hw/core/bus.c
@@ -74,11 +74,22 @@ void bus_cold_reset(BusState *bus)
resettable_reset(OBJECT(bus), RESET_TYPE_COLD);
}
+void bus_warm_reset(BusState *bus)
+{
+ resettable_reset(OBJECT(bus), RESET_TYPE_WARM);
+}
+
bool bus_is_resetting(BusState *bus)
{
return resettable_is_resetting(OBJECT(bus));
}
+bool bus_test_reset_type(BusState *bus, ResetType type)
+{
+ ResetType cur_type = resettable_get_type(OBJECT(bus));
+ return (cur_type & type);
+}
+
static ResetState *bus_get_reset_state(Object *obj)
{
BusState *bus = BUS(obj);
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 1638bc9f3b..9095f2b9c1 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -281,11 +281,22 @@ void device_cold_reset(DeviceState *dev)
resettable_reset(OBJECT(dev), RESET_TYPE_COLD);
}
+void device_warm_reset(DeviceState *dev)
+{
+ resettable_reset(OBJECT(dev), RESET_TYPE_WARM);
+}
+
bool device_is_resetting(DeviceState *dev)
{
return resettable_is_resetting(OBJECT(dev));
}
+bool device_test_reset_type(DeviceState *dev, ResetType type)
+{
+ ResetType cur_type = resettable_get_type(OBJECT(dev));
+ return (cur_type & type);
+}
+
static ResetState *device_get_reset_state(Object *obj)
{
DeviceState *dev = DEVICE(obj);
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 2976121fbc..eb11f0f801 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -422,18 +422,52 @@ void device_cold_reset(DeviceState *dev);
*/
void bus_cold_reset(BusState *bus);
+/**
+ * device_warm_reset:
+ * Trigger a warm reset of the device @dev.
+ *
+ * Use the Resettable interface (see hw/interface.h); it also reset the
+ * device's qdev/qbus subtree.
+ */
+void device_warm_reset(DeviceState *dev);
+
+/**
+ * bus_warm_reset:
+ * Trigger a warm reset of the bus @bus.
+ *
+ * Use the Resettable interface (see hw/interface.h); it also reset the
+ * bus's qdev/qbus subtree.
+ */
+void bus_warm_reset(BusState *bus);
+
/**
* device_is_resetting:
* Return true if the device @dev is currently being reset.
*/
bool device_is_resetting(DeviceState *dev);
+/**
+ * device_test_reset_type:
+ * Return true if the device @dev is currently under reset type
+ * @type.
+ * Only valid if device_is_resetting() is true
+ */
+bool device_test_reset_type(DeviceState *dev, ResetType type);
+
/**
* bus_is_resetting:
* Return true if the bus @bus is currently being reset.
*/
bool bus_is_resetting(BusState *bus);
+/**
+ * bus_test_reset_type:
+ * Return true if the bus @bus is currently under reset type
+ * @type.
+ * Only valid if device_is_resetting() is true
+ */
+bool bus_test_reset_type(BusState *bus, ResetType type);
+
/* This should go away once we get rid of the NULL bus hack */
BusState *sysbus_get_default(void);
--
2.22.0
- [Qemu-devel] [PATCH v4 00/10] Multi-phase reset mechanism, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 03/10] hw/core: add Resettable interface in Bus and Device classes, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 02/10] hw/core: create Resettable QOM interface, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 04/10] docs/devel/reset.txt: create doc about Resettable interface, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 05/10] vl.c: replace deprecated qbus_reset_all registration, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 06/10] hw/s390x/ipl.c: replace deprecated qbus_reset_all registration, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 01/10] add device_legacy_reset function to prepare for reset api change, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 07/10] hw/core/qdev: replace deprecated device_legacy_reset when hotplugging device, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 08/10] hw/core/resettable: add support for warm reset, Damien Hedde, 2019/08/21
- [Qemu-devel] [PATCH v4 09/10] hw/core/: add warm reset helpers for devices and buses,
Damien Hedde <=
- [Qemu-devel] [PATCH v4 10/10] docs/devel/reset.txt: add documentation about warm reset, Damien Hedde, 2019/08/21
- Re: [Qemu-devel] [PATCH v4 00/10] Multi-phase reset mechanism, no-reply, 2019/08/21