On Mon, Feb 19, 2024 at 11:32 PM Markus Armbruster <arm...@redhat.com>
wrote:

> Yong Huang <yong.hu...@smartx.com> writes:
>
> > On Tue, Feb 13, 2024 at 6:26 PM Michael S. Tsirkin <m...@redhat.com>
> wrote:
> >
> >> On Fri, Feb 02, 2024 at 10:32:15PM +0800, Hyman Huang wrote:
> >> > x-query-virtio-status returns several sets of virtio feature and
> >> > status flags.  It goes back to v7.2.0.
> >> >
> >> > In the initial commit 90c066cd682 (qmp: add QMP command
> >> > x-query-virtio-status), we returned them as numbers, using virtio's
> >> > well-known binary encoding.
> >> >
> >> > The next commit f3034ad71fc (qmp: decode feature & status bits in
> >> > virtio-status) replaced the numbers by objects.  The objects represent
> >> > bits QEMU knows symbolically, and any unknown bits numerically just
> like
> >> > before.
> >> >
> >> > Commit 8a8287981d1 (hmp: add virtio commands) the matching HMP command
> >> > "info virtio" (and a few more, which aren't relevant here).
> >> >
> >> > The symbolic representation uses lists of strings.  The string format
> is
> >> > undocumented.  The strings look like "WELL_KNOWN_SYMBOL: human
> readable
> >> > explanation".
> >> >
> >> > This symbolic representation is nice for humans.  Machines it can save
> >> > the trouble of decoding virtio's well-known binary encoding.
> >> >
> >> > However, we sometimes want to compare features and status bits without
> >> > caring for their exact meaning.  Say we want to verify the correctness
> >> > of the virtio negotiation between guest, QEMU, and OVS-DPDK.  We can
> use
> >> > QMP command x-query-virtio-status to retrieve vhost-user net device
> >> > features, and the "ovs-vsctl list interface" command to retrieve
> >> > interface features.  Without commit f3034ad71fc, we could then simply
> >> > compare the numbers.  With this commit, we first have to map from the
> >> > strings back to the numeric encoding.
> >> >
> >> > Revert the decoding for QMP, but keep it for HMP.
> >>
> >> Is there a way to maybe have both decoded and numerical one?
> >
> > What if the next patch went back to this implementation in the following
> > patch? All you need to do is add a matching xxx_bits entry for each
> feature
> > and status.
> >
> >
> https://patchew.org/QEMU/cover.1700319559.git.yong.hu...@smartx.com/3c7161a47b141af04b1f8272e8e24c5faa46ddb2.1700319559.git.yong.hu...@smartx.com/
> >
> >
> > E.g. I mostly use QMP even when I read it myself.
> >>
> >
> > Thus, it is recommended that both numerical and decoded types be kept for
> > QMP; this approach can be at odds with what was previously discussed.
> > What do you think about this, Markus?
>
> QMP is for machines.
>
> That said, I won't object to adding development & debugging aids meant
> for humans as long as
>
> 1. they're marked unstable, and
>
> 2. they either add only a modest amount of output, or the additional
>    output is off by default.
>
> What exactly is a "modest amount" depends on how machines use the
> command.  If they use it all the time, even going from 8KiB to 64KiB
> could be too much.  If they use it just once per guest, we can afford
> more waste.
>
> In this particular case, we could add an unstable member of type ['str']
> next to the int-valued bits.  For each set bit in the int, add a string
> to the list.  If QEMU knows the bit, use the well-known name.  I'd omit
> the common prefix, though: use "GUEST_ANNOUNCE" or "guest-announce"
> instead of "VIRTIO_NET_F_GUEST_ANNOUNCE".  If QEMU doesn't know the bit,
> you could use the bit's numeric value.
>
> Recommend a separate patch, to avoid delaying this series.
>
> Makes sense?
>
>
I agree,  and thanks for the comments.

Yong

-- 
Best regards

Reply via email to