1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * drivers/base/core.c - core driver model code (device registration, etc)
4   *
5   * Copyright (c) 2002-3 Patrick Mochel
6   * Copyright (c) 2002-3 Open Source Development Labs
7   * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
8   * Copyright (c) 2006 Novell, Inc.
9   */
10  
11  #include <linux/acpi.h>
12  #include <linux/blkdev.h>
13  #include <linux/cleanup.h>
14  #include <linux/cpufreq.h>
15  #include <linux/device.h>
16  #include <linux/dma-map-ops.h> /* for dma_default_coherent */
17  #include <linux/err.h>
18  #include <linux/fwnode.h>
19  #include <linux/init.h>
20  #include <linux/kdev_t.h>
21  #include <linux/kstrtox.h>
22  #include <linux/module.h>
23  #include <linux/mutex.h>
24  #include <linux/netdevice.h>
25  #include <linux/notifier.h>
26  #include <linux/of.h>
27  #include <linux/of_device.h>
28  #include <linux/pm_runtime.h>
29  #include <linux/sched/mm.h>
30  #include <linux/sched/signal.h>
31  #include <linux/slab.h>
32  #include <linux/string_helpers.h>
33  #include <linux/swiotlb.h>
34  #include <linux/sysfs.h>
35  
36  #include "base.h"
37  #include "physical_location.h"
38  #include "power/power.h"
39  
40  /* Device links support. */
41  static LIST_HEAD(deferred_sync);
42  static unsigned int defer_sync_state_count = 1;
43  static DEFINE_MUTEX(fwnode_link_lock);
44  static bool fw_devlink_is_permissive(void);
45  static void __fw_devlink_link_to_consumers(struct device *dev);
46  static bool fw_devlink_drv_reg_done;
47  static bool fw_devlink_best_effort;
48  static struct workqueue_struct *device_link_wq;
49  
50  /**
51   * __fwnode_link_add - Create a link between two fwnode_handles.
52   * @con: Consumer end of the link.
53   * @sup: Supplier end of the link.
54   * @flags: Link flags.
55   *
56   * Create a fwnode link between fwnode handles @con and @sup. The fwnode link
57   * represents the detail that the firmware lists @sup fwnode as supplying a
58   * resource to @con.
59   *
60   * The driver core will use the fwnode link to create a device link between the
61   * two device objects corresponding to @con and @sup when they are created. The
62   * driver core will automatically delete the fwnode link between @con and @sup
63   * after doing that.
64   *
65   * Attempts to create duplicate links between the same pair of fwnode handles
66   * are ignored and there is no reference counting.
67   */
__fwnode_link_add(struct fwnode_handle * con,struct fwnode_handle * sup,u8 flags)68  static int __fwnode_link_add(struct fwnode_handle *con,
69  			     struct fwnode_handle *sup, u8 flags)
70  {
71  	struct fwnode_link *link;
72  
73  	list_for_each_entry(link, &sup->consumers, s_hook)
74  		if (link->consumer == con) {
75  			link->flags |= flags;
76  			return 0;
77  		}
78  
79  	link = kzalloc(sizeof(*link), GFP_KERNEL);
80  	if (!link)
81  		return -ENOMEM;
82  
83  	link->supplier = sup;
84  	INIT_LIST_HEAD(&link->s_hook);
85  	link->consumer = con;
86  	INIT_LIST_HEAD(&link->c_hook);
87  	link->flags = flags;
88  
89  	list_add(&link->s_hook, &sup->consumers);
90  	list_add(&link->c_hook, &con->suppliers);
91  	pr_debug("%pfwf Linked as a fwnode consumer to %pfwf\n",
92  		 con, sup);
93  
94  	return 0;
95  }
96  
fwnode_link_add(struct fwnode_handle * con,struct fwnode_handle * sup,u8 flags)97  int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup,
98  		    u8 flags)
99  {
100  	guard(mutex)(&fwnode_link_lock);
101  
102  	return __fwnode_link_add(con, sup, flags);
103  }
104  
105  /**
106   * __fwnode_link_del - Delete a link between two fwnode_handles.
107   * @link: the fwnode_link to be deleted
108   *
109   * The fwnode_link_lock needs to be held when this function is called.
110   */
__fwnode_link_del(struct fwnode_link * link)111  static void __fwnode_link_del(struct fwnode_link *link)
112  {
113  	pr_debug("%pfwf Dropping the fwnode link to %pfwf\n",
114  		 link->consumer, link->supplier);
115  	list_del(&link->s_hook);
116  	list_del(&link->c_hook);
117  	kfree(link);
118  }
119  
120  /**
121   * __fwnode_link_cycle - Mark a fwnode link as being part of a cycle.
122   * @link: the fwnode_link to be marked
123   *
124   * The fwnode_link_lock needs to be held when this function is called.
125   */
__fwnode_link_cycle(struct fwnode_link * link)126  static void __fwnode_link_cycle(struct fwnode_link *link)
127  {
128  	pr_debug("%pfwf: cycle: depends on %pfwf\n",
129  		 link->consumer, link->supplier);
130  	link->flags |= FWLINK_FLAG_CYCLE;
131  }
132  
133  /**
134   * fwnode_links_purge_suppliers - Delete all supplier links of fwnode_handle.
135   * @fwnode: fwnode whose supplier links need to be deleted
136   *
137   * Deletes all supplier links connecting directly to @fwnode.
138   */
fwnode_links_purge_suppliers(struct fwnode_handle * fwnode)139  static void fwnode_links_purge_suppliers(struct fwnode_handle *fwnode)
140  {
141  	struct fwnode_link *link, *tmp;
142  
143  	guard(mutex)(&fwnode_link_lock);
144  
145  	list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook)
146  		__fwnode_link_del(link);
147  }
148  
149  /**
150   * fwnode_links_purge_consumers - Delete all consumer links of fwnode_handle.
151   * @fwnode: fwnode whose consumer links need to be deleted
152   *
153   * Deletes all consumer links connecting directly to @fwnode.
154   */
fwnode_links_purge_consumers(struct fwnode_handle * fwnode)155  static void fwnode_links_purge_consumers(struct fwnode_handle *fwnode)
156  {
157  	struct fwnode_link *link, *tmp;
158  
159  	guard(mutex)(&fwnode_link_lock);
160  
161  	list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook)
162  		__fwnode_link_del(link);
163  }
164  
165  /**
166   * fwnode_links_purge - Delete all links connected to a fwnode_handle.
167   * @fwnode: fwnode whose links needs to be deleted
168   *
169   * Deletes all links connecting directly to a fwnode.
170   */
fwnode_links_purge(struct fwnode_handle * fwnode)171  void fwnode_links_purge(struct fwnode_handle *fwnode)
172  {
173  	fwnode_links_purge_suppliers(fwnode);
174  	fwnode_links_purge_consumers(fwnode);
175  }
176  
fw_devlink_purge_absent_suppliers(struct fwnode_handle * fwnode)177  void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode)
178  {
179  	struct fwnode_handle *child;
180  
181  	/* Don't purge consumer links of an added child */
182  	if (fwnode->dev)
183  		return;
184  
185  	fwnode->flags |= FWNODE_FLAG_NOT_DEVICE;
186  	fwnode_links_purge_consumers(fwnode);
187  
188  	fwnode_for_each_available_child_node(fwnode, child)
189  		fw_devlink_purge_absent_suppliers(child);
190  }
191  EXPORT_SYMBOL_GPL(fw_devlink_purge_absent_suppliers);
192  
193  /**
194   * __fwnode_links_move_consumers - Move consumer from @from to @to fwnode_handle
195   * @from: move consumers away from this fwnode
196   * @to: move consumers to this fwnode
197   *
198   * Move all consumer links from @from fwnode to @to fwnode.
199   */
__fwnode_links_move_consumers(struct fwnode_handle * from,struct fwnode_handle * to)200  static void __fwnode_links_move_consumers(struct fwnode_handle *from,
201  					  struct fwnode_handle *to)
202  {
203  	struct fwnode_link *link, *tmp;
204  
205  	list_for_each_entry_safe(link, tmp, &from->consumers, s_hook) {
206  		__fwnode_link_add(link->consumer, to, link->flags);
207  		__fwnode_link_del(link);
208  	}
209  }
210  
211  /**
212   * __fw_devlink_pickup_dangling_consumers - Pick up dangling consumers
213   * @fwnode: fwnode from which to pick up dangling consumers
214   * @new_sup: fwnode of new supplier
215   *
216   * If the @fwnode has a corresponding struct device and the device supports
217   * probing (that is, added to a bus), then we want to let fw_devlink create
218   * MANAGED device links to this device, so leave @fwnode and its descendant's
219   * fwnode links alone.
220   *
221   * Otherwise, move its consumers to the new supplier @new_sup.
222   */
__fw_devlink_pickup_dangling_consumers(struct fwnode_handle * fwnode,struct fwnode_handle * new_sup)223  static void __fw_devlink_pickup_dangling_consumers(struct fwnode_handle *fwnode,
224  						   struct fwnode_handle *new_sup)
225  {
226  	struct fwnode_handle *child;
227  
228  	if (fwnode->dev && fwnode->dev->bus)
229  		return;
230  
231  	fwnode->flags |= FWNODE_FLAG_NOT_DEVICE;
232  	__fwnode_links_move_consumers(fwnode, new_sup);
233  
234  	fwnode_for_each_available_child_node(fwnode, child)
235  		__fw_devlink_pickup_dangling_consumers(child, new_sup);
236  }
237  
238  static DEFINE_MUTEX(device_links_lock);
239  DEFINE_STATIC_SRCU(device_links_srcu);
240  
device_links_write_lock(void)241  static inline void device_links_write_lock(void)
242  {
243  	mutex_lock(&device_links_lock);
244  }
245  
device_links_write_unlock(void)246  static inline void device_links_write_unlock(void)
247  {
248  	mutex_unlock(&device_links_lock);
249  }
250  
device_links_read_lock(void)251  int device_links_read_lock(void) __acquires(&device_links_srcu)
252  {
253  	return srcu_read_lock(&device_links_srcu);
254  }
255  
device_links_read_unlock(int idx)256  void device_links_read_unlock(int idx) __releases(&device_links_srcu)
257  {
258  	srcu_read_unlock(&device_links_srcu, idx);
259  }
260  
device_links_read_lock_held(void)261  int device_links_read_lock_held(void)
262  {
263  	return srcu_read_lock_held(&device_links_srcu);
264  }
265  
device_link_synchronize_removal(void)266  static void device_link_synchronize_removal(void)
267  {
268  	synchronize_srcu(&device_links_srcu);
269  }
270  
device_link_remove_from_lists(struct device_link * link)271  static void device_link_remove_from_lists(struct device_link *link)
272  {
273  	list_del_rcu(&link->s_node);
274  	list_del_rcu(&link->c_node);
275  }
276  
device_is_ancestor(struct device * dev,struct device * target)277  static bool device_is_ancestor(struct device *dev, struct device *target)
278  {
279  	while (target->parent) {
280  		target = target->parent;
281  		if (dev == target)
282  			return true;
283  	}
284  	return false;
285  }
286  
287  #define DL_MARKER_FLAGS		(DL_FLAG_INFERRED | \
288  				 DL_FLAG_CYCLE | \
289  				 DL_FLAG_MANAGED)
device_link_flag_is_sync_state_only(u32 flags)290  static inline bool device_link_flag_is_sync_state_only(u32 flags)
291  {
292  	return (flags & ~DL_MARKER_FLAGS) == DL_FLAG_SYNC_STATE_ONLY;
293  }
294  
295  /**
296   * device_is_dependent - Check if one device depends on another one
297   * @dev: Device to check dependencies for.
298   * @target: Device to check against.
299   *
300   * Check if @target depends on @dev or any device dependent on it (its child or
301   * its consumer etc).  Return 1 if that is the case or 0 otherwise.
302   */
device_is_dependent(struct device * dev,void * target)303  static int device_is_dependent(struct device *dev, void *target)
304  {
305  	struct device_link *link;
306  	int ret;
307  
308  	/*
309  	 * The "ancestors" check is needed to catch the case when the target
310  	 * device has not been completely initialized yet and it is still
311  	 * missing from the list of children of its parent device.
312  	 */
313  	if (dev == target || device_is_ancestor(dev, target))
314  		return 1;
315  
316  	ret = device_for_each_child(dev, target, device_is_dependent);
317  	if (ret)
318  		return ret;
319  
320  	list_for_each_entry(link, &dev->links.consumers, s_node) {
321  		if (device_link_flag_is_sync_state_only(link->flags))
322  			continue;
323  
324  		if (link->consumer == target)
325  			return 1;
326  
327  		ret = device_is_dependent(link->consumer, target);
328  		if (ret)
329  			break;
330  	}
331  	return ret;
332  }
333  
device_link_init_status(struct device_link * link,struct device * consumer,struct device * supplier)334  static void device_link_init_status(struct device_link *link,
335  				    struct device *consumer,
336  				    struct device *supplier)
337  {
338  	switch (supplier->links.status) {
339  	case DL_DEV_PROBING:
340  		switch (consumer->links.status) {
341  		case DL_DEV_PROBING:
342  			/*
343  			 * A consumer driver can create a link to a supplier
344  			 * that has not completed its probing yet as long as it
345  			 * knows that the supplier is already functional (for
346  			 * example, it has just acquired some resources from the
347  			 * supplier).
348  			 */
349  			link->status = DL_STATE_CONSUMER_PROBE;
350  			break;
351  		default:
352  			link->status = DL_STATE_DORMANT;
353  			break;
354  		}
355  		break;
356  	case DL_DEV_DRIVER_BOUND:
357  		switch (consumer->links.status) {
358  		case DL_DEV_PROBING:
359  			link->status = DL_STATE_CONSUMER_PROBE;
360  			break;
361  		case DL_DEV_DRIVER_BOUND:
362  			link->status = DL_STATE_ACTIVE;
363  			break;
364  		default:
365  			link->status = DL_STATE_AVAILABLE;
366  			break;
367  		}
368  		break;
369  	case DL_DEV_UNBINDING:
370  		link->status = DL_STATE_SUPPLIER_UNBIND;
371  		break;
372  	default:
373  		link->status = DL_STATE_DORMANT;
374  		break;
375  	}
376  }
377  
device_reorder_to_tail(struct device * dev,void * not_used)378  static int device_reorder_to_tail(struct device *dev, void *not_used)
379  {
380  	struct device_link *link;
381  
382  	/*
383  	 * Devices that have not been registered yet will be put to the ends
384  	 * of the lists during the registration, so skip them here.
385  	 */
386  	if (device_is_registered(dev))
387  		devices_kset_move_last(dev);
388  
389  	if (device_pm_initialized(dev))
390  		device_pm_move_last(dev);
391  
392  	device_for_each_child(dev, NULL, device_reorder_to_tail);
393  	list_for_each_entry(link, &dev->links.consumers, s_node) {
394  		if (device_link_flag_is_sync_state_only(link->flags))
395  			continue;
396  		device_reorder_to_tail(link->consumer, NULL);
397  	}
398  
399  	return 0;
400  }
401  
402  /**
403   * device_pm_move_to_tail - Move set of devices to the end of device lists
404   * @dev: Device to move
405   *
406   * This is a device_reorder_to_tail() wrapper taking the requisite locks.
407   *
408   * It moves the @dev along with all of its children and all of its consumers
409   * to the ends of the device_kset and dpm_list, recursively.
410   */
device_pm_move_to_tail(struct device * dev)411  void device_pm_move_to_tail(struct device *dev)
412  {
413  	int idx;
414  
415  	idx = device_links_read_lock();
416  	device_pm_lock();
417  	device_reorder_to_tail(dev, NULL);
418  	device_pm_unlock();
419  	device_links_read_unlock(idx);
420  }
421  
422  #define to_devlink(dev)	container_of((dev), struct device_link, link_dev)
423  
status_show(struct device * dev,struct device_attribute * attr,char * buf)424  static ssize_t status_show(struct device *dev,
425  			   struct device_attribute *attr, char *buf)
426  {
427  	const char *output;
428  
429  	switch (to_devlink(dev)->status) {
430  	case DL_STATE_NONE:
431  		output = "not tracked";
432  		break;
433  	case DL_STATE_DORMANT:
434  		output = "dormant";
435  		break;
436  	case DL_STATE_AVAILABLE:
437  		output = "available";
438  		break;
439  	case DL_STATE_CONSUMER_PROBE:
440  		output = "consumer probing";
441  		break;
442  	case DL_STATE_ACTIVE:
443  		output = "active";
444  		break;
445  	case DL_STATE_SUPPLIER_UNBIND:
446  		output = "supplier unbinding";
447  		break;
448  	default:
449  		output = "unknown";
450  		break;
451  	}
452  
453  	return sysfs_emit(buf, "%s\n", output);
454  }
455  static DEVICE_ATTR_RO(status);
456  
auto_remove_on_show(struct device * dev,struct device_attribute * attr,char * buf)457  static ssize_t auto_remove_on_show(struct device *dev,
458  				   struct device_attribute *attr, char *buf)
459  {
460  	struct device_link *link = to_devlink(dev);
461  	const char *output;
462  
463  	if (link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
464  		output = "supplier unbind";
465  	else if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER)
466  		output = "consumer unbind";
467  	else
468  		output = "never";
469  
470  	return sysfs_emit(buf, "%s\n", output);
471  }
472  static DEVICE_ATTR_RO(auto_remove_on);
473  
runtime_pm_show(struct device * dev,struct device_attribute * attr,char * buf)474  static ssize_t runtime_pm_show(struct device *dev,
475  			       struct device_attribute *attr, char *buf)
476  {
477  	struct device_link *link = to_devlink(dev);
478  
479  	return sysfs_emit(buf, "%d\n", !!(link->flags & DL_FLAG_PM_RUNTIME));
480  }
481  static DEVICE_ATTR_RO(runtime_pm);
482  
sync_state_only_show(struct device * dev,struct device_attribute * attr,char * buf)483  static ssize_t sync_state_only_show(struct device *dev,
484  				    struct device_attribute *attr, char *buf)
485  {
486  	struct device_link *link = to_devlink(dev);
487  
488  	return sysfs_emit(buf, "%d\n",
489  			  !!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
490  }
491  static DEVICE_ATTR_RO(sync_state_only);
492  
493  static struct attribute *devlink_attrs[] = {
494  	&dev_attr_status.attr,
495  	&dev_attr_auto_remove_on.attr,
496  	&dev_attr_runtime_pm.attr,
497  	&dev_attr_sync_state_only.attr,
498  	NULL,
499  };
500  ATTRIBUTE_GROUPS(devlink);
501  
device_link_release_fn(struct work_struct * work)502  static void device_link_release_fn(struct work_struct *work)
503  {
504  	struct device_link *link = container_of(work, struct device_link, rm_work);
505  
506  	/* Ensure that all references to the link object have been dropped. */
507  	device_link_synchronize_removal();
508  
509  	pm_runtime_release_supplier(link);
510  	/*
511  	 * If supplier_preactivated is set, the link has been dropped between
512  	 * the pm_runtime_get_suppliers() and pm_runtime_put_suppliers() calls
513  	 * in __driver_probe_device().  In that case, drop the supplier's
514  	 * PM-runtime usage counter to remove the reference taken by
515  	 * pm_runtime_get_suppliers().
516  	 */
517  	if (link->supplier_preactivated)
518  		pm_runtime_put_noidle(link->supplier);
519  
520  	pm_request_idle(link->supplier);
521  
522  	put_device(link->consumer);
523  	put_device(link->supplier);
524  	kfree(link);
525  }
526  
devlink_dev_release(struct device * dev)527  static void devlink_dev_release(struct device *dev)
528  {
529  	struct device_link *link = to_devlink(dev);
530  
531  	INIT_WORK(&link->rm_work, device_link_release_fn);
532  	/*
533  	 * It may take a while to complete this work because of the SRCU
534  	 * synchronization in device_link_release_fn() and if the consumer or
535  	 * supplier devices get deleted when it runs, so put it into the
536  	 * dedicated workqueue.
537  	 */
538  	queue_work(device_link_wq, &link->rm_work);
539  }
540  
541  /**
542   * device_link_wait_removal - Wait for ongoing devlink removal jobs to terminate
543   */
device_link_wait_removal(void)544  void device_link_wait_removal(void)
545  {
546  	/*
547  	 * devlink removal jobs are queued in the dedicated work queue.
548  	 * To be sure that all removal jobs are terminated, ensure that any
549  	 * scheduled work has run to completion.
550  	 */
551  	flush_workqueue(device_link_wq);
552  }
553  EXPORT_SYMBOL_GPL(device_link_wait_removal);
554  
555  static struct class devlink_class = {
556  	.name = "devlink",
557  	.dev_groups = devlink_groups,
558  	.dev_release = devlink_dev_release,
559  };
560  
devlink_add_symlinks(struct device * dev)561  static int devlink_add_symlinks(struct device *dev)
562  {
563  	char *buf_con __free(kfree) = NULL, *buf_sup __free(kfree) = NULL;
564  	int ret;
565  	struct device_link *link = to_devlink(dev);
566  	struct device *sup = link->supplier;
567  	struct device *con = link->consumer;
568  
569  	ret = sysfs_create_link(&link->link_dev.kobj, &sup->kobj, "supplier");
570  	if (ret)
571  		goto out;
572  
573  	ret = sysfs_create_link(&link->link_dev.kobj, &con->kobj, "consumer");
574  	if (ret)
575  		goto err_con;
576  
577  	buf_con = kasprintf(GFP_KERNEL, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
578  	if (!buf_con) {
579  		ret = -ENOMEM;
580  		goto err_con_dev;
581  	}
582  
583  	ret = sysfs_create_link(&sup->kobj, &link->link_dev.kobj, buf_con);
584  	if (ret)
585  		goto err_con_dev;
586  
587  	buf_sup = kasprintf(GFP_KERNEL, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
588  	if (!buf_sup) {
589  		ret = -ENOMEM;
590  		goto err_sup_dev;
591  	}
592  
593  	ret = sysfs_create_link(&con->kobj, &link->link_dev.kobj, buf_sup);
594  	if (ret)
595  		goto err_sup_dev;
596  
597  	goto out;
598  
599  err_sup_dev:
600  	sysfs_remove_link(&sup->kobj, buf_con);
601  err_con_dev:
602  	sysfs_remove_link(&link->link_dev.kobj, "consumer");
603  err_con:
604  	sysfs_remove_link(&link->link_dev.kobj, "supplier");
605  out:
606  	return ret;
607  }
608  
devlink_remove_symlinks(struct device * dev)609  static void devlink_remove_symlinks(struct device *dev)
610  {
611  	char *buf_con __free(kfree) = NULL, *buf_sup __free(kfree) = NULL;
612  	struct device_link *link = to_devlink(dev);
613  	struct device *sup = link->supplier;
614  	struct device *con = link->consumer;
615  
616  	sysfs_remove_link(&link->link_dev.kobj, "consumer");
617  	sysfs_remove_link(&link->link_dev.kobj, "supplier");
618  
619  	if (device_is_registered(con)) {
620  		buf_sup = kasprintf(GFP_KERNEL, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
621  		if (!buf_sup)
622  			goto out;
623  		sysfs_remove_link(&con->kobj, buf_sup);
624  	}
625  
626  	buf_con = kasprintf(GFP_KERNEL, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
627  	if (!buf_con)
628  		goto out;
629  	sysfs_remove_link(&sup->kobj, buf_con);
630  
631  	return;
632  
633  out:
634  	WARN(1, "Unable to properly free device link symlinks!\n");
635  }
636  
637  static struct class_interface devlink_class_intf = {
638  	.class = &devlink_class,
639  	.add_dev = devlink_add_symlinks,
640  	.remove_dev = devlink_remove_symlinks,
641  };
642  
devlink_class_init(void)643  static int __init devlink_class_init(void)
644  {
645  	int ret;
646  
647  	ret = class_register(&devlink_class);
648  	if (ret)
649  		return ret;
650  
651  	ret = class_interface_register(&devlink_class_intf);
652  	if (ret)
653  		class_unregister(&devlink_class);
654  
655  	return ret;
656  }
657  postcore_initcall(devlink_class_init);
658  
659  #define DL_MANAGED_LINK_FLAGS (DL_FLAG_AUTOREMOVE_CONSUMER | \
660  			       DL_FLAG_AUTOREMOVE_SUPPLIER | \
661  			       DL_FLAG_AUTOPROBE_CONSUMER  | \
662  			       DL_FLAG_SYNC_STATE_ONLY | \
663  			       DL_FLAG_INFERRED | \
664  			       DL_FLAG_CYCLE)
665  
666  #define DL_ADD_VALID_FLAGS (DL_MANAGED_LINK_FLAGS | DL_FLAG_STATELESS | \
667  			    DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE)
668  
669  /**
670   * device_link_add - Create a link between two devices.
671   * @consumer: Consumer end of the link.
672   * @supplier: Supplier end of the link.
673   * @flags: Link flags.
674   *
675   * Return: On success, a device_link struct will be returned.
676   *         On error or invalid flag settings, NULL will be returned.
677   *
678   * The caller is responsible for the proper synchronization of the link creation
679   * with runtime PM.  First, setting the DL_FLAG_PM_RUNTIME flag will cause the
680   * runtime PM framework to take the link into account.  Second, if the
681   * DL_FLAG_RPM_ACTIVE flag is set in addition to it, the supplier devices will
682   * be forced into the active meta state and reference-counted upon the creation
683   * of the link.  If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be
684   * ignored.
685   *
686   * If DL_FLAG_STATELESS is set in @flags, the caller of this function is
687   * expected to release the link returned by it directly with the help of either
688   * device_link_del() or device_link_remove().
689   *
690   * If that flag is not set, however, the caller of this function is handing the
691   * management of the link over to the driver core entirely and its return value
692   * can only be used to check whether or not the link is present.  In that case,
693   * the DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER device link
694   * flags can be used to indicate to the driver core when the link can be safely
695   * deleted.  Namely, setting one of them in @flags indicates to the driver core
696   * that the link is not going to be used (by the given caller of this function)
697   * after unbinding the consumer or supplier driver, respectively, from its
698   * device, so the link can be deleted at that point.  If none of them is set,
699   * the link will be maintained until one of the devices pointed to by it (either
700   * the consumer or the supplier) is unregistered.
701   *
702   * Also, if DL_FLAG_STATELESS, DL_FLAG_AUTOREMOVE_CONSUMER and
703   * DL_FLAG_AUTOREMOVE_SUPPLIER are not set in @flags (that is, a persistent
704   * managed device link is being added), the DL_FLAG_AUTOPROBE_CONSUMER flag can
705   * be used to request the driver core to automatically probe for a consumer
706   * driver after successfully binding a driver to the supplier device.
707   *
708   * The combination of DL_FLAG_STATELESS and one of DL_FLAG_AUTOREMOVE_CONSUMER,
709   * DL_FLAG_AUTOREMOVE_SUPPLIER, or DL_FLAG_AUTOPROBE_CONSUMER set in @flags at
710   * the same time is invalid and will cause NULL to be returned upfront.
711   * However, if a device link between the given @consumer and @supplier pair
712   * exists already when this function is called for them, the existing link will
713   * be returned regardless of its current type and status (the link's flags may
714   * be modified then).  The caller of this function is then expected to treat
715   * the link as though it has just been created, so (in particular) if
716   * DL_FLAG_STATELESS was passed in @flags, the link needs to be released
717   * explicitly when not needed any more (as stated above).
718   *
719   * A side effect of the link creation is re-ordering of dpm_list and the
720   * devices_kset list by moving the consumer device and all devices depending
721   * on it to the ends of these lists (that does not happen to devices that have
722   * not been registered when this function is called).
723   *
724   * The supplier device is required to be registered when this function is called
725   * and NULL will be returned if that is not the case.  The consumer device need
726   * not be registered, however.
727   */
device_link_add(struct device * consumer,struct device * supplier,u32 flags)728  struct device_link *device_link_add(struct device *consumer,
729  				    struct device *supplier, u32 flags)
730  {
731  	struct device_link *link;
732  
733  	if (!consumer || !supplier || consumer == supplier ||
734  	    flags & ~DL_ADD_VALID_FLAGS ||
735  	    (flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
736  	    (flags & DL_FLAG_AUTOPROBE_CONSUMER &&
737  	     flags & (DL_FLAG_AUTOREMOVE_CONSUMER |
738  		      DL_FLAG_AUTOREMOVE_SUPPLIER)))
739  		return NULL;
740  
741  	if (flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) {
742  		if (pm_runtime_get_sync(supplier) < 0) {
743  			pm_runtime_put_noidle(supplier);
744  			return NULL;
745  		}
746  	}
747  
748  	if (!(flags & DL_FLAG_STATELESS))
749  		flags |= DL_FLAG_MANAGED;
750  
751  	if (flags & DL_FLAG_SYNC_STATE_ONLY &&
752  	    !device_link_flag_is_sync_state_only(flags))
753  		return NULL;
754  
755  	device_links_write_lock();
756  	device_pm_lock();
757  
758  	/*
759  	 * If the supplier has not been fully registered yet or there is a
760  	 * reverse (non-SYNC_STATE_ONLY) dependency between the consumer and
761  	 * the supplier already in the graph, return NULL. If the link is a
762  	 * SYNC_STATE_ONLY link, we don't check for reverse dependencies
763  	 * because it only affects sync_state() callbacks.
764  	 */
765  	if (!device_pm_initialized(supplier)
766  	    || (!(flags & DL_FLAG_SYNC_STATE_ONLY) &&
767  		  device_is_dependent(consumer, supplier))) {
768  		link = NULL;
769  		goto out;
770  	}
771  
772  	/*
773  	 * SYNC_STATE_ONLY links are useless once a consumer device has probed.
774  	 * So, only create it if the consumer hasn't probed yet.
775  	 */
776  	if (flags & DL_FLAG_SYNC_STATE_ONLY &&
777  	    consumer->links.status != DL_DEV_NO_DRIVER &&
778  	    consumer->links.status != DL_DEV_PROBING) {
779  		link = NULL;
780  		goto out;
781  	}
782  
783  	/*
784  	 * DL_FLAG_AUTOREMOVE_SUPPLIER indicates that the link will be needed
785  	 * longer than for DL_FLAG_AUTOREMOVE_CONSUMER and setting them both
786  	 * together doesn't make sense, so prefer DL_FLAG_AUTOREMOVE_SUPPLIER.
787  	 */
788  	if (flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
789  		flags &= ~DL_FLAG_AUTOREMOVE_CONSUMER;
790  
791  	list_for_each_entry(link, &supplier->links.consumers, s_node) {
792  		if (link->consumer != consumer)
793  			continue;
794  
795  		if (link->flags & DL_FLAG_INFERRED &&
796  		    !(flags & DL_FLAG_INFERRED))
797  			link->flags &= ~DL_FLAG_INFERRED;
798  
799  		if (flags & DL_FLAG_PM_RUNTIME) {
800  			if (!(link->flags & DL_FLAG_PM_RUNTIME)) {
801  				pm_runtime_new_link(consumer);
802  				link->flags |= DL_FLAG_PM_RUNTIME;
803  			}
804  			if (flags & DL_FLAG_RPM_ACTIVE)
805  				refcount_inc(&link->rpm_active);
806  		}
807  
808  		if (flags & DL_FLAG_STATELESS) {
809  			kref_get(&link->kref);
810  			if (link->flags & DL_FLAG_SYNC_STATE_ONLY &&
811  			    !(link->flags & DL_FLAG_STATELESS)) {
812  				link->flags |= DL_FLAG_STATELESS;
813  				goto reorder;
814  			} else {
815  				link->flags |= DL_FLAG_STATELESS;
816  				goto out;
817  			}
818  		}
819  
820  		/*
821  		 * If the life time of the link following from the new flags is
822  		 * longer than indicated by the flags of the existing link,
823  		 * update the existing link to stay around longer.
824  		 */
825  		if (flags & DL_FLAG_AUTOREMOVE_SUPPLIER) {
826  			if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER) {
827  				link->flags &= ~DL_FLAG_AUTOREMOVE_CONSUMER;
828  				link->flags |= DL_FLAG_AUTOREMOVE_SUPPLIER;
829  			}
830  		} else if (!(flags & DL_FLAG_AUTOREMOVE_CONSUMER)) {
831  			link->flags &= ~(DL_FLAG_AUTOREMOVE_CONSUMER |
832  					 DL_FLAG_AUTOREMOVE_SUPPLIER);
833  		}
834  		if (!(link->flags & DL_FLAG_MANAGED)) {
835  			kref_get(&link->kref);
836  			link->flags |= DL_FLAG_MANAGED;
837  			device_link_init_status(link, consumer, supplier);
838  		}
839  		if (link->flags & DL_FLAG_SYNC_STATE_ONLY &&
840  		    !(flags & DL_FLAG_SYNC_STATE_ONLY)) {
841  			link->flags &= ~DL_FLAG_SYNC_STATE_ONLY;
842  			goto reorder;
843  		}
844  
845  		goto out;
846  	}
847  
848  	link = kzalloc(sizeof(*link), GFP_KERNEL);
849  	if (!link)
850  		goto out;
851  
852  	refcount_set(&link->rpm_active, 1);
853  
854  	get_device(supplier);
855  	link->supplier = supplier;
856  	INIT_LIST_HEAD(&link->s_node);
857  	get_device(consumer);
858  	link->consumer = consumer;
859  	INIT_LIST_HEAD(&link->c_node);
860  	link->flags = flags;
861  	kref_init(&link->kref);
862  
863  	link->link_dev.class = &devlink_class;
864  	device_set_pm_not_required(&link->link_dev);
865  	dev_set_name(&link->link_dev, "%s:%s--%s:%s",
866  		     dev_bus_name(supplier), dev_name(supplier),
867  		     dev_bus_name(consumer), dev_name(consumer));
868  	if (device_register(&link->link_dev)) {
869  		put_device(&link->link_dev);
870  		link = NULL;
871  		goto out;
872  	}
873  
874  	if (flags & DL_FLAG_PM_RUNTIME) {
875  		if (flags & DL_FLAG_RPM_ACTIVE)
876  			refcount_inc(&link->rpm_active);
877  
878  		pm_runtime_new_link(consumer);
879  	}
880  
881  	/* Determine the initial link state. */
882  	if (flags & DL_FLAG_STATELESS)
883  		link->status = DL_STATE_NONE;
884  	else
885  		device_link_init_status(link, consumer, supplier);
886  
887  	/*
888  	 * Some callers expect the link creation during consumer driver probe to
889  	 * resume the supplier even without DL_FLAG_RPM_ACTIVE.
890  	 */
891  	if (link->status == DL_STATE_CONSUMER_PROBE &&
892  	    flags & DL_FLAG_PM_RUNTIME)
893  		pm_runtime_resume(supplier);
894  
895  	list_add_tail_rcu(&link->s_node, &supplier->links.consumers);
896  	list_add_tail_rcu(&link->c_node, &consumer->links.suppliers);
897  
898  	if (flags & DL_FLAG_SYNC_STATE_ONLY) {
899  		dev_dbg(consumer,
900  			"Linked as a sync state only consumer to %s\n",
901  			dev_name(supplier));
902  		goto out;
903  	}
904  
905  reorder:
906  	/*
907  	 * Move the consumer and all of the devices depending on it to the end
908  	 * of dpm_list and the devices_kset list.
909  	 *
910  	 * It is necessary to hold dpm_list locked throughout all that or else
911  	 * we may end up suspending with a wrong ordering of it.
912  	 */
913  	device_reorder_to_tail(consumer, NULL);
914  
915  	dev_dbg(consumer, "Linked as a consumer to %s\n", dev_name(supplier));
916  
917  out:
918  	device_pm_unlock();
919  	device_links_write_unlock();
920  
921  	if ((flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) && !link)
922  		pm_runtime_put(supplier);
923  
924  	return link;
925  }
926  EXPORT_SYMBOL_GPL(device_link_add);
927  
__device_link_del(struct kref * kref)928  static void __device_link_del(struct kref *kref)
929  {
930  	struct device_link *link = container_of(kref, struct device_link, kref);
931  
932  	dev_dbg(link->consumer, "Dropping the link to %s\n",
933  		dev_name(link->supplier));
934  
935  	pm_runtime_drop_link(link);
936  
937  	device_link_remove_from_lists(link);
938  	device_unregister(&link->link_dev);
939  }
940  
device_link_put_kref(struct device_link * link)941  static void device_link_put_kref(struct device_link *link)
942  {
943  	if (link->flags & DL_FLAG_STATELESS)
944  		kref_put(&link->kref, __device_link_del);
945  	else if (!device_is_registered(link->consumer))
946  		__device_link_del(&link->kref);
947  	else
948  		WARN(1, "Unable to drop a managed device link reference\n");
949  }
950  
951  /**
952   * device_link_del - Delete a stateless link between two devices.
953   * @link: Device link to delete.
954   *
955   * The caller must ensure proper synchronization of this function with runtime
956   * PM.  If the link was added multiple times, it needs to be deleted as often.
957   * Care is required for hotplugged devices:  Their links are purged on removal
958   * and calling device_link_del() is then no longer allowed.
959   */
device_link_del(struct device_link * link)960  void device_link_del(struct device_link *link)
961  {
962  	device_links_write_lock();
963  	device_link_put_kref(link);
964  	device_links_write_unlock();
965  }
966  EXPORT_SYMBOL_GPL(device_link_del);
967  
968  /**
969   * device_link_remove - Delete a stateless link between two devices.
970   * @consumer: Consumer end of the link.
971   * @supplier: Supplier end of the link.
972   *
973   * The caller must ensure proper synchronization of this function with runtime
974   * PM.
975   */
device_link_remove(void * consumer,struct device * supplier)976  void device_link_remove(void *consumer, struct device *supplier)
977  {
978  	struct device_link *link;
979  
980  	if (WARN_ON(consumer == supplier))
981  		return;
982  
983  	device_links_write_lock();
984  
985  	list_for_each_entry(link, &supplier->links.consumers, s_node) {
986  		if (link->consumer == consumer) {
987  			device_link_put_kref(link);
988  			break;
989  		}
990  	}
991  
992  	device_links_write_unlock();
993  }
994  EXPORT_SYMBOL_GPL(device_link_remove);
995  
device_links_missing_supplier(struct device * dev)996  static void device_links_missing_supplier(struct device *dev)
997  {
998  	struct device_link *link;
999  
1000  	list_for_each_entry(link, &dev->links.suppliers, c_node) {
1001  		if (link->status != DL_STATE_CONSUMER_PROBE)
1002  			continue;
1003  
1004  		if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) {
1005  			WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
1006  		} else {
1007  			WARN_ON(!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
1008  			WRITE_ONCE(link->status, DL_STATE_DORMANT);
1009  		}
1010  	}
1011  }
1012  
dev_is_best_effort(struct device * dev)1013  static bool dev_is_best_effort(struct device *dev)
1014  {
1015  	return (fw_devlink_best_effort && dev->can_match) ||
1016  		(dev->fwnode && (dev->fwnode->flags & FWNODE_FLAG_BEST_EFFORT));
1017  }
1018  
fwnode_links_check_suppliers(struct fwnode_handle * fwnode)1019  static struct fwnode_handle *fwnode_links_check_suppliers(
1020  						struct fwnode_handle *fwnode)
1021  {
1022  	struct fwnode_link *link;
1023  
1024  	if (!fwnode || fw_devlink_is_permissive())
1025  		return NULL;
1026  
1027  	list_for_each_entry(link, &fwnode->suppliers, c_hook)
1028  		if (!(link->flags &
1029  		      (FWLINK_FLAG_CYCLE | FWLINK_FLAG_IGNORE)))
1030  			return link->supplier;
1031  
1032  	return NULL;
1033  }
1034  
1035  /**
1036   * device_links_check_suppliers - Check presence of supplier drivers.
1037   * @dev: Consumer device.
1038   *
1039   * Check links from this device to any suppliers.  Walk the list of the device's
1040   * links to suppliers and see if all of them are available.  If not, simply
1041   * return -EPROBE_DEFER.
1042   *
1043   * We need to guarantee that the supplier will not go away after the check has
1044   * been positive here.  It only can go away in __device_release_driver() and
1045   * that function  checks the device's links to consumers.  This means we need to
1046   * mark the link as "consumer probe in progress" to make the supplier removal
1047   * wait for us to complete (or bad things may happen).
1048   *
1049   * Links without the DL_FLAG_MANAGED flag set are ignored.
1050   */
device_links_check_suppliers(struct device * dev)1051  int device_links_check_suppliers(struct device *dev)
1052  {
1053  	struct device_link *link;
1054  	int ret = 0, fwnode_ret = 0;
1055  	struct fwnode_handle *sup_fw;
1056  
1057  	/*
1058  	 * Device waiting for supplier to become available is not allowed to
1059  	 * probe.
1060  	 */
1061  	scoped_guard(mutex, &fwnode_link_lock) {
1062  		sup_fw = fwnode_links_check_suppliers(dev->fwnode);
1063  		if (sup_fw) {
1064  			if (dev_is_best_effort(dev))
1065  				fwnode_ret = -EAGAIN;
1066  			else
1067  				return dev_err_probe(dev, -EPROBE_DEFER,
1068  						     "wait for supplier %pfwf\n", sup_fw);
1069  		}
1070  	}
1071  
1072  	device_links_write_lock();
1073  
1074  	list_for_each_entry(link, &dev->links.suppliers, c_node) {
1075  		if (!(link->flags & DL_FLAG_MANAGED))
1076  			continue;
1077  
1078  		if (link->status != DL_STATE_AVAILABLE &&
1079  		    !(link->flags & DL_FLAG_SYNC_STATE_ONLY)) {
1080  
1081  			if (dev_is_best_effort(dev) &&
1082  			    link->flags & DL_FLAG_INFERRED &&
1083  			    !link->supplier->can_match) {
1084  				ret = -EAGAIN;
1085  				continue;
1086  			}
1087  
1088  			device_links_missing_supplier(dev);
1089  			ret = dev_err_probe(dev, -EPROBE_DEFER,
1090  					    "supplier %s not ready\n", dev_name(link->supplier));
1091  			break;
1092  		}
1093  		WRITE_ONCE(link->status, DL_STATE_CONSUMER_PROBE);
1094  	}
1095  	dev->links.status = DL_DEV_PROBING;
1096  
1097  	device_links_write_unlock();
1098  
1099  	return ret ? ret : fwnode_ret;
1100  }
1101  
1102  /**
1103   * __device_links_queue_sync_state - Queue a device for sync_state() callback
1104   * @dev: Device to call sync_state() on
1105   * @list: List head to queue the @dev on
1106   *
1107   * Queues a device for a sync_state() callback when the device links write lock
1108   * isn't held. This allows the sync_state() execution flow to use device links
1109   * APIs.  The caller must ensure this function is called with
1110   * device_links_write_lock() held.
1111   *
1112   * This function does a get_device() to make sure the device is not freed while
1113   * on this list.
1114   *
1115   * So the caller must also ensure that device_links_flush_sync_list() is called
1116   * as soon as the caller releases device_links_write_lock().  This is necessary
1117   * to make sure the sync_state() is called in a timely fashion and the
1118   * put_device() is called on this device.
1119   */
__device_links_queue_sync_state(struct device * dev,struct list_head * list)1120  static void __device_links_queue_sync_state(struct device *dev,
1121  					    struct list_head *list)
1122  {
1123  	struct device_link *link;
1124  
1125  	if (!dev_has_sync_state(dev))
1126  		return;
1127  	if (dev->state_synced)
1128  		return;
1129  
1130  	list_for_each_entry(link, &dev->links.consumers, s_node) {
1131  		if (!(link->flags & DL_FLAG_MANAGED))
1132  			continue;
1133  		if (link->status != DL_STATE_ACTIVE)
1134  			return;
1135  	}
1136  
1137  	/*
1138  	 * Set the flag here to avoid adding the same device to a list more
1139  	 * than once. This can happen if new consumers get added to the device
1140  	 * and probed before the list is flushed.
1141  	 */
1142  	dev->state_synced = true;
1143  
1144  	if (WARN_ON(!list_empty(&dev->links.defer_sync)))
1145  		return;
1146  
1147  	get_device(dev);
1148  	list_add_tail(&dev->links.defer_sync, list);
1149  }
1150  
1151  /**
1152   * device_links_flush_sync_list - Call sync_state() on a list of devices
1153   * @list: List of devices to call sync_state() on
1154   * @dont_lock_dev: Device for which lock is already held by the caller
1155   *
1156   * Calls sync_state() on all the devices that have been queued for it. This
1157   * function is used in conjunction with __device_links_queue_sync_state(). The
1158   * @dont_lock_dev parameter is useful when this function is called from a
1159   * context where a device lock is already held.
1160   */
device_links_flush_sync_list(struct list_head * list,struct device * dont_lock_dev)1161  static void device_links_flush_sync_list(struct list_head *list,
1162  					 struct device *dont_lock_dev)
1163  {
1164  	struct device *dev, *tmp;
1165  
1166  	list_for_each_entry_safe(dev, tmp, list, links.defer_sync) {
1167  		list_del_init(&dev->links.defer_sync);
1168  
1169  		if (dev != dont_lock_dev)
1170  			device_lock(dev);
1171  
1172  		dev_sync_state(dev);
1173  
1174  		if (dev != dont_lock_dev)
1175  			device_unlock(dev);
1176  
1177  		put_device(dev);
1178  	}
1179  }
1180  
device_links_supplier_sync_state_pause(void)1181  void device_links_supplier_sync_state_pause(void)
1182  {
1183  	device_links_write_lock();
1184  	defer_sync_state_count++;
1185  	device_links_write_unlock();
1186  }
1187  
device_links_supplier_sync_state_resume(void)1188  void device_links_supplier_sync_state_resume(void)
1189  {
1190  	struct device *dev, *tmp;
1191  	LIST_HEAD(sync_list);
1192  
1193  	device_links_write_lock();
1194  	if (!defer_sync_state_count) {
1195  		WARN(true, "Unmatched sync_state pause/resume!");
1196  		goto out;
1197  	}
1198  	defer_sync_state_count--;
1199  	if (defer_sync_state_count)
1200  		goto out;
1201  
1202  	list_for_each_entry_safe(dev, tmp, &deferred_sync, links.defer_sync) {
1203  		/*
1204  		 * Delete from deferred_sync list before queuing it to
1205  		 * sync_list because defer_sync is used for both lists.
1206  		 */
1207  		list_del_init(&dev->links.defer_sync);
1208  		__device_links_queue_sync_state(dev, &sync_list);
1209  	}
1210  out:
1211  	device_links_write_unlock();
1212  
1213  	device_links_flush_sync_list(&sync_list, NULL);
1214  }
1215  
sync_state_resume_initcall(void)1216  static int sync_state_resume_initcall(void)
1217  {
1218  	device_links_supplier_sync_state_resume();
1219  	return 0;
1220  }
1221  late_initcall(sync_state_resume_initcall);
1222  
__device_links_supplier_defer_sync(struct device * sup)1223  static void __device_links_supplier_defer_sync(struct device *sup)
1224  {
1225  	if (list_empty(&sup->links.defer_sync) && dev_has_sync_state(sup))
1226  		list_add_tail(&sup->links.defer_sync, &deferred_sync);
1227  }
1228  
device_link_drop_managed(struct device_link * link)1229  static void device_link_drop_managed(struct device_link *link)
1230  {
1231  	link->flags &= ~DL_FLAG_MANAGED;
1232  	WRITE_ONCE(link->status, DL_STATE_NONE);
1233  	kref_put(&link->kref, __device_link_del);
1234  }
1235  
waiting_for_supplier_show(struct device * dev,struct device_attribute * attr,char * buf)1236  static ssize_t waiting_for_supplier_show(struct device *dev,
1237  					 struct device_attribute *attr,
1238  					 char *buf)
1239  {
1240  	bool val;
1241  
1242  	device_lock(dev);
1243  	scoped_guard(mutex, &fwnode_link_lock)
1244  		val = !!fwnode_links_check_suppliers(dev->fwnode);
1245  	device_unlock(dev);
1246  	return sysfs_emit(buf, "%u\n", val);
1247  }
1248  static DEVICE_ATTR_RO(waiting_for_supplier);
1249  
1250  /**
1251   * device_links_force_bind - Prepares device to be force bound
1252   * @dev: Consumer device.
1253   *
1254   * device_bind_driver() force binds a device to a driver without calling any
1255   * driver probe functions. So the consumer really isn't going to wait for any
1256   * supplier before it's bound to the driver. We still want the device link
1257   * states to be sensible when this happens.
1258   *
1259   * In preparation for device_bind_driver(), this function goes through each
1260   * supplier device links and checks if the supplier is bound. If it is, then
1261   * the device link status is set to CONSUMER_PROBE. Otherwise, the device link
1262   * is dropped. Links without the DL_FLAG_MANAGED flag set are ignored.
1263   */
device_links_force_bind(struct device * dev)1264  void device_links_force_bind(struct device *dev)
1265  {
1266  	struct device_link *link, *ln;
1267  
1268  	device_links_write_lock();
1269  
1270  	list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) {
1271  		if (!(link->flags & DL_FLAG_MANAGED))
1272  			continue;
1273  
1274  		if (link->status != DL_STATE_AVAILABLE) {
1275  			device_link_drop_managed(link);
1276  			continue;
1277  		}
1278  		WRITE_ONCE(link->status, DL_STATE_CONSUMER_PROBE);
1279  	}
1280  	dev->links.status = DL_DEV_PROBING;
1281  
1282  	device_links_write_unlock();
1283  }
1284  
1285  /**
1286   * device_links_driver_bound - Update device links after probing its driver.
1287   * @dev: Device to update the links for.
1288   *
1289   * The probe has been successful, so update links from this device to any
1290   * consumers by changing their status to "available".
1291   *
1292   * Also change the status of @dev's links to suppliers to "active".
1293   *
1294   * Links without the DL_FLAG_MANAGED flag set are ignored.
1295   */
device_links_driver_bound(struct device * dev)1296  void device_links_driver_bound(struct device *dev)
1297  {
1298  	struct device_link *link, *ln;
1299  	LIST_HEAD(sync_list);
1300  
1301  	/*
1302  	 * If a device binds successfully, it's expected to have created all
1303  	 * the device links it needs to or make new device links as it needs
1304  	 * them. So, fw_devlink no longer needs to create device links to any
1305  	 * of the device's suppliers.
1306  	 *
1307  	 * Also, if a child firmware node of this bound device is not added as a
1308  	 * device by now, assume it is never going to be added. Make this bound
1309  	 * device the fallback supplier to the dangling consumers of the child
1310  	 * firmware node because this bound device is probably implementing the
1311  	 * child firmware node functionality and we don't want the dangling
1312  	 * consumers to defer probe indefinitely waiting for a device for the
1313  	 * child firmware node.
1314  	 */
1315  	if (dev->fwnode && dev->fwnode->dev == dev) {
1316  		struct fwnode_handle *child;
1317  
1318  		fwnode_links_purge_suppliers(dev->fwnode);
1319  
1320  		guard(mutex)(&fwnode_link_lock);
1321  
1322  		fwnode_for_each_available_child_node(dev->fwnode, child)
1323  			__fw_devlink_pickup_dangling_consumers(child,
1324  							       dev->fwnode);
1325  		__fw_devlink_link_to_consumers(dev);
1326  	}
1327  	device_remove_file(dev, &dev_attr_waiting_for_supplier);
1328  
1329  	device_links_write_lock();
1330  
1331  	list_for_each_entry(link, &dev->links.consumers, s_node) {
1332  		if (!(link->flags & DL_FLAG_MANAGED))
1333  			continue;
1334  
1335  		/*
1336  		 * Links created during consumer probe may be in the "consumer
1337  		 * probe" state to start with if the supplier is still probing
1338  		 * when they are created and they may become "active" if the
1339  		 * consumer probe returns first.  Skip them here.
1340  		 */
1341  		if (link->status == DL_STATE_CONSUMER_PROBE ||
1342  		    link->status == DL_STATE_ACTIVE)
1343  			continue;
1344  
1345  		WARN_ON(link->status != DL_STATE_DORMANT);
1346  		WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
1347  
1348  		if (link->flags & DL_FLAG_AUTOPROBE_CONSUMER)
1349  			driver_deferred_probe_add(link->consumer);
1350  	}
1351  
1352  	if (defer_sync_state_count)
1353  		__device_links_supplier_defer_sync(dev);
1354  	else
1355  		__device_links_queue_sync_state(dev, &sync_list);
1356  
1357  	list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) {
1358  		struct device *supplier;
1359  
1360  		if (!(link->flags & DL_FLAG_MANAGED))
1361  			continue;
1362  
1363  		supplier = link->supplier;
1364  		if (link->flags & DL_FLAG_SYNC_STATE_ONLY) {
1365  			/*
1366  			 * When DL_FLAG_SYNC_STATE_ONLY is set, it means no
1367  			 * other DL_MANAGED_LINK_FLAGS have been set. So, it's
1368  			 * save to drop the managed link completely.
1369  			 */
1370  			device_link_drop_managed(link);
1371  		} else if (dev_is_best_effort(dev) &&
1372  			   link->flags & DL_FLAG_INFERRED &&
1373  			   link->status != DL_STATE_CONSUMER_PROBE &&
1374  			   !link->supplier->can_match) {
1375  			/*
1376  			 * When dev_is_best_effort() is true, we ignore device
1377  			 * links to suppliers that don't have a driver.  If the
1378  			 * consumer device still managed to probe, there's no
1379  			 * point in maintaining a device link in a weird state
1380  			 * (consumer probed before supplier). So delete it.
1381  			 */
1382  			device_link_drop_managed(link);
1383  		} else {
1384  			WARN_ON(link->status != DL_STATE_CONSUMER_PROBE);
1385  			WRITE_ONCE(link->status, DL_STATE_ACTIVE);
1386  		}
1387  
1388  		/*
1389  		 * This needs to be done even for the deleted
1390  		 * DL_FLAG_SYNC_STATE_ONLY device link in case it was the last
1391  		 * device link that was preventing the supplier from getting a
1392  		 * sync_state() call.
1393  		 */
1394  		if (defer_sync_state_count)
1395  			__device_links_supplier_defer_sync(supplier);
1396  		else
1397  			__device_links_queue_sync_state(supplier, &sync_list);
1398  	}
1399  
1400  	dev->links.status = DL_DEV_DRIVER_BOUND;
1401  
1402  	device_links_write_unlock();
1403  
1404  	device_links_flush_sync_list(&sync_list, dev);
1405  }
1406  
1407  /**
1408   * __device_links_no_driver - Update links of a device without a driver.
1409   * @dev: Device without a drvier.
1410   *
1411   * Delete all non-persistent links from this device to any suppliers.
1412   *
1413   * Persistent links stay around, but their status is changed to "available",
1414   * unless they already are in the "supplier unbind in progress" state in which
1415   * case they need not be updated.
1416   *
1417   * Links without the DL_FLAG_MANAGED flag set are ignored.
1418   */
__device_links_no_driver(struct device * dev)1419  static void __device_links_no_driver(struct device *dev)
1420  {
1421  	struct device_link *link, *ln;
1422  
1423  	list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
1424  		if (!(link->flags & DL_FLAG_MANAGED))
1425  			continue;
1426  
1427  		if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER) {
1428  			device_link_drop_managed(link);
1429  			continue;
1430  		}
1431  
1432  		if (link->status != DL_STATE_CONSUMER_PROBE &&
1433  		    link->status != DL_STATE_ACTIVE)
1434  			continue;
1435  
1436  		if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) {
1437  			WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
1438  		} else {
1439  			WARN_ON(!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
1440  			WRITE_ONCE(link->status, DL_STATE_DORMANT);
1441  		}
1442  	}
1443  
1444  	dev->links.status = DL_DEV_NO_DRIVER;
1445  }
1446  
1447  /**
1448   * device_links_no_driver - Update links after failing driver probe.
1449   * @dev: Device whose driver has just failed to probe.
1450   *
1451   * Clean up leftover links to consumers for @dev and invoke
1452   * %__device_links_no_driver() to update links to suppliers for it as
1453   * appropriate.
1454   *
1455   * Links without the DL_FLAG_MANAGED flag set are ignored.
1456   */
device_links_no_driver(struct device * dev)1457  void device_links_no_driver(struct device *dev)
1458  {
1459  	struct device_link *link;
1460  
1461  	device_links_write_lock();
1462  
1463  	list_for_each_entry(link, &dev->links.consumers, s_node) {
1464  		if (!(link->flags & DL_FLAG_MANAGED))
1465  			continue;
1466  
1467  		/*
1468  		 * The probe has failed, so if the status of the link is
1469  		 * "consumer probe" or "active", it must have been added by
1470  		 * a probing consumer while this device was still probing.
1471  		 * Change its state to "dormant", as it represents a valid
1472  		 * relationship, but it is not functionally meaningful.
1473  		 */
1474  		if (link->status == DL_STATE_CONSUMER_PROBE ||
1475  		    link->status == DL_STATE_ACTIVE)
1476  			WRITE_ONCE(link->status, DL_STATE_DORMANT);
1477  	}
1478  
1479  	__device_links_no_driver(dev);
1480  
1481  	device_links_write_unlock();
1482  }
1483  
1484  /**
1485   * device_links_driver_cleanup - Update links after driver removal.
1486   * @dev: Device whose driver has just gone away.
1487   *
1488   * Update links to consumers for @dev by changing their status to "dormant" and
1489   * invoke %__device_links_no_driver() to update links to suppliers for it as
1490   * appropriate.
1491   *
1492   * Links without the DL_FLAG_MANAGED flag set are ignored.
1493   */
device_links_driver_cleanup(struct device * dev)1494  void device_links_driver_cleanup(struct device *dev)
1495  {
1496  	struct device_link *link, *ln;
1497  
1498  	device_links_write_lock();
1499  
1500  	list_for_each_entry_safe(link, ln, &dev->links.consumers, s_node) {
1501  		if (!(link->flags & DL_FLAG_MANAGED))
1502  			continue;
1503  
1504  		WARN_ON(link->flags & DL_FLAG_AUTOREMOVE_CONSUMER);
1505  		WARN_ON(link->status != DL_STATE_SUPPLIER_UNBIND);
1506  
1507  		/*
1508  		 * autoremove the links between this @dev and its consumer
1509  		 * devices that are not active, i.e. where the link state
1510  		 * has moved to DL_STATE_SUPPLIER_UNBIND.
1511  		 */
1512  		if (link->status == DL_STATE_SUPPLIER_UNBIND &&
1513  		    link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
1514  			device_link_drop_managed(link);
1515  
1516  		WRITE_ONCE(link->status, DL_STATE_DORMANT);
1517  	}
1518  
1519  	list_del_init(&dev->links.defer_sync);
1520  	__device_links_no_driver(dev);
1521  
1522  	device_links_write_unlock();
1523  }
1524  
1525  /**
1526   * device_links_busy - Check if there are any busy links to consumers.
1527   * @dev: Device to check.
1528   *
1529   * Check each consumer of the device and return 'true' if its link's status
1530   * is one of "consumer probe" or "active" (meaning that the given consumer is
1531   * probing right now or its driver is present).  Otherwise, change the link
1532   * state to "supplier unbind" to prevent the consumer from being probed
1533   * successfully going forward.
1534   *
1535   * Return 'false' if there are no probing or active consumers.
1536   *
1537   * Links without the DL_FLAG_MANAGED flag set are ignored.
1538   */
device_links_busy(struct device * dev)1539  bool device_links_busy(struct device *dev)
1540  {
1541  	struct device_link *link;
1542  	bool ret = false;
1543  
1544  	device_links_write_lock();
1545  
1546  	list_for_each_entry(link, &dev->links.consumers, s_node) {
1547  		if (!(link->flags & DL_FLAG_MANAGED))
1548  			continue;
1549  
1550  		if (link->status == DL_STATE_CONSUMER_PROBE
1551  		    || link->status == DL_STATE_ACTIVE) {
1552  			ret = true;
1553  			break;
1554  		}
1555  		WRITE_ONCE(link->status, DL_STATE_SUPPLIER_UNBIND);
1556  	}
1557  
1558  	dev->links.status = DL_DEV_UNBINDING;
1559  
1560  	device_links_write_unlock();
1561  	return ret;
1562  }
1563  
1564  /**
1565   * device_links_unbind_consumers - Force unbind consumers of the given device.
1566   * @dev: Device to unbind the consumers of.
1567   *
1568   * Walk the list of links to consumers for @dev and if any of them is in the
1569   * "consumer probe" state, wait for all device probes in progress to complete
1570   * and start over.
1571   *
1572   * If that's not the case, change the status of the link to "supplier unbind"
1573   * and check if the link was in the "active" state.  If so, force the consumer
1574   * driver to unbind and start over (the consumer will not re-probe as we have
1575   * changed the state of the link already).
1576   *
1577   * Links without the DL_FLAG_MANAGED flag set are ignored.
1578   */
device_links_unbind_consumers(struct device * dev)1579  void device_links_unbind_consumers(struct device *dev)
1580  {
1581  	struct device_link *link;
1582  
1583   start:
1584  	device_links_write_lock();
1585  
1586  	list_for_each_entry(link, &dev->links.consumers, s_node) {
1587  		enum device_link_state status;
1588  
1589  		if (!(link->flags & DL_FLAG_MANAGED) ||
1590  		    link->flags & DL_FLAG_SYNC_STATE_ONLY)
1591  			continue;
1592  
1593  		status = link->status;
1594  		if (status == DL_STATE_CONSUMER_PROBE) {
1595  			device_links_write_unlock();
1596  
1597  			wait_for_device_probe();
1598  			goto start;
1599  		}
1600  		WRITE_ONCE(link->status, DL_STATE_SUPPLIER_UNBIND);
1601  		if (status == DL_STATE_ACTIVE) {
1602  			struct device *consumer = link->consumer;
1603  
1604  			get_device(consumer);
1605  
1606  			device_links_write_unlock();
1607  
1608  			device_release_driver_internal(consumer, NULL,
1609  						       consumer->parent);
1610  			put_device(consumer);
1611  			goto start;
1612  		}
1613  	}
1614  
1615  	device_links_write_unlock();
1616  }
1617  
1618  /**
1619   * device_links_purge - Delete existing links to other devices.
1620   * @dev: Target device.
1621   */
device_links_purge(struct device * dev)1622  static void device_links_purge(struct device *dev)
1623  {
1624  	struct device_link *link, *ln;
1625  
1626  	if (dev->class == &devlink_class)
1627  		return;
1628  
1629  	/*
1630  	 * Delete all of the remaining links from this device to any other
1631  	 * devices (either consumers or suppliers).
1632  	 */
1633  	device_links_write_lock();
1634  
1635  	list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
1636  		WARN_ON(link->status == DL_STATE_ACTIVE);
1637  		__device_link_del(&link->kref);
1638  	}
1639  
1640  	list_for_each_entry_safe_reverse(link, ln, &dev->links.consumers, s_node) {
1641  		WARN_ON(link->status != DL_STATE_DORMANT &&
1642  			link->status != DL_STATE_NONE);
1643  		__device_link_del(&link->kref);
1644  	}
1645  
1646  	device_links_write_unlock();
1647  }
1648  
1649  #define FW_DEVLINK_FLAGS_PERMISSIVE	(DL_FLAG_INFERRED | \
1650  					 DL_FLAG_SYNC_STATE_ONLY)
1651  #define FW_DEVLINK_FLAGS_ON		(DL_FLAG_INFERRED | \
1652  					 DL_FLAG_AUTOPROBE_CONSUMER)
1653  #define FW_DEVLINK_FLAGS_RPM		(FW_DEVLINK_FLAGS_ON | \
1654  					 DL_FLAG_PM_RUNTIME)
1655  
1656  static u32 fw_devlink_flags = FW_DEVLINK_FLAGS_RPM;
fw_devlink_setup(char * arg)1657  static int __init fw_devlink_setup(char *arg)
1658  {
1659  	if (!arg)
1660  		return -EINVAL;
1661  
1662  	if (strcmp(arg, "off") == 0) {
1663  		fw_devlink_flags = 0;
1664  	} else if (strcmp(arg, "permissive") == 0) {
1665  		fw_devlink_flags = FW_DEVLINK_FLAGS_PERMISSIVE;
1666  	} else if (strcmp(arg, "on") == 0) {
1667  		fw_devlink_flags = FW_DEVLINK_FLAGS_ON;
1668  	} else if (strcmp(arg, "rpm") == 0) {
1669  		fw_devlink_flags = FW_DEVLINK_FLAGS_RPM;
1670  	}
1671  	return 0;
1672  }
1673  early_param("fw_devlink", fw_devlink_setup);
1674  
1675  static bool fw_devlink_strict;
fw_devlink_strict_setup(char * arg)1676  static int __init fw_devlink_strict_setup(char *arg)
1677  {
1678  	return kstrtobool(arg, &fw_devlink_strict);
1679  }
1680  early_param("fw_devlink.strict", fw_devlink_strict_setup);
1681  
1682  #define FW_DEVLINK_SYNC_STATE_STRICT	0
1683  #define FW_DEVLINK_SYNC_STATE_TIMEOUT	1
1684  
1685  #ifndef CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT
1686  static int fw_devlink_sync_state;
1687  #else
1688  static int fw_devlink_sync_state = FW_DEVLINK_SYNC_STATE_TIMEOUT;
1689  #endif
1690  
fw_devlink_sync_state_setup(char * arg)1691  static int __init fw_devlink_sync_state_setup(char *arg)
1692  {
1693  	if (!arg)
1694  		return -EINVAL;
1695  
1696  	if (strcmp(arg, "strict") == 0) {
1697  		fw_devlink_sync_state = FW_DEVLINK_SYNC_STATE_STRICT;
1698  		return 0;
1699  	} else if (strcmp(arg, "timeout") == 0) {
1700  		fw_devlink_sync_state = FW_DEVLINK_SYNC_STATE_TIMEOUT;
1701  		return 0;
1702  	}
1703  	return -EINVAL;
1704  }
1705  early_param("fw_devlink.sync_state", fw_devlink_sync_state_setup);
1706  
fw_devlink_get_flags(u8 fwlink_flags)1707  static inline u32 fw_devlink_get_flags(u8 fwlink_flags)
1708  {
1709  	if (fwlink_flags & FWLINK_FLAG_CYCLE)
1710  		return FW_DEVLINK_FLAGS_PERMISSIVE | DL_FLAG_CYCLE;
1711  
1712  	return fw_devlink_flags;
1713  }
1714  
fw_devlink_is_permissive(void)1715  static bool fw_devlink_is_permissive(void)
1716  {
1717  	return fw_devlink_flags == FW_DEVLINK_FLAGS_PERMISSIVE;
1718  }
1719  
fw_devlink_is_strict(void)1720  bool fw_devlink_is_strict(void)
1721  {
1722  	return fw_devlink_strict && !fw_devlink_is_permissive();
1723  }
1724  
fw_devlink_parse_fwnode(struct fwnode_handle * fwnode)1725  static void fw_devlink_parse_fwnode(struct fwnode_handle *fwnode)
1726  {
1727  	if (fwnode->flags & FWNODE_FLAG_LINKS_ADDED)
1728  		return;
1729  
1730  	fwnode_call_int_op(fwnode, add_links);
1731  	fwnode->flags |= FWNODE_FLAG_LINKS_ADDED;
1732  }
1733  
fw_devlink_parse_fwtree(struct fwnode_handle * fwnode)1734  static void fw_devlink_parse_fwtree(struct fwnode_handle *fwnode)
1735  {
1736  	struct fwnode_handle *child = NULL;
1737  
1738  	fw_devlink_parse_fwnode(fwnode);
1739  
1740  	while ((child = fwnode_get_next_available_child_node(fwnode, child)))
1741  		fw_devlink_parse_fwtree(child);
1742  }
1743  
fw_devlink_relax_link(struct device_link * link)1744  static void fw_devlink_relax_link(struct device_link *link)
1745  {
1746  	if (!(link->flags & DL_FLAG_INFERRED))
1747  		return;
1748  
1749  	if (device_link_flag_is_sync_state_only(link->flags))
1750  		return;
1751  
1752  	pm_runtime_drop_link(link);
1753  	link->flags = DL_FLAG_MANAGED | FW_DEVLINK_FLAGS_PERMISSIVE;
1754  	dev_dbg(link->consumer, "Relaxing link with %s\n",
1755  		dev_name(link->supplier));
1756  }
1757  
fw_devlink_no_driver(struct device * dev,void * data)1758  static int fw_devlink_no_driver(struct device *dev, void *data)
1759  {
1760  	struct device_link *link = to_devlink(dev);
1761  
1762  	if (!link->supplier->can_match)
1763  		fw_devlink_relax_link(link);
1764  
1765  	return 0;
1766  }
1767  
fw_devlink_drivers_done(void)1768  void fw_devlink_drivers_done(void)
1769  {
1770  	fw_devlink_drv_reg_done = true;
1771  	device_links_write_lock();
1772  	class_for_each_device(&devlink_class, NULL, NULL,
1773  			      fw_devlink_no_driver);
1774  	device_links_write_unlock();
1775  }
1776  
fw_devlink_dev_sync_state(struct device * dev,void * data)1777  static int fw_devlink_dev_sync_state(struct device *dev, void *data)
1778  {
1779  	struct device_link *link = to_devlink(dev);
1780  	struct device *sup = link->supplier;
1781  
1782  	if (!(link->flags & DL_FLAG_MANAGED) ||
1783  	    link->status == DL_STATE_ACTIVE || sup->state_synced ||
1784  	    !dev_has_sync_state(sup))
1785  		return 0;
1786  
1787  	if (fw_devlink_sync_state == FW_DEVLINK_SYNC_STATE_STRICT) {
1788  		dev_warn(sup, "sync_state() pending due to %s\n",
1789  			 dev_name(link->consumer));
1790  		return 0;
1791  	}
1792  
1793  	if (!list_empty(&sup->links.defer_sync))
1794  		return 0;
1795  
1796  	dev_warn(sup, "Timed out. Forcing sync_state()\n");
1797  	sup->state_synced = true;
1798  	get_device(sup);
1799  	list_add_tail(&sup->links.defer_sync, data);
1800  
1801  	return 0;
1802  }
1803  
fw_devlink_probing_done(void)1804  void fw_devlink_probing_done(void)
1805  {
1806  	LIST_HEAD(sync_list);
1807  
1808  	device_links_write_lock();
1809  	class_for_each_device(&devlink_class, NULL, &sync_list,
1810  			      fw_devlink_dev_sync_state);
1811  	device_links_write_unlock();
1812  	device_links_flush_sync_list(&sync_list, NULL);
1813  }
1814  
1815  /**
1816   * wait_for_init_devices_probe - Try to probe any device needed for init
1817   *
1818   * Some devices might need to be probed and bound successfully before the kernel
1819   * boot sequence can finish and move on to init/userspace. For example, a
1820   * network interface might need to be bound to be able to mount a NFS rootfs.
1821   *
1822   * With fw_devlink=on by default, some of these devices might be blocked from
1823   * probing because they are waiting on a optional supplier that doesn't have a
1824   * driver. While fw_devlink will eventually identify such devices and unblock
1825   * the probing automatically, it might be too late by the time it unblocks the
1826   * probing of devices. For example, the IP4 autoconfig might timeout before
1827   * fw_devlink unblocks probing of the network interface.
1828   *
1829   * This function is available to temporarily try and probe all devices that have
1830   * a driver even if some of their suppliers haven't been added or don't have
1831   * drivers.
1832   *
1833   * The drivers can then decide which of the suppliers are optional vs mandatory
1834   * and probe the device if possible. By the time this function returns, all such
1835   * "best effort" probes are guaranteed to be completed. If a device successfully
1836   * probes in this mode, we delete all fw_devlink discovered dependencies of that
1837   * device where the supplier hasn't yet probed successfully because they have to
1838   * be optional dependencies.
1839   *
1840   * Any devices that didn't successfully probe go back to being treated as if
1841   * this function was never called.
1842   *
1843   * This also means that some devices that aren't needed for init and could have
1844   * waited for their optional supplier to probe (when the supplier's module is
1845   * loaded later on) would end up probing prematurely with limited functionality.
1846   * So call this function only when boot would fail without it.
1847   */
wait_for_init_devices_probe(void)1848  void __init wait_for_init_devices_probe(void)
1849  {
1850  	if (!fw_devlink_flags || fw_devlink_is_permissive())
1851  		return;
1852  
1853  	/*
1854  	 * Wait for all ongoing probes to finish so that the "best effort" is
1855  	 * only applied to devices that can't probe otherwise.
1856  	 */
1857  	wait_for_device_probe();
1858  
1859  	pr_info("Trying to probe devices needed for running init ...\n");
1860  	fw_devlink_best_effort = true;
1861  	driver_deferred_probe_trigger();
1862  
1863  	/*
1864  	 * Wait for all "best effort" probes to finish before going back to
1865  	 * normal enforcement.
1866  	 */
1867  	wait_for_device_probe();
1868  	fw_devlink_best_effort = false;
1869  }
1870  
fw_devlink_unblock_consumers(struct device * dev)1871  static void fw_devlink_unblock_consumers(struct device *dev)
1872  {
1873  	struct device_link *link;
1874  
1875  	if (!fw_devlink_flags || fw_devlink_is_permissive())
1876  		return;
1877  
1878  	device_links_write_lock();
1879  	list_for_each_entry(link, &dev->links.consumers, s_node)
1880  		fw_devlink_relax_link(link);
1881  	device_links_write_unlock();
1882  }
1883  
1884  #define get_dev_from_fwnode(fwnode)	get_device((fwnode)->dev)
1885  
fwnode_init_without_drv(struct fwnode_handle * fwnode)1886  static bool fwnode_init_without_drv(struct fwnode_handle *fwnode)
1887  {
1888  	struct device *dev;
1889  	bool ret;
1890  
1891  	if (!(fwnode->flags & FWNODE_FLAG_INITIALIZED))
1892  		return false;
1893  
1894  	dev = get_dev_from_fwnode(fwnode);
1895  	ret = !dev || dev->links.status == DL_DEV_NO_DRIVER;
1896  	put_device(dev);
1897  
1898  	return ret;
1899  }
1900  
fwnode_ancestor_init_without_drv(struct fwnode_handle * fwnode)1901  static bool fwnode_ancestor_init_without_drv(struct fwnode_handle *fwnode)
1902  {
1903  	struct fwnode_handle *parent;
1904  
1905  	fwnode_for_each_parent_node(fwnode, parent) {
1906  		if (fwnode_init_without_drv(parent)) {
1907  			fwnode_handle_put(parent);
1908  			return true;
1909  		}
1910  	}
1911  
1912  	return false;
1913  }
1914  
1915  /**
1916   * fwnode_is_ancestor_of - Test if @ancestor is ancestor of @child
1917   * @ancestor: Firmware which is tested for being an ancestor
1918   * @child: Firmware which is tested for being the child
1919   *
1920   * A node is considered an ancestor of itself too.
1921   *
1922   * Return: true if @ancestor is an ancestor of @child. Otherwise, returns false.
1923   */
fwnode_is_ancestor_of(const struct fwnode_handle * ancestor,const struct fwnode_handle * child)1924  static bool fwnode_is_ancestor_of(const struct fwnode_handle *ancestor,
1925  				  const struct fwnode_handle *child)
1926  {
1927  	struct fwnode_handle *parent;
1928  
1929  	if (IS_ERR_OR_NULL(ancestor))
1930  		return false;
1931  
1932  	if (child == ancestor)
1933  		return true;
1934  
1935  	fwnode_for_each_parent_node(child, parent) {
1936  		if (parent == ancestor) {
1937  			fwnode_handle_put(parent);
1938  			return true;
1939  		}
1940  	}
1941  	return false;
1942  }
1943  
1944  /**
1945   * fwnode_get_next_parent_dev - Find device of closest ancestor fwnode
1946   * @fwnode: firmware node
1947   *
1948   * Given a firmware node (@fwnode), this function finds its closest ancestor
1949   * firmware node that has a corresponding struct device and returns that struct
1950   * device.
1951   *
1952   * The caller is responsible for calling put_device() on the returned device
1953   * pointer.
1954   *
1955   * Return: a pointer to the device of the @fwnode's closest ancestor.
1956   */
fwnode_get_next_parent_dev(const struct fwnode_handle * fwnode)1957  static struct device *fwnode_get_next_parent_dev(const struct fwnode_handle *fwnode)
1958  {
1959  	struct fwnode_handle *parent;
1960  	struct device *dev;
1961  
1962  	fwnode_for_each_parent_node(fwnode, parent) {
1963  		dev = get_dev_from_fwnode(parent);
1964  		if (dev) {
1965  			fwnode_handle_put(parent);
1966  			return dev;
1967  		}
1968  	}
1969  	return NULL;
1970  }
1971  
1972  /**
1973   * __fw_devlink_relax_cycles - Relax and mark dependency cycles.
1974   * @con: Potential consumer device.
1975   * @sup_handle: Potential supplier's fwnode.
1976   *
1977   * Needs to be called with fwnode_lock and device link lock held.
1978   *
1979   * Check if @sup_handle or any of its ancestors or suppliers direct/indirectly
1980   * depend on @con. This function can detect multiple cyles between @sup_handle
1981   * and @con. When such dependency cycles are found, convert all device links
1982   * created solely by fw_devlink into SYNC_STATE_ONLY device links. Also, mark
1983   * all fwnode links in the cycle with FWLINK_FLAG_CYCLE so that when they are
1984   * converted into a device link in the future, they are created as
1985   * SYNC_STATE_ONLY device links. This is the equivalent of doing
1986   * fw_devlink=permissive just between the devices in the cycle. We need to do
1987   * this because, at this point, fw_devlink can't tell which of these
1988   * dependencies is not a real dependency.
1989   *
1990   * Return true if one or more cycles were found. Otherwise, return false.
1991   */
__fw_devlink_relax_cycles(struct device * con,struct fwnode_handle * sup_handle)1992  static bool __fw_devlink_relax_cycles(struct device *con,
1993  				 struct fwnode_handle *sup_handle)
1994  {
1995  	struct device *sup_dev = NULL, *par_dev = NULL;
1996  	struct fwnode_link *link;
1997  	struct device_link *dev_link;
1998  	bool ret = false;
1999  
2000  	if (!sup_handle)
2001  		return false;
2002  
2003  	/*
2004  	 * We aren't trying to find all cycles. Just a cycle between con and
2005  	 * sup_handle.
2006  	 */
2007  	if (sup_handle->flags & FWNODE_FLAG_VISITED)
2008  		return false;
2009  
2010  	sup_handle->flags |= FWNODE_FLAG_VISITED;
2011  
2012  	sup_dev = get_dev_from_fwnode(sup_handle);
2013  
2014  	/* Termination condition. */
2015  	if (sup_dev == con) {
2016  		pr_debug("----- cycle: start -----\n");
2017  		ret = true;
2018  		goto out;
2019  	}
2020  
2021  	/*
2022  	 * If sup_dev is bound to a driver and @con hasn't started binding to a
2023  	 * driver, sup_dev can't be a consumer of @con. So, no need to check
2024  	 * further.
2025  	 */
2026  	if (sup_dev && sup_dev->links.status ==  DL_DEV_DRIVER_BOUND &&
2027  	    con->links.status == DL_DEV_NO_DRIVER) {
2028  		ret = false;
2029  		goto out;
2030  	}
2031  
2032  	list_for_each_entry(link, &sup_handle->suppliers, c_hook) {
2033  		if (link->flags & FWLINK_FLAG_IGNORE)
2034  			continue;
2035  
2036  		if (__fw_devlink_relax_cycles(con, link->supplier)) {
2037  			__fwnode_link_cycle(link);
2038  			ret = true;
2039  		}
2040  	}
2041  
2042  	/*
2043  	 * Give priority to device parent over fwnode parent to account for any
2044  	 * quirks in how fwnodes are converted to devices.
2045  	 */
2046  	if (sup_dev)
2047  		par_dev = get_device(sup_dev->parent);
2048  	else
2049  		par_dev = fwnode_get_next_parent_dev(sup_handle);
2050  
2051  	if (par_dev && __fw_devlink_relax_cycles(con, par_dev->fwnode)) {
2052  		pr_debug("%pfwf: cycle: child of %pfwf\n", sup_handle,
2053  			 par_dev->fwnode);
2054  		ret = true;
2055  	}
2056  
2057  	if (!sup_dev)
2058  		goto out;
2059  
2060  	list_for_each_entry(dev_link, &sup_dev->links.suppliers, c_node) {
2061  		/*
2062  		 * Ignore a SYNC_STATE_ONLY flag only if it wasn't marked as
2063  		 * such due to a cycle.
2064  		 */
2065  		if (device_link_flag_is_sync_state_only(dev_link->flags) &&
2066  		    !(dev_link->flags & DL_FLAG_CYCLE))
2067  			continue;
2068  
2069  		if (__fw_devlink_relax_cycles(con,
2070  					      dev_link->supplier->fwnode)) {
2071  			pr_debug("%pfwf: cycle: depends on %pfwf\n", sup_handle,
2072  				 dev_link->supplier->fwnode);
2073  			fw_devlink_relax_link(dev_link);
2074  			dev_link->flags |= DL_FLAG_CYCLE;
2075  			ret = true;
2076  		}
2077  	}
2078  
2079  out:
2080  	sup_handle->flags &= ~FWNODE_FLAG_VISITED;
2081  	put_device(sup_dev);
2082  	put_device(par_dev);
2083  	return ret;
2084  }
2085  
2086  /**
2087   * fw_devlink_create_devlink - Create a device link from a consumer to fwnode
2088   * @con: consumer device for the device link
2089   * @sup_handle: fwnode handle of supplier
2090   * @link: fwnode link that's being converted to a device link
2091   *
2092   * This function will try to create a device link between the consumer device
2093   * @con and the supplier device represented by @sup_handle.
2094   *
2095   * The supplier has to be provided as a fwnode because incorrect cycles in
2096   * fwnode links can sometimes cause the supplier device to never be created.
2097   * This function detects such cases and returns an error if it cannot create a
2098   * device link from the consumer to a missing supplier.
2099   *
2100   * Returns,
2101   * 0 on successfully creating a device link
2102   * -EINVAL if the device link cannot be created as expected
2103   * -EAGAIN if the device link cannot be created right now, but it may be
2104   *  possible to do that in the future
2105   */
fw_devlink_create_devlink(struct device * con,struct fwnode_handle * sup_handle,struct fwnode_link * link)2106  static int fw_devlink_create_devlink(struct device *con,
2107  				     struct fwnode_handle *sup_handle,
2108  				     struct fwnode_link *link)
2109  {
2110  	struct device *sup_dev;
2111  	int ret = 0;
2112  	u32 flags;
2113  
2114  	if (link->flags & FWLINK_FLAG_IGNORE)
2115  		return 0;
2116  
2117  	if (con->fwnode == link->consumer)
2118  		flags = fw_devlink_get_flags(link->flags);
2119  	else
2120  		flags = FW_DEVLINK_FLAGS_PERMISSIVE;
2121  
2122  	/*
2123  	 * In some cases, a device P might also be a supplier to its child node
2124  	 * C. However, this would defer the probe of C until the probe of P
2125  	 * completes successfully. This is perfectly fine in the device driver
2126  	 * model. device_add() doesn't guarantee probe completion of the device
2127  	 * by the time it returns.
2128  	 *
2129  	 * However, there are a few drivers that assume C will finish probing
2130  	 * as soon as it's added and before P finishes probing. So, we provide
2131  	 * a flag to let fw_devlink know not to delay the probe of C until the
2132  	 * probe of P completes successfully.
2133  	 *
2134  	 * When such a flag is set, we can't create device links where P is the
2135  	 * supplier of C as that would delay the probe of C.
2136  	 */
2137  	if (sup_handle->flags & FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD &&
2138  	    fwnode_is_ancestor_of(sup_handle, con->fwnode))
2139  		return -EINVAL;
2140  
2141  	/*
2142  	 * SYNC_STATE_ONLY device links don't block probing and supports cycles.
2143  	 * So, one might expect that cycle detection isn't necessary for them.
2144  	 * However, if the device link was marked as SYNC_STATE_ONLY because
2145  	 * it's part of a cycle, then we still need to do cycle detection. This
2146  	 * is because the consumer and supplier might be part of multiple cycles
2147  	 * and we need to detect all those cycles.
2148  	 */
2149  	if (!device_link_flag_is_sync_state_only(flags) ||
2150  	    flags & DL_FLAG_CYCLE) {
2151  		device_links_write_lock();
2152  		if (__fw_devlink_relax_cycles(con, sup_handle)) {
2153  			__fwnode_link_cycle(link);
2154  			flags = fw_devlink_get_flags(link->flags);
2155  			pr_debug("----- cycle: end -----\n");
2156  			dev_info(con, "Fixed dependency cycle(s) with %pfwf\n",
2157  				 sup_handle);
2158  		}
2159  		device_links_write_unlock();
2160  	}
2161  
2162  	if (sup_handle->flags & FWNODE_FLAG_NOT_DEVICE)
2163  		sup_dev = fwnode_get_next_parent_dev(sup_handle);
2164  	else
2165  		sup_dev = get_dev_from_fwnode(sup_handle);
2166  
2167  	if (sup_dev) {
2168  		/*
2169  		 * If it's one of those drivers that don't actually bind to
2170  		 * their device using driver core, then don't wait on this
2171  		 * supplier device indefinitely.
2172  		 */
2173  		if (sup_dev->links.status == DL_DEV_NO_DRIVER &&
2174  		    sup_handle->flags & FWNODE_FLAG_INITIALIZED) {
2175  			dev_dbg(con,
2176  				"Not linking %pfwf - dev might never probe\n",
2177  				sup_handle);
2178  			ret = -EINVAL;
2179  			goto out;
2180  		}
2181  
2182  		if (con != sup_dev && !device_link_add(con, sup_dev, flags)) {
2183  			dev_err(con, "Failed to create device link (0x%x) with %s\n",
2184  				flags, dev_name(sup_dev));
2185  			ret = -EINVAL;
2186  		}
2187  
2188  		goto out;
2189  	}
2190  
2191  	/*
2192  	 * Supplier or supplier's ancestor already initialized without a struct
2193  	 * device or being probed by a driver.
2194  	 */
2195  	if (fwnode_init_without_drv(sup_handle) ||
2196  	    fwnode_ancestor_init_without_drv(sup_handle)) {
2197  		dev_dbg(con, "Not linking %pfwf - might never become dev\n",
2198  			sup_handle);
2199  		return -EINVAL;
2200  	}
2201  
2202  	ret = -EAGAIN;
2203  out:
2204  	put_device(sup_dev);
2205  	return ret;
2206  }
2207  
2208  /**
2209   * __fw_devlink_link_to_consumers - Create device links to consumers of a device
2210   * @dev: Device that needs to be linked to its consumers
2211   *
2212   * This function looks at all the consumer fwnodes of @dev and creates device
2213   * links between the consumer device and @dev (supplier).
2214   *
2215   * If the consumer device has not been added yet, then this function creates a
2216   * SYNC_STATE_ONLY link between @dev (supplier) and the closest ancestor device
2217   * of the consumer fwnode. This is necessary to make sure @dev doesn't get a
2218   * sync_state() callback before the real consumer device gets to be added and
2219   * then probed.
2220   *
2221   * Once device links are created from the real consumer to @dev (supplier), the
2222   * fwnode links are deleted.
2223   */
__fw_devlink_link_to_consumers(struct device * dev)2224  static void __fw_devlink_link_to_consumers(struct device *dev)
2225  {
2226  	struct fwnode_handle *fwnode = dev->fwnode;
2227  	struct fwnode_link *link, *tmp;
2228  
2229  	list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook) {
2230  		struct device *con_dev;
2231  		bool own_link = true;
2232  		int ret;
2233  
2234  		con_dev = get_dev_from_fwnode(link->consumer);
2235  		/*
2236  		 * If consumer device is not available yet, make a "proxy"
2237  		 * SYNC_STATE_ONLY link from the consumer's parent device to
2238  		 * the supplier device. This is necessary to make sure the
2239  		 * supplier doesn't get a sync_state() callback before the real
2240  		 * consumer can create a device link to the supplier.
2241  		 *
2242  		 * This proxy link step is needed to handle the case where the
2243  		 * consumer's parent device is added before the supplier.
2244  		 */
2245  		if (!con_dev) {
2246  			con_dev = fwnode_get_next_parent_dev(link->consumer);
2247  			/*
2248  			 * However, if the consumer's parent device is also the
2249  			 * parent of the supplier, don't create a
2250  			 * consumer-supplier link from the parent to its child
2251  			 * device. Such a dependency is impossible.
2252  			 */
2253  			if (con_dev &&
2254  			    fwnode_is_ancestor_of(con_dev->fwnode, fwnode)) {
2255  				put_device(con_dev);
2256  				con_dev = NULL;
2257  			} else {
2258  				own_link = false;
2259  			}
2260  		}
2261  
2262  		if (!con_dev)
2263  			continue;
2264  
2265  		ret = fw_devlink_create_devlink(con_dev, fwnode, link);
2266  		put_device(con_dev);
2267  		if (!own_link || ret == -EAGAIN)
2268  			continue;
2269  
2270  		__fwnode_link_del(link);
2271  	}
2272  }
2273  
2274  /**
2275   * __fw_devlink_link_to_suppliers - Create device links to suppliers of a device
2276   * @dev: The consumer device that needs to be linked to its suppliers
2277   * @fwnode: Root of the fwnode tree that is used to create device links
2278   *
2279   * This function looks at all the supplier fwnodes of fwnode tree rooted at
2280   * @fwnode and creates device links between @dev (consumer) and all the
2281   * supplier devices of the entire fwnode tree at @fwnode.
2282   *
2283   * The function creates normal (non-SYNC_STATE_ONLY) device links between @dev
2284   * and the real suppliers of @dev. Once these device links are created, the
2285   * fwnode links are deleted.
2286   *
2287   * In addition, it also looks at all the suppliers of the entire fwnode tree
2288   * because some of the child devices of @dev that have not been added yet
2289   * (because @dev hasn't probed) might already have their suppliers added to
2290   * driver core. So, this function creates SYNC_STATE_ONLY device links between
2291   * @dev (consumer) and these suppliers to make sure they don't execute their
2292   * sync_state() callbacks before these child devices have a chance to create
2293   * their device links. The fwnode links that correspond to the child devices
2294   * aren't delete because they are needed later to create the device links
2295   * between the real consumer and supplier devices.
2296   */
__fw_devlink_link_to_suppliers(struct device * dev,struct fwnode_handle * fwnode)2297  static void __fw_devlink_link_to_suppliers(struct device *dev,
2298  					   struct fwnode_handle *fwnode)
2299  {
2300  	bool own_link = (dev->fwnode == fwnode);
2301  	struct fwnode_link *link, *tmp;
2302  	struct fwnode_handle *child = NULL;
2303  
2304  	list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook) {
2305  		int ret;
2306  		struct fwnode_handle *sup = link->supplier;
2307  
2308  		ret = fw_devlink_create_devlink(dev, sup, link);
2309  		if (!own_link || ret == -EAGAIN)
2310  			continue;
2311  
2312  		__fwnode_link_del(link);
2313  	}
2314  
2315  	/*
2316  	 * Make "proxy" SYNC_STATE_ONLY device links to represent the needs of
2317  	 * all the descendants. This proxy link step is needed to handle the
2318  	 * case where the supplier is added before the consumer's parent device
2319  	 * (@dev).
2320  	 */
2321  	while ((child = fwnode_get_next_available_child_node(fwnode, child)))
2322  		__fw_devlink_link_to_suppliers(dev, child);
2323  }
2324  
fw_devlink_link_device(struct device * dev)2325  static void fw_devlink_link_device(struct device *dev)
2326  {
2327  	struct fwnode_handle *fwnode = dev->fwnode;
2328  
2329  	if (!fw_devlink_flags)
2330  		return;
2331  
2332  	fw_devlink_parse_fwtree(fwnode);
2333  
2334  	guard(mutex)(&fwnode_link_lock);
2335  
2336  	__fw_devlink_link_to_consumers(dev);
2337  	__fw_devlink_link_to_suppliers(dev, fwnode);
2338  }
2339  
2340  /* Device links support end. */
2341  
2342  static struct kobject *dev_kobj;
2343  
2344  /* /sys/dev/char */
2345  static struct kobject *sysfs_dev_char_kobj;
2346  
2347  /* /sys/dev/block */
2348  static struct kobject *sysfs_dev_block_kobj;
2349  
2350  static DEFINE_MUTEX(device_hotplug_lock);
2351  
lock_device_hotplug(void)2352  void lock_device_hotplug(void)
2353  {
2354  	mutex_lock(&device_hotplug_lock);
2355  }
2356  
unlock_device_hotplug(void)2357  void unlock_device_hotplug(void)
2358  {
2359  	mutex_unlock(&device_hotplug_lock);
2360  }
2361  
lock_device_hotplug_sysfs(void)2362  int lock_device_hotplug_sysfs(void)
2363  {
2364  	if (mutex_trylock(&device_hotplug_lock))
2365  		return 0;
2366  
2367  	/* Avoid busy looping (5 ms of sleep should do). */
2368  	msleep(5);
2369  	return restart_syscall();
2370  }
2371  
2372  #ifdef CONFIG_BLOCK
device_is_not_partition(struct device * dev)2373  static inline int device_is_not_partition(struct device *dev)
2374  {
2375  	return !(dev->type == &part_type);
2376  }
2377  #else
device_is_not_partition(struct device * dev)2378  static inline int device_is_not_partition(struct device *dev)
2379  {
2380  	return 1;
2381  }
2382  #endif
2383  
device_platform_notify(struct device * dev)2384  static void device_platform_notify(struct device *dev)
2385  {
2386  	acpi_device_notify(dev);
2387  
2388  	software_node_notify(dev);
2389  }
2390  
device_platform_notify_remove(struct device * dev)2391  static void device_platform_notify_remove(struct device *dev)
2392  {
2393  	software_node_notify_remove(dev);
2394  
2395  	acpi_device_notify_remove(dev);
2396  }
2397  
2398  /**
2399   * dev_driver_string - Return a device's driver name, if at all possible
2400   * @dev: struct device to get the name of
2401   *
2402   * Will return the device's driver's name if it is bound to a device.  If
2403   * the device is not bound to a driver, it will return the name of the bus
2404   * it is attached to.  If it is not attached to a bus either, an empty
2405   * string will be returned.
2406   */
dev_driver_string(const struct device * dev)2407  const char *dev_driver_string(const struct device *dev)
2408  {
2409  	struct device_driver *drv;
2410  
2411  	/* dev->driver can change to NULL underneath us because of unbinding,
2412  	 * so be careful about accessing it.  dev->bus and dev->class should
2413  	 * never change once they are set, so they don't need special care.
2414  	 */
2415  	drv = READ_ONCE(dev->driver);
2416  	return drv ? drv->name : dev_bus_name(dev);
2417  }
2418  EXPORT_SYMBOL(dev_driver_string);
2419  
2420  #define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr)
2421  
dev_attr_show(struct kobject * kobj,struct attribute * attr,char * buf)2422  static ssize_t dev_attr_show(struct kobject *kobj, struct attribute *attr,
2423  			     char *buf)
2424  {
2425  	struct device_attribute *dev_attr = to_dev_attr(attr);
2426  	struct device *dev = kobj_to_dev(kobj);
2427  	ssize_t ret = -EIO;
2428  
2429  	if (dev_attr->show)
2430  		ret = dev_attr->show(dev, dev_attr, buf);
2431  	if (ret >= (ssize_t)PAGE_SIZE) {
2432  		printk("dev_attr_show: %pS returned bad count\n",
2433  				dev_attr->show);
2434  	}
2435  	return ret;
2436  }
2437  
dev_attr_store(struct kobject * kobj,struct attribute * attr,const char * buf,size_t count)2438  static ssize_t dev_attr_store(struct kobject *kobj, struct attribute *attr,
2439  			      const char *buf, size_t count)
2440  {
2441  	struct device_attribute *dev_attr = to_dev_attr(attr);
2442  	struct device *dev = kobj_to_dev(kobj);
2443  	ssize_t ret = -EIO;
2444  
2445  	if (dev_attr->store)
2446  		ret = dev_attr->store(dev, dev_attr, buf, count);
2447  	return ret;
2448  }
2449  
2450  static const struct sysfs_ops dev_sysfs_ops = {
2451  	.show	= dev_attr_show,
2452  	.store	= dev_attr_store,
2453  };
2454  
2455  #define to_ext_attr(x) container_of(x, struct dev_ext_attribute, attr)
2456  
device_store_ulong(struct device * dev,struct device_attribute * attr,const char * buf,size_t size)2457  ssize_t device_store_ulong(struct device *dev,
2458  			   struct device_attribute *attr,
2459  			   const char *buf, size_t size)
2460  {
2461  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2462  	int ret;
2463  	unsigned long new;
2464  
2465  	ret = kstrtoul(buf, 0, &new);
2466  	if (ret)
2467  		return ret;
2468  	*(unsigned long *)(ea->var) = new;
2469  	/* Always return full write size even if we didn't consume all */
2470  	return size;
2471  }
2472  EXPORT_SYMBOL_GPL(device_store_ulong);
2473  
device_show_ulong(struct device * dev,struct device_attribute * attr,char * buf)2474  ssize_t device_show_ulong(struct device *dev,
2475  			  struct device_attribute *attr,
2476  			  char *buf)
2477  {
2478  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2479  	return sysfs_emit(buf, "%lx\n", *(unsigned long *)(ea->var));
2480  }
2481  EXPORT_SYMBOL_GPL(device_show_ulong);
2482  
device_store_int(struct device * dev,struct device_attribute * attr,const char * buf,size_t size)2483  ssize_t device_store_int(struct device *dev,
2484  			 struct device_attribute *attr,
2485  			 const char *buf, size_t size)
2486  {
2487  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2488  	int ret;
2489  	long new;
2490  
2491  	ret = kstrtol(buf, 0, &new);
2492  	if (ret)
2493  		return ret;
2494  
2495  	if (new > INT_MAX || new < INT_MIN)
2496  		return -EINVAL;
2497  	*(int *)(ea->var) = new;
2498  	/* Always return full write size even if we didn't consume all */
2499  	return size;
2500  }
2501  EXPORT_SYMBOL_GPL(device_store_int);
2502  
device_show_int(struct device * dev,struct device_attribute * attr,char * buf)2503  ssize_t device_show_int(struct device *dev,
2504  			struct device_attribute *attr,
2505  			char *buf)
2506  {
2507  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2508  
2509  	return sysfs_emit(buf, "%d\n", *(int *)(ea->var));
2510  }
2511  EXPORT_SYMBOL_GPL(device_show_int);
2512  
device_store_bool(struct device * dev,struct device_attribute * attr,const char * buf,size_t size)2513  ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
2514  			  const char *buf, size_t size)
2515  {
2516  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2517  
2518  	if (kstrtobool(buf, ea->var) < 0)
2519  		return -EINVAL;
2520  
2521  	return size;
2522  }
2523  EXPORT_SYMBOL_GPL(device_store_bool);
2524  
device_show_bool(struct device * dev,struct device_attribute * attr,char * buf)2525  ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
2526  			 char *buf)
2527  {
2528  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2529  
2530  	return sysfs_emit(buf, "%d\n", *(bool *)(ea->var));
2531  }
2532  EXPORT_SYMBOL_GPL(device_show_bool);
2533  
device_show_string(struct device * dev,struct device_attribute * attr,char * buf)2534  ssize_t device_show_string(struct device *dev,
2535  			   struct device_attribute *attr, char *buf)
2536  {
2537  	struct dev_ext_attribute *ea = to_ext_attr(attr);
2538  
2539  	return sysfs_emit(buf, "%s\n", (char *)ea->var);
2540  }
2541  EXPORT_SYMBOL_GPL(device_show_string);
2542  
2543  /**
2544   * device_release - free device structure.
2545   * @kobj: device's kobject.
2546   *
2547   * This is called once the reference count for the object
2548   * reaches 0. We forward the call to the device's release
2549   * method, which should handle actually freeing the structure.
2550   */
device_release(struct kobject * kobj)2551  static void device_release(struct kobject *kobj)
2552  {
2553  	struct device *dev = kobj_to_dev(kobj);
2554  	struct device_private *p = dev->p;
2555  
2556  	/*
2557  	 * Some platform devices are driven without driver attached
2558  	 * and managed resources may have been acquired.  Make sure
2559  	 * all resources are released.
2560  	 *
2561  	 * Drivers still can add resources into device after device
2562  	 * is deleted but alive, so release devres here to avoid
2563  	 * possible memory leak.
2564  	 */
2565  	devres_release_all(dev);
2566  
2567  	kfree(dev->dma_range_map);
2568  
2569  	if (dev->release)
2570  		dev->release(dev);
2571  	else if (dev->type && dev->type->release)
2572  		dev->type->release(dev);
2573  	else if (dev->class && dev->class->dev_release)
2574  		dev->class->dev_release(dev);
2575  	else
2576  		WARN(1, KERN_ERR "Device '%s' does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
2577  			dev_name(dev));
2578  	kfree(p);
2579  }
2580  
device_namespace(const struct kobject * kobj)2581  static const void *device_namespace(const struct kobject *kobj)
2582  {
2583  	const struct device *dev = kobj_to_dev(kobj);
2584  	const void *ns = NULL;
2585  
2586  	if (dev->class && dev->class->namespace)
2587  		ns = dev->class->namespace(dev);
2588  
2589  	return ns;
2590  }
2591  
device_get_ownership(const struct kobject * kobj,kuid_t * uid,kgid_t * gid)2592  static void device_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
2593  {
2594  	const struct device *dev = kobj_to_dev(kobj);
2595  
2596  	if (dev->class && dev->class->get_ownership)
2597  		dev->class->get_ownership(dev, uid, gid);
2598  }
2599  
2600  static const struct kobj_type device_ktype = {
2601  	.release	= device_release,
2602  	.sysfs_ops	= &dev_sysfs_ops,
2603  	.namespace	= device_namespace,
2604  	.get_ownership	= device_get_ownership,
2605  };
2606  
2607  
dev_uevent_filter(const struct kobject * kobj)2608  static int dev_uevent_filter(const struct kobject *kobj)
2609  {
2610  	const struct kobj_type *ktype = get_ktype(kobj);
2611  
2612  	if (ktype == &device_ktype) {
2613  		const struct device *dev = kobj_to_dev(kobj);
2614  		if (dev->bus)
2615  			return 1;
2616  		if (dev->class)
2617  			return 1;
2618  	}
2619  	return 0;
2620  }
2621  
dev_uevent_name(const struct kobject * kobj)2622  static const char *dev_uevent_name(const struct kobject *kobj)
2623  {
2624  	const struct device *dev = kobj_to_dev(kobj);
2625  
2626  	if (dev->bus)
2627  		return dev->bus->name;
2628  	if (dev->class)
2629  		return dev->class->name;
2630  	return NULL;
2631  }
2632  
dev_uevent(const struct kobject * kobj,struct kobj_uevent_env * env)2633  static int dev_uevent(const struct kobject *kobj, struct kobj_uevent_env *env)
2634  {
2635  	const struct device *dev = kobj_to_dev(kobj);
2636  	int retval = 0;
2637  
2638  	/* add device node properties if present */
2639  	if (MAJOR(dev->devt)) {
2640  		const char *tmp;
2641  		const char *name;
2642  		umode_t mode = 0;
2643  		kuid_t uid = GLOBAL_ROOT_UID;
2644  		kgid_t gid = GLOBAL_ROOT_GID;
2645  
2646  		add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
2647  		add_uevent_var(env, "MINOR=%u", MINOR(dev->devt));
2648  		name = device_get_devnode(dev, &mode, &uid, &gid, &tmp);
2649  		if (name) {
2650  			add_uevent_var(env, "DEVNAME=%s", name);
2651  			if (mode)
2652  				add_uevent_var(env, "DEVMODE=%#o", mode & 0777);
2653  			if (!uid_eq(uid, GLOBAL_ROOT_UID))
2654  				add_uevent_var(env, "DEVUID=%u", from_kuid(&init_user_ns, uid));
2655  			if (!gid_eq(gid, GLOBAL_ROOT_GID))
2656  				add_uevent_var(env, "DEVGID=%u", from_kgid(&init_user_ns, gid));
2657  			kfree(tmp);
2658  		}
2659  	}
2660  
2661  	if (dev->type && dev->type->name)
2662  		add_uevent_var(env, "DEVTYPE=%s", dev->type->name);
2663  
2664  	if (dev->driver)
2665  		add_uevent_var(env, "DRIVER=%s", dev->driver->name);
2666  
2667  	/* Add common DT information about the device */
2668  	of_device_uevent(dev, env);
2669  
2670  	/* have the bus specific function add its stuff */
2671  	if (dev->bus && dev->bus->uevent) {
2672  		retval = dev->bus->uevent(dev, env);
2673  		if (retval)
2674  			pr_debug("device: '%s': %s: bus uevent() returned %d\n",
2675  				 dev_name(dev), __func__, retval);
2676  	}
2677  
2678  	/* have the class specific function add its stuff */
2679  	if (dev->class && dev->class->dev_uevent) {
2680  		retval = dev->class->dev_uevent(dev, env);
2681  		if (retval)
2682  			pr_debug("device: '%s': %s: class uevent() "
2683  				 "returned %d\n", dev_name(dev),
2684  				 __func__, retval);
2685  	}
2686  
2687  	/* have the device type specific function add its stuff */
2688  	if (dev->type && dev->type->uevent) {
2689  		retval = dev->type->uevent(dev, env);
2690  		if (retval)
2691  			pr_debug("device: '%s': %s: dev_type uevent() "
2692  				 "returned %d\n", dev_name(dev),
2693  				 __func__, retval);
2694  	}
2695  
2696  	return retval;
2697  }
2698  
2699  static const struct kset_uevent_ops device_uevent_ops = {
2700  	.filter =	dev_uevent_filter,
2701  	.name =		dev_uevent_name,
2702  	.uevent =	dev_uevent,
2703  };
2704  
uevent_show(struct device * dev,struct device_attribute * attr,char * buf)2705  static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,
2706  			   char *buf)
2707  {
2708  	struct kobject *top_kobj;
2709  	struct kset *kset;
2710  	struct kobj_uevent_env *env = NULL;
2711  	int i;
2712  	int len = 0;
2713  	int retval;
2714  
2715  	/* search the kset, the device belongs to */
2716  	top_kobj = &dev->kobj;
2717  	while (!top_kobj->kset && top_kobj->parent)
2718  		top_kobj = top_kobj->parent;
2719  	if (!top_kobj->kset)
2720  		goto out;
2721  
2722  	kset = top_kobj->kset;
2723  	if (!kset->uevent_ops || !kset->uevent_ops->uevent)
2724  		goto out;
2725  
2726  	/* respect filter */
2727  	if (kset->uevent_ops && kset->uevent_ops->filter)
2728  		if (!kset->uevent_ops->filter(&dev->kobj))
2729  			goto out;
2730  
2731  	env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
2732  	if (!env)
2733  		return -ENOMEM;
2734  
2735  	/* Synchronize with really_probe() */
2736  	device_lock(dev);
2737  	/* let the kset specific function add its keys */
2738  	retval = kset->uevent_ops->uevent(&dev->kobj, env);
2739  	device_unlock(dev);
2740  	if (retval)
2741  		goto out;
2742  
2743  	/* copy keys to file */
2744  	for (i = 0; i < env->envp_idx; i++)
2745  		len += sysfs_emit_at(buf, len, "%s\n", env->envp[i]);
2746  out:
2747  	kfree(env);
2748  	return len;
2749  }
2750  
uevent_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)2751  static ssize_t uevent_store(struct device *dev, struct device_attribute *attr,
2752  			    const char *buf, size_t count)
2753  {
2754  	int rc;
2755  
2756  	rc = kobject_synth_uevent(&dev->kobj, buf, count);
2757  
2758  	if (rc) {
2759  		dev_err(dev, "uevent: failed to send synthetic uevent: %d\n", rc);
2760  		return rc;
2761  	}
2762  
2763  	return count;
2764  }
2765  static DEVICE_ATTR_RW(uevent);
2766  
online_show(struct device * dev,struct device_attribute * attr,char * buf)2767  static ssize_t online_show(struct device *dev, struct device_attribute *attr,
2768  			   char *buf)
2769  {
2770  	bool val;
2771  
2772  	device_lock(dev);
2773  	val = !dev->offline;
2774  	device_unlock(dev);
2775  	return sysfs_emit(buf, "%u\n", val);
2776  }
2777  
online_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)2778  static ssize_t online_store(struct device *dev, struct device_attribute *attr,
2779  			    const char *buf, size_t count)
2780  {
2781  	bool val;
2782  	int ret;
2783  
2784  	ret = kstrtobool(buf, &val);
2785  	if (ret < 0)
2786  		return ret;
2787  
2788  	ret = lock_device_hotplug_sysfs();
2789  	if (ret)
2790  		return ret;
2791  
2792  	ret = val ? device_online(dev) : device_offline(dev);
2793  	unlock_device_hotplug();
2794  	return ret < 0 ? ret : count;
2795  }
2796  static DEVICE_ATTR_RW(online);
2797  
removable_show(struct device * dev,struct device_attribute * attr,char * buf)2798  static ssize_t removable_show(struct device *dev, struct device_attribute *attr,
2799  			      char *buf)
2800  {
2801  	const char *loc;
2802  
2803  	switch (dev->removable) {
2804  	case DEVICE_REMOVABLE:
2805  		loc = "removable";
2806  		break;
2807  	case DEVICE_FIXED:
2808  		loc = "fixed";
2809  		break;
2810  	default:
2811  		loc = "unknown";
2812  	}
2813  	return sysfs_emit(buf, "%s\n", loc);
2814  }
2815  static DEVICE_ATTR_RO(removable);
2816  
device_add_groups(struct device * dev,const struct attribute_group ** groups)2817  int device_add_groups(struct device *dev, const struct attribute_group **groups)
2818  {
2819  	return sysfs_create_groups(&dev->kobj, groups);
2820  }
2821  EXPORT_SYMBOL_GPL(device_add_groups);
2822  
device_remove_groups(struct device * dev,const struct attribute_group ** groups)2823  void device_remove_groups(struct device *dev,
2824  			  const struct attribute_group **groups)
2825  {
2826  	sysfs_remove_groups(&dev->kobj, groups);
2827  }
2828  EXPORT_SYMBOL_GPL(device_remove_groups);
2829  
2830  union device_attr_group_devres {
2831  	const struct attribute_group *group;
2832  	const struct attribute_group **groups;
2833  };
2834  
devm_attr_group_remove(struct device * dev,void * res)2835  static void devm_attr_group_remove(struct device *dev, void *res)
2836  {
2837  	union device_attr_group_devres *devres = res;
2838  	const struct attribute_group *group = devres->group;
2839  
2840  	dev_dbg(dev, "%s: removing group %p\n", __func__, group);
2841  	sysfs_remove_group(&dev->kobj, group);
2842  }
2843  
2844  /**
2845   * devm_device_add_group - given a device, create a managed attribute group
2846   * @dev:	The device to create the group for
2847   * @grp:	The attribute group to create
2848   *
2849   * This function creates a group for the first time.  It will explicitly
2850   * warn and error if any of the attribute files being created already exist.
2851   *
2852   * Returns 0 on success or error code on failure.
2853   */
devm_device_add_group(struct device * dev,const struct attribute_group * grp)2854  int devm_device_add_group(struct device *dev, const struct attribute_group *grp)
2855  {
2856  	union device_attr_group_devres *devres;
2857  	int error;
2858  
2859  	devres = devres_alloc(devm_attr_group_remove,
2860  			      sizeof(*devres), GFP_KERNEL);
2861  	if (!devres)
2862  		return -ENOMEM;
2863  
2864  	error = sysfs_create_group(&dev->kobj, grp);
2865  	if (error) {
2866  		devres_free(devres);
2867  		return error;
2868  	}
2869  
2870  	devres->group = grp;
2871  	devres_add(dev, devres);
2872  	return 0;
2873  }
2874  EXPORT_SYMBOL_GPL(devm_device_add_group);
2875  
device_add_attrs(struct device * dev)2876  static int device_add_attrs(struct device *dev)
2877  {
2878  	const struct class *class = dev->class;
2879  	const struct device_type *type = dev->type;
2880  	int error;
2881  
2882  	if (class) {
2883  		error = device_add_groups(dev, class->dev_groups);
2884  		if (error)
2885  			return error;
2886  	}
2887  
2888  	if (type) {
2889  		error = device_add_groups(dev, type->groups);
2890  		if (error)
2891  			goto err_remove_class_groups;
2892  	}
2893  
2894  	error = device_add_groups(dev, dev->groups);
2895  	if (error)
2896  		goto err_remove_type_groups;
2897  
2898  	if (device_supports_offline(dev) && !dev->offline_disabled) {
2899  		error = device_create_file(dev, &dev_attr_online);
2900  		if (error)
2901  			goto err_remove_dev_groups;
2902  	}
2903  
2904  	if (fw_devlink_flags && !fw_devlink_is_permissive() && dev->fwnode) {
2905  		error = device_create_file(dev, &dev_attr_waiting_for_supplier);
2906  		if (error)
2907  			goto err_remove_dev_online;
2908  	}
2909  
2910  	if (dev_removable_is_valid(dev)) {
2911  		error = device_create_file(dev, &dev_attr_removable);
2912  		if (error)
2913  			goto err_remove_dev_waiting_for_supplier;
2914  	}
2915  
2916  	if (dev_add_physical_location(dev)) {
2917  		error = device_add_group(dev,
2918  			&dev_attr_physical_location_group);
2919  		if (error)
2920  			goto err_remove_dev_removable;
2921  	}
2922  
2923  	return 0;
2924  
2925   err_remove_dev_removable:
2926  	device_remove_file(dev, &dev_attr_removable);
2927   err_remove_dev_waiting_for_supplier:
2928  	device_remove_file(dev, &dev_attr_waiting_for_supplier);
2929   err_remove_dev_online:
2930  	device_remove_file(dev, &dev_attr_online);
2931   err_remove_dev_groups:
2932  	device_remove_groups(dev, dev->groups);
2933   err_remove_type_groups:
2934  	if (type)
2935  		device_remove_groups(dev, type->groups);
2936   err_remove_class_groups:
2937  	if (class)
2938  		device_remove_groups(dev, class->dev_groups);
2939  
2940  	return error;
2941  }
2942  
device_remove_attrs(struct device * dev)2943  static void device_remove_attrs(struct device *dev)
2944  {
2945  	const struct class *class = dev->class;
2946  	const struct device_type *type = dev->type;
2947  
2948  	if (dev->physical_location) {
2949  		device_remove_group(dev, &dev_attr_physical_location_group);
2950  		kfree(dev->physical_location);
2951  	}
2952  
2953  	device_remove_file(dev, &dev_attr_removable);
2954  	device_remove_file(dev, &dev_attr_waiting_for_supplier);
2955  	device_remove_file(dev, &dev_attr_online);
2956  	device_remove_groups(dev, dev->groups);
2957  
2958  	if (type)
2959  		device_remove_groups(dev, type->groups);
2960  
2961  	if (class)
2962  		device_remove_groups(dev, class->dev_groups);
2963  }
2964  
dev_show(struct device * dev,struct device_attribute * attr,char * buf)2965  static ssize_t dev_show(struct device *dev, struct device_attribute *attr,
2966  			char *buf)
2967  {
2968  	return print_dev_t(buf, dev->devt);
2969  }
2970  static DEVICE_ATTR_RO(dev);
2971  
2972  /* /sys/devices/ */
2973  struct kset *devices_kset;
2974  
2975  /**
2976   * devices_kset_move_before - Move device in the devices_kset's list.
2977   * @deva: Device to move.
2978   * @devb: Device @deva should come before.
2979   */
devices_kset_move_before(struct device * deva,struct device * devb)2980  static void devices_kset_move_before(struct device *deva, struct device *devb)
2981  {
2982  	if (!devices_kset)
2983  		return;
2984  	pr_debug("devices_kset: Moving %s before %s\n",
2985  		 dev_name(deva), dev_name(devb));
2986  	spin_lock(&devices_kset->list_lock);
2987  	list_move_tail(&deva->kobj.entry, &devb->kobj.entry);
2988  	spin_unlock(&devices_kset->list_lock);
2989  }
2990  
2991  /**
2992   * devices_kset_move_after - Move device in the devices_kset's list.
2993   * @deva: Device to move
2994   * @devb: Device @deva should come after.
2995   */
devices_kset_move_after(struct device * deva,struct device * devb)2996  static void devices_kset_move_after(struct device *deva, struct device *devb)
2997  {
2998  	if (!devices_kset)
2999  		return;
3000  	pr_debug("devices_kset: Moving %s after %s\n",
3001  		 dev_name(deva), dev_name(devb));
3002  	spin_lock(&devices_kset->list_lock);
3003  	list_move(&deva->kobj.entry, &devb->kobj.entry);
3004  	spin_unlock(&devices_kset->list_lock);
3005  }
3006  
3007  /**
3008   * devices_kset_move_last - move the device to the end of devices_kset's list.
3009   * @dev: device to move
3010   */
devices_kset_move_last(struct device * dev)3011  void devices_kset_move_last(struct device *dev)
3012  {
3013  	if (!devices_kset)
3014  		return;
3015  	pr_debug("devices_kset: Moving %s to end of list\n", dev_name(dev));
3016  	spin_lock(&devices_kset->list_lock);
3017  	list_move_tail(&dev->kobj.entry, &devices_kset->list);
3018  	spin_unlock(&devices_kset->list_lock);
3019  }
3020  
3021  /**
3022   * device_create_file - create sysfs attribute file for device.
3023   * @dev: device.
3024   * @attr: device attribute descriptor.
3025   */
device_create_file(struct device * dev,const struct device_attribute * attr)3026  int device_create_file(struct device *dev,
3027  		       const struct device_attribute *attr)
3028  {
3029  	int error = 0;
3030  
3031  	if (dev) {
3032  		WARN(((attr->attr.mode & S_IWUGO) && !attr->store),
3033  			"Attribute %s: write permission without 'store'\n",
3034  			attr->attr.name);
3035  		WARN(((attr->attr.mode & S_IRUGO) && !attr->show),
3036  			"Attribute %s: read permission without 'show'\n",
3037  			attr->attr.name);
3038  		error = sysfs_create_file(&dev->kobj, &attr->attr);
3039  	}
3040  
3041  	return error;
3042  }
3043  EXPORT_SYMBOL_GPL(device_create_file);
3044  
3045  /**
3046   * device_remove_file - remove sysfs attribute file.
3047   * @dev: device.
3048   * @attr: device attribute descriptor.
3049   */
device_remove_file(struct device * dev,const struct device_attribute * attr)3050  void device_remove_file(struct device *dev,
3051  			const struct device_attribute *attr)
3052  {
3053  	if (dev)
3054  		sysfs_remove_file(&dev->kobj, &attr->attr);
3055  }
3056  EXPORT_SYMBOL_GPL(device_remove_file);
3057  
3058  /**
3059   * device_remove_file_self - remove sysfs attribute file from its own method.
3060   * @dev: device.
3061   * @attr: device attribute descriptor.
3062   *
3063   * See kernfs_remove_self() for details.
3064   */
device_remove_file_self(struct device * dev,const struct device_attribute * attr)3065  bool device_remove_file_self(struct device *dev,
3066  			     const struct device_attribute *attr)
3067  {
3068  	if (dev)
3069  		return sysfs_remove_file_self(&dev->kobj, &attr->attr);
3070  	else
3071  		return false;
3072  }
3073  EXPORT_SYMBOL_GPL(device_remove_file_self);
3074  
3075  /**
3076   * device_create_bin_file - create sysfs binary attribute file for device.
3077   * @dev: device.
3078   * @attr: device binary attribute descriptor.
3079   */
device_create_bin_file(struct device * dev,const struct bin_attribute * attr)3080  int device_create_bin_file(struct device *dev,
3081  			   const struct bin_attribute *attr)
3082  {
3083  	int error = -EINVAL;
3084  	if (dev)
3085  		error = sysfs_create_bin_file(&dev->kobj, attr);
3086  	return error;
3087  }
3088  EXPORT_SYMBOL_GPL(device_create_bin_file);
3089  
3090  /**
3091   * device_remove_bin_file - remove sysfs binary attribute file
3092   * @dev: device.
3093   * @attr: device binary attribute descriptor.
3094   */
device_remove_bin_file(struct device * dev,const struct bin_attribute * attr)3095  void device_remove_bin_file(struct device *dev,
3096  			    const struct bin_attribute *attr)
3097  {
3098  	if (dev)
3099  		sysfs_remove_bin_file(&dev->kobj, attr);
3100  }
3101  EXPORT_SYMBOL_GPL(device_remove_bin_file);
3102  
klist_children_get(struct klist_node * n)3103  static void klist_children_get(struct klist_node *n)
3104  {
3105  	struct device_private *p = to_device_private_parent(n);
3106  	struct device *dev = p->device;
3107  
3108  	get_device(dev);
3109  }
3110  
klist_children_put(struct klist_node * n)3111  static void klist_children_put(struct klist_node *n)
3112  {
3113  	struct device_private *p = to_device_private_parent(n);
3114  	struct device *dev = p->device;
3115  
3116  	put_device(dev);
3117  }
3118  
3119  /**
3120   * device_initialize - init device structure.
3121   * @dev: device.
3122   *
3123   * This prepares the device for use by other layers by initializing
3124   * its fields.
3125   * It is the first half of device_register(), if called by
3126   * that function, though it can also be called separately, so one
3127   * may use @dev's fields. In particular, get_device()/put_device()
3128   * may be used for reference counting of @dev after calling this
3129   * function.
3130   *
3131   * All fields in @dev must be initialized by the caller to 0, except
3132   * for those explicitly set to some other value.  The simplest
3133   * approach is to use kzalloc() to allocate the structure containing
3134   * @dev.
3135   *
3136   * NOTE: Use put_device() to give up your reference instead of freeing
3137   * @dev directly once you have called this function.
3138   */
device_initialize(struct device * dev)3139  void device_initialize(struct device *dev)
3140  {
3141  	dev->kobj.kset = devices_kset;
3142  	kobject_init(&dev->kobj, &device_ktype);
3143  	INIT_LIST_HEAD(&dev->dma_pools);
3144  	mutex_init(&dev->mutex);
3145  	lockdep_set_novalidate_class(&dev->mutex);
3146  	spin_lock_init(&dev->devres_lock);
3147  	INIT_LIST_HEAD(&dev->devres_head);
3148  	device_pm_init(dev);
3149  	set_dev_node(dev, NUMA_NO_NODE);
3150  	INIT_LIST_HEAD(&dev->links.consumers);
3151  	INIT_LIST_HEAD(&dev->links.suppliers);
3152  	INIT_LIST_HEAD(&dev->links.defer_sync);
3153  	dev->links.status = DL_DEV_NO_DRIVER;
3154  #if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
3155      defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
3156      defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
3157  	dev->dma_coherent = dma_default_coherent;
3158  #endif
3159  	swiotlb_dev_init(dev);
3160  }
3161  EXPORT_SYMBOL_GPL(device_initialize);
3162  
virtual_device_parent(void)3163  struct kobject *virtual_device_parent(void)
3164  {
3165  	static struct kobject *virtual_dir = NULL;
3166  
3167  	if (!virtual_dir)
3168  		virtual_dir = kobject_create_and_add("virtual",
3169  						     &devices_kset->kobj);
3170  
3171  	return virtual_dir;
3172  }
3173  
3174  struct class_dir {
3175  	struct kobject kobj;
3176  	const struct class *class;
3177  };
3178  
3179  #define to_class_dir(obj) container_of(obj, struct class_dir, kobj)
3180  
class_dir_release(struct kobject * kobj)3181  static void class_dir_release(struct kobject *kobj)
3182  {
3183  	struct class_dir *dir = to_class_dir(kobj);
3184  	kfree(dir);
3185  }
3186  
3187  static const
class_dir_child_ns_type(const struct kobject * kobj)3188  struct kobj_ns_type_operations *class_dir_child_ns_type(const struct kobject *kobj)
3189  {
3190  	const struct class_dir *dir = to_class_dir(kobj);
3191  	return dir->class->ns_type;
3192  }
3193  
3194  static const struct kobj_type class_dir_ktype = {
3195  	.release	= class_dir_release,
3196  	.sysfs_ops	= &kobj_sysfs_ops,
3197  	.child_ns_type	= class_dir_child_ns_type
3198  };
3199  
class_dir_create_and_add(struct subsys_private * sp,struct kobject * parent_kobj)3200  static struct kobject *class_dir_create_and_add(struct subsys_private *sp,
3201  						struct kobject *parent_kobj)
3202  {
3203  	struct class_dir *dir;
3204  	int retval;
3205  
3206  	dir = kzalloc(sizeof(*dir), GFP_KERNEL);
3207  	if (!dir)
3208  		return ERR_PTR(-ENOMEM);
3209  
3210  	dir->class = sp->class;
3211  	kobject_init(&dir->kobj, &class_dir_ktype);
3212  
3213  	dir->kobj.kset = &sp->glue_dirs;
3214  
3215  	retval = kobject_add(&dir->kobj, parent_kobj, "%s", sp->class->name);
3216  	if (retval < 0) {
3217  		kobject_put(&dir->kobj);
3218  		return ERR_PTR(retval);
3219  	}
3220  	return &dir->kobj;
3221  }
3222  
3223  static DEFINE_MUTEX(gdp_mutex);
3224  
get_device_parent(struct device * dev,struct device * parent)3225  static struct kobject *get_device_parent(struct device *dev,
3226  					 struct device *parent)
3227  {
3228  	struct subsys_private *sp = class_to_subsys(dev->class);
3229  	struct kobject *kobj = NULL;
3230  
3231  	if (sp) {
3232  		struct kobject *parent_kobj;
3233  		struct kobject *k;
3234  
3235  		/*
3236  		 * If we have no parent, we live in "virtual".
3237  		 * Class-devices with a non class-device as parent, live
3238  		 * in a "glue" directory to prevent namespace collisions.
3239  		 */
3240  		if (parent == NULL)
3241  			parent_kobj = virtual_device_parent();
3242  		else if (parent->class && !dev->class->ns_type) {
3243  			subsys_put(sp);
3244  			return &parent->kobj;
3245  		} else {
3246  			parent_kobj = &parent->kobj;
3247  		}
3248  
3249  		mutex_lock(&gdp_mutex);
3250  
3251  		/* find our class-directory at the parent and reference it */
3252  		spin_lock(&sp->glue_dirs.list_lock);
3253  		list_for_each_entry(k, &sp->glue_dirs.list, entry)
3254  			if (k->parent == parent_kobj) {
3255  				kobj = kobject_get(k);
3256  				break;
3257  			}
3258  		spin_unlock(&sp->glue_dirs.list_lock);
3259  		if (kobj) {
3260  			mutex_unlock(&gdp_mutex);
3261  			subsys_put(sp);
3262  			return kobj;
3263  		}
3264  
3265  		/* or create a new class-directory at the parent device */
3266  		k = class_dir_create_and_add(sp, parent_kobj);
3267  		/* do not emit an uevent for this simple "glue" directory */
3268  		mutex_unlock(&gdp_mutex);
3269  		subsys_put(sp);
3270  		return k;
3271  	}
3272  
3273  	/* subsystems can specify a default root directory for their devices */
3274  	if (!parent && dev->bus) {
3275  		struct device *dev_root = bus_get_dev_root(dev->bus);
3276  
3277  		if (dev_root) {
3278  			kobj = &dev_root->kobj;
3279  			put_device(dev_root);
3280  			return kobj;
3281  		}
3282  	}
3283  
3284  	if (parent)
3285  		return &parent->kobj;
3286  	return NULL;
3287  }
3288  
live_in_glue_dir(struct kobject * kobj,struct device * dev)3289  static inline bool live_in_glue_dir(struct kobject *kobj,
3290  				    struct device *dev)
3291  {
3292  	struct subsys_private *sp;
3293  	bool retval;
3294  
3295  	if (!kobj || !dev->class)
3296  		return false;
3297  
3298  	sp = class_to_subsys(dev->class);
3299  	if (!sp)
3300  		return false;
3301  
3302  	if (kobj->kset == &sp->glue_dirs)
3303  		retval = true;
3304  	else
3305  		retval = false;
3306  
3307  	subsys_put(sp);
3308  	return retval;
3309  }
3310  
get_glue_dir(struct device * dev)3311  static inline struct kobject *get_glue_dir(struct device *dev)
3312  {
3313  	return dev->kobj.parent;
3314  }
3315  
3316  /**
3317   * kobject_has_children - Returns whether a kobject has children.
3318   * @kobj: the object to test
3319   *
3320   * This will return whether a kobject has other kobjects as children.
3321   *
3322   * It does NOT account for the presence of attribute files, only sub
3323   * directories. It also assumes there is no concurrent addition or
3324   * removal of such children, and thus relies on external locking.
3325   */
kobject_has_children(struct kobject * kobj)3326  static inline bool kobject_has_children(struct kobject *kobj)
3327  {
3328  	WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
3329  
3330  	return kobj->sd && kobj->sd->dir.subdirs;
3331  }
3332  
3333  /*
3334   * make sure cleaning up dir as the last step, we need to make
3335   * sure .release handler of kobject is run with holding the
3336   * global lock
3337   */
cleanup_glue_dir(struct device * dev,struct kobject * glue_dir)3338  static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir)
3339  {
3340  	unsigned int ref;
3341  
3342  	/* see if we live in a "glue" directory */
3343  	if (!live_in_glue_dir(glue_dir, dev))
3344  		return;
3345  
3346  	mutex_lock(&gdp_mutex);
3347  	/**
3348  	 * There is a race condition between removing glue directory
3349  	 * and adding a new device under the glue directory.
3350  	 *
3351  	 * CPU1:                                         CPU2:
3352  	 *
3353  	 * device_add()
3354  	 *   get_device_parent()
3355  	 *     class_dir_create_and_add()
3356  	 *       kobject_add_internal()
3357  	 *         create_dir()    // create glue_dir
3358  	 *
3359  	 *                                               device_add()
3360  	 *                                                 get_device_parent()
3361  	 *                                                   kobject_get() // get glue_dir
3362  	 *
3363  	 * device_del()
3364  	 *   cleanup_glue_dir()
3365  	 *     kobject_del(glue_dir)
3366  	 *
3367  	 *                                               kobject_add()
3368  	 *                                                 kobject_add_internal()
3369  	 *                                                   create_dir() // in glue_dir
3370  	 *                                                     sysfs_create_dir_ns()
3371  	 *                                                       kernfs_create_dir_ns(sd)
3372  	 *
3373  	 *       sysfs_remove_dir() // glue_dir->sd=NULL
3374  	 *       sysfs_put()        // free glue_dir->sd
3375  	 *
3376  	 *                                                         // sd is freed
3377  	 *                                                         kernfs_new_node(sd)
3378  	 *                                                           kernfs_get(glue_dir)
3379  	 *                                                           kernfs_add_one()
3380  	 *                                                           kernfs_put()
3381  	 *
3382  	 * Before CPU1 remove last child device under glue dir, if CPU2 add
3383  	 * a new device under glue dir, the glue_dir kobject reference count
3384  	 * will be increase to 2 in kobject_get(k). And CPU2 has been called
3385  	 * kernfs_create_dir_ns(). Meanwhile, CPU1 call sysfs_remove_dir()
3386  	 * and sysfs_put(). This result in glue_dir->sd is freed.
3387  	 *
3388  	 * Then the CPU2 will see a stale "empty" but still potentially used
3389  	 * glue dir around in kernfs_new_node().
3390  	 *
3391  	 * In order to avoid this happening, we also should make sure that
3392  	 * kernfs_node for glue_dir is released in CPU1 only when refcount
3393  	 * for glue_dir kobj is 1.
3394  	 */
3395  	ref = kref_read(&glue_dir->kref);
3396  	if (!kobject_has_children(glue_dir) && !--ref)
3397  		kobject_del(glue_dir);
3398  	kobject_put(glue_dir);
3399  	mutex_unlock(&gdp_mutex);
3400  }
3401  
device_add_class_symlinks(struct device * dev)3402  static int device_add_class_symlinks(struct device *dev)
3403  {
3404  	struct device_node *of_node = dev_of_node(dev);
3405  	struct subsys_private *sp;
3406  	int error;
3407  
3408  	if (of_node) {
3409  		error = sysfs_create_link(&dev->kobj, of_node_kobj(of_node), "of_node");
3410  		if (error)
3411  			dev_warn(dev, "Error %d creating of_node link\n",error);
3412  		/* An error here doesn't warrant bringing down the device */
3413  	}
3414  
3415  	sp = class_to_subsys(dev->class);
3416  	if (!sp)
3417  		return 0;
3418  
3419  	error = sysfs_create_link(&dev->kobj, &sp->subsys.kobj, "subsystem");
3420  	if (error)
3421  		goto out_devnode;
3422  
3423  	if (dev->parent && device_is_not_partition(dev)) {
3424  		error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
3425  					  "device");
3426  		if (error)
3427  			goto out_subsys;
3428  	}
3429  
3430  	/* link in the class directory pointing to the device */
3431  	error = sysfs_create_link(&sp->subsys.kobj, &dev->kobj, dev_name(dev));
3432  	if (error)
3433  		goto out_device;
3434  	goto exit;
3435  
3436  out_device:
3437  	sysfs_remove_link(&dev->kobj, "device");
3438  out_subsys:
3439  	sysfs_remove_link(&dev->kobj, "subsystem");
3440  out_devnode:
3441  	sysfs_remove_link(&dev->kobj, "of_node");
3442  exit:
3443  	subsys_put(sp);
3444  	return error;
3445  }
3446  
device_remove_class_symlinks(struct device * dev)3447  static void device_remove_class_symlinks(struct device *dev)
3448  {
3449  	struct subsys_private *sp = class_to_subsys(dev->class);
3450  
3451  	if (dev_of_node(dev))
3452  		sysfs_remove_link(&dev->kobj, "of_node");
3453  
3454  	if (!sp)
3455  		return;
3456  
3457  	if (dev->parent && device_is_not_partition(dev))
3458  		sysfs_remove_link(&dev->kobj, "device");
3459  	sysfs_remove_link(&dev->kobj, "subsystem");
3460  	sysfs_delete_link(&sp->subsys.kobj, &dev->kobj, dev_name(dev));
3461  	subsys_put(sp);
3462  }
3463  
3464  /**
3465   * dev_set_name - set a device name
3466   * @dev: device
3467   * @fmt: format string for the device's name
3468   */
dev_set_name(struct device * dev,const char * fmt,...)3469  int dev_set_name(struct device *dev, const char *fmt, ...)
3470  {
3471  	va_list vargs;
3472  	int err;
3473  
3474  	va_start(vargs, fmt);
3475  	err = kobject_set_name_vargs(&dev->kobj, fmt, vargs);
3476  	va_end(vargs);
3477  	return err;
3478  }
3479  EXPORT_SYMBOL_GPL(dev_set_name);
3480  
3481  /* select a /sys/dev/ directory for the device */
device_to_dev_kobj(struct device * dev)3482  static struct kobject *device_to_dev_kobj(struct device *dev)
3483  {
3484  	if (is_blockdev(dev))
3485  		return sysfs_dev_block_kobj;
3486  	else
3487  		return sysfs_dev_char_kobj;
3488  }
3489  
device_create_sys_dev_entry(struct device * dev)3490  static int device_create_sys_dev_entry(struct device *dev)
3491  {
3492  	struct kobject *kobj = device_to_dev_kobj(dev);
3493  	int error = 0;
3494  	char devt_str[15];
3495  
3496  	if (kobj) {
3497  		format_dev_t(devt_str, dev->devt);
3498  		error = sysfs_create_link(kobj, &dev->kobj, devt_str);
3499  	}
3500  
3501  	return error;
3502  }
3503  
device_remove_sys_dev_entry(struct device * dev)3504  static void device_remove_sys_dev_entry(struct device *dev)
3505  {
3506  	struct kobject *kobj = device_to_dev_kobj(dev);
3507  	char devt_str[15];
3508  
3509  	if (kobj) {
3510  		format_dev_t(devt_str, dev->devt);
3511  		sysfs_remove_link(kobj, devt_str);
3512  	}
3513  }
3514  
device_private_init(struct device * dev)3515  static int device_private_init(struct device *dev)
3516  {
3517  	dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL);
3518  	if (!dev->p)
3519  		return -ENOMEM;
3520  	dev->p->device = dev;
3521  	klist_init(&dev->p->klist_children, klist_children_get,
3522  		   klist_children_put);
3523  	INIT_LIST_HEAD(&dev->p->deferred_probe);
3524  	return 0;
3525  }
3526  
3527  /**
3528   * device_add - add device to device hierarchy.
3529   * @dev: device.
3530   *
3531   * This is part 2 of device_register(), though may be called
3532   * separately _iff_ device_initialize() has been called separately.
3533   *
3534   * This adds @dev to the kobject hierarchy via kobject_add(), adds it
3535   * to the global and sibling lists for the device, then
3536   * adds it to the other relevant subsystems of the driver model.
3537   *
3538   * Do not call this routine or device_register() more than once for
3539   * any device structure.  The driver model core is not designed to work
3540   * with devices that get unregistered and then spring back to life.
3541   * (Among other things, it's very hard to guarantee that all references
3542   * to the previous incarnation of @dev have been dropped.)  Allocate
3543   * and register a fresh new struct device instead.
3544   *
3545   * NOTE: _Never_ directly free @dev after calling this function, even
3546   * if it returned an error! Always use put_device() to give up your
3547   * reference instead.
3548   *
3549   * Rule of thumb is: if device_add() succeeds, you should call
3550   * device_del() when you want to get rid of it. If device_add() has
3551   * *not* succeeded, use *only* put_device() to drop the reference
3552   * count.
3553   */
device_add(struct device * dev)3554  int device_add(struct device *dev)
3555  {
3556  	struct subsys_private *sp;
3557  	struct device *parent;
3558  	struct kobject *kobj;
3559  	struct class_interface *class_intf;
3560  	int error = -EINVAL;
3561  	struct kobject *glue_dir = NULL;
3562  
3563  	dev = get_device(dev);
3564  	if (!dev)
3565  		goto done;
3566  
3567  	if (!dev->p) {
3568  		error = device_private_init(dev);
3569  		if (error)
3570  			goto done;
3571  	}
3572  
3573  	/*
3574  	 * for statically allocated devices, which should all be converted
3575  	 * some day, we need to initialize the name. We prevent reading back
3576  	 * the name, and force the use of dev_name()
3577  	 */
3578  	if (dev->init_name) {
3579  		error = dev_set_name(dev, "%s", dev->init_name);
3580  		dev->init_name = NULL;
3581  	}
3582  
3583  	if (dev_name(dev))
3584  		error = 0;
3585  	/* subsystems can specify simple device enumeration */
3586  	else if (dev->bus && dev->bus->dev_name)
3587  		error = dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
3588  	else
3589  		error = -EINVAL;
3590  	if (error)
3591  		goto name_error;
3592  
3593  	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
3594  
3595  	parent = get_device(dev->parent);
3596  	kobj = get_device_parent(dev, parent);
3597  	if (IS_ERR(kobj)) {
3598  		error = PTR_ERR(kobj);
3599  		goto parent_error;
3600  	}
3601  	if (kobj)
3602  		dev->kobj.parent = kobj;
3603  
3604  	/* use parent numa_node */
3605  	if (parent && (dev_to_node(dev) == NUMA_NO_NODE))
3606  		set_dev_node(dev, dev_to_node(parent));
3607  
3608  	/* first, register with generic layer. */
3609  	/* we require the name to be set before, and pass NULL */
3610  	error = kobject_add(&dev->kobj, dev->kobj.parent, NULL);
3611  	if (error) {
3612  		glue_dir = kobj;
3613  		goto Error;
3614  	}
3615  
3616  	/* notify platform of device entry */
3617  	device_platform_notify(dev);
3618  
3619  	error = device_create_file(dev, &dev_attr_uevent);
3620  	if (error)
3621  		goto attrError;
3622  
3623  	error = device_add_class_symlinks(dev);
3624  	if (error)
3625  		goto SymlinkError;
3626  	error = device_add_attrs(dev);
3627  	if (error)
3628  		goto AttrsError;
3629  	error = bus_add_device(dev);
3630  	if (error)
3631  		goto BusError;
3632  	error = dpm_sysfs_add(dev);
3633  	if (error)
3634  		goto DPMError;
3635  	device_pm_add(dev);
3636  
3637  	if (MAJOR(dev->devt)) {
3638  		error = device_create_file(dev, &dev_attr_dev);
3639  		if (error)
3640  			goto DevAttrError;
3641  
3642  		error = device_create_sys_dev_entry(dev);
3643  		if (error)
3644  			goto SysEntryError;
3645  
3646  		devtmpfs_create_node(dev);
3647  	}
3648  
3649  	/* Notify clients of device addition.  This call must come
3650  	 * after dpm_sysfs_add() and before kobject_uevent().
3651  	 */
3652  	bus_notify(dev, BUS_NOTIFY_ADD_DEVICE);
3653  	kobject_uevent(&dev->kobj, KOBJ_ADD);
3654  
3655  	/*
3656  	 * Check if any of the other devices (consumers) have been waiting for
3657  	 * this device (supplier) to be added so that they can create a device
3658  	 * link to it.
3659  	 *
3660  	 * This needs to happen after device_pm_add() because device_link_add()
3661  	 * requires the supplier be registered before it's called.
3662  	 *
3663  	 * But this also needs to happen before bus_probe_device() to make sure
3664  	 * waiting consumers can link to it before the driver is bound to the
3665  	 * device and the driver sync_state callback is called for this device.
3666  	 */
3667  	if (dev->fwnode && !dev->fwnode->dev) {
3668  		dev->fwnode->dev = dev;
3669  		fw_devlink_link_device(dev);
3670  	}
3671  
3672  	bus_probe_device(dev);
3673  
3674  	/*
3675  	 * If all driver registration is done and a newly added device doesn't
3676  	 * match with any driver, don't block its consumers from probing in
3677  	 * case the consumer device is able to operate without this supplier.
3678  	 */
3679  	if (dev->fwnode && fw_devlink_drv_reg_done && !dev->can_match)
3680  		fw_devlink_unblock_consumers(dev);
3681  
3682  	if (parent)
3683  		klist_add_tail(&dev->p->knode_parent,
3684  			       &parent->p->klist_children);
3685  
3686  	sp = class_to_subsys(dev->class);
3687  	if (sp) {
3688  		mutex_lock(&sp->mutex);
3689  		/* tie the class to the device */
3690  		klist_add_tail(&dev->p->knode_class, &sp->klist_devices);
3691  
3692  		/* notify any interfaces that the device is here */
3693  		list_for_each_entry(class_intf, &sp->interfaces, node)
3694  			if (class_intf->add_dev)
3695  				class_intf->add_dev(dev);
3696  		mutex_unlock(&sp->mutex);
3697  		subsys_put(sp);
3698  	}
3699  done:
3700  	put_device(dev);
3701  	return error;
3702   SysEntryError:
3703  	if (MAJOR(dev->devt))
3704  		device_remove_file(dev, &dev_attr_dev);
3705   DevAttrError:
3706  	device_pm_remove(dev);
3707  	dpm_sysfs_remove(dev);
3708   DPMError:
3709  	dev->driver = NULL;
3710  	bus_remove_device(dev);
3711   BusError:
3712  	device_remove_attrs(dev);
3713   AttrsError:
3714  	device_remove_class_symlinks(dev);
3715   SymlinkError:
3716  	device_remove_file(dev, &dev_attr_uevent);
3717   attrError:
3718  	device_platform_notify_remove(dev);
3719  	kobject_uevent(&dev->kobj, KOBJ_REMOVE);
3720  	glue_dir = get_glue_dir(dev);
3721  	kobject_del(&dev->kobj);
3722   Error:
3723  	cleanup_glue_dir(dev, glue_dir);
3724  parent_error:
3725  	put_device(parent);
3726  name_error:
3727  	kfree(dev->p);
3728  	dev->p = NULL;
3729  	goto done;
3730  }
3731  EXPORT_SYMBOL_GPL(device_add);
3732  
3733  /**
3734   * device_register - register a device with the system.
3735   * @dev: pointer to the device structure
3736   *
3737   * This happens in two clean steps - initialize the device
3738   * and add it to the system. The two steps can be called
3739   * separately, but this is the easiest and most common.
3740   * I.e. you should only call the two helpers separately if
3741   * have a clearly defined need to use and refcount the device
3742   * before it is added to the hierarchy.
3743   *
3744   * For more information, see the kerneldoc for device_initialize()
3745   * and device_add().
3746   *
3747   * NOTE: _Never_ directly free @dev after calling this function, even
3748   * if it returned an error! Always use put_device() to give up the
3749   * reference initialized in this function instead.
3750   */
device_register(struct device * dev)3751  int device_register(struct device *dev)
3752  {
3753  	device_initialize(dev);
3754  	return device_add(dev);
3755  }
3756  EXPORT_SYMBOL_GPL(device_register);
3757  
3758  /**
3759   * get_device - increment reference count for device.
3760   * @dev: device.
3761   *
3762   * This simply forwards the call to kobject_get(), though
3763   * we do take care to provide for the case that we get a NULL
3764   * pointer passed in.
3765   */
get_device(struct device * dev)3766  struct device *get_device(struct device *dev)
3767  {
3768  	return dev ? kobj_to_dev(kobject_get(&dev->kobj)) : NULL;
3769  }
3770  EXPORT_SYMBOL_GPL(get_device);
3771  
3772  /**
3773   * put_device - decrement reference count.
3774   * @dev: device in question.
3775   */
put_device(struct device * dev)3776  void put_device(struct device *dev)
3777  {
3778  	/* might_sleep(); */
3779  	if (dev)
3780  		kobject_put(&dev->kobj);
3781  }
3782  EXPORT_SYMBOL_GPL(put_device);
3783  
kill_device(struct device * dev)3784  bool kill_device(struct device *dev)
3785  {
3786  	/*
3787  	 * Require the device lock and set the "dead" flag to guarantee that
3788  	 * the update behavior is consistent with the other bitfields near
3789  	 * it and that we cannot have an asynchronous probe routine trying
3790  	 * to run while we are tearing out the bus/class/sysfs from
3791  	 * underneath the device.
3792  	 */
3793  	device_lock_assert(dev);
3794  
3795  	if (dev->p->dead)
3796  		return false;
3797  	dev->p->dead = true;
3798  	return true;
3799  }
3800  EXPORT_SYMBOL_GPL(kill_device);
3801  
3802  /**
3803   * device_del - delete device from system.
3804   * @dev: device.
3805   *
3806   * This is the first part of the device unregistration
3807   * sequence. This removes the device from the lists we control
3808   * from here, has it removed from the other driver model
3809   * subsystems it was added to in device_add(), and removes it
3810   * from the kobject hierarchy.
3811   *
3812   * NOTE: this should be called manually _iff_ device_add() was
3813   * also called manually.
3814   */
device_del(struct device * dev)3815  void device_del(struct device *dev)
3816  {
3817  	struct subsys_private *sp;
3818  	struct device *parent = dev->parent;
3819  	struct kobject *glue_dir = NULL;
3820  	struct class_interface *class_intf;
3821  	unsigned int noio_flag;
3822  
3823  	device_lock(dev);
3824  	kill_device(dev);
3825  	device_unlock(dev);
3826  
3827  	if (dev->fwnode && dev->fwnode->dev == dev)
3828  		dev->fwnode->dev = NULL;
3829  
3830  	/* Notify clients of device removal.  This call must come
3831  	 * before dpm_sysfs_remove().
3832  	 */
3833  	noio_flag = memalloc_noio_save();
3834  	bus_notify(dev, BUS_NOTIFY_DEL_DEVICE);
3835  
3836  	dpm_sysfs_remove(dev);
3837  	if (parent)
3838  		klist_del(&dev->p->knode_parent);
3839  	if (MAJOR(dev->devt)) {
3840  		devtmpfs_delete_node(dev);
3841  		device_remove_sys_dev_entry(dev);
3842  		device_remove_file(dev, &dev_attr_dev);
3843  	}
3844  
3845  	sp = class_to_subsys(dev->class);
3846  	if (sp) {
3847  		device_remove_class_symlinks(dev);
3848  
3849  		mutex_lock(&sp->mutex);
3850  		/* notify any interfaces that the device is now gone */
3851  		list_for_each_entry(class_intf, &sp->interfaces, node)
3852  			if (class_intf->remove_dev)
3853  				class_intf->remove_dev(dev);
3854  		/* remove the device from the class list */
3855  		klist_del(&dev->p->knode_class);
3856  		mutex_unlock(&sp->mutex);
3857  		subsys_put(sp);
3858  	}
3859  	device_remove_file(dev, &dev_attr_uevent);
3860  	device_remove_attrs(dev);
3861  	bus_remove_device(dev);
3862  	device_pm_remove(dev);
3863  	driver_deferred_probe_del(dev);
3864  	device_platform_notify_remove(dev);
3865  	device_links_purge(dev);
3866  
3867  	/*
3868  	 * If a device does not have a driver attached, we need to clean
3869  	 * up any managed resources. We do this in device_release(), but
3870  	 * it's never called (and we leak the device) if a managed
3871  	 * resource holds a reference to the device. So release all
3872  	 * managed resources here, like we do in driver_detach(). We
3873  	 * still need to do so again in device_release() in case someone
3874  	 * adds a new resource after this point, though.
3875  	 */
3876  	devres_release_all(dev);
3877  
3878  	bus_notify(dev, BUS_NOTIFY_REMOVED_DEVICE);
3879  	kobject_uevent(&dev->kobj, KOBJ_REMOVE);
3880  	glue_dir = get_glue_dir(dev);
3881  	kobject_del(&dev->kobj);
3882  	cleanup_glue_dir(dev, glue_dir);
3883  	memalloc_noio_restore(noio_flag);
3884  	put_device(parent);
3885  }
3886  EXPORT_SYMBOL_GPL(device_del);
3887  
3888  /**
3889   * device_unregister - unregister device from system.
3890   * @dev: device going away.
3891   *
3892   * We do this in two parts, like we do device_register(). First,
3893   * we remove it from all the subsystems with device_del(), then
3894   * we decrement the reference count via put_device(). If that
3895   * is the final reference count, the device will be cleaned up
3896   * via device_release() above. Otherwise, the structure will
3897   * stick around until the final reference to the device is dropped.
3898   */
device_unregister(struct device * dev)3899  void device_unregister(struct device *dev)
3900  {
3901  	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
3902  	device_del(dev);
3903  	put_device(dev);
3904  }
3905  EXPORT_SYMBOL_GPL(device_unregister);
3906  
prev_device(struct klist_iter * i)3907  static struct device *prev_device(struct klist_iter *i)
3908  {
3909  	struct klist_node *n = klist_prev(i);
3910  	struct device *dev = NULL;
3911  	struct device_private *p;
3912  
3913  	if (n) {
3914  		p = to_device_private_parent(n);
3915  		dev = p->device;
3916  	}
3917  	return dev;
3918  }
3919  
next_device(struct klist_iter * i)3920  static struct device *next_device(struct klist_iter *i)
3921  {
3922  	struct klist_node *n = klist_next(i);
3923  	struct device *dev = NULL;
3924  	struct device_private *p;
3925  
3926  	if (n) {
3927  		p = to_device_private_parent(n);
3928  		dev = p->device;
3929  	}
3930  	return dev;
3931  }
3932  
3933  /**
3934   * device_get_devnode - path of device node file
3935   * @dev: device
3936   * @mode: returned file access mode
3937   * @uid: returned file owner
3938   * @gid: returned file group
3939   * @tmp: possibly allocated string
3940   *
3941   * Return the relative path of a possible device node.
3942   * Non-default names may need to allocate a memory to compose
3943   * a name. This memory is returned in tmp and needs to be
3944   * freed by the caller.
3945   */
device_get_devnode(const struct device * dev,umode_t * mode,kuid_t * uid,kgid_t * gid,const char ** tmp)3946  const char *device_get_devnode(const struct device *dev,
3947  			       umode_t *mode, kuid_t *uid, kgid_t *gid,
3948  			       const char **tmp)
3949  {
3950  	char *s;
3951  
3952  	*tmp = NULL;
3953  
3954  	/* the device type may provide a specific name */
3955  	if (dev->type && dev->type->devnode)
3956  		*tmp = dev->type->devnode(dev, mode, uid, gid);
3957  	if (*tmp)
3958  		return *tmp;
3959  
3960  	/* the class may provide a specific name */
3961  	if (dev->class && dev->class->devnode)
3962  		*tmp = dev->class->devnode(dev, mode);
3963  	if (*tmp)
3964  		return *tmp;
3965  
3966  	/* return name without allocation, tmp == NULL */
3967  	if (strchr(dev_name(dev), '!') == NULL)
3968  		return dev_name(dev);
3969  
3970  	/* replace '!' in the name with '/' */
3971  	s = kstrdup_and_replace(dev_name(dev), '!', '/', GFP_KERNEL);
3972  	if (!s)
3973  		return NULL;
3974  	return *tmp = s;
3975  }
3976  
3977  /**
3978   * device_for_each_child - device child iterator.
3979   * @parent: parent struct device.
3980   * @fn: function to be called for each device.
3981   * @data: data for the callback.
3982   *
3983   * Iterate over @parent's child devices, and call @fn for each,
3984   * passing it @data.
3985   *
3986   * We check the return of @fn each time. If it returns anything
3987   * other than 0, we break out and return that value.
3988   */
device_for_each_child(struct device * parent,void * data,int (* fn)(struct device * dev,void * data))3989  int device_for_each_child(struct device *parent, void *data,
3990  			  int (*fn)(struct device *dev, void *data))
3991  {
3992  	struct klist_iter i;
3993  	struct device *child;
3994  	int error = 0;
3995  
3996  	if (!parent || !parent->p)
3997  		return 0;
3998  
3999  	klist_iter_init(&parent->p->klist_children, &i);
4000  	while (!error && (child = next_device(&i)))
4001  		error = fn(child, data);
4002  	klist_iter_exit(&i);
4003  	return error;
4004  }
4005  EXPORT_SYMBOL_GPL(device_for_each_child);
4006  
4007  /**
4008   * device_for_each_child_reverse - device child iterator in reversed order.
4009   * @parent: parent struct device.
4010   * @fn: function to be called for each device.
4011   * @data: data for the callback.
4012   *
4013   * Iterate over @parent's child devices, and call @fn for each,
4014   * passing it @data.
4015   *
4016   * We check the return of @fn each time. If it returns anything
4017   * other than 0, we break out and return that value.
4018   */
device_for_each_child_reverse(struct device * parent,void * data,int (* fn)(struct device * dev,void * data))4019  int device_for_each_child_reverse(struct device *parent, void *data,
4020  				  int (*fn)(struct device *dev, void *data))
4021  {
4022  	struct klist_iter i;
4023  	struct device *child;
4024  	int error = 0;
4025  
4026  	if (!parent || !parent->p)
4027  		return 0;
4028  
4029  	klist_iter_init(&parent->p->klist_children, &i);
4030  	while ((child = prev_device(&i)) && !error)
4031  		error = fn(child, data);
4032  	klist_iter_exit(&i);
4033  	return error;
4034  }
4035  EXPORT_SYMBOL_GPL(device_for_each_child_reverse);
4036  
4037  /**
4038   * device_for_each_child_reverse_from - device child iterator in reversed order.
4039   * @parent: parent struct device.
4040   * @from: optional starting point in child list
4041   * @fn: function to be called for each device.
4042   * @data: data for the callback.
4043   *
4044   * Iterate over @parent's child devices, starting at @from, and call @fn
4045   * for each, passing it @data. This helper is identical to
4046   * device_for_each_child_reverse() when @from is NULL.
4047   *
4048   * @fn is checked each iteration. If it returns anything other than 0,
4049   * iteration stop and that value is returned to the caller of
4050   * device_for_each_child_reverse_from();
4051   */
device_for_each_child_reverse_from(struct device * parent,struct device * from,const void * data,int (* fn)(struct device *,const void *))4052  int device_for_each_child_reverse_from(struct device *parent,
4053  				       struct device *from, const void *data,
4054  				       int (*fn)(struct device *, const void *))
4055  {
4056  	struct klist_iter i;
4057  	struct device *child;
4058  	int error = 0;
4059  
4060  	if (!parent->p)
4061  		return 0;
4062  
4063  	klist_iter_init_node(&parent->p->klist_children, &i,
4064  			     (from ? &from->p->knode_parent : NULL));
4065  	while ((child = prev_device(&i)) && !error)
4066  		error = fn(child, data);
4067  	klist_iter_exit(&i);
4068  	return error;
4069  }
4070  EXPORT_SYMBOL_GPL(device_for_each_child_reverse_from);
4071  
4072  /**
4073   * device_find_child - device iterator for locating a particular device.
4074   * @parent: parent struct device
4075   * @match: Callback function to check device
4076   * @data: Data to pass to match function
4077   *
4078   * This is similar to the device_for_each_child() function above, but it
4079   * returns a reference to a device that is 'found' for later use, as
4080   * determined by the @match callback.
4081   *
4082   * The callback should return 0 if the device doesn't match and non-zero
4083   * if it does.  If the callback returns non-zero and a reference to the
4084   * current device can be obtained, this function will return to the caller
4085   * and not iterate over any more devices.
4086   *
4087   * NOTE: you will need to drop the reference with put_device() after use.
4088   */
device_find_child(struct device * parent,void * data,int (* match)(struct device * dev,void * data))4089  struct device *device_find_child(struct device *parent, void *data,
4090  				 int (*match)(struct device *dev, void *data))
4091  {
4092  	struct klist_iter i;
4093  	struct device *child;
4094  
4095  	if (!parent || !parent->p)
4096  		return NULL;
4097  
4098  	klist_iter_init(&parent->p->klist_children, &i);
4099  	while ((child = next_device(&i)))
4100  		if (match(child, data) && get_device(child))
4101  			break;
4102  	klist_iter_exit(&i);
4103  	return child;
4104  }
4105  EXPORT_SYMBOL_GPL(device_find_child);
4106  
4107  /**
4108   * device_find_child_by_name - device iterator for locating a child device.
4109   * @parent: parent struct device
4110   * @name: name of the child device
4111   *
4112   * This is similar to the device_find_child() function above, but it
4113   * returns a reference to a device that has the name @name.
4114   *
4115   * NOTE: you will need to drop the reference with put_device() after use.
4116   */
device_find_child_by_name(struct device * parent,const char * name)4117  struct device *device_find_child_by_name(struct device *parent,
4118  					 const char *name)
4119  {
4120  	struct klist_iter i;
4121  	struct device *child;
4122  
4123  	if (!parent)
4124  		return NULL;
4125  
4126  	klist_iter_init(&parent->p->klist_children, &i);
4127  	while ((child = next_device(&i)))
4128  		if (sysfs_streq(dev_name(child), name) && get_device(child))
4129  			break;
4130  	klist_iter_exit(&i);
4131  	return child;
4132  }
4133  EXPORT_SYMBOL_GPL(device_find_child_by_name);
4134  
match_any(struct device * dev,void * unused)4135  static int match_any(struct device *dev, void *unused)
4136  {
4137  	return 1;
4138  }
4139  
4140  /**
4141   * device_find_any_child - device iterator for locating a child device, if any.
4142   * @parent: parent struct device
4143   *
4144   * This is similar to the device_find_child() function above, but it
4145   * returns a reference to a child device, if any.
4146   *
4147   * NOTE: you will need to drop the reference with put_device() after use.
4148   */
device_find_any_child(struct device * parent)4149  struct device *device_find_any_child(struct device *parent)
4150  {
4151  	return device_find_child(parent, NULL, match_any);
4152  }
4153  EXPORT_SYMBOL_GPL(device_find_any_child);
4154  
devices_init(void)4155  int __init devices_init(void)
4156  {
4157  	devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
4158  	if (!devices_kset)
4159  		return -ENOMEM;
4160  	dev_kobj = kobject_create_and_add("dev", NULL);
4161  	if (!dev_kobj)
4162  		goto dev_kobj_err;
4163  	sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj);
4164  	if (!sysfs_dev_block_kobj)
4165  		goto block_kobj_err;
4166  	sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj);
4167  	if (!sysfs_dev_char_kobj)
4168  		goto char_kobj_err;
4169  	device_link_wq = alloc_workqueue("device_link_wq", 0, 0);
4170  	if (!device_link_wq)
4171  		goto wq_err;
4172  
4173  	return 0;
4174  
4175   wq_err:
4176  	kobject_put(sysfs_dev_char_kobj);
4177   char_kobj_err:
4178  	kobject_put(sysfs_dev_block_kobj);
4179   block_kobj_err:
4180  	kobject_put(dev_kobj);
4181   dev_kobj_err:
4182  	kset_unregister(devices_kset);
4183  	return -ENOMEM;
4184  }
4185  
device_check_offline(struct device * dev,void * not_used)4186  static int device_check_offline(struct device *dev, void *not_used)
4187  {
4188  	int ret;
4189  
4190  	ret = device_for_each_child(dev, NULL, device_check_offline);
4191  	if (ret)
4192  		return ret;
4193  
4194  	return device_supports_offline(dev) && !dev->offline ? -EBUSY : 0;
4195  }
4196  
4197  /**
4198   * device_offline - Prepare the device for hot-removal.
4199   * @dev: Device to be put offline.
4200   *
4201   * Execute the device bus type's .offline() callback, if present, to prepare
4202   * the device for a subsequent hot-removal.  If that succeeds, the device must
4203   * not be used until either it is removed or its bus type's .online() callback
4204   * is executed.
4205   *
4206   * Call under device_hotplug_lock.
4207   */
device_offline(struct device * dev)4208  int device_offline(struct device *dev)
4209  {
4210  	int ret;
4211  
4212  	if (dev->offline_disabled)
4213  		return -EPERM;
4214  
4215  	ret = device_for_each_child(dev, NULL, device_check_offline);
4216  	if (ret)
4217  		return ret;
4218  
4219  	device_lock(dev);
4220  	if (device_supports_offline(dev)) {
4221  		if (dev->offline) {
4222  			ret = 1;
4223  		} else {
4224  			ret = dev->bus->offline(dev);
4225  			if (!ret) {
4226  				kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
4227  				dev->offline = true;
4228  			}
4229  		}
4230  	}
4231  	device_unlock(dev);
4232  
4233  	return ret;
4234  }
4235  
4236  /**
4237   * device_online - Put the device back online after successful device_offline().
4238   * @dev: Device to be put back online.
4239   *
4240   * If device_offline() has been successfully executed for @dev, but the device
4241   * has not been removed subsequently, execute its bus type's .online() callback
4242   * to indicate that the device can be used again.
4243   *
4244   * Call under device_hotplug_lock.
4245   */
device_online(struct device * dev)4246  int device_online(struct device *dev)
4247  {
4248  	int ret = 0;
4249  
4250  	device_lock(dev);
4251  	if (device_supports_offline(dev)) {
4252  		if (dev->offline) {
4253  			ret = dev->bus->online(dev);
4254  			if (!ret) {
4255  				kobject_uevent(&dev->kobj, KOBJ_ONLINE);
4256  				dev->offline = false;
4257  			}
4258  		} else {
4259  			ret = 1;
4260  		}
4261  	}
4262  	device_unlock(dev);
4263  
4264  	return ret;
4265  }
4266  
4267  struct root_device {
4268  	struct device dev;
4269  	struct module *owner;
4270  };
4271  
to_root_device(struct device * d)4272  static inline struct root_device *to_root_device(struct device *d)
4273  {
4274  	return container_of(d, struct root_device, dev);
4275  }
4276  
root_device_release(struct device * dev)4277  static void root_device_release(struct device *dev)
4278  {
4279  	kfree(to_root_device(dev));
4280  }
4281  
4282  /**
4283   * __root_device_register - allocate and register a root device
4284   * @name: root device name
4285   * @owner: owner module of the root device, usually THIS_MODULE
4286   *
4287   * This function allocates a root device and registers it
4288   * using device_register(). In order to free the returned
4289   * device, use root_device_unregister().
4290   *
4291   * Root devices are dummy devices which allow other devices
4292   * to be grouped under /sys/devices. Use this function to
4293   * allocate a root device and then use it as the parent of
4294   * any device which should appear under /sys/devices/{name}
4295   *
4296   * The /sys/devices/{name} directory will also contain a
4297   * 'module' symlink which points to the @owner directory
4298   * in sysfs.
4299   *
4300   * Returns &struct device pointer on success, or ERR_PTR() on error.
4301   *
4302   * Note: You probably want to use root_device_register().
4303   */
__root_device_register(const char * name,struct module * owner)4304  struct device *__root_device_register(const char *name, struct module *owner)
4305  {
4306  	struct root_device *root;
4307  	int err = -ENOMEM;
4308  
4309  	root = kzalloc(sizeof(struct root_device), GFP_KERNEL);
4310  	if (!root)
4311  		return ERR_PTR(err);
4312  
4313  	err = dev_set_name(&root->dev, "%s", name);
4314  	if (err) {
4315  		kfree(root);
4316  		return ERR_PTR(err);
4317  	}
4318  
4319  	root->dev.release = root_device_release;
4320  
4321  	err = device_register(&root->dev);
4322  	if (err) {
4323  		put_device(&root->dev);
4324  		return ERR_PTR(err);
4325  	}
4326  
4327  #ifdef CONFIG_MODULES	/* gotta find a "cleaner" way to do this */
4328  	if (owner) {
4329  		struct module_kobject *mk = &owner->mkobj;
4330  
4331  		err = sysfs_create_link(&root->dev.kobj, &mk->kobj, "module");
4332  		if (err) {
4333  			device_unregister(&root->dev);
4334  			return ERR_PTR(err);
4335  		}
4336  		root->owner = owner;
4337  	}
4338  #endif
4339  
4340  	return &root->dev;
4341  }
4342  EXPORT_SYMBOL_GPL(__root_device_register);
4343  
4344  /**
4345   * root_device_unregister - unregister and free a root device
4346   * @dev: device going away
4347   *
4348   * This function unregisters and cleans up a device that was created by
4349   * root_device_register().
4350   */
root_device_unregister(struct device * dev)4351  void root_device_unregister(struct device *dev)
4352  {
4353  	struct root_device *root = to_root_device(dev);
4354  
4355  	if (root->owner)
4356  		sysfs_remove_link(&root->dev.kobj, "module");
4357  
4358  	device_unregister(dev);
4359  }
4360  EXPORT_SYMBOL_GPL(root_device_unregister);
4361  
4362  
device_create_release(struct device * dev)4363  static void device_create_release(struct device *dev)
4364  {
4365  	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
4366  	kfree(dev);
4367  }
4368  
4369  static __printf(6, 0) struct device *
device_create_groups_vargs(const struct class * class,struct device * parent,dev_t devt,void * drvdata,const struct attribute_group ** groups,const char * fmt,va_list args)4370  device_create_groups_vargs(const struct class *class, struct device *parent,
4371  			   dev_t devt, void *drvdata,
4372  			   const struct attribute_group **groups,
4373  			   const char *fmt, va_list args)
4374  {
4375  	struct device *dev = NULL;
4376  	int retval = -ENODEV;
4377  
4378  	if (IS_ERR_OR_NULL(class))
4379  		goto error;
4380  
4381  	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
4382  	if (!dev) {
4383  		retval = -ENOMEM;
4384  		goto error;
4385  	}
4386  
4387  	device_initialize(dev);
4388  	dev->devt = devt;
4389  	dev->class = class;
4390  	dev->parent = parent;
4391  	dev->groups = groups;
4392  	dev->release = device_create_release;
4393  	dev_set_drvdata(dev, drvdata);
4394  
4395  	retval = kobject_set_name_vargs(&dev->kobj, fmt, args);
4396  	if (retval)
4397  		goto error;
4398  
4399  	retval = device_add(dev);
4400  	if (retval)
4401  		goto error;
4402  
4403  	return dev;
4404  
4405  error:
4406  	put_device(dev);
4407  	return ERR_PTR(retval);
4408  }
4409  
4410  /**
4411   * device_create - creates a device and registers it with sysfs
4412   * @class: pointer to the struct class that this device should be registered to
4413   * @parent: pointer to the parent struct device of this new device, if any
4414   * @devt: the dev_t for the char device to be added
4415   * @drvdata: the data to be added to the device for callbacks
4416   * @fmt: string for the device's name
4417   *
4418   * This function can be used by char device classes.  A struct device
4419   * will be created in sysfs, registered to the specified class.
4420   *
4421   * A "dev" file will be created, showing the dev_t for the device, if
4422   * the dev_t is not 0,0.
4423   * If a pointer to a parent struct device is passed in, the newly created
4424   * struct device will be a child of that device in sysfs.
4425   * The pointer to the struct device will be returned from the call.
4426   * Any further sysfs files that might be required can be created using this
4427   * pointer.
4428   *
4429   * Returns &struct device pointer on success, or ERR_PTR() on error.
4430   */
device_create(const struct class * class,struct device * parent,dev_t devt,void * drvdata,const char * fmt,...)4431  struct device *device_create(const struct class *class, struct device *parent,
4432  			     dev_t devt, void *drvdata, const char *fmt, ...)
4433  {
4434  	va_list vargs;
4435  	struct device *dev;
4436  
4437  	va_start(vargs, fmt);
4438  	dev = device_create_groups_vargs(class, parent, devt, drvdata, NULL,
4439  					  fmt, vargs);
4440  	va_end(vargs);
4441  	return dev;
4442  }
4443  EXPORT_SYMBOL_GPL(device_create);
4444  
4445  /**
4446   * device_create_with_groups - creates a device and registers it with sysfs
4447   * @class: pointer to the struct class that this device should be registered to
4448   * @parent: pointer to the parent struct device of this new device, if any
4449   * @devt: the dev_t for the char device to be added
4450   * @drvdata: the data to be added to the device for callbacks
4451   * @groups: NULL-terminated list of attribute groups to be created
4452   * @fmt: string for the device's name
4453   *
4454   * This function can be used by char device classes.  A struct device
4455   * will be created in sysfs, registered to the specified class.
4456   * Additional attributes specified in the groups parameter will also
4457   * be created automatically.
4458   *
4459   * A "dev" file will be created, showing the dev_t for the device, if
4460   * the dev_t is not 0,0.
4461   * If a pointer to a parent struct device is passed in, the newly created
4462   * struct device will be a child of that device in sysfs.
4463   * The pointer to the struct device will be returned from the call.
4464   * Any further sysfs files that might be required can be created using this
4465   * pointer.
4466   *
4467   * Returns &struct device pointer on success, or ERR_PTR() on error.
4468   */
device_create_with_groups(const struct class * class,struct device * parent,dev_t devt,void * drvdata,const struct attribute_group ** groups,const char * fmt,...)4469  struct device *device_create_with_groups(const struct class *class,
4470  					 struct device *parent, dev_t devt,
4471  					 void *drvdata,
4472  					 const struct attribute_group **groups,
4473  					 const char *fmt, ...)
4474  {
4475  	va_list vargs;
4476  	struct device *dev;
4477  
4478  	va_start(vargs, fmt);
4479  	dev = device_create_groups_vargs(class, parent, devt, drvdata, groups,
4480  					 fmt, vargs);
4481  	va_end(vargs);
4482  	return dev;
4483  }
4484  EXPORT_SYMBOL_GPL(device_create_with_groups);
4485  
4486  /**
4487   * device_destroy - removes a device that was created with device_create()
4488   * @class: pointer to the struct class that this device was registered with
4489   * @devt: the dev_t of the device that was previously registered
4490   *
4491   * This call unregisters and cleans up a device that was created with a
4492   * call to device_create().
4493   */
device_destroy(const struct class * class,dev_t devt)4494  void device_destroy(const struct class *class, dev_t devt)
4495  {
4496  	struct device *dev;
4497  
4498  	dev = class_find_device_by_devt(class, devt);
4499  	if (dev) {
4500  		put_device(dev);
4501  		device_unregister(dev);
4502  	}
4503  }
4504  EXPORT_SYMBOL_GPL(device_destroy);
4505  
4506  /**
4507   * device_rename - renames a device
4508   * @dev: the pointer to the struct device to be renamed
4509   * @new_name: the new name of the device
4510   *
4511   * It is the responsibility of the caller to provide mutual
4512   * exclusion between two different calls of device_rename
4513   * on the same device to ensure that new_name is valid and
4514   * won't conflict with other devices.
4515   *
4516   * Note: given that some subsystems (networking and infiniband) use this
4517   * function, with no immediate plans for this to change, we cannot assume or
4518   * require that this function not be called at all.
4519   *
4520   * However, if you're writing new code, do not call this function. The following
4521   * text from Kay Sievers offers some insight:
4522   *
4523   * Renaming devices is racy at many levels, symlinks and other stuff are not
4524   * replaced atomically, and you get a "move" uevent, but it's not easy to
4525   * connect the event to the old and new device. Device nodes are not renamed at
4526   * all, there isn't even support for that in the kernel now.
4527   *
4528   * In the meantime, during renaming, your target name might be taken by another
4529   * driver, creating conflicts. Or the old name is taken directly after you
4530   * renamed it -- then you get events for the same DEVPATH, before you even see
4531   * the "move" event. It's just a mess, and nothing new should ever rely on
4532   * kernel device renaming. Besides that, it's not even implemented now for
4533   * other things than (driver-core wise very simple) network devices.
4534   *
4535   * Make up a "real" name in the driver before you register anything, or add
4536   * some other attributes for userspace to find the device, or use udev to add
4537   * symlinks -- but never rename kernel devices later, it's a complete mess. We
4538   * don't even want to get into that and try to implement the missing pieces in
4539   * the core. We really have other pieces to fix in the driver core mess. :)
4540   */
device_rename(struct device * dev,const char * new_name)4541  int device_rename(struct device *dev, const char *new_name)
4542  {
4543  	struct subsys_private *sp = NULL;
4544  	struct kobject *kobj = &dev->kobj;
4545  	char *old_device_name = NULL;
4546  	int error;
4547  	bool is_link_renamed = false;
4548  
4549  	dev = get_device(dev);
4550  	if (!dev)
4551  		return -EINVAL;
4552  
4553  	dev_dbg(dev, "renaming to %s\n", new_name);
4554  
4555  	old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
4556  	if (!old_device_name) {
4557  		error = -ENOMEM;
4558  		goto out;
4559  	}
4560  
4561  	if (dev->class) {
4562  		sp = class_to_subsys(dev->class);
4563  
4564  		if (!sp) {
4565  			error = -EINVAL;
4566  			goto out;
4567  		}
4568  
4569  		error = sysfs_rename_link_ns(&sp->subsys.kobj, kobj, old_device_name,
4570  					     new_name, kobject_namespace(kobj));
4571  		if (error)
4572  			goto out;
4573  
4574  		is_link_renamed = true;
4575  	}
4576  
4577  	error = kobject_rename(kobj, new_name);
4578  out:
4579  	if (error && is_link_renamed)
4580  		sysfs_rename_link_ns(&sp->subsys.kobj, kobj, new_name,
4581  				     old_device_name, kobject_namespace(kobj));
4582  	subsys_put(sp);
4583  
4584  	put_device(dev);
4585  
4586  	kfree(old_device_name);
4587  
4588  	return error;
4589  }
4590  EXPORT_SYMBOL_GPL(device_rename);
4591  
device_move_class_links(struct device * dev,struct device * old_parent,struct device * new_parent)4592  static int device_move_class_links(struct device *dev,
4593  				   struct device *old_parent,
4594  				   struct device *new_parent)
4595  {
4596  	int error = 0;
4597  
4598  	if (old_parent)
4599  		sysfs_remove_link(&dev->kobj, "device");
4600  	if (new_parent)
4601  		error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
4602  					  "device");
4603  	return error;
4604  }
4605  
4606  /**
4607   * device_move - moves a device to a new parent
4608   * @dev: the pointer to the struct device to be moved
4609   * @new_parent: the new parent of the device (can be NULL)
4610   * @dpm_order: how to reorder the dpm_list
4611   */
device_move(struct device * dev,struct device * new_parent,enum dpm_order dpm_order)4612  int device_move(struct device *dev, struct device *new_parent,
4613  		enum dpm_order dpm_order)
4614  {
4615  	int error;
4616  	struct device *old_parent;
4617  	struct kobject *new_parent_kobj;
4618  
4619  	dev = get_device(dev);
4620  	if (!dev)
4621  		return -EINVAL;
4622  
4623  	device_pm_lock();
4624  	new_parent = get_device(new_parent);
4625  	new_parent_kobj = get_device_parent(dev, new_parent);
4626  	if (IS_ERR(new_parent_kobj)) {
4627  		error = PTR_ERR(new_parent_kobj);
4628  		put_device(new_parent);
4629  		goto out;
4630  	}
4631  
4632  	pr_debug("device: '%s': %s: moving to '%s'\n", dev_name(dev),
4633  		 __func__, new_parent ? dev_name(new_parent) : "<NULL>");
4634  	error = kobject_move(&dev->kobj, new_parent_kobj);
4635  	if (error) {
4636  		cleanup_glue_dir(dev, new_parent_kobj);
4637  		put_device(new_parent);
4638  		goto out;
4639  	}
4640  	old_parent = dev->parent;
4641  	dev->parent = new_parent;
4642  	if (old_parent)
4643  		klist_remove(&dev->p->knode_parent);
4644  	if (new_parent) {
4645  		klist_add_tail(&dev->p->knode_parent,
4646  			       &new_parent->p->klist_children);
4647  		set_dev_node(dev, dev_to_node(new_parent));
4648  	}
4649  
4650  	if (dev->class) {
4651  		error = device_move_class_links(dev, old_parent, new_parent);
4652  		if (error) {
4653  			/* We ignore errors on cleanup since we're hosed anyway... */
4654  			device_move_class_links(dev, new_parent, old_parent);
4655  			if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
4656  				if (new_parent)
4657  					klist_remove(&dev->p->knode_parent);
4658  				dev->parent = old_parent;
4659  				if (old_parent) {
4660  					klist_add_tail(&dev->p->knode_parent,
4661  						       &old_parent->p->klist_children);
4662  					set_dev_node(dev, dev_to_node(old_parent));
4663  				}
4664  			}
4665  			cleanup_glue_dir(dev, new_parent_kobj);
4666  			put_device(new_parent);
4667  			goto out;
4668  		}
4669  	}
4670  	switch (dpm_order) {
4671  	case DPM_ORDER_NONE:
4672  		break;
4673  	case DPM_ORDER_DEV_AFTER_PARENT:
4674  		device_pm_move_after(dev, new_parent);
4675  		devices_kset_move_after(dev, new_parent);
4676  		break;
4677  	case DPM_ORDER_PARENT_BEFORE_DEV:
4678  		device_pm_move_before(new_parent, dev);
4679  		devices_kset_move_before(new_parent, dev);
4680  		break;
4681  	case DPM_ORDER_DEV_LAST:
4682  		device_pm_move_last(dev);
4683  		devices_kset_move_last(dev);
4684  		break;
4685  	}
4686  
4687  	put_device(old_parent);
4688  out:
4689  	device_pm_unlock();
4690  	put_device(dev);
4691  	return error;
4692  }
4693  EXPORT_SYMBOL_GPL(device_move);
4694  
device_attrs_change_owner(struct device * dev,kuid_t kuid,kgid_t kgid)4695  static int device_attrs_change_owner(struct device *dev, kuid_t kuid,
4696  				     kgid_t kgid)
4697  {
4698  	struct kobject *kobj = &dev->kobj;
4699  	const struct class *class = dev->class;
4700  	const struct device_type *type = dev->type;
4701  	int error;
4702  
4703  	if (class) {
4704  		/*
4705  		 * Change the device groups of the device class for @dev to
4706  		 * @kuid/@kgid.
4707  		 */
4708  		error = sysfs_groups_change_owner(kobj, class->dev_groups, kuid,
4709  						  kgid);
4710  		if (error)
4711  			return error;
4712  	}
4713  
4714  	if (type) {
4715  		/*
4716  		 * Change the device groups of the device type for @dev to
4717  		 * @kuid/@kgid.
4718  		 */
4719  		error = sysfs_groups_change_owner(kobj, type->groups, kuid,
4720  						  kgid);
4721  		if (error)
4722  			return error;
4723  	}
4724  
4725  	/* Change the device groups of @dev to @kuid/@kgid. */
4726  	error = sysfs_groups_change_owner(kobj, dev->groups, kuid, kgid);
4727  	if (error)
4728  		return error;
4729  
4730  	if (device_supports_offline(dev) && !dev->offline_disabled) {
4731  		/* Change online device attributes of @dev to @kuid/@kgid. */
4732  		error = sysfs_file_change_owner(kobj, dev_attr_online.attr.name,
4733  						kuid, kgid);
4734  		if (error)
4735  			return error;
4736  	}
4737  
4738  	return 0;
4739  }
4740  
4741  /**
4742   * device_change_owner - change the owner of an existing device.
4743   * @dev: device.
4744   * @kuid: new owner's kuid
4745   * @kgid: new owner's kgid
4746   *
4747   * This changes the owner of @dev and its corresponding sysfs entries to
4748   * @kuid/@kgid. This function closely mirrors how @dev was added via driver
4749   * core.
4750   *
4751   * Returns 0 on success or error code on failure.
4752   */
device_change_owner(struct device * dev,kuid_t kuid,kgid_t kgid)4753  int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid)
4754  {
4755  	int error;
4756  	struct kobject *kobj = &dev->kobj;
4757  	struct subsys_private *sp;
4758  
4759  	dev = get_device(dev);
4760  	if (!dev)
4761  		return -EINVAL;
4762  
4763  	/*
4764  	 * Change the kobject and the default attributes and groups of the
4765  	 * ktype associated with it to @kuid/@kgid.
4766  	 */
4767  	error = sysfs_change_owner(kobj, kuid, kgid);
4768  	if (error)
4769  		goto out;
4770  
4771  	/*
4772  	 * Change the uevent file for @dev to the new owner. The uevent file
4773  	 * was created in a separate step when @dev got added and we mirror
4774  	 * that step here.
4775  	 */
4776  	error = sysfs_file_change_owner(kobj, dev_attr_uevent.attr.name, kuid,
4777  					kgid);
4778  	if (error)
4779  		goto out;
4780  
4781  	/*
4782  	 * Change the device groups, the device groups associated with the
4783  	 * device class, and the groups associated with the device type of @dev
4784  	 * to @kuid/@kgid.
4785  	 */
4786  	error = device_attrs_change_owner(dev, kuid, kgid);
4787  	if (error)
4788  		goto out;
4789  
4790  	error = dpm_sysfs_change_owner(dev, kuid, kgid);
4791  	if (error)
4792  		goto out;
4793  
4794  	/*
4795  	 * Change the owner of the symlink located in the class directory of
4796  	 * the device class associated with @dev which points to the actual
4797  	 * directory entry for @dev to @kuid/@kgid. This ensures that the
4798  	 * symlink shows the same permissions as its target.
4799  	 */
4800  	sp = class_to_subsys(dev->class);
4801  	if (!sp) {
4802  		error = -EINVAL;
4803  		goto out;
4804  	}
4805  	error = sysfs_link_change_owner(&sp->subsys.kobj, &dev->kobj, dev_name(dev), kuid, kgid);
4806  	subsys_put(sp);
4807  
4808  out:
4809  	put_device(dev);
4810  	return error;
4811  }
4812  EXPORT_SYMBOL_GPL(device_change_owner);
4813  
4814  /**
4815   * device_shutdown - call ->shutdown() on each device to shutdown.
4816   */
device_shutdown(void)4817  void device_shutdown(void)
4818  {
4819  	struct device *dev, *parent;
4820  
4821  	wait_for_device_probe();
4822  	device_block_probing();
4823  
4824  	cpufreq_suspend();
4825  
4826  	spin_lock(&devices_kset->list_lock);
4827  	/*
4828  	 * Walk the devices list backward, shutting down each in turn.
4829  	 * Beware that device unplug events may also start pulling
4830  	 * devices offline, even as the system is shutting down.
4831  	 */
4832  	while (!list_empty(&devices_kset->list)) {
4833  		dev = list_entry(devices_kset->list.prev, struct device,
4834  				kobj.entry);
4835  
4836  		/*
4837  		 * hold reference count of device's parent to
4838  		 * prevent it from being freed because parent's
4839  		 * lock is to be held
4840  		 */
4841  		parent = get_device(dev->parent);
4842  		get_device(dev);
4843  		/*
4844  		 * Make sure the device is off the kset list, in the
4845  		 * event that dev->*->shutdown() doesn't remove it.
4846  		 */
4847  		list_del_init(&dev->kobj.entry);
4848  		spin_unlock(&devices_kset->list_lock);
4849  
4850  		/* hold lock to avoid race with probe/release */
4851  		if (parent)
4852  			device_lock(parent);
4853  		device_lock(dev);
4854  
4855  		/* Don't allow any more runtime suspends */
4856  		pm_runtime_get_noresume(dev);
4857  		pm_runtime_barrier(dev);
4858  
4859  		if (dev->class && dev->class->shutdown_pre) {
4860  			if (initcall_debug)
4861  				dev_info(dev, "shutdown_pre\n");
4862  			dev->class->shutdown_pre(dev);
4863  		}
4864  		if (dev->bus && dev->bus->shutdown) {
4865  			if (initcall_debug)
4866  				dev_info(dev, "shutdown\n");
4867  			dev->bus->shutdown(dev);
4868  		} else if (dev->driver && dev->driver->shutdown) {
4869  			if (initcall_debug)
4870  				dev_info(dev, "shutdown\n");
4871  			dev->driver->shutdown(dev);
4872  		}
4873  
4874  		device_unlock(dev);
4875  		if (parent)
4876  			device_unlock(parent);
4877  
4878  		put_device(dev);
4879  		put_device(parent);
4880  
4881  		spin_lock(&devices_kset->list_lock);
4882  	}
4883  	spin_unlock(&devices_kset->list_lock);
4884  }
4885  
4886  /*
4887   * Device logging functions
4888   */
4889  
4890  #ifdef CONFIG_PRINTK
4891  static void
set_dev_info(const struct device * dev,struct dev_printk_info * dev_info)4892  set_dev_info(const struct device *dev, struct dev_printk_info *dev_info)
4893  {
4894  	const char *subsys;
4895  
4896  	memset(dev_info, 0, sizeof(*dev_info));
4897  
4898  	if (dev->class)
4899  		subsys = dev->class->name;
4900  	else if (dev->bus)
4901  		subsys = dev->bus->name;
4902  	else
4903  		return;
4904  
4905  	strscpy(dev_info->subsystem, subsys);
4906  
4907  	/*
4908  	 * Add device identifier DEVICE=:
4909  	 *   b12:8         block dev_t
4910  	 *   c127:3        char dev_t
4911  	 *   n8            netdev ifindex
4912  	 *   +sound:card0  subsystem:devname
4913  	 */
4914  	if (MAJOR(dev->devt)) {
4915  		char c;
4916  
4917  		if (strcmp(subsys, "block") == 0)
4918  			c = 'b';
4919  		else
4920  			c = 'c';
4921  
4922  		snprintf(dev_info->device, sizeof(dev_info->device),
4923  			 "%c%u:%u", c, MAJOR(dev->devt), MINOR(dev->devt));
4924  	} else if (strcmp(subsys, "net") == 0) {
4925  		struct net_device *net = to_net_dev(dev);
4926  
4927  		snprintf(dev_info->device, sizeof(dev_info->device),
4928  			 "n%u", net->ifindex);
4929  	} else {
4930  		snprintf(dev_info->device, sizeof(dev_info->device),
4931  			 "+%s:%s", subsys, dev_name(dev));
4932  	}
4933  }
4934  
dev_vprintk_emit(int level,const struct device * dev,const char * fmt,va_list args)4935  int dev_vprintk_emit(int level, const struct device *dev,
4936  		     const char *fmt, va_list args)
4937  {
4938  	struct dev_printk_info dev_info;
4939  
4940  	set_dev_info(dev, &dev_info);
4941  
4942  	return vprintk_emit(0, level, &dev_info, fmt, args);
4943  }
4944  EXPORT_SYMBOL(dev_vprintk_emit);
4945  
dev_printk_emit(int level,const struct device * dev,const char * fmt,...)4946  int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...)
4947  {
4948  	va_list args;
4949  	int r;
4950  
4951  	va_start(args, fmt);
4952  
4953  	r = dev_vprintk_emit(level, dev, fmt, args);
4954  
4955  	va_end(args);
4956  
4957  	return r;
4958  }
4959  EXPORT_SYMBOL(dev_printk_emit);
4960  
__dev_printk(const char * level,const struct device * dev,struct va_format * vaf)4961  static void __dev_printk(const char *level, const struct device *dev,
4962  			struct va_format *vaf)
4963  {
4964  	if (dev)
4965  		dev_printk_emit(level[1] - '0', dev, "%s %s: %pV",
4966  				dev_driver_string(dev), dev_name(dev), vaf);
4967  	else
4968  		printk("%s(NULL device *): %pV", level, vaf);
4969  }
4970  
_dev_printk(const char * level,const struct device * dev,const char * fmt,...)4971  void _dev_printk(const char *level, const struct device *dev,
4972  		 const char *fmt, ...)
4973  {
4974  	struct va_format vaf;
4975  	va_list args;
4976  
4977  	va_start(args, fmt);
4978  
4979  	vaf.fmt = fmt;
4980  	vaf.va = &args;
4981  
4982  	__dev_printk(level, dev, &vaf);
4983  
4984  	va_end(args);
4985  }
4986  EXPORT_SYMBOL(_dev_printk);
4987  
4988  #define define_dev_printk_level(func, kern_level)		\
4989  void func(const struct device *dev, const char *fmt, ...)	\
4990  {								\
4991  	struct va_format vaf;					\
4992  	va_list args;						\
4993  								\
4994  	va_start(args, fmt);					\
4995  								\
4996  	vaf.fmt = fmt;						\
4997  	vaf.va = &args;						\
4998  								\
4999  	__dev_printk(kern_level, dev, &vaf);			\
5000  								\
5001  	va_end(args);						\
5002  }								\
5003  EXPORT_SYMBOL(func);
5004  
5005  define_dev_printk_level(_dev_emerg, KERN_EMERG);
5006  define_dev_printk_level(_dev_alert, KERN_ALERT);
5007  define_dev_printk_level(_dev_crit, KERN_CRIT);
5008  define_dev_printk_level(_dev_err, KERN_ERR);
5009  define_dev_printk_level(_dev_warn, KERN_WARNING);
5010  define_dev_printk_level(_dev_notice, KERN_NOTICE);
5011  define_dev_printk_level(_dev_info, KERN_INFO);
5012  
5013  #endif
5014  
5015  /**
5016   * dev_err_probe - probe error check and log helper
5017   * @dev: the pointer to the struct device
5018   * @err: error value to test
5019   * @fmt: printf-style format string
5020   * @...: arguments as specified in the format string
5021   *
5022   * This helper implements common pattern present in probe functions for error
5023   * checking: print debug or error message depending if the error value is
5024   * -EPROBE_DEFER and propagate error upwards.
5025   * In case of -EPROBE_DEFER it sets also defer probe reason, which can be
5026   * checked later by reading devices_deferred debugfs attribute.
5027   * It replaces code sequence::
5028   *
5029   * 	if (err != -EPROBE_DEFER)
5030   * 		dev_err(dev, ...);
5031   * 	else
5032   * 		dev_dbg(dev, ...);
5033   * 	return err;
5034   *
5035   * with::
5036   *
5037   * 	return dev_err_probe(dev, err, ...);
5038   *
5039   * Using this helper in your probe function is totally fine even if @err is
5040   * known to never be -EPROBE_DEFER.
5041   * The benefit compared to a normal dev_err() is the standardized format
5042   * of the error code, it being emitted symbolically (i.e. you get "EAGAIN"
5043   * instead of "-35") and the fact that the error code is returned which allows
5044   * more compact error paths.
5045   *
5046   * Returns @err.
5047   */
dev_err_probe(const struct device * dev,int err,const char * fmt,...)5048  int dev_err_probe(const struct device *dev, int err, const char *fmt, ...)
5049  {
5050  	struct va_format vaf;
5051  	va_list args;
5052  
5053  	va_start(args, fmt);
5054  	vaf.fmt = fmt;
5055  	vaf.va = &args;
5056  
5057  	switch (err) {
5058  	case -EPROBE_DEFER:
5059  		device_set_deferred_probe_reason(dev, &vaf);
5060  		dev_dbg(dev, "error %pe: %pV", ERR_PTR(err), &vaf);
5061  		break;
5062  
5063  	case -ENOMEM:
5064  		/*
5065  		 * We don't print anything on -ENOMEM, there is already enough
5066  		 * output.
5067  		 */
5068  		break;
5069  
5070  	default:
5071  		dev_err(dev, "error %pe: %pV", ERR_PTR(err), &vaf);
5072  		break;
5073  	}
5074  
5075  	va_end(args);
5076  
5077  	return err;
5078  }
5079  EXPORT_SYMBOL_GPL(dev_err_probe);
5080  
fwnode_is_primary(struct fwnode_handle * fwnode)5081  static inline bool fwnode_is_primary(struct fwnode_handle *fwnode)
5082  {
5083  	return fwnode && !IS_ERR(fwnode->secondary);
5084  }
5085  
5086  /**
5087   * set_primary_fwnode - Change the primary firmware node of a given device.
5088   * @dev: Device to handle.
5089   * @fwnode: New primary firmware node of the device.
5090   *
5091   * Set the device's firmware node pointer to @fwnode, but if a secondary
5092   * firmware node of the device is present, preserve it.
5093   *
5094   * Valid fwnode cases are:
5095   *  - primary --> secondary --> -ENODEV
5096   *  - primary --> NULL
5097   *  - secondary --> -ENODEV
5098   *  - NULL
5099   */
set_primary_fwnode(struct device * dev,struct fwnode_handle * fwnode)5100  void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
5101  {
5102  	struct device *parent = dev->parent;
5103  	struct fwnode_handle *fn = dev->fwnode;
5104  
5105  	if (fwnode) {
5106  		if (fwnode_is_primary(fn))
5107  			fn = fn->secondary;
5108  
5109  		if (fn) {
5110  			WARN_ON(fwnode->secondary);
5111  			fwnode->secondary = fn;
5112  		}
5113  		dev->fwnode = fwnode;
5114  	} else {
5115  		if (fwnode_is_primary(fn)) {
5116  			dev->fwnode = fn->secondary;
5117  
5118  			/* Skip nullifying fn->secondary if the primary is shared */
5119  			if (parent && fn == parent->fwnode)
5120  				return;
5121  
5122  			/* Set fn->secondary = NULL, so fn remains the primary fwnode */
5123  			fn->secondary = NULL;
5124  		} else {
5125  			dev->fwnode = NULL;
5126  		}
5127  	}
5128  }
5129  EXPORT_SYMBOL_GPL(set_primary_fwnode);
5130  
5131  /**
5132   * set_secondary_fwnode - Change the secondary firmware node of a given device.
5133   * @dev: Device to handle.
5134   * @fwnode: New secondary firmware node of the device.
5135   *
5136   * If a primary firmware node of the device is present, set its secondary
5137   * pointer to @fwnode.  Otherwise, set the device's firmware node pointer to
5138   * @fwnode.
5139   */
set_secondary_fwnode(struct device * dev,struct fwnode_handle * fwnode)5140  void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
5141  {
5142  	if (fwnode)
5143  		fwnode->secondary = ERR_PTR(-ENODEV);
5144  
5145  	if (fwnode_is_primary(dev->fwnode))
5146  		dev->fwnode->secondary = fwnode;
5147  	else
5148  		dev->fwnode = fwnode;
5149  }
5150  EXPORT_SYMBOL_GPL(set_secondary_fwnode);
5151  
5152  /**
5153   * device_set_of_node_from_dev - reuse device-tree node of another device
5154   * @dev: device whose device-tree node is being set
5155   * @dev2: device whose device-tree node is being reused
5156   *
5157   * Takes another reference to the new device-tree node after first dropping
5158   * any reference held to the old node.
5159   */
device_set_of_node_from_dev(struct device * dev,const struct device * dev2)5160  void device_set_of_node_from_dev(struct device *dev, const struct device *dev2)
5161  {
5162  	of_node_put(dev->of_node);
5163  	dev->of_node = of_node_get(dev2->of_node);
5164  	dev->of_node_reused = true;
5165  }
5166  EXPORT_SYMBOL_GPL(device_set_of_node_from_dev);
5167  
device_set_node(struct device * dev,struct fwnode_handle * fwnode)5168  void device_set_node(struct device *dev, struct fwnode_handle *fwnode)
5169  {
5170  	dev->fwnode = fwnode;
5171  	dev->of_node = to_of_node(fwnode);
5172  }
5173  EXPORT_SYMBOL_GPL(device_set_node);
5174  
device_match_name(struct device * dev,const void * name)5175  int device_match_name(struct device *dev, const void *name)
5176  {
5177  	return sysfs_streq(dev_name(dev), name);
5178  }
5179  EXPORT_SYMBOL_GPL(device_match_name);
5180  
device_match_of_node(struct device * dev,const void * np)5181  int device_match_of_node(struct device *dev, const void *np)
5182  {
5183  	return dev->of_node == np;
5184  }
5185  EXPORT_SYMBOL_GPL(device_match_of_node);
5186  
device_match_fwnode(struct device * dev,const void * fwnode)5187  int device_match_fwnode(struct device *dev, const void *fwnode)
5188  {
5189  	return dev_fwnode(dev) == fwnode;
5190  }
5191  EXPORT_SYMBOL_GPL(device_match_fwnode);
5192  
device_match_devt(struct device * dev,const void * pdevt)5193  int device_match_devt(struct device *dev, const void *pdevt)
5194  {
5195  	return dev->devt == *(dev_t *)pdevt;
5196  }
5197  EXPORT_SYMBOL_GPL(device_match_devt);
5198  
device_match_acpi_dev(struct device * dev,const void * adev)5199  int device_match_acpi_dev(struct device *dev, const void *adev)
5200  {
5201  	return ACPI_COMPANION(dev) == adev;
5202  }
5203  EXPORT_SYMBOL(device_match_acpi_dev);
5204  
device_match_acpi_handle(struct device * dev,const void * handle)5205  int device_match_acpi_handle(struct device *dev, const void *handle)
5206  {
5207  	return ACPI_HANDLE(dev) == handle;
5208  }
5209  EXPORT_SYMBOL(device_match_acpi_handle);
5210  
device_match_any(struct device * dev,const void * unused)5211  int device_match_any(struct device *dev, const void *unused)
5212  {
5213  	return 1;
5214  }
5215  EXPORT_SYMBOL_GPL(device_match_any);
5216