[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/13] qapi: move RTC_CHANGE to the target schema
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 13/13] qapi: move RTC_CHANGE to the target schema |
Date: |
Sun, 16 Dec 2018 18:09:02 +0400 |
A few targets don't emit RTC_CHANGE, we could restrict the event to
the tagets that do emit it.
Note: There is a lot more of events & commands that we could restrict
to capable targets, with the cost of some additional complexity, but
the benefit of added correctness and better introspection.
Note2: The rate limite could perhaps be part of the schema, and the
common event emitter code, to simplify the need of custom and #ifdef
code in the monitor.
Signed-off-by: Marc-André Lureau <address@hidden>
---
qapi/misc.json | 23 -----------------------
qapi/target.json | 23 +++++++++++++++++++++++
hw/ppc/spapr_rtc.c | 2 +-
hw/timer/mc146818rtc.c | 2 +-
monitor.c | 8 +++++++-
5 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/qapi/misc.json b/qapi/misc.json
index 7d620b2d7b..aa97344c20 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -2807,29 +2807,6 @@
{ 'event': 'ACPI_DEVICE_OST',
'data': { 'info': 'ACPIOSTInfo' } }
-##
-# @RTC_CHANGE:
-#
-# Emitted when the guest changes the RTC time.
-#
-# @offset: offset between base RTC clock (as specified by -rtc base), and
-# new RTC clock value. Note that value will be different depending
-# on clock chosen to drive RTC (specified by -rtc clock).
-#
-# Note: This event is rate-limited.
-#
-# Since: 0.13.0
-#
-# Example:
-#
-# <- { "event": "RTC_CHANGE",
-# "data": { "offset": 78 },
-# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
-#
-##
-{ 'event': 'RTC_CHANGE',
- 'data': { 'offset': 'int' } }
-
##
# @ReplayMode:
#
diff --git a/qapi/target.json b/qapi/target.json
index c75af005c9..039f539fcf 100644
--- a/qapi/target.json
+++ b/qapi/target.json
@@ -9,6 +9,29 @@
{ 'include': 'misc.json' }
+##
+# @RTC_CHANGE:
+#
+# Emitted when the guest changes the RTC time.
+#
+# @offset: offset between base RTC clock (as specified by -rtc base), and
+# new RTC clock value
+#
+# Note: This event is rate-limited.
+#
+# Since: 0.13.0
+#
+# Example:
+#
+# <- { "event": "RTC_CHANGE",
+# "data": { "offset": 78 },
+# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
+#
+##
+{ 'event': 'RTC_CHANGE',
+ 'data': { 'offset': 'int' },
+ 'if': 'defined(TARGET_ALPHA) || defined(TARGET_ARM) || defined(TARGET_HPPA)
|| defined(TARGET_I386) || defined(TARGET_MIPS) || defined(TARGET_MIPS64) ||
defined(TARGET_MOXIE) || defined(TARGET_PPC) || defined(TARGET_PPC64) ||
defined(TARGET_S390X) || defined(TARGET_SH4) || defined(TARGET_SPARC)' }
+
##
# @rtc-reset-reinjection:
#
diff --git a/hw/ppc/spapr_rtc.c b/hw/ppc/spapr_rtc.c
index cd049f389d..ce00d96865 100644
--- a/hw/ppc/spapr_rtc.c
+++ b/hw/ppc/spapr_rtc.c
@@ -31,7 +31,7 @@
#include "sysemu/sysemu.h"
#include "hw/ppc/spapr.h"
#include "qapi/error.h"
-#include "qapi/qapi-events-misc.h"
+#include "qapi/target-qapi-events.h"
#include "qemu/cutils.h"
void spapr_rtc_read(sPAPRRTCState *rtc, struct tm *tm, uint32_t *ns)
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
index a27b389f8e..8e7ac3034e 100644
--- a/hw/timer/mc146818rtc.c
+++ b/hw/timer/mc146818rtc.c
@@ -32,7 +32,7 @@
#include "hw/timer/mc146818rtc.h"
#include "qapi/error.h"
#include "qapi/target-qapi-commands.h"
-#include "qapi/qapi-events-misc.h"
+#include "qapi/target-qapi-events.h"
#include "qapi/visitor.h"
#include "exec/address-spaces.h"
diff --git a/monitor.c b/monitor.c
index 780247ab64..f7abb18084 100644
--- a/monitor.c
+++ b/monitor.c
@@ -674,7 +674,6 @@ monitor_qapi_event_queue(unsigned event, QDict *qdict)
.size = QAPI_EVENT__MAX,
.rate = {
/* Limit guest-triggerable events to 1 per second */
- [QAPI_EVENT_RTC_CHANGE] = 1000 * SCALE_MS,
[QAPI_EVENT_WATCHDOG] = 1000 * SCALE_MS,
[QAPI_EVENT_BALLOON_CHANGE] = 1000 * SCALE_MS,
[QAPI_EVENT_QUORUM_REPORT_BAD] = 1000 * SCALE_MS,
@@ -718,6 +717,13 @@ target_monitor_qapi_event_queue(unsigned event, QDict
*qdict)
static MonitorEventRateLimit limiter = {
.size = TARGET_QAPI_EVENT__MAX,
.rate = {
+ /* Limit guest-triggerable events to 1 per second */
+#if defined(TARGET_ALPHA) || defined(TARGET_ARM) || defined(TARGET_HPPA) || \
+ defined(TARGET_I386) || defined(TARGET_MIPS) | defined(TARGET_MIPS64) || \
+ defined(TARGET_MOXIE) || defined(TARGET_PPC) || defined(TARGET_PPC64) || \
+ defined(TARGET_S390X) || defined(TARGET_SH4) || defined(TARGET_SPARC)
+ [TARGET_QAPI_EVENT_RTC_CHANGE] = 1000 * SCALE_MS,
+#endif
[TARGET_QAPI_EVENT__MAX] = 0,
},
};
--
2.20.0
- [Qemu-devel] [PATCH 06/13] qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386, (continued)
- [Qemu-devel] [PATCH 06/13] qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 07/13] qapi: make s390 commands depend on TARGET_S390X, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 08/13] target.json: add a note about query-cpu* not being s390x-specific, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 09/13] qapi: make query-gic-capabilities depend on TARGET_ARM, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 10/13] qapi: make query-cpu-model-expansion depend on s390 or x86, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 11/13] qapi: make query-cpu-definitions depend on specific targets, Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 12/13] qapi: remove qmp_unregister_command(), Marc-André Lureau, 2018/12/16
- [Qemu-devel] [PATCH 13/13] qapi: move RTC_CHANGE to the target schema,
Marc-André Lureau <=
- Re: [Qemu-devel] [PATCH 00/13] qapi: add #if pre-processor conditions to generated code (part 3), Markus Armbruster, 2018/12/18