Re: [PATCH v4 2/6] vfio/mdev: Add "aggregation" attribute for supported mdev type

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

 



On Mon, 26 Nov 2018 16:48:52 +0800
Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx> wrote:

> For supported mdev driver to create aggregated device, this creates
> new "aggregation" attribute for target type, which will show maximum
> number of instance resources that can be aggregated.
> 
> Cc: Kirti Wankhede <kwankhede@xxxxxxxxxx>
> Cc: Alex Williamson <alex.williamson@xxxxxxxxxx>
> Cc: Kevin Tian <kevin.tian@xxxxxxxxx>
> Cc: Cornelia Huck <cohuck@xxxxxxxxxx>
> Signed-off-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx>
> ---
>  drivers/vfio/mdev/mdev_core.c    | 19 +++++++++++++++++++
>  drivers/vfio/mdev/mdev_private.h |  2 ++
>  drivers/vfio/mdev/mdev_sysfs.c   | 22 ++++++++++++++++++++++
>  include/linux/mdev.h             |  8 ++++++++
>  4 files changed, 51 insertions(+)

(...)

> @@ -145,6 +157,14 @@ struct mdev_type *add_mdev_supported_type(struct mdev_parent *parent,
>  	if (ret)
>  		goto attr_create_failed;
>  
> +	if (parent->ops->create_with_instances &&
> +	    parent->ops->max_aggregated_instances) {

Should we actually require that any driver providing
->create_with_instances must also provide ->max_aggregated_instances?

> +		ret = sysfs_create_file(&type->kobj,
> +					&mdev_type_attr_aggregation.attr);
> +		if (ret)
> +			goto attr_aggregate_failed;
> +	}
> +
>  	type->devices_kobj = kobject_create_and_add("devices", &type->kobj);
>  	if (!type->devices_kobj) {
>  		ret = -ENOMEM;
> @@ -165,6 +185,8 @@ struct mdev_type *add_mdev_supported_type(struct mdev_parent *parent,
>  attrs_failed:
>  	kobject_put(type->devices_kobj);
>  attr_devices_failed:
> +	sysfs_remove_file(&type->kobj, &mdev_type_attr_aggregation.attr);
> +attr_aggregate_failed:
>  	sysfs_remove_file(&type->kobj, &mdev_type_attr_create.attr);
>  attr_create_failed:
>  	kobject_del(&type->kobj);
> diff --git a/include/linux/mdev.h b/include/linux/mdev.h
> index c12c0bfc5598..66cfdb0bf0d6 100644
> --- a/include/linux/mdev.h
> +++ b/include/linux/mdev.h
> @@ -39,6 +39,11 @@ struct mdev_device;
>   *			      that is being created
>   *                      @instances: number of instances to aggregate
>   *			Returns integer: success (0) or error (< 0)
> + * @max_aggregated_instances: Return max number for aggregated resources
> + *			@kobj: kobject of type
> + *                      @dev: mdev parent device for target type
> + *                      @max: return max number of instances which can aggregate

s/which can aggregate/which can be aggregated/

> + *			Returns integer: success (0) or error (< 0)
>   * @remove:		Called to free resources in parent device's driver for a
>   *			a mediated device. It is mandatory to provide 'remove'
>   *			ops.
> @@ -82,6 +87,9 @@ struct mdev_parent_ops {
>  	int     (*create_with_instances)(struct kobject *kobj,
>  					 struct mdev_device *mdev,
>  					 unsigned int instances);
> +	int     (*max_aggregated_instances)(struct kobject *kobj,
> +					    struct device *dev,
> +					    unsigned int *max);
>  	int     (*remove)(struct mdev_device *mdev);
>  	int     (*open)(struct mdev_device *mdev);
>  	void    (*release)(struct mdev_device *mdev);




[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