From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4/5] drm: Add support for handling linear tile formats Date: Fri, 31 Aug 2018 14:20:31 +0300 Message-ID: <20180831112031.GT5565@intel.com> References: <20180821183004.6775-1-alexandru-cosmin.gheorghe@arm.com> <20180821183004.6775-5-alexandru-cosmin.gheorghe@arm.com> <20180822201851.GV21634@phenom.ffwll.local> <20180823174340.GB18528@e114479-lin.cambridge.arm.com> <20180831081414.GL21634@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1AF3A6E8B5 for ; Fri, 31 Aug 2018 11:20:46 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180831081414.GL21634@phenom.ffwll.local> 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: ayan.halder@arm.com, airlied@linux.ie, daniel.vetter@ffwll.ch, Alexandru-Cosmin Gheorghe , liviu.dudau@arm.com, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, malidp@foss.arm.com, nd@arm.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBdWcgMzEsIDIwMTggYXQgMTA6MTQ6MTRBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIEF1ZyAyMywgMjAxOCBhdCAwNjo0Mzo0MFBNICswMTAwLCBBbGV4YW5k cnUtQ29zbWluIEdoZW9yZ2hlIHdyb3RlOgo+ID4gT24gV2VkLCBBdWcgMjIsIDIwMTggYXQgMTA6 MTg6NTFQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gT24gVHVlLCBBdWcgMjEs IDIwMTggYXQgMDc6MzA6MDNQTSArMDEwMCwgQWxleGFuZHJ1IEdoZW9yZ2hlIHdyb3RlOgo+ID4g PiA+IFRoZSBwcmV2aW91cyBwYXRjaCBhZGRlZCB0aWxlX3cgYW5kIHRpbGVfaCwgd2hpY2ggcmVw cmVzZW50IHRoZQo+ID4gPiA+IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNpemVzIG9mIGEgdGls ZS4KPiA+ID4gPiAKPiA+ID4gPiBUaGlzIG9uZSB1c2VzIHRoYXQgdG8gcGx1bWIgdGhyb3VnaCBk cm0gY29yZSBpbiBvcmRlciB0byBiZSBhYmxlIHRvCj4gPiA+ID4gaGFuZGxlIGxpbmVhciB0aWxl IGZvcm1hdHMgd2l0aG91dCB0aGUgbmVlZCBmb3IgZHJpdmVycyB0byByb2xsIHVwCj4gPiA+ID4g dGhlaXIgb3duIGltcGxlbWVudGF0aW9uLgo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgcGF0Y2ggaGFk IGJlZW4gd3JpdHRlbiB3aXRoIE1hbGktZHAgWDBMMiBhbmQgWDBMMCBpbiBtaW5kIHdoaWNoCj4g PiA+ID4gaXMgYSAxIHBsYW5lIFlDYkNyIDQyMCBmb3JtYXQgd2l0aCBhIDJ4MiB0aWxlLCB0aGF0 IHVzZXMgaW4gYXZlcmFnZSAyCj4gPiA+ID4gYnl0ZXMgcGVyIHBpeGVsIGFuZCB3aGVyZSB0aWxl cyBhcmUgbGFpZCBvdXQgaW4gYSBsaW5lYXIgbWFubmVyLgo+ID4gPiA+IAo+ID4gPiA+IE5vdyB3 aGF0IGFyZSB0aGUgcmVzdHJpY3Rpb25zOgo+ID4gPiA+IAo+ID4gPiA+IDEuIFBpdGNoIGluIGJ5 dGVzIGlzIGV4cGVjdGVkIHRvIGNvdmVyIGF0IGxlYXN0IHRpbGVfaCAqIHdpZHRoIGluCj4gPiA+ ID4gcGl4ZWxzLiBEdWUgdG8gdGhpcyB0aGUgcGxhY2VzIHdoZXJlIHRoZSBwaXRjaCBpcyBjaGVj a2VkL3VzZWQgbmVlZCB0bwo+ID4gPiA+IGJlIHVwZGF0ZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVy YXRpb24gdGhlIHRpbGVfdywgdGlsZV9oIGFuZAo+ID4gPiA+IHRpbGVfc2l6ZS4KPiA+ID4gPiAg ICAgdGlsZV9zaXplID0gY3BwICogdGlsZV93ICogdGlsZV9oCj4gPiA+ID4gCj4gPiA+ID4gMi4g V2hlbiBkb2luZyBzb3VyY2UgY3JvcHBpbmcgcGxhbmVfc3JjX3gveSBuZWVkIHRvIGJlIGEgbXVs dGlwbGUgb2YKPiA+ID4gPiB0aWxlX3cvdGlsZV9oIGFuZCB3ZSBuZWVkIHRvIHRha2UgaW50byBj b25zaWRlcmF0aW9uIHRoZSB0aWxlX3cvdGlsZV9oCj4gPiA+ID4gd2hlbiBjb21wdXRpbmcgdGhl IHN0YXJ0IGFkZHJlc3MuCj4gPiA+ID4gCj4gPiA+ID4gRm9yIGFsbCBub24tdGlsZWQgZm9ybWF0 cyB0aGUgdGlsZV93IGFuZCB0aWxlX2ggd2lsbCBiZSAxLCBzbyBpZiBJCj4gPiA+ID4gZGlkbid0 IG1pc3MgYW55dGhpbmcgbm90aGluZyBzaG91bGQgY2hhbmdlLgo+ID4gPiA+IAo+ID4gPiA+IFJl Z2FyZGluZyBtdWx0aS1wbGFuYXIgbGluZWFyIHRpbGUgZm9ybWF0cywgSSdtIG5vdCBzdXJlIGhv dyB0aG9zZQo+ID4gPiA+IHNob3VsZCBiZSBoYW5kbGUgSSBraW5kIG9mIGFzc3VtZWQgdGhhdCB0 aWxlX2gvdGlsZV93IHdpbGwgaGF2ZSB0byBiZQo+ID4gPiA+IGRpdmlkZWQgYnkgaG9yaXpvbnRh bC9zdWJzYW1wbGluZy4gQW55d2F5LCBJIHRoaW5rIGl0J3MgYmVzdCB0byBqdXN0Cj4gPiA+ID4g cHV0IGFuIHdhcm5pbmcgaW4gdGhlcmUgYW5kIGhhbmRsZSBpdCB3aGVuIHNvbWVvbmUgdHJpZXMg dG8gYWRkCj4gPiA+ID4gc3VwcG9ydCBmb3IgdGhlbS4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQt b2ZmLWJ5OiBBbGV4YW5kcnUgR2hlb3JnaGUgPGFsZXhhbmRydS1jb3NtaW4uZ2hlb3JnaGVAYXJt LmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAg ICAgICAgICAgICAgICAgfCAgOCArKysKPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9j bWFfaGVscGVyLmMgICAgICAgICAgfCAxMSArKysrLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZvdXJjYy5jICAgICAgICAgICAgICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysrCj4g PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYyAgICAgICAgICAgIHwgMTkg KysrKystLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxw ZXIuYyB8IDEwICsrLS0KPiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oICAgICAgICAg ICAgICAgICAgICAgfCAgMiArCj4gPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKPiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ ID4gPiBpbmRleCAzZWIwNjFlMTFlMmUuLjdhM2U4OTNhNGNkMSAxMDA2NDQKPiA+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYwo+ID4gPiA+IEBAIC0xMDg3LDYgKzEwODcsMTQgQEAgc3RhdGljIGlu dCBkcm1fYXRvbWljX3BsYW5lX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ ICAJCXJldHVybiAtRU5PU1BDOwo+ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiArCS8qIE1h a2Ugc3VyZSBzb3VyY2UgY29vcmRpbmF0ZXMgYXJlIGEgbXVsdGlwbGUgb2YgdGlsZSBzaXplcyAq Lwo+ID4gPiA+ICsJaWYgKChzdGF0ZS0+c3JjX3ggPj4gMTYpICUgc3RhdGUtPmZiLT5mb3JtYXQt PnRpbGVfdyB8fAo+ID4gPiA+ICsJICAgIChzdGF0ZS0+c3JjX3kgPj4gMTYpICUgc3RhdGUtPmZi LT5mb3JtYXQtPnRpbGVfaCkgewo+ID4gPiA+ICsJCURSTV9ERUJVR19BVE9NSUMoIltQTEFORTol ZDolc10gU291cmNlIGNvb3JkaW5hdGVzIGRvIG5vdCBtZWV0IHRpbGUgcmVzdHJpY3Rpb25zIiwK PiA+ID4gPiArCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUpOwo+ID4gPiA+ICsJCXJl dHVybiAtRUlOVkFMOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiAgCWlmIChwbGFuZV9z d2l0Y2hpbmdfY3J0YyhzdGF0ZS0+c3RhdGUsIHBsYW5lLCBzdGF0ZSkpIHsKPiA+ID4gPiAgCQlE Uk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHN3aXRjaGluZyBDUlRDIGRpcmVjdGx5XG4i LAo+ID4gPiA+ICAJCQkJIHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+bmFtZSk7Cj4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiA+ID4gPiBpbmRleCA0N2UwZTJmNjY0MmQuLjRk ODA1MmFkY2U2NyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBl ci5jCj4gPiA+ID4gQEAgLTg3LDYgKzg3LDggQEAgZG1hX2FkZHJfdCBkcm1fZmJfY21hX2dldF9n ZW1fYWRkcihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4gPiAgCXN0cnVjdCBkcm1f Z2VtX2NtYV9vYmplY3QgKm9iajsKPiA+ID4gPiAgCWRtYV9hZGRyX3QgcGFkZHI7Cj4gPiA+ID4g IAl1OCBoX2RpdiA9IDEsIHZfZGl2ID0gMTsKPiA+ID4gPiArCXUzMiB0aWxlX3cgPSBkcm1fZm9y bWF0X3RpbGVfd2lkdGgoZmItPmZvcm1hdCwgcGxhbmUpOwo+ID4gPiA+ICsJdTMyIHRpbGVfaCA9 IGRybV9mb3JtYXRfdGlsZV9oZWlnaHQoZmItPmZvcm1hdCwgcGxhbmUpOwo+ID4gPiA+ICAKPiA+ ID4gPiAgCW9iaiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIHBsYW5lKTsKPiA+ID4gPiAg CWlmICghb2JqKQo+ID4gPiA+IEBAIC05OSw4ICsxMDEsMTMgQEAgZG1hX2FkZHJfdCBkcm1fZmJf Y21hX2dldF9nZW1fYWRkcihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4gPiAgCQl2 X2RpdiA9IGZiLT5mb3JtYXQtPnZzdWI7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+IC0J cGFkZHIgKz0gKGZiLT5mb3JtYXQtPmNwcFtwbGFuZV0gKiAoc3RhdGUtPnNyY194ID4+IDE2KSkg LyBoX2RpdjsKPiA+ID4gPiAtCXBhZGRyICs9IChmYi0+cGl0Y2hlc1twbGFuZV0gKiAoc3RhdGUt PnNyY195ID4+IDE2KSkgLyB2X2RpdjsKPiA+ID4gPiArCXBhZGRyICs9IChmYi0+Zm9ybWF0LT5j cHBbcGxhbmVdICogdGlsZV93ICogKHN0YXRlLT5zcmNfeCA+PiAxNikpCj4gPiA+ID4gKwkJCS8g aF9kaXY7Cj4gPiA+ID4gKwkvKgo+ID4gPiA+ICsJICogRm9yIHRpbGUgZm9ybWF0cyBwaXRjaGVz IGFyZSBleHBlY3RlZCB0byBjb3ZlciBhdCBsZWFzdAo+ID4gPiA+ICsJICogd2lkdGggKiB0aWxl X2ggcGl4ZWxzCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiArCXBhZGRyICs9ICgoZmItPnBpdGNoZXNb cGxhbmVdIC8gdGlsZV9oKSAqIChzdGF0ZS0+c3JjX3kgPj4gMTYpKSAvIHZfZGl2Owo+ID4gPiA+ ICAKPiA+ID4gPiAgCXJldHVybiBwYWRkcjsKPiA+ID4gPiAgfQo+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3Vy Y2MuYwo+ID4gPiA+IGluZGV4IGY1NWNkOTNiYTJkMC4uZDZjOWM1YWE0MDM2IDEwMDY0NAo+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jCj4gPiA+ID4gQEAgLTU1NywzICs1NTcsNTUgQEAgaW50 IGRybV9mb3JtYXRfcGxhbmVfaGVpZ2h0KGludCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50 IHBsYW5lKQo+ID4gPiA+ICAJcmV0dXJuIGhlaWdodCAvIGluZm8tPnZzdWI7Cj4gPiA+ID4gIH0K PiA+ID4gPiAgRVhQT1JUX1NZTUJPTChkcm1fZm9ybWF0X3BsYW5lX2hlaWdodCk7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogZHJtX2Zvcm1hdF90aWxlX3dpZHRoIC0gd2lkdGgg b2YgYSB0aWxlIGZvciB0aWxlIGZvcm1hdHMsIHNob3VsZCBiZSAxIGZvciBhbGwKPiA+ID4gPiAr ICogbm9uLXRpbGVkIGZvcm1hdHMuCj4gPiA+ID4gKyAqIEBmb3JtYXQ6IHBpeGVsIGZvcm1hdAo+ ID4gPiA+ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFJl dHVybnM6Cj4gPiA+ID4gKyAqIFRoZSB3aWR0aCBvZiBhIHRpbGUsIGRlcGVuZGluZyBvbiB0aGUg cGxhbmUgaW5kZXggYW5kIGhvcml6b250YWwgc3ViLXNhbXBsaW5nCj4gPiA+ID4gKyAqLwo+ID4g PiA+ICt1aW50MzJfdCBkcm1fZm9ybWF0X3RpbGVfd2lkdGgoY29uc3Qgc3RydWN0IGRybV9mb3Jt YXRfaW5mbyAqaW5mbywgaW50IHBsYW5lKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlXQVJOX09OKCFp bmZvLT50aWxlX3cpOwo+ID4gPiA+ICsJaWYgKHBsYW5lID09IDAgfHwgaW5mby0+dGlsZV93ID09 IDEpCj4gPiA+ID4gKwkJcmV0dXJuIGluZm8tPnRpbGVfdzsKPiA+ID4gPiArCj4gPiA+ID4gKwkv Kgo+ID4gPiA+ICsJICogTXVsdGkgcGxhbmFyIHRpbGVkIGZvcm1hdHMgaGF2ZSBuZXZlciBiZWVu IHRlc3RlZCwgY2hlY2sgdGhhdAo+ID4gPiA+ICsJICogYnVmZmVyIHJlc3RyaWN0aW9ucyBhbmQg c291cmNlIGNyb3BwaW5nIG1lZXQgdGhlIGZvcm1hdCBsYXlvdXQKPiA+ID4gPiArCSAqIGV4cGVj dGF0aW9ucy4KPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJV0FSTl9PTigiTXVsdGktcGxhbmFyIHRp bGVkIGZvcm1hdHMgdW5zdXBwb3J0ZWQiKTsKPiA+ID4gPiArCVdBUk5fT04oaW5mby0+dGlsZV93 ICUgaW5mby0+aHN1Yik7Cj4gPiA+ID4gKwlyZXR1cm4gaW5mby0+dGlsZV93IC8gaW5mby0+aHN1 YjsKPiA+ID4gPiArfQo+ID4gPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9mb3JtYXRfdGlsZV93aWR0 aCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogZHJtX2Zvcm1hdF90aWxlX2hl aWdodCAtIGhlaWdodCBvZiBhIHRpbGUgZm9yIHRpbGUgZm9ybWF0cywgc2hvdWxkIGJlIDEgZm9y Cj4gPiA+ID4gKyAqIGFsbCBub24tdGlsZWQgZm9ybWF0cy4KPiA+ID4gPiArICogQGZvcm1hdDog cGl4ZWwgZm9ybWF0Cj4gPiA+ID4gKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKPiA+ID4gPiArICoK PiA+ID4gPiArICogUmV0dXJuczoKPiA+ID4gPiArICogVGhlIGhlaWdodCBvZiBhIHRpbGUsIGRl cGVuZGluZyBvbiB0aGUgcGxhbmUgaW5kZXggYW5kIHZlcnRpY2FsIHN1Yi1zYW1wbGluZwo+ID4g PiA+ICsgKi8KPiA+ID4gPiArdWludDMyX3QgZHJtX2Zvcm1hdF90aWxlX2hlaWdodChjb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvLCBpbnQgcGxhbmUpCj4gPiA+ID4gK3sKPiA+ID4g PiArCVdBUk5fT04oIWluZm8tPnRpbGVfaCk7Cj4gPiA+ID4gKwlpZiAocGxhbmUgPT0gMCB8fCBp bmZvLT50aWxlX2ggPT0gMSkKPiA+ID4gPiArCQlyZXR1cm4gaW5mby0+dGlsZV9oOwo+ID4gPiA+ ICsKPiA+ID4gPiArCS8qCj4gPiA+ID4gKwkgKiBNdWx0aSBwbGFuYXIgdGlsZWQgZm9ybWF0cyBo YXZlIG5ldmVyIGJlZW4gdGVzdGVkLCBjaGVjayB0aGF0Cj4gPiA+ID4gKwkgKiBidWZmZXIgcmVz dHJpY3Rpb25zIGFuZCBzb3VyY2UgY3JvcHBpbmcgbWVldCB0aGUgZm9ybWF0IGxheW91dAo+ID4g PiA+ICsJICogZXhwZWN0YXRpb25zLgo+ID4gPiA+ICsJICovCj4gPiA+ID4gKwlXQVJOX09OKCJN dWx0aS1wbGFuYXIgdGlsZWQgZm9ybWF0cyB1bnN1cHBvcnRlZCIpOwo+ID4gPiA+ICsJV0FSTl9P TihpbmZvLT50aWxlX2ggJSBpbmZvLT52c3ViKTsKPiA+ID4gPiArCXJldHVybiBpbmZvLT50aWxl X2ggLyBpbmZvLT52c3ViOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2Zv cm1hdF90aWxlX2hlaWdodCk7Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZnJhbWVidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ID4g PiA+IGluZGV4IDc4MWFmMWQ0MmQ3Ni4uNTc1MDllNTFjYjgwIDEwMDY0NAo+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ID4gPiA+IEBAIC0xOTEsMTkgKzE5MSwzMiBAQCBz dGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ ID4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0gZmJfcGxhbmVfd2lkdGgoci0+d2lkdGgsIGluZm8s IGkpOwo+ID4gPiA+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBmYl9wbGFuZV9oZWlnaHQoci0+ aGVpZ2h0LCBpbmZvLCBpKTsKPiA+ID4gPiAgCQl1bnNpZ25lZCBpbnQgY3BwID0gaW5mby0+Y3Bw W2ldOwo+ID4gPiA+ICsJCXVuc2lnbmVkIGludCB0aWxlX3cgPSBkcm1fZm9ybWF0X3RpbGVfd2lk dGgoaW5mbywgaSk7Cj4gPiA+ID4gKwkJdW5zaWduZWQgaW50IHRpbGVfaCA9IGRybV9mb3JtYXRf dGlsZV9oZWlnaHQoaW5mbywgaSk7Cj4gPiA+ID4gKwkJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSA9 IGNwcCAqIHRpbGVfdyAqIHRpbGVfaDsKPiA+ID4gPiArCQl1bnNpZ25lZCBpbnQgbnVtX2h0aWxl czsKPiA+ID4gPiArCQl1bnNpZ25lZCBpbnQgbnVtX3Z0aWxlczsKPiA+ID4gPiAgCj4gPiA+ID4g IAkJaWYgKCFyLT5oYW5kbGVzW2ldKSB7Cj4gPiA+ID4gIAkJCURSTV9ERUJVR19LTVMoIm5vIGJ1 ZmZlciBvYmplY3QgaGFuZGxlIGZvciBwbGFuZSAlZFxuIiwgaSk7Cj4gPiA+ID4gIAkJCXJldHVy biAtRUlOVkFMOwo+ID4gPiA+ICAJCX0KPiA+ID4gPiAgCj4gPiA+ID4gLQkJaWYgKCh1aW50NjRf dCkgd2lkdGggKiBjcHAgPiBVSU5UX01BWCkKPiA+ID4gPiArCQlpZiAoKHdpZHRoICUgdGlsZV93 KSB8fCAoaGVpZ2h0ICUgdGlsZV9oKSkgewo+ID4gPiAKPiA+ID4gSSB0aGluayB0aGlzIGlzIHRv byBzdHJpY3QuIFlvdSBjYW4gY2FydmUgb3V0IGEgc3ViLXBhcnQgb2YgYW55dGhpbmcKPiA+ID4g cmVhbGx5IHdpdGggYSBkcm1fZnJhbWVidWZmZXIuIFNlZSBiZWxvdywgd2Ugb25seSBjaGVja2Vk IHRoYXQgd2lkdGggKiBjcHAKPiA+ID4gPCBwaXRjaGVzLCBzbyBsZWZ0b3ZlciBieXRlcy9iaXRz IHdhcyBhbHdheXMgb2suCj4gPiA+IAo+ID4gPiBZb3VyIGRyaXZlciBtaWdodCBoYXZlIGFkZGl0 aW9uYWwgY29uc3RyYWludHMsIGJ1dCB0aGF0J3MgYSBkaWZmZXJlbnQKPiA+ID4gc3RvcnkuCj4g PiAKPiA+IFRoaXMgc2VlbSBsaWtlIHRoZSBvbmx5IHRoaW5nIHRoYXQgd2UgaGF2ZSBpbiBjb21t b24gd2l0aAo+ID4gRFJNX0ZPUk1BVF9NT0RfU0FNU1VOR182NF8zMl9USUxFL05WMTJNVCwgd2hp Y2ggaXMgZXZlbiBtb3JlCj4gPiByZXN0cmljdGl2ZSB0aGFuIHRoYXQgYW5kIGl0IHdhbnRzIHRo ZSB3aWR0aCB0byBiZSBhIG11bHRpcGxlIG9mIDEyOC4KPiA+IAo+ID4gPiAKPiA+ID4gPiArCQkJ RFJNX0RFQlVHX0tNUygiYnVmZmVyIHdpZHRoL2hlaWdodCBuZWVkIHRvIGJlIGEgbXVsdGlwbGUg b2YgdGlsZSBkaW1lbnNpb25zXG4iKTsKPiA+ID4gPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ ID4gKwkJfQo+ID4gPiA+ICsKPiA+ID4gPiArCQludW1faHRpbGVzID0gd2lkdGggLyB0aWxlX3c7 Cj4gPiA+ID4gKwkJbnVtX3Z0aWxlcyA9IGhlaWdodCAvIHRpbGVfaDsKPiA+ID4gPiArCj4gPiA+ ID4gKwkJaWYgKCh1aW50NjRfdCludW1faHRpbGVzICogdGlsZV9zaXplID4gVUlOVF9NQVgpCj4g PiA+ID4gIAkJCXJldHVybiAtRVJBTkdFOwo+ID4gPiA+ICAKPiA+ID4gPiAtCQlpZiAoKHVpbnQ2 NF90KSBoZWlnaHQgKiByLT5waXRjaGVzW2ldICsgci0+b2Zmc2V0c1tpXSA+IFVJTlRfTUFYKQo+ ID4gPiA+ICsJCWlmICgodWludDY0X3QpbnVtX3Z0aWxlcyAqIHItPnBpdGNoZXNbaV0gKyByLT5v ZmZzZXRzW2ldID4gVUlOVF9NQVgpCj4gPiA+ID4gIAkJCXJldHVybiAtRVJBTkdFOwo+ID4gPiA+ ICAKPiA+ID4gPiAtCQlpZiAoci0+cGl0Y2hlc1tpXSA8IHdpZHRoICogY3BwKSB7Cj4gPiA+ID4g KwkJaWYgKHItPnBpdGNoZXNbaV0gPCBudW1faHRpbGVzICogdGlsZV9zaXplKSB7Cj4gPiA+IAo+ ID4gPiBFc3NlbnRpYWxseSB5b3UgZGVmaW5lIC0+cGl0Y2hlcyBub3cgdG8gbWVhbiBhIHJvdyBv ZiB0aWxlcy4gQXQgbGVhc3QgZm9yCj4gPiA+IGJpZ2dlciB0aWxlZCBmb3JtYXRzICh1c2luZyBt b2RpZmllcnMpIHdlIGRvbid0IHVzZSBpdCBsaWtlIHRoYXQuIEJ1dCBpdAo+ID4gPiBhbHNvIGdl dHMgYXdrd2FyZCBxdWlja2x5IGlmIHdlIGtlZXAgcGl0Y2hlcyB0byBtZWFuIGJ5dGVzIGluIG9u ZSByb3cgb2YKPiA+ID4gcGl4ZWxzLiBGb3IgdGhhdCBjYXNlIHdlJ2QgaGF2ZQo+ID4gCj4gPiBU aGF0J3MgaG93IGV2ZXJ5dGhpbmcgc3RhcnRlZCwgd2UgaGF2ZSBhbHJlYWR5IGludGVybmFsIHVz ZXJzcGFjZSBhbmQKPiA+IGRyaXZlcnMgdGhhdCBleHBlY3QgYW5kIHBhc3MgcGl0Y2ggYXMgYSBy b3cgb2YgdGlsZXMgaW4gYnl0ZXMuCj4gPiAKPiA+IEZvciB0aGUgdGlsZXMgZm9ybWF0IGluIHRo aXMgcGF0Y2hzZXQoWDBMMi9YMEwwKSB3aGljaCBvcmRlcnMgdGhlIHRpbGVzCj4gPiBpbiBsaW5l YXIgbWFubmVyIHRoZSBwaXRjaCB3aWxsIGF0IGxlYXN0IGdldCB5b3UgYXQgdGhlIGJlZ2lubmlu ZyBvZiBhCj4gPiByb3cuCj4gPiAKPiA+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCdz IHRoZSBtZWFuaW5nIG9mIGEgcGl0Y2ggZm9yCj4gPiBEUk1fRk9STUFUX01PRF9TQU1TVU5HXzY0 XzMyX1RJTEUgd2hpY2ggb3JkZXJzIHRoZSB0aWxlcyBpbiBaIHNoYXBlLgo+ID4gSG93IGZhciB3 aWxsIGEgcGl0Y2ggZm9yIHRoaXMgZm9ybWF0IGdldCB5b3UsIGl0IHNlZW1zIHRoYXQgdXNpbmcg anVzdAo+ID4gd2l0ZHRoICogY3BwIHdpbGwgZ2V0IHlvdSBzb21ld2hlcmUgaW4gdGhlIG1pZGRs ZS4KPiAKPiBTbyB0aGVyZSdzIDIgaW50ZXJwcmV0YXRpb25zIG9mIHBpdGNoIGlmIHlvdSBoYXZl IGEgdGlsZS9ibG9jayBsYXlvdXQ6Cj4gCj4gLSBXaGF0IHlvdSBkbywgd2hlcmUgcGl0Y2ggPSBu dW1fdGlsZXNfcGVyX3JvdyAqIHRpbGVfc2l6ZS4gQWRkaW5nIHBpdGNoCj4gICB0byB0aGUgYmFz ZSBhZGRyZXNzIHdpbGwgdGhlbiBhZHZhbmNlIHRpbGVfaCBwaXhlbHMuIExldCdzIGNhbGwgdGhp cwo+ICAgYWxleF9waXRjaC4KPiAKPiAtIFdoYXQgSSdtIHByb3Bvc2luZywgYW5kIHdoYXQgTlYx Mk1UIGRvZXMsIGFuZCB3aGF0IGV2ZXJ5IG90aGVyIGRyaXZlcgo+ICAgZG9lcyAoYWZhaWssIEkg ZGlkbid0IGNhcmVmdWxseSBjaGVjayB0aGVtIGFsbCk6IFByZXRlbmQgdGhlcmUncyBubwo+ICAg dGlsZSwgYW5kIGNvbXB1dGUgdGhlIHBpdGNoIGFzIGlmIGl0J3MgYSBsaW5lYXIgZm9ybWF0LiBU aGUgcmVhc29uCj4gICBiZWhpbmQgdGhpcyBpcyB0aGF0IGZhaXJseSBvZnRlbiBmb3IgdGlsZWQg bGF5b3V0cyAoYnV0IG5vdCBhbHdheXMpLCB5b3UKPiAgIGhhdmUgbWFnaWMgcmVtYXBwaW5nIGhh cmR3YXJlLCB3aGljaCBjYW4gcHJlc2VudCBhIGxpbmVhciBsYXlvdXQgdG8geW91Lgo+ICAgU28g Zm9yIE5WMTJNVCB0aGF0IHdvdWxkIHJlc29sdmUgdGhlIFotc2hhcGUgYW5kIG1hY3JvYmxvY2sg bGF5b3V0LCBhbmQKPiAgIGdpdmUgeW91IGEgbm9ybWFsIE5WMTIgZnJhbWVidWZmZXIuIExldCdz IGNhbGwgdGhpcyBkcm1fcGl0Y2guIE5vdGUgdGhhdAo+ICAgdGhlIGRybSBwaXRjaCBkb2VzIF9u b3RfIG1ha2UgYW55IHNlbnNlIHdoZW4geW91IGFkZCBpdCB0byB0aGUgcGh5c2ljYWwKPiAgIGJh c2UgYWRkcmVzcywgb25seSBpZiB5b3UgYWRkIG11dGxpcGxlJ3Mgb2YgdGlsZV9oLCB0byBnZXQg YW4gZW50aXJlCj4gICB0aWxlIHJvdy4KPiAKPiAKPiBUaGUgcmVsYXRpb25zaGlwIGlzIGRybV9w aXRjaCA9IGFsZXhfcGl0Y2ggLyB0aWxlX2guIEknbSBub3QgYXdhcmUgb2YgYW55Cj4gZm9ybWF0 IHdoZXJlIHRoYXQgZG9lc24ndCBkZXZpZGUgZXZlbmx5LCBzbyBpbiBwcmFjdGljZSBpdCBkb2Vz bid0IG1hdHRlcgo+IHdoaWNoIG9uZSB5b3UgcGljay4gSW1vIGVpdGhlciBoYXMgdXAvZG93bnNp ZGVzLgoKU2luY2UgZXZlcnlvbmUgaXMgYWxyZWFkeSB1c2luZyB0aGUgbGluZWFyIHBpdGNoIGFw cHJvYWNoIEknZCBzdWdnZXN0CnN0aWNraW5nIHdpdGggdGhhdC4gTWlnaHQgbWFrZSBsaWZlIGEg bGl0dGxlIGVhc2llciBmb3IgZ2VuZXJpYwp1c2Vyc3BhY2UgKHRob3VnaCBpdCBzdGlsbCBuZWVk cyB0byBrbm93IG90aGVyIGRldGFpbHMgb2YgdGhlIHRpbGluZwpmb3JtYXQgb2YgY291cnNlKS4K Ci0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==