From owner-freebsd-net@freebsd.org Tue Jan 26 03:26:42 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 50766A46338 for ; Tue, 26 Jan 2016 03:26:42 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id 3CAA49FC for ; Tue, 26 Jan 2016 03:26:42 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id 3BACD11621; Tue, 26 Jan 2016 03:26:42 +0000 (UTC) Date: Tue, 26 Jan 2016 03:26:42 +0000 To: freebsd-net@freebsd.org From: "sepherosa_gmail.com (Sepherosa Ziehau)" Reply-to: D5074+325+039f9366f641074c@reviews.freebsd.org Subject: [Differential] [Request, 136 lines] D5074: hyperv/hn: Improve sending performance Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , Thread-Topic: D5074: hyperv/hn: Improve sending performance X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: Precedence: bulk Thread-Index: OTJkNGFhNzAyM2VjMmE0MjY4ZjllZTUzYmRk MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_2f2d29c51593edd58ffa1ccd9e9d8153" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2016 03:26:42 -0000 --b1_2f2d29c51593edd58ffa1ccd9e9d8153 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 - Avoid main lock contention by trylock for if_start, if that fails, schedule TX taskqueue for if_start - Don't do direct sending if the packet to be sent is large, e.g. TSO packet. This change gives me stable 9.1Gbps TCP sending performance w/ TSO over a 10Gbe directly connected network (the performance fluctuated between 4Gbps and 9Gbps before this commit). It also improves non-TSO TCP sending performance a lot. REVISION DETAIL https://reviews.freebsd.org/D5074 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-net-list --b1_2f2d29c51593edd58ffa1ccd9e9d8153 Content-Type: text/x-patch; charset=utf-8; name="D5074.12702.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5074.12702.patch" ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2Qu YyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYwotLS0gYS9z eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rl di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0xNDYsNiArMTQ2LDgg QEAKICNkZWZpbmUgSE5fVFhfREFUQV9TRUdDTlRfTUFYCQlcCiAgICAgKE5FVFZTQ19QQUNLRVRf TUFYUEFHRSAtIEhWX1JGX05VTV9UWF9SRVNFUlZFRF9QQUdFX0JVRlMpCiAKKyNkZWZpbmUgSE5f RElSRUNUX1RYX1NJWkVfREVGCQkxMjgKKwogc3RydWN0IGhuX3R4ZGVzYyB7CiAJU0xJU1RfRU5U UlkoaG5fdHhkZXNjKSBsaW5rOwogCXN0cnVjdCBtYnVmCSptOwpAQCAtMTk0LDYgKzE5Niw3IEBA CiAjZGVmaW5lIE5WX0xPQ0tfSU5JVChfc2MsIF9uYW1lKSBcCiAJICAgIG10eF9pbml0KCYoX3Nj KS0+aG5fbG9jaywgX25hbWUsIE1UWF9ORVRXT1JLX0xPQ0ssIE1UWF9ERUYpCiAjZGVmaW5lIE5W X0xPQ0soX3NjKQkJbXR4X2xvY2soJihfc2MpLT5obl9sb2NrKQorI2RlZmluZSBOVl9UUllMT0NL KF9zYykJCW10eF90cnlsb2NrKCYoX3NjKS0+aG5fbG9jaykKICNkZWZpbmUgTlZfTE9DS19BU1NF UlQoX3NjKQltdHhfYXNzZXJ0KCYoX3NjKS0+aG5fbG9jaywgTUFfT1dORUQpCiAjZGVmaW5lIE5W X1VOTE9DSyhfc2MpCQltdHhfdW5sb2NrKCYoX3NjKS0+aG5fbG9jaykKICNkZWZpbmUgTlZfTE9D S19ERVNUUk9ZKF9zYykJbXR4X2Rlc3Ryb3koJihfc2MpLT5obl9sb2NrKQpAQCAtMjE5LDE1ICsy MjIsMjAgQEAKIHN0YXRpYyBpbnQgaG5fdHhfY2hpbW5leV9zaXplID0gMDsKIFRVTkFCTEVfSU5U KCJkZXYuaG4udHhfY2hpbW5leV9zaXplIiwgJmhuX3R4X2NoaW1uZXlfc2l6ZSk7CiAKKy8qIExp bWl0IHRoZSBzaXplIG9mIHBhY2tldCBmb3IgZGlyZWN0IHRyYW5zbWlzc2lvbiAqLworc3RhdGlj IGludCBobl9kaXJlY3RfdHhfc2l6ZSA9IEhOX0RJUkVDVF9UWF9TSVpFX0RFRjsKK1RVTkFCTEVf SU5UKCJkZXYuaG4uZGlyZWN0X3R4X3NpemUiLCAmaG5fZGlyZWN0X3R4X3NpemUpOworCiAvKgog ICogRm9yd2FyZCBkZWNsYXJhdGlvbnMKICAqLwogc3RhdGljIHZvaWQgaG5fc3RvcChobl9zb2Z0 Y190ICpzYyk7CiBzdGF0aWMgdm9pZCBobl9pZmluaXRfbG9ja2VkKGhuX3NvZnRjX3QgKnNjKTsK IHN0YXRpYyB2b2lkIGhuX2lmaW5pdCh2b2lkICp4c2MpOwogc3RhdGljIGludCAgaG5faW9jdGwo c3RydWN0IGlmbmV0ICppZnAsIHVfbG9uZyBjbWQsIGNhZGRyX3QgZGF0YSk7Ci1zdGF0aWMgdm9p ZCBobl9zdGFydF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApOworc3RhdGljIGludCBobl9zdGFy dF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGludCBsZW4pOwogc3RhdGljIHZvaWQgaG5fc3Rh cnQoc3RydWN0IGlmbmV0ICppZnApOworc3RhdGljIHZvaWQgaG5fc3RhcnRfdHhlb2Yoc3RydWN0 IGlmbmV0ICppZnApOwogc3RhdGljIGludCBobl9pZm1lZGlhX3VwZChzdHJ1Y3QgaWZuZXQgKmlm cCk7CiBzdGF0aWMgdm9pZCBobl9pZm1lZGlhX3N0cyhzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0 IGlmbWVkaWFyZXEgKmlmbXIpOwogI2lmZGVmIEhOX0xST19ISVdBVApAQCAtMjM3LDYgKzI0NSw4 IEBACiBzdGF0aWMgaW50IGhuX2NoZWNrX2lwbGVuKGNvbnN0IHN0cnVjdCBtYnVmICosIGludCk7 CiBzdGF0aWMgaW50IGhuX2NyZWF0ZV90eF9yaW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpOwogc3Rh dGljIHZvaWQgaG5fZGVzdHJveV90eF9yaW5nKHN0cnVjdCBobl9zb2Z0YyAqc2MpOworc3RhdGlj IHZvaWQgaG5fc3RhcnRfdGFza2Z1bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyk7CitzdGF0aWMg dm9pZCBobl90eGVvZl90YXNrZnVuYyh2b2lkICp4c2MsIGludCBwZW5kaW5nKTsKIAogc3RhdGlj IF9faW5saW5lIHZvaWQKIGhuX3NldF9scm9faGl3YXQoc3RydWN0IGhuX3NvZnRjICpzYywgaW50 IGhpd2F0KQpAQCAtMzg0LDYgKzM5NCwxNCBAQAogCXNjLT5obl9kZXYgPSBkZXY7CiAJc2MtPmhu X2xyb19oaXdhdCA9IEhOX0xST19ISVdBVF9ERUY7CiAJc2MtPmhuX3RydXN0X2hvc3R0Y3AgPSBo bl90cnVzdF9ob3N0dGNwOworCXNjLT5obl9kaXJlY3RfdHhfc2l6ZSA9IGhuX2RpcmVjdF90eF9z aXplOworCisJc2MtPmhuX3R4X3Rhc2txID0gdGFza3F1ZXVlX2NyZWF0ZV9mYXN0KCJobl90eCIs IE1fV0FJVE9LLAorCSAgICB0YXNrcXVldWVfdGhyZWFkX2VucXVldWUsICZzYy0+aG5fdHhfdGFz a3EpOworCXRhc2txdWV1ZV9zdGFydF90aHJlYWRzKCZzYy0+aG5fdHhfdGFza3EsIDEsIFBJX05F VCwgIiVzIHR4IiwKKwkgICAgZGV2aWNlX2dldF9uYW1ldW5pdChkZXYpKTsKKwlUQVNLX0lOSVQo JnNjLT5obl9zdGFydF90YXNrLCAwLCBobl9zdGFydF90YXNrZnVuYywgc2MpOworCVRBU0tfSU5J VCgmc2MtPmhuX3R4ZW9mX3Rhc2ssIDAsIGhuX3R4ZW9mX3Rhc2tmdW5jLCBzYyk7CiAKIAllcnJv ciA9IGhuX2NyZWF0ZV90eF9yaW5nKHNjKTsKIAlpZiAoZXJyb3IpCkBAIC01MjQsNiArNTQyLDkg QEAKIAlTWVNDVExfQUREX1BST0MoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9jaGltbmV5X3Np emUiLAogCSAgICBDVExUWVBFX0lOVCB8IENUTEZMQUdfUlcsIHNjLCAwLCBobl90eF9jaGltbmV5 X3NpemVfc3lzY3RsLAogCSAgICAiSSIsICJDaGltbmV5IHNlbmQgcGFja2V0IHNpemUgbGltaXQi KTsKKwlTWVNDVExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImRpcmVjdF90eF9zaXpl IiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl9kaXJlY3RfdHhfc2l6ZSwgMCwKKwkgICAgIlNp emUgb2YgdGhlIHBhY2tldCBmb3IgZGlyZWN0IHRyYW5zbWlzc2lvbiIpOwogCiAJaWYgKHVuaXQg PT0gMCkgewogCQlzdHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpkY19jdHg7CkBAIC01NDgsNiArNTY5 LDkgQEAKIAkJU1lTQ1RMX0FERF9JTlQoZGNfY3R4LCBkY19jaGlsZCwgT0lEX0FVVE8sICJ0c29f bWF4bGVuIiwKIAkJICAgIENUTEZMQUdfUkQsICZobl90c29fbWF4bGVuLCAwLCAiVFNPIGJ1cnN0 IGxpbWl0Iik7CiAjZW5kaWYKKwkJU1lTQ1RMX0FERF9JTlQoZGNfY3R4LCBkY19jaGlsZCwgT0lE X0FVVE8sICJkaXJlY3RfdHhfc2l6ZSIsCisJCSAgICBDVExGTEFHX1JELCAmaG5fZGlyZWN0X3R4 X3NpemUsIDAsCisJCSAgICAiU2l6ZSBvZiB0aGUgcGFja2V0IGZvciBkaXJlY3QgdHJhbnNtaXNz aW9uIik7CiAJfQogCiAJcmV0dXJuICgwKTsKQEAgLTU4Myw2ICs2MDcsMTAgQEAKIAogCWh2X3Jm X29uX2RldmljZV9yZW1vdmUoaHZfZGV2aWNlLCBIVl9SRl9OVl9ERVNUUk9ZX0NIQU5ORUwpOwog CisJdGFza3F1ZXVlX2RyYWluKHNjLT5obl90eF90YXNrcSwgJnNjLT5obl9zdGFydF90YXNrKTsK Kwl0YXNrcXVldWVfZHJhaW4oc2MtPmhuX3R4X3Rhc2txLCAmc2MtPmhuX3R4ZW9mX3Rhc2spOwor CXRhc2txdWV1ZV9mcmVlKHNjLT5obl90eF90YXNrcSk7CisKIAlpZm1lZGlhX3JlbW92ZWFsbCgm c2MtPmhuX21lZGlhKTsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJdGNw X2xyb19mcmVlKCZzYy0+aG5fbHJvKTsKQEAgLTczMywyNCArNzYxLDE5IEBACiBuZXR2c2NfY2hh bm5lbF9yb2xsdXAoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eCkKIHsKIAlzdHJ1Y3QgaG5f c29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXZpY2VfY3R4LT5kZXZpY2UpOwotCXN0cnVj dCBpZm5ldCAqaWZwOwogCiAJaWYgKCFzYy0+aG5fdHhlb2YpCiAJCXJldHVybjsKIAogCXNjLT5o bl90eGVvZiA9IDA7Ci0JaWZwID0gc2MtPmhuX2lmcDsKLQlOVl9MT0NLKHNjKTsKLQlpZnAtPmlm X2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOwotCWhuX3N0YXJ0X2xvY2tlZChpZnApOwot CU5WX1VOTE9DSyhzYyk7CisJaG5fc3RhcnRfdHhlb2Yoc2MtPmhuX2lmcCk7CiB9CiAKIC8qCiAg KiBTdGFydCBhIHRyYW5zbWl0IG9mIG9uZSBvciBtb3JlIHBhY2tldHMKICAqLwotc3RhdGljIHZv aWQKLWhuX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCkKK3N0YXRpYyBpbnQKK2huX3N0 YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgaW50IGxlbikKIHsKIAlobl9zb2Z0Y190ICpz YyA9IGlmcC0+aWZfc29mdGM7CiAJc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eCA9IHZtYnVz X2dldF9kZXZjdHgoc2MtPmhuX2Rldik7CkBAIC03NjgsNyArNzkxLDcgQEAKIAogCWlmICgoaWZw LT5pZl9kcnZfZmxhZ3MgJiAoSUZGX0RSVl9SVU5OSU5HIHwgSUZGX0RSVl9PQUNUSVZFKSkgIT0K IAkgICAgSUZGX0RSVl9SVU5OSU5HKQotCQlyZXR1cm47CisJCXJldHVybiAwOwogCiAJd2hpbGUg KCFJRlFfRFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkpIHsKIAkJYnVzX2RtYV9zZWdtZW50X3Qg c2Vnc1tITl9UWF9EQVRBX1NFR0NOVF9NQVhdOwpAQCAtNzgxLDExICs4MDQsMjEgQEAKIAkJaWYg KG1faGVhZCA9PSBOVUxMKQogCQkJYnJlYWs7CiAKKwkJaWYgKGxlbiA+IDAgJiYgbV9oZWFkLT5t X3BrdGhkci5sZW4gPiBsZW4pIHsKKwkJCS8qCisJCQkgKiBUaGlzIHNlbmRpbmcgY291bGQgYmUg dGltZSBjb25zdW1pbmc7IGxldCBjYWxsZXJzCisJCQkgKiBkaXNwYXRjaCB0aGlzIHBhY2tldCBz ZW5kaW5nIChhbmQgc2VuZGluZyBvZiBhbnkKKwkJCSAqIGZvbGxvd2luZyB1cCBwYWNrZXRzKSB0 byB0eCB0YXNrcXVldWUuCisJCQkgKi8KKwkJCUlGX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtX2hl YWQpOworCQkJcmV0dXJuIDE7CisJCX0KKwogCQl0eGQgPSBobl90eGRlc2NfZ2V0KHNjKTsKIAkJ aWYgKHR4ZCA9PSBOVUxMKSB7CiAJCQlzYy0+aG5fbm9fdHhkZXNjcysrOwogCQkJSUZfUFJFUEVO RCgmaWZwLT5pZl9zbmQsIG1faGVhZCk7Ci0JCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJW X09BQ1RJVkU7CisJCQlhdG9taWNfc2V0X2ludCgmaWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZf T0FDVElWRSk7CiAJCQlicmVhazsKIAkJfQogCkBAIC0xMDYwLDEwICsxMDkzLDExIEBACiAKIAkJ CXNjLT5obl9zZW5kX2ZhaWxlZCsrOwogCQkJSUZfUFJFUEVORCgmaWZwLT5pZl9zbmQsIG1faGVh ZCk7Ci0JCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJVkU7CisJCQlhdG9taWNf c2V0X2ludCgmaWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZfT0FDVElWRSk7CiAJCQlicmVhazsK IAkJfQogCX0KKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTE1NTUsNyArMTU4OSw4IEBACiAJaWYg KGJvb3R2ZXJib3NlKQogCQlwcmludGYoIiBDbG9zaW5nIERldmljZSAuLi5cbiIpOwogCi0JaWZw LT5pZl9kcnZfZmxhZ3MgJj0gfihJRkZfRFJWX1JVTk5JTkcgfCBJRkZfRFJWX09BQ1RJVkUpOwor CWF0b21pY19jbGVhcl9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLAorCSAgICAoSUZGX0RSVl9SVU5O SU5HIHwgSUZGX0RSVl9PQUNUSVZFKSk7CiAJaWZfbGlua19zdGF0ZV9jaGFuZ2UoaWZwLCBMSU5L X1NUQVRFX0RPV04pOwogCXNjLT5obl9pbml0ZG9uZSA9IDA7CiAKQEAgLTE1NzEsMTMgKzE2MDYs NDMgQEAKIAlobl9zb2Z0Y190ICpzYzsKIAogCXNjID0gaWZwLT5pZl9zb2Z0YzsKLQlOVl9MT0NL KHNjKTsKLQlpZiAoc2MtPnRlbXBfdW51c2FibGUpIHsKKwlpZiAoTlZfVFJZTE9DSyhzYykpIHsK KwkJaW50IHNjaGVkOworCisJCXNjaGVkID0gaG5fc3RhcnRfbG9ja2VkKGlmcCwgc2MtPmhuX2Rp cmVjdF90eF9zaXplKTsKIAkJTlZfVU5MT0NLKHNjKTsKLQkJcmV0dXJuOworCQlpZiAoIXNjaGVk KQorCQkJcmV0dXJuOworCX0KKwl0YXNrcXVldWVfZW5xdWV1ZV9mYXN0KHNjLT5obl90eF90YXNr cSwgJnNjLT5obl9zdGFydF90YXNrKTsKK30KKworc3RhdGljIHZvaWQKK2huX3N0YXJ0X3R4ZW9m KHN0cnVjdCBpZm5ldCAqaWZwKQoreworCWhuX3NvZnRjX3QgKnNjOworCisJc2MgPSBpZnAtPmlm X3NvZnRjOworCWlmIChOVl9UUllMT0NLKHNjKSkgeworCQlpbnQgc2NoZWQ7CisKKwkJYXRvbWlj X2NsZWFyX2ludCgmaWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZfT0FDVElWRSk7CisJCXNjaGVk ID0gaG5fc3RhcnRfbG9ja2VkKGlmcCwgc2MtPmhuX2RpcmVjdF90eF9zaXplKTsKKwkJTlZfVU5M T0NLKHNjKTsKKwkJaWYgKHNjaGVkKSB7CisJCQl0YXNrcXVldWVfZW5xdWV1ZV9mYXN0KHNjLT5o bl90eF90YXNrcSwKKwkJCSAgICAmc2MtPmhuX3N0YXJ0X3Rhc2spOworCQl9CisJfSBlbHNlIHsK KwkJLyoKKwkJICogUmVsZWFzZSB0aGUgT0FDVElWRSBlYXJsaWVyLCB3aXRoIHRoZSBob3BlLCB0 aGF0CisJCSAqIG90aGVycyBjb3VsZCBjYXRjaCB1cC4gIFRoZSB0YXNrIHdpbGwgY2xlYXIgdGhl CisJCSAqIGZsYWcgYWdhaW4gd2l0aCB0aGUgTlZfTE9DSyB0byBhdm9pZCBwb3NzaWJsZQorCQkg KiByYWNlcy4KKwkJICovCisJCWF0b21pY19jbGVhcl9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJ RkZfRFJWX09BQ1RJVkUpOworCQl0YXNrcXVldWVfZW5xdWV1ZV9mYXN0KHNjLT5obl90eF90YXNr cSwgJnNjLT5obl90eGVvZl90YXNrKTsKIAl9Ci0JaG5fc3RhcnRfbG9ja2VkKGlmcCk7Ci0JTlZf VU5MT0NLKHNjKTsKIH0KIAogLyoKQEAgLTE2MDQsOCArMTY2OSw4IEBACiAJfSBlbHNlIHsKIAkJ c2MtPmhuX2luaXRkb25lID0gMTsKIAl9Ci0JaWZwLT5pZl9kcnZfZmxhZ3MgfD0gSUZGX0RSVl9S VU5OSU5HOwotCWlmcC0+aWZfZHJ2X2ZsYWdzICY9IH5JRkZfRFJWX09BQ1RJVkU7CisJYXRvbWlj X2NsZWFyX2ludCgmaWZwLT5pZl9kcnZfZmxhZ3MsIElGRl9EUlZfT0FDVElWRSk7CisJYXRvbWlj X3NldF9pbnQoJmlmcC0+aWZfZHJ2X2ZsYWdzLCBJRkZfRFJWX1JVTk5JTkcpOwogCWlmX2xpbmtf c3RhdGVfY2hhbmdlKGlmcCwgTElOS19TVEFURV9VUCk7CiB9CiAKQEAgLTE5MDcsNiArMTk3Miwy OCBAQAogCW10eF9kZXN0cm95KCZzYy0+aG5fdHhsaXN0X3NwaW4pOwogfQogCitzdGF0aWMgdm9p ZAoraG5fc3RhcnRfdGFza2Z1bmModm9pZCAqeHNjLCBpbnQgcGVuZGluZyBfX3VudXNlZCkKK3sK KwlzdHJ1Y3QgaG5fc29mdGMgKnNjID0geHNjOworCisJTlZfTE9DSyhzYyk7CisJaG5fc3RhcnRf bG9ja2VkKHNjLT5obl9pZnAsIDApOworCU5WX1VOTE9DSyhzYyk7Cit9CisKK3N0YXRpYyB2b2lk Citobl90eGVvZl90YXNrZnVuYyh2b2lkICp4c2MsIGludCBwZW5kaW5nIF9fdW51c2VkKQorewor CXN0cnVjdCBobl9zb2Z0YyAqc2MgPSB4c2M7CisJc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+aG5f aWZwOworCisJTlZfTE9DSyhzYyk7CisJYXRvbWljX2NsZWFyX2ludCgmaWZwLT5pZl9kcnZfZmxh Z3MsIElGRl9EUlZfT0FDVElWRSk7CisJaG5fc3RhcnRfbG9ja2VkKGlmcCwgMCk7CisJTlZfVU5M T0NLKHNjKTsKK30KKwogc3RhdGljIGRldmljZV9tZXRob2RfdCBuZXR2c2NfbWV0aG9kc1tdID0g ewogICAgICAgICAvKiBEZXZpY2UgaW50ZXJmYWNlICovCiAgICAgICAgIERFVk1FVEhPRChkZXZp Y2VfcHJvYmUsICAgICAgICAgbmV0dnNjX3Byb2JlKSwKZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlw ZXJ2L25ldHZzYy9odl9uZXRfdnNjLmggYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3Zz Yy5oCi0tLSBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKKysrIGIvc3lzL2Rl di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuaApAQCAtMzksOSArMzksMTEgQEAKICNkZWZpbmUg X19IVl9ORVRfVlNDX0hfXwogCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lz L2tlcm5lbC5oPgogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjaW5jbHVkZSA8c3lzL21hbGxvYy5o PgogI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHN5cy90YXNrcXVldWUuaD4KICNp bmNsdWRlIDxzeXMvc3guaD4KIAogI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CkBAIC0xMDA4LDE4 ICsxMDEwLDIzIEBACiAJc3RydWN0IGh2X2RldmljZSAgKmhuX2Rldl9vYmo7CiAJbmV0dnNjX2Rl diAgCSpuZXRfZGV2OwogCi0JaW50CQlobl90eGRlc2NfY250OwogCXN0cnVjdCBobl90eGRlc2Mg KmhuX3R4ZGVzYzsKIAlidXNfZG1hX3RhZ190CWhuX3R4X2RhdGFfZHRhZzsKIAlidXNfZG1hX3Rh Z190CWhuX3R4X3JuZGlzX2R0YWc7CiAJaW50CQlobl90eF9jaGltbmV5X3NpemU7CiAJaW50CQlo bl90eF9jaGltbmV5X21heDsKIAogCXN0cnVjdCBtdHgJaG5fdHhsaXN0X3NwaW47CiAJc3RydWN0 IGhuX3R4ZGVzY19saXN0IGhuX3R4bGlzdDsKKwlpbnQJCWhuX3R4ZGVzY19jbnQ7CiAJaW50CQlo bl90eGRlc2NfYXZhaWw7CiAJaW50CQlobl90eGVvZjsKIAorCWludAkJaG5fZGlyZWN0X3R4X3Np emU7CisJc3RydWN0IHRhc2txdWV1ZSAqaG5fdHhfdGFza3E7CisJc3RydWN0IHRhc2sJaG5fc3Rh cnRfdGFzazsKKwlzdHJ1Y3QgdGFzawlobl90eGVvZl90YXNrOworCiAJc3RydWN0IGxyb19jdHJs CWhuX2xybzsKIAlpbnQJCWhuX2xyb19oaXdhdDsKIAoK --b1_2f2d29c51593edd58ffa1ccd9e9d8153--