From patchwork Thu Dec 10 07:18:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 11963487 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 97545C4361B for ; Thu, 10 Dec 2020 07:19:52 +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 32F7A2313E for ; Thu, 10 Dec 2020 07:19:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 32F7A2313E 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=K2fbCTYXkXxjwbyBVJ1gTeG5RDng66KH49hJVfGMfvw=; b=3ItBClUXWiQlnMaNpb369sbfW7 HGH6Qg3jy8WsFzzcCVu+nY1iUEbGAHgvcAZOTvAjOwmxtxVBty+iuaGBtszrJ0KRYUs2i/WVROvAg xSEK+EGULDvANPf/NVbt7S8Sziz+qOiJO6sCmLSFmXQRMz+MDuZk3n3mop4nUOQBs9vKGUnyZmzLl 8Xys9mGq5O6Q285HnfX+aEIVHqHbxeg1bIyUGbg4tQqlGJ1gZZC0vpgPjIJMWUF+n91zv9CKttxUt 6PAadcGBfX/ZPAJpFmwvp/GnwwI/FTc4TgDauVP2enQzdXkzOEL5pqi3p+0FoMoe+UaDqOmmJT6Ij 5sCTqNCg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knGDi-0005sC-29; Thu, 10 Dec 2020 07:18:34 +0000 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knGDe-0005rf-Pw for linux-arm-kernel@lists.infradead.org; Thu, 10 Dec 2020 07:18:32 +0000 Received: by mail-pg1-x544.google.com with SMTP id f17so3379245pge.6 for ; Wed, 09 Dec 2020 23:18:30 -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=lBXex/ZelVI7w49KD0gBWxx/5J6ZYKqlJeM7WHAEYXw=; b=M+s924MO4M5ZTfUHaDGTd8L7wU1msR4qkCgosWTH6Uy3+kyBirOemVAcetLXdxB7/9 pZmCGPbuPZDtoObMgY1wrchDBhY6MxkmVaphYTBlc5MOIcKDll6HIYBkMWb1nU6EhVM3 GRATZ/qv2dQO7QHn2wiye9UTQoIBpMJWRWmTvcX+soSH7732G7swROAixtxHr5uwqhxP sNM9u6OZMSo4TPs0XhnCGGUl1LAqccLzbjKHPSSIvou95ApBQPyRJPgEzRsj6ZbVTdcj WSzDgT2UyCeTeSDQ4/oNmztQgzEOFYljfEw4AxYK71plPkoZUuWquA9ARJsvWlRl/8vt f+Ew== 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=lBXex/ZelVI7w49KD0gBWxx/5J6ZYKqlJeM7WHAEYXw=; b=KoWrGwWEp8QsxRwxrdRmK6r2vzMa1Pu2ZczGGC1VafzpoZJyMhFTrsYz/qr2gll02X ljTKWdzfOPxJw5eigUhrvf+G2XQobbDuYS7ZqPCf0RgMCW5D6X7a03+6fO+U+sKgvupj 4soYsaufSEt1u8e9walTFIE1qiqt3vIoowuwxGS0B7t0Cdofe82dGk1IRJ4cvFJFKt/m yzh51X9Pbd7FtvMan/fgxmhOMSFLdTlrR4/TFu0KWVxb2OaIptQIjb/JHoTmtjxm1ILY ESymT9Gfh64Wvix+6CsLM5D+DwNyX21t7XN6suUVXIKZo0LK8dGit8ajeDzw9Su6P8Uq 1qEQ== X-Gm-Message-State: AOAM530Vhu6X+tEUUftuWROL0BSb746QK4kjek58CKfTmc1zFH8coVb5 ry0E/IlpuItY9W8xyCnGsmaDbg== X-Google-Smtp-Source: ABdhPJzC09mjqTwrtWrQGDv0Va44dlq/EpHr1y8bkNPfTxmJcFid0rpvmzCZ/XAFOfK0gqnKV5h5LA== X-Received: by 2002:a65:4642:: with SMTP id k2mr5535370pgr.338.1607584708513; Wed, 09 Dec 2020 23:18:28 -0800 (PST) Received: from localhost ([122.172.20.109]) by smtp.gmail.com with ESMTPSA id h36sm5143759pgb.28.2020.12.09.23.18.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 23:18:27 -0800 (PST) From: Viresh Kumar To: Ionela Voinescu , Catalin Marinas , Will Deacon Subject: [PATCH] arm64: topology: Cleanup init_amu_fie() a bit Date: Thu, 10 Dec 2020 12:48:20 +0530 Message-Id: <5594c7d6756a47b473ceb6f48cc217458db32ab0.1607584435.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_021831_182610_C2BFF601 X-CRM114-Status: GOOD ( 18.19 ) 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. This is based on the logic that amu_fie_cpus will be empty if cpufreq policy wasn't available for any CPU. Signed-off-by: Viresh Kumar --- Ionela, I think it would be even better to do this over this patch - /* - * If none of the CPUs have cpufreq support, 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 (cpumask_empty(amu_fie_cpus) && - cpumask_equal(valid_cpus, cpu_present_mask)) + /* 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); This will also take care of the case where the cpufreq policy isn't there for a small group of CPUs, which do have AMUs enabled for them. (This doesn't normally happen though). --- arch/arm64/kernel/topology.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index f6faa697e83e..7f7d8de325b6 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,18 @@ 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 + * If none of the CPUs have cpufreq support, 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); + if (cpumask_empty(amu_fie_cpus) && + 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.",