From nobody Wed Apr 1 19:57:19 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA0AE1FC105 for ; Tue, 4 Mar 2025 08:41:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077685; cv=none; b=DDYgODO7zn01cZREROIzh0DUvq44klZVM/cotFlwmfrjRm6vtrtW6ERD39A1dtZa3i9MAvrnZw196J33Mf51ZVjzbTiTJATSwTbN7CzxmD1h+SEpXJu+2fFidz9MJ4/8oryT0FhT1h9HPCEcgSywU7rntSTY+uRMmeOG7Hr2nUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077685; c=relaxed/simple; bh=xcnCm892YVWrZWbMShd7y4D6hSOZDUxmmffjBmaQwmw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HkTdOi223rvgXRudjbU5cMhA3Pb1LU1hGL3ZmZqr846/S9ljginBY19a7krw0VC4Hw0VnWcPvnvKtRxbzw5OgS0nCOr5dzReALbqVqGWDj61mYYmALby+zybqAHrJa6Yd9rHle2R3R+02iSA7GVYqWVbtlfWLbMxWWFuOhFgJ1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=HbRDXJY3; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="HbRDXJY3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741077682; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fsKE1JxR4r83PaPSyABYFCVJq9bgn0zVEf+tY5alCNY=; b=HbRDXJY3dEkYocenNO3jS2Am40bHDPlvHI651ul1CLgLwOW/K0sn3Q0TlQuw9+WepOrGQu HFN/XiHNdYhXQVAl8raiaodb8s8vIFv/ABSYrnGsiykvWEvjD71tcO9tQA+WBHcXtbRwp4 xLHx7z7KZAoy70woPa5Sg3S9pGdWMkM= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-418-0vABoAXiMqmVQkTmAYGwpg-1; Tue, 04 Mar 2025 03:41:16 -0500 X-MC-Unique: 0vABoAXiMqmVQkTmAYGwpg-1 X-Mimecast-MFC-AGG-ID: 0vABoAXiMqmVQkTmAYGwpg_1741077676 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7c0b3cd4cbcso623392285a.1 for ; Tue, 04 Mar 2025 00:41:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741077672; x=1741682472; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fsKE1JxR4r83PaPSyABYFCVJq9bgn0zVEf+tY5alCNY=; b=s5Jl8C2ZjXhJuKpN+UVRA5CSGiDtuC9F5UexaKLs00hGWHpNfH+Z90kdHx2BrxanoK ZkYbSEdwmrLIm6J9M5ffLsk3BrGMMCvQX7TYuDrKbWNysWaRmhvpB9lU4Pxsydqxgtih W+UMw0OrTGpAmIu5z1WvIsyIlEcSDMb+Twqg8sDHuXrRJWdMGUL+aJqzEhAL6MgseA5s gpp3m+tGrnOAXSDIpHSNZ9cEh1MWcOkD8sw9dLGABjpZOPIQBG2YdsWZ8UdOImXhr/kD sPTWPu86vb5HWv7Y41ZbgLnxEIGU0ImIuX59YXCF80wfYRObW0oT6j2qP6ImgkOC6GOY RSRg== X-Gm-Message-State: AOJu0Yzbsp516ZFhh0WVG/MlMvBPgBw1c/nRoiD3Wl/V2TgQ9f6MVi/K fl9StJbJW7hWaT0ytGjvpy8kGxMCMWcBZZ8ITXkkogHLEP9i1Qn2MULJmL/wFnLL8u3EiOsBCWE +skpbxLORRsyYgZD+n5wLU4eJsfCCStt6wQCFOlqcM1fJmI0SYLah3dQX9rnbzFl4sUjESxv12M 6ZOnAwYT1SpwNy00mCBFqbyOoxSrd//lXDIg6oCapwxpi2odTGlluYlQ== X-Gm-Gg: ASbGnctZuupBnE1LzylIs9awLK1GBHxRev3I/ExwQPt2DlfLTedU/9nqO4nq7rhktNE vk8FiN/IpQUoGyY9DdiirmRiv1SzaCEH4TZYIBEbYBpG/+CXl2pXfkiDDrfO8fw2qtfJlzf0M9d 9hmeXKJZOFSqtxoH1unTDYycTMJpib6tpW58d+NZed0My2NC6MuhxsXWT2A+JJeu99XdJdqNgdy WfpG0jPm7VBlFV3gnWIM7o8xbZ5ypm5aDTwlSQfZ0eTgZshBpRC1ezmwEvibL2+DfcRIfHIhqWC uIWe4HCHFpJ5fBpm4spfdIrJmlYw1brX1/TAWBW/q6nbnARsRMUf+I+yrfx7/9MGy4oSqpF4Xyf zA8eX X-Received: by 2002:a05:620a:46a3:b0:7c2:49ef:1f77 with SMTP id af79cd13be357-7c39c4a0181mr2593148885a.1.1741077672085; Tue, 04 Mar 2025 00:41:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IHG79q9XffEJNpdX763jIx+W9EQRrB41TjQwa3qn+cmvJTNbdOuOPZAWMQ1iApXQL2A4RS0MQ== X-Received: by 2002:a05:620a:46a3:b0:7c2:49ef:1f77 with SMTP id af79cd13be357-7c39c4a0181mr2593144285a.1.1741077671659; Tue, 04 Mar 2025 00:41:11 -0800 (PST) Received: from jlelli-thinkpadt14gen4.remote.csb (host-89-240-117-139.as13285.net. [89.240.117.139]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0a94fbbsm218395285a.1.2025.03.04.00.41.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 00:41:08 -0800 (PST) From: Juri Lelli To: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Waiman Long , Tejun Heo , Johannes Weiner , =?UTF-8?q?Michal=20Koutn=C3=BD?= , Qais Yousef , Sebastian Andrzej Siewior , Swapnil Sapkal , Shrikanth Hegde , Phil Auld , luca.abeni@santannapisa.it, tommaso.cucinotta@santannapisa.it, Jon Hunter Subject: [PATCH 1/5] sched/deadline: Ignore special tasks when rebuilding domains Date: Tue, 4 Mar 2025 08:40:41 +0000 Message-ID: <20250304084045.62554-2-juri.lelli@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304084045.62554-1-juri.lelli@redhat.com> References: <20250304084045.62554-1-juri.lelli@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" SCHED_DEADLINE special tasks get a fake bandwidth that is only used to make sure sleeping and priority inheritance 'work', but it is ignored for runtime enforcement and admission control. Be consistent with it also when rebuilding root domains. Reported-by: Jon Hunter Fixes: 53916d5fd3c0 ("sched/deadline: Check bandwidth overflow earlier for = hotplug") Signed-off-by: Juri Lelli Tested-by: Jon Hunter --- kernel/sched/deadline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 38e4537790af..ab565a151355 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -2956,7 +2956,7 @@ void dl_add_task_root_domain(struct task_struct *p) struct dl_bw *dl_b; =20 raw_spin_lock_irqsave(&p->pi_lock, rf.flags); - if (!dl_task(p)) { + if (!dl_task(p) || dl_entity_is_special(&p->dl)) { raw_spin_unlock_irqrestore(&p->pi_lock, rf.flags); return; } --=20 2.48.1 From nobody Wed Apr 1 19:57:19 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06DE81FC0FE for ; Tue, 4 Mar 2025 08:41:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077695; cv=none; b=b6FEeWVUJY4hkUsA0trhQHutYgcONwUz50LRqxJ10YJxC0cXngU+4wu5ULkssquvm0Ujc52NkdrIG7wKCkjaeM87ewdamTGUQmUrDCfpBDKaEnOrYV0YVlKYMEjXIRUxdjtAR1C8IiACG6nvjF7uzYtUrHrJAKWThSQDE8ChH7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077695; c=relaxed/simple; bh=2OdxPjBtShQTPyHN8NcfqpKvYvdCrpr/1DGz7fpEkaQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hfP7uZIMNly5IrzU5Ww82MHP/kGP8KNdDbAAJKGMSAowfOZrnP324SzcICsJHgGiEdmXCMFND1FLkWpybl37iUfdxERpKYFsINfUTSxQzH0dRIM45aSR6FQnSJZl9+07L9q3Vsoqi7HvXB4dN0xqLMNl/tD1T7HbHpNjm4Wm9F0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=bi/EBiqf; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bi/EBiqf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741077692; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=khI8Y+GNMlGI4nyBCsweph1yNgRlDOyD6T4E6SKR/uA=; b=bi/EBiqf3VBESVAH5FxvNiw9YB/wNA86JI21JM29q6M4kZ9eg1M7MDgTFz9Dkn+pEnMMTY TbEXjH/lgKSlnFZJ6lQmmp6IDb+0FzaAYxfl9RQXW+sSA/i1SK4/jxjj/37nbCTVikSiBt XGqTgMeOXdkJk3pqlD5rdDKRQ0qnk3M= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-fxhwscdiMqKFAt-wIAmx_w-1; Tue, 04 Mar 2025 03:41:21 -0500 X-MC-Unique: fxhwscdiMqKFAt-wIAmx_w-1 X-Mimecast-MFC-AGG-ID: fxhwscdiMqKFAt-wIAmx_w_1741077681 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7c0a8583e60so1044198385a.2 for ; Tue, 04 Mar 2025 00:41:21 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741077678; x=1741682478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=khI8Y+GNMlGI4nyBCsweph1yNgRlDOyD6T4E6SKR/uA=; b=DyHNb+/AxNNOrCet0oFrJFsYOH5sKurUfePhUef9za8rzAyjD3nVEhsQfs9Gxpy2EN CvfWDRrcd48PR+uRBoy2qHjjEBo80nKBi6mynQVMLwXfRZiBrd4RD6xatSxDYX2YQWxs SSxRRZljfSDGCD40rHbWLIHwDoENIdUHQiUogeXYfWQYlzmihOOeeuoRPRPvAkJW/7va Ft7CvIZyteKjztmz2m+56WgWdM5HThN5RB0sLunYFDc+0iwHRySuYd/T0n7t3gEuVffg v9HtxkVKI5ODKXag6uL0wGL0Ha7IrAtmTV9e4TtJF6iGjnm49IvUI232rY4crx9DDYoF V7LQ== X-Gm-Message-State: AOJu0YxacprS/a/razzxj4Rsh8RY0y+lrQ5QKG+EKSFYYdgdnSMJRRd3 fB5jcIMce+wF7088UYgSzOC0Yl4Ym22v+ap0PZeCTQZeL926cO8Ez1u3Q1AYXB9GzuLQ5XEivWI UpyI4yW1x09Xc2fMCi2cs9f1j37Q2Seu5U9Qy8kmrSrK1nLpZ102S80OussEV7cbOA2nOJgR92H 5LRkpq/2pLDXW+kDUFVaKiMk88oH/tcwT0X+pD8b6NyKc2i0eCnlYISg== X-Gm-Gg: ASbGncskSV9rqjb+7SqWVRZWALJ0dGnZjIfBlrm7LRBiKmWDo3sNXVrkzbzWwNAfNnv FdSTuXs3HDYOplejy2Pbpn6zP5h/I7lWmn/cKXfmeDvVmf4zl6qTKOd2REenAxD7FnB2yeN9DK/ /656dnQe0sjEhJzk0E4rom0YzZYcZvfO/mWsD9soqvUm4TtE70scWe9nc3AnGB4G+ue8gV17lHu 4GpsmsKCY7urM1ltRY4KKJc0qz8VHHVkarYITv2htXXRf4W143gNCY3fCxecbe5+icYwi2IBcpu O4qTOEklOU88xWaCxdMLox9qSQ9djM++nyUMT5JdRwnKAnrDz8YI1pMy5BrGFQGqdIOElqH+mCe 8fli3 X-Received: by 2002:a05:620a:4803:b0:7c3:c7a6:cf33 with SMTP id af79cd13be357-7c3c7a6d582mr642146885a.44.1741077677978; Tue, 04 Mar 2025 00:41:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IF+ZRnOSkJPb3pUSFJp1khxekA5ckD6U6RwBZseGWQ1If920oExHtAQHufEewSrz+n2y3uI+g== X-Received: by 2002:a05:620a:4803:b0:7c3:c7a6:cf33 with SMTP id af79cd13be357-7c3c7a6d582mr642142385a.44.1741077677648; Tue, 04 Mar 2025 00:41:17 -0800 (PST) Received: from jlelli-thinkpadt14gen4.remote.csb (host-89-240-117-139.as13285.net. [89.240.117.139]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0a94fbbsm218395285a.1.2025.03.04.00.41.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 00:41:15 -0800 (PST) From: Juri Lelli To: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Waiman Long , Tejun Heo , Johannes Weiner , =?UTF-8?q?Michal=20Koutn=C3=BD?= , Qais Yousef , Sebastian Andrzej Siewior , Swapnil Sapkal , Shrikanth Hegde , Phil Auld , luca.abeni@santannapisa.it, tommaso.cucinotta@santannapisa.it, Jon Hunter Subject: [PATCH 2/5] sched/topology: Wrappers for sched_domains_mutex Date: Tue, 4 Mar 2025 08:40:42 +0000 Message-ID: <20250304084045.62554-3-juri.lelli@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304084045.62554-1-juri.lelli@redhat.com> References: <20250304084045.62554-1-juri.lelli@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Create wrappers for sched_domains_mutex so that it can transparently be used on both CONFIG_SMP and !CONFIG_SMP, as some function will need to do. Reported-by: Jon Hunter Fixes: 53916d5fd3c0 ("sched/deadline: Check bandwidth overflow earlier for = hotplug") Signed-off-by: Juri Lelli Tested-by: Jon Hunter --- include/linux/sched.h | 2 ++ kernel/cgroup/cpuset.c | 4 ++-- kernel/sched/core.c | 4 ++-- kernel/sched/debug.c | 8 ++++---- kernel/sched/topology.c | 17 +++++++++++++++-- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 9632e3318e0d..d5f8c161d852 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -383,6 +383,8 @@ enum uclamp_id { extern struct root_domain def_root_domain; extern struct mutex sched_domains_mutex; #endif +extern void sched_domains_mutex_lock(void); +extern void sched_domains_mutex_unlock(void); =20 struct sched_param { int sched_priority; diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 0f910c828973..f87526edb2a4 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -994,10 +994,10 @@ static void partition_and_rebuild_sched_domains(int ndoms_new, cpumask_var_t doms_new[= ], struct sched_domain_attr *dattr_new) { - mutex_lock(&sched_domains_mutex); + sched_domains_mutex_lock(); partition_sched_domains_locked(ndoms_new, doms_new, dattr_new); dl_rebuild_rd_accounting(); - mutex_unlock(&sched_domains_mutex); + sched_domains_mutex_unlock(); } =20 /* diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9aecd914ac69..7b14500d731b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8424,9 +8424,9 @@ void __init sched_init_smp(void) * CPU masks are stable and all blatant races in the below code cannot * happen. */ - mutex_lock(&sched_domains_mutex); + sched_domains_mutex_lock(); sched_init_domains(cpu_active_mask); - mutex_unlock(&sched_domains_mutex); + sched_domains_mutex_unlock(); =20 /* Move init over to a non-isolated CPU */ if (set_cpus_allowed_ptr(current, housekeeping_cpumask(HK_TYPE_DOMAIN)) <= 0) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index ef047add7f9e..a0893a483d35 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -292,7 +292,7 @@ static ssize_t sched_verbose_write(struct file *filp, c= onst char __user *ubuf, bool orig; =20 cpus_read_lock(); - mutex_lock(&sched_domains_mutex); + sched_domains_mutex_lock(); =20 orig =3D sched_debug_verbose; result =3D debugfs_write_file_bool(filp, ubuf, cnt, ppos); @@ -304,7 +304,7 @@ static ssize_t sched_verbose_write(struct file *filp, c= onst char __user *ubuf, sd_dentry =3D NULL; } =20 - mutex_unlock(&sched_domains_mutex); + sched_domains_mutex_unlock(); cpus_read_unlock(); =20 return result; @@ -515,9 +515,9 @@ static __init int sched_init_debug(void) debugfs_create_u32("migration_cost_ns", 0644, debugfs_sched, &sysctl_sche= d_migration_cost); debugfs_create_u32("nr_migrate", 0644, debugfs_sched, &sysctl_sched_nr_mi= grate); =20 - mutex_lock(&sched_domains_mutex); + sched_domains_mutex_lock(); update_sched_domain_debugfs(); - mutex_unlock(&sched_domains_mutex); + sched_domains_mutex_unlock(); #endif =20 #ifdef CONFIG_NUMA_BALANCING diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index c49aea8c1025..e2b879ec9458 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -6,6 +6,19 @@ #include =20 DEFINE_MUTEX(sched_domains_mutex); +#ifdef CONFIG_SMP +void sched_domains_mutex_lock(void) +{ + mutex_lock(&sched_domains_mutex); +} +void sched_domains_mutex_unlock(void) +{ + mutex_unlock(&sched_domains_mutex); +} +#else +void sched_domains_mutex_lock(void) { } +void sched_domains_mutex_unlock(void) { } +#endif =20 /* Protected by sched_domains_mutex: */ static cpumask_var_t sched_domains_tmpmask; @@ -2791,7 +2804,7 @@ void partition_sched_domains_locked(int ndoms_new, cp= umask_var_t doms_new[], void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[], struct sched_domain_attr *dattr_new) { - mutex_lock(&sched_domains_mutex); + sched_domains_mutex_lock(); partition_sched_domains_locked(ndoms_new, doms_new, dattr_new); - mutex_unlock(&sched_domains_mutex); + sched_domains_mutex_unlock(); } --=20 2.48.1 From nobody Wed Apr 1 19:57:19 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A1151FCF6D for ; Tue, 4 Mar 2025 08:41:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077703; cv=none; b=ozGJ9kufyASX3L6+Wuo0eraTTx98xbXuEmXVQr8AYIbXcqWWDeeBn6NbBnRHzHlSr53kR33ma/tEDe081r1uKkOUxdGc6Iu4XHSXdhcxinCoNTD+ZK6dseq9xsWRvro8EImpm5+OpkxeXxIpS2ARbsK6lP4A++BC0MIEJRgWknA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077703; c=relaxed/simple; bh=yOMmG4F+0IRyt05rEQipisgEioriUYETBt8L3slir/8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E/aLDkPYgeQNKVC4bw/7eNgY/cvyvFrWY2be2FGtQcTGSo90tdCdnr95mdEFRxXYwDFE0Qxq68TVA9EmgbVA8sGHg+L9LZ6ww6QvaUVZlaVC9O9kjkc5ewmx/v1vObYURYWtmCgKtVBxp6Y1zio54JNGwVg65hOUC18Ylm/bMJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=MfQwYS2F; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="MfQwYS2F" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741077700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=f+Iw2z/BRuGJ7vkBn/7Z4Zbuxcza/Q4iTwJq/UC45V0=; b=MfQwYS2FAeyrAqB5RXlelQwZTGORbL4VBHWoSduWEOaonwZ2wFkvXLy0tNkhVkRiwZKz33 RM6udGAbhPY/huKTum3HEiBZNrMPrIh6r47V1uqCHl49y7/prL32d52y1/o86rItJ/rF1N CKSV0+7WiHVf/HO/hFQTvJfu6GkChVE= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-235-fazlRea5M6CxW-Tb7iVlnA-1; Tue, 04 Mar 2025 03:41:27 -0500 X-MC-Unique: fazlRea5M6CxW-Tb7iVlnA-1 X-Mimecast-MFC-AGG-ID: fazlRea5M6CxW-Tb7iVlnA_1741077687 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7c0c1025adbso1345709985a.1 for ; Tue, 04 Mar 2025 00:41:27 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741077684; x=1741682484; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f+Iw2z/BRuGJ7vkBn/7Z4Zbuxcza/Q4iTwJq/UC45V0=; b=qyYI/rpgjNm97s58lgGpSFCYmveKANZ+MsGBVNHEcfUaQkYUL+D6vvHZffDefLtP0z UKAMU4OYCKqKnfpL95opFhSrIpzQBtQLVdckJYYq4nNwthrz3QdpoLwk+5e2qChCNNh6 FLqCl/Srt2hXm4lOqOhuimwYjALxAImlH4XlGnKDC3yS8lmVyF34jdBQ8xCgx2WuVAJP IvIgb2UND0qUTvwj9i3RalfVvvstpWyOG31DLhedSWtI0j8gPjuOJH5umi9Xp0abcPj5 0sSmmg7lzizaKz2ouBDBqN9dQ2sPKzsTQFrnKMRbQlW1k5xbjXj9k/vj6hHUj63OBOjz lHEw== X-Gm-Message-State: AOJu0YwekrbzRmRonvBEXA1G3yjyEfZgJ9oB6B9zOANohqqyV/61s2sS vmUw8U9k0CVlAIwIYQUZXn24Z0oUCPVrJQkLHbubyaMoYvZgo9Ns9GpEqt+T6Ujk4u2SuswBVOh xF6I0QCudLCnbrzyPdmtbXcCJsgJKWK0ObWtOX3BxqIAZs06Rsz4J8QaSGH61vMkccR31sQplrK bbCleoy9hX0pFwvqBuQwCYe3Rk79CMUQ45noeeRVXJGgtXsKuzSdML3g== X-Gm-Gg: ASbGncu9gwL3ToCu9A8h9VU6RTN87TsYL21evMbhJHWpYWzkWoXMKulzdqu1b/pJq8T kCur/o7NoA1MmM0rx8Xf9MH0egk+lBVdriIJj2LWOFbfs5vUc6kADgaNFCyCxPPGW7morFOZSGG TBQFjyRN0B2KJsS6yeexqKEolSYYvluB1dMw1o3W2jMM84KeabTlW7sfqXwfpzk262db3ZH1ePn LStylAOEXsbda0bAdmj9gb2nWL9u2W6A1l2+SUIKNNZrkTGBdmL9jqin34WOxzlv2wXGPEfeU/f rEq81Ar6LDfvztF7f8e1sLNhAslDWeP84Mifdh52wBLR+wUaHtAIi9wdjQEWP4rrHaCRFYs2B0F pT53H X-Received: by 2002:a05:620a:31a8:b0:7c0:be25:96b2 with SMTP id af79cd13be357-7c39c4cf214mr1890138585a.29.1741077684225; Tue, 04 Mar 2025 00:41:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IE2dv8oocEYlP7qNDy6OtgnQyJS5jsjJUGl9HCqO84LUslvKxlY2F6e312WErj0Wi6SerUOhw== X-Received: by 2002:a05:620a:31a8:b0:7c0:be25:96b2 with SMTP id af79cd13be357-7c39c4cf214mr1890134785a.29.1741077683762; Tue, 04 Mar 2025 00:41:23 -0800 (PST) Received: from jlelli-thinkpadt14gen4.remote.csb (host-89-240-117-139.as13285.net. [89.240.117.139]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0a94fbbsm218395285a.1.2025.03.04.00.41.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 00:41:20 -0800 (PST) From: Juri Lelli To: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Waiman Long , Tejun Heo , Johannes Weiner , =?UTF-8?q?Michal=20Koutn=C3=BD?= , Qais Yousef , Sebastian Andrzej Siewior , Swapnil Sapkal , Shrikanth Hegde , Phil Auld , luca.abeni@santannapisa.it, tommaso.cucinotta@santannapisa.it, Jon Hunter Subject: [PATCH 3/5] sched/deadline: Generalize unique visiting of root domains Date: Tue, 4 Mar 2025 08:40:43 +0000 Message-ID: <20250304084045.62554-4-juri.lelli@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304084045.62554-1-juri.lelli@redhat.com> References: <20250304084045.62554-1-juri.lelli@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Bandwidth checks and updates that work on root domains currently employ a cookie mechanism for efficiency. This mechanism is very much tied to when root domains are first created and initialized. Generalize the cookie mechanism so that it can be used also later at runtime while updating root domains. Also, additionally guard it with sched_domains_mutex, since domains need to be stable while updating them (and it will be required for further dynamic changes). Reported-by: Jon Hunter Fixes: 53916d5fd3c0 ("sched/deadline: Check bandwidth overflow earlier for = hotplug") Signed-off-by: Juri Lelli Tested-by: Jon Hunter --- include/linux/sched/deadline.h | 3 +++ kernel/sched/deadline.c | 23 +++++++++++++---------- kernel/sched/rt.c | 2 ++ kernel/sched/sched.h | 2 +- kernel/sched/topology.c | 2 +- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/include/linux/sched/deadline.h b/include/linux/sched/deadline.h index 3a912ab42bb5..6ec578600b24 100644 --- a/include/linux/sched/deadline.h +++ b/include/linux/sched/deadline.h @@ -37,4 +37,7 @@ extern void dl_clear_root_domain(struct root_domain *rd); =20 #endif /* CONFIG_SMP */ =20 +extern u64 dl_cookie; +extern bool dl_bw_visited(int cpu, u64 cookie); + #endif /* _LINUX_SCHED_DEADLINE_H */ diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index ab565a151355..339434271cba 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -166,14 +166,14 @@ static inline unsigned long dl_bw_capacity(int i) } } =20 -static inline bool dl_bw_visited(int cpu, u64 gen) +static inline bool dl_bw_visited(int cpu, u64 cookie) { struct root_domain *rd =3D cpu_rq(cpu)->rd; =20 - if (rd->visit_gen =3D=3D gen) + if (rd->visit_cookie =3D=3D cookie) return true; =20 - rd->visit_gen =3D gen; + rd->visit_cookie =3D cookie; return false; } =20 @@ -207,7 +207,7 @@ static inline unsigned long dl_bw_capacity(int i) return SCHED_CAPACITY_SCALE; } =20 -static inline bool dl_bw_visited(int cpu, u64 gen) +static inline bool dl_bw_visited(int cpu, u64 cookie) { return false; } @@ -3171,15 +3171,18 @@ DEFINE_SCHED_CLASS(dl) =3D { #endif }; =20 -/* Used for dl_bw check and update, used under sched_rt_handler()::mutex */ -static u64 dl_generation; +/* + * Used for dl_bw check and update, used under sched_rt_handler()::mutex a= nd + * sched_domains_mutex. + */ +u64 dl_cookie; =20 int sched_dl_global_validate(void) { u64 runtime =3D global_rt_runtime(); u64 period =3D global_rt_period(); u64 new_bw =3D to_ratio(period, runtime); - u64 gen =3D ++dl_generation; + u64 cookie =3D ++dl_cookie; struct dl_bw *dl_b; int cpu, cpus, ret =3D 0; unsigned long flags; @@ -3192,7 +3195,7 @@ int sched_dl_global_validate(void) for_each_possible_cpu(cpu) { rcu_read_lock_sched(); =20 - if (dl_bw_visited(cpu, gen)) + if (dl_bw_visited(cpu, cookie)) goto next; =20 dl_b =3D dl_bw_of(cpu); @@ -3229,7 +3232,7 @@ static void init_dl_rq_bw_ratio(struct dl_rq *dl_rq) void sched_dl_do_global(void) { u64 new_bw =3D -1; - u64 gen =3D ++dl_generation; + u64 cookie =3D ++dl_cookie; struct dl_bw *dl_b; int cpu; unsigned long flags; @@ -3240,7 +3243,7 @@ void sched_dl_do_global(void) for_each_possible_cpu(cpu) { rcu_read_lock_sched(); =20 - if (dl_bw_visited(cpu, gen)) { + if (dl_bw_visited(cpu, cookie)) { rcu_read_unlock_sched(); continue; } diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 4b8e33c615b1..8cebe71d2bb1 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -2910,6 +2910,7 @@ static int sched_rt_handler(const struct ctl_table *t= able, int write, void *buff int ret; =20 mutex_lock(&mutex); + sched_domains_mutex_lock(); old_period =3D sysctl_sched_rt_period; old_runtime =3D sysctl_sched_rt_runtime; =20 @@ -2936,6 +2937,7 @@ static int sched_rt_handler(const struct ctl_table *t= able, int write, void *buff sysctl_sched_rt_period =3D old_period; sysctl_sched_rt_runtime =3D old_runtime; } + sched_domains_mutex_unlock(); mutex_unlock(&mutex); =20 return ret; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index c8512a9fb022..c978abe38c07 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -998,7 +998,7 @@ struct root_domain { * Also, some corner cases, like 'wrap around' is dangerous, but given * that u64 is 'big enough'. So that shouldn't be a concern. */ - u64 visit_gen; + u64 visit_cookie; =20 #ifdef HAVE_RT_PUSH_IPI /* diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index e2b879ec9458..b70d6002bb93 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -573,7 +573,7 @@ static int init_rootdomain(struct root_domain *rd) rd->rto_push_work =3D IRQ_WORK_INIT_HARD(rto_push_irq_work_func); #endif =20 - rd->visit_gen =3D 0; + rd->visit_cookie =3D 0; init_dl_bw(&rd->dl_bw); if (cpudl_init(&rd->cpudl) !=3D 0) goto free_rto_mask; --=20 2.48.1 From nobody Wed Apr 1 19:57:19 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06E421FC103 for ; Tue, 4 Mar 2025 08:41:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077695; cv=none; b=D6EVH7y6Yd4oL6hA/OrxpAUZN3mjM5oiObGwA7ZxNOM4hgmBUNisqArfoxICQBZqtTm6wojZJb6ov/JRg3IUNI6yEIK5v1EfW3O281uIexw/F25FjPhw3xQbdxkpj/EWBwpUZTr84VuHu/I/zAoJ/7TVcfthTCnn0xSpNipDpQE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077695; c=relaxed/simple; bh=JoFBG7pMXQvknknPg4p6gPlrPQ55M+46+iQsTj5LTik=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WMaWxHIthagZOvRYetHB6fVh0BObj/yarmbPoemXrlbMx04ZLj/FZaG18L/9NpnNCf4G+SktOKoj/S9gHeczswVrw90wzoCmDVeVComD0zODLOxJ8rKsbA0hQdIHgLLnyIV/iyqnGhnChnCG8WHweJWGe6GNTrdoMeKlwN4/V+I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=a4TGY1px; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="a4TGY1px" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741077693; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iUFSm032bQgoMPJSD653MNcg2XgGU99Y/sFQDrAbodA=; b=a4TGY1pxTRuzXtaMTy9Fex7biZ+umFDQmKgsNZC6lf6LksP/s3kU8KV9u4Gm8dq8CmHLlK buYtf1uORe+J4IaEWLSRlJHiGXKCRKIyJGVVkhKkCfAgRrGUeqfUaqQFW3FtD/7rVJM3rJ tOqnnNZjlC+lkDVgzmFhD2nHFN5Octw= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-56-8W-3s1-dNOSZxfA6SdVLNg-1; Tue, 04 Mar 2025 03:41:32 -0500 X-MC-Unique: 8W-3s1-dNOSZxfA6SdVLNg-1 X-Mimecast-MFC-AGG-ID: 8W-3s1-dNOSZxfA6SdVLNg_1741077691 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7c3b53373faso369689085a.0 for ; Tue, 04 Mar 2025 00:41:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741077689; x=1741682489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iUFSm032bQgoMPJSD653MNcg2XgGU99Y/sFQDrAbodA=; b=CuJALMDU/5GqVfWmvxohHRkY/yXrxOEe4VdAkSJ44Q/mRDd5kRwQ+iKAGM7oZuBd03 kegBnxLzdwXETw2AzFLMm1R4wWuRh9rCx+56ZEMvkgooWX2gMSIHaTNkOwPldvwn3ItD sv4emLf1nsF96LuwRKwFZ2vmnzybF1uNq94DjTVHEn4OuK0v3oiDe1LPdF+CroQF7hMt FMORnQwq5HYZQcZBj8ROCmjqsPjWlRpm6lwcrmVTJRnZy/YQEgGAOxOULt0dSfU3j2aq ihG7x0gOGFxqTc1t5I9BpM9M4ImE7fExxUrLgFmhzBKh4OGH/z0IhY1BZRdOEA9Ut9ZK gpJg== X-Gm-Message-State: AOJu0YzX+CLWM8hkE17vuOz5gKFiDjc0LwNpqB9Xl6UNXJWjdE1ICca/ 5YRjKB5SgexJNYEVxKsQ1DEJJpt5TZDBojhJ+BqFxIOtSFv9LC1r5f4xZddRL0zo34ihC4nju8l SNtTzgkZ3JbKj78Kkh5OXrIIIiPTPWHLC0XNw43f5i+Dbs8tufHCaL3hbkD0XMOQOafJAYMHoN7 U1LvAYDbNWg6aAUDdDVuTaJxW5ryYGommCwvoaLe3WL+jeBb/BoGpf7w== X-Gm-Gg: ASbGncsp9UjGBC27Bt6iZqZ7QSo52CgSmXdXZGdjF63Atgz1iSZ8gEVsSM2kBnqYiWa frMwr1Z+MIMZoVmIMbsS8wkuLw1kLzHZI5r8sooruRn62nxbzPJBWGqq1IIlendECQGbbqb0LjT qVM21luN/j+7pqkW8ptmu2ibWQ/AhdckatD+GLoFWjhhfMeCCxAv9ncSYQXOFJbXubTHojV4Q2x 8QdCKiFXpIAQ5e6B9XL0Bl515d1lqXTnEXuv6GVeipVXZElq4F/+bzmXFk+aKARC7nOek6aP4jH lf+mbj05AuA/xYJFAMx+0PY/CeGCSpPFoE/Rpjd3QSZv1XoJXY/Pm8rn80g+E5xSxuIZvaD7Shs vK+60 X-Received: by 2002:a05:620a:2b86:b0:7c3:c1fb:3df2 with SMTP id af79cd13be357-7c3c1fb4244mr730708685a.46.1741077689661; Tue, 04 Mar 2025 00:41:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IFjbG0dTZywrc8B1o3eEIcsstcc67Y38OSW68GGeX9mfGUlHgF5MXZ2iZRf4TVMhcQvkAS5og== X-Received: by 2002:a05:620a:2b86:b0:7c3:c1fb:3df2 with SMTP id af79cd13be357-7c3c1fb4244mr730704985a.46.1741077689282; Tue, 04 Mar 2025 00:41:29 -0800 (PST) Received: from jlelli-thinkpadt14gen4.remote.csb (host-89-240-117-139.as13285.net. [89.240.117.139]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0a94fbbsm218395285a.1.2025.03.04.00.41.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 00:41:26 -0800 (PST) From: Juri Lelli To: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Waiman Long , Tejun Heo , Johannes Weiner , =?UTF-8?q?Michal=20Koutn=C3=BD?= , Qais Yousef , Sebastian Andrzej Siewior , Swapnil Sapkal , Shrikanth Hegde , Phil Auld , luca.abeni@santannapisa.it, tommaso.cucinotta@santannapisa.it, Jon Hunter Subject: [PATCH 4/5] sched/deadline: Rebuild root domain accounting after every update Date: Tue, 4 Mar 2025 08:40:44 +0000 Message-ID: <20250304084045.62554-5-juri.lelli@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304084045.62554-1-juri.lelli@redhat.com> References: <20250304084045.62554-1-juri.lelli@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rebuilding of root domains accounting information (total_bw) is currently broken on some cases, e.g. suspend/resume on aarch64. Problem is that the way we keep track of domain changes and try to add bandwidth back is convoluted and fragile. Fix it by simplify things by making sure bandwidth accounting is cleared and completely restored after root domains changes (after root domains are again stable). Reported-by: Jon Hunter Fixes: 53916d5fd3c0 ("sched/deadline: Check bandwidth overflow earlier for = hotplug") Signed-off-by: Juri Lelli Tested-by: Jon Hunter --- include/linux/sched/deadline.h | 4 ++++ include/linux/sched/topology.h | 2 ++ kernel/cgroup/cpuset.c | 16 +++++++++------- kernel/sched/deadline.c | 16 ++++++++++------ kernel/sched/topology.c | 1 + 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/include/linux/sched/deadline.h b/include/linux/sched/deadline.h index 6ec578600b24..a780068aa1a5 100644 --- a/include/linux/sched/deadline.h +++ b/include/linux/sched/deadline.h @@ -34,6 +34,10 @@ static inline bool dl_time_before(u64 a, u64 b) struct root_domain; extern void dl_add_task_root_domain(struct task_struct *p); extern void dl_clear_root_domain(struct root_domain *rd); +extern void dl_clear_root_domain_cpu(int cpu); + +extern u64 dl_cookie; +extern bool dl_bw_visited(int cpu, u64 gen); =20 #endif /* CONFIG_SMP */ =20 diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h index 7f3dbafe1817..1622232bd08b 100644 --- a/include/linux/sched/topology.h +++ b/include/linux/sched/topology.h @@ -166,6 +166,8 @@ static inline struct cpumask *sched_domain_span(struct = sched_domain *sd) return to_cpumask(sd->span); } =20 +extern void dl_rebuild_rd_accounting(void); + extern void partition_sched_domains_locked(int ndoms_new, cpumask_var_t doms_new[], struct sched_domain_attr *dattr_new); diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index f87526edb2a4..f66b2aefdc04 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -954,10 +954,12 @@ static void dl_update_tasks_root_domain(struct cpuset= *cs) css_task_iter_end(&it); } =20 -static void dl_rebuild_rd_accounting(void) +void dl_rebuild_rd_accounting(void) { struct cpuset *cs =3D NULL; struct cgroup_subsys_state *pos_css; + int cpu; + u64 cookie =3D ++dl_cookie; =20 lockdep_assert_held(&cpuset_mutex); lockdep_assert_cpus_held(); @@ -965,11 +967,12 @@ static void dl_rebuild_rd_accounting(void) =20 rcu_read_lock(); =20 - /* - * Clear default root domain DL accounting, it will be computed again - * if a task belongs to it. - */ - dl_clear_root_domain(&def_root_domain); + for_each_possible_cpu(cpu) { + if (dl_bw_visited(cpu, cookie)) + continue; + + dl_clear_root_domain_cpu(cpu); + } =20 cpuset_for_each_descendant_pre(cs, pos_css, &top_cpuset) { =20 @@ -996,7 +999,6 @@ partition_and_rebuild_sched_domains(int ndoms_new, cpum= ask_var_t doms_new[], { sched_domains_mutex_lock(); partition_sched_domains_locked(ndoms_new, doms_new, dattr_new); - dl_rebuild_rd_accounting(); sched_domains_mutex_unlock(); } =20 diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 339434271cba..17b040c92885 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -166,7 +166,7 @@ static inline unsigned long dl_bw_capacity(int i) } } =20 -static inline bool dl_bw_visited(int cpu, u64 cookie) +bool dl_bw_visited(int cpu, u64 cookie) { struct root_domain *rd =3D cpu_rq(cpu)->rd; =20 @@ -207,7 +207,7 @@ static inline unsigned long dl_bw_capacity(int i) return SCHED_CAPACITY_SCALE; } =20 -static inline bool dl_bw_visited(int cpu, u64 cookie) +bool dl_bw_visited(int cpu, u64 cookie) { return false; } @@ -2981,18 +2981,22 @@ void dl_clear_root_domain(struct root_domain *rd) rd->dl_bw.total_bw =3D 0; =20 /* - * dl_server bandwidth is only restored when CPUs are attached to root - * domains (after domains are created or CPUs moved back to the - * default root doamin). + * dl_servers are not tasks. Since dl_add_task_root_domanin ignores + * them, we need to account for them here explicitly. */ for_each_cpu(i, rd->span) { struct sched_dl_entity *dl_se =3D &cpu_rq(i)->fair_server; =20 if (dl_server(dl_se) && cpu_active(i)) - rd->dl_bw.total_bw +=3D dl_se->dl_bw; + __dl_add(&rd->dl_bw, dl_se->dl_bw, dl_bw_cpus(i)); } } =20 +void dl_clear_root_domain_cpu(int cpu) +{ + dl_clear_root_domain(cpu_rq(cpu)->rd); +} + #endif /* CONFIG_SMP */ =20 static void switched_from_dl(struct rq *rq, struct task_struct *p) diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index b70d6002bb93..bdfda0ef1bd9 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -2796,6 +2796,7 @@ void partition_sched_domains_locked(int ndoms_new, cp= umask_var_t doms_new[], ndoms_cur =3D ndoms_new; =20 update_sched_domain_debugfs(); + dl_rebuild_rd_accounting(); } =20 /* --=20 2.48.1 From nobody Wed Apr 1 19:57:19 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 968141FC10E for ; Tue, 4 Mar 2025 08:41:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077712; cv=none; b=Z/ve5OuDjav7tTskTmZH7acuCUL12UAklFkWMczsCrteMWTnC2XEKGlv90AevTRfs1XVz1Fy+5/wSzemx5un7d5gCRFomwuiZPOJgrwrEP48cIPAdDiJnkDDAKjSW6Asu4HM7TUz++UkhVUv12Uc7NiGWDtM9Q7AFM/iRsOaFFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741077712; c=relaxed/simple; bh=+tyAV4Hec65TSNaKqrd86BlyoB/UL+9or/H6GiAPaFY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i+tNeBCcePZw2bx5psoIIJ3zQK8okzp1lZV7qcPlbGOpfT11EtLZdQft+ACVbHLuRA8Svu5xF84E357YzcNmTWKM9BS4kFxQksFL30+G9aUoKBW9mS/NMRIF38CiKPIW97yliUOI6BBxw70ZRP2bzcq5O0VH7omDdHlo5/pUBwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=S6/wU8aI; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="S6/wU8aI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741077709; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=P3+x8ZcbjsMBBC18OSg29VFMjfEWmgYEE5sP6YSqtFk=; b=S6/wU8aIJhgoFfzzB0vuy1DOxy1xtkH/LitEEJgWete+ZFM6SkCzMXP4d2cD+TZqqQVZ9+ OWAgLGao4hAKGxXeXKbj/pffeE4nxLdlQVSHP0GLzbz8lP+Th6z8k8BcQ0DGcPiWiOZQ7G zkiGfu2Imd3WBue50yEhup9EJCXq+no= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-262-xFlAg8VXMXupdZf0-QhWVQ-1; Tue, 04 Mar 2025 03:41:38 -0500 X-MC-Unique: xFlAg8VXMXupdZf0-QhWVQ-1 X-Mimecast-MFC-AGG-ID: xFlAg8VXMXupdZf0-QhWVQ_1741077698 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c0a3ff7e81so1167051485a.3 for ; Tue, 04 Mar 2025 00:41:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741077694; x=1741682494; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P3+x8ZcbjsMBBC18OSg29VFMjfEWmgYEE5sP6YSqtFk=; b=Tho5me/XTlWI0W0jS/+E0PczDuypAmNHUU6Ks044ueEa6KAXFrEvN6KSLhuLvlf7Ne rupkaoOkvjC1Sg1BFyJCkQG5cU6ILb+MwjFdTVIP+ZwVWCADH5Ns6NtqDWo3zLFbdu2P c9uY/4HSMUr5SVw/X3W2UEjwaDIayMI+ETHPexr6n6Zns1TIOhCofqoAc6qFlXC463gF vwm+FCYwDNoe+3infDSgoEeLzNgflIPoBdzyE6kHTviCDejNM7EcKgcJifAlvPyylCYH v0Eq5rAM6BZ/NpsAhbeBeQ1Y9YSsVNENJB8IKRtvjWFLGDtGsHejBH7SbLok9VSk7HyD zOKA== X-Gm-Message-State: AOJu0YzeqLNOhx1ZzzwcUP3wFnlhhOSp9dJy+5SK+v6L4jVOBSqOJA1E Mo1P57Gb0UrFSEp4DgNJzw0R8ksp2dSdvcZvW3WGalplCS49YMKTec/SJK/hzDt8RT6Z5ZVrA24 eXxEPRbR+oQ0G0YvZ3OHC1Tz2UwhuJVABUaUmhzGJyaFhzyHsldOf+zvMym7dBd5oSmDEL3XKVR u/2PY43lHuoAtezmbfHlbzutYMpgiaqlKUe8LCpd0Bq/xbENt94hy4fg== X-Gm-Gg: ASbGncuqkmCV2lQK6U5SZ+Q8K56n7oTeSIjGPIweaNzC2gx0cRUPqsDWzwUBzKXKg9L 5KrNR8LOJ+kdH1GB14cguRQd2yKk/uWGT+cVMbP+Kam77sWFuYK1EASXZnbfdX++tkNbzlJuKZu +YXAJpbtDm3TV0HCoRVfl2mBWw98fi/IgKMpqVmrw2sWvOVFpXrPGTA3LHoa2Fls5wlPTm3p+9R I1VrlDGaQtwS5ItrbyrBRKjt3P3s+F2t67E6vOUmof0XREKvewPDSc8dlZINChfwRGVrhGrkSMy 9lVIWlYJGE3yMeT+LS8bB51RL+vpLR9ezTyjn7KC6nx/4v4TAGF7yyDVWtgvHa/k4ZAe+vxjznO XP3gP X-Received: by 2002:a05:620a:24cc:b0:7c0:a524:fb9c with SMTP id af79cd13be357-7c39c67e5demr2469796985a.47.1741077694109; Tue, 04 Mar 2025 00:41:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IF36ZSWWjVDT1inIQxVAoHh+evvEzMmrsNt8O4ZQ99AjTkmT/HmwUmDBF2MKdn3vcE/w9gZ7Q== X-Received: by 2002:a05:620a:24cc:b0:7c0:a524:fb9c with SMTP id af79cd13be357-7c39c67e5demr2469793185a.47.1741077693721; Tue, 04 Mar 2025 00:41:33 -0800 (PST) Received: from jlelli-thinkpadt14gen4.remote.csb (host-89-240-117-139.as13285.net. [89.240.117.139]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0a94fbbsm218395285a.1.2025.03.04.00.41.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 00:41:31 -0800 (PST) From: Juri Lelli To: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Waiman Long , Tejun Heo , Johannes Weiner , =?UTF-8?q?Michal=20Koutn=C3=BD?= , Qais Yousef , Sebastian Andrzej Siewior , Swapnil Sapkal , Shrikanth Hegde , Phil Auld , luca.abeni@santannapisa.it, tommaso.cucinotta@santannapisa.it, Jon Hunter Subject: [PATCH 5/5] sched/topology: Remove redundant dl_clear_root_domain call Date: Tue, 4 Mar 2025 08:40:45 +0000 Message-ID: <20250304084045.62554-6-juri.lelli@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304084045.62554-1-juri.lelli@redhat.com> References: <20250304084045.62554-1-juri.lelli@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We completely clean and restore root domains bandwidth accounting after every root domains change, so the dl_clear_root_domain() call in partition_sched_domains_locked() is redundant. Remove it. Signed-off-by: Juri Lelli Tested-by: Jon Hunter --- kernel/sched/topology.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index bdfda0ef1bd9..c525e919f383 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -2725,21 +2725,8 @@ void partition_sched_domains_locked(int ndoms_new, c= pumask_var_t doms_new[], for (i =3D 0; i < ndoms_cur; i++) { for (j =3D 0; j < n && !new_topology; j++) { if (cpumask_equal(doms_cur[i], doms_new[j]) && - dattrs_equal(dattr_cur, i, dattr_new, j)) { - struct root_domain *rd; - - /* - * This domain won't be destroyed and as such - * its dl_bw->total_bw needs to be cleared. - * Tasks contribution will be then recomputed - * in function dl_update_tasks_root_domain(), - * dl_servers contribution in function - * dl_restore_server_root_domain(). - */ - rd =3D cpu_rq(cpumask_any(doms_cur[i]))->rd; - dl_clear_root_domain(rd); + dattrs_equal(dattr_cur, i, dattr_new, j)) goto match1; - } } /* No match - a current sched domain not in new doms_new[] */ detach_destroy_domains(doms_cur[i]); --=20 2.48.1