-12
Documentation/ABI/testing/sysfs-devices-deferred_probe
-12
Documentation/ABI/testing/sysfs-devices-deferred_probe
···
1
-
What: /sys/devices/.../deferred_probe
2
-
Date: August 2016
3
-
Contact: Ben Hutchings <ben.hutchings@codethink.co.uk>
4
-
Description:
5
-
The /sys/devices/.../deferred_probe attribute is
6
-
present for all devices. If a driver detects during
7
-
probing a device that a related device is not yet
8
-
ready, it may defer probing of the first device. The
9
-
kernel will retry probing the first device after any
10
-
other device is successfully probed. This attribute
11
-
reads as 1 if probing of this device is currently
12
-
deferred, or 0 otherwise.
-2
drivers/base/base.h
-2
drivers/base/base.h
···
141
141
extern struct kset *devices_kset;
142
142
extern void devices_kset_move_last(struct device *dev);
143
143
144
-
extern struct device_attribute dev_attr_deferred_probe;
145
-
146
144
#if defined(CONFIG_MODULES) && defined(CONFIG_SYSFS)
147
145
extern void module_add_driver(struct module *mod, struct device_driver *drv);
148
146
extern void module_remove_driver(struct device_driver *drv);
-7
drivers/base/core.c
-7
drivers/base/core.c
···
1060
1060
goto err_remove_dev_groups;
1061
1061
}
1062
1062
1063
-
error = device_create_file(dev, &dev_attr_deferred_probe);
1064
-
if (error)
1065
-
goto err_remove_online;
1066
-
1067
1063
return 0;
1068
1064
1069
-
err_remove_online:
1070
-
device_remove_file(dev, &dev_attr_online);
1071
1065
err_remove_dev_groups:
1072
1066
device_remove_groups(dev, dev->groups);
1073
1067
err_remove_type_groups:
···
1079
1085
struct class *class = dev->class;
1080
1086
const struct device_type *type = dev->type;
1081
1087
1082
-
device_remove_file(dev, &dev_attr_deferred_probe);
1083
1088
device_remove_file(dev, &dev_attr_online);
1084
1089
device_remove_groups(dev, dev->groups);
1085
1090
-13
drivers/base/dd.c
-13
drivers/base/dd.c
···
53
53
static LIST_HEAD(deferred_probe_active_list);
54
54
static atomic_t deferred_trigger_count = ATOMIC_INIT(0);
55
55
56
-
static ssize_t deferred_probe_show(struct device *dev,
57
-
struct device_attribute *attr, char *buf)
58
-
{
59
-
bool value;
60
-
61
-
mutex_lock(&deferred_probe_mutex);
62
-
value = !list_empty(&dev->p->deferred_probe);
63
-
mutex_unlock(&deferred_probe_mutex);
64
-
65
-
return sprintf(buf, "%d\n", value);
66
-
}
67
-
DEVICE_ATTR_RO(deferred_probe);
68
-
69
56
/*
70
57
* In some cases, like suspend to RAM or hibernation, It might be reasonable
71
58
* to prohibit probing of devices as it could be unsafe.