From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v1,2/3] usb: dwc2: Change ISOC DDMA flow From: Minas Harutyunyan Message-Id: <71c6f1c651dd34064f61cc53207a9d99ddd4c912.1521277589.git.hminas@synopsys.com> Date: Sat, 17 Mar 2018 13:09:34 +0400 To: John Youn , Felipe Balbi , Greg Kroah-Hartman , linux-usb@vger.kernel.org Cc: Minas Harutyunyan List-ID: Q2hhbmdlZCBleGlzdGluZyB0d28gZGVzY3JpcHRvci1jaGFpbiBmbG93IHRvIG9uZSBjaGFpbi4K CkluIHR3by1jaGFpbiBpbXBsZW1lbnRhdGlvbiBCTkEgaW50ZXJydXB0IHVzZWQgZm9yIHN3aXRj aGluZyBiZXR3ZWVuCnR3byBjaGFpbnMuIEJOQSBpbnRlcnJ1cHQgYXNzZXJ0ZWQgYmVjYXVzZSBv ZiByZXR1cm5pbmcgdG8KYmVnaW5uaW5nIG9mIHRoZSBjaGFpbiBiYXNlZCBvbiBMLWJpdCBvZiBs YXN0IGRlc2NyaXB0b3IuCgpCZWNhdXNlIG9mIHRoYXQgd2UgbG9zZSBwYWNrZXRzLiBUaGlzIGlz c3VlIHJlc29sdmVkIGJ5IHVzaW5nIG9uZQpkZXNjLWNoYWluLgoKUmVtb3ZlZCBhbGwgc3RhZmYg cmVsYXRlZCB0byB0d28gZGVzYy1jaGFpbiBmbG93IGZyb20KRERNQSBJU09DIHJlbGF0ZWQgZnVu Y3Rpb25zLgoKUmVtb3ZlZCByZXF1ZXN0IGxlbmd0aCBjaGVja2luZyBmcm9tIGR3YzJfZ2FkZ2V0 X2ZpbGxfaXNvY19kZXNjKCkKZnVuY3Rpb24uIFJlcXVlc3QgbGVuZ3RoIGNoZWNraW5nIGFkZGVk IHRvIGR3YzJfaHNvdGdfZXBfcXVldWUoKQpmdW5jdGlvbi4gSWYgcmVxdWVzdCBsZW5ndGggZ3Jl YXRlciB0aGFuIGRlc2NyaXB0b3IgbGltaXRzIHRoZW4KcmVxdWVzdCBub3QgYWRkZWQgdG8gcXVl dWUuIEFkZGl0aW9uYWwgY2hlY2tpbmcgZG9uZSBmb3IgSGlnaApCYW5kd2lkdGggSVNPQyBPVVQn cyB3aGljaCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlci4gSW4KZHdjMl9nYWRnZXRfZmlsbF9pc29j X2Rlc2MoKSBmdW5jdGlvbiBhbHNvIGNoZWNrZWQgZGVzYy1jaGFpbgpzdGF0dXMgKGZ1bGwgb3Ig bm90KSB0byBhdm9pZCBvZiByZXVzaW5nIG5vdCB5ZXQgcHJvY2Vzc2VkCmRlc2NyaXB0b3JzLgoK SW4gZHdjMl9nYWRnZXRfc3RhcnRfaXNvY19kZG1hKCkgZnVuY3Rpb24gY3JlYXRpb24gb2YgZGVz Yy1jaGFpbgphbHdheXMgc3RhcnRlZCBmcm9tIGRlc2NyaXB0b3IgMC4gQmVmb3JlIGZpbGxpbmcg ZGVzY3JpcHRvcnMsIHRoZXkKd2VyZSBpbml0aWFsaXplZCBieSBIT1NUIEJVU1kgc3RhdHVzLgoK SW4gZHdjMl9nYWRnZXRfY29tcGxldGVfaXNvY19yZXF1ZXN0X2RkbWEoKSBhZGRlZCBjaGVja2lu ZyBmb3IKZGVzYy1jaGFpbiByb2xsb3Zlci4gQWxzbyBhZGRlZCBjaGVja2luZyBjb21wbGV0aW9u IHN0YXR1cy4KUmVxdWVzdCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGlmIERFVl9ETUFfU1RTIGlz IERFVl9ETUFfU1RTX1NVQ0MsCm90aGVyd2lzZSBjb21wbGV0ZSB3aXRoIC1FVElNRURPVVQuCgpB Y3R1YWxseSByZW1vdmVkIGR3YzJfZ2FkZ2V0X3N0YXJ0X25leHRfaXNvY19kZG1hKCkgZnVuY3Rp b24gYmVjYXVzZQpub3cgZHJpdmVyIHVzZSBvbmx5IG9uZSBkZXNjLWNoYWluIGFuZCBpbnN0ZWFk IHRoYXQgZnVuY3Rpb24gYWRkZWQKZHdjMl9nYWRnZXRfaGFuZGxlX2lzb2NfYm5hKCkgZnVuY3Rp b24gZm9yIGhhbmRsaW5nIEJOQSBpbnRlcnJ1cHRzLgoKSGFuZGxpbmcgQk5BIGludGVycnVwdCBk b25lIGJ5IGZsdXNoaW5nIFR4RklGT3MgZm9yIE9VVCBFUHMsCmNvbXBsZXRpbmcgcmVxdWVzdCB3 aXRoIC1FSU8gYW5kIHJlc2V0dGluZyBkZXNjLWNoYWluIG51bWJlciBhbmQKdGFyZ2V0IGZyYW1l IHRvIGluaXRpYWwgdmFsdWVzIGZvciByZXN0YXJ0aW5nIHRyYW5zZmVycy4KCk9uIGhhbmRsaW5n IE5BSyByZXF1ZXN0IGNvbXBsZXRlZCB3aXRoIC1FTk9EQVRBLiBJbmNyZW1lbnRlZCB0YXJnZXQK ZnJhbWUgdG8gYWxsb3cgZmlsbCBkZXNjIGNoYWluIGFuZCBzdGFydCB0cmFuc2ZlcnMuCkluIERE TUEgbW9kZSBhdm9pZGVkIG9mIGZyYW1lIG51bWJlciBpbmNyZW1lbnRpbmcsIGJlY2F1c2UgdHJh Y2tpbmcKb2YgZnJhbWUgbnVtYmVyIHBlcmZvcm1lZCBpbiBkd2MyX2dhZGdldF9maWxsX2lzb2Nf ZGVzYygpIGZ1bmN0aW9uLgoKV2hlbiBjb3JlIGFzc2VydCBYZmVyQ29tcGwgYWxvbmcgd2l0aCBC TkEsIHdlIHNob3VsZCBpZ25vcmUgWGZlckNvbXBsCmluIGR3YzJfaHNvdGdfZXBpbnQoKSBmdW5j dGlvbi4KCk9uIEJOQSBpbnRlcnJ1cHQgcmVwbGFjZWQgZHdjMl9nYWRnZXRfc3RhcnRfbmV4dF9p c29jX2RkbWEoKSBieSBhYm92ZQptZW50aW9uZWQgQk5BIGhhbmRsZXIuCgpJbiBkd2MyX2hzb3Rn X2VwX2VuYWJsZSgpIGZ1bmN0aW9uIGFkZGVkIHNhbml0eSBjaGVjayBvZiBiSW50ZXJ2YWwKZm9y IElTT0MgSU4gaW4gRERNQSBtb2RlLCBiZWNhdXNlIEhXIG5vdCBzdXBwb3J0ZWQgRVAncyB3aXRo CmJJbnRlcnZhbCBtb3JlIHRoYW4gMTIuCgpTaWduZWQtb2ZmLWJ5OiBNaW5hcyBIYXJ1dHl1bnlh biA8aG1pbmFzQHN5bm9wc3lzLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9kd2MyL2NvcmUuaCAgIHwg ICAyIC0KIGRyaXZlcnMvdXNiL2R3YzIvZ2FkZ2V0LmMgfCAyMzUgKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0 aW9ucygrKSwgMTI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIv Y29yZS5oIGIvZHJpdmVycy91c2IvZHdjMi9jb3JlLmgKaW5kZXggZDgzYmU1NjUxZjg3Li4wOTNk MDc4YWRhZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvY29yZS5oCisrKyBiL2RyaXZl cnMvdXNiL2R3YzIvY29yZS5oCkBAIC0xNzgsNyArMTc4LDYgQEAgc3RydWN0IGR3YzJfaHNvdGdf cmVxOwogICogQGRlc2NfbGlzdF9kbWE6IFRoZSBETUEgYWRkcmVzcyBvZiBkZXNjcmlwdG9yIGNo YWluIGN1cnJlbnRseSBpbiB1c2UuCiAgKiBAZGVzY19saXN0OiBQb2ludGVyIHRvIGRlc2NyaXB0 b3IgRE1BIGNoYWluIGhlYWQgY3VycmVudGx5IGluIHVzZS4KICAqIEBkZXNjX2NvdW50OiBDb3Vu dCBvZiBlbnRyaWVzIHdpdGhpbiB0aGUgRE1BIGRlc2NyaXB0b3IgY2hhaW4gb2YgRVAuCi0gKiBA aXNvY19jaGFpbl9udW06IE51bWJlciBvZiBJU09DIGNoYWluIGN1cnJlbnRseSBpbiB1c2UgLSBl aXRoZXIgMCBvciAxLgogICogQG5leHRfZGVzYzogaW5kZXggb2YgbmV4dCBmcmVlIGRlc2NyaXB0 b3IgaW4gdGhlIElTT0MgY2hhaW4gdW5kZXIgU1cgY29udHJvbC4KICAqIEB0b3RhbF9kYXRhOiBU aGUgdG90YWwgbnVtYmVyIG9mIGRhdGEgYnl0ZXMgZG9uZS4KICAqIEBmaWZvX3NpemU6IFRoZSBz aXplIG9mIHRoZSBGSUZPIChmb3IgcGVyaW9kaWMgSU4gZW5kcG9pbnRzKQpAQCAtMjMxLDcgKzIz MCw2IEBAIHN0cnVjdCBkd2MyX2hzb3RnX2VwIHsKIAlzdHJ1Y3QgZHdjMl9kbWFfZGVzYwkqZGVz Y19saXN0OwogCXU4CQkJZGVzY19jb3VudDsKIAotCXVuc2lnbmVkIGNoYXIJCWlzb2NfY2hhaW5f bnVtOwogCXVuc2lnbmVkIGludAkJbmV4dF9kZXNjOwogCiAJY2hhciAgICAgICAgICAgICAgICAg ICAgbmFtZVsxMF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL2dhZGdldC5jIGIvZHJp dmVycy91c2IvZHdjMi9nYWRnZXQuYwppbmRleCBjMjMxMzIxNjU2ZjkuLjFiOWM4NGNiNThmYiAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9nYWRnZXQuYworKysgYi9kcml2ZXJzL3VzYi9k d2MyL2dhZGdldC5jCkBAIC03OTMsOSArNzkzLDcgQEAgc3RhdGljIHZvaWQgZHdjMl9nYWRnZXRf Y29uZmlnX25vbmlzb2NfeGZlcl9kZG1hKHN0cnVjdCBkd2MyX2hzb3RnX2VwICpoc19lcCwKICAq IEBkbWFfYnVmZjogdXNiIHJlcXVlc3RzIGRtYSBidWZmZXIuCiAgKiBAbGVuOiB1c2IgcmVxdWVz dCB0cmFuc2ZlciBsZW5ndGguCiAgKgotICogRmluZHMgb3V0IGluZGV4IG9mIGZpcnN0IGZyZWUg ZW50cnkgZWl0aGVyIGluIHRoZSBib3R0b20gb3IgdXAgaGFsZiBvZgotICogZGVzY3JpcHRvciBj aGFpbiBkZXBlbmQgb24gd2hpY2ggaXMgdW5kZXIgU1cgY29udHJvbCBhbmQgbm90IHByb2Nlc3Nl ZAotICogYnkgSFcuIFRoZW4gZmlsbHMgdGhhdCBkZXNjcmlwdG9yIHdpdGggdGhlIGRhdGEgb2Yg dGhlIGFycml2ZWQgdXNiIHJlcXVlc3QsCisgKiBGaWxscyBuZXh0IGZyZWUgZGVzY3JpcHRvciB3 aXRoIHRoZSBkYXRhIG9mIHRoZSBhcnJpdmVkIHVzYiByZXF1ZXN0LAogICogZnJhbWUgaW5mbywg c2V0cyBMYXN0IGFuZCBJT0MgYml0cyBpbmNyZW1lbnRzIG5leHRfZGVzYy4gSWYgZmlsbGVkCiAg KiBkZXNjcmlwdG9yIGlzIG5vdCB0aGUgZmlyc3Qgb25lLCByZW1vdmVzIEwgYml0IGZyb20gdGhl IHByZXZpb3VzIGRlc2NyaXB0b3IKICAqIHN0YXR1cy4KQEAgLTgxMCwzNCArODA4LDE3IEBAIHN0 YXRpYyBpbnQgZHdjMl9nYWRnZXRfZmlsbF9pc29jX2Rlc2Moc3RydWN0IGR3YzJfaHNvdGdfZXAg KmhzX2VwLAogCXUzMiBtYXNrID0gMDsKIAogCW1heHNpemUgPSBkd2MyX2dhZGdldF9nZXRfZGVz Y19wYXJhbXMoaHNfZXAsICZtYXNrKTsKLQlpZiAobGVuID4gbWF4c2l6ZSkgewotCQlkZXZfZXJy KGhzb3RnLT5kZXYsICJ3cm9uZyBsZW4gJWRcbiIsIGxlbik7Ci0JCXJldHVybiAtRUlOVkFMOwot CX0KLQotCS8qCi0JICogSWYgU1cgaGFzIGFscmVhZHkgZmlsbGVkIGhhbGYgb2YgY2hhaW4sIHRo ZW4gcmV0dXJuIGFuZCB3YWl0IGZvcgotCSAqIHRoZSBvdGhlciBjaGFpbiB0byBiZSBwcm9jZXNz ZWQgYnkgSFcuCi0JICovCi0JaWYgKGhzX2VwLT5uZXh0X2Rlc2MgPT0gTUFYX0RNQV9ERVNDX05V TV9HRU5FUklDIC8gMikKLQkJcmV0dXJuIC1FQlVTWTsKIAotCS8qIEluY3JlbWVudCBmcmFtZSBu dW1iZXIgYnkgaW50ZXJ2YWwgZm9yIElOICovCi0JaWYgKGhzX2VwLT5kaXJfaW4pCi0JCWR3YzJf Z2FkZ2V0X2luY3JfZnJhbWVfbnVtKGhzX2VwKTsKLQotCWluZGV4ID0gKE1BWF9ETUFfREVTQ19O VU1fR0VORVJJQyAvIDIpICogaHNfZXAtPmlzb2NfY2hhaW5fbnVtICsKLQkJIGhzX2VwLT5uZXh0 X2Rlc2M7CisJaW5kZXggPSBoc19lcC0+bmV4dF9kZXNjOworCWRlc2MgPSAmaHNfZXAtPmRlc2Nf bGlzdFtpbmRleF07CiAKLQkvKiBTYW5pdHkgY2hlY2sgb2YgY2FsY3VsYXRlZCBpbmRleCAqLwot CWlmICgoaHNfZXAtPmlzb2NfY2hhaW5fbnVtICYmIGluZGV4ID4gTUFYX0RNQV9ERVNDX05VTV9H RU5FUklDKSB8fAotCSAgICAoIWhzX2VwLT5pc29jX2NoYWluX251bSAmJiBpbmRleCA+IE1BWF9E TUFfREVTQ19OVU1fR0VORVJJQyAvIDIpKSB7Ci0JCWRldl9lcnIoaHNvdGctPmRldiwgIndyb25n IGluZGV4ICVkIGZvciBpc28gY2hhaW5cbiIsIGluZGV4KTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJ LyogQ2hlY2sgaWYgZGVzY3JpcHRvciBjaGFpbiBmdWxsICovCisJaWYgKChkZXNjLT5zdGF0dXMg Pj4gREVWX0RNQV9CVUZGX1NUU19TSElGVCkgPT0KKwkgICAgREVWX0RNQV9CVUZGX1NUU19IUkVB RFkpIHsKKwkJZGV2X2RiZyhoc290Zy0+ZGV2LCAiJXM6IGRlc2MgY2hhaW4gZnVsbFxuIiwgX19m dW5jX18pOworCQlyZXR1cm4gMTsKIAl9CiAKLQlkZXNjID0gJmhzX2VwLT5kZXNjX2xpc3RbaW5k ZXhdOwotCiAJLyogQ2xlYXIgTCBiaXQgb2YgcHJldmlvdXMgZGVzYyBpZiBtb3JlIHRoYW4gb25l IGVudHJpZXMgaW4gdGhlIGNoYWluICovCiAJaWYgKGhzX2VwLT5uZXh0X2Rlc2MpCiAJCWhzX2Vw LT5kZXNjX2xpc3RbaW5kZXggLSAxXS5zdGF0dXMgJj0gfkRFVl9ETUFfTDsKQEAgLTg2NSw4ICs4 NDYsMTQgQEAgc3RhdGljIGludCBkd2MyX2dhZGdldF9maWxsX2lzb2NfZGVzYyhzdHJ1Y3QgZHdj Ml9oc290Z19lcCAqaHNfZXAsCiAJZGVzYy0+c3RhdHVzICY9IH5ERVZfRE1BX0JVRkZfU1RTX01B U0s7CiAJZGVzYy0+c3RhdHVzIHw9IChERVZfRE1BX0JVRkZfU1RTX0hSRUFEWSA8PCBERVZfRE1B X0JVRkZfU1RTX1NISUZUKTsKIAorCS8qIEluY3JlbWVudCBmcmFtZSBudW1iZXIgYnkgaW50ZXJ2 YWwgZm9yIElOICovCisJaWYgKGhzX2VwLT5kaXJfaW4pCisJCWR3YzJfZ2FkZ2V0X2luY3JfZnJh bWVfbnVtKGhzX2VwKTsKKwogCS8qIFVwZGF0ZSBpbmRleCBvZiBsYXN0IGNvbmZpZ3VyZWQgZW50 cnkgaW4gdGhlIGNoYWluICovCiAJaHNfZXAtPm5leHRfZGVzYysrOworCWlmIChoc19lcC0+bmV4 dF9kZXNjID49IE1BWF9ETUFfREVTQ19OVU1fR0VORVJJQykKKwkJaHNfZXAtPm5leHRfZGVzYyA9 IDA7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTg3NSwxMSArODYyLDggQEAgc3RhdGljIGludCBkd2My X2dhZGdldF9maWxsX2lzb2NfZGVzYyhzdHJ1Y3QgZHdjMl9oc290Z19lcCAqaHNfZXAsCiAgKiBk d2MyX2dhZGdldF9zdGFydF9pc29jX2RkbWEgLSBzdGFydCBpc29jaHJvbm91cyB0cmFuc2ZlciBp biBERE1BCiAgKiBAaHNfZXA6IFRoZSBpc29jaHJvbm91cyBlbmRwb2ludC4KICAqCi0gKiBQcmVw YXJlIGZpcnN0IGRlc2NyaXB0b3IgY2hhaW4gZm9yIGlzb2Nocm9ub3VzIGVuZHBvaW50cy4gQWZ0 ZXJ3YXJkcworICogUHJlcGFyZSBkZXNjcmlwdG9yIGNoYWluIGZvciBpc29jaHJvbm91cyBlbmRw b2ludHMuIEFmdGVyd2FyZHMKICAqIHdyaXRlIERNQSBhZGRyZXNzIHRvIEhXIGFuZCBlbmFibGUg dGhlIGVuZHBvaW50LgotICoKLSAqIFN3aXRjaCBiZXR3ZWVuIGRlc2NyaXB0b3IgY2hhaW5zIHZp YSBpc29jX2NoYWluX251bSB0byBnaXZlIFNXIG9wcG9ydHVuaXR5Ci0gKiB0byBwcmVwYXJlIHNl Y29uZCBkZXNjcmlwdG9yIGNoYWluIHdoaWxlIGZpcnN0IG9uZSBpcyBiZWluZyBwcm9jZXNzZWQg YnkgSFcuCiAgKi8KIHN0YXRpYyB2b2lkIGR3YzJfZ2FkZ2V0X3N0YXJ0X2lzb2NfZGRtYShzdHJ1 Y3QgZHdjMl9oc290Z19lcCAqaHNfZXApCiB7CkBAIC04OTAsMTkgKzg3NCwyNyBAQCBzdGF0aWMg dm9pZCBkd2MyX2dhZGdldF9zdGFydF9pc29jX2RkbWEoc3RydWN0IGR3YzJfaHNvdGdfZXAgKmhz X2VwKQogCXUzMiBkbWFfcmVnOwogCXUzMiBkZXBjdGw7CiAJdTMyIGN0cmw7CisJc3RydWN0IGR3 YzJfZG1hX2Rlc2MgKmRlc2M7CiAKIAlpZiAobGlzdF9lbXB0eSgmaHNfZXAtPnF1ZXVlKSkgewog CQlkZXZfZGJnKGhzb3RnLT5kZXYsICIlczogTm8gcmVxdWVzdHMgaW4gcXVldWVcbiIsIF9fZnVu Y19fKTsKIAkJcmV0dXJuOwogCX0KIAorCS8qIEluaXRpYWxpemUgZGVzY3JpcHRvciBjaGFpbiBi eSBIb3N0IEJ1c3kgc3RhdHVzICovCisJZm9yIChyZXQgPSAwOyByZXQgPCBNQVhfRE1BX0RFU0Nf TlVNX0dFTkVSSUM7IHJldCsrKSB7CisJCWRlc2MgPSAmaHNfZXAtPmRlc2NfbGlzdFtyZXRdOwor CQlkZXNjLT5zdGF0dXMgPSAwOworCQlkZXNjLT5zdGF0dXMgfD0gKERFVl9ETUFfQlVGRl9TVFNf SEJVU1kKKwkJCQkgICAgPDwgREVWX0RNQV9CVUZGX1NUU19TSElGVCk7CisJfQorCisJaHNfZXAt Pm5leHRfZGVzYyA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGhzX3JlcSwgdHJlcSwg JmhzX2VwLT5xdWV1ZSwgcXVldWUpIHsKIAkJcmV0ID0gZHdjMl9nYWRnZXRfZmlsbF9pc29jX2Rl c2MoaHNfZXAsIGhzX3JlcS0+cmVxLmRtYSwKIAkJCQkJCSBoc19yZXEtPnJlcS5sZW5ndGgpOwot CQlpZiAocmV0KSB7Ci0JCQlkZXZfZGJnKGhzb3RnLT5kZXYsICIlczogZGVzYyBjaGFpbiBmdWxs XG4iLCBfX2Z1bmNfXyk7CisJCWlmIChyZXQpCiAJCQlicmVhazsKLQkJfQogCX0KIAogCWRlcGN0 bCA9IGhzX2VwLT5kaXJfaW4gPyBESUVQQ1RMKGluZGV4KSA6IERPRVBDVEwoaW5kZXgpOwpAQCAt OTE0LDEwICs5MDYsNiBAQCBzdGF0aWMgdm9pZCBkd2MyX2dhZGdldF9zdGFydF9pc29jX2RkbWEo c3RydWN0IGR3YzJfaHNvdGdfZXAgKmhzX2VwKQogCWN0cmwgPSBkd2MyX3JlYWRsKGhzb3RnLT5y ZWdzICsgZGVwY3RsKTsKIAljdHJsIHw9IERYRVBDVExfRVBFTkEgfCBEWEVQQ1RMX0NOQUs7CiAJ ZHdjMl93cml0ZWwoY3RybCwgaHNvdGctPnJlZ3MgKyBkZXBjdGwpOwotCi0JLyogU3dpdGNoIElT T0MgZGVzY3JpcHRvciBjaGFpbiBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkIGJ5IFNXKi8KLQloc19l cC0+aXNvY19jaGFpbl9udW0gPSAoaHNfZXAtPmlzb2NfY2hhaW5fbnVtIF4gMSkgJiAweDE7Ci0J aHNfZXAtPm5leHRfZGVzYyA9IDA7CiB9CiAKIC8qKgpAQCAtMTI5MSw2ICsxMjc5LDkgQEAgc3Rh dGljIGludCBkd2MyX2hzb3RnX2VwX3F1ZXVlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNi X3JlcXVlc3QgKnJlcSwKIAlzdHJ1Y3QgZHdjMl9oc290ZyAqaHMgPSBoc19lcC0+cGFyZW50Owog CWJvb2wgZmlyc3Q7CiAJaW50IHJldDsKKwl1MzIgbWF4c2l6ZSA9IDA7CisJdTMyIG1hc2sgPSAw OworCiAKIAlkZXZfZGJnKGhzLT5kZXYsICIlczogcmVxICVwOiAlZEAlcCwgbm9pPSVkLCB6ZXJv PSVkLCBzbm9rPSVkXG4iLAogCQllcC0+bmFtZSwgcmVxLCByZXEtPmxlbmd0aCwgcmVxLT5idWYs IHJlcS0+bm9faW50ZXJydXB0LApAQCAtMTMwOCw2ICsxMjk5LDI0IEBAIHN0YXRpYyBpbnQgZHdj Ml9oc290Z19lcF9xdWV1ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpy ZXEsCiAJcmVxLT5hY3R1YWwgPSAwOwogCXJlcS0+c3RhdHVzID0gLUVJTlBST0dSRVNTOwogCisJ LyogSW4gRERNQSBtb2RlIGZvciBJU09DJ3MgZG9uJ3QgcXVldWUgcmVxdWVzdCBpZiBsZW5ndGgg Z3JlYXRlcgorCSAqIHRoYW4gZGVzY3JpcHRvciBsaW1pdHMuCisJICovCisJaWYgKHVzaW5nX2Rl c2NfZG1hKGhzKSAmJiBoc19lcC0+aXNvY2hyb25vdXMpIHsKKwkJbWF4c2l6ZSA9IGR3YzJfZ2Fk Z2V0X2dldF9kZXNjX3BhcmFtcyhoc19lcCwgJm1hc2spOworCQlpZiAoaHNfZXAtPmRpcl9pbiAm JiByZXEtPmxlbmd0aCA+IG1heHNpemUpIHsKKwkJCWRldl9lcnIoaHMtPmRldiwgIndyb25nIGxl bmd0aCAlZCAobWF4c2l6ZT0lZClcbiIsCisJCQkJcmVxLT5sZW5ndGgsIG1heHNpemUpOworCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJLyogSVNPQyBPVVQgaGlnaCBiYW5kd2lkdGggbm90IHN1 cHBvcnRlZCAqLworCQlpZiAoIWhzX2VwLT5kaXJfaW4gJiYgcmVxLT5sZW5ndGggPiBoc19lcC0+ ZXAubWF4cGFja2V0KSB7CisJCQlkZXZfZXJyKGhzLT5kZXYsICJJU09DIE9VVDogd3JvbmcgbGVu Z3RoICVkIChtcHM9JWQpXG4iLAorCQkJCXJlcS0+bGVuZ3RoLCBoc19lcC0+ZXAubWF4cGFja2V0 KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCiAJcmV0ID0gZHdjMl9oc290Z19oYW5k bGVfdW5hbGlnbmVkX2J1Zl9zdGFydChocywgaHNfZXAsIGhzX3JlcSk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKQEAgLTEzMzAsNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgZHdjMl9oc290Z19l cF9xdWV1ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsCiAKIAkv KgogCSAqIEhhbmRsZSBERE1BIGlzb2Nocm9ub3VzIHRyYW5zZmVycyBzZXBhcmF0ZWx5IC0ganVz dCBhZGQgbmV3IGVudHJ5Ci0JICogdG8gdGhlIGhhbGYgb2YgZGVzY3JpcHRvciBjaGFpbiB0aGF0 IGlzIG5vdCBwcm9jZXNzZWQgYnkgSFcuCisJICogdG8gdGhlIGRlc2NyaXB0b3IgY2hhaW4uCiAJ ICogVHJhbnNmZXIgd2lsbCBiZSBzdGFydGVkIG9uY2UgU1cgZ2V0cyBlaXRoZXIgb25lIG9mIE5B SyBvcgogCSAqIE91dFRrbkVwRGlzIGludGVycnVwdHMuCiAJICovCkBAIC0xMzM4LDkgKzEzNDcs OSBAQCBzdGF0aWMgaW50IGR3YzJfaHNvdGdfZXBfcXVldWUoc3RydWN0IHVzYl9lcCAqZXAsIHN0 cnVjdCB1c2JfcmVxdWVzdCAqcmVxLAogCSAgICBoc19lcC0+dGFyZ2V0X2ZyYW1lICE9IFRBUkdF VF9GUkFNRV9JTklUSUFMKSB7CiAJCXJldCA9IGR3YzJfZ2FkZ2V0X2ZpbGxfaXNvY19kZXNjKGhz X2VwLCBoc19yZXEtPnJlcS5kbWEsCiAJCQkJCQkgaHNfcmVxLT5yZXEubGVuZ3RoKTsKLQkJaWYg KHJldCkKLQkJCWRldl9kYmcoaHMtPmRldiwgIiVzOiBJU08gZGVzYyBjaGFpbiBmdWxsXG4iLCBf X2Z1bmNfXyk7Ci0KKwkJaWYgKHJldCA8IDApCisJCQlkZXZfZGJnKGhzLT5kZXYsICIlczogZmFp bGVkIHRvIGZpbGwgaXNvYyBkZXNjXG4iLAorCQkJCV9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJ fQogCkBAIC0yMDExLDEwICsyMDIwLDkgQEAgc3RhdGljIHZvaWQgZHdjMl9oc290Z19jb21wbGV0 ZV9yZXF1ZXN0KHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywKICAqIEBoc19lcDogVGhlIGVuZHBv aW50IHRoZSByZXF1ZXN0IHdhcyBvbi4KICAqCiAgKiBHZXQgZmlyc3QgcmVxdWVzdCBmcm9tIHRo ZSBlcCBxdWV1ZSwgZGV0ZXJtaW5lIGRlc2NyaXB0b3Igb24gd2hpY2ggY29tcGxldGUKLSAqIGhh cHBlbmVkLiBTVyBiYXNlZCBvbiBpc29jX2NoYWluX251bSBkaXNjb3ZlcnMgd2hpY2ggaGFsZiBv ZiB0aGUgZGVzY3JpcHRvcgotICogY2hhaW4gaXMgY3VycmVudGx5IGluIHVzZSBieSBIVywgYWRq dXN0cyBkbWFfYWRkcmVzcyBhbmQgY2FsY3VsYXRlcyBpbmRleAotICogb2YgY29tcGxldGVkIGRl c2NyaXB0b3IgYmFzZWQgb24gdGhlIHZhbHVlIG9mIERFUERNQSByZWdpc3Rlci4gVXBkYXRlIGFj dHVhbAotICogbGVuZ3RoIG9mIHJlcXVlc3QsIGdpdmViYWNrIHRvIGdhZGdldC4KKyAqIGhhcHBl bmVkLiBTVyBkaXNjb3ZlcnMgd2hpY2ggZGVzY3JpcHRvciBjdXJyZW50bHkgaW4gdXNlIGJ5IEhX LCBhZGp1c3RzCisgKiBkbWFfYWRkcmVzcyBhbmQgY2FsY3VsYXRlcyBpbmRleCBvZiBjb21wbGV0 ZWQgZGVzY3JpcHRvciBiYXNlZCBvbiB0aGUgdmFsdWUKKyAqIG9mIERFUERNQSByZWdpc3Rlci4g VXBkYXRlIGFjdHVhbCBsZW5ndGggb2YgcmVxdWVzdCwgZ2l2ZWJhY2sgdG8gZ2FkZ2V0LgogICov CiBzdGF0aWMgdm9pZCBkd2MyX2dhZGdldF9jb21wbGV0ZV9pc29jX3JlcXVlc3RfZGRtYShzdHJ1 Y3QgZHdjMl9oc290Z19lcCAqaHNfZXApCiB7CkBAIC0yMDM3LDgyICsyMDQ1LDU1IEBAIHN0YXRp YyB2b2lkIGR3YzJfZ2FkZ2V0X2NvbXBsZXRlX2lzb2NfcmVxdWVzdF9kZG1hKHN0cnVjdCBkd2My X2hzb3RnX2VwICpoc19lcCkKIAogCWRtYV9hZGRyID0gaHNfZXAtPmRlc2NfbGlzdF9kbWE7CiAK LQkvKgotCSAqIElmIGxvd2VyIGhhbGYgb2YgIGRlc2NyaXB0b3IgY2hhaW4gaXMgY3VycmVudGx5 IHVzZSBieSBTVywKLQkgKiB0aGF0IG1lYW5zIGhpZ2hlciBoYWxmIGlzIGJlaW5nIHByb2Nlc3Nl ZCBieSBIVywgc28gc2hpZnQKLQkgKiBETUEgYWRkcmVzcyB0byBoaWdoZXIgaGFsZiBvZiBkZXNj cmlwdG9yIGNoYWluLgotCSAqLwotCWlmICghaHNfZXAtPmlzb2NfY2hhaW5fbnVtKQotCQlkbWFf YWRkciArPSBzaXplb2Yoc3RydWN0IGR3YzJfZG1hX2Rlc2MpICoKLQkJCSAgICAoTUFYX0RNQV9E RVNDX05VTV9HRU5FUklDIC8gMik7Ci0KIAlkbWFfcmVnID0gaHNfZXAtPmRpcl9pbiA/IERJRVBE TUEoaHNfZXAtPmluZGV4KSA6IERPRVBETUEoaHNfZXAtPmluZGV4KTsKIAlkZXBkbWEgPSBkd2My X3JlYWRsKGhzb3RnLT5yZWdzICsgZG1hX3JlZyk7CiAKIAlpbmRleCA9IChkZXBkbWEgLSBkbWFf YWRkcikgLyBzaXplb2Yoc3RydWN0IGR3YzJfZG1hX2Rlc2MpIC0gMTsKLQlkZXNjX3N0cyA9IGhz X2VwLT5kZXNjX2xpc3RbaW5kZXhdLnN0YXR1czsKKwkvKiBDaGVjayBkZXNjcmlwdG9yIGNoYWlu IHJvbGxvdmVyICovCisJaWYgKGluZGV4IDwgMCkKKwkJaW5kZXggPSBNQVhfRE1BX0RFU0NfTlVN X0dFTkVSSUMgLSAxOwogCi0JbWFzayA9IGhzX2VwLT5kaXJfaW4gPyBERVZfRE1BX0lTT0NfVFhf TkJZVEVTX01BU0sgOgotCSAgICAgICBERVZfRE1BX0lTT0NfUlhfTkJZVEVTX01BU0s7Ci0JdXJl cS0+YWN0dWFsID0gdXJlcS0+bGVuZ3RoIC0KLQkJICAgICAgICgoZGVzY19zdHMgJiBtYXNrKSA+ PiBERVZfRE1BX0lTT0NfTkJZVEVTX1NISUZUKTsKLQotCS8qIEFkanVzdCBhY3R1YWwgbGVuZ3Ro IGZvciBJU09DIE91dCBpZiBsZW5ndGggaXMgbm90IGFsaWduIG9mIDQgKi8KLQlpZiAoIWhzX2Vw LT5kaXJfaW4gJiYgdXJlcS0+bGVuZ3RoICYgMHgzKQotCQl1cmVxLT5hY3R1YWwgKz0gNCAtICh1 cmVxLT5sZW5ndGggJiAweDMpOworCWRlc2Nfc3RzID0gaHNfZXAtPmRlc2NfbGlzdFtpbmRleF0u c3RhdHVzOworCS8qIENoZWNrIGNvbXBsZXRpb24gc3RhdHVzICovCisJaWYgKChkZXNjX3N0cyAm IERFVl9ETUFfU1RTX01BU0spID4+IERFVl9ETUFfU1RTX1NISUZUID09CisJICAgIERFVl9ETUFf U1RTX1NVQ0MpIHsKKwkJbWFzayA9IGhzX2VwLT5kaXJfaW4gPyBERVZfRE1BX0lTT0NfVFhfTkJZ VEVTX01BU0sgOgorCQkgICAgICAgREVWX0RNQV9JU09DX1JYX05CWVRFU19NQVNLOworCQl1cmVx LT5hY3R1YWwgPSB1cmVxLT5sZW5ndGggLQorCQkJICAgICAgICgoZGVzY19zdHMgJiBtYXNrKSA+ PgorCQkJCURFVl9ETUFfSVNPQ19OQllURVNfU0hJRlQpOworCisJCS8qIEFkanVzdCBhY3R1YWwg bGVuIGZvciBJU09DIE91dCBpZiBsZW4gaXMgbm90IGFsaWduIG9mIDQgKi8KKwkJaWYgKCFoc19l cC0+ZGlyX2luICYmIHVyZXEtPmxlbmd0aCAmIDB4MykKKwkJCXVyZXEtPmFjdHVhbCArPSA0IC0g KHVyZXEtPmxlbmd0aCAmIDB4Myk7CiAKLQlkd2MyX2hzb3RnX2NvbXBsZXRlX3JlcXVlc3QoaHNv dGcsIGhzX2VwLCBoc19yZXEsIDApOworCQlkd2MyX2hzb3RnX2NvbXBsZXRlX3JlcXVlc3QoaHNv dGcsIGhzX2VwLCBoc19yZXEsIDApOworCX0gZWxzZSB7CisJCWR3YzJfaHNvdGdfY29tcGxldGVf cmVxdWVzdChoc290ZywgaHNfZXAsIGhzX3JlcSwgLUVUSU1FRE9VVCk7CisJfQogfQogCiAvKgot ICogZHdjMl9nYWRnZXRfc3RhcnRfbmV4dF9pc29jX2RkbWEgLSBzdGFydCBuZXh0IGlzb2MgcmVx dWVzdCwgaWYgYW55LgotICogQGhzX2VwOiBUaGUgaXNvY2hyb25vdXMgZW5kcG9pbnQgdG8gYmUg cmUtZW5hYmxlZC4KKyAqIGR3YzJfZ2FkZ2V0X2hhbmRsZV9pc29jX2JuYSAtIGhhbmRsZSBCTkEg aW50ZXJydXB0IGZvciBJU09DLgorICogQGhzX2VwOiBUaGUgaXNvY2hyb25vdXMgZW5kcG9pbnQu CiAgKgotICogSWYgZXAgaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIGxhc3QgZGVzY3JpcHRvciBz ZXJ2aWNpbmcgKElOIGVuZHBvaW50KSBvcgotICogQk5BIChPVVQgZW5kcG9pbnQpIGNoZWNrIHRo ZSBzdGF0dXMgb2Ygb3RoZXIgaGFsZiBvZiBkZXNjcmlwdG9yIGNoYWluIHRoYXQKLSAqIHdhcyB1 bmRlciBTVyBjb250cm9sIHRpbGwgSFcgd2FzIGJ1c3kgYW5kIHJlc3RhcnQgdGhlIGVuZHBvaW50 IGlmIG5lZWRlZC4KKyAqIENvbXBsZXRlIHJlcXVlc3Qgd2l0aCAtRUlPLgorICogSWYgRVAgSVNP QyBPVVQgdGhlbiBuZWVkIHRvIGZsdXNoIFJYIEZJRk8gdG8gcmVtb3ZlIHNvdXJjZSBvZiBCTkEK KyAqIGludGVycnVwdC4gUmVzZXQgdGFyZ2V0IGZyYW1lIGFuZCBuZXh0X2Rlc2MgdG8gYWxsb3cg dG8gc3RhcnQKKyAqIElTT0MncyBvbiBOQUsgaW50ZXJydXB0IGZvciBJTiBkaXJlY3Rpb24gb3Ig b24gT1VUVEtORVBESVMKKyAqIGludGVycnVwdCBmb3IgT1VUIGRpcmVjdGlvbi4KICAqLwotc3Rh dGljIHZvaWQgZHdjMl9nYWRnZXRfc3RhcnRfbmV4dF9pc29jX2RkbWEoc3RydWN0IGR3YzJfaHNv dGdfZXAgKmhzX2VwKQorc3RhdGljIHZvaWQgZHdjMl9nYWRnZXRfaGFuZGxlX2lzb2NfYm5hKHN0 cnVjdCBkd2MyX2hzb3RnX2VwICpoc19lcCkKIHsKIAlzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcg PSBoc19lcC0+cGFyZW50OwotCXUzMiBkZXBjdGw7Ci0JdTMyIGRtYV9yZWc7Ci0JdTMyIGN0cmw7 Ci0JdTMyIGRtYV9hZGRyID0gaHNfZXAtPmRlc2NfbGlzdF9kbWE7Ci0JdW5zaWduZWQgY2hhciBp bmRleCA9IGhzX2VwLT5pbmRleDsKLQotCWRtYV9yZWcgPSBoc19lcC0+ZGlyX2luID8gRElFUERN QShpbmRleCkgOiBET0VQRE1BKGluZGV4KTsKLQlkZXBjdGwgPSBoc19lcC0+ZGlyX2luID8gRElF UENUTChpbmRleCkgOiBET0VQQ1RMKGluZGV4KTsKIAotCWN0cmwgPSBkd2MyX3JlYWRsKGhzb3Rn LT5yZWdzICsgZGVwY3RsKTsKKwlpZiAoIWhzX2VwLT5kaXJfaW4pCisJCWR3YzJfZmx1c2hfcnhf Zmlmbyhoc290Zyk7CisJZHdjMl9oc290Z19jb21wbGV0ZV9yZXF1ZXN0KGhzb3RnLCBoc19lcCwg Z2V0X2VwX2hlYWQoaHNfZXApLAorCQkJCSAgICAtRUlPKTsKIAotCS8qCi0JICogRVAgd2FzIGRp c2FibGVkIGlmIEhXIGhhcyBwcm9jZXNzZWQgbGFzdCBkZXNjcmlwdG9yIG9yIEJOQSB3YXMgc2V0 LgotCSAqIFNvIHJlc3RhcnQgZXAgaWYgU1cgaGFzIHByZXBhcmVkIG5ldyBkZXNjcmlwdG9yIGNo YWluIGluIGVwX3F1ZXVlCi0JICogcm91dGluZSB3aGlsZSBIVyB3YXMgYnVzeS4KLQkgKi8KLQlp ZiAoIShjdHJsICYgRFhFUENUTF9FUEVOQSkpIHsKLQkJaWYgKCFoc19lcC0+bmV4dF9kZXNjKSB7 Ci0JCQlkZXZfZGJnKGhzb3RnLT5kZXYsICIlczogTm8gbW9yZSBJU09DIHJlcXVlc3RzXG4iLAot CQkJCV9fZnVuY19fKTsKLQkJCXJldHVybjsKLQkJfQotCi0JCWRtYV9hZGRyICs9IHNpemVvZihz dHJ1Y3QgZHdjMl9kbWFfZGVzYykgKgotCQkJICAgIChNQVhfRE1BX0RFU0NfTlVNX0dFTkVSSUMg LyAyKSAqCi0JCQkgICAgaHNfZXAtPmlzb2NfY2hhaW5fbnVtOwotCQlkd2MyX3dyaXRlbChkbWFf YWRkciwgaHNvdGctPnJlZ3MgKyBkbWFfcmVnKTsKLQotCQljdHJsIHw9IERYRVBDVExfRVBFTkEg fCBEWEVQQ1RMX0NOQUs7Ci0JCWR3YzJfd3JpdGVsKGN0cmwsIGhzb3RnLT5yZWdzICsgZGVwY3Rs KTsKLQotCQkvKiBTd2l0Y2ggSVNPQyBkZXNjcmlwdG9yIGNoYWluIG51bWJlciBiZWluZyBwcm9j ZXNzZWQgYnkgU1cqLwotCQloc19lcC0+aXNvY19jaGFpbl9udW0gPSAoaHNfZXAtPmlzb2NfY2hh aW5fbnVtIF4gMSkgJiAweDE7Ci0JCWhzX2VwLT5uZXh0X2Rlc2MgPSAwOwotCi0JCWRldl9kYmco aHNvdGctPmRldiwgIiVzOiBSZXN0YXJ0ZWQgaXNvY2hyb25vdXMgZW5kcG9pbnRcbiIsCi0JCQlf X2Z1bmNfXyk7Ci0JfQorCWhzX2VwLT50YXJnZXRfZnJhbWUgPSBUQVJHRVRfRlJBTUVfSU5JVElB TDsKKwloc19lcC0+bmV4dF9kZXNjID0gMDsKIH0KIAogLyoqCkBAIC0yODE2LDE4ICsyNzk3LDI1 IEBAIHN0YXRpYyB2b2lkIGR3YzJfZ2FkZ2V0X2hhbmRsZV9uYWsoc3RydWN0IGR3YzJfaHNvdGdf ZXAgKmhzX2VwKQogewogCXN0cnVjdCBkd2MyX2hzb3RnICpoc290ZyA9IGhzX2VwLT5wYXJlbnQ7 CiAJaW50IGRpcl9pbiA9IGhzX2VwLT5kaXJfaW47CisJdTMyIHRtcDsKIAogCWlmICghZGlyX2lu IHx8ICFoc19lcC0+aXNvY2hyb25vdXMpCiAJCXJldHVybjsKIAogCWlmIChoc19lcC0+dGFyZ2V0 X2ZyYW1lID09IFRBUkdFVF9GUkFNRV9JTklUSUFMKSB7Ci0JCWhzX2VwLT50YXJnZXRfZnJhbWUg PSBkd2MyX2hzb3RnX3JlYWRfZnJhbWVubyhoc290Zyk7CiAKKwkJdG1wID0gZHdjMl9oc290Z19y ZWFkX2ZyYW1lbm8oaHNvdGcpOwogCQlpZiAodXNpbmdfZGVzY19kbWEoaHNvdGcpKSB7CisJCQlk d2MyX2hzb3RnX2NvbXBsZXRlX3JlcXVlc3QoaHNvdGcsIGhzX2VwLAorCQkJCQkJICAgIGdldF9l cF9oZWFkKGhzX2VwKSwKKwkJCQkJCSAgICAtRU5PREFUQSk7CisJCQloc19lcC0+dGFyZ2V0X2Zy YW1lID0gdG1wOworCQkJZHdjMl9nYWRnZXRfaW5jcl9mcmFtZV9udW0oaHNfZXApOwogCQkJZHdj Ml9nYWRnZXRfc3RhcnRfaXNvY19kZG1hKGhzX2VwKTsKIAkJCXJldHVybjsKIAkJfQogCisJCWhz X2VwLT50YXJnZXRfZnJhbWUgPSB0bXA7CiAJCWlmIChoc19lcC0+aW50ZXJ2YWwgPiAxKSB7CiAJ CQl1MzIgY3RybCA9IGR3YzJfcmVhZGwoaHNvdGctPnJlZ3MgKwogCQkJCQkgICAgICBESUVQQ1RM KGhzX2VwLT5pbmRleCkpOwpAQCAtMjg0Myw3ICsyODMxLDggQEAgc3RhdGljIHZvaWQgZHdjMl9n YWRnZXRfaGFuZGxlX25hayhzdHJ1Y3QgZHdjMl9oc290Z19lcCAqaHNfZXApCiAJCQkJCSAgICBn ZXRfZXBfaGVhZChoc19lcCksIDApOwogCX0KIAotCWR3YzJfZ2FkZ2V0X2luY3JfZnJhbWVfbnVt KGhzX2VwKTsKKwlpZiAoIXVzaW5nX2Rlc2NfZG1hKGhzb3RnKSkKKwkJZHdjMl9nYWRnZXRfaW5j cl9mcmFtZV9udW0oaHNfZXApOwogfQogCiAvKioKQEAgLTI5MDEsOSArMjg5MCw5IEBAIHN0YXRp YyB2b2lkIGR3YzJfaHNvdGdfZXBpbnQoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnLCB1bnNpZ25l ZCBpbnQgaWR4LAogCiAJCS8qIEluIERETUEgaGFuZGxlIGlzb2Nocm9ub3VzIHJlcXVlc3RzIHNl cGFyYXRlbHkgKi8KIAkJaWYgKHVzaW5nX2Rlc2NfZG1hKGhzb3RnKSAmJiBoc19lcC0+aXNvY2hy b25vdXMpIHsKLQkJCWR3YzJfZ2FkZ2V0X2NvbXBsZXRlX2lzb2NfcmVxdWVzdF9kZG1hKGhzX2Vw KTsKLQkJCS8qIFRyeSB0byBzdGFydCBuZXh0IGlzb2MgcmVxdWVzdCAqLwotCQkJZHdjMl9nYWRn ZXRfc3RhcnRfbmV4dF9pc29jX2RkbWEoaHNfZXApOworCQkJLyogWGZlckNvbXBsIHNldCBhbG9u ZyB3aXRoIEJOQSAqLworCQkJaWYgKCEoaW50cyAmIERYRVBJTlRfQk5BSU5UUikpCisJCQkJZHdj Ml9nYWRnZXRfY29tcGxldGVfaXNvY19yZXF1ZXN0X2RkbWEoaHNfZXApOwogCQl9IGVsc2UgaWYg KGRpcl9pbikgewogCQkJLyoKIAkJCSAqIFdlIGdldCBPdXREb25lIGZyb20gdGhlIEZJRk8sIHNv IHdlIG9ubHkKQEAgLTI5NzgsMTUgKzI5NjcsOCBAQCBzdGF0aWMgdm9pZCBkd2MyX2hzb3RnX2Vw aW50KHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywgdW5zaWduZWQgaW50IGlkeCwKIAogCWlmIChp bnRzICYgRFhFUElOVF9CTkFJTlRSKSB7CiAJCWRldl9kYmcoaHNvdGctPmRldiwgIiVzOiBCTkEg aW50ZXJydXB0XG4iLCBfX2Z1bmNfXyk7Ci0KLQkJLyoKLQkJICogVHJ5IHRvIHN0YXJ0IG5leHQg aXNvYyByZXF1ZXN0LCBpZiBhbnkuCi0JCSAqIFNvbWV0aW1lcyB0aGUgZW5kcG9pbnQgcmVtYWlu cyBlbmFibGVkIGFmdGVyIEJOQSBpbnRlcnJ1cHQKLQkJICogYXNzZXJ0aW9uLCB3aGljaCBpcyBu b3QgZXhwZWN0ZWQsIGhlbmNlIHdlIGNhbiBlbnRlciBoZXJlCi0JCSAqIGNvdXBsZSBvZiB0aW1l cy4KLQkJICovCiAJCWlmIChoc19lcC0+aXNvY2hyb25vdXMpCi0JCQlkd2MyX2dhZGdldF9zdGFy dF9uZXh0X2lzb2NfZGRtYShoc19lcCk7CisJCQlkd2MyX2dhZGdldF9oYW5kbGVfaXNvY19ibmEo aHNfZXApOwogCX0KIAogCWlmIChkaXJfaW4gJiYgIWhzX2VwLT5pc29jaHJvbm91cykgewpAQCAt Mzc5MSw2ICszNzczLDcgQEAgc3RhdGljIGludCBkd2MyX2hzb3RnX2VwX2VuYWJsZShzdHJ1Y3Qg dXNiX2VwICplcCwKIAl1bnNpZ25lZCBpbnQgZGlyX2luOwogCXVuc2lnbmVkIGludCBpLCB2YWws IHNpemU7CiAJaW50IHJldCA9IDA7CisJdW5zaWduZWQgY2hhciBlcF90eXBlOwogCiAJZGV2X2Ri Zyhoc290Zy0+ZGV2LAogCQkiJXM6IGVwICVzOiBhIDB4JTAyeCwgYXR0ciAweCUwMngsIG1wcyAw eCUwNHgsIGludHIgJWRcbiIsCkBAIC0zODA5LDYgKzM3OTIsMTUgQEAgc3RhdGljIGludCBkd2My X2hzb3RnX2VwX2VuYWJsZShzdHJ1Y3QgdXNiX2VwICplcCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCisJZXBfdHlwZSA9IGRlc2MtPmJtQXR0cmlidXRlcyAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQ RV9NQVNLOworCS8qIElTT0MgRERNQSBzdXBwb3J0ZWQgYkludGVydmFsIHVwIHRvIDEyICovCisJ aWYgKHVzaW5nX2Rlc2NfZG1hKGhzb3RnKSAmJiBlcF90eXBlID09IFVTQl9FTkRQT0lOVF9YRkVS X0lTT0MgJiYKKwkgICAgZGlyX2luICYmIGRlc2MtPmJJbnRlcnZhbCA+IDEyKSB7CisJCWRldl9l cnIoaHNvdGctPmRldiwKKwkJCSIlczogSVNPQyBJTjogYkludGVydmFsPjEyIG5vdCBzdXBwb3J0 ZWQhXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCW1wcyA9IHVzYl9l bmRwb2ludF9tYXhwKGRlc2MpOwogCW1jID0gdXNiX2VuZHBvaW50X21heHBfbXVsdChkZXNjKTsK IApAQCAtMzg1MiwxNCArMzg0NCwxMyBAQCBzdGF0aWMgaW50IGR3YzJfaHNvdGdfZXBfZW5hYmxl KHN0cnVjdCB1c2JfZXAgKmVwLAogCWhzX2VwLT5oYWx0ZWQgPSAwOwogCWhzX2VwLT5pbnRlcnZh bCA9IGRlc2MtPmJJbnRlcnZhbDsKIAotCXN3aXRjaCAoZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNC X0VORFBPSU5UX1hGRVJUWVBFX01BU0spIHsKKwlzd2l0Y2ggKGVwX3R5cGUpIHsKIAljYXNlIFVT Ql9FTkRQT0lOVF9YRkVSX0lTT0M6CiAJCWVwY3RybCB8PSBEWEVQQ1RMX0VQVFlQRV9JU087CiAJ CWVwY3RybCB8PSBEWEVQQ1RMX1NFVEVWRU5GUjsKIAkJaHNfZXAtPmlzb2Nocm9ub3VzID0gMTsK IAkJaHNfZXAtPmludGVydmFsID0gMSA8PCAoZGVzYy0+YkludGVydmFsIC0gMSk7CiAJCWhzX2Vw LT50YXJnZXRfZnJhbWUgPSBUQVJHRVRfRlJBTUVfSU5JVElBTDsKLQkJaHNfZXAtPmlzb2NfY2hh aW5fbnVtID0gMDsKIAkJaHNfZXAtPm5leHRfZGVzYyA9IDA7CiAJCWlmIChkaXJfaW4pIHsKIAkJ CWhzX2VwLT5wZXJpb2RpYyA9IDE7Cg==