Subject: Re: [net-next v2 1/1] virtual-bus: Implementation of Virtual Bus

From: "Michael S. Tsirkin" <[email-masked]>
Date: Wed, 20 Nov 2019 09:57:17 -0500

On Wed, Nov 20, 2019 at 10:30:54AM -0400, Jason Gunthorpe wrote:
> On Wed, Nov 20, 2019 at 08:43:20AM -0500, Michael S. Tsirkin wrote:
> > On Wed, Nov 20, 2019 at 09:03:19AM -0400, Jason Gunthorpe wrote:
> > > On Wed, Nov 20, 2019 at 02:38:08AM -0500, Michael S. Tsirkin wrote:
> > > > > > I don't think that extends as far as actively encouraging userspace
> > > > > > drivers poking at hardware in a vendor specific way.  
> > > > > 
> > > > > Yes, it does, if you can implement your user space requirements using
> > > > > vfio then why do you need a kernel driver?
> > > > 
> > > > People's requirements differ. You are happy with just pass through a VF
> > > > you can already use it. Case closed. There are enough people who have
> > > > a fixed userspace that people have built virtio accelerators,
> > > > now there's value in supporting that, and a vendor specific
> > > > userspace blob is not supporting that requirement.
> > > 
> > > I have no idea what you are trying to explain here. I'm not advocating
> > > for vfio pass through.
> > 
> > You seem to come from an RDMA background, used to userspace linking to
> > vendor libraries to do basic things like push bits out on the network,
> > because users live on the performance edge and rebuild their
> > userspace often anyway.
> > 
> > Lots of people are not like that, they would rather have the
> > vendor-specific driver live in the kernel, with userspace being
> > portable, thank you very much.
> 
> You are actually proposing a very RDMA like approach with a split
> kernel/user driver design. Maybe the virtio user driver will turn out
> to be 'portable'.
> 
> Based on the last 20 years of experience, the kernel component has
> proven to be the larger burden and drag than the userspace part. I
> think the high interest in DPDK, SPDK and others show this is a common
> principle.

And I guess the interest in BPF shows the opposite?
I don't see how this kind of argument proves anything.  DPDK/SPDK are
written by a group of developers who care about raw speed and nothing
else. I guess in that setting you want a userspace driver. I know you
work for a hardware company so to you it looks like that's all people
care about.  More power to you, but that need seems to be
addressed by dpdk.
But lots of people would rather have e.g. better security
than a 0.1% faster networking.

> At the very least for new approaches like this it makes alot of sense
> to have a user space driver until enough HW is available that a
> proper, well thought out kernel side can be built.

But hardware is available, driver has been posted by Intel.
Have you looked at that?

So I am not sure it's a good idea to discuss whether code is "proper" or
"so-called", that just does not sound like constructive criticism.
And I think it might be helpful if you look at the code and provide
comments, so far your comments are just on the cover letter and commit
logs. If you look at that you might find your answer to why Alex did not
nak this.

> For instance, this VFIO based approach might be very suitable to the
> intel VF based ICF driver, but we don't yet have an example of non-VF
> HW that might not be well suited to VFIO.
> 
> Jason

I don't think we should keep moving the goalposts like this.

If people write drivers and find some infrastruture useful,
and it looks more or less generic on the outset, then I don't
see why it's a bad idea to merge it.

*We don't want to decide how to support this hardware, write a userspace driver*
isn't a reasonable approach IMHO.

-- 
MST