All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v1 1/2] qmp.c: (re)implement qmp_cpu
Date: Mon, 18 Dec 2017 10:12:58 +0100	[thread overview]
Message-ID: <87wp1kh011.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20171215185939.GE2358@work-vm> (David Alan Gilbert's message of "Fri, 15 Dec 2017 18:59:40 +0000")

"Dr. David Alan Gilbert" <dgilbert@redhat.com> writes:

> * Daniel Henrique Barboza (danielhb@linux.vnet.ibm.com) wrote:
>> 
>> 
>> On 12/14/2017 01:21 PM, Markus Armbruster wrote:
>> > Eric Blake <eblake@redhat.com> writes:
>> > 
>> > > On 12/13/2017 12:15 PM, Daniel Henrique Barboza wrote:
>> > > > Commit 755f196898 ("qapi: Convert the cpu command") added the qmp_cpu
>> > > > function in qmp.c, leaving it blank. It the same commit, a working
>> > > > hmp_cpu was implemented. Since then, no further changes were made in
>> > > > qmp_cpu, resulting now in a working 'cpu' command that works in HMP
>> > > > and a 'cpu' command in QMP that does nothing.
>> > > > 
>> > > > Regardless of what constraints were involved that time in not implemeting
>> > > > qmp_cpu, at this moment it is possible to have both.
>> > If I remember that part of history correctly, implementing the command
>> > in QMP was just as possible back then, but deemed a Bad Idea for the
>> > reason Eric explains below.
>> > 
>> > What I don't quite remember is why we had to implement it in QMP as a
>> > no-op.  Might have been due to the way QMP and HMP were entangled back
>> > then.
>> Speaking of QMP and HMP 'entanglement', is the content of the wiki
>> still valid?
>> 
>> https://wiki.qemu.org/Features/QAPI
>> 
>> And under "HMP Conversion" we have:
>> 
>> "For HMP commands that don't have QMP equivalents today, new QMP functions
>> will be added to support these commands."
>> 
>> This in particular gave me the motivation to go ahead and implement qmp_cpu.
>> But then again, the last entry on Status is "3/6/2011" so yeah, I should
>> have
>> asked here first whether the info from this wiki was relevant before sending
>> the patch.
>> 
>> > > >                                                       This patch brings
>> > > > the logic of hmp_cpu to qmp_cpu and converts the HMP function to use its
>> > > > QMP counterpart.
>> > > I'm not sure I like this. HMP is stateful (you have to remember what
>> > > previous 'cpu' commands have been run to tell what the current command
>> > > will do).  That may be convenient (if not confusing) to humans, but is
>> > > lousy for machine interfaces.  QMP should be stateless as much as
>> > > possible - for any command that would behave differently according to
>> > > what CPU is selected, THAT command (and not a different 'cpu' command
>> > > executed previously) should have a cpu argument alongside all its other
>> > > parameters.
>> > > 
>> > > So unless you have a really strong use case for this, I don't think we
>> > > want it.
>> 
>> My case was simply "HMP has it, QMP doesn't". I wasn't aware that QMP
>> must be as stateless as possible but HMP can retain state.
>> 
>> Now, is there any command that actually is impacted or makes use of the
>> current monitor CPU? I've searched a bit in qapi-schema.json and
>> hmp-commands.hx and haven't found any (although this does not
>> mean necessarily that no command is making use of it). Supposing
>> that no command makes good use of it, perhaps it's a good exercise
>> to evaluate if both qmp_cpu and hmp_cpu should be deprecated.
>
> I don't think there should be anything that uses it in qmp, there are in
> hmp - for example 'info registers' or 'info lapic' use the current cpu
> in HMP.

Search for mon_get_cpu().

Any use in QMP would be a bug.

  reply	other threads:[~2017-12-18  9:13 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-13 18:15 [Qemu-devel] [PATCH v1 0/2] QMP: implementing qmp_cpu Daniel Henrique Barboza
2017-12-13 18:15 ` [Qemu-devel] [PATCH v1 1/2] qmp.c: (re)implement qmp_cpu Daniel Henrique Barboza
2017-12-14  2:18   ` Eric Blake
2017-12-14 15:21     ` Markus Armbruster
2017-12-14 19:46       ` Daniel Henrique Barboza
2017-12-15 13:56         ` Markus Armbruster
2017-12-15 18:11           ` Paolo Bonzini
2017-12-18  9:20             ` Markus Armbruster
2017-12-15 18:59         ` Dr. David Alan Gilbert
2017-12-18  9:12           ` Markus Armbruster [this message]
2017-12-13 18:15 ` [Qemu-devel] [PATCH v1 2/2] cpus.c: change qmp_query_cpus 'value->current' logic Daniel Henrique Barboza
2017-12-14 19:50   ` Daniel Henrique Barboza

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=87wp1kh011.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=danielhb@linux.vnet.ibm.com \
    --cc=dgilbert@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.