From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Date: Mon, 31 Aug 2015 04:16:07 +0000 Subject: Re: [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Message-Id: <20150831041607.GA15543@hr-slim.amd.com> List-Id: References: <1440662866-28716-1-git-send-email-ray.huang@amd.com> <1440662866-28716-13-git-send-email-ray.huang@amd.com> <20150827173043.GB27452@roeck-us.net> <20150828104525.GD4191@hr-slim.amd.com> <55E06A99.7070800@roeck-us.net> In-Reply-To: <55E06A99.7070800@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Guenter Roeck Cc: Borislav Petkov , Jean Delvare , Andy Lutomirski , Andreas Herrmann , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , "Rafael J. Wysocki" , Len Brown , John Stultz , =?iso-8859-1?Q?Fr=E9d=E9ric?= Weisbecker , lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org, x86@kernel.org, Andreas Herrmann , Aravind Gopalakrishnan , Borislav Petkov , Fengguang Wu , Aaron Lu , Tony Li T24gRnJpLCBBdWcgMjgsIDIwMTUgYXQgMDc6MDU6MTNBTSAtMDcwMCwgR3VlbnRlciBSb2VjayB3 cm90ZToKPiBPbiAwOC8yOC8yMDE1IDAzOjQ1IEFNLCBIdWFuZyBSdWkgd3JvdGU6Cj4gPk9uIFRo dSwgQXVnIDI3LCAyMDE1IGF0IDEwOjMwOjQzQU0gLTA3MDAsIEd1ZW50ZXIgUm9lY2sgd3JvdGU6 Cj4gPj5PbiBUaHUsIEF1ZyAyNywgMjAxNSBhdCAwNDowNzo0M1BNICswODAwLCBIdWFuZyBSdWkg d3JvdGU6Cj4gPj4+VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIGFsZ29yaXRobSB0aGF0IGNvbXB1 dGVzIHRoZSBhdmVyYWdlIHBvd2VyIGJ5Cj4gPj4+cmVhZGluZyBhIGRlbHRhIHZhbHVlIG9mIOKA nGNvcmUgcG93ZXIgYWNjdW11bGF0b3LigJ0gcmVnaXN0ZXIgZHVyaW5nCj4gPj4+bWVhc3VyZW1l bnQgaW50ZXJ2YWwsIGFuZCB0aGVuIGRpdmlkaW5nIGRlbHRhIHZhbHVlIGJ5IHRoZSBsZW5ndGgg b2YKPiA+Pj50aGUgdGltZSBpbnRlcnZhbC4KPiA+Pj4KPiA+Pj5Vc2VyIGlzIGFibGUgdG8gdXNl IHBvd2VyMV9hY2MgZW50cnkgdG8gbWVhc3VyZSB0aGUgcHJvY2Vzc29yIHBvd2VyCj4gPj4+Y29u c3VtcHRpb24gYW5kIHBvd2VyMV9hY2MganVzdCBuZWVkcyB0byBiZSByZWFkIHR3aWNlIHdpdGgg YW4gbmVlZGVkCj4gPj4+aW50ZXJ2YWwgaW4tYmV0d2Vlbi4KPiA+Pj4KPiA+Pj5BIHNpbXBsZSBl eGFtcGxlOgo+ID4+Pgo+ID4+PiQgY2F0IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDBcOjAwXDox OC40L2h3bW9uL2h3bW9uMC9wb3dlcjFfYWNjCj4gPj4+JCBzbGVlcCAxMDAwMHMKPiA+Pj4kIGNh dCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowMFw6MTguNC9od21vbi9od21vbjAvcG93ZXIx X2FjYwo+ID4+Pgo+ID4+PlRoZSByZXN1bHQgaXMgY3VycmVudCBhdmVyYWdlIHByb2Nlc3NvciBw b3dlciBjb25zdW1wdGlvbiBpbiAxMDAwMAo+ID4+PnNlY29uZHMuIFRoZSB1bml0IG9mIHRoZSBy ZXN1bHQgaXMgdVdhdHQuCj4gPj4+Cj4gPj4+U2lnbmVkLW9mZi1ieTogSHVhbmcgUnVpIDxyYXku aHVhbmdAYW1kLmNvbT4KPiA+Pj4tLS0KPiA+Pj4gIGRyaXZlcnMvaHdtb24vZmFtMTVoX3Bvd2Vy LmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+ PiAgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKykKPiA+Pj4KPiA+Pj5kaWZmIC0tZ2l0 IGEvZHJpdmVycy9od21vbi9mYW0xNWhfcG93ZXIuYyBiL2RyaXZlcnMvaHdtb24vZmFtMTVoX3Bv d2VyLmMKPiA+Pj5pbmRleCBkNTI5ZTRiLi4zYmFiNzk3IDEwMDY0NAo+ID4+Pi0tLSBhL2RyaXZl cnMvaHdtb24vZmFtMTVoX3Bvd2VyLmMKPiA+Pj4rKysgYi9kcml2ZXJzL2h3bW9uL2ZhbTE1aF9w b3dlci5jCj4gPj4+QEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IGZhbTE1aF9wb3dlcl9kYXRhIHsK PiA+Pj4gIAl1NjQgY3VfYWNjX3Bvd2VyW01BWF9DVVNdOwo+ID4+PiAgCS8qIHBlcmZvcm1hbmNl IHRpbWVzdGFtcCBjb3VudGVyICovCj4gPj4+ICAJdTY0IGNwdV9zd19wd3JfcHRzY1tNQVhfQ1VT XTsKPiA+Pj4rCXN0cnVjdCBtdXRleCBhY2NfcHdyX211dGV4Owo+ID4+PiAgfTsKPiA+Pj4KPiA+ Pj4gIHN0YXRpYyBzc2l6ZV90IHNob3dfcG93ZXIoc3RydWN0IGRldmljZSAqZGV2LAo+ID4+PkBA IC0xMjEsMTcgKzEyMiw3NCBAQCBzdGF0aWMgREVWSUNFX0FUVFIocG93ZXIxX2NyaXQsIFNfSVJV R08sIHNob3dfcG93ZXJfY3JpdCwgTlVMTCk7Cj4gPj4+ICBzdGF0aWMgc3RydWN0IGF0dHJpYnV0 ZV9ncm91cCBmYW0xNWhfcG93ZXJfZ3JvdXA7Cj4gPj4+ICBfX0FUVFJJQlVURV9HUk9VUFMoZmFt MTVoX3Bvd2VyKTsKPiA+Pj4KPiA+Pj4rc3RhdGljIHNzaXplX3Qgc2hvd19wb3dlcl9hY2Moc3Ry dWN0IGRldmljZSAqZGV2LAo+ID4+PisJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQo+ID4+Pit7Cj4gPj4+KwlpbnQgY3B1LCBjdSwgY3VfbnVtLCBjb3Jl c19wZXJfY3U7Cj4gPj4+Kwl1NjQgY3Vycl9jdV9hY2NfcG93ZXJbTUFYX0NVU10sCj4gPj4+Kwkg ICAgY3Vycl9wdHNjW01BWF9DVVNdLCBqZGVsdGFbTUFYX0NVU107Cj4gPj4+Kwl1NjQgdGRlbHRh LCBhdmdfYWNjOwo+ID4+PisJc3RydWN0IGZhbTE1aF9wb3dlcl9kYXRhICpkYXRhID0gZGV2X2dl dF9kcnZkYXRhKGRldik7Cj4gPj4+Kwo+ID4+PisJY29yZXNfcGVyX2N1ID0gYW1kX2dldF9jb3Jl c19wZXJfY3UoKTsKPiA+Pj4rCWN1X251bSA9IGJvb3RfY3B1X2RhdGEueDg2X21heF9jb3JlcyAv IGNvcmVzX3Blcl9jdTsKPiA+Pj4rCj4gPj4+Kwlmb3IgKGNwdSA9IDAsIGF2Z19hY2MgPSAwOyBj cHUgPCBjdV9udW0gKiBjb3Jlc19wZXJfY3U7IGNwdSArPSBjb3Jlc19wZXJfY3UpIHsKPiA+Pj4r CQljdSA9IGNwdSAvIGNvcmVzX3Blcl9jdTsKPiA+Pj4rCQlpZiAocmRtc3JsX3NhZmVfb25fY3B1 KGNwdSwgTVNSX0YxNUhfUFRTQywgJmN1cnJfcHRzY1tjdV0pKSB7Cj4gPj4+KwkJCXByX2Vycigi RmFpbGVkIHRvIHJlYWQgUFRTQyBjb3VudGVyIE1TUiBvbiBjb3JlJWRcbiIsCj4gPj4+KwkJCSAg ICAgICBjcHUpOwo+ID4+PisJCQlyZXR1cm4gMDsKPiA+Pj4rCQl9Cj4gPj4+Kwo+ID4+PisJCWlm IChyZG1zcmxfc2FmZV9vbl9jcHUoY3B1LCBNU1JfRjE1SF9DVV9QV1JfQUNDVU1VTEFUT1IsCj4g Pj4+KwkJCQkgICAgICAgJmN1cnJfY3VfYWNjX3Bvd2VyW2N1XSkpIHsKPiA+Pj4rCQkJcHJfZXJy KCJGYWlsZWQgdG8gcmVhZCBjb21wdXRlIHVuaXQgcG93ZXIgYWNjdW11bGF0b3IgTVNSIG9uIGNv cmUlZFxuIiwKPiA+Pj4rCQkJICAgICAgIGNwdSk7Cj4gPj4+KwkJCXJldHVybiAwOwo+ID4+PisJ CX0KPiA+Pj4rCj4gPj4+KwkJaWYgKGN1cnJfY3VfYWNjX3Bvd2VyW2N1XSA8IGRhdGEtPmN1X2Fj Y19wb3dlcltjdV0pIHsKPiA+Pj4rCQkJamRlbHRhW2N1XSA9IGRhdGEtPm1heF9jdV9hY2NfcG93 ZXIgKyBjdXJyX2N1X2FjY19wb3dlcltjdV07Cj4gPj4+KwkJCWpkZWx0YVtjdV0gLT0gZGF0YS0+ Y3VfYWNjX3Bvd2VyW2N1XTsKPiA+Pj4rCQl9IGVsc2Ugewo+ID4+PisJCQlqZGVsdGFbY3VdID0g Y3Vycl9jdV9hY2NfcG93ZXJbY3VdIC0gZGF0YS0+Y3VfYWNjX3Bvd2VyW2N1XTsKPiA+Pj4rCQl9 Cj4gPj4+KwkJdGRlbHRhID0gY3Vycl9wdHNjW2N1XSAtIGRhdGEtPmNwdV9zd19wd3JfcHRzY1tj dV07Cj4gPj4+KwkJamRlbHRhW2N1XSAqPSBkYXRhLT5jcHVfcHdyX3NhbXBsZV9yYXRpbyAqIDEw MDA7Cj4gPj4+KwkJZG9fZGl2KGpkZWx0YVtjdV0sIHRkZWx0YSk7Cj4gPj4+Kwo+ID4+PisJCW11 dGV4X2xvY2soJmRhdGEtPmFjY19wd3JfbXV0ZXgpOwo+ID4+PisJCWRhdGEtPmN1X2FjY19wb3dl cltjdV0gPSBjdXJyX2N1X2FjY19wb3dlcltjdV07Cj4gPj4+KwkJZGF0YS0+Y3B1X3N3X3B3cl9w dHNjW2N1XSA9IGN1cnJfcHRzY1tjdV07Cj4gPj4+KwkJbXV0ZXhfdW5sb2NrKCZkYXRhLT5hY2Nf cHdyX211dGV4KTsKPiA+Pj4rCj4gPj4+KwkJLyogdGhlIHVuaXQgaXMgbWljcm9XYXR0ICovCj4g Pj4+KwkJYXZnX2FjYyArPSBqZGVsdGFbY3VdOwo+ID4+PisJfQo+ID4+PisKPiA+Pj4rCXJldHVy biBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCAodW5zaWduZWQgaW50KSBhdmdfYWNjKTsKPiA+Pj4rfQo+ ID4+PitzdGF0aWMgREVWSUNFX0FUVFIocG93ZXIxX2FjYywgU19JUlVHTywgc2hvd19wb3dlcl9h Y2MsIE5VTEwpOwo+ID4+Cj4gPj5JIGFtIG5vdCByZWFsbHkgYSBmcmllbmQgb2YgaW50cm9kdWNp bmcgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlLgo+ID4+RG9lcyB0aGUgZW5lcmd5IGF0dHJpYnV0 ZSBub3Qgd29yayBoZXJlID8KPiA+Pgo+ID4KPiA+WW91J3JlIHJpZ2h0LiBOb24tc3RhbmRhcmQg YXR0cmlidXRlIG1pZ2h0IG5vdCBiZSBnb29kLiBDb3VsZCB5b3UKPiA+cGxlYXNlIGdpdmUgbWUg c29tZSBoaW50cyBpZiBJIHVzZSAiZW5lcmd5IiBpbnN0ZWFkPwo+ID4KPiAxIEpvdWxlID0gMSBX YXR0LXNlY29uZC4KPiAKPiBTb21ldGhpbmcgZWxzZSwgdGhvdWdoIC0gZGlkIHlvdSBtYWtlIHN1 cmUgdGhhdCB5b3VyIGNvZGUgZG9lc24ndCBvdmVyZmxvdyA/Cj4gRXZlbiB0aG91Z2ggeW91IGNh bGN1bGF0ZSB0aGUgYXZlcmFnZSBpbiBhbiB1NjQsIHlvdSBkaXNwbGF5IGl0IGFzIHVuc2lnbmVk Lgo+IAoKVGhhbmtzIHRvIHlvdXIgcmVtaW5kZXIuIEl0IHNob3VsZCBub3QgYmUgb3ZlcmZsb3cu IFRoZSBtYXhpbXVtIHBvd2VyCmNvbnN1bXB0aW9uIG9mIHByb2Nlc3NvciAoQU1EIENaIGFuZCBm dXR1cmUgMTVoKSBpcyBhYm91dCAxNSBXYXR0cyA9CjE1LDAwMCwwMDAgdVdhdHRzID0gMHhFNEUx QzAgdVdhdHRzLCB0aGUgc2l6ZSBpcyAyNCA8IDMyIDwgNjQgYml0cy4KCkFjdHVhbGx5LCB0aGUg dW5pdCBvZiBqZGVsdGEgaXMgbm90IEpvdWxlLiBCZWNhdXNlIHRoZSB0ZGVsdGEgaXMgdGhlCmxv b3BzIChjeWNsZXMpIHRoYXQgUFRTQyBjb3VudGVyICh0aGUgZnJlcWVuY3kgaXMgYWJvdXQgMTAw IE1IeikKY291bnRzIG5vdCBzZWNvbmRzLgoKU28gYXZnX2FjYyBpcyB0aGUgYXZlcmFnZSBwb3dl ciBjb25zdW1wdGlvbiBub3QgdGhlIGFjY3VtdWxhdGVkIGVuZXJneS4KCj4gMTAwdyAqIDEwLDAw MHMgPSAxLDAwMCwwMDB3cyA9IDEsMDAwLDAwMCwwMDAsMDAwIG1pY3JvLXdhdHQtc2Vjb25kcywg d2hpY2ggaXMKPiBhIGJpdCBsYXJnZSBmb3IgYW4gdW5zaWduZWQuCj4gCj4gQWxzbywgdGhlIHZh bHVlcyBzaG91bGQgbm90IGJlIHJlc2V0IGFmdGVyIHJlYWRpbmcsIGJ1dCBhY2N1bXVsYXRlLgo+ IAo+IEFsc28sIEkgdGhpbmsgeW91ciBjb2RlIG1heSBiZSB2dWxuZXJhYmxlIHRvIG92ZXJmbG93 cyBvbiB0aGUgQ1BVIHJlZ2lzdGVyIHNpZGUuCj4gSG93IGxvbmcgZG9lcyBpdCB0YWtlIGJlZm9y ZSB0aGUgQ1BVIGNvdW50ZXJzIG92ZXJmbG93ID8KPiAKCklmIEkgdXNlICJlbmVyZ3kiLCAxNXcg KiAxMCwwMDBzID0gMTUwLDAwMCwwMDAsMDAwIG1pY3JvV2F0dC1zZWNvbmRzLgpZZXMsIGl0J3Mg bGFyZ2UgZm9yIGFuIHVuc2lnbmVkLCBidXQgc3VpdGFibGUgZm9yIHU2NC4KClRoZSBhY2N1bXVs YXRlZCBwb3dlciBvZiBvbmUgY29tcHV0ZSB1bml0IGlzIHJlY29yZGVkIGF0IDY0Yml0IE1TUi4K CkxldCBtZSBjYWxjdWxhdGUgdGhlIGV4dHJlbWUgY2FzZSB0aGF0IGhvdyBsb25nIGRvZXMgaXQg dGFrZSBiZWZvcmUKb3ZlcmZsb3c6CgpVc2UgcG93ZXIgY29uc3VtcHRpb24gMTV3LCBtYXggcG93 ZXIgMl42NCA9IDEuOCAqIDEwXjE5Cm1XYXR0LXB0c2NfbG9vcHMsIGFuZCBQVFNDIGZyZXFlbmN5 IDEwMCBNSHo6CgogICAgICAgIDEuOCAqIDEwXjE5ID0gKDE1LDAwMCkgKiAoVG1heC9UY3ljbGUp CiAgICAgICAgMS44ICogMTBeMTkgPSAoMTUsMDAwKSAqIChUbWF4ICogUFRTQ19GcmVxKQogICAg ICAgIDEuOCAqIDEwXjE5ID0gKDE1LDAwMCkgKiAoVG1heCAqIDEwMCwwMDAsMDAwKQogICAgICAg IFRtYXggPSAxLjIgKiAxMF43IHNlY29uZHMKClRoYW5rcwpSdWkKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0Cmxt LXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxt YW4vbGlzdGluZm8vbG0tc2Vuc29ycw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751381AbbHaERc (ORCPT ); Mon, 31 Aug 2015 00:17:32 -0400 Received: from mail-by2on0077.outbound.protection.outlook.com ([207.46.100.77]:47279 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750782AbbHaERa convert rfc822-to-8bit (ORCPT ); Mon, 31 Aug 2015 00:17:30 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.222) smtp.mailfrom=amd.com; alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=permerror action=none header.from=amd.com; X-WSS-ID: 0NTXIL0-08-02K-02 X-M-MSG: Date: Mon, 31 Aug 2015 12:16:07 +0800 From: Huang Rui To: Guenter Roeck CC: Borislav Petkov , Jean Delvare , "Andy Lutomirski" , Andreas Herrmann , Thomas Gleixner , "Peter Zijlstra" , Ingo Molnar , "Rafael J. Wysocki" , Len Brown , John Stultz , =?iso-8859-1?Q?Fr=E9d=E9ric?= Weisbecker , , , , Andreas Herrmann , Aravind Gopalakrishnan , Borislav Petkov , "Fengguang Wu" , Aaron Lu , Tony Li Subject: Re: [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Message-ID: <20150831041607.GA15543@hr-slim.amd.com> References: <1440662866-28716-1-git-send-email-ray.huang@amd.com> <1440662866-28716-13-git-send-email-ray.huang@amd.com> <20150827173043.GB27452@roeck-us.net> <20150828104525.GD4191@hr-slim.amd.com> <55E06A99.7070800@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline In-Reply-To: <55E06A99.7070800@roeck-us.net> User-Agent: Mutt/1.5.21 (2010-09-15) Content-Transfer-Encoding: 8BIT X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(3050300001)(189002)(479174004)(377454003)(24454002)(199003)(77156002)(77096005)(50466002)(68736005)(19580395003)(87936001)(97736004)(5007970100001)(47776003)(110136002)(92566002)(83506001)(19580405001)(4001350100001)(4001540100001)(561924002)(33656002)(50986999)(2950100001)(46102003)(93886004)(86362001)(54356999)(105586002)(23676002)(101416001)(189998001)(5001830100001)(64706001)(62966003)(5001920100001)(5001860100001)(53416004)(5003600100002)(76176999)(106466001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0855;H:atltwp02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;2:l46zLTwIs1wUuLNi5ubvJZP5BCvp6ooUg9d9pqZtpKz0NjUDv7+J2HR6cbsKV3ht+ltY7rRMsQ4CEgrrMQ4oYc2h3ZeiRCmN0Idyskt2Mf/s9eVdM26a0v8nA5PTExNIXVfE1aA0pSDqYrFDWiAO7P0VXUlAhBsVg7IPoVN3e6o=;3:IFjYfxn+HuVNdAhRqHjHz+BXeMLbLDPEur2OJxQR7a/p0bHSs6kep8Zs3xoQTOeL6cHpVivjfWPXWXophszhyA50Y5Ut1FX5+98Gn+6uU12mxbi/JxeOMaB2LZKniE2LjAPIjrr4CUIT7ZecGgOrYmcmelCVr46YU6Lzcgj0xUkA2zLKR5TmJ2hdQakYEzK1fvPya7MrsijKaoYYIsUdEmud0sie25m/epk1LtUPaxp78n48aNXUZBvLpkkGj/IO;25:bfyeJA4c8oqJGjc/5olBLD9CdKzaxQt+HqA24g2OV/vO6E2kMhgCKKYwOJMoGVEDN+OgwuZ6Dq3+MSlTh9QqHHNtyc6M4CoS817g0TyUAxAOBYJpqeGJpfm/oCbL2hkkhnmFfzInthB8FhfHA7+0Y2mkCdUZ1oQ1SPbZuBo2VkZBOvEOvPlAbMwNFC3572txF73IzLguqtLDCqpp/xpy6fUIhAWsCtu8+qyMmoKKYC9uzmzproLjWM8SzKDvNwbRwgSs92alrPvINoumxf+fMg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0855; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;20:GKHTjMtON1pOUzMli+W+ye30UGC0km5o3UtxdAzEzSr4s/VWEwKO6Decrsz1drtmgooVmvNM9XBddfZCThtB/d+chQx1pCQS1YpHkKPNGc53fU8rqIstAzT+4uvfz185GtC0yLrc9XbbdLWAV34JiNz1g9ECLiW/v1qthSfgSbpwgh5/ojkC08iuApFJfk+iJWScGOecEBPMb2Z4Ww7WgbgB9YDj0jiWAhhLBvwrJS8itcvZWpvqHDqOl4SK9WPC/BEWfxPVhvzxpuZ3nekdPDK/MD2Nf7x7PZiWlZHyoOT6zuOpyXU7G8IkI8o9cVFHkUcab36+DgKuj7G8D9U2JFIygh0jlV1DJVLRW5TxuT1gJy7BY7X9i1qqxteU8ngcbeWFMGlgas9yQWH0cal7GcbI3MRLepOSmoSb5zJAHqmT5YgeGncDMBQ88YfGkVucJ9PW5fLSCjRaaSvregFUQ0k51GfotPLh4vPP+z79WZHyOiHYyU5rsjP7/wTzquqS;4:Vz7yNeyrQC/IMUGM4ujyc1sd5RKI3FZw7QJp5mWMoN3PrnVB3E/z9vymLoLqYh9Tdt3CJw8UFXPhPHCq8lm+8SaqGTHqzcQVAiveI/YRYXQr7ofUk9ndujmvIUm4XseOG7VpMGKIJgLmj39sfj8BANTIezjh6CHyAhdgRbNMCRbckusawMCUevQytwkJwiSIMnPjT5jeH5aV6hV+KtXXIAituUQTOls88Zk2Cw0AiCGGlQ5mGd7hivYFngQKko94tYf8ZZui6Gk8a+U/jlQ79PdxbCLCgfn8mkhmELZK6DVDaR1SsChkl0ejXGi26yw0XRGZpQVixWBIwJIc3Ke89Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(8121501046)(5005006)(3002001);SRVR:CY1PR12MB0855;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0855; X-Forefront-PRVS: 0685122203 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjEyTUIwODU1OzIzOlNibFdkYUN0YVBSZTNYUnJqWnZTdFVjSjh5?= =?utf-8?B?ZEJpZy9mYVN3ajFMTzY2amFKdXZSdXN4Ukl0aTBpN2p3bTA2MUJGNWd4Nkw0?= =?utf-8?B?WWJhRHU4Q0RvbkNveGxFbWptK0pPdDB4eUQ4Y1NCdlI3Q0FLMTA0MmZRRU1j?= =?utf-8?B?QnBUcXJhS21nY2V6SFR0S1c2T2hiRC93LzlOOVhOWStKNUttdzBZSFBCU3lk?= =?utf-8?B?SUdUOWRNaWVjanZIS3k5eHFqSVlxK2NvOTdoSDZNVmxONnl4SGFuY2FadXNw?= =?utf-8?B?UGpXOEZWN2c0TUZQa2cyc0tOM0dRdW45ZlJocUc1QlFYalFJRG1vN1ZDczNB?= =?utf-8?B?dHZXV0xzckkzQVJOaHdGdStDb3U1OXd4TWczODdldnVVNE1VUnJkT2RUOHpp?= =?utf-8?B?eEw0VzdPTENkREVuUzNzdkszS2pkMkxBbnNTbGVrUUZvcXBpRlo0OStTb29k?= =?utf-8?B?UE1JSHE5TkRSYlBwTExCTXgrT3JoRm9sLy9VSnd3MEl0d3laNTgwR085MHRl?= =?utf-8?B?TTMrZzZzVXlORFNYY2p3SVoxTjVmQis2VFdMUnU0NVp1ajhabnlaVktiMmUw?= =?utf-8?B?Zkg3T3BHTEtYZlNSVmVjOVNiUm0vb1BJVVdyUXZyN1BOUXA0azh1c2I5eHpP?= =?utf-8?B?MlNkdW43em9LZFJUZkVZRVpvdk1SVmRKeU9GZzd6aGg3Mk9CcWFFNldQdWlm?= =?utf-8?B?dUpNV3I2YThYUmZWWndXakJtK3RQM0d4bDFZWGl3U0x3MWpHSDdlMmZXREw4?= =?utf-8?B?NzZZYkswWHdWaWFEYzNhWVVOL3pjVlBySnUyMzVEOVBwK1kwbndlTktvUmhO?= =?utf-8?B?VzZDQXBjRFJiK2RTSzV3bEdnWUZEVXFHK2dEZFlqcUFUUjVxTGFhL013bzdQ?= =?utf-8?B?SW9Mb0drYXlvTVE5WkRJY05NbTVWczVnVFFvNndaaHhycU56S2J1cHpoWDJ3?= =?utf-8?B?cis0WXJRSi94M2FaR1R3R2hDVWdpT1RqUFZrbFE5OC9GRG5qell0TStGS2lS?= =?utf-8?B?dHd6ZzNOdXEzK0YySkdTa0V4OHg3RzVIZ3hTSDdkOVFKWnpKaHJwdk80WXA3?= =?utf-8?B?Qmc0M2diY2VnNjFuNjE4SlVHNGZLZ0ZPNEFNSzZUOCtoTHNBQlRqVXFGQ2F2?= =?utf-8?B?Rk9kd0lkOXE0aTQ3OWNUZHg2OGEwQlc5Y0orL0ZWbnZxUmI3dWpEUU5rRVV1?= =?utf-8?B?Z2NndTU1YXdHOEhLWk9yV1g0MVVieDg1YS9VaG5RNVRUTFltd3grbWtGTlZy?= =?utf-8?B?QlpSTXNOb2ZOdWtTczY2VzJGQ1o1Z04xNndKN2dmTnhZTDZZWmo0TFZsME5W?= =?utf-8?B?c2lWeFBMekR2aWRiTmYzbGxaNUlTcE0xbWRuSlRpdzhsNCsrOEhaSU9OaFhG?= =?utf-8?B?cXVYTW9acGFsdWYwNVJOSEh4d3Z3L2pBdE1ta1NxdXMxREpQMkhtcW5ndFJV?= =?utf-8?B?dUFIQ2RSWnlDTmZBam0wdmhydWhLMzFvRlAxOVZjWmZuZUgrTERiQ3FhUTdh?= =?utf-8?B?WS9FSlN1eXN1STVuOHhOellGb0xPMUtyN3k4b1h3Q29FZjM2NnVFUW04eE55?= =?utf-8?B?UHZBSHRXaUx3a1JCTEpEeTNrOTd3YkJyM2Z3YWFwYjl6TlRYVmR0WVkxdktq?= =?utf-8?B?eUVmNlZTSkdTc1JON2JXeU1CZE1GbFdyYzZ0aitBdVpLdXdaNFhyZ0ZnPT0=?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;5:OaCSp8LLpV4/LnEZrlGfJ+fHgYF9vIiBI4pG4qDl+LDmi6UH0Fy0O1IWAmPEMGpG6DAR4f3C8vH1WtKsp+pu/3g7RrqiheEHR0LfNltnBmdbjdfwWcDzJ9C6CojbXbP8NMYsf5cBVs9qPHFs9VOPAQ==;24:N0JzIcoUXVCMA2PpPPTS6Vus5SoXN5cFriF/6I4oar3e3HXBttSjhH+CWBHDR0Aap17cCoN4e7wY3cjwxzKqdPCGU+KwnbcbElIacPW8fwU=;20:lQE1Q2DiYgDB1svuEGiDFdLGinI8jTCTp05XWcvXCODNFI/Ntf2zvk+n2JWsucFkv63QU2X3eSWTP3PujP4MOg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2015 04:17:26.1518 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.222];Helo=[atltwp02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0855 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 28, 2015 at 07:05:13AM -0700, Guenter Roeck wrote: > On 08/28/2015 03:45 AM, Huang Rui wrote: > >On Thu, Aug 27, 2015 at 10:30:43AM -0700, Guenter Roeck wrote: > >>On Thu, Aug 27, 2015 at 04:07:43PM +0800, Huang Rui wrote: > >>>This patch introduces an algorithm that computes the average power by > >>>reading a delta value of “core power accumulator” register during > >>>measurement interval, and then dividing delta value by the length of > >>>the time interval. > >>> > >>>User is able to use power1_acc entry to measure the processor power > >>>consumption and power1_acc just needs to be read twice with an needed > >>>interval in-between. > >>> > >>>A simple example: > >>> > >>>$ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc > >>>$ sleep 10000s > >>>$ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc > >>> > >>>The result is current average processor power consumption in 10000 > >>>seconds. The unit of the result is uWatt. > >>> > >>>Signed-off-by: Huang Rui > >>>--- > >>> drivers/hwmon/fam15h_power.c | 62 ++++++++++++++++++++++++++++++++++++++++++++ > >>> 1 file changed, 62 insertions(+) > >>> > >>>diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c > >>>index d529e4b..3bab797 100644 > >>>--- a/drivers/hwmon/fam15h_power.c > >>>+++ b/drivers/hwmon/fam15h_power.c > >>>@@ -60,6 +60,7 @@ struct fam15h_power_data { > >>> u64 cu_acc_power[MAX_CUS]; > >>> /* performance timestamp counter */ > >>> u64 cpu_sw_pwr_ptsc[MAX_CUS]; > >>>+ struct mutex acc_pwr_mutex; > >>> }; > >>> > >>> static ssize_t show_power(struct device *dev, > >>>@@ -121,17 +122,74 @@ static DEVICE_ATTR(power1_crit, S_IRUGO, show_power_crit, NULL); > >>> static struct attribute_group fam15h_power_group; > >>> __ATTRIBUTE_GROUPS(fam15h_power); > >>> > >>>+static ssize_t show_power_acc(struct device *dev, > >>>+ struct device_attribute *attr, char *buf) > >>>+{ > >>>+ int cpu, cu, cu_num, cores_per_cu; > >>>+ u64 curr_cu_acc_power[MAX_CUS], > >>>+ curr_ptsc[MAX_CUS], jdelta[MAX_CUS]; > >>>+ u64 tdelta, avg_acc; > >>>+ struct fam15h_power_data *data = dev_get_drvdata(dev); > >>>+ > >>>+ cores_per_cu = amd_get_cores_per_cu(); > >>>+ cu_num = boot_cpu_data.x86_max_cores / cores_per_cu; > >>>+ > >>>+ for (cpu = 0, avg_acc = 0; cpu < cu_num * cores_per_cu; cpu += cores_per_cu) { > >>>+ cu = cpu / cores_per_cu; > >>>+ if (rdmsrl_safe_on_cpu(cpu, MSR_F15H_PTSC, &curr_ptsc[cu])) { > >>>+ pr_err("Failed to read PTSC counter MSR on core%d\n", > >>>+ cpu); > >>>+ return 0; > >>>+ } > >>>+ > >>>+ if (rdmsrl_safe_on_cpu(cpu, MSR_F15H_CU_PWR_ACCUMULATOR, > >>>+ &curr_cu_acc_power[cu])) { > >>>+ pr_err("Failed to read compute unit power accumulator MSR on core%d\n", > >>>+ cpu); > >>>+ return 0; > >>>+ } > >>>+ > >>>+ if (curr_cu_acc_power[cu] < data->cu_acc_power[cu]) { > >>>+ jdelta[cu] = data->max_cu_acc_power + curr_cu_acc_power[cu]; > >>>+ jdelta[cu] -= data->cu_acc_power[cu]; > >>>+ } else { > >>>+ jdelta[cu] = curr_cu_acc_power[cu] - data->cu_acc_power[cu]; > >>>+ } > >>>+ tdelta = curr_ptsc[cu] - data->cpu_sw_pwr_ptsc[cu]; > >>>+ jdelta[cu] *= data->cpu_pwr_sample_ratio * 1000; > >>>+ do_div(jdelta[cu], tdelta); > >>>+ > >>>+ mutex_lock(&data->acc_pwr_mutex); > >>>+ data->cu_acc_power[cu] = curr_cu_acc_power[cu]; > >>>+ data->cpu_sw_pwr_ptsc[cu] = curr_ptsc[cu]; > >>>+ mutex_unlock(&data->acc_pwr_mutex); > >>>+ > >>>+ /* the unit is microWatt */ > >>>+ avg_acc += jdelta[cu]; > >>>+ } > >>>+ > >>>+ return sprintf(buf, "%u\n", (unsigned int) avg_acc); > >>>+} > >>>+static DEVICE_ATTR(power1_acc, S_IRUGO, show_power_acc, NULL); > >> > >>I am not really a friend of introducing a non-standard attribute. > >>Does the energy attribute not work here ? > >> > > > >You're right. Non-standard attribute might not be good. Could you > >please give me some hints if I use "energy" instead? > > > 1 Joule = 1 Watt-second. > > Something else, though - did you make sure that your code doesn't overflow ? > Even though you calculate the average in an u64, you display it as unsigned. > Thanks to your reminder. It should not be overflow. The maximum power consumption of processor (AMD CZ and future 15h) is about 15 Watts = 15,000,000 uWatts = 0xE4E1C0 uWatts, the size is 24 < 32 < 64 bits. Actually, the unit of jdelta is not Joule. Because the tdelta is the loops (cycles) that PTSC counter (the freqency is about 100 MHz) counts not seconds. So avg_acc is the average power consumption not the accumulated energy. > 100w * 10,000s = 1,000,000ws = 1,000,000,000,000 micro-watt-seconds, which is > a bit large for an unsigned. > > Also, the values should not be reset after reading, but accumulate. > > Also, I think your code may be vulnerable to overflows on the CPU register side. > How long does it take before the CPU counters overflow ? > If I use "energy", 15w * 10,000s = 150,000,000,000 microWatt-seconds. Yes, it's large for an unsigned, but suitable for u64. The accumulated power of one compute unit is recorded at 64bit MSR. Let me calculate the extreme case that how long does it take before overflow: Use power consumption 15w, max power 2^64 = 1.8 * 10^19 mWatt-ptsc_loops, and PTSC freqency 100 MHz: 1.8 * 10^19 = (15,000) * (Tmax/Tcycle) 1.8 * 10^19 = (15,000) * (Tmax * PTSC_Freq) 1.8 * 10^19 = (15,000) * (Tmax * 100,000,000) Tmax = 1.2 * 10^7 seconds Thanks Rui