path: root/kernel/ksysfs.c
diff options
authorAntti P Miettinen <>2012-10-05 09:59:15 +0300
committerPaul E. McKenney <>2012-10-23 14:54:08 -0700
commit3705b88db0d7cc4a097c32d9e554054103d3f807 (patch)
treef3baf8c94363506964c9f944496267f74cdee47c /kernel/ksysfs.c
parentba49df4767d4fa5bbd2af3a51709fb81f94264ec (diff)
rcu: Add a module parameter to force use of expedited RCU primitives
There have been some embedded applications that would benefit from use of expedited grace-period primitives. In some ways, this is similar to synchronize_net() doing either a normal or an expedited grace period depending on lock state, but with control outside of the kernel. This commit therefore adds rcu_expedited boot and sysfs parameters that cause the kernel to substitute expedited primitives for the normal grace-period primitives. [ paulmck: Add trace/event/rcu.h to kernel/srcu.c to avoid build error. Get rid of infinite loop through contention path.] Signed-off-by: Antti P Miettinen <> Signed-off-by: Paul E. McKenney <>
Diffstat (limited to 'kernel/ksysfs.c')
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 4e316e1acf58..8715a798aa7c 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -141,6 +141,23 @@ static ssize_t fscaps_show(struct kobject *kobj,
+int rcu_expedited;
+static ssize_t rcu_expedited_show(struct kobject *kobj,
+ struct kobj_attribute *attr, char *buf)
+ return sprintf(buf, "%d\n", rcu_expedited);
+static ssize_t rcu_expedited_store(struct kobject *kobj,
+ struct kobj_attribute *attr,
+ const char *buf, size_t count)
+ if (kstrtoint(buf, 0, &rcu_expedited))
+ return -EINVAL;
+ return count;
* Make /sys/kernel/notes give the raw contents of our kernel .notes section.
@@ -182,6 +199,7 @@ static struct attribute * kernel_attrs[] = {
+ &rcu_expedited_attr.attr,