From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v3 05/40] misc/mei/hdcp: Notifier chain for mei cldev state change Date: Wed, 16 May 2018 20:24:06 +0530 Message-ID: <2a411ff9-dcc2-c536-1bd9-02ca7c8d35cd@intel.com> References: <1522763873-23041-1-git-send-email-ramalingam.c@intel.com> <1522763873-23041-6-git-send-email-ramalingam.c@intel.com> <20180403153042.GX3881@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180403153042.GX3881@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, rodrigo.vivi@intel.com, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org CgpPbiBUdWVzZGF5IDAzIEFwcmlsIDIwMTggMDk6MDAgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gT24gVHVlLCBBcHIgMDMsIDIwMTggYXQgMDc6Mjc6MThQTSArMDUzMCwgUmFtYWxpbmdhbSBD IHdyb3RlOgo+PiBOb3RpZmllciBDaGFpbiBpcyBkZWZpbmVkIHRvIGluZm9ybSBhbGwgaXRzIGNs aWVudHMgYWJvdXQgdGhlIG1laQo+PiBjbGllbnQgZGV2aWNlIHN0YXRlIGNoYW5nZS4gUm91dGlu ZSBpcyBkZWZpbmVkIGZvciB0aGUgY2xpZW50cyB0bwo+PiByZWdpc3RlciBhbmQgdW5yZWdpc3Rl ciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBvbiBzdGF0ZSBjaGFuZ2UuCj4+Cj4+IHYyOgo+PiAgICBS ZWJhc2VkLgo+PiB2MzoKPj4gICAgTm90aWZpZXIgY2hhaW4gaXMgYWRvcHRlZCBmb3IgY2xkZXYg c3RhdGUgdXBkYXRlIFtUb21hc10KPj4KPj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxy YW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IEZvciBtYW5hZ2luZyBpbnRlcmFjdGlvbnMgYmV0d2Vl biBtdWx0aXBsZSBkcml2ZXJzIG5vdGlmaWVyIGNoYWlucyBhcmUKPiBmYWlybHkgcHJvYmxlbWF0 aWMuIFRoZSBtYWluIHJlYXNvbiBpcyB0aGUgbG9ja2luZyBlbWJlZGRlZCBpbiB0aGUKPiBub3Rp ZmllciBjaGFpbi4gVG8gbWFrZSB0aGluZ3Mgc2FmZSwgdGhhdCBsb2NrIG11c3QgYmUgaGVsZCBl dmVyeXRpbWUgd2UKPiBhZGQvcmVtb3ZlIGFueSBwYXJ0IG9mIHRoZSBsaW5rLCBhbmQgd2hlbiBj YWxsaW5nIGFueSBjYWxsYmFjay4gVXN1YWxseQo+IHRoYXQgbWVhbnMgeW91IGdldCBhIG5lYXQg ZGVhZGxvY2sgc29vbmVyIG9yIGxhdGVyLCBiZWNhdXNlIHRoZQo+IGxvYWQvdW5sb2FkIGNvZGUg aGFzIGludmVyc2UgcGF0aHMgY29tcGFyZWQgdG8gbm9ybWFsIG9wZXJhdGlvbi4KPgo+IE5vdGlm aWVycyBhbHNvIG5vdCBub3QgcHJvdmlkZSBhIGNsZWFuIHdheSB0byBoYW5kbGUgc3VzcGVuZC9y ZXN1bWUKPiBvcmRlcmluZy4KUmVjb3JkaW5nIHRoZSBJUkMgZGlzY3Vzc2lvbiBoZXJlOgoKQXMg RGFuaWVsIFZldHRlciBzdWdnZXN0ZWQsIHdpdGggbm90aWZpZXJzIHRvIG1laSBjbGllbnQgZGV2 aWNlIGJpbmRpbmcgCnN0YXR1cywgSSBoYXZlIHRlc3RlZAp0aGUgSTkxNSBhbmQgbWVpX2hkY3Ag bW9kdWxlcyBhcyBpbmJ1aWxkIGFuZCBhcyBtb2R1bGVzIGF0IHN1c3BlbmQgYW5kIApyZXN1bWUg b2YgdGhlbS4KCkR1cmluZyB0aGUgZXhwZXJpbWVudCwgQ09ORklHX1BST1ZFX0xPQ0tJTkcgd2Fz IGVuYWJsZWQuIE5vIGlzc3VlIHdhcyAKb2JzZXJ2ZWQgZHVlIHRvIHRoZQp1c2VjYXNlIG9mIHRo ZSBub3RpZmllciBoZXJlLiBOb3RpZmllciB3YXMgdXNlZCBoZXJlIGp1c3QgdG8gaW5mb3JtIHRo ZSAKSTkxNSB0aGF0IG1laSBjbGllbnQgZGV2aWNlIGlzIG5vIG1vcmUuClNvIHRoYXQgSTkxNSB3 aWxsIHN0b3AgYW55IG9uZ29pbmcgSERDUDIuMiBwcm90ZWN0aW9uIGFuZCByZWplY3QgYW55IApm dXJ0aGVyIHJlcXVlc3QuCgpIZW5jZSBQbGFubmluZyB0byBjb250aW51ZSB3aXRoIHNhbWUgc2hh cGUgb2YgdGhlIHBhdGNoIG9uIHY0LiBJZiBhbnkgCmVycm9uZW91cyBzY2VuYXJpbyBpcyBkZXRl Y3RlZAp3ZSB3aWxsIHdvcmsgb24gdGhlIGFsdGVybmF0ZSBzb2x1dGlvbi4KCi0tUmFtCj4KPiBU aGVyZSdzIHR3byBwYXJ0cyB0byBkbyB0aGlzIHByb3Blcmx5Lgo+Cj4gMS4gRmluZGluZyB0aGUg b3RoZXIgZHJpdmVyLiBNdWx0aS1wYXJ0IGRyaXZlcnMgYXJlIGFzc2VtYmxlZCBub3dhZGF5cwo+ IHVzaW5nIHRoZSBjb21wb25lbnQgZnJhbWV3b3JrLiBXZSdyZSB1c2luZyB0aGF0IGFscmVhZHkg dG8gbWFuYWdlIHRoZQo+IGludGVyYWN0aW9uIGJldHdlZW4gZHJtL2k5MTUgYW5kIHNuZC1oZGEu IElmIG5vdCBhbGwgY29tcG9uZW50cyBhcmUgcmVhZHkKPiB5ZXQsIHRoZW4gdGhlIGRyaXZlciBs b2FkIHNlcXVlbmNlIG11c3QgYmUgYWJvcnRlZCBieSByZXR1cm5pbmcKPiAtRVBST0JFX0RFRkVS LiBUaGF0J3MgZ29pbmcgdG8gYmUgbG90cyBvZiBmdW4sIHNpbmNlIGZvciB0aGUgbWVpL2k5MTUK PiBpbnRlcmFjdGlvbiBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGk5MTUgdGhhdCBuZWVkcyB0 byBhYm9ydCBhbmQgcmV0cnkKPiB0aGUgZHJpdmVyIGxvYWQuIEJ1dCB3ZSBkbyBDSSB0ZXN0IGFs bCB0aGUgYWJvcnQgcG9pbnRzIGluIG91ciBkcml2ZXIKPiBsb2FkLCBzbyBzaG91bGQgd29yayB3 ZWxsLgo+Cj4gMi4gSGFuZGxpbmcgdGhlIG9yZGVyaW5nIHJlc3RyaWN0aW9ucyBmb3Igc3VzcGVu ZC9yZXN1bWUuIEZvciBpOTE1L3NuZC1oZGEKPiB3ZSB1c2VkIGEgZWFybHlfcmVzdW1lL2xhdGVf c3VzcGVuZCBjYWxsYmFjayB0cmlja2VyeSwgYnV0IHRoYXQgZG9lc24ndAo+IHJlYWxseSBzY2Fs ZSB0byBtdWx0aXBsZSBsZXZlbHMuIFNpbmNlIHdlJ3ZlIGRvbmUgdGhhdCBkZXZpY2VfbGluayBo YXMKPiBiZWVuIGFkZGVkLiBBcyBhIGJvbnVzIGRldmljZV9saW5rIGNhbiBhbHNvIGVuc3VyZSB0 aGF0IG5vdCBvbmx5Cj4gc3VzcGVuZC9yZXN1bWUgKGluY2x1ZGluZyBydW50aW1lIHN1c3BlbmQv cmVzdW1lKSBpcyBvcmRlcmVkIGNvcnJlY3RseSwKPiBidXQgYWxzbyB0aGF0IGRyaXZlciBiaW5k L3VuYmluZCB3b3JrcyBjb3JyZWN0bHkuIFN0aWxsIG5lZWRzIHRoZQo+IGNvbXBvbmVudCBzdHVm ZiBhbmQgaW5pdGlhbCAtRVBST0JFX0RFRkVSLCBidXQgd2lsbCBhbGwgbGVhc3QgbWFrZSBzdXJl Cj4gd2UnIG9ubHkgcmVwcm9iZSBvbmNlIG1vcmUuIFNlZSBkZXZpY2VfbGlua19hZGQgKyBkb2Nz IGluIGRldmljZV9saW5rLnJzdC4KPgo+IE9uZSB0aGluZyBJIGRpZG4ndCBjaGVjayBpcyB3aGV0 aGVyIHdlIHdhbnQgdGhlIGRldmljZSBsaW5rZSB0byBhbHNvCj4gbWFuYWdlIHJ1bnRpbWUgcG0g Zm9yIHVzLiBJdCB3b3VsZCBtZWFuIHRoYXQgd2Uga2VlcCB0aGUgTUUgYXdha2UgYXMgbG9uZwo+ IGFzIGFueXRoaW5nIGlzIHVzaW5nIHRoZSBncHUgKGFueSBkaXNwbGF5IG9uIG9yIGFueSByZW5k ZXJpbmcgaGFwcGVuaW5nKS4KPiBUaGF0IG1pZ2h0IGJlIHRvbyBtdWNoLCBidXQgY291bGQgYWxz byBiZSB0aGF0IGl0IHdvbid0IG1hdHRlciAoYW5kIHRoZW4KPiB1c2luZyBETF9GTEFHX1BNX1JV TlRJTUUgd291bGQgc2ltcGx5IG91ciBjb2RlKS4KPgo+IFdlIG1pZ2h0IGFsc28gbmVlZCB0byBj b252ZXJ0IHRoZSBpOTE1L3NuZC1oZGEgaW50ZXJhY3Rpb25zIHRvIGRldmljZV9saW5rCj4gZmly c3QsIHNpbmNlIHRoZSBlYXJseS9sYXRlX3Jlc3VtZS9zdXNwZW5kIGhhY2sgcHJvYmFibHkgZG9l c24ndCBpbnRlcmFjdAo+IHRvbyB3ZWxsIHdpdGggcHJvcGVyIGRldmljZV9saW5rcy4KPgo+IENo ZWVycywgRGFuaWVsCj4KPj4gLS0tCj4+ICAgZHJpdmVycy9taXNjL21laS9oZGNwL21laV9oZGNw LmMgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4gICBpbmNsdWRlL2xpbnV4 L21laV9oZGNwLmggICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPj4gICAyIGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWVpX2hkY3AuaAo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL21laS9oZGNwL21laV9oZGNwLmMgYi9kcml2 ZXJzL21pc2MvbWVpL2hkY3AvbWVpX2hkY3AuYwo+PiBpbmRleCBiMzM0NjE1NzI4YTcuLjI4MTFh MjVmOGM1NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9taXNjL21laS9oZGNwL21laV9oZGNwLmMK Pj4gKysrIGIvZHJpdmVycy9taXNjL21laS9oZGNwL21laV9oZGNwLmMKPj4gQEAgLTMxLDYgKzMx LDMyIEBACj4+ICAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gICAjaW5jbHVkZSA8bGludXgv dXVpZC5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9tZWlfY2xfYnVzLmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvbm90aWZpZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tZWlfaGRjcC5oPgo+PiArCj4+ ICtzdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChtZWlfY2xkZXZfbm90aWZpZXJfbGlzdCk7 Cj4+ICsKPj4gK3ZvaWQgbWVpX2NsZGV2X3N0YXRlX25vdGlmeV9jbGllbnRzKHN0cnVjdCBtZWlf Y2xfZGV2aWNlICpjbGRldiwgYm9vbCBlbmFibGVkKQo+PiArewo+PiArCWlmIChlbmFibGVkKQo+ PiArCQlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZtZWlfY2xkZXZfbm90aWZpZXJfbGlz dCwKPj4gKwkJCQkJICAgICBNRUlfQ0xERVZfRU5BQkxFRCwgY2xkZXYpOwo+PiArCWVsc2UKPj4g KwkJYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmbWVpX2NsZGV2X25vdGlmaWVyX2xpc3Qs Cj4+ICsJCQkJCSAgICAgTUVJX0NMREVWX0RJU0FCTEVELCBOVUxMKTsKPj4gK30KPj4gKwo+PiAr aW50IG1laV9jbGRldl9yZWdpc3Rlcl9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikK Pj4gK3sKPj4gKwlyZXR1cm4gYmxvY2tpbmdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJm1laV9j bGRldl9ub3RpZmllcl9saXN0LCBuYik7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChtZWlf Y2xkZXZfcmVnaXN0ZXJfbm90aWZ5KTsKPj4gKwo+PiAraW50IG1laV9jbGRldl91bnJlZ2lzdGVy X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQo+PiArewo+PiArCXJldHVybiBibG9j a2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZtZWlfY2xkZXZfbm90aWZpZXJfbGlzdCwg bmIpOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTF9HUEwobWVpX2NsZGV2X3VucmVnaXN0ZXJfbm90 aWZ5KTsKPj4gICAKPj4gICBzdGF0aWMgaW50IG1laV9oZGNwX3Byb2JlKHN0cnVjdCBtZWlfY2xf ZGV2aWNlICpjbGRldiwKPj4gICAJCQkgIGNvbnN0IHN0cnVjdCBtZWlfY2xfZGV2aWNlX2lkICpp ZCkKPj4gQEAgLTM4LDE0ICs2NCwxOCBAQCBzdGF0aWMgaW50IG1laV9oZGNwX3Byb2JlKHN0cnVj dCBtZWlfY2xfZGV2aWNlICpjbGRldiwKPj4gICAJaW50IHJldDsKPj4gICAKPj4gICAJcmV0ID0g bWVpX2NsZGV2X2VuYWJsZShjbGRldik7Cj4+IC0JaWYgKHJldCA8IDApCj4+ICsJaWYgKHJldCA8 IDApIHsKPj4gICAJCWRldl9lcnIoJmNsZGV2LT5kZXYsICJtZWlfY2xkZXZfZW5hYmxlIEZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiAgIAo+PiAtCXJldHVy biByZXQ7Cj4+ICsJbWVpX2NsZGV2X3N0YXRlX25vdGlmeV9jbGllbnRzKGNsZGV2LCB0cnVlKTsK Pj4gKwlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGludCBtZWlfaGRjcF9yZW1v dmUoc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2KQo+PiAgIHsKPj4gKwltZWlfY2xkZXZfc3Rh dGVfbm90aWZ5X2NsaWVudHMoY2xkZXYsIGZhbHNlKTsKPj4gICAJbWVpX2NsZGV2X3NldF9kcnZk YXRhKGNsZGV2LCBOVUxMKTsKPj4gICAJcmV0dXJuIG1laV9jbGRldl9kaXNhYmxlKGNsZGV2KTsK Pj4gICB9Cj4+IEBAIC03MSw0ICsxMDEsNCBAQCBtb2R1bGVfbWVpX2NsX2RyaXZlcihtZWlfaGRj cF9kcml2ZXIpOwo+PiAgIAo+PiAgIE1PRFVMRV9BVVRIT1IoIkludGVsIENvcnBvcmF0aW9uIik7 Cj4+ICAgTU9EVUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQTCIpOwo+PiAtTU9EVUxFX0RFU0NSSVBU SU9OKCJIRENQIik7Cj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1FSSBIRENQIik7Cj4+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L21laV9oZGNwLmggYi9pbmNsdWRlL2xpbnV4L21laV9oZGNw LmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zYjQ2YmVi ZGU3MTgKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L21laV9oZGNwLmgK Pj4gQEAgLTAsMCArMSw0OCBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwt Mi4wKyBPUiBCU0QtMy1DbGF1c2UpICovCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IMKpIDIwMTct MjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBj b3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwo+ PiArICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0 aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKPj4gKyAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQKPj4gKyAq IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBk b2N1bWVudGF0aW9uLCBhbmQKPj4gKyAqIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo b2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yCj4+ICsgKiBwdWJsaWNpdHkgcGVy dGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMs Cj4+ICsgKiB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMg bWFrZSBubyByZXByZXNlbnRhdGlvbnMKPj4gKyAqIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0 aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcwo+PiArICog aXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Lgo+PiArICoKPj4gKyAqIFRI RSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBU TyBUSElTIFNPRlRXQVJFLAo+PiArICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwo+PiArICogRVZFTlQgU0hBTEwg VEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNU IE9SCj4+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZF UiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKPj4gKyAqIERBVEEgT1IgUFJPRklUUywgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKPj4gKyAq IFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBVU0UgT1IgUEVSRk9STUFOQ0UKPj4gKyAqIE9GIFRISVMgU09GVFdBUkUuCj4+ICsgKgo+PiAr ICogQXV0aG9yczoKPj4gKyAqCVJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4K Pj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9MSU5VWF9NRUlfSERDUF9ICj4+ICsjZGVmaW5lIF9M SU5VWF9NRUlfSERDUF9ICj4+ICsKPj4gK2VudW0gbWVpX2NsZGV2X3N0YXRlIHsKPj4gKwlNRUlf Q0xERVZfRElTQUJMRUQsCj4+ICsJTUVJX0NMREVWX0VOQUJMRUQKPj4gK307Cj4+ICsKPj4gKyNp ZmRlZiBDT05GSUdfSU5URUxfTUVJX0hEQ1AKPj4gK2ludCBtZWlfY2xkZXZfcmVnaXN0ZXJfbm90 aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwo+PiAraW50IG1laV9jbGRldl91bnJlZ2lz dGVyX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKPj4gKyNlbHNlCj4+ICtzdGF0 aWMgaW50IG1laV9jbGRldl9yZWdpc3Rlcl9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpu YikKPj4gK3sKPj4gKwlyZXR1cm4gLUVOT0RFVjsKPj4gK30KPj4gK3N0YXRpYyBpbnQgbWVpX2Ns ZGV2X3VucmVnaXN0ZXJfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCj4+ICt7Cj4+ ICsJcmV0dXJuIC1FTk9ERVY7Cj4+ICt9Cj4+ICsjZW5kaWYgLyogZGVmaW5lZCAoQ09ORklHX0lO VEVMX01FSV9IRENQKSAqLwo+PiArI2VuZGlmIC8qIGRlZmluZWQgKF9MSU5VWF9NRUlfSERDUF9I KSAqLwo+PiAtLSAKPj4gMi43LjQKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=