From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH v2] drm/exynos/mixer: fix MIXER shadow registry synchronisation code Date: Thu, 21 Mar 2019 17:20:09 +0900 Message-ID: <0fc8310d-0a08-8873-01b1-e000c8b495d5@samsung.com> References: <20190319130511.20729-1-a.hajda@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by gabe.freedesktop.org (Postfix) with ESMTPS id D4EF2896BF for ; Thu, 21 Mar 2019 08:20:08 +0000 (UTC) Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20190321082006epoutp04b5dc604fef2a425e9f08cb2361703bfe~N64XYspQ60932709327epoutp04j for ; Thu, 21 Mar 2019 08:20:06 +0000 (GMT) In-Reply-To: <20190319130511.20729-1-a.hajda@samsung.com> 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: Andrzej Hajda , Marian Mihailescu Cc: Marek Szyprowski , linux-samsung-soc@vger.kernel.org, dri-devel@lists.freedesktop.org, Bartlomiej Zolnierkiewicz List-Id: dri-devel@lists.freedesktop.org CgoxOS4gMy4gMTkuIOyYpO2bhCAxMDowNeyXkCBBbmRyemVqIEhhamRhIOydtCjqsIApIOyTtCDq uIA6Cj4gTUlYRVIgb24gRXh5bm9zNSBTb0NzIHVzZXMgZGlmZmVyZW50IHN5bmNocm9uaXNhdGlv biBtZXRob2QgdGhhbiBFeHlub3M0Cj4gdG8gdXBkYXRlIGludGVybmFsIHN0YXRlIChzaGFkb3cg cmVnaXN0ZXJzKS4KPiBBcHBhcmVudGx5IHRoZSBkcml2ZXIgaW1wbGVtZW50cyBpdCBpbmNvcnJl Y3RseS4gVGhlIHJ1bGUgc2hvdWxkIGJlCj4gYXMgZm9sbG93czoKPiAtIGRvIG5vdCByZXF1ZXN0 IHVwZGF0aW5nIHJlZ2lzdGVycyB1bnRpbCBwcmV2aW91cyByZXF1ZXN0IHdhcyBmaW5pc2hlZCwK PiAgIGllLiBNWFJfQ0ZHX0xBWUVSX1VQREFURV9DT1VOVCBtdXN0IGJlIDAuCj4gLSBiZWZvcmUg c2V0dGluZyByZWdpc3RlcnMgc3luY2hyb25pc2F0aW9uIG9uIFZTWU5DIHNob3VsZCBiZSB0dXJu ZWQgb2ZmLAo+ICAgaWUuIE1YUl9TVEFUVVNfU1lOQ19FTkFCTEUgc2hvdWxkIGJlIHJlc2V0LAo+ IC0gYWZ0ZXIgZmluaXNoaW5nIE1YUl9TVEFUVVNfU1lOQ19FTkFCTEUgc2hvdWxkIGJlIHNldCBh Z2Fpbi4KPiBUaGUgcGF0Y2ggaG9wZWZ1bGx5IGltcGxlbWVudHMgaXQgY29ycmVjdGx5Lgo+IEJl bG93IHNhbXBsZSBrZXJuZWwgbG9nIGZyb20gcGFnZSBmYXVsdCBjYXVzZWQgYnkgdGhlIGJ1ZzoK PiAKPiBbICAgMjUuNjcwMDM4XSBleHlub3Mtc3lzbW11IDE0NjUwMDAwLnN5c21tdTogMTQ0NTAw MDAubWl4ZXI6IFBBR0UgRkFVTFQgb2NjdXJyZWQgYXQgMHgyMjQ3YjgwMAo+IFsgICAyNS42Nzc4 ODhdIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+IFsgICAyNS42ODIxNjRd IGtlcm5lbCBCVUcgYXQgLi4vZHJpdmVycy9pb21tdS9leHlub3MtaW9tbXUuYzo0NTAhCj4gWyAg IDI1LjY4Nzk3MV0gSW50ZXJuYWwgZXJyb3I6IE9vcHMgLSBCVUc6IDAgWyMxXSBQUkVFTVBUIFNN UCBBUk0KPiBbICAgMjUuNjkzNzc4XSBNb2R1bGVzIGxpbmtlZCBpbjoKPiBbICAgMjUuNjk2ODE2 XSBDUFU6IDUgUElEOiAxNTUzIENvbW06IGZiLXJlbGVhc2VfdGVzdCBOb3QgdGFpbnRlZCA1LjAu MC1yYzctMDExNTctZzVmODZiMTU2NmJkZCAjMTM2Cj4gWyAgIDI1LjcwNTY0Nl0gSGFyZHdhcmUg bmFtZTogU0FNU1VORyBFWFlOT1MgKEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSkKPiBbICAgMjUuNzEx NzEwXSBQQyBpcyBhdCBleHlub3Nfc3lzbW11X2lycSsweDFjMC8weDI2NAo+IFsgICAyNS43MTY0 NzBdIExSIGlzIGF0IGxvY2tfaXNfaGVsZF90eXBlKzB4NDQvMHg2NAo+IAo+IHYyOiBhZGRlZCBt aXNzaW5nIE1YUl9DRkdfTEFZRVJfVVBEQVRFIGJpdCBzZXR0aW5nIGluIG1peGVyX2VuYWJsZV9z eW5jCj4gCj4gUmVwb3J0ZWQtYnk6IE1hcmlhbiBNaWhhaWxlc2N1IDxtaWhhaWxlc2N1Mm1AZ21h aWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5j b20+Cj4gLS0tCj4gSGkgSW5raSBhbmQgTWFyaWFuLAo+IAo+IFRoaXMgaXMgZml4ZWQgdmVyc2lv biBvZiBteSBwcmV2aW91cyBwYXRjaC4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpcwo+IGFkZGVkIG1p c3NpbmcgTVhSX0NGR19MQVlFUl9VUERBVEUgc2V0dGluZyBpbiBtaXhlcl9lbmFibGVfc3luYy4K PiBJIGhvcGUgdGhpcyB0aW1lIGl0IGlzIGNvcnJlY3QuIEl0IHNob3VsZCBzb2x2ZSBvbmUgcGFn ZSBmYXVsdCBpc3N1ZQo+IGluIE1JWEVSLCBNYXJlayBpcyBwcmVwYXJpbmcgZml4IGZvciBhbm90 aGVyIGlzc3VlICh0byBsb3cgY2xvY2sgc2V0IGJ5Cj4gZGV2ZnJlcSkuIEkgaG9wZSB3aXRoIGJv dGggcGF0Y2hlcyBwYWdlIGZhdWx0cyB3aWxsIG5vdCBoYXBwZW4gYW55bW9yZSA7KQoKV2l0aCB0 aGlzIHBhdGNoIG1vZGV0ZXN0IHdvcmtlZCB3ZWxsLgpCVFcsIHRoaXMgY2hhbmdlIG1heSBhZmZl Y3QgRXh5bm9zNCBzZXJpZXMgLSB3aGljaCBoYXZlIGRpZmZlcmVudCBzeW5jaHJvbml6YXRpb24g d2F5IHRvIHVwZGF0ZSBzaGFkb3cgcmVnaXN0ZXJzIC0gc28gY291bGQgeW91IG9yIHNvbWVvbmUg ZWxzZSB3aG8gaGFzIEV4eW5vczR4eHggYmFzZWQgYm9hcmQgY2hlY2sgaXQgb24gT2Ryb2lkLXUz IGJvYXJkPyBJIGhhdmUgbm8gYm9hcmQuIDooCgpUaGFua3MsCklua2kgRGFlCgo+IAo+IFJlZ2Fy ZHMKPiBBbmRyemVqCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVy LmMgfCAxMTAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDY2 IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfbWl4ZXIuYwo+IGluZGV4IDA1NzNlYWIwZTE5MC4uZjM1ZTRhYjU1YjI3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAg I2luY2x1ZGUgInJlZ3MtdnAuaCIKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+ ICAjaW5jbHVkZSA8bGludXgvd2FpdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gQEAg LTM1MiwxNSArMzUzLDYyIEBAIHN0YXRpYyB2b2lkIG1peGVyX2NmZ192cF9ibGVuZChzdHJ1Y3Qg bWl4ZXJfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgYWxwaGEpCj4gIAltaXhlcl9yZWdfd3Jp dGUoY3R4LCBNWFJfVklERU9fQ0ZHLCB2YWwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBtaXhl cl92c3luY19zZXRfdXBkYXRlKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGJvb2wgZW5hYmxl KQo+ICtzdGF0aWMgYm9vbCBtaXhlcl9pc19zeW5jZWQoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0 eCkKPiAgewo+IC0JLyogYmxvY2sgdXBkYXRlIG9uIHZzeW5jICovCj4gLQltaXhlcl9yZWdfd3Jp dGVtYXNrKGN0eCwgTVhSX1NUQVRVUywgZW5hYmxlID8KPiAtCQkJTVhSX1NUQVRVU19TWU5DX0VO QUJMRSA6IDAsIE1YUl9TVEFUVVNfU1lOQ19FTkFCTEUpOwo+ICsJdTMyIGJhc2UsIHNoYWRvdzsK PiAgCj4gKwlpZiAoY3R4LT5teHJfdmVyID09IE1YUl9WRVJfMTZfMF8zM18wIHx8Cj4gKwkgICAg Y3R4LT5teHJfdmVyID09IE1YUl9WRVJfMTI4XzBfMF8xODQpCj4gKwkJcmV0dXJuICEobWl4ZXJf cmVnX3JlYWQoY3R4LCBNWFJfQ0ZHKSAmCj4gKwkJCSBNWFJfQ0ZHX0xBWUVSX1VQREFURV9DT1VO VF9NQVNLKTsKPiArCj4gKwlpZiAodGVzdF9iaXQoTVhSX0JJVF9WUF9FTkFCTEVELCAmY3R4LT5m bGFncykgJiYKPiArCSAgICB2cF9yZWdfcmVhZChjdHgsIFZQX1NIQURPV19VUERBVEUpKQo+ICsJ CXJldHVybiBmYWxzZTsKPiArCj4gKwliYXNlID0gbWl4ZXJfcmVnX3JlYWQoY3R4LCBNWFJfQ0ZH KTsKPiArCXNoYWRvdyA9IG1peGVyX3JlZ19yZWFkKGN0eCwgTVhSX0NGR19TKTsKPiArCWlmIChi YXNlICE9IHNoYWRvdykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJYmFzZSA9IG1peGVyX3Jl Z19yZWFkKGN0eCwgTVhSX0dSQVBISUNfQkFTRSgwKSk7Cj4gKwlzaGFkb3cgPSBtaXhlcl9yZWdf cmVhZChjdHgsIE1YUl9HUkFQSElDX0JBU0VfUygwKSk7Cj4gKwlpZiAoYmFzZSAhPSBzaGFkb3cp Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWJhc2UgPSBtaXhlcl9yZWdfcmVhZChjdHgsIE1Y Ul9HUkFQSElDX0JBU0UoMSkpOwo+ICsJc2hhZG93ID0gbWl4ZXJfcmVnX3JlYWQoY3R4LCBNWFJf R1JBUEhJQ19CQVNFX1MoMSkpOwo+ICsJaWYgKGJhc2UgIT0gc2hhZG93KQo+ICsJCXJldHVybiBm YWxzZTsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtaXhlcl93 YWl0X2Zvcl9zeW5jKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWt0aW1lX3Qg dGltZW91dCA9IGt0aW1lX2FkZF91cyhrdGltZV9nZXQoKSwgMTAwMDAwKTsKPiArCj4gKwl3aGls ZSAoIW1peGVyX2lzX3N5bmNlZChjdHgpKSB7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDAp Owo+ICsJCWlmIChrdGltZV9jb21wYXJlKGt0aW1lX2dldCgpLCB0aW1lb3V0KSA+IDApCj4gKwkJ CXJldHVybiAtRVRJTUVET1VUOwo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIG1peGVyX2Rpc2FibGVfc3luYyhzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQo+ICt7 Cj4gKwltaXhlcl9yZWdfd3JpdGVtYXNrKGN0eCwgTVhSX1NUQVRVUywgMCwgTVhSX1NUQVRVU19T WU5DX0VOQUJMRSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1peGVyX2VuYWJsZV9zeW5jKHN0 cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWlmIChjdHgtPm14cl92ZXIgPT0gTVhS X1ZFUl8xNl8wXzMzXzAgfHwKPiArCSAgICBjdHgtPm14cl92ZXIgPT0gTVhSX1ZFUl8xMjhfMF8w XzE4NCkKPiArCQltaXhlcl9yZWdfd3JpdGVtYXNrKGN0eCwgTVhSX0NGRywgfjAsIE1YUl9DRkdf TEFZRVJfVVBEQVRFKTsKPiArCW1peGVyX3JlZ193cml0ZW1hc2soY3R4LCBNWFJfU1RBVFVTLCB+ MCwgTVhSX1NUQVRVU19TWU5DX0VOQUJMRSk7Cj4gIAlpZiAodGVzdF9iaXQoTVhSX0JJVF9WUF9F TkFCTEVELCAmY3R4LT5mbGFncykpCj4gLQkJdnBfcmVnX3dyaXRlKGN0eCwgVlBfU0hBRE9XX1VQ REFURSwgZW5hYmxlID8KPiAtCQkJVlBfU0hBRE9XX1VQREFURV9FTkFCTEUgOiAwKTsKPiArCQl2 cF9yZWdfd3JpdGUoY3R4LCBWUF9TSEFET1dfVVBEQVRFLCBWUF9TSEFET1dfVVBEQVRFX0VOQUJM RSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG1peGVyX2NmZ19zY2FuKHN0cnVjdCBtaXhlcl9j b250ZXh0ICpjdHgsIGludCB3aWR0aCwgaW50IGhlaWdodCkKPiBAQCAtNDk4LDcgKzU0Niw2IEBA IHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LAo+ ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZjdHgtPnJlZ19zbG9jaywgZmxhZ3MpOwo+ICAKPiAt CXZwX3JlZ193cml0ZShjdHgsIFZQX1NIQURPV19VUERBVEUsIDEpOwo+ICAJLyogaW50ZXJsYWNl IG9yIHByb2dyZXNzaXZlIHNjYW4gbW9kZSAqLwo+ICAJdmFsID0gKHRlc3RfYml0KE1YUl9CSVRf SU5URVJMQUNFLCAmY3R4LT5mbGFncykgPyB+MCA6IDApOwo+ICAJdnBfcmVnX3dyaXRlbWFzayhj dHgsIFZQX01PREUsIHZhbCwgVlBfTU9ERV9MSU5FX1NLSVApOwo+IEBAIC01NTMsMTEgKzYwMCw2 IEBAIHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4 LAo+ICAJdnBfcmVnc19kdW1wKGN0eCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIG1peGVyX2xh eWVyX3VwZGF0ZShzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQo+IC17Cj4gLQltaXhlcl9yZWdf d3JpdGVtYXNrKGN0eCwgTVhSX0NGRywgfjAsIE1YUl9DRkdfTEFZRVJfVVBEQVRFKTsKPiAtfQo+ IC0KPiAgc3RhdGljIHZvaWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0 ICpjdHgsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUpCj4gIHsK PiBAQCAtNjQwLDExICs2ODIsNiBAQCBzdGF0aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIoc3Ry dWN0IG1peGVyX2NvbnRleHQgKmN0eCwKPiAgCW1peGVyX2NmZ19sYXllcihjdHgsIHdpbiwgcHJp b3JpdHksIHRydWUpOwo+ICAJbWl4ZXJfY2ZnX2dmeF9ibGVuZChjdHgsIHdpbiwgcGl4ZWxfYWxw aGEsIHN0YXRlLT5iYXNlLmFscGhhKTsKPiAgCj4gLQkvKiBsYXllciB1cGRhdGUgbWFuZGF0b3J5 IGZvciBtaXhlciAxNi4wLjMzLjAgKi8KPiAtCWlmIChjdHgtPm14cl92ZXIgPT0gTVhSX1ZFUl8x Nl8wXzMzXzAgfHwKPiAtCQljdHgtPm14cl92ZXIgPT0gTVhSX1ZFUl8xMjhfMF8wXzE4NCkKPiAt CQltaXhlcl9sYXllcl91cGRhdGUoY3R4KTsKPiAtCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdHgtPnJlZ19zbG9jaywgZmxhZ3MpOwo+ICAKPiAgCW1peGVyX3JlZ3NfZHVtcChjdHgpOwo+ IEBAIC03MDksNyArNzQ2LDcgQEAgc3RhdGljIHZvaWQgbWl4ZXJfd2luX3Jlc2V0KHN0cnVjdCBt aXhlcl9jb250ZXh0ICpjdHgpCj4gIHN0YXRpYyBpcnFyZXR1cm5fdCBtaXhlcl9pcnFfaGFuZGxl cihpbnQgaXJxLCB2b2lkICphcmcpCj4gIHsKPiAgCXN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgg PSBhcmc7Cj4gLQl1MzIgdmFsLCBiYXNlLCBzaGFkb3c7Cj4gKwl1MzIgdmFsOwo+ICAKPiAgCXNw aW5fbG9jaygmY3R4LT5yZWdfc2xvY2spOwo+ICAKPiBAQCAtNzIzLDI2ICs3NjAsOSBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgbWl4ZXJfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAJ CXZhbCAmPSB+TVhSX0lOVF9TVEFUVVNfVlNZTkM7Cj4gIAo+ICAJCS8qIGludGVybGFjZSBzY2Fu IG5lZWQgdG8gY2hlY2sgc2hhZG93IHJlZ2lzdGVyICovCj4gLQkJaWYgKHRlc3RfYml0KE1YUl9C SVRfSU5URVJMQUNFLCAmY3R4LT5mbGFncykpIHsKPiAtCQkJaWYgKHRlc3RfYml0KE1YUl9CSVRf VlBfRU5BQkxFRCwgJmN0eC0+ZmxhZ3MpICYmCj4gLQkJCSAgICB2cF9yZWdfcmVhZChjdHgsIFZQ X1NIQURPV19VUERBVEUpKQo+IC0JCQkJZ290byBvdXQ7Cj4gLQo+IC0JCQliYXNlID0gbWl4ZXJf cmVnX3JlYWQoY3R4LCBNWFJfQ0ZHKTsKPiAtCQkJc2hhZG93ID0gbWl4ZXJfcmVnX3JlYWQoY3R4 LCBNWFJfQ0ZHX1MpOwo+IC0JCQlpZiAoYmFzZSAhPSBzaGFkb3cpCj4gLQkJCQlnb3RvIG91dDsK PiAtCj4gLQkJCWJhc2UgPSBtaXhlcl9yZWdfcmVhZChjdHgsIE1YUl9HUkFQSElDX0JBU0UoMCkp Owo+IC0JCQlzaGFkb3cgPSBtaXhlcl9yZWdfcmVhZChjdHgsIE1YUl9HUkFQSElDX0JBU0VfUygw KSk7Cj4gLQkJCWlmIChiYXNlICE9IHNoYWRvdykKPiAtCQkJCWdvdG8gb3V0Owo+IC0KPiAtCQkJ YmFzZSA9IG1peGVyX3JlZ19yZWFkKGN0eCwgTVhSX0dSQVBISUNfQkFTRSgxKSk7Cj4gLQkJCXNo YWRvdyA9IG1peGVyX3JlZ19yZWFkKGN0eCwgTVhSX0dSQVBISUNfQkFTRV9TKDEpKTsKPiAtCQkJ aWYgKGJhc2UgIT0gc2hhZG93KQo+IC0JCQkJZ290byBvdXQ7Cj4gLQkJfQo+ICsJCWlmICh0ZXN0 X2JpdChNWFJfQklUX0lOVEVSTEFDRSwgJmN0eC0+ZmxhZ3MpCj4gKwkJICAgICYmICFtaXhlcl9p c19zeW5jZWQoY3R4KSkKPiArCQkJZ290byBvdXQ7Cj4gIAo+ICAJCWRybV9jcnRjX2hhbmRsZV92 YmxhbmsoJmN0eC0+Y3J0Yy0+YmFzZSk7Cj4gIAl9Cj4gQEAgLTkxNywxMiArOTM3LDE0IEBAIHN0 YXRpYyB2b2lkIG1peGVyX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNy dGMpCj4gIAo+ICBzdGF0aWMgdm9pZCBtaXhlcl9hdG9taWNfYmVnaW4oc3RydWN0IGV4eW5vc19k cm1fY3J0YyAqY3J0YykKPiAgewo+IC0Jc3RydWN0IG1peGVyX2NvbnRleHQgKm1peGVyX2N0eCA9 IGNydGMtPmN0eDsKPiArCXN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4g IAo+IC0JaWYgKCF0ZXN0X2JpdChNWFJfQklUX1BPV0VSRUQsICZtaXhlcl9jdHgtPmZsYWdzKSkK PiArCWlmICghdGVzdF9iaXQoTVhSX0JJVF9QT1dFUkVELCAmY3R4LT5mbGFncykpCj4gIAkJcmV0 dXJuOwo+ICAKPiAtCW1peGVyX3ZzeW5jX3NldF91cGRhdGUobWl4ZXJfY3R4LCBmYWxzZSk7Cj4g KwlpZiAobWl4ZXJfd2FpdF9mb3Jfc3luYyhjdHgpKQo+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJ0 aW1lb3V0IHdhaXRpbmcgZm9yIFZTWU5DXG4iKTsKPiArCW1peGVyX2Rpc2FibGVfc3luYyhjdHgp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBtaXhlcl91cGRhdGVfcGxhbmUoc3RydWN0IGV4eW5v c19kcm1fY3J0YyAqY3J0YywKPiBAQCAtOTY0LDcgKzk4Niw3IEBAIHN0YXRpYyB2b2lkIG1peGVy X2F0b21pY19mbHVzaChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQo+ICAJaWYgKCF0ZXN0 X2JpdChNWFJfQklUX1BPV0VSRUQsICZtaXhlcl9jdHgtPmZsYWdzKSkKPiAgCQlyZXR1cm47Cj4g IAo+IC0JbWl4ZXJfdnN5bmNfc2V0X3VwZGF0ZShtaXhlcl9jdHgsIHRydWUpOwo+ICsJbWl4ZXJf ZW5hYmxlX3N5bmMobWl4ZXJfY3R4KTsKPiAgCWV4eW5vc19jcnRjX2hhbmRsZV9ldmVudChjcnRj KTsKPiAgfQo+ICAKPiBAQCAtOTc5LDcgKzEwMDEsNyBAQCBzdGF0aWMgdm9pZCBtaXhlcl9lbmFi bGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlleHlub3NfZHJtX3BpcGVf Y2xrX2VuYWJsZShjcnRjLCB0cnVlKTsKPiAgCj4gLQltaXhlcl92c3luY19zZXRfdXBkYXRlKGN0 eCwgZmFsc2UpOwo+ICsJbWl4ZXJfZGlzYWJsZV9zeW5jKGN0eCk7Cj4gIAo+ICAJbWl4ZXJfcmVn X3dyaXRlbWFzayhjdHgsIE1YUl9TVEFUVVMsIH4wLCBNWFJfU1RBVFVTX1NPRlRfUkVTRVQpOwo+ ICAKPiBAQCAtOTkyLDcgKzEwMTQsNyBAQCBzdGF0aWMgdm9pZCBtaXhlcl9lbmFibGUoc3RydWN0 IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKPiAgCj4gIAltaXhlcl9jb21taXQoY3R4KTsKPiAgCj4g LQltaXhlcl92c3luY19zZXRfdXBkYXRlKGN0eCwgdHJ1ZSk7Cj4gKwltaXhlcl9lbmFibGVfc3lu YyhjdHgpOwo+ICAKPiAgCXNldF9iaXQoTVhSX0JJVF9QT1dFUkVELCAmY3R4LT5mbGFncyk7Cj4g IH0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs