Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Feb 2016 08:38:04 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Request, 434 lines] D5158: hyperv/hn: Factor out hn_encap from hn_start_locked()
Message-ID:  <differential-rev-PHID-DREV-5v4e26c5tdlasty2smqd-req@FreeBSD.org>

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

--b1_8a4cb9012204fb53e8e197a24337dd20
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 a subscriber: freebsd-net-list.

REVISION SUMMARY
  It will be shared w/ upcoming ifnet.if_transmit implementaion.
  
  No functional changes.

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

AFFECTED FILES
  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-net-list

--b1_8a4cb9012204fb53e8e197a24337dd20
Content-Type: text/x-patch; charset=utf-8; name="D5158.12925.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5158.12925.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2Qu
YyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYwotLS0gYS9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0yNTQsNiArMjU0LDcg
QEAKIHN0YXRpYyB2b2lkIGhuX2Rlc3Ryb3lfdHhfcmluZyhzdHJ1Y3QgaG5fc29mdGMgKnNjKTsK
IHN0YXRpYyB2b2lkIGhuX3N0YXJ0X3Rhc2tmdW5jKHZvaWQgKnhzYywgaW50IHBlbmRpbmcpOwog
c3RhdGljIHZvaWQgaG5fdHhlb2ZfdGFza2Z1bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyk7Citz
dGF0aWMgaW50IGhuX2VuY2FwKHN0cnVjdCBobl9zb2Z0YyAqLCBzdHJ1Y3QgaG5fdHhkZXNjICos
IHN0cnVjdCBtYnVmICoqKTsKIAogc3RhdGljIF9faW5saW5lIHZvaWQKIGhuX3NldF9scm9faGl3
YXQoc3RydWN0IGhuX3NvZnRjICpzYywgaW50IGhpd2F0KQpAQCAtNzQ0LDI2NSArNzQ1LDI3MCBA
QAogfQogCiAvKgotICogU3RhcnQgYSB0cmFuc21pdCBvZiBvbmUgb3IgbW9yZSBwYWNrZXRzCisg
KiBOT1RFOgorICogVGhpcyB0aGlzIGZ1bmN0aW9uIGZhaWxzLCB0aGVuIGJvdGggdHhkIGFuZCBt
X2hlYWQwIHdpbGwgYmUgZnJlZWQKICAqLwogc3RhdGljIGludAotaG5fc3RhcnRfbG9ja2VkKHN0
cnVjdCBpZm5ldCAqaWZwLCBpbnQgbGVuKQoraG5fZW5jYXAoc3RydWN0IGhuX3NvZnRjICpzYywg
c3RydWN0IGhuX3R4ZGVzYyAqdHhkLCBzdHJ1Y3QgbWJ1ZiAqKm1faGVhZDApCiB7Ci0JaG5fc29m
dGNfdCAqc2MgPSBpZnAtPmlmX3NvZnRjOwotCXN0cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHgg
PSB2bWJ1c19nZXRfZGV2Y3R4KHNjLT5obl9kZXYpOwotCW5ldHZzY19kZXYgKm5ldF9kZXYgPSBz
Yy0+bmV0X2RldjsKKwlidXNfZG1hX3NlZ21lbnRfdCBzZWdzW0hOX1RYX0RBVEFfU0VHQ05UX01B
WF07CisJaW50IGVycm9yLCBuc2VncywgaTsKKwlzdHJ1Y3QgbWJ1ZiAqbV9oZWFkID0gKm1faGVh
ZDA7CisJbmV0dnNjX3BhY2tldCAqcGFja2V0OwogCXJuZGlzX21zZyAqcm5kaXNfbWVzZzsKIAly
bmRpc19wYWNrZXQgKnJuZGlzX3BrdDsKIAlybmRpc19wZXJfcGFja2V0X2luZm8gKnJwcGk7Ci0J
bmRpc184MDIxcV9pbmZvICpycHBpX3ZsYW5faW5mbzsKLQlybmRpc190Y3BfaXBfY3N1bV9pbmZv
ICpjc3VtX2luZm87Ci0Jcm5kaXNfdGNwX3Rzb19pbmZvICp0c29faW5mbzsJCi0JdWludDMyX3Qg
cm5kaXNfbXNnX3NpemUgPSAwOworCXVpbnQzMl90IHJuZGlzX21zZ19zaXplOwogCi0JaWYgKChp
ZnAtPmlmX2Rydl9mbGFncyAmIChJRkZfRFJWX1JVTk5JTkcgfCBJRkZfRFJWX09BQ1RJVkUpKSAh
PQotCSAgICBJRkZfRFJWX1JVTk5JTkcpCi0JCXJldHVybiAwOworCXBhY2tldCA9ICZ0eGQtPm5l
dHZzY19wa3Q7CisJcGFja2V0LT5pc19kYXRhX3BrdCA9IFRSVUU7CisJcGFja2V0LT50b3RfZGF0
YV9idWZfbGVuID0gbV9oZWFkLT5tX3BrdGhkci5sZW47CiAKLQl3aGlsZSAoIUlGUV9EUlZfSVNf
RU1QVFkoJmlmcC0+aWZfc25kKSkgewotCQlidXNfZG1hX3NlZ21lbnRfdCBzZWdzW0hOX1RYX0RB
VEFfU0VHQ05UX01BWF07Ci0JCWludCBlcnJvciwgbnNlZ3MsIGksIHNlbmRfZmFpbGVkID0gMDsK
LQkJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOwotCQluZXR2c2NfcGFja2V0ICpwYWNrZXQ7Ci0JCXN0
cnVjdCBtYnVmICptX2hlYWQ7Ci0KLQkJSUZRX0RSVl9ERVFVRVVFKCZpZnAtPmlmX3NuZCwgbV9o
ZWFkKTsKLQkJaWYgKG1faGVhZCA9PSBOVUxMKQotCQkJYnJlYWs7CisJLyoKKwkgKiBleHRlbnNp
b24gcG9pbnRzIHRvIHRoZSBhcmVhIHJlc2VydmVkIGZvciB0aGUKKwkgKiBybmRpc19maWx0ZXJf
cGFja2V0LCB3aGljaCBpcyBwbGFjZWQganVzdCBhZnRlcgorCSAqIHRoZSBuZXR2c2NfcGFja2V0
IChhbmQgcnBwaSBzdHJ1Y3QsIGlmIHByZXNlbnQ7CisJICogbGVuZ3RoIGlzIHVwZGF0ZWQgbGF0
ZXIpLgorCSAqLworCXJuZGlzX21lc2cgPSB0eGQtPnJuZGlzX21zZzsKKwkvKiBYWFggbm90IG5l
Y2Vzc2FyeSAqLworCW1lbXNldChybmRpc19tZXNnLCAwLCBITl9STkRJU19NU0dfTEVOKTsKKwly
bmRpc19tZXNnLT5uZGlzX21zZ190eXBlID0gUkVNT1RFX05ESVNfUEFDS0VUX01TRzsKIAotCQlp
ZiAobGVuID4gMCAmJiBtX2hlYWQtPm1fcGt0aGRyLmxlbiA+IGxlbikgewotCQkJLyoKLQkJCSAq
IFRoaXMgc2VuZGluZyBjb3VsZCBiZSB0aW1lIGNvbnN1bWluZzsgbGV0IGNhbGxlcnMKLQkJCSAq
IGRpc3BhdGNoIHRoaXMgcGFja2V0IHNlbmRpbmcgKGFuZCBzZW5kaW5nIG9mIGFueQotCQkJICog
Zm9sbG93aW5nIHVwIHBhY2tldHMpIHRvIHR4IHRhc2txdWV1ZS4KLQkJCSAqLwotCQkJSUZfUFJF
UEVORCgmaWZwLT5pZl9zbmQsIG1faGVhZCk7Ci0JCQlyZXR1cm4gMTsKLQkJfQorCXJuZGlzX3Br
dCA9ICZybmRpc19tZXNnLT5tc2cucGFja2V0OworCXJuZGlzX3BrdC0+ZGF0YV9vZmZzZXQgPSBz
aXplb2Yocm5kaXNfcGFja2V0KTsKKwlybmRpc19wa3QtPmRhdGFfbGVuZ3RoID0gcGFja2V0LT50
b3RfZGF0YV9idWZfbGVuOworCXJuZGlzX3BrdC0+cGVyX3BrdF9pbmZvX29mZnNldCA9IHNpemVv
ZihybmRpc19wYWNrZXQpOwogCi0JCXR4ZCA9IGhuX3R4ZGVzY19nZXQoc2MpOwotCQlpZiAodHhk
ID09IE5VTEwpIHsKLQkJCXNjLT5obl9ub190eGRlc2NzKys7Ci0JCQlJRl9QUkVQRU5EKCZpZnAt
PmlmX3NuZCwgbV9oZWFkKTsKLQkJCWF0b21pY19zZXRfaW50KCZpZnAtPmlmX2Rydl9mbGFncywg
SUZGX0RSVl9PQUNUSVZFKTsKLQkJCWJyZWFrOwotCQl9CisJcm5kaXNfbXNnX3NpemUgPSBSTkRJ
U19NRVNTQUdFX1NJWkUocm5kaXNfcGFja2V0KTsKIAotCQlwYWNrZXQgPSAmdHhkLT5uZXR2c2Nf
cGt0OwotCQlwYWNrZXQtPmlzX2RhdGFfcGt0ID0gVFJVRTsKLQkJLyogSW5pdGlhbGl6ZSBpdCBm
cm9tIHRoZSBtYnVmICovCi0JCXBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiA9IG1faGVhZC0+bV9w
a3RoZHIubGVuOworCWlmIChtX2hlYWQtPm1fZmxhZ3MgJiBNX1ZMQU5UQUcpIHsKKwkJbmRpc184
MDIxcV9pbmZvICpycHBpX3ZsYW5faW5mbzsKIAotCQkvKgotCQkgKiBleHRlbnNpb24gcG9pbnRz
IHRvIHRoZSBhcmVhIHJlc2VydmVkIGZvciB0aGUKLQkJICogcm5kaXNfZmlsdGVyX3BhY2tldCwg
d2hpY2ggaXMgcGxhY2VkIGp1c3QgYWZ0ZXIKLQkJICogdGhlIG5ldHZzY19wYWNrZXQgKGFuZCBy
cHBpIHN0cnVjdCwgaWYgcHJlc2VudDsKLQkJICogbGVuZ3RoIGlzIHVwZGF0ZWQgbGF0ZXIpLgot
CQkgKi8KLQkJcm5kaXNfbWVzZyA9IHR4ZC0+cm5kaXNfbXNnOwotCQkvKiBYWFggbm90IG5lY2Vz
c2FyeSAqLwotCQltZW1zZXQocm5kaXNfbWVzZywgMCwgSE5fUk5ESVNfTVNHX0xFTik7Ci0JCXJu
ZGlzX21lc2ctPm5kaXNfbXNnX3R5cGUgPSBSRU1PVEVfTkRJU19QQUNLRVRfTVNHOworCQlybmRp
c19tc2dfc2l6ZSArPSBSTkRJU19WTEFOX1BQSV9TSVpFOworCQlycHBpID0gaHZfc2V0X3JwcGlf
ZGF0YShybmRpc19tZXNnLCBSTkRJU19WTEFOX1BQSV9TSVpFLAorCQkgICAgaWVlZV84MDIxcV9p
bmZvKTsKIAotCQlybmRpc19wa3QgPSAmcm5kaXNfbWVzZy0+bXNnLnBhY2tldDsKLQkJcm5kaXNf
cGt0LT5kYXRhX29mZnNldCA9IHNpemVvZihybmRpc19wYWNrZXQpOwotCQlybmRpc19wa3QtPmRh
dGFfbGVuZ3RoID0gcGFja2V0LT50b3RfZGF0YV9idWZfbGVuOwotCQlybmRpc19wa3QtPnBlcl9w
a3RfaW5mb19vZmZzZXQgPSBzaXplb2Yocm5kaXNfcGFja2V0KTsKKwkJcnBwaV92bGFuX2luZm8g
PSAobmRpc184MDIxcV9pbmZvICopKCh1aW50OF90ICopcnBwaSArCisJCSAgICBycHBpLT5wZXJf
cGFja2V0X2luZm9fb2Zmc2V0KTsKKwkJcnBwaV92bGFuX2luZm8tPnUxLnMxLnZsYW5faWQgPQor
CQkgICAgbV9oZWFkLT5tX3BrdGhkci5ldGhlcl92dGFnICYgMHhmZmY7CisJfQogCi0JCXJuZGlz
X21zZ19zaXplID0gUk5ESVNfTUVTU0FHRV9TSVpFKHJuZGlzX3BhY2tldCk7CisJaWYgKG1faGVh
ZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fVFNPKSB7CisJCXJuZGlzX3RjcF90c29faW5m
byAqdHNvX2luZm87CQorCQlzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIgKmVoOworCQlpbnQgZXRo
ZXJfbGVuOwogCiAJCS8qCi0JCSAqIElmIHRoZSBIeXBlci1WIGluZnJhc3RydWN0dXJlIG5lZWRz
IHRvIGVtYmVkIGEgVkxBTiB0YWcsCi0JCSAqIGluaXRpYWxpemUgbmV0dnNjX3BhY2tldCBhbmQg
cnBwaSBzdHJ1Y3QgdmFsdWVzIGFzIG5lZWRlZC4KKwkJICogWFhYIG5lZWQgbV9wdWxsdXAgYW5k
IHVzZSBtdG9kbwogCQkgKi8KLQkJaWYgKG1faGVhZC0+bV9mbGFncyAmIE1fVkxBTlRBRykgewot
CQkJLyoKLQkJCSAqIHNldCB1cCBzb21lIGFkZGl0aW9uYWwgZmllbGRzIHNvIHRoZSBIeXBlci1W
IGluZnJhc3RydWN0dXJlIHdpbGwgc3R1ZmYgdGhlIFZMQU4gdGFnCi0JCQkgKiBpbnRvIHRoZSBm
cmFtZS4KLQkJCSAqLwotCQkJcm5kaXNfbXNnX3NpemUgKz0gUk5ESVNfVkxBTl9QUElfU0laRTsK
LQotCQkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfVkxBTl9QUElf
U0laRSwKLQkJCSAgICBpZWVlXzgwMjFxX2luZm8pOwotCQkKLQkJCS8qIFZMQU4gaW5mbyBpbW1l
ZGlhdGVseSBmb2xsb3dzIHJwcGkgc3RydWN0ICovCi0JCQlycHBpX3ZsYW5faW5mbyA9IChuZGlz
XzgwMjFxX2luZm8gKikoKGNoYXIqKXJwcGkgKyAKLQkJCSAgICBycHBpLT5wZXJfcGFja2V0X2lu
Zm9fb2Zmc2V0KTsKLQkJCS8qIEZyZWVCU0QgZG9lcyBub3Qgc3VwcG9ydCBDRkkgb3IgcHJpb3Jp
dHkgKi8KLQkJCXJwcGlfdmxhbl9pbmZvLT51MS5zMS52bGFuX2lkID0KLQkJCSAgICBtX2hlYWQt
Pm1fcGt0aGRyLmV0aGVyX3Z0YWcgJiAweGZmZjsKLQkJfQotCi0JCWlmIChtX2hlYWQtPm1fcGt0
aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1RTTykgewotCQkJc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVy
ICplaDsKLQkJCWludCBldGhlcl9sZW47Ci0KLQkJCWVoID0gbXRvZChtX2hlYWQsIHN0cnVjdCBl
dGhlcl92bGFuX2hlYWRlciopOwotCQkJaWYgKGVoLT5ldmxfZW5jYXBfcHJvdG8gPT0gaHRvbnMo
RVRIRVJUWVBFX1ZMQU4pKSB7Ci0JCQkJZXRoZXJfbGVuID0gRVRIRVJfSERSX0xFTiArCi0JCQkJ
ICAgIEVUSEVSX1ZMQU5fRU5DQVBfTEVOOwotCQkJfSBlbHNlIHsKLQkJCQlldGhlcl9sZW4gPSBF
VEhFUl9IRFJfTEVOOwotCQkJfQorCQllaCA9IG10b2QobV9oZWFkLCBzdHJ1Y3QgZXRoZXJfdmxh
bl9oZWFkZXIqKTsKKwkJaWYgKGVoLT5ldmxfZW5jYXBfcHJvdG8gPT0gaHRvbnMoRVRIRVJUWVBF
X1ZMQU4pKQorCQkJZXRoZXJfbGVuID0gRVRIRVJfSERSX0xFTiArIEVUSEVSX1ZMQU5fRU5DQVBf
TEVOOworCQllbHNlCisJCQlldGhlcl9sZW4gPSBFVEhFUl9IRFJfTEVOOwogCi0JCQlybmRpc19t
c2dfc2l6ZSArPSBSTkRJU19UU09fUFBJX1NJWkU7Ci0JCQlycHBpID0gaHZfc2V0X3JwcGlfZGF0
YShybmRpc19tZXNnLCBSTkRJU19UU09fUFBJX1NJWkUsCi0JCQkgICAgdGNwX2xhcmdlX3NlbmRf
aW5mbyk7CisJCXJuZGlzX21zZ19zaXplICs9IFJORElTX1RTT19QUElfU0laRTsKKwkJcnBwaSA9
IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfVFNPX1BQSV9TSVpFLAorCQkgICAg
dGNwX2xhcmdlX3NlbmRfaW5mbyk7CiAKLQkJCXRzb19pbmZvID0gKHJuZGlzX3RjcF90c29faW5m
byAqKSgoY2hhciAqKXJwcGkgKwotCQkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5mb19vZmZzZXQp
OwotCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LnR5cGUgPQotCQkJICAgIFJORElTX1RDUF9MQVJH
RV9TRU5EX09GRkxPQURfVjJfVFlQRTsKKwkJdHNvX2luZm8gPSAocm5kaXNfdGNwX3Rzb19pbmZv
ICopKCh1aW50OF90ICopcnBwaSArCisJCSAgICBycHBpLT5wZXJfcGFja2V0X2luZm9fb2Zmc2V0
KTsKKwkJdHNvX2luZm8tPmxzb192Ml94bWl0LnR5cGUgPQorCQkgICAgUk5ESVNfVENQX0xBUkdF
X1NFTkRfT0ZGTE9BRF9WMl9UWVBFOwogCiAjaWZkZWYgSU5FVAotCQkJaWYgKG1faGVhZC0+bV9w
a3RoZHIuY3N1bV9mbGFncyAmIENTVU1fSVBfVFNPKSB7Ci0JCQkJc3RydWN0IGlwICppcCA9Ci0J
CQkJICAgIChzdHJ1Y3QgaXAgKikobV9oZWFkLT5tX2RhdGEgKyBldGhlcl9sZW4pOwotCQkJCXVu
c2lnbmVkIGxvbmcgaXBoX2xlbiA9IGlwLT5pcF9obCA8PCAyOwotCQkJCXN0cnVjdCB0Y3BoZHIg
KnRoID0KLQkJCQkgICAgKHN0cnVjdCB0Y3BoZHIgKikoKGNhZGRyX3QpaXAgKyBpcGhfbGVuKTsK
LQkJCQotCQkJCXRzb19pbmZvLT5sc29fdjJfeG1pdC5pcF92ZXJzaW9uID0KLQkJCQkgICAgUk5E
SVNfVENQX0xBUkdFX1NFTkRfT0ZGTE9BRF9JUFY0OwotCQkJCWlwLT5pcF9sZW4gPSAwOwotCQkJ
CWlwLT5pcF9zdW0gPSAwOwotCQkJCi0JCQkJdGgtPnRoX3N1bSA9IGluX3BzZXVkbyhpcC0+aXBf
c3JjLnNfYWRkciwKLQkJCQkgICAgaXAtPmlwX2RzdC5zX2FkZHIsIGh0b25zKElQUFJPVE9fVENQ
KSk7Ci0JCQl9CisJCWlmIChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0lQX1RT
TykgeworCQkJc3RydWN0IGlwICppcCA9CisJCQkgICAgKHN0cnVjdCBpcCAqKShtX2hlYWQtPm1f
ZGF0YSArIGV0aGVyX2xlbik7CisJCQl1bnNpZ25lZCBsb25nIGlwaF9sZW4gPSBpcC0+aXBfaGwg
PDwgMjsKKwkJCXN0cnVjdCB0Y3BoZHIgKnRoID0KKwkJCSAgICAoc3RydWN0IHRjcGhkciAqKSgo
Y2FkZHJfdClpcCArIGlwaF9sZW4pOworCisJCQl0c29faW5mby0+bHNvX3YyX3htaXQuaXBfdmVy
c2lvbiA9CisJCQkgICAgUk5ESVNfVENQX0xBUkdFX1NFTkRfT0ZGTE9BRF9JUFY0OworCQkJaXAt
PmlwX2xlbiA9IDA7CisJCQlpcC0+aXBfc3VtID0gMDsKKworCQkJdGgtPnRoX3N1bSA9IGluX3Bz
ZXVkbyhpcC0+aXBfc3JjLnNfYWRkciwKKwkJCSAgICBpcC0+aXBfZHN0LnNfYWRkciwgaHRvbnMo
SVBQUk9UT19UQ1ApKTsKKwkJfQogI2VuZGlmCiAjaWYgZGVmaW5lZChJTkVUNikgJiYgZGVmaW5l
ZChJTkVUKQotCQkJZWxzZQorCQllbHNlCiAjZW5kaWYKICNpZmRlZiBJTkVUNgotCQkJewotCQkJ
CXN0cnVjdCBpcDZfaGRyICppcDYgPSAoc3RydWN0IGlwNl9oZHIgKikKLQkJCQkgICAgKG1faGVh
ZC0+bV9kYXRhICsgZXRoZXJfbGVuKTsKLQkJCQlzdHJ1Y3QgdGNwaGRyICp0aCA9IChzdHJ1Y3Qg
dGNwaGRyICopKGlwNiArIDEpOwotCi0JCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LmlwX3ZlcnNp
b24gPQotCQkJCSAgICBSTkRJU19UQ1BfTEFSR0VfU0VORF9PRkZMT0FEX0lQVjY7Ci0JCQkJaXA2
LT5pcDZfcGxlbiA9IDA7Ci0JCQkJdGgtPnRoX3N1bSA9Ci0JCQkJICAgIGluNl9ja3N1bV9wc2V1
ZG8oaXA2LCAwLCBJUFBST1RPX1RDUCwgMCk7Ci0JCQl9CisJCXsKKwkJCXN0cnVjdCBpcDZfaGRy
ICppcDYgPSAoc3RydWN0IGlwNl9oZHIgKikKKwkJCSAgICAobV9oZWFkLT5tX2RhdGEgKyBldGhl
cl9sZW4pOworCQkJc3RydWN0IHRjcGhkciAqdGggPSAoc3RydWN0IHRjcGhkciAqKShpcDYgKyAx
KTsKKworCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LmlwX3ZlcnNpb24gPQorCQkJICAgIFJORElT
X1RDUF9MQVJHRV9TRU5EX09GRkxPQURfSVBWNjsKKwkJCWlwNi0+aXA2X3BsZW4gPSAwOworCQkJ
dGgtPnRoX3N1bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2LCAwLCBJUFBST1RPX1RDUCwgMCk7CisJ
CX0KICNlbmRpZgotCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LnRjcF9oZWFkZXJfb2Zmc2V0ID0g
MDsKLQkJCXRzb19pbmZvLT5sc29fdjJfeG1pdC5tc3MgPSBtX2hlYWQtPm1fcGt0aGRyLnRzb19z
ZWdzejsKLQkJfSBlbHNlIGlmIChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBzYy0+aG5f
Y3N1bV9hc3Npc3QpIHsKLQkJCXJuZGlzX21zZ19zaXplICs9IFJORElTX0NTVU1fUFBJX1NJWkU7
Ci0JCQlycHBpID0gaHZfc2V0X3JwcGlfZGF0YShybmRpc19tZXNnLCBSTkRJU19DU1VNX1BQSV9T
SVpFLAotCQkJICAgIHRjcGlwX2Noa3N1bV9pbmZvKTsKLQkJCWNzdW1faW5mbyA9IChybmRpc190
Y3BfaXBfY3N1bV9pbmZvICopKChjaGFyKilycHBpICsKLQkJCSAgICBycHBpLT5wZXJfcGFja2V0
X2luZm9fb2Zmc2V0KTsKLQotCQkJY3N1bV9pbmZvLT54bWl0LmlzX2lwdjQgPSAxOwotCQkJaWYg
KG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fSVApCi0JCQkJY3N1bV9pbmZvLT54
bWl0LmlwX2hlYWRlcl9jc3VtID0gMTsKLQotCQkJaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9m
bGFncyAmIENTVU1fVENQKSB7Ci0JCQkJY3N1bV9pbmZvLT54bWl0LnRjcF9jc3VtID0gMTsKLQkJ
CQljc3VtX2luZm8tPnhtaXQudGNwX2hlYWRlcl9vZmZzZXQgPSAwOwotCQkJfSBlbHNlIGlmICht
X2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1VEUCkgewotCQkJCWNzdW1faW5mby0+
eG1pdC51ZHBfY3N1bSA9IDE7Ci0JCQl9CisJCXRzb19pbmZvLT5sc29fdjJfeG1pdC50Y3BfaGVh
ZGVyX29mZnNldCA9IDA7CisJCXRzb19pbmZvLT5sc29fdjJfeG1pdC5tc3MgPSBtX2hlYWQtPm1f
cGt0aGRyLnRzb19zZWdzejsKKwl9IGVsc2UgaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFn
cyAmIHNjLT5obl9jc3VtX2Fzc2lzdCkgeworCQlybmRpc190Y3BfaXBfY3N1bV9pbmZvICpjc3Vt
X2luZm87CisKKwkJcm5kaXNfbXNnX3NpemUgKz0gUk5ESVNfQ1NVTV9QUElfU0laRTsKKwkJcnBw
aSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfQ1NVTV9QUElfU0laRSwKKwkJ
ICAgIHRjcGlwX2Noa3N1bV9pbmZvKTsKKwkJY3N1bV9pbmZvID0gKHJuZGlzX3RjcF9pcF9jc3Vt
X2luZm8gKikoKHVpbnQ4X3QgKilycHBpICsKKwkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5mb19v
ZmZzZXQpOworCisJCWNzdW1faW5mby0+eG1pdC5pc19pcHY0ID0gMTsKKwkJaWYgKG1faGVhZC0+
bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fSVApCisJCQljc3VtX2luZm8tPnhtaXQuaXBfaGVh
ZGVyX2NzdW0gPSAxOworCisJCWlmIChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VN
X1RDUCkgeworCQkJY3N1bV9pbmZvLT54bWl0LnRjcF9jc3VtID0gMTsKKwkJCWNzdW1faW5mby0+
eG1pdC50Y3BfaGVhZGVyX29mZnNldCA9IDA7CisJCX0gZWxzZSBpZiAobV9oZWFkLT5tX3BrdGhk
ci5jc3VtX2ZsYWdzICYgQ1NVTV9VRFApIHsKKwkJCWNzdW1faW5mby0+eG1pdC51ZHBfY3N1bSA9
IDE7CiAJCX0KKwl9CiAKLQkJcm5kaXNfbWVzZy0+bXNnX2xlbiA9IHBhY2tldC0+dG90X2RhdGFf
YnVmX2xlbiArIHJuZGlzX21zZ19zaXplOwotCQlwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW4gPSBy
bmRpc19tZXNnLT5tc2dfbGVuOwotCi0JCS8qIHNlbmQgcGFja2V0IHdpdGggc2VuZCBidWZmZXIg
Ki8KLQkJaWYgKHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiA8IHNjLT5obl90eF9jaGltbmV5X3Np
emUpIHsKLQkJCXVpbnQzMl90IHNlbmRfYnVmX3NlY3Rpb25faWR4OwotCi0JCQlzZW5kX2J1Zl9z
ZWN0aW9uX2lkeCA9Ci0JCQkgICAgaHZfbnZfZ2V0X25leHRfc2VuZF9zZWN0aW9uKG5ldF9kZXYp
OwotCQkJaWYgKHNlbmRfYnVmX3NlY3Rpb25faWR4ICE9Ci0JCQkgICAgTlZTUF8xX0NISU1ORVlf
U0VORF9JTlZBTElEX1NFQ1RJT05fSU5ERVgpIHsKLQkJCQl1aW50OF90ICpkZXN0ID0gKCh1aW50
OF90ICopbmV0X2Rldi0+c2VuZF9idWYgKwotCQkJCSAgICAoc2VuZF9idWZfc2VjdGlvbl9pZHgg
KgotCQkJCSAgICAgbmV0X2Rldi0+c2VuZF9zZWN0aW9uX3NpemUpKTsKLQotCQkJCW1lbWNweShk
ZXN0LCBybmRpc19tZXNnLCBybmRpc19tc2dfc2l6ZSk7Ci0JCQkJZGVzdCArPSBybmRpc19tc2df
c2l6ZTsKLQotCQkJCW1fY29weWRhdGEobV9oZWFkLCAwLCBtX2hlYWQtPm1fcGt0aGRyLmxlbiwK
LQkJCQkgICAgZGVzdCk7Ci0KLQkJCQlwYWNrZXQtPnNlbmRfYnVmX3NlY3Rpb25faWR4ID0KLQkJ
CQkgICAgc2VuZF9idWZfc2VjdGlvbl9pZHg7Ci0JCQkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9u
X3NpemUgPQotCQkJCSAgICBwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW47Ci0JCQkJcGFja2V0LT5w
YWdlX2J1Zl9jb3VudCA9IDA7Ci0JCQkJc2MtPmhuX3R4X2NoaW1uZXkrKzsKLQkJCQlnb3RvIGRv
X3NlbmQ7Ci0JCQl9CisJcm5kaXNfbWVzZy0+bXNnX2xlbiA9IHBhY2tldC0+dG90X2RhdGFfYnVm
X2xlbiArIHJuZGlzX21zZ19zaXplOworCXBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiA9IHJuZGlz
X21lc2ctPm1zZ19sZW47CisKKwkvKgorCSAqIENoaW1uZXkgc2VuZCwgaWYgdGhlIHBhY2tldCBj
b3VsZCBmaXQgaW50byBvbmUgY2hpbW5leSBidWZmZXIuCisJICovCisJaWYgKHBhY2tldC0+dG90
X2RhdGFfYnVmX2xlbiA8IHNjLT5obl90eF9jaGltbmV5X3NpemUpIHsKKwkJbmV0dnNjX2RldiAq
bmV0X2RldiA9IHNjLT5uZXRfZGV2OworCQl1aW50MzJfdCBzZW5kX2J1Zl9zZWN0aW9uX2lkeDsK
KworCQlzZW5kX2J1Zl9zZWN0aW9uX2lkeCA9CisJCSAgICBodl9udl9nZXRfbmV4dF9zZW5kX3Nl
Y3Rpb24obmV0X2Rldik7CisJCWlmIChzZW5kX2J1Zl9zZWN0aW9uX2lkeCAhPQorCQkgICAgTlZT
UF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5ERVgpIHsKKwkJCXVpbnQ4X3QgKmRl
c3QgPSAoKHVpbnQ4X3QgKiluZXRfZGV2LT5zZW5kX2J1ZiArCisJCQkgICAgKHNlbmRfYnVmX3Nl
Y3Rpb25faWR4ICoKKwkJCSAgICAgbmV0X2Rldi0+c2VuZF9zZWN0aW9uX3NpemUpKTsKKworCQkJ
bWVtY3B5KGRlc3QsIHJuZGlzX21lc2csIHJuZGlzX21zZ19zaXplKTsKKwkJCWRlc3QgKz0gcm5k
aXNfbXNnX3NpemU7CisJCQltX2NvcHlkYXRhKG1faGVhZCwgMCwgbV9oZWFkLT5tX3BrdGhkci5s
ZW4sIGRlc3QpOworCisJCQlwYWNrZXQtPnNlbmRfYnVmX3NlY3Rpb25faWR4ID0gc2VuZF9idWZf
c2VjdGlvbl9pZHg7CisJCQlwYWNrZXQtPnNlbmRfYnVmX3NlY3Rpb25fc2l6ZSA9CisJCQkgICAg
cGFja2V0LT50b3RfZGF0YV9idWZfbGVuOworCQkJcGFja2V0LT5wYWdlX2J1Zl9jb3VudCA9IDA7
CisJCQlzYy0+aG5fdHhfY2hpbW5leSsrOworCQkJZ290byBkb25lOwogCQl9CisJfQogCi0JCWVy
cm9yID0gaG5fdHhkZXNjX2RtYW1hcF9sb2FkKHNjLCB0eGQsICZtX2hlYWQsIHNlZ3MsICZuc2Vn
cyk7Ci0JCWlmIChlcnJvcikgewotCQkJaW50IGZyZWVkOworCWVycm9yID0gaG5fdHhkZXNjX2Rt
YW1hcF9sb2FkKHNjLCB0eGQsICZtX2hlYWQsIHNlZ3MsICZuc2Vncyk7CisJaWYgKGVycm9yKSB7
CisJCWludCBmcmVlZDsKIAotCQkJLyoKLQkJCSAqIFRoaXMgbWJ1ZiBpcyBub3QgbGlua2VkIHcv
IHRoZSB0eGQgeWV0LCBzbyBmcmVlCi0JCQkgKiBpdCBub3cuCi0JCQkgKi8KLQkJCW1fZnJlZW0o
bV9oZWFkKTsKLQkJCWZyZWVkID0gaG5fdHhkZXNjX3B1dChzYywgdHhkKTsKLQkJCUtBU1NFUlQo
ZnJlZWQgIT0gMCwKLQkJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0eGRtYSBlcnJvciIp
KTsKKwkJLyoKKwkJICogVGhpcyBtYnVmIGlzIG5vdCBsaW5rZWQgdy8gdGhlIHR4ZCB5ZXQsIHNv
IGZyZWUgaXQgbm93LgorCQkgKi8KKwkJbV9mcmVlbShtX2hlYWQpOworCQkqbV9oZWFkMCA9IE5V
TEw7CiAKLQkJCXNjLT5obl90eGRtYV9mYWlsZWQrKzsKLQkJCWlmX2luY19jb3VudGVyKGlmcCwg
SUZDT1VOVEVSX09FUlJPUlMsIDEpOwotCQkJY29udGludWU7Ci0JCX0KKwkJZnJlZWQgPSBobl90
eGRlc2NfcHV0KHNjLCB0eGQpOworCQlLQVNTRVJUKGZyZWVkICE9IDAsCisJCSAgICAoImZhaWwg
dG8gZnJlZSB0eGQgdXBvbiB0eGRtYSBlcnJvciIpKTsKIAotCQlwYWNrZXQtPnBhZ2VfYnVmX2Nv
dW50ID0gbnNlZ3MgKwotCQkgICAgSFZfUkZfTlVNX1RYX1JFU0VSVkVEX1BBR0VfQlVGUzsKKwkJ
c2MtPmhuX3R4ZG1hX2ZhaWxlZCsrOworCQlpZl9pbmNfY291bnRlcihzYy0+aG5faWZwLCBJRkNP
VU5URVJfT0VSUk9SUywgMSk7CisJCXJldHVybiBlcnJvcjsKKwl9CisJKm1faGVhZDAgPSBtX2hl
YWQ7CiAKLQkJLyogc2VuZCBwYWNrZXQgd2l0aCBwYWdlIGJ1ZmZlciAqLwotCQlwYWNrZXQtPnBh
Z2VfYnVmZmVyc1swXS5wZm4gPSBhdG9wKHR4ZC0+cm5kaXNfbXNnX3BhZGRyKTsKLQkJcGFja2V0
LT5wYWdlX2J1ZmZlcnNbMF0ub2Zmc2V0ID0KLQkJICAgIHR4ZC0+cm5kaXNfbXNnX3BhZGRyICYg
UEFHRV9NQVNLOwotCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1swXS5sZW5ndGggPSBybmRpc19tc2df
c2l6ZTsKKwlwYWNrZXQtPnBhZ2VfYnVmX2NvdW50ID0gbnNlZ3MgKyBIVl9SRl9OVU1fVFhfUkVT
RVJWRURfUEFHRV9CVUZTOwogCi0JCS8qCi0JCSAqIEZpbGwgdGhlIHBhZ2UgYnVmZmVycyB3aXRo
IG1idWYgaW5mbyBzdGFydGluZyBhdCBpbmRleAotCQkgKiBIVl9SRl9OVU1fVFhfUkVTRVJWRURf
UEFHRV9CVUZTLgotCQkgKi8KLQkJZm9yIChpID0gMDsgaSA8IG5zZWdzOyArK2kpIHsKLQkJCWh2
X3ZtYnVzX3BhZ2VfYnVmZmVyICpwYiA9ICZwYWNrZXQtPnBhZ2VfYnVmZmVyc1sKLQkJCSAgICBp
ICsgSFZfUkZfTlVNX1RYX1JFU0VSVkVEX1BBR0VfQlVGU107CisJLyogc2VuZCBwYWNrZXQgd2l0
aCBwYWdlIGJ1ZmZlciAqLworCXBhY2tldC0+cGFnZV9idWZmZXJzWzBdLnBmbiA9IGF0b3AodHhk
LT5ybmRpc19tc2dfcGFkZHIpOworCXBhY2tldC0+cGFnZV9idWZmZXJzWzBdLm9mZnNldCA9IHR4
ZC0+cm5kaXNfbXNnX3BhZGRyICYgUEFHRV9NQVNLOworCXBhY2tldC0+cGFnZV9idWZmZXJzWzBd
Lmxlbmd0aCA9IHJuZGlzX21zZ19zaXplOwogCi0JCQlwYi0+cGZuID0gYXRvcChzZWdzW2ldLmRz
X2FkZHIpOwotCQkJcGItPm9mZnNldCA9IHNlZ3NbaV0uZHNfYWRkciAmIFBBR0VfTUFTSzsKLQkJ
CXBiLT5sZW5ndGggPSBzZWdzW2ldLmRzX2xlbjsKLQkJfQorCS8qCisJICogRmlsbCB0aGUgcGFn
ZSBidWZmZXJzIHdpdGggbWJ1ZiBpbmZvIHN0YXJ0aW5nIGF0IGluZGV4CisJICogSFZfUkZfTlVN
X1RYX1JFU0VSVkVEX1BBR0VfQlVGUy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbnNlZ3M7ICsr
aSkgeworCQlodl92bWJ1c19wYWdlX2J1ZmZlciAqcGIgPSAmcGFja2V0LT5wYWdlX2J1ZmZlcnNb
CisJCSAgICBpICsgSFZfUkZfTlVNX1RYX1JFU0VSVkVEX1BBR0VfQlVGU107CisKKwkJcGItPnBm
biA9IGF0b3Aoc2Vnc1tpXS5kc19hZGRyKTsKKwkJcGItPm9mZnNldCA9IHNlZ3NbaV0uZHNfYWRk
ciAmIFBBR0VfTUFTSzsKKwkJcGItPmxlbmd0aCA9IHNlZ3NbaV0uZHNfbGVuOworCX0KIAotCQlw
YWNrZXQtPnNlbmRfYnVmX3NlY3Rpb25faWR4ID0gCi0JCSAgICBOVlNQXzFfQ0hJTU5FWV9TRU5E
X0lOVkFMSURfU0VDVElPTl9JTkRFWDsKLQkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX3NpemUg
PSAwOworCXBhY2tldC0+c2VuZF9idWZfc2VjdGlvbl9pZHggPQorCSAgICBOVlNQXzFfQ0hJTU5F
WV9TRU5EX0lOVkFMSURfU0VDVElPTl9JTkRFWDsKKwlwYWNrZXQtPnNlbmRfYnVmX3NlY3Rpb25f
c2l6ZSA9IDA7Citkb25lOgorCXR4ZC0+bSA9IG1faGVhZDsKIAotZG9fc2VuZDoKLQkJdHhkLT5t
ID0gbV9oZWFkOworCS8qIFNldCB0aGUgY29tcGxldGlvbiByb3V0aW5lICovCisJcGFja2V0LT5j
b21wbC5zZW5kLm9uX3NlbmRfY29tcGxldGlvbiA9IG5ldHZzY194bWl0X2NvbXBsZXRpb247CisJ
cGFja2V0LT5jb21wbC5zZW5kLnNlbmRfY29tcGxldGlvbl9jb250ZXh0ID0gcGFja2V0OworCXBh
Y2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25fdGlkID0gKHVpbnQ2NF90KSh1aW50cHRy
X3QpdHhkOwogCi0JCS8qIFNldCB0aGUgY29tcGxldGlvbiByb3V0aW5lICovCi0JCXBhY2tldC0+
Y29tcGwuc2VuZC5vbl9zZW5kX2NvbXBsZXRpb24gPSBuZXR2c2NfeG1pdF9jb21wbGV0aW9uOwot
CQlwYWNrZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX2NvbnRleHQgPSBwYWNrZXQ7Ci0J
CXBhY2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25fdGlkID0KLQkJICAgICh1aW50NjRf
dCkodWludHB0cl90KXR4ZDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFN0YXJ0IGEgdHJhbnNt
aXQgb2Ygb25lIG9yIG1vcmUgcGFja2V0cworICovCitzdGF0aWMgaW50Citobl9zdGFydF9sb2Nr
ZWQoc3RydWN0IGlmbmV0ICppZnAsIGludCBsZW4pCit7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9
IGlmcC0+aWZfc29mdGM7CisJc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eCA9IHZtYnVzX2dl
dF9kZXZjdHgoc2MtPmhuX2Rldik7CisKKwlpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdzICYgKElGRl9E
UlZfUlVOTklORyB8IElGRl9EUlZfT0FDVElWRSkpICE9CisJICAgIElGRl9EUlZfUlVOTklORykK
KwkJcmV0dXJuIDA7CiAKKwl3aGlsZSAoIUlGUV9EUlZfSVNfRU1QVFkoJmlmcC0+aWZfc25kKSkg
eworCQlpbnQgZXJyb3IsIHNlbmRfZmFpbGVkID0gMDsKKwkJc3RydWN0IGhuX3R4ZGVzYyAqdHhk
OworCQlzdHJ1Y3QgbWJ1ZiAqbV9oZWFkOworCisJCUlGUV9EUlZfREVRVUVVRSgmaWZwLT5pZl9z
bmQsIG1faGVhZCk7CisJCWlmIChtX2hlYWQgPT0gTlVMTCkKKwkJCWJyZWFrOworCisJCWlmIChs
ZW4gPiAwICYmIG1faGVhZC0+bV9wa3RoZHIubGVuID4gbGVuKSB7CisJCQkvKgorCQkJICogVGhp
cyBzZW5kaW5nIGNvdWxkIGJlIHRpbWUgY29uc3VtaW5nOyBsZXQgY2FsbGVycworCQkJICogZGlz
cGF0Y2ggdGhpcyBwYWNrZXQgc2VuZGluZyAoYW5kIHNlbmRpbmcgb2YgYW55CisJCQkgKiBmb2xs
b3dpbmcgdXAgcGFja2V0cykgdG8gdHggdGFza3F1ZXVlLgorCQkJICovCisJCQlJRl9QUkVQRU5E
KCZpZnAtPmlmX3NuZCwgbV9oZWFkKTsKKwkJCXJldHVybiAxOworCQl9CisKKwkJdHhkID0gaG5f
dHhkZXNjX2dldChzYyk7CisJCWlmICh0eGQgPT0gTlVMTCkgeworCQkJc2MtPmhuX25vX3R4ZGVz
Y3MrKzsKKwkJCUlGX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtX2hlYWQpOworCQkJYXRvbWljX3Nl
dF9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX09BQ1RJVkUpOworCQkJYnJlYWs7CisJ
CX0KKworCQllcnJvciA9IGhuX2VuY2FwKHNjLCB0eGQsICZtX2hlYWQpOworCQlpZiAoZXJyb3Ip
IHsKKwkJCS8qIEJvdGggdHhkIGFuZCBtX2hlYWQgYXJlIGZyZWVkICovCisJCQljb250aW51ZTsK
KwkJfQogYWdhaW46CiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGF0IHR4ZCBpcyBub3QgZnJlZWQg
YmVmb3JlIEVUSEVSX0JQRl9NVEFQLgogCQkgKi8KIAkJaG5fdHhkZXNjX2hvbGQodHhkKTsKLQkJ
ZXJyb3IgPSBodl9udl9vbl9zZW5kKGRldmljZV9jdHgsIHBhY2tldCk7CisJCWVycm9yID0gaHZf
bnZfb25fc2VuZChkZXZpY2VfY3R4LCAmdHhkLT5uZXR2c2NfcGt0KTsKIAkJaWYgKCFlcnJvcikg
ewogCQkJRVRIRVJfQlBGX01UQVAoaWZwLCBtX2hlYWQpOwogCQkJaWZfaW5jX2NvdW50ZXIoaWZw
LCBJRkNPVU5URVJfT1BBQ0tFVFMsIDEpOwoK


--b1_8a4cb9012204fb53e8e197a24337dd20--



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