LCOV - code coverage report
Current view: top level - drivers/base - dd.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 62 410 15.1 %
Date: 2022-12-09 01:23:36 Functions: 10 45 22.2 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0
       2             : /*
       3             :  * drivers/base/dd.c - The core device/driver interactions.
       4             :  *
       5             :  * This file contains the (sometimes tricky) code that controls the
       6             :  * interactions between devices and drivers, which primarily includes
       7             :  * driver binding and unbinding.
       8             :  *
       9             :  * All of this code used to exist in drivers/base/bus.c, but was
      10             :  * relocated to here in the name of compartmentalization (since it wasn't
      11             :  * strictly code just for the 'struct bus_type'.
      12             :  *
      13             :  * Copyright (c) 2002-5 Patrick Mochel
      14             :  * Copyright (c) 2002-3 Open Source Development Labs
      15             :  * Copyright (c) 2007-2009 Greg Kroah-Hartman <gregkh@suse.de>
      16             :  * Copyright (c) 2007-2009 Novell Inc.
      17             :  */
      18             : 
      19             : #include <linux/debugfs.h>
      20             : #include <linux/device.h>
      21             : #include <linux/delay.h>
      22             : #include <linux/dma-map-ops.h>
      23             : #include <linux/init.h>
      24             : #include <linux/module.h>
      25             : #include <linux/kthread.h>
      26             : #include <linux/wait.h>
      27             : #include <linux/async.h>
      28             : #include <linux/pm_runtime.h>
      29             : #include <linux/pinctrl/devinfo.h>
      30             : #include <linux/slab.h>
      31             : 
      32             : #include "base.h"
      33             : #include "power/power.h"
      34             : 
      35             : /*
      36             :  * Deferred Probe infrastructure.
      37             :  *
      38             :  * Sometimes driver probe order matters, but the kernel doesn't always have
      39             :  * dependency information which means some drivers will get probed before a
      40             :  * resource it depends on is available.  For example, an SDHCI driver may
      41             :  * first need a GPIO line from an i2c GPIO controller before it can be
      42             :  * initialized.  If a required resource is not available yet, a driver can
      43             :  * request probing to be deferred by returning -EPROBE_DEFER from its probe hook
      44             :  *
      45             :  * Deferred probe maintains two lists of devices, a pending list and an active
      46             :  * list.  A driver returning -EPROBE_DEFER causes the device to be added to the
      47             :  * pending list.  A successful driver probe will trigger moving all devices
      48             :  * from the pending to the active list so that the workqueue will eventually
      49             :  * retry them.
      50             :  *
      51             :  * The deferred_probe_mutex must be held any time the deferred_probe_*_list
      52             :  * of the (struct device*)->p->deferred_probe pointers are manipulated
      53             :  */
      54             : static DEFINE_MUTEX(deferred_probe_mutex);
      55             : static LIST_HEAD(deferred_probe_pending_list);
      56             : static LIST_HEAD(deferred_probe_active_list);
      57             : static atomic_t deferred_trigger_count = ATOMIC_INIT(0);
      58             : static bool initcalls_done;
      59             : 
      60             : /* Save the async probe drivers' name from kernel cmdline */
      61             : #define ASYNC_DRV_NAMES_MAX_LEN 256
      62             : static char async_probe_drv_names[ASYNC_DRV_NAMES_MAX_LEN];
      63             : 
      64             : /*
      65             :  * In some cases, like suspend to RAM or hibernation, It might be reasonable
      66             :  * to prohibit probing of devices as it could be unsafe.
      67             :  * Once defer_all_probes is true all drivers probes will be forcibly deferred.
      68             :  */
      69             : static bool defer_all_probes;
      70             : 
      71             : static void __device_set_deferred_probe_reason(const struct device *dev, char *reason)
      72             : {
      73           0 :         kfree(dev->p->deferred_probe_reason);
      74           0 :         dev->p->deferred_probe_reason = reason;
      75             : }
      76             : 
      77             : /*
      78             :  * deferred_probe_work_func() - Retry probing devices in the active list.
      79             :  */
      80           2 : static void deferred_probe_work_func(struct work_struct *work)
      81             : {
      82             :         struct device *dev;
      83             :         struct device_private *private;
      84             :         /*
      85             :          * This block processes every device in the deferred 'active' list.
      86             :          * Each device is removed from the active list and passed to
      87             :          * bus_probe_device() to re-attempt the probe.  The loop continues
      88             :          * until every device in the active list is removed and retried.
      89             :          *
      90             :          * Note: Once the device is removed from the list and the mutex is
      91             :          * released, it is possible for the device get freed by another thread
      92             :          * and cause a illegal pointer dereference.  This code uses
      93             :          * get/put_device() to ensure the device structure cannot disappear
      94             :          * from under our feet.
      95             :          */
      96           2 :         mutex_lock(&deferred_probe_mutex);
      97           4 :         while (!list_empty(&deferred_probe_active_list)) {
      98           0 :                 private = list_first_entry(&deferred_probe_active_list,
      99             :                                         typeof(*dev->p), deferred_probe);
     100           0 :                 dev = private->device;
     101           0 :                 list_del_init(&private->deferred_probe);
     102             : 
     103           0 :                 get_device(dev);
     104             : 
     105           0 :                 __device_set_deferred_probe_reason(dev, NULL);
     106             : 
     107             :                 /*
     108             :                  * Drop the mutex while probing each device; the probe path may
     109             :                  * manipulate the deferred list
     110             :                  */
     111           0 :                 mutex_unlock(&deferred_probe_mutex);
     112             : 
     113             :                 /*
     114             :                  * Force the device to the end of the dpm_list since
     115             :                  * the PM code assumes that the order we add things to
     116             :                  * the list is a good order for suspend but deferred
     117             :                  * probe makes that very unsafe.
     118             :                  */
     119           0 :                 device_pm_move_to_tail(dev);
     120             : 
     121             :                 dev_dbg(dev, "Retrying from deferred list\n");
     122           0 :                 bus_probe_device(dev);
     123           0 :                 mutex_lock(&deferred_probe_mutex);
     124             : 
     125           0 :                 put_device(dev);
     126             :         }
     127           2 :         mutex_unlock(&deferred_probe_mutex);
     128           2 : }
     129             : static DECLARE_WORK(deferred_probe_work, deferred_probe_work_func);
     130             : 
     131           0 : void driver_deferred_probe_add(struct device *dev)
     132             : {
     133           0 :         if (!dev->can_match)
     134             :                 return;
     135             : 
     136           0 :         mutex_lock(&deferred_probe_mutex);
     137           0 :         if (list_empty(&dev->p->deferred_probe)) {
     138             :                 dev_dbg(dev, "Added to deferred list\n");
     139           0 :                 list_add_tail(&dev->p->deferred_probe, &deferred_probe_pending_list);
     140             :         }
     141           0 :         mutex_unlock(&deferred_probe_mutex);
     142             : }
     143             : 
     144           0 : void driver_deferred_probe_del(struct device *dev)
     145             : {
     146           0 :         mutex_lock(&deferred_probe_mutex);
     147           0 :         if (!list_empty(&dev->p->deferred_probe)) {
     148             :                 dev_dbg(dev, "Removed from deferred list\n");
     149           0 :                 list_del_init(&dev->p->deferred_probe);
     150           0 :                 __device_set_deferred_probe_reason(dev, NULL);
     151             :         }
     152           0 :         mutex_unlock(&deferred_probe_mutex);
     153           0 : }
     154             : 
     155             : static bool driver_deferred_probe_enable;
     156             : /**
     157             :  * driver_deferred_probe_trigger() - Kick off re-probing deferred devices
     158             :  *
     159             :  * This functions moves all devices from the pending list to the active
     160             :  * list and schedules the deferred probe workqueue to process them.  It
     161             :  * should be called anytime a driver is successfully bound to a device.
     162             :  *
     163             :  * Note, there is a race condition in multi-threaded probe. In the case where
     164             :  * more than one device is probing at the same time, it is possible for one
     165             :  * probe to complete successfully while another is about to defer. If the second
     166             :  * depends on the first, then it will get put on the pending list after the
     167             :  * trigger event has already occurred and will be stuck there.
     168             :  *
     169             :  * The atomic 'deferred_trigger_count' is used to determine if a successful
     170             :  * trigger has occurred in the midst of probing a driver. If the trigger count
     171             :  * changes in the midst of a probe, then deferred processing should be triggered
     172             :  * again.
     173             :  */
     174           2 : static void driver_deferred_probe_trigger(void)
     175             : {
     176           2 :         if (!driver_deferred_probe_enable)
     177             :                 return;
     178             : 
     179             :         /*
     180             :          * A successful probe means that all the devices in the pending list
     181             :          * should be triggered to be reprobed.  Move all the deferred devices
     182             :          * into the active list so they can be retried by the workqueue
     183             :          */
     184           2 :         mutex_lock(&deferred_probe_mutex);
     185           2 :         atomic_inc(&deferred_trigger_count);
     186           2 :         list_splice_tail_init(&deferred_probe_pending_list,
     187             :                               &deferred_probe_active_list);
     188           2 :         mutex_unlock(&deferred_probe_mutex);
     189             : 
     190             :         /*
     191             :          * Kick the re-probe thread.  It may already be scheduled, but it is
     192             :          * safe to kick it again.
     193             :          */
     194           2 :         queue_work(system_unbound_wq, &deferred_probe_work);
     195             : }
     196             : 
     197             : /**
     198             :  * device_block_probing() - Block/defer device's probes
     199             :  *
     200             :  *      It will disable probing of devices and defer their probes instead.
     201             :  */
     202           1 : void device_block_probing(void)
     203             : {
     204           1 :         defer_all_probes = true;
     205             :         /* sync with probes to avoid races. */
     206           1 :         wait_for_device_probe();
     207           1 : }
     208             : 
     209             : /**
     210             :  * device_unblock_probing() - Unblock/enable device's probes
     211             :  *
     212             :  *      It will restore normal behavior and trigger re-probing of deferred
     213             :  * devices.
     214             :  */
     215           0 : void device_unblock_probing(void)
     216             : {
     217           0 :         defer_all_probes = false;
     218           0 :         driver_deferred_probe_trigger();
     219           0 : }
     220             : 
     221             : /**
     222             :  * device_set_deferred_probe_reason() - Set defer probe reason message for device
     223             :  * @dev: the pointer to the struct device
     224             :  * @vaf: the pointer to va_format structure with message
     225             :  */
     226           0 : void device_set_deferred_probe_reason(const struct device *dev, struct va_format *vaf)
     227             : {
     228           0 :         const char *drv = dev_driver_string(dev);
     229             :         char *reason;
     230             : 
     231           0 :         mutex_lock(&deferred_probe_mutex);
     232             : 
     233           0 :         reason = kasprintf(GFP_KERNEL, "%s: %pV", drv, vaf);
     234           0 :         __device_set_deferred_probe_reason(dev, reason);
     235             : 
     236           0 :         mutex_unlock(&deferred_probe_mutex);
     237           0 : }
     238             : 
     239             : /*
     240             :  * deferred_devs_show() - Show the devices in the deferred probe pending list.
     241             :  */
     242             : static int deferred_devs_show(struct seq_file *s, void *data)
     243             : {
     244             :         struct device_private *curr;
     245             : 
     246             :         mutex_lock(&deferred_probe_mutex);
     247             : 
     248             :         list_for_each_entry(curr, &deferred_probe_pending_list, deferred_probe)
     249             :                 seq_printf(s, "%s\t%s", dev_name(curr->device),
     250             :                            curr->device->p->deferred_probe_reason ?: "\n");
     251             : 
     252             :         mutex_unlock(&deferred_probe_mutex);
     253             : 
     254             :         return 0;
     255             : }
     256             : DEFINE_SHOW_ATTRIBUTE(deferred_devs);
     257             : 
     258             : int driver_deferred_probe_timeout;
     259             : EXPORT_SYMBOL_GPL(driver_deferred_probe_timeout);
     260             : static DECLARE_WAIT_QUEUE_HEAD(probe_timeout_waitqueue);
     261             : 
     262           0 : static int __init deferred_probe_timeout_setup(char *str)
     263             : {
     264             :         int timeout;
     265             : 
     266           0 :         if (!kstrtoint(str, 10, &timeout))
     267           0 :                 driver_deferred_probe_timeout = timeout;
     268           0 :         return 1;
     269             : }
     270             : __setup("deferred_probe_timeout=", deferred_probe_timeout_setup);
     271             : 
     272             : /**
     273             :  * driver_deferred_probe_check_state() - Check deferred probe state
     274             :  * @dev: device to check
     275             :  *
     276             :  * Return:
     277             :  * -ENODEV if initcalls have completed and modules are disabled.
     278             :  * -ETIMEDOUT if the deferred probe timeout was set and has expired
     279             :  *  and modules are enabled.
     280             :  * -EPROBE_DEFER in other cases.
     281             :  *
     282             :  * Drivers or subsystems can opt-in to calling this function instead of directly
     283             :  * returning -EPROBE_DEFER.
     284             :  */
     285           0 : int driver_deferred_probe_check_state(struct device *dev)
     286             : {
     287           0 :         if (!IS_ENABLED(CONFIG_MODULES) && initcalls_done) {
     288           0 :                 dev_warn(dev, "ignoring dependency for device, assuming no driver\n");
     289           0 :                 return -ENODEV;
     290             :         }
     291             : 
     292             :         if (!driver_deferred_probe_timeout && initcalls_done) {
     293             :                 dev_warn(dev, "deferred probe timeout, ignoring dependency\n");
     294             :                 return -ETIMEDOUT;
     295             :         }
     296             : 
     297             :         return -EPROBE_DEFER;
     298             : }
     299             : EXPORT_SYMBOL_GPL(driver_deferred_probe_check_state);
     300             : 
     301           0 : static void deferred_probe_timeout_work_func(struct work_struct *work)
     302             : {
     303             :         struct device_private *p;
     304             : 
     305           0 :         fw_devlink_drivers_done();
     306             : 
     307           0 :         driver_deferred_probe_timeout = 0;
     308           0 :         driver_deferred_probe_trigger();
     309           0 :         flush_work(&deferred_probe_work);
     310             : 
     311           0 :         mutex_lock(&deferred_probe_mutex);
     312           0 :         list_for_each_entry(p, &deferred_probe_pending_list, deferred_probe)
     313           0 :                 dev_info(p->device, "deferred probe pending\n");
     314           0 :         mutex_unlock(&deferred_probe_mutex);
     315           0 :         wake_up_all(&probe_timeout_waitqueue);
     316           0 : }
     317             : static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func);
     318             : 
     319             : /**
     320             :  * deferred_probe_initcall() - Enable probing of deferred devices
     321             :  *
     322             :  * We don't want to get in the way when the bulk of drivers are getting probed.
     323             :  * Instead, this initcall makes sure that deferred probing is delayed until
     324             :  * late_initcall time.
     325             :  */
     326           1 : static int deferred_probe_initcall(void)
     327             : {
     328           1 :         debugfs_create_file("devices_deferred", 0444, NULL, NULL,
     329             :                             &deferred_devs_fops);
     330             : 
     331           1 :         driver_deferred_probe_enable = true;
     332           1 :         driver_deferred_probe_trigger();
     333             :         /* Sort as many dependencies as possible before exiting initcalls */
     334           1 :         flush_work(&deferred_probe_work);
     335           1 :         initcalls_done = true;
     336             : 
     337             :         if (!IS_ENABLED(CONFIG_MODULES))
     338           1 :                 fw_devlink_drivers_done();
     339             : 
     340             :         /*
     341             :          * Trigger deferred probe again, this time we won't defer anything
     342             :          * that is optional
     343             :          */
     344           1 :         driver_deferred_probe_trigger();
     345           1 :         flush_work(&deferred_probe_work);
     346             : 
     347           1 :         if (driver_deferred_probe_timeout > 0) {
     348           0 :                 schedule_delayed_work(&deferred_probe_timeout_work,
     349           0 :                         driver_deferred_probe_timeout * HZ);
     350             :         }
     351           1 :         return 0;
     352             : }
     353             : late_initcall(deferred_probe_initcall);
     354             : 
     355           0 : static void __exit deferred_probe_exit(void)
     356             : {
     357           0 :         debugfs_remove_recursive(debugfs_lookup("devices_deferred", NULL));
     358           0 : }
     359             : __exitcall(deferred_probe_exit);
     360             : 
     361             : /**
     362             :  * device_is_bound() - Check if device is bound to a driver
     363             :  * @dev: device to check
     364             :  *
     365             :  * Returns true if passed device has already finished probing successfully
     366             :  * against a driver.
     367             :  *
     368             :  * This function must be called with the device lock held.
     369             :  */
     370           0 : bool device_is_bound(struct device *dev)
     371             : {
     372           0 :         return dev->p && klist_node_attached(&dev->p->knode_driver);
     373             : }
     374             : 
     375           0 : static void driver_bound(struct device *dev)
     376             : {
     377           0 :         if (device_is_bound(dev)) {
     378           0 :                 pr_warn("%s: device %s already bound\n",
     379             :                         __func__, kobject_name(&dev->kobj));
     380           0 :                 return;
     381             :         }
     382             : 
     383             :         pr_debug("driver: '%s': %s: bound to device '%s'\n", dev->driver->name,
     384             :                  __func__, dev_name(dev));
     385             : 
     386           0 :         klist_add_tail(&dev->p->knode_driver, &dev->driver->p->klist_devices);
     387           0 :         device_links_driver_bound(dev);
     388             : 
     389           0 :         device_pm_check_callbacks(dev);
     390             : 
     391             :         /*
     392             :          * Make sure the device is no longer in one of the deferred lists and
     393             :          * kick off retrying all pending devices
     394             :          */
     395           0 :         driver_deferred_probe_del(dev);
     396           0 :         driver_deferred_probe_trigger();
     397             : 
     398           0 :         if (dev->bus)
     399           0 :                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
     400             :                                              BUS_NOTIFY_BOUND_DRIVER, dev);
     401             : 
     402           0 :         kobject_uevent(&dev->kobj, KOBJ_BIND);
     403             : }
     404             : 
     405           0 : static ssize_t coredump_store(struct device *dev, struct device_attribute *attr,
     406             :                             const char *buf, size_t count)
     407             : {
     408           0 :         device_lock(dev);
     409           0 :         dev->driver->coredump(dev);
     410           0 :         device_unlock(dev);
     411             : 
     412           0 :         return count;
     413             : }
     414             : static DEVICE_ATTR_WO(coredump);
     415             : 
     416           0 : static int driver_sysfs_add(struct device *dev)
     417             : {
     418             :         int ret;
     419             : 
     420           0 :         if (dev->bus)
     421           0 :                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
     422             :                                              BUS_NOTIFY_BIND_DRIVER, dev);
     423             : 
     424           0 :         ret = sysfs_create_link(&dev->driver->p->kobj, &dev->kobj,
     425           0 :                                 kobject_name(&dev->kobj));
     426           0 :         if (ret)
     427             :                 goto fail;
     428             : 
     429           0 :         ret = sysfs_create_link(&dev->kobj, &dev->driver->p->kobj,
     430             :                                 "driver");
     431           0 :         if (ret)
     432             :                 goto rm_dev;
     433             : 
     434             :         if (!IS_ENABLED(CONFIG_DEV_COREDUMP) || !dev->driver->coredump)
     435             :                 return 0;
     436             : 
     437             :         ret = device_create_file(dev, &dev_attr_coredump);
     438             :         if (!ret)
     439             :                 return 0;
     440             : 
     441             :         sysfs_remove_link(&dev->kobj, "driver");
     442             : 
     443             : rm_dev:
     444           0 :         sysfs_remove_link(&dev->driver->p->kobj,
     445           0 :                           kobject_name(&dev->kobj));
     446             : 
     447             : fail:
     448             :         return ret;
     449             : }
     450             : 
     451           0 : static void driver_sysfs_remove(struct device *dev)
     452             : {
     453           0 :         struct device_driver *drv = dev->driver;
     454             : 
     455           0 :         if (drv) {
     456           0 :                 if (drv->coredump)
     457           0 :                         device_remove_file(dev, &dev_attr_coredump);
     458           0 :                 sysfs_remove_link(&drv->p->kobj, kobject_name(&dev->kobj));
     459           0 :                 sysfs_remove_link(&dev->kobj, "driver");
     460             :         }
     461           0 : }
     462             : 
     463             : /**
     464             :  * device_bind_driver - bind a driver to one device.
     465             :  * @dev: device.
     466             :  *
     467             :  * Allow manual attachment of a driver to a device.
     468             :  * Caller must have already set @dev->driver.
     469             :  *
     470             :  * Note that this does not modify the bus reference count.
     471             :  * Please verify that is accounted for before calling this.
     472             :  * (It is ok to call with no other effort from a driver's probe() method.)
     473             :  *
     474             :  * This function must be called with the device lock held.
     475             :  *
     476             :  * Callers should prefer to use device_driver_attach() instead.
     477             :  */
     478           0 : int device_bind_driver(struct device *dev)
     479             : {
     480             :         int ret;
     481             : 
     482           0 :         ret = driver_sysfs_add(dev);
     483           0 :         if (!ret) {
     484           0 :                 device_links_force_bind(dev);
     485           0 :                 driver_bound(dev);
     486             :         }
     487           0 :         else if (dev->bus)
     488           0 :                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
     489             :                                              BUS_NOTIFY_DRIVER_NOT_BOUND, dev);
     490           0 :         return ret;
     491             : }
     492             : EXPORT_SYMBOL_GPL(device_bind_driver);
     493             : 
     494             : static atomic_t probe_count = ATOMIC_INIT(0);
     495             : static DECLARE_WAIT_QUEUE_HEAD(probe_waitqueue);
     496             : 
     497           0 : static ssize_t state_synced_show(struct device *dev,
     498             :                                  struct device_attribute *attr, char *buf)
     499             : {
     500             :         bool val;
     501             : 
     502           0 :         device_lock(dev);
     503           0 :         val = dev->state_synced;
     504           0 :         device_unlock(dev);
     505             : 
     506           0 :         return sysfs_emit(buf, "%u\n", val);
     507             : }
     508             : static DEVICE_ATTR_RO(state_synced);
     509             : 
     510           0 : static void device_unbind_cleanup(struct device *dev)
     511             : {
     512           0 :         devres_release_all(dev);
     513           0 :         arch_teardown_dma_ops(dev);
     514           0 :         kfree(dev->dma_range_map);
     515           0 :         dev->dma_range_map = NULL;
     516           0 :         dev->driver = NULL;
     517           0 :         dev_set_drvdata(dev, NULL);
     518           0 :         if (dev->pm_domain && dev->pm_domain->dismiss)
     519           0 :                 dev->pm_domain->dismiss(dev);
     520           0 :         pm_runtime_reinit(dev);
     521           0 :         dev_pm_set_driver_flags(dev, 0);
     522           0 : }
     523             : 
     524           0 : static void device_remove(struct device *dev)
     525             : {
     526           0 :         device_remove_file(dev, &dev_attr_state_synced);
     527           0 :         device_remove_groups(dev, dev->driver->dev_groups);
     528             : 
     529           0 :         if (dev->bus && dev->bus->remove)
     530           0 :                 dev->bus->remove(dev);
     531           0 :         else if (dev->driver->remove)
     532           0 :                 dev->driver->remove(dev);
     533           0 : }
     534             : 
     535           0 : static int call_driver_probe(struct device *dev, struct device_driver *drv)
     536             : {
     537           0 :         int ret = 0;
     538             : 
     539           0 :         if (dev->bus->probe)
     540           0 :                 ret = dev->bus->probe(dev);
     541           0 :         else if (drv->probe)
     542           0 :                 ret = drv->probe(dev);
     543             : 
     544           0 :         switch (ret) {
     545             :         case 0:
     546             :                 break;
     547             :         case -EPROBE_DEFER:
     548             :                 /* Driver requested deferred probing */
     549             :                 dev_dbg(dev, "Driver %s requests probe deferral\n", drv->name);
     550             :                 break;
     551             :         case -ENODEV:
     552             :         case -ENXIO:
     553             :                 pr_debug("%s: probe of %s rejects match %d\n",
     554             :                          drv->name, dev_name(dev), ret);
     555             :                 break;
     556             :         default:
     557             :                 /* driver matched but the probe failed */
     558           0 :                 pr_warn("%s: probe of %s failed with error %d\n",
     559             :                         drv->name, dev_name(dev), ret);
     560             :                 break;
     561             :         }
     562             : 
     563           0 :         return ret;
     564             : }
     565             : 
     566           0 : static int really_probe(struct device *dev, struct device_driver *drv)
     567             : {
     568           0 :         bool test_remove = IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE) &&
     569             :                            !drv->suppress_bind_attrs;
     570             :         int ret;
     571             : 
     572           0 :         if (defer_all_probes) {
     573             :                 /*
     574             :                  * Value of defer_all_probes can be set only by
     575             :                  * device_block_probing() which, in turn, will call
     576             :                  * wait_for_device_probe() right after that to avoid any races.
     577             :                  */
     578             :                 dev_dbg(dev, "Driver %s force probe deferral\n", drv->name);
     579             :                 return -EPROBE_DEFER;
     580             :         }
     581             : 
     582           0 :         ret = device_links_check_suppliers(dev);
     583           0 :         if (ret)
     584             :                 return ret;
     585             : 
     586             :         pr_debug("bus: '%s': %s: probing driver %s with device %s\n",
     587             :                  drv->bus->name, __func__, drv->name, dev_name(dev));
     588           0 :         if (!list_empty(&dev->devres_head)) {
     589           0 :                 dev_crit(dev, "Resources present before probing\n");
     590           0 :                 ret = -EBUSY;
     591           0 :                 goto done;
     592             :         }
     593             : 
     594             : re_probe:
     595           0 :         dev->driver = drv;
     596             : 
     597             :         /* If using pinctrl, bind pins now before probing */
     598           0 :         ret = pinctrl_bind_pins(dev);
     599             :         if (ret)
     600             :                 goto pinctrl_bind_failed;
     601             : 
     602           0 :         if (dev->bus->dma_configure) {
     603           0 :                 ret = dev->bus->dma_configure(dev);
     604           0 :                 if (ret)
     605             :                         goto pinctrl_bind_failed;
     606             :         }
     607             : 
     608           0 :         ret = driver_sysfs_add(dev);
     609           0 :         if (ret) {
     610           0 :                 pr_err("%s: driver_sysfs_add(%s) failed\n",
     611             :                        __func__, dev_name(dev));
     612           0 :                 goto sysfs_failed;
     613             :         }
     614             : 
     615           0 :         if (dev->pm_domain && dev->pm_domain->activate) {
     616           0 :                 ret = dev->pm_domain->activate(dev);
     617           0 :                 if (ret)
     618             :                         goto probe_failed;
     619             :         }
     620             : 
     621           0 :         ret = call_driver_probe(dev, drv);
     622           0 :         if (ret) {
     623             :                 /*
     624             :                  * Return probe errors as positive values so that the callers
     625             :                  * can distinguish them from other errors.
     626             :                  */
     627           0 :                 ret = -ret;
     628           0 :                 goto probe_failed;
     629             :         }
     630             : 
     631           0 :         ret = device_add_groups(dev, drv->dev_groups);
     632           0 :         if (ret) {
     633           0 :                 dev_err(dev, "device_add_groups() failed\n");
     634           0 :                 goto dev_groups_failed;
     635             :         }
     636             : 
     637           0 :         if (dev_has_sync_state(dev)) {
     638           0 :                 ret = device_create_file(dev, &dev_attr_state_synced);
     639           0 :                 if (ret) {
     640           0 :                         dev_err(dev, "state_synced sysfs add failed\n");
     641           0 :                         goto dev_sysfs_state_synced_failed;
     642             :                 }
     643             :         }
     644             : 
     645             :         if (test_remove) {
     646             :                 test_remove = false;
     647             : 
     648             :                 device_remove(dev);
     649             :                 driver_sysfs_remove(dev);
     650             :                 device_unbind_cleanup(dev);
     651             : 
     652             :                 goto re_probe;
     653             :         }
     654             : 
     655           0 :         pinctrl_init_done(dev);
     656             : 
     657           0 :         if (dev->pm_domain && dev->pm_domain->sync)
     658           0 :                 dev->pm_domain->sync(dev);
     659             : 
     660           0 :         driver_bound(dev);
     661             :         pr_debug("bus: '%s': %s: bound device %s to driver %s\n",
     662             :                  drv->bus->name, __func__, dev_name(dev), drv->name);
     663           0 :         goto done;
     664             : 
     665             : dev_sysfs_state_synced_failed:
     666             : dev_groups_failed:
     667           0 :         device_remove(dev);
     668             : probe_failed:
     669           0 :         driver_sysfs_remove(dev);
     670             : sysfs_failed:
     671           0 :         if (dev->bus)
     672           0 :                 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
     673             :                                              BUS_NOTIFY_DRIVER_NOT_BOUND, dev);
     674             : pinctrl_bind_failed:
     675           0 :         device_links_no_driver(dev);
     676           0 :         device_unbind_cleanup(dev);
     677             : done:
     678             :         return ret;
     679             : }
     680             : 
     681             : /*
     682             :  * For initcall_debug, show the driver probe time.
     683             :  */
     684             : static int really_probe_debug(struct device *dev, struct device_driver *drv)
     685             : {
     686             :         ktime_t calltime, rettime;
     687             :         int ret;
     688             : 
     689           0 :         calltime = ktime_get();
     690           0 :         ret = really_probe(dev, drv);
     691           0 :         rettime = ktime_get();
     692             :         pr_debug("probe of %s returned %d after %lld usecs\n",
     693             :                  dev_name(dev), ret, ktime_us_delta(rettime, calltime));
     694             :         return ret;
     695             : }
     696             : 
     697             : /**
     698             :  * driver_probe_done
     699             :  * Determine if the probe sequence is finished or not.
     700             :  *
     701             :  * Should somehow figure out how to use a semaphore, not an atomic variable...
     702             :  */
     703           0 : int driver_probe_done(void)
     704             : {
     705           0 :         int local_probe_count = atomic_read(&probe_count);
     706             : 
     707             :         pr_debug("%s: probe_count = %d\n", __func__, local_probe_count);
     708           0 :         if (local_probe_count)
     709             :                 return -EBUSY;
     710           0 :         return 0;
     711             : }
     712             : 
     713             : /**
     714             :  * wait_for_device_probe
     715             :  * Wait for device probing to be completed.
     716             :  */
     717           2 : void wait_for_device_probe(void)
     718             : {
     719             :         /* wait for probe timeout */
     720           2 :         wait_event(probe_timeout_waitqueue, !driver_deferred_probe_timeout);
     721             : 
     722             :         /* wait for the deferred probe workqueue to finish */
     723           2 :         flush_work(&deferred_probe_work);
     724             : 
     725             :         /* wait for the known devices to complete their probing */
     726           2 :         wait_event(probe_waitqueue, atomic_read(&probe_count) == 0);
     727           2 :         async_synchronize_full();
     728           2 : }
     729             : EXPORT_SYMBOL_GPL(wait_for_device_probe);
     730             : 
     731           0 : static int __driver_probe_device(struct device_driver *drv, struct device *dev)
     732             : {
     733           0 :         int ret = 0;
     734             : 
     735           0 :         if (dev->p->dead || !device_is_registered(dev))
     736             :                 return -ENODEV;
     737           0 :         if (dev->driver)
     738             :                 return -EBUSY;
     739             : 
     740           0 :         dev->can_match = true;
     741             :         pr_debug("bus: '%s': %s: matched device %s with driver %s\n",
     742             :                  drv->bus->name, __func__, dev_name(dev), drv->name);
     743             : 
     744           0 :         pm_runtime_get_suppliers(dev);
     745           0 :         if (dev->parent)
     746           0 :                 pm_runtime_get_sync(dev->parent);
     747             : 
     748           0 :         pm_runtime_barrier(dev);
     749           0 :         if (initcall_debug)
     750           0 :                 ret = really_probe_debug(dev, drv);
     751             :         else
     752           0 :                 ret = really_probe(dev, drv);
     753           0 :         pm_request_idle(dev);
     754             : 
     755           0 :         if (dev->parent)
     756           0 :                 pm_runtime_put(dev->parent);
     757             : 
     758           0 :         pm_runtime_put_suppliers(dev);
     759           0 :         return ret;
     760             : }
     761             : 
     762             : /**
     763             :  * driver_probe_device - attempt to bind device & driver together
     764             :  * @drv: driver to bind a device to
     765             :  * @dev: device to try to bind to the driver
     766             :  *
     767             :  * This function returns -ENODEV if the device is not registered, -EBUSY if it
     768             :  * already has a driver, 0 if the device is bound successfully and a positive
     769             :  * (inverted) error code for failures from the ->probe method.
     770             :  *
     771             :  * This function must be called with @dev lock held.  When called for a
     772             :  * USB interface, @dev->parent lock must be held as well.
     773             :  *
     774             :  * If the device has a parent, runtime-resume the parent before driver probing.
     775             :  */
     776           0 : static int driver_probe_device(struct device_driver *drv, struct device *dev)
     777             : {
     778           0 :         int trigger_count = atomic_read(&deferred_trigger_count);
     779             :         int ret;
     780             : 
     781           0 :         atomic_inc(&probe_count);
     782           0 :         ret = __driver_probe_device(drv, dev);
     783           0 :         if (ret == -EPROBE_DEFER || ret == EPROBE_DEFER) {
     784           0 :                 driver_deferred_probe_add(dev);
     785             : 
     786             :                 /*
     787             :                  * Did a trigger occur while probing? Need to re-trigger if yes
     788             :                  */
     789           0 :                 if (trigger_count != atomic_read(&deferred_trigger_count) &&
     790           0 :                     !defer_all_probes)
     791           0 :                         driver_deferred_probe_trigger();
     792             :         }
     793           0 :         atomic_dec(&probe_count);
     794           0 :         wake_up_all(&probe_waitqueue);
     795           0 :         return ret;
     796             : }
     797             : 
     798             : static inline bool cmdline_requested_async_probing(const char *drv_name)
     799             : {
     800           1 :         return parse_option_str(async_probe_drv_names, drv_name);
     801             : }
     802             : 
     803             : /* The option format is "driver_async_probe=drv_name1,drv_name2,..." */
     804           0 : static int __init save_async_options(char *buf)
     805             : {
     806           0 :         if (strlen(buf) >= ASYNC_DRV_NAMES_MAX_LEN)
     807           0 :                 pr_warn("Too long list of driver names for 'driver_async_probe'!\n");
     808             : 
     809           0 :         strlcpy(async_probe_drv_names, buf, ASYNC_DRV_NAMES_MAX_LEN);
     810           0 :         return 1;
     811             : }
     812             : __setup("driver_async_probe=", save_async_options);
     813             : 
     814           1 : bool driver_allows_async_probing(struct device_driver *drv)
     815             : {
     816           1 :         switch (drv->probe_type) {
     817             :         case PROBE_PREFER_ASYNCHRONOUS:
     818             :                 return true;
     819             : 
     820             :         case PROBE_FORCE_SYNCHRONOUS:
     821           0 :                 return false;
     822             : 
     823             :         default:
     824           2 :                 if (cmdline_requested_async_probing(drv->name))
     825             :                         return true;
     826             : 
     827           1 :                 if (module_requested_async_probing(drv->owner))
     828             :                         return true;
     829             : 
     830           1 :                 return false;
     831             :         }
     832             : }
     833             : 
     834             : struct device_attach_data {
     835             :         struct device *dev;
     836             : 
     837             :         /*
     838             :          * Indicates whether we are considering asynchronous probing or
     839             :          * not. Only initial binding after device or driver registration
     840             :          * (including deferral processing) may be done asynchronously, the
     841             :          * rest is always synchronous, as we expect it is being done by
     842             :          * request from userspace.
     843             :          */
     844             :         bool check_async;
     845             : 
     846             :         /*
     847             :          * Indicates if we are binding synchronous or asynchronous drivers.
     848             :          * When asynchronous probing is enabled we'll execute 2 passes
     849             :          * over drivers: first pass doing synchronous probing and second
     850             :          * doing asynchronous probing (if synchronous did not succeed -
     851             :          * most likely because there was no driver requiring synchronous
     852             :          * probing - and we found asynchronous driver during first pass).
     853             :          * The 2 passes are done because we can't shoot asynchronous
     854             :          * probe for given device and driver from bus_for_each_drv() since
     855             :          * driver pointer is not guaranteed to stay valid once
     856             :          * bus_for_each_drv() iterates to the next driver on the bus.
     857             :          */
     858             :         bool want_async;
     859             : 
     860             :         /*
     861             :          * We'll set have_async to 'true' if, while scanning for matching
     862             :          * driver, we'll encounter one that requests asynchronous probing.
     863             :          */
     864             :         bool have_async;
     865             : };
     866             : 
     867           0 : static int __device_attach_driver(struct device_driver *drv, void *_data)
     868             : {
     869           0 :         struct device_attach_data *data = _data;
     870           0 :         struct device *dev = data->dev;
     871             :         bool async_allowed;
     872             :         int ret;
     873             : 
     874           0 :         ret = driver_match_device(drv, dev);
     875           0 :         if (ret == 0) {
     876             :                 /* no match */
     877             :                 return 0;
     878           0 :         } else if (ret == -EPROBE_DEFER) {
     879             :                 dev_dbg(dev, "Device match requests probe deferral\n");
     880           0 :                 dev->can_match = true;
     881           0 :                 driver_deferred_probe_add(dev);
     882           0 :         } else if (ret < 0) {
     883             :                 dev_dbg(dev, "Bus failed to match device: %d\n", ret);
     884             :                 return ret;
     885             :         } /* ret > 0 means positive match */
     886             : 
     887           0 :         async_allowed = driver_allows_async_probing(drv);
     888             : 
     889           0 :         if (async_allowed)
     890           0 :                 data->have_async = true;
     891             : 
     892           0 :         if (data->check_async && async_allowed != data->want_async)
     893             :                 return 0;
     894             : 
     895             :         /*
     896             :          * Ignore errors returned by ->probe so that the next driver can try
     897             :          * its luck.
     898             :          */
     899           0 :         ret = driver_probe_device(drv, dev);
     900           0 :         if (ret < 0)
     901             :                 return ret;
     902           0 :         return ret == 0;
     903             : }
     904             : 
     905           0 : static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)
     906             : {
     907           0 :         struct device *dev = _dev;
     908           0 :         struct device_attach_data data = {
     909             :                 .dev            = dev,
     910             :                 .check_async    = true,
     911             :                 .want_async     = true,
     912             :         };
     913             : 
     914           0 :         device_lock(dev);
     915             : 
     916             :         /*
     917             :          * Check if device has already been removed or claimed. This may
     918             :          * happen with driver loading, device discovery/registration,
     919             :          * and deferred probe processing happens all at once with
     920             :          * multiple threads.
     921             :          */
     922           0 :         if (dev->p->dead || dev->driver)
     923             :                 goto out_unlock;
     924             : 
     925           0 :         if (dev->parent)
     926           0 :                 pm_runtime_get_sync(dev->parent);
     927             : 
     928           0 :         bus_for_each_drv(dev->bus, NULL, &data, __device_attach_driver);
     929             :         dev_dbg(dev, "async probe completed\n");
     930             : 
     931           0 :         pm_request_idle(dev);
     932             : 
     933           0 :         if (dev->parent)
     934           0 :                 pm_runtime_put(dev->parent);
     935             : out_unlock:
     936           0 :         device_unlock(dev);
     937             : 
     938           0 :         put_device(dev);
     939           0 : }
     940             : 
     941           4 : static int __device_attach(struct device *dev, bool allow_async)
     942             : {
     943           4 :         int ret = 0;
     944             : 
     945           4 :         device_lock(dev);
     946           4 :         if (dev->p->dead) {
     947             :                 goto out_unlock;
     948           4 :         } else if (dev->driver) {
     949           0 :                 if (device_is_bound(dev)) {
     950             :                         ret = 1;
     951             :                         goto out_unlock;
     952             :                 }
     953           0 :                 ret = device_bind_driver(dev);
     954           0 :                 if (ret == 0)
     955             :                         ret = 1;
     956             :                 else {
     957           0 :                         dev->driver = NULL;
     958           0 :                         ret = 0;
     959             :                 }
     960             :         } else {
     961           4 :                 struct device_attach_data data = {
     962             :                         .dev = dev,
     963             :                         .check_async = allow_async,
     964             :                         .want_async = false,
     965             :                 };
     966             : 
     967           4 :                 if (dev->parent)
     968           0 :                         pm_runtime_get_sync(dev->parent);
     969             : 
     970           4 :                 ret = bus_for_each_drv(dev->bus, NULL, &data,
     971             :                                         __device_attach_driver);
     972           4 :                 if (!ret && allow_async && data.have_async) {
     973             :                         /*
     974             :                          * If we could not find appropriate driver
     975             :                          * synchronously and we are allowed to do
     976             :                          * async probes and there are drivers that
     977             :                          * want to probe asynchronously, we'll
     978             :                          * try them.
     979             :                          */
     980             :                         dev_dbg(dev, "scheduling asynchronous probe\n");
     981           0 :                         get_device(dev);
     982             :                         async_schedule_dev(__device_attach_async_helper, dev);
     983             :                 } else {
     984             :                         pm_request_idle(dev);
     985             :                 }
     986             : 
     987           4 :                 if (dev->parent)
     988           0 :                         pm_runtime_put(dev->parent);
     989             :         }
     990             : out_unlock:
     991           4 :         device_unlock(dev);
     992           4 :         return ret;
     993             : }
     994             : 
     995             : /**
     996             :  * device_attach - try to attach device to a driver.
     997             :  * @dev: device.
     998             :  *
     999             :  * Walk the list of drivers that the bus has and call
    1000             :  * driver_probe_device() for each pair. If a compatible
    1001             :  * pair is found, break out and return.
    1002             :  *
    1003             :  * Returns 1 if the device was bound to a driver;
    1004             :  * 0 if no matching driver was found;
    1005             :  * -ENODEV if the device is not registered.
    1006             :  *
    1007             :  * When called for a USB interface, @dev->parent lock must be held.
    1008             :  */
    1009           0 : int device_attach(struct device *dev)
    1010             : {
    1011           0 :         return __device_attach(dev, false);
    1012             : }
    1013             : EXPORT_SYMBOL_GPL(device_attach);
    1014             : 
    1015           4 : void device_initial_probe(struct device *dev)
    1016             : {
    1017           4 :         __device_attach(dev, true);
    1018           4 : }
    1019             : 
    1020             : /*
    1021             :  * __device_driver_lock - acquire locks needed to manipulate dev->drv
    1022             :  * @dev: Device we will update driver info for
    1023             :  * @parent: Parent device. Needed if the bus requires parent lock
    1024             :  *
    1025             :  * This function will take the required locks for manipulating dev->drv.
    1026             :  * Normally this will just be the @dev lock, but when called for a USB
    1027             :  * interface, @parent lock will be held as well.
    1028             :  */
    1029           0 : static void __device_driver_lock(struct device *dev, struct device *parent)
    1030             : {
    1031           0 :         if (parent && dev->bus->need_parent_lock)
    1032             :                 device_lock(parent);
    1033           0 :         device_lock(dev);
    1034           0 : }
    1035             : 
    1036             : /*
    1037             :  * __device_driver_unlock - release locks needed to manipulate dev->drv
    1038             :  * @dev: Device we will update driver info for
    1039             :  * @parent: Parent device. Needed if the bus requires parent lock
    1040             :  *
    1041             :  * This function will release the required locks for manipulating dev->drv.
    1042             :  * Normally this will just be the @dev lock, but when called for a
    1043             :  * USB interface, @parent lock will be released as well.
    1044             :  */
    1045           0 : static void __device_driver_unlock(struct device *dev, struct device *parent)
    1046             : {
    1047           0 :         device_unlock(dev);
    1048           0 :         if (parent && dev->bus->need_parent_lock)
    1049             :                 device_unlock(parent);
    1050           0 : }
    1051             : 
    1052             : /**
    1053             :  * device_driver_attach - attach a specific driver to a specific device
    1054             :  * @drv: Driver to attach
    1055             :  * @dev: Device to attach it to
    1056             :  *
    1057             :  * Manually attach driver to a device. Will acquire both @dev lock and
    1058             :  * @dev->parent lock if needed. Returns 0 on success, -ERR on failure.
    1059             :  */
    1060           0 : int device_driver_attach(struct device_driver *drv, struct device *dev)
    1061             : {
    1062             :         int ret;
    1063             : 
    1064           0 :         __device_driver_lock(dev, dev->parent);
    1065           0 :         ret = __driver_probe_device(drv, dev);
    1066           0 :         __device_driver_unlock(dev, dev->parent);
    1067             : 
    1068             :         /* also return probe errors as normal negative errnos */
    1069           0 :         if (ret > 0)
    1070           0 :                 ret = -ret;
    1071           0 :         if (ret == -EPROBE_DEFER)
    1072             :                 return -EAGAIN;
    1073           0 :         return ret;
    1074             : }
    1075             : EXPORT_SYMBOL_GPL(device_driver_attach);
    1076             : 
    1077           0 : static void __driver_attach_async_helper(void *_dev, async_cookie_t cookie)
    1078             : {
    1079           0 :         struct device *dev = _dev;
    1080             :         struct device_driver *drv;
    1081             :         int ret;
    1082             : 
    1083           0 :         __device_driver_lock(dev, dev->parent);
    1084           0 :         drv = dev->p->async_driver;
    1085           0 :         ret = driver_probe_device(drv, dev);
    1086           0 :         __device_driver_unlock(dev, dev->parent);
    1087             : 
    1088             :         dev_dbg(dev, "driver %s async attach completed: %d\n", drv->name, ret);
    1089             : 
    1090           0 :         put_device(dev);
    1091           0 : }
    1092             : 
    1093           0 : static int __driver_attach(struct device *dev, void *data)
    1094             : {
    1095           0 :         struct device_driver *drv = data;
    1096             :         int ret;
    1097             : 
    1098             :         /*
    1099             :          * Lock device and try to bind to it. We drop the error
    1100             :          * here and always return 0, because we need to keep trying
    1101             :          * to bind to devices and some drivers will return an error
    1102             :          * simply if it didn't support the device.
    1103             :          *
    1104             :          * driver_probe_device() will spit a warning if there
    1105             :          * is an error.
    1106             :          */
    1107             : 
    1108           0 :         ret = driver_match_device(drv, dev);
    1109           0 :         if (ret == 0) {
    1110             :                 /* no match */
    1111             :                 return 0;
    1112           0 :         } else if (ret == -EPROBE_DEFER) {
    1113             :                 dev_dbg(dev, "Device match requests probe deferral\n");
    1114           0 :                 dev->can_match = true;
    1115           0 :                 driver_deferred_probe_add(dev);
    1116           0 :         } else if (ret < 0) {
    1117             :                 dev_dbg(dev, "Bus failed to match device: %d\n", ret);
    1118             :                 return ret;
    1119             :         } /* ret > 0 means positive match */
    1120             : 
    1121           0 :         if (driver_allows_async_probing(drv)) {
    1122             :                 /*
    1123             :                  * Instead of probing the device synchronously we will
    1124             :                  * probe it asynchronously to allow for more parallelism.
    1125             :                  *
    1126             :                  * We only take the device lock here in order to guarantee
    1127             :                  * that the dev->driver and async_driver fields are protected
    1128             :                  */
    1129             :                 dev_dbg(dev, "probing driver %s asynchronously\n", drv->name);
    1130           0 :                 device_lock(dev);
    1131           0 :                 if (!dev->driver) {
    1132           0 :                         get_device(dev);
    1133           0 :                         dev->p->async_driver = drv;
    1134             :                         async_schedule_dev(__driver_attach_async_helper, dev);
    1135             :                 }
    1136           0 :                 device_unlock(dev);
    1137           0 :                 return 0;
    1138             :         }
    1139             : 
    1140           0 :         __device_driver_lock(dev, dev->parent);
    1141           0 :         driver_probe_device(drv, dev);
    1142           0 :         __device_driver_unlock(dev, dev->parent);
    1143             : 
    1144           0 :         return 0;
    1145             : }
    1146             : 
    1147             : /**
    1148             :  * driver_attach - try to bind driver to devices.
    1149             :  * @drv: driver.
    1150             :  *
    1151             :  * Walk the list of devices that the bus has on it and try to
    1152             :  * match the driver with each one.  If driver_probe_device()
    1153             :  * returns 0 and the @dev->driver is set, we've found a
    1154             :  * compatible pair.
    1155             :  */
    1156          19 : int driver_attach(struct device_driver *drv)
    1157             : {
    1158          19 :         return bus_for_each_dev(drv->bus, NULL, drv, __driver_attach);
    1159             : }
    1160             : EXPORT_SYMBOL_GPL(driver_attach);
    1161             : 
    1162             : /*
    1163             :  * __device_release_driver() must be called with @dev lock held.
    1164             :  * When called for a USB interface, @dev->parent lock must be held as well.
    1165             :  */
    1166           0 : static void __device_release_driver(struct device *dev, struct device *parent)
    1167             : {
    1168             :         struct device_driver *drv;
    1169             : 
    1170           0 :         drv = dev->driver;
    1171           0 :         if (drv) {
    1172             :                 pm_runtime_get_sync(dev);
    1173             : 
    1174           0 :                 while (device_links_busy(dev)) {
    1175           0 :                         __device_driver_unlock(dev, parent);
    1176             : 
    1177           0 :                         device_links_unbind_consumers(dev);
    1178             : 
    1179           0 :                         __device_driver_lock(dev, parent);
    1180             :                         /*
    1181             :                          * A concurrent invocation of the same function might
    1182             :                          * have released the driver successfully while this one
    1183             :                          * was waiting, so check for that.
    1184             :                          */
    1185           0 :                         if (dev->driver != drv) {
    1186             :                                 pm_runtime_put(dev);
    1187             :                                 return;
    1188             :                         }
    1189             :                 }
    1190             : 
    1191           0 :                 driver_sysfs_remove(dev);
    1192             : 
    1193           0 :                 if (dev->bus)
    1194           0 :                         blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
    1195             :                                                      BUS_NOTIFY_UNBIND_DRIVER,
    1196             :                                                      dev);
    1197             : 
    1198           0 :                 pm_runtime_put_sync(dev);
    1199             : 
    1200           0 :                 device_remove(dev);
    1201             : 
    1202           0 :                 device_links_driver_cleanup(dev);
    1203           0 :                 device_unbind_cleanup(dev);
    1204             : 
    1205           0 :                 klist_remove(&dev->p->knode_driver);
    1206           0 :                 device_pm_check_callbacks(dev);
    1207           0 :                 if (dev->bus)
    1208           0 :                         blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
    1209             :                                                      BUS_NOTIFY_UNBOUND_DRIVER,
    1210             :                                                      dev);
    1211             : 
    1212           0 :                 kobject_uevent(&dev->kobj, KOBJ_UNBIND);
    1213             :         }
    1214             : }
    1215             : 
    1216           0 : void device_release_driver_internal(struct device *dev,
    1217             :                                     struct device_driver *drv,
    1218             :                                     struct device *parent)
    1219             : {
    1220           0 :         __device_driver_lock(dev, parent);
    1221             : 
    1222           0 :         if (!drv || drv == dev->driver)
    1223           0 :                 __device_release_driver(dev, parent);
    1224             : 
    1225           0 :         __device_driver_unlock(dev, parent);
    1226           0 : }
    1227             : 
    1228             : /**
    1229             :  * device_release_driver - manually detach device from driver.
    1230             :  * @dev: device.
    1231             :  *
    1232             :  * Manually detach device from driver.
    1233             :  * When called for a USB interface, @dev->parent lock must be held.
    1234             :  *
    1235             :  * If this function is to be called with @dev->parent lock held, ensure that
    1236             :  * the device's consumers are unbound in advance or that their locks can be
    1237             :  * acquired under the @dev->parent lock.
    1238             :  */
    1239           0 : void device_release_driver(struct device *dev)
    1240             : {
    1241             :         /*
    1242             :          * If anyone calls device_release_driver() recursively from
    1243             :          * within their ->remove callback for the same device, they
    1244             :          * will deadlock right here.
    1245             :          */
    1246           0 :         device_release_driver_internal(dev, NULL, NULL);
    1247           0 : }
    1248             : EXPORT_SYMBOL_GPL(device_release_driver);
    1249             : 
    1250             : /**
    1251             :  * device_driver_detach - detach driver from a specific device
    1252             :  * @dev: device to detach driver from
    1253             :  *
    1254             :  * Detach driver from device. Will acquire both @dev lock and @dev->parent
    1255             :  * lock if needed.
    1256             :  */
    1257           0 : void device_driver_detach(struct device *dev)
    1258             : {
    1259           0 :         device_release_driver_internal(dev, NULL, dev->parent);
    1260           0 : }
    1261             : 
    1262             : /**
    1263             :  * driver_detach - detach driver from all devices it controls.
    1264             :  * @drv: driver.
    1265             :  */
    1266           1 : void driver_detach(struct device_driver *drv)
    1267             : {
    1268             :         struct device_private *dev_prv;
    1269             :         struct device *dev;
    1270             : 
    1271           1 :         if (driver_allows_async_probing(drv))
    1272           0 :                 async_synchronize_full();
    1273             : 
    1274             :         for (;;) {
    1275           2 :                 spin_lock(&drv->p->klist_devices.k_lock);
    1276           2 :                 if (list_empty(&drv->p->klist_devices.k_list)) {
    1277           2 :                         spin_unlock(&drv->p->klist_devices.k_lock);
    1278             :                         break;
    1279             :                 }
    1280           0 :                 dev_prv = list_last_entry(&drv->p->klist_devices.k_list,
    1281             :                                      struct device_private,
    1282             :                                      knode_driver.n_node);
    1283           0 :                 dev = dev_prv->device;
    1284           0 :                 get_device(dev);
    1285           0 :                 spin_unlock(&drv->p->klist_devices.k_lock);
    1286           0 :                 device_release_driver_internal(dev, drv, dev->parent);
    1287           0 :                 put_device(dev);
    1288             :         }
    1289           1 : }

Generated by: LCOV version 1.14