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