Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jan 2016 02:12:18 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Request, 276 lines] D4824: hyperv/hn: Implement LRO
Message-ID:  <differential-rev-PHID-DREV-2vc6la7nxrbxz7f6mnl6-req@FreeBSD.org>

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

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

sepherosa_gmail.com created this revision.
sepherosa_gmail.com added reviewers: adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, kmacy.
sepherosa_gmail.com added a subscriber: freebsd-net-list.

REVISION SUMMARY
  - Implement the LRO using tcp_lro APIs, and LRO is enabled by default
  - Add several stats sysctl nodes
  - Check IP/TCP length before sending the packet to tcp_lro_rx(), if host does not provide RX csum information (*); and add an option through sysctl to always trust host TCP segment csum checks (default is off).
  - Add sysctl to control the LRO entry depth.  This depends on later tcp_lro patch, thus it is disabled by default.  It is used to avoid holding too much TCP segments in driver.  Limiting the LRO entry depth helps a lot in a one/two streams RX test.
  
  This one 3x the RX performance on my local test (3Gbps -> 10Gbps), and ~2x the RX performance over a directly connected 40Ge network (5Gbps -> 9Gbps).
  
  Reviewed by: Hongjiang Zhang <honzhan microsoft com>, Dexuan Cui <decui microsoft com>, Jun Su <junsu microsoft com>
  Tested by: me (local), Hongjiang Zhang <honzhan microsoft com> (directly connected 40Ge)
  Sponsored by: Microsoft OSTC

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

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

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

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

--b1_fb8f18771ce435cb4febbc9532fb01a6
Content-Type: text/x-patch; charset=utf-8; name="D4824.12025.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D4824.12025.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuaCBiL3N5
cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuaAotLS0gYS9zeXMvZGV2L2h5cGVy
di9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKKysrIGIvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2
X3JuZGlzX2ZpbHRlci5oCkBAIC05OCw2ICs5OCw3IEBACiAKIGludCBodl9yZl9vbl9yZWNlaXZl
KG5ldHZzY19kZXYgKm5ldF9kZXYsCiAgICAgc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLCBuZXR2
c2NfcGFja2V0ICpwa3QpOwordm9pZCBodl9yZl9yZWNlaXZlX3JvbGx1cChuZXR2c2NfZGV2ICpu
ZXRfZGV2KTsKIGludCBodl9yZl9vbl9kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmlj
ZSwgdm9pZCAqYWRkaXRsX2luZm8pOwogaW50IGh2X3JmX29uX2RldmljZV9yZW1vdmUoc3RydWN0
IGh2X2RldmljZSAqZGV2aWNlLCBib29sZWFuX3QgZGVzdHJveV9jaGFubmVsKTsKIGludCBodl9y
Zl9vbl9vcGVuKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSk7CmRpZmYgLS1naXQgYS9zeXMvZGV2
L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmMgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2Mv
aHZfcm5kaXNfZmlsdGVyLmMKLS0tIGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzX2Zp
bHRlci5jCisrKyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwpAQCAt
OTYzLDMgKzk2MywxNCBAQAogCXJlcXVlc3QtPmhhbHRfY29tcGxldGVfZmxhZyA9IDE7CiB9CiAK
Ky8qCisgKiBSTkRJUyBmaWx0ZXIgd2hlbiAiYWxsIiByZWNlcHRpb24gaXMgZG9uZQorICovCit2
b2lkCitodl9yZl9yZWNlaXZlX3JvbGx1cChuZXR2c2NfZGV2ICpuZXRfZGV2KQoreworCXJuZGlz
X2RldmljZSAqcm5kaXNfZGV2OworCisJcm5kaXNfZGV2ID0gKHJuZGlzX2RldmljZSAqKW5ldF9k
ZXYtPmV4dGVuc2lvbjsKKwluZXR2c2NfcmVjdl9yb2xsdXAocm5kaXNfZGV2LT5uZXRfZGV2LT5k
ZXYpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzLmggYi9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaAotLS0gYS9zeXMvZGV2L2h5cGVydi9uZXR2
c2MvaHZfcm5kaXMuaAorKysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaApAQCAt
MTA0OSw2ICsxMDQ5LDcgQEAKIGludCBuZXR2c2NfcmVjdihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZp
Y2VfY3R4LCAKICAgICBuZXR2c2NfcGFja2V0ICpwYWNrZXQsIAogICAgIHJuZGlzX3RjcF9pcF9j
c3VtX2luZm8gKmNzdW1faW5mbyk7Cit2b2lkIG5ldHZzY19yZWN2X3JvbGx1cChzdHJ1Y3QgaHZf
ZGV2aWNlICpkZXZpY2VfY3R4KTsKIAogdm9pZCogaHZfc2V0X3JwcGlfZGF0YShybmRpc19tc2cg
KnJuZGlzX21lc2csCiAgICAgdWludDMyX3QgcnBwaV9zaXplLApkaWZmIC0tZ2l0IGEvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jIGIvc3lzL2Rldi9oeXBlcnYv
bmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCi0tLSBhL3N5cy9kZXYvaHlwZXJ2L25ldHZz
Yy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYworKysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZf
bmV0dnNjX2Rydl9mcmVlYnNkLmMKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxzeXMvcXVl
dWUuaD4KICNpbmNsdWRlIDxzeXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9zeC5oPgorI2luY2x1
ZGUgPHN5cy9zeXNjdGwuaD4KIAogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2luY2x1ZGUgPG5ldC9p
Zl9hcnAuaD4KQEAgLTEzOCw2ICsxMzksMTUgQEAKICAgICBDU1VNX0lQX0lTQ1NJfENTVU1fSVA2
X1VEUHxDU1VNX0lQNl9UQ1B8Q1NVTV9JUDZfU0NUUHwJCVwKICAgICBDU1VNX0lQNl9UU098Q1NV
TV9JUDZfSVNDU0kpCiAKKy8qIFhYWCBtb3ZlIHRvIG5ldGluZXQvdGNwX2xyby5oICovCisjZGVm
aW5lIEhOX0xST19ISVdBVF9NQVgJCQkJNjU1MzUKKyNkZWZpbmUgSE5fTFJPX0hJV0FUX0RFRgkJ
CQlITl9MUk9fSElXQVRfTUFYCisvKiBZWVkgMipNVFUgaXMgYSBiaXQgcm91Z2gsIGJ1dCBzaG91
bGQgYmUgZ29vZCBlbm91Z2guICovCisjZGVmaW5lIEhOX0xST19ISVdBVF9NVFVMSU0oaWZwKQkJ
CSgyICogKGlmcCktPmlmX210dSkKKyNkZWZpbmUgSE5fTFJPX0hJV0FUX0lTVkFMSUQoc2MsIGhp
d2F0KQkJCVwKKyAgICAoKGhpd2F0KSA+PSBITl9MUk9fSElXQVRfTVRVTElNKChzYyktPmhuX2lm
cCkgfHwJXAorICAgICAoaGl3YXQpIDw9IEhOX0xST19ISVdBVF9NQVgpCisKIC8qCiAgKiBEYXRh
IHR5cGVzCiAgKi8KQEAgLTE3MSw2ICsxODEsOSBAQAogLyogVGhlIG9uZSBhbmQgb25seSBvbmUg
Ki8KIHN0YXRpYyBzdHJ1Y3QgaHZfbmV0dnNjX2RyaXZlcl9jb250ZXh0IGdfbmV0dnNjX2RydjsK
IAorLyogVHJ1c3QgdGNwIHNlZ2VtZW50cyB2ZXJpZmljYXRpb24gb24gaG9zdCBzaWRlLiAqLwor
c3RhdGljIGludCBobl90cnVzdF9ob3N0dGNwID0gMDsKK1RVTkFCTEVfSU5UKCJkZXYuaG4udHJ1
c3RfaG9zdHRjcCIsICZobl90cnVzdF9ob3N0dGNwKTsKIAogLyoKICAqIEZvcndhcmQgZGVjbGFy
YXRpb25zCkBAIC0xODEsNiArMTk0LDE5IEBACiBzdGF0aWMgaW50ICBobl9pb2N0bChzdHJ1Y3Qg
aWZuZXQgKmlmcCwgdV9sb25nIGNtZCwgY2FkZHJfdCBkYXRhKTsKIHN0YXRpYyBpbnQgIGhuX3N0
YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBzdGF0aWMgdm9pZCBobl9zdGFydChzdHJ1
Y3QgaWZuZXQgKmlmcCk7CisjaWZkZWYgSE5fTFJPX0hJV0FUCitzdGF0aWMgaW50IGhuX2xyb19o
aXdhdF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CisjZW5kaWYKK3N0YXRpYyBpbnQgaG5f
Y2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0IG1idWYgKiwgaW50KTsKKworc3RhdGljIF9faW5saW5l
IHZvaWQKK2huX3NldF9scm9faGl3YXQoc3RydWN0IGhuX3NvZnRjICpzYywgaW50IGhpd2F0KQor
eworCXNjLT5obl9scm9faGl3YXQgPSBoaXdhdDsKKyNpZmRlZiBITl9MUk9fSElXQVQKKwlzYy0+
aG5fbHJvLmxyb19oaXdhdCA9IHNjLT5obl9scm9faGl3YXQ7CisjZW5kaWYKK30KIAogLyoKICAq
IE5ldFZzYyBnZXQgbWVzc2FnZSB0cmFuc3BvcnQgcHJvdG9jb2wgdHlwZSAKQEAgLTMxMCw2ICsz
MzYsOCBAQAogCWhuX3NvZnRjX3QgKnNjOwogCWludCB1bml0ID0gZGV2aWNlX2dldF91bml0KGRl
dik7CiAJc3RydWN0IGlmbmV0ICppZnA7CisJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqY2hpbGQ7
CisJc3RydWN0IHN5c2N0bF9jdHhfbGlzdCAqY3R4OwogCWludCByZXQ7CiAKIAluZXR2c2NfaW5p
dCgpOwpAQCAtMzIyLDYgKzM1MCw4IEBACiAJYnplcm8oc2MsIHNpemVvZihobl9zb2Z0Y190KSk7
CiAJc2MtPmhuX3VuaXQgPSB1bml0OwogCXNjLT5obl9kZXYgPSBkZXY7CisJc2MtPmhuX2xyb19o
aXdhdCA9IEhOX0xST19ISVdBVF9ERUY7CisJc2MtPmhuX3RydXN0X2hvc3R0Y3AgPSBobl90cnVz
dF9ob3N0dGNwOwogCiAJTlZfTE9DS19JTklUKHNjLCAiTmV0VlNDTG9jayIpOwogCkBAIC0zNDks
OSArMzc5LDExIEBACiAJICovCiAJaWZwLT5pZl9oZHJsZW4gPSBzaXplb2Yoc3RydWN0IGV0aGVy
X3ZsYW5faGVhZGVyKTsKIAlpZnAtPmlmX2NhcGFiaWxpdGllcyB8PQotCSAgICBJRkNBUF9WTEFO
X0hXVEFHR0lORyB8IElGQ0FQX1ZMQU5fTVRVIHwgSUZDQVBfSFdDU1VNIHwgSUZDQVBfVFNPOwor
CSAgICBJRkNBUF9WTEFOX0hXVEFHR0lORyB8IElGQ0FQX1ZMQU5fTVRVIHwgSUZDQVBfSFdDU1VN
IHwgSUZDQVBfVFNPIHwKKwkgICAgSUZDQVBfTFJPOwogCWlmcC0+aWZfY2FwZW5hYmxlIHw9Ci0J
ICAgIElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwgSUZDQVBfVkxBTl9NVFUgfCBJRkNBUF9IV0NTVU0g
fCBJRkNBUF9UU087CisJICAgIElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwgSUZDQVBfVkxBTl9NVFUg
fCBJRkNBUF9IV0NTVU0gfCBJRkNBUF9UU08gfAorCSAgICBJRkNBUF9MUk87CiAJLyoKIAkgKiBP
bmx5IGVuYWJsZSBVRFAgY2hlY2tzdW0gb2ZmbG9hZGluZyB3aGVuIGl0IGlzIG9uIDIwMTJSMiBv
cgogCSAqIGxhdGVyLiBVRFAgY2hlY2tzdW0gb2ZmbG9hZGluZyBkb2Vzbid0IHdvcmsgb24gZWFy
bGllcgpAQCAtMzcyLDggKzQwNCw0MSBAQAogCQlzYy0+aG5fY2FycmllciA9IDE7CiAJfQogCisJ
dGNwX2xyb19pbml0KCZzYy0+aG5fbHJvKTsKKwkvKiBEcml2ZXIgcHJpdmF0ZSBMUk8gc2V0dGlu
Z3MgKi8KKwlzYy0+aG5fbHJvLmlmcCA9IGlmcDsKKyNpZmRlZiBITl9MUk9fSElXQVQKKwlzYy0+
aG5fbHJvLmxyb19oaXdhdCA9IHNjLT5obl9scm9faGl3YXQ7CisjZW5kaWYKKwogCWV0aGVyX2lm
YXR0YWNoKGlmcCwgZGV2aWNlX2luZm8ubWFjX2FkZHIpOwogCisJY3R4ID0gZGV2aWNlX2dldF9z
eXNjdGxfY3R4KGRldik7CisJY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNj
dGxfdHJlZShkZXYpKTsKKworCVNZU0NUTF9BRERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAi
bHJvX3F1ZXVlZCIsCisJICAgIENUTEZMQUdfUkQsICZzYy0+aG5fbHJvLmxyb19xdWV1ZWQsIDAs
ICJMUk8gcXVldWVkIik7CisJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJs
cm9fZmx1c2hlZCIsCisJICAgIENUTEZMQUdfUkQsICZzYy0+aG5fbHJvLmxyb19mbHVzaGVkLCAw
LCAiTFJPIGZsdXNoZWQiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRP
LCAibHJvX3RyaWVkIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9scm9fdHJpZWQsICIjIG9m
IExSTyB0cmllcyIpOworI2lmZGVmIEhOX0xST19ISVdBVAorCVNZU0NUTF9BRERfUFJPQyhjdHgs
IGNoaWxkLCBPSURfQVVUTywgImxyb19oaXdhdCIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RMRkxB
R19SVywgc2MsIDAsIGhuX2xyb19oaXdhdF9zeXNjdGwsCisJICAgICJJIiwgIkxSTyBoaWdoIHdh
dGVybWFyayIpOworI2VuZGlmCisJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8s
ICJ0cnVzdF9ob3N0dGNwIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl90cnVzdF9ob3N0dGNw
LCAwLAorCSAgICAiVHJ1c3QgdGNwIHNlZ2VtZW50IHZlcmlmaWNhdGlvbiBvbiBob3N0IHNpZGUs
ICIKKwkgICAgIndoZW4gY3N1bSBpbmZvIGlzIG1pc3NpbmciKTsKKwlTWVNDVExfQUREX1VMT05H
KGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiY3N1bV9pcCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+
aG5fY3N1bV9pcCwgIlJYQ1NVTSBJUCIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwg
T0lEX0FVVE8sICJjc3VtX3RjcCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fY3N1bV90Y3As
ICJSWENTVU0gVENQIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywg
ImNzdW1fdHJ1c3RlZCIsCisJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fY3N1bV90cnVzdGVkLAor
CSAgICAiIyBvZiBUQ1Agc2VnZW1lbnRzIHRoYXQgd2UgdHJ1c3QgaG9zdCdzIGNzdW0gdmVyaWZp
Y2F0aW9uIik7CisKIAlyZXR1cm4gKDApOwogfQogCkBAIC0zODMsNiArNDQ4LDcgQEAKIHN0YXRp
YyBpbnQKIG5ldHZzY19kZXRhY2goZGV2aWNlX3QgZGV2KQogeworCXN0cnVjdCBobl9zb2Z0YyAq
c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJc3RydWN0IGh2X2RldmljZSAqaHZfZGV2aWNl
ID0gdm1idXNfZ2V0X2RldmN0eChkZXYpOyAKIAogCWlmIChib290dmVyYm9zZSkKQEAgLTQwMSw2
ICs0NjcsOCBAQAogCiAJaHZfcmZfb25fZGV2aWNlX3JlbW92ZShodl9kZXZpY2UsIEhWX1JGX05W
X0RFU1RST1lfQ0hBTk5FTCk7CiAKKwl0Y3BfbHJvX2ZyZWUoJnNjLT5obl9scm8pOworCiAJcmV0
dXJuICgwKTsKIH0KIApAQCAtODg3LDcgKzk1NSw3IEBACiAJc3RydWN0IG1idWYgKm1fbmV3Owog
CXN0cnVjdCBpZm5ldCAqaWZwOwogCWRldmljZV90IGRldiA9IGRldmljZV9jdHgtPmRldmljZTsK
LQlpbnQgc2l6ZTsKKwlpbnQgc2l6ZSwgZG9fbHJvID0gMDsKIAogCWlmIChzYyA9PSBOVUxMKSB7
CiAJCXJldHVybiAoMCk7IC8qIFRPRE86IEtZUyBob3cgY2FuIHRoaXMgYmUhICovCkBAIC05Mzgs
MTYgKzEwMDYsNTggQEAKIAkJaWYgKGNzdW1faW5mby0+cmVjZWl2ZS5pcF9jc3VtX3N1Y2NlZWRl
ZCkgewogCQkJbV9uZXctPm1fcGt0aGRyLmNzdW1fZmxhZ3MgfD0KIAkJCSAgICAoQ1NVTV9JUF9D
SEVDS0VEIHwgQ1NVTV9JUF9WQUxJRCk7CisJCQlzYy0+aG5fY3N1bV9pcCsrOwogCQl9CiAKIAkJ
LyogVENQIGNzdW0gb2ZmbG9hZCAqLwogCQlpZiAoY3N1bV9pbmZvLT5yZWNlaXZlLnRjcF9jc3Vt
X3N1Y2NlZWRlZCkgewogCQkJbV9uZXctPm1fcGt0aGRyLmNzdW1fZmxhZ3MgfD0KIAkJCSAgICAo
Q1NVTV9EQVRBX1ZBTElEIHwgQ1NVTV9QU0VVRE9fSERSKTsKIAkJCW1fbmV3LT5tX3BrdGhkci5j
c3VtX2RhdGEgPSAweGZmZmY7CisJCQlzYy0+aG5fY3N1bV90Y3ArKzsKKwkJfQorCisJCWlmIChj
c3VtX2luZm8tPnJlY2VpdmUuaXBfY3N1bV9zdWNjZWVkZWQgJiYKKwkJICAgIGNzdW1faW5mby0+
cmVjZWl2ZS50Y3BfY3N1bV9zdWNjZWVkZWQpCisJCQlkb19scm8gPSAxOworCX0gZWxzZSB7CisJ
CWNvbnN0IHN0cnVjdCBldGhlcl9oZWFkZXIgKmVoOworCQl1aW50MTZfdCBldHlwZTsKKwkJaW50
IGhvZmY7CisKKwkJaG9mZiA9IHNpemVvZigqZWgpOworCQlpZiAobV9uZXctPm1fbGVuIDwgaG9m
ZikKKwkJCWdvdG8gc2tpcDsKKwkJZWggPSBtdG9kKG1fbmV3LCBzdHJ1Y3QgZXRoZXJfaGVhZGVy
ICopOworCQlldHlwZSA9IG50b2hzKGVoLT5ldGhlcl90eXBlKTsKKwkJaWYgKGV0eXBlID09IEVU
SEVSVFlQRV9WTEFOKSB7CisJCQljb25zdCBzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIgKmV2bDsK
KworCQkJaG9mZiA9IHNpemVvZigqZXZsKTsKKwkJCWlmIChtX25ldy0+bV9sZW4gPCBob2ZmKQor
CQkJCWdvdG8gc2tpcDsKKwkJCWV2bCA9IG10b2QobV9uZXcsIHN0cnVjdCBldGhlcl92bGFuX2hl
YWRlciAqKTsKKwkJCWV0eXBlID0gbnRvaHMoZXZsLT5ldmxfcHJvdG8pOwogCQl9Ci0JfQogCisJ
CWlmIChldHlwZSA9PSBFVEhFUlRZUEVfSVApIHsKKwkJCWludCBwcjsKKworCQkJcHIgPSBobl9j
aGVja19pcGxlbihtX25ldywgaG9mZik7CisJCQlpZiAocHIgPT0gSVBQUk9UT19UQ1ApIHsKKwkJ
CQlpZiAoc2MtPmhuX3RydXN0X2hvc3R0Y3ApIHsKKwkJCQkJc2MtPmhuX2NzdW1fdHJ1c3RlZCsr
OworCQkJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQorCQkJCQkgICAoQ1NVTV9JUF9D
SEVDS0VEIHwgQ1NVTV9JUF9WQUxJRCB8CisJCQkJCSAgICBDU1VNX0RBVEFfVkFMSUQgfCBDU1VN
X1BTRVVET19IRFIpOworCQkJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9kYXRhID0gMHhmZmZmOwor
CQkJCX0KKwkJCQkvKiBSZWx5IG9uIFNXIGNzdW0gdmVyaWZpY2F0aW9uIHRob3VnaC4uLiAqLwor
CQkJCWRvX2xybyA9IDE7CisJCQl9CisJCX0KKwl9Citza2lwOgogCWlmICgocGFja2V0LT52bGFu
X3RjaSAhPSAwKSAmJgogCSAgICAoaWZwLT5pZl9jYXBlbmFibGUgJiBJRkNBUF9WTEFOX0hXVEFH
R0lORykgIT0gMCkgewogCQltX25ldy0+bV9wa3RoZHIuZXRoZXJfdnRhZyA9IHBhY2tldC0+dmxh
bl90Y2k7CkBAIC05NjEsMTIgKzEwNzEsMzcgQEAKIAogCWlmX2luY19jb3VudGVyKGlmcCwgSUZD
T1VOVEVSX0lQQUNLRVRTLCAxKTsKIAorCWlmICgoaWZwLT5pZl9jYXBlbmFibGUgJiBJRkNBUF9M
Uk8pICYmIGRvX2xybykgeworCQlzdHJ1Y3QgbHJvX2N0cmwgKmxybyA9ICZzYy0+aG5fbHJvOwor
CisJCWlmIChscm8tPmxyb19jbnQpIHsKKwkJCXNjLT5obl9scm9fdHJpZWQrKzsKKwkJCWlmICh0
Y3BfbHJvX3J4KGxybywgbV9uZXcsIDApID09IDApIHsKKwkJCQkvKiBET05FISAqLworCQkJCXJl
dHVybiAwOworCQkJfQorCQl9CisJfQorCiAJLyogV2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sg
aGVyZSwgc28gZG9uJ3QgcmVsZWFzZSBpdCAqLwogCSgqaWZwLT5pZl9pbnB1dCkoaWZwLCBtX25l
dyk7CiAKIAlyZXR1cm4gKDApOwogfQogCit2b2lkCituZXR2c2NfcmVjdl9yb2xsdXAoc3RydWN0
IGh2X2RldmljZSAqZGV2aWNlX2N0eCkKK3sKKwlobl9zb2Z0Y190ICpzYyA9IGRldmljZV9nZXRf
c29mdGMoZGV2aWNlX2N0eC0+ZGV2aWNlKTsKKwlzdHJ1Y3QgbHJvX2N0cmwgKmxybyA9ICZzYy0+
aG5fbHJvOworCXN0cnVjdCBscm9fZW50cnkgKnF1ZXVlZDsKKworCXdoaWxlICgocXVldWVkID0g
U0xJU1RfRklSU1QoJmxyby0+bHJvX2FjdGl2ZSkpICE9IE5VTEwpIHsKKwkJU0xJU1RfUkVNT1ZF
X0hFQUQoJmxyby0+bHJvX2FjdGl2ZSwgbmV4dCk7CisJCXRjcF9scm9fZmx1c2gobHJvLCBxdWV1
ZWQpOworCX0KK30KKwogLyoKICAqIFJ1bGVzIGZvciB1c2luZyBzYy0+dGVtcF91bnVzYWJsZToK
ICAqIDEuICBzYy0+dGVtcF91bnVzYWJsZSBjYW4gb25seSBiZSByZWFkIG9yIHdyaXR0ZW4gd2hp
bGUgaG9sZGluZyBOVl9MT0NLKCkKQEAgLTEwMjIsNyArMTE1NywxMyBAQAogCiAJCS8qIE9idGFp
biBhbmQgcmVjb3JkIHJlcXVlc3RlZCBNVFUgKi8KIAkJaWZwLT5pZl9tdHUgPSBpZnItPmlmcl9t
dHU7Ci0gCQkKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoYXQgTFJPIGhpZ2ggd2F0ZXJtYXJrIGlz
IHN0aWxsIHZhbGlkLAorCQkgKiBhZnRlciBNVFUgY2hhbmdlICh0aGUgMipNVFUgbGltaXQpLgor
CQkgKi8KKwkJaWYgKCFITl9MUk9fSElXQVRfSVNWQUxJRChzYywgc2MtPmhuX2xyb19oaXdhdCkp
CisJCQlobl9zZXRfbHJvX2hpd2F0KHNjLCBITl9MUk9fSElXQVRfTVRVTElNKGlmcCkpOworCiAJ
CWRvIHsKIAkJCU5WX0xPQ0soc2MpOwogCQkJaWYgKCFzYy0+dGVtcF91bnVzYWJsZSkgewpAQCAt
MTE0Nyw2ICsxMjg4LDggQEAKIAkJCQlpZnAtPmlmX2NhcGVuYWJsZSB8PSBJRkNBUF9SWENTVU07
CiAJCQl9CiAJCX0KKwkJaWYgKG1hc2sgJiBJRkNBUF9MUk8pCisJCQlpZnAtPmlmX2NhcGVuYWJs
ZSBePSBJRkNBUF9MUk87CiAKIAkJaWYgKG1hc2sgJiBJRkNBUF9UU080KSB7CiAJCQlpZnAtPmlm
X2NhcGVuYWJsZSBePSBJRkNBUF9UU080OwpAQCAtMTI5Miw2ICsxNDM1LDEwMiBAQAogfQogI2Vu
ZGlmCiAKKyNpZmRlZiBITl9MUk9fSElXQVQKK3N0YXRpYyBpbnQKK2huX2xyb19oaXdhdF9zeXNj
dGwoU1lTQ1RMX0hBTkRMRVJfQVJHUykKK3sKKwlzdHJ1Y3QgaG5fc29mdGMgKnNjID0gYXJnMTsK
KwlpbnQgaGl3YXQsIGVycm9yOworCisJaGl3YXQgPSBzYy0+aG5fbHJvX2hpd2F0OworCWVycm9y
ID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJmhpd2F0LCAwLCByZXEpOworCWlmIChlcnJvciB8
fCByZXEtPm5ld3B0ciA9PSBOVUxMKQorCQlyZXR1cm4gZXJyb3I7CisKKwlpZiAoIUhOX0xST19I
SVdBVF9JU1ZBTElEKHNjLCBoaXdhdCkpCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoc2MtPmhu
X2xyb19oaXdhdCAhPSBoaXdhdCkKKwkJaG5fc2V0X2xyb19oaXdhdChzYywgaGl3YXQpOworCXJl
dHVybiAwOworfQorI2VuZGlmCS8qIEhOX0xST19ISVdBVCAqLworCitzdGF0aWMgaW50Citobl9j
aGVja19pcGxlbihjb25zdCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGhvZmYpCit7CisJY29uc3Qgc3Ry
dWN0IGlwICppcDsKKwlpbnQgbGVuLCBpcGhsZW4sIGlwbGVuOworCWNvbnN0IHN0cnVjdCB0Y3Bo
ZHIgKnRoOworCWludCB0aG9mZjsJCQkJLyogVENQIGRhdGEgb2Zmc2V0ICovCisKKwlsZW4gPSBo
b2ZmICsgc2l6ZW9mKHN0cnVjdCBpcCk7CisKKwkvKiBUaGUgcGFja2V0IG11c3QgYmUgYXQgbGVh
c3QgdGhlIHNpemUgb2YgYW4gSVAgaGVhZGVyLiAqLworCWlmIChtLT5tX3BrdGhkci5sZW4gPCBs
ZW4pCisJCXJldHVybiBJUFBST1RPX0RPTkU7CisKKwkvKiBUaGUgZml4ZWQgSVAgaGVhZGVyIG11
c3QgcmVzaWRlIGNvbXBsZXRlbHkgaW4gdGhlIGZpcnN0IG1idWYuICovCisJaWYgKG0tPm1fbGVu
IDwgbGVuKQorCQlyZXR1cm4gSVBQUk9UT19ET05FOworCisJaXAgPSBtdG9kbyhtLCBob2ZmKTsK
KworCS8qIEJvdW5kIGNoZWNrIHRoZSBwYWNrZXQncyBzdGF0ZWQgSVAgaGVhZGVyIGxlbmd0aC4g
Ki8KKwlpcGhsZW4gPSBpcC0+aXBfaGwgPDwgMjsKKwlpZiAoaXBobGVuIDwgc2l6ZW9mKHN0cnVj
dCBpcCkpCQkvKiBtaW5pbXVtIGhlYWRlciBsZW5ndGggKi8KKwkJcmV0dXJuIElQUFJPVE9fRE9O
RTsKKworCS8qIFRoZSBmdWxsIElQIGhlYWRlciBtdXN0IHJlc2lkZSBjb21wbGV0ZWx5IGluIHRo
ZSBvbmUgbWJ1Zi4gKi8KKwlpZiAobS0+bV9sZW4gPCBob2ZmICsgaXBobGVuKQorCQlyZXR1cm4g
SVBQUk9UT19ET05FOworCisJaXBsZW4gPSBudG9ocyhpcC0+aXBfbGVuKTsKKworCS8qCisJICog
Q2hlY2sgdGhhdCB0aGUgYW1vdW50IG9mIGRhdGEgaW4gdGhlIGJ1ZmZlcnMgaXMgYXMKKwkgKiBh
dCBsZWFzdCBtdWNoIGFzIHRoZSBJUCBoZWFkZXIgd291bGQgaGF2ZSB1cyBleHBlY3QuCisJICov
CisJaWYgKG0tPm1fcGt0aGRyLmxlbiA8IGhvZmYgKyBpcGxlbikKKwkJcmV0dXJuIElQUFJPVE9f
RE9ORTsKKworCS8qCisJICogSWdub3JlIElQIGZyYWdtZW50cy4KKwkgKi8KKwlpZiAobnRvaHMo
aXAtPmlwX29mZikgJiAoSVBfT0ZGTUFTSyB8IElQX01GKSkKKwkJcmV0dXJuIElQUFJPVE9fRE9O
RTsKKworCS8qCisJICogVGhlIFRDUC9JUCBvciBVRFAvSVAgaGVhZGVyIG11c3QgYmUgZW50aXJl
bHkgY29udGFpbmVkIHdpdGhpbgorCSAqIHRoZSBmaXJzdCBmcmFnbWVudCBvZiBhIHBhY2tldC4K
KwkgKi8KKwlzd2l0Y2ggKGlwLT5pcF9wKSB7CisJY2FzZSBJUFBST1RPX1RDUDoKKwkJaWYgKGlw
bGVuIDwgaXBobGVuICsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpKQorCQkJcmV0dXJuIElQUFJPVE9f
RE9ORTsKKwkJaWYgKG0tPm1fbGVuIDwgaG9mZiArIGlwaGxlbiArIHNpemVvZihzdHJ1Y3QgdGNw
aGRyKSkKKwkJCXJldHVybiBJUFBST1RPX0RPTkU7CisJCXRoID0gKGNvbnN0IHN0cnVjdCB0Y3Bo
ZHIgKikoKGNvbnN0IHVpbnQ4X3QgKilpcCArIGlwaGxlbik7CisJCXRob2ZmID0gdGgtPnRoX29m
ZiA8PCAyOworCQlpZiAodGhvZmYgPCBzaXplb2Yoc3RydWN0IHRjcGhkcikgfHwgdGhvZmYgKyBp
cGhsZW4gPiBpcGxlbikKKwkJCXJldHVybiBJUFBST1RPX0RPTkU7CisJCWlmIChtLT5tX2xlbiA8
IGhvZmYgKyBpcGhsZW4gKyB0aG9mZikKKwkJCXJldHVybiBJUFBST1RPX0RPTkU7CisJCWJyZWFr
OworCWNhc2UgSVBQUk9UT19VRFA6CisJCWlmIChpcGxlbiA8IGlwaGxlbiArIHNpemVvZihzdHJ1
Y3QgdWRwaGRyKSkKKwkJCXJldHVybiBJUFBST1RPX0RPTkU7CisJCWlmIChtLT5tX2xlbiA8IGhv
ZmYgKyBpcGhsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpCisJCQlyZXR1cm4gSVBQUk9UT19E
T05FOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZiAoaXBsZW4gPCBpcGhsZW4pCisJCQlyZXR1
cm4gSVBQUk9UT19ET05FOworCQlicmVhazsKKwl9CisJcmV0dXJuIGlwLT5pcF9wOworfQorCiBz
dGF0aWMgZGV2aWNlX21ldGhvZF90IG5ldHZzY19tZXRob2RzW10gPSB7CiAgICAgICAgIC8qIERl
dmljZSBpbnRlcmZhY2UgKi8KICAgICAgICAgREVWTUVUSE9EKGRldmljZV9wcm9iZSwgICAgICAg
ICBuZXR2c2NfcHJvYmUpLApkaWZmIC0tZ2l0IGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25l
dF92c2MuaCBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKLS0tIGEvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaAorKysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2Mv
aHZfbmV0X3ZzYy5oCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSA8c3lzL2xvY2suaD4KICNp
bmNsdWRlIDxzeXMvbWFsbG9jLmg+CiAjaW5jbHVkZSA8c3lzL3N4Lmg+CisjaW5jbHVkZSA8bmV0
aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvdGNwX2xyby5oPgogCiAjaW5jbHVkZSA8ZGV2
L2h5cGVydi9pbmNsdWRlL2h5cGVydi5oPgogCkBAIC05OTMsNiArOTk1LDE3IEBACiAJaW50ICAg
ICAgICAgICAgIHRlbXBfdW51c2FibGU7CiAJc3RydWN0IGh2X2RldmljZSAgKmhuX2Rldl9vYmo7
CiAJbmV0dnNjX2RldiAgCSpuZXRfZGV2OworCisJc3RydWN0IGxyb19jdHJsCWhuX2xybzsKKwlp
bnQJCWhuX2xyb19oaXdhdDsKKworCS8qIFRydXN0IHRjcCBzZWdtZW50cyB2ZXJpZmljYXRpb24g
b24gaG9zdCBzaWRlICovCisJaW50CQlobl90cnVzdF9ob3N0dGNwOworCisJdV9sb25nCQlobl9j
c3VtX2lwOworCXVfbG9uZwkJaG5fY3N1bV90Y3A7CisJdV9sb25nCQlobl9jc3VtX3RydXN0ZWQ7
CisJdV9sb25nCQlobl9scm9fdHJpZWQ7CiB9IGhuX3NvZnRjX3Q7CiAKIApkaWZmIC0tZ2l0IGEv
c3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuYyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZz
Yy9odl9uZXRfdnNjLmMKLS0tIGEvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuYwor
KysgYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5jCkBAIC05MTksNiArOTE5LDcg
QEAKIAkgKi8KIAlodl9udl9vbl9yZWNlaXZlX2NvbXBsZXRpb24oZGV2aWNlLCB2bV94ZmVyX3Bh
Z2VfcGt0LT5kLnRyYW5zYWN0aW9uX2lkLAogCSAgICBzdGF0dXMpOworCWh2X3JmX3JlY2VpdmVf
cm9sbHVwKG5ldF9kZXYpOwogfQogCiAvKgoK


--b1_fb8f18771ce435cb4febbc9532fb01a6--



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