rcu fixes
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 0d949c5..a10dfb0 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c
@@ -250,8 +250,17 @@ static int max_wakeup_granularity_ns = NSEC_PER_SEC; /* 1 second */ #endif +extern int rcu_delay; + static struct ctl_table kern_table[] = { { + .procname = "rcu_delay", + .data = &rcu_delay, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, + { .ctl_name = CTL_UNNUMBERED, .procname = "sched_child_runs_first", .data = &sysctl_sched_child_runs_first,
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 89aed59..ec015bc 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c
@@ -26,6 +26,8 @@ #include "tick-internal.h" +int __read_mostly rcu_delay = 10; + /* * Per cpu nohz control structure */ @@ -282,7 +284,7 @@ delta_jiffies = next_jiffies - last_jiffies; if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu)) - delta_jiffies = 1; + delta_jiffies = rcu_delay; /* * Do not stop the tick, if we are only one off * or if the cpu is required for rcu