Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp706151rdb; Fri, 22 Dec 2023 02:33:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQrh0b1RT/uX3RdfSvmC2rrqchM14MmK4WnKovihzzyv+Uwel2n7eIHiag9VWug1KmLw+4 X-Received: by 2002:a05:622a:1306:b0:425:4043:8d61 with SMTP id v6-20020a05622a130600b0042540438d61mr1060269qtk.124.1703241180966; Fri, 22 Dec 2023 02:33:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703241180; cv=none; d=google.com; s=arc-20160816; b=r8391DWBQ6A+WxphiNhMqrn6PmLWfHjs63XXD/sWEkUXyBpnJswnClP0Ck7H3H0LyR 096DJLgNF1BIQFm8rhflCpigsWY5MjYtizqB86QWcm+AaS54MUMUZw6/HJb7Pq6Qi3Kg esVSlBQzVzEkj4VH8mVooMqXjBMrt4AVDFUfItBIY3KQzCA3/SYrYdBopJxoXHO9qI7G 6RfquoFpZEoPoqewGvlqlHYEbUl6ve63emnzg2BEn7Hnk0lPtaR9v2td/3LHR+cui2Vu QbyezZFsk0n2nQwsu5aK+QMJDoyrB7u+hRX15iE5pMIxlh6rUZhb49q0UuqEcMLrll97 tumw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=eC5iUnePp3yLe1VbftnVyt4o1bZG9iFkVRuNkTboEdE=; fh=IIn5181kkf6eV43uezdjLqEXV63ArwY//WIorpexdA4=; b=LjoNkz3z/SiQf3VVqC0RshJYJ6S2hhmeqYJGuvtDwojD8/C6h8I5/QlnjBoWEctPpV KEA75Y4MQaJ8GRWsFVnwhQ5TVLLPEGF0dhFfTOp+tzX6q6V0vWnbu+ETByg6+Q2mo9re VeUQfGt0w1uahEjG9vJyi79Uf/wJytZm9rjoKcWTMvnJp3gux+0ThK2O+5Xi286zt7tp k0KIm2W+zllci3WarqYV4Qz4hz9xgUFSkgKWYDPuKnuivitT0rNSCtDtuEt3FXwLf1V6 tYuCnwkE2EpjfO9tPrbZca9CuGsss+n8GAx0PEe93muJtemiue2r0ehc68/0DzHyfdjg 91vA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-9596-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9596-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id o13-20020a05622a044d00b00425814dac1asi3997301qtx.246.2023.12.22.02.33.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Dec 2023 02:33:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-9596-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-9596-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9596-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id A10561C21968 for ; Fri, 22 Dec 2023 10:33:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B9A43171B6; Fri, 22 Dec 2023 10:32:53 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C16B1168AD for ; Fri, 22 Dec 2023 10:32:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0D8402F4; Fri, 22 Dec 2023 02:33:35 -0800 (PST) Received: from [10.57.87.46] (unknown [10.57.87.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4C0B03F738; Fri, 22 Dec 2023 02:32:46 -0800 (PST) Message-ID: <371608cd-9abd-4022-a8a0-3a4aa00f535c@arm.com> Date: Fri, 22 Dec 2023 10:32:44 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v7 18/23] sched: Add push_task_chain helper Content-Language: en-US To: John Stultz , LKML Cc: Joel Fernandes , Qais Yousef , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Valentin Schneider , Steven Rostedt , Ben Segall , Zimuzo Ezeozue , Youssef Esmat , Mel Gorman , Daniel Bristot de Oliveira , Will Deacon , Waiman Long , Boqun Feng , "Paul E. McKenney" , Xuewen Yan , K Prateek Nayak , Thomas Gleixner , kernel-team@android.com References: <20231220001856.3710363-1-jstultz@google.com> <20231220001856.3710363-19-jstultz@google.com> From: Metin Kaya In-Reply-To: <20231220001856.3710363-19-jstultz@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 20/12/2023 12:18 am, John Stultz wrote: > From: Connor O'Brien > > Switch logic that deactivates, sets the task cpu, > and reactivates a task on a different rq to use a > helper that will be later extended to push entire > blocked task chains. > > This patch was broken out from a larger chain migration > patch originally by Connor O'Brien. I think the patches #18, #19, #22 can be upstreamed regardless of other Proxy Execution patches. > > Cc: Joel Fernandes > Cc: Qais Yousef > Cc: Ingo Molnar > Cc: Peter Zijlstra > Cc: Juri Lelli > Cc: Vincent Guittot > Cc: Dietmar Eggemann > Cc: Valentin Schneider > Cc: Steven Rostedt > Cc: Ben Segall > Cc: Zimuzo Ezeozue > Cc: Youssef Esmat > Cc: Mel Gorman > Cc: Daniel Bristot de Oliveira > Cc: Will Deacon > Cc: Waiman Long > Cc: Boqun Feng > Cc: "Paul E. McKenney" > Cc: Metin Kaya > Cc: Xuewen Yan > Cc: K Prateek Nayak > Cc: Thomas Gleixner > Cc: kernel-team@android.com > Signed-off-by: Connor O'Brien > [jstultz: split out from larger chain migration patch] > Signed-off-by: John Stultz > --- > kernel/sched/core.c | 4 +--- > kernel/sched/deadline.c | 8 ++------ > kernel/sched/rt.c | 8 ++------ > kernel/sched/sched.h | 9 +++++++++ > 4 files changed, 14 insertions(+), 15 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 0cd63bd0bdcd..0c212dcd4b7a 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -2721,9 +2721,7 @@ int push_cpu_stop(void *arg) > > // XXX validate p is still the highest prio task > if (task_rq(p) == rq) { > - deactivate_task(rq, p, 0); > - set_task_cpu(p, lowest_rq->cpu); > - activate_task(lowest_rq, p, 0); > + push_task_chain(rq, lowest_rq, p); > resched_curr(lowest_rq); > } > > diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c > index 4f998549ea74..def1eb23318b 100644 > --- a/kernel/sched/deadline.c > +++ b/kernel/sched/deadline.c > @@ -2313,9 +2313,7 @@ static int push_dl_task(struct rq *rq) > goto retry; > } > > - deactivate_task(rq, next_task, 0); > - set_task_cpu(next_task, later_rq->cpu); > - activate_task(later_rq, next_task, 0); > + push_task_chain(rq, later_rq, next_task); > ret = 1; > > resched_curr(later_rq); > @@ -2401,9 +2399,7 @@ static void pull_dl_task(struct rq *this_rq) > if (is_migration_disabled(p)) { > push_task = get_push_task(src_rq); > } else { > - deactivate_task(src_rq, p, 0); > - set_task_cpu(p, this_cpu); > - activate_task(this_rq, p, 0); > + push_task_chain(src_rq, this_rq, p); > dmin = p->dl.deadline; > resched = true; > } > diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c > index a7b51a021111..cf0eb4aac613 100644 > --- a/kernel/sched/rt.c > +++ b/kernel/sched/rt.c > @@ -2128,9 +2128,7 @@ static int push_rt_task(struct rq *rq, bool pull) > goto retry; > } > > - deactivate_task(rq, next_task, 0); > - set_task_cpu(next_task, lowest_rq->cpu); > - activate_task(lowest_rq, next_task, 0); > + push_task_chain(rq, lowest_rq, next_task); > resched_curr(lowest_rq); > ret = 1; > > @@ -2401,9 +2399,7 @@ static void pull_rt_task(struct rq *this_rq) > if (is_migration_disabled(p)) { > push_task = get_push_task(src_rq); > } else { > - deactivate_task(src_rq, p, 0); > - set_task_cpu(p, this_cpu); > - activate_task(this_rq, p, 0); > + push_task_chain(src_rq, this_rq, p); > resched = true; > } > /* > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index 765ba10661de..19afe532771f 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -3546,5 +3546,14 @@ static inline void init_sched_mm_cid(struct task_struct *t) { } > > extern u64 avg_vruntime(struct cfs_rq *cfs_rq); > extern int entity_eligible(struct cfs_rq *cfs_rq, struct sched_entity *se); > +#ifdef CONFIG_SMP > +static inline > +void push_task_chain(struct rq *rq, struct rq *dst_rq, struct task_struct *task) > +{ > + deactivate_task(rq, task, 0); > + set_task_cpu(task, dst_rq->cpu); > + activate_task(dst_rq, task, 0); > +} > +#endif > > #endif /* _KERNEL_SCHED_SCHED_H */