Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp32024ybb; Fri, 27 Mar 2020 15:27:00 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtLbDnpSxNmUi7hbWj5deRIn4FKZI+Y18rJFcp/FdeEyWxv1aZJ5mgVEZKSVYBlkzqmBp76 X-Received: by 2002:a9d:5789:: with SMTP id q9mr754149oth.288.1585348020425; Fri, 27 Mar 2020 15:27:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585348020; cv=none; d=google.com; s=arc-20160816; b=x5DGUKpakMrbkuJqwsDPVhB165wIVU5UTBmHmCEDkk7/8NJeSMMkgwiTzTdDP+/vpA XfR/3Afh5C7ieFp3TevtBSW1eM1AcP8e6oqXWhZQ9VODpwAlr8Uq2v5NnWDVK5Ue18oP kg2keSHRAzeJfx1qWY04Fk4+mnWasQYXJIyETLl/oOHgGAI59/CuYDmi1mv0WxJ87/d3 0YMGbEJ6coqSLnwulrPKlhvzbmPvQlWU7lfQCxWueAqtQimNitnAmC1OT7U0P7UTYVAw d0B4+dvWJ+Z0yypaJ7kEEh3JbLXDyrvzcBIm6rz4dk088g3uLiQQXZ7Uf1oAPipBa3zI gqew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=CkP81L8IAvM4mXgwOwYpxQ677Wc27syRpfYmLsdR6bY=; b=dNiafOn1MO0zT2QZl8+uZQ+cZly54msO2Wa2oZOABGR9ckTRgg4dJ72MKc9UmG6Erx PU6esnfLkRuu3iFagBbSHoJHBOORsH8g7jZ+azqLsN5sSYQRDkOIfWAmilq3ztioX0fJ /JA9kwcXJYgdeQNd0syw+gIcAVoVaK6ZfPSpuvTR7ffqXIqblpDeeVcbJNcgzAD9/QvF gIU4gPrHkON2+zCNA78BWhVTywcXZMBobJOkW98T4De7t3Iy40A6UU7wKH9uJuNtA5Yg IDHOPbk3rkj6XlFyds6dFwVhoy3kEUJ9nsrwThhIs0wnAmkRYaMrEdjZHL07l3P5iRpz zRDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Z+BrxhK3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b9si3911719ots.148.2020.03.27.15.26.47; Fri, 27 Mar 2020 15:27:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Z+BrxhK3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728056AbgC0WZq (ORCPT + 99 others); Fri, 27 Mar 2020 18:25:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:43370 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727879AbgC0WZJ (ORCPT ); Fri, 27 Mar 2020 18:25:09 -0400 Received: from paulmck-ThinkPad-P72.home (50-39-105-78.bvtn.or.frontiernet.net [50.39.105.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0AE4D21556; Fri, 27 Mar 2020 22:25:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585347908; bh=C0mR+oVSGsBrT/NnbUHWzDYpCT/o9GJoOYQwwGwT130=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z+BrxhK3aZM6YhMrgIFxH+BCHwzcNaUySEDGnjfPyPf1qUL1HyFJ037IH9b661Ds0 4QQtAzoOyWgboBFh27sedGCi4aK4jW2hzx3MRII09LaXLaocI5bc5FTyJooJxXhX5W BMpiM1RPZ4A5wzdF6sbNJtUF7RbFywAEJ+nj628g= From: paulmck@kernel.org To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org, "Paul E. McKenney" Subject: [PATCH v3 tip/core/rcu 29/34] rcu-tasks: Handle the running-offline idle-task special case Date: Fri, 27 Mar 2020 15:24:51 -0700 Message-Id: <20200327222456.12470-29-paulmck@kernel.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20200327222346.GA12082@paulmck-ThinkPad-P72> References: <20200327222346.GA12082@paulmck-ThinkPad-P72> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Paul E. McKenney" The idle task corresponding to an offline CPU can appear to be running while that CPU is offline. This commit therefore adds checks for this situation, treating it as a quiescent state. Because the tasklist scan and the holdout-list scan now exclude CPU-hotplug operations, readers on the CPU-hotplug paths are still waited for. Signed-off-by: Paul E. McKenney --- kernel/rcu/tasks.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index df6e785..d1fa7715 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -818,16 +818,20 @@ static bool trc_inspect_reader(struct task_struct *t, void *arg) { int cpu = task_cpu(t); bool in_qs = false; + bool ofl = cpu_is_offline(cpu); if (task_curr(t)) { + WARN_ON_ONCE(ofl & !is_idle_task(t)); + // If no chance of heavyweight readers, do it the hard way. - if (!IS_ENABLED(CONFIG_TASKS_TRACE_RCU_READ_MB)) + if (!ofl && !IS_ENABLED(CONFIG_TASKS_TRACE_RCU_READ_MB)) return false; // If heavyweight readers are enabled on the remote task, // we can inspect its state despite its currently running. // However, we cannot safely change its state. - if (!rcu_dynticks_zero_in_eqs(cpu, &t->trc_reader_nesting)) + if (!ofl && // Check for "running" idle tasks on offline CPUs. + !rcu_dynticks_zero_in_eqs(cpu, &t->trc_reader_nesting)) return false; // No quiescent state, do it the hard way. in_qs = true; } else { -- 2.9.5