jrcu: tuneable watchdog
PATCH 13/24 jrcu: tuneable watchdog
jrcu: Make the watchdog value a tuneable.
Also increase the default to 30 seconds.
Signed-off-by Joe Korty <[email protected]>
kernel/jrcu.c +10 -1
@@ -139,6 +139,8 @@ int rcu_scheduler_active __read_mostly;int rcu_nmi_seen__read_mostly ;static u64 rcu_timestamp; +int rcu_wdog =30 ;/* rcu watchdog interval, in seconds */ +/* * Return our CPU id or zero if we are too early in the boot process to * know what that is. For RCU to work correctly, a cpu named '0' must
@@ -327,7 +329,7 @@ static void __rcu_delimit_batches(struct*/ rcu_now =sched_clock ();if (!eob && !rcu_timestamp - && ((rcu_now - rcu_timestamp) >3LL *NSEC_PER_SEC )) { + && ((rcu_now - rcu_timestamp) > (s64 )rcu_wdog *NSEC_PER_SEC )) { rcu_stats.nforced++;WARN_ON_ONCE (1 ); eob =1 ;
@@ -576,6 +578,7 @@ static int rcu_debugfs_show(struct seq_fraw_local_irq_enable ();seq_printf (m,"%14u: hz\n" , rcu_hz); +seq_printf (m,"%14u: watchdog (secs)\n" , rcu_wdog);#ifdef CONFIG_JRCU_DAEMON if (rcu_daemon)seq_printf (m,"%14u: daemon priority\n" , rcu_priority);
@@ -671,6 +674,12 @@ static ssize_t rcu_debugfs_write(structreturn -EINVAL ; rcu_hz = rcu_hz_wanted; rcu_hz_period_us =USEC_PER_SEC / rcu_hz; + }else if (!strncmp (token,"wdog=" ,5 )) { +int wdog =-1 ; +sscanf (&token[5 ],"%d" , &wdog); +if (wdog <3 || wdog >1000 ) +return -EINVAL ; + rcu_wdog = wdog; }else return -EINVAL ;