From nobody Mon Feb 9 14:33:14 2026 Received: from mail-dl1-f43.google.com (mail-dl1-f43.google.com [74.125.82.43]) (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 1A0332D781B for ; Fri, 6 Feb 2026 07:06:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770361609; cv=none; b=qBfjtYOwIB/HNsNjY2NpN594h1tffODeAAPXHJQi9qeolwJiP4ubfsMlXy7Q+HmYyfKLhUK1KZiABgG9sS0as8NQ2ezEDsl9k1+ZXcmu30e6EJ1wwssCfqCs1Fr76gZNKInJvVorDsZ0TLUSih6SNwcUiWIbJskoXTOnxE+7uaw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770361609; c=relaxed/simple; bh=28SwfWNF2pPonaYGLUdwZIYTQscIfrvAugzJGAuI9IM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cCQDc6kdyBGCkhCRaE+ztDWGP09D5UGTEQvl0o6Xys09gHFZrslVa3tNX+vI+v5uKtdfSj+mTHe5xXMJUcceTqyNh7QIytCDPhbGNz9Ark+eVxDD8Y/0kCZjy1Fu+0j+P+GWuNL9rs/HDja8q5cwDD4uoZPvS2j5kbGGjG6Xdus= 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=kbmSbw2h; arc=none smtp.client-ip=74.125.82.43 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="kbmSbw2h" Received: by mail-dl1-f43.google.com with SMTP id a92af1059eb24-1233b953bebso4470817c88.1 for ; Thu, 05 Feb 2026 23:06:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770361608; x=1770966408; 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=e1sUxC0YZUR64lsfhayk4QokW4yT43rWvxMvoedrPqg=; b=kbmSbw2hYbNlmGl2Mxuslh85IqgJWXCS/FJhL2vamxdul5q3tQScKtxSjSqDPtZVAy rNDmNNm+FMC0E2KfBBZ5Ak8A7/2PqR5xX/kJiV/2kFcXEsRCi+c49/g/4l5pqR3uOeln kCCQxrCGeipPN+ZvJOS3clLOELJcY925JbsWj18EyzkhK8NQLNAc50/vK7HseeEIy7A5 sduMilg3NzYso180ISqK+UNwSW+e28dJGkbZhvclSIQ4E/IOQ2KQTbv4Q+qYMQAwV2vp DH5x6AC57lBrX7RYeEU2OqY15T2qfs6PE1/0ET8iYWjWBlVuVnz4AGQMNL778fZ0nI4r nxPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770361608; x=1770966408; 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=e1sUxC0YZUR64lsfhayk4QokW4yT43rWvxMvoedrPqg=; b=c6fp37DlR3ugxtqmr/56oVa3XTzhikp9tt3t0MiA5OS/BsoresyP+3Cz5YGiY1e0i1 2DVpjC6TNgEKt2bFHX8dJmnABvT+4BOehz6EXrzhUsT7i9h+ASAbzfhqC8M1jAFhnr0v ws8DgN4kr7lQFCAzslljwZzy8RA/Co90T9vD3ieV4M6csV/Xvb2VPbq5+0yC8pH9vfiI FnAGIs9ctRkrEZUkBp6oBR/nsHJZ1tRaoK9j0RsLmFd5cPLto/8GrXiNrMa6SDaRMO9w 0wl6WW3rM6w96Ai5r8XzF/ocgD2sFCchAcnNdUwEEBanb3mD89Nnr9JxzKtPNMzzm83G USig== X-Gm-Message-State: AOJu0YwVGstIE6AfYBfenC++vNi1oHiRS7wEleMmXnNOqlmw6TshE3Y0 10QyJzYkOtdIH5AraqY9TZh3jhJ+SloN9+ygPByhxSEDwNjdZyjSJ38B X-Gm-Gg: AZuq6aL5HYExR2eTFlTGhUz8uN+r5gEEiKQyL6Po6aFzBcY8/uE2amaOyyrIaqCJ5ix hcgkavM0a6LnAW42Pqg891cdtOlA5CLGpeTsGmPso2udFOFSNZWrifZfqy71guDFx56Ud/b7LIy 2Acq1jp3L/uJl9Mnev1oo87SU5kGGw+G77cz4lkKK7xCMgxc6Y8pI3OBH/yrR/GCIBUn+9gw1Ov JdAF1k7dczGO+XTBIanYswN3nl4dExBdHhvjKQtouOWy99EqhV4ctGc6MlM6d+AclUXPNH0JSyq YiiQvnb6XvBzVhrCBIP+VxCxhYnRSUi+osy5eefDfumt+SfZNjXXDwXcxd+RAQ+srb0k6EtzaK2 K9GNd2RooAkMw8Y/KuQm/grjSNKogCNN1UeNiPLxZdXRblT1LPMAm0Pm9AYA77Q0Ldi8LbpXkYt 9eYydxWt7+fw== X-Received: by 2002:a05:7300:4352:b0:2ae:59dd:cfd1 with SMTP id 5a478bee46e88-2b856722ff3mr747970eec.22.1770361608102; Thu, 05 Feb 2026 23:06:48 -0800 (PST) Received: from [127.0.1.1] ([74.48.213.230]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-127041e61b9sm1592601c88.8.2026.02.05.23.06.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Feb 2026 23:06:47 -0800 (PST) From: Qiliang Yuan Date: Fri, 06 Feb 2026 02:04:32 -0500 Subject: [PATCH RFC 11/12] sched/isolation: Implement SMT sibling auto-isolation and safety check 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: <20260206-feature-dynamic_isolcpus_dhei-v1-11-00a711eb0c74@gmail.com> References: <20260206-feature-dynamic_isolcpus_dhei-v1-0-00a711eb0c74@gmail.com> In-Reply-To: <20260206-feature-dynamic_isolcpus_dhei-v1-0-00a711eb0c74@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 Cc: linux-kernel@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, Qiliang Yuan , Qiliang Yuan X-Mailer: b4 0.14.3 Implement SMT sibling auto-isolation logic via 'smt_aware_mode' sysfs node. When enabled, writing to housekeeping masks will automatically ensure that all siblings of a physical core stay together in the same isolation state. Also implement a safety check in housekeeping_store() to ensure that at least one online CPU remains as housekeeping, preventing the user from accidentally isolating all CPUs and locking up the system. Signed-off-by: Qiliang Yuan Signed-off-by: Qiliang Yuan --- kernel/sched/isolation.c | 72 ++++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index d9ce26cf31fe..30798e790b9f 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "sched.h" =20 enum hk_flags { @@ -40,6 +41,30 @@ struct housekeeping { }; =20 static struct housekeeping housekeeping; +static bool housekeeping_smt_aware; + +static ssize_t smt_aware_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + return sprintf(buf, "%d\n", housekeeping_smt_aware); +} + +static ssize_t smt_aware_store(struct kobject *kobj, + struct kobj_attribute *attr, + const char *buf, size_t count) +{ + bool val; + + if (kstrtobool(buf, &val)) + return -EINVAL; + + housekeeping_smt_aware =3D val; + + return count; +} + +static struct kobj_attribute smt_aware_attr =3D + __ATTR(smt_aware_mode, 0644, smt_aware_show, smt_aware_store); =20 bool housekeeping_enabled(enum hk_type type) { @@ -164,11 +189,40 @@ static ssize_t housekeeping_store(struct kobject *kob= ject, if (err) goto out_free; =20 - if (cpumask_empty(new_mask)) { + /* Safety check: must have at least one online CPU for housekeeping */ + if (!cpumask_intersects(new_mask, cpu_online_mask)) { err =3D -EINVAL; goto out_free; } =20 + if (housekeeping_smt_aware) { + int cpu, sibling; + cpumask_var_t tmp_mask; + + if (!alloc_cpumask_var(&tmp_mask, GFP_KERNEL)) { + err =3D -ENOMEM; + goto out_free; + } + + cpumask_copy(tmp_mask, new_mask); + for_each_cpu(cpu, tmp_mask) { + for_each_cpu(sibling, topology_sibling_cpumask(cpu)) { + if (!cpumask_test_cpu(sibling, tmp_mask)) { + /* SMT sibling should stay grouped */ + cpumask_clear_cpu(cpu, new_mask); + break; + } + } + } + free_cpumask_var(tmp_mask); + + /* Re-check after SMT sync */ + if (!cpumask_intersects(new_mask, cpu_online_mask)) { + err =3D -EINVAL; + goto out_free; + } + } + mutex_lock(&housekeeping_mutex); =09 if (!housekeeping.cpumasks[type]) { @@ -230,12 +284,20 @@ static int __init housekeeping_sysfs_init(void) housekeeping_attr_ptr[j] =3D NULL; =20 ret =3D sysfs_create_group(housekeeping_kobj, &housekeeping_attr_group); - if (ret) { - kobject_put(housekeeping_kobj); - return ret; - } + if (ret) + goto err_group; + + ret =3D sysfs_create_file(housekeeping_kobj, &smt_aware_attr.attr); + if (ret) + goto err_file; =20 return 0; + +err_file: + sysfs_remove_group(housekeeping_kobj, &housekeeping_attr_group); +err_group: + kobject_put(housekeeping_kobj); + return ret; } late_initcall(housekeeping_sysfs_init); =20 --=20 2.51.0