From patchwork Thu Dec 10 16:29:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 11965527 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=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 272F5C433FE for ; Thu, 10 Dec 2020 16:31:25 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 B9FD023158 for ; Thu, 10 Dec 2020 16:31:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B9FD023158 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=LGQIamKXDMBIqJ5h2Angf7VpzkvfHKxecqXuhe0bDXo=; b=TaOZWBlifVNWAlf/EbzdQT7eft JXY+FceKmnnXD25QnlGLC80kkOP0Vn5VFKrZRIcrVG6+mm0eUrWSVP8Sb6KpdTVFisn0FhuIOCzYI CAYMgy553Ws/0n3YVXwgkYAa9blDNeBZgqpTLDA8RRu4FiehfcMLWzq/+1oAvBVpdAVTCvAVWFeLS 8LgHfEThgMtcKFeHtr/Kc4d2V597alGWvrVambneyi/92gFnEF45vcH5t/jmsDs4mDwnT6OT/0S60 aU1MhRv6UHKH13naO62J63D1cIAniHqa4JxLBTkZ0WGIXn9+LJS3y0zaC8q/5tSz4IK/lZj31ra9j weL6pEKw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knOpK-0000ba-J8; Thu, 10 Dec 2020 16:29:58 +0000 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knOox-0000QZ-4h for linux-arm-kernel@lists.infradead.org; Thu, 10 Dec 2020 16:29:51 +0000 Received: by mail-pg1-x541.google.com with SMTP id e2so4685080pgi.5 for ; Thu, 10 Dec 2020 08:29:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uW7jPDAJP0W04jlB4xyfWMLexo3zn7jvZAA+I5zJHp0=; b=rfbCw2pDR9L3wrIjols0HhZZ+nbrQq7ayfwaLPo9A5f/YDf+wcNW0WMWhYomSw/2Y6 ije2M5566hxUfHBWNtc0KkEZBuS/NsJNJQHaAH0cW6hc7HqSGuStC2bG5xYcWJsIGV+b jCwDNlChUCyc8g8LB9eoogC3eHhZYb51MpkbDYz6349H3OHfyBQBwyYqb2bzn50TLCQH SHeGPvucXyyuiRaOa5FzQZ3Vn+kyraGVogTk7M0H6qHk63VWNFG/HtNXXY6MTkK7m2PR 4r6FrbAshrINB+COW8A9/15fPHoabOuEnNWcoaj6WykEg9eku9af2c7c3i7ApKrTSFGj cyaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=uW7jPDAJP0W04jlB4xyfWMLexo3zn7jvZAA+I5zJHp0=; b=Qz1poNdadxuAL5tMzZP4Ur5Jwa3Y2acUI4vfh1EOgMUGYlMQ2SyUmZI4Rp4hdPo7UF peDHKAGojU8oMi6pI1jUoCVgFw5tmDMGCtOcP5hq3WkUu2p+JhiV1xHxLRV5DiKBPbHA BLNLdFGtXW3XfuiZw0cmZuCPz14iPVd2TREN9mVAcSA/JT2jB5Clsc686NoDzb538G4u BPbjMPhRJmeiVeQU57fTlBZNWMzRThHr9MIsZzKmfFYIeFRpxsVPkKcIMFRgHeaVzrZy nm7U0DwEXWUaKQXzfL1aPaoTbTP3rSupEDqyKJLy6FnnLwwpSubgMdo8gQ3pxTMtZYff 51Bg== X-Gm-Message-State: AOAM530klBGcaLL1YU/2/VJ1IJvdhbililBWdiSFoiHtyPjez2N7sURf E2nQCdRCCPFYwEn1pAgc0UwIdkJSfLpxvA== X-Google-Smtp-Source: ABdhPJwtzzxEFMY808WWjp/6A+1rJeaDRULKBdPL3epPOOV5Xprf8FqEKOHkYblFqy8Y89ieyJgGAQ== X-Received: by 2002:a17:90a:a012:: with SMTP id q18mr8242051pjp.223.1607617772619; Thu, 10 Dec 2020 08:29:32 -0800 (PST) Received: from localhost ([122.172.20.109]) by smtp.gmail.com with ESMTPSA id x15sm6764754pfn.118.2020.12.10.08.29.30 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Dec 2020 08:29:31 -0800 (PST) From: Viresh Kumar To: Ionela Voinescu , Catalin Marinas , Will Deacon Subject: [PATCH V2 1/2] arm64: topology: Avoid the have_policy check Date: Thu, 10 Dec 2020 21:59:22 +0530 Message-Id: <5f85c2ddf7aa094d7d2ebebe8426f84fad0a99b7.1607617625.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.25.0.rc1.19.g042ed3e048af MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201210_112935_329651_1F716791 X-CRM114-Status: GOOD ( 19.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Viresh Kumar , Vincent Guittot , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Every time I have stumbled upon this routine, I get confused with the way 'have_policy' is used and I have to dig in to understand why is it so. Here is an attempt to make it easier to understand, and hopefully it is an improvement. The 'have_policy' check was just an optimization to avoid writing to amu_fie_cpus in case we don't have to, but that optimization itself is creating more confusion than the real work. Lets just do that if all the CPUs support AMUs. It is much cleaner that way. Signed-off-by: Viresh Kumar Reviewed-by: Ionela Voinescu --- V2: - Skip the have_policy check altogether - Updated subject and log arch/arm64/kernel/topology.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index f6faa697e83e..ebadc73449f9 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -199,14 +199,14 @@ static int freq_inv_set_max_ratio(int cpu, u64 max_rate, u64 ref_rate) return 0; } -static inline bool +static inline void enable_policy_freq_counters(int cpu, cpumask_var_t valid_cpus) { struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); if (!policy) { pr_debug("CPU%d: No cpufreq policy found.\n", cpu); - return false; + return; } if (cpumask_subset(policy->related_cpus, valid_cpus)) @@ -214,8 +214,6 @@ enable_policy_freq_counters(int cpu, cpumask_var_t valid_cpus) amu_fie_cpus); cpufreq_cpu_put(policy); - - return true; } static DEFINE_STATIC_KEY_FALSE(amu_fie_key); @@ -225,7 +223,6 @@ static int __init init_amu_fie(void) { bool invariance_status = topology_scale_freq_invariant(); cpumask_var_t valid_cpus; - bool have_policy = false; int ret = 0; int cpu; @@ -245,17 +242,12 @@ static int __init init_amu_fie(void) continue; cpumask_set_cpu(cpu, valid_cpus); - have_policy |= enable_policy_freq_counters(cpu, valid_cpus); + enable_policy_freq_counters(cpu, valid_cpus); } - /* - * If we are not restricted by cpufreq policies, we only enable - * the use of the AMU feature for FIE if all CPUs support AMU. - * Otherwise, enable_policy_freq_counters has already enabled - * policy cpus. - */ - if (!have_policy && cpumask_equal(valid_cpus, cpu_present_mask)) - cpumask_or(amu_fie_cpus, amu_fie_cpus, valid_cpus); + /* Overwrite amu_fie_cpus if all CPUs support AMU */ + if (cpumask_equal(valid_cpus, cpu_present_mask)) + cpumask_copy(amu_fie_cpus, cpu_present_mask); if (!cpumask_empty(amu_fie_cpus)) { pr_info("CPUs[%*pbl]: counters will be used for FIE.", From patchwork Thu Dec 10 16:29:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 11965529 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=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham 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 A7F7DC4361B for ; Thu, 10 Dec 2020 16:31:28 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 6213223158 for ; Thu, 10 Dec 2020 16:31:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6213223158 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nOenhdExtp7J0u+wo23tGXJ8XKw8o2GApssboM1zYlQ=; b=M6ltb0NR+LX/dTqGfoKpPjOu7 uIyuYYIXh7CS2oQkryzUWqSWRqOBV7n1Y5+w7LGHxPBlicPCRwxeUn6l/qheHoOLGTBX9itXNZhDr mLi+l87pbiOw/N8O+UuHqFqayoPVt2mYQWyr3gMbTRkaM84rGGidCHINa2z0CHfZJZwFbLAfQV3Wd 3a5PZQ6WzZDVYKyPr+LoBzlE9WsjFCpTQJsTsSwDZNTA0Vqv5m5JEHoFFhDF/hsLrFoAlTX49XDni Tly/tc8t+jzUUyaCdXuYHRUz2Scl+RzHpgd7Lgddnv63INIxiLCR9qOmyMzTEaUHN8L0FdrujSeUU leSOlG+VQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knOpZ-0000gy-TG; Thu, 10 Dec 2020 16:30:13 +0000 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knOp0-0000T3-Ub for linux-arm-kernel@lists.infradead.org; Thu, 10 Dec 2020 16:30:04 +0000 Received: by mail-pg1-x541.google.com with SMTP id n1so1958756pge.8 for ; Thu, 10 Dec 2020 08:29:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gv4YPjz2g4HSduKeRhW9TiUO1Jvr8v2DzdEJIoyTN5Y=; b=gSeFsdVVpQp+bz1eXdJhj5qFWrMbHhW2RW2z/sNL0f2/SbSoRHT4T2RyMc0eCWqDej 08ve8H0J/geDYo2CHvOn70cv3ixK2rJvcZQSAGelyDGRKQEuYjGxFwDPYowrXkHRJGAY 3C1zyUuw4kgnFdI9jdCZ+Cv8YBdk10w8ovoM8rB+QLKCqSnFYzpz9vt6OREe5zIlhMsq ThetTsU/o7JVh6O7G3gE0SPbfec7+JhlnWT9ly7rDPKxZnzKOV5uP78d8dgWRu+DEwAE hvJnP+m9YWQzOeEbZpVDCrDs5BwpDCONyGBwC8WVsb+0b9wji50d5/esIzfIlCIbX2Q/ FXyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gv4YPjz2g4HSduKeRhW9TiUO1Jvr8v2DzdEJIoyTN5Y=; b=c18PdKDD2vUricXi2Y4PY6LmeVPjPIeoYq+TiJ/0Mhftw2rSNX1Ts+Da3s/jkKaPGQ HIv4r5LADOZDMP9xDw/kdOj+1SiCMkJM4FPYquJ0vDRcHVDP6C6Sh+yFGgO7OtYo2MG7 bAuYE1JuYQzNfeLFj8ADdkGqgDmh1LPJaFB0+S2W0z0y4GtX1z7k1hirSTtsDKFsGMly iJ8/2wQ4GadEGKM0QjSs2uX0a7sz2U57x8c4GRonTc9gRZZBZO/Zs5X5jnkNlAAAJRo3 rJ3UDcEFbaGlThgqzcPYS2YJLDn5RH/59swYLn8mdAf/kTCjmp7EdIUxXm+3X7uz0OG/ B5Vg== X-Gm-Message-State: AOAM530y3R78t/UtLsSaQUeC91W1sUrF9Gu5wBcvivH384BvsvnmxvdE xMT4Kh/pwS8/eHYZ/oAqofTPdg== X-Google-Smtp-Source: ABdhPJxSqm5Mc0cj/FdswgJ2J75MSczz7gOD2cn9HTmBKGRMclhzv/c3n0IlwqI6qLR8Vs5PawbL4A== X-Received: by 2002:a63:a62:: with SMTP id z34mr7397468pgk.193.1607617777096; Thu, 10 Dec 2020 08:29:37 -0800 (PST) Received: from localhost ([122.172.20.109]) by smtp.gmail.com with ESMTPSA id s13sm7181323pfd.99.2020.12.10.08.29.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Dec 2020 08:29:35 -0800 (PST) From: Viresh Kumar To: Ionela Voinescu , Catalin Marinas , Will Deacon Subject: [PATCH V2 2/2] arm64: topology: Reorder init_amu_fie() a bit Date: Thu, 10 Dec 2020 21:59:23 +0530 Message-Id: <202f775d57bd143602f9100ba3d9619d15d43409.1607617625.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.25.0.rc1.19.g042ed3e048af In-Reply-To: <5f85c2ddf7aa094d7d2ebebe8426f84fad0a99b7.1607617625.git.viresh.kumar@linaro.org> References: <5f85c2ddf7aa094d7d2ebebe8426f84fad0a99b7.1607617625.git.viresh.kumar@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201210_112939_098986_96BA83A7 X-CRM114-Status: GOOD ( 18.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Viresh Kumar , Vincent Guittot , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This patch does a couple of optimizations in init_amu_fie(), like early exits from paths where we don't need to continue any further, moving the calls to topology_scale_freq_invariant() just when we need them, instead of at the top of the routine, and avoiding calling it for the third time. Signed-off-by: Viresh Kumar --- V2: - The enable/disable dance is actually required, just made a bunch of other optimizations to make it look better. arch/arm64/kernel/topology.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index ebadc73449f9..1ebdb667f0d1 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -221,7 +221,7 @@ static DEFINE_STATIC_KEY_FALSE(amu_fie_key); static int __init init_amu_fie(void) { - bool invariance_status = topology_scale_freq_invariant(); + bool prev, now; cpumask_var_t valid_cpus; int ret = 0; int cpu; @@ -249,18 +249,24 @@ static int __init init_amu_fie(void) if (cpumask_equal(valid_cpus, cpu_present_mask)) cpumask_copy(amu_fie_cpus, cpu_present_mask); - if (!cpumask_empty(amu_fie_cpus)) { - pr_info("CPUs[%*pbl]: counters will be used for FIE.", - cpumask_pr_args(amu_fie_cpus)); - static_branch_enable(&amu_fie_key); - } + if (cpumask_empty(amu_fie_cpus)) + goto free_valid_mask; + + prev = topology_scale_freq_invariant(); + static_branch_enable(&amu_fie_key); + now = topology_scale_freq_invariant(); /* * If the system is not fully invariant after AMU init, disable * partial use of counters for frequency invariance. */ - if (!topology_scale_freq_invariant()) + if (!now) { static_branch_disable(&amu_fie_key); + goto free_valid_mask; + } + + pr_info("CPUs[%*pbl]: counters will be used for FIE.", + cpumask_pr_args(amu_fie_cpus)); /* * Task scheduler behavior depends on frequency invariance support, @@ -268,7 +274,7 @@ static int __init init_amu_fie(void) * a result of counter initialisation and use, retrigger the build of * scheduling domains to ensure the information is propagated properly. */ - if (invariance_status != topology_scale_freq_invariant()) + if (prev != now) rebuild_sched_domains_energy(); free_valid_mask: