From nobody Mon Dec 1 22:02:36 2025 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (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 2723D315D25 for ; Mon, 1 Dec 2025 12:42:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764592956; cv=none; b=tN1TAGhaJYwhv1eMpoc0bQ9pIz1wtHpDzAN0LMZWdV0OLqhe7V4e1Sts75cTBzk5eZZXTGbAN2R+ksBiozPUJyr2ON5tJrCo2PLqLslfnJ7EvJWHY993/O1zPthoUf94kPEdL/wwKB3tOQZlH3DNP24PgKzL+q29b5fMPSS3sXY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764592956; c=relaxed/simple; bh=Yd3Dq1tLzigZLg//Q9L61Hu8w0/rKwSmpeiSv+tqbGA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QVDWvTC+K2QutTNW0RP/JQ2NTFKUyUwhGopiC9mZ8AL8h/g1q5HJlJZSQf8c3gapgTzOTewqKlA5iy26L8H6mGnfc/poT/Impqks1LhzlLlM2Ef84oQRDQNJmj8A4+oLuZbdKozCZkZKAm4Z0iSjumT/H9+apJyBq+NKAm1f27o= 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=OWa6oaoS; arc=none smtp.client-ip=209.85.208.48 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="OWa6oaoS" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-641677916b5so456340a12.0 for ; Mon, 01 Dec 2025 04:42:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764592952; x=1765197752; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=foxXJq8kko4Pdvtrz8obXKgDpDxe+CJjQmDp5W5Tpqk=; b=OWa6oaoSFeE7SnT6FMijNVbhL1vXpsq2UohCidDHRx4vCz4tZVtulzW275jSpXH3JU 1F0jfFWartcLM/VIxZs/BOfhpCIIwwkRKt7JfWcurHv9PG0usLPokAxqH/YIX2zz6EPJ brY1CP2brCcq9fJOY12ARnSP/185gVXb80x8vpWEshOx6kMv5Dz3TPCKvuGDhRA9bGBO DYQN1CQooWfMCD/3ut2VNn3B9+Q15qI6v0RPQvM0yu3l4I9u+3UUfGu524GD9OnziVMj 97cZSdVuBvxz9SljF3yGnNhviv97iY/6oFPm9h1Jy2NukqXOIinw4+0q+fnAa99BDqAt 1ZxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764592952; x=1765197752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=foxXJq8kko4Pdvtrz8obXKgDpDxe+CJjQmDp5W5Tpqk=; b=nDnVGXaLF0HXAA5bUQs6CDMBDeydMhz8W4IreUhnSLPmGHqj1wCm1QDl9w8XzaxlQK CnZMltO7Xv9VW7GoXEq+PvprYEhdEJFWFnfcDAveBjlqOeNhlaz9jNC0Fg0a0Jdcx9Dv CbBJfLk3v0eOFWo8WnsRfa1ffMat+o62P7+aMiF2urw3/joRmn4HNHk5fU4nliGnb5TT llOTvPhVQaxv8FR0IsPmVh8S159voEMwdQoEZNUvT9xTWqNmrc6iz7/dd3c8sCd0RShG XCLh70Oon2wTRj924iykZefm23Ev4ogrRAA2cUtoZkzZDyNCUzywHTJP4sJnDzaDsMnG xlBQ== X-Gm-Message-State: AOJu0YzDHIH1UTmBIC/uXE3VYQh63d5tm+GjOrsnBYeVlIwxa74zkpP8 4uupKW1lUZ6HiyISBg2nB7UU2sXEe6jVy2koF0Lhtl6V8NnDuxDji55i X-Gm-Gg: ASbGncukpZAuLavV/f/mvYnFGussr+IamhJU6XqHZ9F2wvhAJg562w9esDJ8n/47/c9 gnZIWOpv22kaYYu8wGD5YA4mV1XfkHyksPmqbkUphd6OmB+BO7DXGYdvAIFbckYGOk335J5y2+W OeempYVivyhBerbmdtaoVaFHAcyYKP6RkvOXAVAWlGw5xXiqEHGaTawpVxqvvnr4/7hYAcmtugZ rJiIoLAWaK8T7djNFyojv6LxmufTZg6PgmEoDdVVrU61hjQB3+dcSsLmgb8Hh2U90OyAVbXezUa klNoobu/oTTRbqod2DLhxtzyo6zpOvUkwxPZB8pdIc9KIUEesLUgTjDVEh3xqJ9jQRCwT16u82b yy+Km8pRIIRmoUphijXQJWNTj3h/fLPZe7o8qHAEbegaPykFUSLHxssl+MXT8MQHnNd1plQ+wIO 7deBOUBipt X-Google-Smtp-Source: AGHT+IE42JKm1EwLkuqFDGu2uLgr1WZC8Hf7xmZTi+z3kQukdee6q6AljHCaYlB79fDBNcN8GPuwOw== X-Received: by 2002:a17:907:3cc5:b0:b71:51b:bd4c with SMTP id a640c23a62f3a-b767170c7dbmr3710910766b.50.1764592952144; Mon, 01 Dec 2025 04:42:32 -0800 (PST) Received: from victus-lab ([193.205.81.5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b76f59e8612sm1173738266b.52.2025.12.01.04.42.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 04:42:31 -0800 (PST) From: Yuri Andriaccio To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: linux-kernel@vger.kernel.org, Luca Abeni , Yuri Andriaccio Subject: [RFC PATCH v4 28/28] [DEBUG] sched/rt: Add debug BUG_ONs in migration code. Date: Mon, 1 Dec 2025 13:42:01 +0100 Message-ID: <20251201124205.11169-29-yurand2000@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251201124205.11169-1-yurand2000@gmail.com> References: <20251201124205.11169-1-yurand2000@gmail.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" Add debug BUG_ONs in group specific migration functions. Can be safely added after all the migration patches. These are extra asserts which are only useful to debug the kernel code and are not meant to be part of the final patchset. Signed-off-by: Yuri Andriaccio --- kernel/sched/rt.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 435d147aa5..1a777298f9 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -349,6 +349,9 @@ static void rt_queue_push_from_group(struct rt_rq *rt_r= q) struct rq *rq =3D served_rq_of_rt_rq(rt_rq); struct rq *global_rq =3D cpu_rq(rq->cpu); + BUG_ON(rt_rq =3D=3D NULL); + BUG_ON(rq =3D=3D global_rq); + if (global_rq->rq_to_push_from) return; @@ -366,6 +369,10 @@ static void rt_queue_pull_to_group(struct rt_rq *rt_rq) struct rq *global_rq =3D cpu_rq(rq->cpu); struct sched_dl_entity *dl_se =3D dl_group_of(rt_rq); + BUG_ON(rt_rq =3D=3D NULL); + BUG_ON(!is_dl_group(rt_rq)); + BUG_ON(rq =3D=3D global_rq); + if (dl_se->dl_throttled || global_rq->rq_to_pull_to) return; @@ -1393,6 +1400,8 @@ static struct rq *find_lock_lowest_rq(struct task_str= uct *task, struct rq *rq) */ static int push_rt_task(struct rq *rq, bool pull) { + BUG_ON(is_dl_group(&rq->rt)); + struct task_struct *next_task; struct rq *lowest_rq; int ret =3D 0; @@ -1689,6 +1698,8 @@ void rto_push_irq_work_func(struct irq_work *work) static void pull_rt_task(struct rq *this_rq) { + BUG_ON(is_dl_group(&this_rq->rt)); + int this_cpu =3D this_rq->cpu, cpu; bool resched =3D false; struct task_struct *p, *push_task; @@ -1813,6 +1824,8 @@ static int group_find_lowest_rt_rq(struct task_struct= *task, struct rt_rq *task_ int prio, lowest_prio; int cpu, this_cpu =3D smp_processor_id(); + BUG_ON(task->sched_task_group !=3D task_rt_rq->tg); + if (task->nr_cpus_allowed =3D=3D 1) return -1; /* No other targets possible */ @@ -1915,6 +1928,8 @@ static struct rt_rq *group_find_lock_lowest_rt_rq(str= uct task_struct *task, stru struct sched_dl_entity *lowest_dl_se; int tries, cpu; + BUG_ON(task->sched_task_group !=3D rt_rq->tg); + for (tries =3D 0; tries < RT_MAX_TRIES; tries++) { cpu =3D group_find_lowest_rt_rq(task, rt_rq); @@ -1971,6 +1986,8 @@ static struct rt_rq *group_find_lock_lowest_rt_rq(str= uct task_struct *task, stru static int group_push_rt_task(struct rt_rq *rt_rq, bool pull) { + BUG_ON(!is_dl_group(rt_rq)); + struct rq *rq =3D rq_of_rt_rq(rt_rq); struct task_struct *next_task; struct rq *lowest_rq; @@ -2090,6 +2107,8 @@ static int group_push_rt_task(struct rt_rq *rt_rq, bo= ol pull) static void group_pull_rt_task(struct rt_rq *this_rt_rq) { + BUG_ON(!is_dl_group(this_rt_rq)); + struct rq *this_rq =3D rq_of_rt_rq(this_rt_rq); int this_cpu =3D this_rq->cpu, cpu; bool resched =3D false; @@ -2202,6 +2221,9 @@ static void group_push_rt_tasks_callback(struct rq *g= lobal_rq) { struct rt_rq *rt_rq =3D &global_rq->rq_to_push_from->rt; + BUG_ON(global_rq->rq_to_push_from =3D=3D NULL); + BUG_ON(served_rq_of_rt_rq(rt_rq) =3D=3D global_rq); + if ((rt_rq->rt_nr_running > 1) || (dl_group_of(rt_rq)->dl_throttled =3D=3D 1)) { @@ -2216,6 +2238,9 @@ static void group_pull_rt_task_callback(struct rq *gl= obal_rq) { struct rt_rq *rt_rq =3D &global_rq->rq_to_pull_to->rt; + BUG_ON(global_rq->rq_to_pull_to =3D=3D NULL); + BUG_ON(served_rq_of_rt_rq(rt_rq) =3D=3D global_rq); + group_pull_rt_task(rt_rq); global_rq->rq_to_pull_to =3D NULL; } -- 2.51.0