All of lore.kernel.org
 help / color / mirror / Atom feed
From: Parav Pandit <parav@mellanox.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"kwankhede@nvidia.com" <kwankhede@nvidia.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"cohuck@redhat.com" <cohuck@redhat.com>,
	"cjia@nvidia.com" <cjia@nvidia.com>
Subject: RE: [PATCH v2 0/2] Simplify mtty driver and mdev core
Date: Tue, 13 Aug 2019 14:48:23 +0000	[thread overview]
Message-ID: <AM0PR05MB48661804F69F24B08036E57DD1D20@AM0PR05MB4866.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <20190808170247.1fc2c4c4@x1.home>

Hi Alex,


> -----Original Message-----
> From: Alex Williamson <alex.williamson@redhat.com>
> Sent: Friday, August 9, 2019 4:33 AM
> To: Parav Pandit <parav@mellanox.com>
> Cc: kvm@vger.kernel.org; kwankhede@nvidia.com; linux-
> kernel@vger.kernel.org; cohuck@redhat.com; cjia@nvidia.com
> Subject: Re: [PATCH v2 0/2] Simplify mtty driver and mdev core
> 
> On Thu,  8 Aug 2019 09:12:53 -0500
> Parav Pandit <parav@mellanox.com> wrote:
> 
> > Currently mtty sample driver uses mdev state and UUID in convoluated
> > way to generate an interrupt.
> > It uses several translations from mdev_state to mdev_device to mdev uuid.
> > After which it does linear search of long uuid comparision to find out
> > mdev_state in mtty_trigger_interrupt().
> > mdev_state is already available while generating interrupt from which
> > all such translations are done to reach back to mdev_state.
> >
> > This translations are done during interrupt generation path.
> > This is unnecessary and reduandant.
> 
> Is the interrupt handling efficiency of this particular sample driver really
> relevant, or is its purpose more to illustrate the API and provide a proof of
> concept?  If we go to the trouble to optimize the sample driver and remove this
> interface from the API, what do we lose?
> 
> This interface was added via commit:
> 
> 99e3123e3d72 vfio-mdev: Make mdev_device private and abstract interfaces
> 
> Where the goal was to create a more formal interface and abstract driver
> access to the struct mdev_device.  In part this served to make out-of-tree mdev
> vendor drivers more supportable; the object is considered opaque and access is
> provided via an API rather than through direct structure fields.
> 
This is not the common practice in the kernel to provide exported symbol for every single field of the structure.

> I believe that the NVIDIA GRID mdev driver does make use of this interface and
> it's likely included in the sample driver specifically so that there is an in-kernel
> user for it (ie. specifically to avoid it being removed so casually).  An interesting
> feature of the NVIDIA mdev driver is that I believe it has portions that run in
> userspace.  As we know, mdevs are named with a UUID, so I can imagine there
> are some efficiencies to be gained in having direct access to the UUID for a
> device when interacting with userspace, rather than repeatedly parsing it from
> a device name.  
Can you please point to the kernel code that accesses the UUID?

> Is that really something we want to make more difficult in
> order to optimize a sample driver?  Knowing that an mdev device uses a UUID
> for it's name, as tools like libvirt and mdevctl expect, is it really worthwhile to
> remove such a trivial API?
> 
Yes. it is worthwhile to not keep any dead code in the kernel when there is no in-kernel driver using it.
Did I miss a caller?
Sample driver is setting wrong example of how/when uuid is used.
There has be better example to show how/when/why to use it.
Out of tree driver doesn't qualify API addition to my understanding.
I like to listen to Greg and others for an API inclusion without user as I haven't come across such practice in other subsystems such as nvme, netdev, rdma.

> > Hence,
> > Patch-1 simplifies mtty sample driver to directly use mdev_state.
> >
> > Patch-2, Since no production driver uses mdev_uuid(), simplifies and
> > removes redandant mdev_uuid() exported symbol.
> 
> s/no production driver/no in-kernel production driver/
> 
> I'd be interested to hear how the NVIDIA folks make use of this API interface.
> Thanks,
> 
> Alex
> 
> > ---
> > Changelog:
> > v1->v2:
> >  - Corrected email of Kirti
> >  - Updated cover letter commit log to address comment from Cornelia
> >  - Added Reviewed-by tag
> > v0->v1:
> >  - Updated commit log
> >
> > Parav Pandit (2):
> >   vfio-mdev/mtty: Simplify interrupt generation
> >   vfio/mdev: Removed unused and redundant API for mdev UUID
> >
> >  drivers/vfio/mdev/mdev_core.c |  6 ------
> >  include/linux/mdev.h          |  1 -
> >  samples/vfio-mdev/mtty.c      | 39 +++++++----------------------------
> >  3 files changed, 8 insertions(+), 38 deletions(-)
> >


      parent reply	other threads:[~2019-08-13 14:48 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-02  6:59 [PATCH 0/2] Simplify mtty driver and mdev core Parav Pandit
2019-08-02  6:59 ` [PATCH 1/2] vfio-mdev/mtty: Simplify interrupt generation Parav Pandit
2019-08-06  8:15   ` Cornelia Huck
2019-08-02  6:59 ` [PATCH 2/2] vfio/mdev: Removed unused and redundant API for mdev name Parav Pandit
2019-08-06  8:29   ` Cornelia Huck
2019-08-06 13:12     ` Parav Pandit
2019-08-06 14:18 ` [PATCH v1 0/2] Simplify mtty driver and mdev core Parav Pandit
2019-08-06 14:18   ` [PATCH v1 1/2] vfio-mdev/mtty: Simplify interrupt generation Parav Pandit
2019-08-06 14:18   ` [PATCH v1 2/2] vfio/mdev: Removed unused and redundant API for mdev UUID Parav Pandit
2019-08-07  9:28     ` Cornelia Huck
2019-08-07 16:33       ` Parav Pandit
2019-08-08  8:29         ` Cornelia Huck
2019-08-08 14:01           ` Parav Pandit
2019-08-08 14:12 ` [PATCH v2 0/2] Simplify mtty driver and mdev core Parav Pandit
2019-08-08 14:12   ` [PATCH v2 1/2] vfio-mdev/mtty: Simplify interrupt generation Parav Pandit
2019-08-13 16:39     ` Christoph Hellwig
2019-08-23 20:48     ` Alex Williamson
2019-08-08 14:12   ` [PATCH v2 2/2] vfio/mdev: Removed unused and redundant API for mdev UUID Parav Pandit
2019-08-13 16:39     ` Christoph Hellwig
2019-08-16 15:22     ` Cornelia Huck
2019-08-08 23:02   ` [PATCH v2 0/2] Simplify mtty driver and mdev core Alex Williamson
2019-08-09  8:07     ` Cornelia Huck
2019-08-12 11:35     ` Kirti Wankhede
2019-08-13 14:40       ` Parav Pandit
2019-08-13 14:52         ` Alex Williamson
2019-08-13 16:28           ` Parav Pandit
2019-08-13 16:34             ` Cornelia Huck
2019-08-13 17:11             ` Alex Williamson
2019-08-14  5:54               ` Parav Pandit
2019-08-14  8:01                 ` Cornelia Huck
2019-08-14 12:27                   ` Parav Pandit
2019-08-14 13:09                     ` Cornelia Huck
2019-08-14 13:45                       ` Parav Pandit
2019-08-14 14:57                         ` Alex Williamson
2019-08-14 16:21                           ` Parav Pandit
2019-08-20  8:58                             ` Parav Pandit
2019-08-20  9:58                               ` Christophe de Dinechin
2019-08-20 11:25                                 ` Parav Pandit
2019-08-20 16:31                                   ` Cornelia Huck
2019-08-21  2:42                                     ` Parav Pandit
2019-08-20 17:19                               ` Alex Williamson
2019-08-20 17:55                                 ` Cornelia Huck
2019-08-21  3:57                                   ` Parav Pandit
2019-08-21  3:42                                 ` Parav Pandit
2019-08-21  4:20                                   ` Alex Williamson
2019-08-21  4:40                                     ` Parav Pandit
2019-08-21  4:57                                       ` Alex Williamson
2019-08-21  5:01                                         ` Parav Pandit
2019-08-21  5:26                                           ` Alex Williamson
2019-08-21  6:23                                             ` Parav Pandit
2019-08-22  9:29                                               ` Jiri Pirko
2019-08-22  9:42                                                 ` Parav Pandit
2019-08-22  9:58                                                   ` Jiri Pirko
2019-08-22 10:04                                                     ` Parav Pandit
2019-08-22 12:19                                                       ` Jiri Pirko
2019-08-22 13:33                                                         ` Parav Pandit
2019-08-23  8:12                                                           ` Jiri Pirko
2019-08-23  8:14                                                             ` Parav Pandit
2019-08-23 14:28                                                               ` Alex Williamson
2019-08-23 14:53                                                                 ` Parav Pandit
2019-08-23 15:04                                                                   ` Jiri Pirko
2019-08-23 15:52                                                                   ` Alex Williamson
2019-08-23 16:14                                                                     ` Parav Pandit
2019-08-23 17:16                                                                       ` Alex Williamson
2019-08-23 18:00                                                                         ` Parav Pandit
2019-08-23 19:43                                                                           ` Alex Williamson
2019-08-24  3:56                                                                             ` Parav Pandit
2019-08-24  4:45                                                                               ` Parav Pandit
2019-08-24  4:59                                                                               ` Alex Williamson
2019-08-24  5:22                                                                                 ` Parav Pandit
2019-08-13 16:37         ` Christoph Hellwig
2019-08-13 17:40           ` Greg Kroah-Hartman
2019-08-14  5:30             ` Parav Pandit
2019-08-13 14:48     ` Parav Pandit [this message]

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=AM0PR05MB48661804F69F24B08036E57DD1D20@AM0PR05MB4866.eurprd05.prod.outlook.com \
    --to=parav@mellanox.com \
    --cc=alex.williamson@redhat.com \
    --cc=cjia@nvidia.com \
    --cc=cohuck@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.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.