From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?utf-8?B?amFja193YW5n?=" Subject: =?utf-8?B?W1BBVENIIFYyIDIvM10gcG04MDAxOmVuaGFuY2UgSU9NQiBwcm9jZXNzIG1vZHVsZXM=?= Date: Thu, 5 Nov 2009 22:33:35 +0800 Message-ID: <200911052233311096725@usish.com> References: <200910281755.n9SHtGrV004494@hera.kernel.org>, <200910302144471408205@usish.com>, <200910302152552653057@usish.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====001_Dragon367386153327_=====" Return-path: Received: from sr-smtp.usish.com ([210.5.144.203]:53819 "EHLO sr-smtp.usish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756393AbZKEOcy (ORCPT ); Thu, 5 Nov 2009 09:32:54 -0500 Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: =?utf-8?B?SmFtZXMgQm90dG9tbGV5?= Cc: =?utf-8?B?bGludXgtc2NzaQ==?= , =?utf-8?B?amFjayB3YW5n?= , =?utf-8?B?bGluZGFyX2xpdQ==?= , =?utf-8?B?YW9xaW5neXVu?= This is a multi-part message in MIME format. --=====001_Dragon367386153327_===== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit We set interupt cascading count of outbound queue to get better performance, correct some unnecessary return values and some noisy print messages. patch attached. ------------------ jack_wang 2009-11-05 --=====001_Dragon367386153327_===== Content-Type: application/octet-stream; name="0002-Enhance-IOMB-process-modules.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Enhance-IOMB-process-modules.patch" RnJvbSA3ZWY3MTRjNWI1OTk2NWY5YzJlNTlkMjcxMzJkOWM3YTIyNTBlYzAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNrIFdhbmcgPGphY2tfd2FuZ0B1c2lzaC5jb20+CkRhdGU6 IFRodSwgNSBOb3YgMjAwOSAyMTo0Njo1OCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMi8zXSBFbmhh bmNlIElPTUIgcHJvY2VzcyBtb2R1bGVzCgpTaWduZWQtb2ZmLWJ5OiBKYWNrIFdhbmcgPGphY2tf d2FuZ0B1c2lzaC5jb20+ClNpZ25lZC1vZmYtYnk6IExpbmRhciBMaXUgPGxpbmRhcl9saXVAdXNp c2guY29tPgotLS0KIGRyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jIHwgIDI0NSArKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9zY3NpL3BtODAwMS9w bTgwMDFfc2FzLmggfCAgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDE0MSBpbnNlcnRpb25zKCsp LCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgw MDFfaHdpLmMgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYwppbmRleCBkMThjMjYz Li5hM2RlMzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYwor KysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYwpAQCAtMzQxLDcgKzM0MSw3IEBA IHVwZGF0ZV9vdXRibmRfcXVldWVfdGFibGUoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAx X2hhLCBpbnQgbnVtYmVyKQogICogQHBtODAwMV9oYSA6IG91ciBoYmEgY2FyZCBpbmZvbWF0aW9u CiAgKiBAc2hpZnRWYWx1ZSA6IHNoaWZ0aW5nIHZhbHVlIGluIG1lbW9yeSBiYXIuCiAgKi8KLXN0 YXRpYyB1MzIgYmFyNF9zaGlmdChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHUz MiBzaGlmdFZhbHVlKQorc3RhdGljIGludCBiYXI0X3NoaWZ0KHN0cnVjdCBwbTgwMDFfaGJhX2lu Zm8gKnBtODAwMV9oYSwgdTMyIHNoaWZ0VmFsdWUpCiB7CiAJdTMyIHJlZ1ZhbDsKIAl1MzIgbWF4 X3dhaXRfY291bnQ7CkBAIC0xMjE3LDcgKzEyMTcsNyBAQCBwbTgwMDFfY2hpcF9pbnRlcnJ1cHRf ZGlzYWJsZShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpCiAgKiBAbWVzc2FnZVNp emU6IHRoZSBtZXNzYWdlIHNpemUgb2YgdGhpcyB0cmFuc2Zlciwgbm9ybWFsbHkgaXQgaXMgNjQg Ynl0ZXMKICAqIEBtZXNzYWdlUHRyOiB0aGUgcG9pbnRlciB0byBtZXNzYWdlLgogICovCi1zdGF0 aWMgdTMyIG1waV9tc2dfZnJlZV9nZXQoc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1 bGFyUSwKK3N0YXRpYyBpbnQgbXBpX21zZ19mcmVlX2dldChzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90 YWJsZSAqY2lyY3VsYXJRLAogCQkJICAgIHUxNiBtZXNzYWdlU2l6ZSwgdm9pZCAqKm1lc3NhZ2VQ dHIpCiB7CiAJdTMyIG9mZnNldCwgY29uc3VtZXJfaW5kZXg7CkBAIC0xMjU3LDcgKzEyNTcsNyBA QCBzdGF0aWMgdTMyIG1waV9tc2dfZnJlZV9nZXQoc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUg KmNpcmN1bGFyUSwKICAqIEBvcENvZGU6IHRoZSBvcGVyYXRpb24gY29kZSByZXByZXNlbnRzIGNv bW1hbmRzIHdoaWNoIExMREQgYW5kIGZ3IHJlY29nbml6ZWQuCiAgKiBAcGF5bG9hZDogdGhlIGNv bW1hbmQgcGF5bG9hZCBvZiBlYWNoIG9wZXJhdGlvbiBjb21tYW5kLgogICovCi1zdGF0aWMgdTMy IG1waV9idWlsZF9jbWQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAorc3RhdGlj IGludCBtcGlfYnVpbGRfY21kKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAkJ CSBzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJRLAogCQkJIHUzMiBvcENvZGUs IHZvaWQgKnBheWxvYWQpCiB7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBzdGF0aWMgdTMyIG1waV9i dWlsZF9jbWQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCQkJcG04MDAxX3By aW50aygiTm8gZnJlZSBtcGkgYnVmZmVyIFxuIikpOwogCQlyZXR1cm4gLTE7CiAJfQotCisJQlVH X09OKCFwYXlsb2FkKTsKIAkvKkNvcHkgdG8gdGhlIHBheWxvYWQqLwogCW1lbWNweShwTWVzc2Fn ZSwgcGF5bG9hZCwgKDY0IC0gc2l6ZW9mKHN0cnVjdCBtcGlfbXNnX2hkcikpKTsKIApAQCAtMTI4 OSwxMCArMTI4OSwzMCBAQCBzdGF0aWMgdTMyIG1waV9idWlsZF9jbWQoc3RydWN0IHBtODAwMV9o YmFfaW5mbyAqcG04MDAxX2hhLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTMyIG1waV9tc2df ZnJlZV9zZXQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAorc3RhdGljIHUzMiBt cGlfbXNnX2ZyZWVfc2V0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAq cE1zZywKIAkJCSAgICBzdHJ1Y3Qgb3V0Ym91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUSwgdTgg YmMpCiB7CiAJdTMyIHByb2R1Y2VyX2luZGV4OworCXN0cnVjdCBtcGlfbXNnX2hkciAqbXNnSGVh ZGVyOworCXN0cnVjdCBtcGlfbXNnX2hkciAqcE91dEJvdW5kTXNnSGVhZGVyOworCisJbXNnSGVh ZGVyID0gKHN0cnVjdCBtcGlfbXNnX2hkciAqKShwTXNnIC0gc2l6ZW9mKHN0cnVjdCBtcGlfbXNn X2hkcikpOworCXBPdXRCb3VuZE1zZ0hlYWRlciA9IChzdHJ1Y3QgbXBpX21zZ19oZHIgKikoY2ly Y3VsYXJRLT5iYXNlX3ZpcnQgKworCQkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4ICogNjQpOwor CWlmIChwT3V0Qm91bmRNc2dIZWFkZXIgIT0gbXNnSGVhZGVyKSB7CisJCVBNODAwMV9GQUlMX0RC RyhwbTgwMDFfaGEsCisJCQlwbTgwMDFfcHJpbnRrKCJjb25zdW1lcl9pZHggPSAlZCBtc2dIZWFk ZXIgPSAlcFxuIiwKKwkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4LCBtc2dIZWFkZXIpKTsKKwor CQkvKiBVcGRhdGUgdGhlIHByb2R1Y2VyIGluZGV4IGZyb20gU1BDICovCisJCXByb2R1Y2VyX2lu ZGV4ID0gcG04MDAxX3JlYWRfMzIoY2lyY3VsYXJRLT5waV92aXJ0KTsKKwkJY2lyY3VsYXJRLT5w cm9kdWNlcl9pbmRleCA9IGNwdV90b19sZTMyKHByb2R1Y2VyX2luZGV4KTsKKwkJUE04MDAxX0ZB SUxfREJHKHBtODAwMV9oYSwKKwkJCXBtODAwMV9wcmludGsoImNvbnN1bWVyX2lkeCA9ICVkIHBy b2R1Y2VyX2luZGV4ID0gJWQiCisJCQkibXNnSGVhZGVyID0gJXBcbiIsIGNpcmN1bGFyUS0+Y29u c3VtZXJfaWR4LAorCQkJY2lyY3VsYXJRLT5wcm9kdWNlcl9pbmRleCwgbXNnSGVhZGVyKSk7CisJ CXJldHVybiAwOworCX0KIAkvKiBmcmVlIHRoZSBjaXJjdWxhciBxdWV1ZSBidWZmZXIgZWxlbWVu dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlKi8KIAljaXJjdWxhclEtPmNvbnN1bWVyX2lk eCA9IChjaXJjdWxhclEtPmNvbnN1bWVyX2lkeCArIGJjKSAlIDI1NjsKIAkvKiB1cGRhdGUgdGhl IENJIG9mIG91dGJvdW5kIHF1ZXVlICovCkBAIC0xMzI0LDggKzEzNDQsNiBAQCBzdGF0aWMgdTMy IG1waV9tc2dfY29uc3VtZShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJZG8g ewogCQkvKiBJZiB0aGVyZSBhcmUgbm90LXlldC1kZWxpdmVyZWQgbWVzc2FnZXMgLi4uICovCiAJ CWlmIChjaXJjdWxhclEtPnByb2R1Y2VyX2luZGV4ICE9IGNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4 KSB7Ci0JCQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwKLQkJCQlwbTgwMDFfcHJpbnRrKCJwcm9j ZXNzIGFuIElPTUJcbiIpKTsKIAkJCS8qR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBjaXJjdWxhciBx dWV1ZSBidWZmZXIgZWxlbWVudCovCiAJCQltc2dIZWFkZXIgPSAoc3RydWN0IG1waV9tc2dfaGRy ICopCiAJCQkJKGNpcmN1bGFyUS0+YmFzZV92aXJ0ICsKQEAgLTEzNDIsMzQgKzEzNjAsNDMgQEAg c3RhdGljIHUzMiBtcGlfbXNnX2NvbnN1bWUoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAx X2hhLAogCQkJCQkqcEJDID0gKHU4KSgobXNnSGVhZGVyX3RtcCA+PiAyNCkgJgogCQkJCQkJMHgx Zik7CiAJCQkJCVBNODAwMV9JT19EQkcocG04MDAxX2hhLAotCQkJCQkJcG04MDAxX3ByaW50aygi bXBpX21zZ19jb25zdW1lIgotCQkJCQkJIjogQ0k9JWQgUEk9JWQgbXNnSGVhZGVyPSV4XG4iLAor CQkJCQkJcG04MDAxX3ByaW50aygiOiBDST0lZCBQST0lZCAiCisJCQkJCQkibXNnSGVhZGVyPSV4 XG4iLAogCQkJCQkJY2lyY3VsYXJRLT5jb25zdW1lcl9pZHgsCiAJCQkJCQljaXJjdWxhclEtPnBy b2R1Y2VyX2luZGV4LAogCQkJCQkJbXNnSGVhZGVyX3RtcCkpOwogCQkJCQlyZXR1cm4gTVBJX0lP X1NUQVRVU19TVUNDRVNTOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXUzMiBwcm9kdWNlcl9pbmRleDsK LQkJCQkJdm9pZCAqcGlfdmlydCA9IGNpcmN1bGFyUS0+cGlfdmlydDsKLQkJCQkJLyogZnJlZSB0 aGUgY2lyY3VsYXIgcXVldWUgYnVmZmVyCi0JCQkJCWVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aCB0 aGUgbWVzc2FnZSovCiAJCQkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4ID0KIAkJCQkJCShjaXJj dWxhclEtPmNvbnN1bWVyX2lkeCArCiAJCQkJCQkoKG1zZ0hlYWRlcl90bXAgPj4gMjQpICYgMHgx ZikpCiAJCQkJCQklIDI1NjsKKwkJCQkJbXNnSGVhZGVyX3RtcCA9IDA7CisJCQkJCXBtODAwMV93 cml0ZV8zMihtc2dIZWFkZXIsIDAsIDApOwogCQkJCQkvKiB1cGRhdGUgdGhlIENJIG9mIG91dGJv dW5kIHF1ZXVlICovCiAJCQkJCXBtODAwMV9jdzMyKHBtODAwMV9oYSwKIAkJCQkJCWNpcmN1bGFy US0+Y2lfcGNpX2JhciwKIAkJCQkJCWNpcmN1bGFyUS0+Y2lfb2Zmc2V0LAogCQkJCQkJY2lyY3Vs YXJRLT5jb25zdW1lcl9pZHgpOwotCQkJCQkvKiBVcGRhdGUgdGhlIHByb2R1Y2VyIGluZGV4IGZy b20gU1BDICovCi0JCQkJCXByb2R1Y2VyX2luZGV4ID0KLQkJCQkJCXBtODAwMV9yZWFkXzMyKHBp X3ZpcnQpOwotCQkJCQljaXJjdWxhclEtPnByb2R1Y2VyX2luZGV4ID0KLQkJCQkJCWNwdV90b19s ZTMyKHByb2R1Y2VyX2luZGV4KTsKIAkJCQl9Ci0JCQl9IGVsc2UKKwkJCX0gZWxzZSB7CisJCQkJ Y2lyY3VsYXJRLT5jb25zdW1lcl9pZHggPQorCQkJCQkoY2lyY3VsYXJRLT5jb25zdW1lcl9pZHgg KworCQkJCQkoKG1zZ0hlYWRlcl90bXAgPj4gMjQpICYgMHgxZikpICUgMjU2OworCQkJCW1zZ0hl YWRlcl90bXAgPSAwOworCQkJCXBtODAwMV93cml0ZV8zMihtc2dIZWFkZXIsIDAsIDApOworCQkJ CS8qIHVwZGF0ZSB0aGUgQ0kgb2Ygb3V0Ym91bmQgcXVldWUgKi8KKwkJCQlwbTgwMDFfY3czMihw bTgwMDFfaGEsIGNpcmN1bGFyUS0+Y2lfcGNpX2JhciwKKwkJCQkJY2lyY3VsYXJRLT5jaV9vZmZz ZXQsCisJCQkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4KTsKIAkJCQlyZXR1cm4gTVBJX0lPX1NU QVRVU19GQUlMOworCQkJfQorCQl9IGVsc2UgeworCQkJdTMyIHByb2R1Y2VyX2luZGV4OworCQkJ dm9pZCAqcGlfdmlydCA9IGNpcmN1bGFyUS0+cGlfdmlydDsKKwkJCS8qIFVwZGF0ZSB0aGUgcHJv ZHVjZXIgaW5kZXggZnJvbSBTUEMgKi8KKwkJCXByb2R1Y2VyX2luZGV4ID0gcG04MDAxX3JlYWRf MzIocGlfdmlydCk7CisJCQljaXJjdWxhclEtPnByb2R1Y2VyX2luZGV4ID0gY3B1X3RvX2xlMzIo cHJvZHVjZXJfaW5kZXgpOwogCQl9CiAJfSB3aGlsZSAoY2lyY3VsYXJRLT5wcm9kdWNlcl9pbmRl eCAhPSBjaXJjdWxhclEtPmNvbnN1bWVyX2lkeCk7CiAJLyogd2hpbGUgd2UgZG9uJ3QgaGF2ZSBh bnkgbW9yZSBub3QteWV0LWRlbGl2ZXJlZCBtZXNzYWdlICovCkBAIC0xNDQxLDcgKzE0NjgsNyBA QCBzdGF0aWMgaW50IHBtODAwMV9oYW5kbGVfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhLCB2b2lkICpkYXRhLAogICogU28gd2Ugd2lsbCB0ZWxsIHRoZSBjYWxsZXIgd2hv IG1heWJlIHdhaXRpbmcgdGhlIHJlc3VsdCB0byB0ZWxsIHVwcGVyIGxheWVyCiAgKiB0aGF0IHRo ZSB0YXNrIGhhcyBiZWVuIGZpbmlzaGVkLgogICovCi1zdGF0aWMgaW50CitzdGF0aWMgdm9pZAog bXBpX3NzcF9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSAsIHZv aWQgKnBpb21iKQogewogCXN0cnVjdCBzYXNfdGFzayAqdDsKQEAgLTE0NjEsMTQgKzE0ODgsMTMg QEAgbXBpX3NzcF9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSAs IHZvaWQgKnBpb21iKQogCXBtODAwMV9kZXYgPSBjY2ItPmRldmljZTsKIAlwYXJhbSA9IGxlMzJf dG9fY3B1KHBzc3BQYXlsb2FkLT5wYXJhbSk7CiAKLQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwg cG04MDAxX3ByaW50aygiT1BDX09VQl9TU1BfQ09NUFxuIikpOwogCXQgPSBjY2ItPnRhc2s7CiAK LQlpZiAoc3RhdHVzKQorCWlmIChzdGF0dXMgJiYgc3RhdHVzICE9IElPX1VOREVSRkxPVykKIAkJ UE04MDAxX0ZBSUxfREJHKHBtODAwMV9oYSwKIAkJCXBtODAwMV9wcmludGsoInNhcyBJTyBzdGF0 dXMgMHgleFxuIiwgc3RhdHVzKSk7CiAJaWYgKHVubGlrZWx5KCF0IHx8ICF0LT5sbGRkX3Rhc2sg fHwgIXQtPmRldikpCi0JCXJldHVybiAtMTsKKwkJcmV0dXJuOwogCXRzID0gJnQtPnRhc2tfc3Rh dHVzOwogCXN3aXRjaCAoc3RhdHVzKSB7CiAJY2FzZSBJT19TVUNDRVNTOgpAQCAtMTU0MSw3ICsx NTY3LDcgQEAgbXBpX3NzcF9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAw MV9oYSAsIHZvaWQgKnBpb21iKQogCQkJcG04MDAxX3ByaW50aygiSU9fT1BFTl9DTlhfRVJST1Jf QlJFQUtcbiIpKTsKIAkJdHMtPnJlc3AgPSBTQVNfVEFTS19DT01QTEVURTsKIAkJdHMtPnN0YXQg PSBTQVNfT1BFTl9SRUpFQ1Q7Ci0JCXRzLT5vcGVuX3Jlal9yZWFzb24gPSBTQVNfT1JFSl9SU1ZE X0NPTlQwOworCQl0cy0+b3Blbl9yZWpfcmVhc29uID0gU0FTX09SRUpfUlNWRF9SRVRSWTsKIAkJ YnJlYWs7CiAJY2FzZSBJT19PUEVOX0NOWF9FUlJPUl9JVF9ORVhVU19MT1NTOgogCQlQTTgwMDFf SU9fREJHKHBtODAwMV9oYSwKQEAgLTE1ODEsNiArMTYwNyw3IEBAIG1waV9zc3BfY29tcGxldGlv bihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIAkJCXBt ODAwMV9wcmludGsoIklPX1hGRVJfRVJST1JfTkFLX1JFQ0VJVkVEXG4iKSk7CiAJCXRzLT5yZXNw ID0gU0FTX1RBU0tfQ09NUExFVEU7CiAJCXRzLT5zdGF0ID0gU0FTX09QRU5fUkVKRUNUOworCQl0 cy0+b3Blbl9yZWpfcmVhc29uID0gU0FTX09SRUpfUlNWRF9SRVRSWTsKIAkJYnJlYWs7CiAJY2Fz ZSBJT19YRkVSX0VSUk9SX0FDS19OQUtfVElNRU9VVDoKIAkJUE04MDAxX0lPX0RCRyhwbTgwMDFf aGEsCkBAIC0xNjU2LDcgKzE2ODMsNyBAQCBtcGlfc3NwX2NvbXBsZXRpb24oc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJCWJyZWFrOwogCX0KIAlQTTgw MDFfSU9fREJHKHBtODAwMV9oYSwKLQkJcG04MDAxX3ByaW50aygic2NzaV9zYXR1cyA9ICV4IFxu ICIsCisJCXBtODAwMV9wcmludGsoInNjc2lfc3RhdHVzID0gJXggXG4gIiwKIAkJcHNzcFBheWxv YWQtPnNzcF9yZXNwX2l1LnN0YXR1cykpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZ0LT50YXNrX3N0 YXRlX2xvY2ssIGZsYWdzKTsKIAl0LT50YXNrX3N0YXRlX2ZsYWdzICY9IH5TQVNfVEFTS19TVEFU RV9QRU5ESU5HOwpAQCAtMTY3NSwxMSArMTcwMiwxMCBAQCBtcGlfc3NwX2NvbXBsZXRpb24oc3Ry dWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJCW1iKCk7Lyog aW4gb3JkZXIgdG8gZm9yY2UgQ1BVIG9yZGVyaW5nICovCiAJCXQtPnRhc2tfZG9uZSh0KTsKIAl9 Ci0JcmV0dXJuIDA7CiB9CiAKIC8qU2VlIHRoZSBjb21tZW50cyBmb3IgbXBpX3NzcF9jb21wbGV0 aW9uICovCi1zdGF0aWMgaW50IG1waV9zc3BfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCitzdGF0aWMgdm9pZCBtcGlfc3NwX2V2ZW50KHN0cnVj dCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSAsIHZvaWQgKnBpb21iKQogewogCXN0cnVjdCBz YXNfdGFzayAqdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMTcwMCw3ICsxNzI2LDcgQEAg c3RhdGljIGludCBtcGlfc3NwX2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9o YSAsIHZvaWQgKnBpb21iKQogCQlQTTgwMDFfRkFJTF9EQkcocG04MDAxX2hhLAogCQkJcG04MDAx X3ByaW50aygic2FzIElPIHN0YXR1cyAweCV4XG4iLCBldmVudCkpOwogCWlmICh1bmxpa2VseSgh dCB8fCAhdC0+bGxkZF90YXNrIHx8ICF0LT5kZXYpKQotCQlyZXR1cm4gLTE7CisJCXJldHVybjsK IAl0cyA9ICZ0LT50YXNrX3N0YXR1czsKIAlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwKIAkJcG04 MDAxX3ByaW50aygicG9ydF9pZCA9ICV4LGRldmljZV9pZCA9ICV4XG4iLApAQCAtMTc0Nyw3ICsx NzczLDcgQEAgc3RhdGljIGludCBtcGlfc3NwX2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8g KnBtODAwMV9oYSAsIHZvaWQgKnBpb21iKQogCQkJcG04MDAxX3ByaW50aygiSU9fT1BFTl9DTlhf RVJST1JfQlJFQUtcbiIpKTsKIAkJdHMtPnJlc3AgPSBTQVNfVEFTS19DT01QTEVURTsKIAkJdHMt PnN0YXQgPSBTQVNfT1BFTl9SRUpFQ1Q7Ci0JCXRzLT5vcGVuX3Jlal9yZWFzb24gPSBTQVNfT1JF Sl9SU1ZEX0NPTlQwOworCQl0cy0+b3Blbl9yZWpfcmVhc29uID0gU0FTX09SRUpfUlNWRF9SRVRS WTsKIAkJYnJlYWs7CiAJY2FzZSBJT19PUEVOX0NOWF9FUlJPUl9JVF9ORVhVU19MT1NTOgogCQlQ TTgwMDFfSU9fREJHKHBtODAwMV9oYSwKQEAgLTE3ODcsNiArMTgxMyw3IEBAIHN0YXRpYyBpbnQg bXBpX3NzcF9ldmVudChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpw aW9tYikKIAkJCXBtODAwMV9wcmludGsoIklPX1hGRVJfRVJST1JfTkFLX1JFQ0VJVkVEXG4iKSk7 CiAJCXRzLT5yZXNwID0gU0FTX1RBU0tfQ09NUExFVEU7CiAJCXRzLT5zdGF0ID0gU0FTX09QRU5f UkVKRUNUOworCQl0cy0+b3Blbl9yZWpfcmVhc29uID0gU0FTX09SRUpfUlNWRF9SRVRSWTsKIAkJ YnJlYWs7CiAJY2FzZSBJT19YRkVSX0VSUk9SX0FDS19OQUtfVElNRU9VVDoKIAkJUE04MDAxX0lP X0RCRyhwbTgwMDFfaGEsCkBAIC0xODQwLDcgKzE4NjcsNyBAQCBzdGF0aWMgaW50IG1waV9zc3Bf ZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJ Y2FzZSBJT19YRkVSX0NNRF9GUkFNRV9JU1NVRUQ6CiAJCVBNODAwMV9JT19EQkcocG04MDAxX2hh LAogCQkJcG04MDAxX3ByaW50aygiICBJT19YRkVSX0NNRF9GUkFNRV9JU1NVRURcbiIpKTsKLQkJ cmV0dXJuIDA7CisJCXJldHVybjsKIAlkZWZhdWx0OgogCQlQTTgwMDFfSU9fREJHKHBtODAwMV9o YSwKIAkJCXBtODAwMV9wcmludGsoIlVua25vd24gc3RhdHVzIDB4JXhcbiIsIGV2ZW50KSk7CkBA IC0xODY2LDExICsxODkzLDEwIEBAIHN0YXRpYyBpbnQgbXBpX3NzcF9ldmVudChzdHJ1Y3QgcG04 MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIAkJbWIoKTsvKiBpbiBvcmRl ciB0byBmb3JjZSBDUFUgb3JkZXJpbmcgKi8KIAkJdC0+dGFza19kb25lKHQpOwogCX0KLQlyZXR1 cm4gMDsKIH0KIAogLypTZWUgdGhlIGNvbW1lbnRzIGZvciBtcGlfc3NwX2NvbXBsZXRpb24gKi8K LXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVjdCBwbTgw MDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpCiB7CiAJc3RydWN0IHNhc190YXNr ICp0OwpAQCAtMTg5OCw3ICsxOTI0LDcgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04 MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKQogCQlQTTgwMDFfRkFJTF9EQkco cG04MDAxX2hhLAogCQkJcG04MDAxX3ByaW50aygic2F0YSBJTyBzdGF0dXMgMHgleFxuIiwgc3Rh dHVzKSk7CiAJaWYgKHVubGlrZWx5KCF0IHx8ICF0LT5sbGRkX3Rhc2sgfHwgIXQtPmRldikpCi0J CXJldHVybiAtMTsKKwkJcmV0dXJuOwogCiAJc3dpdGNoIChzdGF0dXMpIHsKIAljYXNlIElPX1NV Q0NFU1M6CkBAIC0yMDE1LDcgKzIwNDEsNyBAQCBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVjdCBw bTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpCiAJCQlwbTgwMDFfY2NiX3Rh c2tfZnJlZShwbTgwMDFfaGEsIHQsIGNjYiwgdGFnKTsKIAkJCW1iKCk7LyppbiBvcmRlciB0byBm b3JjZSBDUFUgb3JkZXJpbmcqLwogCQkJdC0+dGFza19kb25lKHQpOwotCQkJcmV0dXJuIDA7CisJ CQlyZXR1cm47CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBJT19PUEVOX0NOWF9FUlJPUl9CQURfREVT VElOQVRJT046CkBAIC0yMDMzLDcgKzIwNTksNyBAQCBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVj dCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpCiAJCQlwbTgwMDFfY2Ni X3Rhc2tfZnJlZShwbTgwMDFfaGEsIHQsIGNjYiwgdGFnKTsKIAkJCW1iKCk7LypkaXR0byovCiAJ CQl0LT50YXNrX2RvbmUodCk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJldHVybjsKIAkJfQogCQlicmVh azsKIAljYXNlIElPX09QRU5fQ05YX0VSUk9SX0NPTk5FQ1RJT05fUkFURV9OT1RfU1VQUE9SVEVE OgpAQCAtMjA1OSw3ICsyMDg1LDcgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKQogCQkJcG04MDAxX2NjYl90YXNrX2Zy ZWUocG04MDAxX2hhLCB0LCBjY2IsIHRhZyk7CiAJCQltYigpOy8qIGRpdHRvKi8KIAkJCXQtPnRh c2tfZG9uZSh0KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuOwogCQl9CiAJCWJyZWFrOwogCWNh c2UgSU9fT1BFTl9DTlhfRVJST1JfV1JPTkdfREVTVElOQVRJT046CkBAIC0yMTI0LDcgKzIxNTAs NyBAQCBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9o YSwgdm9pZCAqcGlvbWIpCiAJCQlwbTgwMDFfY2NiX3Rhc2tfZnJlZShwbTgwMDFfaGEsIHQsIGNj YiwgdGFnKTsKIAkJCW1iKCk7LypkaXR0byovCiAJCQl0LT50YXNrX2RvbmUodCk7Ci0JCQlyZXR1 cm4gMDsKKwkJCXJldHVybjsKIAkJfQogCQlicmVhazsKIAljYXNlIElPX0RTX0lOX1JFQ09WRVJZ OgpAQCAtMjE0Niw3ICsyMTcyLDcgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKQogCQkJcG04MDAxX2NjYl90YXNrX2Zy ZWUocG04MDAxX2hhLCB0LCBjY2IsIHRhZyk7CiAJCQltYigpOy8qZGl0dG8qLwogCQkJdC0+dGFz a19kb25lKHQpOwotCQkJcmV0dXJuIDA7CisJCQlyZXR1cm47CiAJCX0KIAkJYnJlYWs7CiAJY2Fz ZSBJT19PUEVOX0NOWF9FUlJPUl9IV19SRVNPVVJDRV9CVVNZOgpAQCAtMjE4MCwxMSArMjIwNiwx MCBAQCBtcGlfc2F0YV9jb21wbGV0aW9uKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9o YSwgdm9pZCAqcGlvbWIpCiAJCW1iKCk7LyogZGl0dG8gKi8KIAkJdC0+dGFza19kb25lKHQpOwog CX0KLQlyZXR1cm4gMDsKIH0KIAogLypTZWUgdGhlIGNvbW1lbnRzIGZvciBtcGlfc3NwX2NvbXBs ZXRpb24gKi8KLXN0YXRpYyBpbnQgbXBpX3NhdGFfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5m byAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCitzdGF0aWMgdm9pZCBtcGlfc2F0YV9ldmVudChz dHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIHsKIAlzdHJ1 Y3Qgc2FzX3Rhc2sgKnQ7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTIyMDUsNyArMjIzMCw3 IEBAIHN0YXRpYyBpbnQgbXBpX3NhdGFfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04 MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJCVBNODAwMV9GQUlMX0RCRyhwbTgwMDFfaGEsCiAJCQlw bTgwMDFfcHJpbnRrKCJzYXRhIElPIHN0YXR1cyAweCV4XG4iLCBldmVudCkpOwogCWlmICh1bmxp a2VseSghdCB8fCAhdC0+bGxkZF90YXNrIHx8ICF0LT5kZXYpKQotCQlyZXR1cm4gLTE7CisJCXJl dHVybjsKIAl0cyA9ICZ0LT50YXNrX3N0YXR1czsKIAlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwK IAkJcG04MDAxX3ByaW50aygicG9ydF9pZCA9ICV4LGRldmljZV9pZCA9ICV4XG4iLApAQCAtMjI2 OCw3ICsyMjkzLDcgQEAgc3RhdGljIGludCBtcGlfc2F0YV9ldmVudChzdHJ1Y3QgcG04MDAxX2hi YV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIAkJCXBtODAwMV9jY2JfdGFza19mcmVl KHBtODAwMV9oYSwgdCwgY2NiLCB0YWcpOwogCQkJbWIoKTsvKmRpdHRvKi8KIAkJCXQtPnRhc2tf ZG9uZSh0KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuOwogCQl9CiAJCWJyZWFrOwogCWNhc2Ug SU9fT1BFTl9DTlhfRVJST1JfQkFEX0RFU1RJTkFUSU9OOgpAQCAtMjM4MiwxMSArMjQwNywxMCBA QCBzdGF0aWMgaW50IG1waV9zYXRhX2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAw MV9oYSAsIHZvaWQgKnBpb21iKQogCQltYigpOy8qIGluIG9yZGVyIHRvIGZvcmNlIENQVSBvcmRl cmluZyAqLwogCQl0LT50YXNrX2RvbmUodCk7CiAJfQotCXJldHVybiAwOwogfQogCiAvKlNlZSB0 aGUgY29tbWVudHMgZm9yIG1waV9zc3BfY29tcGxldGlvbiAqLwotc3RhdGljIGludAorc3RhdGlj IHZvaWQKIG1waV9zbXBfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFf aGEsIHZvaWQgKnBpb21iKQogewogCXUzMiBwYXJhbTsKQEAgLTI0MTIsNyArMjQzNiw3IEBAIG1w aV9zbXBfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQg KnBpb21iKQogCQlQTTgwMDFfRkFJTF9EQkcocG04MDAxX2hhLAogCQkJcG04MDAxX3ByaW50aygi c21wIElPIHN0YXR1cyAweCV4XG4iLCBzdGF0dXMpKTsKIAlpZiAodW5saWtlbHkoIXQgfHwgIXQt PmxsZGRfdGFzayB8fCAhdC0+ZGV2KSkKLQkJcmV0dXJuIC0xOworCQlyZXR1cm47CiAKIAlzd2l0 Y2ggKHN0YXR1cykgewogCWNhc2UgSU9fU1VDQ0VTUzoKQEAgLTI1ODUsNyArMjYwOSw2IEBAIG1w aV9zbXBfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQg KnBpb21iKQogCQltYigpOy8qIGluIG9yZGVyIHRvIGZvcmNlIENQVSBvcmRlcmluZyAqLwogCQl0 LT50YXNrX2RvbmUodCk7CiAJfQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjY4 Miw4ICsyNzA1LDggQEAgbXBpX2dldF9udm1kX3Jlc3Aoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhLCB2b2lkICpwaW9tYikKIAkJCXBtODAwMV9wcmludGsoIkdldCBOVk1EIHN1Y2Nl c3MsIElSPTAsIGRhdGFMZW49JWRcbiIsCiAJCQkoZGxlbl9zdGF0dXMgJiBOVk1EX0xFTikgPj4g MjQpKTsKIAl9Ci0JbWVtY3B5KCh2b2lkICopKGZ3X2NvbnRyb2xfY29udGV4dC0+dXNyQWRkciks Ci0JCSh2b2lkICopKHBtODAwMV9oYS0+bWVtb3J5TWFwLnJlZ2lvbltOVk1EXS52aXJ0X3B0ciks CisJbWVtY3B5KGZ3X2NvbnRyb2xfY29udGV4dC0+dXNyQWRkciwKKwkJcG04MDAxX2hhLT5tZW1v cnlNYXAucmVnaW9uW05WTURdLnZpcnRfcHRyLAogCQlmd19jb250cm9sX2NvbnRleHQtPmxlbik7 CiAJY29tcGxldGUocG04MDAxX2hhLT5udm1kX2NvbXBsZXRpb24pOwogCWNjYi0+dGFzayA9IE5V TEw7CkBAIC0zMTg0LDI4ICszMjA3LDI4IEBAIG1waV90YXNrX2Fib3J0X3Jlc3Aoc3RydWN0IHBt ODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYikKIAkJKHN0cnVjdCB0YXNrX2Fi b3J0X3Jlc3AgKikocGlvbWIgKyA0KTsKIAljY2IgPSAmcG04MDAxX2hhLT5jY2JfaW5mb1twUGF5 bG9hZC0+dGFnXTsKIAl0ID0gY2NiLT50YXNrOwotCXRzID0gJnQtPnRhc2tfc3RhdHVzOwogCi0J aWYgKHQgPT0gTlVMTCkKLQkJcmV0dXJuIC0xOwogCiAJc3RhdHVzID0gbGUzMl90b19jcHUocFBh eWxvYWQtPnN0YXR1cyk7CiAJdGFnID0gbGUzMl90b19jcHUocFBheWxvYWQtPnRhZyk7CiAJc2Nw ID0gbGUzMl90b19jcHUocFBheWxvYWQtPnNjcCk7CiAJUE04MDAxX0lPX0RCRyhwbTgwMDFfaGEs CiAJCXBtODAwMV9wcmludGsoIiBzdGF0dXMgPSAweCV4XG4iLCBzdGF0dXMpKTsKKwlpZiAodCA9 PSBOVUxMKQorCQlyZXR1cm4gLTE7CisJdHMgPSAmdC0+dGFza19zdGF0dXM7CiAJaWYgKHN0YXR1 cyAhPSAwKQogCQlQTTgwMDFfRkFJTF9EQkcocG04MDAxX2hhLAotCQkJcG04MDAxX3ByaW50aygi dGFzayBhYm9ydCBmYWlsZWQgdGFnID0gMHgleCwiCi0JCQkiIHNjcD0gMHgleFxuIiwgdGFnLCBz Y3ApKTsKKwkJCXBtODAwMV9wcmludGsoInRhc2sgYWJvcnQgZmFpbGVkIHN0YXR1cyAweCV4ICwi CisJCQkidGFnID0gMHgleCwgc2NwPSAweCV4XG4iLCBzdGF0dXMsIHRhZywgc2NwKSk7CiAJc3dp dGNoIChzdGF0dXMpIHsKIAljYXNlIElPX1NVQ0NFU1M6Ci0JCVBNODAwMV9JT19EQkcocG04MDAx X2hhLCBwbTgwMDFfcHJpbnRrKCJJT19TVUNDRVNTXG4iKSk7CisJCVBNODAwMV9FSF9EQkcocG04 MDAxX2hhLCBwbTgwMDFfcHJpbnRrKCJJT19TVUNDRVNTXG4iKSk7CiAJCXRzLT5yZXNwID0gU0FT X1RBU0tfQ09NUExFVEU7CiAJCXRzLT5zdGF0ID0gU0FNX0dPT0Q7CiAJCWJyZWFrOwogCWNhc2Ug SU9fTk9UX1ZBTElEOgotCQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygi SU9fTk9UX1ZBTElEXG4iKSk7CisJCVBNODAwMV9FSF9EQkcocG04MDAxX2hhLCBwbTgwMDFfcHJp bnRrKCJJT19OT1RfVkFMSURcbiIpKTsKIAkJdHMtPnJlc3AgPSBUTUZfUkVTUF9GVU5DX0ZBSUxF RDsKIAkJYnJlYWs7CiAJfQpAQCAtMzQ0Myw3ICszNDY2LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19vbmVfaW9tYihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21i KQogCXUzMiBwSGVhZGVyID0gKHUzMikqKHUzMiAqKXBpb21iOwogCXU4IG9wYyA9ICh1OCkoKGxl MzJfdG9fY3B1KHBIZWFkZXIpKSAmIDB4RkZGKTsKIAotCVBNODAwMV9NU0dfREJHKHBtODAwMV9o YSwgcG04MDAxX3ByaW50aygicHJvY2Vzc19vbmVfaW9tYjpcbiIpKTsKKwlQTTgwMDFfTVNHX0RC RyhwbTgwMDFfaGEsIHBtODAwMV9wcmludGsoInByb2Nlc3Nfb25lX2lvbWI6IikpOwogCiAJc3dp dGNoIChvcGMpIHsKIAljYXNlIE9QQ19PVUJfRUNITzoKQEAgLTM2MDksMTcgKzM2MzIsMTYgQEAg c3RhdGljIGludCBwcm9jZXNzX29xKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSkK IAlzdHJ1Y3Qgb3V0Ym91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUTsKIAl2b2lkICpwTXNnMSA9 IE5VTEw7CiAJdTggYmMgPSAwOwotCXUzMiByZXQgPSBNUElfSU9fU1RBVFVTX0ZBSUwsIHByb2Nl c3NlZE1zZ0NvdW50ID0gMDsKKwl1MzIgcmV0ID0gTVBJX0lPX1NUQVRVU19GQUlMOwogCiAJY2ly Y3VsYXJRID0gJnBtODAwMV9oYS0+b3V0Ym5kX3FfdGJsWzBdOwogCWRvIHsKIAkJcmV0ID0gbXBp X21zZ19jb25zdW1lKHBtODAwMV9oYSwgY2lyY3VsYXJRLCAmcE1zZzEsICZiYyk7CiAJCWlmIChN UElfSU9fU1RBVFVTX1NVQ0NFU1MgPT0gcmV0KSB7CiAJCQkvKiBwcm9jZXNzIHRoZSBvdXRib3Vu ZCBtZXNzYWdlICovCi0JCQlwcm9jZXNzX29uZV9pb21iKHBtODAwMV9oYSwgKHZvaWQgKikoKHU4 ICopcE1zZzEgLSA0KSk7CisJCQlwcm9jZXNzX29uZV9pb21iKHBtODAwMV9oYSwgKHZvaWQgKiko cE1zZzEgLSA0KSk7CiAJCQkvKiBmcmVlIHRoZSBtZXNzYWdlIGZyb20gdGhlIG91dGJvdW5kIGNp cmN1bGFyIGJ1ZmZlciAqLwotCQkJbXBpX21zZ19mcmVlX3NldChwbTgwMDFfaGEsIGNpcmN1bGFy USwgYmMpOwotCQkJcHJvY2Vzc2VkTXNnQ291bnQrKzsKKwkJCW1waV9tc2dfZnJlZV9zZXQocG04 MDAxX2hhLCBwTXNnMSwgY2lyY3VsYXJRLCBiYyk7CiAJCX0KIAkJaWYgKE1QSV9JT19TVEFUVVNf QlVTWSA9PSByZXQpIHsKIAkJCXUzMiBwcm9kdWNlcl9pZHg7CkBAIC0zNjMxLDggKzM2NTMsNyBA QCBzdGF0aWMgaW50IHByb2Nlc3Nfb3Eoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hh KQogCQkJCS8qIE9RIGlzIGVtcHR5ICovCiAJCQkJYnJlYWs7CiAJCX0KLQl9IHdoaWxlICgxMDAg PiBwcm9jZXNzZWRNc2dDb3VudCk7LyplbmQgbWVzc2FnZSBwcm9jZXNzaW5nIGlmIGhpdCB0aGUK LQljb3VudCovCisJfSB3aGlsZSAoMSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzc0Myw2ICsz NzY0LDcgQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9zc3BfaW9fcmVxKHN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSwKIAlzdHJ1Y3QgcG04MDAxX2RldmljZSAqcG04MDAxX2RldiA9 IGRldi0+bGxkZF9kZXY7CiAJc3RydWN0IHNzcF9pbmlfaW9fc3RhcnRfcmVxIHNzcF9jbWQ7CiAJ dTMyIHRhZyA9IGNjYi0+Y2NiX3RhZzsKKwlpbnQgcmV0OwogCV9fbGU2NCBwaHlzX2FkZHI7CiAJ c3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUTsKIAl1MzIgb3BjID0gT1BDX0lO Ql9TU1BJTklJT1NUQVJUOwpAQCAtMzc4MCw4ICszODAyLDggQEAgc3RhdGljIGludCBwbTgwMDFf Y2hpcF9zc3BfaW9fcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAkJc3Nw X2NtZC5sZW4gPSBjcHVfdG9fbGUzMih0YXNrLT50b3RhbF94ZmVyX2xlbik7CiAJCXNzcF9jbWQu ZXNnbCA9IDA7CiAJfQotCW1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wYywg JnNzcF9jbWQpOwotCXJldHVybiAwOworCXJldCA9IG1waV9idWlsZF9jbWQocG04MDAxX2hhLCBj aXJjdWxhclEsIG9wYywgJnNzcF9jbWQpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQg cG04MDAxX2NoaXBfc2F0YV9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLApA QCAtMzc5MSw2ICszODEzLDcgQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9zYXRhX3JlcShzdHJ1 Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJc3RydWN0IGRvbWFpbl9kZXZpY2UgKmRl diA9IHRhc2stPmRldjsKIAlzdHJ1Y3QgcG04MDAxX2RldmljZSAqcG04MDAxX2hhX2RldiA9IGRl di0+bGxkZF9kZXY7CiAJdTMyIHRhZyA9IGNjYi0+Y2NiX3RhZzsKKwlpbnQgcmV0OwogCXN0cnVj dCBzYXRhX3N0YXJ0X3JlcSBzYXRhX2NtZDsKIAl1MzIgaGRyX3RhZywgbmNnX3RhZyA9IDA7CiAJ X19sZTY0IHBoeXNfYWRkcjsKQEAgLTM4NDksOCArMzg3Miw4IEBAIHN0YXRpYyBpbnQgcG04MDAx X2NoaXBfc2F0YV9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCQlzYXRh X2NtZC5sZW4gPSBjcHVfdG9fbGUzMih0YXNrLT50b3RhbF94ZmVyX2xlbik7CiAJCXNhdGFfY21k LmVzZ2wgPSAwOwogCX0KLQltcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMs ICZzYXRhX2NtZCk7Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEs IGNpcmN1bGFyUSwgb3BjLCAmc2F0YV9jbWQpOworCXJldHVybiByZXQ7CiB9CiAKIC8qKgpAQCAt Mzg2NCw2ICszODg3LDcgQEAgcG04MDAxX2NoaXBfcGh5X3N0YXJ0X3JlcShzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEsIHU4IHBoeV9pZCkKIHsKIAlzdHJ1Y3QgcGh5X3N0YXJ0X3Jl cSBwYXlsb2FkOwogCXN0cnVjdCBpbmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJjdWxhclE7CisJaW50 IHJldDsKIAl1MzIgdGFnID0gMHgwMTsKIAl1MzIgb3Bjb2RlID0gT1BDX0lOQl9QSFlTVEFSVDsK IAljaXJjdWxhclEgPSAmcG04MDAxX2hhLT5pbmJuZF9xX3RibFswXTsKQEAgLTM4ODMsOCArMzkw Nyw4IEBAIHBtODAwMV9jaGlwX3BoeV9zdGFydF9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhLCB1OCBwaHlfaWQpCiAJbWVtY3B5KHBheWxvYWQuc2FzX2lkZW50aWZ5LnNhc19h ZGRyLAogCQlwbTgwMDFfaGEtPnNhc19hZGRyLCBTQVNfQUREUl9TSVpFKTsKIAlwYXlsb2FkLnNh c19pZGVudGlmeS5waHlfaWQgPSBwaHlfaWQ7Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNp cmN1bGFyUSwgb3Bjb2RlLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxk X2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3Bjb2RlLCAmcGF5bG9hZCk7CisJcmV0dXJuIHJl dDsKIH0KIAogLyoqCkBAIC0zODk4LDE0ICszOTIyLDE1IEBAIHN0YXRpYyBpbnQgcG04MDAxX2No aXBfcGh5X3N0b3BfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIHsKIAlz dHJ1Y3QgcGh5X3N0b3BfcmVxIHBheWxvYWQ7CiAJc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUg KmNpcmN1bGFyUTsKKwlpbnQgcmV0OwogCXUzMiB0YWcgPSAweDAxOwogCXUzMiBvcGNvZGUgPSBP UENfSU5CX1BIWVNUT1A7CiAJY2lyY3VsYXJRID0gJnBtODAwMV9oYS0+aW5ibmRfcV90YmxbMF07 CiAJbWVtc2V0KCZwYXlsb2FkLCAwLCBzaXplb2YocGF5bG9hZCkpOwogCXBheWxvYWQudGFnID0g Y3B1X3RvX2xlMzIodGFnKTsKIAlwYXlsb2FkLnBoeV9pZCA9IGNwdV90b19sZTMyKHBoeV9pZCk7 Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3Bjb2RlLCAmcGF5bG9hZCk7 Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwg b3Bjb2RlLCAmcGF5bG9hZCk7CisJcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC0zOTE5LDcgKzM5 NDQsNyBAQCBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3JlZ19kZXZfcmVxKHN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSwKIAl1MzIgc3RwX3NzcHNtcF9zYXRhID0gMHg0OwogCXN0cnVj dCBpbmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJjdWxhclE7CiAJdTMyIGxpbmtyYXRlLCBwaHlfaWQ7 Ci0JdTMyIHJjLCB0YWcgPSAweGRlYWRiZWVmOworCWludCByYywgdGFnID0gMHhkZWFkYmVlZjsK IAlzdHJ1Y3QgcG04MDAxX2NjYl9pbmZvICpjY2I7CiAJdTggcmV0cnlGbGFnID0gMHgxOwogCXUx NiBmaXJzdEJ1cnN0U2l6ZSA9IDA7CkBAIC0zOTYzLDggKzM5ODgsOCBAQCBzdGF0aWMgaW50IHBt ODAwMV9jaGlwX3JlZ19kZXZfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwK IAkJY3B1X3RvX2xlMzIoSVROVCB8IChmaXJzdEJ1cnN0U2l6ZSAqIDB4MTAwMDApKTsKIAltZW1j cHkoJnBheWxvYWQuc2FzX2FkZHJfaGksIHBtODAwMV9kZXYtPnNhc19kZXZpY2UtPnNhc19hZGRy LAogCQlTQVNfQUREUl9TSVpFKTsKLQltcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJR LCBvcGMsICZwYXlsb2FkKTsKLQlyZXR1cm4gMDsKKwlyYyA9IG1waV9idWlsZF9jbWQocG04MDAx X2hhLCBjaXJjdWxhclEsIG9wYywgJnBheWxvYWQpOworCXJldHVybiByYzsKIH0KIAogLyoqCkBA IC0zOTc1LDE2ICs0MDAwLDE3IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfZGVyZWdfZGV2X3Jl cShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiB7CiAJc3RydWN0IGRlcmVnX2Rl dl9yZXEgcGF5bG9hZDsKIAl1MzIgb3BjID0gT1BDX0lOQl9ERVJFR19ERVZfSEFORExFOworCWlu dCByZXQ7CiAJc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUTsKIAogCWNpcmN1 bGFyUSA9ICZwbTgwMDFfaGEtPmluYm5kX3FfdGJsWzBdOwotCW1lbXNldCgodTggKikmcGF5bG9h ZCwgMCwgc2l6ZW9mKHBheWxvYWQpKTsKKwltZW1zZXQoJnBheWxvYWQsIDAsIHNpemVvZihwYXls b2FkKSk7CiAJcGF5bG9hZC50YWcgPSAxOwogCXBheWxvYWQuZGV2aWNlX2lkID0gY3B1X3RvX2xl MzIoZGV2aWNlX2lkKTsKIAlQTTgwMDFfTVNHX0RCRyhwbTgwMDFfaGEsCiAJCXBtODAwMV9wcmlu dGsoInVucmVnaXN0ZXIgZGV2aWNlIGRldmljZV9pZCA9ICVkXG4iLCBkZXZpY2VfaWQpKTsKLQlt cGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZwYXlsb2FkKTsKLQlyZXR1 cm4gMDsKKwlyZXQgPSBtcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZw YXlsb2FkKTsKKwlyZXR1cm4gcmV0OwogfQogCiAvKioKQEAgLTM5OTksMTQgKzQwMjUsMTUgQEAg c3RhdGljIGludCBwbTgwMDFfY2hpcF9waHlfY3RsX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZv ICpwbTgwMDFfaGEsCiB7CiAJc3RydWN0IGxvY2FsX3BoeV9jdGxfcmVxIHBheWxvYWQ7CiAJc3Ry dWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUTsKKwlpbnQgcmV0OwogCXUzMiBvcGMg PSBPUENfSU5CX0xPQ0FMX1BIWV9DT05UUk9MOwogCW1lbXNldCgodTggKikmcGF5bG9hZCwgMCwg c2l6ZW9mKHBheWxvYWQpKTsKIAljaXJjdWxhclEgPSAmcG04MDAxX2hhLT5pbmJuZF9xX3RibFsw XTsKIAlwYXlsb2FkLnRhZyA9IDE7CiAJcGF5bG9hZC5waHlvcF9waHlpZCA9CiAJCWNwdV90b19s ZTMyKCgocGh5X29wICYgMHhmZikgPDwgOCkgfCAocGh5SWQgJiAweDBGKSk7Ci0JbXBpX2J1aWxk X2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7CisJ cmV0ID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7 CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHUzMiBwbTgwMDFfY2hpcF9pc19vdXJfaW50ZXJ1 cHQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKQpAQCAtNDAyOCwxMiArNDA1NSwx NiBAQCBzdGF0aWMgdTMyIHBtODAwMV9jaGlwX2lzX291cl9pbnRlcnVwdChzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEpCiAgKiBAaXJxOiBpcnEgbnVtYmVyLgogICogQHN0YXQ6IHN0 YXQuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgaXJxcmV0dXJuX3QKIHBtODAwMV9jaGlwX2lz cihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpCiB7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcG04MDAxX2hhLT5sb2NrLCBmbGFncyk7CiAJcG04 MDAxX2NoaXBfaW50ZXJydXB0X2Rpc2FibGUocG04MDAxX2hhKTsKIAlwcm9jZXNzX29xKHBtODAw MV9oYSk7CiAJcG04MDAxX2NoaXBfaW50ZXJydXB0X2VuYWJsZShwbTgwMDFfaGEpOworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnBtODAwMV9oYS0+bG9jaywgZmxhZ3MpOworCXJldHVybiBJUlFf SEFORExFRDsKIH0KIAogc3RhdGljIGludCBzZW5kX3Rhc2tfYWJvcnQoc3RydWN0IHBtODAwMV9o YmFfaW5mbyAqcG04MDAxX2hhLCB1MzIgb3BjLApAQCAtNDA0MSw3ICs0MDcyLDcgQEAgc3RhdGlj IGludCBzZW5kX3Rhc2tfYWJvcnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB1 MzIgb3BjLAogewogCXN0cnVjdCB0YXNrX2Fib3J0X3JlcSB0YXNrX2Fib3J0OwogCXN0cnVjdCBp bmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJjdWxhclE7Ci0KKwlpbnQgcmV0OwogCWNpcmN1bGFyUSA9 ICZwbTgwMDFfaGEtPmluYm5kX3FfdGJsWzBdOwogCW1lbXNldCgmdGFza19hYm9ydCwgMCwgc2l6 ZW9mKHRhc2tfYWJvcnQpKTsKIAlpZiAoQUJPUlRfU0lOR0xFID09IChmbGFnICYgQUJPUlRfTUFT SykpIHsKQEAgLTQwNTQsOCArNDA4NSw4IEBAIHN0YXRpYyBpbnQgc2VuZF90YXNrX2Fib3J0KHN0 cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdTMyIG9wYywKIAkJdGFza19hYm9ydC5k ZXZpY2VfaWQgPSBjcHVfdG9fbGUzMihkZXZfaWQpOwogCQl0YXNrX2Fib3J0LnRhZyA9IGNwdV90 b19sZTMyKGNtZF90YWcpOwogCX0KLQltcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJR LCBvcGMsICZ0YXNrX2Fib3J0KTsKLQlyZXR1cm4gMDsKKwlyZXQgPSBtcGlfYnVpbGRfY21kKHBt ODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZ0YXNrX2Fib3J0KTsKKwlyZXR1cm4gcmV0OwogfQog CiAvKioKQEAgLTQwNjgsNyArNDA5OSw4IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfYWJvcnRf dGFzayhzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiB7CiAJdTMyIG9wYywgZGV2 aWNlX2lkOwogCWludCByYyA9IFRNRl9SRVNQX0ZVTkNfRkFJTEVEOwotCVBNODAwMV9JT19EQkco cG04MDAxX2hhLCBwbTgwMDFfcHJpbnRrKCJBYm9ydCB0YWdbJXhdIiwgdGFza190YWcpKTsKKwlQ TTgwMDFfRUhfREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygiY21kX3RhZyA9ICV4LCBhYm9y dCB0YXNrIHRhZyIKKwkJIiA9ICV4IiwgY21kX3RhZywgdGFza190YWcpKTsKIAlpZiAocG04MDAx X2Rldi0+ZGV2X3R5cGUgPT0gU0FTX0VORF9ERVYpCiAJCW9wYyA9IE9QQ19JTkJfU1NQX0FCT1JU OwogCWVsc2UgaWYgKHBtODAwMV9kZXYtPmRldl90eXBlID09IFNBVEFfREVWKQpAQCAtNDA3OSw3 ICs0MTExLDcgQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9hYm9ydF90YXNrKHN0cnVjdCBwbTgw MDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlyYyA9IHNlbmRfdGFza19hYm9ydChwbTgwMDFfaGEs IG9wYywgZGV2aWNlX2lkLCBmbGFnLAogCQl0YXNrX3RhZywgY21kX3RhZyk7CiAJaWYgKHJjICE9 IFRNRl9SRVNQX0ZVTkNfQ09NUExFVEUpCi0JCVBNODAwMV9JT19EQkcocG04MDAxX2hhLCBwbTgw MDFfcHJpbnRrKCJyYz0gJWRcbiIsIHJjKSk7CisJCVBNODAwMV9FSF9EQkcocG04MDAxX2hhLCBw bTgwMDFfcHJpbnRrKCJyYz0gJWRcbiIsIHJjKSk7CiAJcmV0dXJuIHJjOwogfQogCkBAIC00MDk4 LDE3ICs0MTMwLDE3IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfc3NwX3RtX3JlcShzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJdTMyIG9wYyA9IE9QQ19JTkJfU1NQSU5JVE1T VEFSVDsKIAlzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJROwogCXN0cnVjdCBz c3BfaW5pX3RtX3N0YXJ0X3JlcSBzc3BUTUNtZDsKKwlpbnQgcmV0OwogCiAJbWVtc2V0KCZzc3BU TUNtZCwgMCwgc2l6ZW9mKHNzcFRNQ21kKSk7CiAJc3NwVE1DbWQuZGV2aWNlX2lkID0gY3B1X3Rv X2xlMzIocG04MDAxX2Rldi0+ZGV2aWNlX2lkKTsKIAlzc3BUTUNtZC5yZWxhdGVfdGFnID0gY3B1 X3RvX2xlMzIodG1mLT50YWdfb2ZfdGFza190b19iZV9tYW5hZ2VkKTsKIAlzc3BUTUNtZC50bWYg PSBjcHVfdG9fbGUzMih0bWYtPnRtZik7Ci0Jc3NwVE1DbWQuZHNfYWRzX20gPSBjcHVfdG9fbGUz MigxIDw8IDIpOwogCW1lbWNweShzc3BUTUNtZC5sdW4sIHRhc2stPnNzcF90YXNrLkxVTiwgOCk7 CiAJc3NwVE1DbWQudGFnID0gY3B1X3RvX2xlMzIoY2NiLT5jY2JfdGFnKTsKIAljaXJjdWxhclEg PSAmcG04MDAxX2hhLT5pbmJuZF9xX3RibFswXTsKLQltcGlfYnVpbGRfY21kKHBtODAwMV9oYSwg Y2lyY3VsYXJRLCBvcGMsICZzc3BUTUNtZCk7Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxk X2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmc3NwVE1DbWQpOworCXJldHVybiByZXQ7 CiB9CiAKIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfZ2V0X252bWRfcmVxKHN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSwKQEAgLTQxMTYsNyArNDE0OCw3IEBAIHN0YXRpYyBpbnQgcG04 MDAxX2NoaXBfZ2V0X252bWRfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwK IHsKIAl1MzIgb3BjID0gT1BDX0lOQl9HRVRfTlZNRF9EQVRBOwogCXUzMiBudm1kX3R5cGU7Ci0J dTMyIHJjOworCWludCByYzsKIAl1MzIgdGFnOwogCXN0cnVjdCBwbTgwMDFfY2NiX2luZm8gKmNj YjsKIAlzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJROwpAQCAtNDE4Myw4ICs0 MjE1LDggQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9nZXRfbnZtZF9yZXEoc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCWRlZmF1bHQ6CiAJCWJyZWFrOwogCX0KLQltcGlfYnVp bGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZudm1kX3JlcSk7Ci0JcmV0dXJuIDA7 CisJcmMgPSBtcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZudm1kX3Jl cSk7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3NldF9udm1kX3Jl cShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCkBAIC00MTkyLDcgKzQyMjQsNyBA QCBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3NldF9udm1kX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9p bmZvICpwbTgwMDFfaGEsCiB7CiAJdTMyIG9wYyA9IE9QQ19JTkJfU0VUX05WTURfREFUQTsKIAl1 MzIgbnZtZF90eXBlOwotCXUzMiByYzsKKwlpbnQgcmM7CiAJdTMyIHRhZzsKIAlzdHJ1Y3QgcG04 MDAxX2NjYl9pbmZvICpjY2I7CiAJc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFy UTsKQEAgLTQyNTksOCArNDI5MSw4IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfc2V0X252bWRf cmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlkZWZhdWx0OgogCQlicmVh azsKIAl9Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmbnZtZF9y ZXEpOwotCXJldHVybiAwOworCXJjID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFy USwgb3BjLCAmbnZtZF9yZXEpOworCXJldHVybiByYzsKIH0KIAogLyoqCkBAIC00Mjc1LDkgKzQz MDcsMTAgQEAgcG04MDAxX2NoaXBfZndfZmxhc2hfdXBkYXRlX2J1aWxkKHN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSwKIAlzdHJ1Y3QgZndfZmxhc2hfVXBkYXRlX3JlcSBwYXlsb2Fk OwogCXN0cnVjdCBmd19mbGFzaF91cGRhdGFfaW5mbyAqaW5mbzsKIAlzdHJ1Y3QgaW5ib3VuZF9x dWV1ZV90YWJsZSAqY2lyY3VsYXJROworCWludCByZXQ7CiAJdTMyIG9wYyA9IE9QQ19JTkJfRldf RkxBU0hfVVBEQVRFOwogCi0JbWVtc2V0KCh1OCAqKSZwYXlsb2FkLCAwLCBzaXplb2Yoc3RydWN0 IGZ3X2ZsYXNoX1VwZGF0ZV9yZXEpKTsKKwltZW1zZXQoJnBheWxvYWQsIDAsIHNpemVvZihzdHJ1 Y3QgZndfZmxhc2hfVXBkYXRlX3JlcSkpOwogCWNpcmN1bGFyUSA9ICZwbTgwMDFfaGEtPmluYm5k X3FfdGJsWzBdOwogCWluZm8gPSBmd19mbGFzaF91cGRhdGFfaW5mbzsKIAlwYXlsb2FkLnRhZyA9 IGNwdV90b19sZTMyKHRhZyk7CkBAIC00Mjg3LDggKzQzMjAsOCBAQCBwbTgwMDFfY2hpcF9md19m bGFzaF91cGRhdGVfYnVpbGQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCXBh eWxvYWQubGVuID0gaW5mby0+c2dsLmltX2xlbi5sZW4gOwogCXBheWxvYWQuc2dsX2FkZHJfbG8g PSBsb3dlcl8zMl9iaXRzKGluZm8tPnNnbC5hZGRyKTsKIAlwYXlsb2FkLnNnbF9hZGRyX2hpID0g dXBwZXJfMzJfYml0cyhpbmZvLT5zZ2wuYWRkcik7Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEs IGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxk X2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7CisJcmV0dXJuIHJldDsK IH0KIAogc3RhdGljIGludApAQCAtNDI5OCw3ICs0MzMxLDcgQEAgcG04MDAxX2NoaXBfZndfZmxh c2hfdXBkYXRlX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJc3RydWN0 IGZ3X2ZsYXNoX3VwZGF0YV9pbmZvIGZsYXNoX3VwZGF0ZV9pbmZvOwogCXN0cnVjdCBmd19jb250 cm9sX2luZm8gKmZ3X2NvbnRyb2w7CiAJc3RydWN0IGZ3X2NvbnRyb2xfZXggKmZ3X2NvbnRyb2xf Y29udGV4dDsKLQl1MzIgcmM7CisJaW50IHJjOwogCXUzMiB0YWc7CiAJc3RydWN0IHBtODAwMV9j Y2JfaW5mbyAqY2NiOwogCXZvaWQgKmJ1ZmZlciA9IE5VTEw7CkBAIC00MzIxLDggKzQzNTQsOCBA QCBwbTgwMDFfY2hpcF9md19mbGFzaF91cGRhdGVfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8g KnBtODAwMV9oYSwKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAkJfQogCX0KLQltZW1zZXQoKHZvaWQg KilidWZmZXIsIDAsIGZ3X2NvbnRyb2wtPmxlbik7Ci0JbWVtY3B5KCh2b2lkICopYnVmZmVyLCBm d19jb250cm9sLT5idWZmZXIsIGZ3X2NvbnRyb2wtPmxlbik7CisJbWVtc2V0KGJ1ZmZlciwgMCwg ZndfY29udHJvbC0+bGVuKTsKKwltZW1jcHkoYnVmZmVyLCBmd19jb250cm9sLT5idWZmZXIsIGZ3 X2NvbnRyb2wtPmxlbik7CiAJZmxhc2hfdXBkYXRlX2luZm8uc2dsLmFkZHIgPSBjcHVfdG9fbGU2 NChwaHlzX2FkZHIpOwogCWZsYXNoX3VwZGF0ZV9pbmZvLnNnbC5pbV9sZW4ubGVuID0gY3B1X3Rv X2xlMzIoZndfY29udHJvbC0+bGVuKTsKIAlmbGFzaF91cGRhdGVfaW5mby5zZ2wuaW1fbGVuLmUg PSAwOwpAQCAtNDMzOCw4ICs0MzcxLDkgQEAgcG04MDAxX2NoaXBfZndfZmxhc2hfdXBkYXRlX3Jl cShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJY2NiID0gJnBtODAwMV9oYS0+ Y2NiX2luZm9bdGFnXTsKIAljY2ItPmZ3X2NvbnRyb2xfY29udGV4dCA9IGZ3X2NvbnRyb2xfY29u dGV4dDsKIAljY2ItPmNjYl90YWcgPSB0YWc7Ci0JcG04MDAxX2NoaXBfZndfZmxhc2hfdXBkYXRl X2J1aWxkKHBtODAwMV9oYSwgJmZsYXNoX3VwZGF0ZV9pbmZvLCB0YWcpOwotCXJldHVybiAwOwor CXJjID0gcG04MDAxX2NoaXBfZndfZmxhc2hfdXBkYXRlX2J1aWxkKHBtODAwMV9oYSwgJmZsYXNo X3VwZGF0ZV9pbmZvLAorCQl0YWcpOworCXJldHVybiByYzsKIH0KIAogc3RhdGljIGludApAQCAt NDM0OSwxMCArNDM4MywxMCBAQCBwbTgwMDFfY2hpcF9zZXRfZGV2X3N0YXRlX3JlcShzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJc3RydWN0IHNldF9kZXZfc3RhdGVfcmVxIHBh eWxvYWQ7CiAJc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUTsKIAlzdHJ1Y3Qg cG04MDAxX2NjYl9pbmZvICpjY2I7Ci0JdTMyIHJjOworCWludCByYzsKIAl1MzIgdGFnOwogCXUz MiBvcGMgPSBPUENfSU5CX1NFVF9ERVZJQ0VfU1RBVEU7Ci0JbWVtc2V0KCh1OCAqKSZwYXlsb2Fk LCAwLCBzaXplb2YocGF5bG9hZCkpOworCW1lbXNldCgmcGF5bG9hZCwgMCwgc2l6ZW9mKHBheWxv YWQpKTsKIAlyYyA9IHBtODAwMV90YWdfYWxsb2MocG04MDAxX2hhLCAmdGFnKTsKIAlpZiAocmMp CiAJCXJldHVybiAtMTsKQEAgLTQzNjMsOCArNDM5Nyw5IEBAIHBtODAwMV9jaGlwX3NldF9kZXZf c3RhdGVfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlwYXlsb2FkLnRh ZyA9IGNwdV90b19sZTMyKHRhZyk7CiAJcGF5bG9hZC5kZXZpY2VfaWQgPSBjcHVfdG9fbGUzMihw bTgwMDFfZGV2LT5kZXZpY2VfaWQpOwogCXBheWxvYWQubmRzID0gY3B1X3RvX2xlMzIoc3RhdGUp OwotCW1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wYywgJnBheWxvYWQpOwot CXJldHVybiAwOworCXJjID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3Bj LCAmcGF5bG9hZCk7CisJcmV0dXJuIHJjOworCiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBh L2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5oIGIvZHJpdmVycy9zY3NpL3BtODAwMS9w bTgwMDFfc2FzLmgKaW5kZXggZWQ2ZGJkMS4uMzBmMmVkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9z Y3NpL3BtODAwMS9wbTgwMDFfc2FzLmgKKysrIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFf c2FzLmgKQEAgLTExOSw3ICsxMTksNyBAQCBzdHJ1Y3QgcG04MDAxX2Rpc3BhdGNoIHsKIAl2b2lk ICgqY2hpcF9yc3QpKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSk7CiAJaW50ICgq Y2hpcF9pb3JlbWFwKShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpOwogCXZvaWQg KCpjaGlwX2lvdW5tYXApKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSk7Ci0Jdm9p ZCAoKmlzcikoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKKwlpcnFyZXR1cm5f dCAoKmlzcikoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKIAl1MzIgKCppc19v dXJfaW50ZXJ1cHQpKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSk7CiAJaW50ICgq aXNyX3Byb2Nlc3Nfb3EpKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSk7CiAJdm9p ZCAoKmludGVycnVwdF9lbmFibGUpKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSk7 Ci0tIAoxLjYuNC5tc3lzZ2l0LjAKCg== --=====001_Dragon367386153327_=====--