From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A87A9C5ACB3 for ; Tue, 21 Nov 2023 03:56:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2171D6B0274; Mon, 20 Nov 2023 22:56:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C47D6B0375; Mon, 20 Nov 2023 22:56:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 08D456B0377; Mon, 20 Nov 2023 22:56:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id EA4C56B0274 for ; Mon, 20 Nov 2023 22:56:04 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C4B9380790 for ; Tue, 21 Nov 2023 03:56:04 +0000 (UTC) X-FDA: 81480598248.19.767498F Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by imf13.hostedemail.com (Postfix) with ESMTP id 24A3C20009 for ; Tue, 21 Nov 2023 03:56:02 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=F8cFQOHn; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of qiang.zhang1211@gmail.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=qiang.zhang1211@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700538963; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=UPkr6nw1hCX7BQuQqXYMaPI/OcaSnPTBXctNF8l1TJE=; b=rtg911Q7nA9aXtJRjLemMRW5+v71+lX79R6GP3Ptt7JQADDBrb/YBeQLZKufoH+o8v2UaH uJGLriRvWALifZfqaIP54oGvoUQ3BsnX+tuxbm5eHzKlqAbVwD54x8LSySO2FBRfbsWDmz Fk0KaR3AMKH+URDCKp6Z7G/j4Grb0VM= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=F8cFQOHn; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of qiang.zhang1211@gmail.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=qiang.zhang1211@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700538963; a=rsa-sha256; cv=none; b=MTsbE6dFzxDT1R6hehxaaY7STT4CvCB+DNBWbix7Unl7mBmRofhNVpwQAgOQWj6F7Ri4qJ HNc1oH7cCm+bXM+/rXIIYME4nnqBxBYGigX1iEKRwmzNdRJj/PuhdUPFtOjHDkU1k8cGwm tc3ZzprXIMNzstw66nsdgwY3CbuU2WQ= Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-280260db156so4114719a91.2 for ; Mon, 20 Nov 2023 19:56:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700538962; x=1701143762; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UPkr6nw1hCX7BQuQqXYMaPI/OcaSnPTBXctNF8l1TJE=; b=F8cFQOHn3p8yp4x1qyaDF3DPSkKmop8ma9vQpg7cWFn96ifMGUNDbIr0x0P3mUGLPN M2u9gKpVWZZfyBoCYKrvTDTbBh1XKW/eccvn1dkq8Oathrj2UkKaRiGMBDCXvVgDSMfP /U8EHUkNzSbxHBGj4FMhtXkb+FzYr8k8rb1ya2k6nfGwh6EpJqvPas9HqVPVVMDT8izN TSOjzPOJCnSf42wPRj+wKHN2CEaEWKDnZu9CotLl/4JIVCBZiOyS4Ipyq9GgGxnhZuIZ lrHUax7yUcXNoDlbKU8hd20lyEG605PYpv25rERjW8kOtfYQCLt3vpDgXchMbzBjYIqg JYJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700538962; x=1701143762; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UPkr6nw1hCX7BQuQqXYMaPI/OcaSnPTBXctNF8l1TJE=; b=rDD8P+4+apGjR1SRfFfWSmzFEzL/8KNBAivoQHh3ncMPpgC/zthjg6rDSg86ITPPkf xbSf9i4gqa/K6XMSVtYo78kIDIR8rqMJjrXg1r3hvwATY1J5AWKxE7R6E00PbGHErk5z KEYMeBL3u34C6/sNl898d5OFKKV6wRebKvRlqct264hEzlCsgRPSrf8nM5t5xlG0FwU7 kNeghdTcrfLbYqp0yj1zlZF9u0+Xe2T/eRTUJpUTYaD7Ib9rDMoH2IcDpVzML0PZ7+Pt i0n7iSYUpJO9xprOMFtUiQ+Ems9gkWjwi7Kj2gxY4R3J+da14v5HQ7/Nj3iLqYvCe4Cp 6v7w== X-Gm-Message-State: AOJu0Yw4MGf2Z5BmJQ1IdHxLA2aEDA39oltOI2tAZOkn4kMRduqKwLMt 0MC0MeikoD7igbQOD71iQ0/gnLgVMAsZ0AxteQQ= X-Google-Smtp-Source: AGHT+IGL9Y9wMGRSCR8hMUyYbq83CECbJMPBn3wXHz2lxBdOdjBZZozf+SIRtyKqaLFzX28Gn+Sb2EQASFwl+93xtlw= X-Received: by 2002:a17:90a:f181:b0:280:125:e52e with SMTP id bv1-20020a17090af18100b002800125e52emr9696878pjb.35.1700538961855; Mon, 20 Nov 2023 19:56:01 -0800 (PST) MIME-Version: 1.0 References: <20231107215742.363031-1-ankur.a.arora@oracle.com> <20231107215742.363031-49-ankur.a.arora@oracle.com> In-Reply-To: <20231107215742.363031-49-ankur.a.arora@oracle.com> From: Z qiang Date: Tue, 21 Nov 2023 11:55:50 +0800 Message-ID: Subject: Re: [RFC PATCH 48/86] rcu: handle quiescent states for PREEMPT_RCU=n To: Ankur Arora Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de, peterz@infradead.org, torvalds@linux-foundation.org, paulmck@kernel.org, linux-mm@kvack.org, x86@kernel.org, akpm@linux-foundation.org, luto@kernel.org, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, juri.lelli@redhat.com, vincent.guittot@linaro.org, willy@infradead.org, mgorman@suse.de, jon.grimm@amd.com, bharata@amd.com, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, jgross@suse.com, andrew.cooper3@citrix.com, mingo@kernel.org, bristot@kernel.org, mathieu.desnoyers@efficios.com, geert@linux-m68k.org, glaubitz@physik.fu-berlin.de, anton.ivanov@cambridgegreys.com, mattst88@gmail.com, krypton@ulrich-teichert.org, rostedt@goodmis.org, David.Laight@aculab.com, richard@nod.at, mjguzik@gmail.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Stat-Signature: oncqsfrmib7iwa4ob5wnoq11xibiwzwy X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 24A3C20009 X-HE-Tag: 1700538962-568421 X-HE-Meta: U2FsdGVkX1/Ss3Vkz96uwaN36H0IgGzpNvK2r3hGo594V7y0XFt9m/RZBx9ZuEiqWrDg6HVAKQVHS/Bq2OIAdAT8yiaVbOjRGqX53uNvhI3enwkL7BgQGAUGDYUiIzWaESRCzEP7KCpbXXYgFNv+J+UZ7Mep0BxHY/jiXbwO2lgBTxTeOpbNnFP74W2USXzRSKzqHjQ6L9dr9ko6cyNb5Z98LkCM/F/tBWzSMS0h0DSEo00U+QNAHdcVwdtUNDpT1Qo7aKSCR+EgA3YurfEyxKxzNi9bgsTgoVuc6kN3W+2xk+I/0IVIcOIgiRxoyHuafKCa3tZpcXKxi0IKAXkkKnsTLimJk17lBApJy1xdYYJ42MpeTLqvxMYloWAWgNuRbGK8ODaO4lDJIiGDEi8X066jxwUBA4BH9c2/Fl/X56NxRFqzgx+eW0jUFhipgSZCR1xkFtf6jTE8Y11uPDRM5Z9MfIqNggkhLSqrKyavL6ZletlfFgFRzksGXuz8rm67Benk480Lj7RUQWe6cPZe+j0NEbPaK/+WsXhYcel+7JN4lESFKe7H8CEFbtW1fpEz4mjirQI7Id9WUORSxxnptA8/a4vueOcXBb/UcCWQSfmGExMP9ttiPz/rKmr7NSsNf8CvWX/aHvveNabW3D/tSLHmfKBvWxA/jQUeLYfKlszxDoVE3kZ+eKaY7kZi2AWCdEsDKA6H9eDaMCcYcbAb+Ni1cUmppn5eUZdOrKparIiOdgm2thuzUFkZPxVn1Em+H6JG4Nte4chsLhcd32zfCyCA5lnyOGbw1mKrE81CHOnnNy42J6kkVkw0B/CFbPXhRrIvnjiP4/eBDfcWRju+St7GDBQOD7lCjxlqFlEd9EHAEn9sRIOnedn2eqqkKaJ3DnN3jxyRT0MPy33PqlGCkeyXhxN7OBvmDXpOe7ld+DzAC7se/dApBtdIE1iSunPeqb/NCJDPlXsfwKDB9el XIZsx7HN P0X4OA3+GlcRk5wngDQrbGdYrwlxJcEyGI3yzsW5bbo+Ugk0JdmTKbZKk6vu6HLkrP5mcmX5mIejaoqPBf0ggTQOpoeyFn9QJ8SPXbHMLpEkRQcULcEun/nx9E6PehruNcmtnWBh7RnlQHz2natjUy9vIzwRPd6W4NoWY5kBHHSMmaC48dl4tM5LVyx+F3lMWPYnqiKxMaYMQJ/6EuEpQPnFhVt8NsUTiRKBkiN0H1XPbMbmlEITsVdIGlX5AHGk06+yHDYM04uFCg3COyN6wgmB3UWRL5iee1vTmsAePbopVCIsWMG+Sp0QMtfQgBWLeLPFAqe9D3sKUzI15pHey0DHzJNYABXTkpzZAjiRnmsbCNcDDKsqOX6MJBNJp0j1SzJVbLStn5Kyq5co/pqH+o2XAFjLOXvfoDrBFIox4nzjpiWAAUCwMaGGg9aFNbuRCRGhnygRNCg4zLQCkaGFECXX4Sg6v5+rhDYpe4jCoWtCeYx3VXn6/z9VT0Eg/BydClhst X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: > > cond_resched() is used to provide urgent quiescent states for > read-side critical sections on PREEMPT_RCU=n configurations. > This was necessary because lacking preempt_count, there was no > way for the tick handler to know if we were executing in RCU > read-side critical section or not. > > An always-on CONFIG_PREEMPT_COUNT, however, allows the tick to > reliably report quiescent states. > > Accordingly, evaluate preempt_count() based quiescence in > rcu_flavor_sched_clock_irq(). > > Suggested-by: Paul E. McKenney > Signed-off-by: Ankur Arora > --- > kernel/rcu/tree_plugin.h | 3 ++- > kernel/sched/core.c | 15 +-------------- > 2 files changed, 3 insertions(+), 15 deletions(-) > > diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h > index f87191e008ff..618f055f8028 100644 > --- a/kernel/rcu/tree_plugin.h > +++ b/kernel/rcu/tree_plugin.h > @@ -963,7 +963,8 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp) > */ > static void rcu_flavor_sched_clock_irq(int user) > { > - if (user || rcu_is_cpu_rrupt_from_idle()) { > + if (user || rcu_is_cpu_rrupt_from_idle() || > + !(preempt_count() & (PREEMPT_MASK | SOFTIRQ_MASK))) { should ensure CONFIG_PREEMPT_COUNT=y ((IS_ENABLED(CONFIG_PREEMPT_COUNT) && !(preempt_count() & (PREEMPT_MASK | SOFTIRQ_MASK))) Thanks Zqiang > > /* > * Get here if this CPU took its interrupt from user > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index bf5df2b866df..15db5fb7acc7 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -8588,20 +8588,7 @@ int __sched _cond_resched(void) > preempt_schedule_common(); > return 1; > } > - /* > - * In preemptible kernels, ->rcu_read_lock_nesting tells the tick > - * whether the current CPU is in an RCU read-side critical section, > - * so the tick can report quiescent states even for CPUs looping > - * in kernel context. In contrast, in non-preemptible kernels, > - * RCU readers leave no in-memory hints, which means that CPU-bound > - * processes executing in kernel context might never report an > - * RCU quiescent state. Therefore, the following code causes > - * cond_resched() to report a quiescent state, but only when RCU > - * is in urgent need of one. > - */ > -#ifndef CONFIG_PREEMPT_RCU > - rcu_all_qs(); > -#endif > + > return 0; > } > EXPORT_SYMBOL(_cond_resched); > -- > 2.31.1 >