diff options
-rw-r--r-- | kernel/rcutree.c | 23 | ||||
-rw-r--r-- | kernel/rcutree_plugin.h | 3 |
2 files changed, 14 insertions, 12 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index eb6e731088a0..4e24399cabcf 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -198,7 +198,7 @@ DEFINE_PER_CPU(struct rcu_dynticks, rcu_dynticks) = { | |||
198 | }; | 198 | }; |
199 | #endif /* #ifdef CONFIG_NO_HZ */ | 199 | #endif /* #ifdef CONFIG_NO_HZ */ |
200 | 200 | ||
201 | static int blimit = 10; /* Maximum callbacks per softirq. */ | 201 | static int blimit = 10; /* Maximum callbacks per rcu_do_batch. */ |
202 | static int qhimark = 10000; /* If this many pending, ignore blimit. */ | 202 | static int qhimark = 10000; /* If this many pending, ignore blimit. */ |
203 | static int qlowmark = 100; /* Once only this many pending, use blimit. */ | 203 | static int qlowmark = 100; /* Once only this many pending, use blimit. */ |
204 | 204 | ||
@@ -1261,7 +1261,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) | |||
1261 | 1261 | ||
1262 | local_irq_restore(flags); | 1262 | local_irq_restore(flags); |
1263 | 1263 | ||
1264 | /* Re-raise the RCU softirq if there are callbacks remaining. */ | 1264 | /* Re-invoke RCU core processing if there are callbacks remaining. */ |
1265 | if (cpu_has_callbacks_ready_to_invoke(rdp)) | 1265 | if (cpu_has_callbacks_ready_to_invoke(rdp)) |
1266 | invoke_rcu_core(); | 1266 | invoke_rcu_core(); |
1267 | } | 1267 | } |
@@ -1269,7 +1269,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) | |||
1269 | /* | 1269 | /* |
1270 | * Check to see if this CPU is in a non-context-switch quiescent state | 1270 | * Check to see if this CPU is in a non-context-switch quiescent state |
1271 | * (user mode or idle loop for rcu, non-softirq execution for rcu_bh). | 1271 | * (user mode or idle loop for rcu, non-softirq execution for rcu_bh). |
1272 | * Also schedule the RCU softirq handler. | 1272 | * Also schedule RCU core processing. |
1273 | * | 1273 | * |
1274 | * This function must be called with hardirqs disabled. It is normally | 1274 | * This function must be called with hardirqs disabled. It is normally |
1275 | * invoked from the scheduling-clock interrupt. If rcu_pending returns | 1275 | * invoked from the scheduling-clock interrupt. If rcu_pending returns |
@@ -1448,9 +1448,9 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed) | |||
1448 | #endif /* #else #ifdef CONFIG_SMP */ | 1448 | #endif /* #else #ifdef CONFIG_SMP */ |
1449 | 1449 | ||
1450 | /* | 1450 | /* |
1451 | * This does the RCU processing work from softirq context for the | 1451 | * This does the RCU core processing work for the specified rcu_state |
1452 | * specified rcu_state and rcu_data structures. This may be called | 1452 | * and rcu_data structures. This may be called only from the CPU to |
1453 | * only from the CPU to whom the rdp belongs. | 1453 | * whom the rdp belongs. |
1454 | */ | 1454 | */ |
1455 | static void | 1455 | static void |
1456 | __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) | 1456 | __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) |
@@ -1487,7 +1487,7 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) | |||
1487 | } | 1487 | } |
1488 | 1488 | ||
1489 | /* | 1489 | /* |
1490 | * Do softirq processing for the current CPU. | 1490 | * Do RCU core processing for the current CPU. |
1491 | */ | 1491 | */ |
1492 | static void rcu_process_callbacks(struct softirq_action *unused) | 1492 | static void rcu_process_callbacks(struct softirq_action *unused) |
1493 | { | 1493 | { |
@@ -1503,10 +1503,11 @@ static void rcu_process_callbacks(struct softirq_action *unused) | |||
1503 | } | 1503 | } |
1504 | 1504 | ||
1505 | /* | 1505 | /* |
1506 | * Wake up the current CPU's kthread. This replaces raise_softirq() | 1506 | * Schedule RCU callback invocation. If the specified type of RCU |
1507 | * in earlier versions of RCU. Note that because we are running on | 1507 | * does not support RCU priority boosting, just do a direct call, |
1508 | * the current CPU with interrupts disabled, the rcu_cpu_kthread_task | 1508 | * otherwise wake up the per-CPU kernel kthread. Note that because we |
1509 | * cannot disappear out from under us. | 1509 | * are running on the current CPU with interrupts disabled, the |
1510 | * rcu_cpu_kthread_task cannot disappear out from under us. | ||
1510 | */ | 1511 | */ |
1511 | static void invoke_rcu_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) | 1512 | static void invoke_rcu_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) |
1512 | { | 1513 | { |
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index a90bf3c17492..ecd48a2e3eeb 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h | |||
@@ -1478,7 +1478,8 @@ static int rcu_cpu_kthread_should_stop(int cpu) | |||
1478 | 1478 | ||
1479 | /* | 1479 | /* |
1480 | * Per-CPU kernel thread that invokes RCU callbacks. This replaces the | 1480 | * Per-CPU kernel thread that invokes RCU callbacks. This replaces the |
1481 | * earlier RCU softirq. | 1481 | * RCU softirq used in flavors and configurations of RCU that do not |
1482 | * support RCU priority boosting. | ||
1482 | */ | 1483 | */ |
1483 | static int rcu_cpu_kthread(void *arg) | 1484 | static int rcu_cpu_kthread(void *arg) |
1484 | { | 1485 | { |