We need to use bit 32 for virtio 1.0 Signed-off-by: Michael S. Tsirkin <mst at redhat.com> Reviewed-by: Jason Wang <jasowang at redhat.com> --- drivers/vhost/vhost.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index 3eda654..c624b09 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -106,7 +106,7 @@ struct vhost_virtqueue { /* Protected by virtqueue mutex. */ struct vhost_memory *memory; void *private_data; - unsigned acked_features; + u64 acked_features; /* Log write descriptors */ void __user *log_base; struct vhost_log *log; @@ -174,6 +174,6 @@ 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); } #endif -- MST
Hello. On 11/30/2014 6:11 PM, Michael S. Tsirkin wrote:> We need to use bit 32 for virtio 1.0> Signed-off-by: Michael S. Tsirkin <mst at redhat.com> > Reviewed-by: Jason Wang <jasowang at redhat.com> > --- > drivers/vhost/vhost.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-)> diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > index 3eda654..c624b09 100644 > --- a/drivers/vhost/vhost.h > +++ b/drivers/vhost/vhost.h > @@ -106,7 +106,7 @@ struct vhost_virtqueue { > /* Protected by virtqueue mutex. */ > struct vhost_memory *memory; > void *private_data; > - unsigned acked_features; > + u64 acked_features; > /* Log write descriptors */ > void __user *log_base; > struct vhost_log *log; > @@ -174,6 +174,6 @@ 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);Erm, wouldn't the high word be just dropped when returning *int*? I think you need !!(vq->acked_features & (1ULL << bit)). [...] WBR, Sergei
On Sun, 2014-11-30 at 18:44 +0300, Sergei Shtylyov wrote:> Hello. > > On 11/30/2014 6:11 PM, Michael S. Tsirkin wrote: > > > We need to use bit 32 for virtio 1.0 > > > Signed-off-by: Michael S. Tsirkin <mst at redhat.com> > > Reviewed-by: Jason Wang <jasowang at redhat.com> > > --- > > drivers/vhost/vhost.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > > index 3eda654..c624b09 100644 > > --- a/drivers/vhost/vhost.h > > +++ b/drivers/vhost/vhost.h > > @@ -106,7 +106,7 @@ struct vhost_virtqueue { > > /* Protected by virtqueue mutex. */ > > struct vhost_memory *memory; > > void *private_data; > > - unsigned acked_features; > > + u64 acked_features; > > /* Log write descriptors */ > > void __user *log_base; > > struct vhost_log *log; > > @@ -174,6 +174,6 @@ 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); > > Erm, wouldn't the high word be just dropped when returning *int*? I think > you need !!(vq->acked_features & (1ULL << bit)).Or change the return type to bool. Ben. -- Ben Hutchings The first rule of tautology club is the first rule of tautology club. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 811 bytes Desc: This is a digitally signed message part URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20141201/7a782ece/attachment.sig>