Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp7439512ybh; Thu, 8 Aug 2019 16:03:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqxvYolNedn7h1X20Jcdvlzo4zcLXIJFAfh9y83Raqa+AcBKTT9AG8tyFb3i5K7NHjyQ8pHw X-Received: by 2002:a17:902:b591:: with SMTP id a17mr15446444pls.96.1565305420493; Thu, 08 Aug 2019 16:03:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565305420; cv=none; d=google.com; s=arc-20160816; b=Cjj8Z0G1sKg+Kirfhq87GOAc2K5FzanhFEpojhUErjySPOJVkJhpIfr+fDJzsto+Bq bJUQYRxSaEJIy28s2d4RrpYe9eShzvKedtbDkEEUMhrdhCdZtLB3hsq3JL3gZpE+EoIX xfO7Uk7pcIGnousN5c5emXzw79EdtFot5LCXQ2HBhlh/QwjMaHE+Zebx7r9eTdeEOblE n9ZCtZNM8ub5mt5G3vIcmMQ5MpGMKBVCSv4Sq/B+76Bdk4O1d64qqycOjR33DlllKXlJ 9cQPc8ZPGvC3eE1YF/mfccwcS6cb1nAd33I4HUsNFR/0+w2qFnPFSxB0g4CFpM9dRePz zAjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date; bh=JN4QzvUpNGy6D1WPuUSK1Cd1lbBTd2xqi/44rzBMgqQ=; b=Nnn+LTPezKAGgMPLFuokSR6hcRuuNOg0g/iqEVsuw/I/JU+w6GYbJJQiHYBtmSTDLS Eari5r1aEjWqqh2f6jGpiUAy1/xEvH3g86jAj3LtxbFriJCuRkPBGGmmiuksdKC15B19 gOKg37I+3p7+8TX3BScbvG6fY7sEChqPfbKurIqJm3tK9NI8kqjjtAZ0gqvAKUgmcsXk hS9tKw8amM+UhTUjUwSF3o+mEvyYAfDom8ZCB65b/qEZKbu5JwsAC6g0q4VF2qkCLIif Da0qDHoikziV7kDKIVpiIcp7NAMdLs/DaJ9O8PjjAyjysMuCARNW1JodarxjKW+/TCoN Pw+Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f2si23155438plt.386.2019.08.08.16.03.23; Thu, 08 Aug 2019 16:03:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390463AbfHHXCt (ORCPT + 99 others); Thu, 8 Aug 2019 19:02:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45758 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731914AbfHHXCt (ORCPT ); Thu, 8 Aug 2019 19:02:49 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9871930EF4A0; Thu, 8 Aug 2019 23:02:48 +0000 (UTC) Received: from x1.home (ovpn-116-99.phx2.redhat.com [10.3.116.99]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1CA205D772; Thu, 8 Aug 2019 23:02:48 +0000 (UTC) Date: Thu, 8 Aug 2019 17:02:47 -0600 From: Alex Williamson To: Parav Pandit 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 Message-ID: <20190808170247.1fc2c4c4@x1.home> In-Reply-To: <20190808141255.45236-1-parav@mellanox.com> References: <20190802065905.45239-1-parav@mellanox.com> <20190808141255.45236-1-parav@mellanox.com> Organization: Red Hat MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 08 Aug 2019 23:02:48 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 8 Aug 2019 09:12:53 -0500 Parav Pandit 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. 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. 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? > 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(-) >