Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp736819ybz; Wed, 15 Apr 2020 17:51:50 -0700 (PDT) X-Google-Smtp-Source: APiQypIpkPo5dj03V7/VcZKdu67Z2h/tzbcpPWYZSp4W19Z/x3CS7k+Km1LDLNqNZnOItxNcTPq/ X-Received: by 2002:a05:6402:1587:: with SMTP id c7mr8539380edv.61.1586998310265; Wed, 15 Apr 2020 17:51:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586998310; cv=none; d=google.com; s=arc-20160816; b=tgIcwcZmT2BA4pB3V94XsDGY8/JQQS82vfpbYjcYggJRiIPjHWLjPu3h/gLIfeY+cm cbu2aRCYarsc2M4OPVTXENieh5iuO9erSaupnWvrH+C88oW801tXOL2eystJdY3xdESU mR9tQx4CRIZzO/p1WW8SoeSj4hMnnIpqLVW3JBw4CLMvE2J0w+h6Pzou37U08Bwo3+gw D2tK9ut9bvcCbo5NUJnBSw/Y0tX+KC8J9PfdUwuKaTDBvBqSDC/M7PBph+XtBf2JMwxF 5LBqHxJsTGe5Nq6TUhGyAB/gCwRcNjagcDd8xJqElDs0//lOjxDJ1hhh9hn5VOKNydZD lYvQ== 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=fx2NnvmbOzqgCs9STOhLrHTQdMLV8arqQeXJX6NYwXA=; b=iN6V/Euy2kxUsnXYCH5+AK67SbFSuzV1PvT0bA9mvskQzcUH7ka4L+Lp2WA4hIg7tf Jroe9FpCErj2/4G1RPBIe0XM4gXGVGKY1PJJj7w0tUj5UglqVnd+OmML/dNrRYHuN07p 0kaQ6xT8eeesAasw8cUKztvjUE6ASVnt9j/uxTgt89ThIdM5/E5RbioF5u9S3ELj9cZC biOpgo3+2eW6R4sKCvtZtKBltLI8mNG5qkk5ResFVgkpZgD/bAW3zgWmrlydpNcqWh+2 Lkog4grsfwTnCtjqaTFQXNfhCYBOdHbuMhMDKKgaanavnh38qbObfNK6MBKgclsfZA+q h0iA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=D1csMPNJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id n19si3694257edq.264.2020.04.15.17.51.26; Wed, 15 Apr 2020 17:51:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=D1csMPNJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S2441490AbgDOSV4 (ORCPT + 99 others); Wed, 15 Apr 2020 14:21:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:37806 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2441392AbgDOSTy (ORCPT ); Wed, 15 Apr 2020 14:19:54 -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 DD80321D7D; Wed, 15 Apr 2020 18:19:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586974794; bh=rL98/HL+UUL0mOeFE8KjUqsAvfPDg01xPNXPs8cMccg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D1csMPNJtZhuaz2V1Vpli/hx3AngkOTaIGHKVXERRoMNNeGk/uEFNSx0X7/f4MRSo mhn30WAA7ukBnaDy+vAjOR1AvxMOGvgUz5eZU4zARXJftunw5SgozCa/kSLiHw6HjU N3nSOCcBwlAq6+T2PVMJON2Li2d1DzImG0heFPAM= 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 v4 tip/core/rcu 30/38] rcu-tasks: Handle the running-offline idle-task special case Date: Wed, 15 Apr 2020 11:19:33 -0700 Message-Id: <20200415181941.11653-30-paulmck@kernel.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20200415181856.GA11037@paulmck-ThinkPad-P72> References: <20200415181856.GA11037@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 e8c03bd..1888a49 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