--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--