Received: by 2002:ab2:7903:0:b0:1fb:b500:807b with SMTP id a3csp818205lqj; Mon, 3 Jun 2024 01:22:19 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVq++nKfs6NssM7vyluRRtStrARLhtLfpdP84PPIaINA5RFAcpY9/O4U0BL/ZRZsTg7BXplBRNj5pPHTJ/ighM7dM3vMvrdlZBG8EcgkQ== X-Google-Smtp-Source: AGHT+IHDHJYVSbIR7TGS+T800geLhla+pwe/7TLovSOXCZZ5+wa4c/rjhiUjRp1VvFbKWuCv3NzL X-Received: by 2002:a37:e30b:0:b0:792:bcc4:23de with SMTP id af79cd13be357-794f5c97397mr907052385a.36.1717402939031; Mon, 03 Jun 2024 01:22:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717402939; cv=pass; d=google.com; s=arc-20160816; b=QqtYhsTgdvtn8WShsYqqvbQy623fzB9lOJYcjmjbQQPerdgyAiUx8DQN7sbyFp9e0u oVLbz6uH0pSW3yX9bmyHIda1uxpg+TaRbF6g2z22nES8naccu1yAnyXvBb9hr/dJAHF0 JB4W9pk/J81WTxYHLT/WmaAUiId0J7U5ZtpbFiusBQgRTzLXJLAyAvMX3BIXFxvx3yHR H3m3UfNupK3gWKVoUxGxe1oTwkvsWsQ6/cyjxFN29cztuNEiJi8udC3vZhDP/Ahg3XtY qlMaP0SPLNDm5/olcCkUpewhu8FbJiaW0ratVawJVoOkQxbIcwVIyTNM7jEhsDzMcioi gpGg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=E8rxVW5EiBa5RCHt4PpMEnWx2YZ6AtCvJ9hGcF+rktY=; fh=87IK6MSmzCt0b0c7BJM3BJ7okOQYSFhMEnQqWeNSPl8=; b=GJT7S1Wus2on0LI644O+Lad7RoESDh4CuHY50LSbW2qfU2QW8j5i6RaJdFFWKp9IG+ oqhRGarj1HNcU9LUbpCP9MvKQUXxVgdpbLKem7jK/kOIXmBw0paR3OZuB+CKhsc2CKVz UHcwMcPkVDIRd1N0+8fAPM8km8yrJkJRYoIcYrO8+6cAHzBahBq/F3NPSpZ/BicLls4B Iw+UVO9Oy9sWe1d1t7+Pi/4MBb+FEBqIQ7a3njdjkpvGZJRAFRh3bbJXIJ6J1nakTQh2 gx5kDanqHBFvDUVALl71NIQxuBcK2bIFHxwjWukmvq5SsFQQB5OpbMmOUD5SM/dQT9MW Q8zg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-198771-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-198771-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 af79cd13be357-794f32a7f48si798245785a.676.2024.06.03.01.22.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Jun 2024 01:22:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-198771-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; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-198771-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-198771-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 B02551C216CC for ; Mon, 3 Jun 2024 08:22:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8D83457CAA; Mon, 3 Jun 2024 08:22:12 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BA69E4AEF5 for ; Mon, 3 Jun 2024 08:22:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717402932; cv=none; b=g97rq1/jR7RHHR+nIpuVf8tidgvkcHKQBC4m3WiJUPiJC6rQ6hOhGnOJ6OvuZLqBd+9MGjYp7yqZvw2fwuhzq3SmvmlGIH2lMDKjE5KMZKf3ZeL1ml62gGeMZf9Lgl2BecHUPbiV2cBfZGt2rRXY0gPewv5s9JlSgzMLvoMdsX0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717402932; c=relaxed/simple; bh=pfNUgLQMKlNwJ0XnIZ+P411+AYqKdFF05wDxFVQPy8U=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=qAEzWtAoU9QO4BdjoZ8SOmtHgH8JS99b4fs7vOp4gl56o1yX4O8DoQZ/V/NfJ5Zp+z/DjXKAER9+DBgTFEB1NgLPHCD6K2Ydiy5xLv+XgJjvXCYkrI5178rZvk+n0NoqD2XdOM4SA/6qYpH9TfxysGuZ6xa229mUCcNArvvuWQI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 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 663DB1042; Mon, 3 Jun 2024 01:22:34 -0700 (PDT) Received: from e125905.cambridge.arm.com (e125905.cambridge.arm.com [10.1.194.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 66CCA3F792; Mon, 3 Jun 2024 01:22:08 -0700 (PDT) From: Beata Michalska To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ionela.voinescu@arm.com, sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, vincent.guittot@linaro.org, vanshikonda@os.amperecomputing.com Cc: sumitg@nvidia.com, yang@os.amperecomputing.com, lihuisong@huawei.com, viresh.kumar@linaro.org, rafael@kernel.org Subject: [PATCH v6 0/4] Add support for AArch64 AMUv1-based arch_freq_get_on_cpu Date: Mon, 3 Jun 2024 09:21:50 +0100 Message-Id: <20240603082154.3830591-1-beata.michalska@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Introducing arm64 specific version of arch_freq_get_on_cpu, cashing on existing implementation for FIE and AMUv1 support: the frequency scale factor, updated on each sched tick, serves as a base for retrieving the frequency for a given CPU, representing an average frequency reported between the ticks - thus its accuracy is limited. The changes have been rather lightly (due to some limitations) tested on an FVP model. Note that some small discrepancies have been observed while testing (on the model) and this is currently being investigated, though it should not have any significant impact on the overall results. Relevant discussions: [1] https://lore.kernel.org/all/20240229162520.970986-1-vanshikonda@os.amperecomputing.com/ [2] https://lore.kernel.org/all/7eozim2xnepacnnkzxlbx34hib4otycnbn4dqymfziqou5lw5u@5xzpv3t7sxo3/ [3] https://lore.kernel.org/all/20231212072617.14756-1-lihuisong@huawei.com/ [4] https://lore.kernel.org/lkml/ZIHpd6unkOtYVEqP@e120325.cambridge.arm.com/T/#m4e74cb5a0aaa353c60fedc6cfb95ab7a6e381e3c v6: - delay allocating cpumask for AMU FIE support instead of invalidating the mask upon failure to register cpufreq policy notifications - drop the change to cpufreq core (for cpuinfo_cur_freq) as this one will be sent as a separate change v5: - Fix invalid access to cpumask - Reworked finding reference cpu when getting the freq v4: - dropping seqcount - fixing identifying active cpu within given policy - skipping full dynticks cpus when retrieving the freq - bringing back plugging in arch_freq_get_on_cpu into cpuinfo_cur_freq v3: - dropping changes to cpufreq_verify_current_freq - pulling in changes from Ionela initializing capacity_freq_ref to 0 (thanks for that!) and applying suggestions made by her during last review: - switching to arch_scale_freq_capacity and arch_scale_freq_ref when reversing freq scale factor computation - swapping shift with multiplication - adding time limit for considering last scale update as valid - updating frequency scale factor upon entering idle v2: - Splitting the patches - Adding comment for full dyntick mode - Plugging arch_freq_get_on_cpu into cpufreq_verify_current_freq instead of in show_cpuinfo_cur_freq to allow the framework to stay more in sync with potential freq changes Beata Michalska (3): arm64: amu: Delay allocating cpumask for AMU FIE support arm64: Provide an AMU-based version of arch_freq_get_on_cpu arm64: Update AMU-based frequency scale factor on entering idle Ionela Voinescu (1): arch_topology: init capacity_freq_ref to 0 arch/arm64/kernel/topology.c | 145 +++++++++++++++++++++++++++++------ drivers/base/arch_topology.c | 8 +- 2 files changed, 127 insertions(+), 26 deletions(-) -- 2.25.1