Re: [PATCH v4 1/6] vfio/mdev: Add new "aggregate" parameter for mdev create

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018.11.26 13:32:20 +0100, Cornelia Huck wrote:
> > @@ -104,12 +104,17 @@ static inline void mdev_put_parent(struct mdev_parent *parent)
> >  }
> >  
> >  static int mdev_device_create_ops(struct kobject *kobj,
> > -				  struct mdev_device *mdev)
> > +				  struct mdev_device *mdev,
> > +				  unsigned int instances)
> >  {
> >  	struct mdev_parent *parent = mdev->parent;
> >  	int ret;
> >  
> > -	ret = parent->ops->create(kobj, mdev);
> > +	if (instances > 1) {
> > +		ret = parent->ops->create_with_instances(kobj, mdev,
> > +							 instances);
> > +	} else
> > +		ret = parent->ops->create(kobj, mdev);
> 
> So, that implies that a driver that supports aggregation needs to
> provide both ->create_with_instances and ->create? Won't that lead
> to code duplication in those drivers?
> 
> (I'd probably just call ->create_with_instances if it exists and else
> use ->create, as you already do sanity checks in mdev_device_create().)
>

yeah, agreed, I think that may also simplify for future new mdev driver.

> > @@ -276,7 +281,8 @@ static void mdev_device_release(struct device *dev)
> >  	kfree(mdev);
> >  }
> >  
> > -int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid)
> > +int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid,
> > +		       unsigned int instances)
> >  {
> >  	int ret;
> >  	struct mdev_device *mdev, *tmp;
> > @@ -287,6 +293,12 @@ int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid)
> >  	if (!parent)
> >  		return -EINVAL;
> >  
> > +	if (instances > 1 &&
> > +	    !parent->ops->create_with_instances) {
> 
> Maybe log a message here, so that the user can get an idea what went
> wrong?
>

yep, will add.

> > diff --git a/include/linux/mdev.h b/include/linux/mdev.h
> > index b6e048e1045f..c12c0bfc5598 100644
> > --- a/include/linux/mdev.h
> > +++ b/include/linux/mdev.h
> > @@ -31,6 +31,14 @@ struct mdev_device;
> >   *			@mdev: mdev_device structure on of mediated device
> >   *			      that is being created
> >   *			Returns integer: success (0) or error (< 0)
> > + * @create_with_instances: Allocate aggregated instances' resources in parent device's
> > + *			driver for a particular mediated device. Optional if aggregated
> > + *                      resources are not supported.
> > + *			@kobj: kobject of type for which 'create' is called.
> > + *			@mdev: mdev_device structure on of mediated device
> 
> s/on of/of/
> 
> (Yes, I know that @create has the same typo :)
> 

blindly copied that one ;)

Thanks for the review!

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux