From nobody Thu Apr 2 03:25:20 2026 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DB023033E3 for ; Wed, 25 Mar 2026 09:09:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774429791; cv=none; b=N7WxDnrMib/AAHhYxfQSv5REVpXF5kpBPLl8wh92wIIY/wdd3cU9cNLodueku0begX8YAXGeeSPRyvHFhrmr+lDaHHD4gcmxSSfUbR2z9f/WTHh5F7VtFekUNPBVPH5SCUOnBA2uCXT2+hrYeTuFLEGoiSxvvv9pncXDCtUg0wI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774429791; c=relaxed/simple; bh=orBqlTSU08SBfpvoR+5o8LS2QT5TANQSy6dJ/409s5I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N5gQt8P5hkE81D9Rjk9pUgQkrygodsRM7g0FORn2HI5NLF7/uTsgIEEyCTFWD/xmK9cMXHoTrFLWBTegGnrlmzO2IQMG7Leidd41itJ0G9PJkOyVEOGt3qZe0FP9SS1iNvSq4xrDlyIXxQFGiiaJtlKEDPmujFpDZeNl4bGp3VA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pAg/TD4l; arc=none smtp.client-ip=74.125.82.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pAg/TD4l" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-2b4520f6b32so2547258eec.0 for ; Wed, 25 Mar 2026 02:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774429789; x=1775034589; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LWZZ6ePUrfQHB8Z/JVxCsE1F+0gZz3S/duMH4Wpbiuk=; b=pAg/TD4lr5ll1e/tBegxTmkuPrYjZUZCks4h3KvkokORLdnGGO1Q1/PqC5/rIoohXK WAK9SY/cI9oGhCvMRqmlj99eAFIjWpk9Jbyie/msj2Xu20jKh7fRGXfNuc+CnHzPm0U/ n3fiAiG34Z+FP5gPt+OWPWd/f3XYMMlwCFW6R7VH7l9TfhcPa2OdXvBz8hDw7sctJkO3 FMaGIY9IkMwLsCIWwd09WvbDBxIg167aSSctaTgz0WYwKHChlJCpZ6oXf7TsoFlcf4G+ MgEK72ZZFfOe9T1NhmBufvCvYfhzJBTCLbsRaDpQ3BrZjaNMJ0P/2dOLaTZIlW5OpFTw PFrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774429789; x=1775034589; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LWZZ6ePUrfQHB8Z/JVxCsE1F+0gZz3S/duMH4Wpbiuk=; b=IfyNkgpPNtv50aYlWEHccIJnK3J5tIRm+fLC/RKrJlWQgPcFo17WXXliQXk/8TueZN RnFUE4PoRKsTw7SCUx70ih3OPy/tKAcKhEkfmXB9AkClCGZYvIi17pPegi5uTDMeIWb2 uJeZQVyVaNEzuWMpsJZLRqZ9kcSt9sbj2d00m92CUeGO3UUQ365Bfixa92wLlBoC5IAQ Qe0hsTwn2bJHQ1r7S1ytjBaB2ArNyAsQwmA+QiDyEuXlzX1MzqQnNU7A0qBQnW0a7LM2 BYsDiTZMeBoTSO1BSy9zh2aN6erIDbk7Gj2iSAlTOYEAdkJ4m1ap21Wqsvu09Zeool6q N0xg== X-Gm-Message-State: AOJu0Yx+gjDAT6Cl0bR/FjZqu3bkgKlTw5JvDTzEm7EmkyvoNqzZSS2j JBMUK/0sGqiwKAAUpipGUwtG0NyZnIHTfkSQ3VKTGpKZLpCGE2Fb4COu X-Gm-Gg: ATEYQzzQX5uWLoW6Uk69g+J9asL9P0Io7sAEEhNFOzQg5ael7w8YNX6ZM1IV+rUQUem 136XyQPb9H74ZMHSOzyVNSxqV8zaUJqB8OS2vwJCF2dQjg3avL8ZOC7PjE9Cy5kKAW5B8bXIQhP +WrMdsRncRqb3O0XLhys69ko5XifFRKFmRFJmdLBMHS8LSsNTfbvOElaKusVAVIoOCztGnlaS5K kc4ht19nx/FBOS+dOF8FMxrnDelm9NB2tKZIr01nWA4AKT1zoXTST9LtDDQKjk7rXm/l3I8bCoA p3NNGjN+SDLKGp43vgNy938r9ydfDh64q8PM//jGOjnREhzFRqKGevbHB2fCdeKcQwh82zV/DnI 2BJbWxrNi3QUSaqxQYaFxueqjNrM7E3/fq2AzfBrVco3jKPRJP3UVKLrb93JSvK2kkgVjC7Vtwv h/1GVLV8Gb5UOqey14 X-Received: by 2002:a05:7300:b505:b0:2ba:a60a:15e6 with SMTP id 5a478bee46e88-2c15d3db165mr1328179eec.16.1774429789468; Wed, 25 Mar 2026 02:09:49 -0700 (PDT) Received: from wujing. ([74.48.213.230]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c159e25dc7sm2786389eec.27.2026.03.25.02.09.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 02:09:49 -0700 (PDT) From: Qiliang Yuan Date: Wed, 25 Mar 2026 17:09:32 +0800 Subject: [PATCH 01/15] sched/isolation: Support dynamic allocation for housekeeping masks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-dhei-v12-final-v1-1-919cca23cadf@gmail.com> References: <20260325-dhei-v12-final-v1-0-919cca23cadf@gmail.com> In-Reply-To: <20260325-dhei-v12-final-v1-0-919cca23cadf@gmail.com> To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Thomas Gleixner , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Tejun Heo , Andrew Morton , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Johannes Weiner , Zi Yan , Anna-Maria Behnsen , Ingo Molnar , Shuah Khan Cc: linux-kernel@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Qiliang Yuan X-Mailer: b4 0.13.0 The existing housekeeping infrastructure uses a single static cpumask for all isolation types. This prevents independent runtime reconfiguration of different services (like RCU vs. timers). Introduce dynamic allocation for housekeeping masks to support DHEI. This allows subsequent patches to manage service-specific masks independently at runtime. Signed-off-by: Qiliang Yuan --- kernel/sched/isolation.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index 3ad0d6df6a0a2..67a5ff273ea08 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -8,6 +8,7 @@ * */ #include +#include #include "sched.h" =20 enum hk_flags { @@ -16,6 +17,7 @@ enum hk_flags { HK_FLAG_KERNEL_NOISE =3D BIT(HK_TYPE_KERNEL_NOISE), }; =20 +static DEFINE_MUTEX(housekeeping_mutex); DEFINE_STATIC_KEY_FALSE(housekeeping_overridden); EXPORT_SYMBOL_GPL(housekeeping_overridden); =20 @@ -105,8 +107,14 @@ void __init housekeeping_init(void) static void __init housekeeping_setup_type(enum hk_type type, cpumask_var_t housekeeping_staging) { + unsigned int gfp =3D GFP_KERNEL; + + if (!slab_is_available()) + gfp =3D GFP_NOWAIT; + + if (!housekeeping.cpumasks[type]) + alloc_cpumask_var(&housekeeping.cpumasks[type], gfp); =20 - alloc_bootmem_cpumask_var(&housekeeping.cpumasks[type]); cpumask_copy(housekeeping.cpumasks[type], housekeeping_staging); } @@ -116,6 +124,10 @@ static int __init housekeeping_setup(char *str, unsign= ed long flags) cpumask_var_t non_housekeeping_mask, housekeeping_staging; unsigned int first_cpu; int err =3D 0; + unsigned int gfp =3D GFP_KERNEL; + + if (!slab_is_available()) + gfp =3D GFP_NOWAIT; =20 if ((flags & HK_FLAG_KERNEL_NOISE) && !(housekeeping.flags & HK_FLAG_KERN= EL_NOISE)) { if (!IS_ENABLED(CONFIG_NO_HZ_FULL)) { @@ -125,13 +137,17 @@ static int __init housekeeping_setup(char *str, unsig= ned long flags) } } =20 - alloc_bootmem_cpumask_var(&non_housekeeping_mask); + if (!alloc_cpumask_var(&non_housekeeping_mask, gfp)) + return 0; + if (cpulist_parse(str, non_housekeeping_mask) < 0) { pr_warn("Housekeeping: nohz_full=3D or isolcpus=3D incorrect CPU range\n= "); goto free_non_housekeeping_mask; } =20 - alloc_bootmem_cpumask_var(&housekeeping_staging); + if (!alloc_cpumask_var(&housekeeping_staging, gfp)) + goto free_non_housekeeping_mask; + cpumask_andnot(housekeeping_staging, cpu_possible_mask, non_housekeeping_mask); =20 @@ -203,9 +219,9 @@ static int __init housekeeping_setup(char *str, unsigne= d long flags) err =3D 1; =20 free_housekeeping_staging: - free_bootmem_cpumask_var(housekeeping_staging); + free_cpumask_var(housekeeping_staging); free_non_housekeeping_mask: - free_bootmem_cpumask_var(non_housekeeping_mask); + free_cpumask_var(non_housekeeping_mask); =20 return err; } --=20 2.43.0