From mboxrd@z Thu Jan 1 00:00:00 1970 From: "jack_wang" Subject: [PATCH Resend 2/3] pm8001:enhance IOMB process modules Date: Fri, 30 Oct 2009 21:53:01 +0800 Message-ID: <200910302152552653057@usish.com> References: <200910281755.n9SHtGrV004494@hera.kernel.org>, <200910302144471408205@usish.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====001_Dragon758317740472_=====" Return-path: Received: from sr-smtp.usish.com ([210.5.144.203]:49235 "EHLO sr-smtp.usish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757241AbZJ3NwY (ORCPT ); Fri, 30 Oct 2009 09:52:24 -0400 Received: from inbound3.usish.com (inbound3.usish.com [192.168.40.104]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by sr-smtp.usish.com (Postfix) with ESMTP id 652CD17E80E for ; Fri, 30 Oct 2009 21:52:22 +0800 (CST) Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: jack_wang Cc: linux-scsi This is a multi-part message in MIME format. --=====001_Dragon758317740472_===== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 7bit --=====001_Dragon758317740472_===== 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" PkZyb20gY2Q3NzRkNjdhZTY2MDhjMDY3MDAyMmVkMzU1YzBhZmE2ZTc5ODQxZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogSmFjayBXYW5nIDxqYWNrX3dhbmdAdXNpc2guY29tPgpEYXRl OiBGcmksIDMwIE9jdCAyMDA5IDE3OjIwOjQyICswODAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIGVu aGFuY2UgSU9NQiBwcm9jZXNzIG1vZHVsZXMKCldlIHNldCBpbnRlcnVwdCBjYXNjYWRpbmcgY291 bnQgb2Ygb3V0Ym91bmQgcXVldWUgdG8gZ2V0IGJldHRlciBwZXJmb3JtYW5jZSwKY29ycmVjdCBz b21lIHVubmVjZXNzYXJ5IHJldHVybiB2YWx1ZXMgYW5kIHNvbWUgbm9pc3kgcHJpbnQgbWVzc2Fn ZXMuCgpTaWduZWQtb2ZmLWJ5OiBKYWNrIFdhbmcgPGphY2tfd2FuZ0B1c2lzaC5jb20+ClNpZ25l ZC1vZmYtYnk6IExpbmRhciBMaXUgPGxpbmRhcl9saXVAdXNpc2guY29tPgotLS0KIGRyaXZlcnMv c2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jIHwgIDI0MiArKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmggfCAgICAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMgYi9kcml2ZXJzL3Nj c2kvcG04MDAxL3BtODAwMV9od2kuYwppbmRleCBjNGEyY2E0Li4xNGU4NzA5IDEwMDY0NAotLS0g YS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYworKysgYi9kcml2ZXJzL3Njc2kvcG04 MDAxL3BtODAwMV9od2kuYwpAQCAtMjMxLDcgKzIzMSw3IEBAIGluaXRfZGVmYXVsdF90YWJsZV92 YWx1ZXMoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKQogCQlwbTgwMDFfaGEtPm91 dGJuZF9xX3RibFtpXS5waV9sb3dlcl9iYXNlX2FkZHIJPQogCQkJcG04MDAxX2hhLT5tZW1vcnlN YXAucmVnaW9uW1BJXS5waHlzX2FkZHJfbG87CiAJCXBtODAwMV9oYS0+b3V0Ym5kX3FfdGJsW2ld LmludGVycnVwX3ZlY19jbnRfZGVsYXkJPQotCQkJMCB8ICgwIDw8IDE2KSB8ICgwIDw8IDI0KTsK KwkJCTAgfCAoMTAgPDwgMTYpIHwgKDAgPDwgMjQpOwogCQlwbTgwMDFfaGEtPm91dGJuZF9xX3Ri bFtpXS5waV92aXJ0CQk9CiAJCQlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25bUEldLnZpcnRf cHRyOwogCQlvZmZzZXRvYiA9IGkgKiAweDI0OwpAQCAtMzQxLDcgKzM0MSw3IEBAIHVwZGF0ZV9v dXRibmRfcXVldWVfdGFibGUoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCBpbnQg bnVtYmVyKQogICogQHBtODAwMV9oYSA6IG91ciBoYmEgY2FyZCBpbmZvbWF0aW9uCiAgKiBAc2hp ZnRWYWx1ZSA6IHNoaWZ0aW5nIHZhbHVlIGluIG1lbW9yeSBiYXIuCiAgKi8KLXN0YXRpYyB1MzIg YmFyNF9zaGlmdChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHUzMiBzaGlmdFZh bHVlKQorc3RhdGljIGludCBiYXI0X3NoaWZ0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAw MV9oYSwgdTMyIHNoaWZ0VmFsdWUpCiB7CiAJdTMyIHJlZ1ZhbDsKIAl1MzIgbWF4X3dhaXRfY291 bnQ7CkBAIC0xMjE3LDcgKzEyMTcsNyBAQCBwbTgwMDFfY2hpcF9pbnRlcnJ1cHRfZGlzYWJsZShz dHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpCiAgKiBAbWVzc2FnZVNpemU6IHRoZSBt ZXNzYWdlIHNpemUgb2YgdGhpcyB0cmFuc2Zlciwgbm9ybWFsbHkgaXQgaXMgNjQgYnl0ZXMKICAq IEBtZXNzYWdlUHRyOiB0aGUgcG9pbnRlciB0byBtZXNzYWdlLgogICovCi1zdGF0aWMgdTMyIG1w aV9tc2dfZnJlZV9nZXQoc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUSwKK3N0 YXRpYyBpbnQgbXBpX21zZ19mcmVlX2dldChzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2ly Y3VsYXJRLAogCQkJICAgIHUxNiBtZXNzYWdlU2l6ZSwgdm9pZCAqKm1lc3NhZ2VQdHIpCiB7CiAJ dTMyIG9mZnNldCwgY29uc3VtZXJfaW5kZXg7CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBzdGF0aWMg dTMyIG1waV9tc2dfZnJlZV9nZXQoc3RydWN0IGluYm91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFy USwKICAqIEBvcENvZGU6IHRoZSBvcGVyYXRpb24gY29kZSByZXByZXNlbnRzIGNvbW1hbmRzIHdo aWNoIExMREQgYW5kIGZ3IHJlY29nbml6ZWQuCiAgKiBAcGF5bG9hZDogdGhlIGNvbW1hbmQgcGF5 bG9hZCBvZiBlYWNoIG9wZXJhdGlvbiBjb21tYW5kLgogICovCi1zdGF0aWMgdTMyIG1waV9idWls ZF9jbWQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAorc3RhdGljIGludCBtcGlf YnVpbGRfY21kKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAkJCSBzdHJ1Y3Qg aW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJRLAogCQkJIHUzMiBvcENvZGUsIHZvaWQgKnBh eWxvYWQpCiB7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBzdGF0aWMgdTMyIG1waV9idWlsZF9jbWQo c3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCQkJcG04MDAxX3ByaW50aygiTm8g ZnJlZSBtcGkgYnVmZmVyIFxuIikpOwogCQlyZXR1cm4gLTE7CiAJfQotCisJQlVHX09OKCFwYXls b2FkKTsKIAkvKkNvcHkgdG8gdGhlIHBheWxvYWQqLwogCW1lbWNweShwTWVzc2FnZSwgcGF5bG9h ZCwgKDY0IC0gc2l6ZW9mKHN0cnVjdCBtcGlfbXNnX2hkcikpKTsKIApAQCAtMTI4OSwxMCArMTI4 OSwzMCBAQCBzdGF0aWMgdTMyIG1waV9idWlsZF9jbWQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTMyIG1waV9tc2dfZnJlZV9zZXQo c3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAorc3RhdGljIHUzMiBtcGlfbXNnX2Zy ZWVfc2V0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcE1zZywKIAkJ CSAgICBzdHJ1Y3Qgb3V0Ym91bmRfcXVldWVfdGFibGUgKmNpcmN1bGFyUSwgdTggYmMpCiB7CiAJ dTMyIHByb2R1Y2VyX2luZGV4OworCXN0cnVjdCBtcGlfbXNnX2hkciAqbXNnSGVhZGVyOworCXN0 cnVjdCBtcGlfbXNnX2hkciAqcE91dEJvdW5kTXNnSGVhZGVyOworCisJbXNnSGVhZGVyID0gKHN0 cnVjdCBtcGlfbXNnX2hkciAqKShwTXNnIC0gc2l6ZW9mKHN0cnVjdCBtcGlfbXNnX2hkcikpOwor CXBPdXRCb3VuZE1zZ0hlYWRlciA9IChzdHJ1Y3QgbXBpX21zZ19oZHIgKikoY2lyY3VsYXJRLT5i YXNlX3ZpcnQgKworCQkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4ICogNjQpOworCWlmIChwT3V0 Qm91bmRNc2dIZWFkZXIgIT0gbXNnSGVhZGVyKSB7CisJCVBNODAwMV9GQUlMX0RCRyhwbTgwMDFf aGEsCisJCQlwbTgwMDFfcHJpbnRrKCJjb25zdW1lcl9pZHggPSAlZCBtc2dIZWFkZXIgPSAlcFxu IiwKKwkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4LCBtc2dIZWFkZXIpKTsKKworCQkvKiBVcGRh dGUgdGhlIHByb2R1Y2VyIGluZGV4IGZyb20gU1BDICovCisJCXByb2R1Y2VyX2luZGV4ID0gcG04 MDAxX3JlYWRfMzIoY2lyY3VsYXJRLT5waV92aXJ0KTsKKwkJY2lyY3VsYXJRLT5wcm9kdWNlcl9p bmRleCA9IGNwdV90b19sZTMyKHByb2R1Y2VyX2luZGV4KTsKKwkJUE04MDAxX0ZBSUxfREJHKHBt ODAwMV9oYSwKKwkJCXBtODAwMV9wcmludGsoImNvbnN1bWVyX2lkeCA9ICVkIHByb2R1Y2VyX2lu ZGV4ID0gJWQiCisJCQkibXNnSGVhZGVyID0gJXBcbiIsIGNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4 LAorCQkJY2lyY3VsYXJRLT5wcm9kdWNlcl9pbmRleCwgbXNnSGVhZGVyKSk7CisJCXJldHVybiAw OworCX0KIAkvKiBmcmVlIHRoZSBjaXJjdWxhciBxdWV1ZSBidWZmZXIgZWxlbWVudHMgYXNzb2Np YXRlZCB3aXRoIHRoZSBtZXNzYWdlKi8KIAljaXJjdWxhclEtPmNvbnN1bWVyX2lkeCA9IChjaXJj dWxhclEtPmNvbnN1bWVyX2lkeCArIGJjKSAlIDI1NjsKIAkvKiB1cGRhdGUgdGhlIENJIG9mIG91 dGJvdW5kIHF1ZXVlICovCkBAIC0xMzI0LDggKzEzNDQsNiBAQCBzdGF0aWMgdTMyIG1waV9tc2df Y29uc3VtZShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJZG8gewogCQkvKiBJ ZiB0aGVyZSBhcmUgbm90LXlldC1kZWxpdmVyZWQgbWVzc2FnZXMgLi4uICovCiAJCWlmIChjaXJj dWxhclEtPnByb2R1Y2VyX2luZGV4ICE9IGNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4KSB7Ci0JCQlQ TTgwMDFfSU9fREJHKHBtODAwMV9oYSwKLQkJCQlwbTgwMDFfcHJpbnRrKCJwcm9jZXNzIGFuIElP TUJcbiIpKTsKIAkJCS8qR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBjaXJjdWxhciBxdWV1ZSBidWZm ZXIgZWxlbWVudCovCiAJCQltc2dIZWFkZXIgPSAoc3RydWN0IG1waV9tc2dfaGRyICopCiAJCQkJ KGNpcmN1bGFyUS0+YmFzZV92aXJ0ICsKQEAgLTEzNDIsMzQgKzEzNjAsNDMgQEAgc3RhdGljIHUz MiBtcGlfbXNnX2NvbnN1bWUoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCQkJ CQkqcEJDID0gKHU4KSgobXNnSGVhZGVyX3RtcCA+PiAyNCkgJgogCQkJCQkJMHgxZik7CiAJCQkJ CVBNODAwMV9JT19EQkcocG04MDAxX2hhLAotCQkJCQkJcG04MDAxX3ByaW50aygibXBpX21zZ19j b25zdW1lIgotCQkJCQkJIjogQ0k9JWQgUEk9JWQgbXNnSGVhZGVyPSV4XG4iLAorCQkJCQkJcG04 MDAxX3ByaW50aygiOiBDST0lZCBQST0lZCAiCisJCQkJCQkibXNnSGVhZGVyPSV4XG4iLAogCQkJ CQkJY2lyY3VsYXJRLT5jb25zdW1lcl9pZHgsCiAJCQkJCQljaXJjdWxhclEtPnByb2R1Y2VyX2lu ZGV4LAogCQkJCQkJbXNnSGVhZGVyX3RtcCkpOwogCQkJCQlyZXR1cm4gTVBJX0lPX1NUQVRVU19T VUNDRVNTOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXUzMiBwcm9kdWNlcl9pbmRleDsKLQkJCQkJdm9p ZCAqcGlfdmlydCA9IGNpcmN1bGFyUS0+cGlfdmlydDsKLQkJCQkJLyogZnJlZSB0aGUgY2lyY3Vs YXIgcXVldWUgYnVmZmVyCi0JCQkJCWVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2Fn ZSovCiAJCQkJCWNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4ID0KIAkJCQkJCShjaXJjdWxhclEtPmNv bnN1bWVyX2lkeCArCi0JCQkJCQkoKG1zZ0hlYWRlcl90bXAgPj4gMjQpICYgMHgxZikpCi0JCQkJ CQklIDI1NjsKKwkJCQkJCSgobXNnSGVhZGVyX3RtcCA+PiAyNCkgJiAweDFmKSkKKwkJCQkJCSUg MjU2OworCQkJCQltc2dIZWFkZXJfdG1wID0gMDsKKwkJCQkJcG04MDAxX3dyaXRlXzMyKG1zZ0hl YWRlciwgMCwgMCk7CiAJCQkJCS8qIHVwZGF0ZSB0aGUgQ0kgb2Ygb3V0Ym91bmQgcXVldWUgKi8K IAkJCQkJcG04MDAxX2N3MzIocG04MDAxX2hhLAogCQkJCQkJY2lyY3VsYXJRLT5jaV9wY2lfYmFy LAogCQkJCQkJY2lyY3VsYXJRLT5jaV9vZmZzZXQsCiAJCQkJCQljaXJjdWxhclEtPmNvbnN1bWVy X2lkeCk7Ci0JCQkJCS8qIFVwZGF0ZSB0aGUgcHJvZHVjZXIgaW5kZXggZnJvbSBTUEMgKi8KLQkJ CQkJcHJvZHVjZXJfaW5kZXggPQotCQkJCQkJcG04MDAxX3JlYWRfMzIocGlfdmlydCk7Ci0JCQkJ CWNpcmN1bGFyUS0+cHJvZHVjZXJfaW5kZXggPQotCQkJCQkJY3B1X3RvX2xlMzIocHJvZHVjZXJf aW5kZXgpOworCiAJCQkJfQotCQkJfSBlbHNlCisJCQl9IGVsc2UgeworCQkJCWNpcmN1bGFyUS0+ Y29uc3VtZXJfaWR4ID0KKwkJCQkJKGNpcmN1bGFyUS0+Y29uc3VtZXJfaWR4ICsKKwkJCQkJKCht c2dIZWFkZXJfdG1wID4+IDI0KSAmIDB4MWYpKSAlIDI1NjsKKwkJCQltc2dIZWFkZXJfdG1wID0g MDsKKwkJCQlwbTgwMDFfd3JpdGVfMzIobXNnSGVhZGVyLCAwLCAwKTsKKwkJCQkvKiB1cGRhdGUg dGhlIENJIG9mIG91dGJvdW5kIHF1ZXVlICovCisJCQkJcG04MDAxX2N3MzIocG04MDAxX2hhLCBj aXJjdWxhclEtPmNpX3BjaV9iYXIsCisJCQkJCWNpcmN1bGFyUS0+Y2lfb2Zmc2V0LAorCQkJCQlj aXJjdWxhclEtPmNvbnN1bWVyX2lkeCk7CiAJCQkJcmV0dXJuIE1QSV9JT19TVEFUVVNfRkFJTDsK KwkJCX0KKwkJfSBlbHNlIHsKKwkJCXUzMiBwcm9kdWNlcl9pbmRleDsKKwkJCXZvaWQgKnBpX3Zp cnQgPSBjaXJjdWxhclEtPnBpX3ZpcnQ7CisJCQkvKiBVcGRhdGUgdGhlIHByb2R1Y2VyIGluZGV4 IGZyb20gU1BDICovCisJCQlwcm9kdWNlcl9pbmRleCA9IHBtODAwMV9yZWFkXzMyKHBpX3ZpcnQp OworCQkJY2lyY3VsYXJRLT5wcm9kdWNlcl9pbmRleCA9IGNwdV90b19sZTMyKHByb2R1Y2VyX2lu ZGV4KTsKIAkJfQogCX0gd2hpbGUgKGNpcmN1bGFyUS0+cHJvZHVjZXJfaW5kZXggIT0gY2lyY3Vs YXJRLT5jb25zdW1lcl9pZHgpOwogCS8qIHdoaWxlIHdlIGRvbid0IGhhdmUgYW55IG1vcmUgbm90 LXlldC1kZWxpdmVyZWQgbWVzc2FnZSAqLwpAQCAtMTQ0MSw3ICsxNDY4LDcgQEAgc3RhdGljIGlu dCBwbTgwMDFfaGFuZGxlX2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwg dm9pZCAqZGF0YSwKICAqIFNvIHdlIHdpbGwgdGVsbCB0aGUgY2FsbGVyIHdobyBtYXliZSB3YWl0 aW5nIHRoZSByZXN1bHQgdG8gdGVsbCB1cHBlciBsYXllcgogICogdGhhdCB0aGUgdGFzayBoYXMg YmVlbiBmaW5pc2hlZC4KICAqLwotc3RhdGljIGludAorc3RhdGljIHZvaWQKIG1waV9zc3BfY29t cGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikK IHsKIAlzdHJ1Y3Qgc2FzX3Rhc2sgKnQ7CkBAIC0xNDYxLDE0ICsxNDg4LDEzIEBAIG1waV9zc3Bf Y29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9t YikKIAlwbTgwMDFfZGV2ID0gY2NiLT5kZXZpY2U7CiAJcGFyYW0gPSBsZTMyX3RvX2NwdShwc3Nw UGF5bG9hZC0+cGFyYW0pOwogCi0JUE04MDAxX0lPX0RCRyhwbTgwMDFfaGEsIHBtODAwMV9wcmlu dGsoIk9QQ19PVUJfU1NQX0NPTVBcbiIpKTsKIAl0ID0gY2NiLT50YXNrOwogCi0JaWYgKHN0YXR1 cykKKwlpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBJT19VTkRFUkZMT1cpCiAJCVBNODAwMV9GQUlM X0RCRyhwbTgwMDFfaGEsCiAJCQlwbTgwMDFfcHJpbnRrKCJzYXMgSU8gc3RhdHVzIDB4JXhcbiIs IHN0YXR1cykpOwogCWlmICh1bmxpa2VseSghdCB8fCAhdC0+bGxkZF90YXNrIHx8ICF0LT5kZXYp KQotCQlyZXR1cm4gLTE7CisJCXJldHVybjsKIAl0cyA9ICZ0LT50YXNrX3N0YXR1czsKIAlzd2l0 Y2ggKHN0YXR1cykgewogCWNhc2UgSU9fU1VDQ0VTUzoKQEAgLTE1ODEsNiArMTYwNyw3IEBAIG1w aV9zc3BfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lk ICpwaW9tYikKIAkJCXBtODAwMV9wcmludGsoIklPX1hGRVJfRVJST1JfTkFLX1JFQ0VJVkVEXG4i KSk7CiAJCXRzLT5yZXNwID0gU0FTX1RBU0tfQ09NUExFVEU7CiAJCXRzLT5zdGF0ID0gU0FTX09Q RU5fUkVKRUNUOworCQl0cy0+b3Blbl9yZWpfcmVhc29uID0gU0FTX09SRUpfUlNWRF9SRVRSWTsK IAkJYnJlYWs7CiAJY2FzZSBJT19YRkVSX0VSUk9SX0FDS19OQUtfVElNRU9VVDoKIAkJUE04MDAx X0lPX0RCRyhwbTgwMDFfaGEsCkBAIC0xNjc1LDExICsxNzAyLDEwIEBAIG1waV9zc3BfY29tcGxl dGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIAkJ bWIoKTsvKiBpbiBvcmRlciB0byBmb3JjZSBDUFUgb3JkZXJpbmcgKi8KIAkJdC0+dGFza19kb25l KHQpOwogCX0KLQlyZXR1cm4gMDsKIH0KIAogLypTZWUgdGhlIGNvbW1lbnRzIGZvciBtcGlfc3Nw X2NvbXBsZXRpb24gKi8KLXN0YXRpYyBpbnQgbXBpX3NzcF9ldmVudChzdHJ1Y3QgcG04MDAxX2hi YV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKK3N0YXRpYyB2b2lkIG1waV9zc3BfZXZl bnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiB7CiAJ c3RydWN0IHNhc190YXNrICp0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xNzAwLDcgKzE3 MjYsNyBAQCBzdGF0aWMgaW50IG1waV9zc3BfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJCVBNODAwMV9GQUlMX0RCRyhwbTgwMDFfaGEsCiAJ CQlwbTgwMDFfcHJpbnRrKCJzYXMgSU8gc3RhdHVzIDB4JXhcbiIsIGV2ZW50KSk7CiAJaWYgKHVu bGlrZWx5KCF0IHx8ICF0LT5sbGRkX3Rhc2sgfHwgIXQtPmRldikpCi0JCXJldHVybiAtMTsKKwkJ cmV0dXJuOwogCXRzID0gJnQtPnRhc2tfc3RhdHVzOwogCVBNODAwMV9JT19EQkcocG04MDAxX2hh LAogCQlwbTgwMDFfcHJpbnRrKCJwb3J0X2lkID0gJXgsZGV2aWNlX2lkID0gJXhcbiIsCkBAIC0x Nzg3LDYgKzE4MTMsNyBAQCBzdGF0aWMgaW50IG1waV9zc3BfZXZlbnQoc3RydWN0IHBtODAwMV9o YmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlvbWIpCiAJCQlwbTgwMDFfcHJpbnRrKCJJT19Y RkVSX0VSUk9SX05BS19SRUNFSVZFRFxuIikpOwogCQl0cy0+cmVzcCA9IFNBU19UQVNLX0NPTVBM RVRFOwogCQl0cy0+c3RhdCA9IFNBU19PUEVOX1JFSkVDVDsKKwkJdHMtPm9wZW5fcmVqX3JlYXNv biA9IFNBU19PUkVKX1JTVkRfUkVUUlk7CiAJCWJyZWFrOwogCWNhc2UgSU9fWEZFUl9FUlJPUl9B Q0tfTkFLX1RJTUVPVVQ6CiAJCVBNODAwMV9JT19EQkcocG04MDAxX2hhLApAQCAtMTg0MCw3ICsx ODY3LDcgQEAgc3RhdGljIGludCBtcGlfc3NwX2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8g KnBtODAwMV9oYSAsIHZvaWQgKnBpb21iKQogCWNhc2UgSU9fWEZFUl9DTURfRlJBTUVfSVNTVUVE OgogCQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwKIAkJCXBtODAwMV9wcmludGsoIiAgSU9fWEZF Ul9DTURfRlJBTUVfSVNTVUVEXG4iKSk7Ci0JCXJldHVybiAwOworCQlyZXR1cm47CiAJZGVmYXVs dDoKIAkJUE04MDAxX0lPX0RCRyhwbTgwMDFfaGEsCiAJCQlwbTgwMDFfcHJpbnRrKCJVbmtub3du IHN0YXR1cyAweCV4XG4iLCBldmVudCkpOwpAQCAtMTg2NiwxMSArMTg5MywxMCBAQCBzdGF0aWMg aW50IG1waV9zc3BfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9p ZCAqcGlvbWIpCiAJCW1iKCk7LyogaW4gb3JkZXIgdG8gZm9yY2UgQ1BVIG9yZGVyaW5nICovCiAJ CXQtPnRhc2tfZG9uZSh0KTsKIAl9Ci0JcmV0dXJuIDA7CiB9CiAKIC8qU2VlIHRoZSBjb21tZW50 cyBmb3IgbXBpX3NzcF9jb21wbGV0aW9uICovCi1zdGF0aWMgaW50CitzdGF0aWMgdm9pZAogbXBp X3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQg KnBpb21iKQogewogCXN0cnVjdCBzYXNfdGFzayAqdDsKQEAgLTE4OTgsNyArMTkyNCw3IEBAIG1w aV9zYXRhX2NvbXBsZXRpb24oc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lk ICpwaW9tYikKIAkJUE04MDAxX0ZBSUxfREJHKHBtODAwMV9oYSwKIAkJCXBtODAwMV9wcmludGso InNhdGEgSU8gc3RhdHVzIDB4JXhcbiIsIHN0YXR1cykpOwogCWlmICh1bmxpa2VseSghdCB8fCAh dC0+bGxkZF90YXNrIHx8ICF0LT5kZXYpKQotCQlyZXR1cm4gLTE7CisJCXJldHVybjsKIAogCXN3 aXRjaCAoc3RhdHVzKSB7CiAJY2FzZSBJT19TVUNDRVNTOgpAQCAtMjAxNSw3ICsyMDQxLDcgQEAg bXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZv aWQgKnBpb21iKQogCQkJcG04MDAxX2NjYl90YXNrX2ZyZWUocG04MDAxX2hhLCB0LCBjY2IsIHRh Zyk7CiAJCQltYigpOy8qaW4gb3JkZXIgdG8gZm9yY2UgQ1BVIG9yZGVyaW5nKi8KIAkJCXQtPnRh c2tfZG9uZSh0KTsKLQkJCXJldHVybiAwOworCQkJcmV0dXJuOwogCQl9CiAJCWJyZWFrOwogCWNh c2UgSU9fT1BFTl9DTlhfRVJST1JfQkFEX0RFU1RJTkFUSU9OOgpAQCAtMjAzMyw3ICsyMDU5LDcg QEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEs IHZvaWQgKnBpb21iKQogCQkJcG04MDAxX2NjYl90YXNrX2ZyZWUocG04MDAxX2hhLCB0LCBjY2Is IHRhZyk7CiAJCQltYigpOy8qZGl0dG8qLwogCQkJdC0+dGFza19kb25lKHQpOwotCQkJcmV0dXJu IDA7CisJCQlyZXR1cm47CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBJT19PUEVOX0NOWF9FUlJPUl9D T05ORUNUSU9OX1JBVEVfTk9UX1NVUFBPUlRFRDoKQEAgLTIwNTksNyArMjA4NSw3IEBAIG1waV9z YXRhX2NvbXBsZXRpb24oc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpw aW9tYikKIAkJCXBtODAwMV9jY2JfdGFza19mcmVlKHBtODAwMV9oYSwgdCwgY2NiLCB0YWcpOwog CQkJbWIoKTsvKiBkaXR0byovCiAJCQl0LT50YXNrX2RvbmUodCk7Ci0JCQlyZXR1cm4gMDsKKwkJ CXJldHVybjsKIAkJfQogCQlicmVhazsKIAljYXNlIElPX09QRU5fQ05YX0VSUk9SX1dST05HX0RF U1RJTkFUSU9OOgpAQCAtMjEyNCw3ICsyMTUwLDcgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1 Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKQogCQkJcG04MDAxX2Nj Yl90YXNrX2ZyZWUocG04MDAxX2hhLCB0LCBjY2IsIHRhZyk7CiAJCQltYigpOy8qZGl0dG8qLwog CQkJdC0+dGFza19kb25lKHQpOwotCQkJcmV0dXJuIDA7CisJCQlyZXR1cm47CiAJCX0KIAkJYnJl YWs7CiAJY2FzZSBJT19EU19JTl9SRUNPVkVSWToKQEAgLTIxNDYsNyArMjE3Miw3IEBAIG1waV9z YXRhX2NvbXBsZXRpb24oc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpw aW9tYikKIAkJCXBtODAwMV9jY2JfdGFza19mcmVlKHBtODAwMV9oYSwgdCwgY2NiLCB0YWcpOwog CQkJbWIoKTsvKmRpdHRvKi8KIAkJCXQtPnRhc2tfZG9uZSh0KTsKLQkJCXJldHVybiAwOworCQkJ cmV0dXJuOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgSU9fT1BFTl9DTlhfRVJST1JfSFdfUkVTT1VS Q0VfQlVTWToKQEAgLTIxODAsMTEgKzIyMDYsMTAgQEAgbXBpX3NhdGFfY29tcGxldGlvbihzdHJ1 Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHZvaWQgKnBpb21iKQogCQltYigpOy8qIGRp dHRvICovCiAJCXQtPnRhc2tfZG9uZSh0KTsKIAl9Ci0JcmV0dXJuIDA7CiB9CiAKIC8qU2VlIHRo ZSBjb21tZW50cyBmb3IgbXBpX3NzcF9jb21wbGV0aW9uICovCi1zdGF0aWMgaW50IG1waV9zYXRh X2V2ZW50KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSAsIHZvaWQgKnBpb21iKQor c3RhdGljIHZvaWQgbXBpX3NhdGFfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAx X2hhICwgdm9pZCAqcGlvbWIpCiB7CiAJc3RydWN0IHNhc190YXNrICp0OwogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CkBAIC0yMjA1LDcgKzIyMzAsNyBAQCBzdGF0aWMgaW50IG1waV9zYXRhX2V2ZW50 KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSAsIHZvaWQgKnBpb21iKQogCQlQTTgw MDFfRkFJTF9EQkcocG04MDAxX2hhLAogCQkJcG04MDAxX3ByaW50aygic2F0YSBJTyBzdGF0dXMg MHgleFxuIiwgZXZlbnQpKTsKIAlpZiAodW5saWtlbHkoIXQgfHwgIXQtPmxsZGRfdGFzayB8fCAh dC0+ZGV2KSkKLQkJcmV0dXJuIC0xOworCQlyZXR1cm47CiAJdHMgPSAmdC0+dGFza19zdGF0dXM7 CiAJUE04MDAxX0lPX0RCRyhwbTgwMDFfaGEsCiAJCXBtODAwMV9wcmludGsoInBvcnRfaWQgPSAl eCxkZXZpY2VfaWQgPSAleFxuIiwKQEAgLTIyNjgsNyArMjI5Myw3IEBAIHN0YXRpYyBpbnQgbXBp X3NhdGFfZXZlbnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhICwgdm9pZCAqcGlv bWIpCiAJCQlwbTgwMDFfY2NiX3Rhc2tfZnJlZShwbTgwMDFfaGEsIHQsIGNjYiwgdGFnKTsKIAkJ CW1iKCk7LypkaXR0byovCiAJCQl0LT50YXNrX2RvbmUodCk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJl dHVybjsKIAkJfQogCQlicmVhazsKIAljYXNlIElPX09QRU5fQ05YX0VSUk9SX0JBRF9ERVNUSU5B VElPTjoKQEAgLTIzODIsMTEgKzI0MDcsMTAgQEAgc3RhdGljIGludCBtcGlfc2F0YV9ldmVudChz dHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEgLCB2b2lkICpwaW9tYikKIAkJbWIoKTsv KiBpbiBvcmRlciB0byBmb3JjZSBDUFUgb3JkZXJpbmcgKi8KIAkJdC0+dGFza19kb25lKHQpOwog CX0KLQlyZXR1cm4gMDsKIH0KIAogLypTZWUgdGhlIGNvbW1lbnRzIGZvciBtcGlfc3NwX2NvbXBs ZXRpb24gKi8KLXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBtcGlfc21wX2NvbXBsZXRpb24oc3Ry dWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYikKIHsKIAl1MzIgcGFy YW07CkBAIC0yNDEyLDcgKzI0MzYsNyBAQCBtcGlfc21wX2NvbXBsZXRpb24oc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYikKIAkJUE04MDAxX0ZBSUxfREJHKHBt ODAwMV9oYSwKIAkJCXBtODAwMV9wcmludGsoInNtcCBJTyBzdGF0dXMgMHgleFxuIiwgc3RhdHVz KSk7CiAJaWYgKHVubGlrZWx5KCF0IHx8ICF0LT5sbGRkX3Rhc2sgfHwgIXQtPmRldikpCi0JCXJl dHVybiAtMTsKKwkJcmV0dXJuOwogCiAJc3dpdGNoIChzdGF0dXMpIHsKIAljYXNlIElPX1NVQ0NF U1M6CkBAIC0yNTg1LDcgKzI2MDksNiBAQCBtcGlfc21wX2NvbXBsZXRpb24oc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYikKIAkJbWIoKTsvKiBpbiBvcmRlciB0 byBmb3JjZSBDUFUgb3JkZXJpbmcgKi8KIAkJdC0+dGFza19kb25lKHQpOwogCX0KLQlyZXR1cm4g MDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI2ODIsOCArMjcwNSw4IEBAIG1waV9nZXRfbnZtZF9y ZXNwKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9pZCAqcGlvbWIpCiAJCQlw bTgwMDFfcHJpbnRrKCJHZXQgTlZNRCBzdWNjZXNzLCBJUj0wLCBkYXRhTGVuPSVkXG4iLAogCQkJ KGRsZW5fc3RhdHVzICYgTlZNRF9MRU4pID4+IDI0KSk7CiAJfQotCW1lbWNweSgodm9pZCAqKShm d19jb250cm9sX2NvbnRleHQtPnVzckFkZHIpLAotCQkodm9pZCAqKShwbTgwMDFfaGEtPm1lbW9y eU1hcC5yZWdpb25bTlZNRF0udmlydF9wdHIpLAorCW1lbWNweShmd19jb250cm9sX2NvbnRleHQt PnVzckFkZHIsCisJCXBtODAwMV9oYS0+bWVtb3J5TWFwLnJlZ2lvbltOVk1EXS52aXJ0X3B0ciwK IAkJZndfY29udHJvbF9jb250ZXh0LT5sZW4pOwogCWNvbXBsZXRlKHBtODAwMV9oYS0+bnZtZF9j b21wbGV0aW9uKTsKIAljY2ItPnRhc2sgPSBOVUxMOwpAQCAtMzE4NCwyOCArMzIwNywyOCBAQCBt cGlfdGFza19hYm9ydF9yZXNwKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdm9p ZCAqcGlvbWIpCiAJCShzdHJ1Y3QgdGFza19hYm9ydF9yZXNwICopKHBpb21iICsgNCk7CiAJY2Ni ID0gJnBtODAwMV9oYS0+Y2NiX2luZm9bcFBheWxvYWQtPnRhZ107CiAJdCA9IGNjYi0+dGFzazsK LQl0cyA9ICZ0LT50YXNrX3N0YXR1czsKIAotCWlmICh0ID09IE5VTEwpCi0JCXJldHVybiAtMTsK IAogCXN0YXR1cyA9IGxlMzJfdG9fY3B1KHBQYXlsb2FkLT5zdGF0dXMpOwogCXRhZyA9IGxlMzJf dG9fY3B1KHBQYXlsb2FkLT50YWcpOwogCXNjcCA9IGxlMzJfdG9fY3B1KHBQYXlsb2FkLT5zY3Ap OwogCVBNODAwMV9JT19EQkcocG04MDAxX2hhLAogCQlwbTgwMDFfcHJpbnRrKCIgc3RhdHVzID0g MHgleFxuIiwgc3RhdHVzKSk7CisJaWYgKHQgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCXRzID0g JnQtPnRhc2tfc3RhdHVzOwogCWlmIChzdGF0dXMgIT0gMCkKIAkJUE04MDAxX0ZBSUxfREJHKHBt ODAwMV9oYSwKLQkJCXBtODAwMV9wcmludGsoInRhc2sgYWJvcnQgZmFpbGVkIHRhZyA9IDB4JXgs IgotCQkJIiBzY3A9IDB4JXhcbiIsIHRhZywgc2NwKSk7CisJCQlwbTgwMDFfcHJpbnRrKCJ0YXNr IGFib3J0IGZhaWxlZCBzdGF0dXMgMHgleCAsIgorCQkJInRhZyA9IDB4JXgsIHNjcD0gMHgleFxu Iiwgc3RhdHVzLCB0YWcsIHNjcCkpOwogCXN3aXRjaCAoc3RhdHVzKSB7CiAJY2FzZSBJT19TVUND RVNTOgotCQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygiSU9fU1VDQ0VT U1xuIikpOworCQlQTTgwMDFfRUhfREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygiSU9fU1VD Q0VTU1xuIikpOwogCQl0cy0+cmVzcCA9IFNBU19UQVNLX0NPTVBMRVRFOwogCQl0cy0+c3RhdCA9 IFNBTV9HT09EOwogCQlicmVhazsKIAljYXNlIElPX05PVF9WQUxJRDoKLQkJUE04MDAxX0lPX0RC RyhwbTgwMDFfaGEsIHBtODAwMV9wcmludGsoIklPX05PVF9WQUxJRFxuIikpOworCQlQTTgwMDFf RUhfREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygiSU9fTk9UX1ZBTElEXG4iKSk7CiAJCXRz LT5yZXNwID0gVE1GX1JFU1BfRlVOQ19GQUlMRUQ7CiAJCWJyZWFrOwogCX0KQEAgLTM0NDMsNyAr MzQ2Niw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfb25lX2lvbWIoc3RydWN0IHBtODAwMV9oYmFf aW5mbyAqcG04MDAxX2hhLCB2b2lkICpwaW9tYikKIAl1MzIgcEhlYWRlciA9ICh1MzIpKih1MzIg KilwaW9tYjsKIAl1OCBvcGMgPSAodTgpKChsZTMyX3RvX2NwdShwSGVhZGVyKSkgJiAweEZGRik7 CiAKLQlQTTgwMDFfTVNHX0RCRyhwbTgwMDFfaGEsIHBtODAwMV9wcmludGsoInByb2Nlc3Nfb25l X2lvbWI6XG4iKSk7CisJUE04MDAxX01TR19EQkcocG04MDAxX2hhLCBwbTgwMDFfcHJpbnRrKCJw cm9jZXNzX29uZV9pb21iOiIpKTsKIAogCXN3aXRjaCAob3BjKSB7CiAJY2FzZSBPUENfT1VCX0VD SE86CkBAIC0zNjA5LDE3ICszNjMyLDE2IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19vcShzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpCiAJc3RydWN0IG91dGJvdW5kX3F1ZXVlX3RhYmxl ICpjaXJjdWxhclE7CiAJdm9pZCAqcE1zZzEgPSBOVUxMOwogCXU4IGJjID0gMDsKLQl1MzIgcmV0 ID0gTVBJX0lPX1NUQVRVU19GQUlMLCBwcm9jZXNzZWRNc2dDb3VudCA9IDA7CisJdTMyIHJldCA9 IE1QSV9JT19TVEFUVVNfRkFJTDsKIAogCWNpcmN1bGFyUSA9ICZwbTgwMDFfaGEtPm91dGJuZF9x X3RibFswXTsKIAlkbyB7CiAJCXJldCA9IG1waV9tc2dfY29uc3VtZShwbTgwMDFfaGEsIGNpcmN1 bGFyUSwgJnBNc2cxLCAmYmMpOwogCQlpZiAoTVBJX0lPX1NUQVRVU19TVUNDRVNTID09IHJldCkg ewogCQkJLyogcHJvY2VzcyB0aGUgb3V0Ym91bmQgbWVzc2FnZSAqLwotCQkJcHJvY2Vzc19vbmVf aW9tYihwbTgwMDFfaGEsICh2b2lkICopKCh1OCAqKXBNc2cxIC0gNCkpOworCQkJcHJvY2Vzc19v bmVfaW9tYihwbTgwMDFfaGEsICh2b2lkICopKHBNc2cxIC0gNCkpOwogCQkJLyogZnJlZSB0aGUg bWVzc2FnZSBmcm9tIHRoZSBvdXRib3VuZCBjaXJjdWxhciBidWZmZXIgKi8KLQkJCW1waV9tc2df ZnJlZV9zZXQocG04MDAxX2hhLCBjaXJjdWxhclEsIGJjKTsKLQkJCXByb2Nlc3NlZE1zZ0NvdW50 Kys7CisJCQltcGlfbXNnX2ZyZWVfc2V0KHBtODAwMV9oYSwgcE1zZzEsIGNpcmN1bGFyUSwgYmMp OwogCQl9CiAJCWlmIChNUElfSU9fU1RBVFVTX0JVU1kgPT0gcmV0KSB7CiAJCQl1MzIgcHJvZHVj ZXJfaWR4OwpAQCAtMzYzMSw4ICszNjUzLDcgQEAgc3RhdGljIGludCBwcm9jZXNzX29xKHN0cnVj dCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSkKIAkJCQkvKiBPUSBpcyBlbXB0eSAqLwogCQkJ CWJyZWFrOwogCQl9Ci0JfSB3aGlsZSAoMTAwID4gcHJvY2Vzc2VkTXNnQ291bnQpOy8qZW5kIG1l c3NhZ2UgcHJvY2Vzc2luZyBpZiBoaXQgdGhlCi0JY291bnQqLworCX0gd2hpbGUgKDEpOwogCXJl dHVybiByZXQ7CiB9CiAKQEAgLTM3NDMsNiArMzc2NCw3IEBAIHN0YXRpYyBpbnQgcG04MDAxX2No aXBfc3NwX2lvX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJc3RydWN0 IHBtODAwMV9kZXZpY2UgKnBtODAwMV9kZXYgPSBkZXYtPmxsZGRfZGV2OwogCXN0cnVjdCBzc3Bf aW5pX2lvX3N0YXJ0X3JlcSBzc3BfY21kOwogCXUzMiB0YWcgPSBjY2ItPmNjYl90YWc7CisJaW50 IHJldDsKIAlfX2xlNjQgcGh5c19hZGRyOwogCXN0cnVjdCBpbmJvdW5kX3F1ZXVlX3RhYmxlICpj aXJjdWxhclE7CiAJdTMyIG9wYyA9IE9QQ19JTkJfU1NQSU5JSU9TVEFSVDsKQEAgLTM3ODAsOCAr MzgwMiw4IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfc3NwX2lvX3JlcShzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJCXNzcF9jbWQubGVuID0gY3B1X3RvX2xlMzIodGFzay0+ dG90YWxfeGZlcl9sZW4pOwogCQlzc3BfY21kLmVzZ2wgPSAwOwogCX0KLQltcGlfYnVpbGRfY21k KHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZzc3BfY21kKTsKLQlyZXR1cm4gMDsKKwlyZXQg PSBtcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZzc3BfY21kKTsKKwly ZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3NhdGFfcmVxKHN0cnVjdCBw bTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKQEAgLTM3OTEsNiArMzgxMyw3IEBAIHN0YXRpYyBp bnQgcG04MDAxX2NoaXBfc2F0YV9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hh LAogCXN0cnVjdCBkb21haW5fZGV2aWNlICpkZXYgPSB0YXNrLT5kZXY7CiAJc3RydWN0IHBtODAw MV9kZXZpY2UgKnBtODAwMV9oYV9kZXYgPSBkZXYtPmxsZGRfZGV2OwogCXUzMiB0YWcgPSBjY2It PmNjYl90YWc7CisJaW50IHJldDsKIAlzdHJ1Y3Qgc2F0YV9zdGFydF9yZXEgc2F0YV9jbWQ7CiAJ dTMyIGhkcl90YWcsIG5jZ190YWcgPSAwOwogCV9fbGU2NCBwaHlzX2FkZHI7CkBAIC0zODQ5LDgg KzM4NzIsOCBAQCBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3NhdGFfcmVxKHN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSwKIAkJc2F0YV9jbWQubGVuID0gY3B1X3RvX2xlMzIodGFzay0+ dG90YWxfeGZlcl9sZW4pOwogCQlzYXRhX2NtZC5lc2dsID0gMDsKIAl9Ci0JbXBpX2J1aWxkX2Nt ZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmc2F0YV9jbWQpOwotCXJldHVybiAwOworCXJl dCA9IG1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wYywgJnNhdGFfY21kKTsK KwlyZXR1cm4gcmV0OwogfQogCiAvKioKQEAgLTM4NjQsNiArMzg4Nyw3IEBAIHBtODAwMV9jaGlw X3BoeV9zdGFydF9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB1OCBwaHlf aWQpCiB7CiAJc3RydWN0IHBoeV9zdGFydF9yZXEgcGF5bG9hZDsKIAlzdHJ1Y3QgaW5ib3VuZF9x dWV1ZV90YWJsZSAqY2lyY3VsYXJROworCWludCByZXQ7CiAJdTMyIHRhZyA9IDB4MDE7CiAJdTMy IG9wY29kZSA9IE9QQ19JTkJfUEhZU1RBUlQ7CiAJY2lyY3VsYXJRID0gJnBtODAwMV9oYS0+aW5i bmRfcV90YmxbMF07CkBAIC0zODgzLDggKzM5MDcsOCBAQCBwbTgwMDFfY2hpcF9waHlfc3RhcnRf cmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdTggcGh5X2lkKQogCW1lbWNw eShwYXlsb2FkLnNhc19pZGVudGlmeS5zYXNfYWRkciwKIAkJcG04MDAxX2hhLT5zYXNfYWRkciwg U0FTX0FERFJfU0laRSk7CiAJcGF5bG9hZC5zYXNfaWRlbnRpZnkucGh5X2lkID0gcGh5X2lkOwot CW1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wY29kZSwgJnBheWxvYWQpOwot CXJldHVybiAwOworCXJldCA9IG1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9w Y29kZSwgJnBheWxvYWQpOworCXJldHVybiByZXQ7CiB9CiAKIC8qKgpAQCAtMzg5OCwxNCArMzky MiwxNSBAQCBzdGF0aWMgaW50IHBtODAwMV9jaGlwX3BoeV9zdG9wX3JlcShzdHJ1Y3QgcG04MDAx X2hiYV9pbmZvICpwbTgwMDFfaGEsCiB7CiAJc3RydWN0IHBoeV9zdG9wX3JlcSBwYXlsb2FkOwog CXN0cnVjdCBpbmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJjdWxhclE7CisJaW50IHJldDsKIAl1MzIg dGFnID0gMHgwMTsKIAl1MzIgb3Bjb2RlID0gT1BDX0lOQl9QSFlTVE9QOwogCWNpcmN1bGFyUSA9 ICZwbTgwMDFfaGEtPmluYm5kX3FfdGJsWzBdOwogCW1lbXNldCgmcGF5bG9hZCwgMCwgc2l6ZW9m KHBheWxvYWQpKTsKIAlwYXlsb2FkLnRhZyA9IGNwdV90b19sZTMyKHRhZyk7CiAJcGF5bG9hZC5w aHlfaWQgPSBjcHVfdG9fbGUzMihwaHlfaWQpOwotCW1waV9idWlsZF9jbWQocG04MDAxX2hhLCBj aXJjdWxhclEsIG9wY29kZSwgJnBheWxvYWQpOwotCXJldHVybiAwOworCXJldCA9IG1waV9idWls ZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wY29kZSwgJnBheWxvYWQpOworCXJldHVybiBy ZXQ7CiB9CiAKIC8qKgpAQCAtMzkxOSw3ICszOTQ0LDcgQEAgc3RhdGljIGludCBwbTgwMDFfY2hp cF9yZWdfZGV2X3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJdTMyIHN0 cF9zc3BzbXBfc2F0YSA9IDB4NDsKIAlzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3Vs YXJROwogCXUzMiBsaW5rcmF0ZSwgcGh5X2lkOwotCXUzMiByYywgdGFnID0gMHhkZWFkYmVlZjsK KwlpbnQgcmMsIHRhZyA9IDB4ZGVhZGJlZWY7CiAJc3RydWN0IHBtODAwMV9jY2JfaW5mbyAqY2Ni OwogCXU4IHJldHJ5RmxhZyA9IDB4MTsKIAl1MTYgZmlyc3RCdXJzdFNpemUgPSAwOwpAQCAtMzk2 Myw4ICszOTg4LDggQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9yZWdfZGV2X3JlcShzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJCWNwdV90b19sZTMyKElUTlQgfCAoZmlyc3RC dXJzdFNpemUgKiAweDEwMDAwKSk7CiAJbWVtY3B5KCZwYXlsb2FkLnNhc19hZGRyX2hpLCBwbTgw MDFfZGV2LT5zYXNfZGV2aWNlLT5zYXNfYWRkciwKIAkJU0FTX0FERFJfU0laRSk7Ci0JbXBpX2J1 aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7 CisJcmMgPSBtcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZwYXlsb2Fk KTsKKwlyZXR1cm4gcmM7CiB9CiAKIC8qKgpAQCAtMzk3NSwxNiArNDAwMCwxNyBAQCBzdGF0aWMg aW50IHBtODAwMV9jaGlwX2RlcmVnX2Rldl9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04 MDAxX2hhLAogewogCXN0cnVjdCBkZXJlZ19kZXZfcmVxIHBheWxvYWQ7CiAJdTMyIG9wYyA9IE9Q Q19JTkJfREVSRUdfREVWX0hBTkRMRTsKKwlpbnQgcmV0OwogCXN0cnVjdCBpbmJvdW5kX3F1ZXVl X3RhYmxlICpjaXJjdWxhclE7CiAKIAljaXJjdWxhclEgPSAmcG04MDAxX2hhLT5pbmJuZF9xX3Ri bFswXTsKLQltZW1zZXQoKHU4ICopJnBheWxvYWQsIDAsIHNpemVvZihwYXlsb2FkKSk7CisJbWVt c2V0KCZwYXlsb2FkLCAwLCBzaXplb2YocGF5bG9hZCkpOwogCXBheWxvYWQudGFnID0gMTsKIAlw YXlsb2FkLmRldmljZV9pZCA9IGNwdV90b19sZTMyKGRldmljZV9pZCk7CiAJUE04MDAxX01TR19E QkcocG04MDAxX2hhLAogCQlwbTgwMDFfcHJpbnRrKCJ1bnJlZ2lzdGVyIGRldmljZSBkZXZpY2Vf aWQgPSAlZFxuIiwgZGV2aWNlX2lkKSk7Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1 bGFyUSwgb3BjLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7CisJcmV0ID0gbXBpX2J1aWxkX2NtZChw bTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7CisJcmV0dXJuIHJldDsKIH0KIAog LyoqCkBAIC0zOTk5LDE0ICs0MDI1LDE1IEBAIHN0YXRpYyBpbnQgcG04MDAxX2NoaXBfcGh5X2N0 bF9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogewogCXN0cnVjdCBsb2Nh bF9waHlfY3RsX3JlcSBwYXlsb2FkOwogCXN0cnVjdCBpbmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJj dWxhclE7CisJaW50IHJldDsKIAl1MzIgb3BjID0gT1BDX0lOQl9MT0NBTF9QSFlfQ09OVFJPTDsK IAltZW1zZXQoKHU4ICopJnBheWxvYWQsIDAsIHNpemVvZihwYXlsb2FkKSk7CiAJY2lyY3VsYXJR ID0gJnBtODAwMV9oYS0+aW5ibmRfcV90YmxbMF07CiAJcGF5bG9hZC50YWcgPSAxOwogCXBheWxv YWQucGh5b3BfcGh5aWQgPQogCQljcHVfdG9fbGUzMigoKHBoeV9vcCAmIDB4ZmYpIDw8IDgpIHwg KHBoeUlkICYgMHgwRikpOwotCW1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9w YywgJnBheWxvYWQpOwotCXJldHVybiAwOworCXJldCA9IG1waV9idWlsZF9jbWQocG04MDAxX2hh LCBjaXJjdWxhclEsIG9wYywgJnBheWxvYWQpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB1 MzIgcG04MDAxX2NoaXBfaXNfb3VyX2ludGVydXB0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBt ODAwMV9oYSkKQEAgLTQwMjgsMTIgKzQwNTUsMTYgQEAgc3RhdGljIHUzMiBwbTgwMDFfY2hpcF9p c19vdXJfaW50ZXJ1cHQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKQogICogQGly cTogaXJxIG51bWJlci4KICAqIEBzdGF0OiBzdGF0LgogICovCi1zdGF0aWMgdm9pZAorc3RhdGlj IGlycXJldHVybl90CiBwbTgwMDFfY2hpcF9pc3Ioc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04 MDAxX2hhKQogeworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnBt ODAwMV9oYS0+bG9jaywgZmxhZ3MpOwogCXBtODAwMV9jaGlwX2ludGVycnVwdF9kaXNhYmxlKHBt ODAwMV9oYSk7CiAJcHJvY2Vzc19vcShwbTgwMDFfaGEpOwogCXBtODAwMV9jaGlwX2ludGVycnVw dF9lbmFibGUocG04MDAxX2hhKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwbTgwMDFfaGEt PmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKIHN0YXRpYyBpbnQgc2Vu ZF90YXNrX2Fib3J0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdTMyIG9wYywK QEAgLTQwNDEsNyArNDA3Miw3IEBAIHN0YXRpYyBpbnQgc2VuZF90YXNrX2Fib3J0KHN0cnVjdCBw bTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdTMyIG9wYywKIHsKIAlzdHJ1Y3QgdGFza19hYm9y dF9yZXEgdGFza19hYm9ydDsKIAlzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJR OwotCisJaW50IHJldDsKIAljaXJjdWxhclEgPSAmcG04MDAxX2hhLT5pbmJuZF9xX3RibFswXTsK IAltZW1zZXQoJnRhc2tfYWJvcnQsIDAsIHNpemVvZih0YXNrX2Fib3J0KSk7CiAJaWYgKEFCT1JU X1NJTkdMRSA9PSAoZmxhZyAmIEFCT1JUX01BU0spKSB7CkBAIC00MDU0LDggKzQwODUsOCBAQCBz dGF0aWMgaW50IHNlbmRfdGFza19hYm9ydChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFf aGEsIHUzMiBvcGMsCiAJCXRhc2tfYWJvcnQuZGV2aWNlX2lkID0gY3B1X3RvX2xlMzIoZGV2X2lk KTsKIAkJdGFza19hYm9ydC50YWcgPSBjcHVfdG9fbGUzMihjbWRfdGFnKTsKIAl9Ci0JbXBpX2J1 aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmdGFza19hYm9ydCk7Ci0JcmV0dXJu IDA7CisJcmV0ID0gbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmdGFz a19hYm9ydCk7CisJcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC00MDY4LDcgKzQwOTksOCBAQCBz dGF0aWMgaW50IHBtODAwMV9jaGlwX2Fib3J0X3Rhc2soc3RydWN0IHBtODAwMV9oYmFfaW5mbyAq cG04MDAxX2hhLAogewogCXUzMiBvcGMsIGRldmljZV9pZDsKIAlpbnQgcmMgPSBUTUZfUkVTUF9G VU5DX0ZBSUxFRDsKLQlQTTgwMDFfSU9fREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygiQWJv cnQgdGFnWyV4XSIsIHRhc2tfdGFnKSk7CisJUE04MDAxX0VIX0RCRyhwbTgwMDFfaGEsIHBtODAw MV9wcmludGsoImNtZF90YWcgPSAleCwgYWJvcnQgdGFzayB0YWciCisJCSIgPSAleCIsIGNtZF90 YWcsIHRhc2tfdGFnKSk7CiAJaWYgKHBtODAwMV9kZXYtPmRldl90eXBlID09IFNBU19FTkRfREVW KQogCQlvcGMgPSBPUENfSU5CX1NTUF9BQk9SVDsKIAllbHNlIGlmIChwbTgwMDFfZGV2LT5kZXZf dHlwZSA9PSBTQVRBX0RFVikKQEAgLTQwNzksNyArNDExMSw3IEBAIHN0YXRpYyBpbnQgcG04MDAx X2NoaXBfYWJvcnRfdGFzayhzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJcmMg PSBzZW5kX3Rhc2tfYWJvcnQocG04MDAxX2hhLCBvcGMsIGRldmljZV9pZCwgZmxhZywKIAkJdGFz a190YWcsIGNtZF90YWcpOwogCWlmIChyYyAhPSBUTUZfUkVTUF9GVU5DX0NPTVBMRVRFKQotCQlQ TTgwMDFfSU9fREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygicmM9ICVkXG4iLCByYykpOwor CQlQTTgwMDFfRUhfREJHKHBtODAwMV9oYSwgcG04MDAxX3ByaW50aygicmM9ICVkXG4iLCByYykp OwogCXJldHVybiByYzsKIH0KIApAQCAtNDA5OCwxNyArNDEzMCwxNyBAQCBzdGF0aWMgaW50IHBt ODAwMV9jaGlwX3NzcF90bV9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAog CXUzMiBvcGMgPSBPUENfSU5CX1NTUElOSVRNU1RBUlQ7CiAJc3RydWN0IGluYm91bmRfcXVldWVf dGFibGUgKmNpcmN1bGFyUTsKIAlzdHJ1Y3Qgc3NwX2luaV90bV9zdGFydF9yZXEgc3NwVE1DbWQ7 CisJaW50IHJldDsKIAogCW1lbXNldCgmc3NwVE1DbWQsIDAsIHNpemVvZihzc3BUTUNtZCkpOwog CXNzcFRNQ21kLmRldmljZV9pZCA9IGNwdV90b19sZTMyKHBtODAwMV9kZXYtPmRldmljZV9pZCk7 CiAJc3NwVE1DbWQucmVsYXRlX3RhZyA9IGNwdV90b19sZTMyKHRtZi0+dGFnX29mX3Rhc2tfdG9f YmVfbWFuYWdlZCk7CiAJc3NwVE1DbWQudG1mID0gY3B1X3RvX2xlMzIodG1mLT50bWYpOwotCXNz cFRNQ21kLmRzX2Fkc19tID0gY3B1X3RvX2xlMzIoMSA8PCAyKTsKIAltZW1jcHkoc3NwVE1DbWQu bHVuLCB0YXNrLT5zc3BfdGFzay5MVU4sIDgpOwogCXNzcFRNQ21kLnRhZyA9IGNwdV90b19sZTMy KGNjYi0+Y2NiX3RhZyk7CiAJY2lyY3VsYXJRID0gJnBtODAwMV9oYS0+aW5ibmRfcV90YmxbMF07 Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwgb3BjLCAmc3NwVE1DbWQpOwot CXJldHVybiAwOworCXJldCA9IG1waV9idWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9w YywgJnNzcFRNQ21kKTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHBtODAwMV9jaGlw X2dldF9udm1kX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCkBAIC00MTE2 LDcgKzQxNDgsNyBAQCBzdGF0aWMgaW50IHBtODAwMV9jaGlwX2dldF9udm1kX3JlcShzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiB7CiAJdTMyIG9wYyA9IE9QQ19JTkJfR0VUX05W TURfREFUQTsKIAl1MzIgbnZtZF90eXBlOwotCXUzMiByYzsKKwlpbnQgcmM7CiAJdTMyIHRhZzsK IAlzdHJ1Y3QgcG04MDAxX2NjYl9pbmZvICpjY2I7CiAJc3RydWN0IGluYm91bmRfcXVldWVfdGFi bGUgKmNpcmN1bGFyUTsKQEAgLTQxODMsOCArNDIxNSw4IEBAIHN0YXRpYyBpbnQgcG04MDAxX2No aXBfZ2V0X252bWRfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlkZWZh dWx0OgogCQlicmVhazsKIAl9Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFfaGEsIGNpcmN1bGFyUSwg b3BjLCAmbnZtZF9yZXEpOwotCXJldHVybiAwOworCXJjID0gbXBpX2J1aWxkX2NtZChwbTgwMDFf aGEsIGNpcmN1bGFyUSwgb3BjLCAmbnZtZF9yZXEpOworCXJldHVybiByYzsKIH0KIAogc3RhdGlj IGludCBwbTgwMDFfY2hpcF9zZXRfbnZtZF9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04 MDAxX2hhLApAQCAtNDE5Miw3ICs0MjI0LDcgQEAgc3RhdGljIGludCBwbTgwMDFfY2hpcF9zZXRf bnZtZF9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogewogCXUzMiBvcGMg PSBPUENfSU5CX1NFVF9OVk1EX0RBVEE7CiAJdTMyIG52bWRfdHlwZTsKLQl1MzIgcmM7CisJaW50 IHJjOwogCXUzMiB0YWc7CiAJc3RydWN0IHBtODAwMV9jY2JfaW5mbyAqY2NiOwogCXN0cnVjdCBp bmJvdW5kX3F1ZXVlX3RhYmxlICpjaXJjdWxhclE7CkBAIC00MjU5LDggKzQyOTEsOCBAQCBzdGF0 aWMgaW50IHBtODAwMV9jaGlwX3NldF9udm1kX3JlcShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpw bTgwMDFfaGEsCiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQotCW1waV9idWlsZF9jbWQocG04MDAx X2hhLCBjaXJjdWxhclEsIG9wYywgJm52bWRfcmVxKTsKLQlyZXR1cm4gMDsKKwlyYyA9IG1waV9i dWlsZF9jbWQocG04MDAxX2hhLCBjaXJjdWxhclEsIG9wYywgJm52bWRfcmVxKTsKKwlyZXR1cm4g cmM7CiB9CiAKIC8qKgpAQCAtNDI3NSw2ICs0MzA3LDcgQEAgcG04MDAxX2NoaXBfZndfZmxhc2hf dXBkYXRlX2J1aWxkKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlzdHJ1Y3Qg ZndfZmxhc2hfVXBkYXRlX3JlcSBwYXlsb2FkOwogCXN0cnVjdCBmd19mbGFzaF91cGRhdGFfaW5m byAqaW5mbzsKIAlzdHJ1Y3QgaW5ib3VuZF9xdWV1ZV90YWJsZSAqY2lyY3VsYXJROworCWludCBy ZXQ7CiAJdTMyIG9wYyA9IE9QQ19JTkJfRldfRkxBU0hfVVBEQVRFOwogCiAJbWVtc2V0KCh1OCAq KSZwYXlsb2FkLCAwLCBzaXplb2Yoc3RydWN0IGZ3X2ZsYXNoX1VwZGF0ZV9yZXEpKTsKQEAgLTQy ODcsOCArNDMyMCw4IEBAIHBtODAwMV9jaGlwX2Z3X2ZsYXNoX3VwZGF0ZV9idWlsZChzdHJ1Y3Qg cG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsCiAJcGF5bG9hZC5sZW4gPSBpbmZvLT5zZ2wuaW1f bGVuLmxlbiA7CiAJcGF5bG9hZC5zZ2xfYWRkcl9sbyA9IGxvd2VyXzMyX2JpdHMoaW5mby0+c2ds LmFkZHIpOwogCXBheWxvYWQuc2dsX2FkZHJfaGkgPSB1cHBlcl8zMl9iaXRzKGluZm8tPnNnbC5h ZGRyKTsKLQltcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZwYXlsb2Fk KTsKLQlyZXR1cm4gMDsKKwlyZXQgPSBtcGlfYnVpbGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJR LCBvcGMsICZwYXlsb2FkKTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50CkBAIC00Mjk4 LDcgKzQzMzEsNyBAQCBwbTgwMDFfY2hpcF9md19mbGFzaF91cGRhdGVfcmVxKHN0cnVjdCBwbTgw MDFfaGJhX2luZm8gKnBtODAwMV9oYSwKIAlzdHJ1Y3QgZndfZmxhc2hfdXBkYXRhX2luZm8gZmxh c2hfdXBkYXRlX2luZm87CiAJc3RydWN0IGZ3X2NvbnRyb2xfaW5mbyAqZndfY29udHJvbDsKIAlz dHJ1Y3QgZndfY29udHJvbF9leCAqZndfY29udHJvbF9jb250ZXh0OwotCXUzMiByYzsKKwlpbnQg cmM7CiAJdTMyIHRhZzsKIAlzdHJ1Y3QgcG04MDAxX2NjYl9pbmZvICpjY2I7CiAJdm9pZCAqYnVm ZmVyID0gTlVMTDsKQEAgLTQzMjEsOCArNDM1NCw4IEBAIHBtODAwMV9jaGlwX2Z3X2ZsYXNoX3Vw ZGF0ZV9yZXEoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLAogCQkJCXJldHVybiAt RU5PTUVNOwogCQl9CiAJfQotCW1lbXNldCgodm9pZCAqKWJ1ZmZlciwgMCwgZndfY29udHJvbC0+ bGVuKTsKLQltZW1jcHkoKHZvaWQgKilidWZmZXIsIGZ3X2NvbnRyb2wtPmJ1ZmZlciwgZndfY29u dHJvbC0+bGVuKTsKKwltZW1zZXQoYnVmZmVyLCAwLCBmd19jb250cm9sLT5sZW4pOworCW1lbWNw eShidWZmZXIsIGZ3X2NvbnRyb2wtPmJ1ZmZlciwgZndfY29udHJvbC0+bGVuKTsKIAlmbGFzaF91 cGRhdGVfaW5mby5zZ2wuYWRkciA9IGNwdV90b19sZTY0KHBoeXNfYWRkcik7CiAJZmxhc2hfdXBk YXRlX2luZm8uc2dsLmltX2xlbi5sZW4gPSBjcHVfdG9fbGUzMihmd19jb250cm9sLT5sZW4pOwog CWZsYXNoX3VwZGF0ZV9pbmZvLnNnbC5pbV9sZW4uZSA9IDA7CkBAIC00MzM4LDggKzQzNzEsOCBA QCBwbTgwMDFfY2hpcF9md19mbGFzaF91cGRhdGVfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8g KnBtODAwMV9oYSwKIAljY2IgPSAmcG04MDAxX2hhLT5jY2JfaW5mb1t0YWddOwogCWNjYi0+Zndf Y29udHJvbF9jb250ZXh0ID0gZndfY29udHJvbF9jb250ZXh0OwogCWNjYi0+Y2NiX3RhZyA9IHRh ZzsKLQlwbTgwMDFfY2hpcF9md19mbGFzaF91cGRhdGVfYnVpbGQocG04MDAxX2hhLCAmZmxhc2hf dXBkYXRlX2luZm8sIHRhZyk7Ci0JcmV0dXJuIDA7CisJcmMgPSBwbTgwMDFfY2hpcF9md19mbGFz aF91cGRhdGVfYnVpbGQocG04MDAxX2hhLCAmZmxhc2hfdXBkYXRlX2luZm8sCisJCXRhZyk7CisJ cmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50CkBAIC00MzQ5LDEwICs0MzgyLDEwIEBAIHBtODAw MV9jaGlwX3NldF9kZXZfc3RhdGVfcmVxKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9o YSwKIAlzdHJ1Y3Qgc2V0X2Rldl9zdGF0ZV9yZXEgcGF5bG9hZDsKIAlzdHJ1Y3QgaW5ib3VuZF9x dWV1ZV90YWJsZSAqY2lyY3VsYXJROwogCXN0cnVjdCBwbTgwMDFfY2NiX2luZm8gKmNjYjsKLQl1 MzIgcmM7CisJaW50IHJjOwogCXUzMiB0YWc7CiAJdTMyIG9wYyA9IE9QQ19JTkJfU0VUX0RFVklD RV9TVEFURTsKLQltZW1zZXQoKHU4ICopJnBheWxvYWQsIDAsIHNpemVvZihwYXlsb2FkKSk7CisJ bWVtc2V0KCZwYXlsb2FkLCAwLCBzaXplb2YocGF5bG9hZCkpOwogCXJjID0gcG04MDAxX3RhZ19h bGxvYyhwbTgwMDFfaGEsICZ0YWcpOwogCWlmIChyYykKIAkJcmV0dXJuIC0xOwpAQCAtNDM2Myw4 ICs0Mzk2LDkgQEAgcG04MDAxX2NoaXBfc2V0X2Rldl9zdGF0ZV9yZXEoc3RydWN0IHBtODAwMV9o YmFfaW5mbyAqcG04MDAxX2hhLAogCXBheWxvYWQudGFnID0gY3B1X3RvX2xlMzIodGFnKTsKIAlw YXlsb2FkLmRldmljZV9pZCA9IGNwdV90b19sZTMyKHBtODAwMV9kZXYtPmRldmljZV9pZCk7CiAJ cGF5bG9hZC5uZHMgPSBjcHVfdG9fbGUzMihzdGF0ZSk7Ci0JbXBpX2J1aWxkX2NtZChwbTgwMDFf aGEsIGNpcmN1bGFyUSwgb3BjLCAmcGF5bG9hZCk7Ci0JcmV0dXJuIDA7CisJcmMgPSBtcGlfYnVp bGRfY21kKHBtODAwMV9oYSwgY2lyY3VsYXJRLCBvcGMsICZwYXlsb2FkKTsKKwlyZXR1cm4gcmM7 CisKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgw MDFfc2FzLmggYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaAppbmRleCBlZDZkYmQx Li4zMGYyZWRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaAor KysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaApAQCAtMTE5LDcgKzExOSw3IEBA IHN0cnVjdCBwbTgwMDFfZGlzcGF0Y2ggewogCXZvaWQgKCpjaGlwX3JzdCkoc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKIAlpbnQgKCpjaGlwX2lvcmVtYXApKHN0cnVjdCBwbTgw MDFfaGJhX2luZm8gKnBtODAwMV9oYSk7CiAJdm9pZCAoKmNoaXBfaW91bm1hcCkoc3RydWN0IHBt ODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKLQl2b2lkICgqaXNyKShzdHJ1Y3QgcG04MDAxX2hi YV9pbmZvICpwbTgwMDFfaGEpOworCWlycXJldHVybl90ICgqaXNyKShzdHJ1Y3QgcG04MDAxX2hi YV9pbmZvICpwbTgwMDFfaGEpOwogCXUzMiAoKmlzX291cl9pbnRlcnVwdCkoc3RydWN0IHBtODAw MV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKIAlpbnQgKCppc3JfcHJvY2Vzc19vcSkoc3RydWN0IHBt ODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKIAl2b2lkICgqaW50ZXJydXB0X2VuYWJsZSkoc3Ry dWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKTsKLS0gCjEuNi40Lm1zeXNnaXQuMAoKDQo= --=====001_Dragon758317740472_=====--