Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Feb 2016 08:59:11 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-virtualization@freebsd.org
Subject:   [Differential] [Request, 612 lines] D5283: hyperv/hn: Split TX ring data structure out of softc
Message-ID:  <differential-rev-PHID-DREV-6djpfhi7fv7yabzqst5l-req@FreeBSD.org>

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

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

sepherosa_gmail.com created this revision.
sepherosa_gmail.com added reviewers: network, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com.
sepherosa_gmail.com added subscribers: freebsd-net-list, freebsd-virtualization-list.

REVISION SUMMARY
  This paves the way for upcoming vRSS stuffs and eases more code cleanup.

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

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

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

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

--b1_5d6f8634362bfdafd016edea8053a36e
Content-Type: text/x-patch; charset=utf-8; name="D5283.13312.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5283.13312.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2Qu
YyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYwotLS0gYS9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0xNTMsNyArMTUzLDcg
QEAKIHN0cnVjdCBobl90eGRlc2MgewogCVNMSVNUX0VOVFJZKGhuX3R4ZGVzYykgbGluazsKIAlz
dHJ1Y3QgbWJ1ZgkqbTsKLQlzdHJ1Y3QgaG5fc29mdGMJKnNjOworCXN0cnVjdCBobl90eF9yaW5n
ICp0eHI7CiAJaW50CQlyZWZzOwogCXVpbnQzMl90CWZsYWdzOwkJLyogSE5fVFhEX0ZMQUdfICov
CiAJbmV0dnNjX3BhY2tldAluZXR2c2NfcGt0OwkvKiBYWFggdG8gYmUgcmVtb3ZlZCAqLwpAQCAt
MTkzLDcgKzE5Myw2IEBACiAjZGVmaW5lIE5WX0xPQ0tfSU5JVChfc2MsIF9uYW1lKSBcCiAJICAg
IG10eF9pbml0KCYoX3NjKS0+aG5fbG9jaywgX25hbWUsIE1UWF9ORVRXT1JLX0xPQ0ssIE1UWF9E
RUYpCiAjZGVmaW5lIE5WX0xPQ0soX3NjKQkJbXR4X2xvY2soJihfc2MpLT5obl9sb2NrKQotI2Rl
ZmluZSBOVl9UUllMT0NLKF9zYykJCW10eF90cnlsb2NrKCYoX3NjKS0+aG5fbG9jaykKICNkZWZp
bmUgTlZfTE9DS19BU1NFUlQoX3NjKQltdHhfYXNzZXJ0KCYoX3NjKS0+aG5fbG9jaywgTUFfT1dO
RUQpCiAjZGVmaW5lIE5WX1VOTE9DSyhfc2MpCQltdHhfdW5sb2NrKCYoX3NjKS0+aG5fbG9jaykK
ICNkZWZpbmUgTlZfTE9DS19ERVNUUk9ZKF9zYykJbXR4X2Rlc3Ryb3koJihfc2MpLT5obl9sb2Nr
KQpAQCAtMjY2LDI1ICsyNjUsMzEgQEAKIHN0YXRpYyB2b2lkIGhuX2lmaW5pdF9sb2NrZWQoaG5f
c29mdGNfdCAqc2MpOwogc3RhdGljIHZvaWQgaG5faWZpbml0KHZvaWQgKnhzYyk7CiBzdGF0aWMg
aW50ICBobl9pb2N0bChzdHJ1Y3QgaWZuZXQgKmlmcCwgdV9sb25nIGNtZCwgY2FkZHJfdCBkYXRh
KTsKLXN0YXRpYyBpbnQgaG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZwLCBpbnQgbGVu
KTsKK3N0YXRpYyBpbnQgaG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBobl90eF9yaW5nICp0eHIsIGlu
dCBsZW4pOwogc3RhdGljIHZvaWQgaG5fc3RhcnQoc3RydWN0IGlmbmV0ICppZnApOwotc3RhdGlj
IHZvaWQgaG5fc3RhcnRfdHhlb2Yoc3RydWN0IGlmbmV0ICppZnApOworc3RhdGljIHZvaWQgaG5f
c3RhcnRfdHhlb2Yoc3RydWN0IGhuX3R4X3JpbmcgKik7CiBzdGF0aWMgaW50IGhuX2lmbWVkaWFf
dXBkKHN0cnVjdCBpZm5ldCAqaWZwKTsKIHN0YXRpYyB2b2lkIGhuX2lmbWVkaWFfc3RzKHN0cnVj
dCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtZWRpYXJlcSAqaWZtcik7CiBzdGF0aWMgaW50IGhuX2xy
b19sZW5saW1fc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwogc3RhdGljIGludCBobl9scm9f
YWNrY250X3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKTsKIHN0YXRpYyBpbnQgaG5fdHJ1c3Rf
aGNzdW1fc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwogc3RhdGljIGludCBobl90eF9jaGlt
bmV5X3NpemVfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwogc3RhdGljIGludCBobl9yeF9z
dGF0X3Vsb25nX3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKTsKIHN0YXRpYyBpbnQgaG5fcnhf
c3RhdF91NjRfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOworc3RhdGljIGludCBobl90eF9z
dGF0X3Vsb25nX3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKTsKK3N0YXRpYyBpbnQgaG5fdHhf
Y29uZl9pbnRfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwogc3RhdGljIGludCBobl9jaGVj
a19pcGxlbihjb25zdCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwotc3RhdGljIGludCBobl9jcmVhdGVf
dHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKLXN0YXRpYyB2b2lkIGhuX2Rlc3Ryb3lfdHhf
cmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKK3N0YXRpYyBpbnQgaG5fY3JlYXRlX3R4X3Jpbmco
c3RydWN0IGhuX3NvZnRjICosIGludCk7CitzdGF0aWMgdm9pZCBobl9kZXN0cm95X3R4X3Jpbmco
c3RydWN0IGhuX3R4X3JpbmcgKik7CitzdGF0aWMgaW50IGhuX2NyZWF0ZV90eF9kYXRhKHN0cnVj
dCBobl9zb2Z0YyAqKTsKK3N0YXRpYyB2b2lkIGhuX2Rlc3Ryb3lfdHhfZGF0YShzdHJ1Y3QgaG5f
c29mdGMgKik7CiBzdGF0aWMgdm9pZCBobl9zdGFydF90YXNrZnVuYyh2b2lkICp4c2MsIGludCBw
ZW5kaW5nKTsKIHN0YXRpYyB2b2lkIGhuX3R4ZW9mX3Rhc2tmdW5jKHZvaWQgKnhzYywgaW50IHBl
bmRpbmcpOwotc3RhdGljIGludCBobl9lbmNhcChzdHJ1Y3QgaG5fc29mdGMgKiwgc3RydWN0IGhu
X3R4ZGVzYyAqLCBzdHJ1Y3QgbWJ1ZiAqKik7CitzdGF0aWMgdm9pZCBobl9zdG9wX3R4X3Rhc2tz
KHN0cnVjdCBobl9zb2Z0YyAqKTsKK3N0YXRpYyBpbnQgaG5fZW5jYXAoc3RydWN0IGhuX3R4X3Jp
bmcgKiwgc3RydWN0IGhuX3R4ZGVzYyAqLCBzdHJ1Y3QgbWJ1ZiAqKik7CiBzdGF0aWMgdm9pZCBo
bl9jcmVhdGVfcnhfZGF0YShzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKIHN0YXRpYyB2b2lkIGhuX2Rl
c3Ryb3lfcnhfZGF0YShzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKK3N0YXRpYyB2b2lkIGhuX3NldF90
eF9jaGltbmV5X3NpemUoc3RydWN0IGhuX3NvZnRjICosIGludCk7CiAKIHN0YXRpYyBpbnQKIGhu
X2lmbWVkaWFfdXBkKHN0cnVjdCBpZm5ldCAqaWZwIF9fdW51c2VkKQpAQCAtMzUwLDggKzM1NSw2
IEBACiAJaG5fc29mdGNfdCAqc2M7CiAJaW50IHVuaXQgPSBkZXZpY2VfZ2V0X3VuaXQoZGV2KTsK
IAlzdHJ1Y3QgaWZuZXQgKmlmcCA9IE5VTEw7Ci0Jc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqY2hp
bGQ7Ci0Jc3RydWN0IHN5c2N0bF9jdHhfbGlzdCAqY3R4OwogCWludCBlcnJvcjsKICNpZiBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDQ1CiAJaW50IHRzb19tYXhsZW47CkBAIC0zNjUsNyArMzY4
LDYgQEAKIAliemVybyhzYywgc2l6ZW9mKGhuX3NvZnRjX3QpKTsKIAlzYy0+aG5fdW5pdCA9IHVu
aXQ7CiAJc2MtPmhuX2RldiA9IGRldjsKLQlzYy0+aG5fZGlyZWN0X3R4X3NpemUgPSBobl9kaXJl
Y3RfdHhfc2l6ZTsKIAogCWlmIChobl90eF90YXNrcSA9PSBOVUxMKSB7CiAJCXNjLT5obl90eF90
YXNrcSA9IHRhc2txdWV1ZV9jcmVhdGUoImhuX3R4IiwgTV9XQUlUT0ssCkBAIC0zNzUsMjAgKzM3
NywxNyBAQAogCX0gZWxzZSB7CiAJCXNjLT5obl90eF90YXNrcSA9IGhuX3R4X3Rhc2txOwogCX0K
LQlUQVNLX0lOSVQoJnNjLT5obl9zdGFydF90YXNrLCAwLCBobl9zdGFydF90YXNrZnVuYywgc2Mp
OwotCVRBU0tfSU5JVCgmc2MtPmhuX3R4ZW9mX3Rhc2ssIDAsIGhuX3R4ZW9mX3Rhc2tmdW5jLCBz
Yyk7Ci0KLQllcnJvciA9IGhuX2NyZWF0ZV90eF9yaW5nKHNjKTsKLQlpZiAoZXJyb3IpCi0JCWdv
dG8gZmFpbGVkOwotCiAJTlZfTE9DS19JTklUKHNjLCAiTmV0VlNDTG9jayIpOwogCiAJc2MtPmhu
X2Rldl9vYmogPSBkZXZpY2VfY3R4OwogCiAJaWZwID0gc2MtPmhuX2lmcCA9IGlmX2FsbG9jKElG
VF9FVEhFUik7CiAJaWZwLT5pZl9zb2Z0YyA9IHNjOwogCisJZXJyb3IgPSBobl9jcmVhdGVfdHhf
ZGF0YShzYyk7CisJaWYgKGVycm9yKQorCQlnb3RvIGZhaWxlZDsKKwogCWhuX2NyZWF0ZV9yeF9k
YXRhKHNjKTsKIAogCWlmX2luaXRuYW1lKGlmcCwgZGV2aWNlX2dldF9uYW1lKGRldiksIGRldmlj
ZV9nZXRfdW5pdChkZXYpKTsKQEAgLTQyMSwxMiArNDIwLDcgQEAKIAlpZnAtPmlmX2NhcGVuYWJs
ZSB8PQogCSAgICBJRkNBUF9WTEFOX0hXVEFHR0lORyB8IElGQ0FQX1ZMQU5fTVRVIHwgSUZDQVBf
SFdDU1VNIHwgSUZDQVBfVFNPIHwKIAkgICAgSUZDQVBfTFJPOwotCi0JaWYgKGh2X3ZtYnVzX3By
b3RvY2FsX3ZlcnNpb24gPj0gSFZfVk1CVVNfVkVSU0lPTl9XSU44XzEpCi0JCXNjLT5obl9jc3Vt
X2Fzc2lzdCA9IEhOX0NTVU1fQVNTSVNUOwotCWVsc2UKLQkJc2MtPmhuX2NzdW1fYXNzaXN0ID0g
SE5fQ1NVTV9BU1NJU1RfV0lOODsKLQlpZnAtPmlmX2h3YXNzaXN0ID0gc2MtPmhuX2NzdW1fYXNz
aXN0IHwgQ1NVTV9UU087CisJaWZwLT5pZl9od2Fzc2lzdCA9IHNjLT5obl90eF9yaW5nWzBdLmhu
X2NzdW1fYXNzaXN0IHwgQ1NVTV9UU087CiAKIAllcnJvciA9IGh2X3JmX29uX2RldmljZV9hZGQo
ZGV2aWNlX2N0eCwgJmRldmljZV9pbmZvKTsKIAlpZiAoZXJyb3IpCkBAIC00NTUsNTIgKzQ0OSwx
NCBAQAogI2VuZGlmCiAKIAlzYy0+aG5fdHhfY2hpbW5leV9tYXggPSBzYy0+bmV0X2Rldi0+c2Vu
ZF9zZWN0aW9uX3NpemU7Ci0Jc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9IHNjLT5obl90eF9jaGlt
bmV5X21heDsKKwlobl9zZXRfdHhfY2hpbW5leV9zaXplKHNjLCBzYy0+aG5fdHhfY2hpbW5leV9t
YXgpOwogCWlmIChobl90eF9jaGltbmV5X3NpemUgPiAwICYmCiAJICAgIGhuX3R4X2NoaW1uZXlf
c2l6ZSA8IHNjLT5obl90eF9jaGltbmV5X21heCkKLQkJc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9
IGhuX3R4X2NoaW1uZXlfc2l6ZTsKLQotCS8qCi0JICogQWx3YXlzIHNjaGVkdWxlIHRyYW5zbWlz
c2lvbiBpbnN0ZWFkIG9mIHRyeWluZwotCSAqIHRvIGRvIGRpcmVjdCB0cmFuc21pc3Npb24uICBU
aGlzIG9uZSBnaXZlcyB0aGUKLQkgKiBiZXN0IHBlcmZvcm1hbmNlIHNvIGZhci4KLQkgKi8KLQlz
Yy0+aG5fc2NoZWRfdHggPSAxOwotCi0JY3R4ID0gZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRldik7
Ci0JY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKTsK
LQotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJub190eGRlc2NzIiwK
LQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9ub190eGRlc2NzLCAiIyBvZiB0aW1lcyBzaG9ydCBv
ZiBUWCBkZXNjcyIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJz
ZW5kX2ZhaWxlZCIsCi0JICAgIENUTEZMQUdfUlcsICZzYy0+aG5fc2VuZF9mYWlsZWQsICIjIG9m
IGh5cGVyLXYgc2VuZGluZyBmYWlsdXJlIik7Ci0JU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxk
LCBPSURfQVVUTywgInR4ZG1hX2ZhaWxlZCIsCi0JICAgIENUTEZMQUdfUlcsICZzYy0+aG5fdHhk
bWFfZmFpbGVkLCAiIyBvZiBUWCBETUEgZmFpbHVyZSIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4
LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jb2xsYXBzZWQiLAotCSAgICBDVExGTEFHX1JXLCAmc2Mt
PmhuX3R4X2NvbGxhcHNlZCwgIiMgb2YgVFggbWJ1ZiBjb2xsYXBzZWQiKTsKLQlTWVNDVExfQURE
X1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfY2hpbW5leSIsCi0JICAgIENUTEZMQUdf
UlcsICZzYy0+aG5fdHhfY2hpbW5leSwgIiMgb2YgY2hpbW5leSBzZW5kIik7Ci0JU1lTQ1RMX0FE
RF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eGRlc2NfY250IiwKLQkgICAgQ1RMRkxBR19S
RCwgJnNjLT5obl90eGRlc2NfY250LCAwLCAiIyBvZiB0b3RhbCBUWCBkZXNjcyIpOwotCVNZU0NU
TF9BRERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhkZXNjX2F2YWlsIiwKLQkgICAgQ1RM
RkxBR19SRCwgJnNjLT5obl90eGRlc2NfYXZhaWwsIDAsICIjIG9mIGF2YWlsYWJsZSBUWCBkZXNj
cyIpOwotCVNZU0NUTF9BRERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfY2hpbW5leV9t
YXgiLAotCSAgICBDVExGTEFHX1JELCAmc2MtPmhuX3R4X2NoaW1uZXlfbWF4LCAwLAotCSAgICAi
Q2hpbW5leSBzZW5kIHBhY2tldCBzaXplIHVwcGVyIGJvdW5kYXJ5Iik7Ci0JU1lTQ1RMX0FERF9Q
Uk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfY2hpbW5leV9zaXplIiwKLQkgICAgQ1RMVFlQ
RV9JTlQgfCBDVExGTEFHX1JXLCBzYywgMCwgaG5fdHhfY2hpbW5leV9zaXplX3N5c2N0bCwKLQkg
ICAgIkkiLCAiQ2hpbW5leSBzZW5kIHBhY2tldCBzaXplIGxpbWl0Iik7Ci0JU1lTQ1RMX0FERF9J
TlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkaXJlY3RfdHhfc2l6ZSIsCi0JICAgIENUTEZMQUdf
UlcsICZzYy0+aG5fZGlyZWN0X3R4X3NpemUsIDAsCi0JICAgICJTaXplIG9mIHRoZSBwYWNrZXQg
Zm9yIGRpcmVjdCB0cmFuc21pc3Npb24iKTsKLQlTWVNDVExfQUREX0lOVChjdHgsIGNoaWxkLCBP
SURfQVVUTywgInNjaGVkX3R4IiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9zY2hlZF90eCwg
MCwKLQkgICAgIkFsd2F5cyBzY2hlZHVsZSB0cmFuc21pc3Npb24gIgotCSAgICAiaW5zdGVhZCBv
ZiBkb2luZyBkaXJlY3QgdHJhbnNtaXNzaW9uIik7CisJCWhuX3NldF90eF9jaGltbmV5X3NpemUo
c2MsIGhuX3R4X2NoaW1uZXlfc2l6ZSk7CiAKIAlyZXR1cm4gKDApOwogZmFpbGVkOgotCWhuX2Rl
c3Ryb3lfdHhfcmluZyhzYyk7CisJaG5fZGVzdHJveV90eF9kYXRhKHNjKTsKIAlpZiAoaWZwICE9
IE5VTEwpCiAJCWlmX2ZyZWUoaWZwKTsKIAlyZXR1cm4gKGVycm9yKTsKQEAgLTUzMSwxNCArNDg3
LDE0IEBACiAKIAlodl9yZl9vbl9kZXZpY2VfcmVtb3ZlKGh2X2RldmljZSwgSFZfUkZfTlZfREVT
VFJPWV9DSEFOTkVMKTsKIAotCXRhc2txdWV1ZV9kcmFpbihzYy0+aG5fdHhfdGFza3EsICZzYy0+
aG5fc3RhcnRfdGFzayk7Ci0JdGFza3F1ZXVlX2RyYWluKHNjLT5obl90eF90YXNrcSwgJnNjLT5o
bl90eGVvZl90YXNrKTsKLQlpZiAoc2MtPmhuX3R4X3Rhc2txICE9IGhuX3R4X3Rhc2txKQotCQl0
YXNrcXVldWVfZnJlZShzYy0+aG5fdHhfdGFza3EpOworCWhuX3N0b3BfdHhfdGFza3Moc2MpOwog
CiAJaWZtZWRpYV9yZW1vdmVhbGwoJnNjLT5obl9tZWRpYSk7CiAJaG5fZGVzdHJveV9yeF9kYXRh
KHNjKTsKLQlobl9kZXN0cm95X3R4X3Jpbmcoc2MpOworCWhuX2Rlc3Ryb3lfdHhfZGF0YShzYyk7
CisKKwlpZiAoc2MtPmhuX3R4X3Rhc2txICE9IGhuX3R4X3Rhc2txKQorCQl0YXNrcXVldWVfZnJl
ZShzYy0+aG5fdHhfdGFza3EpOwogCiAJcmV0dXJuICgwKTsKIH0KQEAgLTU1MywxMyArNTA5LDEz
IEBACiB9CiAKIHN0YXRpYyBfX2lubGluZSBpbnQKLWhuX3R4ZGVzY19kbWFtYXBfbG9hZChzdHJ1
Y3QgaG5fc29mdGMgKnNjLCBzdHJ1Y3QgaG5fdHhkZXNjICp0eGQsCitobl90eGRlc2NfZG1hbWFw
X2xvYWQoc3RydWN0IGhuX3R4X3JpbmcgKnR4ciwgc3RydWN0IGhuX3R4ZGVzYyAqdHhkLAogICAg
IHN0cnVjdCBtYnVmICoqbV9oZWFkLCBidXNfZG1hX3NlZ21lbnRfdCAqc2VncywgaW50ICpuc2Vn
cykKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbSA9ICptX2hlYWQ7CiAJaW50IGVycm9yOwogCi0JZXJyb3Ig
PSBidXNfZG1hbWFwX2xvYWRfbWJ1Zl9zZyhzYy0+aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFf
ZG1hcCwKKwllcnJvciA9IGJ1c19kbWFtYXBfbG9hZF9tYnVmX3NnKHR4ci0+aG5fdHhfZGF0YV9k
dGFnLCB0eGQtPmRhdGFfZG1hcCwKIAkgICAgbSwgc2VncywgbnNlZ3MsIEJVU19ETUFfTk9XQUlU
KTsKIAlpZiAoZXJyb3IgPT0gRUZCSUcpIHsKIAkJc3RydWN0IG1idWYgKm1fbmV3OwpAQCAtNTY5
LDM0ICs1MjUsMzQgQEAKIAkJCXJldHVybiBFTk9CVUZTOwogCQllbHNlCiAJCQkqbV9oZWFkID0g
bSA9IG1fbmV3OwotCQlzYy0+aG5fdHhfY29sbGFwc2VkKys7CisJCXR4ci0+aG5fdHhfY29sbGFw
c2VkKys7CiAKLQkJZXJyb3IgPSBidXNfZG1hbWFwX2xvYWRfbWJ1Zl9zZyhzYy0+aG5fdHhfZGF0
YV9kdGFnLAorCQllcnJvciA9IGJ1c19kbWFtYXBfbG9hZF9tYnVmX3NnKHR4ci0+aG5fdHhfZGF0
YV9kdGFnLAogCQkgICAgdHhkLT5kYXRhX2RtYXAsIG0sIHNlZ3MsIG5zZWdzLCBCVVNfRE1BX05P
V0FJVCk7CiAJfQogCWlmICghZXJyb3IpIHsKLQkJYnVzX2RtYW1hcF9zeW5jKHNjLT5obl90eF9k
YXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwLAorCQlidXNfZG1hbWFwX3N5bmModHhyLT5obl90eF9k
YXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwLAogCQkgICAgQlVTX0RNQVNZTkNfUFJFV1JJVEUpOwog
CQl0eGQtPmZsYWdzIHw9IEhOX1RYRF9GTEFHX0RNQU1BUDsKIAl9CiAJcmV0dXJuIGVycm9yOwog
fQogCiBzdGF0aWMgX19pbmxpbmUgdm9pZAotaG5fdHhkZXNjX2RtYW1hcF91bmxvYWQoc3RydWN0
IGhuX3NvZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkKQoraG5fdHhkZXNjX2RtYW1hcF91
bmxvYWQoc3RydWN0IGhuX3R4X3JpbmcgKnR4ciwgc3RydWN0IGhuX3R4ZGVzYyAqdHhkKQogewog
CiAJaWYgKHR4ZC0+ZmxhZ3MgJiBITl9UWERfRkxBR19ETUFNQVApIHsKLQkJYnVzX2RtYW1hcF9z
eW5jKHNjLT5obl90eF9kYXRhX2R0YWcsCisJCWJ1c19kbWFtYXBfc3luYyh0eHItPmhuX3R4X2Rh
dGFfZHRhZywKIAkJICAgIHR4ZC0+ZGF0YV9kbWFwLCBCVVNfRE1BU1lOQ19QT1NUV1JJVEUpOwot
CQlidXNfZG1hbWFwX3VubG9hZChzYy0+aG5fdHhfZGF0YV9kdGFnLAorCQlidXNfZG1hbWFwX3Vu
bG9hZCh0eHItPmhuX3R4X2RhdGFfZHRhZywKIAkJICAgIHR4ZC0+ZGF0YV9kbWFwKTsKIAkJdHhk
LT5mbGFncyAmPSB+SE5fVFhEX0ZMQUdfRE1BTUFQOwogCX0KIH0KIAogc3RhdGljIF9faW5saW5l
IGludAotaG5fdHhkZXNjX3B1dChzdHJ1Y3QgaG5fc29mdGMgKnNjLCBzdHJ1Y3QgaG5fdHhkZXNj
ICp0eGQpCitobl90eGRlc2NfcHV0KHN0cnVjdCBobl90eF9yaW5nICp0eHIsIHN0cnVjdCBobl90
eGRlc2MgKnR4ZCkKIHsKIAogCUtBU1NFUlQoKHR4ZC0+ZmxhZ3MgJiBITl9UWERfRkxBR19PTkxJ
U1QpID09IDAsCkBAIC02MDYsMzkgKzU2MiwzOSBAQAogCWlmIChhdG9taWNfZmV0Y2hhZGRfaW50
KCZ0eGQtPnJlZnMsIC0xKSAhPSAxKQogCQlyZXR1cm4gMDsKIAotCWhuX3R4ZGVzY19kbWFtYXBf
dW5sb2FkKHNjLCB0eGQpOworCWhuX3R4ZGVzY19kbWFtYXBfdW5sb2FkKHR4ciwgdHhkKTsKIAlp
ZiAodHhkLT5tICE9IE5VTEwpIHsKIAkJbV9mcmVlbSh0eGQtPm0pOwogCQl0eGQtPm0gPSBOVUxM
OwogCX0KIAogCXR4ZC0+ZmxhZ3MgfD0gSE5fVFhEX0ZMQUdfT05MSVNUOwogCi0JbXR4X2xvY2tf
c3Bpbigmc2MtPmhuX3R4bGlzdF9zcGluKTsKLQlLQVNTRVJUKHNjLT5obl90eGRlc2NfYXZhaWwg
Pj0gMCAmJgotCSAgICBzYy0+aG5fdHhkZXNjX2F2YWlsIDwgc2MtPmhuX3R4ZGVzY19jbnQsCi0J
ICAgICgidHhkZXNjX3B1dDogaW52YWxpZCB0eGQgYXZhaWwgJWQiLCBzYy0+aG5fdHhkZXNjX2F2
YWlsKSk7Ci0Jc2MtPmhuX3R4ZGVzY19hdmFpbCsrOwotCVNMSVNUX0lOU0VSVF9IRUFEKCZzYy0+
aG5fdHhsaXN0LCB0eGQsIGxpbmspOwotCW10eF91bmxvY2tfc3Bpbigmc2MtPmhuX3R4bGlzdF9z
cGluKTsKKwltdHhfbG9ja19zcGluKCZ0eHItPmhuX3R4bGlzdF9zcGluKTsKKwlLQVNTRVJUKHR4
ci0+aG5fdHhkZXNjX2F2YWlsID49IDAgJiYKKwkgICAgdHhyLT5obl90eGRlc2NfYXZhaWwgPCB0
eHItPmhuX3R4ZGVzY19jbnQsCisJICAgICgidHhkZXNjX3B1dDogaW52YWxpZCB0eGQgYXZhaWwg
JWQiLCB0eHItPmhuX3R4ZGVzY19hdmFpbCkpOworCXR4ci0+aG5fdHhkZXNjX2F2YWlsKys7CisJ
U0xJU1RfSU5TRVJUX0hFQUQoJnR4ci0+aG5fdHhsaXN0LCB0eGQsIGxpbmspOworCW10eF91bmxv
Y2tfc3BpbigmdHhyLT5obl90eGxpc3Rfc3Bpbik7CiAKIAlyZXR1cm4gMTsKIH0KIAogc3RhdGlj
IF9faW5saW5lIHN0cnVjdCBobl90eGRlc2MgKgotaG5fdHhkZXNjX2dldChzdHJ1Y3QgaG5fc29m
dGMgKnNjKQoraG5fdHhkZXNjX2dldChzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyKQogewogCXN0cnVj
dCBobl90eGRlc2MgKnR4ZDsKIAotCW10eF9sb2NrX3NwaW4oJnNjLT5obl90eGxpc3Rfc3Bpbik7
Ci0JdHhkID0gU0xJU1RfRklSU1QoJnNjLT5obl90eGxpc3QpOworCW10eF9sb2NrX3NwaW4oJnR4
ci0+aG5fdHhsaXN0X3NwaW4pOworCXR4ZCA9IFNMSVNUX0ZJUlNUKCZ0eHItPmhuX3R4bGlzdCk7
CiAJaWYgKHR4ZCAhPSBOVUxMKSB7Ci0JCUtBU1NFUlQoc2MtPmhuX3R4ZGVzY19hdmFpbCA+IDAs
Ci0JCSAgICAoInR4ZGVzY19nZXQ6IGludmFsaWQgdHhkIGF2YWlsICVkIiwgc2MtPmhuX3R4ZGVz
Y19hdmFpbCkpOwotCQlzYy0+aG5fdHhkZXNjX2F2YWlsLS07Ci0JCVNMSVNUX1JFTU9WRV9IRUFE
KCZzYy0+aG5fdHhsaXN0LCBsaW5rKTsKKwkJS0FTU0VSVCh0eHItPmhuX3R4ZGVzY19hdmFpbCA+
IDAsCisJCSAgICAoInR4ZGVzY19nZXQ6IGludmFsaWQgdHhkIGF2YWlsICVkIiwgdHhyLT5obl90
eGRlc2NfYXZhaWwpKTsKKwkJdHhyLT5obl90eGRlc2NfYXZhaWwtLTsKKwkJU0xJU1RfUkVNT1ZF
X0hFQUQoJnR4ci0+aG5fdHhsaXN0LCBsaW5rKTsKIAl9Ci0JbXR4X3VubG9ja19zcGluKCZzYy0+
aG5fdHhsaXN0X3NwaW4pOworCW10eF91bmxvY2tfc3BpbigmdHhyLT5obl90eGxpc3Rfc3Bpbik7
CiAKIAlpZiAodHhkICE9IE5VTEwpIHsKIAkJS0FTU0VSVCh0eGQtPm0gPT0gTlVMTCAmJiB0eGQt
PnJlZnMgPT0gMCAmJgpAQCAtNjcwLDIwICs2MjYsMjEgQEAKIHsKIAluZXR2c2NfcGFja2V0ICpw
YWNrZXQgPSBjb250ZXh0OwogCXN0cnVjdCBobl90eGRlc2MgKnR4ZDsKLQlzdHJ1Y3QgaG5fc29m
dGMgKnNjOworCXN0cnVjdCBobl90eF9yaW5nICp0eHI7CiAKIAl0eGQgPSAoc3RydWN0IGhuX3R4
ZGVzYyAqKSh1aW50cHRyX3QpCiAJICAgIHBhY2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRp
b25fdGlkOwogCi0Jc2MgPSB0eGQtPnNjOwotCXNjLT5obl90eGVvZiA9IDE7Ci0JaG5fdHhkZXNj
X3B1dChzYywgdHhkKTsKKwl0eHIgPSB0eGQtPnR4cjsKKwl0eHItPmhuX3R4ZW9mID0gMTsKKwlo
bl90eGRlc2NfcHV0KHR4ciwgdHhkKTsKIH0KIAogdm9pZAogbmV0dnNjX2NoYW5uZWxfcm9sbHVw
KHN0cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHgpCiB7CiAJc3RydWN0IGhuX3NvZnRjICpzYyA9
IGRldmljZV9nZXRfc29mdGMoZGV2aWNlX2N0eC0+ZGV2aWNlKTsKKwlzdHJ1Y3QgaG5fdHhfcmlu
ZyAqdHhyID0gJnNjLT5obl90eF9yaW5nWzBdOyAvKiBUT0RPOiB2UlNTICovCiAjaWYgZGVmaW5l
ZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCXN0cnVjdCBobl9yeF9yaW5nICpyeHIgPSAmc2Mt
PmhuX3J4X3JpbmdbMF07IC8qIFRPRE86IHZSU1MgKi8KIAlzdHJ1Y3QgbHJvX2N0cmwgKmxybyA9
ICZyeHItPmhuX2xybzsKQEAgLTY5NSwxOSArNjUyLDE5IEBACiAJfQogI2VuZGlmCiAKLQlpZiAo
IXNjLT5obl90eGVvZikKKwlpZiAoIXR4ci0+aG5fdHhlb2YpCiAJCXJldHVybjsKIAotCXNjLT5o
bl90eGVvZiA9IDA7Ci0JaG5fc3RhcnRfdHhlb2Yoc2MtPmhuX2lmcCk7CisJdHhyLT5obl90eGVv
ZiA9IDA7CisJaG5fc3RhcnRfdHhlb2YodHhyKTsKIH0KIAogLyoKICAqIE5PVEU6CiAgKiBJZiB0
aGlzIGZ1bmN0aW9uIGZhaWxzLCB0aGVuIGJvdGggdHhkIGFuZCBtX2hlYWQwIHdpbGwgYmUgZnJl
ZWQuCiAgKi8KIHN0YXRpYyBpbnQKLWhuX2VuY2FwKHN0cnVjdCBobl9zb2Z0YyAqc2MsIHN0cnVj
dCBobl90eGRlc2MgKnR4ZCwgc3RydWN0IG1idWYgKiptX2hlYWQwKQoraG5fZW5jYXAoc3RydWN0
IGhuX3R4X3JpbmcgKnR4ciwgc3RydWN0IGhuX3R4ZGVzYyAqdHhkLCBzdHJ1Y3QgbWJ1ZiAqKm1f
aGVhZDApCiB7CiAJYnVzX2RtYV9zZWdtZW50X3Qgc2Vnc1tITl9UWF9EQVRBX1NFR0NOVF9NQVhd
OwogCWludCBlcnJvciwgbnNlZ3MsIGk7CkBAIC04MTAsNyArNzY3LDcgQEAKICNlbmRpZgogCQl0
c29faW5mby0+bHNvX3YyX3htaXQudGNwX2hlYWRlcl9vZmZzZXQgPSAwOwogCQl0c29faW5mby0+
bHNvX3YyX3htaXQubXNzID0gbV9oZWFkLT5tX3BrdGhkci50c29fc2Vnc3o7Ci0JfSBlbHNlIGlm
IChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBzYy0+aG5fY3N1bV9hc3Npc3QpIHsKKwl9
IGVsc2UgaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIHR4ci0+aG5fY3N1bV9hc3Np
c3QpIHsKIAkJcm5kaXNfdGNwX2lwX2NzdW1faW5mbyAqY3N1bV9pbmZvOwogCiAJCXJuZGlzX21z
Z19zaXplICs9IFJORElTX0NTVU1fUFBJX1NJWkU7CkBAIC04MzcsOCArNzk0LDggQEAKIAkvKgog
CSAqIENoaW1uZXkgc2VuZCwgaWYgdGhlIHBhY2tldCBjb3VsZCBmaXQgaW50byBvbmUgY2hpbW5l
eSBidWZmZXIuCiAJICovCi0JaWYgKHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiA8IHNjLT5obl90
eF9jaGltbmV5X3NpemUpIHsKLQkJbmV0dnNjX2RldiAqbmV0X2RldiA9IHNjLT5uZXRfZGV2Owor
CWlmIChwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW4gPCB0eHItPmhuX3R4X2NoaW1uZXlfc2l6ZSkg
eworCQluZXR2c2NfZGV2ICpuZXRfZGV2ID0gdHhyLT5obl9zYy0+bmV0X2RldjsKIAkJdWludDMy
X3Qgc2VuZF9idWZfc2VjdGlvbl9pZHg7CiAKIAkJc2VuZF9idWZfc2VjdGlvbl9pZHggPQpAQCAt
ODU3LDEyICs4MTQsMTIgQEAKIAkJCXBhY2tldC0+c2VuZF9idWZfc2VjdGlvbl9zaXplID0KIAkJ
CSAgICBwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW47CiAJCQlwYWNrZXQtPnBhZ2VfYnVmX2NvdW50
ID0gMDsKLQkJCXNjLT5obl90eF9jaGltbmV5Kys7CisJCQl0eHItPmhuX3R4X2NoaW1uZXkrKzsK
IAkJCWdvdG8gZG9uZTsKIAkJfQogCX0KIAotCWVycm9yID0gaG5fdHhkZXNjX2RtYW1hcF9sb2Fk
KHNjLCB0eGQsICZtX2hlYWQsIHNlZ3MsICZuc2Vncyk7CisJZXJyb3IgPSBobl90eGRlc2NfZG1h
bWFwX2xvYWQodHhyLCB0eGQsICZtX2hlYWQsIHNlZ3MsICZuc2Vncyk7CiAJaWYgKGVycm9yKSB7
CiAJCWludCBmcmVlZDsKIApAQCAtODcyLDEyICs4MjksMTIgQEAKIAkJbV9mcmVlbShtX2hlYWQp
OwogCQkqbV9oZWFkMCA9IE5VTEw7CiAKLQkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHNjLCB0eGQp
OworCQlmcmVlZCA9IGhuX3R4ZGVzY19wdXQodHhyLCB0eGQpOwogCQlLQVNTRVJUKGZyZWVkICE9
IDAsCiAJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0eGRtYSBlcnJvciIpKTsKIAotCQlz
Yy0+aG5fdHhkbWFfZmFpbGVkKys7Ci0JCWlmX2luY19jb3VudGVyKHNjLT5obl9pZnAsIElGQ09V
TlRFUl9PRVJST1JTLCAxKTsKKwkJdHhyLT5obl90eGRtYV9mYWlsZWQrKzsKKwkJaWZfaW5jX2Nv
dW50ZXIodHhyLT5obl9zYy0+aG5faWZwLCBJRkNPVU5URVJfT0VSUk9SUywgMSk7CiAJCXJldHVy
biBlcnJvcjsKIAl9CiAJKm1faGVhZDAgPSBtX2hlYWQ7CkBAIC05MjAsMTEgKzg3NywxNSBAQAog
ICogU3RhcnQgYSB0cmFuc21pdCBvZiBvbmUgb3IgbW9yZSBwYWNrZXRzCiAgKi8KIHN0YXRpYyBp
bnQKLWhuX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgaW50IGxlbikKK2huX3N0YXJ0
X2xvY2tlZChzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyLCBpbnQgbGVuKQogewotCXN0cnVjdCBobl9z
b2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSB0eHItPmhu
X3NjOworCXN0cnVjdCBpZm5ldCAqaWZwID0gc2MtPmhuX2lmcDsKIAlzdHJ1Y3QgaHZfZGV2aWNl
ICpkZXZpY2VfY3R4ID0gdm1idXNfZ2V0X2RldmN0eChzYy0+aG5fZGV2KTsKIAorCUtBU1NFUlQo
dHhyID09ICZzYy0+aG5fdHhfcmluZ1swXSwgKCJub3QgdGhlIGZpcnN0IFRYIHJpbmciKSk7CisJ
bXR4X2Fzc2VydCgmdHhyLT5obl90eF9sb2NrLCBNQV9PV05FRCk7CisKIAlpZiAoKGlmcC0+aWZf
ZHJ2X2ZsYWdzICYgKElGRl9EUlZfUlVOTklORyB8IElGRl9EUlZfT0FDVElWRSkpICE9CiAJICAg
IElGRl9EUlZfUlVOTklORykKIAkJcmV0dXJuIDA7CkBAIC05NDgsMTUgKzkwOSwxNSBAQAogCQkJ
cmV0dXJuIDE7CiAJCX0KIAotCQl0eGQgPSBobl90eGRlc2NfZ2V0KHNjKTsKKwkJdHhkID0gaG5f
dHhkZXNjX2dldCh0eHIpOwogCQlpZiAodHhkID09IE5VTEwpIHsKLQkJCXNjLT5obl9ub190eGRl
c2NzKys7CisJCQl0eHItPmhuX25vX3R4ZGVzY3MrKzsKIAkJCUlGX1BSRVBFTkQoJmlmcC0+aWZf
c25kLCBtX2hlYWQpOwogCQkJYXRvbWljX3NldF9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJRkZf
RFJWX09BQ1RJVkUpOwogCQkJYnJlYWs7CiAJCX0KIAotCQllcnJvciA9IGhuX2VuY2FwKHNjLCB0
eGQsICZtX2hlYWQpOworCQllcnJvciA9IGhuX2VuY2FwKHR4ciwgdHhkLCAmbV9oZWFkKTsKIAkJ
aWYgKGVycm9yKSB7CiAJCQkvKiBCb3RoIHR4ZCBhbmQgbV9oZWFkIGFyZSBmcmVlZCAqLwogCQkJ
Y29udGludWU7CkBAIC05NzEsNyArOTMyLDcgQEAKIAkJCUVUSEVSX0JQRl9NVEFQKGlmcCwgbV9o
ZWFkKTsKIAkJCWlmX2luY19jb3VudGVyKGlmcCwgSUZDT1VOVEVSX09QQUNLRVRTLCAxKTsKIAkJ
fQotCQlobl90eGRlc2NfcHV0KHNjLCB0eGQpOworCQlobl90eGRlc2NfcHV0KHR4ciwgdHhkKTsK
IAogCQlpZiAoX19wcmVkaWN0X2ZhbHNlKGVycm9yKSkgewogCQkJaW50IGZyZWVkOwpAQCAtOTgz
LDkgKzk0NCw5IEBACiAJCQkgKiBjb21tYW5kcyB0byBydW4/ICBBc2sgbmV0dnNjX2NoYW5uZWxf
cm9sbHVwKCkKIAkJCSAqIHRvIGtpY2sgc3RhcnQgbGF0ZXIuCiAJCQkgKi8KLQkJCXNjLT5obl90
eGVvZiA9IDE7CisJCQl0eHItPmhuX3R4ZW9mID0gMTsKIAkJCWlmICghc2VuZF9mYWlsZWQpIHsK
LQkJCQlzYy0+aG5fc2VuZF9mYWlsZWQrKzsKKwkJCQl0eHItPmhuX3NlbmRfZmFpbGVkKys7CiAJ
CQkJc2VuZF9mYWlsZWQgPSAxOwogCQkJCS8qCiAJCQkJICogVHJ5IHNlbmRpbmcgYWdhaW4gYWZ0
ZXIgc2V0IGhuX3R4ZW9mOwpAQCAtMTAwMiwxMSArOTYzLDExIEBACiAJCQkgKiBETUEgbWFwIGlu
IGhuX3R4ZGVzY19wdXQoKSwgaWYgaXQgd2FzIGxvYWRlZC4KIAkJCSAqLwogCQkJdHhkLT5tID0g
TlVMTDsKLQkJCWZyZWVkID0gaG5fdHhkZXNjX3B1dChzYywgdHhkKTsKKwkJCWZyZWVkID0gaG5f
dHhkZXNjX3B1dCh0eHIsIHR4ZCk7CiAJCQlLQVNTRVJUKGZyZWVkICE9IDAsCiAJCQkgICAgKCJm
YWlsIHRvIGZyZWUgdHhkIHVwb24gc2VuZCBlcnJvciIpKTsKIAotCQkJc2MtPmhuX3NlbmRfZmFp
bGVkKys7CisJCQl0eHItPmhuX3NlbmRfZmFpbGVkKys7CiAJCQlJRl9QUkVQRU5EKCZpZnAtPmlm
X3NuZCwgbV9oZWFkKTsKIAkJCWF0b21pY19zZXRfaW50KCZpZnAtPmlmX2Rydl9mbGFncywgSUZG
X0RSVl9PQUNUSVZFKTsKIAkJCWJyZWFrOwpAQCAtMTM4NCw4ICsxMzQ1LDEwIEBACiAJCX0KIAog
CQlzYy0+aG5fdHhfY2hpbW5leV9tYXggPSBzYy0+bmV0X2Rldi0+c2VuZF9zZWN0aW9uX3NpemU7
Ci0JCWlmIChzYy0+aG5fdHhfY2hpbW5leV9zaXplID4gc2MtPmhuX3R4X2NoaW1uZXlfbWF4KQot
CQkJc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9IHNjLT5obl90eF9jaGltbmV5X21heDsKKwkJaWYg
KHNjLT5obl90eF9yaW5nWzBdLmhuX3R4X2NoaW1uZXlfc2l6ZSA+CisJCSAgICBzYy0+aG5fdHhf
Y2hpbW5leV9tYXgpCisJCQlobl9zZXRfdHhfY2hpbW5leV9zaXplKHNjLCBzYy0+aG5fdHhfY2hp
bW5leV9tYXgpOworCiAJCWhuX2lmaW5pdF9sb2NrZWQoc2MpOwogCiAJCU5WX0xPQ0soc2MpOwpA
QCAtMTQ1MCwxMCArMTQxMywxMyBAQAogCQltYXNrID0gaWZyLT5pZnJfcmVxY2FwIF4gaWZwLT5p
Zl9jYXBlbmFibGU7CiAJCWlmIChtYXNrICYgSUZDQVBfVFhDU1VNKSB7CiAJCQlpZnAtPmlmX2Nh
cGVuYWJsZSBePSBJRkNBUF9UWENTVU07Ci0JCQlpZiAoaWZwLT5pZl9jYXBlbmFibGUgJiBJRkNB
UF9UWENTVU0pCi0JCQkJaWZwLT5pZl9od2Fzc2lzdCB8PSBzYy0+aG5fY3N1bV9hc3Npc3Q7Ci0J
CQllbHNlCi0JCQkJaWZwLT5pZl9od2Fzc2lzdCAmPSB+c2MtPmhuX2NzdW1fYXNzaXN0OworCQkJ
aWYgKGlmcC0+aWZfY2FwZW5hYmxlICYgSUZDQVBfVFhDU1VNKSB7CisJCQkJaWZwLT5pZl9od2Fz
c2lzdCB8PQorCQkJCSAgICBzYy0+aG5fdHhfcmluZ1swXS5obl9jc3VtX2Fzc2lzdDsKKwkJCX0g
ZWxzZSB7CisJCQkJaWZwLT5pZl9od2Fzc2lzdCAmPQorCQkJCSAgICB+c2MtPmhuX3R4X3Jpbmdb
MF0uaG5fY3N1bV9hc3Npc3Q7CisJCQl9CiAJCX0KIAogCQlpZiAobWFzayAmIElGQ0FQX1JYQ1NV
TSkKQEAgLTE1MzYsNDggKzE1MDIsNTQgQEAKIGhuX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQog
ewogCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOworCXN0cnVjdCBobl90eF9y
aW5nICp0eHIgPSAmc2MtPmhuX3R4X3JpbmdbMF07CiAKLQlpZiAoc2MtPmhuX3NjaGVkX3R4KQor
CWlmICh0eHItPmhuX3NjaGVkX3R4KQogCQlnb3RvIGRvX3NjaGVkOwogCi0JaWYgKE5WX1RSWUxP
Q0soc2MpKSB7CisJaWYgKG10eF90cnlsb2NrKCZ0eHItPmhuX3R4X2xvY2spKSB7CiAJCWludCBz
Y2hlZDsKIAotCQlzY2hlZCA9IGhuX3N0YXJ0X2xvY2tlZChpZnAsIHNjLT5obl9kaXJlY3RfdHhf
c2l6ZSk7Ci0JCU5WX1VOTE9DSyhzYyk7CisJCXNjaGVkID0gaG5fc3RhcnRfbG9ja2VkKHR4ciwg
dHhyLT5obl9kaXJlY3RfdHhfc2l6ZSk7CisJCW10eF91bmxvY2soJnR4ci0+aG5fdHhfbG9jayk7
CiAJCWlmICghc2NoZWQpCiAJCQlyZXR1cm47CiAJfQogZG9fc2NoZWQ6Ci0JdGFza3F1ZXVlX2Vu
cXVldWUoc2MtPmhuX3R4X3Rhc2txLCAmc2MtPmhuX3N0YXJ0X3Rhc2spOworCXRhc2txdWV1ZV9l
bnF1ZXVlKHR4ci0+aG5fdHhfdGFza3EsICZ0eHItPmhuX3N0YXJ0X3Rhc2spOwogfQogCiBzdGF0
aWMgdm9pZAotaG5fc3RhcnRfdHhlb2Yoc3RydWN0IGlmbmV0ICppZnApCitobl9zdGFydF90eGVv
ZihzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyKQogewotCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBpZnAt
PmlmX3NvZnRjOworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSB0eHItPmhuX3NjOworCXN0cnVjdCBp
Zm5ldCAqaWZwID0gc2MtPmhuX2lmcDsKKworCUtBU1NFUlQodHhyID09ICZzYy0+aG5fdHhfcmlu
Z1swXSwgKCJub3QgdGhlIGZpcnN0IFRYIHJpbmciKSk7CiAKLQlpZiAoc2MtPmhuX3NjaGVkX3R4
KQorCWlmICh0eHItPmhuX3NjaGVkX3R4KQogCQlnb3RvIGRvX3NjaGVkOwogCi0JaWYgKE5WX1RS
WUxPQ0soc2MpKSB7CisJaWYgKG10eF90cnlsb2NrKCZ0eHItPmhuX3R4X2xvY2spKSB7CiAJCWlu
dCBzY2hlZDsKIAogCQlhdG9taWNfY2xlYXJfaW50KCZpZnAtPmlmX2Rydl9mbGFncywgSUZGX0RS
Vl9PQUNUSVZFKTsKLQkJc2NoZWQgPSBobl9zdGFydF9sb2NrZWQoaWZwLCBzYy0+aG5fZGlyZWN0
X3R4X3NpemUpOwotCQlOVl9VTkxPQ0soc2MpOwotCQlpZiAoc2NoZWQpCi0JCQl0YXNrcXVldWVf
ZW5xdWV1ZShzYy0+aG5fdHhfdGFza3EsICZzYy0+aG5fc3RhcnRfdGFzayk7CisJCXNjaGVkID0g
aG5fc3RhcnRfbG9ja2VkKHR4ciwgdHhyLT5obl9kaXJlY3RfdHhfc2l6ZSk7CisJCW10eF91bmxv
Y2soJnR4ci0+aG5fdHhfbG9jayk7CisJCWlmIChzY2hlZCkgeworCQkJdGFza3F1ZXVlX2VucXVl
dWUodHhyLT5obl90eF90YXNrcSwKKwkJCSAgICAmdHhyLT5obl9zdGFydF90YXNrKTsKKwkJfQog
CX0gZWxzZSB7CiBkb19zY2hlZDoKIAkJLyoKIAkJICogUmVsZWFzZSB0aGUgT0FDVElWRSBlYXJs
aWVyLCB3aXRoIHRoZSBob3BlLCB0aGF0CiAJCSAqIG90aGVycyBjb3VsZCBjYXRjaCB1cC4gIFRo
ZSB0YXNrIHdpbGwgY2xlYXIgdGhlCi0JCSAqIGZsYWcgYWdhaW4gd2l0aCB0aGUgTlZfTE9DSyB0
byBhdm9pZCBwb3NzaWJsZQorCQkgKiBmbGFnIGFnYWluIHdpdGggdGhlIGhuX3R4X2xvY2sgdG8g
YXZvaWQgcG9zc2libGUKIAkJICogcmFjZXMuCiAJCSAqLwogCQlhdG9taWNfY2xlYXJfaW50KCZp
ZnAtPmlmX2Rydl9mbGFncywgSUZGX0RSVl9PQUNUSVZFKTsKLQkJdGFza3F1ZXVlX2VucXVldWUo
c2MtPmhuX3R4X3Rhc2txLCAmc2MtPmhuX3R4ZW9mX3Rhc2spOworCQl0YXNrcXVldWVfZW5xdWV1
ZSh0eHItPmhuX3R4X3Rhc2txLCAmdHhyLT5obl90eGVvZl90YXNrKTsKIAl9CiB9CiAKQEAgLTE3
MzYsMTYgKzE3MDgsMTUgQEAKIAlzdHJ1Y3QgaG5fc29mdGMgKnNjID0gYXJnMTsKIAlpbnQgY2hp
bW5leV9zaXplLCBlcnJvcjsKIAotCWNoaW1uZXlfc2l6ZSA9IHNjLT5obl90eF9jaGltbmV5X3Np
emU7CisJY2hpbW5leV9zaXplID0gc2MtPmhuX3R4X3JpbmdbMF0uaG5fdHhfY2hpbW5leV9zaXpl
OwogCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJmNoaW1uZXlfc2l6ZSwgMCwgcmVx
KTsKIAlpZiAoZXJyb3IgfHwgcmVxLT5uZXdwdHIgPT0gTlVMTCkKIAkJcmV0dXJuIGVycm9yOwog
CiAJaWYgKGNoaW1uZXlfc2l6ZSA+IHNjLT5obl90eF9jaGltbmV5X21heCB8fCBjaGltbmV5X3Np
emUgPD0gMCkKIAkJcmV0dXJuIEVJTlZBTDsKIAotCWlmIChzYy0+aG5fdHhfY2hpbW5leV9zaXpl
ICE9IGNoaW1uZXlfc2l6ZSkKLQkJc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9IGNoaW1uZXlfc2l6
ZTsKKwlobl9zZXRfdHhfY2hpbW5leV9zaXplKHNjLCBjaGltbmV5X3NpemUpOwogCXJldHVybiAw
OwogfQogCkBAIC0xODAyLDYgKzE3NzMsNTYgQEAKIH0KIAogc3RhdGljIGludAoraG5fdHhfc3Rh
dF91bG9uZ19zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUykKK3sKKwlzdHJ1Y3QgaG5fc29mdGMg
KnNjID0gYXJnMTsKKwlpbnQgb2ZzID0gYXJnMiwgaSwgZXJyb3I7CisJc3RydWN0IGhuX3R4X3Jp
bmcgKnR4cjsKKwl1X2xvbmcgc3RhdDsKKworCXN0YXQgPSAwOworCWZvciAoaSA9IDA7IGkgPCBz
Yy0+aG5fdHhfcmluZ19jbnQ7ICsraSkgeworCQl0eHIgPSAmc2MtPmhuX3R4X3JpbmdbaV07CisJ
CXN0YXQgKz0gKigodV9sb25nICopKCh1aW50OF90ICopdHhyICsgb2ZzKSk7CisJfQorCisJZXJy
b3IgPSBzeXNjdGxfaGFuZGxlX2xvbmcob2lkcCwgJnN0YXQsIDAsIHJlcSk7CisJaWYgKGVycm9y
IHx8IHJlcS0+bmV3cHRyID09IE5VTEwpCisJCXJldHVybiBlcnJvcjsKKworCS8qIFplcm8gb3V0
IHRoaXMgc3RhdC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgc2MtPmhuX3R4X3JpbmdfY250OyArK2kp
IHsKKwkJdHhyID0gJnNjLT5obl90eF9yaW5nW2ldOworCQkqKCh1X2xvbmcgKikoKHVpbnQ4X3Qg
Kil0eHIgKyBvZnMpKSA9IDA7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Citobl90
eF9jb25mX2ludF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUykKK3sKKwlzdHJ1Y3QgaG5fc29m
dGMgKnNjID0gYXJnMTsKKwlpbnQgb2ZzID0gYXJnMiwgaSwgZXJyb3IsIGNvbmY7CisJc3RydWN0
IGhuX3R4X3JpbmcgKnR4cjsKKworCXR4ciA9ICZzYy0+aG5fdHhfcmluZ1swXTsKKwljb25mID0g
KigoaW50ICopKCh1aW50OF90ICopdHhyICsgb2ZzKSk7CisKKwllcnJvciA9IHN5c2N0bF9oYW5k
bGVfaW50KG9pZHAsICZjb25mLCAwLCByZXEpOworCWlmIChlcnJvciB8fCByZXEtPm5ld3B0ciA9
PSBOVUxMKQorCQlyZXR1cm4gZXJyb3I7CisKKwlOVl9MT0NLKHNjKTsKKwlmb3IgKGkgPSAwOyBp
IDwgc2MtPmhuX3R4X3JpbmdfY250OyArK2kpIHsKKwkJdHhyID0gJnNjLT5obl90eF9yaW5nW2ld
OworCQkqKChpbnQgKikoKHVpbnQ4X3QgKil0eHIgKyBvZnMpKSA9IGNvbmY7CisJfQorCU5WX1VO
TE9DSyhzYyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAogaG5fY2hlY2tfaXBsZW4o
Y29uc3Qgc3RydWN0IG1idWYgKm0sIGludCBob2ZmKQogewogCWNvbnN0IHN0cnVjdCBpcCAqaXA7
CkBAIC0yMDE5LDE2ICsyMDQwLDM3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWhuX2NyZWF0ZV90eF9y
aW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpCitobl9jcmVhdGVfdHhfcmluZyhzdHJ1Y3QgaG5fc29m
dGMgKnNjLCBpbnQgaWQpCiB7CisJc3RydWN0IGhuX3R4X3JpbmcgKnR4ciA9ICZzYy0+aG5fdHhf
cmluZ1tpZF07CiAJYnVzX2RtYV90YWdfdCBwYXJlbnRfZHRhZzsKIAlpbnQgZXJyb3IsIGk7CiAK
LQlzYy0+aG5fdHhkZXNjX2NudCA9IEhOX1RYX0RFU0NfQ05UOwotCXNjLT5obl90eGRlc2MgPSBt
YWxsb2Moc2l6ZW9mKHN0cnVjdCBobl90eGRlc2MpICogc2MtPmhuX3R4ZGVzY19jbnQsCisJdHhy
LT5obl9zYyA9IHNjOworCisJbXR4X2luaXQoJnR4ci0+aG5fdHhsaXN0X3NwaW4sICJobiB0eGxp
c3QiLCBOVUxMLCBNVFhfU1BJTik7CisJbXR4X2luaXQoJnR4ci0+aG5fdHhfbG9jaywgImhuIHR4
IiwgTlVMTCwgTVRYX0RFRik7CisKKwl0eHItPmhuX3R4ZGVzY19jbnQgPSBITl9UWF9ERVNDX0NO
VDsKKwl0eHItPmhuX3R4ZGVzYyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGhuX3R4ZGVzYykgKiB0
eHItPmhuX3R4ZGVzY19jbnQsCiAJICAgIE1fTkVUVlNDLCBNX1dBSVRPSyB8IE1fWkVSTyk7Ci0J
U0xJU1RfSU5JVCgmc2MtPmhuX3R4bGlzdCk7Ci0JbXR4X2luaXQoJnNjLT5obl90eGxpc3Rfc3Bp
biwgImhuIHR4bGlzdCIsIE5VTEwsIE1UWF9TUElOKTsKKwlTTElTVF9JTklUKCZ0eHItPmhuX3R4
bGlzdCk7CisKKwl0eHItPmhuX3R4X3Rhc2txID0gc2MtPmhuX3R4X3Rhc2txOworCVRBU0tfSU5J
VCgmdHhyLT5obl9zdGFydF90YXNrLCAwLCBobl9zdGFydF90YXNrZnVuYywgdHhyKTsKKwlUQVNL
X0lOSVQoJnR4ci0+aG5fdHhlb2ZfdGFzaywgMCwgaG5fdHhlb2ZfdGFza2Z1bmMsIHR4cik7CisK
Kwl0eHItPmhuX2RpcmVjdF90eF9zaXplID0gaG5fZGlyZWN0X3R4X3NpemU7CisJaWYgKGh2X3Zt
YnVzX3Byb3RvY2FsX3ZlcnNpb24gPj0gSFZfVk1CVVNfVkVSU0lPTl9XSU44XzEpCisJCXR4ci0+
aG5fY3N1bV9hc3Npc3QgPSBITl9DU1VNX0FTU0lTVDsKKwllbHNlCisJCXR4ci0+aG5fY3N1bV9h
c3Npc3QgPSBITl9DU1VNX0FTU0lTVF9XSU44OworCisJLyoKKwkgKiBBbHdheXMgc2NoZWR1bGUg
dHJhbnNtaXNzaW9uIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGRvIGRpcmVjdAorCSAqIHRyYW5zbWlz
c2lvbi4gIFRoaXMgb25lIGdpdmVzIHRoZSBiZXN0IHBlcmZvcm1hbmNlIHNvIGZhci4KKwkgKi8K
Kwl0eHItPmhuX3NjaGVkX3R4ID0gMTsKIAogCXBhcmVudF9kdGFnID0gYnVzX2dldF9kbWFfdGFn
KHNjLT5obl9kZXYpOwogCkBAIC0yMDQ1LDcgKzIwODcsNyBAQAogCSAgICAwLAkJCQkvKiBmbGFn
cyAqLwogCSAgICBOVUxMLAkJCS8qIGxvY2tmdW5jICovCiAJICAgIE5VTEwsCQkJLyogbG9ja2Z1
bmNhcmcgKi8KLQkgICAgJnNjLT5obl90eF9ybmRpc19kdGFnKTsKKwkgICAgJnR4ci0+aG5fdHhf
cm5kaXNfZHRhZyk7CiAJaWYgKGVycm9yKSB7CiAJCWRldmljZV9wcmludGYoc2MtPmhuX2Rldiwg
ImZhaWxlZCB0byBjcmVhdGUgcm5kaXMgZG1hdGFnXG4iKTsKIAkJcmV0dXJuIGVycm9yOwpAQCAt
MjA2NCwyMSArMjEwNiwyMSBAQAogCSAgICAwLAkJCQkvKiBmbGFncyAqLwogCSAgICBOVUxMLAkJ
CS8qIGxvY2tmdW5jICovCiAJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmNhcmcgKi8KLQkgICAgJnNj
LT5obl90eF9kYXRhX2R0YWcpOworCSAgICAmdHhyLT5obl90eF9kYXRhX2R0YWcpOwogCWlmIChl
cnJvcikgewogCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsICJmYWlsZWQgdG8gY3JlYXRlIGRh
dGEgZG1hdGFnXG4iKTsKIAkJcmV0dXJuIGVycm9yOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBz
Yy0+aG5fdHhkZXNjX2NudDsgKytpKSB7Ci0JCXN0cnVjdCBobl90eGRlc2MgKnR4ZCA9ICZzYy0+
aG5fdHhkZXNjW2ldOworCWZvciAoaSA9IDA7IGkgPCB0eHItPmhuX3R4ZGVzY19jbnQ7ICsraSkg
eworCQlzdHJ1Y3QgaG5fdHhkZXNjICp0eGQgPSAmdHhyLT5obl90eGRlc2NbaV07CiAKLQkJdHhk
LT5zYyA9IHNjOworCQl0eGQtPnR4ciA9IHR4cjsKIAogCQkvKgogCQkgKiBBbGxvY2F0ZSBhbmQg
bG9hZCBSTkRJUyBtZXNzYWdlcy4KIAkJICovCi0gICAgICAgIAllcnJvciA9IGJ1c19kbWFtZW1f
YWxsb2Moc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisgICAgICAgIAllcnJvciA9IGJ1c19kbWFtZW1f
YWxsb2ModHhyLT5obl90eF9ybmRpc19kdGFnLAogCQkgICAgKHZvaWQgKiopJnR4ZC0+cm5kaXNf
bXNnLAogCQkgICAgQlVTX0RNQV9XQUlUT0sgfCBCVVNfRE1BX0NPSEVSRU5ULAogCQkgICAgJnR4
ZC0+cm5kaXNfbXNnX2RtYXApOwpAQCAtMjA4OCw4OCArMjEzMCwyMjkgQEAKIAkJCXJldHVybiBl
cnJvcjsKIAkJfQogCi0JCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHNjLT5obl90eF9ybmRpc19k
dGFnLAorCQllcnJvciA9IGJ1c19kbWFtYXBfbG9hZCh0eHItPmhuX3R4X3JuZGlzX2R0YWcsCiAJ
CSAgICB0eGQtPnJuZGlzX21zZ19kbWFwLAogCQkgICAgdHhkLT5ybmRpc19tc2csIEhOX1JORElT
X01TR19MRU4sCiAJCSAgICBobl9kbWFfbWFwX3BhZGRyLCAmdHhkLT5ybmRpc19tc2dfcGFkZHIs
CiAJCSAgICBCVVNfRE1BX05PV0FJVCk7CiAJCWlmIChlcnJvcikgewogCQkJZGV2aWNlX3ByaW50
ZihzYy0+aG5fZGV2LAogCQkJICAgICJmYWlsZWQgdG8gbG9hZCBybmRpc19tc2csICVkXG4iLCBp
KTsKLQkJCWJ1c19kbWFtZW1fZnJlZShzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJCWJ1c19kbWFt
ZW1fZnJlZSh0eHItPmhuX3R4X3JuZGlzX2R0YWcsCiAJCQkgICAgdHhkLT5ybmRpc19tc2csIHR4
ZC0+cm5kaXNfbXNnX2RtYXApOwogCQkJcmV0dXJuIGVycm9yOwogCQl9CiAKIAkJLyogRE1BIG1h
cCBmb3IgVFggZGF0YS4gKi8KLQkJZXJyb3IgPSBidXNfZG1hbWFwX2NyZWF0ZShzYy0+aG5fdHhf
ZGF0YV9kdGFnLCAwLAorCQllcnJvciA9IGJ1c19kbWFtYXBfY3JlYXRlKHR4ci0+aG5fdHhfZGF0
YV9kdGFnLCAwLAogCQkgICAgJnR4ZC0+ZGF0YV9kbWFwKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlk
ZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCiAJCQkgICAgImZhaWxlZCB0byBhbGxvY2F0ZSB0eCBk
YXRhIGRtYW1hcFxuIik7Ci0JCQlidXNfZG1hbWFwX3VubG9hZChzYy0+aG5fdHhfcm5kaXNfZHRh
ZywKKwkJCWJ1c19kbWFtYXBfdW5sb2FkKHR4ci0+aG5fdHhfcm5kaXNfZHRhZywKIAkJCSAgICB0
eGQtPnJuZGlzX21zZ19kbWFwKTsKLQkJCWJ1c19kbWFtZW1fZnJlZShzYy0+aG5fdHhfcm5kaXNf
ZHRhZywKKwkJCWJ1c19kbWFtZW1fZnJlZSh0eHItPmhuX3R4X3JuZGlzX2R0YWcsCiAJCQkgICAg
dHhkLT5ybmRpc19tc2csIHR4ZC0+cm5kaXNfbXNnX2RtYXApOwogCQkJcmV0dXJuIGVycm9yOwog
CQl9CiAKIAkJLyogQWxsIHNldCwgcHV0IGl0IHRvIGxpc3QgKi8KIAkJdHhkLT5mbGFncyB8PSBI
Tl9UWERfRkxBR19PTkxJU1Q7Ci0JCVNMSVNUX0lOU0VSVF9IRUFEKCZzYy0+aG5fdHhsaXN0LCB0
eGQsIGxpbmspOworCQlTTElTVF9JTlNFUlRfSEVBRCgmdHhyLT5obl90eGxpc3QsIHR4ZCwgbGlu
ayk7CisJfQorCXR4ci0+aG5fdHhkZXNjX2F2YWlsID0gdHhyLT5obl90eGRlc2NfY250OworCisJ
aWYgKHNjLT5obl90eF9zeXNjdGxfdHJlZSAhPSBOVUxMKSB7CisJCXN0cnVjdCBzeXNjdGxfb2lk
X2xpc3QgKmNoaWxkOworCQlzdHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHg7CisJCWNoYXIgbmFt
ZVsxNl07CisKKwkJLyoKKwkJICogQ3JlYXRlIHBlciBUWCByaW5nIHN5c2N0bCB0cmVlOgorCQkg
KiBkZXYuaG4uVU5JVC50eC5SSU5HSUQKKwkJICovCisJCWN0eCA9IGRldmljZV9nZXRfc3lzY3Rs
X2N0eChzYy0+aG5fZGV2KTsKKwkJY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oc2MtPmhuX3R4X3N5
c2N0bF90cmVlKTsKKworCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlZCIsIGlkKTsK
KwkJdHhyLT5obl90eF9zeXNjdGxfdHJlZSA9IFNZU0NUTF9BRERfTk9ERShjdHgsIGNoaWxkLCBP
SURfQVVUTywKKwkJICAgIG5hbWUsIENUTEZMQUdfUkQsIDAsICIiKTsKKworCQlpZiAodHhyLT5o
bl90eF9zeXNjdGxfdHJlZSAhPSBOVUxMKSB7CisJCQljaGlsZCA9IFNZU0NUTF9DSElMRFJFTih0
eHItPmhuX3R4X3N5c2N0bF90cmVlKTsKKworCQkJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwg
T0lEX0FVVE8sICJ0eGRlc2NfYXZhaWwiLAorCQkJICAgIENUTEZMQUdfUkQsICZ0eHItPmhuX3R4
ZGVzY19hdmFpbCwgMCwKKwkJCSAgICAiIyBvZiBhdmFpbGFibGUgVFggZGVzY3MiKTsKKwkJfQog
CX0KLQlzYy0+aG5fdHhkZXNjX2F2YWlsID0gc2MtPmhuX3R4ZGVzY19jbnQ7CiAKIAlyZXR1cm4g
MDsKIH0KIAogc3RhdGljIHZvaWQKLWhuX2Rlc3Ryb3lfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMg
KnNjKQoraG5fZGVzdHJveV90eF9yaW5nKHN0cnVjdCBobl90eF9yaW5nICp0eHIpCiB7CiAJc3Ry
dWN0IGhuX3R4ZGVzYyAqdHhkOwogCi0Jd2hpbGUgKCh0eGQgPSBTTElTVF9GSVJTVCgmc2MtPmhu
X3R4bGlzdCkpICE9IE5VTEwpIHsKKwlpZiAodHhyLT5obl90eGRlc2MgPT0gTlVMTCkKKwkJcmV0
dXJuOworCisJd2hpbGUgKCh0eGQgPSBTTElTVF9GSVJTVCgmdHhyLT5obl90eGxpc3QpKSAhPSBO
VUxMKSB7CiAJCUtBU1NFUlQodHhkLT5tID09IE5VTEwsICgic3RpbGwgaGFzIG1idWYgaW5zdGFs
bGVkIikpOwogCQlLQVNTRVJUKCh0eGQtPmZsYWdzICYgSE5fVFhEX0ZMQUdfRE1BTUFQKSA9PSAw
LAogCQkgICAgKCJzdGlsbCBkbWEgbWFwcGVkIikpOwotCQlTTElTVF9SRU1PVkVfSEVBRCgmc2Mt
PmhuX3R4bGlzdCwgbGluayk7CisJCVNMSVNUX1JFTU9WRV9IRUFEKCZ0eHItPmhuX3R4bGlzdCwg
bGluayk7CiAKLQkJYnVzX2RtYW1hcF91bmxvYWQoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCWJ1
c19kbWFtYXBfdW5sb2FkKHR4ci0+aG5fdHhfcm5kaXNfZHRhZywKIAkJICAgIHR4ZC0+cm5kaXNf
bXNnX2RtYXApOwotCQlidXNfZG1hbWVtX2ZyZWUoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCWJ1
c19kbWFtZW1fZnJlZSh0eHItPmhuX3R4X3JuZGlzX2R0YWcsCiAJCSAgICB0eGQtPnJuZGlzX21z
ZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CiAKLQkJYnVzX2RtYW1hcF9kZXN0cm95KHNjLT5obl90
eF9kYXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwKTsKKwkJYnVzX2RtYW1hcF9kZXN0cm95KHR4ci0+
aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFfZG1hcCk7CisJfQorCisJaWYgKHR4ci0+aG5fdHhf
ZGF0YV9kdGFnICE9IE5VTEwpCisJCWJ1c19kbWFfdGFnX2Rlc3Ryb3kodHhyLT5obl90eF9kYXRh
X2R0YWcpOworCWlmICh0eHItPmhuX3R4X3JuZGlzX2R0YWcgIT0gTlVMTCkKKwkJYnVzX2RtYV90
YWdfZGVzdHJveSh0eHItPmhuX3R4X3JuZGlzX2R0YWcpOworCWZyZWUodHhyLT5obl90eGRlc2Ms
IE1fTkVUVlNDKTsKKwl0eHItPmhuX3R4ZGVzYyA9IE5VTEw7CisKKwltdHhfZGVzdHJveSgmdHhy
LT5obl90eGxpc3Rfc3Bpbik7CisJbXR4X2Rlc3Ryb3koJnR4ci0+aG5fdHhfbG9jayk7Cit9CisK
K3N0YXRpYyBpbnQKK2huX2NyZWF0ZV90eF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAqc2MpCit7CisJ
c3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqY2hpbGQ7CisJc3RydWN0IHN5c2N0bF9jdHhfbGlzdCAq
Y3R4OworCWludCBpOworCisJc2MtPmhuX3R4X3JpbmdfY250ID0gMTsgLyogVE9ETzogdlJTUyAq
LworCXNjLT5obl90eF9yaW5nID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgaG5fdHhfcmluZykgKiBz
Yy0+aG5fdHhfcmluZ19jbnQsCisJICAgIE1fTkVUVlNDLCBNX1dBSVRPSyB8IE1fWkVSTyk7CisK
KwljdHggPSBkZXZpY2VfZ2V0X3N5c2N0bF9jdHgoc2MtPmhuX2Rldik7CisJY2hpbGQgPSBTWVND
VExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNjdGxfdHJlZShzYy0+aG5fZGV2KSk7CisKKwkvKiBD
cmVhdGUgZGV2LmhuLlVOSVQudHggc3lzY3RsIHRyZWUgKi8KKwlzYy0+aG5fdHhfc3lzY3RsX3Ry
ZWUgPSBTWVNDVExfQUREX05PREUoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eCIsCisJICAgIENU
TEZMQUdfUkQsIDAsICIiKTsKKworCWZvciAoaSA9IDA7IGkgPCBzYy0+aG5fdHhfcmluZ19jbnQ7
ICsraSkgeworCQlpbnQgZXJyb3I7CisKKwkJZXJyb3IgPSBobl9jcmVhdGVfdHhfcmluZyhzYywg
aSk7CisJCWlmIChlcnJvcikKKwkJCXJldHVybiBlcnJvcjsKIAl9CiAKLQlpZiAoc2MtPmhuX3R4
X2RhdGFfZHRhZyAhPSBOVUxMKQotCQlidXNfZG1hX3RhZ19kZXN0cm95KHNjLT5obl90eF9kYXRh
X2R0YWcpOwotCWlmIChzYy0+aG5fdHhfcm5kaXNfZHRhZyAhPSBOVUxMKQotCQlidXNfZG1hX3Rh
Z19kZXN0cm95KHNjLT5obl90eF9ybmRpc19kdGFnKTsKLQlmcmVlKHNjLT5obl90eGRlc2MsIE1f
TkVUVlNDKTsKLQltdHhfZGVzdHJveSgmc2MtPmhuX3R4bGlzdF9zcGluKTsKKwlTWVNDVExfQURE
X1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJub190eGRlc2NzIiwKKwkgICAgQ1RMVFlQRV9V
TE9ORyB8IENUTEZMQUdfUlcsIHNjLAorCSAgICBfX29mZnNldG9mKHN0cnVjdCBobl90eF9yaW5n
LCBobl9ub190eGRlc2NzKSwKKwkgICAgaG5fdHhfc3RhdF91bG9uZ19zeXNjdGwsICJMVSIsICIj
IG9mIHRpbWVzIHNob3J0IG9mIFRYIGRlc2NzIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hp
bGQsIE9JRF9BVVRPLCAic2VuZF9mYWlsZWQiLAorCSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxB
R19SVywgc2MsCisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhuX3NlbmRfZmFp
bGVkKSwKKwkgICAgaG5fdHhfc3RhdF91bG9uZ19zeXNjdGwsICJMVSIsICIjIG9mIGh5cGVyLXYg
c2VuZGluZyBmYWlsdXJlIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRP
LCAidHhkbWFfZmFpbGVkIiwKKwkgICAgQ1RMVFlQRV9VTE9ORyB8IENUTEZMQUdfUlcsIHNjLAor
CSAgICBfX29mZnNldG9mKHN0cnVjdCBobl90eF9yaW5nLCBobl90eGRtYV9mYWlsZWQpLAorCSAg
ICBobl90eF9zdGF0X3Vsb25nX3N5c2N0bCwgIkxVIiwgIiMgb2YgVFggRE1BIGZhaWx1cmUiKTsK
KwlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jb2xsYXBzZWQiLAor
CSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zmc2V0b2Yoc3Ry
dWN0IGhuX3R4X3JpbmcsIGhuX3R4X2NvbGxhcHNlZCksCisJICAgIGhuX3R4X3N0YXRfdWxvbmdf
c3lzY3RsLCAiTFUiLCAiIyBvZiBUWCBtYnVmIGNvbGxhcHNlZCIpOworCVNZU0NUTF9BRERfUFJP
QyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXkiLAorCSAgICBDVExUWVBFX1VMT05H
IHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhu
X3R4X2NoaW1uZXkpLAorCSAgICBobl90eF9zdGF0X3Vsb25nX3N5c2N0bCwgIkxVIiwgIiMgb2Yg
Y2hpbW5leSBzZW5kIik7CisJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0
eGRlc2NfY250IiwKKwkgICAgQ1RMRkxBR19SRCwgJnNjLT5obl90eF9yaW5nWzBdLmhuX3R4ZGVz
Y19jbnQsIDAsCisJICAgICIjIG9mIHRvdGFsIFRYIGRlc2NzIik7CisJU1lTQ1RMX0FERF9JTlQo
Y3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jaGltbmV5X21heCIsCisJICAgIENUTEZMQUdfUkQs
ICZzYy0+aG5fdHhfY2hpbW5leV9tYXgsIDAsCisJICAgICJDaGltbmV5IHNlbmQgcGFja2V0IHNp
emUgdXBwZXIgYm91bmRhcnkiKTsKKwlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FV
VE8sICJ0eF9jaGltbmV5X3NpemUiLAorCSAgICBDVExUWVBFX0lOVCB8IENUTEZMQUdfUlcsIHNj
LCAwLCBobl90eF9jaGltbmV5X3NpemVfc3lzY3RsLAorCSAgICAiSSIsICJDaGltbmV5IHNlbmQg
cGFja2V0IHNpemUgbGltaXQiKTsKKwlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FV
VE8sICJkaXJlY3RfdHhfc2l6ZSIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RMRkxBR19SVywgc2Ms
CisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhuX2RpcmVjdF90eF9zaXplKSwK
KwkgICAgaG5fdHhfY29uZl9pbnRfc3lzY3RsLCAiSSIsCisJICAgICJTaXplIG9mIHRoZSBwYWNr
ZXQgZm9yIGRpcmVjdCB0cmFuc21pc3Npb24iKTsKKwlTWVNDVExfQUREX1BST0MoY3R4LCBjaGls
ZCwgT0lEX0FVVE8sICJzY2hlZF90eCIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RMRkxBR19SVywg
c2MsCisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhuX3NjaGVkX3R4KSwKKwkg
ICAgaG5fdHhfY29uZl9pbnRfc3lzY3RsLCAiSSIsCisJICAgICJBbHdheXMgc2NoZWR1bGUgdHJh
bnNtaXNzaW9uICIKKwkgICAgImluc3RlYWQgb2YgZG9pbmcgZGlyZWN0IHRyYW5zbWlzc2lvbiIp
OworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCi1obl9zdGFydF90YXNrZnVuYyh2b2lk
ICp4c2MsIGludCBwZW5kaW5nIF9fdW51c2VkKQoraG5fc2V0X3R4X2NoaW1uZXlfc2l6ZShzdHJ1
Y3QgaG5fc29mdGMgKnNjLCBpbnQgY2hpbW5leV9zaXplKQogewotCXN0cnVjdCBobl9zb2Z0YyAq
c2MgPSB4c2M7CisJaW50IGk7CiAKIAlOVl9MT0NLKHNjKTsKLQlobl9zdGFydF9sb2NrZWQoc2Mt
PmhuX2lmcCwgMCk7CisJZm9yIChpID0gMDsgaSA8IHNjLT5obl90eF9yaW5nX2NudDsgKytpKQor
CQlzYy0+aG5fdHhfcmluZ1tpXS5obl90eF9jaGltbmV5X3NpemUgPSBjaGltbmV5X3NpemU7CiAJ
TlZfVU5MT0NLKHNjKTsKIH0KIAogc3RhdGljIHZvaWQKLWhuX3R4ZW9mX3Rhc2tmdW5jKHZvaWQg
KnhzYywgaW50IHBlbmRpbmcgX191bnVzZWQpCitobl9kZXN0cm95X3R4X2RhdGEoc3RydWN0IGhu
X3NvZnRjICpzYykKIHsKLQlzdHJ1Y3QgaG5fc29mdGMgKnNjID0geHNjOwotCXN0cnVjdCBpZm5l
dCAqaWZwID0gc2MtPmhuX2lmcDsKKwlpbnQgaTsKIAotCU5WX0xPQ0soc2MpOwotCWF0b21pY19j
bGVhcl9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOwotCWhuX3N0YXJ0
X2xvY2tlZChpZnAsIDApOwotCU5WX1VOTE9DSyhzYyk7CisJaWYgKHNjLT5obl90eF9yaW5nX2Nu
dCA9PSAwKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgc2MtPmhuX3R4X3JpbmdfY250
OyArK2kpCisJCWhuX2Rlc3Ryb3lfdHhfcmluZygmc2MtPmhuX3R4X3JpbmdbaV0pOworCisJZnJl
ZShzYy0+aG5fdHhfcmluZywgTV9ORVRWU0MpOworCXNjLT5obl90eF9yaW5nID0gTlVMTDsKKwor
CXNjLT5obl90eF9yaW5nX2NudCA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCitobl9zdGFydF90YXNr
ZnVuYyh2b2lkICp4dHhyLCBpbnQgcGVuZGluZyBfX3VudXNlZCkKK3sKKwlzdHJ1Y3QgaG5fdHhf
cmluZyAqdHhyID0geHR4cjsKKworCW10eF9sb2NrKCZ0eHItPmhuX3R4X2xvY2spOworCWhuX3N0
YXJ0X2xvY2tlZCh0eHIsIDApOworCW10eF91bmxvY2soJnR4ci0+aG5fdHhfbG9jayk7Cit9CisK
K3N0YXRpYyB2b2lkCitobl90eGVvZl90YXNrZnVuYyh2b2lkICp4dHhyLCBpbnQgcGVuZGluZyBf
X3VudXNlZCkKK3sKKwlzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyID0geHR4cjsKKworCW10eF9sb2Nr
KCZ0eHItPmhuX3R4X2xvY2spOworCWF0b21pY19jbGVhcl9pbnQoJnR4ci0+aG5fc2MtPmhuX2lm
cC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOworCWhuX3N0YXJ0X2xvY2tlZCh0eHIs
IDApOworCW10eF91bmxvY2soJnR4ci0+aG5fdHhfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCito
bl9zdG9wX3R4X3Rhc2tzKHN0cnVjdCBobl9zb2Z0YyAqc2MpCit7CisJaW50IGk7CisKKwlmb3Ig
KGkgPSAwOyBpIDwgc2MtPmhuX3R4X3JpbmdfY250OyArK2kpIHsKKwkJc3RydWN0IGhuX3R4X3Jp
bmcgKnR4ciA9ICZzYy0+aG5fdHhfcmluZ1tpXTsKKworCQl0YXNrcXVldWVfZHJhaW4odHhyLT5o
bl90eF90YXNrcSwgJnR4ci0+aG5fc3RhcnRfdGFzayk7CisJCXRhc2txdWV1ZV9kcmFpbih0eHIt
PmhuX3R4X3Rhc2txLCAmdHhyLT5obl90eGVvZl90YXNrKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lk
CmRpZmYgLS1naXQgYS9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oIGIvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaAotLS0gYS9zeXMvZGV2L2h5cGVydi9uZXR2c2Mv
aHZfbmV0X3ZzYy5oCisrKyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKQEAg
LTEwMTEsNiArMTAxMSwzOCBAQAogI2RlZmluZSBITl9UUlVTVF9IQ1NVTV9UQ1AJMHgwMDAyCiAj
ZGVmaW5lIEhOX1RSVVNUX0hDU1VNX1VEUAkweDAwMDQKIAorc3RydWN0IGhuX3R4X3Jpbmcgewor
CXN0cnVjdCBtdHgJaG5fdHhsaXN0X3NwaW47CisJc3RydWN0IGhuX3R4ZGVzY19saXN0IGhuX3R4
bGlzdDsKKwlpbnQJCWhuX3R4ZGVzY19jbnQ7CisJaW50CQlobl90eGRlc2NfYXZhaWw7CisJaW50
CQlobl90eGVvZjsKKworCWludAkJaG5fc2NoZWRfdHg7CisJc3RydWN0IHRhc2txdWV1ZSAqaG5f
dHhfdGFza3E7CisJc3RydWN0IHRhc2sJaG5fc3RhcnRfdGFzazsKKwlzdHJ1Y3QgdGFzawlobl90
eGVvZl90YXNrOworCisJc3RydWN0IG10eAlobl90eF9sb2NrOworCXN0cnVjdCBobl9zb2Z0Ywkq
aG5fc2M7CisKKwlpbnQJCWhuX2RpcmVjdF90eF9zaXplOworCWludAkJaG5fdHhfY2hpbW5leV9z
aXplOworCWJ1c19kbWFfdGFnX3QJaG5fdHhfZGF0YV9kdGFnOworCXVpbnQ2NF90CWhuX2NzdW1f
YXNzaXN0OworCisJdV9sb25nCQlobl9ub190eGRlc2NzOworCXVfbG9uZwkJaG5fc2VuZF9mYWls
ZWQ7CisJdV9sb25nCQlobl90eGRtYV9mYWlsZWQ7CisJdV9sb25nCQlobl90eF9jb2xsYXBzZWQ7
CisJdV9sb25nCQlobl90eF9jaGltbmV5OworCisJLyogUmFyZWx5IHVzZWQgc3R1ZmZzICovCisJ
c3RydWN0IGhuX3R4ZGVzYyAqaG5fdHhkZXNjOworCWJ1c19kbWFfdGFnX3QJaG5fdHhfcm5kaXNf
ZHRhZzsKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqaG5fdHhfc3lzY3RsX3RyZWU7Cit9IF9fYWxpZ25l
ZChDQUNIRV9MSU5FX1NJWkUpOworCiAvKgogICogRGV2aWNlLXNwZWNpZmljIHNvZnRjIHN0cnVj
dHVyZQogICovCkBAIC0xMDI4LDMzICsxMDYwLDE0IEBACiAJc3RydWN0IGh2X2RldmljZSAgKmhu
X2Rldl9vYmo7CiAJbmV0dnNjX2RldiAgCSpuZXRfZGV2OwogCi0Jc3RydWN0IGhuX3R4ZGVzYyAq
aG5fdHhkZXNjOwotCWJ1c19kbWFfdGFnX3QJaG5fdHhfZGF0YV9kdGFnOwotCWJ1c19kbWFfdGFn
X3QJaG5fdHhfcm5kaXNfZHRhZzsKLQlpbnQJCWhuX3R4X2NoaW1uZXlfc2l6ZTsKLQlpbnQJCWhu
X3R4X2NoaW1uZXlfbWF4OwotCXVpbnQ2NF90CWhuX2NzdW1fYXNzaXN0OwotCi0Jc3RydWN0IG10
eAlobl90eGxpc3Rfc3BpbjsKLQlzdHJ1Y3QgaG5fdHhkZXNjX2xpc3QgaG5fdHhsaXN0OwotCWlu
dAkJaG5fdHhkZXNjX2NudDsKLQlpbnQJCWhuX3R4ZGVzY19hdmFpbDsKLQlpbnQJCWhuX3R4ZW9m
OwotCi0JaW50CQlobl9zY2hlZF90eDsKLQlpbnQJCWhuX2RpcmVjdF90eF9zaXplOwotCXN0cnVj
dCB0YXNrcXVldWUgKmhuX3R4X3Rhc2txOwotCXN0cnVjdCB0YXNrCWhuX3N0YXJ0X3Rhc2s7Ci0J
c3RydWN0IHRhc2sJaG5fdHhlb2ZfdGFzazsKLQogCWludAkJaG5fcnhfcmluZ19jbnQ7CiAJc3Ry
dWN0IGhuX3J4X3JpbmcgKmhuX3J4X3Jpbmc7CiAKLQl1X2xvbmcJCWhuX25vX3R4ZGVzY3M7Ci0J
dV9sb25nCQlobl9zZW5kX2ZhaWxlZDsKLQl1X2xvbmcJCWhuX3R4ZG1hX2ZhaWxlZDsKLQl1X2xv
bmcJCWhuX3R4X2NvbGxhcHNlZDsKLQl1X2xvbmcJCWhuX3R4X2NoaW1uZXk7CisJaW50CQlobl90
eF9yaW5nX2NudDsKKwlzdHJ1Y3QgaG5fdHhfcmluZyAqaG5fdHhfcmluZzsKKwlpbnQJCWhuX3R4
X2NoaW1uZXlfbWF4OworCXN0cnVjdCB0YXNrcXVldWUgKmhuX3R4X3Rhc2txOworCXN0cnVjdCBz
eXNjdGxfb2lkICpobl90eF9zeXNjdGxfdHJlZTsKIH0gaG5fc29mdGNfdDsKIAogLyoKCg==


--b1_5d6f8634362bfdafd016edea8053a36e--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-6djpfhi7fv7yabzqst5l-req>