]> Pileus Git - ~andy/linux/blob - drivers/base/core.c
a31ea193fba04b7f6fe4258ee71ff8874834eec5
[~andy/linux] / drivers / base / core.c
1 /*
2  * drivers/base/core.c - core driver model code (device registration, etc)
3  *
4  * Copyright (c) 2002-3 Patrick Mochel
5  * Copyright (c) 2002-3 Open Source Development Labs
6  * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
7  * Copyright (c) 2006 Novell, Inc.
8  *
9  * This file is released under the GPLv2
10  *
11  */
12
13 #include <linux/device.h>
14 #include <linux/err.h>
15 #include <linux/init.h>
16 #include <linux/module.h>
17 #include <linux/slab.h>
18 #include <linux/string.h>
19 #include <linux/kdev_t.h>
20 #include <linux/notifier.h>
21 #include <linux/genhd.h>
22 #include <linux/kallsyms.h>
23 #include <linux/mutex.h>
24 #include <linux/async.h>
25
26 #include "base.h"
27 #include "power/power.h"
28
29 #ifdef CONFIG_SYSFS_DEPRECATED
30 #ifdef CONFIG_SYSFS_DEPRECATED_V2
31 long sysfs_deprecated = 1;
32 #else
33 long sysfs_deprecated = 0;
34 #endif
35 static __init int sysfs_deprecated_setup(char *arg)
36 {
37         return strict_strtol(arg, 10, &sysfs_deprecated);
38 }
39 early_param("sysfs.deprecated", sysfs_deprecated_setup);
40 #endif
41
42 int (*platform_notify)(struct device *dev) = NULL;
43 int (*platform_notify_remove)(struct device *dev) = NULL;
44 static struct kobject *dev_kobj;
45 struct kobject *sysfs_dev_char_kobj;
46 struct kobject *sysfs_dev_block_kobj;
47
48 #ifdef CONFIG_BLOCK
49 static inline int device_is_not_partition(struct device *dev)
50 {
51         return !(dev->type == &part_type);
52 }
53 #else
54 static inline int device_is_not_partition(struct device *dev)
55 {
56         return 1;
57 }
58 #endif
59
60 /**
61  * dev_driver_string - Return a device's driver name, if at all possible
62  * @dev: struct device to get the name of
63  *
64  * Will return the device's driver's name if it is bound to a device.  If
65  * the device is not bound to a device, it will return the name of the bus
66  * it is attached to.  If it is not attached to a bus either, an empty
67  * string will be returned.
68  */
69 const char *dev_driver_string(const struct device *dev)
70 {
71         struct device_driver *drv;
72
73         /* dev->driver can change to NULL underneath us because of unbinding,
74          * so be careful about accessing it.  dev->bus and dev->class should
75          * never change once they are set, so they don't need special care.
76          */
77         drv = ACCESS_ONCE(dev->driver);
78         return drv ? drv->name :
79                         (dev->bus ? dev->bus->name :
80                         (dev->class ? dev->class->name : ""));
81 }
82 EXPORT_SYMBOL(dev_driver_string);
83
84 #define to_dev(obj) container_of(obj, struct device, kobj)
85 #define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr)
86
87 static ssize_t dev_attr_show(struct kobject *kobj, struct attribute *attr,
88                              char *buf)
89 {
90         struct device_attribute *dev_attr = to_dev_attr(attr);
91         struct device *dev = to_dev(kobj);
92         ssize_t ret = -EIO;
93
94         if (dev_attr->show)
95                 ret = dev_attr->show(dev, dev_attr, buf);
96         if (ret >= (ssize_t)PAGE_SIZE) {
97                 print_symbol("dev_attr_show: %s returned bad count\n",
98                                 (unsigned long)dev_attr->show);
99         }
100         return ret;
101 }
102
103 static ssize_t dev_attr_store(struct kobject *kobj, struct attribute *attr,
104                               const char *buf, size_t count)
105 {
106         struct device_attribute *dev_attr = to_dev_attr(attr);
107         struct device *dev = to_dev(kobj);
108         ssize_t ret = -EIO;
109
110         if (dev_attr->store)
111                 ret = dev_attr->store(dev, dev_attr, buf, count);
112         return ret;
113 }
114
115 static const struct sysfs_ops dev_sysfs_ops = {
116         .show   = dev_attr_show,
117         .store  = dev_attr_store,
118 };
119
120 #define to_ext_attr(x) container_of(x, struct dev_ext_attribute, attr)
121
122 ssize_t device_store_ulong(struct device *dev,
123                            struct device_attribute *attr,
124                            const char *buf, size_t size)
125 {
126         struct dev_ext_attribute *ea = to_ext_attr(attr);
127         char *end;
128         unsigned long new = simple_strtoul(buf, &end, 0);
129         if (end == buf)
130                 return -EINVAL;
131         *(unsigned long *)(ea->var) = new;
132         /* Always return full write size even if we didn't consume all */
133         return size;
134 }
135 EXPORT_SYMBOL_GPL(device_store_ulong);
136
137 ssize_t device_show_ulong(struct device *dev,
138                           struct device_attribute *attr,
139                           char *buf)
140 {
141         struct dev_ext_attribute *ea = to_ext_attr(attr);
142         return snprintf(buf, PAGE_SIZE, "%lx\n", *(unsigned long *)(ea->var));
143 }
144 EXPORT_SYMBOL_GPL(device_show_ulong);
145
146 ssize_t device_store_int(struct device *dev,
147                          struct device_attribute *attr,
148                          const char *buf, size_t size)
149 {
150         struct dev_ext_attribute *ea = to_ext_attr(attr);
151         char *end;
152         long new = simple_strtol(buf, &end, 0);
153         if (end == buf || new > INT_MAX || new < INT_MIN)
154                 return -EINVAL;
155         *(int *)(ea->var) = new;
156         /* Always return full write size even if we didn't consume all */
157         return size;
158 }
159 EXPORT_SYMBOL_GPL(device_store_int);
160
161 ssize_t device_show_int(struct device *dev,
162                         struct device_attribute *attr,
163                         char *buf)
164 {
165         struct dev_ext_attribute *ea = to_ext_attr(attr);
166
167         return snprintf(buf, PAGE_SIZE, "%d\n", *(int *)(ea->var));
168 }
169 EXPORT_SYMBOL_GPL(device_show_int);
170
171 /**
172  *      device_release - free device structure.
173  *      @kobj:  device's kobject.
174  *
175  *      This is called once the reference count for the object
176  *      reaches 0. We forward the call to the device's release
177  *      method, which should handle actually freeing the structure.
178  */
179 static void device_release(struct kobject *kobj)
180 {
181         struct device *dev = to_dev(kobj);
182         struct device_private *p = dev->p;
183
184         if (dev->release)
185                 dev->release(dev);
186         else if (dev->type && dev->type->release)
187                 dev->type->release(dev);
188         else if (dev->class && dev->class->dev_release)
189                 dev->class->dev_release(dev);
190         else
191                 WARN(1, KERN_ERR "Device '%s' does not have a release() "
192                         "function, it is broken and must be fixed.\n",
193                         dev_name(dev));
194         kfree(p);
195 }
196
197 static const void *device_namespace(struct kobject *kobj)
198 {
199         struct device *dev = to_dev(kobj);
200         const void *ns = NULL;
201
202         if (dev->class && dev->class->ns_type)
203                 ns = dev->class->namespace(dev);
204
205         return ns;
206 }
207
208 static struct kobj_type device_ktype = {
209         .release        = device_release,
210         .sysfs_ops      = &dev_sysfs_ops,
211         .namespace      = device_namespace,
212 };
213
214
215 static int dev_uevent_filter(struct kset *kset, struct kobject *kobj)
216 {
217         struct kobj_type *ktype = get_ktype(kobj);
218
219         if (ktype == &device_ktype) {
220                 struct device *dev = to_dev(kobj);
221                 if (dev->bus)
222                         return 1;
223                 if (dev->class)
224                         return 1;
225         }
226         return 0;
227 }
228
229 static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj)
230 {
231         struct device *dev = to_dev(kobj);
232
233         if (dev->bus)
234                 return dev->bus->name;
235         if (dev->class)
236                 return dev->class->name;
237         return NULL;
238 }
239
240 static int dev_uevent(struct kset *kset, struct kobject *kobj,
241                       struct kobj_uevent_env *env)
242 {
243         struct device *dev = to_dev(kobj);
244         int retval = 0;
245
246         /* add device node properties if present */
247         if (MAJOR(dev->devt)) {
248                 const char *tmp;
249                 const char *name;
250                 mode_t mode = 0;
251
252                 add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
253                 add_uevent_var(env, "MINOR=%u", MINOR(dev->devt));
254                 name = device_get_devnode(dev, &mode, &tmp);
255                 if (name) {
256                         add_uevent_var(env, "DEVNAME=%s", name);
257                         kfree(tmp);
258                         if (mode)
259                                 add_uevent_var(env, "DEVMODE=%#o", mode & 0777);
260                 }
261         }
262
263         if (dev->type && dev->type->name)
264                 add_uevent_var(env, "DEVTYPE=%s", dev->type->name);
265
266         if (dev->driver)
267                 add_uevent_var(env, "DRIVER=%s", dev->driver->name);
268
269         /* have the bus specific function add its stuff */
270         if (dev->bus && dev->bus->uevent) {
271                 retval = dev->bus->uevent(dev, env);
272                 if (retval)
273                         pr_debug("device: '%s': %s: bus uevent() returned %d\n",
274                                  dev_name(dev), __func__, retval);
275         }
276
277         /* have the class specific function add its stuff */
278         if (dev->class && dev->class->dev_uevent) {
279                 retval = dev->class->dev_uevent(dev, env);
280                 if (retval)
281                         pr_debug("device: '%s': %s: class uevent() "
282                                  "returned %d\n", dev_name(dev),
283                                  __func__, retval);
284         }
285
286         /* have the device type specific function add its stuff */
287         if (dev->type && dev->type->uevent) {
288                 retval = dev->type->uevent(dev, env);
289                 if (retval)
290                         pr_debug("device: '%s': %s: dev_type uevent() "
291                                  "returned %d\n", dev_name(dev),
292                                  __func__, retval);
293         }
294
295         return retval;
296 }
297
298 static const struct kset_uevent_ops device_uevent_ops = {
299         .filter =       dev_uevent_filter,
300         .name =         dev_uevent_name,
301         .uevent =       dev_uevent,
302 };
303
304 static ssize_t show_uevent(struct device *dev, struct device_attribute *attr,
305                            char *buf)
306 {
307         struct kobject *top_kobj;
308         struct kset *kset;
309         struct kobj_uevent_env *env = NULL;
310         int i;
311         size_t count = 0;
312         int retval;
313
314         /* search the kset, the device belongs to */
315         top_kobj = &dev->kobj;
316         while (!top_kobj->kset && top_kobj->parent)
317                 top_kobj = top_kobj->parent;
318         if (!top_kobj->kset)
319                 goto out;
320
321         kset = top_kobj->kset;
322         if (!kset->uevent_ops || !kset->uevent_ops->uevent)
323                 goto out;
324
325         /* respect filter */
326         if (kset->uevent_ops && kset->uevent_ops->filter)
327                 if (!kset->uevent_ops->filter(kset, &dev->kobj))
328                         goto out;
329
330         env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
331         if (!env)
332                 return -ENOMEM;
333
334         /* let the kset specific function add its keys */
335         retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
336         if (retval)
337                 goto out;
338
339         /* copy keys to file */
340         for (i = 0; i < env->envp_idx; i++)
341                 count += sprintf(&buf[count], "%s\n", env->envp[i]);
342 out:
343         kfree(env);
344         return count;
345 }
346
347 static ssize_t store_uevent(struct device *dev, struct device_attribute *attr,
348                             const char *buf, size_t count)
349 {
350         enum kobject_action action;
351
352         if (kobject_action_type(buf, count, &action) == 0)
353                 kobject_uevent(&dev->kobj, action);
354         else
355                 dev_err(dev, "uevent: unknown action-string\n");
356         return count;
357 }
358
359 static struct device_attribute uevent_attr =
360         __ATTR(uevent, S_IRUGO | S_IWUSR, show_uevent, store_uevent);
361
362 static int device_add_attributes(struct device *dev,
363                                  struct device_attribute *attrs)
364 {
365         int error = 0;
366         int i;
367
368         if (attrs) {
369                 for (i = 0; attr_name(attrs[i]); i++) {
370                         error = device_create_file(dev, &attrs[i]);
371                         if (error)
372                                 break;
373                 }
374                 if (error)
375                         while (--i >= 0)
376                                 device_remove_file(dev, &attrs[i]);
377         }
378         return error;
379 }
380
381 static void device_remove_attributes(struct device *dev,
382                                      struct device_attribute *attrs)
383 {
384         int i;
385
386         if (attrs)
387                 for (i = 0; attr_name(attrs[i]); i++)
388                         device_remove_file(dev, &attrs[i]);
389 }
390
391 static int device_add_bin_attributes(struct device *dev,
392                                      struct bin_attribute *attrs)
393 {
394         int error = 0;
395         int i;
396
397         if (attrs) {
398                 for (i = 0; attr_name(attrs[i]); i++) {
399                         error = device_create_bin_file(dev, &attrs[i]);
400                         if (error)
401                                 break;
402                 }
403                 if (error)
404                         while (--i >= 0)
405                                 device_remove_bin_file(dev, &attrs[i]);
406         }
407         return error;
408 }
409
410 static void device_remove_bin_attributes(struct device *dev,
411                                          struct bin_attribute *attrs)
412 {
413         int i;
414
415         if (attrs)
416                 for (i = 0; attr_name(attrs[i]); i++)
417                         device_remove_bin_file(dev, &attrs[i]);
418 }
419
420 static int device_add_groups(struct device *dev,
421                              const struct attribute_group **groups)
422 {
423         int error = 0;
424         int i;
425
426         if (groups) {
427                 for (i = 0; groups[i]; i++) {
428                         error = sysfs_create_group(&dev->kobj, groups[i]);
429                         if (error) {
430                                 while (--i >= 0)
431                                         sysfs_remove_group(&dev->kobj,
432                                                            groups[i]);
433                                 break;
434                         }
435                 }
436         }
437         return error;
438 }
439
440 static void device_remove_groups(struct device *dev,
441                                  const struct attribute_group **groups)
442 {
443         int i;
444
445         if (groups)
446                 for (i = 0; groups[i]; i++)
447                         sysfs_remove_group(&dev->kobj, groups[i]);
448 }
449
450 static int device_add_attrs(struct device *dev)
451 {
452         struct class *class = dev->class;
453         const struct device_type *type = dev->type;
454         int error;
455
456         if (class) {
457                 error = device_add_attributes(dev, class->dev_attrs);
458                 if (error)
459                         return error;
460                 error = device_add_bin_attributes(dev, class->dev_bin_attrs);
461                 if (error)
462                         goto err_remove_class_attrs;
463         }
464
465         if (type) {
466                 error = device_add_groups(dev, type->groups);
467                 if (error)
468                         goto err_remove_class_bin_attrs;
469         }
470
471         error = device_add_groups(dev, dev->groups);
472         if (error)
473                 goto err_remove_type_groups;
474
475         return 0;
476
477  err_remove_type_groups:
478         if (type)
479                 device_remove_groups(dev, type->groups);
480  err_remove_class_bin_attrs:
481         if (class)
482                 device_remove_bin_attributes(dev, class->dev_bin_attrs);
483  err_remove_class_attrs:
484         if (class)
485                 device_remove_attributes(dev, class->dev_attrs);
486
487         return error;
488 }
489
490 static void device_remove_attrs(struct device *dev)
491 {
492         struct class *class = dev->class;
493         const struct device_type *type = dev->type;
494
495         device_remove_groups(dev, dev->groups);
496
497         if (type)
498                 device_remove_groups(dev, type->groups);
499
500         if (class) {
501                 device_remove_attributes(dev, class->dev_attrs);
502                 device_remove_bin_attributes(dev, class->dev_bin_attrs);
503         }
504 }
505
506
507 static ssize_t show_dev(struct device *dev, struct device_attribute *attr,
508                         char *buf)
509 {
510         return print_dev_t(buf, dev->devt);
511 }
512
513 static struct device_attribute devt_attr =
514         __ATTR(dev, S_IRUGO, show_dev, NULL);
515
516 /* /sys/devices/ */
517 struct kset *devices_kset;
518
519 /**
520  * device_create_file - create sysfs attribute file for device.
521  * @dev: device.
522  * @attr: device attribute descriptor.
523  */
524 int device_create_file(struct device *dev,
525                        const struct device_attribute *attr)
526 {
527         int error = 0;
528         if (dev)
529                 error = sysfs_create_file(&dev->kobj, &attr->attr);
530         return error;
531 }
532
533 /**
534  * device_remove_file - remove sysfs attribute file.
535  * @dev: device.
536  * @attr: device attribute descriptor.
537  */
538 void device_remove_file(struct device *dev,
539                         const struct device_attribute *attr)
540 {
541         if (dev)
542                 sysfs_remove_file(&dev->kobj, &attr->attr);
543 }
544
545 /**
546  * device_create_bin_file - create sysfs binary attribute file for device.
547  * @dev: device.
548  * @attr: device binary attribute descriptor.
549  */
550 int device_create_bin_file(struct device *dev,
551                            const struct bin_attribute *attr)
552 {
553         int error = -EINVAL;
554         if (dev)
555                 error = sysfs_create_bin_file(&dev->kobj, attr);
556         return error;
557 }
558 EXPORT_SYMBOL_GPL(device_create_bin_file);
559
560 /**
561  * device_remove_bin_file - remove sysfs binary attribute file
562  * @dev: device.
563  * @attr: device binary attribute descriptor.
564  */
565 void device_remove_bin_file(struct device *dev,
566                             const struct bin_attribute *attr)
567 {
568         if (dev)
569                 sysfs_remove_bin_file(&dev->kobj, attr);
570 }
571 EXPORT_SYMBOL_GPL(device_remove_bin_file);
572
573 /**
574  * device_schedule_callback_owner - helper to schedule a callback for a device
575  * @dev: device.
576  * @func: callback function to invoke later.
577  * @owner: module owning the callback routine
578  *
579  * Attribute methods must not unregister themselves or their parent device
580  * (which would amount to the same thing).  Attempts to do so will deadlock,
581  * since unregistration is mutually exclusive with driver callbacks.
582  *
583  * Instead methods can call this routine, which will attempt to allocate
584  * and schedule a workqueue request to call back @func with @dev as its
585  * argument in the workqueue's process context.  @dev will be pinned until
586  * @func returns.
587  *
588  * This routine is usually called via the inline device_schedule_callback(),
589  * which automatically sets @owner to THIS_MODULE.
590  *
591  * Returns 0 if the request was submitted, -ENOMEM if storage could not
592  * be allocated, -ENODEV if a reference to @owner isn't available.
593  *
594  * NOTE: This routine won't work if CONFIG_SYSFS isn't set!  It uses an
595  * underlying sysfs routine (since it is intended for use by attribute
596  * methods), and if sysfs isn't available you'll get nothing but -ENOSYS.
597  */
598 int device_schedule_callback_owner(struct device *dev,
599                 void (*func)(struct device *), struct module *owner)
600 {
601         return sysfs_schedule_callback(&dev->kobj,
602                         (void (*)(void *)) func, dev, owner);
603 }
604 EXPORT_SYMBOL_GPL(device_schedule_callback_owner);
605
606 static void klist_children_get(struct klist_node *n)
607 {
608         struct device_private *p = to_device_private_parent(n);
609         struct device *dev = p->device;
610
611         get_device(dev);
612 }
613
614 static void klist_children_put(struct klist_node *n)
615 {
616         struct device_private *p = to_device_private_parent(n);
617         struct device *dev = p->device;
618
619         put_device(dev);
620 }
621
622 /**
623  * device_initialize - init device structure.
624  * @dev: device.
625  *
626  * This prepares the device for use by other layers by initializing
627  * its fields.
628  * It is the first half of device_register(), if called by
629  * that function, though it can also be called separately, so one
630  * may use @dev's fields. In particular, get_device()/put_device()
631  * may be used for reference counting of @dev after calling this
632  * function.
633  *
634  * NOTE: Use put_device() to give up your reference instead of freeing
635  * @dev directly once you have called this function.
636  */
637 void device_initialize(struct device *dev)
638 {
639         dev->kobj.kset = devices_kset;
640         kobject_init(&dev->kobj, &device_ktype);
641         INIT_LIST_HEAD(&dev->dma_pools);
642         mutex_init(&dev->mutex);
643         lockdep_set_novalidate_class(&dev->mutex);
644         spin_lock_init(&dev->devres_lock);
645         INIT_LIST_HEAD(&dev->devres_head);
646         device_pm_init(dev);
647         set_dev_node(dev, -1);
648 }
649
650 static struct kobject *virtual_device_parent(struct device *dev)
651 {
652         static struct kobject *virtual_dir = NULL;
653
654         if (!virtual_dir)
655                 virtual_dir = kobject_create_and_add("virtual",
656                                                      &devices_kset->kobj);
657
658         return virtual_dir;
659 }
660
661 struct class_dir {
662         struct kobject kobj;
663         struct class *class;
664 };
665
666 #define to_class_dir(obj) container_of(obj, struct class_dir, kobj)
667
668 static void class_dir_release(struct kobject *kobj)
669 {
670         struct class_dir *dir = to_class_dir(kobj);
671         kfree(dir);
672 }
673
674 static const
675 struct kobj_ns_type_operations *class_dir_child_ns_type(struct kobject *kobj)
676 {
677         struct class_dir *dir = to_class_dir(kobj);
678         return dir->class->ns_type;
679 }
680
681 static struct kobj_type class_dir_ktype = {
682         .release        = class_dir_release,
683         .sysfs_ops      = &kobj_sysfs_ops,
684         .child_ns_type  = class_dir_child_ns_type
685 };
686
687 static struct kobject *
688 class_dir_create_and_add(struct class *class, struct kobject *parent_kobj)
689 {
690         struct class_dir *dir;
691         int retval;
692
693         dir = kzalloc(sizeof(*dir), GFP_KERNEL);
694         if (!dir)
695                 return NULL;
696
697         dir->class = class;
698         kobject_init(&dir->kobj, &class_dir_ktype);
699
700         dir->kobj.kset = &class->p->glue_dirs;
701
702         retval = kobject_add(&dir->kobj, parent_kobj, "%s", class->name);
703         if (retval < 0) {
704                 kobject_put(&dir->kobj);
705                 return NULL;
706         }
707         return &dir->kobj;
708 }
709
710
711 static struct kobject *get_device_parent(struct device *dev,
712                                          struct device *parent)
713 {
714         if (dev->class) {
715                 static DEFINE_MUTEX(gdp_mutex);
716                 struct kobject *kobj = NULL;
717                 struct kobject *parent_kobj;
718                 struct kobject *k;
719
720 #ifdef CONFIG_BLOCK
721                 /* block disks show up in /sys/block */
722                 if (sysfs_deprecated && dev->class == &block_class) {
723                         if (parent && parent->class == &block_class)
724                                 return &parent->kobj;
725                         return &block_class.p->subsys.kobj;
726                 }
727 #endif
728
729                 /*
730                  * If we have no parent, we live in "virtual".
731                  * Class-devices with a non class-device as parent, live
732                  * in a "glue" directory to prevent namespace collisions.
733                  */
734                 if (parent == NULL)
735                         parent_kobj = virtual_device_parent(dev);
736                 else if (parent->class && !dev->class->ns_type)
737                         return &parent->kobj;
738                 else
739                         parent_kobj = &parent->kobj;
740
741                 mutex_lock(&gdp_mutex);
742
743                 /* find our class-directory at the parent and reference it */
744                 spin_lock(&dev->class->p->glue_dirs.list_lock);
745                 list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry)
746                         if (k->parent == parent_kobj) {
747                                 kobj = kobject_get(k);
748                                 break;
749                         }
750                 spin_unlock(&dev->class->p->glue_dirs.list_lock);
751                 if (kobj) {
752                         mutex_unlock(&gdp_mutex);
753                         return kobj;
754                 }
755
756                 /* or create a new class-directory at the parent device */
757                 k = class_dir_create_and_add(dev->class, parent_kobj);
758                 /* do not emit an uevent for this simple "glue" directory */
759                 mutex_unlock(&gdp_mutex);
760                 return k;
761         }
762
763         /* subsystems can specify a default root directory for their devices */
764         if (!parent && dev->bus && dev->bus->dev_root)
765                 return &dev->bus->dev_root->kobj;
766
767         if (parent)
768                 return &parent->kobj;
769         return NULL;
770 }
771
772 static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir)
773 {
774         /* see if we live in a "glue" directory */
775         if (!glue_dir || !dev->class ||
776             glue_dir->kset != &dev->class->p->glue_dirs)
777                 return;
778
779         kobject_put(glue_dir);
780 }
781
782 static void cleanup_device_parent(struct device *dev)
783 {
784         cleanup_glue_dir(dev, dev->kobj.parent);
785 }
786
787 static int device_add_class_symlinks(struct device *dev)
788 {
789         int error;
790
791         if (!dev->class)
792                 return 0;
793
794         error = sysfs_create_link(&dev->kobj,
795                                   &dev->class->p->subsys.kobj,
796                                   "subsystem");
797         if (error)
798                 goto out;
799
800         if (dev->parent && device_is_not_partition(dev)) {
801                 error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
802                                           "device");
803                 if (error)
804                         goto out_subsys;
805         }
806
807 #ifdef CONFIG_BLOCK
808         /* /sys/block has directories and does not need symlinks */
809         if (sysfs_deprecated && dev->class == &block_class)
810                 return 0;
811 #endif
812
813         /* link in the class directory pointing to the device */
814         error = sysfs_create_link(&dev->class->p->subsys.kobj,
815                                   &dev->kobj, dev_name(dev));
816         if (error)
817                 goto out_device;
818
819         return 0;
820
821 out_device:
822         sysfs_remove_link(&dev->kobj, "device");
823
824 out_subsys:
825         sysfs_remove_link(&dev->kobj, "subsystem");
826 out:
827         return error;
828 }
829
830 static void device_remove_class_symlinks(struct device *dev)
831 {
832         if (!dev->class)
833                 return;
834
835         if (dev->parent && device_is_not_partition(dev))
836                 sysfs_remove_link(&dev->kobj, "device");
837         sysfs_remove_link(&dev->kobj, "subsystem");
838 #ifdef CONFIG_BLOCK
839         if (sysfs_deprecated && dev->class == &block_class)
840                 return;
841 #endif
842         sysfs_delete_link(&dev->class->p->subsys.kobj, &dev->kobj, dev_name(dev));
843 }
844
845 /**
846  * dev_set_name - set a device name
847  * @dev: device
848  * @fmt: format string for the device's name
849  */
850 int dev_set_name(struct device *dev, const char *fmt, ...)
851 {
852         va_list vargs;
853         int err;
854
855         va_start(vargs, fmt);
856         err = kobject_set_name_vargs(&dev->kobj, fmt, vargs);
857         va_end(vargs);
858         return err;
859 }
860 EXPORT_SYMBOL_GPL(dev_set_name);
861
862 /**
863  * device_to_dev_kobj - select a /sys/dev/ directory for the device
864  * @dev: device
865  *
866  * By default we select char/ for new entries.  Setting class->dev_obj
867  * to NULL prevents an entry from being created.  class->dev_kobj must
868  * be set (or cleared) before any devices are registered to the class
869  * otherwise device_create_sys_dev_entry() and
870  * device_remove_sys_dev_entry() will disagree about the the presence
871  * of the link.
872  */
873 static struct kobject *device_to_dev_kobj(struct device *dev)
874 {
875         struct kobject *kobj;
876
877         if (dev->class)
878                 kobj = dev->class->dev_kobj;
879         else
880                 kobj = sysfs_dev_char_kobj;
881
882         return kobj;
883 }
884
885 static int device_create_sys_dev_entry(struct device *dev)
886 {
887         struct kobject *kobj = device_to_dev_kobj(dev);
888         int error = 0;
889         char devt_str[15];
890
891         if (kobj) {
892                 format_dev_t(devt_str, dev->devt);
893                 error = sysfs_create_link(kobj, &dev->kobj, devt_str);
894         }
895
896         return error;
897 }
898
899 static void device_remove_sys_dev_entry(struct device *dev)
900 {
901         struct kobject *kobj = device_to_dev_kobj(dev);
902         char devt_str[15];
903
904         if (kobj) {
905                 format_dev_t(devt_str, dev->devt);
906                 sysfs_remove_link(kobj, devt_str);
907         }
908 }
909
910 int device_private_init(struct device *dev)
911 {
912         dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL);
913         if (!dev->p)
914                 return -ENOMEM;
915         dev->p->device = dev;
916         klist_init(&dev->p->klist_children, klist_children_get,
917                    klist_children_put);
918         return 0;
919 }
920
921 /**
922  * device_add - add device to device hierarchy.
923  * @dev: device.
924  *
925  * This is part 2 of device_register(), though may be called
926  * separately _iff_ device_initialize() has been called separately.
927  *
928  * This adds @dev to the kobject hierarchy via kobject_add(), adds it
929  * to the global and sibling lists for the device, then
930  * adds it to the other relevant subsystems of the driver model.
931  *
932  * NOTE: _Never_ directly free @dev after calling this function, even
933  * if it returned an error! Always use put_device() to give up your
934  * reference instead.
935  */
936 int device_add(struct device *dev)
937 {
938         struct device *parent = NULL;
939         struct kobject *kobj;
940         struct class_interface *class_intf;
941         int error = -EINVAL;
942
943         dev = get_device(dev);
944         if (!dev)
945                 goto done;
946
947         if (!dev->p) {
948                 error = device_private_init(dev);
949                 if (error)
950                         goto done;
951         }
952
953         /*
954          * for statically allocated devices, which should all be converted
955          * some day, we need to initialize the name. We prevent reading back
956          * the name, and force the use of dev_name()
957          */
958         if (dev->init_name) {
959                 dev_set_name(dev, "%s", dev->init_name);
960                 dev->init_name = NULL;
961         }
962
963         /* subsystems can specify simple device enumeration */
964         if (!dev_name(dev) && dev->bus && dev->bus->dev_name)
965                 dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
966
967         if (!dev_name(dev)) {
968                 error = -EINVAL;
969                 goto name_error;
970         }
971
972         pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
973
974         parent = get_device(dev->parent);
975         kobj = get_device_parent(dev, parent);
976         if (kobj)
977                 dev->kobj.parent = kobj;
978
979         /* use parent numa_node */
980         if (parent)
981                 set_dev_node(dev, dev_to_node(parent));
982
983         /* first, register with generic layer. */
984         /* we require the name to be set before, and pass NULL */
985         error = kobject_add(&dev->kobj, dev->kobj.parent, NULL);
986         if (error)
987                 goto Error;
988
989         /* notify platform of device entry */
990         if (platform_notify)
991                 platform_notify(dev);
992
993         error = device_create_file(dev, &uevent_attr);
994         if (error)
995                 goto attrError;
996
997         if (MAJOR(dev->devt)) {
998                 error = device_create_file(dev, &devt_attr);
999                 if (error)
1000                         goto ueventattrError;
1001
1002                 error = device_create_sys_dev_entry(dev);
1003                 if (error)
1004                         goto devtattrError;
1005
1006                 devtmpfs_create_node(dev);
1007         }
1008
1009         error = device_add_class_symlinks(dev);
1010         if (error)
1011                 goto SymlinkError;
1012         error = device_add_attrs(dev);
1013         if (error)
1014                 goto AttrsError;
1015         error = bus_add_device(dev);
1016         if (error)
1017                 goto BusError;
1018         error = dpm_sysfs_add(dev);
1019         if (error)
1020                 goto DPMError;
1021         device_pm_add(dev);
1022
1023         /* Notify clients of device addition.  This call must come
1024          * after dpm_sysf_add() and before kobject_uevent().
1025          */
1026         if (dev->bus)
1027                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
1028                                              BUS_NOTIFY_ADD_DEVICE, dev);
1029
1030         kobject_uevent(&dev->kobj, KOBJ_ADD);
1031         bus_probe_device(dev);
1032         if (parent)
1033                 klist_add_tail(&dev->p->knode_parent,
1034                                &parent->p->klist_children);
1035
1036         if (dev->class) {
1037                 mutex_lock(&dev->class->p->mutex);
1038                 /* tie the class to the device */
1039                 klist_add_tail(&dev->knode_class,
1040                                &dev->class->p->klist_devices);
1041
1042                 /* notify any interfaces that the device is here */
1043                 list_for_each_entry(class_intf,
1044                                     &dev->class->p->interfaces, node)
1045                         if (class_intf->add_dev)
1046                                 class_intf->add_dev(dev, class_intf);
1047                 mutex_unlock(&dev->class->p->mutex);
1048         }
1049 done:
1050         put_device(dev);
1051         return error;
1052  DPMError:
1053         bus_remove_device(dev);
1054  BusError:
1055         device_remove_attrs(dev);
1056  AttrsError:
1057         device_remove_class_symlinks(dev);
1058  SymlinkError:
1059         if (MAJOR(dev->devt))
1060                 devtmpfs_delete_node(dev);
1061         if (MAJOR(dev->devt))
1062                 device_remove_sys_dev_entry(dev);
1063  devtattrError:
1064         if (MAJOR(dev->devt))
1065                 device_remove_file(dev, &devt_attr);
1066  ueventattrError:
1067         device_remove_file(dev, &uevent_attr);
1068  attrError:
1069         kobject_uevent(&dev->kobj, KOBJ_REMOVE);
1070         kobject_del(&dev->kobj);
1071  Error:
1072         cleanup_device_parent(dev);
1073         if (parent)
1074                 put_device(parent);
1075 name_error:
1076         kfree(dev->p);
1077         dev->p = NULL;
1078         goto done;
1079 }
1080
1081 /**
1082  * device_register - register a device with the system.
1083  * @dev: pointer to the device structure
1084  *
1085  * This happens in two clean steps - initialize the device
1086  * and add it to the system. The two steps can be called
1087  * separately, but this is the easiest and most common.
1088  * I.e. you should only call the two helpers separately if
1089  * have a clearly defined need to use and refcount the device
1090  * before it is added to the hierarchy.
1091  *
1092  * NOTE: _Never_ directly free @dev after calling this function, even
1093  * if it returned an error! Always use put_device() to give up the
1094  * reference initialized in this function instead.
1095  */
1096 int device_register(struct device *dev)
1097 {
1098         device_initialize(dev);
1099         return device_add(dev);
1100 }
1101
1102 /**
1103  * get_device - increment reference count for device.
1104  * @dev: device.
1105  *
1106  * This simply forwards the call to kobject_get(), though
1107  * we do take care to provide for the case that we get a NULL
1108  * pointer passed in.
1109  */
1110 struct device *get_device(struct device *dev)
1111 {
1112         return dev ? to_dev(kobject_get(&dev->kobj)) : NULL;
1113 }
1114
1115 /**
1116  * put_device - decrement reference count.
1117  * @dev: device in question.
1118  */
1119 void put_device(struct device *dev)
1120 {
1121         /* might_sleep(); */
1122         if (dev)
1123                 kobject_put(&dev->kobj);
1124 }
1125
1126 /**
1127  * device_del - delete device from system.
1128  * @dev: device.
1129  *
1130  * This is the first part of the device unregistration
1131  * sequence. This removes the device from the lists we control
1132  * from here, has it removed from the other driver model
1133  * subsystems it was added to in device_add(), and removes it
1134  * from the kobject hierarchy.
1135  *
1136  * NOTE: this should be called manually _iff_ device_add() was
1137  * also called manually.
1138  */
1139 void device_del(struct device *dev)
1140 {
1141         struct device *parent = dev->parent;
1142         struct class_interface *class_intf;
1143
1144         /* Notify clients of device removal.  This call must come
1145          * before dpm_sysfs_remove().
1146          */
1147         if (dev->bus)
1148                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
1149                                              BUS_NOTIFY_DEL_DEVICE, dev);
1150         device_pm_remove(dev);
1151         dpm_sysfs_remove(dev);
1152         if (parent)
1153                 klist_del(&dev->p->knode_parent);
1154         if (MAJOR(dev->devt)) {
1155                 devtmpfs_delete_node(dev);
1156                 device_remove_sys_dev_entry(dev);
1157                 device_remove_file(dev, &devt_attr);
1158         }
1159         if (dev->class) {
1160                 device_remove_class_symlinks(dev);
1161
1162                 mutex_lock(&dev->class->p->mutex);
1163                 /* notify any interfaces that the device is now gone */
1164                 list_for_each_entry(class_intf,
1165                                     &dev->class->p->interfaces, node)
1166                         if (class_intf->remove_dev)
1167                                 class_intf->remove_dev(dev, class_intf);
1168                 /* remove the device from the class list */
1169                 klist_del(&dev->knode_class);
1170                 mutex_unlock(&dev->class->p->mutex);
1171         }
1172         device_remove_file(dev, &uevent_attr);
1173         device_remove_attrs(dev);
1174         bus_remove_device(dev);
1175
1176         /*
1177          * Some platform devices are driven without driver attached
1178          * and managed resources may have been acquired.  Make sure
1179          * all resources are released.
1180          */
1181         devres_release_all(dev);
1182
1183         /* Notify the platform of the removal, in case they
1184          * need to do anything...
1185          */
1186         if (platform_notify_remove)
1187                 platform_notify_remove(dev);
1188         kobject_uevent(&dev->kobj, KOBJ_REMOVE);
1189         cleanup_device_parent(dev);
1190         kobject_del(&dev->kobj);
1191         put_device(parent);
1192 }
1193
1194 /**
1195  * device_unregister - unregister device from system.
1196  * @dev: device going away.
1197  *
1198  * We do this in two parts, like we do device_register(). First,
1199  * we remove it from all the subsystems with device_del(), then
1200  * we decrement the reference count via put_device(). If that
1201  * is the final reference count, the device will be cleaned up
1202  * via device_release() above. Otherwise, the structure will
1203  * stick around until the final reference to the device is dropped.
1204  */
1205 void device_unregister(struct device *dev)
1206 {
1207         pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
1208         device_del(dev);
1209         put_device(dev);
1210 }
1211
1212 static struct device *next_device(struct klist_iter *i)
1213 {
1214         struct klist_node *n = klist_next(i);
1215         struct device *dev = NULL;
1216         struct device_private *p;
1217
1218         if (n) {
1219                 p = to_device_private_parent(n);
1220                 dev = p->device;
1221         }
1222         return dev;
1223 }
1224
1225 /**
1226  * device_get_devnode - path of device node file
1227  * @dev: device
1228  * @mode: returned file access mode
1229  * @tmp: possibly allocated string
1230  *
1231  * Return the relative path of a possible device node.
1232  * Non-default names may need to allocate a memory to compose
1233  * a name. This memory is returned in tmp and needs to be
1234  * freed by the caller.
1235  */
1236 const char *device_get_devnode(struct device *dev,
1237                                mode_t *mode, const char **tmp)
1238 {
1239         char *s;
1240
1241         *tmp = NULL;
1242
1243         /* the device type may provide a specific name */
1244         if (dev->type && dev->type->devnode)
1245                 *tmp = dev->type->devnode(dev, mode);
1246         if (*tmp)
1247                 return *tmp;
1248
1249         /* the class may provide a specific name */
1250         if (dev->class && dev->class->devnode)
1251                 *tmp = dev->class->devnode(dev, mode);
1252         if (*tmp)
1253                 return *tmp;
1254
1255         /* return name without allocation, tmp == NULL */
1256         if (strchr(dev_name(dev), '!') == NULL)
1257                 return dev_name(dev);
1258
1259         /* replace '!' in the name with '/' */
1260         *tmp = kstrdup(dev_name(dev), GFP_KERNEL);
1261         if (!*tmp)
1262                 return NULL;
1263         while ((s = strchr(*tmp, '!')))
1264                 s[0] = '/';
1265         return *tmp;
1266 }
1267
1268 /**
1269  * device_for_each_child - device child iterator.
1270  * @parent: parent struct device.
1271  * @data: data for the callback.
1272  * @fn: function to be called for each device.
1273  *
1274  * Iterate over @parent's child devices, and call @fn for each,
1275  * passing it @data.
1276  *
1277  * We check the return of @fn each time. If it returns anything
1278  * other than 0, we break out and return that value.
1279  */
1280 int device_for_each_child(struct device *parent, void *data,
1281                           int (*fn)(struct device *dev, void *data))
1282 {
1283         struct klist_iter i;
1284         struct device *child;
1285         int error = 0;
1286
1287         if (!parent->p)
1288                 return 0;
1289
1290         klist_iter_init(&parent->p->klist_children, &i);
1291         while ((child = next_device(&i)) && !error)
1292                 error = fn(child, data);
1293         klist_iter_exit(&i);
1294         return error;
1295 }
1296
1297 /**
1298  * device_find_child - device iterator for locating a particular device.
1299  * @parent: parent struct device
1300  * @data: Data to pass to match function
1301  * @match: Callback function to check device
1302  *
1303  * This is similar to the device_for_each_child() function above, but it
1304  * returns a reference to a device that is 'found' for later use, as
1305  * determined by the @match callback.
1306  *
1307  * The callback should return 0 if the device doesn't match and non-zero
1308  * if it does.  If the callback returns non-zero and a reference to the
1309  * current device can be obtained, this function will return to the caller
1310  * and not iterate over any more devices.
1311  */
1312 struct device *device_find_child(struct device *parent, void *data,
1313                                  int (*match)(struct device *dev, void *data))
1314 {
1315         struct klist_iter i;
1316         struct device *child;
1317
1318         if (!parent)
1319                 return NULL;
1320
1321         klist_iter_init(&parent->p->klist_children, &i);
1322         while ((child = next_device(&i)))
1323                 if (match(child, data) && get_device(child))
1324                         break;
1325         klist_iter_exit(&i);
1326         return child;
1327 }
1328
1329 int __init devices_init(void)
1330 {
1331         devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
1332         if (!devices_kset)
1333                 return -ENOMEM;
1334         dev_kobj = kobject_create_and_add("dev", NULL);
1335         if (!dev_kobj)
1336                 goto dev_kobj_err;
1337         sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj);
1338         if (!sysfs_dev_block_kobj)
1339                 goto block_kobj_err;
1340         sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj);
1341         if (!sysfs_dev_char_kobj)
1342                 goto char_kobj_err;
1343
1344         return 0;
1345
1346  char_kobj_err:
1347         kobject_put(sysfs_dev_block_kobj);
1348  block_kobj_err:
1349         kobject_put(dev_kobj);
1350  dev_kobj_err:
1351         kset_unregister(devices_kset);
1352         return -ENOMEM;
1353 }
1354
1355 EXPORT_SYMBOL_GPL(device_for_each_child);
1356 EXPORT_SYMBOL_GPL(device_find_child);
1357
1358 EXPORT_SYMBOL_GPL(device_initialize);
1359 EXPORT_SYMBOL_GPL(device_add);
1360 EXPORT_SYMBOL_GPL(device_register);
1361
1362 EXPORT_SYMBOL_GPL(device_del);
1363 EXPORT_SYMBOL_GPL(device_unregister);
1364 EXPORT_SYMBOL_GPL(get_device);
1365 EXPORT_SYMBOL_GPL(put_device);
1366
1367 EXPORT_SYMBOL_GPL(device_create_file);
1368 EXPORT_SYMBOL_GPL(device_remove_file);
1369
1370 struct root_device {
1371         struct device dev;
1372         struct module *owner;
1373 };
1374
1375 inline struct root_device *to_root_device(struct device *d)
1376 {
1377         return container_of(d, struct root_device, dev);
1378 }
1379
1380 static void root_device_release(struct device *dev)
1381 {
1382         kfree(to_root_device(dev));
1383 }
1384
1385 /**
1386  * __root_device_register - allocate and register a root device
1387  * @name: root device name
1388  * @owner: owner module of the root device, usually THIS_MODULE
1389  *
1390  * This function allocates a root device and registers it
1391  * using device_register(). In order to free the returned
1392  * device, use root_device_unregister().
1393  *
1394  * Root devices are dummy devices which allow other devices
1395  * to be grouped under /sys/devices. Use this function to
1396  * allocate a root device and then use it as the parent of
1397  * any device which should appear under /sys/devices/{name}
1398  *
1399  * The /sys/devices/{name} directory will also contain a
1400  * 'module' symlink which points to the @owner directory
1401  * in sysfs.
1402  *
1403  * Returns &struct device pointer on success, or ERR_PTR() on error.
1404  *
1405  * Note: You probably want to use root_device_register().
1406  */
1407 struct device *__root_device_register(const char *name, struct module *owner)
1408 {
1409         struct root_device *root;
1410         int err = -ENOMEM;
1411
1412         root = kzalloc(sizeof(struct root_device), GFP_KERNEL);
1413         if (!root)
1414                 return ERR_PTR(err);
1415
1416         err = dev_set_name(&root->dev, "%s", name);
1417         if (err) {
1418                 kfree(root);
1419                 return ERR_PTR(err);
1420         }
1421
1422         root->dev.release = root_device_release;
1423
1424         err = device_register(&root->dev);
1425         if (err) {
1426                 put_device(&root->dev);
1427                 return ERR_PTR(err);
1428         }
1429
1430 #ifdef CONFIG_MODULES   /* gotta find a "cleaner" way to do this */
1431         if (owner) {
1432                 struct module_kobject *mk = &owner->mkobj;
1433
1434                 err = sysfs_create_link(&root->dev.kobj, &mk->kobj, "module");
1435                 if (err) {
1436                         device_unregister(&root->dev);
1437                         return ERR_PTR(err);
1438                 }
1439                 root->owner = owner;
1440         }
1441 #endif
1442
1443         return &root->dev;
1444 }
1445 EXPORT_SYMBOL_GPL(__root_device_register);
1446
1447 /**
1448  * root_device_unregister - unregister and free a root device
1449  * @dev: device going away
1450  *
1451  * This function unregisters and cleans up a device that was created by
1452  * root_device_register().
1453  */
1454 void root_device_unregister(struct device *dev)
1455 {
1456         struct root_device *root = to_root_device(dev);
1457
1458         if (root->owner)
1459                 sysfs_remove_link(&root->dev.kobj, "module");
1460
1461         device_unregister(dev);
1462 }
1463 EXPORT_SYMBOL_GPL(root_device_unregister);
1464
1465
1466 static void device_create_release(struct device *dev)
1467 {
1468         pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
1469         kfree(dev);
1470 }
1471
1472 /**
1473  * device_create_vargs - creates a device and registers it with sysfs
1474  * @class: pointer to the struct class that this device should be registered to
1475  * @parent: pointer to the parent struct device of this new device, if any
1476  * @devt: the dev_t for the char device to be added
1477  * @drvdata: the data to be added to the device for callbacks
1478  * @fmt: string for the device's name
1479  * @args: va_list for the device's name
1480  *
1481  * This function can be used by char device classes.  A struct device
1482  * will be created in sysfs, registered to the specified class.
1483  *
1484  * A "dev" file will be created, showing the dev_t for the device, if
1485  * the dev_t is not 0,0.
1486  * If a pointer to a parent struct device is passed in, the newly created
1487  * struct device will be a child of that device in sysfs.
1488  * The pointer to the struct device will be returned from the call.
1489  * Any further sysfs files that might be required can be created using this
1490  * pointer.
1491  *
1492  * Returns &struct device pointer on success, or ERR_PTR() on error.
1493  *
1494  * Note: the struct class passed to this function must have previously
1495  * been created with a call to class_create().
1496  */
1497 struct device *device_create_vargs(struct class *class, struct device *parent,
1498                                    dev_t devt, void *drvdata, const char *fmt,
1499                                    va_list args)
1500 {
1501         struct device *dev = NULL;
1502         int retval = -ENODEV;
1503
1504         if (class == NULL || IS_ERR(class))
1505                 goto error;
1506
1507         dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1508         if (!dev) {
1509                 retval = -ENOMEM;
1510                 goto error;
1511         }
1512
1513         dev->devt = devt;
1514         dev->class = class;
1515         dev->parent = parent;
1516         dev->release = device_create_release;
1517         dev_set_drvdata(dev, drvdata);
1518
1519         retval = kobject_set_name_vargs(&dev->kobj, fmt, args);
1520         if (retval)
1521                 goto error;
1522
1523         retval = device_register(dev);
1524         if (retval)
1525                 goto error;
1526
1527         return dev;
1528
1529 error:
1530         put_device(dev);
1531         return ERR_PTR(retval);
1532 }
1533 EXPORT_SYMBOL_GPL(device_create_vargs);
1534
1535 /**
1536  * device_create - creates a device and registers it with sysfs
1537  * @class: pointer to the struct class that this device should be registered to
1538  * @parent: pointer to the parent struct device of this new device, if any
1539  * @devt: the dev_t for the char device to be added
1540  * @drvdata: the data to be added to the device for callbacks
1541  * @fmt: string for the device's name
1542  *
1543  * This function can be used by char device classes.  A struct device
1544  * will be created in sysfs, registered to the specified class.
1545  *
1546  * A "dev" file will be created, showing the dev_t for the device, if
1547  * the dev_t is not 0,0.
1548  * If a pointer to a parent struct device is passed in, the newly created
1549  * struct device will be a child of that device in sysfs.
1550  * The pointer to the struct device will be returned from the call.
1551  * Any further sysfs files that might be required can be created using this
1552  * pointer.
1553  *
1554  * Returns &struct device pointer on success, or ERR_PTR() on error.
1555  *
1556  * Note: the struct class passed to this function must have previously
1557  * been created with a call to class_create().
1558  */
1559 struct device *device_create(struct class *class, struct device *parent,
1560                              dev_t devt, void *drvdata, const char *fmt, ...)
1561 {
1562         va_list vargs;
1563         struct device *dev;
1564
1565         va_start(vargs, fmt);
1566         dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs);
1567         va_end(vargs);
1568         return dev;
1569 }
1570 EXPORT_SYMBOL_GPL(device_create);
1571
1572 static int __match_devt(struct device *dev, void *data)
1573 {
1574         dev_t *devt = data;
1575
1576         return dev->devt == *devt;
1577 }
1578
1579 /**
1580  * device_destroy - removes a device that was created with device_create()
1581  * @class: pointer to the struct class that this device was registered with
1582  * @devt: the dev_t of the device that was previously registered
1583  *
1584  * This call unregisters and cleans up a device that was created with a
1585  * call to device_create().
1586  */
1587 void device_destroy(struct class *class, dev_t devt)
1588 {
1589         struct device *dev;
1590
1591         dev = class_find_device(class, NULL, &devt, __match_devt);
1592         if (dev) {
1593                 put_device(dev);
1594                 device_unregister(dev);
1595         }
1596 }
1597 EXPORT_SYMBOL_GPL(device_destroy);
1598
1599 /**
1600  * device_rename - renames a device
1601  * @dev: the pointer to the struct device to be renamed
1602  * @new_name: the new name of the device
1603  *
1604  * It is the responsibility of the caller to provide mutual
1605  * exclusion between two different calls of device_rename
1606  * on the same device to ensure that new_name is valid and
1607  * won't conflict with other devices.
1608  *
1609  * Note: Don't call this function.  Currently, the networking layer calls this
1610  * function, but that will change.  The following text from Kay Sievers offers
1611  * some insight:
1612  *
1613  * Renaming devices is racy at many levels, symlinks and other stuff are not
1614  * replaced atomically, and you get a "move" uevent, but it's not easy to
1615  * connect the event to the old and new device. Device nodes are not renamed at
1616  * all, there isn't even support for that in the kernel now.
1617  *
1618  * In the meantime, during renaming, your target name might be taken by another
1619  * driver, creating conflicts. Or the old name is taken directly after you
1620  * renamed it -- then you get events for the same DEVPATH, before you even see
1621  * the "move" event. It's just a mess, and nothing new should ever rely on
1622  * kernel device renaming. Besides that, it's not even implemented now for
1623  * other things than (driver-core wise very simple) network devices.
1624  *
1625  * We are currently about to change network renaming in udev to completely
1626  * disallow renaming of devices in the same namespace as the kernel uses,
1627  * because we can't solve the problems properly, that arise with swapping names
1628  * of multiple interfaces without races. Means, renaming of eth[0-9]* will only
1629  * be allowed to some other name than eth[0-9]*, for the aforementioned
1630  * reasons.
1631  *
1632  * Make up a "real" name in the driver before you register anything, or add
1633  * some other attributes for userspace to find the device, or use udev to add
1634  * symlinks -- but never rename kernel devices later, it's a complete mess. We
1635  * don't even want to get into that and try to implement the missing pieces in
1636  * the core. We really have other pieces to fix in the driver core mess. :)
1637  */
1638 int device_rename(struct device *dev, const char *new_name)
1639 {
1640         char *old_class_name = NULL;
1641         char *new_class_name = NULL;
1642         char *old_device_name = NULL;
1643         int error;
1644
1645         dev = get_device(dev);
1646         if (!dev)
1647                 return -EINVAL;
1648
1649         pr_debug("device: '%s': %s: renaming to '%s'\n", dev_name(dev),
1650                  __func__, new_name);
1651
1652         old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
1653         if (!old_device_name) {
1654                 error = -ENOMEM;
1655                 goto out;
1656         }
1657
1658         if (dev->class) {
1659                 error = sysfs_rename_link(&dev->class->p->subsys.kobj,
1660                         &dev->kobj, old_device_name, new_name);
1661                 if (error)
1662                         goto out;
1663         }
1664
1665         error = kobject_rename(&dev->kobj, new_name);
1666         if (error)
1667                 goto out;
1668
1669 out:
1670         put_device(dev);
1671
1672         kfree(new_class_name);
1673         kfree(old_class_name);
1674         kfree(old_device_name);
1675
1676         return error;
1677 }
1678 EXPORT_SYMBOL_GPL(device_rename);
1679
1680 static int device_move_class_links(struct device *dev,
1681                                    struct device *old_parent,
1682                                    struct device *new_parent)
1683 {
1684         int error = 0;
1685
1686         if (old_parent)
1687                 sysfs_remove_link(&dev->kobj, "device");
1688         if (new_parent)
1689                 error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
1690                                           "device");
1691         return error;
1692 }
1693
1694 /**
1695  * device_move - moves a device to a new parent
1696  * @dev: the pointer to the struct device to be moved
1697  * @new_parent: the new parent of the device (can by NULL)
1698  * @dpm_order: how to reorder the dpm_list
1699  */
1700 int device_move(struct device *dev, struct device *new_parent,
1701                 enum dpm_order dpm_order)
1702 {
1703         int error;
1704         struct device *old_parent;
1705         struct kobject *new_parent_kobj;
1706
1707         dev = get_device(dev);
1708         if (!dev)
1709                 return -EINVAL;
1710
1711         device_pm_lock();
1712         new_parent = get_device(new_parent);
1713         new_parent_kobj = get_device_parent(dev, new_parent);
1714
1715         pr_debug("device: '%s': %s: moving to '%s'\n", dev_name(dev),
1716                  __func__, new_parent ? dev_name(new_parent) : "<NULL>");
1717         error = kobject_move(&dev->kobj, new_parent_kobj);
1718         if (error) {
1719                 cleanup_glue_dir(dev, new_parent_kobj);
1720                 put_device(new_parent);
1721                 goto out;
1722         }
1723         old_parent = dev->parent;
1724         dev->parent = new_parent;
1725         if (old_parent)
1726                 klist_remove(&dev->p->knode_parent);
1727         if (new_parent) {
1728                 klist_add_tail(&dev->p->knode_parent,
1729                                &new_parent->p->klist_children);
1730                 set_dev_node(dev, dev_to_node(new_parent));
1731         }
1732
1733         if (!dev->class)
1734                 goto out_put;
1735         error = device_move_class_links(dev, old_parent, new_parent);
1736         if (error) {
1737                 /* We ignore errors on cleanup since we're hosed anyway... */
1738                 device_move_class_links(dev, new_parent, old_parent);
1739                 if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
1740                         if (new_parent)
1741                                 klist_remove(&dev->p->knode_parent);
1742                         dev->parent = old_parent;
1743                         if (old_parent) {
1744                                 klist_add_tail(&dev->p->knode_parent,
1745                                                &old_parent->p->klist_children);
1746                                 set_dev_node(dev, dev_to_node(old_parent));
1747                         }
1748                 }
1749                 cleanup_glue_dir(dev, new_parent_kobj);
1750                 put_device(new_parent);
1751                 goto out;
1752         }
1753         switch (dpm_order) {
1754         case DPM_ORDER_NONE:
1755                 break;
1756         case DPM_ORDER_DEV_AFTER_PARENT:
1757                 device_pm_move_after(dev, new_parent);
1758                 break;
1759         case DPM_ORDER_PARENT_BEFORE_DEV:
1760                 device_pm_move_before(new_parent, dev);
1761                 break;
1762         case DPM_ORDER_DEV_LAST:
1763                 device_pm_move_last(dev);
1764                 break;
1765         }
1766 out_put:
1767         put_device(old_parent);
1768 out:
1769         device_pm_unlock();
1770         put_device(dev);
1771         return error;
1772 }
1773 EXPORT_SYMBOL_GPL(device_move);
1774
1775 /**
1776  * device_shutdown - call ->shutdown() on each device to shutdown.
1777  */
1778 void device_shutdown(void)
1779 {
1780         struct device *dev;
1781
1782         spin_lock(&devices_kset->list_lock);
1783         /*
1784          * Walk the devices list backward, shutting down each in turn.
1785          * Beware that device unplug events may also start pulling
1786          * devices offline, even as the system is shutting down.
1787          */
1788         while (!list_empty(&devices_kset->list)) {
1789                 dev = list_entry(devices_kset->list.prev, struct device,
1790                                 kobj.entry);
1791                 get_device(dev);
1792                 /*
1793                  * Make sure the device is off the kset list, in the
1794                  * event that dev->*->shutdown() doesn't remove it.
1795                  */
1796                 list_del_init(&dev->kobj.entry);
1797                 spin_unlock(&devices_kset->list_lock);
1798
1799                 if (dev->bus && dev->bus->shutdown) {
1800                         dev_dbg(dev, "shutdown\n");
1801                         dev->bus->shutdown(dev);
1802                 } else if (dev->driver && dev->driver->shutdown) {
1803                         dev_dbg(dev, "shutdown\n");
1804                         dev->driver->shutdown(dev);
1805                 }
1806                 put_device(dev);
1807
1808                 spin_lock(&devices_kset->list_lock);
1809         }
1810         spin_unlock(&devices_kset->list_lock);
1811         async_synchronize_full();
1812 }
1813
1814 /*
1815  * Device logging functions
1816  */
1817
1818 #ifdef CONFIG_PRINTK
1819
1820 int __dev_printk(const char *level, const struct device *dev,
1821                  struct va_format *vaf)
1822 {
1823         if (!dev)
1824                 return printk("%s(NULL device *): %pV", level, vaf);
1825
1826         return printk("%s%s %s: %pV",
1827                       level, dev_driver_string(dev), dev_name(dev), vaf);
1828 }
1829 EXPORT_SYMBOL(__dev_printk);
1830
1831 int dev_printk(const char *level, const struct device *dev,
1832                const char *fmt, ...)
1833 {
1834         struct va_format vaf;
1835         va_list args;
1836         int r;
1837
1838         va_start(args, fmt);
1839
1840         vaf.fmt = fmt;
1841         vaf.va = &args;
1842
1843         r = __dev_printk(level, dev, &vaf);
1844         va_end(args);
1845
1846         return r;
1847 }
1848 EXPORT_SYMBOL(dev_printk);
1849
1850 #define define_dev_printk_level(func, kern_level)               \
1851 int func(const struct device *dev, const char *fmt, ...)        \
1852 {                                                               \
1853         struct va_format vaf;                                   \
1854         va_list args;                                           \
1855         int r;                                                  \
1856                                                                 \
1857         va_start(args, fmt);                                    \
1858                                                                 \
1859         vaf.fmt = fmt;                                          \
1860         vaf.va = &args;                                         \
1861                                                                 \
1862         r = __dev_printk(kern_level, dev, &vaf);                \
1863         va_end(args);                                           \
1864                                                                 \
1865         return r;                                               \
1866 }                                                               \
1867 EXPORT_SYMBOL(func);
1868
1869 define_dev_printk_level(dev_emerg, KERN_EMERG);
1870 define_dev_printk_level(dev_alert, KERN_ALERT);
1871 define_dev_printk_level(dev_crit, KERN_CRIT);
1872 define_dev_printk_level(dev_err, KERN_ERR);
1873 define_dev_printk_level(dev_warn, KERN_WARNING);
1874 define_dev_printk_level(dev_notice, KERN_NOTICE);
1875 define_dev_printk_level(_dev_info, KERN_INFO);
1876
1877 #endif