rcu: Move RCU-related source code to kernel/rcu directory
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
2529973309
commit
4102adab91
@ -87,7 +87,10 @@ X!Iinclude/linux/kobject.h
|
|||||||
!Ekernel/printk/printk.c
|
!Ekernel/printk/printk.c
|
||||||
!Ekernel/panic.c
|
!Ekernel/panic.c
|
||||||
!Ekernel/sys.c
|
!Ekernel/sys.c
|
||||||
!Ekernel/rcupdate.c
|
!Ekernel/rcu/srcu.c
|
||||||
|
!Ekernel/rcu/tree.c
|
||||||
|
!Ekernel/rcu/tree_plugin.h
|
||||||
|
!Ekernel/rcu/update.c
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1><title>Device Resource Management</title>
|
<sect1><title>Device Resource Management</title>
|
||||||
|
@ -2595,7 +2595,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
|
ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
|
||||||
See Documentation/blockdev/ramdisk.txt.
|
See Documentation/blockdev/ramdisk.txt.
|
||||||
|
|
||||||
rcu_nocbs= [KNL,BOOT]
|
rcu_nocbs= [KNL]
|
||||||
In kernels built with CONFIG_RCU_NOCB_CPU=y, set
|
In kernels built with CONFIG_RCU_NOCB_CPU=y, set
|
||||||
the specified list of CPUs to be no-callback CPUs.
|
the specified list of CPUs to be no-callback CPUs.
|
||||||
Invocation of these CPUs' RCU callbacks will
|
Invocation of these CPUs' RCU callbacks will
|
||||||
@ -2608,7 +2608,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
real-time workloads. It can also improve energy
|
real-time workloads. It can also improve energy
|
||||||
efficiency for asymmetric multiprocessors.
|
efficiency for asymmetric multiprocessors.
|
||||||
|
|
||||||
rcu_nocb_poll [KNL,BOOT]
|
rcu_nocb_poll [KNL]
|
||||||
Rather than requiring that offloaded CPUs
|
Rather than requiring that offloaded CPUs
|
||||||
(specified by rcu_nocbs= above) explicitly
|
(specified by rcu_nocbs= above) explicitly
|
||||||
awaken the corresponding "rcuoN" kthreads,
|
awaken the corresponding "rcuoN" kthreads,
|
||||||
@ -2619,126 +2619,145 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
energy efficiency by requiring that the kthreads
|
energy efficiency by requiring that the kthreads
|
||||||
periodically wake up to do the polling.
|
periodically wake up to do the polling.
|
||||||
|
|
||||||
rcutree.blimit= [KNL,BOOT]
|
rcutree.blimit= [KNL]
|
||||||
Set maximum number of finished RCU callbacks to process
|
Set maximum number of finished RCU callbacks to process
|
||||||
in one batch.
|
in one batch.
|
||||||
|
|
||||||
rcutree.fanout_leaf= [KNL,BOOT]
|
rcutree.rcu_fanout_leaf= [KNL]
|
||||||
Increase the number of CPUs assigned to each
|
Increase the number of CPUs assigned to each
|
||||||
leaf rcu_node structure. Useful for very large
|
leaf rcu_node structure. Useful for very large
|
||||||
systems.
|
systems.
|
||||||
|
|
||||||
rcutree.jiffies_till_first_fqs= [KNL,BOOT]
|
rcutree.jiffies_till_first_fqs= [KNL]
|
||||||
Set delay from grace-period initialization to
|
Set delay from grace-period initialization to
|
||||||
first attempt to force quiescent states.
|
first attempt to force quiescent states.
|
||||||
Units are jiffies, minimum value is zero,
|
Units are jiffies, minimum value is zero,
|
||||||
and maximum value is HZ.
|
and maximum value is HZ.
|
||||||
|
|
||||||
rcutree.jiffies_till_next_fqs= [KNL,BOOT]
|
rcutree.jiffies_till_next_fqs= [KNL]
|
||||||
Set delay between subsequent attempts to force
|
Set delay between subsequent attempts to force
|
||||||
quiescent states. Units are jiffies, minimum
|
quiescent states. Units are jiffies, minimum
|
||||||
value is one, and maximum value is HZ.
|
value is one, and maximum value is HZ.
|
||||||
|
|
||||||
rcutree.qhimark= [KNL,BOOT]
|
rcutree.qhimark= [KNL]
|
||||||
Set threshold of queued
|
Set threshold of queued
|
||||||
RCU callbacks over which batch limiting is disabled.
|
RCU callbacks over which batch limiting is disabled.
|
||||||
|
|
||||||
rcutree.qlowmark= [KNL,BOOT]
|
rcutree.qlowmark= [KNL]
|
||||||
Set threshold of queued RCU callbacks below which
|
Set threshold of queued RCU callbacks below which
|
||||||
batch limiting is re-enabled.
|
batch limiting is re-enabled.
|
||||||
|
|
||||||
rcutree.rcu_cpu_stall_suppress= [KNL,BOOT]
|
rcutree.rcu_idle_gp_delay= [KNL]
|
||||||
Suppress RCU CPU stall warning messages.
|
|
||||||
|
|
||||||
rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
|
|
||||||
Set timeout for RCU CPU stall warning messages.
|
|
||||||
|
|
||||||
rcutree.rcu_idle_gp_delay= [KNL,BOOT]
|
|
||||||
Set wakeup interval for idle CPUs that have
|
Set wakeup interval for idle CPUs that have
|
||||||
RCU callbacks (RCU_FAST_NO_HZ=y).
|
RCU callbacks (RCU_FAST_NO_HZ=y).
|
||||||
|
|
||||||
rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT]
|
rcutree.rcu_idle_lazy_gp_delay= [KNL]
|
||||||
Set wakeup interval for idle CPUs that have
|
Set wakeup interval for idle CPUs that have
|
||||||
only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
|
only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
|
||||||
Lazy RCU callbacks are those which RCU can
|
Lazy RCU callbacks are those which RCU can
|
||||||
prove do nothing more than free memory.
|
prove do nothing more than free memory.
|
||||||
|
|
||||||
rcutorture.fqs_duration= [KNL,BOOT]
|
rcutorture.fqs_duration= [KNL]
|
||||||
Set duration of force_quiescent_state bursts.
|
Set duration of force_quiescent_state bursts.
|
||||||
|
|
||||||
rcutorture.fqs_holdoff= [KNL,BOOT]
|
rcutorture.fqs_holdoff= [KNL]
|
||||||
Set holdoff time within force_quiescent_state bursts.
|
Set holdoff time within force_quiescent_state bursts.
|
||||||
|
|
||||||
rcutorture.fqs_stutter= [KNL,BOOT]
|
rcutorture.fqs_stutter= [KNL]
|
||||||
Set wait time between force_quiescent_state bursts.
|
Set wait time between force_quiescent_state bursts.
|
||||||
|
|
||||||
rcutorture.irqreader= [KNL,BOOT]
|
rcutorture.gp_exp= [KNL]
|
||||||
Test RCU readers from irq handlers.
|
Use expedited update-side primitives.
|
||||||
|
|
||||||
rcutorture.n_barrier_cbs= [KNL,BOOT]
|
rcutorture.gp_normal= [KNL]
|
||||||
|
Use normal (non-expedited) update-side primitives.
|
||||||
|
If both gp_exp and gp_normal are set, do both.
|
||||||
|
If neither gp_exp nor gp_normal are set, still
|
||||||
|
do both.
|
||||||
|
|
||||||
|
rcutorture.n_barrier_cbs= [KNL]
|
||||||
Set callbacks/threads for rcu_barrier() testing.
|
Set callbacks/threads for rcu_barrier() testing.
|
||||||
|
|
||||||
rcutorture.nfakewriters= [KNL,BOOT]
|
rcutorture.nfakewriters= [KNL]
|
||||||
Set number of concurrent RCU writers. These just
|
Set number of concurrent RCU writers. These just
|
||||||
stress RCU, they don't participate in the actual
|
stress RCU, they don't participate in the actual
|
||||||
test, hence the "fake".
|
test, hence the "fake".
|
||||||
|
|
||||||
rcutorture.nreaders= [KNL,BOOT]
|
rcutorture.nreaders= [KNL]
|
||||||
Set number of RCU readers.
|
Set number of RCU readers.
|
||||||
|
|
||||||
rcutorture.onoff_holdoff= [KNL,BOOT]
|
rcutorture.object_debug= [KNL]
|
||||||
|
Enable debug-object double-call_rcu() testing.
|
||||||
|
|
||||||
|
rcutorture.onoff_holdoff= [KNL]
|
||||||
Set time (s) after boot for CPU-hotplug testing.
|
Set time (s) after boot for CPU-hotplug testing.
|
||||||
|
|
||||||
rcutorture.onoff_interval= [KNL,BOOT]
|
rcutorture.onoff_interval= [KNL]
|
||||||
Set time (s) between CPU-hotplug operations, or
|
Set time (s) between CPU-hotplug operations, or
|
||||||
zero to disable CPU-hotplug testing.
|
zero to disable CPU-hotplug testing.
|
||||||
|
|
||||||
rcutorture.shuffle_interval= [KNL,BOOT]
|
rcutorture.rcutorture_runnable= [BOOT]
|
||||||
|
Start rcutorture running at boot time.
|
||||||
|
|
||||||
|
rcutorture.shuffle_interval= [KNL]
|
||||||
Set task-shuffle interval (s). Shuffling tasks
|
Set task-shuffle interval (s). Shuffling tasks
|
||||||
allows some CPUs to go into dyntick-idle mode
|
allows some CPUs to go into dyntick-idle mode
|
||||||
during the rcutorture test.
|
during the rcutorture test.
|
||||||
|
|
||||||
rcutorture.shutdown_secs= [KNL,BOOT]
|
rcutorture.shutdown_secs= [KNL]
|
||||||
Set time (s) after boot system shutdown. This
|
Set time (s) after boot system shutdown. This
|
||||||
is useful for hands-off automated testing.
|
is useful for hands-off automated testing.
|
||||||
|
|
||||||
rcutorture.stall_cpu= [KNL,BOOT]
|
rcutorture.stall_cpu= [KNL]
|
||||||
Duration of CPU stall (s) to test RCU CPU stall
|
Duration of CPU stall (s) to test RCU CPU stall
|
||||||
warnings, zero to disable.
|
warnings, zero to disable.
|
||||||
|
|
||||||
rcutorture.stall_cpu_holdoff= [KNL,BOOT]
|
rcutorture.stall_cpu_holdoff= [KNL]
|
||||||
Time to wait (s) after boot before inducing stall.
|
Time to wait (s) after boot before inducing stall.
|
||||||
|
|
||||||
rcutorture.stat_interval= [KNL,BOOT]
|
rcutorture.stat_interval= [KNL]
|
||||||
Time (s) between statistics printk()s.
|
Time (s) between statistics printk()s.
|
||||||
|
|
||||||
rcutorture.stutter= [KNL,BOOT]
|
rcutorture.stutter= [KNL]
|
||||||
Time (s) to stutter testing, for example, specifying
|
Time (s) to stutter testing, for example, specifying
|
||||||
five seconds causes the test to run for five seconds,
|
five seconds causes the test to run for five seconds,
|
||||||
wait for five seconds, and so on. This tests RCU's
|
wait for five seconds, and so on. This tests RCU's
|
||||||
ability to transition abruptly to and from idle.
|
ability to transition abruptly to and from idle.
|
||||||
|
|
||||||
rcutorture.test_boost= [KNL,BOOT]
|
rcutorture.test_boost= [KNL]
|
||||||
Test RCU priority boosting? 0=no, 1=maybe, 2=yes.
|
Test RCU priority boosting? 0=no, 1=maybe, 2=yes.
|
||||||
"Maybe" means test if the RCU implementation
|
"Maybe" means test if the RCU implementation
|
||||||
under test support RCU priority boosting.
|
under test support RCU priority boosting.
|
||||||
|
|
||||||
rcutorture.test_boost_duration= [KNL,BOOT]
|
rcutorture.test_boost_duration= [KNL]
|
||||||
Duration (s) of each individual boost test.
|
Duration (s) of each individual boost test.
|
||||||
|
|
||||||
rcutorture.test_boost_interval= [KNL,BOOT]
|
rcutorture.test_boost_interval= [KNL]
|
||||||
Interval (s) between each boost test.
|
Interval (s) between each boost test.
|
||||||
|
|
||||||
rcutorture.test_no_idle_hz= [KNL,BOOT]
|
rcutorture.test_no_idle_hz= [KNL]
|
||||||
Test RCU's dyntick-idle handling. See also the
|
Test RCU's dyntick-idle handling. See also the
|
||||||
rcutorture.shuffle_interval parameter.
|
rcutorture.shuffle_interval parameter.
|
||||||
|
|
||||||
rcutorture.torture_type= [KNL,BOOT]
|
rcutorture.torture_type= [KNL]
|
||||||
Specify the RCU implementation to test.
|
Specify the RCU implementation to test.
|
||||||
|
|
||||||
rcutorture.verbose= [KNL,BOOT]
|
rcutorture.verbose= [KNL]
|
||||||
Enable additional printk() statements.
|
Enable additional printk() statements.
|
||||||
|
|
||||||
|
rcupdate.rcu_expedited= [KNL]
|
||||||
|
Use expedited grace-period primitives, for
|
||||||
|
example, synchronize_rcu_expedited() instead
|
||||||
|
of synchronize_rcu(). This reduces latency,
|
||||||
|
but can increase CPU utilization, degrade
|
||||||
|
real-time latency, and degrade energy efficiency.
|
||||||
|
|
||||||
|
rcupdate.rcu_cpu_stall_suppress= [KNL]
|
||||||
|
Suppress RCU CPU stall warning messages.
|
||||||
|
|
||||||
|
rcupdate.rcu_cpu_stall_timeout= [KNL]
|
||||||
|
Set timeout for RCU CPU stall warning messages.
|
||||||
|
|
||||||
rdinit= [KNL]
|
rdinit= [KNL]
|
||||||
Format: <full_path>
|
Format: <full_path>
|
||||||
Run specified binary instead of /init from the ramdisk,
|
Run specified binary instead of /init from the ramdisk,
|
||||||
|
11
MAINTAINERS
11
MAINTAINERS
@ -6903,7 +6903,7 @@ M: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
|
|||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
|
||||||
F: Documentation/RCU/torture.txt
|
F: Documentation/RCU/torture.txt
|
||||||
F: kernel/rcutorture.c
|
F: kernel/rcu/torture.c
|
||||||
|
|
||||||
RDC R-321X SoC
|
RDC R-321X SoC
|
||||||
M: Florian Fainelli <florian@openwrt.org>
|
M: Florian Fainelli <florian@openwrt.org>
|
||||||
@ -6930,8 +6930,9 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
|
|||||||
F: Documentation/RCU/
|
F: Documentation/RCU/
|
||||||
X: Documentation/RCU/torture.txt
|
X: Documentation/RCU/torture.txt
|
||||||
F: include/linux/rcu*
|
F: include/linux/rcu*
|
||||||
F: kernel/rcu*
|
X: include/linux/srcu.h
|
||||||
X: kernel/rcutorture.c
|
F: kernel/rcu/
|
||||||
|
X: kernel/rcu/torture.c
|
||||||
|
|
||||||
REAL TIME CLOCK (RTC) SUBSYSTEM
|
REAL TIME CLOCK (RTC) SUBSYSTEM
|
||||||
M: Alessandro Zummo <a.zummo@towertech.it>
|
M: Alessandro Zummo <a.zummo@towertech.it>
|
||||||
@ -7618,8 +7619,8 @@ M: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
|
|||||||
W: http://www.rdrop.com/users/paulmck/RCU/
|
W: http://www.rdrop.com/users/paulmck/RCU/
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
|
||||||
F: include/linux/srcu*
|
F: include/linux/srcu.h
|
||||||
F: kernel/srcu*
|
F: kernel/rcu/srcu.c
|
||||||
|
|
||||||
SMACK SECURITY MODULE
|
SMACK SECURITY MODULE
|
||||||
M: Casey Schaufler <casey@schaufler-ca.com>
|
M: Casey Schaufler <casey@schaufler-ca.com>
|
||||||
|
@ -6,9 +6,9 @@ obj-y = fork.o exec_domain.o panic.o \
|
|||||||
cpu.o exit.o itimer.o time.o softirq.o resource.o \
|
cpu.o exit.o itimer.o time.o softirq.o resource.o \
|
||||||
sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
|
sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
|
||||||
signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
|
signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
|
||||||
rcupdate.o extable.o params.o posix-timers.o \
|
extable.o params.o posix-timers.o \
|
||||||
kthread.o wait.o sys_ni.o posix-cpu-timers.o mutex.o \
|
kthread.o wait.o sys_ni.o posix-cpu-timers.o mutex.o \
|
||||||
hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \
|
hrtimer.o rwsem.o nsproxy.o semaphore.o \
|
||||||
notifier.o ksysfs.o cred.o reboot.o \
|
notifier.o ksysfs.o cred.o reboot.o \
|
||||||
async.o range.o groups.o lglock.o smpboot.o
|
async.o range.o groups.o lglock.o smpboot.o
|
||||||
|
|
||||||
@ -27,6 +27,7 @@ obj-y += power/
|
|||||||
obj-y += printk/
|
obj-y += printk/
|
||||||
obj-y += cpu/
|
obj-y += cpu/
|
||||||
obj-y += irq/
|
obj-y += irq/
|
||||||
|
obj-y += rcu/
|
||||||
|
|
||||||
obj-$(CONFIG_CHECKPOINT_RESTORE) += kcmp.o
|
obj-$(CONFIG_CHECKPOINT_RESTORE) += kcmp.o
|
||||||
obj-$(CONFIG_FREEZER) += freezer.o
|
obj-$(CONFIG_FREEZER) += freezer.o
|
||||||
@ -81,12 +82,6 @@ obj-$(CONFIG_KGDB) += debug/
|
|||||||
obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
|
obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
|
||||||
obj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o
|
obj-$(CONFIG_LOCKUP_DETECTOR) += watchdog.o
|
||||||
obj-$(CONFIG_SECCOMP) += seccomp.o
|
obj-$(CONFIG_SECCOMP) += seccomp.o
|
||||||
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
|
|
||||||
obj-$(CONFIG_TREE_RCU) += rcutree.o
|
|
||||||
obj-$(CONFIG_TREE_PREEMPT_RCU) += rcutree.o
|
|
||||||
obj-$(CONFIG_TREE_RCU_TRACE) += rcutree_trace.o
|
|
||||||
obj-$(CONFIG_TINY_RCU) += rcutiny.o
|
|
||||||
obj-$(CONFIG_TINY_PREEMPT_RCU) += rcutiny.o
|
|
||||||
obj-$(CONFIG_RELAY) += relay.o
|
obj-$(CONFIG_RELAY) += relay.o
|
||||||
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
|
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
|
||||||
obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
|
obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
|
||||||
|
6
kernel/rcu/Makefile
Normal file
6
kernel/rcu/Makefile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
obj-y += update.o srcu.o
|
||||||
|
obj-$(CONFIG_RCU_TORTURE_TEST) += torture.o
|
||||||
|
obj-$(CONFIG_TREE_RCU) += tree.o
|
||||||
|
obj-$(CONFIG_TREE_PREEMPT_RCU) += tree.o
|
||||||
|
obj-$(CONFIG_TREE_RCU_TRACE) += tree_trace.o
|
||||||
|
obj-$(CONFIG_TINY_RCU) += tiny.o
|
@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
#include "rcu.h"
|
#include "rcu.h"
|
||||||
|
|
||||||
/* Forward declarations for rcutiny_plugin.h. */
|
/* Forward declarations for tiny_plugin.h. */
|
||||||
struct rcu_ctrlblk;
|
struct rcu_ctrlblk;
|
||||||
static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp);
|
static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp);
|
||||||
static void rcu_process_callbacks(struct softirq_action *unused);
|
static void rcu_process_callbacks(struct softirq_action *unused);
|
||||||
@ -53,7 +53,7 @@ static void __call_rcu(struct rcu_head *head,
|
|||||||
|
|
||||||
static long long rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
|
static long long rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
|
||||||
|
|
||||||
#include "rcutiny_plugin.h"
|
#include "tiny_plugin.h"
|
||||||
|
|
||||||
/* Common code for rcu_idle_enter() and rcu_irq_exit(), see kernel/rcutree.c. */
|
/* Common code for rcu_idle_enter() and rcu_irq_exit(), see kernel/rcutree.c. */
|
||||||
static void rcu_idle_enter_common(long long newval)
|
static void rcu_idle_enter_common(long long newval)
|
||||||
@ -67,7 +67,7 @@ static void rcu_idle_enter_common(long long newval)
|
|||||||
RCU_TRACE(trace_rcu_dyntick(TPS("Start"),
|
RCU_TRACE(trace_rcu_dyntick(TPS("Start"),
|
||||||
rcu_dynticks_nesting, newval));
|
rcu_dynticks_nesting, newval));
|
||||||
if (!is_idle_task(current)) {
|
if (!is_idle_task(current)) {
|
||||||
struct task_struct *idle = idle_task(smp_processor_id());
|
struct task_struct *idle __maybe_unused = idle_task(smp_processor_id());
|
||||||
|
|
||||||
RCU_TRACE(trace_rcu_dyntick(TPS("Entry error: not idle task"),
|
RCU_TRACE(trace_rcu_dyntick(TPS("Entry error: not idle task"),
|
||||||
rcu_dynticks_nesting, newval));
|
rcu_dynticks_nesting, newval));
|
||||||
@ -128,7 +128,7 @@ static void rcu_idle_exit_common(long long oldval)
|
|||||||
}
|
}
|
||||||
RCU_TRACE(trace_rcu_dyntick(TPS("End"), oldval, rcu_dynticks_nesting));
|
RCU_TRACE(trace_rcu_dyntick(TPS("End"), oldval, rcu_dynticks_nesting));
|
||||||
if (!is_idle_task(current)) {
|
if (!is_idle_task(current)) {
|
||||||
struct task_struct *idle = idle_task(smp_processor_id());
|
struct task_struct *idle __maybe_unused = idle_task(smp_processor_id());
|
||||||
|
|
||||||
RCU_TRACE(trace_rcu_dyntick(TPS("Exit error: not idle task"),
|
RCU_TRACE(trace_rcu_dyntick(TPS("Exit error: not idle task"),
|
||||||
oldval, rcu_dynticks_nesting));
|
oldval, rcu_dynticks_nesting));
|
@ -52,6 +52,12 @@
|
|||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("Paul E. McKenney <paulmck@us.ibm.com> and Josh Triplett <josh@freedesktop.org>");
|
MODULE_AUTHOR("Paul E. McKenney <paulmck@us.ibm.com> and Josh Triplett <josh@freedesktop.org>");
|
||||||
|
|
||||||
|
MODULE_ALIAS("rcutorture");
|
||||||
|
#ifdef MODULE_PARAM_PREFIX
|
||||||
|
#undef MODULE_PARAM_PREFIX
|
||||||
|
#endif
|
||||||
|
#define MODULE_PARAM_PREFIX "rcutorture."
|
||||||
|
|
||||||
static int fqs_duration;
|
static int fqs_duration;
|
||||||
module_param(fqs_duration, int, 0444);
|
module_param(fqs_duration, int, 0444);
|
||||||
MODULE_PARM_DESC(fqs_duration, "Duration of fqs bursts (us), 0 to disable");
|
MODULE_PARM_DESC(fqs_duration, "Duration of fqs bursts (us), 0 to disable");
|
@ -41,6 +41,7 @@
|
|||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/completion.h>
|
#include <linux/completion.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
@ -56,11 +57,17 @@
|
|||||||
#include <linux/ftrace_event.h>
|
#include <linux/ftrace_event.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
|
|
||||||
#include "rcutree.h"
|
#include "tree.h"
|
||||||
#include <trace/events/rcu.h>
|
#include <trace/events/rcu.h>
|
||||||
|
|
||||||
#include "rcu.h"
|
#include "rcu.h"
|
||||||
|
|
||||||
|
MODULE_ALIAS("rcutree");
|
||||||
|
#ifdef MODULE_PARAM_PREFIX
|
||||||
|
#undef MODULE_PARAM_PREFIX
|
||||||
|
#endif
|
||||||
|
#define MODULE_PARAM_PREFIX "rcutree."
|
||||||
|
|
||||||
/* Data structures. */
|
/* Data structures. */
|
||||||
|
|
||||||
static struct lock_class_key rcu_node_class[RCU_NUM_LVLS];
|
static struct lock_class_key rcu_node_class[RCU_NUM_LVLS];
|
||||||
@ -3298,7 +3305,7 @@ static void __init rcu_init_one(struct rcu_state *rsp,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Compute the rcu_node tree geometry from kernel parameters. This cannot
|
* Compute the rcu_node tree geometry from kernel parameters. This cannot
|
||||||
* replace the definitions in rcutree.h because those are needed to size
|
* replace the definitions in tree.h because those are needed to size
|
||||||
* the ->node array in the rcu_state structure.
|
* the ->node array in the rcu_state structure.
|
||||||
*/
|
*/
|
||||||
static void __init rcu_init_geometry(void)
|
static void __init rcu_init_geometry(void)
|
||||||
@ -3393,4 +3400,4 @@ void __init rcu_init(void)
|
|||||||
rcu_cpu_notify(NULL, CPU_UP_PREPARE, (void *)(long)cpu);
|
rcu_cpu_notify(NULL, CPU_UP_PREPARE, (void *)(long)cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "rcutree_plugin.h"
|
#include "tree_plugin.h"
|
@ -28,7 +28,7 @@
|
|||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/oom.h>
|
#include <linux/oom.h>
|
||||||
#include <linux/smpboot.h>
|
#include <linux/smpboot.h>
|
||||||
#include "time/tick-internal.h"
|
#include "../time/tick-internal.h"
|
||||||
|
|
||||||
#define RCU_KTHREAD_PRIO 1
|
#define RCU_KTHREAD_PRIO 1
|
||||||
|
|
||||||
@ -1133,7 +1133,7 @@ void exit_rcu(void)
|
|||||||
|
|
||||||
#ifdef CONFIG_RCU_BOOST
|
#ifdef CONFIG_RCU_BOOST
|
||||||
|
|
||||||
#include "rtmutex_common.h"
|
#include "../rtmutex_common.h"
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_TRACE
|
#ifdef CONFIG_RCU_TRACE
|
||||||
|
|
@ -44,7 +44,7 @@
|
|||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
|
|
||||||
#define RCU_TREE_NONCORE
|
#define RCU_TREE_NONCORE
|
||||||
#include "rcutree.h"
|
#include "tree.h"
|
||||||
|
|
||||||
static int r_open(struct inode *inode, struct file *file,
|
static int r_open(struct inode *inode, struct file *file,
|
||||||
const struct seq_operations *op)
|
const struct seq_operations *op)
|
@ -53,6 +53,12 @@
|
|||||||
|
|
||||||
#include "rcu.h"
|
#include "rcu.h"
|
||||||
|
|
||||||
|
MODULE_ALIAS("rcupdate");
|
||||||
|
#ifdef MODULE_PARAM_PREFIX
|
||||||
|
#undef MODULE_PARAM_PREFIX
|
||||||
|
#endif
|
||||||
|
#define MODULE_PARAM_PREFIX "rcupdate."
|
||||||
|
|
||||||
module_param(rcu_expedited, int, 0);
|
module_param(rcu_expedited, int, 0);
|
||||||
|
|
||||||
#ifdef CONFIG_PREEMPT_RCU
|
#ifdef CONFIG_PREEMPT_RCU
|
Loading…
Reference in New Issue
Block a user