From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [RFC 1/4] drm: Add writeback connector type Date: Fri, 23 Feb 2018 14:27:27 +0000 Message-ID: <20180223142727.GW9111@e110455-lin.cambridge.arm.com> References: <20180223131758.18362-1-robdclark@gmail.com> <20180223131758.18362-2-robdclark@gmail.com> <20180223140018.GV9111@e110455-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rob Clark Cc: Jonathan Corbet , David Airlie , linux-arm-msm , linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Maarten Lankhorst , Linux Kernel Mailing List , dri-devel , Sean Paul , Gustavo Padovan , Mihail Atanassov , freedreno , Brian Starkey List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMDk6MjQ6MTBBTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE9uIEZyaSwgRmViIDIzLCAyMDE4IGF0IDk6MDAgQU0sIExpdml1IER1ZGF1IDxsaXZpdS5k dWRhdUBhcm0uY29tPiB3cm90ZToKPiA+IEhpIFJvYiwKPiA+Cj4gPiBPbiBGcmksIEZlYiAyMywg MjAxOCBhdCAwODoxNzo1MUFNIC0wNTAwLCBSb2IgQ2xhcmsgd3JvdGU6Cj4gPj4gRnJvbTogQnJp YW4gU3RhcmtleSA8YnJpYW4uc3RhcmtleUBhcm0uY29tPgo+ID4+Cj4gPj4gV3JpdGViYWNrIGNv bm5lY3RvcnMgcmVwcmVzZW50IHdyaXRlYmFjayBlbmdpbmVzIHdoaWNoIGNhbiB3cml0ZSB0aGUK PiA+PiBDUlRDIG91dHB1dCB0byBhIG1lbW9yeSBmcmFtZWJ1ZmZlci4gQWRkIGEgd3JpdGViYWNr IGNvbm5lY3RvciB0eXBlIGFuZAo+ID4+IHJlbGF0ZWQgc3VwcG9ydCBmdW5jdGlvbnMuCj4gPj4K PiA+PiBEcml2ZXJzIHNob3VsZCBpbml0aWFsaXplIGEgd3JpdGViYWNrIGNvbm5lY3RvciB3aXRo Cj4gPj4gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpIHdoaWNoIHRha2VzIGNhcmUgb2Yg c2V0dGluZyB1cCBhbGwgdGhlCj4gPj4gd3JpdGViYWNrLXNwZWNpZmljIGRldGFpbHMgb24gdG9w IG9mIHRoZSBub3JtYWwgZnVuY3Rpb25hbGl0eSBvZgo+ID4+IGRybV9jb25uZWN0b3JfaW5pdCgp Lgo+ID4+Cj4gPj4gV3JpdGViYWNrIGNvbm5lY3RvcnMgaGF2ZSBhIFdSSVRFQkFDS19GQl9JRCBw cm9wZXJ0eSwgdXNlZCB0byBzZXQgdGhlCj4gPj4gb3V0cHV0IGZyYW1lYnVmZmVyLCBhbmQgYSBX UklURUJBQ0tfUElYRUxfRk9STUFUUyBibG9iIHVzZWQgdG8gZXhwb3NlIHRoZQo+ID4+IHN1cHBv cnRlZCB3cml0ZWJhY2sgZm9ybWF0cyB0byB1c2Vyc3BhY2UuCj4gPj4KPiA+PiBXaGVuIGEgZnJh bWVidWZmZXIgaXMgYXR0YWNoZWQgdG8gYSB3cml0ZWJhY2sgY29ubmVjdG9yIHdpdGggdGhlCj4g Pj4gV1JJVEVCQUNLX0ZCX0lEIHByb3BlcnR5LCBpdCBpcyB1c2VkIG9ubHkgb25jZSAoZm9yIHRo ZSBjb21taXQgaW4gd2hpY2gKPiA+PiBpdCB3YXMgaW5jbHVkZWQpLCBhbmQgdXNlcnNwYWNlIGNh biBuZXZlciByZWFkIGJhY2sgdGhlIHZhbHVlIG9mCj4gPj4gV1JJVEVCQUNLX0ZCX0lELiBXUklU RUJBQ0tfRkJfSUQgY2FuIG9ubHkgYmUgc2V0IGlmIHRoZSBjb25uZWN0b3IgaXMKPiA+PiBhdHRh Y2hlZCB0byBhIENSVEMuCj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4+ICtzdGF0aWMgYm9vbCBjcmVh dGVfd3JpdGViYWNrX3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiArewo+ ID4+ICsgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gPj4gKwo+ID4+ICsgICAgIGlm ICghZGV2LT5tb2RlX2NvbmZpZy53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkpIHsKPiA+PiArICAg ICAgICAgICAgIHByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX29iamVjdChkZXYsIERSTV9NT0RF X1BST1BfQVRPTUlDLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJXUklURUJBQ0tfRkJfSUQiLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX09CSkVDVF9GQik7Cj4gPj4gKyAgICAg ICAgICAgICBpZiAoIXByb3ApCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPiA+PiArICAgICAgICAgICAgIGRldi0+bW9kZV9jb25maWcud3JpdGViYWNrX2ZiX2lkX3By b3BlcnR5ID0gcHJvcDsKPiA+PiArICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgIGlmICghZGV2LT5t b2RlX2NvbmZpZy53cml0ZWJhY2tfcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eSkgewo+ID4+ICsgICAg ICAgICAgICAgcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0JM T0IgfCBEUk1fTU9ERV9QUk9QX0lNTVVUQUJMRSwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJXUklURUJBQ0tfUElYRUxfRk9STUFUUyIsIDApOwo+ID4+ICsg ICAgICAgICAgICAgaWYgKCFwcm9wKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Cj4gPj4gKyAgICAgICAgICAgICBkZXYtPm1vZGVfY29uZmlnLndyaXRlYmFja19waXhl bF9mb3JtYXRzX3Byb3BlcnR5ID0gcHJvcDsKPiA+PiArICAgICB9Cj4gPj4gKwo+ID4+ICsgICAg IHJldHVybiB0cnVlOwo+ID4+ICt9Cj4gPgo+ID4gYmFzZWQgb24gYSBidWlsZGJvdCB3YXJuaW5n IGFuZCB0aGUgZmFjdCB0aGF0IHRoZSBuZXh0IHBhdGNoIHN0YXJ0cwo+ID4gcmV0dXJuaW5nIC1F Tk9NRU0gaW5zaWRlIHRoZSBhYm92ZSBmdW5jdGlvbiwgSSBoYXZlIHRoaXMgdmFyaWFudCBpbiBt eQo+ID4gaW50ZXJuYWwgdHJlZSB0aGF0IEkgd2FzIHByZXBhcmluZyB0byBzZW5kIG91dCBvbmNl IEkndmUgZ290IG15IGktZy10Cj4gPiB0ZXN0cyBpbiBiZXR0ZXIgc2hhcGU6Cj4gPgo+ID4gK3N0 YXRpYyBpbnQgY3JlYXRlX3dyaXRlYmFja19wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4gKwo+ ID4gKyAgICAgICBpZiAoIWRldi0+bW9kZV9jb25maWcud3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5 KSB7Cj4gPiArICAgICAgICAgICAgICAgcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfb2JqZWN0 KGRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJXUklURUJBQ0tfRkJfSUQiLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9PQkpFQ1Rf RkIpOwo+ID4gKyAgICAgICAgICAgICAgIGlmICghcHJvcCkKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKyAgICAgICAgICAgICAgIGRldi0+bW9kZV9jb25m aWcud3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5ID0gcHJvcDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ ID4gKyAgICAgICBpZiAoIWRldi0+bW9kZV9jb25maWcud3JpdGViYWNrX3BpeGVsX2Zvcm1hdHNf cHJvcGVydHkpIHsKPiA+ICsgICAgICAgICAgICAgICBwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0 ZShkZXYsIERSTV9NT0RFX1BST1BfQkxPQiB8IERSTV9NT0RFX1BST1BfSU1NVVRBQkxFLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXUklURUJBQ0tfUElY RUxfRk9STUFUUyIsIDApOwo+ID4gKyAgICAgICAgICAgICAgIGlmICghcHJvcCkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKyAgICAgICAgICAgICAgIGRl di0+bW9kZV9jb25maWcud3JpdGViYWNrX3BpeGVsX2Zvcm1hdHNfcHJvcGVydHkgPSBwcm9wOwo+ ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+Cj4gPgo+ ID4gRmVlbCBmcmVlIHRvIHVzZSB0aGlzIHZlcnNpb24gaW4gdGhlIG5leHQgdXBkYXRlIGlmIHlv dSdyZSBnb2luZyB0byBzZW5kCj4gPiBvbmUsIG90aGVyd2lzZSBJIGd1ZXNzIHdlIGNvdWxkIGJl IHBhdGNoaW5nIGl0IGxhdGVyLgo+ID4KPiAKPiBobW0sIEkgbWVhbnQgdG8ga2VlcCBteSBhZGRp dGlvbiBvZiBmdW5jcy0+YXRvbWljX2NvbW1pdCgpIGFzIGEKPiBzZXBhcmF0ZSBmaXh1cCBwYXRj aCBzbyBpdCB3b3VsZCBiZSBlYXNpZXIgZm9yIHlvdSB0byBmb2xkIGJhY2sgaW50bwo+IHlvdXIg cGF0Y2hzZXQsIGJ1dCBhY2NpZGVudGFsbHkgc3F1YXNoZWQgaXQgYXQgc29tZSBwb2ludCBhbmQg d2FzIHRvbwo+IGxhenkgdG8gc3BsaXQgaXQgb3V0IGFnYWluLiAgU29ycnkgYWJvdXQgdGhhdC4K CkknbSBub3QgdG9vIGZ1c3NlZCBhYm91dCB3aG8gcHVzaGVzIEJyaWFuJ3MgZnJhbWV3b3JrIHBh dGNoZXMgaW50bwpkcm0tbmV4dCBzbyBJIGRvbid0IG1pbmQgYXQgYWxsIHlvdSBtZXJnaW5nIHlv dXIgYWRkaXRpb24uIEp1c3Qgd2FudGVkCnRvIG1ha2Ugc3VyZSB3ZSdyZSBvbiB0aGUgc2FtZSBw YWdlIChkaWRuJ3Qga25vdyB5b3UncmUgZ29pbmcgdG8gc2VuZAp5b3VyIHNlcmllcyB0aGlzIHdl ZWspLgoKSSBhbHNvIGZlZWwgSSBuZWVkIHRvIGFwcG9sb2dpc2UgZm9yIG15IGRlbGF5IGluIGdl dHRpbmcgdGhlIGktZy10CnBhdGNoZXMgaW50byBzaGFwZSwgSSd2ZSBiZWVuIHNwbGl0dGluZyBt eXNlbGYgYmV0d2VlbiB2YXJpb3VzIG90aGVyCnRhc2tzLCBub3QgYWxsIGtlcm5lbCByZWxhdGVk LgoKQmVzdCByZWdhcmRzLApMaXZpdQoKPiAKPiBCUiwKPiAtUgo+IAo+ID4gQmVzdCByZWdhcmRz LAo+ID4gTGl2aXUKPiA+Cj4gPgo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f ZW5jb2Rlcl9mdW5jcyBkcm1fd3JpdGViYWNrX2VuY29kZXJfZnVuY3MgPSB7Cj4gPj4gKyAgICAg LmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArLyoq Cj4gPj4gKyAqIGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQgLSBJbml0aWFsaXplIGEgd3Jp dGViYWNrIGNvbm5lY3RvciBhbmQgaXRzIHByb3BlcnRpZXMKPiA+PiArICogQGRldjogRFJNIGRl dmljZQo+ID4+ICsgKiBAd2JfY29ubmVjdG9yOiBXcml0ZWJhY2sgY29ubmVjdG9yIHRvIGluaXRp YWxpemUKPiA+PiArICogQGNvbl9mdW5jczogQ29ubmVjdG9yIGZ1bmNzIHZ0YWJsZQo+ID4+ICsg KiBAZW5jX2hlbHBlcl9mdW5jczogRW5jb2RlciBoZWxwZXIgZnVuY3MgdnRhYmxlIHRvIGJlIHVz ZWQgYnkgdGhlIGludGVybmFsIGVuY29kZXIKPiA+PiArICogQGZvcm1hdHM6IEFycmF5IG9mIHN1 cHBvcnRlZCBwaXhlbCBmb3JtYXRzIGZvciB0aGUgd3JpdGViYWNrIGVuZ2luZQo+ID4+ICsgKiBA bl9mb3JtYXRzOiBMZW5ndGggb2YgdGhlIGZvcm1hdHMgYXJyYXkKPiA+PiArICoKPiA+PiArICog VGhpcyBmdW5jdGlvbiBjcmVhdGVzIHRoZSB3cml0ZWJhY2stY29ubmVjdG9yLXNwZWNpZmljIHBy b3BlcnRpZXMgaWYgdGhleQo+ID4+ICsgKiBoYXZlIG5vdCBiZWVuIGFscmVhZHkgY3JlYXRlZCwg aW5pdGlhbGl6ZXMgdGhlIGNvbm5lY3RvciBhcwo+ID4+ICsgKiB0eXBlIERSTV9NT0RFX0NPTk5F Q1RPUl9XUklURUJBQ0ssIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgdGhlIHByb3BlcnR5Cj4g Pj4gKyAqIHZhbHVlcy4gSXQgd2lsbCBhbHNvIGNyZWF0ZSBhbiBpbnRlcm5hbCBlbmNvZGVyIGFz c29jaWF0ZWQgd2l0aCB0aGUKPiA+PiArICogZHJtX3dyaXRlYmFja19jb25uZWN0b3IgYW5kIHNl dCBpdCB0byB1c2UgdGhlIEBlbmNfaGVscGVyX2Z1bmNzIHZ0YWJsZSBmb3IKPiA+PiArICogdGhl IGVuY29kZXIgaGVscGVyLgo+ID4+ICsgKgo+ID4+ICsgKiBEcml2ZXJzIHNob3VsZCBhbHdheXMg dXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkcm1fY29ubmVjdG9yX2luaXQoKSB0bwo+ID4+ ICsgKiBzZXQgdXAgd3JpdGViYWNrIGNvbm5lY3RvcnMuCj4gPj4gKyAqCj4gPj4gKyAqIFJldHVy bnM6IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlCj4gPj4gKyAqLwo+ID4+ ICtpbnQgZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFj a19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgKmNvbl9mdW5jcywKPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hl bHBlcl9mdW5jcyAqZW5jX2hlbHBlcl9mdW5jcywKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdTMyICpmb3JtYXRzLCBpbnQgbl9mb3JtYXRzKQo+ID4+ICt7Cj4gPj4g KyAgICAgaW50IHJldDsKPiA+PiArICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2I7 Cj4gPj4gKyAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZ3Yl9jb25uZWN0 b3ItPmJhc2U7Cj4gPj4gKyAgICAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRl di0+bW9kZV9jb25maWc7Cj4gPj4gKwo+ID4+ICsgICAgIGlmICghY3JlYXRlX3dyaXRlYmFja19w cm9wZXJ0aWVzKGRldikpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAr Cj4gPj4gKyAgICAgYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihkZXYsIG5fZm9ybWF0 cyAqIHNpemVvZigqZm9ybWF0cyksCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXRzKTsKPiA+PiArICAgICBpZiAoSVNfRVJSKGJsb2IpKQo+ID4+ICsgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIoYmxvYik7Cj4gPj4gKwo+ID4+ICsgICAgIGRybV9lbmNv ZGVyX2hlbHBlcl9hZGQoJndiX2Nvbm5lY3Rvci0+ZW5jb2RlciwgZW5jX2hlbHBlcl9mdW5jcyk7 Cj4gPj4gKyAgICAgcmV0ID0gZHJtX2VuY29kZXJfaW5pdChkZXYsICZ3Yl9jb25uZWN0b3ItPmVu Y29kZXIsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJtX3dyaXRlYmFja19l bmNvZGVyX2Z1bmNzLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVf RU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKPiA+PiArICAgICBpZiAocmV0KQo+ID4+ICsgICAgICAg ICAgICAgZ290byBmYWlsOwo+ID4+ICsKPiA+PiArICAgICBjb25uZWN0b3ItPmludGVybGFjZV9h bGxvd2VkID0gMDsKPiA+PiArCj4gPj4gKyAgICAgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRl diwgY29ubmVjdG9yLCBjb25fZnVuY3MsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spOwo+ID4+ICsgICAgIGlmIChyZXQpCj4g Pj4gKyAgICAgICAgICAgICBnb3RvIGNvbm5lY3Rvcl9mYWlsOwo+ID4+ICsKPiA+PiArICAgICBy ZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLAo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd2JfY29ubmVjdG9y LT5lbmNvZGVyKTsKPiA+PiArICAgICBpZiAocmV0KQo+ID4+ICsgICAgICAgICAgICAgZ290byBh dHRhY2hfZmFpbDsKPiA+PiArCj4gPj4gKyAgICAgSU5JVF9MSVNUX0hFQUQoJndiX2Nvbm5lY3Rv ci0+am9iX3F1ZXVlKTsKPiA+PiArICAgICBzcGluX2xvY2tfaW5pdCgmd2JfY29ubmVjdG9yLT5q b2JfbG9jayk7Cj4gPj4gKwo+ID4+ICsgICAgIGRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZj b25uZWN0b3ItPmJhc2UsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u ZmlnLT53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHksIDApOwo+ID4+ICsKPiA+PiArICAgICBkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+d3JpdGViYWNrX3BpeGVsX2Zvcm1hdHNfcHJv cGVydHksCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvYi0+YmFzZS5p ZCk7Cj4gPj4gKyAgICAgd2JfY29ubmVjdG9yLT5waXhlbF9mb3JtYXRzX2Jsb2JfcHRyID0gYmxv YjsKPiA+PiArCj4gPj4gKyAgICAgcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ICthdHRhY2hfZmFpbDoK PiA+PiArICAgICBkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiA+PiArY29ubmVj dG9yX2ZhaWw6Cj4gPj4gKyAgICAgZHJtX2VuY29kZXJfY2xlYW51cCgmd2JfY29ubmVjdG9yLT5l bmNvZGVyKTsKPiA+PiArZmFpbDoKPiA+PiArICAgICBkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2Vf YmxvYihibG9iKTsKPiA+PiArICAgICByZXR1cm4gcmV0Owo+ID4+ICt9Cj4gPj4gK0VYUE9SVF9T WU1CT0woZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCk7Cj4gPj4gKwo+ID4+ICsvKioKPiA+ PiArICogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IgLSBRdWV1ZSBhIHdyaXRlYmFjayBqb2IgZm9y IGxhdGVyIHNpZ25hbGxpbmcKPiA+PiArICogQHdiX2Nvbm5lY3RvcjogVGhlIHdyaXRlYmFjayBj b25uZWN0b3IgdG8gcXVldWUgYSBqb2Igb24KPiA+PiArICogQGpvYjogVGhlIGpvYiB0byBxdWV1 ZQo+ID4+ICsgKgo+ID4+ICsgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBqb2IgdG8gdGhlIGpvYl9x dWV1ZSBmb3IgYSB3cml0ZWJhY2sgY29ubmVjdG9yLiBJdAo+ID4+ICsgKiBzaG91bGQgYmUgY29u c2lkZXJlZCB0byB0YWtlIG93bmVyc2hpcCBvZiB0aGUgd3JpdGViYWNrIGpvYiwgYW5kIHNvIGFu eSBvdGhlcgo+ID4+ICsgKiByZWZlcmVuY2VzIHRvIHRoZSBqb2IgbXVzdCBiZSBjbGVhcmVkIGFm dGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KPiA+PiArICoKPiA+PiArICogRHJpdmVycyBtdXN0 IGVuc3VyZSB0aGF0IGZvciBhIGdpdmVuIHdyaXRlYmFjayBjb25uZWN0b3IsIGpvYnMgYXJlIHF1 ZXVlZCBpbgo+ID4+ICsgKiBleGFjdGx5IHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgd2lsbCBiZSBj b21wbGV0ZWQgYnkgdGhlIGhhcmR3YXJlIChhbmQKPiA+PiArICogc2lnbmFsZWQgdmlhIGRybV93 cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24pLgo+ID4+ICsgKgo+ID4+ICsgKiBGb3IgZXZlcnkg Y2FsbCB0byBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYigpIHRoZXJlIG11c3QgYmUgZXhhY3RseSBv bmUgY2FsbCB0bwo+ID4+ICsgKiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKPiA+ PiArICoKPiA+PiArICogU2VlIGFsc286IGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24o KQo+ID4+ICsgKi8KPiA+PiArdm9pZCBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYihzdHJ1Y3QgZHJt X3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciwKPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiA+PiArewo+ID4+ICsg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPj4gKwo+ID4+ICsgICAgIHNwaW5fbG9ja19pcnFz YXZlKCZ3Yl9jb25uZWN0b3ItPmpvYl9sb2NrLCBmbGFncyk7Cj4gPj4gKyAgICAgbGlzdF9hZGRf dGFpbCgmam9iLT5saXN0X2VudHJ5LCAmd2JfY29ubmVjdG9yLT5qb2JfcXVldWUpOwo+ID4+ICsg ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndiX2Nvbm5lY3Rvci0+am9iX2xvY2ssIGZsYWdz KTsKPiA+PiArfQo+ID4+ICtFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfcXVldWVfam9iKTsK PiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBkcm1fd3JpdGViYWNrX2NsZWFudXBfam9iIC0gQ2xl YW51cCBhbmQgZnJlZSBhIHdyaXRlYmFjayBqb2IKPiA+PiArICogQGpvYjogVGhlIHdyaXRlYmFj ayBqb2IgdG8gZnJlZQo+ID4+ICsgKgo+ID4+ICsgKiBEcm9wcyBhbnkgcmVmZXJlbmNlcyBoZWxk IGJ5IHRoZSB3cml0ZWJhY2sgam9iLCBhbmQgZnJlZXMgdGhlIHN0cnVjdHVyZS4KPiA+PiArICov Cj4gPj4gK3ZvaWQgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYihzdHJ1Y3QgZHJtX3dyaXRlYmFj a19qb2IgKmpvYikKPiA+PiArewo+ID4+ICsgICAgIGlmICgham9iKQo+ID4+ICsgICAgICAgICAg ICAgcmV0dXJuOwo+ID4+ICsKPiA+PiArICAgICBpZiAoam9iLT5mYikKPiA+PiArICAgICAgICAg ICAgIGRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShqb2ItPmZiKTsKPiA+PiArICAgICBrZnJl ZShqb2IpOwo+ID4+ICt9Cj4gPj4gK0VYUE9SVF9TWU1CT0woZHJtX3dyaXRlYmFja19jbGVhbnVw X2pvYik7Cj4gPj4gKwo+ID4+ICsvKgo+ID4+ICsgKiBAY2xlYW51cF93b3JrOiBkZWZlcnJlZCBj bGVhbnVwIG9mIGEgd3JpdGViYWNrIGpvYgo+ID4+ICsgKgo+ID4+ICsgKiBUaGUgam9iIGNhbm5v dCBiZSBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRp b24sCj4gPj4gKyAqIGJlY2F1c2UgaXQgbWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4 dC4gRHJvcHBpbmcgdGhlIGZyYW1lYnVmZmVyCj4gPj4gKyAqIHJlZmVyZW5jZSBjYW4gc2xlZXAs IGFuZCBzbyB0aGUgY2xlYW51cCBpcyBkZWZlcnJlZCB0byBhIHdvcmtxdWV1ZS4KPiA+PiArICov Cj4gPj4gK3N0YXRpYyB2b2lkIGNsZWFudXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Cj4gPj4gK3sKPiA+PiArICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYiA9IGNvbnRh aW5lcl9vZih3b3JrLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiwKPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX3dvcmspOwo+ID4+ ICsgICAgIGRybV93cml0ZWJhY2tfY2xlYW51cF9qb2Ioam9iKTsKPiA+PiArfQo+ID4+ICsKPiA+ PiArLyoqCj4gPj4gKyAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24gLSBTaWduYWwg dGhlIGNvbXBsZXRpb24gb2YgYSB3cml0ZWJhY2sgam9iCj4gPj4gKyAqIEB3Yl9jb25uZWN0b3I6 IFRoZSB3cml0ZWJhY2sgY29ubmVjdG9yIHdob3NlIGpvYiBpcyBjb21wbGV0ZQo+ID4+ICsgKgo+ ID4+ICsgKiBEcml2ZXJzIHNob3VsZCBjYWxsIHRoaXMgdG8gc2lnbmFsIHRoZSBjb21wbGV0aW9u IG9mIGEgcHJldmlvdXNseSBxdWV1ZWQKPiA+PiArICogd3JpdGViYWNrIGpvYi4gSXQgc2hvdWxk IGJlIGNhbGxlZCBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHRoZSBoYXJkd2FyZQo+ID4+ICsg KiBoYXMgZmluaXNoZWQgd3JpdGluZywgYW5kIG1heSBiZSBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQg Y29udGV4dC4KPiA+PiArICogSXQgaXMgdGhlIGRyaXZlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVu c3VyZSB0aGF0IGZvciBhIGdpdmVuIGNvbm5lY3RvciwgdGhlCj4gPj4gKyAqIGhhcmR3YXJlIGNv bXBsZXRlcyB3cml0ZWJhY2sgam9icyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSBxdWV1 ZWQuCj4gPj4gKyAqCj4gPj4gKyAqIFVubGVzcyB0aGUgZHJpdmVyIGlzIGhvbGRpbmcgaXRzIG93 biByZWZlcmVuY2UgdG8gdGhlIGZyYW1lYnVmZmVyLCBpdCBtdXN0Cj4gPj4gKyAqIG5vdCBiZSBh Y2Nlc3NlZCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCj4gPj4gKyAqCj4gPj4gKyAqIFNl ZSBhbHNvOiBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYigpCj4gPj4gKyAqLwo+ID4+ICt2b2lkCj4g Pj4gK2RybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0IGRybV93cml0ZWJhY2tf Y29ubmVjdG9yICp3Yl9jb25uZWN0b3IpCj4gPj4gK3sKPiA+PiArICAgICB1bnNpZ25lZCBsb25n IGZsYWdzOwo+ID4+ICsgICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iOwo+ID4+ICsK PiA+PiArICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmd2JfY29ubmVjdG9yLT5qb2JfbG9jaywgZmxh Z3MpOwo+ID4+ICsgICAgIGpvYiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmd2JfY29ubmVj dG9yLT5qb2JfcXVldWUsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSk7Cj4gPj4gKyAgICAgaWYgKGpvYikKPiA+PiArICAgICAg ICAgICAgIGxpc3RfZGVsKCZqb2ItPmxpc3RfZW50cnkpOwo+ID4+ICsgICAgIHNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJndiX2Nvbm5lY3Rvci0+am9iX2xvY2ssIGZsYWdzKTsKPiA+PiArCj4gPj4g KyAgICAgaWYgKFdBUk5fT04oIWpvYikpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPj4g Kwo+ID4+ICsgICAgIElOSVRfV09SSygmam9iLT5jbGVhbnVwX3dvcmssIGNsZWFudXBfd29yayk7 Cj4gPj4gKyAgICAgcXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgJmpvYi0+Y2xlYW51cF93b3Jr KTsKPiA+PiArfQo+ID4+ICtFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBs ZXRpb24pOwo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNs dWRlL2RybS9kcm1fYXRvbWljLmgKPiA+PiBpbmRleCBjZjEzODQyYTZkYmQuLmQ3YjAyNjNjYzVj ZiAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiA+PiArKysgYi9p bmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiA+PiBAQCAtNTk0LDYgKzU5NCw5IEBAIHZvaWQgZHJt X2F0b21pY19zZXRfZmVuY2VfZm9yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlLAo+ID4+ICBpbnQgX19tdXN0X2NoZWNrCj4gPj4gIGRybV9hdG9taWNfc2V0X2NydGNf Zm9yX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 Cj4gPj4gK2ludCBkcm1fYXRvbWljX3NldF93cml0ZWJhY2tfZmJfZm9yX2Nvbm5lY3RvcigKPiA+ PiArICAgICAgICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAo+ ID4+ICsgICAgICAgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwo+ID4+ICBpbnQg X19tdXN0X2NoZWNrCj4gPj4gIGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4+ IGluZGV4IDc1OGExNzZlN2I1Ny4uODcwMWViY2M2OGIzIDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaAo+ID4+IEBAIC00MjUsNiArNDI1LDE5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl IHsKPiA+PiAgICAgICAgKiBwcm90ZWN0aW9uLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgdXNlZCBm b3IgSERDUC4KPiA+PiAgICAgICAgKi8KPiA+PiAgICAgICB1bnNpZ25lZCBpbnQgY29udGVudF9w cm90ZWN0aW9uOwo+ID4+ICsKPiA+PiArICAgICAvKioKPiA+PiArICAgICAgKiBAd3JpdGViYWNr X2pvYjogV3JpdGViYWNrIGpvYiBmb3Igd3JpdGViYWNrIGNvbm5lY3RvcnMKPiA+PiArICAgICAg Kgo+ID4+ICsgICAgICAqIEhvbGRzIHRoZSBmcmFtZWJ1ZmZlciBmb3IgYSB3cml0ZWJhY2sgY29u bmVjdG9yLiBBcyB0aGUgd3JpdGViYWNrCj4gPj4gKyAgICAgICogY29tcGxldGlvbiBtYXkgYmUg YXN5bmNocm9ub3VzIHRvIHRoZSBub3JtYWwgY29tbWl0IGN5Y2xlLCB0aGUKPiA+PiArICAgICAg KiB3cml0ZWJhY2sgam9iIGxpZmV0aW1lIGlzIG1hbmFnZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBu b3JtYWwgYXRvbWljCj4gPj4gKyAgICAgICogc3RhdGUgYnkgdGhpcyBvYmplY3QuCj4gPj4gKyAg ICAgICoKPiA+PiArICAgICAgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKSBh bmQKPiA+PiArICAgICAgKiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKPiA+PiAr ICAgICAgKi8KPiA+PiArICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKndyaXRlYmFja19q b2I7Cj4gPj4gIH07Cj4gPj4KPiA+PiAgLyoqCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9tb2RlX2NvbmZpZy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiA+PiBp bmRleCA3NTY5ZjIyZmZlZjYuLmMwMTJlMTE0OGVjMCAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fbW9kZV9jb25maWcuaAo+ID4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2Nv bmZpZy5oCj4gPj4gQEAgLTc3OSw2ICs3NzksMjAgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7 Cj4gPj4gICAgICAgICovCj4gPj4gICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcGFuZWxfb3Jp ZW50YXRpb25fcHJvcGVydHk7Cj4gPj4KPiA+PiArICAgICAvKioKPiA+PiArICAgICAgKiBAd3Jp dGViYWNrX2ZiX2lkX3Byb3BlcnR5OiBQcm9wZXJ0eSBmb3Igd3JpdGViYWNrIGNvbm5lY3RvcnMs IHN0b3JpbmcKPiA+PiArICAgICAgKiB0aGUgSUQgb2YgdGhlIG91dHB1dCBmcmFtZWJ1ZmZlci4K PiA+PiArICAgICAgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4g Pj4gKyAgICAgICovCj4gPj4gKyAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqd3JpdGViYWNrX2Zi X2lkX3Byb3BlcnR5Owo+ID4+ICsgICAgIC8qKgo+ID4+ICsgICAgICAqIEB3cml0ZWJhY2tfcGl4 ZWxfZm9ybWF0c19wcm9wZXJ0eTogUHJvcGVydHkgZm9yIHdyaXRlYmFjayBjb25uZWN0b3JzLAo+ ID4+ICsgICAgICAqIHN0b3JpbmcgYW4gYXJyYXkgb2YgdGhlIHN1cHBvcnRlZCBwaXhlbCBmb3Jt YXRzIGZvciB0aGUgd3JpdGViYWNrCj4gPj4gKyAgICAgICogZW5naW5lIChyZWFkLW9ubHkpLgo+ ID4+ICsgICAgICAqIFNlZSBhbHNvOiBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KCkKPiA+ PiArICAgICAgKi8KPiA+PiArICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp3cml0ZWJhY2tfcGl4 ZWxfZm9ybWF0c19wcm9wZXJ0eTsKPiA+PiArCj4gPj4gICAgICAgLyogZHVtYiBpb2N0bCBwYXJh bWV0ZXJzICovCj4gPj4gICAgICAgdWludDMyX3QgcHJlZmVycmVkX2RlcHRoLCBwcmVmZXJfc2hh ZG93Owo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBl cl92dGFibGVzLmggYi9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oCj4g Pj4gaW5kZXggM2U3NmNhODA1YjBmLi45N2QzYTgxMGJjODUgMTAwNjQ0Cj4gPj4gLS0tIGEvaW5j bHVkZS9kcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaAo+ID4+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmgKPiA+PiBAQCAtOTc0LDYgKzk3NCwxNyBA QCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgewo+ID4+ICAgICAgICAqLwo+ID4+ ICAgICAgIGludCAoKmF0b21pY19jaGVjaykoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpzdGF0ZSk7Cj4gPj4gKwo+ID4+ICsgICAgIC8qKgo+ID4+ICsgICAgICAqIEBhdG9taWNf Y29tbWl0Ogo+ID4+ICsgICAgICAqCj4gPj4gKyAgICAgICogRm9yIHdyaXRlLWJhY2sgY29ubmVj dG9ycywgdGhpcyBpcyB0aGUgcG9pbnQgdG8gY29tbWl0IHRoZSB3cml0ZS0KPiA+PiArICAgICAg KiBiYWNrIGpvYiB0byBody4KPiA+PiArICAgICAgKgo+ID4+ICsgICAgICAqIFRoaXMgY2FsbGJh Y2sgaXMgdXNlZCBieSB0aGUgYXRvbWljIG1vZGVzZXQgaGVscGVycy4KPiA+PiArICAgICAgKi8K PiA+PiArICAgICB2b2lkICgqYXRvbWljX2NvbW1pdCkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV93cml0 ZWJhY2tfam9iICp3cml0ZWJhY2tfam9iKTsKPiA+PiAgfTsKPiA+Pgo+ID4+ICAvKioKPiA+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oIGIvaW5jbHVkZS9kcm0vZHJt X3dyaXRlYmFjay5oCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjBiYjk1ZmQ0OTA3ZAo+ID4+IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi9pbmNsdWRl L2RybS9kcm1fd3JpdGViYWNrLmgKPiA+PiBAQCAtMCwwICsxLDg5IEBACj4gPj4gKy8qCj4gPj4g KyAqIChDKSBDT1BZUklHSFQgMjAxNiBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K PiA+PiArICogQXV0aG9yOiBCcmlhbiBTdGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5jb20+Cj4g Pj4gKyAqCj4gPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlIGFuZCBpcyBwcm92 aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQo+ID4+ICsgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl Cj4gPj4gKyAqIEZvdW5kYXRpb24sIGFuZCBhbnkgdXNlIGJ5IHlvdSBvZiB0aGlzIHByb2dyYW0g aXMgc3ViamVjdCB0byB0aGUgdGVybXMKPiA+PiArICogb2Ygc3VjaCBHTlUgbGljZW5jZS4KPiA+ PiArICovCj4gPj4gKwo+ID4+ICsjaWZuZGVmIF9fRFJNX1dSSVRFQkFDS19IX18KPiA+PiArI2Rl ZmluZSBfX0RSTV9XUklURUJBQ0tfSF9fCj4gPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rv ci5oPgo+ID4+ICsjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+Cj4gPj4gKyNpbmNsdWRlIDxs aW51eC93b3JrcXVldWUuaD4KPiA+PiArCj4gPj4gK3N0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5l Y3RvciB7Cj4gPj4gKyAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgYmFzZTsKPiA+PiArCj4gPj4g KyAgICAgLyoqCj4gPj4gKyAgICAgICogQGVuY29kZXI6IEludGVybmFsIGVuY29kZXIgdXNlZCBi eSB0aGUgY29ubmVjdG9yIHRvIGZ1bGZpbGwKPiA+PiArICAgICAgKiB0aGUgRFJNIGZyYW1ld29y ayByZXF1aXJlbWVudHMuIFRoZSB1c2VycyBvZiB0aGUKPiA+PiArICAgICAgKiBAZHJtX3dyaXRl YmFja19jb25uZWN0b3IgY29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBAZW5jb2Rlcgo+ID4+ ICsgICAgICAqIGJ5IHBhc3NpbmcgdGhlIEBlbmNfZnVuY3MgcGFyYW1ldGVyIHRvIGRybV93cml0 ZWJhY2tfY29ubmVjdG9yX2luaXQoKQo+ID4+ICsgICAgICAqIGZ1bmN0aW9uLgo+ID4+ICsgICAg ICAqLwo+ID4+ICsgICAgIHN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ID4+ICsKPiA+PiAr ICAgICAvKioKPiA+PiArICAgICAgKiBAcGl4ZWxfZm9ybWF0c19ibG9iX3B0cjoKPiA+PiArICAg ICAgKgo+ID4+ICsgICAgICAqIERSTSBibG9iIHByb3BlcnR5IGRhdGEgZm9yIHRoZSBwaXhlbCBm b3JtYXRzIGxpc3Qgb24gd3JpdGViYWNrCj4gPj4gKyAgICAgICogY29ubmVjdG9ycwo+ID4+ICsg ICAgICAqIFNlZSBhbHNvIGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoKQo+ID4+ICsgICAg ICAqLwo+ID4+ICsgICAgIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqcGl4ZWxfZm9ybWF0c19i bG9iX3B0cjsKPiA+PiArCj4gPj4gKyAgICAgLyoqIEBqb2JfbG9jazogUHJvdGVjdHMgam9iX3F1 ZXVlICovCj4gPj4gKyAgICAgc3BpbmxvY2tfdCBqb2JfbG9jazsKPiA+PiArCj4gPj4gKyAgICAg LyoqCj4gPj4gKyAgICAgICogQGpvYl9xdWV1ZToKPiA+PiArICAgICAgKgo+ID4+ICsgICAgICAq IEhvbGRzIGEgbGlzdCBvZiBhIGNvbm5lY3RvcidzIHdyaXRlYmFjayBqb2JzOyB0aGUgbGFzdCBp dGVtIGlzIHRoZQo+ID4+ICsgICAgICAqIG1vc3QgcmVjZW50LiBUaGUgZmlyc3QgaXRlbSBtYXkg YmUgZWl0aGVyIHdhaXRpbmcgZm9yIHRoZSBoYXJkd2FyZQo+ID4+ICsgICAgICAqIHRvIGJlZ2lu IHdyaXRpbmcsIG9yIGN1cnJlbnRseSBiZWluZyB3cml0dGVuLgo+ID4+ICsgICAgICAqCj4gPj4g KyAgICAgICogU2VlIGFsc286IGRybV93cml0ZWJhY2tfcXVldWVfam9iKCkgYW5kCj4gPj4gKyAg ICAgICogZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigpCj4gPj4gKyAgICAgICovCj4g Pj4gKyAgICAgc3RydWN0IGxpc3RfaGVhZCBqb2JfcXVldWU7Cj4gPj4gK307Cj4gPj4gKyNkZWZp bmUgdG9fd2JfY29ubmVjdG9yKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX3dyaXRlYmFj a19jb25uZWN0b3IsIGJhc2UpCj4gPj4gKwo+ID4+ICtzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2Ig ewo+ID4+ICsgICAgIC8qKgo+ID4+ICsgICAgICAqIEBjbGVhbnVwX3dvcms6Cj4gPj4gKyAgICAg ICoKPiA+PiArICAgICAgKiBVc2VkIHRvIGFsbG93IGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBs ZXRpb24gdG8gZGVmZXIgZHJvcHBpbmcgdGhlCj4gPj4gKyAgICAgICogZnJhbWVidWZmZXIgcmVm ZXJlbmNlIHRvIGEgd29ya3F1ZXVlLgo+ID4+ICsgICAgICAqLwo+ID4+ICsgICAgIHN0cnVjdCB3 b3JrX3N0cnVjdCBjbGVhbnVwX3dvcms7Cj4gPj4gKyAgICAgLyoqCj4gPj4gKyAgICAgICogQGxp c3RfZW50cnk6Cj4gPj4gKyAgICAgICoKPiA+PiArICAgICAgKiBMaXN0IGl0ZW0gZm9yIHRoZSBj b25uZWN0b3IncyBAam9iX3F1ZXVlCj4gPj4gKyAgICAgICovCj4gPj4gKyAgICAgc3RydWN0IGxp c3RfaGVhZCBsaXN0X2VudHJ5Owo+ID4+ICsgICAgIC8qKgo+ID4+ICsgICAgICAqIEBmYjoKPiA+ PiArICAgICAgKgo+ID4+ICsgICAgICAqIEZyYW1lYnVmZmVyIHRvIGJlIHdyaXR0ZW4gdG8gYnkg dGhlIHdyaXRlYmFjayBjb25uZWN0b3IuIERvIG5vdCBzZXQKPiA+PiArICAgICAgKiBkaXJlY3Rs eSwgdXNlIGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKCkKPiA+PiAr ICAgICAgKi8KPiA+PiArICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiA+PiArfTsK PiA+PiArCj4gPj4gK2ludCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyAqY29uX2Z1 bmNzLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJt X2VuY29kZXJfaGVscGVyX2Z1bmNzICplbmNfaGVscGVyX2Z1bmNzLAo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzIgKmZvcm1hdHMsIGludCBuX2Zvcm1hdHMpOwo+ ID4+ICsKPiA+PiArdm9pZCBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYihzdHJ1Y3QgZHJtX3dyaXRl YmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYik7Cj4gPj4gKwo+ID4+ICt2b2lkIGRy bV93cml0ZWJhY2tfY2xlYW51cF9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IpOwo+ ID4+ICt2b2lkIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0IGRybV93cml0 ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uZWN0b3IpOwo+ID4+ICsjZW5kaWYKPiA+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1f bW9kZS5oCj4gPj4gaW5kZXggMmM1NzU3OTRmYjUyLi43YjQ3ZTE4NGU5NWUgMTAwNjQ0Cj4gPj4g LS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPj4gKysrIGIvaW5jbHVkZS91YXBp L2RybS9kcm1fbW9kZS5oCj4gPj4gQEAgLTMzOCw2ICszMzgsNyBAQCBlbnVtIGRybV9tb2RlX3N1 YmNvbm5lY3RvciB7Cj4gPj4gICNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX1ZJUlRVQUwgICAg ICAxNQo+ID4+ICAjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kgICAgICAgICAgICAgICAx Ngo+ID4+ICAjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9EUEkgICAgICAgICAgICAgICAxNwo+ ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0sgMTgKPiA+Pgo+ID4+ICBz dHJ1Y3QgZHJtX21vZGVfZ2V0X2Nvbm5lY3RvciB7Cj4gPj4KPiA+PiAtLQo+ID4+IDIuMTQuMwo+ ID4+Cj4gPgo+ID4gLS0KPiA+ID09PT09PT09PT09PT09PT09PT09Cj4gPiB8IEkgd291bGQgbGlr ZSB0byB8Cj4gPiB8IGZpeCB0aGUgd29ybGQsICB8Cj4gPiB8IGJ1dCB0aGV5J3JlIG5vdCB8Cj4g PiB8IGdpdmluZyBtZSB0aGUgICB8Cj4gPiAgXCBzb3VyY2UgY29kZSEgIC8KPiA+ICAgLS0tLS0t LS0tLS0tLS0tCj4gPiAgICAgwq9cXyjjg4QpXy/CrwoKLS0gCj09PT09PT09PT09PT09PT09PT09 CnwgSSB3b3VsZCBsaWtlIHRvIHwKfCBmaXggdGhlIHdvcmxkLCAgfAp8IGJ1dCB0aGV5J3JlIG5v dCB8CnwgZ2l2aW5nIG1lIHRoZSAgIHwKIFwgc291cmNlIGNvZGUhICAvCiAgLS0tLS0tLS0tLS0t LS0tCiAgICDCr1xfKOODhClfL8KvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZyZWVkcmVubwo=