{"id":807665,"url":"http://patchwork.ozlabs.org/api/1.0/covers/807665/?format=json","project":{"id":19,"url":"http://patchwork.ozlabs.org/api/1.0/projects/19/?format=json","name":"Linux IMX development","link_name":"linux-imx","list_id":"linux-imx-kernel.lists.patchwork.ozlabs.org","list_email":"linux-imx-kernel@lists.patchwork.ozlabs.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20170830144120.9312-1-dietmar.eggemann@arm.com>","date":"2017-08-30T14:41:16","name":"[0/4] arm: remove cpu_efficiency","submitter":{"id":64545,"url":"http://patchwork.ozlabs.org/api/1.0/people/64545/?format=json","name":"Dietmar Eggemann","email":"dietmar.eggemann@arm.com"},"series":[{"id":629,"url":"http://patchwork.ozlabs.org/api/1.0/series/629/?format=json","date":"2017-08-30T14:41:18","name":"arm: remove cpu_efficiency","version":1,"mbox":"http://patchwork.ozlabs.org/series/629/mbox/"}],"headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"jz5OHwxf\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xj7pB2V7bz9sMN\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 00:54:58 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dn4OK-0007Lt-33; Wed, 30 Aug 2017 14:54:52 +0000","from foss.arm.com ([217.140.101.70])\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dn4Bv-0007hz-SY for linux-arm-kernel@lists.infradead.org;\n\tWed, 30 Aug 2017 14:42:12 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\n\tby usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9351380D;\n\tWed, 30 Aug 2017 07:41:43 -0700 (PDT)","from e107985-lin.cambridge.arm.com (e107985-lin.cambridge.arm.com\n\t[10.1.210.41])\n\tby usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id\n\t7C6F93F483; Wed, 30 Aug 2017 07:41:41 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe:\n\tList-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:\n\tSubject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:\n\tReferences:List-Owner; bh=2YrfB08XSM64EsseS1BgS9cSCPy0viTYLQVhatfC4HY=;\n\tb=jz5\n\tOHwxfXp7+qJGKrbGli9pKaIJ2WHldAz+eBK5cyQEKi9Y1KAeSUqfBEKKpH+6AOh5QfAxfnJ/ifuzB\n\towbwdEnWtBNXA3N4qt/oDMZ7ZwLHQCQdbL6+cYmBxtQ8NPjUawL8pqjntzPWGljfi+ikfDjYdmSdp\n\t5buD8BFQqt2iifxUZkvex9SRBNQa1cBDmTqYGRO1RIiWoFlzDySbLKSuagZSPnrIWj05R4TvoFlnq\n\t2nfXm1brVqD7aJ9G910BbTs2xKQYJse3Szm3AdW2d68kesdfNdg1wN1vJS6YH6BIvKJcB64T/SUEZ\n\tBOrrRLvWhTGLQ0Mb96bR6juqNQA/UVA==;","From":"Dietmar Eggemann <dietmar.eggemann@arm.com>","To":"linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,\n\tdevicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org","Subject":"[PATCH 0/4] arm: remove cpu_efficiency","Date":"Wed, 30 Aug 2017 15:41:16 +0100","Message-Id":"<20170830144120.9312-1-dietmar.eggemann@arm.com>","X-Mailer":"git-send-email 2.11.0","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170830_074204_059507_8D698A3E ","X-CRM114-Status":"GOOD (  10.30  )","X-Spam-Score":"-6.9 (------)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-6.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/,\n\thigh trust [217.140.101.70 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tVincent Guittot <vincent.guittot@linaro.org>,\n\tJuri Lelli <juri.lelli@arm.com>, \n\tRussell King <linux@armlinux.org.uk>, Rob Herring <robh+dt@kernel.org>,\n\tKukjin Kim <kgene@kernel.org>, Krzysztof Kozlowski <krzk@kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"},"content":"For Cortex-A15/A7 arm big.LITTLE systems there are currently two ways to\nset the cpu capacity.\n\nThe first one (commit 06073ee26775 \"ARM: 8621/3: parse cpu\ncapacity-dmips-mhz from DT\") is based on dt 'cpu capacity-dmips-mhz'\nbindings and the appropriate dt parsing code in\ndrivers/base/arch_topology.c. It further takes differences in maximum\ncpu frequency values into consideration, normalizes the maximum cpu\ncapacity to SCHED_CAPACITY_SCALE (1024) and scales all the cpus\naccordingly.\n\n  cpu capacity = (capacity-dmips-mhz * max cpu frequency) / \n                 (max capacity-dmips-mhz * max (max cpu frequency)\n\nThis solution is shared between arm and arm64 and works for other\ncombinations of big and little cpus (besides Cortex-A15/A7) as well.\n\nThe second one (commit 339ca09d7ada \"ARM: 7463/1: topology: Update\ncpu_power according to DT information\" is based on the 'struct\ncpu_efficiency table_efficiency[]' and the dt parsing code in\narch/arm/kernel/topology.c. It further requires a clock-frequency\nproperty per cpu node, calculates a so called middle frequency for an\naverage cpu in the system which is as close as possible to\nSCHED_CAPACITY_SCALE (1024) and uses this to compute the cpu capacity\nvalues.\n\n  cpu capacity = (cpu efficiency * clock frequency) / middle capacity\n\nThis solution only works for Cortex-A15/A7 arm big.LITTLE systems.\n\nThe aim of this patch-set is to have only one solution for all arm and\narm64 big.LITTLE platforms.\n\n(1) Therefore, it removes the code for the 'cpu_efficiency/\n    clock-frequency dt property' (second) solution [patch 01/04] and\n    migrates the arm big.LITTLE platforms currently using this approach\n    [patch 02-04/04] to use the 'cpu capacity-dmips-mhz' (first)\n    solution.\n\n(2) Moreover, it will also assure that the highest original cpu capacity\n    (rq->cpu_capacity_orig) in a non-smt system is SCHED_CAPACITY_SCALE\n    (1024).\n\n(3) And finally, another advantage is the dynamic detection of the max\n    cpu frequency which comes with the first solution instead of the\n    static clock-frequency dt property value.\n\nCurrently, the arm dt parsing code in parse_dt_topology() checks if the\ndt uses the capacity-dmips-mhz property. If this is the case it uses\nthe first, otherwise the second solution. This patch-set removes the\ncode for the second solution from arch/arm/kernel/topology.c.\n\nThe following arm big.LITTLE platforms which use cpu node descriptions\nwith the 'compatible' properties \"arm,cortex-a15\" and \"arm,cortex-a7\"\nas well as the \"clock-frequency\" are (theoretically*) affected:\n\n(1) arndale-octa, peach-pi, peach-pit, smdk5420 (exynos5420-cpus.dtsi)\n\n(2) odroidxu3, odroidxu3-lite, odroidxu4 (exynos5422-cpus.dtsi)\n\n(3) r8a7790-lager (r8a7790.dtsi)\n\nTC2 (vexpress-v2p-ca15_a7.dts) already has the capacity-dmips-mhz\nproperties (it never had \"clock-frequency\" properties per cpu node\nthough).\n\n*Currently, these platforms are only theoretically affected. The reason\nis because heterogeneous cpu capacity support on arm stopped with commit\n8cd5601c5060 (\"sched/fair: Convert arch_scale_cpu_capacity() from weak\nfunction to #define\") because the arch never defined\narch_scale_cpu_capacity so the task scheduler uses the default\nimplementation in kernel/sched/sched.h. This will change as soon the\npatch \"arm: wire cpu-invariant accounting support up to the task\nscheduler\" [1] is in mainline.\n\nThis patch-set has been tested on TC2 and Samsung Chromebook 2 13\"\n(peach-pi, Exynos 5800).\n\n[1] https://marc.info/?l=linux-kernel&m=150367158111303&w=2\n\nDietmar Eggemann (4):\n  arm: topology: remove cpu_efficiency\n  arm: dts: exynos: add exynos5420 cpu capacity-dmips-mhz information\n  arm: dts: exynos: add exynos5422 cpu capacity-dmips-mhz information\n  arm: dts: r8a7790: add cpu capacity-dmips-mhz information\n\n arch/arm/boot/dts/exynos5420-cpus.dtsi |   8 +++\n arch/arm/boot/dts/exynos5422-cpus.dtsi |   8 +++\n arch/arm/boot/dts/r8a7790.dtsi         |   8 +++\n arch/arm/kernel/topology.c             | 113 +--------------------------------\n 4 files changed, 27 insertions(+), 110 deletions(-)"}