From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v2 4/6] drm: scrambling support in drm layer Date: Wed, 8 Feb 2017 18:31:27 +0530 Message-ID: <19f19d3f-fb9f-3c9d-94aa-da5111ec0b55@intel.com> References: <1486389566-28613-1-git-send-email-shashank.sharma@intel.com> <1486389566-28613-5-git-send-email-shashank.sharma@intel.com> <1a4bbd16-9238-df63-15dc-c48f22287eb8@synopsys.com> <3b7a6dc5-a868-4867-b884-e5eb02bdac6c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com, treding@nvidia.com Cc: daniel.vetter@intel.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiAyLzgvMjAxNyA1OjAxIFBNLCBKb3NlIEFicmV1IHdyb3Rl Ogo+IEhpIFNoYXNoYW5rLAo+Cj4KPgo+IE9uIDA3LTAyLTIwMTcgMTY6MTksIFNoYXJtYSwgU2hh c2hhbmsgd3JvdGU6Cj4+IFJlZ2FyZHMKPj4KPj4gU2hhc2hhbmsKPj4KPj4KPj4gT24gMi83LzIw MTcgNDo0NCBQTSwgSm9zZSBBYnJldSB3cm90ZToKPj4+IEhpIFNoYXNoYW5rLAo+Pj4KPj4+Cj4+ Pgo+Pj4gT24gMDYtMDItMjAxNyAxMzo1OSwgU2hhc2hhbmsgU2hhcm1hIHdyb3RlOgo+Pj4+IEhE TUkgMi4wIHNwZWMgbWFuZGF0ZXMgc2NyYW1ibGluZyBmb3IgbW9kZXMgd2l0aCBwaXhlbCBjbG9j awo+Pj4+IGhpZ2hlcgo+Pj4+IHRoYW4gMzQwIE1Iei4gVGhpcyBwYXRjaCBhZGRzIGZldyBuZXcg ZnVuY3Rpb25zIGluIGRybSBsYXllciBmb3IKPj4+PiBjb3JlIGRyaXZlcnMgdG8gZW5hYmxlL2Rp c2FibGUgc2NyYW1ibGluZy4KPj4+Pgo+Pj4+IFRoaXMgcGF0Y2ggYWRkczoKPj4+PiAtIEEgZnVu Y3Rpb24gdG8gZGV0ZWN0IHNjcmFtYmxpbmcgc3VwcG9ydCBwYXJzaW5nIEhGLVZTREIKPj4+PiAt IEEgZnVuY3Rpb24gdG8gY2hlY2sgc2NyYW1ibGluZyBzdGF0dXMgcnVudGltZSB1c2luZyBTQ0RD IHJlYWQuCj4+Pj4gLSBUd28gZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIHNjcmFtYmxpbmcg dXNpbmcgU0NEQwo+Pj4+IHJlYWQvd3JpdGUuCj4+Pj4gLSBGZXcgbmV3IGJvb2xzIHRvIHJlZmxl Y3Qgc2NyYW1ibGluZyBzdXBwb3J0IGFuZCBzdGF0dXMuCj4+Pj4KPj4+PiBWMjogQWRkcmVzc2Vk IHJldmlldyBjb21tZW50cyBmcm9tIFRoaWVycnksIFZpbGxlIGFuZCBEaGluYWthcmFuCj4+Pj4g VGhpZXJyeToKPj4+PiAtIE1oeiAtPiBNSHogaW4gY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdl Lgo+Pj4+IC0gaTJjIC0+IEkyQyBpbiBjb21tZW50cy4KPj4+PiAtIEZpeCB0aGUgZnVuY3Rpb24g ZG9jdW1lbnRhdGlvbnMsIGtlZXAgaW4gc3luYyB3aXRoCj4+Pj4gZHJtX3NjZGNfaGVscGVyLmMK Pj4+PiAtIGRybV9jb25uZWN0b3IgLT4gRFJNIGNvbm5lY3Rvci4KPj4+PiAtIENyZWF0ZSBzdHJ1 Y3R1cmUgZm9yIFNDREMsIGFuZCBzYXZlIHNjcmFtYmxpbmcgc3RhdHVzCj4+Pj4gaW5zaWRlIHRo YXQsCj4+Pj4gICAgIGluIGEgc3ViLXN0cnVjdHVyZS4KPj4+PiAtIENhbGwgdGhpcyBzdWItc3Ry dWN0dXJlIHNjcmFtYmxpbmcgaW5zdGVhZCBvZiBzY3JfaW5mby4KPj4+PiAtIGxvd19yYXRlcyAt PiBsb3dfY2xvY2tzIGluIHNjcmFtYmxpbmcgc3RhdHVzIHN0cnVjdHVyZS4KPj4+PiAtIFN0b3Jl IHRoZSByZXR1cm4gdmFsdWUgb2YgSTJDIHJlYWQvd3JpdGUgYW5kIHByaW50IHRoZQo+Pj4+IGVy cm9yIGNvZGUKPj4+PiAgICAgICBpbiBjYXNlIG9mIGZhaWx1cmUuCj4+Pj4KPj4+PiBUaGllcnJ5 IGFuZCBWaWxsZToKPj4+PiAtIE1vdmUgdGhlIHNjcmFtYmxpbmcgZW5hYmxlL2Rpc2FibGUvcXVl cnkgZnVuY3Rpb25zIGluCj4+Pj4gICAgIGRybV9zY2RjX2hlbHBlci5jIGZpbGUuCj4+Pj4gLSBB ZGQgZHJtX1NDREMgcHJlZml4IGZvciB0aGUgZnVuY3Rpb25zLgo+Pj4+IC0gT3B0aW1pemUgdGhl IHJldHVybiBzdGF0ZW1lbnQgZnJvbSBmdW5jdGlvbgo+Pj4+ICAgICBkcm1fU0NEQ19jaGVja19z Y3JhbWJsaW5nX3N0YXR1cy4KPj4+Pgo+Pj4+IFZpbGxlOgo+Pj4+IC0gRG9udCBvdmVyd3JpdGUg c2F2ZWQgbWF4IFRNRFMgY2xvY2sgdmFsdWUgaW4gZGlzcGxheV9pbmZvLAo+Pj4+ICAgICBpZiBt YXggdG1kcyBjbG9jayBmcm9tIEhGLVZTREIgaXMgbm90ID4gMzQwIE1Iei4KPj4+PiAtIGRybV9k ZXRlY3RfaGRtaV9zY3JhbWJsaW5nIC0+IGRybV9wYXJzZV9oZG1pX2ZvcnVtX3ZzZGIuCj4+Pj4g LSBSZW1vdmUgZHluYW1pYyB0cmFja2luZyBvZiBTQ0RDIHN0YXR1cyBmcm9tIERSTSBsYXllciwK Pj4+PiBmb3JjZSBib29sLgo+Pj4+IC0gUHJvZ3JhbSBjbG9jayByYXRpbyBiaXQgYWxzbywgd2hp bGUgZW5hYmxpbmcgc2NyYW1ibGluZy4KPj4+Pgo+Pj4+IERoaW5ha2FyYW46Cj4+Pj4gICAgLSBB ZGQgYSBjb21tZW50IGFib3V0ICo1MDAwIHdoaWxlIGV4dHJhY3RpbmcgbWF4IGNsb2NrCj4+Pj4g c3VwcG9ydGVkLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFz aGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9k cm1fZWRpZC5jICAgICAgICB8ICAzMyArKysrKysrKysrKystCj4+Pj4gICAgZHJpdmVycy9ncHUv ZHJtL2RybV9zY2RjX2hlbHBlci5jIHwgMTAwCj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4+PiAgICBpbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggICAgICAg fCAgMTkgKysrKysrKysKPj4+PiAgICBpbmNsdWRlL2RybS9kcm1fZWRpZC5oICAgICAgICAgICAg fCAgIDYgKystCj4+Pj4gICAgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmggICAgIHwgIDIw ICsrKysrKysrCj4+Pj4gICAgNSBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Vk aWQuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4+PiBpbmRleCBhNDg3Yjgw Li5kYzg1ZWI5IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPj4+PiBAQCAtMzcsNiArMzcsNyBA QAo+Pj4+ICAgICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPj4+PiAgICAjaW5jbHVkZSA8ZHJt L2RybV9lbmNvZGVyLmg+Cj4+Pj4gICAgI2luY2x1ZGUgPGRybS9kcm1fZGlzcGxheWlkLmg+Cj4+ Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4+Pj4gICAgICAjZGVmaW5lIHZl cnNpb25fZ3JlYXRlcihlZGlkLCBtYWosIG1pbikgXAo+Pj4+ICAgICAgICAoKChlZGlkKS0+dmVy c2lvbiA+IChtYWopKSB8fCBcCj4+Pj4gQEAgLTM4MDUsMTMgKzM4MDYsNDMgQEAgZW51bSBoZG1p X3F1YW50aXphdGlvbl9yYW5nZQo+Pj4+ICAgIHN0YXRpYyB2b2lkIGRybV9wYXJzZV9oZG1pX2Zv cnVtX3ZzZGIoc3RydWN0IGRybV9jb25uZWN0b3IKPj4+PiAqY29ubmVjdG9yLAo+Pj4+ICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdTggKmhmX3ZzZGIpCj4+Pj4gICAgewo+Pj4+IC0gICAgc3Ry dWN0IGRybV9oZG1pX2luZm8gKmhkbWkgPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaTsK Pj4+PiArICAgIHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaXNwbGF5ID0KPj4+PiAmY29ubmVj dG9yLT5kaXNwbGF5X2luZm87Cj4+Pj4gKyAgICBzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9 ICZkaXNwbGF5LT5oZG1pOwo+Pj4+ICAgICAgICAgIGlmIChoZl92c2RiWzZdICYgMHg4MCkgewo+ Pj4+ICAgICAgICAgICAgaGRtaS0+c2NkYy5zdXBwb3J0ZWQgPSB0cnVlOwo+Pj4+ICAgICAgICAg ICAgaWYgKGhmX3ZzZGJbNl0gJiAweDQwKQo+Pj4+ICAgICAgICAgICAgICAgIGhkbWktPnNjZGMu cmVhZF9yZXF1ZXN0ID0gdHJ1ZTsKPj4+PiAgICAgICAgfQo+Pj4+ICsKPj4+PiArICAgIC8qCj4+ Pj4gKyAgICAgKiBBbGwgSERNSSAyLjAgbW9uaXRvcnMgbXVzdCBzdXBwb3J0IHNjcmFtYmxpbmcg YXQKPj4+PiByYXRlcyA+IDM0MCBNSHouCj4+Pj4gKyAgICAgKiBBbmQgYXMgcGVyIHRoZSBzcGVj LCB0aHJlZSBmYWN0b3JzIGNvbmZpcm0gdGhpczoKPj4+PiArICAgICAqICogQXZhaWxhYmlsaXR5 IG9mIGEgSEYtVlNEQiBibG9jayBpbiBFRElEIChjaGVjaykKPj4+PiArICAgICAqICogTm9uIHpl cm8gTWF4X1RNRFNfQ2hhcl9SYXRlIGZpbGVkIGluIEhGLVZTREIgKGxldCdzCj4+Pj4gY2hlY2sp Cj4+Pj4gKyAgICAgKiAqIFNDREMgc3VwcG9ydCBhdmFpbGFibGUgKGxldCdzIGNoZWNrKQo+Pj4+ ICsgICAgICogTGV0cyBjaGVjayBpdCBvdXQuCj4+Pj4gKyAgICAgKi8KPj4+PiArCj4+Pj4gKyAg ICBpZiAoaGZfdnNkYls1XSkgewo+Pj4+ICsgICAgICAgIC8qIG1heCBjbG9jayBpcyA1MDAwIEtI eiB0aW1lcyBibG9jayB2YWx1ZSAqLwo+Pj4+ICsgICAgICAgIHUzMiBtYXhfdG1kc19jbG9jayA9 IGhmX3ZzZGJbNV0gKiA1MDAwOwo+Pj4+ICsgICAgICAgIHN0cnVjdCBkcm1fc2NkYyAqc2NkYyA9 ICZoZG1pLT5zY2RjOwo+Pj4+ICsKPj4+PiArICAgICAgICBpZiAobWF4X3RtZHNfY2xvY2sgPiAz NDAwMDApIHsKPj4+PiArICAgICAgICAgICAgZGlzcGxheS0+bWF4X3RtZHNfY2xvY2sgPSBtYXhf dG1kc19jbG9jazsKPj4+PiArICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiSEYtVlNEQjogbWF4 IFRNRFMgY2xvY2sgJWQga0h6XG4iLAo+Pj4+ICsgICAgICAgICAgICAgICAgZGlzcGxheS0+bWF4 X3RtZHNfY2xvY2spOwo+Pj4+ICsgICAgICAgIH0KPj4+PiArCj4+Pj4gKyAgICAgICAgaWYgKHNj ZGMtPnN1cHBvcnRlZCkgewo+Pj4+ICsgICAgICAgICAgICBzY2RjLT5zY3JhbWJsaW5nLnN1cHBv cnRlZCA9IHRydWU7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgICAgICAvKiBGZXcgc2lua3Mgc3VwcG9y dCBzY3JhbWJsaW5nIGZvciBjbG9rcyA8IDM0ME0gKi8KPj4+PiArICAgICAgICAgICAgaWYgKCho Zl92c2RiWzZdICYgMHg4KSkKPj4+IEJJVCgzKSA/Cj4+IFllcywgYml0IDMgaXMgTFRFXzM0ME1j c2Nfc2NyYW1ibGUsIGluZGljYXRpbmcgdGhhdCB0aGUgc2luawo+PiBzdXBwb3J0IHNjcmFtYmxp bmcgYXQgcmF0ZXMgYmVsb3cgMzQwTWh6IHRvbywgaXNuJ3QgaXQgPwo+Pj4+ICsgICAgICAgICAg ICAgICAgc2NkYy0+c2NyYW1ibGluZy5sb3dfcmF0ZXMgPSB0cnVlOwo+Pj4+ICsgICAgICAgIH0K Pj4+PiArICAgIH0KPj4+PiAgICB9Cj4+Pj4gICAgICBzdGF0aWMgdm9pZCBkcm1fcGFyc2VfaGRt aV9kZWVwX2NvbG9yX2luZm8oc3RydWN0Cj4+Pj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+IGluZGV4IGZlMGUxMjEuLjMx MWY2MmUgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5j Cj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4+Pj4gQEAgLTIy LDggKzIyLDEwIEBACj4+Pj4gICAgICovCj4+Pj4gICAgICAjaW5jbHVkZSA8bGludXgvc2xhYi5o Pgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4+PiAgICAgICNpbmNsdWRlIDxkcm0v ZHJtX3NjZGNfaGVscGVyLmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pj4+ICAgICAg LyoqCj4+Pj4gICAgICogRE9DOiBzY2RjIGhlbHBlcnMKPj4+PiBAQCAtMTA5LDMgKzExMSwxMDEg QEAgc3NpemVfdCBkcm1fc2NkY193cml0ZShzdHJ1Y3QKPj4+PiBpMmNfYWRhcHRlciAqYWRhcHRl ciwgdTggb2Zmc2V0LAo+Pj4+ICAgICAgICByZXR1cm4gZXJyOwo+Pj4+ICAgIH0KPj4+PiAgICBF WFBPUlRfU1lNQk9MKGRybV9zY2RjX3dyaXRlKTsKPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBk cm1fc2NkY19jaGVja19zY3JhbWJsaW5nX3N0YXR1cyAtIHdoYXQgaXMgc3RhdHVzIG9mCj4+Pj4g c2NyYW1ibGluZz8KPj4+PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5l bAo+Pj4+ICsgKgo+Pj4+ICsgKiBSZWFkcyB0aGUgc2NyYW1ibGVyIHN0YXR1cyBvdmVyIFNDREMs IGFuZCBjaGVja3MgdGhlCj4+Pj4gKyAqIHNjcmFtYmxpbmcgc3RhdHVzLgo+Pj4+ICsgKgo+Pj4+ ICsgKiBSZXR1cm5zOgo+Pj4+ICsgKiBUcnVlIGlmIHRoZSBzY3JhbWJsaW5nIGlzIGVuYWJsZWQs IGZhbHNlIG90aGVyd2lzZS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICtib29sIGRybV9zY2RjX2No ZWNrX3NjcmFtYmxpbmdfc3RhdHVzKHN0cnVjdCBpMmNfYWRhcHRlcgo+Pj4+ICphZGFwdGVyKQo+ Pj4+ICt7Cj4+Pj4gKyAgICB1OCBzdGF0dXM7Cj4+Pj4gKyAgICBpbnQgcmV0Owo+Pj4+ICsKPj4+ PiArICAgIHJldCA9IGRybV9zY2RjX3JlYWRiKGFkYXB0ZXIsIFNDRENfU0NSQU1CTEVSX1NUQVRV UywKPj4+PiAmc3RhdHVzKTsKPj4+PiArICAgIGlmIChyZXQgPCAwKSB7Cj4+Pj4gKyAgICAgICAg RFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCBzY3JhbWJsaW5nIHN0YXR1cywgZXJyb3IKPj4+PiAl ZFxuIiwgcmV0KTsKPj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4gKyAgICB9Cj4+Pj4g Kwo+Pj4+ICsgICAgcmV0dXJuIHN0YXR1cyAmIFNDRENfU0NSQU1CTElOR19TVEFUVVM7Cj4+PiAi cmV0dXJuIChzdGF0dXMgJiBTQ0RDX1NDUkFNQkxJTkdfU1RBVFVTKSA+IDA7IiA/Cj4+IEkgdGhp bmsgSmFuaSBoYXMgbWFkZSBhbiBhZ3JlZW1lbnQgYWxyZWFkeSBvbiB0aGlzLgo+Pj4+ICt9Cj4+ Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfY2hlY2tfc2NyYW1ibGluZ19zdGF0dXMpOwo+Pj4+ ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nIC0gZW5hYmxl IHNjcmFtYmxpbmcKPj4+PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5l bAo+Pj4+ICsgKgo+Pj4+ICsgKiBXcml0ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIgU0NEQyBjaGFu bmVsLCBhbmQgZW5hYmxlcwo+Pj4+IHNjcmFtYmxpbmcKPj4+PiArICogUmV0dXJuczoKPj4+PiAr ICogVHJ1ZSBpZiBzY3JhbWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBlbmFibGVkLCBmYWxzZSBvdGhl cndpc2UuCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArYm9vbCBkcm1fc2NkY19lbmFibGVfc2NyYW1i bGluZyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4+Pj4gK3sKPj4+PiArICAgIHU4IGNv bmZpZzsKPj4+PiArICAgIGludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0ID0gZHJtX3NjZGNf cmVhZGIoYWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4+Pj4gKyAgICBpZiAo cmV0IDwgMCkgewo+Pj4+ICsgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBj b25maWcsIGVycj0lZFxuIiwgcmV0KTsKPj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4g KyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgY29uZmlnIHw9IChTQ0RDX1NDUkFNQkxJTkdfRU5BQkxF IHwKPj4+PiBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwKTsKPj4+IEhtbSwgSSBkaWQg bm90IHJlYWQgdGhlIHNwZWMgZXhoYXVzdGl2ZWx5IGJ1dCBzaG91bGRuJ3QgdGhlIGNsb2NrCj4+ PiByYXRpbyBieSA0MCBvbmx5IGJlIHNldCBmb3IgZGF0YSByYXRlcyBhYm92ZSAzLjRHYnBzPwo+ PiBZb3UgYXJlIHJpZ2h0LCBmb3IgZmV3IG1vbml0b3JzIHNjcmFtYmxpbmcgY2FuIGJlIGRvbmUg YmVsb3cKPj4gMzQwIE1IeiB0b28sIGFuZCBJIGFtIG5vdCBzdXJlIGlmIHdlIHNob3VsZAo+PiBz ZXQgdGhlIGNsb2NrIHJhdGlvIGJpdCBvbiB0aGF0LiBMZXQgbWUgY2hlY2sgdGhlIHNwZWMgZm9y Cj4+IHRob3NlIGNhc2VzLgpZb3Ugd2VyZSByaWdodCBoZXJlLCBJIHdpbGwgYWRkIGFub3RoZXIg ZnVuY3Rpb24ganVzdCB0byBhZGQgMS80MCBUTURTCmNsb2NrIHN0dWZmLCBhbmQgaW4gdGhpcyBm dW5jdGlvbiwgd2Ugd291bGQganVzdCBlbmFibGUgc2NyYW1ibGluZy4KCi0gU2hhc2hhbmsKPj4+ PiArCj4+Pj4gKyAgICByZXQgPSBkcm1fc2NkY193cml0ZWIoYWRhcHRlciwgU0NEQ19UTURTX0NP TkZJRywgY29uZmlnKTsKPj4+PiArICAgIGlmIChyZXQgPCAwKSB7Cj4+Pj4gKyAgICAgICAgRFJN X0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHNjcmFtYmxpbmcsIGVycm9yICVkXG4iLAo+Pj4+IHJl dCk7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiAr ICAgIC8qCj4+Pj4gKyAgICAgKiBUaGUgc3BlYyBzYXlzIHRoYXQgdGhlIHNvdXJjZSBzaG91bGQg d2FpdCBtaW4gMW1zIGFuZAo+Pj4+IG1heCAxMDBtcwo+Pj4+ICsgICAgICogYWZ0ZXIgd3JpdGlu ZyB0aGUgVE1EUyBjb25maWcgZm9yIGNsb2NrIHJhdGlvLiBMZXRzCj4+Pj4gb2JleSB0aGUgc3Bl Yy4KPj4+PiArICAgICAqLwo+Pj4+ICsgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDEwMDAwMCk7Cj4+ PiBTaGFsbCB3ZSByZWFkIGhlcmUgdGhlIGNsb2NrX2RldGVjdGVkIHN0YXR1cyB0byBtYWtlIHN1 cmUgdGhlCj4+PiBzaW5rIGlzIG9rYXk/Cj4+IFRoaXMgaXMgb3B0aW9uYWwgaW4gc3BlYywgc28g SSBhbSBhZnJhaWQgZmV3IG1vbml0b3JzIHdvbnQKPj4gaW1wbGVtZW50IHRoaXMsIGFuZCB3ZSB3 aWxsIHVubmVjZXNzYXJ5IGFkZAo+PiBsb3Qgb2Ygbm9pc2UgaW4gY29kZS4gRG8geW91IHRoaW5r IHNvID8KPiBIbW0sIG9rLiBJdCB3YXMgdGhlIHNhZmVzdCB0aGluZyB0byBkbyBidXQgaWYgd2Ug aGF2ZSBtb25pdG9ycwo+IHdpdGggc2NyYW1ibGluZyBzdXBwb3J0IGFuZCB3aXRob3V0IHRoaXMg dGhlbiBpdHMgYmV0dGVyIG5vdCB0by4KPgo+IEJlc3QgcmVnYXJkcywKPiBKb3NlIE1pZ3VlbCBB YnJldQo+Cj4+IC0gU2hhc2hhbmsKPj4+PiArICAgIHJldHVybiB0cnVlOwo+Pj4+ICt9Cj4+Pj4g K0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcpOwo+Pj4+ICsKPj4+PiAr LyoqCj4+Pj4gKyAqIGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGluZyAtIGRpc2FibGUgc2NyYW1i bGluZwo+Pj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4+Pj4g KyAqCj4+Pj4gKyAqIFdyaXRlIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5k IGRpc2FibGUKPj4+PiBzY3JhbWJsaW5nCj4+Pj4gKyAqIFJldHVybjogVHJ1ZSBpZiBzY3JhbWJs aW5nIGlzIHN1Y2Nlc3NmdWxseSBkaXNhYmxlZCwKPj4+PiBmYWxzZSBvdGhlcndpc2UuCj4+Pj4g KyAqLwo+Pj4+ICtib29sIGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXIpCj4+Pj4gK3sKPj4+PiArICAgIHU4IGNvbmZpZzsKPj4+PiArICAgIGlu dCByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRlciwgU0NE Q19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4+Pj4gKyAgICBpZiAocmV0IDwgMCkgewo+Pj4+ICsg ICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycm9yICVkXG4i LAo+Pj4+IHJldCk7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgICAgfQo+Pj4+ ICsKPj4+PiArICAgIGNvbmZpZyAmPSB+KFNDRENfU0NSQU1CTElOR19FTkFCTEUgfAo+Pj4+IFND RENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDApOwo+Pj4+ICsKPj4+PiArICAgIHJldCA9IGRy bV9zY2RjX3dyaXRlYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCBjb25maWcpOwo+Pj4+ICsg ICAgaWYgKHJldCA8IDApIHsKPj4+PiArICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFi bGUgc2NyYW1ibGluZywgZXJyb3IgJWRcbiIsCj4+Pj4gcmV0KTsKPj4+PiArICAgICAgICByZXR1 cm4gZmFsc2U7Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgLyoKPj4+PiArICAgICAqIFRo ZSBzcGVjIHNheXMgdGhhdCB0aGUgc291cmNlIHNob3VsZCB3YWl0IG1pbiAxbXMgYW5kCj4+Pj4g bWF4IDEwMG1zCj4+Pj4gKyAgICAgKiBhZnRlciB3cml0aW5nIHRoZSBUTURTIGNvbmZpZyBmb3Ig Y2xvY2sgcmF0aW8uIExldHMKPj4+PiBvYmV5IHRoZSBzcGVjLgo+Pj4+ICsgICAgICovCj4+Pj4g KyAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMTAwMDAwKTsKPj4+PiArICAgIHJldHVybiB0cnVlOwo+ Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfZGlzYWJsZV9zY3JhbWJsaW5nKTsK Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+Pj4gYi9pbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPj4+PiBpbmRleCA2ZDUzMDRlLi43ODYxODMwOCAxMDA2 NDQKPj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPj4+PiArKysgYi9pbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPj4+PiBAQCAtOTAsNiArOTAsMjAgQEAgZW51bSBzdWJw aXhlbF9vcmRlciB7Cj4+Pj4gICAgICB9Owo+Pj4+ICAgICsvKioKPj4+PiArICogc3RydWN0IGRy bV9zY3JhbWJsaW5nOiBzaW5rJ3Mgc2NyYW1ibGluZyBzdXBwb3J0Lgo+Pj4+ICsgKi8KPj4+PiAr c3RydWN0IGRybV9zY3JhbWJsaW5nIHsKPj4+PiArICAgIC8qKgo+Pj4+ICsgICAgICogQHN1cHBv cnRlZDogc2NyYW1ibGluZyBzdXBwb3J0ZWQgZm9yIHJhdGVzID4gMzQwIE1oei4KPj4+PiArICAg ICAqLwo+Pj4+ICsgICAgYm9vbCBzdXBwb3J0ZWQ7Cj4+Pj4gKyAgICAvKioKPj4+PiArICAgICAq IEBsb3dfcmF0ZXM6IHNjcmFtYmxpbmcgc3VwcG9ydGVkIGZvciByYXRlcyA8PSAzNDAgTWh6Lgo+ Pj4+ICsgICAgICovCj4+Pj4gKyAgICBib29sIGxvd19yYXRlczsKPj4+PiArfTsKPj4+PiArCj4+ Pj4gICAgLyoKPj4+PiAgICAgKiBzdHJ1Y3QgZHJtX3NjZGMgLSBJbmZvcm1hdGlvbiBhYm91dCBz Y2RjIGNhcGFiaWxpdGllcyBvZgo+Pj4+IGEgSERNSSAyLjAgc2luawo+Pj4+ICAgICAqCj4+Pj4g QEAgLTEwNSw4ICsxMTksMTMgQEAgc3RydWN0IGRybV9zY2RjIHsKPj4+PiAgICAgICAgICogQHJl YWRfcmVxdWVzdDogc2luayBpcyBjYXBhYmxlIG9mIGdlbmVyYXRpbmcgc2NkYwo+Pj4+IHJlYWQg cmVxdWVzdC4KPj4+PiAgICAgICAgICovCj4+Pj4gICAgICAgIGJvb2wgcmVhZF9yZXF1ZXN0Owo+ Pj4+ICsgICAgLyoqCj4+Pj4gKyAgICAgKiBAc2NyYW1ibGluZzogc2luaydzIHNjcmFtYmxpbmcg Y2FwYWJpbGl0aWVzCj4+Pj4gKyAgICAgKi8KPj4+PiArICAgIHN0cnVjdCBkcm1fc2NyYW1ibGlu ZyBzY3JhbWJsaW5nOwo+Pj4+ICAgIH07Cj4+Pj4gICAgKwo+Pj4+ICAgIC8qKgo+Pj4+ICAgICAq IHN0cnVjdCBkcm1faGRtaV9pbmZvIC0gcnVudGltZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKPj4+ PiBjb25uZWN0ZWQgSERNSSBzaW5rCj4+Pj4gICAgICoKPj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX2VkaWQuaCBiL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4+PiBpbmRleCA0M2Zi MGFjLi5kMjRjOTc0IDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4+ PiArKysgYi9pbmNsdWRlL2RybS9kcm1fZWRpZC5oCj4+Pj4gQEAgLTQ2Miw1ICs0NjIsOSBAQCB2 b2lkIGRybV9lZGlkX2dldF9tb25pdG9yX25hbWUoc3RydWN0Cj4+Pj4gZWRpZCAqZWRpZCwgY2hh ciAqbmFtZSwKPj4+PiAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZmluZF9k bXQoc3RydWN0Cj4+Pj4gZHJtX2RldmljZSAqZGV2LAo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGhzaXplLCBpbnQgdnNpemUsIGludCBmcmVzaCwKPj4+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgcmIpOwo+Pj4+IC0KPj4+PiArYm9vbCBkcm1fZW5hYmxlX3NjcmFt Ymxpbmcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4+PiArICAgICAgICAgICAg ICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBmb3JjZSk7Cj4+Pj4gK2Jvb2wg ZHJtX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ Pj4+ICsgICAgICAgICAgICAgICAgc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBib29sIGZv cmNlKTsKPj4+PiArYm9vbCBkcm1fY2hlY2tfc2NyYW1ibGluZ19zdGF0dXMoc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyKTsKPj4+PiAgICAjZW5kaWYgLyogX19EUk1fRURJRF9IX18gKi8KPj4+ PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPj4+PiBiL2luY2x1 ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4+Pj4gaW5kZXggOTNiMDdiYy4uZGM3MjdhNSAxMDA2 NDQKPj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+Pj4+ICsrKyBiL2lu Y2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4+Pj4gQEAgLTEyOSw0ICsxMjksMjQgQEAgc3Rh dGljIGlubGluZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVjdAo+Pj4+IGkyY19hZGFwdGVyICph ZGFwdGVyLCB1OCBvZmZzZXQsCj4+Pj4gICAgICAgIHJldHVybiBkcm1fc2NkY193cml0ZShhZGFw dGVyLCBvZmZzZXQsICZ2YWx1ZSwKPj4+PiBzaXplb2YodmFsdWUpKTsKPj4+PiAgICB9Cj4+Pj4g ICAgKy8qKgo+Pj4+ICsgKiBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyAtIGVuYWJsZSBzY3Jh bWJsaW5nCj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERDIGNoYW5uZWwKPj4+ PiArICoKPj4+PiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwg YW5kIGVuYWJsZXMKPj4+PiBzY3JhbWJsaW5nCj4+Pj4gKyAqIFJldHVybnM6Cj4+Pj4gKyAqIFRy dWUgaWYgc2NyYW1ibGluZyBpcyBzdWNjZXNzZnVsbHkgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNl Lgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gK2Jvb2wgZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmco c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBk cm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcgLSBkaXNhYmxlIHNjcmFtYmxpbmcKPj4+PiArICog QGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+Pj4+ICsgKgo+Pj4+ICsgKiBX cml0ZSB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBkaXNhYmxlCj4+Pj4g c2NyYW1ibGluZwo+Pj4+ICsgKiBSZXR1cm46IFRydWUgaWYgc2NyYW1ibGluZyBpcyBzdWNjZXNz ZnVsbHkgZGlzYWJsZWQsCj4+Pj4gZmFsc2Ugb3RoZXJ3aXNlLgo+Pj4+ICsgKi8KPj4+PiArYm9v bCBkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy KTsKPj4+PiArCj4+Pj4gICAgI2VuZGlmCj4+PiBCZXN0IHJlZ2FyZHMsCj4+PiBKb3NlIE1pZ3Vl bCBBYnJldQo+Pj4KPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=