Received: by 2002:a05:6a10:83d0:0:0:0:0 with SMTP id o16csp85168pxh; Thu, 7 Apr 2022 14:48:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzoWLqEcqZILph6SgdhSjsf6em5YPIA4ktbKfo5dxW9INwGZeccb5OL64GH/DBAkMyyR1bN X-Received: by 2002:a17:90b:1d08:b0:1c7:3b51:8b41 with SMTP id on8-20020a17090b1d0800b001c73b518b41mr17923208pjb.210.1649368080419; Thu, 07 Apr 2022 14:48:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649368080; cv=none; d=google.com; s=arc-20160816; b=LYIvoIJmHsiGFnQsORfftlR9pck/+Aa6Z2PrFfUqADIBXtTJJLA5WZy2stSLAPzDid +7t1CoDghGAbNWyHfLqac/FFnT9/T1JqKe0q/SpcBKFVPgEpotla9B6OhBRs9PXdV/CD 1ucwGSi66YDQRcNB79VSD7cJhphb8VOMGpbaeBb8/mPsMHM9PLQYdLw6c0UdZHpJi5Eu 6MjZ7d+6F8pr8oJU6HXrQCXK+nBa91vS/8Cg5lBrvg/MhWyBE+8y9fuCHleWhvSaf4+B G6QeIIFDlralQHNKcWaJ+rOetoGzzJEFjDrV3vbOT3An9FWZMNy6wMEVrKJiPCdo/65Y OrFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=hxKxY+DBpoByF0mtjo+UB7bPjCEPBSOvES4J4XomWfw=; b=0U8P5Zkx1T7f0IJBnmP8YQ5iBssiXb2s7QeykvYAKdHJb8Ghy+WhV1P9T136ET7a1C k57f8uQAzV7t11cYUDyBuR0z7EjtuSHY+7BIWnDX3dM+T4BgqFFPX1NH4E+sYzmeY2k1 InLvKwF65M42ukgpP6a1NSO1cXIYbYyCCIMP7qY2g8GYSLfR5huyzgYfj1ZVo8uvlIeW DnFeAigbNiZKqkNVln++D4I3hsl2MT9GPRWtRtOOV9HnISnM9rbDYktQrNF7Y8xjoint aAiNn/cGyBrbPUHkc6UpvdxMC1WjqyKCwk7sKZWSVcoycJjcZvQMO+OvxU1oHpXzIRuJ HWgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=jwQg9dQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id 82-20020a630055000000b0039cc448271dsi3574893pga.571.2022.04.07.14.48.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Apr 2022 14:48:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=jwQg9dQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 760C617ABBD; Thu, 7 Apr 2022 14:08:10 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231152AbiDGVJ4 (ORCPT + 99 others); Thu, 7 Apr 2022 17:09:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230473AbiDGVJy (ORCPT ); Thu, 7 Apr 2022 17:09:54 -0400 Received: from mail-qv1-xf29.google.com (mail-qv1-xf29.google.com [IPv6:2607:f8b0:4864:20::f29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F8F817A2E2 for ; Thu, 7 Apr 2022 14:07:53 -0700 (PDT) Received: by mail-qv1-xf29.google.com with SMTP id b17so5987275qvf.12 for ; Thu, 07 Apr 2022 14:07:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=hxKxY+DBpoByF0mtjo+UB7bPjCEPBSOvES4J4XomWfw=; b=jwQg9dQrHOSiG8lPloLqQ/bp8O7sK5UOZyz9D/aVa4j2kiHcO2my5h+zwWBcJxgOC0 z6UbFO8G2TDI4B9chEJiAFxEa79J08iPbDo3ggVSuH2+rR9uPX++uhbY28MqAULtWQvO JoiusccmH4T9pSjjUbI19eDJ4crl6IHyUGXQk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=hxKxY+DBpoByF0mtjo+UB7bPjCEPBSOvES4J4XomWfw=; b=4btgZrOa2qJ6Gt1zeo85cjfAyYb8g9UgQ1XkQn37pW4lluNSg0cY6ufy8j44KR8pQT ssWezWk9agKlDEuFWLhA/y5mJmud6Gt7lhk8vqYRFaifkRfG/ZSOK7wpVTTo3TJdegR9 xkrD7kbw3C11PSE9NGsH35F2HWPdWKcjxA0O8UyTDoo2jU0heLIGRQeXXksYrwYd0mb7 4i8F13QQL5kkIgX5/xqZ3VeOvW3R+9cO8o4+rWwXGLlqjAhVzQhCZQV1Gj1IBnjkyR8b Jqvz3mywUssIGo3oUcm3MiDU/7jtRS3iJJYqTLWZPLI1bgwRAFAnikBqTkgMzeReSvcB BX8w== X-Gm-Message-State: AOAM532l/hlO/Bko2JmkQ+t0Wy0A1j6bkfZy2rDTRlTOj//moDxsqap7 5ZWwuGKQv61Ur8noF6RwfRAS75oqfoQ2wA== X-Received: by 2002:a05:6214:4017:b0:443:e335:efd3 with SMTP id kd23-20020a056214401700b00443e335efd3mr14132649qvb.131.1649365672835; Thu, 07 Apr 2022 14:07:52 -0700 (PDT) Received: from joelboxx.c.googlers.com.com (228.221.150.34.bc.googleusercontent.com. [34.150.221.228]) by smtp.gmail.com with ESMTPSA id d3-20020a05622a15c300b002eb9af4c945sm18230376qty.3.2022.04.07.14.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Apr 2022 14:07:52 -0700 (PDT) From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: Joel Fernandes , Josh Triplett , Lai Jiangshan , Mathieu Desnoyers , "Paul E. McKenney" , rcu@vger.kernel.org, Steven Rostedt Subject: [PATCH RFC] rcu/nocb: Provide default all-CPUs mask for RCU_NOCB_CPU=y Date: Thu, 7 Apr 2022 21:07:33 +0000 Message-Id: <20220407210734.2548973-1-joel@joelfernandes.org> X-Mailer: git-send-email 2.35.1.1178.g4f1659d476-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On systems with CONFIG_RCU_NOCB_CPU=y, there is no default mask provided which ends up not offloading any CPU. This patch removes yet another dependency from the bootloader having to know about RCU, about how many CPUs the system has, and about how to provide the mask. Basically, I think we should stop pretending that the user knows what they are doing :). In other words, if NO_CB_CPU is enabled, lets make use of it. My goal is to make RCU as zero-config as possible with sane defaults. If user wants to provide rcu_nocbs= or nohz_full= options, then those will take precedence and this patch will have no effect. I tested providing rcu_nocbs= option, ensuring that is preferred over this. Signed-off-by: Joel Fernandes --- kernel/rcu/tree_nocb.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index eeafb546a7a0..607fbf843467 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -1165,12 +1165,25 @@ EXPORT_SYMBOL_GPL(rcu_nocb_cpu_offload); void __init rcu_init_nohz(void) { int cpu; - bool need_rcu_nocb_mask = false; + bool need_rcu_nocb_mask = false, set_nocb_mask_all = false; struct rcu_data *rdp; + /* + * In case rcu_nocbs= was not passed on the kernel command line, + * provide a sane default by offloading all CPUs. This provides a + * sane default for rcu_nocbs and prevents users overlooking these + * details. + */ + if (!rcu_nocb_is_setup) { + need_rcu_nocb_mask = true; + set_nocb_mask_all = true; + } + #if defined(CONFIG_NO_HZ_FULL) - if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask)) + if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask)) { need_rcu_nocb_mask = true; + set_nocb_mask_all = false; /* NO_HZ_FULL provides its own mask. */ + } #endif /* #if defined(CONFIG_NO_HZ_FULL) */ if (need_rcu_nocb_mask) { @@ -1191,6 +1204,9 @@ void __init rcu_init_nohz(void) cpumask_or(rcu_nocb_mask, rcu_nocb_mask, tick_nohz_full_mask); #endif /* #if defined(CONFIG_NO_HZ_FULL) */ + if (set_nocb_mask_all) + cpumask_setall(rcu_nocb_mask); + if (!cpumask_subset(rcu_nocb_mask, cpu_possible_mask)) { pr_info("\tNote: kernel parameter 'rcu_nocbs=', 'nohz_full', or 'isolcpus=' contains nonexistent CPUs.\n"); cpumask_and(rcu_nocb_mask, cpu_possible_mask, -- 2.35.1.1178.g4f1659d476-goog