All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Martin Habets <mhabets@solarflare.com>,
	Parav Pandit <parav@mellanox.com>,
	Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
Cc: Dave Ertman <david.m.ertman@intel.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
	"nhorman@redhat.com" <nhorman@redhat.com>,
	"sassmann@redhat.com" <sassmann@redhat.com>,
	"jgg@ziepe.ca" <jgg@ziepe.ca>,
	Kiran Patil <kiran.patil@intel.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	"Bie, Tiwei" <tiwei.bie@intel.com>
Subject: Re: [net-next v2 1/1] virtual-bus: Implementation of Virtual Bus
Date: Wed, 27 Nov 2019 18:58:58 +0800	[thread overview]
Message-ID: <0b845456-54b2-564a-0979-ba55bcf3269c@redhat.com> (raw)
In-Reply-To: <e8ab3603-59e1-6e1c-67c2-e1a252ba0ac1@solarflare.com>


On 2019/11/26 下午8:26, Martin Habets wrote:
> On 22/11/2019 16:19, Parav Pandit wrote:
>>
>>> From: Jason Wang <jasowang@redhat.com>
>>> Sent: Friday, November 22, 2019 3:14 AM
>>>
>>> On 2019/11/21 下午11:10, Martin Habets wrote:
>>>> On 19/11/2019 04:08, Jason Wang wrote:
>>>>> On 2019/11/16 上午7:25, Parav Pandit wrote:
>>>>>> Hi Jeff,
>>>>>>
>>>>>>> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>>>>>>> Sent: Friday, November 15, 2019 4:34 PM
>>>>>>>
>>>>>>> From: Dave Ertman <david.m.ertman@intel.com>
>>>>>>>
>>>>>>> This is the initial implementation of the Virtual Bus,
>>>>>>> virtbus_device and virtbus_driver.  The virtual bus is a software
>>>>>>> based bus intended to support lightweight devices and drivers and
>>>>>>> provide matching between them and probing of the registered drivers.
>>>>>>>
>>>>>>> The primary purpose of the virual bus is to provide matching
>>>>>>> services and to pass the data pointer contained in the
>>>>>>> virtbus_device to the virtbus_driver during its probe call.  This
>>>>>>> will allow two separate kernel objects to match up and start
>>> communication.
>>>>>> It is fundamental to know that rdma device created by virtbus_driver will
>>> be anchored to which bus for an non abusive use.
>>>>>> virtbus or parent pci bus?
>>>>>> I asked this question in v1 version of this patch.
>>>>>>
>>>>>> Also since it says - 'to support lightweight devices', documenting that
>>> information is critical to avoid ambiguity.
>>>>>> Since for a while I am working on the subbus/subdev_bus/xbus/mdev [1]
>>> whatever we want to call it, it overlaps with your comment about 'to support
>>> lightweight devices'.
>>>>>> Hence let's make things crystal clear weather the purpose is 'only
>>> matching service' or also 'lightweight devices'.
>>>>>> If this is only matching service, lets please remove lightweight devices
>>> part..
>>>>> Yes, if it's matching + lightweight device, its function is almost a duplication
>>> of mdev. And I'm working on extending mdev[1] to be a generic module to
>>> support any types of virtual devices a while. The advantage of mdev is:
>>>>> 1) ready for the userspace driver (VFIO based)
>>>>> 2) have a sysfs/GUID based management interface
>>>> In my view this virtual-bus is more generic and more flexible than mdev.
>>>
>>> Even after the series [1] here?
> I have been following that series. It does make mdev more flexible, and almost turns it into a real bus.
> Even with those improvements to mdev the virtual-bus is in my view still more generic and more flexible,
> and hence more future-proof.


So the only difference so far is after that series is:

1) mdev has sysfs support
2) mdev has support from vfio

For 1) we can decouple that part to be more flexible, for 2) I think you 
would still need that part other than inventing a new VFIO driver (e.g 
vfio-virtual-bus)?


>
>>>> What for you are the advantages of mdev to me are some of it's
>>> disadvantages.
>>>> The way I see it we can provide rdma support in the driver using virtual-bus.
>> This is fine, because it is only used for matching service.
>>
>>> Yes, but since it does matching only, you can do everything you want.
>>> But it looks to me Greg does not want a bus to be an API multiplexer. So if a
>>> dedicated bus is desired, it won't be much of code to have a bus on your own.
> I did not intend for it to be a multiplexer. And I very much prefer a generic bus over a any driver specific bus.
>
>> Right. virtbus shouldn't be a multiplexer.
>> Otherwise mdev can be improved (abused) exactly the way virtbus might. Where 'mdev m stands for multiplexer too'. :-)
>> No, we shouldn’t do that.
>>
>> Listening to Greg and Jason G, I agree that virtbus shouldn't be a multiplexer.
>> There are few basic differences between subfunctions and matching service device object.
>> Subfunctions over period of time will have several attributes, few that I think of right away are:
>> 1. BAR resource info, write combine info
>> 2. irq vectors details
>> 3. unique id assigned by user (while virtbus will not assign such user id as they are auto created for matching service for PF/VF)
>> 4. rdma device created by matched driver resides on pci bus or parent device
>> While rdma and netdev created on over subfunctions are linked to their own 'struct device'.
> This is more aligned with my thinking as well, although I do not call these items subfunctions.
> There can be different devices for different users, where multiple can be active at the same time (with some constraints).
>
> One important thing to note is that there may not not be a netdev device. What we traditionally call
> a "network driver" will then only manage the virtualised devices.
>
>> Due to that sysfs view for these two different types of devices is bit different.
>> Putting both on same bus just doesn't appear right with above fundamental differences of core layer.
> Can you explain which code layer you mean?
>
>>>> At the moment we would need separate mdev support in the driver for
>>>> vdpa, but I hope at some point mdev would become a layer on top of virtual-
>>> bus.
>> How is it optimal to create multiple 'struct device' for single purpose?
>> Especially when one wants to create hundreds of such devices to begin with.
>> User facing tool should be able to select device type and place the device on right bus.
> At this point I think it is not possible to create a solution that is optimal right now for all use cases.


Probably yes.


> With the virtual bus we do have a solid foundation going forward, for the users we know now and for
> future ones.


If I understand correctly, if multiplexer is not preferred. It would be 
hard to have a bus on your own code, there's no much code could be reused.

Thanks


>   Optimisation is something that needs to happen over time, without breaking existing users.
>
> As for the user facing tool, the only one I know of that always works is "echo" into a sysfs file.
>
> Best regards,
> Martin
>


  reply	other threads:[~2019-11-27 10:59 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-15 22:33 [net-next v2 1/1] virtual-bus: Implementation of Virtual Bus Jeff Kirsher
2019-11-15 23:25 ` Parav Pandit
2019-11-19  3:58   ` Ertman, David M
2019-11-19  4:31     ` Parav Pandit
2019-11-19  4:39       ` Parav Pandit
2019-11-19 17:46         ` Ertman, David M
2019-11-19 18:39           ` Jason Gunthorpe
2019-11-19 17:44       ` Ertman, David M
2019-11-19  4:08   ` Jason Wang
2019-11-19  4:36     ` Parav Pandit
2019-11-19  6:51       ` Jason Wang
2019-11-19  7:13         ` Parav Pandit
2019-11-19  7:37           ` Jason Wang
2019-11-19 15:14             ` Parav Pandit
2019-11-20  3:15               ` Jason Wang
2019-11-20  3:38                 ` Parav Pandit
2019-11-20  4:07                   ` Jason Wang
2019-11-20 13:41                     ` Jason Gunthorpe
2019-11-21  4:06                       ` Jason Wang
2019-11-20  8:52                   ` Michael S. Tsirkin
2019-11-20 12:03                     ` Jiri Pirko
2019-11-19 16:46             ` Jason Gunthorpe
2019-11-19 18:58               ` Michael S. Tsirkin
2019-11-19 19:03                 ` Jason Gunthorpe
2019-11-19 21:34                   ` Michael S. Tsirkin
2019-11-19 19:15                 ` Jason Gunthorpe
2019-11-19 21:33                   ` Michael S. Tsirkin
2019-11-19 23:10                     ` Jason Gunthorpe
2019-11-20  0:16                       ` Michael S. Tsirkin
2019-11-20  1:46                         ` Jason Gunthorpe
2019-11-20  3:59                           ` Jason Wang
2019-11-20  5:34                             ` Jason Wang
2019-11-20 13:38                             ` Jason Gunthorpe
2019-11-20 14:15                               ` Michael S. Tsirkin
2019-11-20 17:28                               ` Alex Williamson
2019-11-20 18:11                                 ` Jason Gunthorpe
2019-11-20 22:07                                   ` Alex Williamson
2019-11-20 22:39                                     ` Parav Pandit
2019-11-21  8:17                                       ` Jason Wang
2019-11-21  3:03                                     ` Jason Gunthorpe
2019-11-21  4:24                                       ` Michael S. Tsirkin
2019-11-21 13:44                                         ` Jason Gunthorpe
2019-11-23 16:50                                           ` Michael S. Tsirkin
2019-11-21  7:21                                       ` Jason Wang
2019-11-21 14:17                                         ` Jason Gunthorpe
2019-11-22  8:45                                           ` Jason Wang
2019-11-22 18:02                                             ` Jason Gunthorpe
2019-11-23  4:39                                               ` Tiwei Bie
2019-11-23 23:09                                                 ` Jason Gunthorpe
2019-11-24 11:00                                                   ` Michael S. Tsirkin
2019-11-24 14:56                                                     ` Tiwei Bie
2019-11-25  0:07                                                     ` Jason Gunthorpe
2019-11-24 14:51                                                   ` Tiwei Bie
2019-11-24 15:07                                                     ` Michael S. Tsirkin
2019-11-25  0:09                                                     ` Jason Gunthorpe
2019-11-25 12:59                                                       ` Jason Wang
2019-11-23 16:48                                           ` Michael S. Tsirkin
2019-11-21  5:22                                     ` Jason Wang
2019-11-21  6:59                                   ` Jason Wang
2019-11-21  3:52                               ` Jason Wang
2019-11-20  7:38                           ` Michael S. Tsirkin
2019-11-20 13:03                             ` Jason Gunthorpe
2019-11-20 13:43                               ` Michael S. Tsirkin
2019-11-20 14:30                                 ` Jason Gunthorpe
2019-11-20 14:57                                   ` Michael S. Tsirkin
2019-11-20 16:45                                     ` Jason Gunthorpe
2019-11-20 22:05                                       ` Michael S. Tsirkin
2019-11-21  1:38                                         ` Jason Gunthorpe
2019-11-21  4:53                                       ` Jason Wang
2019-11-20  3:29                   ` Jason Wang
2019-11-20  3:24               ` Jason Wang
2019-11-20 13:33                 ` Jason Gunthorpe
2019-11-21  3:57                   ` Jason Wang
2019-11-21 15:10     ` Martin Habets
2019-11-22  9:13       ` Jason Wang
2019-11-22 16:19         ` Parav Pandit
2019-11-26 12:26           ` Martin Habets
2019-11-27 10:58             ` Jason Wang [this message]
2019-11-27 11:03               ` Jason Wang
2019-11-15 23:42 ` Parav Pandit
2019-11-18  7:48 ` Greg KH
2019-11-18 22:57   ` Ertman, David M
2019-11-19  8:04   ` Jason Wang
2019-11-19 17:50     ` Ertman, David M
2019-11-18  7:49 ` Greg KH
2019-11-18 22:55   ` Ertman, David M

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=0b845456-54b2-564a-0979-ba55bcf3269c@redhat.com \
    --to=jasowang@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=davem@davemloft.net \
    --cc=david.m.ertman@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jgg@ziepe.ca \
    --cc=kiran.patil@intel.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mhabets@solarflare.com \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=parav@mellanox.com \
    --cc=sassmann@redhat.com \
    --cc=tiwei.bie@intel.com \
    /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.