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: Wed, 22 Aug 2018 16:18:54 +0300 Message-ID: <20180822131854.GC5565@intel.com> References: <20180821183004.6775-1-alexandru-cosmin.gheorghe@arm.com> <20180821183004.6775-5-alexandru-cosmin.gheorghe@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0AA2E89E9E for ; Wed, 22 Aug 2018 13:19:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180821183004.6775-5-alexandru-cosmin.gheorghe@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexandru Gheorghe Cc: nd@arm.com, airlied@linux.ie, liviu.dudau@arm.com, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, daniel.vetter@ffwll.ch, malidp@foss.arm.com, ayan.halder@arm.com List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjEsIDIwMTggYXQgMDc6MzA6MDNQTSArMDEwMCwgQWxleGFuZHJ1IEdoZW9y Z2hlIHdyb3RlOgo+IFRoZSBwcmV2aW91cyBwYXRjaCBhZGRlZCB0aWxlX3cgYW5kIHRpbGVfaCwg d2hpY2ggcmVwcmVzZW50IHRoZQo+IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNpemVzIG9mIGEg dGlsZS4KPiAKPiBUaGlzIG9uZSB1c2VzIHRoYXQgdG8gcGx1bWIgdGhyb3VnaCBkcm0gY29yZSBp biBvcmRlciB0byBiZSBhYmxlIHRvCj4gaGFuZGxlIGxpbmVhciB0aWxlIGZvcm1hdHMgd2l0aG91 dCB0aGUgbmVlZCBmb3IgZHJpdmVycyB0byByb2xsIHVwCj4gdGhlaXIgb3duIGltcGxlbWVudGF0 aW9uLgo+IAo+IFRoaXMgcGF0Y2ggaGFkIGJlZW4gd3JpdHRlbiB3aXRoIE1hbGktZHAgWDBMMiBh bmQgWDBMMCBpbiBtaW5kIHdoaWNoCj4gaXMgYSAxIHBsYW5lIFlDYkNyIDQyMCBmb3JtYXQgd2l0 aCBhIDJ4MiB0aWxlLCB0aGF0IHVzZXMgaW4gYXZlcmFnZSAyCj4gYnl0ZXMgcGVyIHBpeGVsIGFu ZCB3aGVyZSB0aWxlcyBhcmUgbGFpZCBvdXQgaW4gYSBsaW5lYXIgbWFubmVyLgo+IAo+IE5vdyB3 aGF0IGFyZSB0aGUgcmVzdHJpY3Rpb25zOgo+IAo+IDEuIFBpdGNoIGluIGJ5dGVzIGlzIGV4cGVj dGVkIHRvIGNvdmVyIGF0IGxlYXN0IHRpbGVfaCAqIHdpZHRoIGluCj4gcGl4ZWxzLiBEdWUgdG8g dGhpcyB0aGUgcGxhY2VzIHdoZXJlIHRoZSBwaXRjaCBpcyBjaGVja2VkL3VzZWQgbmVlZCB0bwo+ IGJlIHVwZGF0ZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIHRpbGVfdywgdGlsZV9o IGFuZAo+IHRpbGVfc2l6ZS4KPiAgICAgdGlsZV9zaXplID0gY3BwICogdGlsZV93ICogdGlsZV9o Cj4gCj4gMi4gV2hlbiBkb2luZyBzb3VyY2UgY3JvcHBpbmcgcGxhbmVfc3JjX3gveSBuZWVkIHRv IGJlIGEgbXVsdGlwbGUgb2YKPiB0aWxlX3cvdGlsZV9oIGFuZCB3ZSBuZWVkIHRvIHRha2UgaW50 byBjb25zaWRlcmF0aW9uIHRoZSB0aWxlX3cvdGlsZV9oCj4gd2hlbiBjb21wdXRpbmcgdGhlIHN0 YXJ0IGFkZHJlc3MuCj4gCj4gRm9yIGFsbCBub24tdGlsZWQgZm9ybWF0cyB0aGUgdGlsZV93IGFu ZCB0aWxlX2ggd2lsbCBiZSAxLCBzbyBpZiBJCj4gZGlkbid0IG1pc3MgYW55dGhpbmcgbm90aGlu ZyBzaG91bGQgY2hhbmdlLgo+IAo+IFJlZ2FyZGluZyBtdWx0aS1wbGFuYXIgbGluZWFyIHRpbGUg Zm9ybWF0cywgSSdtIG5vdCBzdXJlIGhvdyB0aG9zZQo+IHNob3VsZCBiZSBoYW5kbGUgSSBraW5k IG9mIGFzc3VtZWQgdGhhdCB0aWxlX2gvdGlsZV93IHdpbGwgaGF2ZSB0byBiZQo+IGRpdmlkZWQg YnkgaG9yaXpvbnRhbC9zdWJzYW1wbGluZy4gQW55d2F5LCBJIHRoaW5rIGl0J3MgYmVzdCB0byBq dXN0Cj4gcHV0IGFuIHdhcm5pbmcgaW4gdGhlcmUgYW5kIGhhbmRsZSBpdCB3aGVuIHNvbWVvbmUg dHJpZXMgdG8gYWRkCj4gc3VwcG9ydCBmb3IgdGhlbS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4 YW5kcnUgR2hlb3JnaGUgPGFsZXhhbmRydS1jb3NtaW4uZ2hlb3JnaGVAYXJtLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgICAgICAgICAgfCAgOCArKysK PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgICAgICAgICAgfCAxMSArKysr LQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jICAgICAgICAgICAgICAgICB8IDUyICsr KysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYyAg ICAgICAgICAgIHwgMTkgKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1 ZmZlcl9oZWxwZXIuYyB8IDEwICsrLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oICAgICAg ICAgICAgICAgICAgICAgfCAgMiArCj4gIDYgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygr KSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBpbmRleCAzZWIwNjFlMTFl MmUuLjdhM2U4OTNhNGNkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IEBAIC0xMDg3LDYgKzEw ODcsMTQgQEAgc3RhdGljIGludCBkcm1fYXRvbWljX3BsYW5lX2NoZWNrKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAJCXJldHVybiAtRU5PU1BDOwo+ICAJfQo+ICAKPiArCS8qIE1ha2Ugc3Vy ZSBzb3VyY2UgY29vcmRpbmF0ZXMgYXJlIGEgbXVsdGlwbGUgb2YgdGlsZSBzaXplcyAqLwo+ICsJ aWYgKChzdGF0ZS0+c3JjX3ggPj4gMTYpICUgc3RhdGUtPmZiLT5mb3JtYXQtPnRpbGVfdyB8fAo+ ICsJICAgIChzdGF0ZS0+c3JjX3kgPj4gMTYpICUgc3RhdGUtPmZiLT5mb3JtYXQtPnRpbGVfaCkg ewo+ICsJCURSTV9ERUJVR19BVE9NSUMoIltQTEFORTolZDolc10gU291cmNlIGNvb3JkaW5hdGVz IGRvIG5vdCBtZWV0IHRpbGUgcmVzdHJpY3Rpb25zIiwKPiArCQkJCSBwbGFuZS0+YmFzZS5pZCwg cGxhbmUtPm5hbWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQoKRmVlbHMgcmF0aGVyIHdy b25nIHRvIG1lIHRvIHB1dCBzdWNoIGhhcmR3YXJlIHNwZWNpZmljIGxpbWl0YXRpb25zIGludG8K dGhlIGNvcmUuCgo+ICsKPiAgCWlmIChwbGFuZV9zd2l0Y2hpbmdfY3J0YyhzdGF0ZS0+c3RhdGUs IHBsYW5lLCBzdGF0ZSkpIHsKPiAgCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHN3 aXRjaGluZyBDUlRDIGRpcmVjdGx5XG4iLAo+ICAJCQkJIHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+ bmFtZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiBpbmRleCA0N2UwZTJmNjY0 MmQuLjRkODA1MmFkY2U2NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4g QEAgLTg3LDYgKzg3LDggQEAgZG1hX2FkZHJfdCBkcm1fZmJfY21hX2dldF9nZW1fYWRkcihzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9i ajsKPiAgCWRtYV9hZGRyX3QgcGFkZHI7Cj4gIAl1OCBoX2RpdiA9IDEsIHZfZGl2ID0gMTsKPiAr CXUzMiB0aWxlX3cgPSBkcm1fZm9ybWF0X3RpbGVfd2lkdGgoZmItPmZvcm1hdCwgcGxhbmUpOwo+ ICsJdTMyIHRpbGVfaCA9IGRybV9mb3JtYXRfdGlsZV9oZWlnaHQoZmItPmZvcm1hdCwgcGxhbmUp Owo+ICAKPiAgCW9iaiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIHBsYW5lKTsKPiAgCWlm ICghb2JqKQo+IEBAIC05OSw4ICsxMDEsMTMgQEAgZG1hX2FkZHJfdCBkcm1fZmJfY21hX2dldF9n ZW1fYWRkcihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCQl2X2RpdiA9IGZiLT5mb3Jt YXQtPnZzdWI7Cj4gIAl9Cj4gIAo+IC0JcGFkZHIgKz0gKGZiLT5mb3JtYXQtPmNwcFtwbGFuZV0g KiAoc3RhdGUtPnNyY194ID4+IDE2KSkgLyBoX2RpdjsKPiAtCXBhZGRyICs9IChmYi0+cGl0Y2hl c1twbGFuZV0gKiAoc3RhdGUtPnNyY195ID4+IDE2KSkgLyB2X2RpdjsKPiArCXBhZGRyICs9IChm Yi0+Zm9ybWF0LT5jcHBbcGxhbmVdICogdGlsZV93ICogKHN0YXRlLT5zcmNfeCA+PiAxNikpCj4g KwkJCS8gaF9kaXY7Cj4gKwkvKgo+ICsJICogRm9yIHRpbGUgZm9ybWF0cyBwaXRjaGVzIGFyZSBl eHBlY3RlZCB0byBjb3ZlciBhdCBsZWFzdAo+ICsJICogd2lkdGggKiB0aWxlX2ggcGl4ZWxzCj4g KwkgKi8KPiArCXBhZGRyICs9ICgoZmItPnBpdGNoZXNbcGxhbmVdIC8gdGlsZV9oKSAqIChzdGF0 ZS0+c3JjX3kgPj4gMTYpKSAvIHZfZGl2Owo+ICAKPiAgCXJldHVybiBwYWRkcjsKPiAgfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9mb3VyY2MuYwo+IGluZGV4IGY1NWNkOTNiYTJkMC4uZDZjOWM1YWE0MDM2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZvdXJjYy5jCj4gQEAgLTU1NywzICs1NTcsNTUgQEAgaW50IGRybV9mb3JtYXRfcGxh bmVfaGVpZ2h0KGludCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50IHBsYW5lKQo+ICAJcmV0 dXJuIGhlaWdodCAvIGluZm8tPnZzdWI7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZm9ybWF0 X3BsYW5lX2hlaWdodCk7Cj4gKwo+ICsvKioKPiArICogZHJtX2Zvcm1hdF90aWxlX3dpZHRoIC0g d2lkdGggb2YgYSB0aWxlIGZvciB0aWxlIGZvcm1hdHMsIHNob3VsZCBiZSAxIGZvciBhbGwKPiAr ICogbm9uLXRpbGVkIGZvcm1hdHMuCj4gKyAqIEBmb3JtYXQ6IHBpeGVsIGZvcm1hdAo+ICsgKiBA cGxhbmU6IHBsYW5lIGluZGV4Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRoZSB3aWR0aCBv ZiBhIHRpbGUsIGRlcGVuZGluZyBvbiB0aGUgcGxhbmUgaW5kZXggYW5kIGhvcml6b250YWwgc3Vi LXNhbXBsaW5nCj4gKyAqLwo+ICt1aW50MzJfdCBkcm1fZm9ybWF0X3RpbGVfd2lkdGgoY29uc3Qg c3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbywgaW50IHBsYW5lKQo+ICt7Cj4gKwlXQVJOX09O KCFpbmZvLT50aWxlX3cpOwo+ICsJaWYgKHBsYW5lID09IDAgfHwgaW5mby0+dGlsZV93ID09IDEp Cj4gKwkJcmV0dXJuIGluZm8tPnRpbGVfdzsKPiArCj4gKwkvKgo+ICsJICogTXVsdGkgcGxhbmFy IHRpbGVkIGZvcm1hdHMgaGF2ZSBuZXZlciBiZWVuIHRlc3RlZCwgY2hlY2sgdGhhdAo+ICsJICog YnVmZmVyIHJlc3RyaWN0aW9ucyBhbmQgc291cmNlIGNyb3BwaW5nIG1lZXQgdGhlIGZvcm1hdCBs YXlvdXQKPiArCSAqIGV4cGVjdGF0aW9ucy4KPiArCSAqLwo+ICsJV0FSTl9PTigiTXVsdGktcGxh bmFyIHRpbGVkIGZvcm1hdHMgdW5zdXBwb3J0ZWQiKTsKPiArCVdBUk5fT04oaW5mby0+dGlsZV93 ICUgaW5mby0+aHN1Yik7Cj4gKwlyZXR1cm4gaW5mby0+dGlsZV93IC8gaW5mby0+aHN1YjsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MKGRybV9mb3JtYXRfdGlsZV93aWR0aCk7Cj4gKwo+ICsvKioKPiAr ICogZHJtX2Zvcm1hdF90aWxlX2hlaWdodCAtIGhlaWdodCBvZiBhIHRpbGUgZm9yIHRpbGUgZm9y bWF0cywgc2hvdWxkIGJlIDEgZm9yCj4gKyAqIGFsbCBub24tdGlsZWQgZm9ybWF0cy4KPiArICog QGZvcm1hdDogcGl4ZWwgZm9ybWF0Cj4gKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKPiArICoKPiAr ICogUmV0dXJuczoKPiArICogVGhlIGhlaWdodCBvZiBhIHRpbGUsIGRlcGVuZGluZyBvbiB0aGUg cGxhbmUgaW5kZXggYW5kIHZlcnRpY2FsIHN1Yi1zYW1wbGluZwo+ICsgKi8KPiArdWludDMyX3Qg ZHJtX2Zvcm1hdF90aWxlX2hlaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZv LCBpbnQgcGxhbmUpCj4gK3sKPiArCVdBUk5fT04oIWluZm8tPnRpbGVfaCk7Cj4gKwlpZiAocGxh bmUgPT0gMCB8fCBpbmZvLT50aWxlX2ggPT0gMSkKPiArCQlyZXR1cm4gaW5mby0+dGlsZV9oOwo+ ICsKPiArCS8qCj4gKwkgKiBNdWx0aSBwbGFuYXIgdGlsZWQgZm9ybWF0cyBoYXZlIG5ldmVyIGJl ZW4gdGVzdGVkLCBjaGVjayB0aGF0Cj4gKwkgKiBidWZmZXIgcmVzdHJpY3Rpb25zIGFuZCBzb3Vy Y2UgY3JvcHBpbmcgbWVldCB0aGUgZm9ybWF0IGxheW91dAo+ICsJICogZXhwZWN0YXRpb25zLgo+ ICsJICovCj4gKwlXQVJOX09OKCJNdWx0aS1wbGFuYXIgdGlsZWQgZm9ybWF0cyB1bnN1cHBvcnRl ZCIpOwo+ICsJV0FSTl9PTihpbmZvLT50aWxlX2ggJSBpbmZvLT52c3ViKTsKPiArCXJldHVybiBp bmZvLT50aWxlX2ggLyBpbmZvLT52c3ViOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2Zvcm1h dF90aWxlX2hlaWdodCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+IGluZGV4IDc4MWFm MWQ0MmQ3Ni4uNTc1MDllNTFjYjgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZnJhbWVidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ IEBAIC0xOTEsMTkgKzE5MSwzMiBAQCBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0gZmJfcGxhbmVfd2lk dGgoci0+d2lkdGgsIGluZm8sIGkpOwo+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBmYl9wbGFu ZV9oZWlnaHQoci0+aGVpZ2h0LCBpbmZvLCBpKTsKPiAgCQl1bnNpZ25lZCBpbnQgY3BwID0gaW5m by0+Y3BwW2ldOwo+ICsJCXVuc2lnbmVkIGludCB0aWxlX3cgPSBkcm1fZm9ybWF0X3RpbGVfd2lk dGgoaW5mbywgaSk7Cj4gKwkJdW5zaWduZWQgaW50IHRpbGVfaCA9IGRybV9mb3JtYXRfdGlsZV9o ZWlnaHQoaW5mbywgaSk7Cj4gKwkJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSA9IGNwcCAqIHRpbGVf dyAqIHRpbGVfaDsKPiArCQl1bnNpZ25lZCBpbnQgbnVtX2h0aWxlczsKPiArCQl1bnNpZ25lZCBp bnQgbnVtX3Z0aWxlczsKPiAgCj4gIAkJaWYgKCFyLT5oYW5kbGVzW2ldKSB7Cj4gIAkJCURSTV9E RUJVR19LTVMoIm5vIGJ1ZmZlciBvYmplY3QgaGFuZGxlIGZvciBwbGFuZSAlZFxuIiwgaSk7Cj4g IAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gLQkJaWYgKCh1aW50NjRfdCkgd2lkdGgg KiBjcHAgPiBVSU5UX01BWCkKPiArCQlpZiAoKHdpZHRoICUgdGlsZV93KSB8fCAoaGVpZ2h0ICUg dGlsZV9oKSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJidWZmZXIgd2lkdGgvaGVpZ2h0IG5lZWQg dG8gYmUgYSBtdWx0aXBsZSBvZiB0aWxlIGRpbWVuc2lvbnNcbiIpOwo+ICsJCQlyZXR1cm4gLUVJ TlZBTDsKPiArCQl9Cj4gKwo+ICsJCW51bV9odGlsZXMgPSB3aWR0aCAvIHRpbGVfdzsKPiArCQlu dW1fdnRpbGVzID0gaGVpZ2h0IC8gdGlsZV9oOwo+ICsKPiArCQlpZiAoKHVpbnQ2NF90KW51bV9o dGlsZXMgKiB0aWxlX3NpemUgPiBVSU5UX01BWCkKPiAgCQkJcmV0dXJuIC1FUkFOR0U7Cj4gIAo+ IC0JCWlmICgodWludDY0X3QpIGhlaWdodCAqIHItPnBpdGNoZXNbaV0gKyByLT5vZmZzZXRzW2ld ID4gVUlOVF9NQVgpCj4gKwkJaWYgKCh1aW50NjRfdCludW1fdnRpbGVzICogci0+cGl0Y2hlc1tp XSArIHItPm9mZnNldHNbaV0gPiBVSU5UX01BWCkKPiAgCQkJcmV0dXJuIC1FUkFOR0U7Cj4gIAo+ IC0JCWlmIChyLT5waXRjaGVzW2ldIDwgd2lkdGggKiBjcHApIHsKPiArCQlpZiAoci0+cGl0Y2hl c1tpXSA8IG51bV9odGlsZXMgKiB0aWxlX3NpemUpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiYmFk IHBpdGNoICV1IGZvciBwbGFuZSAlZFxuIiwgci0+cGl0Y2hlc1tpXSwgaSk7Cj4gIAkJCXJldHVy biAtRUlOVkFMOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f ZnJhbWVidWZmZXJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZl cl9oZWxwZXIuYwo+IGluZGV4IDI4MTBkNDEzMTQxMS4uM2QwMWExYTlkNWQyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMKPiBAQCAtMTYxLDYg KzE2MSwxMSBAQCBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiAgCQl1bnNpZ25lZCBpbnQgd2lkdGggPSBt b2RlX2NtZC0+d2lkdGggLyAoaSA/IGluZm8tPmhzdWIgOiAxKTsKPiAgCQl1bnNpZ25lZCBpbnQg aGVpZ2h0ID0gbW9kZV9jbWQtPmhlaWdodCAvIChpID8gaW5mby0+dnN1YiA6IDEpOwo+ICAJCXVu c2lnbmVkIGludCBtaW5fc2l6ZTsKPiArCQl1bnNpZ25lZCBpbnQgdGlsZV93ID0gZHJtX2Zvcm1h dF90aWxlX3dpZHRoKGluZm8sIGkpOwo+ICsJCXVuc2lnbmVkIGludCB0aWxlX2ggPSBkcm1fZm9y bWF0X3RpbGVfaGVpZ2h0KGluZm8sIGkpOwo+ICsJCXVuc2lnbmVkIGludCB0aWxlX3NpemUgPSBp bmZvLT5jcHBbaV0gKiB0aWxlX3cgKiB0aWxlX2g7Cj4gKwkJdW5zaWduZWQgaW50IG51bV9odGls ZXMgPSB3aWR0aCAvIHRpbGVfdzsKPiArCQl1bnNpZ25lZCBpbnQgbnVtX3Z0aWxlcyA9IGhlaWdo dCAvIHRpbGVfaDsKPiAgCj4gIAkJb2Jqc1tpXSA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxl LCBtb2RlX2NtZC0+aGFuZGxlc1tpXSk7Cj4gIAkJaWYgKCFvYmpzW2ldKSB7Cj4gQEAgLTE2OSw5 ICsxNzQsOCBAQCBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiAgCQkJZ290byBlcnJfZ2VtX29iamVjdF9w dXQ7Cj4gIAkJfQo+ICAKPiAtCQltaW5fc2l6ZSA9IChoZWlnaHQgLSAxKSAqIG1vZGVfY21kLT5w aXRjaGVzW2ldCj4gLQkJCSArIHdpZHRoICogaW5mby0+Y3BwW2ldCj4gLQkJCSArIG1vZGVfY21k LT5vZmZzZXRzW2ldOwo+ICsJCW1pbl9zaXplID0gKG51bV92dGlsZXMgLSAxKSAqIG1vZGVfY21k LT5waXRjaGVzW2ldCj4gKwkJCSArIG51bV9odGlsZXMgKiB0aWxlX3NpemUgKyBtb2RlX2NtZC0+ b2Zmc2V0c1tpXTsKPiAgCj4gIAkJaWYgKG9ianNbaV0tPnNpemUgPCBtaW5fc2l6ZSkgewo+ICAJ CQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2Jqc1tpXSk7Cj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9mb3VyY2MuaCBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+IGluZGV4 IDQxNjgxY2YyYjE0MC4uMDAxYWZjYTliY2ZmIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9mb3VyY2MuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+IEBAIC03Niw2ICs3 Niw4IEBAIGludCBkcm1fZm9ybWF0X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZv cm1hdCk7Cj4gIGludCBkcm1fZm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90 IGZvcm1hdCk7Cj4gIGludCBkcm1fZm9ybWF0X3BsYW5lX3dpZHRoKGludCB3aWR0aCwgdWludDMy X3QgZm9ybWF0LCBpbnQgcGxhbmUpOwo+ICBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWlnaHQoaW50 IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxhbmUpOwo+ICt1aW50MzJfdCBkcm1fZm9y bWF0X3RpbGVfd2lkdGgoY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbywgaW50IHBs YW5lKTsKPiArdWludDMyX3QgZHJtX2Zvcm1hdF90aWxlX2hlaWdodChjb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICppbmZvLCBpbnQgcGxhbmUpOwo+ICBjb25zdCBjaGFyICpkcm1fZ2V0X2Zv cm1hdF9uYW1lKHVpbnQzMl90IGZvcm1hdCwgc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgKmJ1 Zik7Cj4gIAo+ICAjZW5kaWYgLyogX19EUk1fRk9VUkNDX0hfXyAqLwo+IC0tIAo+IDIuMTguMAo+ IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJp LWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK