On Thu, Mar 30, 2017 at 11:06:27AM +0200, Cornelia Huck wrote: > On Wed, 29 Mar 2017 20:14:44 +0300 > "Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote: > > > Some drivers can't support all features in all configurations. At the > > moment we blindly set FEATURES_OK and later FAILED. Support this better > > by adding a callback drivers can use to do some early checks. > > Looks reasonable. Do we need to document that the driver must not do > anything beyond dealing with features and reading the config space that > early? It's up to the driver - we probably should document that on failure neither probe nor remove will be called. On success we proceed to probe. > > > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > > --- > > drivers/virtio/virtio.c | 6 ++++++ > > include/linux/virtio.h | 1 + > > 2 files changed, 7 insertions(+) > > > > diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c > > index 400d70b..48230a5 100644 > > --- a/drivers/virtio/virtio.c > > +++ b/drivers/virtio/virtio.c > > @@ -232,6 +232,12 @@ static int virtio_dev_probe(struct device *_d) > > if (device_features & (1ULL << i)) > > __virtio_set_bit(dev, i); > > > > + if (drv->validate) { > > + err = drv->validate(dev); > > + if (err) > > + goto err; > > + } > > + > > err = virtio_finalize_features(dev); > > if (err) > > goto err; > > diff --git a/include/linux/virtio.h b/include/linux/virtio.h > > index 193fea9..ed04753 100644 > > --- a/include/linux/virtio.h > > +++ b/include/linux/virtio.h > > @@ -176,6 +176,7 @@ struct virtio_driver { > > unsigned int feature_table_size; > > const unsigned int *feature_table_legacy; > > unsigned int feature_table_size_legacy; > > + int (*validate)(struct virtio_device *dev); > > int (*probe)(struct virtio_device *dev); > > void (*scan)(struct virtio_device *dev); > > void (*remove)(struct virtio_device *dev); > > Would be good to add some doc; but other members are undocumented here > already... True. Patches welcome. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization