From owner-freebsd-current@FreeBSD.ORG Sun Sep 7 01:04:51 2008 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 749641065688 for ; Sun, 7 Sep 2008 01:04:51 +0000 (UTC) (envelope-from annona2@gmail.com) Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.186]) by mx1.freebsd.org (Postfix) with ESMTP id 85CFA8FC14 for ; Sun, 7 Sep 2008 01:04:50 +0000 (UTC) (envelope-from annona2@gmail.com) Received: by ti-out-0910.google.com with SMTP id d27so563186tid.3 for ; Sat, 06 Sep 2008 18:04:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:message-id:date:from :to:subject:user-agent:mime-version:content-type; bh=V1BTsHMw0mw7azeG/TUEW2u0fe6pGwZsZVUOOVYuiz8=; b=DD/uDG4OaA+qkLa40U+iD+f5QDUa2qzy50us7qIgFDjkCCN3zqoxCDPe8vO+I3lcXb eiDoinKlHzKmpoo+OBQ32e3OB9c5JpuqBH5hmvGAKiuXrBiiai07IrMgJrO8YJRXWFWg chd4/T0YVEFnc29Fs4uA7uw0koN9hOk7sAgw4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:user-agent:mime-version :content-type; b=E3cxiNgyBzbYqbeC2eRJC2BebRsD5HAo5eABK8IkOoSTjko8V6yJHET5+7srmNuDjk z1Uxywi+hG8X6zRGvjH7zssMrFllwvEqIiqLhCDCVUAtl6wjYSexexFuVRceT7hhsi0T rd1nNRlB1Js1q8htvHVNgfe8pdRHf9mTylUHI= Received: by 10.110.3.15 with SMTP id 15mr17492555tic.24.1220747770662; Sat, 06 Sep 2008 17:36:10 -0700 (PDT) Received: from softbank219001162114.bbtec.net ( [219.1.162.114]) by mx.google.com with ESMTPS id w12sm5523313tib.1.2008.09.06.17.36.05 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 06 Sep 2008 17:36:08 -0700 (PDT) Received: from softbank219001162114.bbtec.net (localhost [127.0.0.1]) by softbank219001162114.bbtec.net (8.14.3/8.14.3) with ESMTP id m870a3NC001532; Sun, 7 Sep 2008 09:36:03 +0900 (JST) (envelope-from annona2@gmail.com) Message-Id: <200809070036.m870a3NC001532@softbank219001162114.bbtec.net> Date: Sun, 07 Sep 2008 09:36:03 +0900 From: "G. Otsuji" To: FreeBSD Current User-Agent: Wanderlust/2.15.5 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.7 Emacs/22.2 (i386-pc-freebsd) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="Multipart_Sun_Sep__7_09:36:03_2008-1" Subject: AMD Family 10h cpufreq driver X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Sep 2008 01:04:51 -0000 --Multipart_Sun_Sep__7_09:36:03_2008-1 Content-Type: text/plain; charset=US-ASCII Hello , I have AMD Phenom x4 9850 BE cpu ,but there was no sysctl oid dev.cpu.0.freq_levels. so I read the BKDG (bios and kernel developer guide for AMD Family 10h) and finally I reached some result. I wrote pstate.c cpufreq driver module. attached in this mail. I have tested this module on i386 current/stable, amd64 current/stable. and make -j20 buildworld can be done with running powerd. This module has capability to down clock to 400MHz. but It's slow, so echo "debug.cpufreq.lowest=1200" >>/boot/loader.conf. and the reuslt is as follows. $ sysctl dev.cpu.0.freq_levels dev.cpu.0.freq_levels: 2500/-1 2400/-1 2300/-1 2200/-1 2100/-1 2000/-1 1900/-1 1800/-1 1700/-1 1600/-1 1500/-1 1400/-1 1300/-1 1200/-1 I have enjoying this module in a few days but It's OK. AMD Family 10h cpu_id's are 100f23,100f2a,100f22. I don't have Opteron 13XX 23XX 83XX,Phenom X3, and other Phenom X4,And MP system. if you have these cpu's , i would like you to try this module. feel free to contact me. Sincerely, G. Otsuji --Multipart_Sun_Sep__7_09:36:03_2008-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="pstate.c" Content-Transfer-Encoding: base64 LyotCiAqIENvcHlyaWdodCAoYykgMjAwOCBHZW4gT3RzdWppCiAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk aW5nIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JgYEFTIElT JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkKICog RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs CiAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkgQVJJU0lORwogKiBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCiAqLwoKLyoKICogUmVmZXJlbmNlOiBSZXYgMy4wNiAtIE1hcmNoIDI2LCAyMDA4IEFNRCBG YW1pbHkgMTBoIFByb2Nlc3NvciBCS0RHCiAqLwoKI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgpfX0ZC U0RJRCgiJEZyZWVCU0QkIik7CgojaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiNpbmNsdWRlIDxzeXMv YnVzLmg+CiNpbmNsdWRlIDxzeXMvY3B1Lmg+CiNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiNpbmNs dWRlIDxzeXMvbW9kdWxlLmg+CiNpbmNsdWRlIDxzeXMvcHJvYy5oPgojaW5jbHVkZSA8c3lzL3N5 c2N0bC5oPgojaW5jbHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KCiNp bmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgojaW5jbHVkZSA8bWFjaGluZS9tZF92YXIuaD4KCiNp bmNsdWRlIDxjb250cmliL2Rldi9hY3BpY2EvYWNwaS5oPgojaW5jbHVkZSA8ZGV2L2FjcGljYS9h Y3BpdmFyLmg+CgojaW5jbHVkZSAiYWNwaV9pZi5oIgojaW5jbHVkZSAiY3B1ZnJlcV9pZi5oIgoK I2RlZmluZSBNU1JfUFNUQVRFX0xJTUlUICAgIDB4YzAwMTAwNjEKI2RlZmluZSBNU1JfUFNUQVRF X0NPTlRST0wgIDB4YzAwMTAwNjIKI2RlZmluZSBNU1JfUFNUQVRFX1NUQVRVUyAgIDB4YzAwMTAw NjMKI2RlZmluZSBNU1JfUFNUQVRFX0NPTkZJRyAgIDB4YzAwMTAwNjQKI2RlZmluZSBNU1JfUFNU QVRFX0NPRlZJRCAgIDB4YzAwMTAwNzEKCiNkZWZpbmUgTVNSX1BTVEFURV9NT0YobXNyKSAgICAg ICAgICAgICAgICAgKCgodWludDY0X3QpKG1zcik+PjQ5KSYweDNGKQojZGVmaW5lIE1TUl9QU1RB VEVfQ1VSX1ZJRChtc3IpICAgICAgICAgICAgICgoKG1zcikgPj4gOSkgJiAweDNGKQojZGVmaW5l IE1TUl9QU1RBVEVfQ1VSX0RJRChtc3IpICAgICAgICAgICAgICgoKG1zcikgPj4gNikgJiAweDA3 KQojZGVmaW5lIE1TUl9QU1RBVEVfQ1VSX0ZJRChtc3IpICAgICAgICAgICAgICgobXNyKSAmIDB4 M0YpCiNkZWZpbmUgUFNUQVRFX0xJU1RWSURfVE9fVklEKGxpc3R2aWQsbXVsdCkgKChsaXN0dmlk KSAqIChtdWx0KSkKI2RlZmluZSBQU1RBVEVfVklEX1RPX0xJU1RWSUQodmlkLG11bHQpICAgICAo KHZpZCkgLyAobXVsdCkpCiNkZWZpbmUgUFNUQVRFX0xJU1RWSURfVE9fVk9MVFMobGlzdHZpZCkg ICAgKDE1NTAgLSAyNSAqIChsaXN0dmlkKSkKI2RlZmluZSBQU1RBVEVfVklEX1RPX1ZPTFRTKHZp ZCxtdWx0KSAgICAgICAoMTU1MCAtIDI1MCAqICh2aWQpIC8gKG11bHQpIC8xMCkKI2RlZmluZSBQ U1RBVEVfTUtfUFNUQVRFKG1zcixsaXN0dmlkLG11bHQpICAgICAgICAgICAgICAgICAgICAgICBc CgkoKChtc3IpICYgMHhGRkZGRkZGRkZGRkYwMDAwKSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICBcCgkgKCgoUFNUQVRFX0xJU1RWSURfVE9fVklEKGxpc3R2aWQsbXVsdCkpICYgMHg3RikgPDwg OSkgfCBcCgkgKChwc3RhdGVfZGlkX2xpc3RbaWRdICYgMHgwNykgPDwgNikgfCAgICAgICAgICAg ICAgICAgICBcCgkgKChwc3RhdGVfZmlkX2xpc3RbaWRdICYgMHgzRikpKQoKc3RhdGljIGNvbnN0 IGludCBwc3RhdGVfdmlkX2xpc3RbMzNdID0gewoJMjYsIDI2LCAyNiwgMjYsIDI2LCAyNSwgMjQs IDIzLCAyMiwgMjIsIDIxLCAyMCwgMTksIDE4LCAxOCwgMTcsIDE2LAoJMTUsIDE0LCAxNCwgMTMs IDEyLCAxMSwgMTAsIDEwLCA5LCA4LCA3LCA2LCA2LCA1LCA0LCAzCn07CnN0YXRpYyBjb25zdCBp bnQgcHN0YXRlX2ZpZF9saXN0WzMzXSA9IHsKCTAsIDAsIDAsIDAsIDQsIDgsIDEyLCAwLCAyLCA0 LCA2LCA4LCAxMCwgMTIsIDE0LCAwLCAxLAoJMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEx LCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3Cn07CnN0YXRpYyBjb25zdCBpbnQgcHN0YXRlX2RpZF9s aXN0WzMzXSA9IHsKCTIsIDIsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEs IDAsIDAsCgkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCn07 CnN0YXRpYyBjb25zdCBpbnQgcHN0YXRlX2RpZF90b19kaXZbXSA9IHsKCTEsIDIsIDQsIDgsIDE2 LCAxNiwgMTYsIDE2Cn07CiNkZWZpbmUgUFNUQVRFX01BWF9TVEFURVMJNjQKCnN0cnVjdCBwc3Rh dGVfc2V0dGluZyB7CglpbnQJCWZyZXE7CS8qIENQVSBjbG9jayBpbiBNaHogb3IgMTAwdGhzIG9m IGEgcGVyY2VudC4gKi8KCWludAkJdm9sdHM7CS8qIFZvbHRhZ2UgaW4gbVYuICovCglpbnQJCXBv d2VyOwkvKiBQb3dlciBjb25zdW1lZCBpbiBtVy4gKi8KCWludAkJbGF0OwkvKiBUcmFuc2l0aW9u IGxhdGVuY3kgaW4gdXMuICovCglkZXZpY2VfdAlkZXY7CS8qIERyaXZlciBwcm92aWRpbmcgdGhp cyBzZXR0aW5nLiAqLwp9OwoKc3RydWN0IHBzdGF0ZV9zb2Z0YyB7CglkZXZpY2VfdAlkZXY7Cglz dHJ1Y3QgcHN0YXRlX3NldHRpbmcgcHN0YXRlX3NldHRpbmdzW1BTVEFURV9NQVhfU1RBVEVTXTsK CWludAkJY2ZudW07CglpbnQJCW1vZl9pZDsJLyogTWF4aW11bSBPcGVyYXRpbmcgRnJlcXVlbmN5 IC8gMTAwICovCglpbnQJCW11bHQ7CS8qIDIoaW4gc3ZpIG1vZGUpIDEoaW4gcHZpIG1vZGUpICov Cgl1aW50NjRfdAliYWNrdXAgWzVdOwoJZGV2aWNlX3QJRjM7Cn07CgpzdGF0aWMgdm9pZAlwc3Rh dGVfaWRlbnRpZnkoZHJpdmVyX3QgKiBkcml2ZXIsIGRldmljZV90IHBhcmVudCk7CnN0YXRpYyBp bnQJcHN0YXRlX3Byb2JlKGRldmljZV90IGRldik7CnN0YXRpYyBpbnQJcHN0YXRlX2F0dGFjaChk ZXZpY2VfdCBkZXYpOwpzdGF0aWMgaW50CXBzdGF0ZV9kZXRhY2goZGV2aWNlX3QgZGV2KTsKc3Rh dGljIGludAlwc3RhdGVfc2V0KGRldmljZV90IGRldiwgY29uc3Qgc3RydWN0IGNmX3NldHRpbmcg KmNmKTsKc3RhdGljIGludAlwc3RhdGVfZ2V0KGRldmljZV90IGRldiwgc3RydWN0IGNmX3NldHRp bmcgKmNmKTsKc3RhdGljIGludAlwc3RhdGVfc2V0dGluZ3MoZGV2aWNlX3QgZGV2LCBzdHJ1Y3Qg Y2Zfc2V0dGluZyAqc2V0cywgaW50ICpjb3VudCk7CnN0YXRpYyBpbnQJcHN0YXRlX3R5cGUoZGV2 aWNlX3QgZGV2LCBpbnQgKnR5cGUpOwpzdGF0aWMgaW50CXBzdGF0ZV9zaHV0ZG93bihkZXZpY2Vf dCBkZXYpOwpzdGF0aWMgaW50CXBzdGF0ZV9mZWF0dXJlcyhkcml2ZXJfdCAqIGRyaXZlciwgdV9p bnQgKiBmZWF0dXJlcyk7CgpzdGF0aWMgZGV2aWNlX21ldGhvZF90IHBzdGF0ZV9tZXRob2RzW10g PSB7CgkvKiBEZXZpY2UgaW50ZXJmYWNlICovCglERVZNRVRIT0QoZGV2aWNlX2lkZW50aWZ5LCBw c3RhdGVfaWRlbnRpZnkpLAoJREVWTUVUSE9EKGRldmljZV9wcm9iZSwgcHN0YXRlX3Byb2JlKSwK CURFVk1FVEhPRChkZXZpY2VfYXR0YWNoLCBwc3RhdGVfYXR0YWNoKSwKCURFVk1FVEhPRChkZXZp Y2VfZGV0YWNoLCBwc3RhdGVfZGV0YWNoKSwKCURFVk1FVEhPRChkZXZpY2Vfc2h1dGRvd24sIHBz dGF0ZV9zaHV0ZG93biksCgoJLyogY3B1ZnJlcSBpbnRlcmZhY2UgKi8KCURFVk1FVEhPRChjcHVm cmVxX2Rydl9zZXQsIHBzdGF0ZV9zZXQpLAoJREVWTUVUSE9EKGNwdWZyZXFfZHJ2X2dldCwgcHN0 YXRlX2dldCksCglERVZNRVRIT0QoY3B1ZnJlcV9kcnZfc2V0dGluZ3MsIHBzdGF0ZV9zZXR0aW5n cyksCglERVZNRVRIT0QoY3B1ZnJlcV9kcnZfdHlwZSwgcHN0YXRlX3R5cGUpLAoKCS8qIEFDUEkg aW50ZXJmYWNlICovCglERVZNRVRIT0QoYWNwaV9nZXRfZmVhdHVyZXMsIHBzdGF0ZV9mZWF0dXJl cyksCgoJezAsIDB9Cn07CgpzdGF0aWMgZGV2Y2xhc3NfdCBwc3RhdGVfZGV2Y2xhc3M7CnN0YXRp YyBkcml2ZXJfdAlwc3RhdGVfZHJpdmVyID0gewoJInBzdGF0ZSIsCglwc3RhdGVfbWV0aG9kcywK CXNpemVvZihzdHJ1Y3QgcHN0YXRlX3NvZnRjKSwKfTsKRFJJVkVSX01PRFVMRShwc3RhdGUsIGNw dSwgcHN0YXRlX2RyaXZlciwgcHN0YXRlX2RldmNsYXNzLCAwLCAwKTsKCnN0YXRpYyBpbnQKcHN0 YXRlX2N1cl9jcHVfZnJlcSh2b2lkKQp7Cgl1aW50NjRfdAltc3I7CglpbnQJCWRpZCAgICAgICAs IGZpZDsKCW1zciA9IHJkbXNyKE1TUl9QU1RBVEVfQ09GVklEKTsKCWRpZCA9IE1TUl9QU1RBVEVf Q1VSX0RJRChtc3IpOwoJZmlkID0gTVNSX1BTVEFURV9DVVJfRklEKG1zcik7CglpZiAoYm9vdHZl cmJvc2UpCgkJcHJpbnRmKCJwc3RhdGU6IERJRD0lZCxGSUQ9JWRcbiIsIGRpZCwgZmlkKTsKCXJl dHVybiAoMTAwICogKGZpZCArIDE2KSAvIHBzdGF0ZV9kaWRfdG9fZGl2W2RpZF0pOwp9CgpzdGF0 aWMgaW50CnBzdGF0ZV9jdXJfY3B1X3ZvbHRzKGludCBtdWx0KQp7Cgl1aW50NjRfdAltc3I7Cglp bnQJCXZpZDsKCW1zciA9IHJkbXNyKE1TUl9QU1RBVEVfQ09GVklEKTsKCXZpZCA9IE1TUl9QU1RB VEVfQ1VSX1ZJRChtc3IpOwoJaWYgKGJvb3R2ZXJib3NlKQoJCXByaW50ZigicHN0YXRlOiBWSUQ9 JWRcbiIsIHZpZCk7CglyZXR1cm4gKFBTVEFURV9WSURfVE9fVk9MVFModmlkLCBtdWx0KSk7Cn0K CnN0YXRpYyBpbnQKcHN0YXRlX3NldChkZXZpY2VfdCBkZXYsIGNvbnN0IHN0cnVjdCBjZl9zZXR0 aW5nICpjZikKewoJc3RydWN0IHBzdGF0ZV9zb2Z0YyAqc2M7CglzdHJ1Y3QgcHN0YXRlX3NldHRp bmcgKnBzOwoJdWludDY0X3QJbXNyOwoJaW50CQlpICAgICAgICAgLCBpZCwgc2V0ZnJlcSwgY3Vy ZnJlcSwgY3Vydm9sdHM7CglpZiAoY2YgPT0gTlVMTCkKCQlyZXR1cm4gKEVJTlZBTCk7Cgltc3Ig PSByZG1zcihNU1JfUFNUQVRFX0NPTkZJRyArIDEpOwoJaWYgKCEobXNyICYgMHg4MDAwMDAwMDAw MDAwMDAwKSkgewoJCWlmIChib290dmVyYm9zZSkKCQkJZGV2aWNlX3ByaW50ZihkZXYsICJQMSBu b3Qgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlLlxuIik7CgkJcmV0dXJuIChFTk9ERVYpOwoJfQoJc2Mg PSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CglwcyA9IHNjLT5wc3RhdGVfc2V0dGluZ3M7Cglmb3Ig KGkgPSAwOyBpIDwgc2MtPmNmbnVtOyBpKyssIHBzKyspCgkJaWYgKGNmLT5mcmVxID09IHBzLT5m cmVxKSB7CgkJCWJyZWFrOwoJCX0KCXNldGZyZXEgPSBwcy0+ZnJlcTsKCWlmIChpID09IHNjLT5j Zm51bSkgewoJCWlmIChib290dmVyYm9zZSkKCQkJZGV2aWNlX3ByaW50ZihkZXYsICIlZCBNSHog aXMgbm90IHN1cHBvcnRlZC5cbiIsCgkJCQkgICAgICBjZi0+ZnJlcSk7CgkJcmV0dXJuIChFSU5W QUwpOwoJfQoJLyogZ28gdG8gUDAgKi8KCXdybXNyKE1TUl9QU1RBVEVfQ09OVFJPTCwgMCk7CglE RUxBWSgzMDAwKTsKCWlmIChzZXRmcmVxIC8gMTAwID09IHNjLT5tb2ZfaWQpIHsKCQlpZiAoYm9v dHZlcmJvc2UpCgkJCWRldmljZV9wcmludGYoZGV2LCAiZ29pbmcgYmFjayB0byBkZWZhdWx0IHNl dHRpbmcuXG4iKTsKCQlmb3IgKGkgPSAxOyBpIDwgNTsgaSsrKQoJCQl3cm1zcihNU1JfUFNUQVRF X0NPTkZJRyArIGksIHNjLT5iYWNrdXBbaV0pOwoJCXJldHVybiAoMCk7Cgl9CgkvKiBjb3B5IGNv bmZpZyB2YWwgZnJvbSBQMCB0byBQMSAqLwoJbXNyID0gcmRtc3IoTVNSX1BTVEFURV9DT05GSUcp OwoJd3Jtc3IoTVNSX1BTVEFURV9DT05GSUcgKyAxLCBtc3IpOwoJLyogbWFrZSBwc3RhdGUgKi8K CWlkID0gc2MtPm1vZl9pZCAtIGkgLSAxOwoJbXNyID0gUFNUQVRFX01LX1BTVEFURShtc3IsIHBz dGF0ZV92aWRfbGlzdFtpZF0sIHNjLT5tdWx0KTsKCXdybXNyKE1TUl9QU1RBVEVfQ09ORklHICsg MSwgbXNyKTsKCWlmIChib290dmVyYm9zZSkKCQlkZXZpY2VfcHJpbnRmKGRldiwgImdvaW5nIHRv ICVkTUh6XG4iLCBzZXRmcmVxKTsKCS8qIGdvIHRvIFAxICovCgl3cm1zcihNU1JfUFNUQVRFX0NP TlRST0wsIDEpOwoJZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykgewoJCURFTEFZKDMwMDApOwoJ CWN1cmZyZXEgPSBwc3RhdGVfY3VyX2NwdV9mcmVxKCk7CgkJY3Vydm9sdHMgPSBwc3RhdGVfY3Vy X2NwdV92b2x0cyhzYy0+bXVsdCk7CgkJaWYgKHNldGZyZXEgPT0gY3VyZnJlcSkKCQkJYnJlYWs7 Cgl9CglpZiAoc2V0ZnJlcSAhPSBjdXJmcmVxICYmIGJvb3R2ZXJib3NlKSB7CgkJZGV2aWNlX3By aW50ZihkZXYsICJjdXJyZW50ICVkTUh6IGFuZCBzZXQgJWRNSHogZGlmZmVyLlxuIiwKCQkJICAg ICAgY3VyZnJlcSwgc2V0ZnJlcSk7CgkJcmV0dXJuICgwKTsKCX0KCWlmIChib290dmVyYm9zZSkK CQlkZXZpY2VfcHJpbnRmKGRldiwgIk5vdzogJWQgTUh6ICVkIG1WXG4iLCBjdXJmcmVxLCBjdXJ2 b2x0cyk7CgoJbXNyID0gcmRtc3IoTVNSX1BTVEFURV9TVEFUVVMpOwoJaWYgKG1zciAhPSAxICYm IGJvb3R2ZXJib3NlKQoJCWRldmljZV9wcmludGYoZGV2LCAiUDEgaXMgbm90IGVuYWJsZWQuXG4i KTsKCXJldHVybiAoMCk7Cn0KCnN0YXRpYyBpbnQKcHN0YXRlX2dldChkZXZpY2VfdCBkZXYsIHN0 cnVjdCBjZl9zZXR0aW5nICpjZikKewoJc3RydWN0IHBzdGF0ZV9zb2Z0YyAqc2M7CglzYyA9IGRl dmljZV9nZXRfc29mdGMoZGV2KTsKCWlmIChjZiA9PSBOVUxMKQoJCXJldHVybiAoRUlOVkFMKTsK CWNmLT5mcmVxID0gcHN0YXRlX2N1cl9jcHVfZnJlcSgpOwoJY2YtPnZvbHRzID0gcHN0YXRlX2N1 cl9jcHVfdm9sdHMoc2MtPm11bHQpOwoJY2YtPnBvd2VyID0gQ1BVRlJFUV9WQUxfVU5LTk9XTjsK CWNmLT5sYXQgPSAxNjsKCWNmLT5kZXYgPSBkZXY7CglyZXR1cm4gKDApOwp9CgpzdGF0aWMgaW50 CnBzdGF0ZV9zZXR0aW5ncyhkZXZpY2VfdCBkZXYsIHN0cnVjdCBjZl9zZXR0aW5nICpzZXRzLCBp bnQgKmNvdW50KQp7CglzdHJ1Y3QgcHN0YXRlX3NvZnRjICpzYzsKCWludAkJaTsKCWlmIChzZXRz ID09IE5VTEwgfHwgY291bnQgPT0gTlVMTCkKCQlyZXR1cm4gKEVJTlZBTCk7CglzYyA9IGRldmlj ZV9nZXRfc29mdGMoZGV2KTsKCWlmICgqY291bnQgPCBzYy0+Y2ZudW0pCgkJcmV0dXJuIChFMkJJ Ryk7Cglmb3IgKGkgPSAwOyBpIDwgc2MtPmNmbnVtOyBpKyssIHNldHMrKykgewoJCXNldHMtPmZy ZXEgPSBzYy0+cHN0YXRlX3NldHRpbmdzW2ldLmZyZXE7CgkJc2V0cy0+dm9sdHMgPSBzYy0+cHN0 YXRlX3NldHRpbmdzW2ldLnZvbHRzOwoJCXNldHMtPnBvd2VyID0gc2MtPnBzdGF0ZV9zZXR0aW5n c1tpXS5wb3dlcjsKCQlzZXRzLT5sYXQgPSBzYy0+cHN0YXRlX3NldHRpbmdzW2ldLmxhdDsKCQlz ZXRzLT5kZXYgPSBzYy0+cHN0YXRlX3NldHRpbmdzW2ldLmRldjsKCX0KCSpjb3VudCA9IHNjLT5j Zm51bTsKCXJldHVybiAoMCk7Cn0KCnN0YXRpYyBpbnQKcHN0YXRlX3R5cGUoZGV2aWNlX3QgZGV2 LCBpbnQgKnR5cGUpCnsKCglpZiAodHlwZSA9PSBOVUxMKQoJCXJldHVybiAoRUlOVkFMKTsKCSp0 eXBlID0gQ1BVRlJFUV9UWVBFX0FCU09MVVRFOwoJcmV0dXJuICgwKTsKfQoKc3RhdGljIGludApw c3RhdGVfaXNfY2FwYWJsZSh2b2lkKQp7Cgl1X2ludAkJcmVncyAgICAgWzRdOwoJaWYgKHN0cmNt cChjcHVfdmVuZG9yLCAiQXV0aGVudGljQU1EIikgIT0gMCB8fAoJICAgIGNwdV9leHRoaWdoIDwg MHg4MDAwMDAwNykKCQlyZXR1cm4gKEZBTFNFKTsKCXN3aXRjaCAoY3B1X2lkKSB7CgljYXNlIDB4 MTAwZjJBOgoJY2FzZSAweDEwMGYyMjoKCWNhc2UgMHgxMDBmMjM6CgkJYnJlYWs7CglkZWZhdWx0 OgoJCXJldHVybiAoRkFMU0UpOwoJfQoJZG9fY3B1aWQoMHg4MDAwMDAwNywgcmVncyk7CglpZiAo cmVnc1szXSAmIDB4ODApIHsKCQlyZXR1cm4gKFRSVUUpOwoJfQoJcmV0dXJuIChGQUxTRSk7Cn0K CnN0YXRpYyB2b2lkCnBzdGF0ZV9pZGVudGlmeShkcml2ZXJfdCAqIGRyaXZlciwgZGV2aWNlX3Qg cGFyZW50KQp7CglkZXZpY2VfdAljaGlsZDsKCWlmIChkZXZpY2VfZmluZF9jaGlsZChwYXJlbnQs ICJwc3RhdGUiLCAtMSkgIT0gTlVMTCkKCQlyZXR1cm47CglpZiAocHN0YXRlX2lzX2NhcGFibGUo KSA9PSBGQUxTRSkKCQlyZXR1cm47CglpZiAoKGNoaWxkID0gQlVTX0FERF9DSElMRChwYXJlbnQs IDEwLCAicHN0YXRlIiwgLTEpKSA9PSBOVUxMKQoJCWRldmljZV9wcmludGYocGFyZW50LCAicHN0 YXRlOiBhZGQgY2hpbGQgZmFpbGVkXG4iKTsKfQoKc3RhdGljIGludApwc3RhdGVfcHJvYmUoZGV2 aWNlX3QgZGV2KQp7CglkZXZpY2VfdAlwZXJmX2RldjsKCWludAkJZXJyb3IgICAgICwgdHlwZTsK CWlmIChyZXNvdXJjZV9kaXNhYmxlZCgicHN0YXRlIiwgMCkpCgkJcmV0dXJuIChFTlhJTyk7CgoJ cGVyZl9kZXYgPSBkZXZpY2VfZmluZF9jaGlsZChkZXZpY2VfZ2V0X3BhcmVudChkZXYpLCAiYWNw aV9wZXJmIiwgLTEpOwoJaWYgKHBlcmZfZGV2ICYmIGRldmljZV9pc19hdHRhY2hlZChwZXJmX2Rl dikpIHsKCQllcnJvciA9IENQVUZSRVFfRFJWX1RZUEUocGVyZl9kZXYsICZ0eXBlKTsKCQlpZiAo ZXJyb3IgPT0gMCAmJiAodHlwZSAmIENQVUZSRVFfRkxBR19JTkZPX09OTFkpID09IDApCgkJCXJl dHVybiAoRU5YSU8pOwoJfQoJZGV2aWNlX3NldF9kZXNjKGRldiwgIkNvb2xgbidRdWlldCAyLjAi KTsKCXJldHVybiAoMCk7Cn0KCnN0YXRpYyBpbnQKcHN0YXRlX2F0dGFjaChkZXZpY2VfdCBkZXYp CnsKCXN0cnVjdCBwc3RhdGVfc29mdGMgKnNjOwoJdWludDY0X3QJbXNyOwoJdWludDMyX3QJY2Zn OwoJaW50CQlpICAgICAgICAgLCBqLCBsaXN0dmlkOwoJdV9pbnQJCXJlZ3MgICAgIFs0XSwgcmVn OwoJY2hhcgkJY3B1X21vZGVsIFs0OF0sICpwID0gY3B1X21vZGVsOwoJc2MgPSBkZXZpY2VfZ2V0 X3NvZnRjKGRldik7Cglmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQoJCXNjLT5iYWNrdXBbaV0gPSBy ZG1zcihNU1JfUFNUQVRFX0NPTkZJRyArIGkpOwoJbXNyID0gcmRtc3IoTVNSX1BTVEFURV9DT0ZW SUQpOwoJc2MtPm1vZl9pZCA9IE1TUl9QU1RBVEVfTU9GKG1zcikgLyAxMDA7CglpZiAoc2MtPm1v Zl9pZCA9PSAwKSB7CgkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewoJCQlkb19jcHVpZCgweDgw MDAwMDAyICsgaSwgcmVncyk7CgkJCWZvciAoaiA9IDA7IGogPCA0OyBqKyspIHsKCQkJCXJlZyA9 IHJlZ3Nbal07CgkJCQkqcCsrID0gKGNoYXIpKHJlZyAmIDB4ZmYpOwoJCQkJKnArKyA9IChjaGFy KSgocmVnID4+IDgpICYgMHhmZik7CgkJCQkqcCsrID0gKGNoYXIpKChyZWcgPj4gMTYpICYgMHhm Zik7CgkJCQkqcCsrID0gKGNoYXIpKChyZWcgPj4gMjQpICYgMHhmZik7CgkJCX0KCQl9CgkJaWYg KHN0cnN0cihjcHVfbW9kZWwsICJQaGVub20iKSkgewoJCQlpZiAoc3Ryc3RyKGNwdV9tb2RlbCwg Ijk2MDAiKSkgewoJCQkJc2MtPm1vZl9pZCA9IDIzOwkvKiAyLjMgR0h6ICovCgkJCX0gZWxzZSBp ZiAoc3Ryc3RyKGNwdV9tb2RlbCwgIjk4NTAiKSkgewoJCQkJc2MtPm1vZl9pZCA9IDI1OwkvKiAy LjUgR0h6ICovCgkJCX0gZWxzZSBpZiAoc3Ryc3RyKGNwdV9tb2RlbCwgIjk5NTAiKSkgewoJCQkJ c2MtPm1vZl9pZCA9IDI2OwkvKiAyLjYgR0h6ICovCgkJCX0KCQl9CgkJaWYgKHNjLT5tb2ZfaWQg PT0gMCkgewoJCQlyZXR1cm4gKEVOT0RFVik7CgkJfQoJfQoJLyogaWYgMjUwMCwuLjYwMCw1MDAs NDAwIE1IeiA9PiBzYy0+bW9mX2lkPTI1OyBzYy0+Y2ZudW09MjI7ICovCglzYy0+Y2ZudW0gPSBz Yy0+bW9mX2lkIC0gMzsKCS8qKgoJICogZm9sbG93aW5nIDI0IG1lYW5zIHRoZSAxc3QgY3B1LiAy NS0zMSBpbnN0ZWFkIG9mIDI0IGlzIE1QIHN5c3RlbS4KCSAqIEkgZG9uJ3QgaGF2ZSBNUCBzeXN0 ZW0gOi08IC4KCSAqLwoJc2MtPkYzID0gcGNpX2ZpbmRfYnNmKDAsIDI0LCAzKTsKCWNmZyA9IHBj aV9yZWFkX2NvbmZpZyhzYy0+RjMsIDB4QTAsIDQpOwoJaWYgKGNmZyAmIDB4MTApCQkvKiBQVkkg bW9kZSAqLwoJCXNjLT5tdWx0ID0gMTsKCWVsc2UJCQkvKiBTVkkgbW9kZSAqLwoJCXNjLT5tdWx0 ID0gMjsKCWZvciAoaSA9IDA7IGkgPCBzYy0+Y2ZudW07IGkrKykgewoJCXNjLT5wc3RhdGVfc2V0 dGluZ3NbaV0uZnJlcSA9IDEwMCAqIChzYy0+bW9mX2lkIC0gaSk7CgkJbGlzdHZpZCA9IHBzdGF0 ZV92aWRfbGlzdFtzYy0+bW9mX2lkIC0gaV07CgkJc2MtPnBzdGF0ZV9zZXR0aW5nc1tpXS52b2x0 cyA9IFBTVEFURV9MSVNUVklEX1RPX1ZPTFRTKGxpc3R2aWQpOwoJCXNjLT5wc3RhdGVfc2V0dGlu Z3NbaV0ucG93ZXIgPSBDUFVGUkVRX1ZBTF9VTktOT1dOOwoJCXNjLT5wc3RhdGVfc2V0dGluZ3Nb aV0ubGF0ID0gMTY7CgkJc2MtPnBzdGF0ZV9zZXR0aW5nc1tpXS5kZXYgPSBkZXY7Cgl9CgljcHVm cmVxX3JlZ2lzdGVyKGRldik7CglyZXR1cm4gKDApOwp9CgpzdGF0aWMgaW50CnBzdGF0ZV9kZXRh Y2goZGV2aWNlX3QgZGV2KQp7CglzdHJ1Y3QgcHN0YXRlX3NvZnRjICpzYzsKCWludAkJbmV3OwoJ c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CgluZXcgPSBzYy0+bW9mX2lkICogMTAwOwoJaWYg KG5ldyAhPSAwKQoJCWtlcm5lbF9zeXNjdGxieW5hbWUoJnRocmVhZDAsICJkZXYuY3B1LjAuZnJl cSIsCgkJCQkgICAgMCwgMCwgJm5ldywgc2l6ZW9mKG5ldyksIE5VTEwsIDApOwoJcmV0dXJuIChj cHVmcmVxX3VucmVnaXN0ZXIoZGV2KSk7Cn0KCnN0YXRpYyBpbnQKcHN0YXRlX3NodXRkb3duKGRl dmljZV90IGRldikKewoJc3RydWN0IHBzdGF0ZV9zb2Z0YyAqc2M7CglpbnQJCW5ldzsKCXNjID0g ZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwoJbmV3ID0gc2MtPm1vZl9pZCAqIDEwMDsKCWlmIChuZXcg IT0gMCkKCQlrZXJuZWxfc3lzY3RsYnluYW1lKCZ0aHJlYWQwLCAiZGV2LmNwdS4wLmZyZXEiLAoJ CQkJICAgIDAsIDAsICZuZXcsIHNpemVvZihuZXcpLCBOVUxMLCAwKTsKCXJldHVybiAoMCk7Cn0K CnN0YXRpYyBpbnQKcHN0YXRlX2ZlYXR1cmVzKGRyaXZlcl90ICogZHJpdmVyLCB1X2ludCAqIGZl YXR1cmVzKQp7CgoJKmZlYXR1cmVzID0gQUNQSV9DQVBfUEVSRl9NU1JTOwoJcmV0dXJuICgwKTsK fQo= --Multipart_Sun_Sep__7_09:36:03_2008-1 Content-Type: text/plain; charset=US-ASCII --Multipart_Sun_Sep__7_09:36:03_2008-1--