Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Feb 2016 07:38:27 +0000
From:      Phabricator <phabric-noreply@FreeBSD.org>
To:        freebsd-virtualization@freebsd.org
Subject:   [Differential] [Closed] D5283: hyperv/hn: Split TX ring data structure out of softc
Message-ID:  <5fe3909765837cc3654563d26e6c1901@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-6djpfhi7fv7yabzqst5l-req@FreeBSD.org>
References:  <differential-rev-PHID-DREV-6djpfhi7fv7yabzqst5l-req@FreeBSD.org>

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

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

This revision was automatically updated to reflect the committed changes.
Closed by commit rS295747: hyperv/hn: Split TX ring data structure out of softc (authored by sephe).

CHANGED PRIOR TO COMMIT
  https://reviews.freebsd.org/D5283?vs=13312&id=13405#toc

REPOSITORY
  rS FreeBSD src repository

CHANGES SINCE LAST UPDATE
  https://reviews.freebsd.org/D5283?vs=13312&id=13405

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

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

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

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

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

ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJl
ZWJzZC5jIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk
LmMKLS0tIGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk
LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk
LmMKQEAgLTE1Myw3ICsxNTMsNyBAQAogc3RydWN0IGhuX3R4ZGVzYyB7CiAJU0xJU1RfRU5UUlko
aG5fdHhkZXNjKSBsaW5rOwogCXN0cnVjdCBtYnVmCSptOwotCXN0cnVjdCBobl9zb2Z0Ywkqc2M7
CisJc3RydWN0IGhuX3R4X3JpbmcgKnR4cjsKIAlpbnQJCXJlZnM7CiAJdWludDMyX3QJZmxhZ3M7
CQkvKiBITl9UWERfRkxBR18gKi8KIAluZXR2c2NfcGFja2V0CW5ldHZzY19wa3Q7CS8qIFhYWCB0
byBiZSByZW1vdmVkICovCkBAIC0xOTMsNyArMTkzLDYgQEAKICNkZWZpbmUgTlZfTE9DS19JTklU
KF9zYywgX25hbWUpIFwKIAkgICAgbXR4X2luaXQoJihfc2MpLT5obl9sb2NrLCBfbmFtZSwgTVRY
X05FVFdPUktfTE9DSywgTVRYX0RFRikKICNkZWZpbmUgTlZfTE9DSyhfc2MpCQltdHhfbG9jaygm
KF9zYyktPmhuX2xvY2spCi0jZGVmaW5lIE5WX1RSWUxPQ0soX3NjKQkJbXR4X3RyeWxvY2soJihf
c2MpLT5obl9sb2NrKQogI2RlZmluZSBOVl9MT0NLX0FTU0VSVChfc2MpCW10eF9hc3NlcnQoJihf
c2MpLT5obl9sb2NrLCBNQV9PV05FRCkKICNkZWZpbmUgTlZfVU5MT0NLKF9zYykJCW10eF91bmxv
Y2soJihfc2MpLT5obl9sb2NrKQogI2RlZmluZSBOVl9MT0NLX0RFU1RST1koX3NjKQltdHhfZGVz
dHJveSgmKF9zYyktPmhuX2xvY2spCkBAIC0yNjYsMjUgKzI2NSwzMSBAQAogc3RhdGljIHZvaWQg
aG5faWZpbml0X2xvY2tlZChobl9zb2Z0Y190ICpzYyk7CiBzdGF0aWMgdm9pZCBobl9pZmluaXQo
dm9pZCAqeHNjKTsKIHN0YXRpYyBpbnQgIGhuX2lvY3RsKHN0cnVjdCBpZm5ldCAqaWZwLCB1X2xv
bmcgY21kLCBjYWRkcl90IGRhdGEpOwotc3RhdGljIGludCBobl9zdGFydF9sb2NrZWQoc3RydWN0
IGlmbmV0ICppZnAsIGludCBsZW4pOworc3RhdGljIGludCBobl9zdGFydF9sb2NrZWQoc3RydWN0
IGhuX3R4X3JpbmcgKnR4ciwgaW50IGxlbik7CiBzdGF0aWMgdm9pZCBobl9zdGFydChzdHJ1Y3Qg
aWZuZXQgKmlmcCk7Ci1zdGF0aWMgdm9pZCBobl9zdGFydF90eGVvZihzdHJ1Y3QgaWZuZXQgKmlm
cCk7CitzdGF0aWMgdm9pZCBobl9zdGFydF90eGVvZihzdHJ1Y3QgaG5fdHhfcmluZyAqKTsKIHN0
YXRpYyBpbnQgaG5faWZtZWRpYV91cGQoc3RydWN0IGlmbmV0ICppZnApOwogc3RhdGljIHZvaWQg
aG5faWZtZWRpYV9zdHMoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBpZm1lZGlhcmVxICppZm1y
KTsKIHN0YXRpYyBpbnQgaG5fbHJvX2xlbmxpbV9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7
CiBzdGF0aWMgaW50IGhuX2xyb19hY2tjbnRfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwog
c3RhdGljIGludCBobl90cnVzdF9oY3N1bV9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBz
dGF0aWMgaW50IGhuX3R4X2NoaW1uZXlfc2l6ZV9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7
CiBzdGF0aWMgaW50IGhuX3J4X3N0YXRfdWxvbmdfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
Owogc3RhdGljIGludCBobl9yeF9zdGF0X3U2NF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7
CitzdGF0aWMgaW50IGhuX3R4X3N0YXRfdWxvbmdfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
Oworc3RhdGljIGludCBobl90eF9jb25mX2ludF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7
CiBzdGF0aWMgaW50IGhuX2NoZWNrX2lwbGVuKGNvbnN0IHN0cnVjdCBtYnVmICosIGludCk7Ci1z
dGF0aWMgaW50IGhuX2NyZWF0ZV90eF9yaW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpOwotc3RhdGlj
IHZvaWQgaG5fZGVzdHJveV90eF9yaW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpOworc3RhdGljIGlu
dCBobl9jcmVhdGVfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKiwgaW50KTsKK3N0YXRpYyB2b2lk
IGhuX2Rlc3Ryb3lfdHhfcmluZyhzdHJ1Y3QgaG5fdHhfcmluZyAqKTsKK3N0YXRpYyBpbnQgaG5f
Y3JlYXRlX3R4X2RhdGEoc3RydWN0IGhuX3NvZnRjICopOworc3RhdGljIHZvaWQgaG5fZGVzdHJv
eV90eF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAqKTsKIHN0YXRpYyB2b2lkIGhuX3N0YXJ0X3Rhc2tm
dW5jKHZvaWQgKnhzYywgaW50IHBlbmRpbmcpOwogc3RhdGljIHZvaWQgaG5fdHhlb2ZfdGFza2Z1
bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyk7Ci1zdGF0aWMgaW50IGhuX2VuY2FwKHN0cnVjdCBo
bl9zb2Z0YyAqLCBzdHJ1Y3QgaG5fdHhkZXNjICosIHN0cnVjdCBtYnVmICoqKTsKK3N0YXRpYyB2
b2lkIGhuX3N0b3BfdHhfdGFza3Moc3RydWN0IGhuX3NvZnRjICopOworc3RhdGljIGludCBobl9l
bmNhcChzdHJ1Y3QgaG5fdHhfcmluZyAqLCBzdHJ1Y3QgaG5fdHhkZXNjICosIHN0cnVjdCBtYnVm
ICoqKTsKIHN0YXRpYyB2b2lkIGhuX2NyZWF0ZV9yeF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAqc2Mp
Owogc3RhdGljIHZvaWQgaG5fZGVzdHJveV9yeF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAqc2MpOwor
c3RhdGljIHZvaWQgaG5fc2V0X3R4X2NoaW1uZXlfc2l6ZShzdHJ1Y3QgaG5fc29mdGMgKiwgaW50
KTsKIAogc3RhdGljIGludAogaG5faWZtZWRpYV91cGQoc3RydWN0IGlmbmV0ICppZnAgX191bnVz
ZWQpCkBAIC0zNTAsOCArMzU1LDYgQEAKIAlobl9zb2Z0Y190ICpzYzsKIAlpbnQgdW5pdCA9IGRl
dmljZV9nZXRfdW5pdChkZXYpOwogCXN0cnVjdCBpZm5ldCAqaWZwID0gTlVMTDsKLQlzdHJ1Y3Qg
c3lzY3RsX29pZF9saXN0ICpjaGlsZDsKLQlzdHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHg7CiAJ
aW50IGVycm9yOwogI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwNDUKIAlpbnQgdHNvX21h
eGxlbjsKQEAgLTM2NSw3ICszNjgsNiBAQAogCWJ6ZXJvKHNjLCBzaXplb2YoaG5fc29mdGNfdCkp
OwogCXNjLT5obl91bml0ID0gdW5pdDsKIAlzYy0+aG5fZGV2ID0gZGV2OwotCXNjLT5obl9kaXJl
Y3RfdHhfc2l6ZSA9IGhuX2RpcmVjdF90eF9zaXplOwogCiAJaWYgKGhuX3R4X3Rhc2txID09IE5V
TEwpIHsKIAkJc2MtPmhuX3R4X3Rhc2txID0gdGFza3F1ZXVlX2NyZWF0ZSgiaG5fdHgiLCBNX1dB
SVRPSywKQEAgLTM3NSwyMCArMzc3LDE3IEBACiAJfSBlbHNlIHsKIAkJc2MtPmhuX3R4X3Rhc2tx
ID0gaG5fdHhfdGFza3E7CiAJfQotCVRBU0tfSU5JVCgmc2MtPmhuX3N0YXJ0X3Rhc2ssIDAsIGhu
X3N0YXJ0X3Rhc2tmdW5jLCBzYyk7Ci0JVEFTS19JTklUKCZzYy0+aG5fdHhlb2ZfdGFzaywgMCwg
aG5fdHhlb2ZfdGFza2Z1bmMsIHNjKTsKLQotCWVycm9yID0gaG5fY3JlYXRlX3R4X3Jpbmcoc2Mp
OwotCWlmIChlcnJvcikKLQkJZ290byBmYWlsZWQ7Ci0KIAlOVl9MT0NLX0lOSVQoc2MsICJOZXRW
U0NMb2NrIik7CiAKIAlzYy0+aG5fZGV2X29iaiA9IGRldmljZV9jdHg7CiAKIAlpZnAgPSBzYy0+
aG5faWZwID0gaWZfYWxsb2MoSUZUX0VUSEVSKTsKIAlpZnAtPmlmX3NvZnRjID0gc2M7CiAKKwll
cnJvciA9IGhuX2NyZWF0ZV90eF9kYXRhKHNjKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gZmFpbGVk
OworCiAJaG5fY3JlYXRlX3J4X2RhdGEoc2MpOwogCiAJaWZfaW5pdG5hbWUoaWZwLCBkZXZpY2Vf
Z2V0X25hbWUoZGV2KSwgZGV2aWNlX2dldF91bml0KGRldikpOwpAQCAtNDIxLDEyICs0MjAsNyBA
QAogCWlmcC0+aWZfY2FwZW5hYmxlIHw9CiAJICAgIElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwgSUZD
QVBfVkxBTl9NVFUgfCBJRkNBUF9IV0NTVU0gfCBJRkNBUF9UU08gfAogCSAgICBJRkNBUF9MUk87
Ci0KLQlpZiAoaHZfdm1idXNfcHJvdG9jYWxfdmVyc2lvbiA+PSBIVl9WTUJVU19WRVJTSU9OX1dJ
TjhfMSkKLQkJc2MtPmhuX2NzdW1fYXNzaXN0ID0gSE5fQ1NVTV9BU1NJU1Q7Ci0JZWxzZQotCQlz
Yy0+aG5fY3N1bV9hc3Npc3QgPSBITl9DU1VNX0FTU0lTVF9XSU44OwotCWlmcC0+aWZfaHdhc3Np
c3QgPSBzYy0+aG5fY3N1bV9hc3Npc3QgfCBDU1VNX1RTTzsKKwlpZnAtPmlmX2h3YXNzaXN0ID0g
c2MtPmhuX3R4X3JpbmdbMF0uaG5fY3N1bV9hc3Npc3QgfCBDU1VNX1RTTzsKIAogCWVycm9yID0g
aHZfcmZfb25fZGV2aWNlX2FkZChkZXZpY2VfY3R4LCAmZGV2aWNlX2luZm8pOwogCWlmIChlcnJv
cikKQEAgLTQ1NSw1MiArNDQ5LDE0IEBACiAjZW5kaWYKIAogCXNjLT5obl90eF9jaGltbmV5X21h
eCA9IHNjLT5uZXRfZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZTsKLQlzYy0+aG5fdHhfY2hpbW5leV9z
aXplID0gc2MtPmhuX3R4X2NoaW1uZXlfbWF4OworCWhuX3NldF90eF9jaGltbmV5X3NpemUoc2Ms
IHNjLT5obl90eF9jaGltbmV5X21heCk7CiAJaWYgKGhuX3R4X2NoaW1uZXlfc2l6ZSA+IDAgJiYK
IAkgICAgaG5fdHhfY2hpbW5leV9zaXplIDwgc2MtPmhuX3R4X2NoaW1uZXlfbWF4KQotCQlzYy0+
aG5fdHhfY2hpbW5leV9zaXplID0gaG5fdHhfY2hpbW5leV9zaXplOwotCi0JLyoKLQkgKiBBbHdh
eXMgc2NoZWR1bGUgdHJhbnNtaXNzaW9uIGluc3RlYWQgb2YgdHJ5aW5nCi0JICogdG8gZG8gZGly
ZWN0IHRyYW5zbWlzc2lvbi4gIFRoaXMgb25lIGdpdmVzIHRoZQotCSAqIGJlc3QgcGVyZm9ybWFu
Y2Ugc28gZmFyLgotCSAqLwotCXNjLT5obl9zY2hlZF90eCA9IDE7Ci0KLQljdHggPSBkZXZpY2Vf
Z2V0X3N5c2N0bF9jdHgoZGV2KTsKLQljaGlsZCA9IFNZU0NUTF9DSElMRFJFTihkZXZpY2VfZ2V0
X3N5c2N0bF90cmVlKGRldikpOwotCi0JU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURf
QVVUTywgIm5vX3R4ZGVzY3MiLAotCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX25vX3R4ZGVzY3Ms
ICIjIG9mIHRpbWVzIHNob3J0IG9mIFRYIGRlc2NzIik7Ci0JU1lTQ1RMX0FERF9VTE9ORyhjdHgs
IGNoaWxkLCBPSURfQVVUTywgInNlbmRfZmFpbGVkIiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5o
bl9zZW5kX2ZhaWxlZCwgIiMgb2YgaHlwZXItdiBzZW5kaW5nIGZhaWx1cmUiKTsKLQlTWVNDVExf
QUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhkbWFfZmFpbGVkIiwKLQkgICAgQ1RM
RkxBR19SVywgJnNjLT5obl90eGRtYV9mYWlsZWQsICIjIG9mIFRYIERNQSBmYWlsdXJlIik7Ci0J
U1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NvbGxhcHNlZCIsCi0J
ICAgIENUTEZMQUdfUlcsICZzYy0+aG5fdHhfY29sbGFwc2VkLCAiIyBvZiBUWCBtYnVmIGNvbGxh
cHNlZCIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jaGlt
bmV5IiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl90eF9jaGltbmV5LCAiIyBvZiBjaGltbmV5
IHNlbmQiKTsKLQlTWVNDVExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4ZGVzY19j
bnQiLAotCSAgICBDVExGTEFHX1JELCAmc2MtPmhuX3R4ZGVzY19jbnQsIDAsICIjIG9mIHRvdGFs
IFRYIGRlc2NzIik7Ci0JU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eGRl
c2NfYXZhaWwiLAotCSAgICBDVExGTEFHX1JELCAmc2MtPmhuX3R4ZGVzY19hdmFpbCwgMCwgIiMg
b2YgYXZhaWxhYmxlIFRYIGRlc2NzIik7Ci0JU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lE
X0FVVE8sICJ0eF9jaGltbmV5X21heCIsCi0JICAgIENUTEZMQUdfUkQsICZzYy0+aG5fdHhfY2hp
bW5leV9tYXgsIDAsCi0JICAgICJDaGltbmV5IHNlbmQgcGFja2V0IHNpemUgdXBwZXIgYm91bmRh
cnkiKTsKLQlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jaGltbmV5
X3NpemUiLAotCSAgICBDVExUWVBFX0lOVCB8IENUTEZMQUdfUlcsIHNjLCAwLCBobl90eF9jaGlt
bmV5X3NpemVfc3lzY3RsLAotCSAgICAiSSIsICJDaGltbmV5IHNlbmQgcGFja2V0IHNpemUgbGlt
aXQiKTsKLQlTWVNDVExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImRpcmVjdF90eF9z
aXplIiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9kaXJlY3RfdHhfc2l6ZSwgMCwKLQkgICAg
IlNpemUgb2YgdGhlIHBhY2tldCBmb3IgZGlyZWN0IHRyYW5zbWlzc2lvbiIpOwotCVNZU0NUTF9B
RERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAic2NoZWRfdHgiLAotCSAgICBDVExGTEFHX1JX
LCAmc2MtPmhuX3NjaGVkX3R4LCAwLAotCSAgICAiQWx3YXlzIHNjaGVkdWxlIHRyYW5zbWlzc2lv
biAiCi0JICAgICJpbnN0ZWFkIG9mIGRvaW5nIGRpcmVjdCB0cmFuc21pc3Npb24iKTsKKwkJaG5f
c2V0X3R4X2NoaW1uZXlfc2l6ZShzYywgaG5fdHhfY2hpbW5leV9zaXplKTsKIAogCXJldHVybiAo
MCk7CiBmYWlsZWQ6Ci0JaG5fZGVzdHJveV90eF9yaW5nKHNjKTsKKwlobl9kZXN0cm95X3R4X2Rh
dGEoc2MpOwogCWlmIChpZnAgIT0gTlVMTCkKIAkJaWZfZnJlZShpZnApOwogCXJldHVybiAoZXJy
b3IpOwpAQCAtNTMxLDE0ICs0ODcsMTQgQEAKIAogCWh2X3JmX29uX2RldmljZV9yZW1vdmUoaHZf
ZGV2aWNlLCBIVl9SRl9OVl9ERVNUUk9ZX0NIQU5ORUwpOwogCi0JdGFza3F1ZXVlX2RyYWluKHNj
LT5obl90eF90YXNrcSwgJnNjLT5obl9zdGFydF90YXNrKTsKLQl0YXNrcXVldWVfZHJhaW4oc2Mt
PmhuX3R4X3Rhc2txLCAmc2MtPmhuX3R4ZW9mX3Rhc2spOwotCWlmIChzYy0+aG5fdHhfdGFza3Eg
IT0gaG5fdHhfdGFza3EpCi0JCXRhc2txdWV1ZV9mcmVlKHNjLT5obl90eF90YXNrcSk7CisJaG5f
c3RvcF90eF90YXNrcyhzYyk7CiAKIAlpZm1lZGlhX3JlbW92ZWFsbCgmc2MtPmhuX21lZGlhKTsK
IAlobl9kZXN0cm95X3J4X2RhdGEoc2MpOwotCWhuX2Rlc3Ryb3lfdHhfcmluZyhzYyk7CisJaG5f
ZGVzdHJveV90eF9kYXRhKHNjKTsKKworCWlmIChzYy0+aG5fdHhfdGFza3EgIT0gaG5fdHhfdGFz
a3EpCisJCXRhc2txdWV1ZV9mcmVlKHNjLT5obl90eF90YXNrcSk7CiAKIAlyZXR1cm4gKDApOwog
fQpAQCAtNTUzLDEzICs1MDksMTMgQEAKIH0KIAogc3RhdGljIF9faW5saW5lIGludAotaG5fdHhk
ZXNjX2RtYW1hcF9sb2FkKHN0cnVjdCBobl9zb2Z0YyAqc2MsIHN0cnVjdCBobl90eGRlc2MgKnR4
ZCwKK2huX3R4ZGVzY19kbWFtYXBfbG9hZChzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyLCBzdHJ1Y3Qg
aG5fdHhkZXNjICp0eGQsCiAgICAgc3RydWN0IG1idWYgKiptX2hlYWQsIGJ1c19kbWFfc2VnbWVu
dF90ICpzZWdzLCBpbnQgKm5zZWdzKQogewogCXN0cnVjdCBtYnVmICptID0gKm1faGVhZDsKIAlp
bnQgZXJyb3I7CiAKLQllcnJvciA9IGJ1c19kbWFtYXBfbG9hZF9tYnVmX3NnKHNjLT5obl90eF9k
YXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwLAorCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkX21idWZf
c2codHhyLT5obl90eF9kYXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwLAogCSAgICBtLCBzZWdzLCBu
c2VncywgQlVTX0RNQV9OT1dBSVQpOwogCWlmIChlcnJvciA9PSBFRkJJRykgewogCQlzdHJ1Y3Qg
bWJ1ZiAqbV9uZXc7CkBAIC01NjksMzQgKzUyNSwzNCBAQAogCQkJcmV0dXJuIEVOT0JVRlM7CiAJ
CWVsc2UKIAkJCSptX2hlYWQgPSBtID0gbV9uZXc7Ci0JCXNjLT5obl90eF9jb2xsYXBzZWQrKzsK
KwkJdHhyLT5obl90eF9jb2xsYXBzZWQrKzsKIAotCQllcnJvciA9IGJ1c19kbWFtYXBfbG9hZF9t
YnVmX3NnKHNjLT5obl90eF9kYXRhX2R0YWcsCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkX21i
dWZfc2codHhyLT5obl90eF9kYXRhX2R0YWcsCiAJCSAgICB0eGQtPmRhdGFfZG1hcCwgbSwgc2Vn
cywgbnNlZ3MsIEJVU19ETUFfTk9XQUlUKTsKIAl9CiAJaWYgKCFlcnJvcikgewotCQlidXNfZG1h
bWFwX3N5bmMoc2MtPmhuX3R4X2RhdGFfZHRhZywgdHhkLT5kYXRhX2RtYXAsCisJCWJ1c19kbWFt
YXBfc3luYyh0eHItPmhuX3R4X2RhdGFfZHRhZywgdHhkLT5kYXRhX2RtYXAsCiAJCSAgICBCVVNf
RE1BU1lOQ19QUkVXUklURSk7CiAJCXR4ZC0+ZmxhZ3MgfD0gSE5fVFhEX0ZMQUdfRE1BTUFQOwog
CX0KIAlyZXR1cm4gZXJyb3I7CiB9CiAKIHN0YXRpYyBfX2lubGluZSB2b2lkCi1obl90eGRlc2Nf
ZG1hbWFwX3VubG9hZChzdHJ1Y3QgaG5fc29mdGMgKnNjLCBzdHJ1Y3QgaG5fdHhkZXNjICp0eGQp
Citobl90eGRlc2NfZG1hbWFwX3VubG9hZChzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyLCBzdHJ1Y3Qg
aG5fdHhkZXNjICp0eGQpCiB7CiAKIAlpZiAodHhkLT5mbGFncyAmIEhOX1RYRF9GTEFHX0RNQU1B
UCkgewotCQlidXNfZG1hbWFwX3N5bmMoc2MtPmhuX3R4X2RhdGFfZHRhZywKKwkJYnVzX2RtYW1h
cF9zeW5jKHR4ci0+aG5fdHhfZGF0YV9kdGFnLAogCQkgICAgdHhkLT5kYXRhX2RtYXAsIEJVU19E
TUFTWU5DX1BPU1RXUklURSk7Ci0JCWJ1c19kbWFtYXBfdW5sb2FkKHNjLT5obl90eF9kYXRhX2R0
YWcsCisJCWJ1c19kbWFtYXBfdW5sb2FkKHR4ci0+aG5fdHhfZGF0YV9kdGFnLAogCQkgICAgdHhk
LT5kYXRhX2RtYXApOwogCQl0eGQtPmZsYWdzICY9IH5ITl9UWERfRkxBR19ETUFNQVA7CiAJfQog
fQogCiBzdGF0aWMgX19pbmxpbmUgaW50Ci1obl90eGRlc2NfcHV0KHN0cnVjdCBobl9zb2Z0YyAq
c2MsIHN0cnVjdCBobl90eGRlc2MgKnR4ZCkKK2huX3R4ZGVzY19wdXQoc3RydWN0IGhuX3R4X3Jp
bmcgKnR4ciwgc3RydWN0IGhuX3R4ZGVzYyAqdHhkKQogewogCiAJS0FTU0VSVCgodHhkLT5mbGFn
cyAmIEhOX1RYRF9GTEFHX09OTElTVCkgPT0gMCwKQEAgLTYwNiwzOSArNTYyLDM5IEBACiAJaWYg
KGF0b21pY19mZXRjaGFkZF9pbnQoJnR4ZC0+cmVmcywgLTEpICE9IDEpCiAJCXJldHVybiAwOwog
Ci0JaG5fdHhkZXNjX2RtYW1hcF91bmxvYWQoc2MsIHR4ZCk7CisJaG5fdHhkZXNjX2RtYW1hcF91
bmxvYWQodHhyLCB0eGQpOwogCWlmICh0eGQtPm0gIT0gTlVMTCkgewogCQltX2ZyZWVtKHR4ZC0+
bSk7CiAJCXR4ZC0+bSA9IE5VTEw7CiAJfQogCiAJdHhkLT5mbGFncyB8PSBITl9UWERfRkxBR19P
TkxJU1Q7CiAKLQltdHhfbG9ja19zcGluKCZzYy0+aG5fdHhsaXN0X3NwaW4pOwotCUtBU1NFUlQo
c2MtPmhuX3R4ZGVzY19hdmFpbCA+PSAwICYmCi0JICAgIHNjLT5obl90eGRlc2NfYXZhaWwgPCBz
Yy0+aG5fdHhkZXNjX2NudCwKLQkgICAgKCJ0eGRlc2NfcHV0OiBpbnZhbGlkIHR4ZCBhdmFpbCAl
ZCIsIHNjLT5obl90eGRlc2NfYXZhaWwpKTsKLQlzYy0+aG5fdHhkZXNjX2F2YWlsKys7Ci0JU0xJ
U1RfSU5TRVJUX0hFQUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGluayk7Ci0JbXR4X3VubG9ja19z
cGluKCZzYy0+aG5fdHhsaXN0X3NwaW4pOworCW10eF9sb2NrX3NwaW4oJnR4ci0+aG5fdHhsaXN0
X3NwaW4pOworCUtBU1NFUlQodHhyLT5obl90eGRlc2NfYXZhaWwgPj0gMCAmJgorCSAgICB0eHIt
PmhuX3R4ZGVzY19hdmFpbCA8IHR4ci0+aG5fdHhkZXNjX2NudCwKKwkgICAgKCJ0eGRlc2NfcHV0
OiBpbnZhbGlkIHR4ZCBhdmFpbCAlZCIsIHR4ci0+aG5fdHhkZXNjX2F2YWlsKSk7CisJdHhyLT5o
bl90eGRlc2NfYXZhaWwrKzsKKwlTTElTVF9JTlNFUlRfSEVBRCgmdHhyLT5obl90eGxpc3QsIHR4
ZCwgbGluayk7CisJbXR4X3VubG9ja19zcGluKCZ0eHItPmhuX3R4bGlzdF9zcGluKTsKIAogCXJl
dHVybiAxOwogfQogCiBzdGF0aWMgX19pbmxpbmUgc3RydWN0IGhuX3R4ZGVzYyAqCi1obl90eGRl
c2NfZ2V0KHN0cnVjdCBobl9zb2Z0YyAqc2MpCitobl90eGRlc2NfZ2V0KHN0cnVjdCBobl90eF9y
aW5nICp0eHIpCiB7CiAJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOwogCi0JbXR4X2xvY2tfc3Bpbigm
c2MtPmhuX3R4bGlzdF9zcGluKTsKLQl0eGQgPSBTTElTVF9GSVJTVCgmc2MtPmhuX3R4bGlzdCk7
CisJbXR4X2xvY2tfc3BpbigmdHhyLT5obl90eGxpc3Rfc3Bpbik7CisJdHhkID0gU0xJU1RfRklS
U1QoJnR4ci0+aG5fdHhsaXN0KTsKIAlpZiAodHhkICE9IE5VTEwpIHsKLQkJS0FTU0VSVChzYy0+
aG5fdHhkZXNjX2F2YWlsID4gMCwKLQkJICAgICgidHhkZXNjX2dldDogaW52YWxpZCB0eGQgYXZh
aWwgJWQiLCBzYy0+aG5fdHhkZXNjX2F2YWlsKSk7Ci0JCXNjLT5obl90eGRlc2NfYXZhaWwtLTsK
LQkJU0xJU1RfUkVNT1ZFX0hFQUQoJnNjLT5obl90eGxpc3QsIGxpbmspOworCQlLQVNTRVJUKHR4
ci0+aG5fdHhkZXNjX2F2YWlsID4gMCwKKwkJICAgICgidHhkZXNjX2dldDogaW52YWxpZCB0eGQg
YXZhaWwgJWQiLCB0eHItPmhuX3R4ZGVzY19hdmFpbCkpOworCQl0eHItPmhuX3R4ZGVzY19hdmFp
bC0tOworCQlTTElTVF9SRU1PVkVfSEVBRCgmdHhyLT5obl90eGxpc3QsIGxpbmspOwogCX0KLQlt
dHhfdW5sb2NrX3NwaW4oJnNjLT5obl90eGxpc3Rfc3Bpbik7CisJbXR4X3VubG9ja19zcGluKCZ0
eHItPmhuX3R4bGlzdF9zcGluKTsKIAogCWlmICh0eGQgIT0gTlVMTCkgewogCQlLQVNTRVJUKHR4
ZC0+bSA9PSBOVUxMICYmIHR4ZC0+cmVmcyA9PSAwICYmCkBAIC02NzAsMjAgKzYyNiwyMSBAQAog
ewogCW5ldHZzY19wYWNrZXQgKnBhY2tldCA9IGNvbnRleHQ7CiAJc3RydWN0IGhuX3R4ZGVzYyAq
dHhkOwotCXN0cnVjdCBobl9zb2Z0YyAqc2M7CisJc3RydWN0IGhuX3R4X3JpbmcgKnR4cjsKIAog
CXR4ZCA9IChzdHJ1Y3QgaG5fdHhkZXNjICopKHVpbnRwdHJfdCkKIAkgICAgcGFja2V0LT5jb21w
bC5zZW5kLnNlbmRfY29tcGxldGlvbl90aWQ7CiAKLQlzYyA9IHR4ZC0+c2M7Ci0Jc2MtPmhuX3R4
ZW9mID0gMTsKLQlobl90eGRlc2NfcHV0KHNjLCB0eGQpOworCXR4ciA9IHR4ZC0+dHhyOworCXR4
ci0+aG5fdHhlb2YgPSAxOworCWhuX3R4ZGVzY19wdXQodHhyLCB0eGQpOwogfQogCiB2b2lkCiBu
ZXR2c2NfY2hhbm5lbF9yb2xsdXAoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eCkKIHsKIAlz
dHJ1Y3QgaG5fc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXZpY2VfY3R4LT5kZXZpY2Up
OworCXN0cnVjdCBobl90eF9yaW5nICp0eHIgPSAmc2MtPmhuX3R4X3JpbmdbMF07IC8qIFRPRE86
IHZSU1MgKi8KICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJc3RydWN0IGhu
X3J4X3JpbmcgKnJ4ciA9ICZzYy0+aG5fcnhfcmluZ1swXTsgLyogVE9ETzogdlJTUyAqLwogCXN0
cnVjdCBscm9fY3RybCAqbHJvID0gJnJ4ci0+aG5fbHJvOwpAQCAtNjk1LDE5ICs2NTIsMTkgQEAK
IAl9CiAjZW5kaWYKIAotCWlmICghc2MtPmhuX3R4ZW9mKQorCWlmICghdHhyLT5obl90eGVvZikK
IAkJcmV0dXJuOwogCi0Jc2MtPmhuX3R4ZW9mID0gMDsKLQlobl9zdGFydF90eGVvZihzYy0+aG5f
aWZwKTsKKwl0eHItPmhuX3R4ZW9mID0gMDsKKwlobl9zdGFydF90eGVvZih0eHIpOwogfQogCiAv
KgogICogTk9URToKICAqIElmIHRoaXMgZnVuY3Rpb24gZmFpbHMsIHRoZW4gYm90aCB0eGQgYW5k
IG1faGVhZDAgd2lsbCBiZSBmcmVlZC4KICAqLwogc3RhdGljIGludAotaG5fZW5jYXAoc3RydWN0
IGhuX3NvZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkLCBzdHJ1Y3QgbWJ1ZiAqKm1faGVh
ZDApCitobl9lbmNhcChzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyLCBzdHJ1Y3QgaG5fdHhkZXNjICp0
eGQsIHN0cnVjdCBtYnVmICoqbV9oZWFkMCkKIHsKIAlidXNfZG1hX3NlZ21lbnRfdCBzZWdzW0hO
X1RYX0RBVEFfU0VHQ05UX01BWF07CiAJaW50IGVycm9yLCBuc2VncywgaTsKQEAgLTgxMCw3ICs3
NjcsNyBAQAogI2VuZGlmCiAJCXRzb19pbmZvLT5sc29fdjJfeG1pdC50Y3BfaGVhZGVyX29mZnNl
dCA9IDA7CiAJCXRzb19pbmZvLT5sc29fdjJfeG1pdC5tc3MgPSBtX2hlYWQtPm1fcGt0aGRyLnRz
b19zZWdzejsKLQl9IGVsc2UgaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIHNjLT5o
bl9jc3VtX2Fzc2lzdCkgeworCX0gZWxzZSBpZiAobV9oZWFkLT5tX3BrdGhkci5jc3VtX2ZsYWdz
ICYgdHhyLT5obl9jc3VtX2Fzc2lzdCkgewogCQlybmRpc190Y3BfaXBfY3N1bV9pbmZvICpjc3Vt
X2luZm87CiAKIAkJcm5kaXNfbXNnX3NpemUgKz0gUk5ESVNfQ1NVTV9QUElfU0laRTsKQEAgLTgz
Nyw4ICs3OTQsOCBAQAogCS8qCiAJICogQ2hpbW5leSBzZW5kLCBpZiB0aGUgcGFja2V0IGNvdWxk
IGZpdCBpbnRvIG9uZSBjaGltbmV5IGJ1ZmZlci4KIAkgKi8KLQlpZiAocGFja2V0LT50b3RfZGF0
YV9idWZfbGVuIDwgc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSkgewotCQluZXR2c2NfZGV2ICpuZXRf
ZGV2ID0gc2MtPm5ldF9kZXY7CisJaWYgKHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiA8IHR4ci0+
aG5fdHhfY2hpbW5leV9zaXplKSB7CisJCW5ldHZzY19kZXYgKm5ldF9kZXYgPSB0eHItPmhuX3Nj
LT5uZXRfZGV2OwogCQl1aW50MzJfdCBzZW5kX2J1Zl9zZWN0aW9uX2lkeDsKIAogCQlzZW5kX2J1
Zl9zZWN0aW9uX2lkeCA9CkBAIC04NTcsMTIgKzgxNCwxMiBAQAogCQkJcGFja2V0LT5zZW5kX2J1
Zl9zZWN0aW9uX3NpemUgPQogCQkJICAgIHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbjsKIAkJCXBh
Y2tldC0+cGFnZV9idWZfY291bnQgPSAwOwotCQkJc2MtPmhuX3R4X2NoaW1uZXkrKzsKKwkJCXR4
ci0+aG5fdHhfY2hpbW5leSsrOwogCQkJZ290byBkb25lOwogCQl9CiAJfQogCi0JZXJyb3IgPSBo
bl90eGRlc2NfZG1hbWFwX2xvYWQoc2MsIHR4ZCwgJm1faGVhZCwgc2VncywgJm5zZWdzKTsKKwll
cnJvciA9IGhuX3R4ZGVzY19kbWFtYXBfbG9hZCh0eHIsIHR4ZCwgJm1faGVhZCwgc2VncywgJm5z
ZWdzKTsKIAlpZiAoZXJyb3IpIHsKIAkJaW50IGZyZWVkOwogCkBAIC04NzIsMTIgKzgyOSwxMiBA
QAogCQltX2ZyZWVtKG1faGVhZCk7CiAJCSptX2hlYWQwID0gTlVMTDsKIAotCQlmcmVlZCA9IGhu
X3R4ZGVzY19wdXQoc2MsIHR4ZCk7CisJCWZyZWVkID0gaG5fdHhkZXNjX3B1dCh0eHIsIHR4ZCk7
CiAJCUtBU1NFUlQoZnJlZWQgIT0gMCwKIAkJICAgICgiZmFpbCB0byBmcmVlIHR4ZCB1cG9uIHR4
ZG1hIGVycm9yIikpOwogCi0JCXNjLT5obl90eGRtYV9mYWlsZWQrKzsKLQkJaWZfaW5jX2NvdW50
ZXIoc2MtPmhuX2lmcCwgSUZDT1VOVEVSX09FUlJPUlMsIDEpOworCQl0eHItPmhuX3R4ZG1hX2Zh
aWxlZCsrOworCQlpZl9pbmNfY291bnRlcih0eHItPmhuX3NjLT5obl9pZnAsIElGQ09VTlRFUl9P
RVJST1JTLCAxKTsKIAkJcmV0dXJuIGVycm9yOwogCX0KIAkqbV9oZWFkMCA9IG1faGVhZDsKQEAg
LTkyMCwxMSArODc3LDE1IEBACiAgKiBTdGFydCBhIHRyYW5zbWl0IG9mIG9uZSBvciBtb3JlIHBh
Y2tldHMKICAqLwogc3RhdGljIGludAotaG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZw
LCBpbnQgbGVuKQoraG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBobl90eF9yaW5nICp0eHIsIGludCBs
ZW4pCiB7Ci0Jc3RydWN0IGhuX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7CisJc3RydWN0IGhu
X3NvZnRjICpzYyA9IHR4ci0+aG5fc2M7CisJc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+aG5faWZw
OwogCXN0cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHggPSB2bWJ1c19nZXRfZGV2Y3R4KHNjLT5o
bl9kZXYpOwogCisJS0FTU0VSVCh0eHIgPT0gJnNjLT5obl90eF9yaW5nWzBdLCAoIm5vdCB0aGUg
Zmlyc3QgVFggcmluZyIpKTsKKwltdHhfYXNzZXJ0KCZ0eHItPmhuX3R4X2xvY2ssIE1BX09XTkVE
KTsKKwogCWlmICgoaWZwLT5pZl9kcnZfZmxhZ3MgJiAoSUZGX0RSVl9SVU5OSU5HIHwgSUZGX0RS
Vl9PQUNUSVZFKSkgIT0KIAkgICAgSUZGX0RSVl9SVU5OSU5HKQogCQlyZXR1cm4gMDsKQEAgLTk0
OCwxNSArOTA5LDE1IEBACiAJCQlyZXR1cm4gMTsKIAkJfQogCi0JCXR4ZCA9IGhuX3R4ZGVzY19n
ZXQoc2MpOworCQl0eGQgPSBobl90eGRlc2NfZ2V0KHR4cik7CiAJCWlmICh0eGQgPT0gTlVMTCkg
ewotCQkJc2MtPmhuX25vX3R4ZGVzY3MrKzsKKwkJCXR4ci0+aG5fbm9fdHhkZXNjcysrOwogCQkJ
SUZfUFJFUEVORCgmaWZwLT5pZl9zbmQsIG1faGVhZCk7CiAJCQlhdG9taWNfc2V0X2ludCgmaWZw
LT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZfT0FDVElWRSk7CiAJCQlicmVhazsKIAkJfQogCi0JCWVy
cm9yID0gaG5fZW5jYXAoc2MsIHR4ZCwgJm1faGVhZCk7CisJCWVycm9yID0gaG5fZW5jYXAodHhy
LCB0eGQsICZtX2hlYWQpOwogCQlpZiAoZXJyb3IpIHsKIAkJCS8qIEJvdGggdHhkIGFuZCBtX2hl
YWQgYXJlIGZyZWVkICovCiAJCQljb250aW51ZTsKQEAgLTk3MSw3ICs5MzIsNyBAQAogCQkJRVRI
RVJfQlBGX01UQVAoaWZwLCBtX2hlYWQpOwogCQkJaWZfaW5jX2NvdW50ZXIoaWZwLCBJRkNPVU5U
RVJfT1BBQ0tFVFMsIDEpOwogCQl9Ci0JCWhuX3R4ZGVzY19wdXQoc2MsIHR4ZCk7CisJCWhuX3R4
ZGVzY19wdXQodHhyLCB0eGQpOwogCiAJCWlmIChfX3ByZWRpY3RfZmFsc2UoZXJyb3IpKSB7CiAJ
CQlpbnQgZnJlZWQ7CkBAIC05ODMsOSArOTQ0LDkgQEAKIAkJCSAqIGNvbW1hbmRzIHRvIHJ1bj8g
IEFzayBuZXR2c2NfY2hhbm5lbF9yb2xsdXAoKQogCQkJICogdG8ga2ljayBzdGFydCBsYXRlci4K
IAkJCSAqLwotCQkJc2MtPmhuX3R4ZW9mID0gMTsKKwkJCXR4ci0+aG5fdHhlb2YgPSAxOwogCQkJ
aWYgKCFzZW5kX2ZhaWxlZCkgewotCQkJCXNjLT5obl9zZW5kX2ZhaWxlZCsrOworCQkJCXR4ci0+
aG5fc2VuZF9mYWlsZWQrKzsKIAkJCQlzZW5kX2ZhaWxlZCA9IDE7CiAJCQkJLyoKIAkJCQkgKiBU
cnkgc2VuZGluZyBhZ2FpbiBhZnRlciBzZXQgaG5fdHhlb2Y7CkBAIC0xMDAyLDExICs5NjMsMTEg
QEAKIAkJCSAqIERNQSBtYXAgaW4gaG5fdHhkZXNjX3B1dCgpLCBpZiBpdCB3YXMgbG9hZGVkLgog
CQkJICovCiAJCQl0eGQtPm0gPSBOVUxMOwotCQkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHNjLCB0
eGQpOworCQkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHR4ciwgdHhkKTsKIAkJCUtBU1NFUlQoZnJl
ZWQgIT0gMCwKIAkJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiBzZW5kIGVycm9yIikpOwog
Ci0JCQlzYy0+aG5fc2VuZF9mYWlsZWQrKzsKKwkJCXR4ci0+aG5fc2VuZF9mYWlsZWQrKzsKIAkJ
CUlGX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtX2hlYWQpOwogCQkJYXRvbWljX3NldF9pbnQoJmlm
cC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOwogCQkJYnJlYWs7CkBAIC0xMzg0LDgg
KzEzNDUsMTAgQEAKIAkJfQogCiAJCXNjLT5obl90eF9jaGltbmV5X21heCA9IHNjLT5uZXRfZGV2
LT5zZW5kX3NlY3Rpb25fc2l6ZTsKLQkJaWYgKHNjLT5obl90eF9jaGltbmV5X3NpemUgPiBzYy0+
aG5fdHhfY2hpbW5leV9tYXgpCi0JCQlzYy0+aG5fdHhfY2hpbW5leV9zaXplID0gc2MtPmhuX3R4
X2NoaW1uZXlfbWF4OworCQlpZiAoc2MtPmhuX3R4X3JpbmdbMF0uaG5fdHhfY2hpbW5leV9zaXpl
ID4KKwkJICAgIHNjLT5obl90eF9jaGltbmV5X21heCkKKwkJCWhuX3NldF90eF9jaGltbmV5X3Np
emUoc2MsIHNjLT5obl90eF9jaGltbmV5X21heCk7CisKIAkJaG5faWZpbml0X2xvY2tlZChzYyk7
CiAKIAkJTlZfTE9DSyhzYyk7CkBAIC0xNDUwLDEwICsxNDEzLDEzIEBACiAJCW1hc2sgPSBpZnIt
Pmlmcl9yZXFjYXAgXiBpZnAtPmlmX2NhcGVuYWJsZTsKIAkJaWYgKG1hc2sgJiBJRkNBUF9UWENT
VU0pIHsKIAkJCWlmcC0+aWZfY2FwZW5hYmxlIF49IElGQ0FQX1RYQ1NVTTsKLQkJCWlmIChpZnAt
PmlmX2NhcGVuYWJsZSAmIElGQ0FQX1RYQ1NVTSkKLQkJCQlpZnAtPmlmX2h3YXNzaXN0IHw9IHNj
LT5obl9jc3VtX2Fzc2lzdDsKLQkJCWVsc2UKLQkJCQlpZnAtPmlmX2h3YXNzaXN0ICY9IH5zYy0+
aG5fY3N1bV9hc3Npc3Q7CisJCQlpZiAoaWZwLT5pZl9jYXBlbmFibGUgJiBJRkNBUF9UWENTVU0p
IHsKKwkJCQlpZnAtPmlmX2h3YXNzaXN0IHw9CisJCQkJICAgIHNjLT5obl90eF9yaW5nWzBdLmhu
X2NzdW1fYXNzaXN0OworCQkJfSBlbHNlIHsKKwkJCQlpZnAtPmlmX2h3YXNzaXN0ICY9CisJCQkJ
ICAgIH5zYy0+aG5fdHhfcmluZ1swXS5obl9jc3VtX2Fzc2lzdDsKKwkJCX0KIAkJfQogCiAJCWlm
IChtYXNrICYgSUZDQVBfUlhDU1VNKQpAQCAtMTUzNiw0OCArMTUwMiw1NCBAQAogaG5fc3RhcnQo
c3RydWN0IGlmbmV0ICppZnApCiB7CiAJc3RydWN0IGhuX3NvZnRjICpzYyA9IGlmcC0+aWZfc29m
dGM7CisJc3RydWN0IGhuX3R4X3JpbmcgKnR4ciA9ICZzYy0+aG5fdHhfcmluZ1swXTsKIAotCWlm
IChzYy0+aG5fc2NoZWRfdHgpCisJaWYgKHR4ci0+aG5fc2NoZWRfdHgpCiAJCWdvdG8gZG9fc2No
ZWQ7CiAKLQlpZiAoTlZfVFJZTE9DSyhzYykpIHsKKwlpZiAobXR4X3RyeWxvY2soJnR4ci0+aG5f
dHhfbG9jaykpIHsKIAkJaW50IHNjaGVkOwogCi0JCXNjaGVkID0gaG5fc3RhcnRfbG9ja2VkKGlm
cCwgc2MtPmhuX2RpcmVjdF90eF9zaXplKTsKLQkJTlZfVU5MT0NLKHNjKTsKKwkJc2NoZWQgPSBo
bl9zdGFydF9sb2NrZWQodHhyLCB0eHItPmhuX2RpcmVjdF90eF9zaXplKTsKKwkJbXR4X3VubG9j
aygmdHhyLT5obl90eF9sb2NrKTsKIAkJaWYgKCFzY2hlZCkKIAkJCXJldHVybjsKIAl9CiBkb19z
Y2hlZDoKLQl0YXNrcXVldWVfZW5xdWV1ZShzYy0+aG5fdHhfdGFza3EsICZzYy0+aG5fc3RhcnRf
dGFzayk7CisJdGFza3F1ZXVlX2VucXVldWUodHhyLT5obl90eF90YXNrcSwgJnR4ci0+aG5fc3Rh
cnRfdGFzayk7CiB9CiAKIHN0YXRpYyB2b2lkCi1obl9zdGFydF90eGVvZihzdHJ1Y3QgaWZuZXQg
KmlmcCkKK2huX3N0YXJ0X3R4ZW9mKHN0cnVjdCBobl90eF9yaW5nICp0eHIpCiB7Ci0Jc3RydWN0
IGhuX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9IHR4
ci0+aG5fc2M7CisJc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+aG5faWZwOwogCi0JaWYgKHNjLT5o
bl9zY2hlZF90eCkKKwlLQVNTRVJUKHR4ciA9PSAmc2MtPmhuX3R4X3JpbmdbMF0sICgibm90IHRo
ZSBmaXJzdCBUWCByaW5nIikpOworCisJaWYgKHR4ci0+aG5fc2NoZWRfdHgpCiAJCWdvdG8gZG9f
c2NoZWQ7CiAKLQlpZiAoTlZfVFJZTE9DSyhzYykpIHsKKwlpZiAobXR4X3RyeWxvY2soJnR4ci0+
aG5fdHhfbG9jaykpIHsKIAkJaW50IHNjaGVkOwogCiAJCWF0b21pY19jbGVhcl9pbnQoJmlmcC0+
aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOwotCQlzY2hlZCA9IGhuX3N0YXJ0X2xvY2tl
ZChpZnAsIHNjLT5obl9kaXJlY3RfdHhfc2l6ZSk7Ci0JCU5WX1VOTE9DSyhzYyk7Ci0JCWlmIChz
Y2hlZCkKLQkJCXRhc2txdWV1ZV9lbnF1ZXVlKHNjLT5obl90eF90YXNrcSwgJnNjLT5obl9zdGFy
dF90YXNrKTsKKwkJc2NoZWQgPSBobl9zdGFydF9sb2NrZWQodHhyLCB0eHItPmhuX2RpcmVjdF90
eF9zaXplKTsKKwkJbXR4X3VubG9jaygmdHhyLT5obl90eF9sb2NrKTsKKwkJaWYgKHNjaGVkKSB7
CisJCQl0YXNrcXVldWVfZW5xdWV1ZSh0eHItPmhuX3R4X3Rhc2txLAorCQkJICAgICZ0eHItPmhu
X3N0YXJ0X3Rhc2spOworCQl9CiAJfSBlbHNlIHsKIGRvX3NjaGVkOgogCQkvKgogCQkgKiBSZWxl
YXNlIHRoZSBPQUNUSVZFIGVhcmxpZXIsIHdpdGggdGhlIGhvcGUsIHRoYXQKIAkJICogb3RoZXJz
IGNvdWxkIGNhdGNoIHVwLiAgVGhlIHRhc2sgd2lsbCBjbGVhciB0aGUKLQkJICogZmxhZyBhZ2Fp
biB3aXRoIHRoZSBOVl9MT0NLIHRvIGF2b2lkIHBvc3NpYmxlCisJCSAqIGZsYWcgYWdhaW4gd2l0
aCB0aGUgaG5fdHhfbG9jayB0byBhdm9pZCBwb3NzaWJsZQogCQkgKiByYWNlcy4KIAkJICovCiAJ
CWF0b21pY19jbGVhcl9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOwot
CQl0YXNrcXVldWVfZW5xdWV1ZShzYy0+aG5fdHhfdGFza3EsICZzYy0+aG5fdHhlb2ZfdGFzayk7
CisJCXRhc2txdWV1ZV9lbnF1ZXVlKHR4ci0+aG5fdHhfdGFza3EsICZ0eHItPmhuX3R4ZW9mX3Rh
c2spOwogCX0KIH0KIApAQCAtMTczNiwxNiArMTcwOCwxNSBAQAogCXN0cnVjdCBobl9zb2Z0YyAq
c2MgPSBhcmcxOwogCWludCBjaGltbmV5X3NpemUsIGVycm9yOwogCi0JY2hpbW5leV9zaXplID0g
c2MtPmhuX3R4X2NoaW1uZXlfc2l6ZTsKKwljaGltbmV5X3NpemUgPSBzYy0+aG5fdHhfcmluZ1sw
XS5obl90eF9jaGltbmV5X3NpemU7CiAJZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAm
Y2hpbW5leV9zaXplLCAwLCByZXEpOwogCWlmIChlcnJvciB8fCByZXEtPm5ld3B0ciA9PSBOVUxM
KQogCQlyZXR1cm4gZXJyb3I7CiAKIAlpZiAoY2hpbW5leV9zaXplID4gc2MtPmhuX3R4X2NoaW1u
ZXlfbWF4IHx8IGNoaW1uZXlfc2l6ZSA8PSAwKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JaWYgKHNj
LT5obl90eF9jaGltbmV5X3NpemUgIT0gY2hpbW5leV9zaXplKQotCQlzYy0+aG5fdHhfY2hpbW5l
eV9zaXplID0gY2hpbW5leV9zaXplOworCWhuX3NldF90eF9jaGltbmV5X3NpemUoc2MsIGNoaW1u
ZXlfc2l6ZSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE4MDIsNiArMTc3Myw1NiBAQAogfQogCiBz
dGF0aWMgaW50Citobl90eF9zdGF0X3Vsb25nX3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKQor
eworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBhcmcxOworCWludCBvZnMgPSBhcmcyLCBpLCBlcnJv
cjsKKwlzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyOworCXVfbG9uZyBzdGF0OworCisJc3RhdCA9IDA7
CisJZm9yIChpID0gMDsgaSA8IHNjLT5obl90eF9yaW5nX2NudDsgKytpKSB7CisJCXR4ciA9ICZz
Yy0+aG5fdHhfcmluZ1tpXTsKKwkJc3RhdCArPSAqKCh1X2xvbmcgKikoKHVpbnQ4X3QgKil0eHIg
KyBvZnMpKTsKKwl9CisKKwllcnJvciA9IHN5c2N0bF9oYW5kbGVfbG9uZyhvaWRwLCAmc3RhdCwg
MCwgcmVxKTsKKwlpZiAoZXJyb3IgfHwgcmVxLT5uZXdwdHIgPT0gTlVMTCkKKwkJcmV0dXJuIGVy
cm9yOworCisJLyogWmVybyBvdXQgdGhpcyBzdGF0LiAqLworCWZvciAoaSA9IDA7IGkgPCBzYy0+
aG5fdHhfcmluZ19jbnQ7ICsraSkgeworCQl0eHIgPSAmc2MtPmhuX3R4X3JpbmdbaV07CisJCSoo
KHVfbG9uZyAqKSgodWludDhfdCAqKXR4ciArIG9mcykpID0gMDsKKwl9CisJcmV0dXJuIDA7Cit9
CisKK3N0YXRpYyBpbnQKK2huX3R4X2NvbmZfaW50X3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdT
KQoreworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBhcmcxOworCWludCBvZnMgPSBhcmcyLCBpLCBl
cnJvciwgY29uZjsKKwlzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyOworCisJdHhyID0gJnNjLT5obl90
eF9yaW5nWzBdOworCWNvbmYgPSAqKChpbnQgKikoKHVpbnQ4X3QgKil0eHIgKyBvZnMpKTsKKwor
CWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJmNvbmYsIDAsIHJlcSk7CisJaWYgKGVy
cm9yIHx8IHJlcS0+bmV3cHRyID09IE5VTEwpCisJCXJldHVybiBlcnJvcjsKKworCU5WX0xPQ0so
c2MpOworCWZvciAoaSA9IDA7IGkgPCBzYy0+aG5fdHhfcmluZ19jbnQ7ICsraSkgeworCQl0eHIg
PSAmc2MtPmhuX3R4X3JpbmdbaV07CisJCSooKGludCAqKSgodWludDhfdCAqKXR4ciArIG9mcykp
ID0gY29uZjsKKwl9CisJTlZfVU5MT0NLKHNjKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg
aW50CiBobl9jaGVja19pcGxlbihjb25zdCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGhvZmYpCiB7CiAJ
Y29uc3Qgc3RydWN0IGlwICppcDsKQEAgLTIwMTksMTYgKzIwNDAsMzcgQEAKIH0KIAogc3RhdGlj
IGludAotaG5fY3JlYXRlX3R4X3Jpbmcoc3RydWN0IGhuX3NvZnRjICpzYykKK2huX2NyZWF0ZV90
eF9yaW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MsIGludCBpZCkKIHsKKwlzdHJ1Y3QgaG5fdHhfcmlu
ZyAqdHhyID0gJnNjLT5obl90eF9yaW5nW2lkXTsKIAlidXNfZG1hX3RhZ190IHBhcmVudF9kdGFn
OwogCWludCBlcnJvciwgaTsKIAotCXNjLT5obl90eGRlc2NfY250ID0gSE5fVFhfREVTQ19DTlQ7
Ci0Jc2MtPmhuX3R4ZGVzYyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGhuX3R4ZGVzYykgKiBzYy0+
aG5fdHhkZXNjX2NudCwKKwl0eHItPmhuX3NjID0gc2M7CisKKwltdHhfaW5pdCgmdHhyLT5obl90
eGxpc3Rfc3BpbiwgImhuIHR4bGlzdCIsIE5VTEwsIE1UWF9TUElOKTsKKwltdHhfaW5pdCgmdHhy
LT5obl90eF9sb2NrLCAiaG4gdHgiLCBOVUxMLCBNVFhfREVGKTsKKworCXR4ci0+aG5fdHhkZXNj
X2NudCA9IEhOX1RYX0RFU0NfQ05UOworCXR4ci0+aG5fdHhkZXNjID0gbWFsbG9jKHNpemVvZihz
dHJ1Y3QgaG5fdHhkZXNjKSAqIHR4ci0+aG5fdHhkZXNjX2NudCwKIAkgICAgTV9ORVRWU0MsIE1f
V0FJVE9LIHwgTV9aRVJPKTsKLQlTTElTVF9JTklUKCZzYy0+aG5fdHhsaXN0KTsKLQltdHhfaW5p
dCgmc2MtPmhuX3R4bGlzdF9zcGluLCAiaG4gdHhsaXN0IiwgTlVMTCwgTVRYX1NQSU4pOworCVNM
SVNUX0lOSVQoJnR4ci0+aG5fdHhsaXN0KTsKKworCXR4ci0+aG5fdHhfdGFza3EgPSBzYy0+aG5f
dHhfdGFza3E7CisJVEFTS19JTklUKCZ0eHItPmhuX3N0YXJ0X3Rhc2ssIDAsIGhuX3N0YXJ0X3Rh
c2tmdW5jLCB0eHIpOworCVRBU0tfSU5JVCgmdHhyLT5obl90eGVvZl90YXNrLCAwLCBobl90eGVv
Zl90YXNrZnVuYywgdHhyKTsKKworCXR4ci0+aG5fZGlyZWN0X3R4X3NpemUgPSBobl9kaXJlY3Rf
dHhfc2l6ZTsKKwlpZiAoaHZfdm1idXNfcHJvdG9jYWxfdmVyc2lvbiA+PSBIVl9WTUJVU19WRVJT
SU9OX1dJTjhfMSkKKwkJdHhyLT5obl9jc3VtX2Fzc2lzdCA9IEhOX0NTVU1fQVNTSVNUOworCWVs
c2UKKwkJdHhyLT5obl9jc3VtX2Fzc2lzdCA9IEhOX0NTVU1fQVNTSVNUX1dJTjg7CisKKwkvKgor
CSAqIEFsd2F5cyBzY2hlZHVsZSB0cmFuc21pc3Npb24gaW5zdGVhZCBvZiB0cnlpbmcgdG8gZG8g
ZGlyZWN0CisJICogdHJhbnNtaXNzaW9uLiAgVGhpcyBvbmUgZ2l2ZXMgdGhlIGJlc3QgcGVyZm9y
bWFuY2Ugc28gZmFyLgorCSAqLworCXR4ci0+aG5fc2NoZWRfdHggPSAxOwogCiAJcGFyZW50X2R0
YWcgPSBidXNfZ2V0X2RtYV90YWcoc2MtPmhuX2Rldik7CiAKQEAgLTIwNDUsNyArMjA4Nyw3IEBA
CiAJICAgIDAsCQkJCS8qIGZsYWdzICovCiAJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KIAkg
ICAgTlVMTCwJCQkvKiBsb2NrZnVuY2FyZyAqLwotCSAgICAmc2MtPmhuX3R4X3JuZGlzX2R0YWcp
OworCSAgICAmdHhyLT5obl90eF9ybmRpc19kdGFnKTsKIAlpZiAoZXJyb3IpIHsKIAkJZGV2aWNl
X3ByaW50ZihzYy0+aG5fZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBybmRpcyBkbWF0YWdcbiIpOwog
CQlyZXR1cm4gZXJyb3I7CkBAIC0yMDY0LDIxICsyMTA2LDIxIEBACiAJICAgIDAsCQkJCS8qIGZs
YWdzICovCiAJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KIAkgICAgTlVMTCwJCQkvKiBsb2Nr
ZnVuY2FyZyAqLwotCSAgICAmc2MtPmhuX3R4X2RhdGFfZHRhZyk7CisJICAgICZ0eHItPmhuX3R4
X2RhdGFfZHRhZyk7CiAJaWYgKGVycm9yKSB7CiAJCWRldmljZV9wcmludGYoc2MtPmhuX2Rldiwg
ImZhaWxlZCB0byBjcmVhdGUgZGF0YSBkbWF0YWdcbiIpOwogCQlyZXR1cm4gZXJyb3I7CiAJfQog
Ci0JZm9yIChpID0gMDsgaSA8IHNjLT5obl90eGRlc2NfY250OyArK2kpIHsKLQkJc3RydWN0IGhu
X3R4ZGVzYyAqdHhkID0gJnNjLT5obl90eGRlc2NbaV07CisJZm9yIChpID0gMDsgaSA8IHR4ci0+
aG5fdHhkZXNjX2NudDsgKytpKSB7CisJCXN0cnVjdCBobl90eGRlc2MgKnR4ZCA9ICZ0eHItPmhu
X3R4ZGVzY1tpXTsKIAotCQl0eGQtPnNjID0gc2M7CisJCXR4ZC0+dHhyID0gdHhyOwogCiAJCS8q
CiAJCSAqIEFsbG9jYXRlIGFuZCBsb2FkIFJORElTIG1lc3NhZ2VzLgogCQkgKi8KLSAgICAgICAg
CWVycm9yID0gYnVzX2RtYW1lbV9hbGxvYyhzYy0+aG5fdHhfcm5kaXNfZHRhZywKKyAgICAgICAg
CWVycm9yID0gYnVzX2RtYW1lbV9hbGxvYyh0eHItPmhuX3R4X3JuZGlzX2R0YWcsCiAJCSAgICAo
dm9pZCAqKikmdHhkLT5ybmRpc19tc2csCiAJCSAgICBCVVNfRE1BX1dBSVRPSyB8IEJVU19ETUFf
Q09IRVJFTlQsCiAJCSAgICAmdHhkLT5ybmRpc19tc2dfZG1hcCk7CkBAIC0yMDg4LDg4ICsyMTMw
LDIyOSBAQAogCQkJcmV0dXJuIGVycm9yOwogCQl9CiAKLQkJZXJyb3IgPSBidXNfZG1hbWFwX2xv
YWQoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHR4ci0+
aG5fdHhfcm5kaXNfZHRhZywKIAkJICAgIHR4ZC0+cm5kaXNfbXNnX2RtYXAsCiAJCSAgICB0eGQt
PnJuZGlzX21zZywgSE5fUk5ESVNfTVNHX0xFTiwKIAkJICAgIGhuX2RtYV9tYXBfcGFkZHIsICZ0
eGQtPnJuZGlzX21zZ19wYWRkciwKIAkJICAgIEJVU19ETUFfTk9XQUlUKTsKIAkJaWYgKGVycm9y
KSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCiAJCQkgICAgImZhaWxlZCB0byBsb2Fk
IHJuZGlzX21zZywgJWRcbiIsIGkpOwotCQkJYnVzX2RtYW1lbV9mcmVlKHNjLT5obl90eF9ybmRp
c19kdGFnLAorCQkJYnVzX2RtYW1lbV9mcmVlKHR4ci0+aG5fdHhfcm5kaXNfZHRhZywKIAkJCSAg
ICB0eGQtPnJuZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CiAJCQlyZXR1cm4gZXJyb3I7
CiAJCX0KIAogCQkvKiBETUEgbWFwIGZvciBUWCBkYXRhLiAqLwotCQllcnJvciA9IGJ1c19kbWFt
YXBfY3JlYXRlKHNjLT5obl90eF9kYXRhX2R0YWcsIDAsCisJCWVycm9yID0gYnVzX2RtYW1hcF9j
cmVhdGUodHhyLT5obl90eF9kYXRhX2R0YWcsIDAsCiAJCSAgICAmdHhkLT5kYXRhX2RtYXApOwog
CQlpZiAoZXJyb3IpIHsKIAkJCWRldmljZV9wcmludGYoc2MtPmhuX2RldiwKIAkJCSAgICAiZmFp
bGVkIHRvIGFsbG9jYXRlIHR4IGRhdGEgZG1hbWFwXG4iKTsKLQkJCWJ1c19kbWFtYXBfdW5sb2Fk
KHNjLT5obl90eF9ybmRpc19kdGFnLAorCQkJYnVzX2RtYW1hcF91bmxvYWQodHhyLT5obl90eF9y
bmRpc19kdGFnLAogCQkJICAgIHR4ZC0+cm5kaXNfbXNnX2RtYXApOwotCQkJYnVzX2RtYW1lbV9m
cmVlKHNjLT5obl90eF9ybmRpc19kdGFnLAorCQkJYnVzX2RtYW1lbV9mcmVlKHR4ci0+aG5fdHhf
cm5kaXNfZHRhZywKIAkJCSAgICB0eGQtPnJuZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7
CiAJCQlyZXR1cm4gZXJyb3I7CiAJCX0KIAogCQkvKiBBbGwgc2V0LCBwdXQgaXQgdG8gbGlzdCAq
LwogCQl0eGQtPmZsYWdzIHw9IEhOX1RYRF9GTEFHX09OTElTVDsKLQkJU0xJU1RfSU5TRVJUX0hF
QUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGluayk7CisJCVNMSVNUX0lOU0VSVF9IRUFEKCZ0eHIt
PmhuX3R4bGlzdCwgdHhkLCBsaW5rKTsKKwl9CisJdHhyLT5obl90eGRlc2NfYXZhaWwgPSB0eHIt
PmhuX3R4ZGVzY19jbnQ7CisKKwlpZiAoc2MtPmhuX3R4X3N5c2N0bF90cmVlICE9IE5VTEwpIHsK
KwkJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqY2hpbGQ7CisJCXN0cnVjdCBzeXNjdGxfY3R4X2xp
c3QgKmN0eDsKKwkJY2hhciBuYW1lWzE2XTsKKworCQkvKgorCQkgKiBDcmVhdGUgcGVyIFRYIHJp
bmcgc3lzY3RsIHRyZWU6CisJCSAqIGRldi5obi5VTklULnR4LlJJTkdJRAorCQkgKi8KKwkJY3R4
ID0gZGV2aWNlX2dldF9zeXNjdGxfY3R4KHNjLT5obl9kZXYpOworCQljaGlsZCA9IFNZU0NUTF9D
SElMRFJFTihzYy0+aG5fdHhfc3lzY3RsX3RyZWUpOworCisJCXNucHJpbnRmKG5hbWUsIHNpemVv
ZihuYW1lKSwgIiVkIiwgaWQpOworCQl0eHItPmhuX3R4X3N5c2N0bF90cmVlID0gU1lTQ1RMX0FE
RF9OT0RFKGN0eCwgY2hpbGQsIE9JRF9BVVRPLAorCQkgICAgbmFtZSwgQ1RMRkxBR19SRCwgMCwg
IiIpOworCisJCWlmICh0eHItPmhuX3R4X3N5c2N0bF90cmVlICE9IE5VTEwpIHsKKwkJCWNoaWxk
ID0gU1lTQ1RMX0NISUxEUkVOKHR4ci0+aG5fdHhfc3lzY3RsX3RyZWUpOworCisJCQlTWVNDVExf
QUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4ZGVzY19hdmFpbCIsCisJCQkgICAgQ1RM
RkxBR19SRCwgJnR4ci0+aG5fdHhkZXNjX2F2YWlsLCAwLAorCQkJICAgICIjIG9mIGF2YWlsYWJs
ZSBUWCBkZXNjcyIpOworCQl9CiAJfQotCXNjLT5obl90eGRlc2NfYXZhaWwgPSBzYy0+aG5fdHhk
ZXNjX2NudDsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZAotaG5fZGVzdHJveV90eF9y
aW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpCitobl9kZXN0cm95X3R4X3Jpbmcoc3RydWN0IGhuX3R4
X3JpbmcgKnR4cikKIHsKIAlzdHJ1Y3QgaG5fdHhkZXNjICp0eGQ7CiAKLQl3aGlsZSAoKHR4ZCA9
IFNMSVNUX0ZJUlNUKCZzYy0+aG5fdHhsaXN0KSkgIT0gTlVMTCkgeworCWlmICh0eHItPmhuX3R4
ZGVzYyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwl3aGlsZSAoKHR4ZCA9IFNMSVNUX0ZJUlNUKCZ0
eHItPmhuX3R4bGlzdCkpICE9IE5VTEwpIHsKIAkJS0FTU0VSVCh0eGQtPm0gPT0gTlVMTCwgKCJz
dGlsbCBoYXMgbWJ1ZiBpbnN0YWxsZWQiKSk7CiAJCUtBU1NFUlQoKHR4ZC0+ZmxhZ3MgJiBITl9U
WERfRkxBR19ETUFNQVApID09IDAsCiAJCSAgICAoInN0aWxsIGRtYSBtYXBwZWQiKSk7Ci0JCVNM
SVNUX1JFTU9WRV9IRUFEKCZzYy0+aG5fdHhsaXN0LCBsaW5rKTsKKwkJU0xJU1RfUkVNT1ZFX0hF
QUQoJnR4ci0+aG5fdHhsaXN0LCBsaW5rKTsKIAotCQlidXNfZG1hbWFwX3VubG9hZChzYy0+aG5f
dHhfcm5kaXNfZHRhZywKKwkJYnVzX2RtYW1hcF91bmxvYWQodHhyLT5obl90eF9ybmRpc19kdGFn
LAogCQkgICAgdHhkLT5ybmRpc19tc2dfZG1hcCk7Ci0JCWJ1c19kbWFtZW1fZnJlZShzYy0+aG5f
dHhfcm5kaXNfZHRhZywKKwkJYnVzX2RtYW1lbV9mcmVlKHR4ci0+aG5fdHhfcm5kaXNfZHRhZywK
IAkJICAgIHR4ZC0+cm5kaXNfbXNnLCB0eGQtPnJuZGlzX21zZ19kbWFwKTsKIAotCQlidXNfZG1h
bWFwX2Rlc3Ryb3koc2MtPmhuX3R4X2RhdGFfZHRhZywgdHhkLT5kYXRhX2RtYXApOworCQlidXNf
ZG1hbWFwX2Rlc3Ryb3kodHhyLT5obl90eF9kYXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwKTsKIAl9
CiAKLQlpZiAoc2MtPmhuX3R4X2RhdGFfZHRhZyAhPSBOVUxMKQotCQlidXNfZG1hX3RhZ19kZXN0
cm95KHNjLT5obl90eF9kYXRhX2R0YWcpOwotCWlmIChzYy0+aG5fdHhfcm5kaXNfZHRhZyAhPSBO
VUxMKQotCQlidXNfZG1hX3RhZ19kZXN0cm95KHNjLT5obl90eF9ybmRpc19kdGFnKTsKLQlmcmVl
KHNjLT5obl90eGRlc2MsIE1fTkVUVlNDKTsKLQltdHhfZGVzdHJveSgmc2MtPmhuX3R4bGlzdF9z
cGluKTsKKwlpZiAodHhyLT5obl90eF9kYXRhX2R0YWcgIT0gTlVMTCkKKwkJYnVzX2RtYV90YWdf
ZGVzdHJveSh0eHItPmhuX3R4X2RhdGFfZHRhZyk7CisJaWYgKHR4ci0+aG5fdHhfcm5kaXNfZHRh
ZyAhPSBOVUxMKQorCQlidXNfZG1hX3RhZ19kZXN0cm95KHR4ci0+aG5fdHhfcm5kaXNfZHRhZyk7
CisJZnJlZSh0eHItPmhuX3R4ZGVzYywgTV9ORVRWU0MpOworCXR4ci0+aG5fdHhkZXNjID0gTlVM
TDsKKworCW10eF9kZXN0cm95KCZ0eHItPmhuX3R4bGlzdF9zcGluKTsKKwltdHhfZGVzdHJveSgm
dHhyLT5obl90eF9sb2NrKTsKK30KKworc3RhdGljIGludAoraG5fY3JlYXRlX3R4X2RhdGEoc3Ry
dWN0IGhuX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3Qgc3lzY3RsX29pZF9saXN0ICpjaGlsZDsKKwlz
dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHg7CisJaW50IGk7CisKKwlzYy0+aG5fdHhfcmluZ19j
bnQgPSAxOyAvKiBUT0RPOiB2UlNTICovCisJc2MtPmhuX3R4X3JpbmcgPSBtYWxsb2Moc2l6ZW9m
KHN0cnVjdCBobl90eF9yaW5nKSAqIHNjLT5obl90eF9yaW5nX2NudCwKKwkgICAgTV9ORVRWU0Ms
IE1fV0FJVE9LIHwgTV9aRVJPKTsKKworCWN0eCA9IGRldmljZV9nZXRfc3lzY3RsX2N0eChzYy0+
aG5fZGV2KTsKKwljaGlsZCA9IFNZU0NUTF9DSElMRFJFTihkZXZpY2VfZ2V0X3N5c2N0bF90cmVl
KHNjLT5obl9kZXYpKTsKKworCS8qIENyZWF0ZSBkZXYuaG4uVU5JVC50eCBzeXNjdGwgdHJlZSAq
LworCXNjLT5obl90eF9zeXNjdGxfdHJlZSA9IFNZU0NUTF9BRERfTk9ERShjdHgsIGNoaWxkLCBP
SURfQVVUTywgInR4IiwKKwkgICAgQ1RMRkxBR19SRCwgMCwgIiIpOworCisJZm9yIChpID0gMDsg
aSA8IHNjLT5obl90eF9yaW5nX2NudDsgKytpKSB7CisJCWludCBlcnJvcjsKKworCQllcnJvciA9
IGhuX2NyZWF0ZV90eF9yaW5nKHNjLCBpKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9y
OworCX0KKworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVUTywgIm5vX3R4ZGVz
Y3MiLAorCSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zmc2V0
b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhuX25vX3R4ZGVzY3MpLAorCSAgICBobl90eF9zdGF0X3Vs
b25nX3N5c2N0bCwgIkxVIiwgIiMgb2YgdGltZXMgc2hvcnQgb2YgVFggZGVzY3MiKTsKKwlTWVND
VExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJzZW5kX2ZhaWxlZCIsCisJICAgIENU
TFRZUEVfVUxPTkcgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5f
dHhfcmluZywgaG5fc2VuZF9mYWlsZWQpLAorCSAgICBobl90eF9zdGF0X3Vsb25nX3N5c2N0bCwg
IkxVIiwgIiMgb2YgaHlwZXItdiBzZW5kaW5nIGZhaWx1cmUiKTsKKwlTWVNDVExfQUREX1BST0Mo
Y3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eGRtYV9mYWlsZWQiLAorCSAgICBDVExUWVBFX1VMT05H
IHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3R4X3JpbmcsIGhu
X3R4ZG1hX2ZhaWxlZCksCisJICAgIGhuX3R4X3N0YXRfdWxvbmdfc3lzY3RsLCAiTFUiLCAiIyBv
ZiBUWCBETUEgZmFpbHVyZSIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVU
TywgInR4X2NvbGxhcHNlZCIsCisJICAgIENUTFRZUEVfVUxPTkcgfCBDVExGTEFHX1JXLCBzYywK
KwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fdHhfcmluZywgaG5fdHhfY29sbGFwc2VkKSwKKwkg
ICAgaG5fdHhfc3RhdF91bG9uZ19zeXNjdGwsICJMVSIsICIjIG9mIFRYIG1idWYgY29sbGFwc2Vk
Iik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfY2hpbW5leSIs
CisJICAgIENUTFRZUEVfVUxPTkcgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihz
dHJ1Y3QgaG5fdHhfcmluZywgaG5fdHhfY2hpbW5leSksCisJICAgIGhuX3R4X3N0YXRfdWxvbmdf
c3lzY3RsLCAiTFUiLCAiIyBvZiBjaGltbmV5IHNlbmQiKTsKKwlTWVNDVExfQUREX0lOVChjdHgs
IGNoaWxkLCBPSURfQVVUTywgInR4ZGVzY19jbnQiLAorCSAgICBDVExGTEFHX1JELCAmc2MtPmhu
X3R4X3JpbmdbMF0uaG5fdHhkZXNjX2NudCwgMCwKKwkgICAgIiMgb2YgdG90YWwgVFggZGVzY3Mi
KTsKKwlTWVNDVExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfbWF4
IiwKKwkgICAgQ1RMRkxBR19SRCwgJnNjLT5obl90eF9jaGltbmV5X21heCwgMCwKKwkgICAgIkNo
aW1uZXkgc2VuZCBwYWNrZXQgc2l6ZSB1cHBlciBib3VuZGFyeSIpOworCVNZU0NUTF9BRERfUFJP
QyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfc2l6ZSIsCisJICAgIENUTFRZUEVf
SU5UIHwgQ1RMRkxBR19SVywgc2MsIDAsIGhuX3R4X2NoaW1uZXlfc2l6ZV9zeXNjdGwsCisJICAg
ICJJIiwgIkNoaW1uZXkgc2VuZCBwYWNrZXQgc2l6ZSBsaW1pdCIpOworCVNZU0NUTF9BRERfUFJP
QyhjdHgsIGNoaWxkLCBPSURfQVVUTywgImRpcmVjdF90eF9zaXplIiwKKwkgICAgQ1RMVFlQRV9J
TlQgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fdHhfcmluZywg
aG5fZGlyZWN0X3R4X3NpemUpLAorCSAgICBobl90eF9jb25mX2ludF9zeXNjdGwsICJJIiwKKwkg
ICAgIlNpemUgb2YgdGhlIHBhY2tldCBmb3IgZGlyZWN0IHRyYW5zbWlzc2lvbiIpOworCVNZU0NU
TF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInNjaGVkX3R4IiwKKwkgICAgQ1RMVFlQ
RV9JTlQgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fdHhfcmlu
ZywgaG5fc2NoZWRfdHgpLAorCSAgICBobl90eF9jb25mX2ludF9zeXNjdGwsICJJIiwKKwkgICAg
IkFsd2F5cyBzY2hlZHVsZSB0cmFuc21pc3Npb24gIgorCSAgICAiaW5zdGVhZCBvZiBkb2luZyBk
aXJlY3QgdHJhbnNtaXNzaW9uIik7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKLWhu
X3N0YXJ0X3Rhc2tmdW5jKHZvaWQgKnhzYywgaW50IHBlbmRpbmcgX191bnVzZWQpCitobl9zZXRf
dHhfY2hpbW5leV9zaXplKHN0cnVjdCBobl9zb2Z0YyAqc2MsIGludCBjaGltbmV5X3NpemUpCiB7
Ci0Jc3RydWN0IGhuX3NvZnRjICpzYyA9IHhzYzsKKwlpbnQgaTsKIAogCU5WX0xPQ0soc2MpOwot
CWhuX3N0YXJ0X2xvY2tlZChzYy0+aG5faWZwLCAwKTsKKwlmb3IgKGkgPSAwOyBpIDwgc2MtPmhu
X3R4X3JpbmdfY250OyArK2kpCisJCXNjLT5obl90eF9yaW5nW2ldLmhuX3R4X2NoaW1uZXlfc2l6
ZSA9IGNoaW1uZXlfc2l6ZTsKIAlOVl9VTkxPQ0soc2MpOwogfQogCiBzdGF0aWMgdm9pZAotaG5f
dHhlb2ZfdGFza2Z1bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyBfX3VudXNlZCkKK2huX2Rlc3Ry
b3lfdHhfZGF0YShzdHJ1Y3QgaG5fc29mdGMgKnNjKQogewotCXN0cnVjdCBobl9zb2Z0YyAqc2Mg
PSB4c2M7Ci0Jc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+aG5faWZwOworCWludCBpOwogCi0JTlZf
TE9DSyhzYyk7Ci0JYXRvbWljX2NsZWFyX2ludCgmaWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZf
T0FDVElWRSk7Ci0JaG5fc3RhcnRfbG9ja2VkKGlmcCwgMCk7Ci0JTlZfVU5MT0NLKHNjKTsKKwlp
ZiAoc2MtPmhuX3R4X3JpbmdfY250ID09IDApCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkg
PCBzYy0+aG5fdHhfcmluZ19jbnQ7ICsraSkKKwkJaG5fZGVzdHJveV90eF9yaW5nKCZzYy0+aG5f
dHhfcmluZ1tpXSk7CisKKwlmcmVlKHNjLT5obl90eF9yaW5nLCBNX05FVFZTQyk7CisJc2MtPmhu
X3R4X3JpbmcgPSBOVUxMOworCisJc2MtPmhuX3R4X3JpbmdfY250ID0gMDsKK30KKworc3RhdGlj
IHZvaWQKK2huX3N0YXJ0X3Rhc2tmdW5jKHZvaWQgKnh0eHIsIGludCBwZW5kaW5nIF9fdW51c2Vk
KQoreworCXN0cnVjdCBobl90eF9yaW5nICp0eHIgPSB4dHhyOworCisJbXR4X2xvY2soJnR4ci0+
aG5fdHhfbG9jayk7CisJaG5fc3RhcnRfbG9ja2VkKHR4ciwgMCk7CisJbXR4X3VubG9jaygmdHhy
LT5obl90eF9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK2huX3R4ZW9mX3Rhc2tmdW5jKHZvaWQg
Knh0eHIsIGludCBwZW5kaW5nIF9fdW51c2VkKQoreworCXN0cnVjdCBobl90eF9yaW5nICp0eHIg
PSB4dHhyOworCisJbXR4X2xvY2soJnR4ci0+aG5fdHhfbG9jayk7CisJYXRvbWljX2NsZWFyX2lu
dCgmdHhyLT5obl9zYy0+aG5faWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZfT0FDVElWRSk7CisJ
aG5fc3RhcnRfbG9ja2VkKHR4ciwgMCk7CisJbXR4X3VubG9jaygmdHhyLT5obl90eF9sb2NrKTsK
K30KKworc3RhdGljIHZvaWQKK2huX3N0b3BfdHhfdGFza3Moc3RydWN0IGhuX3NvZnRjICpzYykK
K3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBzYy0+aG5fdHhfcmluZ19jbnQ7ICsraSkg
eworCQlzdHJ1Y3QgaG5fdHhfcmluZyAqdHhyID0gJnNjLT5obl90eF9yaW5nW2ldOworCisJCXRh
c2txdWV1ZV9kcmFpbih0eHItPmhuX3R4X3Rhc2txLCAmdHhyLT5obl9zdGFydF90YXNrKTsKKwkJ
dGFza3F1ZXVlX2RyYWluKHR4ci0+aG5fdHhfdGFza3EsICZ0eHItPmhuX3R4ZW9mX3Rhc2spOwor
CX0KIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0
dnNjL2h2X25ldF92c2MuaCBiL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2Mu
aAotLS0gYS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKKysrIGIvaGVh
ZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCkBAIC0xMDExLDYgKzEwMTEsMzgg
QEAKICNkZWZpbmUgSE5fVFJVU1RfSENTVU1fVENQCTB4MDAwMgogI2RlZmluZSBITl9UUlVTVF9I
Q1NVTV9VRFAJMHgwMDA0CiAKK3N0cnVjdCBobl90eF9yaW5nIHsKKwlzdHJ1Y3QgbXR4CWhuX3R4
bGlzdF9zcGluOworCXN0cnVjdCBobl90eGRlc2NfbGlzdCBobl90eGxpc3Q7CisJaW50CQlobl90
eGRlc2NfY250OworCWludAkJaG5fdHhkZXNjX2F2YWlsOworCWludAkJaG5fdHhlb2Y7CisKKwlp
bnQJCWhuX3NjaGVkX3R4OworCXN0cnVjdCB0YXNrcXVldWUgKmhuX3R4X3Rhc2txOworCXN0cnVj
dCB0YXNrCWhuX3N0YXJ0X3Rhc2s7CisJc3RydWN0IHRhc2sJaG5fdHhlb2ZfdGFzazsKKworCXN0
cnVjdCBtdHgJaG5fdHhfbG9jazsKKwlzdHJ1Y3QgaG5fc29mdGMJKmhuX3NjOworCisJaW50CQlo
bl9kaXJlY3RfdHhfc2l6ZTsKKwlpbnQJCWhuX3R4X2NoaW1uZXlfc2l6ZTsKKwlidXNfZG1hX3Rh
Z190CWhuX3R4X2RhdGFfZHRhZzsKKwl1aW50NjRfdAlobl9jc3VtX2Fzc2lzdDsKKworCXVfbG9u
ZwkJaG5fbm9fdHhkZXNjczsKKwl1X2xvbmcJCWhuX3NlbmRfZmFpbGVkOworCXVfbG9uZwkJaG5f
dHhkbWFfZmFpbGVkOworCXVfbG9uZwkJaG5fdHhfY29sbGFwc2VkOworCXVfbG9uZwkJaG5fdHhf
Y2hpbW5leTsKKworCS8qIFJhcmVseSB1c2VkIHN0dWZmcyAqLworCXN0cnVjdCBobl90eGRlc2Mg
KmhuX3R4ZGVzYzsKKwlidXNfZG1hX3RhZ190CWhuX3R4X3JuZGlzX2R0YWc7CisJc3RydWN0IHN5
c2N0bF9vaWQgKmhuX3R4X3N5c2N0bF90cmVlOworfSBfX2FsaWduZWQoQ0FDSEVfTElORV9TSVpF
KTsKKwogLyoKICAqIERldmljZS1zcGVjaWZpYyBzb2Z0YyBzdHJ1Y3R1cmUKICAqLwpAQCAtMTAy
OCwzMyArMTA2MCwxNCBAQAogCXN0cnVjdCBodl9kZXZpY2UgICpobl9kZXZfb2JqOwogCW5ldHZz
Y19kZXYgIAkqbmV0X2RldjsKIAotCXN0cnVjdCBobl90eGRlc2MgKmhuX3R4ZGVzYzsKLQlidXNf
ZG1hX3RhZ190CWhuX3R4X2RhdGFfZHRhZzsKLQlidXNfZG1hX3RhZ190CWhuX3R4X3JuZGlzX2R0
YWc7Ci0JaW50CQlobl90eF9jaGltbmV5X3NpemU7Ci0JaW50CQlobl90eF9jaGltbmV5X21heDsK
LQl1aW50NjRfdAlobl9jc3VtX2Fzc2lzdDsKLQotCXN0cnVjdCBtdHgJaG5fdHhsaXN0X3NwaW47
Ci0Jc3RydWN0IGhuX3R4ZGVzY19saXN0IGhuX3R4bGlzdDsKLQlpbnQJCWhuX3R4ZGVzY19jbnQ7
Ci0JaW50CQlobl90eGRlc2NfYXZhaWw7Ci0JaW50CQlobl90eGVvZjsKLQotCWludAkJaG5fc2No
ZWRfdHg7Ci0JaW50CQlobl9kaXJlY3RfdHhfc2l6ZTsKLQlzdHJ1Y3QgdGFza3F1ZXVlICpobl90
eF90YXNrcTsKLQlzdHJ1Y3QgdGFzawlobl9zdGFydF90YXNrOwotCXN0cnVjdCB0YXNrCWhuX3R4
ZW9mX3Rhc2s7Ci0KIAlpbnQJCWhuX3J4X3JpbmdfY250OwogCXN0cnVjdCBobl9yeF9yaW5nICpo
bl9yeF9yaW5nOwogCi0JdV9sb25nCQlobl9ub190eGRlc2NzOwotCXVfbG9uZwkJaG5fc2VuZF9m
YWlsZWQ7Ci0JdV9sb25nCQlobl90eGRtYV9mYWlsZWQ7Ci0JdV9sb25nCQlobl90eF9jb2xsYXBz
ZWQ7Ci0JdV9sb25nCQlobl90eF9jaGltbmV5OworCWludAkJaG5fdHhfcmluZ19jbnQ7CisJc3Ry
dWN0IGhuX3R4X3JpbmcgKmhuX3R4X3Jpbmc7CisJaW50CQlobl90eF9jaGltbmV5X21heDsKKwlz
dHJ1Y3QgdGFza3F1ZXVlICpobl90eF90YXNrcTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqaG5fdHhf
c3lzY3RsX3RyZWU7CiB9IGhuX3NvZnRjX3Q7CiAKIC8qCgo=


--b1_5fe3909765837cc3654563d26e6c1901--



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