From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Michael Roth" <michael.roth@amd.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
berrange@redhat.com, "Markus Armbruster" <armbru@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>
Subject: [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command unconditionally
Date: Thu, 15 May 2025 10:27:21 -0700 [thread overview]
Message-ID: <20250515172732.3992504-2-pierrick.bouvier@linaro.org> (raw)
In-Reply-To: <20250515172732.3992504-1-pierrick.bouvier@linaro.org>
From: Daniel P. Berrangé <berrange@redhat.com>
This removes the TARGET_I386 condition from the rtc-reset-reinjection
command. This requires providing a QMP command stub for non-i386 target.
This in turn requires moving the command out of misc-target.json, since
that will trigger symbol poisoning errors when built from target
independent code.
Rather than putting the command into misc.json, it is proposed to create
misc-$TARGET.json files to hold commands whose impl is conceptually
only applicable to a single target. This gives an obvious docs hint to
consumers that the command is only useful in relation a specific target,
while misc.json is for commands applicable to 2 or more targets.
The current impl of qmp_rtc_reset_reinject() is a no-op if the i386
RTC is disabled in Kconfig, or if the running machine type lack any
RTC device.
The stub impl for non-i386 targets retains this no-op behaviour.
However, it is now reporting an Error mentioning this command is not
available for current target.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
qapi/misc-i386.json | 24 ++++++++++++++++++++++++
qapi/misc-target.json | 17 -----------------
qapi/qapi-schema.json | 1 +
hw/i386/monitor.c | 2 +-
stubs/monitor-i386-rtc.c | 11 +++++++++++
qapi/meson.build | 1 +
stubs/meson.build | 1 +
7 files changed, 39 insertions(+), 18 deletions(-)
create mode 100644 qapi/misc-i386.json
create mode 100644 stubs/monitor-i386-rtc.c
diff --git a/qapi/misc-i386.json b/qapi/misc-i386.json
new file mode 100644
index 00000000000..d5bfd91405e
--- /dev/null
+++ b/qapi/misc-i386.json
@@ -0,0 +1,24 @@
+# -*- Mode: Python -*-
+# vim: filetype=python
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+##
+# @rtc-reset-reinjection:
+#
+# This command will reset the RTC interrupt reinjection backlog. Can
+# be used if another mechanism to synchronize guest time is in effect,
+# for example QEMU guest agent's guest-set-time command.
+#
+# Use of this command is only applicable for x86 machines with an RTC,
+# and on other machines will silently return without performing any
+# action.
+#
+# Since: 2.1
+#
+# .. qmp-example::
+#
+# -> { "execute": "rtc-reset-reinjection" }
+# <- { "return": {} }
+##
+{ 'command': 'rtc-reset-reinjection' }
diff --git a/qapi/misc-target.json b/qapi/misc-target.json
index 42e4a7417dc..5d0ffb0164f 100644
--- a/qapi/misc-target.json
+++ b/qapi/misc-target.json
@@ -2,23 +2,6 @@
# vim: filetype=python
#
-##
-# @rtc-reset-reinjection:
-#
-# This command will reset the RTC interrupt reinjection backlog. Can
-# be used if another mechanism to synchronize guest time is in effect,
-# for example QEMU guest agent's guest-set-time command.
-#
-# Since: 2.1
-#
-# .. qmp-example::
-#
-# -> { "execute": "rtc-reset-reinjection" }
-# <- { "return": {} }
-##
-{ 'command': 'rtc-reset-reinjection',
- 'if': 'TARGET_I386' }
-
##
# @SevState:
#
diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
index 7bc600bb768..96f6aa44133 100644
--- a/qapi/qapi-schema.json
+++ b/qapi/qapi-schema.json
@@ -61,6 +61,7 @@
{ 'include': 'replay.json' }
{ 'include': 'yank.json' }
{ 'include': 'misc.json' }
+{ 'include': 'misc-i386.json' }
{ 'include': 'misc-target.json' }
{ 'include': 'audio.json' }
{ 'include': 'acpi.json' }
diff --git a/hw/i386/monitor.c b/hw/i386/monitor.c
index 1921e4d52e9..79df96562f6 100644
--- a/hw/i386/monitor.c
+++ b/hw/i386/monitor.c
@@ -26,7 +26,7 @@
#include "monitor/monitor.h"
#include "qobject/qdict.h"
#include "qapi/error.h"
-#include "qapi/qapi-commands-misc-target.h"
+#include "qapi/qapi-commands-misc-i386.h"
#include "hw/i386/x86.h"
#include "hw/rtc/mc146818rtc.h"
diff --git a/stubs/monitor-i386-rtc.c b/stubs/monitor-i386-rtc.c
new file mode 100644
index 00000000000..d810f33efec
--- /dev/null
+++ b/stubs/monitor-i386-rtc.c
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "qapi/qapi-commands-misc-i386.h"
+
+void qmp_rtc_reset_reinjection(Error **errp)
+{
+ error_setg(errp,
+ "rtc-reset-injection is only available for x86 machines with RTC");
+}
diff --git a/qapi/meson.build b/qapi/meson.build
index eadde4db307..3a9bd061047 100644
--- a/qapi/meson.build
+++ b/qapi/meson.build
@@ -64,6 +64,7 @@ if have_system
'qdev',
'pci',
'rocker',
+ 'misc-i386',
'tpm',
'uefi',
]
diff --git a/stubs/meson.build b/stubs/meson.build
index 63392f5e785..9907b54c1e6 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -77,6 +77,7 @@ if have_system
stub_ss.add(files('target-monitor-defs.c'))
stub_ss.add(files('win32-kbd-hook.c'))
stub_ss.add(files('xen-hw-stub.c'))
+ stub_ss.add(files('monitor-i386-rtc.c'))
endif
if have_system or have_user
--
2.47.2
next prev parent reply other threads:[~2025-05-15 17:29 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-15 17:27 [PATCH v2 00/12] qapi: remove all TARGET_* conditionals from the schema Pierrick Bouvier
2025-05-15 17:27 ` Pierrick Bouvier [this message]
2025-05-17 8:21 ` [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command unconditionally Markus Armbruster
2025-05-17 19:39 ` Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 02/12] qapi: expand docs for SEV commands Pierrick Bouvier
2025-05-19 5:57 ` Markus Armbruster
2025-05-21 19:21 ` Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 03/12] qapi: make SEV commands unconditionally available Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 04/12] qapi: expose query-gic-capability command unconditionally Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 05/12] qapi: make SGX commands unconditionally available Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 06/12] qapi: make Xen event " Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 07/12] qapi: remove the misc-target.json file Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 08/12] qapi: Make CpuModelExpansionInfo::deprecated-props optional and generic Pierrick Bouvier
2025-05-19 6:18 ` Markus Armbruster
2025-05-21 19:22 ` Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 09/12] qapi: make most CPU commands unconditionally available Pierrick Bouvier
2025-05-17 6:00 ` Markus Armbruster
2025-05-17 19:41 ` Pierrick Bouvier
2025-05-19 6:29 ` Markus Armbruster
2025-05-21 19:29 ` Pierrick Bouvier
2025-05-22 5:12 ` Markus Armbruster
2025-05-22 18:45 ` Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 10/12] qapi: make s390x specific " Pierrick Bouvier
2025-05-15 17:27 ` [PATCH v2 11/12] qapi: remove qapi_specific_outputs from meson.build Pierrick Bouvier
2025-05-19 8:50 ` Markus Armbruster
2025-05-15 17:27 ` [PATCH v2 12/12] qapi: make all generated files common Pierrick Bouvier
2025-05-19 9:14 ` Markus Armbruster
2025-05-21 22:41 ` [PATCH v2 00/12] qapi: remove all TARGET_* conditionals from the schema Pierrick Bouvier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250515172732.3992504-2-pierrick.bouvier@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).