From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 4/6] drm: scrambling support in drm layer Date: Wed, 22 Feb 2017 19:24:24 +0200 Message-ID: <20170222172424.GL31595@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-5-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1487769511-17359-5-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Shashank Sharma 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 T24gV2VkLCBGZWIgMjIsIDIwMTcgYXQgMDY6NDg6MjlQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+IEhETUkgMi4wIHNwZWMgbWFuZGF0ZXMgc2NyYW1ibGluZyBmb3IgbW9kZXMgd2l0 aCBwaXhlbCBjbG9jayBoaWdoZXIKPiB0aGFuIDM0MCBNSHouIFRoaXMgcGF0Y2ggYWRkcyBmZXcg bmV3IGZ1bmN0aW9ucyBpbiBkcm0gbGF5ZXIgZm9yCj4gY29yZSBkcml2ZXJzIHRvIGVuYWJsZS9k aXNhYmxlIHNjcmFtYmxpbmcuCj4gCj4gVGhpcyBwYXRjaCBhZGRzOgo+IC0gQSBmdW5jdGlvbiB0 byBkZXRlY3Qgc2NyYW1ibGluZyBzdXBwb3J0IHBhcnNpbmcgSEYtVlNEQgo+IC0gQSBmdW5jdGlv biB0byBjaGVjayBzY3JhbWJsaW5nIHN0YXR1cyBydW50aW1lIHVzaW5nIFNDREMgcmVhZC4KPiAt IFR3byBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc2NyYW1ibGluZyB1c2luZyBTQ0RDIHJl YWQvd3JpdGUuCj4gLSBGZXcgbmV3IGJvb2xzIHRvIHJlZmxlY3Qgc2NyYW1ibGluZyBzdXBwb3J0 IGFuZCBzdGF0dXMuCj4gCj4gVjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBUaGll cnJ5LCBWaWxsZSBhbmQgRGhpbmFrYXJhbgo+IFRoaWVycnk6Cj4gLSBNaHogLT4gTUh6IGluIGNv bW1lbnRzIGFuZCBjb21taXQgbWVzc2FnZS4KPiAtIGkyYyAtPiBJMkMgaW4gY29tbWVudHMuCj4g LSBGaXggdGhlIGZ1bmN0aW9uIGRvY3VtZW50YXRpb25zLCBrZWVwIGluIHN5bmMgd2l0aCBkcm1f c2NkY19oZWxwZXIuYwo+IC0gZHJtX2Nvbm5lY3RvciAtPiBEUk0gY29ubmVjdG9yLgo+IC0gQ3Jl YXRlIHN0cnVjdHVyZSBmb3IgU0NEQywgYW5kIHNhdmUgc2NyYW1ibGluZyBzdGF0dXMgaW5zaWRl IHRoYXQsCj4gICBpbiBhIHN1Yi1zdHJ1Y3R1cmUuCj4gLSBDYWxsIHRoaXMgc3ViLXN0cnVjdHVy ZSBzY3JhbWJsaW5nIGluc3RlYWQgb2Ygc2NyX2luZm8uCj4gLSBsb3dfcmF0ZXMgLT4gbG93X2Ns b2NrcyBpbiBzY3JhbWJsaW5nIHN0YXR1cyBzdHJ1Y3R1cmUuCj4gLSBTdG9yZSB0aGUgcmV0dXJu IHZhbHVlIG9mIEkyQyByZWFkL3dyaXRlIGFuZCBwcmludCB0aGUgZXJyb3IgY29kZQo+ICAgaW4g Y2FzZSBvZiBmYWlsdXJlLgo+IAo+IFRoaWVycnkgYW5kIFZpbGxlOgo+IC0gTW92ZSB0aGUgc2Ny YW1ibGluZyBlbmFibGUvZGlzYWJsZS9xdWVyeSBmdW5jdGlvbnMgaW4KPiAgIGRybV9zY2RjX2hl bHBlci5jIGZpbGUuCj4gLSBBZGQgZHJtX1NDREMgcHJlZml4IGZvciB0aGUgZnVuY3Rpb25zLgo+ IC0gT3B0aW1pemUgdGhlIHJldHVybiBzdGF0ZW1lbnQgZnJvbSBmdW5jdGlvbgo+ICAgZHJtX1ND RENfY2hlY2tfc2NyYW1ibGluZ19zdGF0dXMuCj4gCj4gVmlsbGU6Cj4gLSBEb250IG92ZXJ3cml0 ZSBzYXZlZCBtYXggVE1EUyBjbG9jayB2YWx1ZSBpbiBkaXNwbGF5X2luZm8sCj4gICBpZiBtYXgg dG1kcyBjbG9jayBmcm9tIEhGLVZTREIgaXMgbm90ID4gMzQwIE1Iei4KPiAtIGRybV9kZXRlY3Rf aGRtaV9zY3JhbWJsaW5nIC0+IGRybV9wYXJzZV9oZG1pX2ZvcnVtX3ZzZGIuCj4gLSBSZW1vdmUg ZHluYW1pYyB0cmFja2luZyBvZiBTQ0RDIHN0YXR1cyBmcm9tIERSTSBsYXllciwgZm9yY2UgYm9v bC4KPiAtIFByb2dyYW0gY2xvY2sgcmF0aW8gYml0IGFsc28sIHdoaWxlIGVuYWJsaW5nIHNjcmFt YmxpbmcuCj4gCj4gRGhpbmFrYXJhbjoKPiAtIEFkZCBhIGNvbW1lbnQgYWJvdXQgKjUwMDAgd2hp bGUgZXh0cmFjdGluZyBtYXggY2xvY2sgc3VwcG9ydGVkLgo+IAo+IFYzOiBBZGRyZXNzZWQgcmV2 aWV3IGNvbW1lbnRzIGZyb20gSm9zZS4KPiAtIENyZWF0ZSBzZXBhcmF0ZSBmdW5jdGlvbnMgdG8g ZW5hYmxlIHNjcmFtYmxpbmcgYW5kIHRvIHNldCBUTURTCj4gICBjbG9jay9jaGFyYWN0ZXIgcmF0 ZSByYXRpby4KPiAKPiBWNDogUmViYXNlCj4gCj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hh cm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2VkaWQuYyAgICAgICAgfCAgMzMgKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jIHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICB8ICAxOSArKysrKwo+ICBpbmNs dWRlL2RybS9kcm1fZWRpZC5oICAgICAgICAgICAgfCAgIDYgKy0KPiAgaW5jbHVkZS9kcm0vZHJt X3NjZGNfaGVscGVyLmggICAgIHwgIDQxICsrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAy NjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IGluZGV4 IDYzYjc5YmUuLjFlMThjMGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlk LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IEBAIC0zNyw2ICszNyw3IEBA Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rl ci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kaXNwbGF5aWQuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fc2NkY19oZWxwZXIuaD4KPiAgCj4gICNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgo+ ICAKPiBAQCAtMzgxMSwxMyArMzgxMiw0MyBAQCBlbnVtIGhkbWlfcXVhbnRpemF0aW9uX3Jhbmdl Cj4gIHN0YXRpYyB2b2lkIGRybV9wYXJzZV9oZG1pX2ZvcnVtX3ZzZGIoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJCSBjb25zdCB1OCAqaGZfdnNkYikKPiAgewo+IC0Jc3Ry dWN0IGRybV9oZG1pX2luZm8gKmhkbWkgPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaTsK PiArCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaXNwbGF5ID0gJmNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvOwo+ICsJc3RydWN0IGRybV9oZG1pX2luZm8gKmhkbWkgPSAmZGlzcGxheS0+aGRtaTsK PiAgCj4gIAlpZiAoaGZfdnNkYls2XSAmIDB4ODApIHsKPiAgCQloZG1pLT5zY2RjLnN1cHBvcnRl ZCA9IHRydWU7Cj4gIAkJaWYgKGhmX3ZzZGJbNl0gJiAweDQwKQo+ICAJCQloZG1pLT5zY2RjLnJl YWRfcmVxdWVzdCA9IHRydWU7Cj4gIAl9Cj4gKwo+ICsJLyoKPiArCSAqIEFsbCBIRE1JIDIuMCBt b25pdG9ycyBtdXN0IHN1cHBvcnQgc2NyYW1ibGluZyBhdCByYXRlcyA+IDM0MCBNSHouCj4gKwkg KiBBbmQgYXMgcGVyIHRoZSBzcGVjLCB0aHJlZSBmYWN0b3JzIGNvbmZpcm0gdGhpczoKPiArCSAq ICogQXZhaWxhYmlsaXR5IG9mIGEgSEYtVlNEQiBibG9jayBpbiBFRElEIChjaGVjaykKPiArCSAq ICogTm9uIHplcm8gTWF4X1RNRFNfQ2hhcl9SYXRlIGZpbGVkIGluIEhGLVZTREIgKGxldCdzIGNo ZWNrKQo+ICsJICogKiBTQ0RDIHN1cHBvcnQgYXZhaWxhYmxlIChsZXQncyBjaGVjaykKPiArCSAq IExldHMgY2hlY2sgaXQgb3V0Lgo+ICsJICovCj4gKwo+ICsJaWYgKGhmX3ZzZGJbNV0pIHsKPiAr CQkvKiBtYXggY2xvY2sgaXMgNTAwMCBLSHogdGltZXMgYmxvY2sgdmFsdWUgKi8KPiArCQl1MzIg bWF4X3RtZHNfY2xvY2sgPSBoZl92c2RiWzVdICogNTAwMDsKPiArCQlzdHJ1Y3QgZHJtX3NjZGMg KnNjZGMgPSAmaGRtaS0+c2NkYzsKPiArCj4gKwkJaWYgKG1heF90bWRzX2Nsb2NrID4gMzQwMDAw KSB7Cj4gKwkJCWRpc3BsYXktPm1heF90bWRzX2Nsb2NrID0gbWF4X3RtZHNfY2xvY2s7Cj4gKwkJ CURSTV9ERUJVR19LTVMoIkhGLVZTREI6IG1heCBUTURTIGNsb2NrICVkIGtIelxuIiwKPiArCQkJ CWRpc3BsYXktPm1heF90bWRzX2Nsb2NrKTsKPiArCQl9Cj4gKwo+ICsJCWlmIChzY2RjLT5zdXBw b3J0ZWQpIHsKPiArCQkJc2NkYy0+c2NyYW1ibGluZy5zdXBwb3J0ZWQgPSB0cnVlOwo+ICsKPiAr CQkJLyogRmV3IHNpbmtzIHN1cHBvcnQgc2NyYW1ibGluZyBmb3IgY2xva3MgPCAzNDBNICovCj4g KwkJCWlmICgoaGZfdnNkYls2XSAmIDB4OCkpCj4gKwkJCQlzY2RjLT5zY3JhbWJsaW5nLmxvd19y YXRlcyA9IHRydWU7Cj4gKwkJfQo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBkcm1fcGFy c2VfaGRtaV9kZWVwX2NvbG9yX2luZm8oc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gaW5kZXggZmUwZTEyMS4uYzBjZjgyYiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPiBAQCAtMjIsOCArMjIsMTAgQEAKPiAgICov Cj4gIAo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXku aD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICAKPiAgLyoqCj4gICAqIERPQzogc2NkYyBoZWxwZXJzCj4gQEAgLTEwOSwz ICsxMTEsMTY1IEBAIHNzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwdGVyLCB1OCBvZmZzZXQsCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo ZHJtX3NjZGNfd3JpdGUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX2NoZWNrX3NjcmFtYmxp bmdfc3RhdHVzIC0gd2hhdCBpcyBzdGF0dXMgb2Ygc2NyYW1ibGluZz8KPiArICogQGFkYXB0ZXI6 IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ICsgKgo+ICsgKiBSZWFkcyB0aGUgc2NyYW1i bGVyIHN0YXR1cyBvdmVyIFNDREMsIGFuZCBjaGVja3MgdGhlCj4gKyAqIHNjcmFtYmxpbmcgc3Rh dHVzLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVlIGlmIHRoZSBzY3JhbWJsaW5nIGlz IGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS4KPiArICovCj4gKwo+ICtib29sIGRybV9zY2RjX2No ZWNrX3NjcmFtYmxpbmdfc3RhdHVzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPiArewo+ ICsJdTggc3RhdHVzOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBkcm1fc2NkY19yZWFkYihh ZGFwdGVyLCBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMsICZzdGF0dXMpOwo+ICsJaWYgKHJldCA8IDAp IHsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHNjcmFtYmxpbmcgc3RhdHVzLCBlcnJv ciAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHN0 YXR1cyAmIFNDRENfU0NSQU1CTElOR19TVEFUVVM7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1f c2NkY19jaGVja19zY3JhbWJsaW5nX3N0YXR1cyk7CgpzL2NoZWNrL2dldC8gd291bGQgbWFrZSBt b3JlIHNlbnNlIHRvIG1lLgoKPiArCj4gKy8qKgo+ICsgKiBkcm1fc2NkY19lbmFibGVfc2NyYW1i bGluZyAtIGVuYWJsZSBzY3JhbWJsaW5nCj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3Ig RERDIGNoYW5uZWwKPiArICoKPiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMg Y2hhbm5lbCwgYW5kIGVuYWJsZXMgc2NyYW1ibGluZwo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVl IGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS4K PiArICovCj4gKwo+ICtib29sIGRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlcikKPiArewo+ICsJdTggY29uZmlnOwo+ICsJaW50IHJldDsKPiArCj4g KwlyZXQgPSBkcm1fc2NkY19yZWFkYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCAmY29uZmln KTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCB0bWRz IGNvbmZpZywgZXJyPSVkXG4iLCByZXQpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4g Kwljb25maWcgfD0gU0NEQ19TQ1JBTUJMSU5HX0VOQUJMRTsKPiArCj4gKwlyZXQgPSBkcm1fc2Nk Y193cml0ZWIoYWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgY29uZmlnKTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHNjcmFtYmxpbmcsIGVycm9y ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1 ZTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKTsKPiAr Cj4gKy8qKgo+ICsgKiBkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcgLSBkaXNhYmxlIHNjcmFt YmxpbmcKPiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ICsgKgo+ ICsgKiBXcml0ZSB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBkaXNhYmxl IHNjcmFtYmxpbmcKPiArICogUmV0dXJuOiBUcnVlIGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1 bGx5IGRpc2FibGVkLCBmYWxzZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtib29sIGRybV9zY2RjX2Rp c2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gK3sKPiArCXU4 IGNvbmZpZzsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRl ciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURS TV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycm9yICVkXG4iLCByZXQpOwo+ ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwljb25maWcgJj0gflNDRENfU0NSQU1CTElO R19FTkFCTEU7Cj4gKwo+ICsJcmV0ID0gZHJtX3NjZGNfd3JpdGViKGFkYXB0ZXIsIFNDRENfVE1E U19DT05GSUcsIGNvbmZpZyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURSTV9FUlJPUigiRmFp bGVkIHRvIGVuYWJsZSBzY3JhbWJsaW5nLCBlcnJvciAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX3Nl dF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gLSBzZXQgVE1EUyBjbG9jayByYXRpbwo+ICsgKiBAYWRh cHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4gKyAqCj4gKyAqIFdyaXRlcyB0aGUg VE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBzZXRzIFRNRFMKPiArICogY2xvY2sg cmF0aW8gdG8gMS80MAo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVlIGlmIHdyaXRlIGlzIHN1Y2Nl c3NmdWwsIGZhbHNlIG90aGVyd2lzZS4KPiArICovCj4gK2Jvb2wgZHJtX3NjZGNfc2V0X2hpZ2hf dG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gK3sKPiArCXU4 IGNvbmZpZzsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRl ciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURS TV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0KTsKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJY29uZmlnIHw9IFNDRENfVE1EU19CSVRfQ0xP Q0tfUkFUSU9fQllfNDA7Cj4gKwo+ICsJcmV0ID0gZHJtX3NjZGNfd3JpdGViKGFkYXB0ZXIsIFND RENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURSTV9FUlJP UigiRmFpbGVkIHRvIHNldCBUTURTIGNsb2NrIHJhdGlvLCBlcnJvciAlZFxuIiwgcmV0KTsKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBzcGVjIHNheXMgdGhh dCB0aGUgc291cmNlIHNob3VsZCB3YWl0IG1pbmltdW0gMW1zIGFuZCBtYXhpbXVtCj4gKwkgKiAx MDBtcyBhZnRlciB3cml0aW5nIHRoZSBUTURTIGNvbmZpZyBmb3IgY2xvY2sgcmF0aW8uCj4gKwkg Ki8KPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAxMDAwMDApOwoKQWxsb3dpbmcgdGhlIG1heCB0byBi ZSAxMDBtcyBoZXJlIHNlZW1zIG92ZXJseSBnZW5lcm91cyB0byBtZS4gSW4gYnkKYWxsb3dpbmcg MTAwbXMgd2UgbWlnaHQgYmUgdmlvbGF0aW5nIHRoZSBzcGVjIHNpbmNlIGl0IHdpbGwgdGFrZSBh IGJpdApvZiBhZGRpdG9uYWwgdGltZSBiZWZvcmUgdGhlIGRyaXZlciB3aWxsIGVuYWJsZSB0aGUg b3V0cHV0LiBTbyBJJ2QganVzdAp1c2Ugc29tZXRoaW5nIGxpa2UgMS0yIG1zZWMuCgo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Ns b2NrX3JhdGlvKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xv Y2tfcmF0aW8gLSBjbGVhciBUTURTIGNsb2NrIHJhdGlvCj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRh cHRlciBmb3IgRERDIGNoYW5uZWwKPiArICoKPiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBv dmVyIFNDREMgY2hhbm5lbCwgYW5kIHNldHMgVE1EUwo+ICsgKiBjbG9jayByYXRpbyBiYWNrIHRv IDEvMTAgKGZyb20gMS80MCkKPiArICogUmV0dXJuczoKPiArICogVHJ1ZSBpZiB3cml0ZSBpcyBz dWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtib29sIGRybV9zY2RjX2NsZWFy X2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gK3sK PiArCXU4IGNvbmZpZzsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIo YWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0 KTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJY29uZmlnICY9IH5TQ0RDX1RNRFNf QklUX0NMT0NLX1JBVElPX0JZXzQwOwo+ICsKPiArCXJldCA9IGRybV9zY2RjX3dyaXRlYihhZGFw dGVyLCBTQ0RDX1RNRFNfQ09ORklHLCBjb25maWcpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlE Uk1fRVJST1IoIkZhaWxlZCB0byBjbGVhciBUTURTIGNsb2NrIHJhdGlvLCBlcnJvciAlZFxuIiwg cmV0KTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBzcGVj IHNheXMgdGhhdCB0aGUgc291cmNlIHNob3VsZCB3YWl0IG1pbmltdW0gMW1zIGFuZCBtYXhpbXVt Cj4gKwkgKiAxMDBtcyBhZnRlciB3cml0aW5nIHRoZSBUTURTIGNvbmZpZyBmb3IgY2xvY2sgcmF0 aW8uCj4gKwkgKi8KPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAxMDAwMDApOwo+ICsJcmV0dXJuIHRy dWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tf cmF0aW8pOwoKSGF2aW5nIHNlcGFyYXRlIHNldC9jbGVhciBmdW5jdGlvbnMganVzdCBsZWFkcyB0 byBkdXBsaWNhdGVkIGNvZGUgSU1PLgpJJ2QganVzdCBwYXNzIHRoZSBkZXNpcmVkIHN0YXRlIGFz IGEgcGFyYW1ldGVyLgoKQW5kIHdoYXQgSSBzdWdnZXN0ZWQgZWFybGllciB3YXMgdG8gZXZlbiBj b21iaW5lIHRoaXMgd2l0aCB0aGUgc2NyYW1ibGluZwp3cml0ZSB3aGljaCB3b3VsZCByZWR1Y2Ug dGhlIGkyYyB0cmFmZmljIGZyb20gMiByZWFkIGFuZCAyIHdyaXRlcyB0bwpqdXN0IDEgd3JpdGUu IEJ1dCBJIGNhbiBsaXZlIHdpdGggdGhlbSBiZWluZyBzZXBhcmF0ZSBhcyB3ZWxsLgoKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nv bm5lY3Rvci5oCj4gaW5kZXggNmQ1MzA0ZS4uNzg2MTgzMDggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o Cj4gQEAgLTkwLDYgKzkwLDIwIEBAIGVudW0gc3VicGl4ZWxfb3JkZXIgewo+ICAKPiAgfTsKPiAg Cj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX3NjcmFtYmxpbmc6IHNpbmsncyBzY3JhbWJsaW5nIHN1 cHBvcnQuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcgewo+ICsJLyoqCj4gKwkgKiBA c3VwcG9ydGVkOiBzY3JhbWJsaW5nIHN1cHBvcnRlZCBmb3IgcmF0ZXMgPiAzNDAgTWh6Lgo+ICsJ ICovCj4gKwlib29sIHN1cHBvcnRlZDsKPiArCS8qKgo+ICsJICogQGxvd19yYXRlczogc2NyYW1i bGluZyBzdXBwb3J0ZWQgZm9yIHJhdGVzIDw9IDM0MCBNaHouCj4gKwkgKi8KPiArCWJvb2wgbG93 X3JhdGVzOwo+ICt9Owo+ICsKPiAgLyoKPiAgICogc3RydWN0IGRybV9zY2RjIC0gSW5mb3JtYXRp b24gYWJvdXQgc2NkYyBjYXBhYmlsaXRpZXMgb2YgYSBIRE1JIDIuMCBzaW5rCj4gICAqCj4gQEAg LTEwNSw4ICsxMTksMTMgQEAgc3RydWN0IGRybV9zY2RjIHsKPiAgCSAqIEByZWFkX3JlcXVlc3Q6 IHNpbmsgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIHNjZGMgcmVhZCByZXF1ZXN0Lgo+ICAJICov Cj4gIAlib29sIHJlYWRfcmVxdWVzdDsKPiArCS8qKgo+ICsJICogQHNjcmFtYmxpbmc6IHNpbmsn cyBzY3JhbWJsaW5nIGNhcGFiaWxpdGllcwo+ICsJICovCj4gKwlzdHJ1Y3QgZHJtX3NjcmFtYmxp bmcgc2NyYW1ibGluZzsKPiAgfTsKPiAgCj4gKwo+ICAvKioKPiAgICogc3RydWN0IGRybV9oZG1p X2luZm8gLSBydW50aW1lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb25uZWN0ZWQgSERNSSBzaW5r Cj4gICAqCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmggYi9pbmNsdWRlL2Ry bS9kcm1fZWRpZC5oCj4gaW5kZXggNDNmYjBhYy4uZDI0Yzk3NCAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL2RybS9kcm1fZWRpZC5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaAo+IEBAIC00 NjIsNSArNDYyLDkgQEAgdm9pZCBkcm1fZWRpZF9nZXRfbW9uaXRvcl9uYW1lKHN0cnVjdCBlZGlk ICplZGlkLCBjaGFyICpuYW1lLAo+ICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVf ZmluZF9kbXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCQkgICBpbnQgaHNpemUsIGlu dCB2c2l6ZSwgaW50IGZyZXNoLAo+ICAJCQkJCSAgIGJvb2wgcmIpOwo+IC0KPiArYm9vbCBkcm1f ZW5hYmxlX3NjcmFtYmxpbmcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJ CXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBmb3JjZSk7Cj4gK2Jvb2wgZHJtX2Rp c2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkJ c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBib29sIGZvcmNlKTsKPiArYm9vbCBkcm1fY2hl Y2tfc2NyYW1ibGluZ19zdGF0dXMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKPiAgI2Vu ZGlmIC8qIF9fRFJNX0VESURfSF9fICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9z Y2RjX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBpbmRleCA5M2Iw N2JjLi5jNWYyMjI5IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5o Cj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBAQCAtMTI5LDQgKzEyOSw0 NSBAQCBzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY193cml0ZWIoc3RydWN0IGkyY19hZGFwdGVy ICphZGFwdGVyLCB1OCBvZmZzZXQsCj4gIAlyZXR1cm4gZHJtX3NjZGNfd3JpdGUoYWRhcHRlciwg b2Zmc2V0LCAmdmFsdWUsIHNpemVvZih2YWx1ZSkpOwo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJt X3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcgLSBlbmFibGUgc2NyYW1ibGluZwo+ICsgKiBAYWRhcHRl cjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4gKyAqCj4gKyAqIFdyaXRlcyB0aGUgVE1E UyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBlbmFibGVzIHNjcmFtYmxpbmcKPiArICog UmV0dXJuczoKPiArICogVHJ1ZSBpZiBzY3JhbWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBlbmFibGVk LCBmYWxzZSBvdGhlcndpc2UuCj4gKyAqLwo+ICsKPiArYm9vbCBkcm1fc2NkY19lbmFibGVfc2Ny YW1ibGluZyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+ICsKPiArLyoqCj4gKyAqIGRy bV9zY2RjX2Rpc2FibGVfc2NyYW1ibGluZyAtIGRpc2FibGUgc2NyYW1ibGluZwo+ICsgKiBAYWRh cHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4gKyAqCj4gKyAqIFdyaXRlIHRoZSBU TURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5kIGRpc2FibGUgc2NyYW1ibGluZwo+ICsg KiBSZXR1cm46IFRydWUgaWYgc2NyYW1ibGluZyBpcyBzdWNjZXNzZnVsbHkgZGlzYWJsZWQsIGZh bHNlIG90aGVyd2lzZS4KPiArICovCj4gK2Jvb2wgZHJtX3NjZGNfZGlzYWJsZV9zY3JhbWJsaW5n KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4gKwo+ICsvKioKPiArICogZHJtX3NjZGNf c2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbyAtIHNldCBUTURTIGNsb2NrIHJhdGlvCj4gKyAqIEBh ZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERDIGNoYW5uZWwKPiArICoKPiArICogV3JpdGVzIHRo ZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5kIHNldHMgVE1EUwo+ICsgKiBjbG9j ayByYXRpbyB0byAxLzQwCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRydWUgaWYgd3JpdGUgaXMgc3Vj Y2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgo+ICsgKi8KPiArYm9vbCBkcm1fc2NkY19zZXRfaGln aF90bWRzX2Nsb2NrX3JhdGlvKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4gKwo+ICsv KioKPiArICogZHJtX3NjZGNfY2xlYXJfaGlnaF90bWRzX2Nsb2NrX3JhdGlvIC0gY2xlYXIgVE1E UyBjbG9jayByYXRpbwo+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVs Cj4gKyAqCj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFu ZCBzZXRzIFRNRFMKPiArICogY2xvY2sgcmF0aW8gYmFjayB0byAxLzEwIChmcm9tIDEvNDApCj4g KyAqIFJldHVybnM6Cj4gKyAqIFRydWUgaWYgd3JpdGUgaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3Ro ZXJ3aXNlLgo+ICsgKi8KPiArYm9vbCBkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0 aW8oc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKPiAgI2VuZGlmCj4gLS0gCj4gMS45LjEK Ci0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=