From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACA1EC433EF for ; Fri, 17 Sep 2021 15:26:58 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C8217606A5 for ; Fri, 17 Sep 2021 15:26:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C8217606A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.ozlabs.org Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4H9yVS11QZz3bjF for ; Sat, 18 Sep 2021 01:26:56 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=pcT+euw9; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linaro.org (client-ip=2607:f8b0:4864:20::736; helo=mail-qk1-x736.google.com; envelope-from=vincent.guittot@linaro.org; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=pcT+euw9; dkim-atps=neutral Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4H9yTj6HDmz2xX6 for ; Sat, 18 Sep 2021 01:26:17 +1000 (AEST) Received: by mail-qk1-x736.google.com with SMTP id b64so18646240qkg.0 for ; Fri, 17 Sep 2021 08:26:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TM+ZvTPf59AjLNF10A7BeoUcO09QDb2XjgFhcgEDZCg=; b=pcT+euw9MpfxQpJL8z5inrpc9UbXVQZQ2nVgy3O0RT7nq5c/czEiRM05cSO6EWRAuU gE3sH5RezrEgqj9lPVJEAu1Uzrg63Jak+ajw250s5JXTUVdhdSWTpDiwqoZNqO6W2BTl iNiiM8l0WCOGD/sAV79DF7a1IHO3945+rAGe8zfPj+wOUu4ATHL6jo3lqNChqMEEN412 cJ0vLnhz7SNKPo0tENlJC/VFRAMZ9oFiGUgIcgYmTaG8TThWqqImE82NqnednT5wz7/Y LyRhnDQUB7rs2oy5bGl5O3HzHYdQHhgq2TJI78EruFDheVBMN8yXNEsxozl98C+G0V4B mm6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=TM+ZvTPf59AjLNF10A7BeoUcO09QDb2XjgFhcgEDZCg=; b=uCGDfFRiagoo5ptQ3Db4EZ8xidLRD5cNXZMBMWohkNmcTMammDfVyg8OUiTzu7Ptfp FI+L2WqhxcCsGT+83HNv3q+Z+rob9cIjvt6/31+alYaPobTdqiriLjQ/YfCH7Yr8v0N8 MeFDn26GTHzmCdHy7c6151zKkrVyt5Uz0IUg7MTJk1IwkS0HIBtnlHNAY7xCcmt/q36N RJ/+CqqI5jee9QMezhBRaGV0uzqb29/kCcmQlVxMmnzYbresxNg9roUO3JfgzEVZNBp7 ItNp28mFtfCU4uhthdj1mBh9zwA54/8yWnoUTnlV4vvsMq8IiC6qpHL1Jyo12+JnJYQq NV6Q== X-Gm-Message-State: AOAM531DKtHp2J4UMWuz4jRenEJbrBZ5fAJcVOcROLBFOmCYR0ZsKKIk MZIM6LXEBSJFC3Crs7GRgDggPxORraOSOq9AWbPcBQ== X-Google-Smtp-Source: ABdhPJxYtMwzo8aY4gkreJvqG8Rt6IjAobZ8kHMhtN1A5QYsNekX9RpcATkzUqrXx8D61aktoQcUcLetCjDmy3mwdzs= X-Received: by 2002:a25:5645:: with SMTP id k66mr14018619ybb.259.1631892372580; Fri, 17 Sep 2021 08:26:12 -0700 (PDT) MIME-Version: 1.0 References: <20210911011819.12184-1-ricardo.neri-calderon@linux.intel.com> <20210911011819.12184-3-ricardo.neri-calderon@linux.intel.com> In-Reply-To: <20210911011819.12184-3-ricardo.neri-calderon@linux.intel.com> From: Vincent Guittot Date: Fri, 17 Sep 2021 17:26:01 +0200 Message-ID: Subject: Re: [PATCH v5 2/6] sched/topology: Introduce sched_group::flags To: Ricardo Neri Content-Type: text/plain; charset="UTF-8" X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Aubrey Li , Srikar Dronamraju , "Ravi V. Shankar" , "Peter Zijlstra \(Intel\)" , Ricardo Neri , Ben Segall , Srinivas Pandruvada , "Joel Fernandes \(Google\)" , Ingo Molnar , "Rafael J . Wysocki" , Steven Rostedt , Mel Gorman , Len Brown , Nicholas Piggin , Aubrey Li , Dietmar Eggemann , Tim Chen , Quentin Perret , Daniel Bristot de Oliveira , linux-kernel , linuxppc-dev@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Sat, 11 Sept 2021 at 03:19, Ricardo Neri wrote: > > There exist situations in which the load balance needs to know the > properties of the CPUs in a scheduling group. When using asymmetric > packing, for instance, the load balancer needs to know not only the > state of dst_cpu but also of its SMT siblings, if any. > > Use the flags of the child scheduling domains to initialize scheduling > group flags. This will reflect the properties of the CPUs in the > group. > > A subsequent changeset will make use of these new flags. No functional > changes are introduced. > > Cc: Aubrey Li > Cc: Ben Segall > Cc: Daniel Bristot de Oliveira > Cc: Dietmar Eggemann > Cc: Mel Gorman > Cc: Quentin Perret > Cc: Rafael J. Wysocki > Cc: Srinivas Pandruvada > Cc: Steven Rostedt > Cc: Tim Chen > Reviewed-by: Joel Fernandes (Google) > Reviewed-by: Len Brown > Originally-by: Peter Zijlstra (Intel) > Signed-off-by: Peter Zijlstra (Intel) > Signed-off-by: Ricardo Neri Reviewed-by: Vincent Guittot > --- > Changes since v4: > * None > > Changes since v3: > * Clear the flags of the scheduling groups of a domain if its child is > destroyed. > * Minor rewording of the commit message. > > Changes since v2: > * Introduced this patch. > > Changes since v1: > * N/A > --- > kernel/sched/sched.h | 1 + > kernel/sched/topology.c | 21 ++++++++++++++++++--- > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index 3d3e5793e117..86ab33ce529d 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -1809,6 +1809,7 @@ struct sched_group { > unsigned int group_weight; > struct sched_group_capacity *sgc; > int asym_prefer_cpu; /* CPU of highest priority in group */ > + int flags; > > /* > * The CPUs this group covers. > diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c > index 4e8698e62f07..c56faae461d9 100644 > --- a/kernel/sched/topology.c > +++ b/kernel/sched/topology.c > @@ -716,8 +716,20 @@ cpu_attach_domain(struct sched_domain *sd, struct root_domain *rd, int cpu) > tmp = sd; > sd = sd->parent; > destroy_sched_domain(tmp); > - if (sd) > + if (sd) { > + struct sched_group *sg = sd->groups; > + > + /* > + * sched groups hold the flags of the child sched > + * domain for convenience. Clear such flags since > + * the child is being destroyed. > + */ > + do { > + sg->flags = 0; > + } while (sg != sd->groups); > + > sd->child = NULL; > + } > } > > for (tmp = sd; tmp; tmp = tmp->parent) > @@ -916,10 +928,12 @@ build_group_from_child_sched_domain(struct sched_domain *sd, int cpu) > return NULL; > > sg_span = sched_group_span(sg); > - if (sd->child) > + if (sd->child) { > cpumask_copy(sg_span, sched_domain_span(sd->child)); > - else > + sg->flags = sd->child->flags; > + } else { > cpumask_copy(sg_span, sched_domain_span(sd)); > + } > > atomic_inc(&sg->ref); > return sg; > @@ -1169,6 +1183,7 @@ static struct sched_group *get_group(int cpu, struct sd_data *sdd) > if (child) { > cpumask_copy(sched_group_span(sg), sched_domain_span(child)); > cpumask_copy(group_balance_mask(sg), sched_group_span(sg)); > + sg->flags = child->flags; > } else { > cpumask_set_cpu(cpu, sched_group_span(sg)); > cpumask_set_cpu(cpu, group_balance_mask(sg)); > -- > 2.17.1 >