Rusty Russell
c45a6816c1
virtio: explicit advertisement of driver features
...
A recent proposed feature addition to the virtio block driver revealed
some flaws in the API: in particular, we assume that feature
negotiation is complete once a driver's probe function returns.
There is nothing in the API to require this, however, and even I
didn't notice when it was violated.
So instead, we require the driver to specify what features it supports
in a table, we can then move the feature negotiation into the virtio
core. The intersection of device and driver features are presented in
a new 'features' bitmap in the struct virtio_device.
Note that this highlights the difference between Linux unsigned-long
bitmaps where each unsigned long is in native endian, and a
straight-forward little-endian array of bytes.
Drivers can still remove feature bits in their probe routine if they
really have to.
API changes:
- dev->config->feature() no longer gets and acks a feature.
- drivers should advertise their features in the 'feature_table' field
- use virtio_has_feature() for extra sanity when checking feature bits
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2008-05-02 21:50:50 +10:00
..
2008-04-30 08:29:54 -07:00
2008-04-29 13:46:50 -07:00
2008-05-01 18:59:11 +01:00
2008-04-30 08:29:33 -07:00
2008-04-29 08:06:27 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:00 -07:00
2008-04-30 08:29:50 -07:00
2008-04-29 08:06:04 -07:00
2008-04-29 09:50:34 +02:00
2008-04-29 08:11:16 -07:00
2008-04-29 12:36:54 -07:00
2008-04-29 08:06:01 -07:00
2008-04-29 13:22:56 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:09 -07:00
2008-04-29 08:06:10 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:05:59 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:42:49 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:06 -07:00
2008-04-30 08:29:52 -07:00
2008-04-29 08:05:59 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:53 -07:00
2008-04-29 08:06:09 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 16:52:49 -07:00
2008-04-30 08:29:48 -07:00
2008-04-29 08:06:11 -07:00
2008-04-29 08:06:11 -07:00
2008-04-29 08:06:26 -07:00
2008-04-29 08:06:16 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:00 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:45 -07:00
2008-04-29 08:05:58 -07:00
2008-04-30 08:29:53 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 23:11:38 +02:00
2008-04-29 23:11:40 +02:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:25 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:03 -07:00
2008-04-29 08:06:02 -07:00
2008-04-30 16:52:48 -07:00
2008-04-29 08:06:13 -07:00
2008-04-29 08:06:15 -07:00
2008-04-29 08:06:15 -07:00
2008-04-29 03:22:15 -04:00
2008-04-30 08:29:54 -07:00
2008-05-01 08:03:58 -07:00
2008-05-02 21:50:44 +10:00
2008-04-29 08:06:29 -07:00
2008-04-30 08:29:53 -07:00
2008-04-29 08:06:17 -07:00
2008-04-29 08:06:16 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 16:52:58 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 17:47:34 -04:00
2008-04-30 08:29:54 -07:00
2008-04-29 15:57:53 +10:00
2008-05-01 08:03:58 -07:00
2008-04-29 08:06:01 -07:00
2008-04-29 08:06:10 -07:00
2008-04-29 08:06:12 -07:00
2008-04-29 08:06:17 -07:00
2008-04-29 08:06:17 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 23:11:39 +02:00
2008-05-01 21:14:59 +10:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:12 -07:00
2008-04-29 09:11:12 -07:00
2008-04-29 08:06:24 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:13 -07:00
2008-04-30 08:29:54 -07:00
2008-05-01 08:04:01 -07:00
2008-04-29 10:17:59 -07:00
2008-04-29 08:06:04 -07:00
2008-04-29 08:06:02 -07:00
2008-04-29 08:06:02 -07:00
2008-04-30 08:29:49 -07:00
2008-04-30 08:29:49 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 11:52:52 -07:00
2008-04-30 08:29:53 -07:00
2008-04-29 08:06:20 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:50 -07:00
2008-04-30 08:29:38 -07:00
2008-05-01 08:04:01 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:51 -07:00
2008-04-29 08:06:10 -07:00
2008-04-29 08:05:59 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:48 -07:00
2008-04-29 13:22:56 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:30 -07:00
2008-04-30 08:29:34 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:05 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:06 -07:00
2008-04-29 08:06:23 -07:00
2008-05-01 08:03:59 -07:00
2008-04-29 08:06:27 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 02:48:01 -04:00
2008-04-30 08:29:37 -07:00
2008-04-30 08:29:53 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:47 -07:00
2008-04-30 08:29:47 -07:00
2008-05-02 21:50:45 +10:00
2008-05-02 21:50:50 +10:00
2008-05-02 21:50:47 +10:00
2008-05-02 21:50:50 +10:00
2008-04-30 08:29:49 -07:00
2008-04-29 08:06:06 -07:00