看板 DFBSD_bugs 關於我們 聯絡資訊
--216.240.41.26.80.21659.1241991515.051.1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Alexander Polakov <polachok@gmail.com> added the comment: >But another thing: As you are the only person so far for whom this patch=20 >works, can you check out if it works OK with sysutils/estd from pkgsrc,=20 >which seems to support the machdep.powernow sysctls. Attached one works nice with estd (just added a sysctl). >It enters the for loop in k8pnow_states() but the memcmp() never succeeds. ACPI tables can be used instead, but I have no idea how to implement it at = the moment. Anyway, I'm going to learn more about ACPI to fix acpi_ec and acpi_= tz spamming system console with NO_HARDWARE_RESPONSE. Btw I made acpica-unix-20090422 port (which doesn't bring any benefit though). _____________________________________________________ DragonFly issue tracker <bugs@lists.dragonflybsd.org> <http://bugs.dragonflybsd.org/issue1359> _____________________________________________________ --216.240.41.26.80.21659.1241991515.051.1 Content-Type: text/x-csrc Content-Disposition: attachment; filename="powernow.c" Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IChjKSAyMDA0IE1hcnRpbiBWXHhlOWdpYXJkLgogKiBDb3B5cmlnaHQg KGMpIDIwMDQtMjAwNSBCcnVubyBEdWNyb3QKICogQ29weXJpZ2h0IChjKSAyMDA0IEZVS1VEQSBO b2J1aGlrbyA8bmZ1a3VkYUBzcGEuaXMudWVjLmFjLmpwPgogKiBDb3B5cmlnaHQgKGMpIDIwMDQs IDIwMDYgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu CiAqCiAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8g VGhlIE5ldEJTRCBGb3VuZGF0aW9uCiAqIGJ5IEp1YW4gUm9tZXJvIFBhcmRpbmVzIGFuZCBNYXJ0 aW4gVmVnaWFyZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp c3RyaWJ1dGlvbi4KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwogKiBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND TEFJTUVELgogKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsCiAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAogKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us CiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD QVVTRUQgQU5EIE9OIEFOWQogKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogKiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgogKi8KLyogQU1EIFBPV0VSTk9XIEs4IGRyaXZlciAqLwoKI2luY2x1ZGUgPHN5cy9wYXJh bS5oPgojaW5jbHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiNpbmNs dWRlIDxzeXMva2VybmVsLmg+CiNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+CiNpbmNsdWRlIDxzeXMv c3lzY3RsLmg+CiNpbmNsdWRlIDxidXMvaXNhL2lzYS5oPgojaW5jbHVkZSA8bWFjaGluZS9jcHUu aD4KI2luY2x1ZGUgPG1hY2hpbmUvcG1hcC5oPgojaW5jbHVkZSA8bWFjaGluZS9wYy9iaW9zLmg+ CiNpbmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4KI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+ CiNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KCiNkZWZpbmUgUE44X1NUQV9NRklEKHgp ICAgICAgICAgICAgICAgICAoKCh4KSA+PiAxNikgJiAweDNmKQojZGVmaW5lIFBOOF9TVEFfTVZJ RCh4KSAgICAgICAgICAgICAgICAgKCgoeCkgPj4gNDgpICYgMHgxZikKI2RlZmluZSBQTjhfU1RB X1NGSUQoeCkgICAgICAgICAgICAgICAgICgoKHgpID4+IDgpICYgMHgzZikKCi8qCiAqIE1TUnMg YW5kIGJpdHMgdXNlZCBieSBQb3dlck5vdyEgdGVjaG5vbG9neQogKi8KI2RlZmluZSBNU1JfQU1E SzdfRklEVklEX0NUTCAgICAgICAgICAgIDB4YzAwMTAwNDEKI2RlZmluZSBNU1JfQU1ESzdfRklE VklEX1NUQVRVUyAgICAgICAgIDB4YzAwMTAwNDIKI2RlZmluZSBBTURfUE5fRklEX1ZJRCAgICAg ICAgICAgICAgICAgIDB4MDYKCiNkZWZpbmUgQklPU19TVEFSVCAgICAgICAgICAgICAgICAgICAg ICAweGUwMDAwCiNkZWZpbmUgQklPU19MRU4gICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAw CiNkZWZpbmUgQklPU19TVEVQICAgICAgICAgICAgICAgICAgICAgICAxNgoKI2RlZmluZSBQTjhf UFNCX1ZFUlNJT04gICAgICAgICAgICAgICAgIDB4MTQKI2RlZmluZSBQTjhfUFNCX1RPX1JWTyh4 KSAgICAgICAgICAgICAgICgoeCkgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fSVJUKHgpICAg ICAgICAgICAgICAgKCgoeCkgPj4gMikgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fTVZTKHgp ICAgICAgICAgICAgICAgKCgoeCkgPj4gNCkgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fQkFU VCh4KSAgICAgICAgICAgICAgKCgoeCkgPj4gNikgJiAweDAzKQovKiBCaXRmaWVsZHMgdXNlZCBi eSBLOCAqLwojZGVmaW5lIFBOOF9DVFJfRklEKHgpICAgICAgICAgICAgICAgICAgKCh4KSAmIDB4 M2YpCiNkZWZpbmUgUE44X0NUUl9WSUQoeCkgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWYp IDw8IDgpCiNkZWZpbmUgUE44X0NUUl9QRU5ESU5HKHgpICAgICAgICAgICAgICAoKCh4KSAmIDEp IDw8IDMyKQojZGVmaW5lIFBOOF9TVEFfQ0ZJRCh4KSAgICAgICAgICAgICAgICAgKCh4KSAmIDB4 M2YpCiNkZWZpbmUgUE44X1NUQV9TRklEKHgpICAgICAgICAgICAgICAgICAoKCh4KSA+PiA4KSAm IDB4M2YpCiNkZWZpbmUgUE44X1NUQV9NRklEKHgpICAgICAgICAgICAgICAgICAoKCh4KSA+PiAx NikgJiAweDNmKQojZGVmaW5lIFBOOF9TVEFfUEVORElORyh4KSAgICAgICAgICAgICAgKCgoeCkg Pj4gMzEpICYgMHgwMSkKI2RlZmluZSBQTjhfU1RBX0NWSUQoeCkgICAgICAgICAgICAgICAgICgo KHgpID4+IDMyKSAmIDB4MWYpCiNkZWZpbmUgUE44X1NUQV9TVklEKHgpICAgICAgICAgICAgICAg ICAoKCh4KSA+PiA0MCkgJiAweDFmKQojZGVmaW5lIFBOOF9TVEFfTVZJRCh4KSAgICAgICAgICAg ICAgICAgKCgoeCkgPj4gNDgpICYgMHgxZikKI2RlZmluZSBQTjhfUExMX0xPQ0soeCkgICAgICAg ICAgICAgICAgICgoeCkgKiAxMDAwLzUpCiNkZWZpbmUgV1JJVEVfRklEVklEKGZpZCwgdmlkLCBj dHJsKSAgICBcCiAgICAgICAgd3Jtc3IoTVNSX0FNREs3X0ZJRFZJRF9DVEwsICAgICBcCiAgICAg ICAgICAgICgoKGN0cmwpIDw8IDMyKSB8ICgxVUxMIDw8IDE2KSB8ICgodmlkKSA8PCA4KSB8IChm aWQpKSkKI2RlZmluZSBDT1VOVF9PRkZfSVJUKGlydCkgICAgICAgICAgICAgIERFTEFZKDEwICog KDEgPDwgKGlydCkpKQojZGVmaW5lIENPVU5UX09GRl9WU1QodnN0KSAgICAgICAgICAgICAgREVM QVkoMjAgKiAodnN0KSkKI2RlZmluZSBGSURfVE9fVkNPX0ZJRChmaWQpICAgICAgICAgICAgIFwK ICAgICAgICAoKChmaWQpIDwgOCkgPyAoOCArICgoZmlkKSA8PCAxKSkgOiAoZmlkKSkKCiNkZWZp bmUgUkVBRF9QRU5ESU5HX1dBSVQoc3RhdHVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAoc3RhdHVzKSA9IHJkbXNyKE1TUl9BTURLN19G SURWSURfU1RBVFVTKTsgICAgICBcCiAgICAgICAgfSB3aGlsZSAoUE44X1NUQV9QRU5ESU5HKHN0 YXR1cykpCiNkZWZpbmUgYWJzKHgpICggeCA8IDAgPyAteCA6IHggKQoKI2RlZmluZSBQT1dFUk5P V19NQVhfU1RBVEVTICAgICAgICAgICAgIDE2CgpzdHJ1Y3Qgazhwbm93X3N0YXRlIHsKICAgICAg ICBpbnQgZnJlcTsKICAgICAgICB1aW50OF90IGZpZDsKICAgICAgICB1aW50OF90IHZpZDsKfTsK CnN0cnVjdCBrOHBub3dfY3B1X3N0YXRlIHsKICAgICAgICBzdHJ1Y3Qgazhwbm93X3N0YXRlIHN0 YXRlX3RhYmxlW1BPV0VSTk9XX01BWF9TVEFURVNdOwogICAgICAgIHVuc2lnbmVkIGludCBuX3N0 YXRlczsKICAgICAgICB1bnNpZ25lZCBpbnQgc2d0YzsKICAgICAgICB1bnNpZ25lZCBpbnQgdnN0 OwogICAgICAgIHVuc2lnbmVkIGludCBtdnM7CiAgICAgICAgdW5zaWduZWQgaW50IHBsbDsKICAg ICAgICB1bnNpZ25lZCBpbnQgcnZvOwogICAgICAgIHVuc2lnbmVkIGludCBpcnQ7CiAgICAgICAg aW50IGxvdzsKfTsKCnN0cnVjdCBwc2JfcyB7CiAgICAgICAgY2hhciBzaWduYXR1cmVbMTBdOyAg ICAgLyogQU1ESzdQTk9XISAqLwogICAgICAgIHVpbnQ4X3QgdmVyc2lvbjsKICAgICAgICB1aW50 OF90IGZsYWdzOwogICAgICAgIHVpbnQxNl90IHR0aW1lOyAgICAgICAgIC8qIE1pbiBTZXR0bGlu ZyB0aW1lICovCiAgICAgICAgdWludDhfdCByZXNlcnZlZDsKICAgICAgICB1aW50OF90IG5fcHN0 Owp9OwpzdHJ1Y3QgcHN0X3MgewogICAgICAgIHVpbnQzMl90IGNwdWlkOwogICAgICAgIHVpbnQ4 X3QgcGxsOwogICAgICAgIHVpbnQ4X3QgZmlkOwogICAgICAgIHVpbnQ4X3QgdmlkOwogICAgICAg IHVpbnQ4X3Qgbl9zdGF0ZXM7Cn07CgpzdGF0aWMgc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKms4 cG5vd19jdXJyZW50X3N0YXRlID0gTlVMTDsKaW50IGNwdXNwZWVkOwoKaW50Cms4cG5vd19zdGF0 ZXMoc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWludDMyX3QgY3B1c2lnLAogICAg dW5zaWduZWQgaW50IGZpZCwgdW5zaWduZWQgaW50IHZpZCk7CmludAprOHBub3dfZGVjb2RlX3Bz dChzdHJ1Y3Qgazhwbm93X2NwdV9zdGF0ZSAqY3N0YXRlLCB1aW50OF90ICpwKTsKLyoKICogR2l2 ZW4gYSBzZXQgb2YgcGFpciBvZiBmaWQvdmlkLCBhbmQgbnVtYmVyIG9mIHBlcmZvcm1hbmNlIHN0 YXRlcywKICogY29tcHV0ZSBzdGF0ZV90YWJsZSB2aWEgYW4gaW5zZXJ0aW9uIHNvcnQuCiAqLwpp bnQKazhwbm93X2RlY29kZV9wc3Qoc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWlu dDhfdCAqcCkKewogICAgICAgIGludCBpLCBqLCBuOwogICAgICAgIHN0cnVjdCBrOHBub3dfc3Rh dGUgc3RhdGU7CiAgICAgICAgZm9yIChuID0gMCwgaSA9IDA7IGkgPCBjc3RhdGUtPm5fc3RhdGVz OyBpKyspIHsKICAgICAgICAgICAgICAgIHN0YXRlLmZpZCA9ICpwKys7CiAgICAgICAgICAgICAg ICBzdGF0ZS52aWQgPSAqcCsrOwogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAq IFRoZSBtaW5pbXVtIHN1cHBvcnRlZCBmcmVxdWVuY3kgcGVyIHRoZSBkYXRhIHNoZWV0IGlzIDgw ME1IegogICAgICAgICAgICAgICAgICogVGhlIG1heGltdW0gc3VwcG9ydGVkIGZyZXF1ZW5jeSBp cyA1MDAwTUh6LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBzdGF0ZS5mcmVx ID0gODAwICsgc3RhdGUuZmlkICogMTAwOwogICAgICAgICAgICAgICAgaiA9IG47CiAgICAgICAg ICAgICAgICB3aGlsZSAoaiA+IDAgJiYgY3N0YXRlLT5zdGF0ZV90YWJsZVtqIC0gMV0uZnJlcSA+ IHN0YXRlLmZyZXEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZjc3RhdGUtPnN0 YXRlX3RhYmxlW2pdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzdGF0ZS0+c3RhdGVf dGFibGVbaiAtIDFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBr OHBub3dfc3RhdGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgLS1qOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgbWVtY3B5KCZjc3RhdGUtPnN0YXRlX3RhYmxlW2pdLCAmc3Rh dGUsCgkJCSBzaXplb2Yoc3RydWN0IGs4cG5vd19zdGF0ZSkpOwogICAgICAgICAgICAgICAgbisr OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKfQoKaW50Cms4cG5vd19zdGF0ZXMoc3RydWN0 IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWludDMyX3QgY3B1c2lnLAogICAgdW5zaWduZWQg aW50IGZpZCwgdW5zaWduZWQgaW50IHZpZCkKewogICAgICAgIHN0cnVjdCBwc2JfcyAqcHNiOwog ICAgICAgIHN0cnVjdCBwc3RfcyAqcHN0OwogICAgICAgIHVpbnQ4X3QgKnA7CiAgICAgICAgaW50 IGk7CiAgICAgICAgZm9yIChwID0gKHVfaW50OF90ICopQklPU19QQUREUlRPVkFERFIoQklPU19T VEFSVCk7CiAgICAgICAgICAgIHAgPCAodV9pbnQ4X3QgKilCSU9TX1BBRERSVE9WQUREUihCSU9T X1NUQVJUICsgQklPU19MRU4pOyBwICs9CiAgICAgICAgICAgIEJJT1NfU1RFUCkgewogICAgICAg ICAgICAgICAgaWYgKG1lbWNtcChwLCAiQU1ESzdQTk9XISIsIDEwKSA9PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGtwcmludGYoIks3UE5PVyBsYWJlbCBmb3VuZFxuIik7CiAgICAgICAg ICAgICAgICAgICAgICAgIHBzYiA9IChzdHJ1Y3QgcHNiX3MgKilwOwogICAgICAgICAgICAgICAg ICAgICAgICBpZiAocHNiLT52ZXJzaW9uICE9IFBOOF9QU0JfVkVSU0lPTikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY3N0 YXRlLT52c3QgPSBwc2ItPnR0aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBjc3RhdGUtPnJ2 byA9IFBOOF9QU0JfVE9fUlZPKHBzYi0+cmVzZXJ2ZWQpOwogICAgICAgICAgICAgICAgICAgICAg ICBjc3RhdGUtPmlydCA9IFBOOF9QU0JfVE9fSVJUKHBzYi0+cmVzZXJ2ZWQpOwogICAgICAgICAg ICAgICAgICAgICAgICBjc3RhdGUtPm12cyA9IFBOOF9QU0JfVE9fTVZTKHBzYi0+cmVzZXJ2ZWQp OwogICAgICAgICAgICAgICAgICAgICAgICBjc3RhdGUtPmxvdyA9IFBOOF9QU0JfVE9fQkFUVChw c2ItPnJlc2VydmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgcCs9IHNpemVvZihzdHJ1Y3Qg cHNiX3MpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHNiLT5uX3Bz dDsgKytpKSB7CgkJCQlwc3QgPSAoc3RydWN0IHBzdF9zICopIHA7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3N0YXRlLT5wbGwgPSBwc3QtPnBsbDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjc3RhdGUtPm5fc3RhdGVzID0gcHN0LT5uX3N0YXRlczsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3B1c2lnID09IHBzdC0+Y3B1aWQgJiYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN0LT5maWQgPT0gZmlkICYmIHBzdC0+dmlkID09 IHZpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChr OHBub3dfZGVjb2RlX3BzdChjc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcCs9IHNpemVvZiAoc3RydWN0IHBzdF9zKSkpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICs9IHNp emVvZihzdHJ1Y3QgcHN0X3MpICsgMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKiBjc3RhdGUtPm5fc3RhdGVzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW50Cms4X3Bv d2Vybm93X3NldHBlcmYodW5zaWduZWQgaW50IGZyZXEpCnsKICAgICAgICB1bnNpZ25lZCBpbnQg aTsKICAgICAgICB1aW50NjRfdCBzdGF0dXM7CiAgICAgICAgdWludDMyX3QgdmFsOwogICAgICAg IGludCBjZmlkLCBjdmlkLCBmaWQgPSAwLCB2aWQgPSAwOwogICAgICAgIGludCBydm87CiAgICAg ICAgc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZTsKICAgICAgICAvKgogICAgICAgICAq IFdlIGRvbnQgZG8gYSBrOHBub3dfcmVhZF9wZW5kaW5nX3dhaXQgaGVyZSwgbmVlZCB0byBlbnN1 cmUgdGhhdCB0aGUKICAgICAgICAgKiBjaGFuZ2UgcGVuZGluZyBiaXQgaXNuJ3Qgc3R1Y2ssCiAg ICAgICAgICovCiAgICAgICAgc3RhdHVzID0gcmRtc3IoTVNSX0FNREs3X0ZJRFZJRF9TVEFUVVMp OwogICAgICAgIGlmIChQTjhfU1RBX1BFTkRJTkcoc3RhdHVzKSkKICAgICAgICAgICAgICAgIHJl dHVybiAxOwogICAgICAgIGNmaWQgPSBQTjhfU1RBX0NGSUQoc3RhdHVzKTsKICAgICAgICBjdmlk ID0gUE44X1NUQV9DVklEKHN0YXR1cyk7CiAgICAgICAgY3N0YXRlID0gazhwbm93X2N1cnJlbnRf c3RhdGU7CgkvL2twcmludGYoIiVzOiBjc3RhdGUtPm5fc3RhdGVzPSVkXG4iLCBfX2Z1bmNfXywg Y3N0YXRlLT5uX3N0YXRlcyk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bl9zdGF0 ZXM7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGNzdGF0ZS0+c3RhdGVfdGFibGVbaV0uZnJl cSA+PSBmcmVxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8va3ByaW50ZigiJXM6IGZyZXE9 JWRcbiIsIF9fZnVuY19fLCBmcmVxKTsKICAgICAgICAgICAgICAgICAgICAgICAgZmlkID0gY3N0 YXRlLT5zdGF0ZV90YWJsZVtpXS5maWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZpZCA9IGNz dGF0ZS0+c3RhdGVfdGFibGVbaV0udmlkOwogICAgICAgICAgICAgICAgICAgICAgICAvL2twcmlu dGYoIiVzOiBmaWQ9JWQgdmlkPSVkXG4iLCBfX2Z1bmNfXywgZmlkLCB2aWQpOwogICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg aWYgKGZpZCA9PSBjZmlkICYmIHZpZCA9PSBjdmlkKSB7CiAgICAgICAgICAgICAgICBjcHVzcGVl ZCA9IGZyZXE7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKCX0KICAgICAgICAvKgogICAgICAg ICAqIFBoYXNlIDE6IFJhaXNlIGNvcmUgdm9sdGFnZSB0byByZXF1ZXN0ZWQgVklEIGlmIGZyZXF1 ZW5jeSBpcwogICAgICAgICAqIGdvaW5nIHVwLgogICAgICAgICAqLwogICAgICAgIHdoaWxlIChj dmlkID4gdmlkKSB7CiAgICAgICAgICAgICAgICB2YWwgPSBjdmlkIC0gKDEgPDwgY3N0YXRlLT5t dnMpOwogICAgICAgICAgICAgICAgV1JJVEVfRklEVklEKGNmaWQsICh2YWwgPiAwKSA/IHZhbCA6 IDAsIDFVTEwpOwogICAgICAgICAgICAgICAgUkVBRF9QRU5ESU5HX1dBSVQoc3RhdHVzKTsKICAg ICAgICAgICAgICAgIGN2aWQgPSBQTjhfU1RBX0NWSUQoc3RhdHVzKTsKICAgICAgICAgICAgICAg IENPVU5UX09GRl9WU1QoY3N0YXRlLT52c3QpOwogICAgICAgIH0KCiAgICAgICAgLyogLi4uIHRo ZW4gcmFpc2UgdG8gdm9sdGFnZSArIFJWTyAoaWYgcmVxdWlyZWQpICovCiAgICAgICAgZm9yIChy dm8gPSBjc3RhdGUtPnJ2bzsgcnZvID4gMCAmJiBjdmlkID4gMDsgLS1ydm8pIHsKICAgICAgICAg ICAgICAgIC8qIFhYWCBJdCdzIG5vdCBjbGVhciBmcm9tIHNwZWMgaWYgd2UgaGF2ZSB0byBkbyB0 aGF0CiAgICAgICAgICAgICAgICAgKiBpbiAwLjI1IHN0ZXAgb3IgaW4gTVZTLiAgVGhlcmVmb3Jl IGRvIGl0IGFzIGl0J3MgZG9uZQogICAgICAgICAgICAgICAgICogdW5kZXIgTGludXggKi8KICAg ICAgICAgICAgICAgIFdSSVRFX0ZJRFZJRChjZmlkLCBjdmlkIC0gMSwgMVVMTCk7CiAgICAgICAg ICAgICAgICBSRUFEX1BFTkRJTkdfV0FJVChzdGF0dXMpOwogICAgICAgICAgICAgICAgY3ZpZCA9 IFBOOF9TVEFfQ1ZJRChzdGF0dXMpOwogICAgICAgICAgICAgICAgQ09VTlRfT0ZGX1ZTVChjc3Rh dGUtPnZzdCk7CiAgICAgICAgfQoJIC8qIFBoYXNlIDI6IGNoYW5nZSB0byByZXF1ZXN0ZWQgY29y ZSBmcmVxdWVuY3kgKi8KICAgICAgICBpZiAoY2ZpZCAhPSBmaWQpIHsKICAgICAgICAgICAgICAg IHVpbnQzMl90IHZjb19maWQsIHZjb19jZmlkOwogICAgICAgICAgICAgICAgdmNvX2ZpZCA9IEZJ RF9UT19WQ09fRklEKGZpZCk7CiAgICAgICAgICAgICAgICB2Y29fY2ZpZCA9IEZJRF9UT19WQ09f RklEKGNmaWQpOwogICAgICAgICAgICAgICAgd2hpbGUgKGFicyh2Y29fZmlkIC0gdmNvX2NmaWQp ID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlkID4gY2ZpZCkgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZmlkID4gNikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGNmaWQgKyAyOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZhbCA9IEZJRF9UT19WQ09fRklEKGNmaWQpICsgMjsKICAgICAgICAgICAgICAgICAgICAgICAg fSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gY2ZpZCAtIDI7CiAg ICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX0ZJRFZJRCh2YWwsIGN2aWQsICh1aW50NjRfdClj c3RhdGUtPnBsbCAqIDEwMDAgLyA1KTsKICAgICAgICAgICAgICAgICAgICAgICAgUkVBRF9QRU5E SU5HX1dBSVQoc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2ZpZCA9IFBOOF9TVEFf Q0ZJRChzdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICBDT1VOVF9PRkZfSVJUKGNzdGF0 ZS0+aXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmNvX2NmaWQgPSBGSURfVE9fVkNPX0ZJ RChjZmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFdSSVRFX0ZJRFZJRChm aWQsIGN2aWQsICh1aW50NjRfdCkgY3N0YXRlLT5wbGwgKiAxMDAwIC8gNSk7CgkJUkVBRF9QRU5E SU5HX1dBSVQoc3RhdHVzKTsKICAgICAgICAgICAgICAgIGNmaWQgPSBQTjhfU1RBX0NGSUQoc3Rh dHVzKTsKICAgICAgICAgICAgICAgIENPVU5UX09GRl9JUlQoY3N0YXRlLT5pcnQpOwogICAgICAg IH0KCSAvKiBQaGFzZSAzOiBjaGFuZ2UgdG8gcmVxdWVzdGVkIHZvbHRhZ2UgKi8KICAgICAgICBp ZiAoY3ZpZCAhPSB2aWQpIHsKICAgICAgICAgICAgICAgIFdSSVRFX0ZJRFZJRChjZmlkLCB2aWQs IDFVTEwpOwogICAgICAgICAgICAgICAgUkVBRF9QRU5ESU5HX1dBSVQoc3RhdHVzKTsKICAgICAg ICAgICAgICAgIGN2aWQgPSBQTjhfU1RBX0NWSUQoc3RhdHVzKTsKICAgICAgICAgICAgICAgIENP VU5UX09GRl9WU1QoY3N0YXRlLT52c3QpOwogICAgICAgIH0KICAgICAgICBpZiAoY2ZpZCA9PSBm aWQgfHwgY3ZpZCA9PSB2aWQpCiAgICAgICAgICAgICAgICBjcHVzcGVlZCA9IGNzdGF0ZS0+c3Rh dGVfdGFibGVbaV0uZnJlcTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGludApwb3dlcm5v d19zeXNjdGxfaGVscGVyKFNZU0NUTF9IQU5ETEVSX0FSR1MpCnsKICAgICAgICBpbnQgICAgICBm cSwgZXJyID0gMDsKICAgICAgICBpbnQgICAgICBpOwogICAgICAgIHN0cnVjdCBrOHBub3dfY3B1 X3N0YXRlICpjc3RhdGU7CiAgICAgICAgc3RydWN0IGs4cG5vd19zdGF0ZSAqc3RhdGU7CiAgICAg ICAgY3N0YXRlID0gazhwbm93X2N1cnJlbnRfc3RhdGU7CiAgICAgICAgaWYgKHJlcS0+bmV3cHRy ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgIGVyciA9IFNZU0NUTF9JTihyZXEsICZmcSwgc2l6 ZW9mKGZxKSk7CiAgICAgICAgICAgICAgICBpZiAoZXJyKQogICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZXJyOwogICAgICAgICAgICAgICAgaWYgKGZxICE9IGNwdXNwZWVkKSB7CgkJCWZv ciAoaSA9IGNzdGF0ZS0+bl9zdGF0ZXM7IGkgPiAwOyBpLS0pIHsKCQkJCXN0YXRlID0gJmNzdGF0 ZS0+c3RhdGVfdGFibGVbaS0xXTsKCQkJCWlmKGZxID09IHN0YXRlLT5mcmVxKSB7CgkJCQkJazhf cG93ZXJub3dfc2V0cGVyZihmcSk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CiAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgICAgIGVyciA9IFNZU0NUTF9PVVQocmVxLCAmY3B1c3BlZWQs IHNpemVvZihjcHVzcGVlZCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZXJyOwp9CgpzdGF0 aWMgc3RydWN0IHN5c2N0bF9jdHhfbGlzdCAgIG1hY2hkZXBfcG93ZXJub3dfY3R4OwpzdGF0aWMg Y2hhciBmcmVxc19hdmFpbGFibGVbODBdOwoKc3RhdGljIGludApwb3dlcm5vd19pbml0KHZvaWQp CnsKICAgICAgICB1aW50NjRfdCBzdGF0dXM7CglzaXplX3QgbGVuLCBmcmVxX2xlbjsKICAgICAg ICB1aW50MzJfdCBtYXhmaWQsIG1heHZpZCwgaTsgCiAgICAgICAgc3RydWN0IGs4cG5vd19jcHVf c3RhdGUgKmNzdGF0ZTsKICAgICAgICBzdHJ1Y3Qgazhwbm93X3N0YXRlICpzdGF0ZTsKCWNvbnN0 IGNoYXIgKnRlY2huYW1lOwoJdV9pbnQzMl90IHJlZ3NbNF07CgljcHVzcGVlZCA9IDA7CglzdHJ1 Y3Qgc3lzY3RsX29pZCAgICAgICAqb2lkLCAqbGVhZjsKICAgICAgICBkb19jcHVpZCgweDgwMDAw MDAwLCByZWdzKTsKICAgICAgICBpZiAocmVnc1swXSA8IDB4ODAwMDAwMDcpCiAgICAgICAgICAg ICAgICByZXR1cm4gMTsKICAgICAgICBkb19jcHVpZCgweDgwMDAwMDA3LCByZWdzKTsKICAgICAg ICBpZiAoIShyZWdzWzNdICYgQU1EX1BOX0ZJRF9WSUQpKQogICAgICAgICAgICAgICAgcmV0dXJu IDI7CiAgICAgICAgLyogRXh0ZW5kZWQgQ1BVSUQgc2lnbmF0dXJlIHZhbHVlICovCiAgICAgICAg ZG9fY3B1aWQoMHg4MDAwMDAwMSwgcmVncyk7CiAgICAgICAgY3N0YXRlID0ga21hbGxvYyhzaXpl b2Yoc3RydWN0IGs4cG5vd19jcHVfc3RhdGUpLCBNX0RFVkJVRiwgTV9XQUlUT0spOwogICAgICAg IGNzdGF0ZS0+bl9zdGF0ZXMgPSAwOwoKICAgICAgICBzdGF0dXMgPSByZG1zcihNU1JfQU1ESzdf RklEVklEX1NUQVRVUyk7CiAgICAgICAgbWF4ZmlkID0gUE44X1NUQV9NRklEKHN0YXR1cyk7CiAg ICAgICAgbWF4dmlkID0gUE44X1NUQV9NVklEKHN0YXR1cyk7CgogICAgICAgIGlmIChQTjhfU1RB X1NGSUQoc3RhdHVzKSAhPSBQTjhfU1RBX01GSUQoc3RhdHVzKSkKICAgICAgICAgICAgICAgIHRl Y2huYW1lID0gIlBvd2VyTm93ISI7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgdGVjaG5h bWUgPSAiQ29vbGBuJ1F1aWV0IjsKCglrOHBub3dfc3RhdGVzKGNzdGF0ZSwgcmVnc1swXSwgbWF4 ZmlkLCBtYXh2aWQpOwoKICAgICAgICBsZW4gPSAwOwogICAgICAgIGlmIChjc3RhdGUtPm5fc3Rh dGVzKSB7CgkJZnJlcV9sZW4gPSBjc3RhdGUtPm5fc3RhdGVzICogKHNpemVvZigiOTk5OSAiKS0x KSArIDE7CiAgICAgICAgICAgICAgICBrcHJpbnRmKCIlcyBzcGVlZHM6IiwKICAgICAgICAgICAg ICAgICAgICB0ZWNobmFtZSk7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSBjc3RhdGUtPm5fc3Rh dGVzOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gJmNzdGF0 ZS0+c3RhdGVfdGFibGVbaS0xXTsKICAgICAgICAgICAgICAgICAgICAgICAga3ByaW50ZigiICVk Iiwgc3RhdGUtPmZyZXEpOwogICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0ga3NucHJpbnRm KGZyZXFzX2F2YWlsYWJsZSArIGxlbiwgZnJlcV9sZW4gLSBsZW4sICIlZCVzIiwKCQkJICAgIHN0 YXRlLT5mcmVxLAoJCQkgICAgaSA+IDEgPyAiICIgOiAiIik7CgogICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAga3ByaW50ZigiIE1IelxuIik7CiAgICAgICAgICAgICAgICBrOHBub3df Y3VycmVudF9zdGF0ZSA9IGNzdGF0ZTsKCQlrOF9wb3dlcm5vd19zZXRwZXJmKGNzdGF0ZS0+c3Rh dGVfdGFibGVbMF0uZnJlcSk7CiAgICAgICAgfSBlbHNlIHsKCQlrZnJlZShjc3RhdGUsIE1fREVW QlVGKTsKCQlrcHJpbnRmKCJwb3dlcm5vdzogbm8gcG93ZXIgc3RhdGVzIGZvdW5kXG4iKTsKCQly ZXR1cm4gMzsKCX0KCgkgLyoKICAgICAgICAgKiBTZXR1cCB0aGUgc3lzY3RsIHN1Yi10cmVlIG1h Y2hkZXAucG93ZXJub3cuKgogICAgICAgICAqLwogICAgICAgIG9pZCA9IFNZU0NUTF9BRERfTk9E RSgmbWFjaGRlcF9wb3dlcm5vd19jdHgsCiAgICAgICAgICAgIFNZU0NUTF9TVEFUSUNfQ0hJTERS RU4oX21hY2hkZXApLCBPSURfQVVUTywgInBvd2Vybm93IiwKICAgICAgICAgICAgQ1RMRkxBR19S RCwgTlVMTCwgIiIpOwogICAgICAgIGlmIChvaWQgPT0gTlVMTCkKICAgICAgICAgICAgICAgIHJl dHVybihFT1BOT1RTVVBQKTsKICAgICAgICBvaWQgPSBTWVNDVExfQUREX05PREUoJm1hY2hkZXBf cG93ZXJub3dfY3R4LCBTWVNDVExfQ0hJTERSRU4ob2lkKSwKICAgICAgICAgICAgT0lEX0FVVE8s ICJmcmVxdWVuY3kiLCBDVExGTEFHX1JELCBOVUxMLCAiIik7CiAgICAgICAgaWYgKG9pZCA9PSBO VUxMKQogICAgICAgICAgICAgICAgcmV0dXJuKEVPUE5PVFNVUFApOwogICAgICAgIGxlYWYgPSBT WVNDVExfQUREX1BST0MoJm1hY2hkZXBfcG93ZXJub3dfY3R4LCBTWVNDVExfQ0hJTERSRU4ob2lk KSwKICAgICAgICAgICAgT0lEX0FVVE8sICJ0YXJnZXQiLCBDVExUWVBFX0lOVCB8IENUTEZMQUdf UlcsIE5VTEwsIDAsCiAgICAgICAgICAgIHBvd2Vybm93X3N5c2N0bF9oZWxwZXIsICJJIiwKICAg ICAgICAgICAgIlRhcmdldCBDUFUgZnJlcXVlbmN5IGZvciBBTUQgUG93ZXJOb3chIik7CiAgICAg ICAgaWYgKGxlYWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgIHJldHVybihFT1BOT1RTVVBQKTsK ICAgICAgICBsZWFmID0gU1lTQ1RMX0FERF9QUk9DKCZtYWNoZGVwX3Bvd2Vybm93X2N0eCwgU1lT Q1RMX0NISUxEUkVOKG9pZCksCiAgICAgICAgICAgIE9JRF9BVVRPLCAiY3VycmVudCIsIENUTFRZ UEVfSU5UIHwgQ1RMRkxBR19SRCwgTlVMTCwgMCwKICAgICAgICAgICAgcG93ZXJub3dfc3lzY3Rs X2hlbHBlciwgIkkiLAogICAgICAgICAgICAiQ3VycmVudCBDUFUgZnJlcXVlbmN5IGZvciBBTUQg UG93ZXJOb3chIik7CiAgICAgICAgaWYgKGxlYWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgIHJl dHVybihFT1BOT1RTVVBQKTsKICAgICAgICBsZWFmID0gU1lTQ1RMX0FERF9TVFJJTkcoJm1hY2hk ZXBfcG93ZXJub3dfY3R4LCBTWVNDVExfQ0hJTERSRU4ob2lkKSwKICAgICAgICAgICAgT0lEX0FV VE8sICJhdmFpbGFibGUiLCBDVExGTEFHX1JELCBmcmVxc19hdmFpbGFibGUsCiAgICAgICAgICAg IHNpemVvZihmcmVxc19hdmFpbGFibGUpLAogICAgICAgICAgICAiQ1BVIGZyZXF1ZW5jaWVzIHN1 cHBvcnRlZCBieSBBTUQgUG93ZXJOb3chIik7CiAgICAgICAgaWYgKGxlYWYgPT0gTlVMTCkKICAg ICAgICAgICAgICAgIHJldHVybihFT1BOT1RTVVBQKTsKCXJldHVybigwKTsKfQoKc3RhdGljIGlu dApwb3dlcm5vd19tb2Rldmgoc3RydWN0IG1vZHVsZSAqbSwgaW50IHdoYXQsIHZvaWQgKmFyZyBf X3VudXNlZCkgCnsKCWludCBlcnJvcjsKCglzd2l0Y2god2hhdCkgewoJY2FzZSBNT0RfTE9BRDoK CQllcnJvciA9IHN5c2N0bF9jdHhfaW5pdCgmbWFjaGRlcF9wb3dlcm5vd19jdHgpOwogICAgICAg ICAgICAgICAgaWYgKGVycm9yICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJ CWVycm9yID0gcG93ZXJub3dfaW5pdCgpOwoJCWJyZWFrOwoJY2FzZSBNT0RfVU5MT0FEOgoJCWlm KGs4cG5vd19jdXJyZW50X3N0YXRlKQoJCQlrZnJlZShrOHBub3dfY3VycmVudF9zdGF0ZSwgTV9E RVZCVUYpOwoJCWVycm9yID0gc3lzY3RsX2N0eF9mcmVlKCZtYWNoZGVwX3Bvd2Vybm93X2N0eCk7 CgkJYnJlYWs7CglkZWZhdWx0OgoJCWVycm9yID0gRUlOVkFMOwoJCWJyZWFrOwoJfQoJcmV0dXJu KGVycm9yKTsKfQpzdGF0aWMgbW9kdWxlZGF0YV90IHBvd2Vybm93X21vZCA9IHsKCSJwb3dlcm5v dyIsCglwb3dlcm5vd19tb2RldmgsCglOVUxMLAp9OwoKREVDTEFSRV9NT0RVTEUocG93ZXJub3cs IHBvd2Vybm93X21vZCwgU0lfQk9PVDJfS0xELCBTSV9PUkRFUl9BTlkpOwo= --216.240.41.26.80.21659.1241991515.051.1--