All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: dev@dpdk.org, hjk@hansjkoch.de, gregkh@linux-foundation.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] uio: new driver to support PCI MSI-X
Date: Tue, 6 Oct 2015 00:54:55 +0300	[thread overview]
Message-ID: <20151005215455.GA7608@redhat.com> (raw)
In-Reply-To: <20151001104505-mutt-send-email-mst@redhat.com>

On Thu, Oct 01, 2015 at 11:33:06AM +0300, Michael S. Tsirkin wrote:
> Just forwarding events is not enough to make a valid driver.
> What is missing is a way to access the device in a safe way.

Thinking about it some more, maybe some devices don't do DMA, and merely
signal events with MSI/MSI-X.

The fact you mention igb_uio in the cover letter seems to hint that this
isn't the case, and that the real intent is to abuse it for DMA-capable
devices, but still ...

If we assume such a simple device, we need to block userspace from
tweaking at least the MSI control and the MSI-X table.
And changing BARs might make someone else corrupt the MSI-X
table, so we need to block it from changing BARs, too.

Things like device reset will clear the table.  I guess this means we
need to track access to reset, too, make sure we restore the
table to a sane config.

PM  capability can be used to reset things tooI think. Better be
careful about that.

And a bunch of devices could be doing weird things that need
to be special-cased.

All of this is what VFIO is already dealing with.

Maybe extending VFIO for this usecase, or finding another way to share
code might be a better idea than duplicating the code within uio?

-- 
MST

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: hjk@hansjkoch.de, gregkh@linux-foundation.org,
	linux-kernel@vger.kernel.org, dev@dpdk.org
Subject: Re: [PATCH 2/2] uio: new driver to support PCI MSI-X
Date: Tue, 6 Oct 2015 00:54:55 +0300	[thread overview]
Message-ID: <20151005215455.GA7608@redhat.com> (raw)
In-Reply-To: <20151001104505-mutt-send-email-mst@redhat.com>

On Thu, Oct 01, 2015 at 11:33:06AM +0300, Michael S. Tsirkin wrote:
> Just forwarding events is not enough to make a valid driver.
> What is missing is a way to access the device in a safe way.

Thinking about it some more, maybe some devices don't do DMA, and merely
signal events with MSI/MSI-X.

The fact you mention igb_uio in the cover letter seems to hint that this
isn't the case, and that the real intent is to abuse it for DMA-capable
devices, but still ...

If we assume such a simple device, we need to block userspace from
tweaking at least the MSI control and the MSI-X table.
And changing BARs might make someone else corrupt the MSI-X
table, so we need to block it from changing BARs, too.

Things like device reset will clear the table.  I guess this means we
need to track access to reset, too, make sure we restore the
table to a sane config.

PM  capability can be used to reset things tooI think. Better be
careful about that.

And a bunch of devices could be doing weird things that need
to be special-cased.

All of this is what VFIO is already dealing with.

Maybe extending VFIO for this usecase, or finding another way to share
code might be a better idea than duplicating the code within uio?

-- 
MST

  parent reply	other threads:[~2015-10-05 21:55 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-30 22:28 [PATCH 0/2] uio_msi: device driver Stephen Hemminger
2015-09-30 22:28 ` Stephen Hemminger
2015-09-30 22:28 ` [PATCH 1/2] uio: add support for ioctls Stephen Hemminger
2015-09-30 22:28   ` Stephen Hemminger
2015-09-30 22:28 ` [PATCH 2/2] uio: new driver to support PCI MSI-X Stephen Hemminger
2015-09-30 22:28   ` Stephen Hemminger
2015-10-01  8:33   ` Michael S. Tsirkin
2015-10-01  8:33     ` Michael S. Tsirkin
2015-10-01 10:37     ` Michael S. Tsirkin
2015-10-01 10:37       ` Michael S. Tsirkin
2015-10-01 16:06       ` Michael S. Tsirkin
2015-10-01 16:06         ` Michael S. Tsirkin
2015-10-01 14:50     ` Stephen Hemminger
2015-10-01 14:50       ` Stephen Hemminger
2015-10-01 15:22       ` Michael S. Tsirkin
2015-10-01 15:22         ` Michael S. Tsirkin
2015-10-01 16:31     ` Michael S. Tsirkin
2015-10-01 16:31       ` Michael S. Tsirkin
2015-10-01 17:26       ` Stephen Hemminger
2015-10-01 17:26         ` Stephen Hemminger
2015-10-01 18:25         ` Michael S. Tsirkin
2015-10-01 18:25           ` Michael S. Tsirkin
2015-10-05 21:54     ` Michael S. Tsirkin [this message]
2015-10-05 21:54       ` Michael S. Tsirkin
2015-10-05 22:09       ` Vladislav Zolotarov
2015-10-05 22:49         ` Michael S. Tsirkin
2015-10-05 22:49           ` [dpdk-dev] " Michael S. Tsirkin
2015-10-06  7:33           ` Stephen Hemminger
2015-10-06  7:33             ` [dpdk-dev] " Stephen Hemminger
2015-10-06 12:15             ` Avi Kivity
2015-10-06 12:15               ` [dpdk-dev] " Avi Kivity
2015-10-06 14:07               ` Michael S. Tsirkin
2015-10-06 15:41                 ` Avi Kivity
2015-10-06 15:41                   ` [dpdk-dev] " Avi Kivity
2015-10-16 17:11               ` Thomas Monjalon
2015-10-16 17:11                 ` [dpdk-dev] " Thomas Monjalon
2015-10-16 17:20                 ` Stephen Hemminger
2015-10-16 17:20                   ` [dpdk-dev] " Stephen Hemminger
2015-10-06 13:42             ` Michael S. Tsirkin
2015-10-06 13:42               ` [dpdk-dev] " Michael S. Tsirkin
2015-10-06  8:23           ` Vlad Zolotarov
2015-10-06  8:23             ` [dpdk-dev] " Vlad Zolotarov
2015-10-06 13:58             ` Michael S. Tsirkin
2015-10-06 13:58               ` [dpdk-dev] " Michael S. Tsirkin
2015-10-06 14:49               ` Vlad Zolotarov
2015-10-06 15:00                 ` Michael S. Tsirkin
2015-10-06 15:00                   ` [dpdk-dev] " Michael S. Tsirkin
2015-10-06 16:40                   ` Vlad Zolotarov
2015-10-06 16:40                     ` [dpdk-dev] " Vlad Zolotarov
2015-10-01 23:40   ` Alexander Duyck
2015-10-01 23:40     ` [dpdk-dev] " Alexander Duyck
2015-10-02  0:01     ` Stephen Hemminger
2015-10-02  0:01       ` [dpdk-dev] " Stephen Hemminger
2015-10-02  1:21       ` Alexander Duyck
2015-10-02  1:21         ` [dpdk-dev] " Alexander Duyck
2015-10-02  0:04     ` Stephen Hemminger
2015-10-02  2:33       ` Alexander Duyck
2015-10-02  2:33         ` [dpdk-dev] " Alexander Duyck
2015-10-01  8:36 ` [PATCH 0/2] uio_msi: device driver Michael S. Tsirkin
2015-10-01  8:36   ` Michael S. Tsirkin
2015-10-01 10:59 ` Avi Kivity
2015-10-01 10:59   ` [dpdk-dev] " Avi Kivity
2015-10-01 14:57   ` Stephen Hemminger
2015-10-01 19:48     ` Alexander Duyck
2015-10-01 19:48       ` [dpdk-dev] " Alexander Duyck
2015-10-01 22:00       ` Stephen Hemminger
2015-10-01 22:00         ` [dpdk-dev] " Stephen Hemminger
2015-10-01 23:03         ` Alexander Duyck
2015-10-01 23:03           ` [dpdk-dev] " Alexander Duyck
2015-10-01 23:39           ` Stephen Hemminger
2015-10-01 23:39             ` [dpdk-dev] " Stephen Hemminger
2015-10-01 23:43             ` Alexander Duyck
2015-10-02  0:04               ` Stephen Hemminger
2015-10-02  0:04                 ` [dpdk-dev] " Stephen Hemminger
2015-10-02  1:39                 ` Alexander Duyck
2015-10-04 16:49                   ` Vlad Zolotarov
2015-10-04 16:49                     ` [dpdk-dev] " Vlad Zolotarov
2015-10-04 19:03                     ` Greg KH
2015-10-04 20:49                       ` Vlad Zolotarov
2015-10-04 20:49                         ` [dpdk-dev] " Vlad Zolotarov

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=20151005215455.GA7608@redhat.com \
    --to=mst@redhat.com \
    --cc=dev@dpdk.org \
    --cc=gregkh@linux-foundation.org \
    --cc=hjk@hansjkoch.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stephen@networkplumber.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.