[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command uncondit
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command unconditionally |
Date: |
Sat, 17 May 2025 10:21:26 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> 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>
[...]
> 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");
> +}
We get this stub exactly when the command did not exist before the
patch. Thus, the command fails before and after, only error code and
message change, which is fine.
However, the error message feels brittle: it becomes misleading when we
implement the command for other targets. Let's dumb it down to
something like "RTC interrupt reinjection backlog reset is not available
for this machine".
[...]
- [PATCH v2 00/12] qapi: remove all TARGET_* conditionals from the schema, Pierrick Bouvier, 2025/05/15
- [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command unconditionally, Pierrick Bouvier, 2025/05/15
- Re: [PATCH v2 01/12] qapi: expose rtc-reset-reinjection command unconditionally,
Markus Armbruster <=
- [PATCH v2 02/12] qapi: expand docs for SEV commands, Pierrick Bouvier, 2025/05/15
- [PATCH v2 05/12] qapi: make SGX commands unconditionally available, Pierrick Bouvier, 2025/05/15
- [PATCH v2 06/12] qapi: make Xen event commands unconditionally available, Pierrick Bouvier, 2025/05/15
- [PATCH v2 04/12] qapi: expose query-gic-capability command unconditionally, Pierrick Bouvier, 2025/05/15
- [PATCH v2 03/12] qapi: make SEV commands unconditionally available, Pierrick Bouvier, 2025/05/15
- [PATCH v2 09/12] qapi: make most CPU commands unconditionally available, Pierrick Bouvier, 2025/05/15