Re: [PATCH v7 28/46] vhost: make features 64 bit

Sergei Shtylyov
2014-11-30T15:44:39Z

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@redhat.com>
> Reviewed-by: Jason Wang <jasowang@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