All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Greg Kurz <gkurz-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Cc: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>,
	"Michael S. Tsirkin"
	<mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Cornelia Huck
	<cornelia.huck-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [PATCH v5 6/8] virtio: add explicit big-endian support to memory accessors
Date: Thu, 23 Apr 2015 21:27:19 +0200	[thread overview]
Message-ID: <20150423212719.4b7f9507@thh440s> (raw)
In-Reply-To: <20150423152712.11795.29245.stgit-GiB8zCg7hOfDOqzlkpFKJg@public.gmane.org>

On Thu, 23 Apr 2015 17:29:06 +0200
Greg Kurz <gkurz-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> wrote:

> The current memory accessors logic is:
> - little endian if little_endian
> - native endian (i.e. no byteswap) if !little_endian
> 
> If we want to fully support cross-endian vhost, we also need to be
> able to convert to big endian.
> 
> Instead of changing the little_endian argument to some 3-value enum, this
> patch changes the logic to:
> - little endian if little_endian
> - big endian if !little_endian
> 
> The native endian case is handled by all users with a trivial helper. This
> patch doesn't change any functionality, nor it does add overhead.
> 
> Signed-off-by: Greg Kurz <gkurz-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
> ---
> 
> Changes since v4:
> - style fixes (I have chosen if ... else in most places to stay below
>   80 columns, with the notable exception of the vhost helper which gets
>   shorten in a later patch)
> 
>  drivers/net/macvtap.c            |    5 ++++-
>  drivers/net/tun.c                |    5 ++++-
>  drivers/vhost/vhost.h            |    2 +-
>  include/linux/virtio_byteorder.h |   24 ++++++++++++++----------
>  include/linux/virtio_config.h    |    5 ++++-
>  include/linux/vringh.h           |    2 +-
>  6 files changed, 28 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
> index a2f2958..6cf6b3e 100644
> --- a/drivers/net/macvtap.c
> +++ b/drivers/net/macvtap.c
> @@ -51,7 +51,10 @@ struct macvtap_queue {
>  
>  static inline bool macvtap_is_little_endian(struct macvtap_queue *q)
>  {
> -	return q->flags & MACVTAP_VNET_LE;
> +	if (q->flags & MACVTAP_VNET_LE)
> +		return true;
> +	else
> +		return virtio_legacy_is_little_endian();

simply:

	return (q->flags & MACVTAP_VNET_LE) ||
	       virtio_legacy_is_little_endian();

?

>  }
>  
>  static inline u16 macvtap16_to_cpu(struct macvtap_queue *q, __virtio16 val)
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 3c3d6c0..5b044d4 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -208,7 +208,10 @@ struct tun_struct {
>  
>  static inline bool tun_is_little_endian(struct tun_struct *tun)
>  {
> -	return tun->flags & TUN_VNET_LE;
> +	if (tun->flags & TUN_VNET_LE)
> +		return true;
> +	else
> +		return virtio_legacy_is_little_endian();

dito?

>  }
>  
>  static inline u16 tun16_to_cpu(struct tun_struct *tun, __virtio16 val)
> diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
> index 6a49960..954c657 100644
> --- a/drivers/vhost/vhost.h
> +++ b/drivers/vhost/vhost.h
> @@ -175,7 +175,7 @@ static inline bool vhost_has_feature(struct vhost_virtqueue *vq, int bit)
>  
>  static inline bool vhost_is_little_endian(struct vhost_virtqueue *vq)
>  {
> -	return vhost_has_feature(vq, VIRTIO_F_VERSION_1);
> +	return vhost_has_feature(vq, VIRTIO_F_VERSION_1) ? true : virtio_legacy_is_little_endian();
>  }

That line is way longer than 80 characters ... may I suggest to switch
at least here to:

	return vhost_has_feature(vq, VIRTIO_F_VERSION_1) ||
	       virtio_legacy_is_little_endian();

?

Apart from the cosmetics, the patch looks good to me.

 Thomas

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Huth <thuth@redhat.com>
To: Greg Kurz <gkurz@linux.vnet.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	linux-api@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, virtualization@lists.linux-foundation.org
Subject: Re: [PATCH v5 6/8] virtio: add explicit big-endian support to memory accessors
Date: Thu, 23 Apr 2015 21:27:19 +0200	[thread overview]
Message-ID: <20150423212719.4b7f9507@thh440s> (raw)
In-Reply-To: <20150423152712.11795.29245.stgit@bahia.local>

On Thu, 23 Apr 2015 17:29:06 +0200
Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:

> The current memory accessors logic is:
> - little endian if little_endian
> - native endian (i.e. no byteswap) if !little_endian
> 
> If we want to fully support cross-endian vhost, we also need to be
> able to convert to big endian.
> 
> Instead of changing the little_endian argument to some 3-value enum, this
> patch changes the logic to:
> - little endian if little_endian
> - big endian if !little_endian
> 
> The native endian case is handled by all users with a trivial helper. This
> patch doesn't change any functionality, nor it does add overhead.
> 
> Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
> ---
> 
> Changes since v4:
> - style fixes (I have chosen if ... else in most places to stay below
>   80 columns, with the notable exception of the vhost helper which gets
>   shorten in a later patch)
> 
>  drivers/net/macvtap.c            |    5 ++++-
>  drivers/net/tun.c                |    5 ++++-
>  drivers/vhost/vhost.h            |    2 +-
>  include/linux/virtio_byteorder.h |   24 ++++++++++++++----------
>  include/linux/virtio_config.h    |    5 ++++-
>  include/linux/vringh.h           |    2 +-
>  6 files changed, 28 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
> index a2f2958..6cf6b3e 100644
> --- a/drivers/net/macvtap.c
> +++ b/drivers/net/macvtap.c
> @@ -51,7 +51,10 @@ struct macvtap_queue {
>  
>  static inline bool macvtap_is_little_endian(struct macvtap_queue *q)
>  {
> -	return q->flags & MACVTAP_VNET_LE;
> +	if (q->flags & MACVTAP_VNET_LE)
> +		return true;
> +	else
> +		return virtio_legacy_is_little_endian();

simply:

	return (q->flags & MACVTAP_VNET_LE) ||
	       virtio_legacy_is_little_endian();

?

>  }
>  
>  static inline u16 macvtap16_to_cpu(struct macvtap_queue *q, __virtio16 val)
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 3c3d6c0..5b044d4 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -208,7 +208,10 @@ struct tun_struct {
>  
>  static inline bool tun_is_little_endian(struct tun_struct *tun)
>  {
> -	return tun->flags & TUN_VNET_LE;
> +	if (tun->flags & TUN_VNET_LE)
> +		return true;
> +	else
> +		return virtio_legacy_is_little_endian();

dito?

>  }
>  
>  static inline u16 tun16_to_cpu(struct tun_struct *tun, __virtio16 val)
> diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
> index 6a49960..954c657 100644
> --- a/drivers/vhost/vhost.h
> +++ b/drivers/vhost/vhost.h
> @@ -175,7 +175,7 @@ static inline bool vhost_has_feature(struct vhost_virtqueue *vq, int bit)
>  
>  static inline bool vhost_is_little_endian(struct vhost_virtqueue *vq)
>  {
> -	return vhost_has_feature(vq, VIRTIO_F_VERSION_1);
> +	return vhost_has_feature(vq, VIRTIO_F_VERSION_1) ? true : virtio_legacy_is_little_endian();
>  }

That line is way longer than 80 characters ... may I suggest to switch
at least here to:

	return vhost_has_feature(vq, VIRTIO_F_VERSION_1) ||
	       virtio_legacy_is_little_endian();

?

Apart from the cosmetics, the patch looks good to me.

 Thomas

  parent reply	other threads:[~2015-04-23 19:27 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-23 15:26 [PATCH v5 0/8] vhost: support for cross endian guests Greg Kurz
2015-04-23 15:26 ` Greg Kurz
2015-04-23 15:26 ` [PATCH v5 1/8] virtio: introduce virtio_is_little_endian() helper Greg Kurz
2015-04-23 15:26   ` Greg Kurz
2015-04-23 17:22   ` Thomas Huth
2015-04-23 17:22   ` Thomas Huth
2015-04-23 17:26     ` Thomas Huth
2015-04-23 17:26       ` Thomas Huth
2015-04-23 17:26     ` Thomas Huth
2015-04-23 18:52   ` Thomas Huth
2015-04-23 18:52   ` Thomas Huth
2015-04-23 15:26 ` [PATCH v5 2/8] tun: add tun_is_little_endian() helper Greg Kurz
2015-04-23 15:26   ` Greg Kurz
2015-04-23 18:57   ` Thomas Huth
2015-04-23 18:57   ` Thomas Huth
2015-04-23 15:26 ` [PATCH v5 3/8] macvtap: introduce macvtap_is_little_endian() helper Greg Kurz
2015-04-23 15:26   ` Greg Kurz
2015-04-23 18:59   ` Thomas Huth
2015-04-23 18:59   ` Thomas Huth
2015-04-23 15:26 ` [PATCH v5 4/8] vringh: introduce vringh_is_little_endian() helper Greg Kurz
2015-04-23 15:26   ` Greg Kurz
2015-04-23 19:00   ` Thomas Huth
2015-04-23 19:00   ` Thomas Huth
2015-04-23 15:27 ` [PATCH v5 5/8] vhost: introduce vhost_is_little_endian() helper Greg Kurz
2015-04-23 15:27   ` Greg Kurz
2015-04-23 19:05   ` Thomas Huth
     [not found]   ` <20150423152700.11795.9146.stgit-GiB8zCg7hOfDOqzlkpFKJg@public.gmane.org>
2015-04-23 19:05     ` Thomas Huth
2015-04-23 19:05       ` Thomas Huth
2015-04-23 15:29 ` [PATCH v5 6/8] virtio: add explicit big-endian support to memory accessors Greg Kurz
2015-04-23 15:29   ` Greg Kurz
2015-04-23 19:27   ` Thomas Huth
     [not found]   ` <20150423152712.11795.29245.stgit-GiB8zCg7hOfDOqzlkpFKJg@public.gmane.org>
2015-04-23 19:27     ` Thomas Huth [this message]
2015-04-23 19:27       ` Thomas Huth
2015-04-24  7:04       ` Cornelia Huck
2015-04-24  7:04         ` Cornelia Huck
2015-04-24  7:56         ` Greg Kurz
     [not found]         ` <20150424090421.123d6ff6.cornelia.huck-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2015-04-24  7:56           ` Greg Kurz
2015-04-24  7:56             ` Greg Kurz
2015-04-23 15:29 ` [PATCH v5 7/8] vhost: cross-endian support for legacy devices Greg Kurz
2015-04-23 15:29   ` Greg Kurz
2015-04-24  7:19   ` Cornelia Huck
2015-04-24  7:19     ` Cornelia Huck
2015-04-24  8:06     ` Greg Kurz
2015-04-24  8:06       ` Greg Kurz
2015-04-24  8:09       ` Cornelia Huck
2015-04-24  8:09         ` Cornelia Huck
2015-04-23 15:30 ` [PATCH v5 8/8] macvtap/tun: cross-endian support for little-endian hosts Greg Kurz
     [not found] ` <20150423152608.11795.4373.stgit-GiB8zCg7hOfDOqzlkpFKJg@public.gmane.org>
2015-04-23 15:30   ` Greg Kurz
2015-04-23 15:30     ` Greg Kurz

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=20150423212719.4b7f9507@thh440s \
    --to=thuth-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=cornelia.huck-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=gkurz-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
    --cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.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.