All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: Cornelia Huck <cohuck@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Xie Yongji <xieyongji@bytedance.com>,
	virtualization@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, markver@us.ibm.com,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	linux-s390@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [RFC PATCH 1/1] virtio: write back features before verify
Date: Tue, 5 Oct 2021 03:53:17 -0400	[thread overview]
Message-ID: <20211005035014-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20211005092539.145c9cc4.pasic@linux.ibm.com>

On Tue, Oct 05, 2021 at 09:25:39AM +0200, Halil Pasic wrote:
> On Mon, 4 Oct 2021 09:11:04 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > > >> static inline bool virtio_access_is_big_endian(VirtIODevice *vdev)
> > > >> {
> > > >> #if defined(LEGACY_VIRTIO_IS_BIENDIAN)
> > > >>     return virtio_is_big_endian(vdev);
> > > >> #elif defined(TARGET_WORDS_BIGENDIAN)
> > > >>     if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
> > > >>         /* Devices conforming to VIRTIO 1.0 or later are always LE. */
> > > >>         return false;
> > > >>     }
> > > >>     return true;
> > > >> #else
> > > >>     return false;
> > > >> #endif
> > > >> }
> > > >>   
> > > >
> > > > ok so that's a QEMU bug. Any virtio 1.0 and up
> > > > compatible device must use LE.
> > > > It can also present a legacy config space where the
> > > > endian depends on the guest.  
> > > 
> > > So, how is the virtio core supposed to determine this? A
> > > transport-specific callback?  
> > 
> > I'd say a field in VirtIODevice is easiest.
> 
> Wouldn't a call from transport code into virtio core
> be more handy? What I have in mind is stuff like vhost-user and vdpa. My
> understanding is, that for vhost setups where the config is outside qemu,
> we probably need a new  command that tells the vhost backend what
> endiannes to use for config. I don't think we can use
> VHOST_USER_SET_VRING_ENDIAN because  that one is on a virtqueue basis
> according to the doc. So for vhost-user and similar we would fire that
> command and probably also set the filed, while for devices for which
> control plane is handled by QEMU we would just set the field.
> 
> Does that sound about right?

I'm fine either way, but when would you invoke this?
With my idea backends can check the field when get_config
is invoked.

As for using this in VHOST, can we maybe re-use SET_FEATURES?

Kind of hacky but nice in that it will actually make existing backends
work...

-- 
MST


WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: linux-s390@vger.kernel.org, markver@us.ibm.com,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-devel@nongnu.org, Cornelia Huck <cohuck@redhat.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	Xie Yongji <xieyongji@bytedance.com>
Subject: Re: [RFC PATCH 1/1] virtio: write back features before verify
Date: Tue, 5 Oct 2021 03:53:17 -0400	[thread overview]
Message-ID: <20211005035014-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20211005092539.145c9cc4.pasic@linux.ibm.com>

On Tue, Oct 05, 2021 at 09:25:39AM +0200, Halil Pasic wrote:
> On Mon, 4 Oct 2021 09:11:04 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > > >> static inline bool virtio_access_is_big_endian(VirtIODevice *vdev)
> > > >> {
> > > >> #if defined(LEGACY_VIRTIO_IS_BIENDIAN)
> > > >>     return virtio_is_big_endian(vdev);
> > > >> #elif defined(TARGET_WORDS_BIGENDIAN)
> > > >>     if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
> > > >>         /* Devices conforming to VIRTIO 1.0 or later are always LE. */
> > > >>         return false;
> > > >>     }
> > > >>     return true;
> > > >> #else
> > > >>     return false;
> > > >> #endif
> > > >> }
> > > >>   
> > > >
> > > > ok so that's a QEMU bug. Any virtio 1.0 and up
> > > > compatible device must use LE.
> > > > It can also present a legacy config space where the
> > > > endian depends on the guest.  
> > > 
> > > So, how is the virtio core supposed to determine this? A
> > > transport-specific callback?  
> > 
> > I'd say a field in VirtIODevice is easiest.
> 
> Wouldn't a call from transport code into virtio core
> be more handy? What I have in mind is stuff like vhost-user and vdpa. My
> understanding is, that for vhost setups where the config is outside qemu,
> we probably need a new  command that tells the vhost backend what
> endiannes to use for config. I don't think we can use
> VHOST_USER_SET_VRING_ENDIAN because  that one is on a virtqueue basis
> according to the doc. So for vhost-user and similar we would fire that
> command and probably also set the filed, while for devices for which
> control plane is handled by QEMU we would just set the field.
> 
> Does that sound about right?

I'm fine either way, but when would you invoke this?
With my idea backends can check the field when get_config
is invoked.

As for using this in VHOST, can we maybe re-use SET_FEATURES?

Kind of hacky but nice in that it will actually make existing backends
work...

-- 
MST

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: linux-s390@vger.kernel.org, markver@us.ibm.com,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-devel@nongnu.org, Jason Wang <jasowang@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	Xie Yongji <xieyongji@bytedance.com>
Subject: Re: [RFC PATCH 1/1] virtio: write back features before verify
Date: Tue, 5 Oct 2021 03:53:17 -0400	[thread overview]
Message-ID: <20211005035014-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20211005092539.145c9cc4.pasic@linux.ibm.com>

On Tue, Oct 05, 2021 at 09:25:39AM +0200, Halil Pasic wrote:
> On Mon, 4 Oct 2021 09:11:04 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > > >> static inline bool virtio_access_is_big_endian(VirtIODevice *vdev)
> > > >> {
> > > >> #if defined(LEGACY_VIRTIO_IS_BIENDIAN)
> > > >>     return virtio_is_big_endian(vdev);
> > > >> #elif defined(TARGET_WORDS_BIGENDIAN)
> > > >>     if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
> > > >>         /* Devices conforming to VIRTIO 1.0 or later are always LE. */
> > > >>         return false;
> > > >>     }
> > > >>     return true;
> > > >> #else
> > > >>     return false;
> > > >> #endif
> > > >> }
> > > >>   
> > > >
> > > > ok so that's a QEMU bug. Any virtio 1.0 and up
> > > > compatible device must use LE.
> > > > It can also present a legacy config space where the
> > > > endian depends on the guest.  
> > > 
> > > So, how is the virtio core supposed to determine this? A
> > > transport-specific callback?  
> > 
> > I'd say a field in VirtIODevice is easiest.
> 
> Wouldn't a call from transport code into virtio core
> be more handy? What I have in mind is stuff like vhost-user and vdpa. My
> understanding is, that for vhost setups where the config is outside qemu,
> we probably need a new  command that tells the vhost backend what
> endiannes to use for config. I don't think we can use
> VHOST_USER_SET_VRING_ENDIAN because  that one is on a virtqueue basis
> according to the doc. So for vhost-user and similar we would fire that
> command and probably also set the filed, while for devices for which
> control plane is handled by QEMU we would just set the field.
> 
> Does that sound about right?

I'm fine either way, but when would you invoke this?
With my idea backends can check the field when get_config
is invoked.

As for using this in VHOST, can we maybe re-use SET_FEATURES?

Kind of hacky but nice in that it will actually make existing backends
work...

-- 
MST



  reply	other threads:[~2021-10-05  7:53 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-30  1:20 [RFC PATCH 1/1] virtio: write back features before verify Halil Pasic
2021-09-30  1:20 ` Halil Pasic
2021-09-30  8:04 ` Christian Borntraeger
2021-09-30  8:04   ` Christian Borntraeger
2021-09-30  9:28 ` Cornelia Huck
2021-09-30  9:28   ` Cornelia Huck
2021-09-30 11:03   ` Halil Pasic
2021-09-30 11:03     ` Halil Pasic
2021-09-30 11:31     ` Cornelia Huck
2021-09-30 11:31       ` Cornelia Huck
2021-10-01 14:22       ` Halil Pasic
2021-10-01 14:22         ` Halil Pasic
2021-10-01 15:18         ` Cornelia Huck
2021-10-01 15:18           ` Cornelia Huck
2021-10-02 18:13           ` Michael S. Tsirkin
2021-10-02 18:13             ` Michael S. Tsirkin
2021-10-04  2:23             ` Halil Pasic
2021-10-04  2:23               ` Halil Pasic
2021-10-04  9:07               ` Michael S. Tsirkin
2021-10-04  9:07                 ` Michael S. Tsirkin
2021-10-04  9:07                 ` Michael S. Tsirkin
2021-10-05 10:06                 ` Cornelia Huck
2021-10-05 10:06                   ` Cornelia Huck
2021-10-05 10:06                   ` Cornelia Huck
2021-10-05 10:43                 ` Halil Pasic
2021-10-05 10:43                   ` Halil Pasic
2021-10-05 10:43                   ` Halil Pasic
2021-10-05 11:11                   ` Michael S. Tsirkin
2021-10-05 11:11                     ` Michael S. Tsirkin
2021-10-05 11:11                     ` Michael S. Tsirkin
2021-10-05 11:13                   ` Cornelia Huck
2021-10-05 11:13                     ` Cornelia Huck
2021-10-05 11:13                     ` Cornelia Huck
2021-10-05 11:20                     ` Michael S. Tsirkin
2021-10-05 11:20                       ` Michael S. Tsirkin
2021-10-05 11:20                       ` Michael S. Tsirkin
2021-10-05 11:59                     ` Halil Pasic
2021-10-05 11:59                       ` Halil Pasic
2021-10-05 11:59                       ` Halil Pasic
2021-10-05 15:25                       ` Cornelia Huck
2021-10-05 15:25                         ` Cornelia Huck
2021-10-05 15:25                         ` Cornelia Huck
2021-10-04  7:01             ` Cornelia Huck
2021-10-04  7:01               ` Cornelia Huck
2021-10-04  9:25               ` Halil Pasic
2021-10-04  9:25                 ` Halil Pasic
2021-10-04  9:51                 ` Cornelia Huck
2021-10-04  9:51                   ` Cornelia Huck
2021-10-02 12:09       ` Michael S. Tsirkin
2021-10-02 12:09         ` Michael S. Tsirkin
2021-09-30 11:12 ` Michael S. Tsirkin
2021-09-30 11:12   ` Michael S. Tsirkin
2021-09-30 11:36   ` Cornelia Huck
2021-09-30 11:36     ` Cornelia Huck
2021-10-02 18:20     ` Michael S. Tsirkin
2021-10-02 18:20       ` Michael S. Tsirkin
2021-10-03  5:00       ` Halil Pasic
2021-10-03  5:00         ` Halil Pasic
2021-10-03  6:42         ` Michael S. Tsirkin
2021-10-03  6:42           ` Michael S. Tsirkin
2021-10-03  7:26           ` Michael S. Tsirkin
2021-10-03  7:26             ` Michael S. Tsirkin
2021-10-04 12:01             ` Cornelia Huck
2021-10-04 12:01               ` [virtio-dev] " Cornelia Huck
2021-10-04 12:01               ` Cornelia Huck
2021-10-04 12:54               ` Michael S. Tsirkin
2021-10-04 12:54                 ` Michael S. Tsirkin
2021-10-04 14:27                 ` Cornelia Huck
2021-10-04 14:27                   ` [virtio-dev] " Cornelia Huck
2021-10-04 14:27                   ` Cornelia Huck
2021-10-04 15:05                   ` Michael S. Tsirkin
2021-10-04 15:05                     ` [virtio-dev] " Michael S. Tsirkin
2021-10-04 15:05                     ` Michael S. Tsirkin
2021-10-04 15:45                     ` [virtio-dev] " Cornelia Huck
2021-10-04 15:45                       ` Cornelia Huck
2021-10-04 15:45                       ` Cornelia Huck
2021-10-04 20:01                       ` Michael S. Tsirkin
2021-10-04 20:01                         ` Michael S. Tsirkin
2021-10-05  7:38                         ` Cornelia Huck
2021-10-05  7:38                           ` Cornelia Huck
2021-10-05  7:38                           ` Cornelia Huck
2021-10-05 11:17                         ` Halil Pasic
2021-10-05 11:17                           ` Halil Pasic
2021-10-05 11:22                           ` Michael S. Tsirkin
2021-10-05 11:22                             ` Michael S. Tsirkin
2021-10-05 15:20                             ` Cornelia Huck
2021-10-05 15:20                               ` Cornelia Huck
2021-10-05 15:20                               ` Cornelia Huck
2021-10-05 15:20                               ` Cornelia Huck
2021-10-01  7:21   ` Halil Pasic
2021-10-01  7:21     ` Halil Pasic
2021-10-02 10:21     ` Michael S. Tsirkin
2021-10-02 10:21       ` Michael S. Tsirkin
2021-10-04 12:19       ` Cornelia Huck
2021-10-04 12:19         ` Cornelia Huck
2021-10-04 12:19         ` Cornelia Huck
2021-10-04 13:11         ` Michael S. Tsirkin
2021-10-04 13:11           ` Michael S. Tsirkin
2021-10-04 13:11           ` Michael S. Tsirkin
2021-10-04 14:33           ` Cornelia Huck
2021-10-04 14:33             ` Cornelia Huck
2021-10-04 14:33             ` Cornelia Huck
2021-10-04 15:07             ` Michael S. Tsirkin
2021-10-04 15:07               ` Michael S. Tsirkin
2021-10-04 15:07               ` Michael S. Tsirkin
2021-10-04 15:50               ` Cornelia Huck
2021-10-04 15:50                 ` Cornelia Huck
2021-10-04 15:50                 ` Cornelia Huck
2021-10-04 19:17                 ` Michael S. Tsirkin
2021-10-04 19:17                   ` Michael S. Tsirkin
2021-10-04 19:17                   ` Michael S. Tsirkin
2021-10-06 10:13                   ` Cornelia Huck
2021-10-06 10:13                     ` Cornelia Huck
2021-10-06 10:13                     ` Cornelia Huck
2021-10-06 12:15                     ` Michael S. Tsirkin
2021-10-06 12:15                       ` Michael S. Tsirkin
2021-10-06 12:15                       ` Michael S. Tsirkin
2021-10-05  7:25           ` Halil Pasic
2021-10-05  7:25             ` Halil Pasic
2021-10-05  7:25             ` Halil Pasic
2021-10-05  7:53             ` Michael S. Tsirkin [this message]
2021-10-05  7:53               ` Michael S. Tsirkin
2021-10-05  7:53               ` Michael S. Tsirkin
2021-10-05 10:46               ` Halil Pasic
2021-10-05 10:46                 ` Halil Pasic
2021-10-05 10:46                 ` Halil Pasic
2021-10-05 11:11                 ` Michael S. Tsirkin
2021-10-05 11:11                   ` Michael S. Tsirkin
2021-10-05 11:11                   ` Michael S. Tsirkin
2021-10-01 14:34 ` Christian Borntraeger
2021-10-01 14:34   ` Christian Borntraeger

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=20211005035014-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=markver@us.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=xieyongji@bytedance.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 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.