On 11/01/2016 17:13, Greg Kurz wrote:
> If target is bi-endian (ppc64, arm), the virtio_legacy_is_cross_endian()
> indeed returns the runtime state of the virtio device. However, it returns
> false unconditionally in the general case. This sounds a bit strange
> given the name of the function.
> 
> This helper is only useful for vhost actually, where indeed non bi-endian
> targets don't have to deal with cross-endian issues.
> 
> This patch moves the helper to vhost.c and gives it a more appropriate name.
> 
> Signed-off-by: Greg Kurz <gk...@linux.vnet.ibm.com>
> Reviewed-by: Cornelia Huck <cornelia.h...@de.ibm.com>
> ---
>  hw/virtio/vhost.c                 |   17 +++++++++++++++--
>  include/hw/virtio/virtio-access.h |   13 -------------
>  2 files changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index de29968a7945..2e1e792d599e 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -748,6 +748,19 @@ static void vhost_log_stop(MemoryListener *listener,
>      /* FIXME: implement */
>  }
>  
> +static inline bool vhost_needs_vring_endian(VirtIODevice *vdev)
> +{
> +#ifdef TARGET_IS_BIENDIAN
> +#ifdef HOST_WORDS_BIGENDIAN
> +    return !virtio_is_big_endian(vdev);
> +#else
> +    return virtio_is_big_endian(vdev);
> +#endif
> +#else
> +    return false;
> +#endif
> +}
> +
>  static int vhost_virtqueue_set_vring_endian_legacy(struct vhost_dev *dev,
>                                                     bool is_big_endian,
>                                                     int vhost_vq_index)
> @@ -799,7 +812,7 @@ static int vhost_virtqueue_start(struct vhost_dev *dev,
>      }
>  
>      if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) &&
> -        virtio_legacy_is_cross_endian(vdev)) {
> +        vhost_needs_vring_endian(vdev)) {
>          r = vhost_virtqueue_set_vring_endian_legacy(dev,
>                                                      
> virtio_is_big_endian(vdev),
>                                                      vhost_vq_index);
> @@ -896,7 +909,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev,
>       * native as legacy devices expect so by default.
>       */
>      if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) &&
> -        virtio_legacy_is_cross_endian(vdev)) {
> +        vhost_needs_vring_endian(vdev)) {
>          r = vhost_virtqueue_set_vring_endian_legacy(dev,
>                                                      
> !virtio_is_big_endian(vdev),
>                                                      vhost_vq_index);
> diff --git a/include/hw/virtio/virtio-access.h 
> b/include/hw/virtio/virtio-access.h
> index a01fff2e51d7..f1f12afe9089 100644
> --- a/include/hw/virtio/virtio-access.h
> +++ b/include/hw/virtio/virtio-access.h
> @@ -32,19 +32,6 @@ static inline bool 
> virtio_access_is_big_endian(VirtIODevice *vdev)
>  #endif
>  }
>  
> -static inline bool virtio_legacy_is_cross_endian(VirtIODevice *vdev)
> -{
> -#ifdef TARGET_IS_BIENDIAN
> -#ifdef HOST_WORDS_BIGENDIAN
> -    return !virtio_is_big_endian(vdev);
> -#else
> -    return virtio_is_big_endian(vdev);
> -#endif
> -#else
> -    return false;
> -#endif
> -}
> -
>  static inline uint16_t virtio_lduw_phys(VirtIODevice *vdev, hwaddr pa)
>  {
>      if (virtio_access_is_big_endian(vdev)) {
> 
> 
Reviewed-by: Laurent Vivier <lviv...@redhat.com>

Reply via email to