virtio: Formally reserve bits 28-31 to be 'transport' features.
We assign feature bits as required, but it makes sense to reserve some for the particular transport, rather than the particular device. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@ -113,6 +113,11 @@ static int virtio_dev_probe(struct device *_d)
|
|||||||
set_bit(f, dev->features);
|
set_bit(f, dev->features);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Transport features are always preserved to pass to set_features. */
|
||||||
|
for (i = VIRTIO_TRANSPORT_F_START; i < VIRTIO_TRANSPORT_F_END; i++)
|
||||||
|
if (device_features & (1 << i))
|
||||||
|
set_bit(i, dev->features);
|
||||||
|
|
||||||
err = drv->probe(dev);
|
err = drv->probe(dev);
|
||||||
if (err)
|
if (err)
|
||||||
add_status(dev, VIRTIO_CONFIG_S_FAILED);
|
add_status(dev, VIRTIO_CONFIG_S_FAILED);
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
/* We've given up on this device. */
|
/* We've given up on this device. */
|
||||||
#define VIRTIO_CONFIG_S_FAILED 0x80
|
#define VIRTIO_CONFIG_S_FAILED 0x80
|
||||||
|
|
||||||
|
/* Some virtio feature bits (currently bits 28 through 31) are reserved for the
|
||||||
|
* transport being used (eg. virtio_ring), the rest are per-device feature
|
||||||
|
* bits. */
|
||||||
|
#define VIRTIO_TRANSPORT_F_START 28
|
||||||
|
#define VIRTIO_TRANSPORT_F_END 32
|
||||||
|
|
||||||
/* Do we get callbacks when the ring is completely used, even if we've
|
/* Do we get callbacks when the ring is completely used, even if we've
|
||||||
* suppressed them? */
|
* suppressed them? */
|
||||||
#define VIRTIO_F_NOTIFY_ON_EMPTY 24
|
#define VIRTIO_F_NOTIFY_ON_EMPTY 24
|
||||||
|
Reference in New Issue
Block a user