Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757948AbcCCS0e (ORCPT ); Thu, 3 Mar 2016 13:26:34 -0500 Received: from bombadil.infradead.org ([198.137.202.9]:56463 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754174AbcCCS0c (ORCPT ); Thu, 3 Mar 2016 13:26:32 -0500 Date: Thu, 3 Mar 2016 19:26:24 +0100 From: Peter Zijlstra To: Dietmar Eggemann Cc: Vincent Guittot , "Rafael J. Wysocki" , "Rafael J. Wysocki" , Linux PM list , Juri Lelli , Steve Muckle , ACPI Devel Maling List , Linux Kernel Mailing List , Srinivas Pandruvada , Viresh Kumar , Michael Turquette Subject: Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data Message-ID: <20160303182624.GU6356@twins.programming.kicks-ass.net> References: <2495375.dFbdlAZmA6@vostro.rjw.lan> <1842158.0Xhak3Uaac@vostro.rjw.lan> <20160303153817.GO6344@twins.programming.kicks-ass.net> <20160303162829.GB6375@twins.programming.kicks-ass.net> <56D87457.1050600@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <56D87457.1050600@arm.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 835 Lines: 27 On Thu, Mar 03, 2016 at 05:28:55PM +0000, Dietmar Eggemann wrote: > > +void arch_scale_freq_tick(void) > > +{ > > + u64 aperf, mperf; > > + u64 acnt, mcnt; > > + > > + if (!static_cpu_has(X86_FEATURE_APERFMPERF)) > > + return; > > + > > + aperf = rdmsrl(MSR_IA32_APERF); > > + mperf = rdmsrl(MSR_IA32_APERF); > > + > > + acnt = aperf - this_cpu_read(arch_prev_aperf); > > + mcnt = mperf - this_cpu_read(arch_prev_mperf); > > + > > + this_cpu_write(arch_prev_aperf, aperf); > > + this_cpu_write(arch_prev_mperf, mperf); > > + > > + this_cpu_write(arch_cpu_freq, div64_u64(acnt * SCHED_CAPACITY_SCALE, mcnt)); > > Wasn't there the problem that this ratio goes to zero if the cpu is idle > in the old power estimation approach on x86? Yeah, there was something funky. SDM says they only count in C0 (ie. !idle), so it _should_ work.