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

login
register
mail settings
Submitter Andy Shevchenko
Date Jan. 10, 2019, 7 p.m.
Message ID <20190110190027.78925-1-andriy.shevchenko@linux.intel.com>
Download mbox | patch
Permalink /patch/697207/
State New
Headers show

Comments

Andy Shevchenko - Jan. 10, 2019, 7 p.m.
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@nvidia.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 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 Hellwig - Jan. 21, 2019, 8:45 a.m.
On Thu, Jan 10, 2019 at 09:00:27PM +0200, Andy Shevchenko wrote:
> -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)

This adds an overly long line.

Otherwise looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
Alex Williamson - Feb. 5, 2019, 8:38 p.m.
On Thu, 10 Jan 2019 21:00:27 +0200
Andy Shevchenko <andriy.shevchenko@linux.intel.com> 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@nvidia.com>
> Cc: Alex Williamson <alex.williamson@redhat.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  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.

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;
Kirti Wankhede - Feb. 12, 2019, 7:43 p.m.
On 2/6/2019 2:08 AM, Alex Williamson wrote:
> On Thu, 10 Jan 2019 21:00:27 +0200
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> 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@nvidia.com>
>> Cc: Alex Williamson <alex.williamson@redhat.com>
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>> ---
>>  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;
>

Patch

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);
 
@@ -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;