Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Jul 2016 06:11:03 +0000 (UTC)
From:      Dan Nelson <dnelson_1901@yahoo.com>
To:        "freebsd-current@freebsd.org" <freebsd-current@freebsd.org>
Subject:   AR8327 Etherswitch led control patch
Message-ID:  <315070490.8622006.1469859063414.JavaMail.yahoo@mail.yahoo.com>
References:  <315070490.8622006.1469859063414.JavaMail.yahoo.ref@mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_8622005_1358949567.1469859063414
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

I got a TP-Link WDR4300 recently, flashed it to FreeBSD, and decided 
that I needed to be able to control all the LEDs on the front :)  As a 
start, attached is a patch that allows you to manage the five LEDs 
connected to the Atheros AR8327 switch chip it uses.  It extends the 
etherswitch API, allowing up to three LEDs per port to be set to on, 
off, cyclic blink, or default (flash on activity for the 8327).  I added 
an "led" subcommand to the etherswitchcfg tool for full control, and 
also added led(4) nodes for basic on/off control.  This particular 
switch seems to only notice changes to the LED registers twice per 
second, so it's no good for smooth animation, but it works just fine as 
a 5-bit progress bar or error display.


This does break ABI compatibility of the etherswitch ioctl because of 
new elements in the structure.  The code should be generic enough to 
apply easily to other etherswitch chips.

Comments and suggestions welcome.

-- 

Dan Nelson
dnelson_1901@yahoo.com

------=_Part_8622005_1358949567.1469859063414
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=etherswitch.diff
Content-ID: <70a48cda-e56d-13b2-1a5b-1086bb66ee24@yahoo.com>

SW5kZXg6IHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuOAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzYmluL2V0aGVyc3dpdGNoY2ZnL2V0aGVyc3dpdGNoY2ZnLjgJKHJldmlzaW9uIDMwMzUzOCkK
KysrIHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuOAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMjYgKzMzLDI2IEBACiAuU2ggU1lOT1BTSVMKIC5ObQogLk9wIEZsICJmIGNvbnRyb2wg
ZmlsZSIKLS5BciBpbmZvCisuQ20gaW5mbwogLk5tCiAuT3AgRmwgImYgY29udHJvbCBmaWxlIgot
LkFyIGNvbmZpZworLkNtIGNvbmZpZwogLkFyIGNvbW1hbmQgcGFyYW1ldGVyCiAuTm0KIC5PcCBG
bCAiZiBjb250cm9sIGZpbGUiCi0uQXIgcGh5CisuQ20gcGh5CiAuQXIgcGh5LnJlZ2lzdGVyWz12
YWx1ZV0KIC5ObQogLk9wIEZsICJmIGNvbnRyb2wgZmlsZSIKLS5BciBwb3J0JWQKKy5DbSBwb3J0
JWQKIC5BciBbZmxhZ3NdIGNvbW1hbmQgcGFyYW1ldGVyCiAuTm0KIC5PcCBGbCAiZiBjb250cm9s
IGZpbGUiCi0uQXIgcmVnCisuQ20gcmVnCiAuQXIgcmVnaXN0ZXJbPXZhbHVlXQogLk5tCiAuT3Ag
RmwgImYgY29udHJvbCBmaWxlIgotLkFyIHZsYW5ncm91cCVkCisuQ20gdmxhbmdyb3VwJWQKIC5B
ciBjb21tYW5kIHBhcmFtZXRlcgogLlNoIERFU0NSSVBUSU9OCiBUaGUKQEAgLTgxLDggKzgxLDgg
QEAgVGhlIGNvbmZpZyBjb21tYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBnbG9iYWwgc3dpdGMKIHBh
cmFtZXRlcnMuCiBJdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CiAuUHAKLS5CbCAt
dGFnIC13aWR0aCAiLkFyIHZsYW5fbW9kZSBtb2RlIiAtY29tcGFjdAotLkl0IEFyIHZsYW5fbW9k
ZSBtb2RlCisuQmwgLXRhZyAtd2lkdGggIi5DbSB2bGFuX21vZGUgbW9kZSIgLWNvbXBhY3QKKy5J
dCBDbSB2bGFuX21vZGUgQXIgbW9kZQogU2V0cyB0aGUgc3dpdGNoIFZMQU4gbW9kZSAoZGVwZW5k
cyBvbiB0aGUgaGFyZHdhcmUpLgogLkVsCiAuU3MgcGh5CkBAIC0xMDMsNTEgKzEwMyw2MCBAQCBU
aGUgcG9ydCBjb21tYW5kIHNlbGVjdHMgb25lIG9mIHRoZSBwb3J0cyBvZiB0aGUgcwogSXQgc3Vw
cG9ydHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKIC5QcAogLkJsIC10YWcgLXdpZHRoICIuQXIg
cHZpZCBudW1iZXIiIC1jb21wYWN0Ci0uSXQgQXIgcHZpZCBudW1iZXIKKy5JdCBDbSBwdmlkIEFy
IG51bWJlcgogU2V0cyB0aGUgZGVmYXVsdCBwb3J0IFZJRCB0aGF0IGlzIHVzZWQgdG8gcHJvY2Vz
cyBpbmNvbWluZyBmcmFtZXMgdGhhdCBhcmUgbm90IHRhZ2dlZC4KLS5JdCBBciBtZWRpYSBtZWRp
YXNwZWMKKy5JdCBDbSBtZWRpYSBBciBtZWRpYXNwZWMKIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwg
bWVkaWEgY29uZmlndXJhdGlvbiB0byBiZSBjb25maWd1cmVkIGZvciBhIHBvcnQuCi0uSXQgQXIg
bWVkaWFvcHQgbWVkaWFvcHRpb24KKy5JdCBDbSBtZWRpYW9wdCBBciBtZWRpYW9wdGlvbgogU3Bl
Y2lmaWVzIGEgbGlzdCBvZiBtZWRpYSBvcHRpb25zIGZvciBhIHBvcnQuCiBTZWUKIC5YciBpZmNv
bmZpZyA4CiBmb3IgZGV0YWlscyBvbgotLkFyIG1lZGlhCisuQ20gbWVkaWEKIGFuZAotLkFyIG1l
ZGlhb3B0IC4KKy5DbSBtZWRpYW9wdCAuCisuSXQgQ20gbGVkIEFyIG51bWJlciBzdHlsZQorU2V0
cyB0aGUgZGlzcGxheSBzdHlsZSBmb3IgYSBnaXZlbiBMRUQuICBBdmFpbGFibGUgc3R5bGVzIGFy
ZTogCisuQ20gZGVmYXVsdCAKKyh1c3VhbGx5IGZsYXNoIG9uIGFjdGl2aXR5KSwKKy5DbSBvbiAs
IAorLkNtIG9mZiAsIAorYW5kIAorLkNtIGJsaW5rIC4KK05vdCBhbGwgc3dpdGNoZXMgd2lsbCBz
dXBwb3J0IGFsbCBzdHlsZXMuCiAuRWwKIC5QcAogQW5kIHRoZSBmb2xsb3dpbmcgZmxhZ3MgKHBs
ZWFzZSBub3RlIHRoYXQgbm90IGFsbCBmbGFncwogYXJlIHN1cHBvcnRlZCBieSBhbGwgc3dpdGNo
IGRyaXZlcnMpOgogLlBwCi0uQmwgLXRhZyAtd2lkdGggIi5BciBhZGR0YWciIC1jb21wYWN0Ci0u
SXQgQXIgYWRkdGFnCisuQmwgLXRhZyAtd2lkdGggIi5GbCBhZGR0YWciIC1jb21wYWN0CisuSXQg
Q20gYWRkdGFnCiBBZGQgVkxBTiB0YWcgdG8gZWFjaCBwYWNrZXQgc2VudCBieSB0aGUgcG9ydC4K
LS5JdCBBciAtYWRkdGFnCisuSXQgRmwgYWRkdGFnCiBEaXNhYmxlIHRoZSBhZGQgVkxBTiB0YWcg
b3B0aW9uLgotLkl0IEFyIHN0cmlwdGFnCisuSXQgQ20gc3RyaXB0YWcKIFN0cmlwIHRoZSBWTEFO
IHRhZ3MgZnJvbSB0aGUgcGFja2V0cyBzZW50IGJ5IHRoZSBwb3J0LgotLkl0IEFyIC1zdHJpcHRh
ZworLkl0IEZsIHN0cmlwdGFnCiBEaXNhYmxlIHRoZSBzdHJpcCBWTEFOIHRhZyBvcHRpb24uCi0u
SXQgQXIgZmlyc3Rsb2NrCisuSXQgQ20gZmlyc3Rsb2NrCiBUaGlzIG9wdGlvbnMgbWFrZXMgdGhl
IHN3aXRjaCBwb3J0IGxvY2sgb24gdGhlIGZpcnN0IE1BQyBhZGRyZXNzIGl0IHNlZXMuCiBBZnRl
ciB0aGF0LCB1c3VhbGx5IHlvdSBuZWVkIHRvIHJlc2V0IHRoZSBzd2l0Y2ggdG8gbGVhcm4gZGlm
ZmVyZW50CiBNQUMgYWRkcmVzc2VzLgotLkl0IEFyIC1maXJzdGxvY2sKKy5JdCBGbCBmaXJzdGxv
Y2sKIERpc2FibGUgdGhlIGZpcnN0IGxvY2sgb3B0aW9uLgogTm90ZSB0aGF0IHNvbWV0aW1lcyB5
b3UgbmVlZCB0byByZXNldCB0aGUKIHN3aXRjaCB0byByZWFsbHkgZGlzYWJsZSB0aGlzIG9wdGlv
bi4KLS5JdCBBciBkcm9wdW50YWdnZWQKKy5JdCBDbSBkcm9wdW50YWdnZWQKIERyb3AgcGFja2V0
cyB3aXRob3V0IGEgVkxBTiB0YWcuCi0uSXQgQXIgLWRyb3B1bnRhZ2dlZAorLkl0IEZsIGRyb3B1
bnRhZ2dlZAogRGlzYWJsZSB0aGUgZHJvcCB1bnRhZ2dlZCBwYWNrZXRzIG9wdGlvbi4KLS5JdCBB
ciBkb3VibGV0YWcKKy5JdCBDbSBkb3VibGV0YWcKIEVuYWJsZSBRaW5RIGZvciB0aGUgcG9ydC4K
LS5JdCBBciAtZG91YmxldGFnCisuSXQgRmwgZG91YmxldGFnCiBEaXNhYmxlIFFpblEgZm9yIHRo
ZSBwb3J0LgotLkl0IEFyIGluZ3Jlc3MKKy5JdCBDbSBpbmdyZXNzCiBFbmFibGUgdGhlIGluZ3Jl
c3MgZmlsdGVyIG9uIHRoZSBwb3J0LgotLkl0IEFyIC1pbmdyZXNzCisuSXQgRmwgaW5ncmVzcwog
RGlzYWJsZSB0aGUgaW5ncmVzcyBmaWx0ZXIuCiAuRWwKIC5TcyByZWcKQEAgLTE1NiwxNCArMTY1
LDE0IEBAIFRoZSByZWcgY29tbWFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVycyBv
CiBUaGUgdmxhbmdyb3VwIGNvbW1hbmQgc2VsZWN0cyBvbmUgb2YgdGhlIFZMQU4gZ3JvdXBzIGZv
ciBjb25maWd1cmF0aW9uLgogSXQgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKIC5Q
cAotLkJsIC10YWcgLXdpZHRoICIuQXIgdmxhbmdyb3VwIiAtY29tcGFjdAotLkl0IEFyIHZsYW4g
VklECisuQmwgLXRhZyAtd2lkdGggIi5DbSBtZW1iZXJzIiAtY29tcGFjdAorLkl0IENtIHZsYW4g
QXIgVklECiBTZXRzIHRoZSBWTEFOIElEICg4MDIuMXEgVklEKSBmb3IgdGhpcyBWTEFOIGdyb3Vw
LgogRnJhbWVzIHRyYW5zbWl0dGVkIG9uIHRhZ2dlZCBtZW1iZXIgcG9ydHMgb2YgdGhpcyBncm91
cCB3aWxsIGJlIHRhZ2dlZAogd2l0aCB0aGlzIFZJRC4KIEluY29taW5nIGZyYW1lcyBjYXJyeWlu
ZyB0aGlzIHRhZyB3aWxsIGJlIGZvcndhcmRlZCBhY2NvcmRpbmcgdG8gdGhlCiBjb25maWd1cmF0
aW9uIG9mIHRoaXMgVkxBTiBncm91cC4KLS5JdCBBciBtZW1iZXJzIHBvcnQsLi4uCisuSXQgQ20g
bWVtYmVycyBBciBwb3J0LC4uLgogQ29uZmlndXJlcyB3aGljaCBwb3J0cyBhcmUgdG8gYmUgYSBt
ZW1iZXIgb2YgdGhpcyBWTEFOIGdyb3VwLgogVGhlIHBvcnQgbnVtYmVycyBhcmUgZ2l2ZW4gYXMg
YSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KIEVhY2ggcG9ydCBjYW4gb3B0aW9uYWxseSBiZSBmb2xs
b3dlZCBieQpJbmRleDogc2Jpbi9ldGhlcnN3aXRjaGNmZy9ldGhlcnN3aXRjaGNmZy5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuYwkocmV2aXNpb24g
MzAzNTM4KQorKysgc2Jpbi9ldGhlcnN3aXRjaGNmZy9ldGhlcnN3aXRjaGNmZy5jCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBjbWRzIHsKIH07CiBzdGF0aWMgc3RydWN0
IGNtZHMgY21kc1tdOwogCisvKiBNdXN0IG1hdGNoIHRoZSBFVEhFUlNXSVRDSF9QT1JUX0xFRF8q
IGVudW0gb3JkZXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpsZWRzdHlsZXNbXSA9IHsgImRlZmF1
bHQiLCAib24iLCAib2ZmIiwgImJsaW5rIiwgTlVMTCB9OwogCiAvKgogICogUHJpbnQgYSB2YWx1
ZSBhIGxhIHRoZSAlYiBmb3JtYXQgb2YgdGhlIGtlcm5lbCdzIHByaW50Zi4KQEAgLTI3MCw2ICsy
NzIsMzggQEAgc2V0X3BvcnRfbWVkaWFvcHQoc3RydWN0IGNmZyAqY2ZnLCBjaGFyICphcmd2W10p
CiB9CiAKIHN0YXRpYyB2b2lkCitzZXRfcG9ydF9sZWQoc3RydWN0IGNmZyAqY2ZnLCBjaGFyICph
cmd2W10pCit7CisJZXRoZXJzd2l0Y2hfcG9ydF90IHA7CisJaW50IGxlZDsKKwlpbnQgaTsKKwkK
KwliemVybygmcCwgc2l6ZW9mKHApKTsKKwlwLmVzX3BvcnQgPSBjZmctPnVuaXQ7CisJaWYgKGlv
Y3RsKGNmZy0+ZmQsIElPRVRIRVJTV0lUQ0hHRVRQT1JULCAmcCkgIT0gMCkKKwkJZXJyKEVYX09T
RVJSLCAiaW9jdGwoSU9FVEhFUlNXSVRDSEdFVFBPUlQpIik7CisKKwlsZWQgPSBzdHJ0b2woYXJn
dlsxXSwgTlVMTCwgMCk7CisJaWYgKGxlZCA8IDEgfHwgbGVkID4gcC5lc19ubGVkcykKKwkJZXJy
eChFWF9VU0FHRSwgImludmFsaWQgbGVkIG51bWJlciAlczsgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k
ICVkIiwKKwkJCWFyZ3ZbMV0sIHAuZXNfbmxlZHMpOworCisJbGVkLS07CisKKwlmb3IgKGk9MDsg
bGVkc3R5bGVzW2ldICE9IE5VTEw7IGkrKykgeworCQlpZiAoc3RyY21wKGFyZ3ZbMl0sIGxlZHN0
eWxlc1tpXSkgPT0gMCkgeworCQkJcC5lc19sZWRbbGVkXSA9IGk7CisJCQlicmVhazsKKwkJfQor
CX0gCisJaWYgKGxlZHN0eWxlc1tpXSA9PSBOVUxMKQorCQllcnJ4KEVYX1VTQUdFLCAiaW52YWxp
ZCBsZWQgc3R5bGUgXCIlc1wiIiwgYXJndlsyXSk7CisKKwlpZiAoaW9jdGwoY2ZnLT5mZCwgSU9F
VEhFUlNXSVRDSFNFVFBPUlQsICZwKSAhPSAwKQorCQllcnIoRVhfT1NFUlIsICJpb2N0bChJT0VU
SEVSU1dJVENIU0VUUE9SVCkiKTsKK30KKworc3RhdGljIHZvaWQKIHNldF92bGFuZ3JvdXBfdmlk
KHN0cnVjdCBjZmcgKmNmZywgY2hhciAqYXJndltdKQogewogCWludCB2OwpAQCAtMzM0LDEwICsz
NjgsMTAgQEAgc2V0X3JlZ2lzdGVyKHN0cnVjdCBjZmcgKmNmZywgY2hhciAqYXJnKQogCWlmIChj
PT1hcmcpCiAJCXJldHVybiAoMSk7CiAJaWYgKCpjID09ICc9JykgewotCQl2ID0gc3RydG9sKGMr
MSwgTlVMTCwgMCk7CisJCXYgPSBzdHJ0b3VsKGMrMSwgTlVMTCwgMCk7CiAJCXdyaXRlX3JlZ2lz
dGVyKGNmZywgYSwgdik7CiAJfQotCXByaW50ZigiXHRyZWcgMHglMDR4PTB4JTA0eFxuIiwgYSwg
cmVhZF9yZWdpc3RlcihjZmcsIGEpKTsKKwlwcmludGYoIlx0cmVnIDB4JTA0eD0weCUwOHhcbiIs
IGEsIHJlYWRfcmVnaXN0ZXIoY2ZnLCBhKSk7CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMzU3LDcg
KzM5MSw3IEBAIHNldF9waHlyZWdpc3RlcihzdHJ1Y3QgY2ZnICpjZmcsIGNoYXIgKmFyZykKIAlp
ZiAoZCA9PSBjKQogCQlyZXR1cm4gKDEpOwogCWlmICgqYyA9PSAnPScpIHsKLQkJdmFsID0gc3Ry
dG9sKGMrMSwgTlVMTCwgMCk7CisJCXZhbCA9IHN0cnRvdWwoYysxLCBOVUxMLCAwKTsKIAkJd3Jp
dGVfcGh5cmVnaXN0ZXIoY2ZnLCBwaHksIHJlZywgdmFsKTsKIAl9CiAJcHJpbnRmKCJcdHJlZyAl
ZC4weCUwMng9MHglMDR4XG4iLCBwaHksIHJlZywgcmVhZF9waHlyZWdpc3RlcihjZmcsIHBoeSwg
cmVnKSk7CkBAIC00NDIsNiArNDc2LDEzIEBAIHByaW50X3BvcnQoc3RydWN0IGNmZyAqY2ZnLCBp
bnQgcG9ydCkKIAkJcHJpbnRmKCJcdHB2aWQ6ICVkXG4iLCBwLmVzX3B2aWQpOwogCXByaW50Yigi
XHRmbGFncyIsIHAuZXNfZmxhZ3MsIEVUSEVSU1dJVENIX1BPUlRfRkxBR1NfQklUUyk7CiAJcHJp
bnRmKCJcbiIpOworCWlmIChwLmVzX25sZWRzKSB7CisJCXByaW50ZigiXHRsZWQ6ICIpOworCQlm
b3IgKGkgPSAwOyBpIDwgcC5lc19ubGVkczsgaSsrKSB7CisJCQlwcmludGYoIiVkOiVzJXMiLCBp
KzEsIGxlZHN0eWxlc1twLmVzX2xlZFtpXV0sIChpPT1wLmVzX25sZWRzLTEpPyIiOiIgIik7CisJ
CX0KKwkJcHJpbnRmKCJcbiIpOworCX0KIAlwcmludGYoIlx0bWVkaWE6ICIpOwogCXByaW50X21l
ZGlhX3dvcmQocC5lc19pZm1yLmlmbV9jdXJyZW50LCAxKTsKIAlpZiAocC5lc19pZm1yLmlmbV9h
Y3RpdmUgIT0gcC5lc19pZm1yLmlmbV9jdXJyZW50KSB7CkBAIC01NDAsNyArNTgxLDcgQEAgdXNh
Z2Uoc3RydWN0IGNmZyAqY2ZnIF9fdW51c2VkLCBjaGFyICphcmd2W10gX191bnUKIAkgICAgInBo
eS5yZWdpc3Rlcls9dmFsdWVdXG4iKTsKIAlmcHJpbnRmKHN0ZGVyciwgIlx0ZXRoZXJzd2l0Y2hj
ZmcgWy1mIGNvbnRyb2wgZmlsZV0gcG9ydFggIgogCSAgICAiW2ZsYWdzXSBjb21tYW5kIHBhcmFt
ZXRlclxuIik7Ci0JZnByaW50ZihzdGRlcnIsICJcdFx0cG9ydCBjb21tYW5kczogcHZpZCwgbWVk
aWEsIG1lZGlhb3B0XG4iKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlx0XHRwb3J0IGNvbW1hbmRzOiBw
dmlkLCBtZWRpYSwgbWVkaWFvcHQsIGxlZFxuIik7CiAJZnByaW50ZihzdGRlcnIsICJcdGV0aGVy
c3dpdGNoY2ZnIFstZiBjb250cm9sIGZpbGVdIHJlZyAiCiAJICAgICJyZWdpc3Rlcls9dmFsdWVd
XG4iKTsKIAlmcHJpbnRmKHN0ZGVyciwgIlx0ZXRoZXJzd2l0Y2hjZmcgWy1mIGNvbnRyb2wgZmls
ZV0gdmxhbmdyb3VwWCAiCkBAIC02NTEsNyArNjkyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogCQkJZm9yKGk9MDsgY21kc1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogCQkJCWlm
IChjZmcubW9kZSA9PSBjbWRzW2ldLm1vZGUgJiYgc3RyY21wKGFyZ3ZbMF0sIGNtZHNbaV0ubmFt
ZSkgPT0gMCkgewogCQkJCQlpZiAoYXJnYyA8IChjbWRzW2ldLmFyZ3MgKyAxKSkgewotCQkJCQkJ
cHJpbnRmKCIlcyBuZWVkcyBhbiBhcmd1bWVudFxuIiwgY21kc1tpXS5uYW1lKTsKKwkJCQkJCXBy
aW50ZigiJXMgbmVlZHMgJWQgYXJndW1lbnQlc1xuIiwgY21kc1tpXS5uYW1lLCBjbWRzW2ldLmFy
Z3MsIChjbWRzW2ldLmFyZ3M9PTEpPyIiOiIsIik7CiAJCQkJCQlicmVhazsKIAkJCQkJfQogCQkJ
CQkoY21kc1tpXS5mKSgmY2ZnLCBhcmd2KTsKQEAgLTY5MSw2ICs3MzIsNyBAQCBzdGF0aWMgc3Ry
dWN0IGNtZHMgY21kc1tdID0gewogCXsgTU9ERV9QT1JULCAicHZpZCIsIDEsIHNldF9wb3J0X3Zp
ZCB9LAogCXsgTU9ERV9QT1JULCAibWVkaWEiLCAxLCBzZXRfcG9ydF9tZWRpYSB9LAogCXsgTU9E
RV9QT1JULCAibWVkaWFvcHQiLCAxLCBzZXRfcG9ydF9tZWRpYW9wdCB9LAorCXsgTU9ERV9QT1JU
LCAibGVkIiwgMiwgc2V0X3BvcnRfbGVkIH0sCiAJeyBNT0RFX1BPUlQsICJhZGR0YWciLCAwLCBz
ZXRfcG9ydF9mbGFnIH0sCiAJeyBNT0RFX1BPUlQsICItYWRkdGFnIiwgMCwgc2V0X3BvcnRfZmxh
ZyB9LAogCXsgTU9ERV9QT1JULCAiaW5ncmVzcyIsIDAsIHNldF9wb3J0X2ZsYWcgfSwKSW5kZXg6
IHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2guYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
eXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dpdGNoLmMJKHJldmlzaW9uIDMwMzUzOCkK
KysrIHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2guYwkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksOCBAQAogI2luY2x1ZGUgPGRldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9h
cnN3aXRjaF84MzI3Lmg+CiAjaW5jbHVkZSA8ZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dp
dGNoXzkzNDAuaD4KIAorI2luY2x1ZGUgPGRldi9sZWQvbGVkLmg+CisKICNpbmNsdWRlICJtZGlv
X2lmLmgiCiAjaW5jbHVkZSAibWlpYnVzX2lmLmgiCiAjaW5jbHVkZSAiZXRoZXJzd2l0Y2hfaWYu
aCIKQEAgLTc3LDYgKzc5LDE0IEBACiBzdGF0aWMgU1lTQ1RMX05PREUoX2RlYnVnLCBPSURfQVVU
TywgYXJzd2l0Y2gsIENUTEZMQUdfUkQsIDAsICJhcnN3aXRjaCIpOwogI2VuZGlmCiAKKy8qIE1h
cCBFVEhFUlNXSVRDSF9QT1JUX0xFRF8qIHRvIEF0aGVyb3MgcGF0dGVybiBjb2RlcyAqLworc3Rh
dGljIGludCBsZWRfcGF0dGVybl90YWJsZVtdID0geyAKKwlbRVRIRVJTV0lUQ0hfUE9SVF9MRURf
REVGQVVMVF0gPSAweDMsIAorCVtFVEhFUlNXSVRDSF9QT1JUX0xFRF9PTl0gPSAweDIsIAorCVtF
VEhFUlNXSVRDSF9QT1JUX0xFRF9PRkZdID0gMHgwLCAKKwlbRVRIRVJTV0lUQ0hfUE9SVF9MRURf
QkxJTktdID0gMHgxIAorfTsKKwogc3RhdGljIGlubGluZSBpbnQgYXJzd2l0Y2hfcG9ydGZvcnBo
eShpbnQgcGh5KTsKIHN0YXRpYyB2b2lkIGFyc3dpdGNoX3RpY2sodm9pZCAqYXJnKTsKIHN0YXRp
YyBpbnQgYXJzd2l0Y2hfaWZtZWRpYV91cGQoc3RydWN0IGlmbmV0ICopOwpAQCAtODUsNiArOTUs
OSBAQCBzdGF0aWMgaW50IGFyOHh4eF9wb3J0X3ZsYW5fc2V0dXAoc3RydWN0IGFyc3dpdGNoXwog
ICAgIGV0aGVyc3dpdGNoX3BvcnRfdCAqcCk7CiBzdGF0aWMgaW50IGFyOHh4eF9wb3J0X3ZsYW5f
Z2V0KHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2MsCiAgICAgZXRoZXJzd2l0Y2hfcG9ydF90ICpw
KTsKK3N0YXRpYyBpbnQgYXJzd2l0Y2hfc2V0bGVkKHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2Ms
IGludCBwaHksIGludCBsZWQsCisgICAgaW50IHN0eWxlKTsKK3N0YXRpYyB2b2lkIGFyc3dpdGNo
X2xlZF9mdW5jKHN0cnVjdCBhcnN3aXRjaF9kZXZfbGVkICpkZXZfbGVkLCBpbnQgb25vZmYpOwog
CiBzdGF0aWMgaW50CiBhcnN3aXRjaF9wcm9iZShkZXZpY2VfdCBkZXYpCkBAIC0xODgsOSArMjAx
LDI2IEBAIGFyc3dpdGNoX2F0dGFjaF9waHlzKHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2MpCiAJ
CQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCiAJCQkgICAgImF0dGFjaGluZyBQSFkgJWQgZmFp
bGVkXG4iLAogCQkJICAgIHBoeSk7CisJCQlyZXR1cm4gKGVycik7CiAJCX0KKworCQlpZiAoQVI4
WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkgeworCQkJaW50IGxlZDsKKwkJCWNoYXIgbGVkbmFt
ZVtJRk5BTVNJWis0XTsKKworCQkJZm9yIChsZWQgPSAwOyBsZWQgPCAzOyBsZWQrKykgeworCQkJ
CXNwcmludGYobGVkbmFtZSwgIiVzJWRsZWQlZCIsIG5hbWUsIAorCQkJCSAgICBhcnN3aXRjaF9w
b3J0Zm9ycGh5KHBoeSksIGxlZCsxKTsKKwkJCQlzYy0+ZGV2X2xlZFtwaHldW2xlZF0uc2MgPSBz
YzsKKwkJCQlzYy0+ZGV2X2xlZFtwaHldW2xlZF0ubGVkID0gCisJCQkJICAgIGxlZF9jcmVhdGUo
KGxlZF90ICopYXJzd2l0Y2hfbGVkX2Z1bmMsCisJCQkJICAgICZzYy0+ZGV2X2xlZFtwaHldW2xl
ZF0sIGxlZG5hbWUpOworCQkJCXNjLT5kZXZfbGVkW3BoeV1bbGVkXS5waHkgPSBwaHk7CisJCQkJ
c2MtPmRldl9sZWRbcGh5XVtsZWRdLmxlZG51bSA9IGxlZDsKKwkJCX0KKwkJfQogCX0KLQlyZXR1
cm4gKGVycik7CisJcmV0dXJuICgwKTsKIH0KIAogc3RhdGljIGludApAQCAtNDIyLDcgKzQ1Miw3
IEBAIHN0YXRpYyBpbnQKIGFyc3dpdGNoX2RldGFjaChkZXZpY2VfdCBkZXYpCiB7CiAJc3RydWN0
IGFyc3dpdGNoX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKLQlpbnQgaTsKKwlp
bnQgaSwgbGVkOwogCiAJY2FsbG91dF9kcmFpbigmc2MtPmNhbGxvdXRfdGljayk7CiAKQEAgLTQz
Miw2ICs0NjIsOSBAQCBhcnN3aXRjaF9kZXRhY2goZGV2aWNlX3QgZGV2KQogCQlpZiAoc2MtPmlm
cFtpXSAhPSBOVUxMKQogCQkJaWZfZnJlZShzYy0+aWZwW2ldKTsKIAkJZnJlZShzYy0+aWZuYW1l
W2ldLCBNX0RFVkJVRik7CisJCWZvciAobGVkPTA7IGxlZCA8IEFSU1dJVENIX05VTV9MRURTOyBs
ZWQrKykgCisJCQlpZiAoc2MtPmRldl9sZWRbaV1bbGVkXS5sZWQgIT0gTlVMTCkKKwkJCQlsZWRf
ZGVzdHJveShzYy0+ZGV2X2xlZFtpXVtsZWRdLmxlZCk7CiAJfQogCiAJYnVzX2dlbmVyaWNfZGV0
YWNoKGRldik7CkBAIC02ODMsNiArNzE2LDM4IEBAIGFyc3dpdGNoX2dldHBvcnQoZGV2aWNlX3Qg
ZGV2LCBldGhlcnN3aXRjaF9wb3J0X3QKIAl9IGVsc2UgewogCQlyZXR1cm4gKEVOWElPKTsKIAl9
CisJCisJaWYgKCFhcnN3aXRjaF9pc19jcHVwb3J0KHNjLCBwLT5lc19wb3J0KSAmJiAKKwkgICAg
QVI4WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkgeworCQlpbnQgbGVkOworCQlwLT5lc19ubGVk
cyA9IDM7CisKKwkJZm9yIChsZWQgPSAwOyBsZWQgPCBwLT5lc19ubGVkczsgbGVkKyspCisJCXsK
KwkJCWludCBzdHlsZTsKKwkJCXVpbnQzMl90IHZhbDsKKwkJCQorCQkJLyogRmluZCB0aGUgcmln
aHQgc3R5bGUgZW51bSBmb3Igb3VyIHBhdHRlcm4gKi8KKwkJCXZhbCA9IGFyc3dpdGNoX3JlYWRy
ZWcoZGV2LCAKKwkJCSAgICBhcjgzMjdfbGVkX21hcHBpbmdbcC0+ZXNfcG9ydC0xXVtsZWRdLnJl
Zyk7CisJCQl2YWwgPSAodmFsPj5hcjgzMjdfbGVkX21hcHBpbmdbcC0+ZXNfcG9ydC0xXVtsZWRd
LnNoaWZ0KSYweDAzOworCQkJICAgIAorCQkJZm9yIChzdHlsZSA9IDA7IHN0eWxlIDwgRVRIRVJT
V0lUQ0hfUE9SVF9MRURfTUFYOyBzdHlsZSsrKQorCQkJeworCQkJCWlmIChsZWRfcGF0dGVybl90
YWJsZVtzdHlsZV0gPT0gdmFsKSBicmVhazsKKwkJCX0KKwkJCQorCQkJLyogY2FuJ3QgaGFwcGVu
ICovCisJCQlpZiAoc3R5bGUgPT0gRVRIRVJTV0lUQ0hfUE9SVF9MRURfTUFYKQorCQkJCXN0eWxl
ID0gRVRIRVJTV0lUQ0hfUE9SVF9MRURfREVGQVVMVDsKKwkJCQorCQkJcC0+ZXNfbGVkW2xlZF0g
PSBzdHlsZTsKKwkJfQorCX0gZWxzZQorCXsKKwkJcC0+ZXNfbmxlZHMgPSAwOworCX0KKwkKIAly
ZXR1cm4gKDApOwogfQogCkBAIC03MjcsNyArNzkyLDcgQEAgYXI4eHh4X3BvcnRfdmxhbl9zZXR1
cChzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMgKnNjLAogc3RhdGljIGludAogYXJzd2l0Y2hfc2V0cG9y
dChkZXZpY2VfdCBkZXYsIGV0aGVyc3dpdGNoX3BvcnRfdCAqcCkKIHsKLQlpbnQgZXJyOworCWlu
dCBlcnIsIGk7CiAJc3RydWN0IGFyc3dpdGNoX3NvZnRjICpzYzsKIAlzdHJ1Y3QgaWZtZWRpYSAq
aWZtOwogCXN0cnVjdCBtaWlfZGF0YSAqbWlpOwpAQCAtNzQ0LDkgKzgwOSwyMCBAQCBhcnN3aXRj
aF9zZXRwb3J0KGRldmljZV90IGRldiwgZXRoZXJzd2l0Y2hfcG9ydF90CiAJCQlyZXR1cm4gKGVy
cik7CiAJfQogCi0JLyogRG8gbm90IGFsbG93IG1lZGlhIGNoYW5nZXMgb24gQ1BVIHBvcnQuICov
CisJLyogRG8gbm90IGFsbG93IG1lZGlhIG9yIGxlZCBjaGFuZ2VzIG9uIENQVSBwb3J0LiAqLwog
CWlmIChhcnN3aXRjaF9pc19jcHVwb3J0KHNjLCBwLT5lc19wb3J0KSkKIAkJcmV0dXJuICgwKTsK
KwkKKwlpZiAoQVI4WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkKKwl7CisJCWZvciAoaSA9IDA7
IGkgPCAzOyBpKyspCisJCXsJCisJCQlpbnQgZXJyOworCQkJZXJyID0gYXJzd2l0Y2hfc2V0bGVk
KHNjLCBwLT5lc19wb3J0LTEsIGksIHAtPmVzX2xlZFtpXSk7CisJCQlpZiAoZXJyKQorCQkJCXJl
dHVybiAoZXJyKTsKKwkJfQorCX0KIAogCW1paSA9IGFyc3dpdGNoX21paWZvcnBvcnQoc2MsIHAt
PmVzX3BvcnQpOwogCWlmIChtaWkgPT0gTlVMTCkKQEAgLTc1OCw2ICs4MzQsMzQgQEAgYXJzd2l0
Y2hfc2V0cG9ydChkZXZpY2VfdCBkZXYsIGV0aGVyc3dpdGNoX3BvcnRfdAogCXJldHVybiAoaWZt
ZWRpYV9pb2N0bChpZnAsICZwLT5lc19pZnIsIGlmbSwgU0lPQ1NJRk1FRElBKSk7CiB9CiAKKy8q
CisgKiBsZWQoNCkgY2FsbGJhY2sgZnVuY3Rpb24uICBUaGF0IGFwaSBvbmx5IGtub3dzIG9uL29m
ZjsgaWYgeW91IHdhbnQgdG8KKyAqIHJlc2V0IGJhY2sgdG8gZGVmYXVsdHMsIHlvdSdsbCBuZWVk
IHRvIHVzZSBldGhlcnN3aXRjaGNmZy4KKyAqLworc3RhdGljIHZvaWQgCithcnN3aXRjaF9sZWRf
ZnVuYyhzdHJ1Y3QgYXJzd2l0Y2hfZGV2X2xlZCogZGV2X2xlZCwgaW50IG9ub2ZmKQoreworCWFy
c3dpdGNoX3NldGxlZChkZXZfbGVkLT5zYywgZGV2X2xlZC0+cGh5LCBkZXZfbGVkLT5sZWRudW0s
IAorCSAgICBvbm9mZiA/IEVUSEVSU1dJVENIX1BPUlRfTEVEX09OIDogRVRIRVJTV0lUQ0hfUE9S
VF9MRURfT0ZGKTsKK30KKworc3RhdGljIGludAorYXJzd2l0Y2hfc2V0bGVkKHN0cnVjdCBhcnN3
aXRjaF9zb2Z0YyAqc2MsIGludCBwaHksIGludCBsZWQsIGludCBzdHlsZSkKK3sKKwlpbnQgc2hp
ZnQ7CisKKwlpZiAocGh5IDwgMCB8fCBwaHkgPiBzYy0+bnVtcGh5cykKKwkJcmV0dXJuIEVJTlZB
TDsKKworCWlmIChzdHlsZSA8IDAgfHwgc3R5bGUgPiBFVEhFUlNXSVRDSF9QT1JUX0xFRF9NQVgp
CisJCXJldHVybiAoRUlOVkFMKTsKKyAgICAKKwlzaGlmdCA9IGFyODMyN19sZWRfbWFwcGluZ1tw
aHldW2xlZF0uc2hpZnQ7CisJcmV0dXJuIChhcnN3aXRjaF9tb2RpZnlyZWcoc2MtPnNjX2Rldiwg
CisJICAgIGFyODMyN19sZWRfbWFwcGluZ1twaHldW2xlZF0ucmVnLCAKKwkgICAgMHgwMyA8PCBz
aGlmdCwgbGVkX3BhdHRlcm5fdGFibGVbc3R5bGVdIDw8IHNoaWZ0KSk7Cit9CisKIHN0YXRpYyB2
b2lkCiBhcnN3aXRjaF9zdGF0Y2hnKGRldmljZV90IGRldikKIHsKSW5kZXg6IHN5cy9kZXYvZXRo
ZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2hfODMyNy5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYv
ZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2hfODMyNy5jCShyZXZpc2lvbiAzMDM1MzgpCisr
KyBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dpdGNoXzgzMjcuYwkod29ya2luZyBj
b3B5KQpAQCAtNzUsNiArNzUsMzYgQEAKICAqIGxlYWQgdG8gdHJhZmZpYyBzdG9ybXMvbG9vcHMu
CiAgKi8KIAorLyogTWFwIHBvcnQrbGVkIHRvIHJlZ2lzdGVyK3NoaWZ0ICovCitzdHJ1Y3QgYXI4
MzI3X2xlZF9tYXBwaW5nIGFyODMyN19sZWRfbWFwcGluZ1tBUjgzMjdfTlVNX1BIWVNdW0VUSEVS
U1dJVENIX1BPUlRfTUFYX0xFRFNdID0KK3sKKwl7CS8qIFBIWTAgKi8KKwkJe0FSODMyN19SRUdf
TEVEX0NUUkwwLCAxNCB9LAorCQl7QVI4MzI3X1JFR19MRURfQ1RSTDEsIDE0IH0sCisJCXtBUjgz
MjdfUkVHX0xFRF9DVFJMMiwgMTQgfQorCX0sCisJewkvKiBQSFkxICovCisJCXtBUjgzMjdfUkVH
X0xFRF9DVFJMMywgOCAgfSwKKwkJe0FSODMyN19SRUdfTEVEX0NUUkwzLCAxMCB9LAorCQl7QVI4
MzI3X1JFR19MRURfQ1RSTDMsIDEyIH0KKwl9LAorCXsJLyogUEhZMiAqLworCQl7QVI4MzI3X1JF
R19MRURfQ1RSTDMsIDE0IH0sCisJCXtBUjgzMjdfUkVHX0xFRF9DVFJMMywgMTYgfSwKKwkJe0FS
ODMyN19SRUdfTEVEX0NUUkwzLCAxOCB9CisJfSwKKwl7CS8qIFBIWTMgKi8KKwkJe0FSODMyN19S
RUdfTEVEX0NUUkwzLCAyMCB9LAorCQl7QVI4MzI3X1JFR19MRURfQ1RSTDMsIDIyIH0sCisJCXtB
UjgzMjdfUkVHX0xFRF9DVFJMMywgMjQgfQorCX0sCisJewkvKiBQSFk0ICovCisJCXtBUjgzMjdf
UkVHX0xFRF9DVFJMMCwgMzAgfSwKKwkJe0FSODMyN19SRUdfTEVEX0NUUkwxLCAzMCB9LAorCQl7
QVI4MzI3X1JFR19MRURfQ1RSTDIsIDMwIH0KKwl9Cit9OworCiBzdGF0aWMgaW50CiBhcjgzMjdf
dmxhbl9vcChzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMgKnNjLCB1aW50MzJfdCBvcCwgdWludDMyX3Qg
dmlkLAogICAgIHVpbnQzMl90IGRhdGEpCkluZGV4OiBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dp
dGNoL2Fyc3dpdGNoXzgzMjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fy
c3dpdGNoL2Fyc3dpdGNoXzgzMjcuaAkocmV2aXNpb24gMzAzNTM4KQorKysgc3lzL2Rldi9ldGhl
cnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaF84MzI3LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYg
Kzg1LDExIEBAIHN0cnVjdCBhcjgzMjdfcG9ydF9jZmcgewogCXVpbnQzMl90IHJ4cGF1c2U7CiB9
OwogCitleHRlcm4gc3RydWN0IGFyODMyN19sZWRfbWFwcGluZyB7CisJaW50IHJlZzsKKwlpbnQg
c2hpZnQ7Cit9IGFyODMyN19sZWRfbWFwcGluZ1tBUjgzMjdfTlVNX1BIWVNdW0VUSEVSU1dJVENI
X1BPUlRfTUFYX0xFRFNdOworCiBleHRlcm4Jdm9pZCBhcjgzMjdfYXR0YWNoKHN0cnVjdCBhcnN3
aXRjaF9zb2Z0YyAqc2MpOwogCiAjZW5kaWYJLyogX19BUlNXSVRDSF84MzI3X0hfXyAqLwpJbmRl
eDogc3lzL2Rldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaHZhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2h2YXIuaAkocmV2aXNpb24g
MzAzNTM4KQorKysgc3lzL2Rldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaHZhci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxNSBAQCB0eXBlZGVmIGVudW0gewogI2RlZmluZSBB
UlNXSVRDSF9OVU1fUE9SVFMJTUFYKEFSODMyN19OVU1fUE9SVFMsIEFSOFgxNl9OVU1fUE9SVFMp
CiAjZGVmaW5lIEFSU1dJVENIX05VTV9QSFlTCU1BWChBUjgzMjdfTlVNX1BIWVMsIEFSOFgxNl9O
VU1fUEhZUykKIAorI2RlZmluZSBBUlNXSVRDSF9OVU1fTEVEUwkzCisKK3N0cnVjdCBhcnN3aXRj
aF9kZXZfbGVkIHsKKwlzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMJKnNjOworCXN0cnVjdCBjZGV2CSps
ZWQ7CisJaW50CQlwaHk7CisJaW50CQlsZWRudW07Cit9OworCiBzdHJ1Y3QgYXJzd2l0Y2hfc29m
dGMgewogCXN0cnVjdCBtdHgJc2NfbXR4OwkJLyogc2VyaWFsaXplIGFjY2VzcyB0byBzb2Z0YyAq
LwogCWRldmljZV90CXNjX2RldjsKQEAgLTY2LDYgKzc1LDcgQEAgc3RydWN0IGFyc3dpdGNoX3Nv
ZnRjIHsKIAljaGFyCQkqaWZuYW1lW0FSU1dJVENIX05VTV9QSFlTXTsKIAlkZXZpY2VfdAltaWli
dXNbQVJTV0lUQ0hfTlVNX1BIWVNdOwogCXN0cnVjdCBpZm5ldAkqaWZwW0FSU1dJVENIX05VTV9Q
SFlTXTsKKwlzdHJ1Y3QgYXJzd2l0Y2hfZGV2X2xlZAlkZXZfbGVkW0FSU1dJVENIX05VTV9QSFlT
XVtBUlNXSVRDSF9OVU1fTEVEU107CiAJc3RydWN0IGNhbGxvdXQJY2FsbG91dF90aWNrOwogCWV0
aGVyc3dpdGNoX2luZm9fdCBpbmZvOwogCkluZGV4OiBzeXMvZGV2L2V0aGVyc3dpdGNoL2V0aGVy
c3dpdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9ldGhlcnN3aXRjaC9ldGhlcnN3aXRjaC5o
CShyZXZpc2lvbiAzMDM1MzgpCisrKyBzeXMvZGV2L2V0aGVyc3dpdGNoL2V0aGVyc3dpdGNoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAgZXh0ZXJuIGRyaXZlcl90ICAgICAgICAg
ZXRoZXJzd2l0Y2hfZHJpdmVyOwogCiBzdHJ1Y3QgZXRoZXJzd2l0Y2hfcmVnIHsKIAl1aW50MTZf
dAlyZWc7Ci0JdWludDE2X3QJdmFsOworCXVpbnQzMl90CXZhbDsKIH07CiB0eXBlZGVmIHN0cnVj
dCBldGhlcnN3aXRjaF9yZWcgZXRoZXJzd2l0Y2hfcmVnX3Q7CiAKQEAgLTY0LDEwICs2NCwyMyBA
QCB0eXBlZGVmIHN0cnVjdCBldGhlcnN3aXRjaF9jb25mIGV0aGVyc3dpdGNoX2NvbmZfdAogI2Rl
ZmluZQlFVEhFUlNXSVRDSF9QT1JUX0ZMQUdTX0JJVFMJXAogIlwwMjBcMUNQVVBPUlRcMlNUUklQ
VEFHXDNBRERUQUdcNEZJUlNUTE9DS1w1RFJPUFVOVEFHR0VEXDZRaW5RXDdJTkdSRVNTIgogCisj
ZGVmaW5lIEVUSEVSU1dJVENIX1BPUlRfTUFYX0xFRFMgMworCitlbnVtIGV0aGVyc3dpdGNoX3Bv
cnRfbGVkIHsKKwlFVEhFUlNXSVRDSF9QT1JUX0xFRF9ERUZBVUxULAorCUVUSEVSU1dJVENIX1BP
UlRfTEVEX09OLAorCUVUSEVSU1dJVENIX1BPUlRfTEVEX09GRiwKKwlFVEhFUlNXSVRDSF9QT1JU
X0xFRF9CTElOSywKKwlFVEhFUlNXSVRDSF9QT1JUX0xFRF9NQVgKK307Cit0eXBlZGVmIGVudW0g
ZXRoZXJzd2l0Y2hfcG9ydF9sZWQgZXRoZXJzd2l0Y2hfcG9ydF9sZWRfdDsKKwogc3RydWN0IGV0
aGVyc3dpdGNoX3BvcnQgewogCWludAkJZXNfcG9ydDsKIAlpbnQJCWVzX3B2aWQ7CisJaW50CQll
c19ubGVkczsKIAl1aW50MzJfdAllc19mbGFnczsKKwlldGhlcnN3aXRjaF9wb3J0X2xlZF90IGVz
X2xlZFtFVEhFUlNXSVRDSF9QT1JUX01BWF9MRURTXTsKIAl1bmlvbiB7CiAJCXN0cnVjdCBpZnJl
cQkJZXNfdWlmcjsKIAkJc3RydWN0IGlmbWVkaWFyZXEJZXNfdWlmbXI7Cg==

------=_Part_8622005_1358949567.1469859063414--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?315070490.8622006.1469859063414.JavaMail.yahoo>