Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Jan 2016 05:02:06 +0000
From:      Phabricator <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Closed] D4972: hyperv/hn: Partly rework transmission path
Message-ID:  <d2ebb1e510a55e19fba0ba13c5d96832@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-dh7no3ven3cefij67n4k-req@FreeBSD.org>
References:  <differential-rev-PHID-DREV-dh7no3ven3cefij67n4k-req@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--b1_d2ebb1e510a55e19fba0ba13c5d96832
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

This revision was automatically updated to reflect the committed changes.
Closed by commit rS294700: hyperv/hn: Partly rework transmission path (authored by sephe).

CHANGED PRIOR TO COMMIT
  https://reviews.freebsd.org/D4972?vs=12444&id=12668#toc

REPOSITORY
  rS FreeBSD src repository

CHANGES SINCE LAST UPDATE
  https://reviews.freebsd.org/D4972?vs=12444&id=12668

REVISION DETAIL
  https://reviews.freebsd.org/D4972

AFFECTED FILES
  head/sys/dev/hyperv/netvsc/hv_net_vsc.c
  head/sys/dev/hyperv/netvsc/hv_net_vsc.h
  head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  head/sys/dev/hyperv/netvsc/hv_rndis.h
  head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
  head/sys/dev/hyperv/netvsc/hv_rndis_filter.h

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: sepherosa_gmail.com, delphij, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, royger, network, adrian
Cc: freebsd-net-list

--b1_d2ebb1e510a55e19fba0ba13c5d96832
Content-Type: text/x-patch; charset=utf-8; name="D4972.12668.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D4972.12668.patch"

ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzX2ZpbHRlci5o
IGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKLS0tIGEvaGVh
ZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKKysrIGIvaGVhZC9zeXMv
ZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKQEAgLTk5LDYgKzk5LDcgQEAKIGlu
dCBodl9yZl9vbl9yZWNlaXZlKG5ldHZzY19kZXYgKm5ldF9kZXYsCiAgICAgc3RydWN0IGh2X2Rl
dmljZSAqZGV2aWNlLCBuZXR2c2NfcGFja2V0ICpwa3QpOwogdm9pZCBodl9yZl9yZWNlaXZlX3Jv
bGx1cChuZXR2c2NfZGV2ICpuZXRfZGV2KTsKK3ZvaWQgaHZfcmZfY2hhbm5lbF9yb2xsdXAobmV0
dnNjX2RldiAqbmV0X2Rldik7CiBpbnQgaHZfcmZfb25fZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2
aWNlICpkZXZpY2UsIHZvaWQgKmFkZGl0bF9pbmZvKTsKIGludCBodl9yZl9vbl9kZXZpY2VfcmVt
b3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSwgYm9vbGVhbl90IGRlc3Ryb3lfY2hhbm5lbCk7
CiBpbnQgaHZfcmZfb25fb3BlbihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpOwpkaWZmIC0tZ2l0
IGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmMgYi9oZWFkL3N5
cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwotLS0gYS9oZWFkL3N5cy9kZXYv
aHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYworKysgYi9oZWFkL3N5cy9kZXYvaHlwZXJ2
L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwpAQCAtOTc0LDMgKzk3NCwyMSBAQAogCXJuZGlzX2Rl
diA9IChybmRpc19kZXZpY2UgKiluZXRfZGV2LT5leHRlbnNpb247CiAJbmV0dnNjX3JlY3Zfcm9s
bHVwKHJuZGlzX2Rldi0+bmV0X2Rldi0+ZGV2KTsKIH0KKwordm9pZAoraHZfcmZfY2hhbm5lbF9y
b2xsdXAobmV0dnNjX2RldiAqbmV0X2RldikKK3sKKwlybmRpc19kZXZpY2UgKnJuZGlzX2RldjsK
KworCXJuZGlzX2RldiA9IChybmRpc19kZXZpY2UgKiluZXRfZGV2LT5leHRlbnNpb247CisKKwkv
KgorCSAqIFRoaXMgY291bGQgYmUgY2FsbGVkIHByZXR0eSBlYXJseSwgc28gd2UgbmVlZAorCSAq
IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGhhcyBiZWVuIHNldHVwLgorCSAqLworCWlmIChybmRp
c19kZXYgPT0gTlVMTCB8fAorCSAgICBybmRpc19kZXYtPm5ldF9kZXYgPT0gTlVMTCB8fAorCSAg
ICBybmRpc19kZXYtPm5ldF9kZXYtPmRldiA9PSBOVUxMKQorCQlyZXR1cm47CisJbmV0dnNjX2No
YW5uZWxfcm9sbHVwKHJuZGlzX2Rldi0+bmV0X2Rldi0+ZGV2KTsKK30KZGlmZiAtLWdpdCBhL2hl
YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzLmggYi9oZWFkL3N5cy9kZXYvaHlwZXJ2
L25ldHZzYy9odl9ybmRpcy5oCi0tLSBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3Ju
ZGlzLmgKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaApAQCAtMTA1
MCw2ICsxMDUwLDcgQEAKICAgICBuZXR2c2NfcGFja2V0ICpwYWNrZXQsIAogICAgIHJuZGlzX3Rj
cF9pcF9jc3VtX2luZm8gKmNzdW1faW5mbyk7CiB2b2lkIG5ldHZzY19yZWN2X3JvbGx1cChzdHJ1
Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4KTsKK3ZvaWQgbmV0dnNjX2NoYW5uZWxfcm9sbHVwKHN0
cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHgpOwogCiB2b2lkKiBodl9zZXRfcnBwaV9kYXRhKHJu
ZGlzX21zZyAqcm5kaXNfbWVzZywKICAgICB1aW50MzJfdCBycHBpX3NpemUsCmRpZmYgLS1naXQg
YS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYyBiL2hl
YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCi0tLSBhL2hl
YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCisrKyBiL2hl
YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0xMjks
NiArMTI5LDQxIEBACiAjZGVmaW5lIEhWX05WX1NDX1BUUl9PRkZTRVRfSU5fQlVGICAgICAgICAg
MAogI2RlZmluZSBIVl9OVl9QQUNLRVRfT0ZGU0VUX0lOX0JVRiAgICAgICAgIDE2CiAKKy8qIFlZ
WSBzaG91bGQgZ2V0IGl0IGZyb20gdGhlIHVuZGVybHlpbmcgY2hhbm5lbCAqLworI2RlZmluZSBI
Tl9UWF9ERVNDX0NOVAkJCTUxMgorCisjZGVmaW5lIEhOX1JORElTX01TR19MRU4JCVwKKyAgICAo
c2l6ZW9mKHJuZGlzX21zZykgKwkJXAorICAgICBSTkRJU19WTEFOX1BQSV9TSVpFICsJCVwKKyAg
ICAgUk5ESVNfVFNPX1BQSV9TSVpFICsJCVwKKyAgICAgUk5ESVNfQ1NVTV9QUElfU0laRSkKKyNk
ZWZpbmUgSE5fUk5ESVNfTVNHX0JPVU5EQVJZCQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fUk5ESVNf
TVNHX0FMSUdOCQlDQUNIRV9MSU5FX1NJWkUKKworI2RlZmluZSBITl9UWF9EQVRBX0JPVU5EQVJZ
CQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fVFhfREFUQV9NQVhTSVpFCQlJUF9NQVhQQUNLRVQKKyNk
ZWZpbmUgSE5fVFhfREFUQV9TRUdTSVpFCQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fVFhfREFUQV9T
RUdDTlRfTUFYCQlcCisgICAgKE5FVFZTQ19QQUNLRVRfTUFYUEFHRSAtIEhWX1JGX05VTV9UWF9S
RVNFUlZFRF9QQUdFX0JVRlMpCisKK3N0cnVjdCBobl90eGRlc2MgeworCVNMSVNUX0VOVFJZKGhu
X3R4ZGVzYykgbGluazsKKwlzdHJ1Y3QgbWJ1ZgkqbTsKKwlzdHJ1Y3QgaG5fc29mdGMJKnNjOwor
CWludAkJcmVmczsKKwl1aW50MzJfdAlmbGFnczsJCS8qIEhOX1RYRF9GTEFHXyAqLworCW5ldHZz
Y19wYWNrZXQJbmV0dnNjX3BrdDsJLyogWFhYIHRvIGJlIHJlbW92ZWQgKi8KKworCWJ1c19kbWFt
YXBfdAlkYXRhX2RtYXA7CisKKwlidXNfYWRkcl90CXJuZGlzX21zZ19wYWRkcjsKKwlybmRpc19t
c2cJKnJuZGlzX21zZzsKKwlidXNfZG1hbWFwX3QJcm5kaXNfbXNnX2RtYXA7Cit9OworCisjZGVm
aW5lIEhOX1RYRF9GTEFHX09OTElTVAkweDEKKyNkZWZpbmUgSE5fVFhEX0ZMQUdfRE1BTUFQCTB4
MgorCiAvKgogICogQSB1bmlmaWVkIGZsYWcgZm9yIGFsbCBvdXRib3VuZCBjaGVjayBzdW0gZmxh
Z3MgaXMgdXNlZnVsLAogICogYW5kIGl0IGhlbHBzIGF2b2lkaW5nIHVubmVjZXNzYXJ5IGNoZWNr
IHN1bSBjYWxjdWxhdGlvbiBpbgpAQCAtMTc0LDIxICsyMDksMzQgQEAKIHN0YXRpYyBpbnQgaG5f
dHJ1c3RfaG9zdHRjcCA9IDA7CiBUVU5BQkxFX0lOVCgiZGV2LmhuLnRydXN0X2hvc3R0Y3AiLCAm
aG5fdHJ1c3RfaG9zdHRjcCk7CiAKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDQ1Cisv
KiBMaW1pdCBUU08gYnVyc3Qgc2l6ZSAqLworc3RhdGljIGludCBobl90c29fbWF4bGVuID0gMDsK
K1RVTkFCTEVfSU5UKCJkZXYuaG4udHNvX21heGxlbiIsICZobl90c29fbWF4bGVuKTsKKyNlbmRp
ZgorCisvKiBMaW1pdCBjaGltbmV5IHNlbmQgc2l6ZSAqLworc3RhdGljIGludCBobl90eF9jaGlt
bmV5X3NpemUgPSAwOworVFVOQUJMRV9JTlQoImRldi5obi50eF9jaGltbmV5X3NpemUiLCAmaG5f
dHhfY2hpbW5leV9zaXplKTsKKwogLyoKICAqIEZvcndhcmQgZGVjbGFyYXRpb25zCiAgKi8KIHN0
YXRpYyB2b2lkIGhuX3N0b3AoaG5fc29mdGNfdCAqc2MpOwogc3RhdGljIHZvaWQgaG5faWZpbml0
X2xvY2tlZChobl9zb2Z0Y190ICpzYyk7CiBzdGF0aWMgdm9pZCBobl9pZmluaXQodm9pZCAqeHNj
KTsKIHN0YXRpYyBpbnQgIGhuX2lvY3RsKHN0cnVjdCBpZm5ldCAqaWZwLCB1X2xvbmcgY21kLCBj
YWRkcl90IGRhdGEpOwotc3RhdGljIGludCAgaG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAq
aWZwKTsKK3N0YXRpYyB2b2lkIGhuX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBz
dGF0aWMgdm9pZCBobl9zdGFydChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBzdGF0aWMgaW50IGhuX2lm
bWVkaWFfdXBkKHN0cnVjdCBpZm5ldCAqaWZwKTsKIHN0YXRpYyB2b2lkIGhuX2lmbWVkaWFfc3Rz
KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtZWRpYXJlcSAqaWZtcik7CiAjaWZkZWYgSE5f
TFJPX0hJV0FUCiBzdGF0aWMgaW50IGhuX2xyb19oaXdhdF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJf
QVJHUyk7CiAjZW5kaWYKK3N0YXRpYyBpbnQgaG5fdHhfY2hpbW5leV9zaXplX3N5c2N0bChTWVND
VExfSEFORExFUl9BUkdTKTsKIHN0YXRpYyBpbnQgaG5fY2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0
IG1idWYgKiwgaW50KTsKK3N0YXRpYyBpbnQgaG5fY3JlYXRlX3R4X3Jpbmcoc3RydWN0IGhuX3Nv
ZnRjICpzYyk7CitzdGF0aWMgdm9pZCBobl9kZXN0cm95X3R4X3Jpbmcoc3RydWN0IGhuX3NvZnRj
ICpzYyk7CiAKIHN0YXRpYyBfX2lubGluZSB2b2lkCiBobl9zZXRfbHJvX2hpd2F0KHN0cnVjdCBo
bl9zb2Z0YyAqc2MsIGludCBoaXdhdCkKQEAgLTMxOCwxMCArMzY2LDEzIEBACiAJbmV0dnNjX2Rl
dmljZV9pbmZvIGRldmljZV9pbmZvOwogCWhuX3NvZnRjX3QgKnNjOwogCWludCB1bml0ID0gZGV2
aWNlX2dldF91bml0KGRldik7Ci0Jc3RydWN0IGlmbmV0ICppZnA7CisJc3RydWN0IGlmbmV0ICpp
ZnAgPSBOVUxMOwogCXN0cnVjdCBzeXNjdGxfb2lkX2xpc3QgKmNoaWxkOwogCXN0cnVjdCBzeXNj
dGxfY3R4X2xpc3QgKmN0eDsKLQlpbnQgcmV0OworCWludCBlcnJvcjsKKyNpZiBfX0ZyZWVCU0Rf
dmVyc2lvbiA+PSAxMTAwMDQ1CisJaW50IHRzb19tYXhsZW47CisjZW5kaWYKIAogCXNjID0gZGV2
aWNlX2dldF9zb2Z0YyhkZXYpOwogCWlmIChzYyA9PSBOVUxMKSB7CkBAIC0zMzQsNiArMzg1LDEw
IEBACiAJc2MtPmhuX2xyb19oaXdhdCA9IEhOX0xST19ISVdBVF9ERUY7CiAJc2MtPmhuX3RydXN0
X2hvc3R0Y3AgPSBobl90cnVzdF9ob3N0dGNwOwogCisJZXJyb3IgPSBobl9jcmVhdGVfdHhfcmlu
ZyhzYyk7CisJaWYgKGVycm9yKQorCQlnb3RvIGZhaWxlZDsKKwogCU5WX0xPQ0tfSU5JVChzYywg
Ik5ldFZTQ0xvY2siKTsKIAogCXNjLT5obl9kZXZfb2JqID0gZGV2aWNlX2N0eDsKQEAgLTM4MSwx
MiArNDM2LDEwIEBACiAJZWxzZQogCQlpZnAtPmlmX2h3YXNzaXN0ID0gQ1NVTV9UQ1AgfCBDU1VN
X1RTTzsKIAotCXJldCA9IGh2X3JmX29uX2RldmljZV9hZGQoZGV2aWNlX2N0eCwgJmRldmljZV9p
bmZvKTsKLQlpZiAocmV0ICE9IDApIHsKLQkJaWZfZnJlZShpZnApOworCWVycm9yID0gaHZfcmZf
b25fZGV2aWNlX2FkZChkZXZpY2VfY3R4LCAmZGV2aWNlX2luZm8pOworCWlmIChlcnJvcikKKwkJ
Z290byBmYWlsZWQ7CiAKLQkJcmV0dXJuIChyZXQpOwotCX0KIAlpZiAoZGV2aWNlX2luZm8ubGlu
a19zdGF0ZSA9PSAwKSB7CiAJCXNjLT5obl9jYXJyaWVyID0gMTsKIAl9CkBAIC00MDAsOCArNDUz
LDMwIEBACiAjZW5kaWYKICNlbmRpZgkvKiBJTkVUIHx8IElORVQ2ICovCiAKKyNpZiBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSAxMTAwMDQ1CisJdHNvX21heGxlbiA9IGhuX3Rzb19tYXhsZW47CisJaWYg
KHRzb19tYXhsZW4gPD0gMCB8fCB0c29fbWF4bGVuID4gSVBfTUFYUEFDS0VUKQorCQl0c29fbWF4
bGVuID0gSVBfTUFYUEFDS0VUOworCisJaWZwLT5pZl9od190c29tYXhzZWdjb3VudCA9IEhOX1RY
X0RBVEFfU0VHQ05UX01BWDsKKwlpZnAtPmlmX2h3X3Rzb21heHNlZ3NpemUgPSBQQUdFX1NJWkU7
CisJaWZwLT5pZl9od190c29tYXggPSB0c29fbWF4bGVuIC0KKwkgICAgKEVUSEVSX0hEUl9MRU4g
KyBFVEhFUl9WTEFOX0VOQ0FQX0xFTik7CisjZW5kaWYKKwogCWV0aGVyX2lmYXR0YWNoKGlmcCwg
ZGV2aWNlX2luZm8ubWFjX2FkZHIpOwogCisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDA0
NQorCWlmX3ByaW50ZihpZnAsICJUU086ICV1LyV1LyV1XG4iLCBpZnAtPmlmX2h3X3Rzb21heCwK
KwkgICAgaWZwLT5pZl9od190c29tYXhzZWdjb3VudCwgaWZwLT5pZl9od190c29tYXhzZWdzaXpl
KTsKKyNlbmRpZgorCisJc2MtPmhuX3R4X2NoaW1uZXlfbWF4ID0gc2MtPm5ldF9kZXYtPnNlbmRf
c2VjdGlvbl9zaXplOworCXNjLT5obl90eF9jaGltbmV5X3NpemUgPSBzYy0+aG5fdHhfY2hpbW5l
eV9tYXg7CisJaWYgKGhuX3R4X2NoaW1uZXlfc2l6ZSA+IDAgJiYKKwkgICAgaG5fdHhfY2hpbW5l
eV9zaXplIDwgc2MtPmhuX3R4X2NoaW1uZXlfbWF4KQorCQlzYy0+aG5fdHhfY2hpbW5leV9zaXpl
ID0gaG5fdHhfY2hpbW5leV9zaXplOworCiAJY3R4ID0gZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRl
dik7CiAJY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNjdGxfdHJlZShkZXYp
KTsKIApAQCAtNDI5LDYgKzUwNCwyNiBAQAogCSAgICAiIyBvZiBUQ1Agc2VnZW1lbnRzIHRoYXQg
d2UgdHJ1c3QgaG9zdCdzIGNzdW0gdmVyaWZpY2F0aW9uIik7CiAJU1lTQ1RMX0FERF9VTE9ORyhj
dHgsIGNoaWxkLCBPSURfQVVUTywgInNtYWxsX3BrdHMiLAogCSAgICBDVExGTEFHX1JXLCAmc2Mt
PmhuX3NtYWxsX3BrdHMsICIjIG9mIHNtYWxsIHBhY2tldHMgcmVjZWl2ZWQiKTsKKwlTWVNDVExf
QUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAibm9fdHhkZXNjcyIsCisJICAgIENUTEZM
QUdfUlcsICZzYy0+aG5fbm9fdHhkZXNjcywgIiMgb2YgdGltZXMgc2hvcnQgb2YgVFggZGVzY3Mi
KTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAic2VuZF9mYWlsZWQi
LAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX3NlbmRfZmFpbGVkLCAiIyBvZiBoeXBlci12IHNl
bmRpbmcgZmFpbHVyZSIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8s
ICJ0eGRtYV9mYWlsZWQiLAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX3R4ZG1hX2ZhaWxlZCwg
IiMgb2YgVFggRE1BIGZhaWx1cmUiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9J
RF9BVVRPLCAidHhfY29sbGFwc2VkIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl90eF9jb2xs
YXBzZWQsICIjIG9mIFRYIG1idWYgY29sbGFwc2VkIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgs
IGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXkiLAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhu
X3R4X2NoaW1uZXksICIjIG9mIGNoaW1uZXkgc2VuZCIpOworCVNZU0NUTF9BRERfSU5UKGN0eCwg
Y2hpbGQsIE9JRF9BVVRPLCAidHhkZXNjX2NudCIsCisJICAgIENUTEZMQUdfUkQsICZzYy0+aG5f
dHhkZXNjX2NudCwgMCwgIiMgb2YgdG90YWwgVFggZGVzY3MiKTsKKwlTWVNDVExfQUREX0lOVChj
dHgsIGNoaWxkLCBPSURfQVVUTywgInR4ZGVzY19hdmFpbCIsCisJICAgIENUTEZMQUdfUkQsICZz
Yy0+aG5fdHhkZXNjX2F2YWlsLCAwLCAiIyBvZiBhdmFpbGFibGUgVFggZGVzY3MiKTsKKwlTWVND
VExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfbWF4IiwKKwkgICAg
Q1RMRkxBR19SRCwgJnNjLT5obl90eF9jaGltbmV5X21heCwgMCwKKwkgICAgIkNoaW1uZXkgc2Vu
ZCBwYWNrZXQgc2l6ZSB1cHBlciBib3VuZGFyeSIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNo
aWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfc2l6ZSIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RM
RkxBR19SVywgc2MsIDAsIGhuX3R4X2NoaW1uZXlfc2l6ZV9zeXNjdGwsCisJICAgICJJIiwgIkNo
aW1uZXkgc2VuZCBwYWNrZXQgc2l6ZSBsaW1pdCIpOwogCiAJaWYgKHVuaXQgPT0gMCkgewogCQlz
dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpkY19jdHg7CkBAIC00NDYsOSArNTQxLDIxIEBACiAJCSAg
ICBDVExGTEFHX1JELCAmaG5fdHJ1c3RfaG9zdHRjcCwgMCwKIAkJICAgICJUcnVzdCB0Y3Agc2Vn
ZW1lbnQgdmVyaWZpY2F0aW9uIG9uIGhvc3Qgc2lkZSwgIgogCQkgICAgIndoZW4gY3N1bSBpbmZv
IGlzIG1pc3NpbmcgKGdsb2JhbCBzZXR0aW5nKSIpOworCQlTWVNDVExfQUREX0lOVChkY19jdHgs
IGRjX2NoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfc2l6ZSIsCisJCSAgICBDVExGTEFHX1JE
LCAmaG5fdHhfY2hpbW5leV9zaXplLCAwLAorCQkgICAgIkNoaW1uZXkgc2VuZCBwYWNrZXQgc2l6
ZSBsaW1pdCIpOworI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwNDUKKwkJU1lTQ1RMX0FE
RF9JTlQoZGNfY3R4LCBkY19jaGlsZCwgT0lEX0FVVE8sICJ0c29fbWF4bGVuIiwKKwkJICAgIENU
TEZMQUdfUkQsICZobl90c29fbWF4bGVuLCAwLCAiVFNPIGJ1cnN0IGxpbWl0Iik7CisjZW5kaWYK
IAl9CiAKIAlyZXR1cm4gKDApOworZmFpbGVkOgorCWhuX2Rlc3Ryb3lfdHhfcmluZyhzYyk7CisJ
aWYgKGlmcCAhPSBOVUxMKQorCQlpZl9mcmVlKGlmcCk7CisJcmV0dXJuIChlcnJvcik7CiB9CiAK
IC8qCkBAIC00ODAsNiArNTg3LDcgQEAKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCiAJdGNwX2xyb19mcmVlKCZzYy0+aG5fbHJvKTsKICNlbmRpZgorCWhuX2Rlc3Ryb3lfdHhf
cmluZyhzYyk7CiAKIAlyZXR1cm4gKDApOwogfQpAQCAtNDkzLDYgKzYwMSwxMTIgQEAKIAlyZXR1
cm4gKDApOwogfQogCitzdGF0aWMgX19pbmxpbmUgaW50Citobl90eGRlc2NfZG1hbWFwX2xvYWQo
c3RydWN0IGhuX3NvZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkLAorICAgIHN0cnVjdCBt
YnVmICoqbV9oZWFkLCBidXNfZG1hX3NlZ21lbnRfdCAqc2VncywgaW50ICpuc2VncykKK3sKKwlz
dHJ1Y3QgbWJ1ZiAqbSA9ICptX2hlYWQ7CisJaW50IGVycm9yOworCisJZXJyb3IgPSBidXNfZG1h
bWFwX2xvYWRfbWJ1Zl9zZyhzYy0+aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFfZG1hcCwKKwkg
ICAgbSwgc2VncywgbnNlZ3MsIEJVU19ETUFfTk9XQUlUKTsKKwlpZiAoZXJyb3IgPT0gRUZCSUcp
IHsKKwkJc3RydWN0IG1idWYgKm1fbmV3OworCisJCW1fbmV3ID0gbV9jb2xsYXBzZShtLCBNX05P
V0FJVCwgSE5fVFhfREFUQV9TRUdDTlRfTUFYKTsKKwkJaWYgKG1fbmV3ID09IE5VTEwpCisJCQly
ZXR1cm4gRU5PQlVGUzsKKwkJZWxzZQorCQkJKm1faGVhZCA9IG0gPSBtX25ldzsKKwkJc2MtPmhu
X3R4X2NvbGxhcHNlZCsrOworCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkX21idWZfc2coc2Mt
PmhuX3R4X2RhdGFfZHRhZywKKwkJICAgIHR4ZC0+ZGF0YV9kbWFwLCBtLCBzZWdzLCBuc2Vncywg
QlVTX0RNQV9OT1dBSVQpOworCX0KKwlpZiAoIWVycm9yKSB7CisJCWJ1c19kbWFtYXBfc3luYyhz
Yy0+aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFfZG1hcCwKKwkJICAgIEJVU19ETUFTWU5DX1BS
RVdSSVRFKTsKKwkJdHhkLT5mbGFncyB8PSBITl9UWERfRkxBR19ETUFNQVA7CisJfQorCXJldHVy
biBlcnJvcjsKK30KKworc3RhdGljIF9faW5saW5lIHZvaWQKK2huX3R4ZGVzY19kbWFtYXBfdW5s
b2FkKHN0cnVjdCBobl9zb2Z0YyAqc2MsIHN0cnVjdCBobl90eGRlc2MgKnR4ZCkKK3sKKworCWlm
ICh0eGQtPmZsYWdzICYgSE5fVFhEX0ZMQUdfRE1BTUFQKSB7CisJCWJ1c19kbWFtYXBfc3luYyhz
Yy0+aG5fdHhfZGF0YV9kdGFnLAorCQkgICAgdHhkLT5kYXRhX2RtYXAsIEJVU19ETUFTWU5DX1BP
U1RXUklURSk7CisJCWJ1c19kbWFtYXBfdW5sb2FkKHNjLT5obl90eF9kYXRhX2R0YWcsCisJCSAg
ICB0eGQtPmRhdGFfZG1hcCk7CisJCXR4ZC0+ZmxhZ3MgJj0gfkhOX1RYRF9GTEFHX0RNQU1BUDsK
Kwl9Cit9CisKK3N0YXRpYyBfX2lubGluZSBpbnQKK2huX3R4ZGVzY19wdXQoc3RydWN0IGhuX3Nv
ZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkKQoreworCisJS0FTU0VSVCgodHhkLT5mbGFn
cyAmIEhOX1RYRF9GTEFHX09OTElTVCkgPT0gMCwKKwkgICAgKCJwdXQgYW4gb25saXN0IHR4ZCAl
I3giLCB0eGQtPmZsYWdzKSk7CisKKwlLQVNTRVJUKHR4ZC0+cmVmcyA+IDAsICgiaW52YWxpZCB0
eGQgcmVmcyAlZCIsIHR4ZC0+cmVmcykpOworCWlmIChhdG9taWNfZmV0Y2hhZGRfaW50KCZ0eGQt
PnJlZnMsIC0xKSAhPSAxKQorCQlyZXR1cm4gMDsKKworCWhuX3R4ZGVzY19kbWFtYXBfdW5sb2Fk
KHNjLCB0eGQpOworCWlmICh0eGQtPm0gIT0gTlVMTCkgeworCQltX2ZyZWVtKHR4ZC0+bSk7CisJ
CXR4ZC0+bSA9IE5VTEw7CisJfQorCisJdHhkLT5mbGFncyB8PSBITl9UWERfRkxBR19PTkxJU1Q7
CisKKwltdHhfbG9ja19zcGluKCZzYy0+aG5fdHhsaXN0X3NwaW4pOworCUtBU1NFUlQoc2MtPmhu
X3R4ZGVzY19hdmFpbCA+PSAwICYmCisJICAgIHNjLT5obl90eGRlc2NfYXZhaWwgPCBzYy0+aG5f
dHhkZXNjX2NudCwKKwkgICAgKCJ0eGRlc2NfcHV0OiBpbnZhbGlkIHR4ZCBhdmFpbCAlZCIsIHNj
LT5obl90eGRlc2NfYXZhaWwpKTsKKwlzYy0+aG5fdHhkZXNjX2F2YWlsKys7CisJU0xJU1RfSU5T
RVJUX0hFQUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGluayk7CisJbXR4X3VubG9ja19zcGluKCZz
Yy0+aG5fdHhsaXN0X3NwaW4pOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBfX2lubGluZSBz
dHJ1Y3QgaG5fdHhkZXNjICoKK2huX3R4ZGVzY19nZXQoc3RydWN0IGhuX3NvZnRjICpzYykKK3sK
KwlzdHJ1Y3QgaG5fdHhkZXNjICp0eGQ7CisKKwltdHhfbG9ja19zcGluKCZzYy0+aG5fdHhsaXN0
X3NwaW4pOworCXR4ZCA9IFNMSVNUX0ZJUlNUKCZzYy0+aG5fdHhsaXN0KTsKKwlpZiAodHhkICE9
IE5VTEwpIHsKKwkJS0FTU0VSVChzYy0+aG5fdHhkZXNjX2F2YWlsID4gMCwKKwkJICAgICgidHhk
ZXNjX2dldDogaW52YWxpZCB0eGQgYXZhaWwgJWQiLCBzYy0+aG5fdHhkZXNjX2F2YWlsKSk7CisJ
CXNjLT5obl90eGRlc2NfYXZhaWwtLTsKKwkJU0xJU1RfUkVNT1ZFX0hFQUQoJnNjLT5obl90eGxp
c3QsIGxpbmspOworCX0KKwltdHhfdW5sb2NrX3NwaW4oJnNjLT5obl90eGxpc3Rfc3Bpbik7CisK
KwlpZiAodHhkICE9IE5VTEwpIHsKKwkJS0FTU0VSVCh0eGQtPm0gPT0gTlVMTCAmJiB0eGQtPnJl
ZnMgPT0gMCAmJgorCQkgICAgKHR4ZC0+ZmxhZ3MgJiBITl9UWERfRkxBR19PTkxJU1QpLCAoImlu
dmFsaWQgdHhkIikpOworCQl0eGQtPmZsYWdzICY9IH5ITl9UWERfRkxBR19PTkxJU1Q7CisJCXR4
ZC0+cmVmcyA9IDE7CisJfQorCXJldHVybiB0eGQ7Cit9CisKK3N0YXRpYyBfX2lubGluZSB2b2lk
Citobl90eGRlc2NfaG9sZChzdHJ1Y3QgaG5fdHhkZXNjICp0eGQpCit7CisKKwkvKiAwLT4xIHRy
YW5zaXRpb24gd2lsbCBuZXZlciB3b3JrICovCisJS0FTU0VSVCh0eGQtPnJlZnMgPiAwLCAoImlu
dmFsaWQgcmVmcyAlZCIsIHR4ZC0+cmVmcykpOworCWF0b21pY19hZGRfaW50KCZ0eGQtPnJlZnMs
IDEpOworfQorCiAvKgogICogU2VuZCBjb21wbGV0aW9uIHByb2Nlc3NpbmcKICAqCkBAIC01MDMs
MTI5ICs3MTcsOTggQEAKIHZvaWQKIG5ldHZzY194bWl0X2NvbXBsZXRpb24odm9pZCAqY29udGV4
dCkKIHsKLQluZXR2c2NfcGFja2V0ICpwYWNrZXQgPSAobmV0dnNjX3BhY2tldCAqKWNvbnRleHQ7
Ci0Jc3RydWN0IG1idWYgKm1iOwotCXVpbnQ4X3QgKmJ1ZjsKKwluZXR2c2NfcGFja2V0ICpwYWNr
ZXQgPSBjb250ZXh0OworCXN0cnVjdCBobl90eGRlc2MgKnR4ZDsKKwlzdHJ1Y3QgaG5fc29mdGMg
KnNjOworCisJdHhkID0gKHN0cnVjdCBobl90eGRlc2MgKikodWludHB0cl90KQorCSAgICBwYWNr
ZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX3RpZDsKKworCXNjID0gdHhkLT5zYzsKKwlz
Yy0+aG5fdHhlb2YgPSAxOworCWhuX3R4ZGVzY19wdXQoc2MsIHR4ZCk7Cit9CiAKLQltYiA9IChz
dHJ1Y3QgbWJ1ZiAqKSh1aW50cHRyX3QpcGFja2V0LT5jb21wbC5zZW5kLnNlbmRfY29tcGxldGlv
bl90aWQ7Ci0JYnVmID0gKCh1aW50OF90ICopcGFja2V0KSAtIEhWX05WX1BBQ0tFVF9PRkZTRVRf
SU5fQlVGOwordm9pZAorbmV0dnNjX2NoYW5uZWxfcm9sbHVwKHN0cnVjdCBodl9kZXZpY2UgKmRl
dmljZV9jdHgpCit7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2
aWNlX2N0eC0+ZGV2aWNlKTsKKwlzdHJ1Y3QgaWZuZXQgKmlmcDsKIAotCWZyZWUoYnVmLCBNX05F
VFZTQyk7CisJaWYgKCFzYy0+aG5fdHhlb2YpCisJCXJldHVybjsKIAotCWlmIChtYiAhPSBOVUxM
KSB7Ci0JCW1fZnJlZW0obWIpOwotCX0KKwlzYy0+aG5fdHhlb2YgPSAwOworCWlmcCA9IHNjLT5o
bl9pZnA7CisJTlZfTE9DSyhzYyk7CisJaWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9EUlZfT0FD
VElWRTsKKwlobl9zdGFydF9sb2NrZWQoaWZwKTsKKwlOVl9VTkxPQ0soc2MpOwogfQogCiAvKgog
ICogU3RhcnQgYSB0cmFuc21pdCBvZiBvbmUgb3IgbW9yZSBwYWNrZXRzCiAgKi8KLXN0YXRpYyBp
bnQKK3N0YXRpYyB2b2lkCiBobl9zdGFydF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApCiB7CiAJ
aG5fc29mdGNfdCAqc2MgPSBpZnAtPmlmX3NvZnRjOwogCXN0cnVjdCBodl9kZXZpY2UgKmRldmlj
ZV9jdHggPSB2bWJ1c19nZXRfZGV2Y3R4KHNjLT5obl9kZXYpOwogCW5ldHZzY19kZXYgKm5ldF9k
ZXYgPSBzYy0+bmV0X2RldjsKLQlkZXZpY2VfdCBkZXYgPSBkZXZpY2VfY3R4LT5kZXZpY2U7Ci0J
dWludDhfdCAqYnVmOwogCW5ldHZzY19wYWNrZXQgKnBhY2tldDsKIAlzdHJ1Y3QgbWJ1ZiAqbV9o
ZWFkLCAqbTsKLQlzdHJ1Y3QgbWJ1ZiAqbWNfaGVhZCA9IE5VTEw7CiAJc3RydWN0IGV0aGVyX3Zs
YW5faGVhZGVyICplaDsKIAlybmRpc19tc2cgKnJuZGlzX21lc2c7CiAJcm5kaXNfcGFja2V0ICpy
bmRpc19wa3Q7CiAJcm5kaXNfcGVyX3BhY2tldF9pbmZvICpycHBpOwogCW5kaXNfODAyMXFfaW5m
byAqcnBwaV92bGFuX2luZm87CiAJcm5kaXNfdGNwX2lwX2NzdW1faW5mbyAqY3N1bV9pbmZvOwog
CXJuZGlzX3RjcF90c29faW5mbyAqdHNvX2luZm87CQogCWludCBldGhlcl9sZW47Ci0JaW50IGk7
Ci0JaW50IG51bV9mcmFnczsKLQlpbnQgbGVuOwotCWludCByZXRyaWVzID0gMDsKLQlpbnQgcmV0
ID0gMDsJCiAJdWludDMyX3Qgcm5kaXNfbXNnX3NpemUgPSAwOwogCXVpbnQzMl90IHRyYW5zX3By
b3RvX3R5cGU7CiAJdWludDMyX3Qgc2VuZF9idWZfc2VjdGlvbl9pZHggPQogCSAgICBOVlNQXzFf
Q0hJTU5FWV9TRU5EX0lOVkFMSURfU0VDVElPTl9JTkRFWDsKIAotCXdoaWxlICghSUZRX0RSVl9J
U19FTVBUWSgmc2MtPmhuX2lmcC0+aWZfc25kKSkgewotCQlJRlFfRFJWX0RFUVVFVUUoJnNjLT5o
bl9pZnAtPmlmX3NuZCwgbV9oZWFkKTsKLQkJaWYgKG1faGVhZCA9PSBOVUxMKSB7Ci0JCQlicmVh
azsKLQkJfQotCi0JCWxlbiA9IDA7Ci0JCW51bV9mcmFncyA9IDA7Ci0KLQkJLyogV2FsayB0aGUg
bWJ1ZiBsaXN0IGNvbXB1dGluZyB0b3RhbCBsZW5ndGggYW5kIG51bSBmcmFncyAqLwotCQlmb3Ig
KG0gPSBtX2hlYWQ7IG0gIT0gTlVMTDsgbSA9IG0tPm1fbmV4dCkgewotCQkJaWYgKG0tPm1fbGVu
ICE9IDApIHsKLQkJCQludW1fZnJhZ3MrKzsKLQkJCQlsZW4gKz0gbS0+bV9sZW47Ci0JCQl9Ci0J
CX0KKwlpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdzICYgKElGRl9EUlZfUlVOTklORyB8IElGRl9EUlZf
T0FDVElWRSkpICE9CisJICAgIElGRl9EUlZfUlVOTklORykKKwkJcmV0dXJuOwogCi0JCS8qCi0J
CSAqIFJlc2VydmUgdGhlIG51bWJlciBvZiBwYWdlcyByZXF1ZXN0ZWQuICBDdXJyZW50bHksCi0J
CSAqIG9uZSBwYWdlIGlzIHJlc2VydmVkIGZvciB0aGUgbWVzc2FnZSBpbiB0aGUgUk5ESVMKLQkJ
ICogZmlsdGVyIHBhY2tldAotCQkgKi8KLQkJbnVtX2ZyYWdzICs9IEhWX1JGX05VTV9UWF9SRVNF
UlZFRF9QQUdFX0JVRlM7CisJd2hpbGUgKCFJRlFfRFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkp
IHsKKwkJYnVzX2RtYV9zZWdtZW50X3Qgc2Vnc1tITl9UWF9EQVRBX1NFR0NOVF9NQVhdOworCQlp
bnQgZXJyb3IsIG5zZWdzLCBpLCBzZW5kX2ZhaWxlZCA9IDA7CisJCXN0cnVjdCBobl90eGRlc2Mg
KnR4ZDsKIAotCQkvKiBJZiBleGNlZWRzICMgcGFnZV9idWZmZXJzIGluIG5ldHZzY19wYWNrZXQg
Ki8KLQkJaWYgKG51bV9mcmFncyA+IE5FVFZTQ19QQUNLRVRfTUFYUEFHRSkgewotCQkJZGV2aWNl
X3ByaW50ZihkZXYsICJleGNlZWQgbWF4IHBhZ2UgYnVmZmVycywlZCwlZFxuIiwKLQkJCSAgICBu
dW1fZnJhZ3MsIE5FVFZTQ19QQUNLRVRfTUFYUEFHRSk7Ci0JCQltX2ZyZWVtKG1faGVhZCk7Ci0J
CQlpZl9pbmNfY291bnRlcihpZnAsIElGQ09VTlRFUl9PRVJST1JTLCAxKTsKLQkJCXJldHVybiAo
RUlOVkFMKTsKLQkJfQorCQlJRlFfRFJWX0RFUVVFVUUoJmlmcC0+aWZfc25kLCBtX2hlYWQpOwor
CQlpZiAobV9oZWFkID09IE5VTEwpCisJCQlicmVhazsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSBh
IGJ1ZmZlciB3aXRoIHNwYWNlIGZvciBhIG5ldHZzYyBwYWNrZXQgcGx1cyBhCi0JCSAqIG51bWJl
ciBvZiByZXNlcnZlZCBhcmVhcy4gIEZpcnN0IGNvbWVzIGEgKGN1cnJlbnRseSAxNgotCQkgKiBi
eXRlcywgY3VycmVudGx5IHVudXNlZCkgcmVzZXJ2ZWQgZGF0YSBhcmVhLiAgU2Vjb25kIGlzCi0J
CSAqIHRoZSBuZXR2c2NfcGFja2V0LiBUaGlyZCBpcyBhbiBhcmVhIHJlc2VydmVkIGZvciBhbiAK
LQkJICogcm5kaXNfZmlsdGVyX3BhY2tldCBzdHJ1Y3QuIEZvdXJ0aCAob3B0aW9uYWwpIGlzIGEg
Ci0JCSAqIHJuZGlzX3Blcl9wYWNrZXRfaW5mbyBzdHJ1Y3QuCi0JCSAqIENoYW5nZWQgbWFsbG9j
IHRvIE1fTk9XQUlUIHRvIGF2b2lkIHNsZWVwIHVuZGVyIHNwaW4gbG9jay4KLQkJICogTm8gbG9u
Z2VyIHJlc2VydmluZyBleHRyYSBzcGFjZSBmb3IgcGFnZSBidWZmZXJzLCBhcyB0aGV5Ci0JCSAq
IGFyZSBhbHJlYWR5IHBhcnQgb2YgdGhlIG5ldHZzY19wYWNrZXQuCi0JCSAqLwotCQlidWYgPSBt
YWxsb2MoSFZfTlZfUEFDS0VUX09GRlNFVF9JTl9CVUYgKwotCQkJc2l6ZW9mKG5ldHZzY19wYWNr
ZXQpICsgCi0JCQlzaXplb2Yocm5kaXNfbXNnKSArCi0JCQlSTkRJU19WTEFOX1BQSV9TSVpFICsK
LQkJCVJORElTX1RTT19QUElfU0laRSArCi0JCQlSTkRJU19DU1VNX1BQSV9TSVpFLAotCQkJTV9O
RVRWU0MsIE1fWkVSTyB8IE1fTk9XQUlUKTsKLQkJaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0JCQlkZXZp
Y2VfcHJpbnRmKGRldiwgImhuOm1hbGxvYyBwYWNrZXQgZmFpbGVkXG4iKTsKLQkJCW1fZnJlZW0o
bV9oZWFkKTsKLQkJCWlmX2luY19jb3VudGVyKGlmcCwgSUZDT1VOVEVSX09FUlJPUlMsIDEpOwot
CQkJcmV0dXJuIChFTk9NRU0pOworCQl0eGQgPSBobl90eGRlc2NfZ2V0KHNjKTsKKwkJaWYgKHR4
ZCA9PSBOVUxMKSB7CisJCQlzYy0+aG5fbm9fdHhkZXNjcysrOworCQkJSUZfUFJFUEVORCgmaWZw
LT5pZl9zbmQsIG1faGVhZCk7CisJCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJ
VkU7CisJCQlicmVhazsKIAkJfQogCi0JCXBhY2tldCA9IChuZXR2c2NfcGFja2V0ICopKGJ1ZiAr
IEhWX05WX1BBQ0tFVF9PRkZTRVRfSU5fQlVGKTsKLQkJKih2bV9vZmZzZXRfdCAqKWJ1ZiA9IEhW
X05WX1NDX1BUUl9PRkZTRVRfSU5fQlVGOworCQlwYWNrZXQgPSAmdHhkLT5uZXR2c2NfcGt0Owor
CQkvKiBYWFggbm90IG5lY2Vzc2FyeSAqLworCQltZW1zZXQocGFja2V0LCAwLCBzaXplb2YoKnBh
Y2tldCkpOwogCiAJCXBhY2tldC0+aXNfZGF0YV9wa3QgPSBUUlVFOwogCi0JCS8qIFNldCB1cCB0
aGUgcm5kaXMgaGVhZGVyICovCi0JCXBhY2tldC0+cGFnZV9idWZfY291bnQgPSBudW1fZnJhZ3M7
Ci0KIAkJLyogSW5pdGlhbGl6ZSBpdCBmcm9tIHRoZSBtYnVmICovCi0JCXBhY2tldC0+dG90X2Rh
dGFfYnVmX2xlbiA9IGxlbjsKKwkJcGFja2V0LT50b3RfZGF0YV9idWZfbGVuID0gbV9oZWFkLT5t
X3BrdGhkci5sZW47CiAKIAkJLyoKIAkJICogZXh0ZW5zaW9uIHBvaW50cyB0byB0aGUgYXJlYSBy
ZXNlcnZlZCBmb3IgdGhlCiAJCSAqIHJuZGlzX2ZpbHRlcl9wYWNrZXQsIHdoaWNoIGlzIHBsYWNl
ZCBqdXN0IGFmdGVyCiAJCSAqIHRoZSBuZXR2c2NfcGFja2V0IChhbmQgcnBwaSBzdHJ1Y3QsIGlm
IHByZXNlbnQ7CiAJCSAqIGxlbmd0aCBpcyB1cGRhdGVkIGxhdGVyKS4KIAkJICovCi0JCXBhY2tl
dC0+cm5kaXNfbWVzZyA9IHBhY2tldCArIDE7Ci0JCXJuZGlzX21lc2cgPSAocm5kaXNfbXNnICop
cGFja2V0LT5ybmRpc19tZXNnOworCQlybmRpc19tZXNnID0gdHhkLT5ybmRpc19tc2c7CisJCS8q
IFhYWCBub3QgbmVjZXNzYXJ5ICovCisJCW1lbXNldChybmRpc19tZXNnLCAwLCBITl9STkRJU19N
U0dfTEVOKTsKIAkJcm5kaXNfbWVzZy0+bmRpc19tc2dfdHlwZSA9IFJFTU9URV9ORElTX1BBQ0tF
VF9NU0c7CiAKIAkJcm5kaXNfcGt0ID0gJnJuZGlzX21lc2ctPm1zZy5wYWNrZXQ7CkBAIC02NDQs
OCArODI3LDYgQEAKIAkJCSAqIHNldCB1cCBzb21lIGFkZGl0aW9uYWwgZmllbGRzIHNvIHRoZSBI
eXBlci1WIGluZnJhc3RydWN0dXJlIHdpbGwgc3R1ZmYgdGhlIFZMQU4gdGFnCiAJCQkgKiBpbnRv
IHRoZSBmcmFtZS4KIAkJCSAqLwotCQkJcGFja2V0LT52bGFuX3RjaSA9IG1faGVhZC0+bV9wa3Ro
ZHIuZXRoZXJfdnRhZzsKLQogCQkJcm5kaXNfbXNnX3NpemUgKz0gUk5ESVNfVkxBTl9QUElfU0la
RTsKIAogCQkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfVkxBTl9Q
UElfU0laRSwKQEAgLTY1Niw3ICs4MzcsNyBAQAogCQkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5m
b19vZmZzZXQpOwogCQkJLyogRnJlZUJTRCBkb2VzIG5vdCBzdXBwb3J0IENGSSBvciBwcmlvcml0
eSAqLwogCQkJcnBwaV92bGFuX2luZm8tPnUxLnMxLnZsYW5faWQgPQotCQkJICAgIHBhY2tldC0+
dmxhbl90Y2kgJiAweGZmZjsKKwkJCSAgICBtX2hlYWQtPm1fcGt0aGRyLmV0aGVyX3Z0YWcgJiAw
eGZmZjsKIAkJfQogCiAJCS8qIE9ubHkgY2hlY2sgdGhlIGZsYWdzIGZvciBvdXRib3VuZCBhbmQg
aWdub3JlIHRoZSBvbmVzIGZvciBpbmJvdW5kICovCkBAIC03NTgsNyArOTM5LDcgQEAKIAkJcGFj
a2V0LT50b3RfZGF0YV9idWZfbGVuID0gcm5kaXNfbWVzZy0+bXNnX2xlbjsKIAogCQkvKiBzZW5k
IHBhY2tldCB3aXRoIHNlbmQgYnVmZmVyICovCi0JCWlmIChwYWNrZXQtPnRvdF9kYXRhX2J1Zl9s
ZW4gPCBuZXRfZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZSkgeworCQlpZiAocGFja2V0LT50b3RfZGF0
YV9idWZfbGVuIDwgc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSkgewogCQkJc2VuZF9idWZfc2VjdGlv
bl9pZHggPQogCQkJICAgIGh2X252X2dldF9uZXh0X3NlbmRfc2VjdGlvbihuZXRfZGV2KTsKIAkJ
CWlmIChzZW5kX2J1Zl9zZWN0aW9uX2lkeCAhPQpAQCAtNzgzLDk3ICs5NjQsMTE1IEBACiAJCQkJ
cGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX3NpemUgPQogCQkJCSAgICBwYWNrZXQtPnRvdF9kYXRh
X2J1Zl9sZW47CiAJCQkJcGFja2V0LT5wYWdlX2J1Zl9jb3VudCA9IDA7CisJCQkJc2MtPmhuX3R4
X2NoaW1uZXkrKzsKIAkJCQlnb3RvIGRvX3NlbmQ7CiAJCQl9CiAJCX0KIAorCQllcnJvciA9IGhu
X3R4ZGVzY19kbWFtYXBfbG9hZChzYywgdHhkLCAmbV9oZWFkLCBzZWdzLCAmbnNlZ3MpOworCQlp
ZiAoZXJyb3IpIHsKKwkJCWludCBmcmVlZDsKKworCQkJLyoKKwkJCSAqIFRoaXMgbWJ1ZiBpcyBu
b3QgbGlua2VkIHcvIHRoZSB0eGQgeWV0LCBzbyBmcmVlCisJCQkgKiBpdCBub3cuCisJCQkgKi8K
KwkJCW1fZnJlZW0obV9oZWFkKTsKKwkJCWZyZWVkID0gaG5fdHhkZXNjX3B1dChzYywgdHhkKTsK
KwkJCUtBU1NFUlQoZnJlZWQgIT0gMCwKKwkJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0
eGRtYSBlcnJvciIpKTsKKworCQkJc2MtPmhuX3R4ZG1hX2ZhaWxlZCsrOworCQkJaWZfaW5jX2Nv
dW50ZXIoaWZwLCBJRkNPVU5URVJfT0VSUk9SUywgMSk7CisJCQljb250aW51ZTsKKwkJfQorCisJ
CXBhY2tldC0+cGFnZV9idWZfY291bnQgPSBuc2VncyArCisJCSAgICBIVl9SRl9OVU1fVFhfUkVT
RVJWRURfUEFHRV9CVUZTOworCiAJCS8qIHNlbmQgcGFja2V0IHdpdGggcGFnZSBidWZmZXIgKi8K
LQkJcGFja2V0LT5wYWdlX2J1ZmZlcnNbMF0ucGZuID0KLQkJICAgIGF0b3AoaHZfZ2V0X3BoeXNf
YWRkcihybmRpc19tZXNnKSk7CisJCXBhY2tldC0+cGFnZV9idWZmZXJzWzBdLnBmbiA9IGF0b3Ao
dHhkLT5ybmRpc19tc2dfcGFkZHIpOwogCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1swXS5vZmZzZXQg
PQotCQkgICAgKHVuc2lnbmVkIGxvbmcpcm5kaXNfbWVzZyAmIFBBR0VfTUFTSzsKKwkJICAgIHR4
ZC0+cm5kaXNfbXNnX3BhZGRyICYgUEFHRV9NQVNLOwogCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1sw
XS5sZW5ndGggPSBybmRpc19tc2dfc2l6ZTsKIAogCQkvKgogCQkgKiBGaWxsIHRoZSBwYWdlIGJ1
ZmZlcnMgd2l0aCBtYnVmIGluZm8gc3RhcnRpbmcgYXQgaW5kZXgKIAkJICogSFZfUkZfTlVNX1RY
X1JFU0VSVkVEX1BBR0VfQlVGUy4KIAkJICovCi0JCWkgPSBIVl9SRl9OVU1fVFhfUkVTRVJWRURf
UEFHRV9CVUZTOwotCQlmb3IgKG0gPSBtX2hlYWQ7IG0gIT0gTlVMTDsgbSA9IG0tPm1fbmV4dCkg
ewotCQkJaWYgKG0tPm1fbGVuKSB7Ci0JCQkJdm1fb2Zmc2V0X3QgcGFkZHIgPQotCQkJCSAgICB2
dG9waHlzKG10b2QobSwgdm1fb2Zmc2V0X3QpKTsKLQkJCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1tp
XS5wZm4gPQotCQkJCSAgICBwYWRkciA+PiBQQUdFX1NISUZUOwotCQkJCXBhY2tldC0+cGFnZV9i
dWZmZXJzW2ldLm9mZnNldCA9Ci0JCQkJICAgIHBhZGRyICYgKFBBR0VfU0laRSAtIDEpOwotCQkJ
CXBhY2tldC0+cGFnZV9idWZmZXJzW2ldLmxlbmd0aCA9IG0tPm1fbGVuOwotCQkJCWkrKzsKLQkJ
CX0KKwkJZm9yIChpID0gMDsgaSA8IG5zZWdzOyArK2kpIHsKKwkJCWh2X3ZtYnVzX3BhZ2VfYnVm
ZmVyICpwYiA9ICZwYWNrZXQtPnBhZ2VfYnVmZmVyc1sKKwkJCSAgICBpICsgSFZfUkZfTlVNX1RY
X1JFU0VSVkVEX1BBR0VfQlVGU107CisKKwkJCXBiLT5wZm4gPSBhdG9wKHNlZ3NbaV0uZHNfYWRk
cik7CisJCQlwYi0+b2Zmc2V0ID0gc2Vnc1tpXS5kc19hZGRyICYgUEFHRV9NQVNLOworCQkJcGIt
Pmxlbmd0aCA9IHNlZ3NbaV0uZHNfbGVuOwogCQl9CiAKIAkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0
aW9uX2lkeCA9IAogCQkgICAgTlZTUF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5E
RVg7CiAJCXBhY2tldC0+c2VuZF9idWZfc2VjdGlvbl9zaXplID0gMDsKIAogZG9fc2VuZDoKKwkJ
dHhkLT5tID0gbV9oZWFkOwogCi0JCS8qCi0JCSAqIElmIGJwZiwgY29weSB0aGUgbWJ1ZiBjaGFp
bi4gIFRoaXMgaXMgbGVzcyBleHBlbnNpdmUgdGhhbgotCQkgKiBpdCBhcHBlYXJzOyB0aGUgbWJ1
ZiBjbHVzdGVycyBhcmUgbm90IGNvcGllZCwgb25seSB0aGVpcgotCQkgKiByZWZlcmVuY2UgY291
bnRzIGFyZSBpbmNyZW1lbnRlZC4KLQkJICogTmVlZGVkIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRp
b24gd2hlcmUgdGhlIGNvbXBsZXRpb24KLQkJICogY2FsbGJhY2sgaXMgaW52b2tlZCwgZnJlZWlu
ZyB0aGUgbWJ1ZiBjaGFpbiwgYmVmb3JlIHRoZQotCQkgKiBicGZfbXRhcCBjb2RlIGhhcyBhIGNo
YW5jZSB0byBydW4uCi0JCSAqLwotCQlpZiAoaWZwLT5pZl9icGYpIHsKLQkJCW1jX2hlYWQgPSBt
X2NvcHlwYWNrZXQobV9oZWFkLCBNX05PV0FJVCk7Ci0JCX0KLXJldHJ5X3NlbmQ6CiAJCS8qIFNl
dCB0aGUgY29tcGxldGlvbiByb3V0aW5lICovCiAJCXBhY2tldC0+Y29tcGwuc2VuZC5vbl9zZW5k
X2NvbXBsZXRpb24gPSBuZXR2c2NfeG1pdF9jb21wbGV0aW9uOwogCQlwYWNrZXQtPmNvbXBsLnNl
bmQuc2VuZF9jb21wbGV0aW9uX2NvbnRleHQgPSBwYWNrZXQ7Ci0JCXBhY2tldC0+Y29tcGwuc2Vu
ZC5zZW5kX2NvbXBsZXRpb25fdGlkID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpbV9oZWFkOworCQlw
YWNrZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX3RpZCA9CisJCSAgICAodWludDY0X3Qp
KHVpbnRwdHJfdCl0eGQ7CiAKLQkJLyogUmVtb3ZlZCBjcml0aWNhbF9lbnRlcigpLCBkb2VzIG5v
dCBhcHBlYXIgbmVjZXNzYXJ5ICovCi0JCXJldCA9IGh2X252X29uX3NlbmQoZGV2aWNlX2N0eCwg
cGFja2V0KTsKLQkJaWYgKHJldCA9PSAwKSB7CithZ2FpbjoKKwkJLyoKKwkJICogTWFrZSBzdXJl
IHRoYXQgdHhkIGlzIG5vdCBmcmVlZCBiZWZvcmUgRVRIRVJfQlBGX01UQVAuCisJCSAqLworCQlo
bl90eGRlc2NfaG9sZCh0eGQpOworCQllcnJvciA9IGh2X252X29uX3NlbmQoZGV2aWNlX2N0eCwg
cGFja2V0KTsKKwkJaWYgKCFlcnJvcikgeworCQkJRVRIRVJfQlBGX01UQVAoaWZwLCBtX2hlYWQp
OwogCQkJaWZfaW5jX2NvdW50ZXIoaWZwLCBJRkNPVU5URVJfT1BBQ0tFVFMsIDEpOwotCQkJLyog
aWYgYnBmICYmIG1jX2hlYWQsIGNhbGwgYnBmX210YXAgY29kZSAqLwotCQkJaWYgKG1jX2hlYWQp
IHsKLQkJCQlFVEhFUl9CUEZfTVRBUChpZnAsIG1jX2hlYWQpOwotCQkJfQotCQl9IGVsc2Ugewot
CQkJcmV0cmllcysrOwotCQkJaWYgKHJldHJpZXMgPCA0KSB7Ci0JCQkJZ290byByZXRyeV9zZW5k
OwotCQkJfQorCQl9CisJCWhuX3R4ZGVzY19wdXQoc2MsIHR4ZCk7CiAKLQkJCUlGX1BSRVBFTkQo
JmlmcC0+aWZfc25kLCBtX2hlYWQpOwotCQkJaWZwLT5pZl9kcnZfZmxhZ3MgfD0gSUZGX0RSVl9P
QUNUSVZFOworCQlpZiAoX19wcmVkaWN0X2ZhbHNlKGVycm9yKSkgeworCQkJaW50IGZyZWVkOwog
CiAJCQkvKgotCQkJICogTnVsbCB0aGUgbWJ1ZiBwb2ludGVyIHNvIHRoZSBjb21wbGV0aW9uIGZ1
bmN0aW9uCi0JCQkgKiBkb2VzIG5vdCBmcmVlIHRoZSBtYnVmIGNoYWluLiAgV2UganVzdCBwdXNo
ZWQgdGhlCi0JCQkgKiBtYnVmIGNoYWluIGJhY2sgb24gdGhlIGlmX3NuZCBxdWV1ZS4KKwkJCSAq
IFRoaXMgc2hvdWxkICJyZWFsbHkgcmFyZWx5IiBoYXBwZW4uCisJCQkgKgorCQkJICogWFhYIFRv
byBtYW55IFJYIHRvIGJlIGFja2VkIG9yIHRvbyBtYW55IHNpZGViYW5kCisJCQkgKiBjb21tYW5k
cyB0byBydW4/ICBBc2sgbmV0dnNjX2NoYW5uZWxfcm9sbHVwKCkKKwkJCSAqIHRvIGtpY2sgc3Rh
cnQgbGF0ZXIuCiAJCQkgKi8KLQkJCXBhY2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25f
dGlkID0gMDsKKwkJCXNjLT5obl90eGVvZiA9IDE7CisJCQlpZiAoIXNlbmRfZmFpbGVkKSB7CisJ
CQkJc2MtPmhuX3NlbmRfZmFpbGVkKys7CisJCQkJc2VuZF9mYWlsZWQgPSAxOworCQkJCS8qCisJ
CQkJICogVHJ5IHNlbmRpbmcgYWdhaW4gYWZ0ZXIgc2V0IGhuX3R4ZW9mOworCQkJCSAqIGluIGNh
c2UgdGhhdCB3ZSBtaXNzZWQgdGhlIGxhc3QKKwkJCQkgKiBuZXR2c2NfY2hhbm5lbF9yb2xsdXAo
KS4KKwkJCQkgKi8KKwkJCQlnb3RvIGFnYWluOworCQkJfQorCQkJaWZfcHJpbnRmKGlmcCwgInNl
bmQgZmFpbGVkXG4iKTsKIAogCQkJLyoKLQkJCSAqIFJlbGVhc2UgdGhlIHJlc291cmNlcyBzaW5j
ZSB3ZSB3aWxsIG5vdCBnZXQgYW55Ci0JCQkgKiBzZW5kIGNvbXBsZXRpb24KKwkJCSAqIFRoaXMg
bWJ1ZiB3aWxsIGJlIHByZXBlbmRlZCwgZG9uJ3QgZnJlZSBpdAorCQkJICogaW4gaG5fdHhkZXNj
X3B1dCgpOyBvbmx5IHVubG9hZCBpdCBmcm9tIHRoZQorCQkJICogRE1BIG1hcCBpbiBobl90eGRl
c2NfcHV0KCksIGlmIGl0IHdhcyBsb2FkZWQuCiAJCQkgKi8KLQkJCW5ldHZzY194bWl0X2NvbXBs
ZXRpb24ocGFja2V0KTsKLQkJCWlmX2luY19jb3VudGVyKGlmcCwgSUZDT1VOVEVSX09FUlJPUlMs
IDEpOwotCQl9CisJCQl0eGQtPm0gPSBOVUxMOworCQkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHNj
LCB0eGQpOworCQkJS0FTU0VSVChmcmVlZCAhPSAwLAorCQkJICAgICgiZmFpbCB0byBmcmVlIHR4
ZCB1cG9uIHNlbmQgZXJyb3IiKSk7CiAKLQkJLyogaWYgYnBmICYmIG1jX2hlYWQsIGZyZWUgdGhl
IG1idWYgY2hhaW4gY29weSAqLwotCQlpZiAobWNfaGVhZCkgewotCQkJbV9mcmVlbShtY19oZWFk
KTsKKwkJCXNjLT5obl9zZW5kX2ZhaWxlZCsrOworCQkJSUZfUFJFUEVORCgmaWZwLT5pZl9zbmQs
IG1faGVhZCk7CisJCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJVkU7CisJCQli
cmVhazsKIAkJfQogCX0KLQotCXJldHVybiAocmV0KTsKIH0KIAogLyoKQEAgLTEyMjAsNiArMTQx
OSw5IEBACiAJCQlicmVhazsKIAkJfQogCisJCXNjLT5obl90eF9jaGltbmV5X21heCA9IHNjLT5u
ZXRfZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZTsKKwkJaWYgKHNjLT5obl90eF9jaGltbmV5X3NpemUg
PiBzYy0+aG5fdHhfY2hpbW5leV9tYXgpCisJCQlzYy0+aG5fdHhfY2hpbW5leV9zaXplID0gc2Mt
PmhuX3R4X2NoaW1uZXlfbWF4OwogCQlobl9pZmluaXRfbG9ja2VkKHNjKTsKIAogCQlOVl9MT0NL
KHNjKTsKQEAgLTE0NzcsNiArMTY3OSwyNSBAQAogI2VuZGlmCS8qIEhOX0xST19ISVdBVCAqLwog
CiBzdGF0aWMgaW50Citobl90eF9jaGltbmV5X3NpemVfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FS
R1MpCit7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9IGFyZzE7CisJaW50IGNoaW1uZXlfc2l6ZSwg
ZXJyb3I7CisKKwljaGltbmV5X3NpemUgPSBzYy0+aG5fdHhfY2hpbW5leV9zaXplOworCWVycm9y
ID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJmNoaW1uZXlfc2l6ZSwgMCwgcmVxKTsKKwlpZiAo
ZXJyb3IgfHwgcmVxLT5uZXdwdHIgPT0gTlVMTCkKKwkJcmV0dXJuIGVycm9yOworCisJaWYgKGNo
aW1uZXlfc2l6ZSA+IHNjLT5obl90eF9jaGltbmV5X21heCB8fCBjaGltbmV5X3NpemUgPD0gMCkK
KwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChzYy0+aG5fdHhfY2hpbW5leV9zaXplICE9IGNoaW1u
ZXlfc2l6ZSkKKwkJc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9IGNoaW1uZXlfc2l6ZTsKKwlyZXR1
cm4gMDsKK30KKworc3RhdGljIGludAogaG5fY2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0IG1idWYg
Km0sIGludCBob2ZmKQogewogCWNvbnN0IHN0cnVjdCBpcCAqaXA7CkBAIC0xNTUxLDYgKzE3NzIs
MTUwIEBACiAJcmV0dXJuIGlwLT5pcF9wOwogfQogCitzdGF0aWMgdm9pZAoraG5fZG1hX21hcF9w
YWRkcih2b2lkICphcmcsIGJ1c19kbWFfc2VnbWVudF90ICpzZWdzLCBpbnQgbnNlZywgaW50IGVy
cm9yKQoreworCWJ1c19hZGRyX3QgKnBhZGRyID0gYXJnOworCisJaWYgKGVycm9yKQorCQlyZXR1
cm47CisKKwlLQVNTRVJUKG5zZWcgPT0gMSwgKCJ0b28gbWFueSBzZWdtZW50cyAlZCEiLCBuc2Vn
KSk7CisJKnBhZGRyID0gc2Vncy0+ZHNfYWRkcjsKK30KKworc3RhdGljIGludAoraG5fY3JlYXRl
X3R4X3Jpbmcoc3RydWN0IGhuX3NvZnRjICpzYykKK3sKKwlidXNfZG1hX3RhZ190IHBhcmVudF9k
dGFnOworCWludCBlcnJvciwgaTsKKworCXNjLT5obl90eGRlc2NfY250ID0gSE5fVFhfREVTQ19D
TlQ7CisJc2MtPmhuX3R4ZGVzYyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGhuX3R4ZGVzYykgKiBz
Yy0+aG5fdHhkZXNjX2NudCwKKwkgICAgTV9ORVRWU0MsIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwlT
TElTVF9JTklUKCZzYy0+aG5fdHhsaXN0KTsKKwltdHhfaW5pdCgmc2MtPmhuX3R4bGlzdF9zcGlu
LCAiaG4gdHhsaXN0IiwgTlVMTCwgTVRYX1NQSU4pOworCisJcGFyZW50X2R0YWcgPSBidXNfZ2V0
X2RtYV90YWcoc2MtPmhuX2Rldik7CisKKwkvKiBETUEgdGFnIGZvciBSTkRJUyBtZXNzYWdlcy4g
Ki8KKwllcnJvciA9IGJ1c19kbWFfdGFnX2NyZWF0ZShwYXJlbnRfZHRhZywgLyogcGFyZW50ICov
CisJICAgIEhOX1JORElTX01TR19BTElHTiwJCS8qIGFsaWdubWVudCAqLworCSAgICBITl9STkRJ
U19NU0dfQk9VTkRBUlksCS8qIGJvdW5kYXJ5ICovCisJICAgIEJVU19TUEFDRV9NQVhBRERSLAkJ
LyogbG93YWRkciAqLworCSAgICBCVVNfU1BBQ0VfTUFYQUREUiwJCS8qIGhpZ2hhZGRyICovCisJ
ICAgIE5VTEwsIE5VTEwsCQkJLyogZmlsdGVyLCBmaWx0ZXJhcmcgKi8KKwkgICAgSE5fUk5ESVNf
TVNHX0xFTiwJCS8qIG1heHNpemUgKi8KKwkgICAgMSwJCQkJLyogbnNlZ21lbnRzICovCisJICAg
IEhOX1JORElTX01TR19MRU4sCQkvKiBtYXhzZWdzaXplICovCisJICAgIDAsCQkJCS8qIGZsYWdz
ICovCisJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KKwkgICAgTlVMTCwJCQkvKiBsb2NrZnVu
Y2FyZyAqLworCSAgICAmc2MtPmhuX3R4X3JuZGlzX2R0YWcpOworCWlmIChlcnJvcikgeworCQlk
ZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsICJmYWlsZWQgdG8gY3JlYXRlIHJuZGlzIGRtYXRhZ1xu
Iik7CisJCXJldHVybiBlcnJvcjsKKwl9CisKKwkvKiBETUEgdGFnIGZvciBkYXRhLiAqLworCWVy
cm9yID0gYnVzX2RtYV90YWdfY3JlYXRlKHBhcmVudF9kdGFnLCAvKiBwYXJlbnQgKi8KKwkgICAg
MSwJCQkJLyogYWxpZ25tZW50ICovCisJICAgIEhOX1RYX0RBVEFfQk9VTkRBUlksCS8qIGJvdW5k
YXJ5ICovCisJICAgIEJVU19TUEFDRV9NQVhBRERSLAkJLyogbG93YWRkciAqLworCSAgICBCVVNf
U1BBQ0VfTUFYQUREUiwJCS8qIGhpZ2hhZGRyICovCisJICAgIE5VTEwsIE5VTEwsCQkJLyogZmls
dGVyLCBmaWx0ZXJhcmcgKi8KKwkgICAgSE5fVFhfREFUQV9NQVhTSVpFLAkJLyogbWF4c2l6ZSAq
LworCSAgICBITl9UWF9EQVRBX1NFR0NOVF9NQVgsCS8qIG5zZWdtZW50cyAqLworCSAgICBITl9U
WF9EQVRBX1NFR1NJWkUsCQkvKiBtYXhzZWdzaXplICovCisJICAgIDAsCQkJCS8qIGZsYWdzICov
CisJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KKwkgICAgTlVMTCwJCQkvKiBsb2NrZnVuY2Fy
ZyAqLworCSAgICAmc2MtPmhuX3R4X2RhdGFfZHRhZyk7CisJaWYgKGVycm9yKSB7CisJCWRldmlj
ZV9wcmludGYoc2MtPmhuX2RldiwgImZhaWxlZCB0byBjcmVhdGUgZGF0YSBkbWF0YWdcbiIpOwor
CQlyZXR1cm4gZXJyb3I7CisJfQorCisJZm9yIChpID0gMDsgaSA8IHNjLT5obl90eGRlc2NfY250
OyArK2kpIHsKKwkJc3RydWN0IGhuX3R4ZGVzYyAqdHhkID0gJnNjLT5obl90eGRlc2NbaV07CisK
KwkJdHhkLT5zYyA9IHNjOworCisJCS8qCisJCSAqIEFsbG9jYXRlIGFuZCBsb2FkIFJORElTIG1l
c3NhZ2VzLgorCQkgKi8KKyAgICAgICAgCWVycm9yID0gYnVzX2RtYW1lbV9hbGxvYyhzYy0+aG5f
dHhfcm5kaXNfZHRhZywKKwkJICAgICh2b2lkICoqKSZ0eGQtPnJuZGlzX21zZywKKwkJICAgIEJV
U19ETUFfV0FJVE9LIHwgQlVTX0RNQV9DT0hFUkVOVCwKKwkJICAgICZ0eGQtPnJuZGlzX21zZ19k
bWFwKTsKKwkJaWYgKGVycm9yKSB7CisJCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCisJCQkg
ICAgImZhaWxlZCB0byBhbGxvY2F0ZSBybmRpc19tc2csICVkXG4iLCBpKTsKKwkJCXJldHVybiBl
cnJvcjsKKwkJfQorCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHNjLT5obl90eF9ybmRpc19k
dGFnLAorCQkgICAgdHhkLT5ybmRpc19tc2dfZG1hcCwKKwkJICAgIHR4ZC0+cm5kaXNfbXNnLCBI
Tl9STkRJU19NU0dfTEVOLAorCQkgICAgaG5fZG1hX21hcF9wYWRkciwgJnR4ZC0+cm5kaXNfbXNn
X3BhZGRyLAorCQkgICAgQlVTX0RNQV9OT1dBSVQpOworCQlpZiAoZXJyb3IpIHsKKwkJCWRldmlj
ZV9wcmludGYoc2MtPmhuX2RldiwKKwkJCSAgICAiZmFpbGVkIHRvIGxvYWQgcm5kaXNfbXNnLCAl
ZFxuIiwgaSk7CisJCQlidXNfZG1hbWVtX2ZyZWUoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCQkg
ICAgdHhkLT5ybmRpc19tc2csIHR4ZC0+cm5kaXNfbXNnX2RtYXApOworCQkJcmV0dXJuIGVycm9y
OworCQl9CisKKwkJLyogRE1BIG1hcCBmb3IgVFggZGF0YS4gKi8KKwkJZXJyb3IgPSBidXNfZG1h
bWFwX2NyZWF0ZShzYy0+aG5fdHhfZGF0YV9kdGFnLCAwLAorCQkgICAgJnR4ZC0+ZGF0YV9kbWFw
KTsKKwkJaWYgKGVycm9yKSB7CisJCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCisJCQkgICAg
ImZhaWxlZCB0byBhbGxvY2F0ZSB0eCBkYXRhIGRtYW1hcFxuIik7CisJCQlidXNfZG1hbWFwX3Vu
bG9hZChzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJCSAgICB0eGQtPnJuZGlzX21zZ19kbWFwKTsK
KwkJCWJ1c19kbWFtZW1fZnJlZShzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJCSAgICB0eGQtPnJu
ZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwor
CQkvKiBBbGwgc2V0LCBwdXQgaXQgdG8gbGlzdCAqLworCQl0eGQtPmZsYWdzIHw9IEhOX1RYRF9G
TEFHX09OTElTVDsKKwkJU0xJU1RfSU5TRVJUX0hFQUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGlu
ayk7CisJfQorCXNjLT5obl90eGRlc2NfYXZhaWwgPSBzYy0+aG5fdHhkZXNjX2NudDsKKworCXJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraG5fZGVzdHJveV90eF9yaW5nKHN0cnVjdCBobl9z
b2Z0YyAqc2MpCit7CisJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOworCisJd2hpbGUgKCh0eGQgPSBT
TElTVF9GSVJTVCgmc2MtPmhuX3R4bGlzdCkpICE9IE5VTEwpIHsKKwkJS0FTU0VSVCh0eGQtPm0g
PT0gTlVMTCwgKCJzdGlsbCBoYXMgbWJ1ZiBpbnN0YWxsZWQiKSk7CisJCUtBU1NFUlQoKHR4ZC0+
ZmxhZ3MgJiBITl9UWERfRkxBR19ETUFNQVApID09IDAsCisJCSAgICAoInN0aWxsIGRtYSBtYXBw
ZWQiKSk7CisJCVNMSVNUX1JFTU9WRV9IRUFEKCZzYy0+aG5fdHhsaXN0LCBsaW5rKTsKKworCQli
dXNfZG1hbWFwX3VubG9hZChzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJICAgIHR4ZC0+cm5kaXNf
bXNnX2RtYXApOworCQlidXNfZG1hbWVtX2ZyZWUoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCSAg
ICB0eGQtPnJuZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CisKKwkJYnVzX2RtYW1hcF9k
ZXN0cm95KHNjLT5obl90eF9kYXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwKTsKKwl9CisKKwlpZiAo
c2MtPmhuX3R4X2RhdGFfZHRhZyAhPSBOVUxMKQorCQlidXNfZG1hX3RhZ19kZXN0cm95KHNjLT5o
bl90eF9kYXRhX2R0YWcpOworCWlmIChzYy0+aG5fdHhfcm5kaXNfZHRhZyAhPSBOVUxMKQorCQli
dXNfZG1hX3RhZ19kZXN0cm95KHNjLT5obl90eF9ybmRpc19kdGFnKTsKKwlmcmVlKHNjLT5obl90
eGRlc2MsIE1fTkVUVlNDKTsKKwltdHhfZGVzdHJveSgmc2MtPmhuX3R4bGlzdF9zcGluKTsKK30K
Kwogc3RhdGljIGRldmljZV9tZXRob2RfdCBuZXR2c2NfbWV0aG9kc1tdID0gewogICAgICAgICAv
KiBEZXZpY2UgaW50ZXJmYWNlICovCiAgICAgICAgIERFVk1FVEhPRChkZXZpY2VfcHJvYmUsICAg
ICAgICAgbmV0dnNjX3Byb2JlKSwKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0
dnNjL2h2X25ldF92c2MuaCBiL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2Mu
aAotLS0gYS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKKysrIGIvaGVh
ZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCkBAIC0zOCwxMiArMzgsMTYgQEAK
ICNpZm5kZWYgX19IVl9ORVRfVlNDX0hfXwogI2RlZmluZSBfX0hWX05FVF9WU0NfSF9fCiAKLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxz
eXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KKyNpbmNsdWRlIDxzeXMvcXVldWUu
aD4KICNpbmNsdWRlIDxzeXMvc3guaD4KIAorI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CisjaW5j
bHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9idXNfZG1hLmg+CisKICNpbmNsdWRlIDxu
ZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC90Y3BfbHJvLmg+CiAKQEAgLTk4NCw2ICs5
ODgsOSBAQAogCWh2X2Jvb2xfdWludDhfdAlsaW5rX3N0YXRlOwogfSBuZXR2c2NfZGV2aWNlX2lu
Zm87CiAKK3N0cnVjdCBobl90eGRlc2M7CitTTElTVF9IRUFEKGhuX3R4ZGVzY19saXN0LCBobl90
eGRlc2MpOworCiAvKgogICogRGV2aWNlLXNwZWNpZmljIHNvZnRjIHN0cnVjdHVyZQogICovCkBA
IC0xMDAxLDYgKzEwMDgsMTggQEAKIAlzdHJ1Y3QgaHZfZGV2aWNlICAqaG5fZGV2X29iajsKIAlu
ZXR2c2NfZGV2ICAJKm5ldF9kZXY7CiAKKwlpbnQJCWhuX3R4ZGVzY19jbnQ7CisJc3RydWN0IGhu
X3R4ZGVzYyAqaG5fdHhkZXNjOworCWJ1c19kbWFfdGFnX3QJaG5fdHhfZGF0YV9kdGFnOworCWJ1
c19kbWFfdGFnX3QJaG5fdHhfcm5kaXNfZHRhZzsKKwlpbnQJCWhuX3R4X2NoaW1uZXlfc2l6ZTsK
KwlpbnQJCWhuX3R4X2NoaW1uZXlfbWF4OworCisJc3RydWN0IG10eAlobl90eGxpc3Rfc3BpbjsK
KwlzdHJ1Y3QgaG5fdHhkZXNjX2xpc3QgaG5fdHhsaXN0OworCWludAkJaG5fdHhkZXNjX2F2YWls
OworCWludAkJaG5fdHhlb2Y7CisKIAlzdHJ1Y3QgbHJvX2N0cmwJaG5fbHJvOwogCWludAkJaG5f
bHJvX2hpd2F0OwogCkBAIC0xMDEyLDYgKzEwMzEsMTEgQEAKIAl1X2xvbmcJCWhuX2NzdW1fdHJ1
c3RlZDsKIAl1X2xvbmcJCWhuX2xyb190cmllZDsKIAl1X2xvbmcJCWhuX3NtYWxsX3BrdHM7CisJ
dV9sb25nCQlobl9ub190eGRlc2NzOworCXVfbG9uZwkJaG5fc2VuZF9mYWlsZWQ7CisJdV9sb25n
CQlobl90eGRtYV9mYWlsZWQ7CisJdV9sb25nCQlobl90eF9jb2xsYXBzZWQ7CisJdV9sb25nCQlo
bl90eF9jaGltbmV5OwogfSBobl9zb2Z0Y190OwogCiAKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuYyBiL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNj
L2h2X25ldF92c2MuYwotLS0gYS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNj
LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5jCkBAIC0xMDI4
LDQgKzEwMjgsNiBAQAogCiAJaWYgKGJ1ZmZlcmxlbiA+IE5FVFZTQ19QQUNLRVRfU0laRSkKIAkJ
ZnJlZShidWZmZXIsIE1fTkVUVlNDKTsKKworCWh2X3JmX2NoYW5uZWxfcm9sbHVwKG5ldF9kZXYp
OwogfQoK


--b1_d2ebb1e510a55e19fba0ba13c5d96832--



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