From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Sjur Brændeland" <sjurbren@gmail.com>
Cc: "Linus Walleij" <linus.walleij@linaro.org>,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
"Amit Shah" <amit.shah@redhat.com>,
"Sjur Brændeland" <sjur.brandeland@stericsson.com>
Subject: Re: [RFC 1/2] virtio_console: Add support for DMA memory allocation
Date: Wed, 5 Sep 2012 22:16:57 +0300 [thread overview]
Message-ID: <20120905191657.GA15868@redhat.com> (raw)
In-Reply-To: <CAJK669bhVfgnxuF6wVtdnzs2bgiJ2HzgwfWw4uZ=EqTdm43Jow@mail.gmail.com>
On Wed, Sep 05, 2012 at 08:15:36PM +0200, Sjur Brændeland wrote:
> Hi Michael.
>
> >> If the device then asks for VIRTIO_CONSOLE_F_DMA_MEM
> >> when DMA is not supported, virtio will do BUG_ON() from
> >> virtio_check_driver_offered_feature().
> >>
> >> Is this acceptable or should we add a check in virtcons_probe()
> >> and let the probing fail instead?
> >>
> >> E.g:
> >> /* Refuse to bind if F_DMA_MEM request cannot be met */
> >> if (!VIRTIO_CONSOLE_HAS_DMA &&
> >> (vdev->config->get_features(vdev) & (1 << VIRTIO_CONSOLE_F_DMA_MEM))){
> >> dev_err(&vdev->dev,
> >> "DMA_MEM requested, but arch does not support DMA\n");
> >> err = -EINVAL;
> >> goto fail;
> >> }
> >>
> >> Regards,
> >> Sjur
> >
> > Failing probe would be cleaner. But there is still a problem:
> > old driver will happily bind to that device and then
> > fail to work, right?
>
> Not just fail to work, the kernel will panic on the BUG_ON().
> Remoteproc gets the virtio configuration from firmware loaded
> from user space. So this type of problem might be triggered
> for other virtio drivers as well.
how?
>
> > virtio pci has revision id for this, but remoteproc doesn't
> > seem to have anything similar. Or did I miss it?
>
> No there are currently no sanity check of
> virtio type and feature bits in remoteproc.
> One option may be to add this...
you can not fix the past.
> > If not -
> > we probably need to use a different
> > device id, and not a feature bit.
>
> But if I create a new virtio console type, remoteproc
> could still call the existing virtio_console with random
> bad feature bits, causing kernel panic.
cirtio core checks device id - this should not happen.
> Even if we fix this particular problem, the general problem
> still exists: bogus virtio declarations in remoteproc's firmware
> may cause BUG_ON().
which BUG_ON exactly?
> (Note the fundamental difference
> between visualizations and remoteproc. For remoteproc
> the virtio configuration comes from binaries loaded from
> user space).
>
> So maybe we should look for a more generic solution, e.g.
> changing virtio probe functionality so that devices with
> bad feature bits will not trigger BUG_ON(), but rather refuse
> to bind the driver.
>
> Regards,
> Sjur
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Sjur Brændeland" <sjurbren@gmail.com>
Cc: "Rusty Russell" <rusty@rustcorp.com.au>,
"Ohad Ben-Cohen" <ohad@wizery.com>,
"Amit Shah" <amit.shah@redhat.com>,
linux-kernel@vger.kernel.org,
"Linus Walleij" <linus.walleij@linaro.org>,
virtualization@lists.linux-foundation.org,
"Sjur Brændeland" <sjur.brandeland@stericsson.com>
Subject: Re: [RFC 1/2] virtio_console: Add support for DMA memory allocation
Date: Wed, 5 Sep 2012 22:16:57 +0300 [thread overview]
Message-ID: <20120905191657.GA15868@redhat.com> (raw)
In-Reply-To: <CAJK669bhVfgnxuF6wVtdnzs2bgiJ2HzgwfWw4uZ=EqTdm43Jow@mail.gmail.com>
On Wed, Sep 05, 2012 at 08:15:36PM +0200, Sjur Brændeland wrote:
> Hi Michael.
>
> >> If the device then asks for VIRTIO_CONSOLE_F_DMA_MEM
> >> when DMA is not supported, virtio will do BUG_ON() from
> >> virtio_check_driver_offered_feature().
> >>
> >> Is this acceptable or should we add a check in virtcons_probe()
> >> and let the probing fail instead?
> >>
> >> E.g:
> >> /* Refuse to bind if F_DMA_MEM request cannot be met */
> >> if (!VIRTIO_CONSOLE_HAS_DMA &&
> >> (vdev->config->get_features(vdev) & (1 << VIRTIO_CONSOLE_F_DMA_MEM))){
> >> dev_err(&vdev->dev,
> >> "DMA_MEM requested, but arch does not support DMA\n");
> >> err = -EINVAL;
> >> goto fail;
> >> }
> >>
> >> Regards,
> >> Sjur
> >
> > Failing probe would be cleaner. But there is still a problem:
> > old driver will happily bind to that device and then
> > fail to work, right?
>
> Not just fail to work, the kernel will panic on the BUG_ON().
> Remoteproc gets the virtio configuration from firmware loaded
> from user space. So this type of problem might be triggered
> for other virtio drivers as well.
how?
>
> > virtio pci has revision id for this, but remoteproc doesn't
> > seem to have anything similar. Or did I miss it?
>
> No there are currently no sanity check of
> virtio type and feature bits in remoteproc.
> One option may be to add this...
you can not fix the past.
> > If not -
> > we probably need to use a different
> > device id, and not a feature bit.
>
> But if I create a new virtio console type, remoteproc
> could still call the existing virtio_console with random
> bad feature bits, causing kernel panic.
cirtio core checks device id - this should not happen.
> Even if we fix this particular problem, the general problem
> still exists: bogus virtio declarations in remoteproc's firmware
> may cause BUG_ON().
which BUG_ON exactly?
> (Note the fundamental difference
> between visualizations and remoteproc. For remoteproc
> the virtio configuration comes from binaries loaded from
> user space).
>
> So maybe we should look for a more generic solution, e.g.
> changing virtio probe functionality so that devices with
> bad feature bits will not trigger BUG_ON(), but rather refuse
> to bind the driver.
>
> Regards,
> Sjur
next prev parent reply other threads:[~2012-09-05 19:16 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-03 13:51 [RFC 1/2] virtio_console: Add support for DMA memory allocation sjur.brandeland
2012-09-03 13:51 ` [RFC 2/2] virtio_console: Add feature to disable console port sjur.brandeland
2012-09-03 13:51 ` sjur.brandeland
2012-09-03 14:30 ` [RFC 1/2] virtio_console: Add support for DMA memory allocation Michael S. Tsirkin
2012-09-03 14:30 ` Michael S. Tsirkin
2012-09-03 14:57 ` Sjur Brændeland
2012-09-03 14:57 ` Sjur Brændeland
2012-09-03 20:27 ` Michael S. Tsirkin
2012-09-03 20:27 ` Michael S. Tsirkin
2012-09-04 6:07 ` Rusty Russell
2012-09-04 6:07 ` Rusty Russell
2012-09-05 13:00 ` Sjur Brændeland
2012-09-05 13:00 ` Sjur Brændeland
2012-09-05 14:35 ` Michael S. Tsirkin
2012-09-05 14:35 ` Michael S. Tsirkin
2012-09-05 18:15 ` Sjur Brændeland
2012-09-05 18:15 ` Sjur Brændeland
2012-09-05 19:16 ` Michael S. Tsirkin [this message]
2012-09-05 19:16 ` Michael S. Tsirkin
2012-09-07 9:24 ` Sjur Brændeland
2012-09-07 9:24 ` Sjur Brændeland
2012-09-04 11:28 ` Sjur Brændeland
2012-09-04 11:28 ` Sjur Brændeland
2012-09-04 13:50 ` Michael S. Tsirkin
2012-09-04 13:50 ` Michael S. Tsirkin
2012-09-04 16:58 ` Sjur Brændeland
2012-09-04 16:58 ` Sjur Brændeland
2012-09-04 18:55 ` Michael S. Tsirkin
2012-09-04 18:55 ` Michael S. Tsirkin
2012-09-06 2:04 ` Rusty Russell
2012-09-06 2:04 ` Rusty Russell
2012-09-06 5:27 ` Michael S. Tsirkin
2012-09-06 5:27 ` Michael S. Tsirkin
2012-09-10 22:11 ` Michael S. Tsirkin
2012-09-10 22:11 ` Michael S. Tsirkin
2012-09-12 6:24 ` Rusty Russell
2012-09-12 6:24 ` Rusty Russell
2012-09-07 8:35 ` Sjur Brændeland
2012-09-07 8:35 ` Sjur Brændeland
2012-09-16 9:44 ` [PATCH repost] virtio: don't crash when device is buggy Michael S. Tsirkin
2012-09-16 9:44 ` Michael S. Tsirkin
2012-09-17 4:27 ` Rusty Russell
2012-09-17 4:27 ` Rusty Russell
2012-09-18 22:24 ` Michael S. Tsirkin
2012-09-18 22:24 ` Michael S. Tsirkin
2012-09-19 4:10 ` Rusty Russell
2012-09-19 4:10 ` Rusty Russell
-- strict thread matches above, loose matches on Subject: below --
2012-09-03 13:51 [RFC 1/2] virtio_console: Add support for DMA memory allocation sjur.brandeland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120905191657.GA15868@redhat.com \
--to=mst@redhat.com \
--cc=amit.shah@redhat.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sjur.brandeland@stericsson.com \
--cc=sjurbren@gmail.com \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.