From mboxrd@z Thu Jan 1 00:00:00 1970 From: Icenowy Zheng Subject: Re: [linux-sunxi] Re: [PATCH v3 04/11] drm/sun4i: abstract the layer type Date: Wed, 05 Apr 2017 13:23:15 +0800 Message-ID: <20170405052325.98B958A2E94@relay.mailchannels.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chen-Yu Tsai Cc: devicetree , Jernej Skrabec , linux-kernel , dri-devel , linux-sunxi , Rob Herring , Maxime Ripard , linux-clk , linux-arm-kernel List-Id: devicetree@vger.kernel.org CjIwMTflubQ05pyINeaXpSAxMDoyN+S6jiBDaGVuLVl1IFRzYWkgPHdlbnNAY3NpZS5vcmc+5YaZ 6YGT77yaCj4KPiBPbiBXZWQsIEFwciA1LCAyMDE3IGF0IDM6NTMgQU0sIEljZW5vd3kgWmhlbmcg PGljZW5vd3lAYW9zYy5pbz4gd3JvdGU6IAo+ID4gCj4gPiAKPiA+IOWcqCAyMDE35bm0MDTmnIgw NeaXpSAwMzoyOCwgU2VhbiBQYXVsIOWGmemBkzogCj4gPj4gCj4gPj4gT24gVGh1LCBNYXIgMzAs IDIwMTcgYXQgMDM6NDY6MDZBTSArMDgwMCwgSWNlbm93eSBaaGVuZyB3cm90ZTogCj4gPj4+IAo+ ID4+PiBBcyB3ZSBhcmUgZ29pbmcgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBBbGx3aW5uZXIgREUy IE1peGVyIGluIHN1bjRpLWRybSAKPiA+Pj4gZHJpdmVyLCB3ZSB3aWxsIGZpbmFsbHkgaGF2ZSB0 d28gdHlwZXMgb2YgbGF5ZXIuIAo+ID4+PiAKPiA+Pj4gQWJzdHJhY3QgdGhlIGxheWVyIHR5cGUg dG8gdm9pZCAqIGFuZCBhIG9wcyBzdHJ1Y3QsIHdoaWNoIGNvbnRhaW5zIHRoZSAKPiA+Pj4gb25s eSBmdW5jdGlvbiB1c2VkIGJ5IGNydGMgLS0gZ2V0IHRoZSBkcm1fcGxhbmUgc3RydWN0IG9mIHRo ZSBsYXllci4gCj4gPj4+IAo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBJY2Vub3d5IFpoZW5nIDxpY2Vu b3d5QGFvc2MuaW8+IAo+ID4+PiAtLS0gCj4gPj4+IFJlZmFjdG9yZWQgcGF0Y2ggaW4gdjMuIAo+ ID4+PiAKPiA+Pj7CoCBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5jwqAgfCAxOSAr KysrKysrKysrKy0tLS0tLS0tIAo+ID4+PsKgIGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9j cnRjLmjCoCB8wqAgMyArKy0gCj4gPj4+wqAgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xh eWVyLmMgfCAxOSArKysrKysrKysrKysrKysrKystIAo+ID4+PsKgIGRyaXZlcnMvZ3B1L2RybS9z dW40aS9zdW40aV9sYXllci5oIHzCoCAyICstIAo+ID4+PsKgIGRyaXZlcnMvZ3B1L2RybS9zdW40 aS9zdW54aV9sYXllci5oIHwgMTcgKysrKysrKysrKysrKysrKysgCj4gPj4+wqAgNSBmaWxlcyBj aGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkgCj4gPj4+wqAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW54aV9sYXllci5oIAo+ID4+PiAK PiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmMgCj4g Pj4+IGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2NydGMuYyAKPiA+Pj4gaW5kZXggM2M4 NzZjM2EzNTZhLi4zMzg1NGVlN2Y2MzYgMTAwNjQ0IAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vc3VuNGkvc3VuNGlfY3J0Yy5jIAo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkv c3VuNGlfY3J0Yy5jIAo+ID4+PiBAQCAtMjksNiArMjksNyBAQCAKPiA+Pj7CoCAjaW5jbHVkZSAi c3VuNGlfY3J0Yy5oIiAKPiA+Pj7CoCAjaW5jbHVkZSAic3VuNGlfZHJ2LmgiIAo+ID4+PsKgICNp bmNsdWRlICJzdW40aV9sYXllci5oIiAKPiA+Pj4gKyNpbmNsdWRlICJzdW54aV9sYXllci5oIiAK PiA+Pj7CoCAjaW5jbHVkZSAic3VuNGlfdGNvbi5oIiAKPiA+Pj4gCj4gPj4+wqAgc3RhdGljIHZv aWQgc3VuNGlfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLCAKPiA+Pj4g QEAgLTE0OSw3ICsxNTAsNyBAQCBzdHJ1Y3Qgc3VuNGlfY3J0YyAqc3VuNGlfY3J0Y19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlIAo+ID4+PiAqZHJtLCAKPiA+Pj7CoMKgwqDCoMKgwqDCoMKgIHNjcnRj LT50Y29uID0gdGNvbjsgCj4gPj4+IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqAgLyogQ3JlYXRlIG91 ciBsYXllcnMgKi8gCj4gPj4+IC3CoMKgwqDCoMKgwqAgc2NydGMtPmxheWVycyA9IHN1bjRpX2xh eWVyc19pbml0KGRybSwgc2NydGMtPmJhY2tlbmQpOyAKPiA+Pj4gK8KgwqDCoMKgwqDCoCBzY3J0 Yy0+bGF5ZXJzID0gKHZvaWQgKiopc3VuNGlfbGF5ZXJzX2luaXQoZHJtLCBzY3J0Yyk7IAo+ID4+ PsKgwqDCoMKgwqDCoMKgwqAgaWYgKElTX0VSUihzY3J0Yy0+bGF5ZXJzKSkgeyAKPiA+Pj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRybS0+ZGV2LCAiQ291bGRuJ3Qg Y3JlYXRlIHRoZSBwbGFuZXNcbiIpOyAKPiA+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gTlVMTDsgCj4gPj4+IEBAIC0xNTcsMTQgKzE1OCwxNSBAQCBzdHJ1Y3Qgc3Vu NGlfY3J0YyAqc3VuNGlfY3J0Y19pbml0KHN0cnVjdCAKPiA+Pj4gZHJtX2RldmljZSAqZHJtLCAK PiA+Pj4gCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCAvKiBmaW5kIHByaW1hcnkgYW5kIGN1cnNvciBw bGFuZXMgZm9yIGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMgCj4gPj4+ICovIAo+ID4+PsKgwqDC oMKgwqDCoMKgwqAgZm9yIChpID0gMDsgc2NydGMtPmxheWVyc1tpXTsgaSsrKSB7IAo+ID4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc3VuNGlfbGF5ZXIgKmxheWVyID0g c2NydGMtPmxheWVyc1tpXTsgCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZv aWQgKmxheWVyID0gc2NydGMtPmxheWVyc1tpXTsgCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gCj4gPj4+IHNjcnRjLT5sYXllcl9v cHMtPmdldF9wbGFuZShsYXllcik7IAo+ID4+PiAKPiA+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3dpdGNoIChsYXllci0+cGxhbmUudHlwZSkgeyAKPiA+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChwbGFuZS0+dHlwZSkgeyAKPiA+Pj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6IAo+ID4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpbWFyeSA9 ICZsYXllci0+cGxhbmU7IAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcHJpbWFyeSA9IHBsYW5lOyAKPiA+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOiAKPiA+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN1cnNvciA9ICZsYXllci0+ cGxhbmU7IAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3Vyc29yID0gcGxhbmU7IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZGVmYXVsdDogCj4gPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGJyZWFrOyAKPiA+Pj4gQEAgLTE5MCwxMCArMTkyLDExIEBAIHN0cnVjdCBz dW40aV9jcnRjICpzdW40aV9jcnRjX2luaXQoc3RydWN0IAo+ID4+PiBkcm1fZGV2aWNlICpkcm0s IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqAgLyogU2V0IHBvc3NpYmxlX2NydGNzIHRvIHRoaXMgY3J0 YyBmb3Igb3ZlcmxheSBwbGFuZXMgKi8gCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAw OyBzY3J0Yy0+bGF5ZXJzW2ldOyBpKyspIHsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdWludDMyX3QgcG9zc2libGVfY3J0Y3MgPSAKPiA+Pj4gQklUKGRybV9jcnRjX2lu ZGV4KCZzY3J0Yy0+Y3J0YykpOyAKPiA+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHN1bjRpX2xheWVyICpsYXllciA9IHNjcnRjLT5sYXllcnNbaV07IAo+ID4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpsYXllciA9IHNjcnRjLT5sYXllcnNbaV07 IAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSA9IAo+ID4+PiBzY3J0Yy0+bGF5ZXJfb3BzLT5nZXRfcGxhbmUobGF5ZXIpOyAKPiA+Pj4g Cj4gPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChsYXllci0+cGxhbmUudHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKSAKPiA+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxheWVyLT5wbGFuZS5wb3NzaWJsZV9jcnRjcyA9IHBv c3NpYmxlX2NydGNzOyAKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBs YW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkpIAo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGxhbmUtPnBvc3NpYmxlX2NydGNzID0g cG9zc2libGVfY3J0Y3M7IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqAgfSAKPiA+Pj4gCj4gPj4+wqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gc2NydGM7IAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3N1bjRpL3N1bjRpX2NydGMuaCAKPiA+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkv c3VuNGlfY3J0Yy5oIAo+ID4+PiBpbmRleCAyMzBjYjhmMGQ2MDEuLmE0MDM2ZWU0NGNmOCAxMDA2 NDQgCj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmggCj4gPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmggCj4gPj4+IEBAIC0xOSw3 ICsxOSw4IEBAIHN0cnVjdCBzdW40aV9jcnRjIHsgCj4gPj4+IAo+ID4+PsKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IHN1bjRpX2JhY2tlbmTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpiYWNrZW5kOyAK PiA+Pj7CoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBzdW40aV90Y29uwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqdGNvbjsgCj4gPj4+IC3CoMKgwqDCoMKgwqAgc3RydWN0IHN1bjRpX2xheWVy wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKipsYXllcnM7IAo+ID4+PiArwqDCoMKgwqDCoMKg IHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKipsYXllcnM7IAo+ID4+PiArwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBzdW54aV9sYXll cl9vcHPCoMKgwqAgKmxheWVyX29wczsgCj4gPj4gCj4gPj4gCj4gPj4gSSB0aGluayB5b3Ugc2hv dWxkIHByb2JhYmx5IHRha2UgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gYWJzdHJhY3QgdGhlIAo+ ID4+IGxheWVyIAo+ID4+IHR5cGUuIEhvdyBhYm91dCBjcmVhdGluZyAKPiA+PiAKPiA+PiBzdHJ1 Y3Qgc3VueGlfbGF5ZXIgeyAKPiA+PsKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSBw bGFuZTsgCj4gPj4gfSAKPiA+PiAKPiA+PiBiYXNlIGFuZCB0aGVuIHN1YmNsYXNzaW5nIHRoYXQg Zm9yIHN1bjRpIGFuZCBzdW44aT8gQnkgZG9pbmcgdGhpcyB5b3UgY2FuIAo+ID4+IGF2b2lkIAo+ ID4+IHRoZSBuYXN0eSBjYXN0aW5nIGFuZCB5b3UgY2FuIGFsc28gZ2V0IHJpZCBvZiB0aGUgZ2V0 X3BsYW5lKCkgaG9vayBhbmQgCj4gPj4gbGF5ZXJfb3BzLiAKPiA+IAo+ID4gCj4gPiBGb3IgdGhl IHNpdHVhdGlvbiB0aGF0IHVzaW5nICoqIHRoaW5ncyBhcmUgZWFzaWx5IHRvIGdldCB3ZWlyZC4g Cj4KPiBUaGF0IGNvZGUgY291bGQgYmUgcmV3b3JrZWQsIGJ5IGluaXRpYWxpemluZyB0aGUgbGF5 ZXJzIGRpcmVjdGx5IHdpdGhpbiAKPiB0aGUgY3J0YyBpbml0IGNvZGUuIElmIHlvdSBsb29rIGF0 IHJvY2tjaGlwJ3MgZHJtIGRyaXZlciwgeW91J2xsIHNlZSAKPiB0aGV5IGRvIHRoaXMuIFRoZXJl IGlzIGEgZ29vZCByZWFzb24gdG8gZG8gaXQgdGhpcyB3YXksIGFzIHlvdSBuZWVkIAo+IHRvIGZp cnN0IGNyZWF0ZSB0aGUgcHJpbWFyeSBhbmQgY3Vyc29yIGxheWVycywgcGFzcyB0aGVtIGluIHdo ZW4geW91IAo+IGNyZWF0ZSB0aGUgY3J0YywgdGhlbiBpbml0aWFsaXplIGFueSBhZGRpdGlvbmFs IGxheWVycyB3aXRoIHRoZSAKPiBwb3NzaWJsZV9jcnRjcyBiaXRtYXAuIAoKQnV0IGZ1cnRodXJs eSBtYXliZSBtb3JlIGxheWVycyB3aWxsIGJlIGNyZWF0ZWQgZm9yIERFMiBtaXhlciwgYW5kIG1h eSBldmVuIGRlcGVuZHMgb24gbWl4ZXIgdHlwZSAoT24gQTgzVC9IMy9BNjQvSDUgbWl4ZXIxIGhh cyBmZXdlciBjaGFubmVsIHRoYW4gbWl4ZXIwKS4KCj4KPiBJbiBvdXIgZHJpdmVyIHdlIGFyZSBj dXJyZW50bHkgaW5pdGlhbGl6aW5nIGFsbCBsYXllcnMsIHRoZW4gZ29pbmcgCj4gYmFjayBhbmQg ZmlsbGluZyBpbiBwb3NzaWJsZV9jcnRjcyBmb3IgdGhlIGV4dHJhIGxheWVycy4gCj4KPiBBbmQg YXMgTWF4aW1lIGFuZCBJIG1lbnRpb25lZCBpbiB0aGUgb3RoZXIgdGhyZWFkLCB3ZSBkb24ndCBy ZWFsbHkgCj4gbmVlZCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvICoqbGF5ZXJzLiAKPgo+IFJlZ2Fy ZHMgCj4gQ2hlbll1IAo+Cj4gPiAKPiA+PiAKPiA+PiBTZWFuIAo+ID4+IAo+ID4+IAo+ID4+IAo+ ID4+PsKgIH07IAo+ID4+PiAKPiA+Pj7CoCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzdW40aV9jcnRj ICpkcm1fY3J0Y190b19zdW40aV9jcnRjKHN0cnVjdCBkcm1fY3J0YyAKPiA+Pj4gKmNydGMpIAo+ ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMgCj4g Pj4+IGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMgCj4gPj4+IGluZGV4IGYy NmJkZTViOTExNy4uYmM0YTcwZDY5NjhiIDEwMDY0NCAKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMgCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40 aS9zdW40aV9sYXllci5jIAo+ID4+PiBAQCAtMTYsNyArMTYsOSBAQCAKPiA+Pj7CoCAjaW5jbHVk ZSA8ZHJtL2RybVAuaD4gCj4gPj4+IAo+ID4+PsKgICNpbmNsdWRlICJzdW40aV9iYWNrZW5kLmgi IAo+ID4+PiArI2luY2x1ZGUgInN1bjRpX2NydGMuaCIgCj4gPj4+wqAgI2luY2x1ZGUgInN1bjRp X2xheWVyLmgiIAo+ID4+PiArI2luY2x1ZGUgInN1bnhpX2xheWVyLmgiIAo+ID4+PiAKPiA+Pj7C oCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyB7IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlbnVtIGRybV9wbGFuZV90eXBlwqDCoMKgwqAgdHlwZTsgCj4gPj4+IEBAIC0xMDAs NiArMTAyLDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyAKPiA+Pj4g c3VuNGlfYmFja2VuZF9wbGFuZXNbXSA9IHsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCB9LCAKPiA+ Pj7CoCB9OyAKPiA+Pj4gCj4gPj4+ICtzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqc3VuNGlfbGF5 ZXJfZ2V0X3BsYW5lKHZvaWQgKmxheWVyKSAKPiA+Pj4gK3sgCj4gPj4+ICvCoMKgwqDCoMKgwqAg c3RydWN0IHN1bjRpX2xheWVyICpzdW40aV9sYXllciA9IGxheWVyOyAKPiA+Pj4gKyAKPiA+Pj4g K8KgwqDCoMKgwqDCoCByZXR1cm4gJnN1bjRpX2xheWVyLT5wbGFuZTsgCj4gPj4+ICt9IAo+ID4+ PiArIAo+ID4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzdW54aV9sYXllcl9vcHMgbGF5ZXJfb3Bz ID0geyAKPiA+Pj4gK8KgwqDCoMKgwqDCoCAuZ2V0X3BsYW5lID0gc3VuNGlfbGF5ZXJfZ2V0X3Bs YW5lLCAKPiA+Pj4gK307IAo+ID4+PiArIAo+ID4+PsKgIHN0YXRpYyBzdHJ1Y3Qgc3VuNGlfbGF5 ZXIgKnN1bjRpX2xheWVyX2luaXRfb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIAo+ID4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc3VuNGlfYmFja2Vu ZCAKPiA+Pj4gKmJhY2tlbmQsIAo+ID4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25zdCBzdHJ1Y3QgCj4gPj4+IHN1bjRpX3BsYW5lX2Rlc2MgKnBsYW5lKSAKPiA+ Pj4gQEAgLTEyOSw5ICsxNDIsMTAgQEAgc3RhdGljIHN0cnVjdCBzdW40aV9sYXllciAKPiA+Pj4g KnN1bjRpX2xheWVyX2luaXRfb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIAo+ID4+PsKgIH0g Cj4gPj4+IAo+ID4+PsKgIHN0cnVjdCBzdW40aV9sYXllciAqKnN1bjRpX2xheWVyc19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0sIAo+ID4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHN1 bjRpX2JhY2tlbmQgKmJhY2tlbmQpIAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHN1 bjRpX2NydGMgKmNydGMpIAo+ID4+PsKgIHsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg c3VuNGlfbGF5ZXIgKipsYXllcnM7IAo+ID4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCBzdW40aV9i YWNrZW5kICpiYWNrZW5kID0gY3J0Yy0+YmFja2VuZDsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCBp bnQgaTsgCj4gPj4+IAo+ID4+PsKgwqDCoMKgwqDCoMKgwqAgbGF5ZXJzID0gZGV2bV9rY2FsbG9j KGRybS0+ZGV2LCBBUlJBWV9TSVpFKHN1bjRpX2JhY2tlbmRfcGxhbmVzKSAKPiA+Pj4gKyAxLCAK PiA+Pj4gQEAgLTE4MSw1ICsxOTUsOCBAQCBzdHJ1Y3Qgc3VuNGlfbGF5ZXIgKipzdW40aV9sYXll cnNfaW5pdChzdHJ1Y3QgCj4gPj4+IGRybV9kZXZpY2UgKmRybSwgCj4gPj4+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbGF5ZXJzW2ldID0gbGF5ZXI7IAo+ID4+PsKgwqDCoMKgwqDC oMKgwqAgfTsgCj4gPj4+IAo+ID4+PiArwqDCoMKgwqDCoMKgIC8qIEFzc2lnbiBsYXllciBvcHMg dG8gdGhlIENSVEMgKi8gCj4gPj4+ICvCoMKgwqDCoMKgwqAgY3J0Yy0+bGF5ZXJfb3BzID0gJmxh eWVyX29wczsgCj4gPj4+ICsgCj4gPj4+wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGF5ZXJzOyAK PiA+Pj7CoCB9IAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRp X2xheWVyLmggCj4gPj4+IGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmggCj4g Pj4+IGluZGV4IDRiZTFmMDkxOWRmMi4uNDI1ZWVhN2I5ZTNiIDEwMDY0NCAKPiA+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmggCj4gPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9zdW40aS9zdW40aV9sYXllci5oIAo+ID4+PiBAQCAtMjcsNiArMjcsNiBAQCBwbGFu ZV90b19zdW40aV9sYXllcihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkgCj4gPj4+wqAgfSAKPiA+ Pj4gCj4gPj4+wqAgc3RydWN0IHN1bjRpX2xheWVyICoqc3VuNGlfbGF5ZXJzX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRybSwgCj4gPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc3VuNGlf YmFja2VuZCAqYmFja2VuZCk7IAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHN1bjRp X2NydGMgKmNydGMpOyAKPiA+Pj4gCj4gPj4+wqAgI2VuZGlmIC8qIF9TVU40SV9MQVlFUl9IXyAq LyAKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW54aV9sYXllci5o IAo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW54aV9sYXllci5oIAo+ID4+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NCAKPiA+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kODgzOGVjMzkyOTkg Cj4gPj4+IC0tLSAvZGV2L251bGwgCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9z dW54aV9sYXllci5oIAo+ID4+PiBAQCAtMCwwICsxLDE3IEBAIAo+ID4+PiArLyogCj4gPj4+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3NjLnh5ej4gCj4g Pj4+ICsgKiAKPiA+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgCj4gPj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyAKPiA+Pj4gKyAqIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IAo+ID4+PiArICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uIAo+ID4+PiArICovIAo+ID4+PiArIAo+ID4+PiArI2lmbmRlZiBfU1VOWElfTEFZRVJf SF8gCj4gPj4+ICsjZGVmaW5lIF9TVU5YSV9MQVlFUl9IXyAKPiA+Pj4gKyAKPiA+Pj4gK3N0cnVj dCBzdW54aV9sYXllcl9vcHMgeyAKPiA+Pj4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5l ICooKmdldF9wbGFuZSkodm9pZCAqbGF5ZXIpOyAKPiA+Pj4gK307IAo+ID4+PiArIAo+ID4+PiAr I2VuZGlmIC8qIF9TVU5YSV9MQVlFUl9IXyAqLyAKPiA+Pj4gLS0gCj4gPj4+IDIuMTIuMCAKPiA+ Pj4gCj4gPj4+IAo+ID4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXyAKPiA+Pj4gbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QgCj4gPj4+IGxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAKPiA+Pj4gaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsIAo+ID4+IAo+ID4+IAo+ ID4gCj4gPiAtLSAKPiA+IFlvdSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJl IHN1YnNjcmliZWQgdG8gdGhlIEdvb2dsZSBHcm91cHMgCj4gPiAibGludXgtc3VueGkiIGdyb3Vw LiAKPiA+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBncm91cCBhbmQgc3RvcCByZWNlaXZpbmcg ZW1haWxzIGZyb20gaXQsIHNlbmQgYW4gCj4gPiBlbWFpbCB0byBsaW51eC1zdW54aSt1bnN1YnNj cmliZUBnb29nbGVncm91cHMuY29tLiAKPiA+IEZvciBtb3JlIG9wdGlvbnMsIHZpc2l0IGh0dHBz Oi8vZ3JvdXBzLmdvb2dsZS5jb20vZC9vcHRvdXQuIApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK