All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Farman <farman@linux.ibm.com>
To: Kirti Wankhede <kwankhede@nvidia.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Liu Yi L <yi.l.liu@intel.com>, Halil Pasic <pasic@linux.ibm.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	Jonathan Corbet <corbet@lwn.net>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	Christoph Hellwig <hch@lst.de>, Neo Jia <cjia@nvidia.com>,
	Dheeraj Nigam <dnigam@nvidia.com>,
	Tarun Gupta <targupta@nvidia.com>
Subject: Re: [PATCH v1 14/18] vfio/mdev: Add mdev available instance checking to the core
Date: Mon, 06 Jun 2022 16:23:36 -0400	[thread overview]
Message-ID: <c818e1ef24c466a3b1d14d4ab10163d5e349a3b4.camel@linux.ibm.com> (raw)
In-Reply-To: <63a87e1e-7d99-b091-4c6b-fa25dd7c5211@nvidia.com>

On Tue, 2022-06-07 at 01:32 +0530, Kirti Wankhede wrote:
> 
> On 6/2/2022 10:49 PM, Eric Farman wrote:
> > From: Jason Gunthorpe <jgg@nvidia.com>
> > 
> > Many of the mdev drivers use a simple counter for keeping track of
> > the
> > available instances. Move this code to the core code and store the
> > counter
> > in the mdev_type. Implement it using correct locking, fixing mdpy.
> > 
> > Drivers provide a get_available() callback to set the number of
> > available
> > instances for their mtypes which is fixed at registration time. The
> > core
> > provides a standard sysfs attribute to return the
> > available_instances.
> > 
> > Cc: Kirti Wankhede <kwankhede@nvidia.com>
> > Cc: Jonathan Corbet <corbet@lwn.net>
> > Cc: Tony Krowiak <akrowiak@linux.ibm.com>
> > Cc: Jason Herne <jjherne@linux.ibm.com>
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> > Link: 
> > https://lore.kernel.org/r/7-v3-57c1502c62fd+2190-ccw_mdev_jgg@nvidia.com/
> > [farman: added Cc: tags]
> > Signed-off-by: Eric Farman <farman@linux.ibm.com>
> > ---
> >   .../driver-api/vfio-mediated-device.rst       |  4 +-
> >   drivers/s390/cio/vfio_ccw_drv.c               |  1 -
> >   drivers/s390/cio/vfio_ccw_ops.c               | 26 ++++---------
> >   drivers/s390/cio/vfio_ccw_private.h           |  2 -
> >   drivers/s390/crypto/vfio_ap_ops.c             | 32 ++++--------
> > ----
> >   drivers/s390/crypto/vfio_ap_private.h         |  2 -
> >   drivers/vfio/mdev/mdev_core.c                 | 11 +++++-
> >   drivers/vfio/mdev/mdev_private.h              |  2 +
> >   drivers/vfio/mdev/mdev_sysfs.c                | 37
> > +++++++++++++++++++
> >   include/linux/mdev.h                          |  2 +
> >   samples/vfio-mdev/mdpy.c                      | 22 +++--------
> >   11 files changed, 76 insertions(+), 65 deletions(-)
> > 
> > diff --git a/Documentation/driver-api/vfio-mediated-device.rst
> > b/Documentation/driver-api/vfio-mediated-device.rst
> > index f410a1cd98bb..a4f7f1362fa8 100644
> > --- a/Documentation/driver-api/vfio-mediated-device.rst
> > +++ b/Documentation/driver-api/vfio-mediated-device.rst
> > @@ -106,6 +106,7 @@ structure to represent a mediated device's
> > driver::
> >   	     int  (*probe)  (struct mdev_device *dev);
> >   	     void (*remove) (struct mdev_device *dev);
> >   	     struct device_driver    driver;
> > +	     unsigned int (*get_available)(struct mdev_type *mtype);
> >        };
> > 
> 
> This patch conflicts with Christoph Hellwig's patch. I see 
> 'supported_type_groups' is not is above structure, I beleive that
> your 
> patch is applied on top of Christoph's patch series.
> 
> but then in below part of code, 'add_mdev_supported_type' has also
> being 
> removed in Christoph's patch. So this patch would not get applied
> cleanly.

Apologies. This series was fit to 5.18 as the merge window progressed.
Both this patch and the previous one have to adjust to the removal of
mdev_parent_ops that came about from 

commit 6b42f491e17ce13f5ff7f2d1f49c73a0f4c47b20
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Mon Apr 11 16:14:01 2022 +0200

    vfio/mdev: Remove mdev_parent_ops

I have this rebased for v2.

Eric

> 
> Thanks,
> Kirti
> 
> > +/* mdev_type attribute used by drivers that have an
> > get_available() op */
> > +static ssize_t available_instances_show(struct mdev_type *mtype,
> > +					struct mdev_type_attribute
> > *attr,
> > +					char *buf)
> > +{
> > +	unsigned int available;
> > +
> > +	mutex_lock(&mdev_list_lock);
> > +	available = mtype->available;
> > +	mutex_unlock(&mdev_list_lock);
> > +
> > +	return sysfs_emit(buf, "%u\n", available);
> > +}
> > +static MDEV_TYPE_ATTR_RO(available_instances);
> > +static umode_t available_instances_is_visible(struct kobject
> > *kobj,
> > +					      struct attribute *attr,
> > int n)
> > +{
> > +	struct mdev_type *type = to_mdev_type(kobj);
> > +
> > +	if (!type->parent->ops->device_driver->get_available)
> > +		return 0;
> > +	return attr->mode;
> > +}
> > +static struct attribute *mdev_types_name_attrs[] = {
> > +	&mdev_type_attr_available_instances.attr,
> > +	NULL,
> > +};
> > +static struct attribute_group mdev_type_available_instances_group
> > = {
> > +	.attrs = mdev_types_name_attrs,
> > +	.is_visible = available_instances_is_visible,
> > +};
> > +
> >   static const struct attribute_group *mdev_type_groups[] = {
> >   	&mdev_type_std_group,
> > +	&mdev_type_available_instances_group,
> >   	NULL,
> >   };
> >   
> > @@ -136,6 +169,10 @@ static struct mdev_type
> > *add_mdev_supported_type(struct mdev_parent *parent,
> >   	mdev_get_parent(parent);
> >   	type->type_group_id = type_group_id;
> >   
> > +	if (parent->ops->device_driver->get_available)
> > +		type->available =
> > +			parent->ops->device_driver-
> > >get_available(type);
> > +
> >   	ret = kobject_init_and_add(&type->kobj, &mdev_type_ktype, NULL,
> >   				   "%s-%s", dev_driver_string(parent-
> > >dev),
> >   				   group->name);
> > diff --git a/include/linux/mdev.h b/include/linux/mdev.h
> > index 14655215417b..0ce1bb3dabd0 100644
> > --- a/include/linux/mdev.h
> > +++ b/include/linux/mdev.h
> > @@ -120,12 +120,14 @@ struct mdev_type_attribute {
> >    * @probe: called when new device created
> >    * @remove: called when device removed
> >    * @driver: device driver structure
> > + * @get_available: Return the max number of instances that can be
> > created
> >    *
> >    **/
> >   struct mdev_driver {
> >   	int (*probe)(struct mdev_device *dev);
> >   	void (*remove)(struct mdev_device *dev);
> >   	struct device_driver driver;
> > +	unsigned int (*get_available)(struct mdev_type *mtype);
> >   };
> >   


  reply	other threads:[~2022-06-06 20:25 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-02 17:19 [PATCH v1 00/18] VFIO ccw/mdev rework Eric Farman
2022-06-02 17:19 ` [PATCH v1 01/18] vfio/ccw: Remove UUID from s390 debug log Eric Farman
2022-06-02 18:55   ` Jason Gunthorpe
2022-06-02 19:51   ` Matthew Rosato
2022-06-03 19:03     ` Eric Farman
2022-06-06 20:45       ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 02/18] vfio/ccw: Fix FSM state if mdev probe fails Eric Farman
2022-06-02 18:58   ` Jason Gunthorpe
2022-06-03 13:21   ` Matthew Rosato
2022-06-03 19:12     ` Eric Farman
2022-06-06 20:44       ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 03/18] vfio/ccw: Ensure mdev->dev is cleared on mdev remove Eric Farman
2022-06-03 13:25   ` Matthew Rosato
2022-06-03 13:37     ` Jason Gunthorpe
2022-06-03 15:20       ` Tony Krowiak
2022-06-02 17:19 ` [PATCH v1 04/18] vfio/ccw: Do not change FSM state in subchannel event Eric Farman
2022-06-02 17:19 ` [PATCH v1 05/18] vfio/ccw: Remove private->mdev Eric Farman
2022-06-02 19:02   ` Jason Gunthorpe
2022-06-02 19:13     ` Eric Farman
2022-06-02 17:19 ` [PATCH v1 06/18] vfio/ccw: Pass enum to FSM event jumptable Eric Farman
2022-06-02 19:02   ` Jason Gunthorpe
2022-06-02 19:22   ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 07/18] vfio/ccw: Flatten MDEV device (un)register Eric Farman
2022-06-02 19:03   ` Jason Gunthorpe
2022-06-02 19:14   ` Matthew Rosato
2022-06-03 20:38     ` Eric Farman
2022-06-02 17:19 ` [PATCH v1 08/18] vfio/ccw: Check that private pointer is not NULL Eric Farman
2022-06-02 19:04   ` Matthew Rosato
2022-06-02 19:05   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 09/18] vfio/ccw: Create an OPEN FSM Event Eric Farman
2022-06-02 19:08   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 10/18] vfio/ccw: Create a CLOSE FSM event Eric Farman
2022-06-02 19:10   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 11/18] vfio/ccw: Refactor vfio_ccw_mdev_reset Eric Farman
2022-06-02 19:11   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 12/18] vfio/ccw: Move FSM open/close to MDEV open/close Eric Farman
2022-06-02 19:14   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 13/18] vfio/mdev: Consolidate all the device_api sysfs into the core code Eric Farman
2022-06-03  6:36   ` Christoph Hellwig
2022-06-03 14:55   ` Tony Krowiak
2022-06-06 19:43   ` Kirti Wankhede
2022-06-10  7:22   ` Tian, Kevin
2022-06-02 17:19 ` [PATCH v1 14/18] vfio/mdev: Add mdev available instance checking to the core Eric Farman
2022-06-03 15:02   ` Tony Krowiak
2022-06-06 20:02   ` Kirti Wankhede
2022-06-06 20:23     ` Eric Farman [this message]
2022-06-06 20:37       ` Matthew Rosato
2022-06-10  7:43       ` Tian, Kevin
2022-06-13  6:46         ` Christoph Hellwig
2022-06-13 14:08           ` Eric Farman
2022-06-02 17:19 ` [PATCH v1 15/18] vfio/ccw: Manage private with mdev Eric Farman
2022-06-02 17:19 ` [PATCH v1 16/18] vfio/ccw: Create a get_private routine Eric Farman
2022-06-02 19:17   ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 17/18] vfio: Export vfio_device_try_get() Eric Farman
2022-06-03  7:46   ` Cornelia Huck
2022-06-02 17:19 ` [PATCH v1 18/18] vfio/ccw: Manage ccw/mdev reference counts Eric Farman
2022-06-02 19:20   ` Jason Gunthorpe
2022-06-02 19:29 ` [PATCH v1 00/18] VFIO ccw/mdev rework Jason Gunthorpe
2022-06-10  4:11 ` Yi Liu

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=c818e1ef24c466a3b1d14d4ab10163d5e349a3b4.camel@linux.ibm.com \
    --to=farman@linux.ibm.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=cjia@nvidia.com \
    --cc=corbet@lwn.net \
    --cc=dnigam@nvidia.com \
    --cc=hch@lst.de \
    --cc=jgg@nvidia.com \
    --cc=jjherne@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=targupta@nvidia.com \
    --cc=yi.l.liu@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.