Re: [PATCH v3 04/16] virtio/console: verify device has config space
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2015-01-20 11:10:15
Also in:
lkml
On Tue, Jan 20, 2015 at 04:10:40PM +0530, Amit Shah wrote:
On (Wed) 14 Jan 2015 [19:27:35], Michael S. Tsirkin wrote:quoted
Some devices might not implement config space access (e.g. remoteproc used not to - before 3.9). virtio/console needs config space access so make it fail gracefully if not there.Do we know any such devices? Wondering what prompted this patch. If it's just theoretical, I'd rather let it be like this, and pull this in when there's a device that doesn't have config space.
Yes, with virtio 1.0 config space can be in a separate BAR now. If that's not enabled by BIOS (e.g. out of space), we won't have config space.
Also, just the console functionality (i.e. F_MULTIPORT is unset) is available w/o config space access.
Supporting this by gracefully disabling F_MULTIPORT would require getting this info from driver before features are finalized. Alternatively, check F_MULTIPORT and only fail if set? Let me know, I'll cook up a patch.
In fact, getting this patch in would mean remoteproc wouldn't even run in its pre-config days...
It seems to have get callback unconditionally now - or did I miss something?
quoted
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index de03df9..26afb56 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c@@ -1986,6 +1986,12 @@ static int virtcons_probe(struct virtio_device *vdev) bool multiport; bool early = early_put_chars != NULL; + if (!vdev->config->get) { + dev_err(&vdev->dev, "%s failure: config access disabled\n", + __func__); + return -EINVAL; + } +Amit