Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Feb 2016 08:23:17 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Request, 374 lines] D5275: hyperv/hn: Split RX ring data structure out of softc
Message-ID:  <differential-rev-PHID-DREV-vvrzzurifi3ornziedve-req@FreeBSD.org>

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

--b1_1e3b8a4e66048739e50f18881b85d7a9
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/D5275

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_1e3b8a4e66048739e50f18881b85d7a9
Content-Type: text/x-patch; charset=utf-8; name="D5275.13287.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5275.13287.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2Qu
YyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYwotLS0gYS9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0yNzUsMTIgKzI3NSwx
NiBAQAogc3RhdGljIGludCBobl9scm9fYWNrY250X3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdT
KTsKIHN0YXRpYyBpbnQgaG5fdHJ1c3RfaGNzdW1fc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FSR1Mp
Owogc3RhdGljIGludCBobl90eF9jaGltbmV5X3NpemVfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FS
R1MpOworc3RhdGljIGludCBobl9yeF9zdGF0X3Vsb25nX3N5c2N0bChTWVNDVExfSEFORExFUl9B
UkdTKTsKK3N0YXRpYyBpbnQgaG5fcnhfc3RhdF91NjRfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FS
R1MpOwogc3RhdGljIGludCBobl9jaGVja19pcGxlbihjb25zdCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQp
Owogc3RhdGljIGludCBobl9jcmVhdGVfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKIHN0
YXRpYyB2b2lkIGhuX2Rlc3Ryb3lfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKTsKIHN0YXRp
YyB2b2lkIGhuX3N0YXJ0X3Rhc2tmdW5jKHZvaWQgKnhzYywgaW50IHBlbmRpbmcpOwogc3RhdGlj
IHZvaWQgaG5fdHhlb2ZfdGFza2Z1bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyk7CiBzdGF0aWMg
aW50IGhuX2VuY2FwKHN0cnVjdCBobl9zb2Z0YyAqLCBzdHJ1Y3QgaG5fdHhkZXNjICosIHN0cnVj
dCBtYnVmICoqKTsKK3N0YXRpYyB2b2lkIGhuX2NyZWF0ZV9yeF9kYXRhKHN0cnVjdCBobl9zb2Z0
YyAqc2MpOworc3RhdGljIHZvaWQgaG5fZGVzdHJveV9yeF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAq
c2MpOwogCiBzdGF0aWMgaW50CiBobl9pZm1lZGlhX3VwZChzdHJ1Y3QgaWZuZXQgKmlmcCBfX3Vu
dXNlZCkKQEAgLTM1MiwxMSArMzU2LDYgQEAKICNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAw
MDQ1CiAJaW50IHRzb19tYXhsZW47CiAjZW5kaWYKLSNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmlu
ZWQoSU5FVDYpCi0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDA5NQotCWludCBscm9lbnRf
Y250OwotI2VuZGlmCi0jZW5kaWYKIAogCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwogCWlm
IChzYyA9PSBOVUxMKSB7CkBAIC0zNjcsMTIgKzM2Niw2IEBACiAJc2MtPmhuX3VuaXQgPSB1bml0
OwogCXNjLT5obl9kZXYgPSBkZXY7CiAJc2MtPmhuX2RpcmVjdF90eF9zaXplID0gaG5fZGlyZWN0
X3R4X3NpemU7Ci0JaWYgKGhuX3RydXN0X2hvc3R0Y3ApCi0JCXNjLT5obl90cnVzdF9oY3N1bSB8
PSBITl9UUlVTVF9IQ1NVTV9UQ1A7Ci0JaWYgKGhuX3RydXN0X2hvc3R1ZHApCi0JCXNjLT5obl90
cnVzdF9oY3N1bSB8PSBITl9UUlVTVF9IQ1NVTV9VRFA7Ci0JaWYgKGhuX3RydXN0X2hvc3RpcCkK
LQkJc2MtPmhuX3RydXN0X2hjc3VtIHw9IEhOX1RSVVNUX0hDU1VNX0lQOwogCiAJaWYgKGhuX3R4
X3Rhc2txID09IE5VTEwpIHsKIAkJc2MtPmhuX3R4X3Rhc2txID0gdGFza3F1ZXVlX2NyZWF0ZV9m
YXN0KCJobl90eCIsIE1fV0FJVE9LLApAQCAtMzk2LDYgKzM4OSw4IEBACiAJaWZwID0gc2MtPmhu
X2lmcCA9IGlmX2FsbG9jKElGVF9FVEhFUik7CiAJaWZwLT5pZl9zb2Z0YyA9IHNjOwogCisJaG5f
Y3JlYXRlX3J4X2RhdGEoc2MpOworCiAJaWZfaW5pdG5hbWUoaWZwLCBkZXZpY2VfZ2V0X25hbWUo
ZGV2KSwgZGV2aWNlX2dldF91bml0KGRldikpOwogCWlmcC0+aWZfZHVuaXQgPSB1bml0OwogCWlm
cC0+aWZfZG5hbWUgPSBORVRWU0NfREVWTkFNRTsKQEAgLTQ0MSwyMiArNDM2LDYgQEAKIAkJc2Mt
PmhuX2NhcnJpZXIgPSAxOwogCX0KIAotI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVU
NikKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDk1Ci0JbHJvZW50X2NudCA9IGhuX2xy
b19lbnRyeV9jb3VudDsKLQlpZiAobHJvZW50X2NudCA8IFRDUF9MUk9fRU5UUklFUykKLQkJbHJv
ZW50X2NudCA9IFRDUF9MUk9fRU5UUklFUzsKLQl0Y3BfbHJvX2luaXRfYXJncygmc2MtPmhuX2xy
bywgaWZwLCBscm9lbnRfY250LCAwKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkxSTzogZW50cnkg
Y291bnQgJWRcbiIsIGxyb2VudF9jbnQpOwotI2Vsc2UKLQl0Y3BfbHJvX2luaXQoJnNjLT5obl9s
cm8pOwotCS8qIERyaXZlciBwcml2YXRlIExSTyBzZXR0aW5ncyAqLwotCXNjLT5obl9scm8uaWZw
ID0gaWZwOwotI2VuZGlmCi0Jc2MtPmhuX2xyby5scm9fbGVuZ3RoX2xpbSA9IEhOX0xST19MRU5M
SU1fREVGOwotCXNjLT5obl9scm8ubHJvX2Fja2NudF9saW0gPSBITl9MUk9fQUNLQ05UX0RFRjsK
LSNlbmRpZgkvKiBJTkVUIHx8IElORVQ2ICovCi0KICNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAx
MTAwMDQ1CiAJdHNvX21heGxlbiA9IGhuX3Rzb19tYXhsZW47CiAJaWYgKHRzb19tYXhsZW4gPD0g
MCB8fCB0c29fbWF4bGVuID4gSVBfTUFYUEFDS0VUKQpAQCAtNDkxLDQ0ICs0NzAsNiBAQAogCWN0
eCA9IGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpOwogCWNoaWxkID0gU1lTQ1RMX0NISUxEUkVO
KGRldmljZV9nZXRfc3lzY3RsX3RyZWUoZGV2KSk7CiAKLQlTWVNDVExfQUREX1U2NChjdHgsIGNo
aWxkLCBPSURfQVVUTywgImxyb19xdWV1ZWQiLAotCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX2xy
by5scm9fcXVldWVkLCAwLCAiTFJPIHF1ZXVlZCIpOwotCVNZU0NUTF9BRERfVTY0KGN0eCwgY2hp
bGQsIE9JRF9BVVRPLCAibHJvX2ZsdXNoZWQiLAotCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX2xy
by5scm9fZmx1c2hlZCwgMCwgIkxSTyBmbHVzaGVkIik7Ci0JU1lTQ1RMX0FERF9VTE9ORyhjdHgs
IGNoaWxkLCBPSURfQVVUTywgImxyb190cmllZCIsCi0JICAgIENUTEZMQUdfUlcsICZzYy0+aG5f
bHJvX3RyaWVkLCAiIyBvZiBMUk8gdHJpZXMiKTsKLQlTWVNDVExfQUREX1BST0MoY3R4LCBjaGls
ZCwgT0lEX0FVVE8sICJscm9fbGVuZ3RoX2xpbSIsCi0JICAgIENUTFRZUEVfVUlOVCB8IENUTEZM
QUdfUlcsIHNjLCAwLCBobl9scm9fbGVubGltX3N5c2N0bCwgIklVIiwKLQkgICAgIk1heCAjIG9m
IGRhdGEgYnl0ZXMgdG8gYmUgYWdncmVnYXRlZCBieSBMUk8iKTsKLQlTWVNDVExfQUREX1BST0Mo
Y3R4LCBjaGlsZCwgT0lEX0FVVE8sICJscm9fYWNrY250X2xpbSIsCi0JICAgIENUTFRZUEVfSU5U
IHwgQ1RMRkxBR19SVywgc2MsIDAsIGhuX2xyb19hY2tjbnRfc3lzY3RsLCAiSSIsCi0JICAgICJN
YXggIyBvZiBBQ0tzIHRvIGJlIGFnZ3JlZ2F0ZWQgYnkgTFJPIik7Ci0JU1lTQ1RMX0FERF9QUk9D
KGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHJ1c3RfaG9zdHRjcCIsCi0JICAgIENUTFRZUEVfSU5U
IHwgQ1RMRkxBR19SVywgc2MsIEhOX1RSVVNUX0hDU1VNX1RDUCwKLQkgICAgaG5fdHJ1c3RfaGNz
dW1fc3lzY3RsLCAiSSIsCi0JICAgICJUcnVzdCB0Y3Agc2VnZW1lbnQgdmVyaWZpY2F0aW9uIG9u
IGhvc3Qgc2lkZSwgIgotCSAgICAid2hlbiBjc3VtIGluZm8gaXMgbWlzc2luZyIpOwotCVNZU0NU
TF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInRydXN0X2hvc3R1ZHAiLAotCSAgICBD
VExUWVBFX0lOVCB8IENUTEZMQUdfUlcsIHNjLCBITl9UUlVTVF9IQ1NVTV9VRFAsCi0JICAgIGhu
X3RydXN0X2hjc3VtX3N5c2N0bCwgIkkiLAotCSAgICAiVHJ1c3QgdWRwIGRhdGFncmFtIHZlcmlm
aWNhdGlvbiBvbiBob3N0IHNpZGUsICIKLQkgICAgIndoZW4gY3N1bSBpbmZvIGlzIG1pc3Npbmci
KTsKLQlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0cnVzdF9ob3N0aXAi
LAotCSAgICBDVExUWVBFX0lOVCB8IENUTEZMQUdfUlcsIHNjLCBITl9UUlVTVF9IQ1NVTV9JUCwK
LQkgICAgaG5fdHJ1c3RfaGNzdW1fc3lzY3RsLCAiSSIsCi0JICAgICJUcnVzdCBpcCBwYWNrZXQg
dmVyaWZpY2F0aW9uIG9uIGhvc3Qgc2lkZSwgIgotCSAgICAid2hlbiBjc3VtIGluZm8gaXMgbWlz
c2luZyIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJjc3VtX2lw
IiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9jc3VtX2lwLCAiUlhDU1VNIElQIik7Ci0JU1lT
Q1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgImNzdW1fdGNwIiwKLQkgICAgQ1RM
RkxBR19SVywgJnNjLT5obl9jc3VtX3RjcCwgIlJYQ1NVTSBUQ1AiKTsKLQlTWVNDVExfQUREX1VM
T05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV91ZHAiLAotCSAgICBDVExGTEFHX1JXLCAm
c2MtPmhuX2NzdW1fdWRwLCAiUlhDU1VNIFVEUCIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBj
aGlsZCwgT0lEX0FVVE8sICJjc3VtX3RydXN0ZWQiLAotCSAgICBDVExGTEFHX1JXLCAmc2MtPmhu
X2NzdW1fdHJ1c3RlZCwKLQkgICAgIiMgb2YgcGFja2V0cyB0aGF0IHdlIHRydXN0IGhvc3QncyBj
c3VtIHZlcmlmaWNhdGlvbiIpOwotCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FV
VE8sICJzbWFsbF9wa3RzIiwKLQkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9zbWFsbF9wa3RzLCAi
IyBvZiBzbWFsbCBwYWNrZXRzIHJlY2VpdmVkIik7CiAJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNo
aWxkLCBPSURfQVVUTywgIm5vX3R4ZGVzY3MiLAogCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX25v
X3R4ZGVzY3MsICIjIG9mIHRpbWVzIHNob3J0IG9mIFRYIGRlc2NzIik7CiAJU1lTQ1RMX0FERF9V
TE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInNlbmRfZmFpbGVkIiwKQEAgLTU5Niw5ICs1Mzcs
NyBAQAogCQl0YXNrcXVldWVfZnJlZShzYy0+aG5fdHhfdGFza3EpOwogCiAJaWZtZWRpYV9yZW1v
dmVhbGwoJnNjLT5obl9tZWRpYSk7Ci0jaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2
KQotCXRjcF9scm9fZnJlZSgmc2MtPmhuX2xybyk7Ci0jZW5kaWYKKwlobl9kZXN0cm95X3J4X2Rh
dGEoc2MpOwogCWhuX2Rlc3Ryb3lfdHhfcmluZyhzYyk7CiAKIAlyZXR1cm4gKDApOwpAQCAtNzQ2
LDcgKzY4NSw4IEBACiB7CiAJc3RydWN0IGhuX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMo
ZGV2aWNlX2N0eC0+ZGV2aWNlKTsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYp
Ci0Jc3RydWN0IGxyb19jdHJsICpscm8gPSAmc2MtPmhuX2xybzsKKwlzdHJ1Y3QgaG5fcnhfcmlu
ZyAqcnhyID0gJnNjLT5obl9yeF9yaW5nWzBdOyAvKiBUT0RPOiB2UlNTICovCisJc3RydWN0IGxy
b19jdHJsICpscm8gPSAmcnhyLT5obl9scm87CiAJc3RydWN0IGxyb19lbnRyeSAqcXVldWVkOwog
CiAJd2hpbGUgKChxdWV1ZWQgPSBTTElTVF9GSVJTVCgmbHJvLT5scm9fYWN0aXZlKSkgIT0gTlVM
TCkgewpAQCAtMTE2MiwxMCArMTEwMiwxMCBAQAogbmV0dnNjX3JlY3Yoc3RydWN0IGh2X2Rldmlj
ZSAqZGV2aWNlX2N0eCwgbmV0dnNjX3BhY2tldCAqcGFja2V0LAogICAgIHJuZGlzX3RjcF9pcF9j
c3VtX2luZm8gKmNzdW1faW5mbykKIHsKLQlobl9zb2Z0Y190ICpzYyA9IChobl9zb2Z0Y190ICop
ZGV2aWNlX2dldF9zb2Z0YyhkZXZpY2VfY3R4LT5kZXZpY2UpOworCXN0cnVjdCBobl9zb2Z0YyAq
c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldmljZV9jdHgtPmRldmljZSk7CisJc3RydWN0IGhuX3J4
X3JpbmcgKnJ4ciA9ICZzYy0+aG5fcnhfcmluZ1swXTsgLyogVE9ETzogdlJTUyAqLwogCXN0cnVj
dCBtYnVmICptX25ldzsKIAlzdHJ1Y3QgaWZuZXQgKmlmcDsKLQlkZXZpY2VfdCBkZXYgPSBkZXZp
Y2VfY3R4LT5kZXZpY2U7CiAJaW50IHNpemUsIGRvX2xybyA9IDAsIGRvX2NzdW0gPSAxOwogCiAJ
aWYgKHNjID09IE5VTEwpIHsKQEAgLTExOTAsNyArMTEzMCw3IEBACiAJCW1lbWNweShtdG9kKG1f
bmV3LCB2b2lkICopLCBwYWNrZXQtPmRhdGEsCiAJCSAgICBwYWNrZXQtPnRvdF9kYXRhX2J1Zl9s
ZW4pOwogCQltX25ldy0+bV9wa3RoZHIubGVuID0gbV9uZXctPm1fbGVuID0gcGFja2V0LT50b3Rf
ZGF0YV9idWZfbGVuOwotCQlzYy0+aG5fc21hbGxfcGt0cysrOworCQlyeHItPmhuX3NtYWxsX3Br
dHMrKzsKIAl9IGVsc2UgewogCQkvKgogCQkgKiBHZXQgYW4gbWJ1ZiB3aXRoIGEgY2x1c3Rlci4g
IEZvciBwYWNrZXRzIDJLIG9yIGxlc3MsCkBAIC0xMjA2LDcgKzExNDYsNyBAQAogCiAJCW1fbmV3
ID0gbV9nZXRqY2woTV9OT1dBSVQsIE1UX0RBVEEsIE1fUEtUSERSLCBzaXplKTsKIAkJaWYgKG1f
bmV3ID09IE5VTEwpIHsKLQkJCWRldmljZV9wcmludGYoZGV2LCAiYWxsb2MgbWJ1ZiBmYWlsZWQu
XG4iKTsKKwkJCWlmX3ByaW50ZihpZnAsICJhbGxvYyBtYnVmIGZhaWxlZC5cbiIpOwogCQkJcmV0
dXJuICgwKTsKIAkJfQogCkBAIC0xMjIzLDcgKzExNjMsNyBAQAogCQlpZiAoY3N1bV9pbmZvLT5y
ZWNlaXZlLmlwX2NzdW1fc3VjY2VlZGVkICYmIGRvX2NzdW0pIHsKIAkJCW1fbmV3LT5tX3BrdGhk
ci5jc3VtX2ZsYWdzIHw9CiAJCQkgICAgKENTVU1fSVBfQ0hFQ0tFRCB8IENTVU1fSVBfVkFMSUQp
OwotCQkJc2MtPmhuX2NzdW1faXArKzsKKwkJCXJ4ci0+aG5fY3N1bV9pcCsrOwogCQl9CiAKIAkJ
LyogVENQL1VEUCBjc3VtIG9mZmxvYWQgKi8KQEAgLTEyMzMsOSArMTE3Myw5IEBACiAJCQkgICAg
KENTVU1fREFUQV9WQUxJRCB8IENTVU1fUFNFVURPX0hEUik7CiAJCQltX25ldy0+bV9wa3RoZHIu
Y3N1bV9kYXRhID0gMHhmZmZmOwogCQkJaWYgKGNzdW1faW5mby0+cmVjZWl2ZS50Y3BfY3N1bV9z
dWNjZWVkZWQpCi0JCQkJc2MtPmhuX2NzdW1fdGNwKys7CisJCQkJcnhyLT5obl9jc3VtX3RjcCsr
OwogCQkJZWxzZQotCQkJCXNjLT5obl9jc3VtX3VkcCsrOworCQkJCXJ4ci0+aG5fY3N1bV91ZHAr
KzsKIAkJfQogCiAJCWlmIChjc3VtX2luZm8tPnJlY2VpdmUuaXBfY3N1bV9zdWNjZWVkZWQgJiYK
QEAgLTEyNjcsOCArMTIwNyw5IEBACiAJCQlwciA9IGhuX2NoZWNrX2lwbGVuKG1fbmV3LCBob2Zm
KTsKIAkJCWlmIChwciA9PSBJUFBST1RPX1RDUCkgewogCQkJCWlmIChkb19jc3VtICYmCi0JCQkJ
ICAgIChzYy0+aG5fdHJ1c3RfaGNzdW0gJiBITl9UUlVTVF9IQ1NVTV9UQ1ApKSB7Ci0JCQkJCXNj
LT5obl9jc3VtX3RydXN0ZWQrKzsKKwkJCQkgICAgKHJ4ci0+aG5fdHJ1c3RfaGNzdW0gJgorCQkJ
CSAgICAgSE5fVFJVU1RfSENTVU1fVENQKSkgeworCQkJCQlyeHItPmhuX2NzdW1fdHJ1c3RlZCsr
OwogCQkJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJCQkgICAoQ1NVTV9JUF9D
SEVDS0VEIHwgQ1NVTV9JUF9WQUxJRCB8CiAJCQkJCSAgICBDU1VNX0RBVEFfVkFMSUQgfCBDU1VN
X1BTRVVET19IRFIpOwpAQCAtMTI3OCwxNiArMTIxOSwxNyBAQAogCQkJCWRvX2xybyA9IDE7CiAJ
CQl9IGVsc2UgaWYgKHByID09IElQUFJPVE9fVURQKSB7CiAJCQkJaWYgKGRvX2NzdW0gJiYKLQkJ
CQkgICAgKHNjLT5obl90cnVzdF9oY3N1bSAmIEhOX1RSVVNUX0hDU1VNX1VEUCkpIHsKLQkJCQkJ
c2MtPmhuX2NzdW1fdHJ1c3RlZCsrOworCQkJCSAgICAocnhyLT5obl90cnVzdF9oY3N1bSAmCisJ
CQkJICAgICBITl9UUlVTVF9IQ1NVTV9VRFApKSB7CisJCQkJCXJ4ci0+aG5fY3N1bV90cnVzdGVk
Kys7CiAJCQkJCW1fbmV3LT5tX3BrdGhkci5jc3VtX2ZsYWdzIHw9CiAJCQkJCSAgIChDU1VNX0lQ
X0NIRUNLRUQgfCBDU1VNX0lQX1ZBTElEIHwKIAkJCQkJICAgIENTVU1fREFUQV9WQUxJRCB8IENT
VU1fUFNFVURPX0hEUik7CiAJCQkJCW1fbmV3LT5tX3BrdGhkci5jc3VtX2RhdGEgPSAweGZmZmY7
CiAJCQkJfQogCQkJfSBlbHNlIGlmIChwciAhPSBJUFBST1RPX0RPTkUgJiYgZG9fY3N1bSAmJgot
CQkJICAgIChzYy0+aG5fdHJ1c3RfaGNzdW0gJiBITl9UUlVTVF9IQ1NVTV9JUCkpIHsKLQkJCQlz
Yy0+aG5fY3N1bV90cnVzdGVkKys7CisJCQkgICAgKHJ4ci0+aG5fdHJ1c3RfaGNzdW0gJiBITl9U
UlVTVF9IQ1NVTV9JUCkpIHsKKwkJCQlyeHItPmhuX2NzdW1fdHJ1c3RlZCsrOwogCQkJCW1fbmV3
LT5tX3BrdGhkci5jc3VtX2ZsYWdzIHw9CiAJCQkJICAgIChDU1VNX0lQX0NIRUNLRUQgfCBDU1VN
X0lQX1ZBTElEKTsKIAkJCX0KQEAgLTEzMDksMTAgKzEyNTEsMTAgQEAKIAogCWlmICgoaWZwLT5p
Zl9jYXBlbmFibGUgJiBJRkNBUF9MUk8pICYmIGRvX2xybykgewogI2lmIGRlZmluZWQoSU5FVCkg
fHwgZGVmaW5lZChJTkVUNikKLQkJc3RydWN0IGxyb19jdHJsICpscm8gPSAmc2MtPmhuX2xybzsK
KwkJc3RydWN0IGxyb19jdHJsICpscm8gPSAmcnhyLT5obl9scm87CiAKIAkJaWYgKGxyby0+bHJv
X2NudCkgewotCQkJc2MtPmhuX2xyb190cmllZCsrOworCQkJcnhyLT5obl9scm9fdHJpZWQrKzsK
IAkJCWlmICh0Y3BfbHJvX3J4KGxybywgbV9uZXcsIDApID09IDApIHsKIAkJCQkvKiBET05FISAq
LwogCQkJCXJldHVybiAwOwpAQCAtMTM5Miw4ICsxMzM0LDE3IEBACiAJCSAqIE1ha2Ugc3VyZSB0
aGF0IExSTyBhZ2dyZWdhdGlvbiBsZW5ndGggbGltaXQgaXMgc3RpbGwKIAkJICogdmFsaWQsIGFm
dGVyIHRoZSBNVFUgY2hhbmdlLgogCQkgKi8KLQkJaWYgKHNjLT5obl9scm8ubHJvX2xlbmd0aF9s
aW0gPCBITl9MUk9fTEVOTElNX01JTihpZnApKQotCQkJc2MtPmhuX2xyby5scm9fbGVuZ3RoX2xp
bSA9IEhOX0xST19MRU5MSU1fTUlOKGlmcCk7CisJCU5WX0xPQ0soc2MpOworCQlpZiAoc2MtPmhu
X3J4X3JpbmdbMF0uaG5fbHJvLmxyb19sZW5ndGhfbGltIDwKKwkJICAgIEhOX0xST19MRU5MSU1f
TUlOKGlmcCkpIHsKKwkJCWludCBpOworCisJCQlmb3IgKGkgPSAwOyBpIDwgc2MtPmhuX3J4X3Jp
bmdfY250OyArK2kpIHsKKwkJCQlzYy0+aG5fcnhfcmluZ1tpXS5obl9scm8ubHJvX2xlbmd0aF9s
aW0gPQorCQkJCSAgICBITl9MUk9fTEVOTElNX01JTihpZnApOworCQkJfQorCQl9CisJCU5WX1VO
TE9DSyhzYyk7CiAKIAkJZG8gewogCQkJTlZfTE9DSyhzYyk7CkBAIC0xNzA1LDMyICsxNjU2LDM1
IEBACiB7CiAJc3RydWN0IGhuX3NvZnRjICpzYyA9IGFyZzE7CiAJdW5zaWduZWQgaW50IGxlbmxp
bTsKLQlpbnQgZXJyb3I7CisJaW50IGVycm9yLCBpOwogCi0JbGVubGltID0gc2MtPmhuX2xyby5s
cm9fbGVuZ3RoX2xpbTsKKwlsZW5saW0gPSBzYy0+aG5fcnhfcmluZ1swXS5obl9scm8ubHJvX2xl
bmd0aF9saW07CiAJZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmbGVubGltLCAwLCBy
ZXEpOwogCWlmIChlcnJvciB8fCByZXEtPm5ld3B0ciA9PSBOVUxMKQogCQlyZXR1cm4gZXJyb3I7
CiAKIAlpZiAobGVubGltIDwgSE5fTFJPX0xFTkxJTV9NSU4oc2MtPmhuX2lmcCkgfHwKIAkgICAg
bGVubGltID4gVENQX0xST19MRU5HVEhfTUFYKQogCQlyZXR1cm4gRUlOVkFMOwogCi0Jc2MtPmhu
X2xyby5scm9fbGVuZ3RoX2xpbSA9IGxlbmxpbTsKKwlOVl9MT0NLKHNjKTsKKwlmb3IgKGkgPSAw
OyBpIDwgc2MtPmhuX3J4X3JpbmdfY250OyArK2kpCisJCXNjLT5obl9yeF9yaW5nW2ldLmhuX2xy
by5scm9fbGVuZ3RoX2xpbSA9IGxlbmxpbTsKKwlOVl9VTkxPQ0soc2MpOwogCXJldHVybiAwOwog
fQogCiBzdGF0aWMgaW50CiBobl9scm9fYWNrY250X3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdT
KQogewogCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBhcmcxOwotCWludCBhY2tjbnQsIGVycm9yOwor
CWludCBhY2tjbnQsIGVycm9yLCBpOwogCiAJLyoKIAkgKiBscm9fYWNrY250X2xpbSBpcyBhcHBl
bmQgY291bnQgbGltaXQsCiAJICogKzEgdG8gdHVybiBpdCBpbnRvIGFnZ3JlZ2F0aW9uIGxpbWl0
LgogCSAqLwotCWFja2NudCA9IHNjLT5obl9scm8ubHJvX2Fja2NudF9saW0gKyAxOworCWFja2Nu
dCA9IHNjLT5obl9yeF9yaW5nWzBdLmhuX2xyby5scm9fYWNrY250X2xpbSArIDE7CiAJZXJyb3Ig
PSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmYWNrY250LCAwLCByZXEpOwogCWlmIChlcnJvciB8
fCByZXEtPm5ld3B0ciA9PSBOVUxMKQogCQlyZXR1cm4gZXJyb3I7CkBAIC0xNzQyLDMwICsxNjk2
LDM4IEBACiAJICogQ29udmVydCBhZ2dyZWdhdGlvbiBsaW1pdCBiYWNrIHRvIGFwcGVuZAogCSAq
IGNvdW50IGxpbWl0LgogCSAqLwotCXNjLT5obl9scm8ubHJvX2Fja2NudF9saW0gPSBhY2tjbnQg
LSAxOworCS0tYWNrY250OworCU5WX0xPQ0soc2MpOworCWZvciAoaSA9IDA7IGkgPCBzYy0+aG5f
cnhfcmluZ19jbnQ7ICsraSkKKwkJc2MtPmhuX3J4X3JpbmdbaV0uaG5fbHJvLmxyb19hY2tjbnRf
bGltID0gYWNrY250OworCU5WX1VOTE9DSyhzYyk7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBp
bnQKIGhuX3RydXN0X2hjc3VtX3N5c2N0bChTWVNDVExfSEFORExFUl9BUkdTKQogewogCXN0cnVj
dCBobl9zb2Z0YyAqc2MgPSBhcmcxOwogCWludCBoY3N1bSA9IGFyZzI7Ci0JaW50IG9uLCBlcnJv
cjsKKwlpbnQgb24sIGVycm9yLCBpOwogCiAJb24gPSAwOwotCWlmIChzYy0+aG5fdHJ1c3RfaGNz
dW0gJiBoY3N1bSkKKwlpZiAoc2MtPmhuX3J4X3JpbmdbMF0uaG5fdHJ1c3RfaGNzdW0gJiBoY3N1
bSkKIAkJb24gPSAxOwogCiAJZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmb24sIDAs
IHJlcSk7CiAJaWYgKGVycm9yIHx8IHJlcS0+bmV3cHRyID09IE5VTEwpCiAJCXJldHVybiBlcnJv
cjsKIAogCU5WX0xPQ0soc2MpOwotCWlmIChvbikKLQkJc2MtPmhuX3RydXN0X2hjc3VtIHw9IGhj
c3VtOwotCWVsc2UKLQkJc2MtPmhuX3RydXN0X2hjc3VtICY9IH5oY3N1bTsKKwlmb3IgKGkgPSAw
OyBpIDwgc2MtPmhuX3J4X3JpbmdfY250OyArK2kpIHsKKwkJc3RydWN0IGhuX3J4X3JpbmcgKnJ4
ciA9ICZzYy0+aG5fcnhfcmluZ1tpXTsKKworCQlpZiAob24pCisJCQlyeHItPmhuX3RydXN0X2hj
c3VtIHw9IGhjc3VtOworCQllbHNlCisJCQlyeHItPmhuX3RydXN0X2hjc3VtICY9IH5oY3N1bTsK
Kwl9CiAJTlZfVU5MT0NLKHNjKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE3OTAsNiArMTc1Miw1OCBA
QAogfQogCiBzdGF0aWMgaW50Citobl9yeF9zdGF0X3Vsb25nX3N5c2N0bChTWVNDVExfSEFORExF
Ul9BUkdTKQoreworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBhcmcxOworCWludCBvZnMgPSBhcmcy
LCBpLCBlcnJvcjsKKwlzdHJ1Y3QgaG5fcnhfcmluZyAqcnhyOworCXVfbG9uZyBzdGF0OworCisJ
c3RhdCA9IDA7CisJZm9yIChpID0gMDsgaSA8IHNjLT5obl9yeF9yaW5nX2NudDsgKytpKSB7CisJ
CXJ4ciA9ICZzYy0+aG5fcnhfcmluZ1tpXTsKKwkJc3RhdCArPSAqKCh1X2xvbmcgKikoKHVpbnQ4
X3QgKilyeHIgKyBvZnMpKTsKKwl9CisKKwllcnJvciA9IHN5c2N0bF9oYW5kbGVfbG9uZyhvaWRw
LCAmc3RhdCwgMCwgcmVxKTsKKwlpZiAoZXJyb3IgfHwgcmVxLT5uZXdwdHIgPT0gTlVMTCkKKwkJ
cmV0dXJuIGVycm9yOworCisJLyogWmVybyBvdXQgdGhpcyBzdGF0LiAqLworCWZvciAoaSA9IDA7
IGkgPCBzYy0+aG5fcnhfcmluZ19jbnQ7ICsraSkgeworCQlyeHIgPSAmc2MtPmhuX3J4X3Jpbmdb
aV07CisJCSooKHVfbG9uZyAqKSgodWludDhfdCAqKXJ4ciArIG9mcykpID0gMDsKKwl9CisJcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2huX3J4X3N0YXRfdTY0X3N5c2N0bChTWVNDVExfSEFO
RExFUl9BUkdTKQoreworCXN0cnVjdCBobl9zb2Z0YyAqc2MgPSBhcmcxOworCWludCBvZnMgPSBh
cmcyLCBpLCBlcnJvcjsKKwlzdHJ1Y3QgaG5fcnhfcmluZyAqcnhyOworCXVpbnQ2NF90IHN0YXQ7
CisKKwlzdGF0ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgc2MtPmhuX3J4X3JpbmdfY250OyArK2kp
IHsKKwkJcnhyID0gJnNjLT5obl9yeF9yaW5nW2ldOworCQlzdGF0ICs9ICooKHVpbnQ2NF90ICop
KCh1aW50OF90ICopcnhyICsgb2ZzKSk7CisJfQorCisJZXJyb3IgPSBzeXNjdGxfaGFuZGxlXzY0
KG9pZHAsICZzdGF0LCAwLCByZXEpOworCWlmIChlcnJvciB8fCByZXEtPm5ld3B0ciA9PSBOVUxM
KQorCQlyZXR1cm4gZXJyb3I7CisKKwkvKiBaZXJvIG91dCB0aGlzIHN0YXQuICovCisJZm9yIChp
ID0gMDsgaSA8IHNjLT5obl9yeF9yaW5nX2NudDsgKytpKSB7CisJCXJ4ciA9ICZzYy0+aG5fcnhf
cmluZ1tpXTsKKwkJKigodWludDY0X3QgKikoKHVpbnQ4X3QgKilyeHIgKyBvZnMpKSA9IDA7CisJ
fQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CiBobl9jaGVja19pcGxlbihjb25zdCBzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGhvZmYpCiB7CiAJY29uc3Qgc3RydWN0IGlwICppcDsKQEAgLTE4NzYs
NiArMTg5MCwxMzYgQEAKIAkqcGFkZHIgPSBzZWdzLT5kc19hZGRyOwogfQogCitzdGF0aWMgdm9p
ZAoraG5fY3JlYXRlX3J4X2RhdGEoc3RydWN0IGhuX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3Qgc3lz
Y3RsX29pZF9saXN0ICpjaGlsZDsKKwlzdHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHg7CisJZGV2
aWNlX3QgZGV2ID0gc2MtPmhuX2RldjsKKyNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDA5NQorCWludCBscm9lbnRfY250Owor
I2VuZGlmCisJaW50IGk7CisjZW5kaWYKKworCXNjLT5obl9yeF9yaW5nX2NudCA9IDE7IC8qIFRP
RE86IHZSU1MgKi8KKwlzYy0+aG5fcnhfcmluZyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGhuX3J4
X3JpbmcpICogc2MtPmhuX3J4X3JpbmdfY250LAorCSAgICBNX05FVFZTQywgTV9XQUlUT0sgfCBN
X1pFUk8pOworCisjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQorI2lmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDExMDAwOTUKKwlscm9lbnRfY250ID0gaG5fbHJvX2VudHJ5X2NvdW50
OworCWlmIChscm9lbnRfY250IDwgVENQX0xST19FTlRSSUVTKQorCQlscm9lbnRfY250ID0gVENQ
X0xST19FTlRSSUVTOworCWRldmljZV9wcmludGYoZGV2LCAiTFJPOiBlbnRyeSBjb3VudCAlZFxu
IiwgbHJvZW50X2NudCk7CisjZW5kaWYKKyNlbmRpZgkvKiBJTkVUIHx8IElORVQ2ICovCisKKwlm
b3IgKGkgPSAwOyBpIDwgc2MtPmhuX3J4X3JpbmdfY250OyArK2kpIHsKKwkJc3RydWN0IGhuX3J4
X3JpbmcgKnJ4ciA9ICZzYy0+aG5fcnhfcmluZ1tpXTsKKworCQlpZiAoaG5fdHJ1c3RfaG9zdHRj
cCkKKwkJCXJ4ci0+aG5fdHJ1c3RfaGNzdW0gfD0gSE5fVFJVU1RfSENTVU1fVENQOworCQlpZiAo
aG5fdHJ1c3RfaG9zdHVkcCkKKwkJCXJ4ci0+aG5fdHJ1c3RfaGNzdW0gfD0gSE5fVFJVU1RfSENT
VU1fVURQOworCQlpZiAoaG5fdHJ1c3RfaG9zdGlwKQorCQkJcnhyLT5obl90cnVzdF9oY3N1bSB8
PSBITl9UUlVTVF9IQ1NVTV9JUDsKKworCQkvKgorCQkgKiBJbml0aWFsaXplIExSTy4KKwkJICov
CisjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQorI2lmIF9fRnJlZUJTRF92ZXJz
aW9uID49IDExMDAwOTUKKwkJdGNwX2xyb19pbml0X2FyZ3MoJnJ4ci0+aG5fbHJvLCBzYy0+aG5f
aWZwLCBscm9lbnRfY250LCAwKTsKKyNlbHNlCisJCXRjcF9scm9faW5pdCgmcnhyLT5obl9scm8p
OworCQlyeHItPmhuX2xyby5pZnAgPSBzYy0+aG5faWZwOworI2VuZGlmCisJCXJ4ci0+aG5fbHJv
Lmxyb19sZW5ndGhfbGltID0gSE5fTFJPX0xFTkxJTV9ERUY7CisJCXJ4ci0+aG5fbHJvLmxyb19h
Y2tjbnRfbGltID0gSE5fTFJPX0FDS0NOVF9ERUY7CisjZW5kaWYJLyogSU5FVCB8fCBJTkVUNiAq
LworCX0KKworCWN0eCA9IGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpOworCWNoaWxkID0gU1lT
Q1RMX0NISUxEUkVOKGRldmljZV9nZXRfc3lzY3RsX3RyZWUoZGV2KSk7CisKKwlTWVNDVExfQURE
X1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJscm9fcXVldWVkIiwKKwkgICAgQ1RMVFlQRV9V
NjQgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fcnhfcmluZywg
aG5fbHJvLmxyb19xdWV1ZWQpLAorCSAgICBobl9yeF9zdGF0X3U2NF9zeXNjdGwsICJMVSIsICJM
Uk8gcXVldWVkIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAibHJv
X2ZsdXNoZWQiLAorCSAgICBDVExUWVBFX1U2NCB8IENUTEZMQUdfUlcsIHNjLAorCSAgICBfX29m
ZnNldG9mKHN0cnVjdCBobl9yeF9yaW5nLCBobl9scm8ubHJvX2ZsdXNoZWQpLAorCSAgICBobl9y
eF9zdGF0X3U2NF9zeXNjdGwsICJMVSIsICJMUk8gZmx1c2hlZCIpOworCVNZU0NUTF9BRERfUFJP
QyhjdHgsIGNoaWxkLCBPSURfQVVUTywgImxyb190cmllZCIsCisJICAgIENUTFRZUEVfVUxPTkcg
fCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fcnhfcmluZywgaG5f
bHJvX3RyaWVkKSwKKwkgICAgaG5fcnhfc3RhdF91bG9uZ19zeXNjdGwsICJMVSIsICIjIG9mIExS
TyB0cmllcyIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVUTywgImxyb19s
ZW5ndGhfbGltIiwKKwkgICAgQ1RMVFlQRV9VSU5UIHwgQ1RMRkxBR19SVywgc2MsIDAsIGhuX2xy
b19sZW5saW1fc3lzY3RsLCAiSVUiLAorCSAgICAiTWF4ICMgb2YgZGF0YSBieXRlcyB0byBiZSBh
Z2dyZWdhdGVkIGJ5IExSTyIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVU
TywgImxyb19hY2tjbnRfbGltIiwKKwkgICAgQ1RMVFlQRV9JTlQgfCBDVExGTEFHX1JXLCBzYywg
MCwgaG5fbHJvX2Fja2NudF9zeXNjdGwsICJJIiwKKwkgICAgIk1heCAjIG9mIEFDS3MgdG8gYmUg
YWdncmVnYXRlZCBieSBMUk8iKTsKKwlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FV
VE8sICJ0cnVzdF9ob3N0dGNwIiwKKwkgICAgQ1RMVFlQRV9JTlQgfCBDVExGTEFHX1JXLCBzYywg
SE5fVFJVU1RfSENTVU1fVENQLAorCSAgICBobl90cnVzdF9oY3N1bV9zeXNjdGwsICJJIiwKKwkg
ICAgIlRydXN0IHRjcCBzZWdlbWVudCB2ZXJpZmljYXRpb24gb24gaG9zdCBzaWRlLCAiCisJICAg
ICJ3aGVuIGNzdW0gaW5mbyBpcyBtaXNzaW5nIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hp
bGQsIE9JRF9BVVRPLCAidHJ1c3RfaG9zdHVkcCIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RMRkxB
R19SVywgc2MsIEhOX1RSVVNUX0hDU1VNX1VEUCwKKwkgICAgaG5fdHJ1c3RfaGNzdW1fc3lzY3Rs
LCAiSSIsCisJICAgICJUcnVzdCB1ZHAgZGF0YWdyYW0gdmVyaWZpY2F0aW9uIG9uIGhvc3Qgc2lk
ZSwgIgorCSAgICAid2hlbiBjc3VtIGluZm8gaXMgbWlzc2luZyIpOworCVNZU0NUTF9BRERfUFJP
QyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInRydXN0X2hvc3RpcCIsCisJICAgIENUTFRZUEVfSU5U
IHwgQ1RMRkxBR19SVywgc2MsIEhOX1RSVVNUX0hDU1VNX0lQLAorCSAgICBobl90cnVzdF9oY3N1
bV9zeXNjdGwsICJJIiwKKwkgICAgIlRydXN0IGlwIHBhY2tldCB2ZXJpZmljYXRpb24gb24gaG9z
dCBzaWRlLCAiCisJICAgICJ3aGVuIGNzdW0gaW5mbyBpcyBtaXNzaW5nIik7CisJU1lTQ1RMX0FE
RF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV9pcCIsCisJICAgIENUTFRZUEVfVUxP
TkcgfCBDVExGTEFHX1JXLCBzYywKKwkgICAgX19vZmZzZXRvZihzdHJ1Y3QgaG5fcnhfcmluZywg
aG5fY3N1bV9pcCksCisJICAgIGhuX3J4X3N0YXRfdWxvbmdfc3lzY3RsLCAiTFUiLCAiUlhDU1VN
IElQIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV90Y3Ai
LAorCSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zmc2V0b2Yo
c3RydWN0IGhuX3J4X3JpbmcsIGhuX2NzdW1fdGNwKSwKKwkgICAgaG5fcnhfc3RhdF91bG9uZ19z
eXNjdGwsICJMVSIsICJSWENTVU0gVENQIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgY2hpbGQs
IE9JRF9BVVRPLCAiY3N1bV91ZHAiLAorCSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxBR19SVywg
c2MsCisJICAgIF9fb2Zmc2V0b2Yoc3RydWN0IGhuX3J4X3JpbmcsIGhuX2NzdW1fdWRwKSwKKwkg
ICAgaG5fcnhfc3RhdF91bG9uZ19zeXNjdGwsICJMVSIsICJSWENTVU0gVURQIik7CisJU1lTQ1RM
X0FERF9QUk9DKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV90cnVzdGVkIiwKKwkgICAgQ1RM
VFlQRV9VTE9ORyB8IENUTEZMQUdfUlcsIHNjLAorCSAgICBfX29mZnNldG9mKHN0cnVjdCBobl9y
eF9yaW5nLCBobl9jc3VtX3RydXN0ZWQpLAorCSAgICBobl9yeF9zdGF0X3Vsb25nX3N5c2N0bCwg
IkxVIiwKKwkgICAgIiMgb2YgcGFja2V0cyB0aGF0IHdlIHRydXN0IGhvc3QncyBjc3VtIHZlcmlm
aWNhdGlvbiIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInNtYWxs
X3BrdHMiLAorCSAgICBDVExUWVBFX1VMT05HIHwgQ1RMRkxBR19SVywgc2MsCisJICAgIF9fb2Zm
c2V0b2Yoc3RydWN0IGhuX3J4X3JpbmcsIGhuX3NtYWxsX3BrdHMpLAorCSAgICBobl9yeF9zdGF0
X3Vsb25nX3N5c2N0bCwgIkxVIiwgIiMgb2Ygc21hbGwgcGFja2V0cyByZWNlaXZlZCIpOworfQor
CitzdGF0aWMgdm9pZAoraG5fZGVzdHJveV9yeF9kYXRhKHN0cnVjdCBobl9zb2Z0YyAqc2MpCit7
CisjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQorCWludCBpOworI2VuZGlmCisK
KwlpZiAoc2MtPmhuX3J4X3JpbmdfY250ID09IDApCisJCXJldHVybjsKKworI2lmIGRlZmluZWQo
SU5FVCkgfHwgZGVmaW5lZChJTkVUNikKKwlmb3IgKGkgPSAwOyBpIDwgc2MtPmhuX3J4X3Jpbmdf
Y250OyArK2kpCisJCXRjcF9scm9fZnJlZSgmc2MtPmhuX3J4X3JpbmdbaV0uaG5fbHJvKTsKKyNl
bmRpZgorCWZyZWUoc2MtPmhuX3J4X3JpbmcsIE1fTkVUVlNDKTsKKwlzYy0+aG5fcnhfcmluZyA9
IE5VTEw7CisKKwlzYy0+aG5fcnhfcmluZ19jbnQgPSAwOworfQorCiBzdGF0aWMgaW50CiBobl9j
cmVhdGVfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKQogewpkaWZmIC0tZ2l0IGEvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaCBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9u
ZXRfdnNjLmgKLS0tIGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaAorKysgYi9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCkBAIC05OTMsNiArOTkzLDI0IEBACiBz
dHJ1Y3QgaG5fdHhkZXNjOwogU0xJU1RfSEVBRChobl90eGRlc2NfbGlzdCwgaG5fdHhkZXNjKTsK
IAorc3RydWN0IGhuX3J4X3JpbmcgeworCXN0cnVjdCBscm9fY3RybAlobl9scm87CisKKwkvKiBU
cnVzdCBjc3VtIHZlcmlmaWNhdGlvbiBvbiBob3N0IHNpZGUgKi8KKwlpbnQJCWhuX3RydXN0X2hj
c3VtOwkvKiBITl9UUlVTVF9IQ1NVTV8gKi8KKworCXVfbG9uZwkJaG5fY3N1bV9pcDsKKwl1X2xv
bmcJCWhuX2NzdW1fdGNwOworCXVfbG9uZwkJaG5fY3N1bV91ZHA7CisJdV9sb25nCQlobl9jc3Vt
X3RydXN0ZWQ7CisJdV9sb25nCQlobl9scm9fdHJpZWQ7CisJdV9sb25nCQlobl9zbWFsbF9wa3Rz
OworfSBfX2FsaWduZWQoQ0FDSEVfTElORV9TSVpFKTsKKworI2RlZmluZSBITl9UUlVTVF9IQ1NV
TV9JUAkweDAwMDEKKyNkZWZpbmUgSE5fVFJVU1RfSENTVU1fVENQCTB4MDAwMgorI2RlZmluZSBI
Tl9UUlVTVF9IQ1NVTV9VRFAJMHgwMDA0CisKIC8qCiAgKiBEZXZpY2Utc3BlY2lmaWMgc29mdGMg
c3RydWN0dXJlCiAgKi8KQEAgLTEwMjksMjggKzEwNDcsMTYgQEAKIAlzdHJ1Y3QgdGFzawlobl9z
dGFydF90YXNrOwogCXN0cnVjdCB0YXNrCWhuX3R4ZW9mX3Rhc2s7CiAKLQlzdHJ1Y3QgbHJvX2N0
cmwJaG5fbHJvOwotCi0JLyogVHJ1c3QgY3N1bSB2ZXJpZmljYXRpb24gb24gaG9zdCBzaWRlICov
Ci0JaW50CQlobl90cnVzdF9oY3N1bTsJLyogSE5fVFJVU1RfSENTVU1fICovCisJaW50CQlobl9y
eF9yaW5nX2NudDsKKwlzdHJ1Y3QgaG5fcnhfcmluZyAqaG5fcnhfcmluZzsKIAotCXVfbG9uZwkJ
aG5fY3N1bV9pcDsKLQl1X2xvbmcJCWhuX2NzdW1fdGNwOwotCXVfbG9uZwkJaG5fY3N1bV91ZHA7
Ci0JdV9sb25nCQlobl9jc3VtX3RydXN0ZWQ7Ci0JdV9sb25nCQlobl9scm9fdHJpZWQ7Ci0JdV9s
b25nCQlobl9zbWFsbF9wa3RzOwogCXVfbG9uZwkJaG5fbm9fdHhkZXNjczsKIAl1X2xvbmcJCWhu
X3NlbmRfZmFpbGVkOwogCXVfbG9uZwkJaG5fdHhkbWFfZmFpbGVkOwogCXVfbG9uZwkJaG5fdHhf
Y29sbGFwc2VkOwogCXVfbG9uZwkJaG5fdHhfY2hpbW5leTsKIH0gaG5fc29mdGNfdDsKIAotI2Rl
ZmluZSBITl9UUlVTVF9IQ1NVTV9JUAkweDAwMDEKLSNkZWZpbmUgSE5fVFJVU1RfSENTVU1fVENQ
CTB4MDAwMgotI2RlZmluZSBITl9UUlVTVF9IQ1NVTV9VRFAJMHgwMDA0Ci0KIC8qCiAgKiBFeHRl
cm5zCiAgKi8KCg==


--b1_1e3b8a4e66048739e50f18881b85d7a9--



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