From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>, qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
David Hildenbrand <david@redhat.com>,
Michael Roth <michael.roth@amd.com>,
Cornelia Huck <cohuck@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Peter Xu <peterx@redhat.com>,
Yuval Shaia <yuval.shaia.ml@gmail.com>,
Halil Pasic <pasic@linux.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
qemu-s390x@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [PATCH v4 17/22] qapi: introduce x-query-cmma QMP command
Date: Tue, 2 Nov 2021 15:53:29 +0100 [thread overview]
Message-ID: <b92cc519-6c48-895e-eacd-c7a012aee180@redhat.com> (raw)
In-Reply-To: <20211028155457.967291-18-berrange@redhat.com>
On 10/28/21 17:54, Daniel P. Berrangé wrote:
> This is a counterpart to the HMP "info cmma" command. It is being
> added with an "x-" prefix because this QMP command is intended as an
> adhoc debugging tool and will thus not be modelled in QAPI as fully
> structured data, nor will it have long term guaranteed stability.
> The existing HMP command is rewritten to call the QMP command.
>
> This command is unable to use the pre-existing HumanReadableText,
> because if 'common.json' is included into 'machine-target.json'
> the static marshalling method for HumanReadableText will be reported
> as unused by the compiler on all architectures except s390x.
>
> Possible options were
>
> 1 Support 'if' conditionals on 'include' statements in QAPI
> 2 Add further commands to 'machine-target.json' that use
> HumanReadableText, such that it has at least one usage
> on all architecture targets.
> 3 Duplicate HumanReadableText as TargetHumanReadableText
> adding conditions
>
> This patch takes option (3) in the belief that we will eventually
> get to a point where option (2) happens, and TargetHumanReadableText
> can be removed again.
Aren't you using (1) here? TargetHumanReadableText was added in v2
but v3 diverged and doesn't add it anymore.
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> hw/s390x/s390-stattrib.c | 56 +++++++++++++++++++++++++++-------------
> qapi/machine-target.json | 14 ++++++++++
> 2 files changed, 52 insertions(+), 18 deletions(-)
>
> diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c
> index 9eda1c3b2a..d8f5867a5f 100644
> --- a/hw/s390x/s390-stattrib.c
> +++ b/hw/s390x/s390-stattrib.c
> @@ -17,6 +17,8 @@
> #include "qemu/error-report.h"
> #include "exec/ram_addr.h"
> #include "qapi/error.h"
> +#include "qapi/qapi-commands-machine-target.h"
> +#include "qapi/type-helpers.h"
> #include "qapi/qmp/qdict.h"
>
> /* 512KiB cover 2GB of guest memory */
> @@ -67,41 +69,59 @@ void hmp_migrationmode(Monitor *mon, const QDict *qdict)
> }
> }
>
> -void hmp_info_cmma(Monitor *mon, const QDict *qdict)
> +HumanReadableText *qmp_x_query_cmma(int64_t addr,
> + bool has_count,
> + int64_t count,
> + Error **errp)
> {
> + g_autoptr(GString) buf = g_string_new("");
> S390StAttribState *sas = s390_get_stattrib_device();
> S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas);
> - uint64_t addr = qdict_get_int(qdict, "addr");
> - uint64_t buflen = qdict_get_try_int(qdict, "count", 8);
> - uint8_t *vals;
> + g_autofree uint8_t *vals = NULL;
> int cx, len;
>
> - vals = g_try_malloc(buflen);
> + vals = g_try_malloc(count);
> if (!vals) {
> - monitor_printf(mon, "Error: %s\n", strerror(errno));
> - return;
> + error_setg_errno(errp, errno, "cannot allocate CMMA attribute values");
> + return NULL;
> }
>
> - len = sac->peek_stattr(sas, addr / TARGET_PAGE_SIZE, buflen, vals);
> + len = sac->peek_stattr(sas, addr / TARGET_PAGE_SIZE, count, vals);
> if (len < 0) {
> - monitor_printf(mon, "Error: %s", strerror(-len));
> - goto out;
> + error_setg_errno(errp, -len, "cannot peek at CMMA attribute values");
> + return NULL;
> }
>
> - monitor_printf(mon, " CMMA attributes, "
> - "pages %" PRIu64 "+%d (0x%" PRIx64 "):\n",
> - addr / TARGET_PAGE_SIZE, len, addr & ~TARGET_PAGE_MASK);
> + g_string_append_printf(buf, " CMMA attributes, "
> + "pages %" PRIu64 "+%d (0x%" PRIx64 "):\n",
> + addr / TARGET_PAGE_SIZE, len,
> + addr & ~TARGET_PAGE_MASK);
> for (cx = 0; cx < len; cx++) {
> if (cx % 8 == 7) {
> - monitor_printf(mon, "%02x\n", vals[cx]);
> + g_string_append_printf(buf, "%02x\n", vals[cx]);
> } else {
> - monitor_printf(mon, "%02x", vals[cx]);
> + g_string_append_printf(buf, "%02x", vals[cx]);
> }
> }
> - monitor_printf(mon, "\n");
> + g_string_append_printf(buf, "\n");
> +
> + return human_readable_text_from_str(buf);
> +}
> +
> +void hmp_info_cmma(Monitor *mon, const QDict *qdict)
> +{
> + Error *err = NULL;
> + g_autoptr(HumanReadableText) info = NULL;
> + uint64_t addr = qdict_get_int(qdict, "addr");
> + uint64_t count = qdict_get_try_int(qdict, "count", 8);
> +
> + info = qmp_x_query_cmma(addr, true, count, &err);
> + if (err) {
> + error_report_err(err);
> + return;
> + }
>
> -out:
> - g_free(vals);
> + monitor_printf(mon, "%s", info->human_readable_text);
> }
>
> /* Migration support: */
> diff --git a/qapi/machine-target.json b/qapi/machine-target.json
> index 7d4e73462f..19e44987af 100644
> --- a/qapi/machine-target.json
> +++ b/qapi/machine-target.json
> @@ -345,6 +345,20 @@
> 'TARGET_MIPS' ] } }
>
>
> +##
> +# @x-query-cmma:
> +#
> +# Query the values of the CMMA storage attributes for a range of pages
> +#
> +# Returns: CMMA storage attribute values
> +#
> +# Since: 6.2
> +##
> +{ 'command': 'x-query-cmma',
> + 'data': { 'addr': 'int', '*count': 'int' },
> + 'returns': 'HumanReadableText',
> + 'if': 'TARGET_S390X' }
> +
> ##
> # @x-query-skeys:
> #
>
next prev parent reply other threads:[~2021-11-02 14:57 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-28 15:54 [PATCH v4 00/22] monitor: explicitly permit QMP commands to be added for all use cases Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 01/22] monitor: remove 'info ioapic' HMP command Daniel P. Berrangé
2021-10-29 2:02 ` Peter Xu
2021-10-28 15:54 ` [PATCH v4 02/22] monitor: make hmp_handle_error return a boolean Daniel P. Berrangé
2021-10-28 16:04 ` Dr. David Alan Gilbert
2021-10-28 16:47 ` Philippe Mathieu-Daudé
2021-11-01 15:54 ` Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 03/22] docs/devel: rename file for writing monitor commands Daniel P. Berrangé
2021-10-28 17:09 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 04/22] docs/devel: tweak headings in monitor command docs Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 05/22] docs/devel: update error handling guidance for HMP commands Daniel P. Berrangé
2021-10-28 16:14 ` Dr. David Alan Gilbert
2021-10-28 15:54 ` [PATCH v4 06/22] monitor: introduce HumanReadableText and HMP support Daniel P. Berrangé
2021-10-28 16:54 ` Philippe Mathieu-Daudé
2021-11-02 15:11 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 07/22] docs/devel: document expectations for QAPI data modelling for QMP Daniel P. Berrangé
2021-11-04 20:32 ` Eric Blake
2021-10-28 15:54 ` [PATCH v4 08/22] docs/devel: add example of command returning unstructured text Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 09/22] docs/devel: document expectations for HMP commands in the future Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 10/22] qapi: introduce x-query-roms QMP command Daniel P. Berrangé
2021-10-28 16:55 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 11/22] qapi: introduce x-query-profile " Daniel P. Berrangé
2021-10-29 11:29 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 12/22] qapi: introduce x-query-numa " Daniel P. Berrangé
2021-10-29 11:28 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 13/22] qapi: introduce x-query-usb " Daniel P. Berrangé
2021-10-28 16:57 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 14/22] qapi: introduce x-query-rdma " Daniel P. Berrangé
2021-10-29 11:26 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 15/22] qapi: introduce x-query-ramblock " Daniel P. Berrangé
2021-10-28 16:58 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 16/22] qapi: introduce x-query-skeys " Daniel P. Berrangé
2021-11-02 15:02 ` Philippe Mathieu-Daudé
2021-11-02 16:05 ` Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 17/22] qapi: introduce x-query-cmma " Daniel P. Berrangé
2021-10-28 17:00 ` Philippe Mathieu-Daudé
2021-11-02 14:53 ` Philippe Mathieu-Daudé [this message]
2021-10-28 15:54 ` [PATCH v4 18/22] hmp: synchronize cpu state for lapic info Daniel P. Berrangé
2023-10-26 16:50 ` Woodhouse, David via
2023-10-26 16:50 ` Woodhouse, David
2021-10-28 15:54 ` [PATCH v4 19/22] qapi: introduce x-query-lapic QMP command Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 20/22] qapi: introduce x-query-irq " Daniel P. Berrangé
2021-11-02 14:57 ` Philippe Mathieu-Daudé
2021-11-02 16:02 ` Daniel P. Berrangé
2021-10-28 15:54 ` [PATCH v4 21/22] qapi: introduce x-query-jit " Daniel P. Berrangé
2021-10-28 17:05 ` Philippe Mathieu-Daudé
2021-10-28 15:54 ` [PATCH v4 22/22] qapi: introduce x-query-opcount " Daniel P. Berrangé
2021-10-28 17:08 ` Philippe Mathieu-Daudé
2021-11-01 15:58 ` Daniel P. Berrangé
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=b92cc519-6c48-895e-eacd-c7a012aee180@redhat.com \
--to=philmd@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kraxel@redhat.com \
--cc=lvivier@redhat.com \
--cc=michael.roth@amd.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=yuval.shaia.ml@gmail.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).