Messages in this thread | | | Subject | Re: [RFC net-next 0/8] Introducing subdev bus and devlink extension | From | Kirti Wankhede <> | Date | Fri, 8 Mar 2019 02:23:32 +0530 |
| |
<snip>
>>> >>> Yes. I got my patches to adapt to mdev way. Will be posting RFC v2 soon. >>> Will wait for a day to receive more comments/views from Greg and others. >>> >>> As I explained in this cover-letter and discussion, First use case is >>> to create and use mdevs in the host (and not in VM). >>> Later on, I am sure once we have mdevs available, VM users will likely use >> it. >>> >>> So, mlx5_core driver will have two components as starting point. >>> >>> 1. drivers/net/ethernet/mellanox/mlx5/core/mdev/mdev.c >>> This is mdev device life cycle driver which will do, mdev_register_device() >> and implements mlx5_mdev_ops. >>> >> Ok. I would suggest not use mdev.c file name, may be add device name, >> something like mlx_mdev.c or vfio_mlx.c >> > mlx5/core is coding convention is not following to prefix mlx to its 40+ files. > > it uses actual subsystem or functionality name, such as, > sriov.c > eswitch.c > fw.c > en_tc.c (en for Ethernet) > lag.c > so, > mdev.c aligns to rest of the 40+ files. > > >>> 2. drivers/net/ethernet/mellanox/mlx5/core/mdev/mdev_driver.c >>> This is mdev device driver which does mdev_register_driver() and >>> probe() creates netdev by heavily reusing existing code of the PF device. >>> These drivers will not be placed under drivers/vfio/mdev, because this is >> not a vfio driver. >>> This is fine, right? >>> >> >> I'm not too familiar with netdev, but can you create netdev on open() call on >> mlx mdev device? Then you don't have to write mdev device driver. >> > Who invokes open() and release()? > I believe it is the qemu would do open(), release, read/write/mmap? > > Assuming that is the case, > I think its incorrect to create netdev in open. > Because when we want to map the mdev to VM using above mdev calls, we actually wont be creating netdev in host. > Instead, some queues etc will be setup as part of these calls. > > By default this created mdev is bound to vfio_mdev. > And once we unbind the device from this driver, we need to bind to mlx5 driver so that driver can create the netdev etc. > > Or did I get open() and friends call wrong? >
In 'struct mdev_parent_ops' there are create() and remove(). When user creates mdev device by writing UUID to create sysfs, vendor driver's create() callback gets called. This should be used to allocate/commit resources from parent device and on remove() callback free those resources. So there is no need to bind mlx5 driver to that mdev device.
open/release/read/write/mmap/ioctl are regular file operations for that mdev device.
Thanks, Kirti
| |