From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH] drm/i915/tgl: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Tue, 9 Jul 2019 09:39:24 +0530 Message-ID: <34c0a0fa-038f-d6b7-1cb7-c364d4a3661e@intel.com> References: <20190702055434.14630-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 81744892C0 for ; Tue, 9 Jul 2019 04:09:28 +0000 (UTC) In-Reply-To: <20190702055434.14630-1-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C , Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org SGVsbG8gUmFtLAoKT24gNy8yLzIwMTkgMTE6MjQgQU0sIFJhbWFsaW5nYW0gQyB3cm90ZToKCj4g IEZyb20gR2VuMTIgb253YXJkcywgSERDUCBIVyBibG9jayBpcyBpbXBsZW1lbnRlZCB3aXRoaW4g dHJhbnNjb2RlcnMuCj4gVGlsbCBHZW4xMSBIRENQIEhXIGJsb2NrIHdhcyBwYXJ0IG9mIERESS4K Pgo+IEhlbmNlIHJlcXVpcmVkIGNoYW5nZXMgaW4gSFcgcHJvZ3JhbW1pbmcgaXMgaGFuZGxlZCBo ZXJlLgo+Cj4gdjI6Cj4gICAgX01NSU9fVFJBTlMgaXMgdXNlZCBbTHVjYXMgYW5kIERhbmllbF0K PiAgICBwbGF0Zm9ybSBjaGVjayBpcyBtb3ZlZCBpbnRvIHRoZSBjYWxsZXIgW0x1Y2FzXQo+IHYz Ogo+ICAgIHBsYXRmb3JtIGNoZWNrIGlzIG1vdmVkIGludG8gYSBtYWNybyBbU2hhc2hhbmtdCj4K PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4g LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYyB8IDE1NSAr KysrKysrKysrKysrKy0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2hkbWkuYyB8ICAgOSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgICAgICAgfCAxMjAgKysrKysrKysrKysrKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICAgICAgIHwgICA4ICsrCj4gICA0IGZpbGVzIGNoYW5nZWQsIDIyMSBp bnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfaGRjcC5jCj4gaW5kZXggYmMzYTk0ZDQ5MWM0Li4xNGJhNzIzYTM1NjEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYwo+IEBAIC0xNyw2 ICsxNyw3IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf aGRjcC5oIgo+ICAgI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCj4gKyNpbmNsdWRlICJpbnRl bF9jb25uZWN0b3IuaCIKPiAgIAo+ICAgI2RlZmluZSBLRVlfTE9BRF9UUklFUwk1Cj4gICAjZGVm aW5lIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TCTUwCj4gQEAgLTEwNCwyMyArMTA1 LDIxIEBAIGJvb2wgaW50ZWxfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gICAJcmV0dXJuIGNhcGFibGU7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlubGlu ZSBib29sIGludGVsX2hkY3BfaW5fdXNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiArc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcG9y dCBwb3J0KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAtCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9y LT5lbmNvZGVyLT5wb3J0Owo+ICAgCXUzMiByZWc7Cj4gICAKPiAtCXJlZyA9IEk5MTVfUkVBRChQ T1JUX0hEQ1BfU1RBVFVTKHBvcnQpKTsKPiArCXJlZyA9IEk5MTVfUkVBRChIRENQX1NUQVRVUyhk ZXZfcHJpdiwgcGlwZSwgcG9ydCkpOwo+ICAgCXJldHVybiByZWcgJiBIRENQX1NUQVRVU19FTkM7 CmRpcmVjdGx5IHJldHVybiBJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBv cnQpKSAmIApIRENQX1NUQVRVU19FTkM7ID8KPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIGJv b2wgaW50ZWxfaGRjcDJfaW5fdXNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiArc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3AyX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBwb3J0 IHBvcnQpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+IC0JZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3It PmVuY29kZXItPnBvcnQ7Cj4gICAJdTMyIHJlZzsKPiAgIAo+IC0JcmVnID0gSTkxNV9SRUFEKEhE Q1AyX1NUQVRVU19EREkocG9ydCkpOwo+ICsJcmVnID0gSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhk ZXZfcHJpdiwgcGlwZSwgcG9ydCkpOwo+ICAgCXJldHVybiByZWcgJiBMSU5LX0VOQ1JZUFRJT05f U1RBVFVTOwpzYW1lIGhlcmUKPiAgIH0KPiAgIAo+IEBAIC0yNTMsMzcgKzI1Miw1OSBAQCBzdGF0 aWMgaW50IGludGVsX3dyaXRlX3NoYV90ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIHNoYV90ZXh0KQo+ICAgfQo+ICAgCj4gICBzdGF0aWMKPiAtdTMyIGludGVsX2hk Y3BfZ2V0X3JlcGVhdGVyX2N0bChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCkKPiArdTMyIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQllbnVtIHBpcGUgcGlwZSwgZW51bSBwb3J0IHBvcnQp Cj4gICB7Cj4gLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4g LQlzd2l0Y2ggKHBvcnQpIHsKPiAtCWNhc2UgUE9SVF9BOgo+IC0JCXJldHVybiBIRENQX0RESUFf UkVQX1BSRVNFTlQgfCBIRENQX0RESUFfU0hBMV9NMDsKPiAtCWNhc2UgUE9SVF9COgo+IC0JCXJl dHVybiBIRENQX0RESUJfUkVQX1BSRVNFTlQgfCBIRENQX0RESUJfU0hBMV9NMDsKPiAtCWNhc2Ug UE9SVF9DOgo+IC0JCXJldHVybiBIRENQX0RESUNfUkVQX1BSRVNFTlQgfCBIRENQX0RESUNfU0hB MV9NMDsKPiAtCWNhc2UgUE9SVF9EOgo+IC0JCXJldHVybiBIRENQX0RESURfUkVQX1BSRVNFTlQg fCBIRENQX0RESURfU0hBMV9NMDsKPiAtCWNhc2UgUE9SVF9FOgo+IC0JCXJldHVybiBIRENQX0RE SUVfUkVQX1BSRVNFTlQgfCBIRENQX0RESUVfU0hBMV9NMDsKPiAtCWRlZmF1bHQ6Cj4gLQkJYnJl YWs7Cj4gLQl9Cj4gLQlEUk1fRVJST1IoIlVua25vd24gcG9ydCAlZFxuIiwgcG9ydCk7Cj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewo+ICsJCXN3aXRjaCAocGlwZSkgewo+ICsJ CWNhc2UgUElQRV9BOgo+ICsJCQlyZXR1cm4gSERDUF9UUkFOU0FfUkVQX1BSRVNFTlQgfAo+ICsJ CQkgICAgICAgSERDUF9UUkFOU0FfU0hBMV9NMDsKPiArCQljYXNlIFBJUEVfQjoKPiArCQkJcmV0 dXJuIEhEQ1BfVFJBTlNCX1JFUF9QUkVTRU5UIHwKPiArCQkJICAgICAgIEhEQ1BfVFJBTlNCX1NI QTFfTTA7Cj4gKwkJY2FzZSBQSVBFX0M6Cj4gKwkJCXJldHVybiBIRENQX1RSQU5TQ19SRVBfUFJF U0VOVCB8Cj4gKwkJCSAgICAgICBIRENQX1RSQU5TQ19TSEExX00wOwo+ICsJCS8qIEZJWE1FOiBB ZGQgYSBjYXNlIGZvciBQSVBFX0QgKi8KPiArCQlkZWZhdWx0Ogo+ICsJCQlEUk1fRVJST1IoIlVu a25vd24gcGlwZSAlZFxuIiwgcGlwZSk7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KCnJldHVybiAtRUlO VkFMIGhlcmUsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0aGUgZWxzZSBjb25kaXRpb24KCm1heSBiZSBz b21ldGhpbmcgbGlrZToKCnJldCA9IC1FSU5WQUwKCmlmIChHRU4gPj0xMikgewoKIMKgwqDCoCBz d2l0Y2gocGlwZSkgewoKIMKgwqDCoCDCoMKgwqAgY2FzZSBQSVBFQTogcmV0ID0gOyBicmVhazsK CiDCoMKgwqAgwqDCoMKgIGNhc2UgUElQRV9COiByZXQgPTsgYnJlYWs7CgogwqDCoMKgIMKgwqDC oCBkZWZhdWx0OiBEUk1fRVJST1IoKTsgYnJlYWs7CgogwqDCoMKgIH0KCiDCoMKgwqAgcmV0dXJu IHJldDsKCn0KCnN3aXRjaCAocG9ydCkgewoKIMKgwqDCoMKgwqDCoMKgIGNhc2UgUE9SVF9BOiBy ZXQgPSA7CgogwqDCoMKgIMKgwqDCoCBjYXNlIFBPUlRfQjogcmV0ID07CgogwqDCoMKgIMKgwqDC oCBkZWZhdWx0OiBEUk1fRVJST1IoKTsKCn0KCnJldHVybiByZXQ7Cgo+ICsJfSBlbHNlIHsKPiAr CQlzd2l0Y2ggKHBvcnQpIHsKPiArCQljYXNlIFBPUlRfQToKPiArCQkJcmV0dXJuIEhEQ1BfRERJ QV9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJQV9TSEExX00wOwo+ICsJCWNhc2UgUE9SVF9COgo+ICsJ CQlyZXR1cm4gSERDUF9ERElCX1JFUF9QUkVTRU5UIHwgSERDUF9ERElCX1NIQTFfTTA7Cj4gKwkJ Y2FzZSBQT1JUX0M6Cj4gKwkJCXJldHVybiBIRENQX0RESUNfUkVQX1BSRVNFTlQgfCBIRENQX0RE SUNfU0hBMV9NMDsKPiArCQljYXNlIFBPUlRfRDoKPiArCQkJcmV0dXJuIEhEQ1BfRERJRF9SRVBf UFJFU0VOVCB8IEhEQ1BfRERJRF9TSEExX00wOwo+ICsJCWNhc2UgUE9SVF9FOgo+ICsJCQlyZXR1 cm4gSERDUF9ERElFX1JFUF9QUkVTRU5UIHwgSERDUF9ERElFX1NIQTFfTTA7Cj4gKwkJZGVmYXVs dDoKPiArCQkJRFJNX0VSUk9SKCJVbmtub3duIHBvcnQgJWRcbiIsIHBvcnQpOwo+ICsJCQlicmVh azsKPiArCQl9Cj4gKwl9Cj4gICAJcmV0dXJuIC1FSU5WQUw7Cj4gICB9Cj4gICAKPiAgIHN0YXRp Ywo+IC1pbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICtpbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1l KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgIAkJCQljb25zdCBzdHJ1Y3Qg aW50ZWxfaGRjcF9zaGltICpzaGltLAo+ICAgCQkJCXU4ICprc3ZfZmlmbywgdTggbnVtX2Rvd25z dHJlYW0sIHU4ICpic3RhdHVzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICsJZW51bSBwaXBlIHBpcGUgPSBjb25uZWN0 b3ItPmhkY3AucGlwZTsKPiArCWVudW0gcG9ydCBwb3J0OwplbnVtIHBvcnQgcG9ydCA9IGludGVs X2RpZ19wb3J0LT5iYXNlLnBvcnQ7Pwo+ICAgCXUzMiB2cHJpbWUsIHNoYV90ZXh0LCBzaGFfbGVm dG92ZXJzLCByZXBfY3RsOwo+ICAgCWludCByZXQsIGksIGosIHNoYV9pZHg7Cj4gICAKPiAgIAlk ZXZfcHJpdiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICAgCj4gICAJLyogUHJvY2VzcyBW JyB2YWx1ZXMgZnJvbSB0aGUgcmVjZWl2ZXIgKi8KPiAgIAlmb3IgKGkgPSAwOyBpIDwgRFJNX0hE Q1BfVl9QUklNRV9OVU1fUEFSVFM7IGkrKykgewo+IEBAIC0zMDYsNyArMzI3LDcgQEAgaW50IGlu dGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKPiAgIAlzaGFfaWR4ID0gMDsKPiAgIAlzaGFfdGV4dCA9IDA7Cj4gICAJc2hh X2xlZnRvdmVycyA9IDA7Cj4gLQlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3Rs KGludGVsX2RpZ19wb3J0KTsKPiArCXJlcF9jdGwgPSBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9j dGwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpOwo+ICAgCUk5MTVfV1JJVEUoSERDUF9SRVBfQ1RMLCBy ZXBfY3RsIHwgSERDUF9TSEExX1RFWFRfMzIpOwo+ICAgCWZvciAoaSA9IDA7IGkgPCBudW1fZG93 bnN0cmVhbTsgaSsrKSB7Cj4gICAJCXVuc2lnbmVkIGludCBzaGFfZW1wdHk7Cj4gQEAgLTU0NCw3 ICs1NjUsNyBAQCBpbnQgaW50ZWxfaGRjcF9hdXRoX2Rvd25zdHJlYW0oc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCSAqIFYgcHJpbWUgYXRsZWFzdCB0d2ljZS4KPiAgIAkg Ki8KPiAgIAlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7IGkrKykgewo+IC0JCXJldCA9IGludGVsX2hk Y3BfdmFsaWRhdGVfdl9wcmltZShpbnRlbF9kaWdfcG9ydCwgc2hpbSwKPiArCQlyZXQgPSBpbnRl bF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUoY29ubmVjdG9yLCBzaGltLAo+ICAgCQkJCQkJICBrc3Zf ZmlmbywgbnVtX2Rvd25zdHJlYW0sCj4gICAJCQkJCQkgIGJzdGF0dXMpOwo+ICAgCQlpZiAoIXJl dCkKPiBAQCAtNTcyLDYgKzU5Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiAgIAljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGlt ICpzaGltID0gaGRjcC0+c2hpbTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXY7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNvbm5lY3Rvci0+aGRjcC5waXBlOwo+ICAgCWVudW0g cG9ydCBwb3J0Owo+ICAgCXVuc2lnbmVkIGxvbmcgcjBfcHJpbWVfZ2VuX3N0YXJ0Owo+ICAgCWlu dCByZXQsIGksIHRyaWVzID0gMjsKPiBAQCAtNjExLDE5ICs2MzMsMjAgQEAgc3RhdGljIGludCBp bnRlbF9oZGNwX2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCj4g ICAJLyogSW5pdGlhbGl6ZSBBbiB3aXRoIDIgcmFuZG9tIHZhbHVlcyBhbmQgYWNxdWlyZSBpdCAq Lwo+ICAgCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCj4gLQkJSTkxNV9XUklURShQT1JUX0hEQ1Bf QU5JTklUKHBvcnQpLCBnZXRfcmFuZG9tX3UzMigpKTsKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQ X0NPTkYocG9ydCksIEhEQ1BfQ09ORl9DQVBUVVJFX0FOKTsKPiArCQlJOTE1X1dSSVRFKEhEQ1Bf QU5JTklUKGRldl9wcml2LCBwaXBlLCBwb3J0KSwgZ2V0X3JhbmRvbV91MzIoKSk7Cj4gKwlJOTE1 X1dSSVRFKEhEQ1BfQ09ORihkZXZfcHJpdiwgcGlwZSwgcG9ydCksIEhEQ1BfQ09ORl9DQVBUVVJF X0FOKTsKPiAgIAo+ICAgCS8qIFdhaXQgZm9yIEFuIHRvIGJlIGFjcXVpcmVkICovCj4gLQlpZiAo aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsIFBPUlRfSERDUF9TVEFU VVMocG9ydCksCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNv cmUsCj4gKwkJCQkgICAgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAo+ICAgCQkJ CSAgICBIRENQX1NUQVRVU19BTl9SRUFEWSwKPiAgIAkJCQkgICAgSERDUF9TVEFUVVNfQU5fUkVB RFksIDEpKSB7Cj4gICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIEFuXG4iKTsK PiAgIAkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gICAJfQo+ICAgCj4gLQlhbi5yZWdbMF0gPSBJOTE1 X1JFQUQoUE9SVF9IRENQX0FOTE8ocG9ydCkpOwo+IC0JYW4ucmVnWzFdID0gSTkxNV9SRUFEKFBP UlRfSERDUF9BTkhJKHBvcnQpKTsKPiArCWFuLnJlZ1swXSA9IEk5MTVfUkVBRChIRENQX0FOTE8o ZGV2X3ByaXYsIHBpcGUsIHBvcnQpKTsKPiArCWFuLnJlZ1sxXSA9IEk5MTVfUkVBRChIRENQX0FO SEkoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKTsKPiAgIAlyZXQgPSBzaGltLT53cml0ZV9hbl9ha3N2 KGludGVsX2RpZ19wb3J0LCBhbi5zaGltKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0 Owo+IEBAIC02NDEsMjQgKzY2NCwyNCBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJCXJldHVybiAtRVBFUk07Cj4gICAJ fQo+ICAgCj4gLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9CS1NWTE8ocG9ydCksIGJrc3YucmVnWzBd KTsKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZISShwb3J0KSwgYmtzdi5yZWdbMV0pOwo+ ICsJSTkxNV9XUklURShIRENQX0JLU1ZMTyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksIGJrc3YucmVn WzBdKTsKPiArCUk5MTVfV1JJVEUoSERDUF9CS1NWSEkoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCBi a3N2LnJlZ1sxXSk7Cj4gICAKPiAgIAlyZXQgPSBzaGltLT5yZXBlYXRlcl9wcmVzZW50KGludGVs X2RpZ19wb3J0LCAmcmVwZWF0ZXJfcHJlc2VudCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJu IHJldDsKPiAgIAlpZiAocmVwZWF0ZXJfcHJlc2VudCkKPiAgIAkJSTkxNV9XUklURShIRENQX1JF UF9DVEwsCj4gLQkJCSAgIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChpbnRlbF9kaWdfcG9y dCkpOwo+ICsJCQkgICBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoZGV2X3ByaXYsIHBpcGUs IHBvcnQpKTsKPiAgIAo+ICAgCXJldCA9IHNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2Rp Z19wb3J0LCB0cnVlKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gLQlJ OTE1X1dSSVRFKFBPUlRfSERDUF9DT05GKHBvcnQpLCBIRENQX0NPTkZfQVVUSF9BTkRfRU5DKTsK PiArCUk5MTVfV1JJVEUoSERDUF9DT05GKGRldl9wcml2LCBwaXBlLCBwb3J0KSwgSERDUF9DT05G X0FVVEhfQU5EX0VOQyk7Cj4gICAKPiAgIAkvKiBXYWl0IGZvciBSMCByZWFkeSAqLwo+IC0JaWYg KHdhaXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gKwlpZiAod2Fp dF9mb3IoSTkxNV9SRUFEKEhEQ1BfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkgJgo+ICAg CQkgICAgIChIRENQX1NUQVRVU19SMF9SRUFEWSB8IEhEQ1BfU1RBVFVTX0VOQyksIDEpKSB7Cj4g ICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFIwIHJlYWR5XG4iKTsKPiAgIAkJ cmV0dXJuIC1FVElNRURPVVQ7Cj4gQEAgLTY4NiwyMiArNzA5LDIzIEBAIHN0YXRpYyBpbnQgaW50 ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAkJcmV0 ID0gc2hpbS0+cmVhZF9yaV9wcmltZShpbnRlbF9kaWdfcG9ydCwgcmkuc2hpbSk7Cj4gICAJCWlm IChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+IC0JCUk5MTVfV1JJVEUoUE9SVF9IRENQX1JQUklN RShwb3J0KSwgcmkucmVnKTsKPiArCQlJOTE1X1dSSVRFKEhEQ1BfUlBSSU1FKGRldl9wcml2LCBw aXBlLCBwb3J0KSwgcmkucmVnKTsKPiAgIAo+ICAgCQkvKiBXYWl0IGZvciBSaSBwcmltZSBtYXRj aCAqLwo+IC0JCWlmICghd2FpdF9mb3IoSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkp ICYKPiArCQlpZiAoIXdhaXRfZm9yKEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlw ZSwgcG9ydCkpICYKPiAgIAkJICAgIChIRENQX1NUQVRVU19SSV9NQVRDSCB8IEhEQ1BfU1RBVFVT X0VOQyksIDEpKQo+ICAgCQkJYnJlYWs7Cj4gICAJfQo+ICAgCj4gICAJaWYgKGkgPT0gdHJpZXMp IHsKPiAgIAkJRFJNX0RFQlVHX0tNUygiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFJpIHByaW1lIG1h dGNoICgleClcbiIsCj4gLQkJCSAgICAgIEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQp KSk7Cj4gKwkJCSAgICAgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkpKTsKPiAgIAkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gICAJfQo+ICAgCj4gICAJLyogV2FpdCBm b3IgZW5jcnlwdGlvbiBjb25maXJtYXRpb24gKi8KPiAtCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdp c3RlcigmZGV2X3ByaXYtPnVuY29yZSwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwKPiArCWlmIChp bnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwKPiArCQkJCSAgICBIRENQ X1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gICAJCQkJICAgIEhEQ1BfU1RBVFVTX0VO QywgSERDUF9TVEFUVVNfRU5DLAo+ICAgCQkJCSAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElN RU9VVF9NUykpIHsKPiAgIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZW5jcnlw dGlvblxuIik7Cj4gQEAgLTcyNiwxNSArNzUwLDE2IEBAIHN0YXRpYyBpbnQgX2ludGVsX2hkY3Bf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNlLmRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25u X3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdf cG9ydC0+YmFzZS5wb3J0Owo+ICsJZW51bSBwaXBlIHBpcGUgPSBoZGNwLT5waXBlOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiAgIAlEUk1fREVCVUdfS01TKCJbJXM6JWRdIEhEQ1AgaXMgYmVpbmcgZGlz YWJsZWQuLi5cbiIsCj4gICAJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5uYW1lLCBjb25uZWN0b3It PmJhc2UuYmFzZS5pZCk7Cj4gICAKPiAgIAloZGNwLT5oZGNwX2VuY3J5cHRlZCA9IGZhbHNlOwo+ IC0JSTkxNV9XUklURShQT1JUX0hEQ1BfQ09ORihwb3J0KSwgMCk7Cj4gKwlJOTE1X1dSSVRFKEhE Q1BfQ09ORihkZXZfcHJpdiwgcGlwZSwgcG9ydCksIDApOwo+ICAgCWlmIChpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwKPiAtCQkJCSAgICBQT1JUX0hEQ1BfU1RBVFVT KHBvcnQpLCB+MCwgMCwKPiArCQkJCSAgICBIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCksIH4wLCAwLAo+ICAgCQkJCSAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUykp IHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQLCB0aW1lb3V0IGNsZWFy aW5nIHN0YXR1c1xuIik7Cj4gICAJCXJldHVybiAtRVRJTUVET1VUOwo+IEBAIC04MDYsOSArODMx LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBjb25uZWN0b3ItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsK PiAgIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gKwllbnVt IHBpcGUgcGlwZTsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmhkY3At Pm11dGV4KTsKPiArCXBpcGUgPSBoZGNwLT5waXBlOwo+ICAgCj4gICAJLyogQ2hlY2tfbGluayB2 YWxpZCBvbmx5IHdoZW4gSERDUDEuNCBpcyBlbmFibGVkICovCj4gICAJaWYgKGhkY3AtPnZhbHVl ICE9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEIHx8Cj4gQEAgLTgxNywxMCAr ODQ0LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+ICAgCj4gLQlpZiAo V0FSTl9PTighaW50ZWxfaGRjcF9pbl91c2UoY29ubmVjdG9yKSkpIHsKPiArCWlmIChXQVJOX09O KCFpbnRlbF9oZGNwX2luX3VzZShkZXZfcHJpdiwgcGlwZSwgcG9ydCkpKSB7Cj4gICAJCURSTV9F UlJPUigiJXM6JWQgSERDUCBsaW5rIHN0b3BwZWQgZW5jcnlwdGlvbiwleFxuIiwKPiAgIAkJCSAg Y29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+IC0JCQkgIEk5 MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSk7Cj4gKwkJCSAgSTkxNV9SRUFEKEhEQ1Bf U1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkpOwo+ICAgCQlyZXQgPSAtRU5YSU87Cj4gICAJ CWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gICAJ CXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4gQEAgLTE0OTEsMTAgKzE1MTgsMTEg QEAgc3RhdGljIGludCBoZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRj cCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gICAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVu Y29kZXItPnBvcnQ7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGhkY3AtPnBpcGU7Cj4gICAJaW50IHJl dDsKPiAgIAo+IC0JV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBM SU5LX0VOQ1JZUFRJT05fU1RBVFVTKTsKPiAtCj4gKwlXQVJOX09OKEk5MTVfUkVBRChIRENQMl9T VEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCj4gKwkJTElOS19FTkNSWVBUSU9OX1NUQVRV Uyk7Cj4gICAJaWYgKGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKSB7Cj4gICAJCXJldCA9 IGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCB0cnVlKTsKPiAg IAkJaWYgKHJldCkgewo+IEBAIC0xNTA0LDE0ICsxNTMyLDE1IEBAIHN0YXRpYyBpbnQgaGRjcDJf ZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAg CQl9Cj4gICAJfQo+ICAgCj4gLQlpZiAoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkp ICYgTElOS19BVVRIX1NUQVRVUykgewo+ICsJaWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2 X3ByaXYsIHBpcGUsIHBvcnQpKSAmIExJTktfQVVUSF9TVEFUVVMpIHsKPiAgIAkJLyogTGluayBp cyBBdXRoZW50aWNhdGVkLiBOb3cgc2V0IGZvciBFbmNyeXB0aW9uICovCj4gLQkJSTkxNV9XUklU RShIRENQMl9DVExfRERJKHBvcnQpLAo+IC0JCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RESShw b3J0KSkgfAo+ICsJCUk5MTVfV1JJVEUoSERDUDJfQ1RMKGRldl9wcml2LCBwaXBlLCBwb3J0KSwK PiArCQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCkpIHwKPiAg IAkJCSAgIENUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPiAgIAl9Cj4gICAKPiAtCXJldCA9IGlu dGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLCBIRENQMl9TVEFUVVNfRERJ KHBvcnQpLAo+ICsJcmV0ID0gaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNv cmUsCj4gKwkJCQkgICAgICBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAo+ICAg CQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4gICAJCQkJICAgICAgTElOS19FTkNS WVBUSU9OX1NUQVRVUywKPiAgIAkJCQkgICAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9V VF9NUyk7Cj4gQEAgLTE1MjUsMTQgKzE1NTQsMTcgQEAgc3RhdGljIGludCBoZGNwMl9kaXNhYmxl X2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRl dik7Cj4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAg CWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZW51bSBwaXBl IHBpcGUgPSBoZGNwLT5waXBlOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCVdBUk5fT04oIShJOTE1 X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7 Cj4gKwlXQVJOX09OKCEoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkpICYKPiArCQlMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7Cj4gKwlJOTE1X1dSSVRFKEhEQ1Ay X0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gKwkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTChk ZXZfcHJpdiwgcGlwZSwgcG9ydCkpICYKPiArCQkgICB+Q1RMX0xJTktfRU5DUllQVElPTl9SRVEp Owo+ICAgCj4gLQlJOTE1X1dSSVRFKEhEQ1AyX0NUTF9EREkocG9ydCksCj4gLQkJICAgSTkxNV9S RUFEKEhEQ1AyX0NUTF9EREkocG9ydCkpICYgfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPiAt Cj4gLQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwgSERD UDJfU1RBVFVTX0RESShwb3J0KSwKPiArCXJldCA9IGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZk ZXZfcHJpdi0+dW5jb3JlLAo+ICsJCQkJICAgICAgSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBl LCBwb3J0KSwKPiAgIAkJCQkgICAgICBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTLCAweDAsCj4gICAJ CQkJICAgICAgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpOwo+ICAgCWlmIChyZXQg PT0gLUVUSU1FRE9VVCkKPiBAQCAtMTYzMSw5ICsxNjYzLDExIEBAIHN0YXRpYyBpbnQgaW50ZWxf aGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJh c2UuZGV2KTsKPiAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7 Cj4gICAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gKwllbnVt IHBpcGUgcGlwZTsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmhkY3At Pm11dGV4KTsKPiArCXBpcGUgPSBoZGNwLT5waXBlOwo+ICAgCj4gICAJLyogaGRjcDJfY2hlY2tf bGluayBpcyBleHBlY3RlZCBvbmx5IHdoZW4gSERDUDIuMiBpcyBFbmFibGVkICovCj4gICAJaWYg KGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEIHx8Cj4g QEAgLTE2NDIsOSArMTY3Niw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJCWdvdG8gb3V0Owo+ICAgCX0K PiAgIAo+IC0JaWYgKFdBUk5fT04oIWludGVsX2hkY3AyX2luX3VzZShjb25uZWN0b3IpKSkgewo+ ICsJaWYgKFdBUk5fT04oIWludGVsX2hkY3AyX2luX3VzZShkZXZfcHJpdiwgcGlwZSwgcG9ydCkp KSB7Cj4gICAJCURSTV9FUlJPUigiSERDUDIuMiBsaW5rIHN0b3BwZWQgdGhlIGVuY3J5cHRpb24s ICV4XG4iLAo+IC0JCQkgIEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSk7Cj4gKwkJ CSAgSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpKTsKPiAgIAkJ cmV0ID0gLUVOWElPOwo+ICAgCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9ERVNJUkVEOwo+ICAgCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+IEBA IC0xODU3LDYgKzE4OTEsOSBAQCBpbnQgaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCW11dGV4X2xvY2soJmhkY3AtPm11dGV4KTsKPiAgIAlX QVJOX09OKGhkY3AtPnZhbHVlID09IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVE KTsKPiAgIAo+ICsJLyogRklYTUU6IE5lZWQgdG8gdGFrZSB0aGUgZHJtIG1vZGVzZXQgbG9jayBm b3IgY29ubmVjdGlvbl9tdXRleC4gKi8KQW5kIHdlIGNhbid0IHRha2UgdGhpcyByaWdodCBub3cg YmVjYXVzZS4uLi4gPwo+ICsJaGRjcC0+cGlwZSA9IGludGVsX2Nvbm5lY3Rvcl9nZXRfcGlwZShj b25uZWN0b3IpOwo+ICsKPiAgIAkvKgo+ICAgCSAqIENvbnNpZGVyaW5nIHRoYXQgSERDUDIuMiBp cyBtb3JlIHNlY3VyZSB0aGFuIEhEQ1AxLjQsIElmIHRoZSBzZXR1cAo+ICAgCSAqIGlzIGNhcGFi bGUgb2YgSERDUDIuMiwgaXQgaXMgcHJlZmVycmVkIHRvIHVzZSBIRENQMi4yLgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gaW5kZXggMGViZWM2OWJiYmZjLi4y MDk2YWVlMTc0YjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hk bWkuYwo+IEBAIC0xNDkxLDcgKzE0OTEsMTAgQEAgYm9vbCBpbnRlbF9oZG1pX2hkY3BfY2hlY2tf bGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgIHsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAgCQlpbnRlbF9kaWdfcG9y dC0+YmFzZS5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IgPQo+ICsJCQkJaW50ZWxfZGlnX3BvcnQtPmhkbWkuYXR0YWNoZWRfY29ubmVj dG9yOwo+ICAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiAr CWVudW0gcGlwZSBwaXBlID0gY29ubmVjdG9yLT5oZGNwLnBpcGU7Cj4gICAJaW50IHJldDsKPiAg IAl1bmlvbiB7Cj4gICAJCXUzMiByZWc7Cj4gQEAgLTE1MDIsMTMgKzE1MDUsMTMgQEAgYm9vbCBp bnRlbF9oZG1pX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCkKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAtCUk5 MTVfV1JJVEUoUE9SVF9IRENQX1JQUklNRShwb3J0KSwgcmkucmVnKTsKPiArCUk5MTVfV1JJVEUo SERDUF9SUFJJTUUoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCByaS5yZWcpOwo+ICAgCj4gICAJLyog V2FpdCBmb3IgUmkgcHJpbWUgbWF0Y2ggKi8KPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoUE9S VF9IRENQX1NUQVRVUyhwb3J0KSkgJgo+ICsJaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChIRENQX1NU QVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpICYKPiAgIAkJICAgICAoSERDUF9TVEFUVVNfUklf TUFUQ0ggfCBIRENQX1NUQVRVU19FTkMpLCAxKSkgewo+ICAgCQlEUk1fRVJST1IoIlJpJyBtaXNt YXRjaCBkZXRlY3RlZCwgbGluayBjaGVjayBmYWlsZWQgKCV4KVxuIiwKPiAtCQkJICBJOTE1X1JF QUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRV UyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpKTsKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCX0KPiAg IAlyZXR1cm4gdHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA3ZTYwMDljZWZi MTguLjIzMDZlODNiMTZmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC05MjI1 LDEyICs5MjI1LDIwIEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ICAgCj4gICAvKiBIRENQIFJl cGVhdGVyIFJlZ2lzdGVycyAqLwo+ICAgI2RlZmluZSBIRENQX1JFUF9DVEwJCQlfTU1JTygweDY2 ZDAwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQV9SRVBfUFJFU0VOVAlCSVQoMzEpCj4gKyNkZWZp bmUgIEhEQ1BfVFJBTlNCX1JFUF9QUkVTRU5UCUJJVCgzMCkKPiArI2RlZmluZSAgSERDUF9UUkFO U0NfUkVQX1BSRVNFTlQJQklUKDI5KQo+ICsjZGVmaW5lICBIRENQX1RSQU5TRF9SRVBfUFJFU0VO VAlCSVQoMjgpCj4gICAjZGVmaW5lICBIRENQX0RESUJfUkVQX1BSRVNFTlQJCUJJVCgzMCkKPiAg ICNkZWZpbmUgIEhEQ1BfRERJQV9SRVBfUFJFU0VOVAkJQklUKDI5KQo+ICAgI2RlZmluZSAgSERD UF9ERElDX1JFUF9QUkVTRU5UCQlCSVQoMjgpCj4gICAjZGVmaW5lICBIRENQX0RESURfUkVQX1BS RVNFTlQJCUJJVCgyNykKPiAgICNkZWZpbmUgIEhEQ1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2 KQo+ICAgI2RlZmluZSAgSERDUF9ERElFX1JFUF9QUkVTRU5UCQlCSVQoMjUpCj4gKyNkZWZpbmUg IEhEQ1BfVFJBTlNBX1NIQTFfTTAJCSgxIDw8IDIwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQl9T SEExX00wCQkoMiA8PCAyMCkKPiArI2RlZmluZSAgSERDUF9UUkFOU0NfU0hBMV9NMAkJKDMgPDwg MjApCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNEX1NIQTFfTTAJCSg0IDw8IDIwKQo+ICAgI2RlZmlu ZSAgSERDUF9ERElCX1NIQTFfTTAJCSgxIDw8IDIwKQo+ICAgI2RlZmluZSAgSERDUF9ERElBX1NI QTFfTTAJCSgyIDw8IDIwKQo+ICAgI2RlZmluZSAgSERDUF9ERElDX1NIQTFfTTAJCSgzIDw8IDIw KQo+IEBAIC05MjcwLDE1ICs5Mjc4LDg5IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ICAgCQkJ CQkgIF9QT1JURV9IRENQX0FVVEhFTkMsIFwKPiAgIAkJCQkJICBfUE9SVEZfSERDUF9BVVRIRU5D KSArICh4KSkKPiAgICNkZWZpbmUgUE9SVF9IRENQX0NPTkYocG9ydCkJCV9QT1JUX0hEQ1BfQVVU SEVOQyhwb3J0LCAweDApCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0NPTkYJCTB4NjY0MDAKPiAr I2RlZmluZSBfVFJBTlNCX0hEQ1BfQ09ORgkJMHg2NjUwMAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1Bf Q09ORih0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQ09ORiwgXAo+ICsJ CQkJCQkgICAgX1RSQU5TQl9IRENQX0NPTkYpCj4gKyNkZWZpbmUgSERDUF9DT05GKGRldl9wcml2 LCBwaXBlLCBwb3J0KQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQlUUkFO U19IRENQX0NPTkYocGlwZSkgOiBcCj4gKwkJCQkJUE9SVF9IRENQX0NPTkYocG9ydCkpCkFsaWdu bWVudAo+ICsKPiAgICNkZWZpbmUgIEhEQ1BfQ09ORl9DQVBUVVJFX0FOCQlCSVQoMCkKPiAgICNk ZWZpbmUgIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMJCShCSVQoMSkgfCBCSVQoMCkpCj4gICAjZGVm aW5lIFBPUlRfSERDUF9BTklOSVQocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDQp Cj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOSU5JVAkJMHg2NjQwNAo+ICsjZGVmaW5lIF9UUkFO U0JfSERDUF9BTklOSVQJCTB4NjY1MDQKPiArI2RlZmluZSBUUkFOU19IRENQX0FOSU5JVCh0cmFu cykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9BTklOSVQs IFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9BTklOSVQpCj4gKyNkZWZpbmUgSERDUF9BTklO SVQoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiArCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMiA/IFwKPiArCQkJCQlUUkFOU19IRENQX0FOSU5JVChwaXBlKSA6IFwKPiArCQkJCQlQT1JU X0hEQ1BfQU5JTklUKHBvcnQpKQpBbGlnbm1lbnQKPiArCj4gICAjZGVmaW5lIFBPUlRfSERDUF9B TkxPKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHg4KQo+ICsjZGVmaW5lIF9UUkFO U0FfSERDUF9BTkxPCQkweDY2NDA4Cj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FOTE8JCTB4NjY1 MDgKPiArI2RlZmluZSBUUkFOU19IRENQX0FOTE8odHJhbnMpCQlfTU1JT19UUkFOUyh0cmFucywg X1RSQU5TQV9IRENQX0FOTE8sIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9BTkxPKQo+ICsj ZGVmaW5lIEhEQ1BfQU5MTyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIgPyBcCj4gKwkJCQkJVFJBTlNfSERDUF9BTkxPKHBpcGUpIDogXAo+ICsJCQkJCVBP UlRfSERDUF9BTkxPKHBvcnQpKQo+ICsKQWxpZ25tZW50Cj4gICAjZGVmaW5lIFBPUlRfSERDUF9B TkhJKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHhDKQo+ICsjZGVmaW5lIF9UUkFO U0FfSERDUF9BTkhJCQkweDY2NDBDCj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FOSEkJCTB4NjY1 MEMKPiArI2RlZmluZSBUUkFOU19IRENQX0FOSEkodHJhbnMpCQlfTU1JT19UUkFOUyh0cmFucywg X1RSQU5TQV9IRENQX0FOSEksIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9BTkhJKQo+ICsj ZGVmaW5lIEhEQ1BfQU5ISShkZXZfcHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIgPyBcCj4gKwkJCQkJVFJBTlNfSERDUF9BTkhJKHBpcGUpIDogXAo+ICsJCQkJCVBP UlRfSERDUF9BTkhJKHBvcnQpKQo+ICsKQWxpZ25tZW50Cj4gICAjZGVmaW5lIFBPUlRfSERDUF9C S1NWTE8ocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDEwKQo+ICsjZGVmaW5lIF9U UkFOU0FfSERDUF9CS1NWTE8JCTB4NjY0MTAKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQktTVkxP CQkweDY2NTEwCj4gKyNkZWZpbmUgVFJBTlNfSERDUF9CS1NWTE8odHJhbnMpCV9NTUlPX1RSQU5T KHRyYW5zLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfQktTVkxPLCBcCj4gKwkJCQkJCSAg ICBfVFJBTlNCX0hEQ1BfQktTVkxPKQo+ICsjZGVmaW5lIEhEQ1BfQktTVkxPKGRldl9wcml2LCBw aXBlLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJ CQkJVFJBTlNfSERDUF9CS1NWTE8ocGlwZSkgOiBcCj4gKwkJCQkJUE9SVF9IRENQX0JLU1ZMTyhw b3J0KSkKPiArCkFsaWdubWVudAo+ICAgI2RlZmluZSBQT1JUX0hEQ1BfQktTVkhJKHBvcnQpCQlf UE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHgxNCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1BfQktT VkhJCQkweDY2NDE0Cj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0JLU1ZISQkJMHg2NjUxNAo+ICsj ZGVmaW5lIFRSQU5TX0hEQ1BfQktTVkhJKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAo+ICsJ CQkJCQkgICAgX1RSQU5TQV9IRENQX0JLU1ZISSwgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQ X0JLU1ZISSkKPiArI2RlZmluZSBIRENQX0JLU1ZISShkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAo+ ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCVRSQU5TX0hEQ1Bf QktTVkhJKHBpcGUpIDogXAo+ICsJCQkJCVBPUlRfSERDUF9CS1NWSEkocG9ydCkpCj4gKwpBbGln bm1lbnQKPiAgICNkZWZpbmUgUE9SVF9IRENQX1JQUklNRShwb3J0KQkJX1BPUlRfSERDUF9BVVRI RU5DKHBvcnQsIDB4MTgpCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX1JQUklNRQkJMHg2NjQxOAo+ ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9SUFJJTUUJCTB4NjY1MTgKPiArI2RlZmluZSBUUkFOU19I RENQX1JQUklNRSh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFO U0FfSERDUF9SUFJJTUUsIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9SUFJJTUUpCj4gKyNk ZWZpbmUgSERDUF9SUFJJTUUoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiArCQkJCQkoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQlUUkFOU19IRENQX1JQUklNRShwaXBlKSA6 IFwKPiArCQkJCQlQT1JUX0hEQ1BfUlBSSU1FKHBvcnQpKQo+ICsKQWxpZ25tZW50Cj4gICAjZGVm aW5lIFBPUlRfSERDUF9TVEFUVVMocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDFD KQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9TVEFUVVMJCTB4NjY0MUMKPiArI2RlZmluZSBfVFJB TlNCX0hEQ1BfU1RBVFVTCQkweDY2NTFDCj4gKyNkZWZpbmUgVFJBTlNfSERDUF9TVEFUVVModHJh bnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfU1RBVFVT LCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfU1RBVFVTKQo+ICsjZGVmaW5lIEhEQ1BfU1RB VFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTIgPyBcCj4gKwkJCQkJVFJBTlNfSERDUF9TVEFUVVMocGlwZSkgOiBcCj4gKwkJCQkJUE9S VF9IRENQX1NUQVRVUyhwb3J0KSkKPiArCkFsaWdubWVudAo+ICAgI2RlZmluZSAgSERDUF9TVEFU VVNfU1RSRUFNX0FfRU5DCUJJVCgzMSkKPiAgICNkZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9C X0VOQwlCSVQoMzApCj4gICAjZGVmaW5lICBIRENQX1NUQVRVU19TVFJFQU1fQ19FTkMJQklUKDI5 KQo+IEBAIC05MzA1LDIzICs5Mzg3LDQzIEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ICAgCQkJ CQkgIF9QT1JURF9IRENQMl9CQVNFLCBcCj4gICAJCQkJCSAgX1BPUlRFX0hEQ1AyX0JBU0UsIFwK PiAgIAkJCQkJICBfUE9SVEZfSERDUDJfQkFTRSkgKyAoeCkpCj4gLQo+IC0jZGVmaW5lIEhEQ1Ay X0FVVEhfRERJKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4OTgpCj4gKyNkZWZpbmUg UE9SVF9IRENQMl9BVVRIKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4OTgpCj4gKyNk ZWZpbmUgX1RSQU5TQV9IRENQMl9BVVRICQkweDY2NDk4Cj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQ Ml9BVVRICQkweDY2NTk4Cj4gKyNkZWZpbmUgVFJBTlNfSERDUDJfQVVUSCh0cmFucykJCV9NTUlP X1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1AyX0FVVEgsIFwKPiArCQkJCQkJICAgIF9UUkFOU0Jf SERDUDJfQVVUSCkKQWxpZ25tZW50Cj4gICAjZGVmaW5lICAgQVVUSF9MSU5LX0FVVEhFTlRJQ0FU RUQJQklUKDMxKQo+ICAgI2RlZmluZSAgIEFVVEhfTElOS19UWVBFCQlCSVQoMzApCj4gICAjZGVm aW5lICAgQVVUSF9GT1JDRV9DTFJfSU5QVVRDVFIJQklUKDE5KQo+ICAgI2RlZmluZSAgIEFVVEhf Q0xSX0tFWVMJCQlCSVQoMTgpCj4gLQo+IC0jZGVmaW5lIEhEQ1AyX0NUTF9EREkocG9ydCkJCV9Q T1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCMCkKPiArI2RlZmluZSBIRENQMl9BVVRIKGRldl9wcml2 LCBwaXBlLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4g KwkJCQkJIFRSQU5TX0hEQ1AyX0FVVEgocGlwZSkgOiBcCj4gKwkJCQkJIFBPUlRfSERDUDJfQVVU SChwb3J0KSkKPiArCj4gKyNkZWZpbmUgUE9SVF9IRENQMl9DVEwocG9ydCkJCV9QT1JUX0hEQ1Ay X0JBU0UocG9ydCwgMHhCMCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX0NUTAkJMHg2NjRCMAo+ ICsjZGVmaW5lIF9UUkFOU0JfSERDUDJfQ1RMCQkweDY2NUIwCj4gKyNkZWZpbmUgVFJBTlNfSERD UDJfQ1RMKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUDJfQ1RMLCBcCj4g KwkJCQkJCSAgICBfVFJBTlNCX0hEQ1AyX0NUTCkKPiAgICNkZWZpbmUgICBDVExfTElOS19FTkNS WVBUSU9OX1JFUQlCSVQoMzEpCj4gLQo+IC0jZGVmaW5lIEhEQ1AyX1NUQVRVU19EREkocG9ydCkJ CV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCNCkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBU SU9OX1NUQVRVU19BCUJJVCgzMSkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRV U19CCUJJVCgzMCkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRVU19DCUJJVCgy OSkKPiArI2RlZmluZSBIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpCShJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCVRSQU5TX0hEQ1AyX0NUTChwaXBlKSA6IFwKPiAr CQkJCQlQT1JUX0hEQ1AyX0NUTChwb3J0KSkKPiArCkFsaWdubWVudAo+ICsjZGVmaW5lIFBPUlRf SERDUDJfU1RBVFVTKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjQpCj4gKyNkZWZp bmUgX1RSQU5TQV9IRENQMl9TVEFUVVMJCTB4NjY0QjQKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1Ay X1NUQVRVUwkJMHg2NjVCNAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1AyX1NUQVRVUyh0cmFucykJX01N SU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUDJfU1RBVFVTLCBcCj4g KwkJCQkJCSAgICBfVFJBTlNCX0hEQ1AyX1NUQVRVUykKPiAgICNkZWZpbmUgICBMSU5LX1RZUEVf U1RBVFVTCQlCSVQoMjIpCj4gICAjZGVmaW5lICAgTElOS19BVVRIX1NUQVRVUwkJQklUKDIxKQo+ ICAgI2RlZmluZSAgIExJTktfRU5DUllQVElPTl9TVEFUVVMJQklUKDIwKQo+ICsjZGVmaW5lIEhE Q1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQMl9TVEFUVVMocGlwZSkgOiBcCj4g KwkJCQkJIFBPUlRfSERDUDJfU1RBVFVTKHBvcnQpKQo+ICAgCj4gICAvKiBQZXItcGlwZSBEREkg RnVuY3Rpb24gQ29udHJvbCAqLwo+ICAgI2RlZmluZSBfVFJBTlNfRERJX0ZVTkNfQ1RMX0EJCTB4 NjA0MDAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDFkNThmN2VjNWQ4NC4uNTNm MTNlNmE1YTczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzU5LDYgKzM1 OSwxNCBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gICAJd2FpdF9xdWV1ZV9oZWFkX3QgY3BfaXJx X3F1ZXVlOwo+ICAgCWF0b21pY190IGNwX2lycV9jb3VudDsKPiAgIAlpbnQgY3BfaXJxX2NvdW50 X2NhY2hlZDsKPiArCj4gKwkvKgo+ICsJICogR2VuIDEyIG9ud2FyZHMsIEhEQ1AgaXMgcGFydCBv ZiB0cmFuc2NvZGVyKHByZXZpb3VzbHkgRERJKS4KPiArCSAqIFNvIGNoYWNoZWluZyB0aGUgcGlw ZSBhc3NvY2lhdGVkIHRvIGNvbm5lY3RvciBhdCBoZGNwX2VuYWJsZQo+ICsJICogd291bGQgaGVs cCBpbiBzdWJzZXF1ZW50IGZ1bmN0aW9ucyB0byBkZXJpdmUgdGhlIHJpZ2h0IG9mZnNldHMKPiAr CSAqIGZvciBIRENQIHJlZ2lzdGVycy4KPiArCSAqLwo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gICB9 Owo+ICAgCj4gICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKLSBTaGFzaGFuawpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=