Michael S. Tsirkin
2014-Nov-25 16:43 UTC
[PATCH v4 25/42] vhost: add memory access wrappers
Signed-off-by: Michael S. Tsirkin <mst at redhat.com> --- drivers/vhost/vhost.h | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index 3eda654..b9032e8 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -174,6 +174,37 @@ enum { static inline int vhost_has_feature(struct vhost_virtqueue *vq, int bit) { - return vq->acked_features & (1 << bit); + return vq->acked_features & (1ULL << bit); +} + +/* Memory accessors */ +static inline u16 vhost16_to_cpu(struct vhost_virtqueue *vq, __virtio16 val) +{ + return __virtio16_to_cpu(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); +} + +static inline __virtio16 cpu_to_vhost16(struct vhost_virtqueue *vq, u16 val) +{ + return __cpu_to_virtio16(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); +} + +static inline u32 vhost32_to_cpu(struct vhost_virtqueue *vq, __virtio32 val) +{ + return __virtio32_to_cpu(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); +} + +static inline __virtio32 cpu_to_vhost32(struct vhost_virtqueue *vq, u32 val) +{ + return __cpu_to_virtio32(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); +} + +static inline u64 vhost64_to_cpu(struct vhost_virtqueue *vq, __virtio64 val) +{ + return __virtio64_to_cpu(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); +} + +static inline __virtio64 cpu_to_vhost64(struct vhost_virtqueue *vq, u64 val) +{ + return __cpu_to_virtio64(vhost_has_feature(vq, VIRTIO_F_VERSION_1), val); } #endif -- MST
On Tue, 25 Nov 2014 18:43:10 +0200 "Michael S. Tsirkin" <mst at redhat.com> wrote: "These wrappers are needed to handle virtio endianness conversions." ?> Signed-off-by: Michael S. Tsirkin <mst at redhat.com> > --- > drivers/vhost/vhost.h | 33 ++++++++++++++++++++++++++++++++- > 1 file changed, 32 insertions(+), 1 deletion(-) > > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > index 3eda654..b9032e8 100644 > --- a/drivers/vhost/vhost.h > +++ b/drivers/vhost/vhost.h > @@ -174,6 +174,37 @@ enum { > > static inline int vhost_has_feature(struct vhost_virtqueue *vq, int bit) > { > - return vq->acked_features & (1 << bit); > + return vq->acked_features & (1ULL << bit);Should this hunk go into patch 28?> +}
Michael S. Tsirkin
2014-Nov-26 14:05 UTC
[PATCH v4 25/42] vhost: add memory access wrappers
On Wed, Nov 26, 2014 at 02:54:38PM +0100, Cornelia Huck wrote:> On Tue, 25 Nov 2014 18:43:10 +0200 > "Michael S. Tsirkin" <mst at redhat.com> wrote: > > "These wrappers are needed to handle virtio endianness conversions." > > ?yes, it's same as virtio ones. I'll add this text, thanks.> > Signed-off-by: Michael S. Tsirkin <mst at redhat.com> > > --- > > drivers/vhost/vhost.h | 33 ++++++++++++++++++++++++++++++++- > > 1 file changed, 32 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > > index 3eda654..b9032e8 100644 > > --- a/drivers/vhost/vhost.h > > +++ b/drivers/vhost/vhost.h > > @@ -174,6 +174,37 @@ enum { > > > > static inline int vhost_has_feature(struct vhost_virtqueue *vq, int bit) > > { > > - return vq->acked_features & (1 << bit); > > + return vq->acked_features & (1ULL << bit); > > Should this hunk go into patch 28?Well, this is needed here since 1 << 32 is not legal C. I can move it - this means patch 28 will have to move earlier in series though.> > +}