virtio: use u32, not bitmap for features
It seemed like a good idea to use bitmap for features in struct virtio_device, but it's actually a pain, and seems to become even more painful when we get more than 32 feature bits. Just change it to a u32 for now. Based on patch by Rusty. Suggested-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
@@ -92,7 +92,7 @@ static inline bool __virtio_test_bit(const struct virtio_device *vdev,
|
||||
else
|
||||
BUG_ON(fbit >= 32);
|
||||
|
||||
return test_bit(fbit, vdev->features);
|
||||
return vdev->features & BIT(fbit);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -109,7 +109,7 @@ static inline void __virtio_set_bit(struct virtio_device *vdev,
|
||||
else
|
||||
BUG_ON(fbit >= 32);
|
||||
|
||||
set_bit(fbit, vdev->features);
|
||||
vdev->features |= BIT(fbit);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +126,7 @@ static inline void __virtio_clear_bit(struct virtio_device *vdev,
|
||||
else
|
||||
BUG_ON(fbit >= 32);
|
||||
|
||||
clear_bit(fbit, vdev->features);
|
||||
vdev->features &= ~BIT(fbit);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user