From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v7 6/6] drm/i915/hdcp: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Thu, 22 Aug 2019 14:46:23 +0300 Message-ID: <87d0gxctio.fsf@intel.com> References: <20190822111445.29350-1-ramalingam.c@intel.com> <20190822111445.29350-7-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190822111445.29350-7-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ramalingam C , intel-gfx , dri-devel Cc: tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMiBBdWcgMjAxOSwgUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29t PiB3cm90ZToKPiBGcm9tIEdlbjEyIG9ud2FyZHMsIEhEQ1AgSFcgYmxvY2sgaXMgaW1wbGVtZW50 ZWQgd2l0aGluIHRyYW5zY29kZXJzLgo+IFRpbGwgR2VuMTEgSERDUCBIVyBibG9jayB3YXMgcGFy dCBvZiBEREkuCj4KPiBIZW5jZSByZXF1aXJlZCBjaGFuZ2VzIGluIEhXIHByb2dyYW1taW5nIGlz IGhhbmRsZWQgaGVyZS4KPgo+IEFzIE1FIEZXIG5lZWRzIHRoZSB0cmFuc2NvZGVyIGRldGFpbCBv biB3aGljaCBIRENQIGlzIGVuYWJsZWQKPiBvbiBHZW4xMisgcGxhdGZvcm0sIHdlIGFyZSBwb3B1 bGF0aW5nIHRoZSBkZXRhaWwgaW4gaGRjcF9wb3J0X2RhdGEuCj4KPiB2MjoKPiAgIF9NTUlPX1RS QU5TIGlzIHVzZWQgW0x1Y2FzIGFuZCBEYW5pZWxdCj4gICBwbGF0Zm9ybSBjaGVjayBpcyBtb3Zl ZCBpbnRvIHRoZSBjYWxsZXIgW0x1Y2FzXQo+IHYzOgo+ICAgcGxhdGZvcm0gY2hlY2sgaXMgbW92 ZWQgaW50byBhIG1hY3JvIFtTaGFzaGFua10KPiB2NDoKPiAgIEZldyBvcHRpbWl6YXRpb25zIGlu IHRoZSBjb2RpbmcgW1NoYXNoYW5rXQo+IHY1Ogo+ICAgRml4ZWQgYWxpZ25tZW50IGluIG1hY3Jv IGRlZmluaXRpb24gaW4gaTkxNV9yZWcuaCBbU2hhc2hhbmtdCj4gICB1bnVzZWQgdmFyaWFibGVz ICJyZWciIGlzIHJlbW92ZWQuCj4gdjY6Cj4gICBDb25maWd1cmluZyB0aGUgdHJhbnNjb2RlciBh dCBjb21wdXRlX2NvbmZpZy4KPiAgIHRyYW5zY29kZXIgaXMgdXNlZCBpbnN0ZWFkIG9mIHBpcGUg aW4gbWFjcm9zLgo+ICAgUmViYXNlZC4KPiB2NzoKPiAgIHRyYW5zY29kZXIgaXMgY2FjaGVkIGF0 IGludGVsX2hkY3AKPiAgIGhkY3BfcG9ydF9kYXRhIGlzIGNvbmZpZ3VyZWQgd2l0aCB0cmFuc2Nv ZGVyIGluZGV4IGFzcGVyIE1FIEZXLgo+Cj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxy YW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNo YXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+IFt2NV0KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMgfCAxMjkgKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYyB8ICAgOSArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICB8IDEyNCArKysrKysrKysrKysr KysrKysrLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRp b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYwo+IGlu ZGV4IDI2NGJkYTVkNDg0Yy4uODBkZjU4MWEwYmZkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKPiBAQCAtMTgsNiArMTgsNyBAQAo+ICAjaW5jbHVkZSAi aW50ZWxfZGlzcGxheV90eXBlcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfaGRjcC5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiArI2luY2x1ZGUgImludGVsX2Nvbm5lY3Rvci5oIgo+ ICAKPiAgI2RlZmluZSBLRVlfTE9BRF9UUklFUwk1Cj4gICNkZWZpbmUgRU5DUllQVF9TVEFUVVNf Q0hBTkdFX1RJTUVPVVRfTVMJNTAKPiBAQCAtMTA1LDI0ICsxMDYsMTcgQEAgYm9vbCBpbnRlbF9o ZGNwMl9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldHVy biBjYXBhYmxlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfaGRjcF9pbl91 c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgaW5saW5lIGJv b2wgaW50ZWxfaGRjcF9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICsJCQkJICAgICBlbnVtIHRyYW5zY29kZXIgdGMsIGVudW0gcG9ydCBwb3J0KQoKZW51bSB0cmFu c2NvZGVyIHRyYW5jb2RlciBvciBlbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIuCgpzYW1l IHRocm91Z2hvdXQuCgpCUiwKSmFuaS4KCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gLQllbnVtIHBvcnQg cG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiAtCXUzMiByZWc7Cj4gLQo+IC0JcmVn ID0gSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpOwo+IC0JcmV0dXJuIHJlZyAmIEhE Q1BfU1RBVFVTX0VOQzsKPiArCXJldHVybiBJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYs IHRjLCBwb3J0KSkgJiBIRENQX1NUQVRVU19FTkM7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUg Ym9vbCBpbnRlbF9oZGNwMl9pbl91c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfaGRjcDJfaW5fdXNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgIGVudW0gdHJhbnNjb2RlciB0YywgZW51 bSBwb3J0IHBvcnQpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gLQllbnVtIHBvcnQgcG9ydCA9IGNvbm5l Y3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiAtCXUzMiByZWc7Cj4gLQo+IC0JcmVnID0gSTkxNV9SRUFE KEhEQ1AyX1NUQVRVU19EREkocG9ydCkpOwo+IC0JcmV0dXJuIHJlZyAmIExJTktfRU5DUllQVElP Tl9TVEFUVVM7Cj4gKwlyZXR1cm4gSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdGMs IHBvcnQpKSAmCj4gKwkgICAgICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUzsKPiAgfQo+ICAKPiAg c3RhdGljIGludCBpbnRlbF9oZGNwX3BvbGxfa3N2X2ZpZm8oc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gQEAgLTI1Myw5ICsyNDcsMjggQEAgc3RhdGljIGludCBp bnRlbF93cml0ZV9zaGFfdGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBzaGFfdGV4dCkKPiAgfQo+ICAKPiAgc3RhdGljCj4gLXUzMiBpbnRlbF9oZGNwX2dldF9yZXBl YXRlcl9jdGwoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gK3Uz MiBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICsJCQkJZW51bSB0cmFuc2NvZGVyIHRjLCBlbnVtIHBvcnQgcG9ydCkKPiAgewo+ IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsKPiArCQlzd2l0Y2ggKHRjKSB7Cj4gKwkJY2FzZSBU UkFOU0NPREVSX0E6Cj4gKwkJCXJldHVybiBIRENQX1RSQU5TQV9SRVBfUFJFU0VOVCB8Cj4gKwkJ CSAgICAgICBIRENQX1RSQU5TQV9TSEExX00wOwo+ICsJCWNhc2UgVFJBTlNDT0RFUl9COgo+ICsJ CQlyZXR1cm4gSERDUF9UUkFOU0JfUkVQX1BSRVNFTlQgfAo+ICsJCQkgICAgICAgSERDUF9UUkFO U0JfU0hBMV9NMDsKPiArCQljYXNlIFRSQU5TQ09ERVJfQzoKPiArCQkJcmV0dXJuIEhEQ1BfVFJB TlNDX1JFUF9QUkVTRU5UIHwKPiArCQkJICAgICAgIEhEQ1BfVFJBTlNDX1NIQTFfTTA7Cj4gKwkJ LyogRklYTUU6IEFkZCBhIGNhc2UgZm9yIFBJUEVfRCAqLwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCURS TV9FUlJPUigiVW5rbm93biB0cmFuc2NvZGVyICVkXG4iLCB0Yyk7Cj4gKwkJCWJyZWFrOwo+ICsJ CX0KPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gIAlzd2l0Y2ggKHBvcnQpIHsKPiAg CWNhc2UgUE9SVF9BOgo+ICAJCXJldHVybiBIRENQX0RESUFfUkVQX1BSRVNFTlQgfCBIRENQX0RE SUFfU0hBMV9NMDsKPiBAQCAtMjY4LDE4ICsyODEsMjEgQEAgdTMyIGludGVsX2hkY3BfZ2V0X3Jl cGVhdGVyX2N0bChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAg CWNhc2UgUE9SVF9FOgo+ICAJCXJldHVybiBIRENQX0RESUVfUkVQX1BSRVNFTlQgfCBIRENQX0RE SUVfU0hBMV9NMDsKPiAgCWRlZmF1bHQ6Cj4gKwkJRFJNX0VSUk9SKCJVbmtub3duIHBvcnQgJWRc biIsIHBvcnQpOwo+ICAJCWJyZWFrOwo+ICAJfQo+IC0JRFJNX0VSUk9SKCJVbmtub3duIHBvcnQg JWRcbiIsIHBvcnQpOwo+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4gIHN0YXRpYwo+IC1p bnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0LAo+ICtpbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9o ZGNwX3NoaW0gKnNoaW0sCj4gIAkJCQl1OCAqa3N2X2ZpZm8sIHU4IG51bV9kb3duc3RyZWFtLCB1 OCAqYnN0YXR1cykKPiAgewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXY7Cj4gKwllbnVtIHRyYW5zY29kZXIgdGMgPSBjb25uZWN0b3ItPmhk Y3AudHJhbnM7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7 Cj4gIAl1MzIgdnByaW1lLCBzaGFfdGV4dCwgc2hhX2xlZnRvdmVycywgcmVwX2N0bDsKPiAgCWlu dCByZXQsIGksIGosIHNoYV9pZHg7Cj4gIAo+IEBAIC0zMDYsNyArMzIyLDcgQEAgaW50IGludGVs X2hkY3BfdmFsaWRhdGVfdl9wcmltZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKPiAgCXNoYV9pZHggPSAwOwo+ICAJc2hhX3RleHQgPSAwOwo+ICAJc2hhX2xlZnRv dmVycyA9IDA7Cj4gLQlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVs X2RpZ19wb3J0KTsKPiArCXJlcF9jdGwgPSBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoZGV2 X3ByaXYsIHRjLCBwb3J0KTsKPiAgCUk5MTVfV1JJVEUoSERDUF9SRVBfQ1RMLCByZXBfY3RsIHwg SERDUF9TSEExX1RFWFRfMzIpOwo+ICAJZm9yIChpID0gMDsgaSA8IG51bV9kb3duc3RyZWFtOyBp KyspIHsKPiAgCQl1bnNpZ25lZCBpbnQgc2hhX2VtcHR5Owo+IEBAIC01NDgsNyArNTY0LDcgQEAg aW50IGludGVsX2hkY3BfYXV0aF9kb3duc3RyZWFtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAgCSAqIFYgcHJpbWUgYXRsZWFzdCB0d2ljZS4KPiAgCSAqLwo+ICAJZm9yIChp ID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKPiAtCQlyZXQgPSBpbnRlbF9oZGNwX3ZhbGlkYXRlX3Zf cHJpbWUoaW50ZWxfZGlnX3BvcnQsIHNoaW0sCj4gKwkJcmV0ID0gaW50ZWxfaGRjcF92YWxpZGF0 ZV92X3ByaW1lKGNvbm5lY3Rvciwgc2hpbSwKPiAgCQkJCQkJICBrc3ZfZmlmbywgbnVtX2Rvd25z dHJlYW0sCj4gIAkJCQkJCSAgYnN0YXR1cyk7Cj4gIAkJaWYgKCFyZXQpCj4gQEAgLTU3Niw2ICs1 OTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNl LmRldjsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGlt Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICsJZW51bSB0cmFuc2Nv ZGVyIHRjID0gY29ubmVjdG9yLT5oZGNwLnRyYW5zOwo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gIAl1 bnNpZ25lZCBsb25nIHIwX3ByaW1lX2dlbl9zdGFydDsKPiAgCWludCByZXQsIGksIHRyaWVzID0g MjsKPiBAQCAtNjE1LDE4ICs2MzIsMTggQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1dGgoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAKPiAgCS8qIEluaXRpYWxpemUgQW4g d2l0aCAyIHJhbmRvbSB2YWx1ZXMgYW5kIGFjcXVpcmUgaXQgKi8KPiAgCWZvciAoaSA9IDA7IGkg PCAyOyBpKyspCj4gLQkJSTkxNV9XUklURShQT1JUX0hEQ1BfQU5JTklUKHBvcnQpLCBnZXRfcmFu ZG9tX3UzMigpKTsKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX0NPTkYocG9ydCksIEhEQ1BfQ09O Rl9DQVBUVVJFX0FOKTsKPiArCQlJOTE1X1dSSVRFKEhEQ1BfQU5JTklUKGRldl9wcml2LCB0Yywg cG9ydCksIGdldF9yYW5kb21fdTMyKCkpOwo+ICsJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3By aXYsIHRjLCBwb3J0KSwgSERDUF9DT05GX0NBUFRVUkVfQU4pOwo+ICAKPiAgCS8qIFdhaXQgZm9y IEFuIHRvIGJlIGFjcXVpcmVkICovCj4gLQlpZiAoaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9w cml2LCBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpLAo+ICsJaWYgKGludGVsX2RlX3dhaXRfZm9yX3Nl dChkZXZfcHJpdiwgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHRjLCBwb3J0KSwKPiAgCQkJCSAgSERD UF9TVEFUVVNfQU5fUkVBRFksIDEpKSB7Cj4gIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGlu ZyBmb3IgQW5cbiIpOwo+ICAJCXJldHVybiAtRVRJTUVET1VUOwo+ICAJfQo+ICAKPiAtCWFuLnJl Z1swXSA9IEk5MTVfUkVBRChQT1JUX0hEQ1BfQU5MTyhwb3J0KSk7Cj4gLQlhbi5yZWdbMV0gPSBJ OTE1X1JFQUQoUE9SVF9IRENQX0FOSEkocG9ydCkpOwo+ICsJYW4ucmVnWzBdID0gSTkxNV9SRUFE KEhEQ1BfQU5MTyhkZXZfcHJpdiwgdGMsIHBvcnQpKTsKPiArCWFuLnJlZ1sxXSA9IEk5MTVfUkVB RChIRENQX0FOSEkoZGV2X3ByaXYsIHRjLCBwb3J0KSk7Cj4gIAlyZXQgPSBzaGltLT53cml0ZV9h bl9ha3N2KGludGVsX2RpZ19wb3J0LCBhbi5zaGltKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJu IHJldDsKPiBAQCAtNjQ0LDI0ICs2NjEsMjQgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1dGgo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCXJldHVybiAtRVBFUk07Cj4g IAl9Cj4gIAo+IC0JSTkxNV9XUklURShQT1JUX0hEQ1BfQktTVkxPKHBvcnQpLCBia3N2LnJlZ1sw XSk7Cj4gLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9CS1NWSEkocG9ydCksIGJrc3YucmVnWzFdKTsK PiArCUk5MTVfV1JJVEUoSERDUF9CS1NWTE8oZGV2X3ByaXYsIHRjLCBwb3J0KSwgYmtzdi5yZWdb MF0pOwo+ICsJSTkxNV9XUklURShIRENQX0JLU1ZISShkZXZfcHJpdiwgdGMsIHBvcnQpLCBia3N2 LnJlZ1sxXSk7Cj4gIAo+ICAJcmV0ID0gc2hpbS0+cmVwZWF0ZXJfcHJlc2VudChpbnRlbF9kaWdf cG9ydCwgJnJlcGVhdGVyX3ByZXNlbnQpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ ICAJaWYgKHJlcGVhdGVyX3ByZXNlbnQpCj4gIAkJSTkxNV9XUklURShIRENQX1JFUF9DVEwsCj4g LQkJCSAgIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChpbnRlbF9kaWdfcG9ydCkpOwo+ICsJ CQkgICBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoZGV2X3ByaXYsIHRjLCBwb3J0KSk7Cj4g IAo+ICAJcmV0ID0gc2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQsIHRydWUp Owo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCUk5MTVfV1JJVEUoUE9SVF9I RENQX0NPTkYocG9ydCksIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOwo+ICsJSTkxNV9XUklURShI RENQX0NPTkYoZGV2X3ByaXYsIHRjLCBwb3J0KSwgSERDUF9DT05GX0FVVEhfQU5EX0VOQyk7Cj4g IAo+ICAJLyogV2FpdCBmb3IgUjAgcmVhZHkgKi8KPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQo UE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJgo+ICsJaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChIRENQ X1NUQVRVUyhkZXZfcHJpdiwgdGMsIHBvcnQpKSAmCj4gIAkJICAgICAoSERDUF9TVEFUVVNfUjBf UkVBRFkgfCBIRENQX1NUQVRVU19FTkMpLCAxKSkgewo+ICAJCURSTV9FUlJPUigiVGltZWQgb3V0 IHdhaXRpbmcgZm9yIFIwIHJlYWR5XG4iKTsKPiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiBAQCAt Njg5LDIyICs3MDYsMjIgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1dGgoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCXJldCA9IHNoaW0tPnJlYWRfcmlfcHJpbWUoaW50 ZWxfZGlnX3BvcnQsIHJpLnNoaW0pOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4g LQkJSTkxNV9XUklURShQT1JUX0hEQ1BfUlBSSU1FKHBvcnQpLCByaS5yZWcpOwo+ICsJCUk5MTVf V1JJVEUoSERDUF9SUFJJTUUoZGV2X3ByaXYsIHRjLCBwb3J0KSwgcmkucmVnKTsKPiAgCj4gIAkJ LyogV2FpdCBmb3IgUmkgcHJpbWUgbWF0Y2ggKi8KPiAtCQlpZiAoIXdhaXRfZm9yKEk5MTVfUkVB RChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gKwkJaWYgKCF3YWl0X2ZvcihJOTE1X1JFQUQo SERDUF9TVEFUVVMoZGV2X3ByaXYsIHRjLCBwb3J0KSkgJgo+ICAJCSAgICAoSERDUF9TVEFUVVNf UklfTUFUQ0ggfCBIRENQX1NUQVRVU19FTkMpLCAxKSkKPiAgCQkJYnJlYWs7Cj4gIAl9Cj4gIAo+ ICAJaWYgKGkgPT0gdHJpZXMpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJUaW1lZCBvdXQgd2FpdGlu ZyBmb3IgUmkgcHJpbWUgbWF0Y2ggKCV4KVxuIiwKPiAtCQkJICAgICAgSTkxNV9SRUFEKFBPUlRf SERDUF9TVEFUVVMocG9ydCkpKTsKPiArCQkJICAgICAgSTkxNV9SRUFEKEhEQ1BfU1RBVFVTKGRl dl9wcml2LCB0YywgcG9ydCkpKTsKPiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgCX0KPiAgCj4g IAkvKiBXYWl0IGZvciBlbmNyeXB0aW9uIGNvbmZpcm1hdGlvbiAqLwo+IC0JaWYgKGludGVsX2Rl X3dhaXRfZm9yX3NldChkZXZfcHJpdiwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwKPiArCWlmIChp bnRlbF9kZV93YWl0X2Zvcl9zZXQoZGV2X3ByaXYsIEhEQ1BfU1RBVFVTKGRldl9wcml2LCB0Yywg cG9ydCksCj4gIAkJCQkgIEhEQ1BfU1RBVFVTX0VOQywKPiAgCQkJCSAgRU5DUllQVF9TVEFUVVNf Q0hBTkdFX1RJTUVPVVRfTVMpKSB7Cj4gIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBm b3IgZW5jcnlwdGlvblxuIik7Cj4gQEAgLTcyOSwxNSArNzQ2LDE2IEBAIHN0YXRpYyBpbnQgX2lu dGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2LT5k ZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICsJZW51bSB0cmFuc2NvZGVyIHRjID0gaGRjcC0+dHJh bnM7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUCBpcyBi ZWluZyBkaXNhYmxlZC4uLlxuIiwKPiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29u bmVjdG9yLT5iYXNlLmJhc2UuaWQpOwo+ICAKPiAgCWhkY3AtPmhkY3BfZW5jcnlwdGVkID0gZmFs c2U7Cj4gLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9DT05GKHBvcnQpLCAwKTsKPiAtCWlmIChpbnRl bF9kZV93YWl0X2Zvcl9jbGVhcihkZXZfcHJpdiwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwgfjAs Cj4gLQkJCQkgICAgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpKSB7Cj4gKwlJOTE1 X1dSSVRFKEhEQ1BfQ09ORihkZXZfcHJpdiwgdGMsIHBvcnQpLCAwKTsKPiArCWlmIChpbnRlbF9k ZV93YWl0X2Zvcl9jbGVhcihkZXZfcHJpdiwgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHRjLCBwb3J0 KSwKPiArCQkJCSAgICB+MCwgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpKSB7Cj4g IAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQLCB0aW1lb3V0IGNsZWFyaW5nIHN0 YXR1c1xuIik7Cj4gIAkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gIAl9Cj4gQEAgLTgwOCw5ICs4MjYs MTEgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g Y29ubmVjdG9yLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPiAg CWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiArCWVudW0gdHJh bnNjb2RlciB0YzsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCW11dGV4X2xvY2soJmhkY3AtPm11 dGV4KTsKPiArCXRjID0gaGRjcC0+dHJhbnM7Cj4gIAo+ICAJLyogQ2hlY2tfbGluayB2YWxpZCBv bmx5IHdoZW4gSERDUDEuNCBpcyBlbmFibGVkICovCj4gIAlpZiAoaGRjcC0+dmFsdWUgIT0gRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQgfHwKPiBAQCAtODE5LDEwICs4MzksMTAg QEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+ICAKPiAtCWlmIChXQVJOX09OKCFp bnRlbF9oZGNwX2luX3VzZShjb25uZWN0b3IpKSkgewo+ICsJaWYgKFdBUk5fT04oIWludGVsX2hk Y3BfaW5fdXNlKGRldl9wcml2LCB0YywgcG9ydCkpKSB7Cj4gIAkJRFJNX0VSUk9SKCIlczolZCBI RENQIGxpbmsgc3RvcHBlZCBlbmNyeXB0aW9uLCV4XG4iLAo+ICAJCQkgIGNvbm5lY3Rvci0+YmFz ZS5uYW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKPiAtCQkJICBJOTE1X1JFQUQoUE9SVF9I RENQX1NUQVRVUyhwb3J0KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJp diwgdGMsIHBvcnQpKSk7Cj4gIAkJcmV0ID0gLUVOWElPOwo+ICAJCWhkY3AtPnZhbHVlID0gRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gIAkJc2NoZWR1bGVfd29yaygmaGRj cC0+cHJvcF93b3JrKTsKPiBAQCAtMTQ5MywxMCArMTUxMywxMSBAQCBzdGF0aWMgaW50IGhkY3Ay X2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5i YXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7 Cj4gIAllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiArCWVudW0g dHJhbnNjb2RlciB0YyA9IGhkY3AtPnRyYW5zOwo+ICAJaW50IHJldDsKPiAgCj4gLQlXQVJOX09O KEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9TVEFU VVMpOwo+IC0KPiArCVdBUk5fT04oSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdGMs IHBvcnQpKSAmCj4gKwkJTElOS19FTkNSWVBUSU9OX1NUQVRVUyk7Cj4gIAlpZiAoaGRjcC0+c2hp bS0+dG9nZ2xlX3NpZ25hbGxpbmcpIHsKPiAgCQlyZXQgPSBoZGNwLT5zaGltLT50b2dnbGVfc2ln bmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4gIAkJaWYgKHJldCkgewo+IEBAIC0xNTA2 LDE0ICsxNTI3LDE0IEBAIHN0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCX0KPiAgCX0KPiAgCj4gLQlpZiAoSTkx NV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19BVVRIX1NUQVRVUykgewo+ICsJ aWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHRjLCBwb3J0KSkgJiBMSU5LX0FV VEhfU1RBVFVTKSB7Cj4gIAkJLyogTGluayBpcyBBdXRoZW50aWNhdGVkLiBOb3cgc2V0IGZvciBF bmNyeXB0aW9uICovCj4gLQkJSTkxNV9XUklURShIRENQMl9DVExfRERJKHBvcnQpLAo+IC0JCQkg ICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkgfAo+ICsJCUk5MTVfV1JJVEUoSERDUDJf Q1RMKGRldl9wcml2LCB0YywgcG9ydCksCj4gKwkJCSAgIEk5MTVfUkVBRChIRENQMl9DVEwoZGV2 X3ByaXYsIHRjLCBwb3J0KSkgfAo+ICAJCQkgICBDVExfTElOS19FTkNSWVBUSU9OX1JFUSk7Cj4g IAl9Cj4gIAo+IC0JcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9wcml2LCBIRENQMl9T VEFUVVNfRERJKHBvcnQpLAo+ICsJcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9wcml2 LCBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHRjLCBwb3J0KSwKPiAgCQkJCSAgICBMSU5LX0VOQ1JZ UFRJT05fU1RBVFVTLAo+ICAJCQkJICAgIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01T KTsKPiAgCj4gQEAgLTE1MjYsMTQgKzE1NDcsMTggQEAgc3RhdGljIGludCBoZGNwMl9kaXNhYmxl X2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2 KTsKPiAgCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiAgCWVu dW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZW51bSB0cmFuc2Nv ZGVyIHRjID0gaGRjcC0+dHJhbnM7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCVdBUk5fT04oIShJOTE1 X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7 Cj4gKwlXQVJOX09OKCEoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdGMsIHBvcnQp KSAmCj4gKwkJCSAgICBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7Cj4gIAo+IC0JSTkxNV9XUklU RShIRENQMl9DVExfRERJKHBvcnQpLAo+IC0JCSAgIEk5MTVfUkVBRChIRENQMl9DVExfRERJKHBv cnQpKSAmIH5DVExfTElOS19FTkNSWVBUSU9OX1JFUSk7Cj4gKwlJOTE1X1dSSVRFKEhEQ1AyX0NU TChkZXZfcHJpdiwgdGMsIHBvcnQpLAo+ICsJCSAgIEk5MTVfUkVBRChIRENQMl9DVEwoZGV2X3By aXYsIHRjLCBwb3J0KSkgJgo+ICsJCSAgIH5DVExfTElOS19FTkNSWVBUSU9OX1JFUSk7Cj4gIAo+ IC0JcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIEhEQ1AyX1NUQVRVU19E REkocG9ydCksCj4gKwlyZXQgPSBpbnRlbF9kZV93YWl0X2Zvcl9jbGVhcihkZXZfcHJpdiwKPiAr CQkJCSAgICAgIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdGMsIHBvcnQpLAo+ICAJCQkJICAgICAg TElOS19FTkNSWVBUSU9OX1NUQVRVUywKPiAgCQkJCSAgICAgIEVOQ1JZUFRfU1RBVFVTX0NIQU5H RV9USU1FT1VUX01TKTsKPiAgCWlmIChyZXQgPT0gLUVUSU1FRE9VVCkKPiBAQCAtMTYzMiw5ICsx NjU3LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2hkY3Ag KmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3It PmVuY29kZXItPnBvcnQ7Cj4gKwllbnVtIHRyYW5zY29kZXIgdGM7Cj4gIAlpbnQgcmV0ID0gMDsK PiAgCj4gIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gKwl0YyA9IGhkY3AtPnRyYW5zOwo+ ICAKPiAgCS8qIGhkY3AyX2NoZWNrX2xpbmsgaXMgZXhwZWN0ZWQgb25seSB3aGVuIEhEQ1AyLjIg aXMgRW5hYmxlZCAqLwo+ICAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJP VEVDVElPTl9FTkFCTEVEIHx8Cj4gQEAgLTE2NDMsOSArMTY3MCw5IEBAIHN0YXRpYyBpbnQgaW50 ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4g IAkJZ290byBvdXQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKFdBUk5fT04oIWludGVsX2hkY3AyX2luX3Vz ZShjb25uZWN0b3IpKSkgewo+ICsJaWYgKFdBUk5fT04oIWludGVsX2hkY3AyX2luX3VzZShkZXZf cHJpdiwgdGMsIHBvcnQpKSkgewo+ICAJCURSTV9FUlJPUigiSERDUDIuMiBsaW5rIHN0b3BwZWQg dGhlIGVuY3J5cHRpb24sICV4XG4iLAo+IC0JCQkgIEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJ KHBvcnQpKSk7Cj4gKwkJCSAgSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdGMsIHBv cnQpKSk7Cj4gIAkJcmV0ID0gLUVOWElPOwo+ICAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09O VEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gIAkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93 b3JrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9o ZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwo+IGluZGV4 IDZlOWJiNmJkMWVlMi4uNTA5YzY4MjZhZTZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9oZG1pLmMKPiBAQCAtMTQ5MSw3ICsxNDkxLDEwIEBAIGJvb2wgaW50ZWxf aGRtaV9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gIAkJ aW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KPiArCQlpbnRlbF9kaWdfcG9ydC0+aGRtaS5hdHRh Y2hlZF9jb25uZWN0b3I7Cj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNl LnBvcnQ7Cj4gKwllbnVtIHRyYW5zY29kZXIgdGMgPSBjb25uZWN0b3ItPmhkY3AudHJhbnM7Cj4g IAlpbnQgcmV0Owo+ICAJdW5pb24gewo+ICAJCXUzMiByZWc7Cj4gQEAgLTE1MDIsMTMgKzE1MDUs MTMgQEAgYm9vbCBpbnRlbF9oZG1pX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX1JQUklNRShwb3J0KSwgcmkucmVnKTsKPiArCUk5 MTVfV1JJVEUoSERDUF9SUFJJTUUoZGV2X3ByaXYsIHRjLCBwb3J0KSwgcmkucmVnKTsKPiAgCj4g IAkvKiBXYWl0IGZvciBSaSBwcmltZSBtYXRjaCAqLwo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVB RChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gKwlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKEhE Q1BfU1RBVFVTKGRldl9wcml2LCB0YywgcG9ydCkpICYKPiAgCQkgICAgIChIRENQX1NUQVRVU19S SV9NQVRDSCB8IEhEQ1BfU1RBVFVTX0VOQyksIDEpKSB7Cj4gIAkJRFJNX0VSUk9SKCJSaScgbWlz bWF0Y2ggZGV0ZWN0ZWQsIGxpbmsgY2hlY2sgZmFpbGVkICgleClcbiIsCj4gLQkJCSAgSTkxNV9S RUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPiArCQkJICBJOTE1X1JFQUQoSERDUF9TVEFU VVMoZGV2X3ByaXYsIHRjLCBwb3J0KSkpOwo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCXJl dHVybiB0cnVlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDJhYmQxOTkwOTNjNS4u NTcyZTRjYmE4NDdhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTkyNTYsMTIg KzkyNTYsMjAgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gIAo+ICAvKiBIRENQIFJlcGVhdGVy IFJlZ2lzdGVycyAqLwo+ICAjZGVmaW5lIEhEQ1BfUkVQX0NUTAkJCV9NTUlPKDB4NjZkMDApCj4g KyNkZWZpbmUgIEhEQ1BfVFJBTlNBX1JFUF9QUkVTRU5UCUJJVCgzMSkKPiArI2RlZmluZSAgSERD UF9UUkFOU0JfUkVQX1BSRVNFTlQJQklUKDMwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQ19SRVBf UFJFU0VOVAlCSVQoMjkpCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNEX1JFUF9QUkVTRU5UCUJJVCgy OCkKPiAgI2RlZmluZSAgSERDUF9ERElCX1JFUF9QUkVTRU5UCQlCSVQoMzApCj4gICNkZWZpbmUg IEhEQ1BfRERJQV9SRVBfUFJFU0VOVAkJQklUKDI5KQo+ICAjZGVmaW5lICBIRENQX0RESUNfUkVQ X1BSRVNFTlQJCUJJVCgyOCkKPiAgI2RlZmluZSAgSERDUF9ERElEX1JFUF9QUkVTRU5UCQlCSVQo MjcpCj4gICNkZWZpbmUgIEhEQ1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2KQo+ICAjZGVmaW5l ICBIRENQX0RESUVfUkVQX1BSRVNFTlQJCUJJVCgyNSkKPiArI2RlZmluZSAgSERDUF9UUkFOU0Ff U0hBMV9NMAkJKDEgPDwgMjApCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNCX1NIQTFfTTAJCSgyIDw8 IDIwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQ19TSEExX00wCQkoMyA8PCAyMCkKPiArI2RlZmlu ZSAgSERDUF9UUkFOU0RfU0hBMV9NMAkJKDQgPDwgMjApCj4gICNkZWZpbmUgIEhEQ1BfRERJQl9T SEExX00wCQkoMSA8PCAyMCkKPiAgI2RlZmluZSAgSERDUF9ERElBX1NIQTFfTTAJCSgyIDw8IDIw KQo+ICAjZGVmaW5lICBIRENQX0RESUNfU0hBMV9NMAkJKDMgPDwgMjApCj4gQEAgLTkzMDEsMTUg KzkzMDksOTIgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gIAkJCQkJICBfUE9SVEVfSERDUF9B VVRIRU5DLCBcCj4gIAkJCQkJICBfUE9SVEZfSERDUF9BVVRIRU5DKSArICh4KSkKPiAgI2RlZmlu ZSBQT1JUX0hEQ1BfQ09ORihwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MCkKPiAr I2RlZmluZSBfVFJBTlNBX0hEQ1BfQ09ORgkJMHg2NjQwMAo+ICsjZGVmaW5lIF9UUkFOU0JfSERD UF9DT05GCQkweDY2NTAwCj4gKyNkZWZpbmUgVFJBTlNfSERDUF9DT05GKHRyYW5zKQkJX01NSU9f VFJBTlModHJhbnMsIF9UUkFOU0FfSERDUF9DT05GLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hE Q1BfQ09ORikKPiArI2RlZmluZSBIRENQX0NPTkYoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCj4g KwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1Bf Q09ORih0cmFucykgOiBcCj4gKwkJCQkJIFBPUlRfSERDUF9DT05GKHBvcnQpKQo+ICsKPiAgI2Rl ZmluZSAgSERDUF9DT05GX0NBUFRVUkVfQU4JCUJJVCgwKQo+ICAjZGVmaW5lICBIRENQX0NPTkZf QVVUSF9BTkRfRU5DCQkoQklUKDEpIHwgQklUKDApKQo+ICAjZGVmaW5lIFBPUlRfSERDUF9BTklO SVQocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDQpCj4gKyNkZWZpbmUgX1RSQU5T QV9IRENQX0FOSU5JVAkJMHg2NjQwNAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9BTklOSVQJCTB4 NjY1MDQKPiArI2RlZmluZSBUUkFOU19IRENQX0FOSU5JVCh0cmFucykJX01NSU9fVFJBTlModHJh bnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9BTklOSVQsIFwKPiArCQkJCQkJICAgIF9U UkFOU0JfSERDUF9BTklOSVQpCj4gKyNkZWZpbmUgSERDUF9BTklOSVQoZGV2X3ByaXYsIHRyYW5z LCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJ IFRSQU5TX0hEQ1BfQU5JTklUKHRyYW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX0FOSU5JVChw b3J0KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX0FOTE8ocG9ydCkJCV9QT1JUX0hEQ1BfQVVU SEVOQyhwb3J0LCAweDgpCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOTE8JCTB4NjY0MDgKPiAr I2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5MTwkJMHg2NjUwOAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1Bf QU5MTyh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQU5MTywgXAo+ICsJ CQkJCQkgICAgX1RSQU5TQl9IRENQX0FOTE8pCj4gKyNkZWZpbmUgSERDUF9BTkxPKGRldl9wcml2 LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ ICsJCQkJCSBUUkFOU19IRENQX0FOTE8odHJhbnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQU5M Tyhwb3J0KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX0FOSEkocG9ydCkJCV9QT1JUX0hEQ1Bf QVVUSEVOQyhwb3J0LCAweEMpCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOSEkJCTB4NjY0MEMK PiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5ISQkJMHg2NjUwQwo+ICsjZGVmaW5lIFRSQU5TX0hE Q1BfQU5ISSh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQU5ISSwgXAo+ ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQX0FOSEkpCj4gKyNkZWZpbmUgSERDUF9BTkhJKGRldl9w cml2LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8g XAo+ICsJCQkJCSBUUkFOU19IRENQX0FOSEkodHJhbnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1Bf QU5ISShwb3J0KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX0JLU1ZMTyhwb3J0KQkJX1BPUlRf SERDUF9BVVRIRU5DKHBvcnQsIDB4MTApCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0JLU1ZMTwkJ MHg2NjQxMAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9CS1NWTE8JCTB4NjY1MTAKPiArI2RlZmlu ZSBUUkFOU19IRENQX0JLU1ZMTyh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJ ICAgIF9UUkFOU0FfSERDUF9CS1NWTE8sIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9CS1NW TE8pCj4gKyNkZWZpbmUgSERDUF9CS1NWTE8oZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCj4gKwkJ CQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfQktT VkxPKHRyYW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX0JLU1ZMTyhwb3J0KSkKPiArCj4gICNk ZWZpbmUgUE9SVF9IRENQX0JLU1ZISShwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4 MTQpCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0JLU1ZISQkJMHg2NjQxNAo+ICsjZGVmaW5lIF9U UkFOU0JfSERDUF9CS1NWSEkJCTB4NjY1MTQKPiArI2RlZmluZSBUUkFOU19IRENQX0JLU1ZISSh0 cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9CS1NW SEksIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9CS1NWSEkpCj4gKyNkZWZpbmUgSERDUF9C S1NWSEkoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfQktTVkhJKHRyYW5zKSA6IFwKPiArCQkJ CQkgUE9SVF9IRENQX0JLU1ZISShwb3J0KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX1JQUklN RShwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MTgpCj4gKyNkZWZpbmUgX1RSQU5T QV9IRENQX1JQUklNRQkJMHg2NjQxOAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9SUFJJTUUJCTB4 NjY1MTgKPiArI2RlZmluZSBUUkFOU19IRENQX1JQUklNRSh0cmFucykJX01NSU9fVFJBTlModHJh bnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJTUUsIFwKPiArCQkJCQkJICAgIF9U UkFOU0JfSERDUF9SUFJJTUUpCj4gKyNkZWZpbmUgSERDUF9SUFJJTUUoZGV2X3ByaXYsIHRyYW5z LCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJ IFRSQU5TX0hEQ1BfUlBSSU1FKHRyYW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX1JQUklNRShw b3J0KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX1NUQVRVUyhwb3J0KQkJX1BPUlRfSERDUF9B VVRIRU5DKHBvcnQsIDB4MUMpCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX1NUQVRVUwkJMHg2NjQx Qwo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9TVEFUVVMJCTB4NjY1MUMKPiArI2RlZmluZSBUUkFO U19IRENQX1NUQVRVUyh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9U UkFOU0FfSERDUF9TVEFUVVMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9TVEFUVVMpCj4g KyNkZWZpbmUgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCj4gKwkJCQkJKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfU1RBVFVTKHRy YW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkKPiArCj4gICNkZWZpbmUg IEhEQ1BfU1RBVFVTX1NUUkVBTV9BX0VOQwlCSVQoMzEpCj4gICNkZWZpbmUgIEhEQ1BfU1RBVFVT X1NUUkVBTV9CX0VOQwlCSVQoMzApCj4gICNkZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9DX0VO QwlCSVQoMjkpCj4gQEAgLTkzMzYsMjMgKzk0MjEsNDQgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7 Cj4gIAkJCQkJICBfUE9SVERfSERDUDJfQkFTRSwgXAo+ICAJCQkJCSAgX1BPUlRFX0hEQ1AyX0JB U0UsIFwKPiAgCQkJCQkgIF9QT1JURl9IRENQMl9CQVNFKSArICh4KSkKPiAtCj4gLSNkZWZpbmUg SERDUDJfQVVUSF9EREkocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHg5OCkKPiArI2Rl ZmluZSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHg5OCkK PiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX0FVVEgJCTB4NjY0OTgKPiArI2RlZmluZSBfVFJBTlNC X0hEQ1AyX0FVVEgJCTB4NjY1OTgKPiArI2RlZmluZSBUUkFOU19IRENQMl9BVVRIKHRyYW5zKQkJ X01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUDJfQVVUSCwgXAo+ICsJCQkJCQkgICAgX1RS QU5TQl9IRENQMl9BVVRIKQo+ICAjZGVmaW5lICAgQVVUSF9MSU5LX0FVVEhFTlRJQ0FURUQJQklU KDMxKQo+ICAjZGVmaW5lICAgQVVUSF9MSU5LX1RZUEUJCUJJVCgzMCkKPiAgI2RlZmluZSAgIEFV VEhfRk9SQ0VfQ0xSX0lOUFVUQ1RSCUJJVCgxOSkKPiAgI2RlZmluZSAgIEFVVEhfQ0xSX0tFWVMJ CQlCSVQoMTgpCj4gLQo+IC0jZGVmaW5lIEhEQ1AyX0NUTF9EREkocG9ydCkJCV9QT1JUX0hEQ1Ay X0JBU0UocG9ydCwgMHhCMCkKPiArI2RlZmluZSBIRENQMl9BVVRIKGRldl9wcml2LCB0cmFucywg cG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCSBU UkFOU19IRENQMl9BVVRIKHRyYW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQMl9BVVRIKHBvcnQp KQo+ICsKPiArI2RlZmluZSBQT1JUX0hEQ1AyX0NUTChwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShw b3J0LCAweEIwKQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUDJfQ1RMCQkweDY2NEIwCj4gKyNkZWZp bmUgX1RSQU5TQl9IRENQMl9DVEwJCTB4NjY1QjAKPiArI2RlZmluZSBUUkFOU19IRENQMl9DVEwo dHJhbnMpCQlfTU1JT19UUkFOUyh0cmFucywgX1RSQU5TQV9IRENQMl9DVEwsIFwKPiArCQkJCQkJ ICAgIF9UUkFOU0JfSERDUDJfQ1RMKQo+ICAjZGVmaW5lICAgQ1RMX0xJTktfRU5DUllQVElPTl9S RVEJQklUKDMxKQo+IC0KPiAtI2RlZmluZSBIRENQMl9TVEFUVVNfRERJKHBvcnQpCQlfUE9SVF9I RENQMl9CQVNFKHBvcnQsIDB4QjQpCj4gLSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElPTl9TVEFU VVNfQQlCSVQoMzEpCj4gLSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElPTl9TVEFUVVNfQglCSVQo MzApCj4gLSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElPTl9TVEFUVVNfQwlCSVQoMjkpCj4gKyNk ZWZpbmUgSERDUDJfQ1RMKGRldl9wcml2LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQMl9DVEwodHJhbnMpIDog XAo+ICsJCQkJCSBQT1JUX0hEQ1AyX0NUTChwb3J0KSkKPiArCj4gKyNkZWZpbmUgUE9SVF9IRENQ Ml9TVEFUVVMocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCNCkKPiArI2RlZmluZSBf VFJBTlNBX0hEQ1AyX1NUQVRVUwkJMHg2NjRCNAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUDJfU1RB VFVTCQkweDY2NUI0Cj4gKyNkZWZpbmUgVFJBTlNfSERDUDJfU1RBVFVTKHRyYW5zKQlfTU1JT19U UkFOUyh0cmFucywgXAo+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQMl9TVEFUVVMsIFwKPiArCQkJ CQkJICAgIF9UUkFOU0JfSERDUDJfU1RBVFVTKQo+ICAjZGVmaW5lICAgTElOS19UWVBFX1NUQVRV UwkJQklUKDIyKQo+ICAjZGVmaW5lICAgTElOS19BVVRIX1NUQVRVUwkJQklUKDIxKQo+ICAjZGVm aW5lICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUwlCSVQoMjApCj4gKyNkZWZpbmUgSERDUDJfU1RB VFVTKGRldl9wcml2LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQMl9TVEFUVVModHJhbnMpIDogXAo+ICsJCQkJ CSBQT1JUX0hEQ1AyX1NUQVRVUyhwb3J0KSkKPiAgCj4gIC8qIFBlci1waXBlIERESSBGdW5jdGlv biBDb250cm9sICovCj4gICNkZWZpbmUgX1RSQU5TX0RESV9GVU5DX0NUTF9BCQkweDYwNDAwCgot LSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=