Re: [PATCH v1] vfio-mdev: Switch to use new generic UUID API

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

 




On 2/6/2019 2:08 AM, Alex Williamson wrote:
> On Thu, 10 Jan 2019 21:00:27 +0200
> Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> 
>> There are new types and helpers that are supposed to be used in new code.
>>
>> As a preparation to get rid of legacy types and API functions do
>> the conversion here.
>>
>> Cc: Kirti Wankhede <kwankhede@xxxxxxxxxx>
>> Cc: Alex Williamson <alex.williamson@xxxxxxxxxx>
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
>> ---
>>  drivers/vfio/mdev/mdev_core.c    | 15 +++++++--------
>>  drivers/vfio/mdev/mdev_private.h |  4 ++--
>>  drivers/vfio/mdev/mdev_sysfs.c   |  6 +++---
>>  include/linux/mdev.h             |  2 +-
>>  samples/vfio-mdev/mtty.c         | 17 +++++++----------
>>  5 files changed, 20 insertions(+), 24 deletions(-)
> 
> Christoph noted a long line, in fact there are a few more than that,
> restoring half of the mtty changes back to the original:
> 
>  drivers/vfio/mdev/mdev_core.c    |   16 ++++++++--------
>  drivers/vfio/mdev/mdev_private.h |    5 +++--
>  drivers/vfio/mdev/mdev_sysfs.c   |    6 +++---
>  include/linux/mdev.h             |    2 +-
>  samples/vfio-mdev/mtty.c         |    8 ++++----
>  5 files changed, 19 insertions(+), 18 deletions(-)
> 
>> diff --git a/drivers/vfio/mdev/mdev_core.c b/drivers/vfio/mdev/mdev_core.c
>> index 0212f0ee8aea..49d3fdce4dfd 100644
>> --- a/drivers/vfio/mdev/mdev_core.c
>> +++ b/drivers/vfio/mdev/mdev_core.c
>> @@ -60,9 +60,9 @@ struct mdev_device *mdev_from_dev(struct device *dev)
>>  }
>>  EXPORT_SYMBOL(mdev_from_dev);
>>  
>> -uuid_le mdev_uuid(struct mdev_device *mdev)
>> +const guid_t *mdev_uuid(struct mdev_device *mdev)
>>  {
>> -	return mdev->uuid;
>> +	return &mdev->uuid;
>>  }
>>  EXPORT_SYMBOL(mdev_uuid);
> 
> NVIDIA folks, please note the API change.  It looks more than just
> gratuitous to me though to enable working with the guid helper
> functions.
> 

Noted. We will have fix for this in future releases.

Thanks,
Kirti

> Queued for v5.1 via the vfio next branch with white space fixes and
> Christoph's R-b.  Thanks,
> 
> Alex
> 
>>  
>> @@ -88,8 +88,7 @@ static void mdev_release_parent(struct kref *kref)
>>  	put_device(dev);
>>  }
>>  
>> -static
>> -inline struct mdev_parent *mdev_get_parent(struct mdev_parent *parent)
>> +static inline struct mdev_parent *mdev_get_parent(struct mdev_parent *parent)
>>  {
>>  	if (parent)
>>  		kref_get(&parent->ref);
>> @@ -276,7 +275,7 @@ 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, const guid_t *uuid)
>>  {
>>  	int ret;
>>  	struct mdev_device *mdev, *tmp;
>> @@ -291,7 +290,7 @@ int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid)
>>  
>>  	/* Check for duplicate */
>>  	list_for_each_entry(tmp, &mdev_list, next) {
>> -		if (!uuid_le_cmp(tmp->uuid, uuid)) {
>> +		if (guid_equal(&tmp->uuid, uuid)) {
>>  			mutex_unlock(&mdev_list_lock);
>>  			ret = -EEXIST;
>>  			goto mdev_fail;
>> @@ -305,7 +304,7 @@ int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid)
>>  		goto mdev_fail;
>>  	}
>>  
>> -	memcpy(&mdev->uuid, &uuid, sizeof(uuid_le));
>> +	guid_copy(&mdev->uuid, uuid);
>>  	list_add(&mdev->next, &mdev_list);
>>  	mutex_unlock(&mdev_list_lock);
>>  
>> @@ -315,7 +314,7 @@ int mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid)
>>  	mdev->dev.parent  = dev;
>>  	mdev->dev.bus     = &mdev_bus_type;
>>  	mdev->dev.release = mdev_device_release;
>> -	dev_set_name(&mdev->dev, "%pUl", uuid.b);
>> +	dev_set_name(&mdev->dev, "%pUl", uuid);
>>  
>>  	ret = device_register(&mdev->dev);
>>  	if (ret) {
>> diff --git a/drivers/vfio/mdev/mdev_private.h b/drivers/vfio/mdev/mdev_private.h
>> index b5819b7d7ef7..f20a99698b8d 100644
>> --- a/drivers/vfio/mdev/mdev_private.h
>> +++ b/drivers/vfio/mdev/mdev_private.h
>> @@ -28,7 +28,7 @@ struct mdev_parent {
>>  struct mdev_device {
>>  	struct device dev;
>>  	struct mdev_parent *parent;
>> -	uuid_le uuid;
>> +	guid_t uuid;
>>  	void *driver_data;
>>  	struct kref ref;
>>  	struct list_head next;
>> @@ -58,7 +58,7 @@ void parent_remove_sysfs_files(struct mdev_parent *parent);
>>  int  mdev_create_sysfs_files(struct device *dev, struct mdev_type *type);
>>  void mdev_remove_sysfs_files(struct device *dev, struct mdev_type *type);
>>  
>> -int  mdev_device_create(struct kobject *kobj, struct device *dev, uuid_le uuid);
>> +int  mdev_device_create(struct kobject *kobj, struct device *dev, const guid_t *uuid);
>>  int  mdev_device_remove(struct device *dev, bool force_remove);
>>  
>>  #endif /* MDEV_PRIVATE_H */
>> diff --git a/drivers/vfio/mdev/mdev_sysfs.c b/drivers/vfio/mdev/mdev_sysfs.c
>> index ce5dd219f2c8..5193a0e0ce5a 100644
>> --- a/drivers/vfio/mdev/mdev_sysfs.c
>> +++ b/drivers/vfio/mdev/mdev_sysfs.c
>> @@ -55,7 +55,7 @@ static ssize_t create_store(struct kobject *kobj, struct device *dev,
>>  			    const char *buf, size_t count)
>>  {
>>  	char *str;
>> -	uuid_le uuid;
>> +	guid_t uuid;
>>  	int ret;
>>  
>>  	if ((count < UUID_STRING_LEN) || (count > UUID_STRING_LEN + 1))
>> @@ -65,12 +65,12 @@ static ssize_t create_store(struct kobject *kobj, struct device *dev,
>>  	if (!str)
>>  		return -ENOMEM;
>>  
>> -	ret = uuid_le_to_bin(str, &uuid);
>> +	ret = guid_parse(str, &uuid);
>>  	kfree(str);
>>  	if (ret)
>>  		return ret;
>>  
>> -	ret = mdev_device_create(kobj, dev, uuid);
>> +	ret = mdev_device_create(kobj, dev, &uuid);
>>  	if (ret)
>>  		return ret;
>>  
>> diff --git a/include/linux/mdev.h b/include/linux/mdev.h
>> index b6e048e1045f..d7aee90e5da5 100644
>> --- a/include/linux/mdev.h
>> +++ b/include/linux/mdev.h
>> @@ -120,7 +120,7 @@ struct mdev_driver {
>>  
>>  extern void *mdev_get_drvdata(struct mdev_device *mdev);
>>  extern void mdev_set_drvdata(struct mdev_device *mdev, void *data);
>> -extern uuid_le mdev_uuid(struct mdev_device *mdev);
>> +extern const guid_t *mdev_uuid(struct mdev_device *mdev);
>>  
>>  extern struct bus_type mdev_bus_type;
>>  
>> diff --git a/samples/vfio-mdev/mtty.c b/samples/vfio-mdev/mtty.c
>> index f6732aa16bb1..0fee60c5b92b 100644
>> --- a/samples/vfio-mdev/mtty.c
>> +++ b/samples/vfio-mdev/mtty.c
>> @@ -156,15 +156,15 @@ static const struct file_operations vd_fops = {
>>  
>>  /* function prototypes */
>>  
>> -static int mtty_trigger_interrupt(uuid_le uuid);
>> +static int mtty_trigger_interrupt(const guid_t *uuid);
>>  
>>  /* Helper functions */
>> -static struct mdev_state *find_mdev_state_by_uuid(uuid_le uuid)
>> +static struct mdev_state *find_mdev_state_by_uuid(const guid_t *uuid)
>>  {
>>  	struct mdev_state *mds;
>>  
>>  	list_for_each_entry(mds, &mdev_devices_list, next) {
>> -		if (uuid_le_cmp(mdev_uuid(mds->mdev), uuid) == 0)
>> +		if (guid_equal(mdev_uuid(mds->mdev), uuid))
>>  			return mds;
>>  	}
>>  
>> @@ -341,8 +341,7 @@ static void handle_bar_write(unsigned int index, struct mdev_state *mdev_state,
>>  				pr_err("Serial port %d: Fifo level trigger\n",
>>  					index);
>>  #endif
>> -				mtty_trigger_interrupt(
>> -						mdev_uuid(mdev_state->mdev));
>> +				mtty_trigger_interrupt(mdev_uuid(mdev_state->mdev));
>>  			}
>>  		} else {
>>  #if defined(DEBUG_INTR)
>> @@ -356,8 +355,7 @@ static void handle_bar_write(unsigned int index, struct mdev_state *mdev_state,
>>  			 */
>>  			if (mdev_state->s[index].uart_reg[UART_IER] &
>>  								UART_IER_RLSI)
>> -				mtty_trigger_interrupt(
>> -						mdev_uuid(mdev_state->mdev));
>> +				mtty_trigger_interrupt(mdev_uuid(mdev_state->mdev));
>>  		}
>>  		mutex_unlock(&mdev_state->rxtx_lock);
>>  		break;
>> @@ -507,8 +505,7 @@ static void handle_bar_read(unsigned int index, struct mdev_state *mdev_state,
>>  #endif
>>  			if (mdev_state->s[index].uart_reg[UART_IER] &
>>  							 UART_IER_THRI)
>> -				mtty_trigger_interrupt(
>> -					mdev_uuid(mdev_state->mdev));
>> +				mtty_trigger_interrupt(mdev_uuid(mdev_state->mdev));
>>  		}
>>  		mutex_unlock(&mdev_state->rxtx_lock);
>>  
>> @@ -1032,7 +1029,7 @@ static int mtty_set_irqs(struct mdev_device *mdev, uint32_t flags,
>>  	return ret;
>>  }
>>  
>> -static int mtty_trigger_interrupt(uuid_le uuid)
>> +static int mtty_trigger_interrupt(const guid_t *uuid)
>>  {
>>  	int ret = -1;
>>  	struct mdev_state *mdev_state;
> 



[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