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