On Fri, Mar 15, 2024 at 3:51 PM Markus Armbruster <arm...@redhat.com> wrote:

> "Michael S. Tsirkin" <m...@redhat.com> writes:
>
> > On Wed, Mar 13, 2024 at 10:40:21AM +0100, Markus Armbruster wrote:
> >> I could be awkward for the use case described in PATCH 1's commit
> >> message:
> >>
> >>     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.
> >
> > So, consider how guest kernel presents features then. Do you happen to
> know?
> > It's actually a binary string:
> >
> > static ssize_t features_show(struct device *_d,
> >                              struct device_attribute *attr, char *buf)
> > {
> >         struct virtio_device *dev = dev_to_virtio(_d);
> >         unsigned int i;
> >         ssize_t len = 0;
> >
> >         /* We actually represent this as a bitstring, as it could be
> >          * arbitrary length in future. */
> >         for (i = 0; i < sizeof(dev->features)*8; i++)
> >                 len += sysfs_emit_at(buf, len, "%c",
> >                                __virtio_test_bit(dev, i) ? '1' : '0');
> >         len += sysfs_emit_at(buf, len, "\n");
> >         return len;
> > }
> > static DEVICE_ATTR_RO(features);
>
> I'm willing to accept any reasonably compact representation of the bits
> that is easy to use for the comparison use case.
>
> I strongly prefer integers as long as their width suffices.
>
> Since out integers are limited to 64 bits, and you want us to design for
> more, we need something else.
>
> I'm fine with array of integers, but you don't like it.
>
> We generally avoid encoding stuff in strings, but using strings for
> "overwide" integers isn't as bad as using them for structured data.  I
> guess I'd be okay with it.
>
> I'd use decimal simply to keep these "overwide" integers as close as
> possible to regular ones.
>
> If using base 2 enables string compare for the comparison use case,
> that's an argument for base 2.
>
> Hyman Huang, can you show us example output of "ovs-vsctl list
> interface"?
>
>
Here is the output of an active interface enable the dpdk feature:

# ovs-vsctl list interface port-testvm2pn8

_uuid:            xxxx
admin_state: up
name:             port-testvm2pn8
......
status:           {features="0x000000017060a782", mode=client,
num_of_vrings="4"......}


Yong


-- 
Best regards

Reply via email to