From owner-freebsd-virtualization@freebsd.org Thu Feb 18 07:38:28 2016 Return-Path: Delivered-To: freebsd-virtualization@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 063FCAACE15 for ; Thu, 18 Feb 2016 07:38:28 +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 E58F5B1F for ; Thu, 18 Feb 2016 07:38:27 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id E284D332153F; Thu, 18 Feb 2016 07:38:27 +0000 (UTC) Date: Thu, 18 Feb 2016 07:38:27 +0000 To: freebsd-virtualization@freebsd.org From: Phabricator Reply-to: D5283+333+c52ee0049dc2f53f@reviews.freebsd.org Subject: [Differential] [Closed] D5283: hyperv/hn: Split TX ring data structure out of softc Message-ID: <5fe3909765837cc3654563d26e6c1901@localhost.localdomain> 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: D5283: hyperv/hn: Split TX ring data structure out of softc 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: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: NzMzOGZkYjcxOGQ0MjYzYmE0NWE0Nzc3NTExIFbFdPM= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_5fe3909765837cc3654563d26e6c1901" X-Mailman-Approved-At: Thu, 18 Feb 2016 12:18:38 +0000 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.20 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2016 07:38:28 -0000 --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--