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=-15.2 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_SANE_1 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 C42D1C433E0 for ; Wed, 17 Feb 2021 11:33:00 +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 7FC4764E02 for ; Wed, 17 Feb 2021 11:33:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7FC4764E02 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com 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:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=3v3Rwl/CwreAvdzBJn0dr/HcfTCL0Qg+wrW59EiC1xU=; b=0aqLLld97ChOPOCqVfFr/GbrF wHyEexBPai+ikgUo2QYMpjiI91TWiMj19F00J9RQUGzzcEm+Z8/dEq8O0oWFyTFxKFBCUylSQwEmD /mj7mmxFNJ6vROkQuG0dfxz6NQlxTIEC1M4wl4u62FHDPAlTVeAJX2/XFHV5ylNxz8ple3HUHxl0I aS9oM1S2+wkTE04Bc/a0of6ggsHkH/zfzIsD6UEk7/w8oqmT88GdroE4tGXVEvK8mkoRKVWw/5X4B RSG/kEwTbQ/5kgzAhV9bmXBg9pzKYOzhpuNrnbxblOciai6wnGpD+xso+6Ha/DhliqE23nhXnH9Ox OoU/qyjZw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCL2B-0002qu-SV; Wed, 17 Feb 2021 11:30:19 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCL28-0002qQ-RX for linux-arm-kernel@lists.infradead.org; Wed, 17 Feb 2021 11:30:17 +0000 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 7203931B; Wed, 17 Feb 2021 03:30:13 -0800 (PST) Received: from localhost (unknown [10.1.195.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 043473F73B; Wed, 17 Feb 2021 03:30:12 -0800 (PST) Date: Wed, 17 Feb 2021 11:30:11 +0000 From: Ionela Voinescu To: Viresh Kumar Subject: Re: [PATCH V3 1/2] topology: Allow multiple entities to provide sched_freq_tick() callback Message-ID: <20210217113011.GA22176@arm.com> References: <20210203114521.GA6380@arm.com> <20210205091424.3od3tme3f7mh7ebp@vireshk-i7> <20210217002422.GA17422@arm.com> <20210217042558.o4anjdkayzgqny55@vireshk-i7> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210217042558.o4anjdkayzgqny55@vireshk-i7> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210217_063017_043825_C2CDB247 X-CRM114-Status: GOOD ( 27.18 ) 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: Vincent Guittot , linux-pm@vger.kernel.org, Catalin Marinas , Rafael Wysocki , linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Sudeep Holla , Will Deacon , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Replying this first as it's going to be relevant below: > Just out of curiosity, what exactly did you test and what was the setup ? :) I tested it on: - Juno R0 (CPUs [0, 3-5] are littles, CPUs [1-2] are bigs) + PMUs faking AMUs + userspace/schedutil + + cpufreq-FIE/!cpufreq-FIE + DT This testing did not yet cover patch 2/2. My checklist shows: - system invariance status correct - passed - scale factor correct (userspace cpufreq governor) - passed - arch_set_freq_scale bypassed - passed - partial "AMUs" support - failed (see below) - EAS enabling - passed I don't have an automated process for this as many test cases involve kernel source changes. In time I will automate all of these and possibly cover all scenarios with FVP (fast models) testing, but for now human error is possible :). On Wednesday 17 Feb 2021 at 09:55:58 (+0530), Viresh Kumar wrote: > On 17-02-21, 00:24, Ionela Voinescu wrote: > > I think it could be merged in patch 1/2 as it's part of enabling the use > > of multiple sources of information for FIE. Up to you! > > Sure. > > > > static void amu_fie_setup(const struct cpumask *cpus) > > > { > > > - bool invariant; > > > int cpu; > > > > > > /* We are already set since the last insmod of cpufreq driver */ > > > @@ -257,25 +256,10 @@ static void amu_fie_setup(const struct cpumask *cpus) > > > > > > cpumask_or(amu_fie_cpus, amu_fie_cpus, cpus); > > > > > > - invariant = topology_scale_freq_invariant(); > > > - > > > - /* We aren't fully invariant yet */ > > > - if (!invariant && !cpumask_equal(amu_fie_cpus, cpu_present_mask)) > > > - return; > > > - > > > > You still need these checks, otherwise you could end up with only part > > of the CPUs setting a scale factor, when only part of the CPUs support > > AMUs and there is no cpufreq support for FIE. > > Both supports_scale_freq_counters() and topology_scale_freq_invariant() take > care of this now and they will keep reporting the system as invariant until the > time all the CPUs have counters (in absence of cpufreq). > Correct! > The topology_set_scale_freq_source() API is supposed to be called multiple > times, probably once for each policy and so I don't see a need of these checks > anymore. > The problem is not topology_scale_freq_invariant() but whether a scale factor is set for some CPUs. Scenario (test system above): - "AMUs" are only supported for [1-2], - cpufreq_supports_freq_invariance() -> false What should happen: - topology_scale_freq_invariant() -> false (passed) - all CPUs should have their freq_scale unmodified (1024) - (failed) because only 2 out of 6 CPUs have a method of setting a scale factor What does happen: - arch_set_freq_tick() -> topology_set_freq_tick() will set a scale factor for [1-2] based on AMUs. This should not happen. We will end up with invariant signals for bigs and signals that are not freq invariant for littles. Ionela. > > Small(ish) optimisation at the beginning of this function: > > > > if (cpumask_empty(&scale_freq_counters_mask)) > > scale_freq_invariant = topology_scale_freq_invariant(); > > > > This will save you a call to rebuild_sched_domains_energy(), which is > > quite expensive, when cpufreq supports FIE and we also have counters. > > Good Point. > > > After comments addressed, > > > > Reviewed-by: Ionela Voinescu > > Thanks. > > > Tested-by: Ionela Voinescu > > > -- > viresh _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel