Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Mar 2009 11:03:36 -0800
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        Iain Hibbert <plunky@rya-online.net>
Cc:        "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>
Subject:   Re: libhci
Message-ID:  <bb4a86c70903051103q8937592sb117db281b20705f@mail.gmail.com>
In-Reply-To: <1234605178.990729.799.nullmailer@galant.ukfsn.org>
References:  <1233365217.00068654.1233354838@10.7.7.3> <4988EBAC.3080202@mavhome.dp.ua> <bb4a86c70902031731q83bf261s49e5812a3c208f81@mail.gmail.com> <1233758519.360141.162.nullmailer@galant.ukfsn.org> <bb4a86c70902041000t26ad9b66q94a32ff37cfb7f4b@mail.gmail.com> <1233845167.798942.24919.nullmailer@galant.ukfsn.org> <bb4a86c70902051001j53f52e3dhb2e80e393b936f16@mail.gmail.com> <1233919880.530235.10843.nullmailer@galant.ukfsn.org> <bb4a86c70902131717o2ccc1fd2nd73f84b1a7765152@mail.gmail.com> <1234605178.990729.799.nullmailer@galant.ukfsn.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--000e0cd17ea8558850046463d37d
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Iain & All,

On Sat, Feb 14, 2009 at 1:52 AM, Iain Hibbert <plunky@rya-online.net> wrote:
> On Fri, 13 Feb 2009, Maksim Yevmenkin wrote:
>
>> i kinda started to work on hci/bluetooth shims. please take a look at
>> the attached patch. this is basically to implement bt_devname() and
>> bt_devaddr() similar to netbsd and i also added bt_hci_devinfo() and
>> bt_hci_devenum() inspired by linux-bluez.
>
> some quick comments as I'm on battery and ENOTIME
>
> - I think it should lose the "_hci" part of the name :)

sure :)

> - count = bt_devenum(cb, arg)
>
>   no limits in API (no objection to underlying implementation limit :)
>   the callback can signal, if it has seen enough.
>   (could allow callback=NULL to just count the devices)

well, i'm kinda torn about it, but i guess its ok. i will just set
internal limit to "reasonable" size :)

> - len = bt_devinfo(name, buffer, sizeof(buffer))
>
>   the calling program gives buffer and size, allowing the devinfo to
>   be extended later without breaking ABI.

actually, i'd rather add some padding to the devinfo structure.

>   len == 0 means not found
>   also, reserved slots in the structure become unnecessary, let the
>   compiler handle padding.

i'd like to keep them. i prefer to have "hole" filled with something
so it can be reused later if needed.

>   (size and name could be passed in devinfo?)

sure, i agree to pass name in devinfo

>   (is variable size struct perhaps too ugly to handle? what about
>   'version' field?)

probably too much.

please take a look at the attached patch and let me know what do you think.

thanks,
max

--000e0cd17ea8558850046463d37d
Content-Type: text/plain; charset=US-ASCII; name="bluetooth-hci.diff.txt"
Content-Disposition: attachment; filename="bluetooth-hci.diff.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_frxt2lmh0

SW5kZXg6IGRldi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRldi5jCShyZXZpc2lvbiAwKQorKysgZGV2LmMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBkZXYuYworICovCisKKy8qLQor
ICogQ29weXJpZ2h0IChjKSAyMDA5IE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28u
Y29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNpbmNs
dWRlIDxibHVldG9vdGguaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorCitzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcKK3sKKwljaGFyCQlkZXZuYW1lW0hDSV9E
RVZOQU1FX1NJWkVdOworCWJkYWRkcl90IGNvbnN0CSpiZGFkZHI7Cit9OworCitzdGF0aWMgYnRf
ZGV2ZW51bV9jYl90CWJ0X2RldmFkZHJfbWF0Y2g7CisKK2ludAorYnRfZGV2YWRkcihjaGFyIGNv
bnN0ICpkZXZuYW1lLCBiZGFkZHJfdCAqYWRkcikKK3sKKwlzdHJ1Y3QgYnRfZGV2aW5mbwlkaTsK
KworCXN0cmxjcHkoZGkuZGV2bmFtZSwgZGV2bmFtZSwgc2l6ZW9mKGRpLmRldm5hbWUpKTsKKwor
CWlmIChidF9kZXZpbmZvKCZkaSkgPCAwKQorCQlyZXR1cm4gKDApOworCisJaWYgKGFkZHIgIT0g
TlVMTCkKKwkJYmRhZGRyX2NvcHkoYWRkciwgJmRpLmJkYWRkcik7CisKKwlyZXR1cm4gKDEpOwor
fQorCitpbnQKK2J0X2Rldm5hbWUoY2hhciAqZGV2bmFtZSwgYmRhZGRyX3QgY29uc3QgKmFkZHIp
Cit7CisJc3RydWN0IGJ0X2RldmFkZHJfbWF0Y2hfYXJnCWFyZzsKKworCW1lbXNldCgmYXJnLCAw
LCBzaXplb2YoYXJnKSk7CisJYXJnLmJkYWRkciA9IGFkZHI7CisKKwlpZiAoYnRfZGV2ZW51bSgm
YnRfZGV2YWRkcl9tYXRjaCwgJmFyZykgPCAwKQorCQlyZXR1cm4gKDApOworCQorCWlmIChhcmcu
ZGV2bmFtZVswXSA9PSAnXDAnKSB7CisJCWVycm5vID0gRU5YSU87CisJCXJldHVybiAoMCk7CisJ
fQorCisJaWYgKGRldm5hbWUgIT0gTlVMTCkKKwkJc3RybGNweShkZXZuYW1lLCBhcmcuZGV2bmFt
ZSwgSENJX0RFVk5BTUVfU0laRSk7CisKKwlyZXR1cm4gKDEpOworfQorCitzdGF0aWMgaW50Citi
dF9kZXZhZGRyX21hdGNoKGludCBzLCBzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQg
KmFyZykKK3sKKwlzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcJKm0gPSAoc3RydWN0IGJ0X2Rl
dmFkZHJfbWF0Y2hfYXJnICopYXJnOworCisJaWYgKCFiZGFkZHJfc2FtZSgmZGktPmJkYWRkciwg
bS0+YmRhZGRyKSkKKwkJcmV0dXJuICgwKTsKKworCXN0cmxjcHkobS0+ZGV2bmFtZSwgZGktPmRl
dm5hbWUsIHNpemVvZihtLT5kZXZuYW1lKSk7CisKKwlyZXR1cm4gKDEpOworfQorCkluZGV4OiBo
Y2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBoY2kuYwkocmV2aXNpb24gMCkKKysrIGhjaS5jCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIGhjaS5jCisgKi8KKworLyotCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDkgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+Cisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisgKi8KKworI2luY2x1ZGUgPGJs
dWV0b290aC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyBjaGFyICogYnRf
ZGV2Mm5vZGUgKGNoYXIgY29uc3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQgbm5sZW4p
OworCitpbnQKK2J0X2RldmluZm8oc3RydWN0IGJ0X2RldmluZm8gKmRpKQoreworCXVuaW9uIHsK
KwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9zdGF0ZQkJcjA7CisJCXN0cnVjdCBu
Z19idHNvY2tldF9oY2lfcmF3X25vZGVfYmRhZGRyCQlyMTsKKwkJc3RydWN0IG5nX2J0c29ja2V0
X2hjaV9yYXdfbm9kZV9mZWF0dXJlcwlyMjsKKwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdf
bm9kZV9idWZmZXIJCXIzOworCQlzdHJ1Y3QgbmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX3N0YXQJ
CXI0OworCQlzdHJ1Y3QgbmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX2xpbmtfcG9saWN5X21hc2sg
cjU7CisJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfcGFja2V0X21hc2sJcjY7CisJ
CXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfcm9sZV9zd2l0Y2gJcjc7CisJCXN0cnVj
dCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfZGVidWcJCXI4OworCX0JCQkJCQlycDsKKwlzdHJ1
Y3Qgc29ja2FkZHJfaGNpCQkJCWhhOworCWludAkJCQkJCXMsIHJ2YWw7CisKKwlpZiAoZGkgPT0g
TlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJbWVtc2V0
KCZoYSwgMCwgc2l6ZW9mKGhhKSk7CisJaGEuaGNpX2xlbiA9IHNpemVvZihoYSk7CisJaGEuaGNp
X2ZhbWlseSA9IEFGX0JMVUVUT09USDsKKworCWlmIChidF9hdG9uKGRpLT5kZXZuYW1lLCAmcnAu
cjEuYmRhZGRyKSkgeworCQlpZiAoIWJ0X2Rldm5hbWUoaGEuaGNpX25vZGUsICZycC5yMS5iZGFk
ZHIpKQorCQkJcmV0dXJuICgtMSk7CisJfSBlbHNlIGlmIChidF9kZXYybm9kZShkaS0+ZGV2bmFt
ZSwgaGEuaGNpX25vZGUsCisJCQkJCXNpemVvZihoYS5oY2lfbm9kZSkpID09IE5VTEwpIHsKKwkJ
ZXJybm8gPSBFTlhJTzsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJcyA9IHNvY2tldChQRl9CTFVF
VE9PVEgsIFNPQ0tfUkFXLCBCTFVFVE9PVEhfUFJPVE9fSENJKTsKKwlpZiAocyA8IDApCisJCXJl
dHVybiAoLTEpOworCisJcnZhbCA9IC0xOworCisJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRk
ciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCB8fAorCSAgICBjb25uZWN0KHMsIChzdHJ1Y3Qgc29j
a2FkZHIgKikgJmhhLCBzaXplb2YoaGEpKSA8IDApCisJCWdvdG8gYmFkOworCXN0cmxjcHkoZGkt
PmRldm5hbWUsIGhhLmhjaV9ub2RlLCBzaXplb2YoZGktPmRldm5hbWUpKTsKKworCWlmIChpb2N0
bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfU1RBVEUsICZycC5yMCwgc2l6ZW9mKHJwLnIwKSkg
PCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+c3RhdGUgPSBycC5yMC5zdGF0ZTsKKworCWlmIChpb2N0
bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfQkRBRERSLCAmcnAucjEsIHNpemVvZihycC5yMSkp
IDwgMCkKKwkJZ290byBiYWQ7CisJYmRhZGRyX2NvcHkoJmRpLT5iZGFkZHIsICZycC5yMS5iZGFk
ZHIpOworCQorCWlmIChpb2N0bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfRkVBVFVSRVMsICZy
cC5yMiwgc2l6ZW9mKHJwLnIyKSkgPCAwKQorCQlnb3RvIGJhZDsKKwltZW1jcHkoZGktPmZlYXR1
cmVzLCBycC5yMi5mZWF0dXJlcywgc2l6ZW9mKGRpLT5mZWF0dXJlcykpOworCisJaWYgKGlvY3Rs
KHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9CVUZGRVIsICZycC5yMywgc2l6ZW9mKHJwLnIzKSkg
PCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+Y21kX2ZyZWUgPSBycC5yMy5idWZmZXIuY21kX2ZyZWU7
CisJZGktPnNjb19zaXplID0gcnAucjMuYnVmZmVyLnNjb19zaXplOworCWRpLT5zY29fcGt0cyA9
IHJwLnIzLmJ1ZmZlci5zY29fcGt0czsKKwlkaS0+c2NvX2ZyZWUgPSBycC5yMy5idWZmZXIuc2Nv
X2ZyZWU7CisJZGktPmFjbF9zaXplID0gcnAucjMuYnVmZmVyLmFjbF9zaXplOworCWRpLT5hY2xf
cGt0cyA9IHJwLnIzLmJ1ZmZlci5hY2xfcGt0czsKKwlkaS0+YWNsX2ZyZWUgPSBycC5yMy5idWZm
ZXIuYWNsX2ZyZWU7CisKKwlpZiAoaW9jdGwocywgU0lPQ19IQ0lfUkFXX05PREVfR0VUX1NUQVQs
ICZycC5yNCwgc2l6ZW9mKHJwLnI0KSkgPCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+Y21kX3NlbnQg
PSBycC5yNC5zdGF0LmNtZF9zZW50OworCWRpLT5ldm50X3JlY3YgPSBycC5yNC5zdGF0LmV2bnRf
cmVjdjsKKwlkaS0+YWNsX3JlY3YgPSBycC5yNC5zdGF0LmFjbF9yZWN2OworCWRpLT5hY2xfc2Vu
dCA9IHJwLnI0LnN0YXQuYWNsX3NlbnQ7CisJZGktPnNjb19yZWN2ID0gcnAucjQuc3RhdC5zY29f
cmVjdjsKKwlkaS0+c2NvX3NlbnQgPSBycC5yNC5zdGF0LnNjb19zZW50OworCWRpLT5ieXRlc19y
ZWN2ID0gcnAucjQuc3RhdC5ieXRlc19yZWN2OworCWRpLT5ieXRlc19zZW50ID0gcnAucjQuc3Rh
dC5ieXRlc19zZW50OworCisJaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9MSU5L
X1BPTElDWV9NQVNLLAorCQkJJnJwLnI1LCBzaXplb2YocnAucjUpKSA8IDApCisJCWdvdG8gYmFk
OworCWRpLT5saW5rX3BvbGljeV9pbmZvID0gcnAucjUucG9saWN5X21hc2s7CisKKwlpZiAoaW9j
dGwocywgU0lPQ19IQ0lfUkFXX05PREVfR0VUX1BBQ0tFVF9NQVNLLAorCQkJJnJwLnI2LCBzaXpl
b2YocnAucjYpKSA8IDApCisJCWdvdG8gYmFkOworCWRpLT5wYWNrZXRfdHlwZV9pbmZvID0gcnAu
cjYucGFja2V0X21hc2s7CisKKwkgaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9S
T0xFX1NXSVRDSCwKKwkJCSZycC5yNywgc2l6ZW9mKHJwLnI3KSkgPCAwKQorCQlnb3RvIGJhZDsK
KwlkaS0+cm9sZV9zd2l0Y2hfaW5mbyA9IHJwLnI3LnJvbGVfc3dpdGNoOworCisJaWYgKGlvY3Rs
KHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9ERUJVRywgJnJwLnI4LCBzaXplb2YocnAucjgpKSA8
IDApCisJCWdvdG8gYmFkOworCWRpLT5kZWJ1ZyA9IHJwLnI4LmRlYnVnOworCisJcnZhbCA9IDA7
CitiYWQ6CisJY2xvc2Uocyk7CisKKwlyZXR1cm4gKHJ2YWwpOworfQorCitpbnQKK2J0X2RldmVu
dW0oYnRfZGV2ZW51bV9jYl90IGNiLCB2b2lkICphcmcpCit7CisJc3RydWN0IG5nX2J0c29ja2V0
X2hjaV9yYXdfbm9kZV9saXN0X25hbWVzCXJwOworCXN0cnVjdCBidF9kZXZpbmZvCQkJCWRpOwor
CXN0cnVjdCBzb2NrYWRkcl9oY2kJCQkJaGE7CisJaW50CQkJCQkJcywgaSwgY291bnQ7CisKKwly
cC5udW1fbmFtZXMgPSBIQ0lfREVWTUFYOworCXJwLm5hbWVzID0gKHN0cnVjdCBub2RlaW5mbyAq
KSBjYWxsb2MocnAubnVtX25hbWVzLAorCQkJCQkJc2l6ZW9mKHN0cnVjdCBub2RlaW5mbykpOwor
CWlmIChycC5uYW1lcyA9PSBOVUxMKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gKC0x
KTsKKwl9CisKKwltZW1zZXQoJmhhLCAwLCBzaXplb2YoaGEpKTsKKwloYS5oY2lfbGVuID0gc2l6
ZW9mKGhhKTsKKwloYS5oY2lfZmFtaWx5ID0gQUZfQkxVRVRPT1RIOworCWhhLmhjaV9ub2RlWzBd
ID0gJ3gnOworCisJcyA9IHNvY2tldChQRl9CTFVFVE9PVEgsIFNPQ0tfUkFXLCBCTFVFVE9PVEhf
UFJPVE9fSENJKTsKKwlpZiAocyA8IDApIHsKKwkJZnJlZShycC5uYW1lcyk7CisKKwkJcmV0dXJu
ICgtMSk7CisJfQorCisJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVv
ZihoYSkpIDwgMCB8fAorCSAgICBjb25uZWN0KHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCBz
aXplb2YoaGEpKSA8IDAgfHwKKwkgICAgaW9jdGwocywgU0lPQ19IQ0lfUkFXX05PREVfTElTVF9O
QU1FUywgJnJwLCBzaXplb2YocnApKSA8IDApIHsKKwkJY2xvc2Uocyk7CisJCWZyZWUocnAubmFt
ZXMpOworCisJCXJldHVybiAoLTEpOworCX0KKworCWZvciAoY291bnQgPSAwLCBpID0gMDsgaSA8
IHJwLm51bV9uYW1lczsgaSArKykgeworCQlzdHJsY3B5KGRpLmRldm5hbWUsIHJwLm5hbWVzW2ld
Lm5hbWUsIHNpemVvZihkaS5kZXZuYW1lKSk7CisJCWlmIChidF9kZXZpbmZvKCZkaSkgPCAwKQor
CQkJY29udGludWU7CisKKwkJY291bnQgKys7CisKKwkJaWYgKGNiID09IE5VTEwpCisJCQljb250
aW51ZTsKKworCQlzdHJsY3B5KGhhLmhjaV9ub2RlLCBycC5uYW1lc1tpXS5uYW1lLCBzaXplb2Yo
aGEuaGNpX25vZGUpKTsKKwkJaWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNp
emVvZihoYSkpIDwgMCB8fAorCQkgICAgY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopICZo
YSwgc2l6ZW9mKGhhKSkgPCAwKQorCQkJY29udGludWU7CisKKwkJaWYgKCgqY2IpKHMsICZkaSwg
YXJnKSA+IDApCisJCQlicmVhazsKKwl9CisKKwljbG9zZSAocyk7CisJZnJlZShycC5uYW1lcyk7
CisKKwlyZXR1cm4gKGNvdW50KTsKK30KKworc3RhdGljIGNoYXIgKgorYnRfZGV2Mm5vZGUoY2hh
ciBjb25zdCAqZGV2bmFtZSwgY2hhciAqbm9kZW5hbWUsIGludCBubmxlbikKK3sKKwlzdGF0aWMg
Y2hhciBjb25zdCAqCSBidF9kZXZfcHJlZml4W10gPSB7CisJCSJidGNjYyIsCS8qIDNDb20gQmx1
ZXRvb3RoIFBDLUNBUkQgKi8KKwkJImg0IiwJCS8qIFVBUlQvc2VyaWFsIEJsdWV0b290aCBkZXZp
Y2VzICovCisJCSJ1YnQiLAkJLyogQmx1ZXRvb3RoIFVTQiBkZXZpY2VzICovCisJCU5VTEwJCS8q
IHNob3VsZCBiZSBsYXN0ICovCisJfTsKKworCXN0YXRpYyBjaGFyCQlfbm9kZW5hbWVbSENJX0RF
Vk5BTUVfU0laRV07CisJY2hhciBjb25zdAkJKipwOworCWNoYXIJCQkqZXA7CisJaW50CQkJcGxl
biwgdW5pdDsKKworCWlmIChub2RlbmFtZSA9PSBOVUxMKSB7CisJCW5vZGVuYW1lID0gX25vZGVu
YW1lOworCQlubmxlbiA9IEhDSV9ERVZOQU1FX1NJWkU7CisJfQorCisJZm9yIChwID0gYnRfZGV2
X3ByZWZpeDsgKnAgIT0gTlVMTDsgcCArKykgeworCQlwbGVuID0gc3RybGVuKCpwKTsKKwkJaWYg
KHN0cm5jbXAoZGV2bmFtZSwgKnAsIHBsZW4pICE9IDApCisJCQljb250aW51ZTsKKworCQl1bml0
ID0gc3RydG91bChkZXZuYW1lICsgcGxlbiwgJmVwLCAxMCk7CisJCWlmICgqZXAgIT0gJ1wwJyAm
JgorCQkgICAgc3RyY21wKGVwLCAiaGNpIikgIT0gMCAmJgorCQkgICAgc3RyY21wKGVwLCAibDJj
YXAiKSAhPSAwKQorCQkJcmV0dXJuIChOVUxMKTsJLyogY2FuJ3QgbWFrZSBzZW5zZSBvZiBkZXZp
Y2UgbmFtZSAqLworCisJCXNucHJpbnRmKG5vZGVuYW1lLCBubmxlbiwgIiVzJXVoY2kiLCAqcCwg
dW5pdCk7CisKKwkJcmV0dXJuIChub2RlbmFtZSk7CisJfQorCisJcmV0dXJuIChOVUxMKTsKK30K
KwpJbmRleDogYmx1ZXRvb3RoLjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmx1ZXRvb3RoLjMJKHJldmlzaW9u
IDE4OTQxNCkKKysrIGJsdWV0b290aC4zCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAot
LlwiIENvcHlyaWdodCAoYykgMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9v
LmNvbT4KKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2
bWVua2luQHlhaG9vLmNvbT4KIC5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLlwiCiAuXCIgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNSw3ICsyNSw3IEBACiAuXCIgJElkOiBibHVldG9vdGguMyx2IDEuNSAyMDAz
LzA1LzIwIDIzOjA0OjMwIG1heCBFeHAgJAogLlwiICRGcmVlQlNEJAogLlwiCi0uRGQgQXVndXN0
IDEzLCAyMDA4CisuRGQgRmVicnVhcnkgMTMsIDIwMDkKIC5EdCBCTFVFVE9PVEggMwogLk9zCiAu
U2ggTkFNRQpAQCAtNzQsNiArNzQsMTYgQEAKIC5GdCBjb25zdCBjaGFyICoKIC5GbiBidF9udG9h
ICJjb25zdCBiZGFkZHJfdCAqYmEiICJjaGFyICpzdHIiCiAuRnQgaW50CisuRm4gYnRfZGV2YWRk
ciAiY29uc3QgY2hhciAqZGV2bmFtZSIgImJkYWRkcl90ICphZGRyIgorLkZ0IGludAorLkZuIGJ0
X2Rldm5hbWUgImNoYXIgKmRldm5hbWUiICJjb25zdCBiZGFkZHJfdCAqYWRkciIKKy5GdCBpbnQK
Ky5GbiAoYnRfZGV2ZW51bV9jYl90KSAiaW50IHMiICJzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAq
ZGkiICJ2b2lkICphcmciCisuRnQgaW50CisuRm4gYnRfZGV2aW5mbyAic3RydWN0IGJ0X2Rldmlu
Zm8gKmRpIgorLkZ0IGludAorLkZuIGJ0X2RldmVudW0gImJ0X2RldmVudW1fY2JfdCAqY2IiICJ2
b2lkICphcmciCisuRnQgaW50CiAuRm4gYmRhZGRyX3NhbWUgImNvbnN0IGJkYWRkcl90ICphIiAi
Y29uc3QgYmRhZGRyX3QgKmIiCiAuRnQgaW50CiAuRm4gYmRhZGRyX2FueSAiY29uc3QgYmRhZGRy
X3QgKmEiCkBAIC0xOTcsNiArMjA3LDExOCBAQAogSWYgbm8gYnVmZmVyIHdhcyBwcm92aWRlZCB0
aGVuIGludGVybmFsIHN0YXRpYyBidWZmZXIgd2lsbCBiZSB1c2VkLgogLlBwCiBUaGUKKy5GbiBi
dF9kZXZhZGRyCitmdW5jdGlvbiBpbnRlcnByZXRzIHRoZSBzcGVjaWZpZWQKKy5GYSBkZXZuYW1l
CitzdHJpbmcgYXMgdGhlIGFkZHJlc3Mgb3IgZGV2aWNlIG5hbWUgb2YgYSBCbHVldG9vdGggZGV2
aWNlIG9uIHRoZSBsb2NhbCBzeXN0ZW0sCithbmQgcGxhY2VzIHRoZSBkZXZpY2UgYWRkcmVzcyBp
biB0aGUgcHJvdmlkZWQKKy5GYSBiZGFkZHIgLAoraWYgYW55LgorVGhlIGZ1bmN0aW9uIHJldHVy
bnMgMSBpZiB0aGUgc3RyaW5nIHdhcyBzdWNjZXNzZnVsbHkgaW50ZXJwcmV0ZWQsCitvciAwIGlm
IHRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCBhbnkgbG9jYWwgZGV2aWNlLgorVGhlCisuRm4gYnRf
ZGV2bmFtZQorZnVuY3Rpb24gdGFrZXMgYSBCbHVldG9vdGggZGV2aWNlIGFkZHJlc3MgYW5kIGNv
cGllcyB0aGUgbG9jYWwgZGV2aWNlCituYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGFkZHJlc3Mg
aW50byB0aGUgYnVmZmVyIHByb3ZpZGVkLAoraWYgYW55LgorQ2FsbGVyIG11c3QgZW5zdXJlIHRo
YXQgcHJvdmlkZWQgYnVmZmVyIGlzIGF0IGxlYXN0CisuRHYgSENJX0RFVk5BTUVfU0laRQorY2hh
cmFjdGVycyBpbiBzaXplLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBkZXZpY2Ug
d2FzIGZvdW5kLAorb3RoZXJ3aXNlIDAuCisuUHAKK1RoZQorLkZuIGJ0X2RldmluZm8KK2Z1bmN0
aW9uIHBvcHVsYXRlcyBwcm9kaXZkZWQKKy5WdCBidF9kZXZpbmZvCitzdHJ1Y3R1cmUgd2l0aCB0
aGUgaW5mb3JtYXRpb24gYWJvdXQgZ2l2ZW4gQmx1ZXRvb3RoIGRldmljZS4KK1RoZSBjYWxsZXIg
aXMgZXhwZWN0ZWQgdG8gcGFzcyBCbHVldG9vdGggZGV2aWNlIG5hbWUgaW4gdGhlCisuRmEgZGV2
bmFtZQorZmllbGQgb2YgdGhlIHBhc3NlZAorLlZ0IGJ0X2RldmluZm8KK3N0cnVjdHVyZS4KK1Ro
ZSBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiBzdWNjZXNzZnVsLAorb3RoZXJ3aXNlIC0xLgorVGhl
CisuVnQgYnRfZGV2aW5mbworc3RydWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1s
aXRlcmFsIC1vZmZzZXQgaW5kZW50CitzdHJ1Y3QgYnRfZGV2aW5mbworeworICAgICAgICBjaGFy
ICAgICAgICAgICAgZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworICAgICAgICB1aW50MzJf
dCAgICAgICAgc3RhdGU7CisKKyAgICAgICAgYmRhZGRyX3QgICAgICAgIGJkYWRkcjsKKyAgICAg
ICAgdWludDE2X3QgICAgICAgIF9yZXNlcnZlZDA7CisKKyAgICAgICAgdWludDhfdCAgICAgICAg
IGZlYXR1cmVzW0hDSV9ERVZGRUFUVVJFU19TSVpFXTsKKworICAgICAgICAvKiBidWZmZXIgaW5m
byAqLworICAgICAgICB1aW50MTZfdCAgICAgICAgX3Jlc2VydmVkMTsKKyAgICAgICAgdWludDE2
X3QgICAgICAgIGNtZF9mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgc2NvX3NpemU7Cisg
ICAgICAgIHVpbnQxNl90ICAgICAgICBzY29fcGt0czsKKyAgICAgICAgdWludDE2X3QgICAgICAg
IHNjb19mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgYWNsX3NpemU7CisgICAgICAgIHVp
bnQxNl90ICAgICAgICBhY2xfcGt0czsKKyAgICAgICAgdWludDE2X3QgICAgICAgIGFjbF9mcmVl
OworCisgICAgICAgIC8qIHN0YXRzICovCisgICAgICAgIHVpbnQzMl90ICAgICAgICBjbWRfc2Vu
dDsKKyAgICAgICAgdWludDMyX3QgICAgICAgIGV2bnRfcmVjdjsKKyAgICAgICAgdWludDMyX3Qg
ICAgICAgIGFjbF9yZWN2OworICAgICAgICB1aW50MzJfdCAgICAgICAgYWNsX3NlbnQ7CisgICAg
ICAgIHVpbnQzMl90ICAgICAgICBzY29fcmVjdjsKKyAgICAgICAgdWludDMyX3QgICAgICAgIHNj
b19zZW50OworICAgICAgICB1aW50MzJfdCAgICAgICAgYnl0ZXNfcmVjdjsKKyAgICAgICAgdWlu
dDMyX3QgICAgICAgIGJ5dGVzX3NlbnQ7CisKKyAgICAgICAgLyogbWlzYy9zcGVjaWZpYyAqLwor
ICAgICAgICB1aW50MTZfdCAgICAgICAgbGlua19wb2xpY3lfaW5mbzsKKyAgICAgICAgdWludDE2
X3QgICAgICAgIHBhY2tldF90eXBlX2luZm87CisgICAgICAgIHVpbnQxNl90ICAgICAgICByb2xl
X3N3aXRjaF9pbmZvOworICAgICAgICB1aW50MTZfdCAgICAgICAgZGVidWc7CisKKyAgICAgICAg
dWludDhfdCAgICAgICAgIF9wYWRkaW5nWzIwXTsKK307CisuRWQKKy5QcAorVGhlCisuRm4gYnRf
ZGV2ZW51bQorZnVuY3Rpb24gZW51bWVyYXRlcyB1cCB0bworLkR2IEhDSV9ERVZNQVgKK0JsdWV0
b290aCBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbS4KK0ZvciBldmVyeSBkZXZpY2UgZm91
bmQsCit0aGUgZnVuY3Rpb24gd2lsbCBjYWxsIHByb3ZpZGVkCisuRmEgY2IKK2NhbGxiYWNrIGZ1
bmN0aW9uIHdoaWNoIHNob3VsZCBiZSBvZgorLlZ0IGJ0X2RldmVudW1fY2JfdAordHlwZS4KK1Ro
ZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBwYXNzZWQgYSBjb25uZWN0ZWQKKy5EdiBIQ0kKK3NvY2tl
dAorLkZhIHMgLAorZnVsbHkgcG9wdWxhdGVkCisuVnQgYnRfZGV2aW5mbworc3RydWN0dXJlCisu
RmEgZGkKK2FuZAorLkZhIGFyZworYXJndW1lbnQgcHJvdmlkZWQgdG8gdGhlCisuRm4gYnRfZGV2
ZW51bSAuCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIHN0b3AgZW51bWVyYXRpb24gYnkgcmV0
dXJuaW5nIGEgdmFsdWUKK3RoYXQgaXMgZ3JlYXRlciB0aGFuIHplcm8uCitUaGUKKy5GbiBidF9k
ZXZlbnVtCit1c2VzIHRoZSBzYW1lIHNvY2tldCBmb3IgdGhlIGR1cmF0aW9uIG9mIGVudW1lcmF0
aW9uLgorVGhlIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCB0aGUgc29ja2V0LAorcGFzc2VkIHRv
IHRoZSBjYWxsYmFjayBmdW5jdGlvbiwKK3dpbGwgYmUgYm91bmQgYW5kIGNvbm5lY3RlZCB0byB0
aGUgQmx1ZXRvb3RoIGRldmljZSBiZWluZyBlbnVtZXJhdGVkLgorVGhlIGZ1bmN0aW9uIHJldHVy
bnMgbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSBlbnVtZXJhdGVkIGRldmljZXMsCitvdGhlcndpc2Ug
LTEuCisuUHAKK1RoZQogLkZuIGJkYWRkcl9zYW1lICwKIC5GbiBiZGFkZHJfYW55CiBhbmQKQEAg
LTI4Nyw3ICs0MDksOCBAQAogLlhyIGdldHByb3RvYnludW1iZXIgMyAsCiAuWHIgaGVycm9yIDMg
LAogLlhyIGluZXRfYXRvbiAzICwKLS5YciBpbmV0X250b2EgMworLlhyIGluZXRfbnRvYSAzICwK
Ky5YciBuZ19oY2kgNAogLlNoIENBVkVBVAogVGhlCiAuRm4gYnRfZ2V0aG9zdGVudApJbmRleDog
Ymx1ZXRvb3RoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmx1ZXRvb3RoLmMJKHJldmlzaW9uIDE4OTQxNCkK
KysrIGJsdWV0b290aC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsOSBAQAogLyoKICAqIGJs
dWV0b290aC5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMgTWFrc2ltIFlldm1lbmtp
biA8bV9ldm1lbmtpbkB5YWhvby5jb20+CisgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIw
MDEtMjAwOSBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkluZGV4OiBibHVldG9vdGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBibHVldG9vdGguaAkocmV2aXNpb24gMTg5NDE0KQorKysgYmx1ZXRvb3RoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw5IEBACiAvKgogICogYmx1ZXRvb3RoLmgKLSAqCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlh
aG9vLmNvbT4KKyAqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA5IE1ha3NpbSBZ
ZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM1LDkgKzM3LDEyIEBACiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8c3lzL2JpdHN0cmluZy5oPgogI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4K
KyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVk
ZSA8c3lzL3VuLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxuZXRkYi5oPgorI2lu
Y2x1ZGUgPG5ldGdyYXBoL25nX21lc3NhZ2UuaD4KICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9v
dGgvaW5jbHVkZS9uZ19oY2kuaD4KICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVk
ZS9uZ19sMmNhcC5oPgogI2luY2x1ZGUgPG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2J0
c29ja2V0Lmg+CkBAIC03Miw2ICs3Nyw2MyBAQAogY2hhciBjb25zdCAqICAgICAgYnRfbnRvYSAg
ICAgICAgICAgICAoYmRhZGRyX3QgY29uc3QgKmJhLCBjaGFyICpzdHIpOwogaW50ICAgICAgICAg
ICAgICAgYnRfYXRvbiAgICAgICAgICAgICAoY2hhciBjb25zdCAqc3RyLCBiZGFkZHJfdCAqYmEp
OwogCisvKiBidF9kZXZYWFhYKCkgZnVuY3Rpb25zIChpbnNwaXJlZCBieSBOZXRCU0QpICovCitp
bnQgICAgICAgICAgICAgICBidF9kZXZhZGRyICAgICAgICAgIChjaGFyIGNvbnN0ICpkZXZuYW1l
LCBiZGFkZHJfdCAqYWRkcik7CitpbnQgICAgICAgICAgICAgICBidF9kZXZuYW1lICAgICAgICAg
IChjaGFyICpkZXZuYW1lLCBiZGFkZHJfdCBjb25zdCAqYWRkcik7CisKKy8qIAorICogQmx1ZXRv
b3RoIEhDSSBmdW5jdGlvbnMKKyAqLworCisjZGVmaW5lCUhDSV9ERVZNQVgJCQkzMgkJLyogYXJi
aXRyYXJ5ICovCisjZGVmaW5lCUhDSV9ERVZOQU1FX1NJWkUJCU5HX05PREVTSVoKKyNkZWZpbmUJ
SENJX0RFVkZFQVRVUkVTX1NJWkUJCU5HX0hDSV9GRUFUVVJFU19TSVpFCisKK3N0cnVjdCBidF9k
ZXZpbmZvCit7CisJY2hhcgkJZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworCXVpbnQzMl90
CXN0YXRlOworCisJYmRhZGRyX3QJYmRhZGRyOworCXVpbnQxNl90CV9yZXNlcnZlZDA7CisKKwl1
aW50OF90CQlmZWF0dXJlc1tIQ0lfREVWRkVBVFVSRVNfU0laRV07CisKKwkvKiBidWZmZXIgaW5m
byAqLworCXVpbnQxNl90CV9yZXNlcnZlZDE7CisJdWludDE2X3QJY21kX2ZyZWU7CisJdWludDE2
X3QJc2NvX3NpemU7CisJdWludDE2X3QJc2NvX3BrdHM7CisJdWludDE2X3QJc2NvX2ZyZWU7CisJ
dWludDE2X3QJYWNsX3NpemU7CisJdWludDE2X3QJYWNsX3BrdHM7CisJdWludDE2X3QJYWNsX2Zy
ZWU7CisKKwkvKiBzdGF0cyAqLworCXVpbnQzMl90CWNtZF9zZW50OworCXVpbnQzMl90CWV2bnRf
cmVjdjsKKwl1aW50MzJfdAlhY2xfcmVjdjsKKwl1aW50MzJfdAlhY2xfc2VudDsKKwl1aW50MzJf
dAlzY29fcmVjdjsKKwl1aW50MzJfdAlzY29fc2VudDsKKwl1aW50MzJfdAlieXRlc19yZWN2Owor
CXVpbnQzMl90CWJ5dGVzX3NlbnQ7CisKKwkvKiBtaXNjL3NwZWNpZmljICovCisJdWludDE2X3QJ
bGlua19wb2xpY3lfaW5mbzsKKwl1aW50MTZfdAlwYWNrZXRfdHlwZV9pbmZvOworCXVpbnQxNl90
CXJvbGVfc3dpdGNoX2luZm87CisJdWludDE2X3QJZGVidWc7CisKKwl1aW50OF90CQlfcGFkZGlu
Z1syMF07CS8qIG1ha2UgaXQgMTI4IGJ5dGVzIGluIHNpemUgKi8KK307CisKK3R5cGVkZWYgaW50
CShidF9kZXZlbnVtX2NiX3QpKGludCwgc3RydWN0IGJ0X2RldmluZm8gY29uc3QgKiwgdm9pZCAq
KTsKKworaW50CQlidF9kZXZpbmZvIChzdHJ1Y3QgYnRfZGV2aW5mbyAqZGkpOworaW50CQlidF9k
ZXZlbnVtIChidF9kZXZlbnVtX2NiX3QgKmNiLCB2b2lkICphcmcpOworCiAvKgogICogYmRhZGRy
IHV0aWxpdHkgZnVuY3Rpb25zIChmcm9tIE5ldEJTRCkKICAqLwpJbmRleDogTWFrZWZpbGUKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTWFrZWZpbGUJKHJldmlzaW9uIDE4OTQxNCkKKysrIE1ha2VmaWxlCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQAogCiBTSExJQl9NQUpPUj0JMwogCi1TUkNTPQkJYmx1
ZXRvb3RoLmMKK1NSQ1M9CQlibHVldG9vdGguYyBkZXYuYyBoY2kuYwogSU5DUz0JCWJsdWV0b290
aC5oCiAKIE1MSU5LUys9CWJsdWV0b290aC4zIGJ0X2dldGhvc3RieW5hbWUuMwpAQCAtMjcsNiAr
MjcsMTIgQEAKIE1MSU5LUys9CWJsdWV0b290aC4zIGJ0X250b2EuMwogTUxJTktTKz0JYmx1ZXRv
b3RoLjMgYnRfYXRvbi4zCiAKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmFkZHIuMworTUxJ
TktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2bmFtZS4zCisKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0
X2RldmluZm8uMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZW51bS4zCisKIE1MSU5LUys9
CWJsdWV0b290aC4zIGJkYWRkcl9zYW1lLjMKIE1MSU5LUys9CWJsdWV0b290aC4zIGJkYWRkcl9h
bnkuMwogTUxJTktTKz0JYmx1ZXRvb3RoLjMgYmRhZGRyX2NvcHkuMwo=
--000e0cd17ea8558850046463d37d--



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