lkml.org 
[lkml]   [2020]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH RFC 00/15] Add VFIO mediated device support and IMS support for the idxd driver.
    On Sun, Apr 26, 2020 at 09:43:55PM -0600, Alex Williamson wrote:
    > On Sun, 26 Apr 2020 16:13:57 -0300
    > Jason Gunthorpe <jgg@mellanox.com> wrote:
    >
    > > On Sun, Apr 26, 2020 at 05:18:59AM +0000, Tian, Kevin wrote:
    > >
    > > > > > I think providing an unified abstraction to userspace is also important,
    > > > > > which is what VFIO provides today. The merit of using one set of VFIO
    > > > > > API to manage all kinds of mediated devices and VF devices is a major
    > > > > > gain. Instead, inventing a new vDPA-like interface for every Scalable-IOV
    > > > > > or equivalent device is just overkill and doesn't scale. Also the actual
    > > > > > emulation code in idxd driver is actually small, if putting aside the PCI
    > > > > > config space part for which I already explained most logic could be shared
    > > > > > between mdev device drivers.
    > > > >
    > > > > If it was just config space you might have an argument, VFIO already
    > > > > does some config space mangling, but emulating BAR space is out of
    > > > > scope of VFIO, IMHO.
    > > >
    > > > out of scope of vfio-pci, but in scope of vfio-mdev. btw I feel that most
    > > > of your objections are actually related to the general idea of
    > > > vfio-mdev.
    > >
    > > There have been several abusive proposals of vfio-mdev, everything
    > > from a way to create device drivers to this kind of generic emulation
    > > framework.
    > >
    > > > Scalable IOV just uses PASID to harden DMA isolation in mediated
    > > > pass-through usage which vfio-mdev enables. Then are you just opposing
    > > > the whole vfio-mdev? If not, I'm curious about the criteria in your mind
    > > > about when using vfio-mdev is good...
    > >
    > > It is appropriate when non-PCI standard techniques are needed to do
    > > raw device assignment, just like VFIO.
    > >
    > > Basically if vfio-pci is already doing it then it seems reasonable
    > > that vfio-mdev should do the same. This mission creep where vfio-mdev
    > > gains functionality far beyond VFIO is the problem.
    >
    > Ehm, vfio-pci emulates BARs too. We also emulate FLR, power
    > management, DisINTx, and VPD. FLR, PM, and VPD all have device
    > specific quirks in the host kernel, and I've generally taken the stance
    > that would should take advantage of those quirks, not duplicate them in
    > userspace and not invent new access mechanisms/ioctls for each of them.
    > Emulating DisINTx is convenient since we must have a mechanism to mask
    > INTx, whether it's at the device or the APIC, so we can pretend the
    > hardware supports it. BAR emulation is really too trivial to argue
    > about, the BARs mean nothing to the physical device mapping, they're
    > simply scratch registers that we mask out the alignment bits on read.
    > vfio-pci is a mix of things that we decide are too complicated or
    > irrelevant to emulate in the kernel and things that take advantage of
    > shared quirks or are just too darn easy to worry about. BARs fall into
    > that latter category, any sort of mapping into VM address spaces is
    > necessarily done in userspace, but scratch registers that are masked on
    > read, *shrug*, vfio-pci does that. Thanks,

    It is not trivial masking. It is a 2000 line patch doing comprehensive
    emulation.

    Jason

    \
     
     \ /
      Last update: 2020-04-27 13:59    [W:3.169 / U:0.356 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site