diff options
Diffstat (limited to 'drivers/base/dd.c')
| -rw-r--r-- | drivers/base/dd.c | 33 | 
1 files changed, 18 insertions, 15 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 94037be7f5d7..9a1d940342ac 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -164,6 +164,11 @@ static void driver_deferred_probe_trigger(void)  	if (!driver_deferred_probe_enable)  		return; +	driver_deferred_probe_force_trigger(); +} + +void driver_deferred_probe_force_trigger(void) +{  	/*  	 * A successful probe means that all the devices in the pending list  	 * should be triggered to be reprobed.  Move all the deferred devices @@ -254,12 +259,12 @@ __setup("deferred_probe_timeout=", deferred_probe_timeout_setup);  int driver_deferred_probe_check_state(struct device *dev)  {  	if (!IS_ENABLED(CONFIG_MODULES) && initcalls_done) { -		dev_warn(dev, "ignoring dependency for device, assuming no driver"); +		dev_warn(dev, "ignoring dependency for device, assuming no driver\n");  		return -ENODEV;  	}  	if (!driver_deferred_probe_timeout && initcalls_done) { -		dev_warn(dev, "deferred probe timeout, ignoring dependency"); +		dev_warn(dev, "deferred probe timeout, ignoring dependency\n");  		return -ETIMEDOUT;  	} @@ -275,7 +280,7 @@ static void deferred_probe_timeout_work_func(struct work_struct *work)  	flush_work(&deferred_probe_work);  	list_for_each_entry_safe(private, p, &deferred_probe_pending_list, deferred_probe) -		dev_info(private->device, "deferred probe pending"); +		dev_info(private->device, "deferred probe pending\n");  	wake_up(&probe_timeout_waitqueue);  }  static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func); @@ -336,7 +341,7 @@ bool device_is_bound(struct device *dev)  static void driver_bound(struct device *dev)  {  	if (device_is_bound(dev)) { -		printk(KERN_WARNING "%s: device %s already bound\n", +		pr_warn("%s: device %s already bound\n",  			__func__, kobject_name(&dev->kobj));  		return;  	} @@ -505,8 +510,8 @@ re_probe:  	}  	if (driver_sysfs_add(dev)) { -		printk(KERN_ERR "%s: driver_sysfs_add(%s) failed\n", -			__func__, dev_name(dev)); +		pr_err("%s: driver_sysfs_add(%s) failed\n", +		       __func__, dev_name(dev));  		goto probe_failed;  	} @@ -597,9 +602,8 @@ pinctrl_bind_failed:  		break;  	default:  		/* driver matched but the probe failed */ -		printk(KERN_WARNING -		       "%s: probe of %s failed with error %d\n", -		       drv->name, dev_name(dev), ret); +		pr_warn("%s: probe of %s failed with error %d\n", +			drv->name, dev_name(dev), ret);  	}  	/*  	 * Ignore errors returned by ->probe so that the next driver can try @@ -624,8 +628,8 @@ static int really_probe_debug(struct device *dev, struct device_driver *drv)  	ret = really_probe(dev, drv);  	rettime = ktime_get();  	delta = ktime_sub(rettime, calltime); -	printk(KERN_DEBUG "probe of %s returned %d after %lld usecs\n", -	       dev_name(dev), ret, (s64) ktime_to_us(delta)); +	pr_debug("probe of %s returned %d after %lld usecs\n", +		 dev_name(dev), ret, (s64) ktime_to_us(delta));  	return ret;  } @@ -713,8 +717,7 @@ static inline bool cmdline_requested_async_probing(const char *drv_name)  static int __init save_async_options(char *buf)  {  	if (strlen(buf) >= ASYNC_DRV_NAMES_MAX_LEN) -		printk(KERN_WARNING -			"Too long list of driver names for 'driver_async_probe'!\n"); +		pr_warn("Too long list of driver names for 'driver_async_probe'!\n");  	strlcpy(async_probe_drv_names, buf, ASYNC_DRV_NAMES_MAX_LEN);  	return 0; @@ -789,7 +792,7 @@ static int __device_attach_driver(struct device_driver *drv, void *_data)  		dev_dbg(dev, "Device match requests probe deferral\n");  		driver_deferred_probe_add(dev);  	} else if (ret < 0) { -		dev_dbg(dev, "Bus failed to match device: %d", ret); +		dev_dbg(dev, "Bus failed to match device: %d\n", ret);  		return ret;  	} /* ret > 0 means positive match */ @@ -1022,7 +1025,7 @@ static int __driver_attach(struct device *dev, void *data)  		dev_dbg(dev, "Device match requests probe deferral\n");  		driver_deferred_probe_add(dev);  	} else if (ret < 0) { -		dev_dbg(dev, "Bus failed to match device: %d", ret); +		dev_dbg(dev, "Bus failed to match device: %d\n", ret);  		return ret;  	} /* ret > 0 means positive match */  | 
