lkml.org 
[lkml]   [2011]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 38/55] rcu: Prohibit grace periods during early boot
    Date
    From: Paul E. McKenney <paul.mckenney@linaro.org>

    Greater use of RCU during early boot (before the scheduler is operating)
    is causing RCU to attempt to start grace periods during that time, which
    in turn is resulting in both RCU and the callback functions attempting
    to use the scheduler before it is ready.

    This commit prevents these problems by prohibiting RCU grace periods
    until after the scheduler has spawned the first non-idle task.

    Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    kernel/rcutree.c | 7 +++++--
    1 files changed, 5 insertions(+), 2 deletions(-)

    diff --git a/kernel/rcutree.c b/kernel/rcutree.c
    index 0051dbf..9970116 100644
    --- a/kernel/rcutree.c
    +++ b/kernel/rcutree.c
    @@ -838,8 +838,11 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
    struct rcu_data *rdp = this_cpu_ptr(rsp->rda);
    struct rcu_node *rnp = rcu_get_root(rsp);

    - if (!cpu_needs_another_gp(rsp, rdp) || rsp->fqs_active) {
    - if (cpu_needs_another_gp(rsp, rdp))
    + if (!rcu_scheduler_fully_active ||
    + !cpu_needs_another_gp(rsp, rdp) ||
    + rsp->fqs_active) {
    + if (rcu_scheduler_fully_active &&
    + cpu_needs_another_gp(rsp, rdp))
    rsp->fqs_need_gp = 1;
    if (rnp->completed == rsp->completed) {
    raw_spin_unlock_irqrestore(&rnp->lock, flags);
    --
    1.7.3.2


    \
     
     \ /
      Last update: 2011-09-07 08:33    [W:4.066 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site