From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v4 4/6] drm: scrambling support in drm layer Date: Thu, 23 Feb 2017 09:05:16 +0530 Message-ID: References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-5-git-send-email-shashank.sharma@intel.com> <20170222172424.GL31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170222172424.GL31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiAyLzIyLzIwMTcgMTA6NTQgUE0sIFZpbGxlIFN5cmrDpGzD pCB3cm90ZToKPiBPbiBXZWQsIEZlYiAyMiwgMjAxNyBhdCAwNjo0ODoyOVBNICswNTMwLCBTaGFz aGFuayBTaGFybWEgd3JvdGU6Cj4+IEhETUkgMi4wIHNwZWMgbWFuZGF0ZXMgc2NyYW1ibGluZyBm b3IgbW9kZXMgd2l0aCBwaXhlbCBjbG9jayBoaWdoZXIKPj4gdGhhbiAzNDAgTUh6LiBUaGlzIHBh dGNoIGFkZHMgZmV3IG5ldyBmdW5jdGlvbnMgaW4gZHJtIGxheWVyIGZvcgo+PiBjb3JlIGRyaXZl cnMgdG8gZW5hYmxlL2Rpc2FibGUgc2NyYW1ibGluZy4KPj4KPj4gVGhpcyBwYXRjaCBhZGRzOgo+ PiAtIEEgZnVuY3Rpb24gdG8gZGV0ZWN0IHNjcmFtYmxpbmcgc3VwcG9ydCBwYXJzaW5nIEhGLVZT REIKPj4gLSBBIGZ1bmN0aW9uIHRvIGNoZWNrIHNjcmFtYmxpbmcgc3RhdHVzIHJ1bnRpbWUgdXNp bmcgU0NEQyByZWFkLgo+PiAtIFR3byBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc2NyYW1i bGluZyB1c2luZyBTQ0RDIHJlYWQvd3JpdGUuCj4+IC0gRmV3IG5ldyBib29scyB0byByZWZsZWN0 IHNjcmFtYmxpbmcgc3VwcG9ydCBhbmQgc3RhdHVzLgo+Pgo+PiBWMjogQWRkcmVzc2VkIHJldmll dyBjb21tZW50cyBmcm9tIFRoaWVycnksIFZpbGxlIGFuZCBEaGluYWthcmFuCj4+IFRoaWVycnk6 Cj4+IC0gTWh6IC0+IE1IeiBpbiBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UuCj4+IC0gaTJj IC0+IEkyQyBpbiBjb21tZW50cy4KPj4gLSBGaXggdGhlIGZ1bmN0aW9uIGRvY3VtZW50YXRpb25z LCBrZWVwIGluIHN5bmMgd2l0aCBkcm1fc2NkY19oZWxwZXIuYwo+PiAtIGRybV9jb25uZWN0b3Ig LT4gRFJNIGNvbm5lY3Rvci4KPj4gLSBDcmVhdGUgc3RydWN0dXJlIGZvciBTQ0RDLCBhbmQgc2F2 ZSBzY3JhbWJsaW5nIHN0YXR1cyBpbnNpZGUgdGhhdCwKPj4gICAgaW4gYSBzdWItc3RydWN0dXJl Lgo+PiAtIENhbGwgdGhpcyBzdWItc3RydWN0dXJlIHNjcmFtYmxpbmcgaW5zdGVhZCBvZiBzY3Jf aW5mby4KPj4gLSBsb3dfcmF0ZXMgLT4gbG93X2Nsb2NrcyBpbiBzY3JhbWJsaW5nIHN0YXR1cyBz dHJ1Y3R1cmUuCj4+IC0gU3RvcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBJMkMgcmVhZC93cml0ZSBh bmQgcHJpbnQgdGhlIGVycm9yIGNvZGUKPj4gICAgaW4gY2FzZSBvZiBmYWlsdXJlLgo+Pgo+PiBU aGllcnJ5IGFuZCBWaWxsZToKPj4gLSBNb3ZlIHRoZSBzY3JhbWJsaW5nIGVuYWJsZS9kaXNhYmxl L3F1ZXJ5IGZ1bmN0aW9ucyBpbgo+PiAgICBkcm1fc2NkY19oZWxwZXIuYyBmaWxlLgo+PiAtIEFk ZCBkcm1fU0NEQyBwcmVmaXggZm9yIHRoZSBmdW5jdGlvbnMuCj4+IC0gT3B0aW1pemUgdGhlIHJl dHVybiBzdGF0ZW1lbnQgZnJvbSBmdW5jdGlvbgo+PiAgICBkcm1fU0NEQ19jaGVja19zY3JhbWJs aW5nX3N0YXR1cy4KPj4KPj4gVmlsbGU6Cj4+IC0gRG9udCBvdmVyd3JpdGUgc2F2ZWQgbWF4IFRN RFMgY2xvY2sgdmFsdWUgaW4gZGlzcGxheV9pbmZvLAo+PiAgICBpZiBtYXggdG1kcyBjbG9jayBm cm9tIEhGLVZTREIgaXMgbm90ID4gMzQwIE1Iei4KPj4gLSBkcm1fZGV0ZWN0X2hkbWlfc2NyYW1i bGluZyAtPiBkcm1fcGFyc2VfaGRtaV9mb3J1bV92c2RiLgo+PiAtIFJlbW92ZSBkeW5hbWljIHRy YWNraW5nIG9mIFNDREMgc3RhdHVzIGZyb20gRFJNIGxheWVyLCBmb3JjZSBib29sLgo+PiAtIFBy b2dyYW0gY2xvY2sgcmF0aW8gYml0IGFsc28sIHdoaWxlIGVuYWJsaW5nIHNjcmFtYmxpbmcuCj4+ Cj4+IERoaW5ha2FyYW46Cj4+IC0gQWRkIGEgY29tbWVudCBhYm91dCAqNTAwMCB3aGlsZSBleHRy YWN0aW5nIG1heCBjbG9jayBzdXBwb3J0ZWQuCj4+Cj4+IFYzOiBBZGRyZXNzZWQgcmV2aWV3IGNv bW1lbnRzIGZyb20gSm9zZS4KPj4gLSBDcmVhdGUgc2VwYXJhdGUgZnVuY3Rpb25zIHRvIGVuYWJs ZSBzY3JhbWJsaW5nIGFuZCB0byBzZXQgVE1EUwo+PiAgICBjbG9jay9jaGFyYWN0ZXIgcmF0ZSBy YXRpby4KPj4KPj4gVjQ6IFJlYmFzZQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFy bWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fZWRpZC5jICAgICAgICB8ICAzMyArKysrKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9k cm1fc2NkY19oZWxwZXIuYyB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiAgIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICB8ICAxOSArKysrKwo+ PiAgIGluY2x1ZGUvZHJtL2RybV9lZGlkLmggICAgICAgICAgICB8ICAgNiArLQo+PiAgIGluY2x1 ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oICAgICB8ICA0MSArKysrKysrKysrCj4+ICAgNSBmaWxl cyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9l ZGlkLmMKPj4gaW5kZXggNjNiNzliZS4uMWUxOGMwYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9lZGlkLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4g QEAgLTM3LDYgKzM3LDcgQEAKPj4gICAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+Cj4+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+PiAgICNpbmNsdWRlIDxkcm0vZHJtX2Rpc3BsYXlp ZC5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KPj4gICAKPj4gICAjaW5j bHVkZSAiZHJtX2NydGNfaW50ZXJuYWwuaCIKPj4gICAKPj4gQEAgLTM4MTEsMTMgKzM4MTIsNDMg QEAgZW51bSBoZG1pX3F1YW50aXphdGlvbl9yYW5nZQo+PiAgIHN0YXRpYyB2b2lkIGRybV9wYXJz ZV9oZG1pX2ZvcnVtX3ZzZGIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJ CQkJIGNvbnN0IHU4ICpoZl92c2RiKQo+PiAgIHsKPj4gLQlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAq aGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwo+PiArCXN0cnVjdCBkcm1fZGlz cGxheV9pbmZvICpkaXNwbGF5ID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwo+PiArCXN0cnVj dCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmRpc3BsYXktPmhkbWk7Cj4+ICAgCj4+ICAgCWlmICho Zl92c2RiWzZdICYgMHg4MCkgewo+PiAgIAkJaGRtaS0+c2NkYy5zdXBwb3J0ZWQgPSB0cnVlOwo+ PiAgIAkJaWYgKGhmX3ZzZGJbNl0gJiAweDQwKQo+PiAgIAkJCWhkbWktPnNjZGMucmVhZF9yZXF1 ZXN0ID0gdHJ1ZTsKPj4gICAJfQo+PiArCj4+ICsJLyoKPj4gKwkgKiBBbGwgSERNSSAyLjAgbW9u aXRvcnMgbXVzdCBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgcmF0ZXMgPiAzNDAgTUh6Lgo+PiArCSAq IEFuZCBhcyBwZXIgdGhlIHNwZWMsIHRocmVlIGZhY3RvcnMgY29uZmlybSB0aGlzOgo+PiArCSAq ICogQXZhaWxhYmlsaXR5IG9mIGEgSEYtVlNEQiBibG9jayBpbiBFRElEIChjaGVjaykKPj4gKwkg KiAqIE5vbiB6ZXJvIE1heF9UTURTX0NoYXJfUmF0ZSBmaWxlZCBpbiBIRi1WU0RCIChsZXQncyBj aGVjaykKPj4gKwkgKiAqIFNDREMgc3VwcG9ydCBhdmFpbGFibGUgKGxldCdzIGNoZWNrKQo+PiAr CSAqIExldHMgY2hlY2sgaXQgb3V0Lgo+PiArCSAqLwo+PiArCj4+ICsJaWYgKGhmX3ZzZGJbNV0p IHsKPj4gKwkJLyogbWF4IGNsb2NrIGlzIDUwMDAgS0h6IHRpbWVzIGJsb2NrIHZhbHVlICovCj4+ ICsJCXUzMiBtYXhfdG1kc19jbG9jayA9IGhmX3ZzZGJbNV0gKiA1MDAwOwo+PiArCQlzdHJ1Y3Qg ZHJtX3NjZGMgKnNjZGMgPSAmaGRtaS0+c2NkYzsKPj4gKwo+PiArCQlpZiAobWF4X3RtZHNfY2xv Y2sgPiAzNDAwMDApIHsKPj4gKwkJCWRpc3BsYXktPm1heF90bWRzX2Nsb2NrID0gbWF4X3RtZHNf Y2xvY2s7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJIRi1WU0RCOiBtYXggVE1EUyBjbG9jayAlZCBr SHpcbiIsCj4+ICsJCQkJZGlzcGxheS0+bWF4X3RtZHNfY2xvY2spOwo+PiArCQl9Cj4+ICsKPj4g KwkJaWYgKHNjZGMtPnN1cHBvcnRlZCkgewo+PiArCQkJc2NkYy0+c2NyYW1ibGluZy5zdXBwb3J0 ZWQgPSB0cnVlOwo+PiArCj4+ICsJCQkvKiBGZXcgc2lua3Mgc3VwcG9ydCBzY3JhbWJsaW5nIGZv ciBjbG9rcyA8IDM0ME0gKi8KPj4gKwkJCWlmICgoaGZfdnNkYls2XSAmIDB4OCkpCj4+ICsJCQkJ c2NkYy0+c2NyYW1ibGluZy5sb3dfcmF0ZXMgPSB0cnVlOwo+PiArCQl9Cj4+ICsJfQo+PiAgIH0K Pj4gICAKPj4gICBzdGF0aWMgdm9pZCBkcm1fcGFyc2VfaGRtaV9kZWVwX2NvbG9yX2luZm8oc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fc2NkY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIu Ywo+PiBpbmRleCBmZTBlMTIxLi5jMGNmODJiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX3NjZGNfaGVscGVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hl bHBlci5jCj4+IEBAIC0yMiw4ICsyMiwxMCBAQAo+PiAgICAqLwo+PiAgIAo+PiAgICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4gICAKPj4gICAj aW5jbHVkZSA8ZHJtL2RybV9zY2RjX2hlbHBlci5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+ Cj4+ICAgCj4+ICAgLyoqCj4+ICAgICogRE9DOiBzY2RjIGhlbHBlcnMKPj4gQEAgLTEwOSwzICsx MTEsMTY1IEBAIHNzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFw dGVyLCB1OCBvZmZzZXQsCj4+ICAgCXJldHVybiBlcnI7Cj4+ICAgfQo+PiAgIEVYUE9SVF9TWU1C T0woZHJtX3NjZGNfd3JpdGUpOwo+PiArCj4+ICsvKioKPj4gKyAqIGRybV9zY2RjX2NoZWNrX3Nj cmFtYmxpbmdfc3RhdHVzIC0gd2hhdCBpcyBzdGF0dXMgb2Ygc2NyYW1ibGluZz8KPj4gKyAqIEBh ZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERDIGNoYW5uZWwKPj4gKyAqCj4+ICsgKiBSZWFkcyB0 aGUgc2NyYW1ibGVyIHN0YXR1cyBvdmVyIFNDREMsIGFuZCBjaGVja3MgdGhlCj4+ICsgKiBzY3Jh bWJsaW5nIHN0YXR1cy4KPj4gKyAqCj4+ICsgKiBSZXR1cm5zOgo+PiArICogVHJ1ZSBpZiB0aGUg c2NyYW1ibGluZyBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuCj4+ICsgKi8KPj4gKwo+PiAr Ym9vbCBkcm1fc2NkY19jaGVja19zY3JhbWJsaW5nX3N0YXR1cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIpCj4+ICt7Cj4+ICsJdTggc3RhdHVzOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwly ZXQgPSBkcm1fc2NkY19yZWFkYihhZGFwdGVyLCBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMsICZzdGF0 dXMpOwo+PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQg c2NyYW1ibGluZyBzdGF0dXMsIGVycm9yICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gZmFsc2U7 Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHN0YXR1cyAmIFNDRENfU0NSQU1CTElOR19TVEFUVVM7 Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX2NoZWNrX3NjcmFtYmxpbmdfc3RhdHVz KTsKPiBzL2NoZWNrL2dldC8gd291bGQgbWFrZSBtb3JlIHNlbnNlIHRvIG1lLgpnb3QgaXQuCj4+ ICsKPj4gKy8qKgo+PiArICogZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcgLSBlbmFibGUgc2Ny YW1ibGluZwo+PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+PiAr ICoKPj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBl bmFibGVzIHNjcmFtYmxpbmcKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiBUcnVlIGlmIHNjcmFtYmxp bmcgaXMgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS4KPj4gKyAqLwo+PiAr Cj4+ICtib29sIGRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKHN0cnVjdCBpMmNfYWRhcHRlciAq YWRhcHRlcikKPj4gK3sKPj4gKwl1OCBjb25maWc7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJl dCA9IGRybV9zY2RjX3JlYWRiKGFkYXB0ZXIsIFNDRENfVE1EU19DT05GSUcsICZjb25maWcpOwo+ PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBj b25maWcsIGVycj0lZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+ PiArCWNvbmZpZyB8PSBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFOwo+PiArCj4+ICsJcmV0ID0gZHJt X3NjZGNfd3JpdGViKGFkYXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4+ICsJaWYg KHJldCA8IDApIHsKPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHNjcmFtYmxpbmcs IGVycm9yICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJfQo+PiArCj4+ICsJ cmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX2VuYWJsZV9zY3Jh bWJsaW5nKTsKPj4gKwo+PiArLyoqCj4+ICsgKiBkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcg LSBkaXNhYmxlIHNjcmFtYmxpbmcKPj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERD IGNoYW5uZWwKPj4gKyAqCj4+ICsgKiBXcml0ZSB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNo YW5uZWwsIGFuZCBkaXNhYmxlIHNjcmFtYmxpbmcKPj4gKyAqIFJldHVybjogVHJ1ZSBpZiBzY3Jh bWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBkaXNhYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLgo+PiArICov Cj4+ICtib29sIGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIpCj4+ICt7Cj4+ICsJdTggY29uZmlnOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwly ZXQgPSBkcm1fc2NkY19yZWFkYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCAmY29uZmlnKTsK Pj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHRtZHMg Y29uZmlnLCBlcnJvciAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4g Kwo+PiArCWNvbmZpZyAmPSB+U0NEQ19TQ1JBTUJMSU5HX0VOQUJMRTsKPj4gKwo+PiArCXJldCA9 IGRybV9zY2RjX3dyaXRlYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCBjb25maWcpOwo+PiAr CWlmIChyZXQgPCAwKSB7Cj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBzY3JhbWJs aW5nLCBlcnJvciAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+ PiArCXJldHVybiB0cnVlOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19kaXNhYmxl X3NjcmFtYmxpbmcpOwo+PiArCj4+ICsvKioKPj4gKyAqIGRybV9zY2RjX3NldF9oaWdoX3RtZHNf Y2xvY2tfcmF0aW8gLSBzZXQgVE1EUyBjbG9jayByYXRpbwo+PiArICogQGFkYXB0ZXI6IEkyQyBh ZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+PiArICoKPj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25m aWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBzZXRzIFRNRFMKPj4gKyAqIGNsb2NrIHJhdGlvIHRv IDEvNDAKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiBUcnVlIGlmIHdyaXRlIGlzIHN1Y2Nlc3NmdWws IGZhbHNlIG90aGVyd2lzZS4KPj4gKyAqLwo+PiArYm9vbCBkcm1fc2NkY19zZXRfaGlnaF90bWRz X2Nsb2NrX3JhdGlvKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPj4gK3sKPj4gKwl1OCBj b25maWc7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IGRybV9zY2RjX3JlYWRiKGFkYXB0 ZXIsIFNDRENfVE1EU19DT05GSUcsICZjb25maWcpOwo+PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0KTsK Pj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+PiArCWNvbmZpZyB8PSBTQ0RDX1RNRFNf QklUX0NMT0NLX1JBVElPX0JZXzQwOwo+PiArCj4+ICsJcmV0ID0gZHJtX3NjZGNfd3JpdGViKGFk YXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4g KwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gc2V0IFRNRFMgY2xvY2sgcmF0aW8sIGVycm9yICVkXG4i LCByZXQpOwo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJfQo+PiArCj4+ICsJLyoKPj4gKwkgKiBU aGUgc3BlYyBzYXlzIHRoYXQgdGhlIHNvdXJjZSBzaG91bGQgd2FpdCBtaW5pbXVtIDFtcyBhbmQg bWF4aW11bQo+PiArCSAqIDEwMG1zIGFmdGVyIHdyaXRpbmcgdGhlIFRNRFMgY29uZmlnIGZvciBj bG9jayByYXRpby4KPj4gKwkgKi8KPj4gKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMTAwMDAwKTsKPiBB bGxvd2luZyB0aGUgbWF4IHRvIGJlIDEwMG1zIGhlcmUgc2VlbXMgb3Zlcmx5IGdlbmVyb3VzIHRv IG1lLiBJbiBieQo+IGFsbG93aW5nIDEwMG1zIHdlIG1pZ2h0IGJlIHZpb2xhdGluZyB0aGUgc3Bl YyBzaW5jZSBpdCB3aWxsIHRha2UgYSBiaXQKPiBvZiBhZGRpdG9uYWwgdGltZSBiZWZvcmUgdGhl IGRyaXZlciB3aWxsIGVuYWJsZSB0aGUgb3V0cHV0LiBTbyBJJ2QganVzdAo+IHVzZSBzb21ldGhp bmcgbGlrZSAxLTIgbXNlYy4KTWFrZXMgc2Vuc2UsIGJ1dCB3b3VsZG4ndCAxLTIgbXMgYmUgdG9v IHNtYWxsID8KRG8geW91IHRoaW5rIHdlIHNob3VsZCBhbGxvdyBhdCBsZWFzdCAxMG1zID8KPj4g KwlyZXR1cm4gdHJ1ZTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfc2V0X2hpZ2hf dG1kc19jbG9ja19yYXRpbyk7Cj4+ICsKPj4gKy8qKgo+PiArICogZHJtX3NjZGNfY2xlYXJfaGln aF90bWRzX2Nsb2NrX3JhdGlvIC0gY2xlYXIgVE1EUyBjbG9jayByYXRpbwo+PiArICogQGFkYXB0 ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+PiArICoKPj4gKyAqIFdyaXRlcyB0aGUg VE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBzZXRzIFRNRFMKPj4gKyAqIGNsb2Nr IHJhdGlvIGJhY2sgdG8gMS8xMCAoZnJvbSAxLzQwKQo+PiArICogUmV0dXJuczoKPj4gKyAqIFRy dWUgaWYgd3JpdGUgaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgo+PiArICovCj4+ICti b29sIGRybV9zY2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJjX2FkYXB0 ZXIgKmFkYXB0ZXIpCj4+ICt7Cj4+ICsJdTggY29uZmlnOwo+PiArCWludCByZXQ7Cj4+ICsKPj4g KwlyZXQgPSBkcm1fc2NkY19yZWFkYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCAmY29uZmln KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHRt ZHMgY29uZmlnLCBlcnI9JWRcbiIsIHJldCk7Cj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwl9Cj4+ ICsKPj4gKwljb25maWcgJj0gflNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDA7Cj4+ICsK Pj4gKwlyZXQgPSBkcm1fc2NkY193cml0ZWIoYWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgY29u ZmlnKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjbGVh ciBUTURTIGNsb2NrIHJhdGlvLCBlcnJvciAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIGZhbHNl Owo+PiArCX0KPj4gKwo+PiArCS8qCj4+ICsJICogVGhlIHNwZWMgc2F5cyB0aGF0IHRoZSBzb3Vy Y2Ugc2hvdWxkIHdhaXQgbWluaW11bSAxbXMgYW5kIG1heGltdW0KPj4gKwkgKiAxMDBtcyBhZnRl ciB3cml0aW5nIHRoZSBUTURTIGNvbmZpZyBmb3IgY2xvY2sgcmF0aW8uCj4+ICsJICovCj4+ICsJ dXNsZWVwX3JhbmdlKDEwMDAsIDEwMDAwMCk7Cj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICtF WFBPUlRfU1lNQk9MKGRybV9zY2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyk7Cj4gSGF2 aW5nIHNlcGFyYXRlIHNldC9jbGVhciBmdW5jdGlvbnMganVzdCBsZWFkcyB0byBkdXBsaWNhdGVk IGNvZGUgSU1PLgo+IEknZCBqdXN0IHBhc3MgdGhlIGRlc2lyZWQgc3RhdGUgYXMgYSBwYXJhbWV0 ZXIuCk9rLCBJIHdpbGwgbWFrZSBhIGNvbW1vbiBmdW5jdGlvbiBmb3IgYm90aCBzZXQvY2xlYXIs IGFuZCBwYXNzIHRoZSAKZW5hYmxlL2Rpc2FibGUgc3RhdGUKdG8gaXQgKHNpbWlsYXIgdG8gdGhh dCB3aGljaCBoYW5kbGVzIG1vbml0b3Igc2NyYW1ibGluZykKPiBBbmQgd2hhdCBJIHN1Z2dlc3Rl ZCBlYXJsaWVyIHdhcyB0byBldmVuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZSBzY3JhbWJsaW5nCj4g d3JpdGUgd2hpY2ggd291bGQgcmVkdWNlIHRoZSBpMmMgdHJhZmZpYyBmcm9tIDIgcmVhZCBhbmQg MiB3cml0ZXMgdG8KPiBqdXN0IDEgd3JpdGUuIEJ1dCBJIGNhbiBsaXZlIHdpdGggdGhlbSBiZWlu ZyBzZXBhcmF0ZSBhcyB3ZWxsLgpUaGFua3MuIEFjdHVhbGx5LCBpZiB5b3Ugc2VlIFYyLCB0aGlz IGZpcnN0IGltcGxlbWVudGF0aW9uIHdhcyBqdXN0IGFzIAp5b3Ugc3VnZ2VzdGVkLgpCdXQgdGhl cmUgd2FzIGEgcHJvYmxlbSBoZXJlLCBmZXcgbW9uaXRvcnMgc3VwcG9ydCBzY3JhbWJsaW5nIGF0 IGEgY2xvY2sgCmxvd2VyIHRoYW4KMzQwTWh6IHRvbywgaW4gdGhlc2UgY2FzZXMgd2Ugd29udCBz ZXQgdGhlIGhpZ2hfdG1kc19jbG9ja19yYXRpbyBidXQgCm9ubHkgc2V0IHRoZSBzY3JhbWJsaW5n LgpUaGlzIHdhcyBjb21tZW50IGZyb20gSm9zZSwgd2hpY2ggd2UgYWRkcmVzc2VkIGludG8gc3Bs aXR0aW5nIHRoaXMgaW50byAKdHdvIGZ1bmN0aW9ucywgd2hpY2ggZ2l2ZXMKbW9yZSBjb250cm9s IHRvIGNhbGxlciBmdW5jdGlvbiwgYnkgc2VsZWN0aW5nIHdoYXQgdGhleSB3YW50IHRvIHNldC4g YnV0IAp5ZWFoLCBjYW50IGJlYXQgdGhlIEkyQyB0cmFmZmljIG9wdGltaXphdGlvbi4KCi0gU2hh c2hhbmsKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+PiBpbmRleCA2ZDUzMDRlLi43ODYxODMwOCAxMDA2NDQK Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaAo+PiBAQCAtOTAsNiArOTAsMjAgQEAgZW51bSBzdWJwaXhlbF9vcmRl ciB7Cj4+ICAgCj4+ICAgfTsKPj4gICAKPj4gKy8qKgo+PiArICogc3RydWN0IGRybV9zY3JhbWJs aW5nOiBzaW5rJ3Mgc2NyYW1ibGluZyBzdXBwb3J0Lgo+PiArICovCj4+ICtzdHJ1Y3QgZHJtX3Nj cmFtYmxpbmcgewo+PiArCS8qKgo+PiArCSAqIEBzdXBwb3J0ZWQ6IHNjcmFtYmxpbmcgc3VwcG9y dGVkIGZvciByYXRlcyA+IDM0MCBNaHouCj4+ICsJICovCj4+ICsJYm9vbCBzdXBwb3J0ZWQ7Cj4+ ICsJLyoqCj4+ICsJICogQGxvd19yYXRlczogc2NyYW1ibGluZyBzdXBwb3J0ZWQgZm9yIHJhdGVz IDw9IDM0MCBNaHouCj4+ICsJICovCj4+ICsJYm9vbCBsb3dfcmF0ZXM7Cj4+ICt9Owo+PiArCj4+ ICAgLyoKPj4gICAgKiBzdHJ1Y3QgZHJtX3NjZGMgLSBJbmZvcm1hdGlvbiBhYm91dCBzY2RjIGNh cGFiaWxpdGllcyBvZiBhIEhETUkgMi4wIHNpbmsKPj4gICAgKgo+PiBAQCAtMTA1LDggKzExOSwx MyBAQCBzdHJ1Y3QgZHJtX3NjZGMgewo+PiAgIAkgKiBAcmVhZF9yZXF1ZXN0OiBzaW5rIGlzIGNh cGFibGUgb2YgZ2VuZXJhdGluZyBzY2RjIHJlYWQgcmVxdWVzdC4KPj4gICAJICovCj4+ICAgCWJv b2wgcmVhZF9yZXF1ZXN0Owo+PiArCS8qKgo+PiArCSAqIEBzY3JhbWJsaW5nOiBzaW5rJ3Mgc2Ny YW1ibGluZyBjYXBhYmlsaXRpZXMKPj4gKwkgKi8KPj4gKwlzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcg c2NyYW1ibGluZzsKPj4gICB9Owo+PiAgIAo+PiArCj4+ICAgLyoqCj4+ICAgICogc3RydWN0IGRy bV9oZG1pX2luZm8gLSBydW50aW1lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb25uZWN0ZWQgSERN SSBzaW5rCj4+ICAgICoKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmggYi9p bmNsdWRlL2RybS9kcm1fZWRpZC5oCj4+IGluZGV4IDQzZmIwYWMuLmQyNGM5NzQgMTAwNjQ0Cj4+ IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Vk aWQuaAo+PiBAQCAtNDYyLDUgKzQ2Miw5IEBAIHZvaWQgZHJtX2VkaWRfZ2V0X21vbml0b3JfbmFt ZShzdHJ1Y3QgZWRpZCAqZWRpZCwgY2hhciAqbmFtZSwKPj4gICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqZHJtX21vZGVfZmluZF9kbXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAJCQkJ CSAgIGludCBoc2l6ZSwgaW50IHZzaXplLCBpbnQgZnJlc2gsCj4+ICAgCQkJCQkgICBib29sIHJi KTsKPj4gLQo+PiArYm9vbCBkcm1fZW5hYmxlX3NjcmFtYmxpbmcoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKPj4gKwkJCQlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wg Zm9yY2UpOwo+PiArYm9vbCBkcm1fZGlzYWJsZV9zY3JhbWJsaW5nKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+ICsJCQkJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBib29s IGZvcmNlKTsKPj4gK2Jvb2wgZHJtX2NoZWNrX3NjcmFtYmxpbmdfc3RhdHVzKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlcik7Cj4+ICAgI2VuZGlmIC8qIF9fRFJNX0VESURfSF9fICovCj4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2Ry bV9zY2RjX2hlbHBlci5oCj4+IGluZGV4IDkzYjA3YmMuLmM1ZjIyMjkgMTAwNjQ0Cj4+IC0tLSBh L2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9z Y2RjX2hlbHBlci5oCj4+IEBAIC0xMjksNCArMTI5LDQ1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRy bV9zY2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4g ICAJcmV0dXJuIGRybV9zY2RjX3dyaXRlKGFkYXB0ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXplb2Yo dmFsdWUpKTsKPj4gICB9Cj4+ICAgCj4+ICsvKioKPj4gKyAqIGRybV9zY2RjX2VuYWJsZV9zY3Jh bWJsaW5nIC0gZW5hYmxlIHNjcmFtYmxpbmcKPj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBm b3IgRERDIGNoYW5uZWwKPj4gKyAqCj4+ICsgKiBXcml0ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIg U0NEQyBjaGFubmVsLCBhbmQgZW5hYmxlcyBzY3JhbWJsaW5nCj4+ICsgKiBSZXR1cm5zOgo+PiAr ICogVHJ1ZSBpZiBzY3JhbWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBlbmFibGVkLCBmYWxzZSBvdGhl cndpc2UuCj4+ICsgKi8KPj4gKwo+PiArYm9vbCBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyhz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+PiArCj4+ICsvKioKPj4gKyAqIGRybV9zY2Rj X2Rpc2FibGVfc2NyYW1ibGluZyAtIGRpc2FibGUgc2NyYW1ibGluZwo+PiArICogQGFkYXB0ZXI6 IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+PiArICoKPj4gKyAqIFdyaXRlIHRoZSBUTURT IGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5kIGRpc2FibGUgc2NyYW1ibGluZwo+PiArICog UmV0dXJuOiBUcnVlIGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1bGx5IGRpc2FibGVkLCBmYWxz ZSBvdGhlcndpc2UuCj4+ICsgKi8KPj4gK2Jvb2wgZHJtX3NjZGNfZGlzYWJsZV9zY3JhbWJsaW5n KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+ICsKPj4gKy8qKgo+PiArICogZHJtX3Nj ZGNfc2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbyAtIHNldCBUTURTIGNsb2NrIHJhdGlvCj4+ICsg KiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4+ICsgKgo+PiArICogV3Jp dGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5kIHNldHMgVE1EUwo+PiAr ICogY2xvY2sgcmF0aW8gdG8gMS80MAo+PiArICogUmV0dXJuczoKPj4gKyAqIFRydWUgaWYgd3Jp dGUgaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgo+PiArICovCj4+ICtib29sIGRybV9z Y2RjX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy KTsKPj4gKwo+PiArLyoqCj4+ICsgKiBkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0 aW8gLSBjbGVhciBUTURTIGNsb2NrIHJhdGlvCj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIg Zm9yIEREQyBjaGFubmVsCj4+ICsgKgo+PiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVy IFNDREMgY2hhbm5lbCwgYW5kIHNldHMgVE1EUwo+PiArICogY2xvY2sgcmF0aW8gYmFjayB0byAx LzEwIChmcm9tIDEvNDApCj4+ICsgKiBSZXR1cm5zOgo+PiArICogVHJ1ZSBpZiB3cml0ZSBpcyBz dWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuCj4+ICsgKi8KPj4gK2Jvb2wgZHJtX3NjZGNfY2xl YXJfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+ ICAgI2VuZGlmCj4+IC0tIAo+PiAxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==