From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Laight Subject: RE: [PATCH v2] cpuidle: Fix last_residency division Date: Mon, 27 Jun 2016 08:59:10 +0000 Message-ID: <063D6719AE5E284EB5DD2968C1650D6D5F4E4E87@AcuExch.aculab.com> References: <1466756638-2362-1-git-send-email-shreyas@linux.vnet.ibm.com> <14940457.SEYBmqcunj@wuerfel> <576D595F.9090001@linux.vnet.ibm.com> <3748080.8f21OXxXix@wuerfel> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <3748080.8f21OXxXix@wuerfel> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" To: 'Arnd Bergmann' , Shreyas B Prabhu Cc: "rjw@rjwysocki.net" , "daniel.lezcano@linaro.org" , "linuxppc-dev@lists.ozlabs.org" , "anton@samba.org" , "linux-pm@vger.kernel.org" List-Id: linux-pm@vger.kernel.org RnJvbTogQXJuZCBCZXJnbWFubgo+IFNlbnQ6IDI0IEp1bmUgMjAxNiAyMDo0Mwo+IE9uIEZyaWRh eSwgSnVuZSAyNCwgMjAxNiA5OjMxOjM1IFBNIENFU1QgU2hyZXlhcyBCIFByYWJodSB3cm90ZToK PiA+ID4gSWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgbGVzcyBvZnRlbiB0aGFuIGNwdWlk bGVfZW50ZXJfc3RhdGUoKSwKPiA+ID4gd2UgY291bGQganVzdCBtb3ZlIHRoZSBkaXZpc2lvbiB0 aGVyZS4gU2luY2UgdGhlIGRpdmlzb3IgaXMgY29uc3RhbnQsCj4gPiA+IGRvX2RpdigpIGNhbiBj b252ZXJ0IGl0IGludG8gYSBtdWx0aXBseSBhbmQgc2hpZnQsIG9yIHdlIGNvdWxkIHVzZQo+ID4g PiB5b3VyIHRoZSBjb2RlIHlvdSBzdWdnZXN0IGFib3ZlLCBvciB1c2UgYSAzMi1iaXQgZGl2aXNp b24gbW9zdCBvZgo+ID4gPiB0aGUgdGltZToKPiA+ID4KPiA+ID4gICAgICAgaWYgKGRpZmYgPD0g VUlOVF9NQVgpCj4gPiA+ICAgICAgICAgICAgICAgZGlmZl8zMiA9ICh1MzIpZGlmZiAvIE5TRUNT X1BFUl9VU0VDOwo+ID4gPiAgICAgICBlbHNlCj4gPiA+ICAgICAgICAgICAgICAgZGlmZl8zMiA9 IGRpdl91NjQoZGlmZiwgTlNFQ1NfUEVSX1VTRUM7Cj4gPiA+Cj4gPiA+IHdoaWNoIGdjYyBpdHNl bGYgd2lsbCB0dXJuIGludG8gYSBtdWx0aXBsaWNhdGlvbiBvciBzZXJpZXMgb2YKPiA+ID4gc2hp ZnRzIG9uIENQVXMgb24gd2hpY2ggdGhhdCBpcyBmYXN0ZXIuCj4gPiA+Cj4gPiBJJ20gbm90IHN1 cmUgd2hpY2ggZGl2aXNpb24gbWV0aG9kIG9mIHRoZSB0aHJlZSBzdWdnZXN0ZWQgaGVyZSB0byB1 c2UuCj4gPiBEb2VzIGFueW9uZSBoYXZlIGEgc3Ryb25nIHByZWZlcmVuY2U/Cj4gPgo+IAo+IEl0 IGRlcGVuZHMgb24gaG93IGFjY3VyYXRlIHdlIHdhbnQgaXQgYW5kIGhvdyBsb25nIHdlIGV4cGVj dAo+IHRoZSB0aW1lcyB0byBiZS4gVGhlIG9wdGltaXphdGlvbiBmb3IgdGhlIDQuMiBzZWNvbmQg Y3V0b2ZmCj4gZm9yIGRvaW5nIGEgMzItYml0IGRpdmlzaW9uIG9ubHkgbWFrZXMgc2Vuc2UgaWYg dGhlIG1ham9yaXR5Cj4gb2YgdGhlIHNsZWVwIHRpbWVzIGFyZSBiZWxvdyB0aGF0LgoKSXQgYWxz byBkZXBlbmRzIGlmIHRoZSBjb2RlIGFjdHVhbGx5IGNhcmVzIGFib3V0IHRoZSBsZW5ndGggb2Yg J2xvbmcnIHNsZWVwcy4KSSdkIGd1ZXNzIHRoYXQgZm9yIGNwdSBpZGxlIDQuMiBzZWNvbmRzIGlz ICdhIGxvbmcgdGltZScsIHNvIHRoZSBkaXZfdTY0KCkKcmVzdWx0IGNvdWxkIGJlIHRyZWF0ZWQg YXMgNC4yIHNlY29uZHMgd2l0aG91dCBjYXVzaW5nIGdyaWVmLgoKQWN0dWFsbHkgdGhlIGNvc3Qg b2YgYSA2NGJpdCBkaXZpZGUgYWZ0ZXIgYSA0IHNlY29uZCBzbGVlcCB3aWxsIGJlIG5vaXNlLgpP VE9IIGEgNjRiaXQgZGl2aWRlIGFmdGVyIGEgc2xlZXAgdGhhdCBsYXN0ZWQgYSBmZXcgbnMgd2ls bCBiZSBzaWduaWZpY2FudC4KCglEYXZpZAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KTGludXhwcGMtZGV2IG1haWxpbmcgbGlzdApMaW51eHBwYy1kZXZA bGlzdHMub3psYWJzLm9yZwpodHRwczovL2xpc3RzLm96bGFicy5vcmcvbGlzdGluZm8vbGludXhw cGMtZGV2 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out6.electric.net (smtp-out6.electric.net [192.162.217.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3rdNGW38ZRzDq5f for ; Mon, 27 Jun 2016 19:01:38 +1000 (AEST) From: David Laight To: 'Arnd Bergmann' , Shreyas B Prabhu CC: "linuxppc-dev@lists.ozlabs.org" , "rjw@rjwysocki.net" , "daniel.lezcano@linaro.org" , "anton@samba.org" , "linux-pm@vger.kernel.org" Subject: RE: [PATCH v2] cpuidle: Fix last_residency division Date: Mon, 27 Jun 2016 08:59:10 +0000 Message-ID: <063D6719AE5E284EB5DD2968C1650D6D5F4E4E87@AcuExch.aculab.com> References: <1466756638-2362-1-git-send-email-shreyas@linux.vnet.ibm.com> <14940457.SEYBmqcunj@wuerfel> <576D595F.9090001@linux.vnet.ibm.com> <3748080.8f21OXxXix@wuerfel> In-Reply-To: <3748080.8f21OXxXix@wuerfel> Content-Type: text/plain; charset="Windows-1252" MIME-Version: 1.0 List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Arnd Bergmann > Sent: 24 June 2016 20:43 > On Friday, June 24, 2016 9:31:35 PM CEST Shreyas B Prabhu wrote: > > > If those functions are called less often than cpuidle_enter_state(), > > > we could just move the division there. Since the divisor is constant, > > > do_div() can convert it into a multiply and shift, or we could use > > > your the code you suggest above, or use a 32-bit division most of > > > the time: > > > > > > if (diff <=3D UINT_MAX) > > > diff_32 =3D (u32)diff / NSECS_PER_USEC; > > > else > > > diff_32 =3D div_u64(diff, NSECS_PER_USEC; > > > > > > which gcc itself will turn into a multiplication or series of > > > shifts on CPUs on which that is faster. > > > > > I'm not sure which division method of the three suggested here to use. > > Does anyone have a strong preference? > > >=20 > It depends on how accurate we want it and how long we expect > the times to be. The optimization for the 4.2 second cutoff > for doing a 32-bit division only makes sense if the majority > of the sleep times are below that. It also depends if the code actually cares about the length of 'long' sleep= s. I'd guess that for cpu idle 4.2 seconds is 'a long time', so the div_u64() result could be treated as 4.2 seconds without causing grief. Actually the cost of a 64bit divide after a 4 second sleep will be noise. OTOH a 64bit divide after a sleep that lasted a few ns will be significant. David