Skip to content

Commit

Permalink
IB: convert struct class_device to struct device
Browse files Browse the repository at this point in the history
This converts the main ib_device to use struct device instead of struct
class_device as class_device is going away.

Signed-off-by: Tony Jones <[email protected]>
Signed-off-by: Kay Sievers <[email protected]>
Cc: Roland Dreier <[email protected]>
Cc: Sean Hefty <[email protected]>
Cc: Hal Rosenstock <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
tonyj-suse authored and gregkh committed Apr 20, 2008
1 parent c4c66cf commit f4e91eb
Show file tree
Hide file tree
Showing 15 changed files with 352 additions and 319 deletions.
76 changes: 40 additions & 36 deletions drivers/infiniband/core/sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,17 +427,17 @@ static struct kobj_type port_type = {
.default_attrs = port_default_attrs
};

static void ib_device_release(struct class_device *cdev)
static void ib_device_release(struct device *device)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);

kfree(dev);
}

static int ib_device_uevent(struct class_device *cdev,
static int ib_device_uevent(struct device *device,
struct kobj_uevent_env *env)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);

if (add_uevent_var(env, "NAME=%s", dev->name))
return -ENOMEM;
Expand Down Expand Up @@ -567,9 +567,10 @@ static int add_port(struct ib_device *device, int port_num)
return ret;
}

static ssize_t show_node_type(struct class_device *cdev, char *buf)
static ssize_t show_node_type(struct device *device,
struct device_attribute *attr, char *buf)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);

if (!ibdev_is_alive(dev))
return -ENODEV;
Expand All @@ -583,9 +584,10 @@ static ssize_t show_node_type(struct class_device *cdev, char *buf)
}
}

static ssize_t show_sys_image_guid(struct class_device *cdev, char *buf)
static ssize_t show_sys_image_guid(struct device *device,
struct device_attribute *dev_attr, char *buf)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);
struct ib_device_attr attr;
ssize_t ret;

Expand All @@ -603,9 +605,10 @@ static ssize_t show_sys_image_guid(struct class_device *cdev, char *buf)
be16_to_cpu(((__be16 *) &attr.sys_image_guid)[3]));
}

static ssize_t show_node_guid(struct class_device *cdev, char *buf)
static ssize_t show_node_guid(struct device *device,
struct device_attribute *attr, char *buf)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);

if (!ibdev_is_alive(dev))
return -ENODEV;
Expand All @@ -617,17 +620,19 @@ static ssize_t show_node_guid(struct class_device *cdev, char *buf)
be16_to_cpu(((__be16 *) &dev->node_guid)[3]));
}

static ssize_t show_node_desc(struct class_device *cdev, char *buf)
static ssize_t show_node_desc(struct device *device,
struct device_attribute *attr, char *buf)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);

return sprintf(buf, "%.64s\n", dev->node_desc);
}

static ssize_t set_node_desc(struct class_device *cdev, const char *buf,
size_t count)
static ssize_t set_node_desc(struct device *device,
struct device_attribute *attr,
const char *buf, size_t count)
{
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
struct ib_device *dev = container_of(device, struct ib_device, dev);
struct ib_device_modify desc = {};
int ret;

Expand All @@ -642,44 +647,43 @@ static ssize_t set_node_desc(struct class_device *cdev, const char *buf,
return count;
}

static CLASS_DEVICE_ATTR(node_type, S_IRUGO, show_node_type, NULL);
static CLASS_DEVICE_ATTR(sys_image_guid, S_IRUGO, show_sys_image_guid, NULL);
static CLASS_DEVICE_ATTR(node_guid, S_IRUGO, show_node_guid, NULL);
static CLASS_DEVICE_ATTR(node_desc, S_IRUGO | S_IWUSR, show_node_desc,
set_node_desc);

static struct class_device_attribute *ib_class_attributes[] = {
&class_device_attr_node_type,
&class_device_attr_sys_image_guid,
&class_device_attr_node_guid,
&class_device_attr_node_desc
static DEVICE_ATTR(node_type, S_IRUGO, show_node_type, NULL);
static DEVICE_ATTR(sys_image_guid, S_IRUGO, show_sys_image_guid, NULL);
static DEVICE_ATTR(node_guid, S_IRUGO, show_node_guid, NULL);
static DEVICE_ATTR(node_desc, S_IRUGO | S_IWUSR, show_node_desc, set_node_desc);

static struct device_attribute *ib_class_attributes[] = {
&dev_attr_node_type,
&dev_attr_sys_image_guid,
&dev_attr_node_guid,
&dev_attr_node_desc
};

static struct class ib_class = {
.name = "infiniband",
.release = ib_device_release,
.uevent = ib_device_uevent,
.dev_release = ib_device_release,
.dev_uevent = ib_device_uevent,
};

int ib_device_register_sysfs(struct ib_device *device)
{
struct class_device *class_dev = &device->class_dev;
struct device *class_dev = &device->dev;
int ret;
int i;

class_dev->class = &ib_class;
class_dev->class_data = device;
class_dev->dev = device->dma_device;
strlcpy(class_dev->class_id, device->name, BUS_ID_SIZE);
class_dev->driver_data = device;
class_dev->parent = device->dma_device;
strlcpy(class_dev->bus_id, device->name, BUS_ID_SIZE);

INIT_LIST_HEAD(&device->port_list);

ret = class_device_register(class_dev);
ret = device_register(class_dev);
if (ret)
goto err;

for (i = 0; i < ARRAY_SIZE(ib_class_attributes); ++i) {
ret = class_device_create_file(class_dev, ib_class_attributes[i]);
ret = device_create_file(class_dev, ib_class_attributes[i]);
if (ret)
goto err_unregister;
}
Expand Down Expand Up @@ -723,7 +727,7 @@ int ib_device_register_sysfs(struct ib_device *device)
kobject_put(&class_dev->kobj);

err_unregister:
class_device_unregister(class_dev);
device_unregister(class_dev);

err:
return ret;
Expand All @@ -744,7 +748,7 @@ void ib_device_unregister_sysfs(struct ib_device *device)
}

kobject_put(device->ports_parent);
class_device_unregister(&device->class_dev);
device_unregister(&device->dev);
}

int ib_sysfs_setup(void)
Expand Down
62 changes: 31 additions & 31 deletions drivers/infiniband/core/ucm.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ MODULE_LICENSE("Dual BSD/GPL");

struct ib_ucm_device {
int devnum;
struct cdev dev;
struct class_device class_dev;
struct cdev cdev;
struct device dev;
struct ib_device *ib_dev;
};

Expand Down Expand Up @@ -1171,7 +1171,7 @@ static int ib_ucm_open(struct inode *inode, struct file *filp)

filp->private_data = file;
file->filp = filp;
file->device = container_of(inode->i_cdev, struct ib_ucm_device, dev);
file->device = container_of(inode->i_cdev, struct ib_ucm_device, cdev);

return 0;
}
Expand Down Expand Up @@ -1202,14 +1202,14 @@ static int ib_ucm_close(struct inode *inode, struct file *filp)
return 0;
}

static void ucm_release_class_dev(struct class_device *class_dev)
static void ib_ucm_release_dev(struct device *dev)
{
struct ib_ucm_device *dev;
struct ib_ucm_device *ucm_dev;

dev = container_of(class_dev, struct ib_ucm_device, class_dev);
cdev_del(&dev->dev);
clear_bit(dev->devnum, dev_map);
kfree(dev);
ucm_dev = container_of(dev, struct ib_ucm_device, dev);
cdev_del(&ucm_dev->cdev);
clear_bit(ucm_dev->devnum, dev_map);
kfree(ucm_dev);
}

static const struct file_operations ucm_fops = {
Expand All @@ -1220,14 +1220,15 @@ static const struct file_operations ucm_fops = {
.poll = ib_ucm_poll,
};

static ssize_t show_ibdev(struct class_device *class_dev, char *buf)
static ssize_t show_ibdev(struct device *dev, struct device_attribute *attr,
char *buf)
{
struct ib_ucm_device *dev;
struct ib_ucm_device *ucm_dev;

dev = container_of(class_dev, struct ib_ucm_device, class_dev);
return sprintf(buf, "%s\n", dev->ib_dev->name);
ucm_dev = container_of(dev, struct ib_ucm_device, dev);
return sprintf(buf, "%s\n", ucm_dev->ib_dev->name);
}
static CLASS_DEVICE_ATTR(ibdev, S_IRUGO, show_ibdev, NULL);
static DEVICE_ATTR(ibdev, S_IRUGO, show_ibdev, NULL);

static void ib_ucm_add_one(struct ib_device *device)
{
Expand All @@ -1249,32 +1250,31 @@ static void ib_ucm_add_one(struct ib_device *device)

set_bit(ucm_dev->devnum, dev_map);

cdev_init(&ucm_dev->dev, &ucm_fops);
ucm_dev->dev.owner = THIS_MODULE;
kobject_set_name(&ucm_dev->dev.kobj, "ucm%d", ucm_dev->devnum);
if (cdev_add(&ucm_dev->dev, IB_UCM_BASE_DEV + ucm_dev->devnum, 1))
cdev_init(&ucm_dev->cdev, &ucm_fops);
ucm_dev->cdev.owner = THIS_MODULE;
kobject_set_name(&ucm_dev->cdev.kobj, "ucm%d", ucm_dev->devnum);
if (cdev_add(&ucm_dev->cdev, IB_UCM_BASE_DEV + ucm_dev->devnum, 1))
goto err;

ucm_dev->class_dev.class = &cm_class;
ucm_dev->class_dev.dev = device->dma_device;
ucm_dev->class_dev.devt = ucm_dev->dev.dev;
ucm_dev->class_dev.release = ucm_release_class_dev;
snprintf(ucm_dev->class_dev.class_id, BUS_ID_SIZE, "ucm%d",
ucm_dev->dev.class = &cm_class;
ucm_dev->dev.parent = device->dma_device;
ucm_dev->dev.devt = ucm_dev->cdev.dev;
ucm_dev->dev.release = ib_ucm_release_dev;
snprintf(ucm_dev->dev.bus_id, BUS_ID_SIZE, "ucm%d",
ucm_dev->devnum);
if (class_device_register(&ucm_dev->class_dev))
if (device_register(&ucm_dev->dev))
goto err_cdev;

if (class_device_create_file(&ucm_dev->class_dev,
&class_device_attr_ibdev))
goto err_class;
if (device_create_file(&ucm_dev->dev, &dev_attr_ibdev))
goto err_dev;

ib_set_client_data(device, &ucm_client, ucm_dev);
return;

err_class:
class_device_unregister(&ucm_dev->class_dev);
err_dev:
device_unregister(&ucm_dev->dev);
err_cdev:
cdev_del(&ucm_dev->dev);
cdev_del(&ucm_dev->cdev);
clear_bit(ucm_dev->devnum, dev_map);
err:
kfree(ucm_dev);
Expand All @@ -1288,7 +1288,7 @@ static void ib_ucm_remove_one(struct ib_device *device)
if (!ucm_dev)
return;

class_device_unregister(&ucm_dev->class_dev);
device_unregister(&ucm_dev->dev);
}

static ssize_t show_abi_version(struct class *class, char *buf)
Expand Down
Loading

0 comments on commit f4e91eb

Please sign in to comment.