From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru-Cosmin Gheorghe Subject: Re: [PATCH v3 1/6] drm/fourcc: Add char_per_block, block_w and block_h in drm_format_info Date: Mon, 8 Oct 2018 09:52:04 +0000 Message-ID: <20181008095202.GA3455@e114479-lin.cambridge.arm.com> References: <20181005092606.21100-1-alexandru-cosmin.gheorghe@arm.com> <20181005092606.21100-2-alexandru-cosmin.gheorghe@arm.com> <20181005145148.GF31561@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0042.outbound.protection.outlook.com [104.47.0.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 016D089E2C for ; Mon, 8 Oct 2018 09:52:07 +0000 (UTC) In-Reply-To: <20181005145148.GF31561@phenom.ffwll.local> Content-Language: en-US Content-ID: <9C8254E4A54F504686CD4D64C0D88718@eurprd08.prod.outlook.com> 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: Charles Xu , nd , Matt Szczesiak , "airlied@linux.ie" , Liviu Dudau , "dri-devel@lists.freedesktop.org" , David Garbett , "seanpaul@chromium.org" , Lisa Wu , "daniel.vetter@ffwll.ch" , "malidp@foss.arm.com" , Ayan Halder , "james qian wang (Arm Technology China)" List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKVGhhbmtzIGZvciBoYXZpbmcgYSBsb29rLgoKT24gRnJpLCBPY3QgMDUsIDIw MTggYXQgMDQ6NTE6NDhQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBGcmksIE9j dCAwNSwgMjAxOCBhdCAwOToyNjo0N0FNICswMDAwLCBBbGV4YW5kcnUtQ29zbWluIEdoZW9yZ2hl IHdyb3RlOgo+ID4gRm9yIHNvbWUgcGl4ZWwgZm9ybWF0cyAuY3BwIHN0cnVjdHVyZSBpbiBkcm1f Zm9ybWF0IGluZm8gaXQncyBub3QKPiA+IGVub3VnaCB0byBkZXNjcmliZSB0aGUgcGVjdWxpYXJp dGllcyBvZiB0aGUgcGl4ZWwgbGF5b3V0LCBmb3IgZXhhbXBsZQo+ID4gdGlsZWQgZm9ybWF0cyBv ciBwYWNrZWQgZm9ybWF0cyBhdCBiaXQgbGV2ZWwuCj4gPiAKPiA+IFdoYXQncyBpbXBsZW1lbnRl ZCBoZXJlIGlzIHRvIGFkZCB0aHJlZSBuZXcgbWVtYmVycyB0byBkcm1fZm9ybWF0X2luZm8KPiA+ IHRoYXQgY291bGQgZGVzY3JpYmUgc3VjaCBmb3JtYXRzOgo+ID4gCj4gPiAtIGNoYXJfcGVyX2Js b2NrWzNdCj4gPiAtIGJsb2NrX3dbM10KPiA+IC0gYmxvY2tfaFszXQo+ID4gCj4gPiBjaGFyX3Bl cl9ibG9jayB3aWxsIGJlIHB1dCBpbiBhIHVuaW9uIGFsb25nc2lkZSBjcHAsIGZvciB0cmFuc3Bh cmVudAo+ID4gY29tcGF0aWJpbGl0eSAgd2l0aCB0aGUgZXhpc3RpbmcgZm9ybWF0IGRlc2NyaXB0 aW9ucy4KPiA+IAo+ID4gUmVnYXJkaW5nLCBibG9ja193IGFuZCBibG9ja19oIHRoZXkgYXJlIGlu dGVuZGVkIHRvIGJlIHVzZWQgdGhyb3VnaAo+ID4gdGhlaXIgZXF1aXZhbGVudCBnZXR0ZXJzIGRy bV9mb3JtYXRfaW5mb19ibG9ja193aWR0aCAvCj4gPiBkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVp Z2h0LCB0aGUgcmVhc29uIG9mIHRoZSBnZXR0ZXJzIGlzIHRvIGFic3RyYWN0Cj4gPiB0aGUgZmFj dCB0aGF0IGZvciBub3JtYWwgZm9ybWF0cyBibG9ja193IGFuZCBibG9ja19oIHdpbGwgYmUgdW5z ZXQvMCwKPiA+IGJ1dCB0aGUgbWV0aG9kcyB3aWxsIGJlIHJldHVybmluZyAxLgo+ID4gCj4gPiBV c2luZyB0aGF0IHRoZSBmb2xsb3dpbmcgZHJtIGNvcmUgZnVuY3Rpb25zIGhhZCBiZWVuIHVwZGF0 ZWQgdG8KPiA+IGdlbmVyaWNhbGx5IGhhbmRsZSBib3RoIGJsb2NrIGFuZCBub24tYmxvY2sgZm9y bWF0czoKPiA+IAo+ID4gLSBkcm1fZmJfY21hX2dldF9nZW1fYWRkcjogZm9yIGJsb2NrIGZvcm1h dHMgaXQgd2lsbCBqdXN0IHJldHVybiB0aGUKPiA+ICAgYmVnaW5uaW5nIG9mIHRoZSBibG9jay4K PiA+IC0gZnJhbWVidWZmZXJfY2hlY2s6IFVwZGF0ZWQgdG8gY29tcHV0ZSB0aGUgbWluaW11bSBw aXRjaCBhcwo+ID4gCURJVl9ST1VORF9VUCh3aWR0aCAqIGNoYXJfcGVyX2Jsb2NrLCBkcm1fZm9y bWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgaSkKPiA+IAkqIGRybV9mb3JtYXRfaW5mb19ibG9j a19oZWlnaHQoaW5mbywgaSkpCj4gPiAtIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3M6IFVw ZGF0ZWQgdG8gY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUKPiA+ICAgbGFzdCBsaW5lIG9mIHBpeGVs cyB3aXRoIHRoZSBzYW1lIGZvcm11bGEgYXMgZm9yIHRoZSBtaW5pbXVtIHBpdGNoLgo+ID4gLSBJ biBwbGFjZXMgd2hlcmUgaXMgbm90IGV4cGVjdGluZyB0byBoYW5kbGUgYmxvY2sgZm9ybWF0cywg bGlrZSBmYmRldgo+ID4gICBoZWxwZXJzIEkganVzdCBhZGRlZCBzb21lIHdhcm5pbmdzIGluIGNh c2UgdGhlIGJsb2NrIHdpZHRoL2hlaWdodAo+ID4gICBhcmUgZ3JlYXRlciB0aGFuIDEuCj4gPiAK PiA+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydSBHaGVvcmdoZSA8YWxleGFuZHJ1LWNvc21pbi5n aGVvcmdoZUBhcm0uY29tPgo+ID4gUmV2aWV3ZWQtYnk6IExpdml1IER1ZGF1IDxsaXZpdS5kdWRh dUBhcm0uY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVy LmMgICAgICAgICAgfCAyMSArKysrKysrKy0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9o ZWxwZXIuYyAgICAgICAgICAgICAgfCAgNiArKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Zv dXJjYy5jICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJp dmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jICAgICAgICAgICAgfCAgOSArKystLQo+ID4g IGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jIHwgIDQgKy0KPiA+ ICBpbmNsdWRlL2RybS9kcm1fZm91cmNjLmggICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysr KysrKysrKystCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21h X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiA+IGluZGV4 IDQ3ZTBlMmY2NjQyZC4uZjgyOTNmNGQ5NmNmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf Y21hX2hlbHBlci5jCj4gPiBAQCAtNzIsNyArNzIsOSBAQCBzdHJ1Y3QgZHJtX2dlbV9jbWFfb2Jq ZWN0ICpkcm1fZmJfY21hX2dldF9nZW1fb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ ID4gIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZ2V0X2dlbV9vYmopOwo+ID4gIAo+ID4g IC8qKgo+ID4gLSAqIGRybV9mYl9jbWFfZ2V0X2dlbV9hZGRyKCkgLSBHZXQgcGh5c2ljYWwgYWRk cmVzcyBmb3IgZnJhbWVidWZmZXIKPiA+ICsgKiBkcm1fZmJfY21hX2dldF9nZW1fYWRkcigpIC0g R2V0IHBoeXNpY2FsIGFkZHJlc3MgZm9yIGZyYW1lYnVmZmVyLCBmb3IgcGl4ZWwKPiA+ICsgKiBm b3JtYXRzIHdoZXJlIHZhbHVlcyBhcmUgZ3JvdXBlZCBpbiBibG9ja3MgdGhpcyB3aWxsIGdldCB5 b3UgdGhlIGJlZ2lubmluZyBvZgo+ID4gKyAqIHRoZSBibG9jawo+ID4gICAqIEBmYjogVGhlIGZy YW1lYnVmZmVyCj4gPiAgICogQHN0YXRlOiBXaGljaCBzdGF0ZSBvZiBkcm0gcGxhbmUKPiA+ICAg KiBAcGxhbmU6IFdoaWNoIHBsYW5lCj4gPiBAQCAtODcsNiArODksMTQgQEAgZG1hX2FkZHJfdCBk cm1fZmJfY21hX2dldF9nZW1fYWRkcihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ICAJ c3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqb2JqOwo+ID4gIAlkbWFfYWRkcl90IHBhZGRyOwo+ ID4gIAl1OCBoX2RpdiA9IDEsIHZfZGl2ID0gMTsKPiA+ICsJdTMyIGJsb2NrX3cgPSBkcm1fZm9y bWF0X2luZm9fYmxvY2tfd2lkdGgoZmItPmZvcm1hdCwgcGxhbmUpOwo+ID4gKwl1MzIgYmxvY2tf aCA9IGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoZmItPmZvcm1hdCwgcGxhbmUpOwo+ID4g Kwl1MzIgYmxvY2tfc2l6ZSA9IGZiLT5mb3JtYXQtPmNoYXJfcGVyX2Jsb2NrW3BsYW5lXTsKPiA+ ICsJdTMyIHNhbXBsZV94Owo+ID4gKwl1MzIgc2FtcGxlX3k7Cj4gPiArCXUzMiBibG9ja19zdGFy dF95Owo+ID4gKwl1MzIgbnVtX2hibG9ja3M7Cj4gPiArCj4gPiAgCj4gPiAgCW9iaiA9IGRybV9m Yl9jbWFfZ2V0X2dlbV9vYmooZmIsIHBsYW5lKTsKPiA+ICAJaWYgKCFvYmopCj4gPiBAQCAtOTks OCArMTA5LDEzIEBAIGRtYV9hZGRyX3QgZHJtX2ZiX2NtYV9nZXRfZ2VtX2FkZHIoc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiAgCQl2X2RpdiA9IGZiLT5mb3JtYXQtPnZzdWI7Cj4gPiAg CX0KPiA+ICAKPiA+IC0JcGFkZHIgKz0gKGZiLT5mb3JtYXQtPmNwcFtwbGFuZV0gKiAoc3RhdGUt PnNyY194ID4+IDE2KSkgLyBoX2RpdjsKPiA+IC0JcGFkZHIgKz0gKGZiLT5waXRjaGVzW3BsYW5l XSAqIChzdGF0ZS0+c3JjX3kgPj4gMTYpKSAvIHZfZGl2Owo+ID4gKwlzYW1wbGVfeCA9IChzdGF0 ZS0+c3JjX3ggPj4gMTYpIC8gaF9kaXY7Cj4gPiArCXNhbXBsZV95ID0gKHN0YXRlLT5zcmNfeSA+ PiAxNikgLyB2X2RpdjsKPiA+ICsJYmxvY2tfc3RhcnRfeSA9IChzYW1wbGVfeSAvIGJsb2NrX2gp ICogYmxvY2tfaDsKPiA+ICsJbnVtX2hibG9ja3MgPSBzYW1wbGVfeCAvIGJsb2NrX3c7Cj4gPiAr Cj4gPiArCXBhZGRyICs9IGZiLT5waXRjaGVzW3BsYW5lXSAqIGJsb2NrX3N0YXJ0X3k7Cj4gPiAr CXBhZGRyICs9IGJsb2NrX3NpemUgKiBudW1faGJsb2NrczsKPiA+ICAKPiA+ICAJcmV0dXJuIHBh ZGRyOwo+ID4gIH0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4gaW5kZXggYTUwNGE1ZTA1 Njc2Li45YWRkMGQ3ZGE3NDQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPiBA QCAtMTU5NSw2ICsxNTk1LDEwIEBAIGludCBkcm1fZmJfaGVscGVyX2NoZWNrX3ZhcihzdHJ1Y3Qg ZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKPiA+ICAJaWYgKHZhci0+cGl4Y2xvY2sgIT0gMCB8fCBp bl9kYmdfbWFzdGVyKCkpCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICsJaWYgKChk cm1fZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoZmItPmZvcm1hdCwgMCkgPiAxKSB8fAo+ID4gKwkg ICAgKGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoZmItPmZvcm1hdCwgMCkgPiAxKSkKPiA+ ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gIAkvKgo+ID4gIAkgKiBDaGFuZ2VzIHN0cnVj dCBmYl92YXJfc2NyZWVuaW5mbyBhcmUgY3VycmVudGx5IG5vdCBwdXNoZWQgYmFjawo+ID4gIAkg KiB0byBLTVMsIGhlbmNlIGZhaWwgaWYgZGlmZmVyZW50IHNldHRpbmdzIGFyZSByZXF1ZXN0ZWQu Cj4gPiBAQCAtMTk2OSw2ICsxOTczLDggQEAgdm9pZCBkcm1fZmJfaGVscGVyX2ZpbGxfdmFyKHN0 cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGUKPiA+ICB7 Cj4gPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gZmJfaGVscGVyLT5mYjsKPiA+ICAK PiA+ICsJV0FSTl9PTigoZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGZiLT5mb3JtYXQsIDAp ID4gMSkgfHwKPiA+ICsJCShkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGZiLT5mb3JtYXQs IDApID4gMSkpOwo+ID4gIAlpbmZvLT5wc2V1ZG9fcGFsZXR0ZSA9IGZiX2hlbHBlci0+cHNldWRv X3BhbGV0dGU7Cj4gPiAgCWluZm8tPnZhci54cmVzX3ZpcnR1YWwgPSBmYi0+d2lkdGg7Cj4gPiAg CWluZm8tPnZhci55cmVzX3ZpcnR1YWwgPSBmYi0+aGVpZ2h0Owo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5j Cj4gPiBpbmRleCBhMTU0NzYzMjU3YWUuLjBjOTcyNWZmZDVlOSAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Zm91cmNjLmMKPiA+IEBAIC00MDMsMyArNDAzLDQzIEBAIGludCBkcm1fZm9ybWF0X3BsYW5lX2hl aWdodChpbnQgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludCBwbGFuZSkKPiA+ICAJcmV0dXJu IGhlaWdodCAvIGluZm8tPnZzdWI7Cj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2Zvcm1h dF9wbGFuZV9oZWlnaHQpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9mb3JtYXRfaW5mb19i bG9ja193aWR0aCAtIHdpZHRoIGluIHBpeGVscyBvZiBibG9jay4KPiA+ICsgKiBAaW5mbzogcGl4 ZWwgZm9ybWF0IGluZm8KPiA+ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4gPiArICoKPiA+ICsg KiBSZXR1cm5zOgo+ID4gKyAqIFRoZSB3aWR0aCBpbiBwaXhlbHMgb2YgYSBibG9jaywgZGVwZW5k aW5nIG9uIHRoZSBwbGFuZSBpbmRleC4KPiA+ICsgKi8KPiA+ICt1bnNpZ25lZCBpbnQgZHJtX2Zv cm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8s Cj4gPiArCQkJCQkgaW50IHBsYW5lKQo+ID4gK3sKPiA+ICsJaWYgKCFpbmZvIHx8IHBsYW5lID49 IGluZm8tPm51bV9wbGFuZXMpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJaWYgKCFpbmZv LT5ibG9ja193W3BsYW5lXSkKPiA+ICsJCXJldHVybiAxOwo+ID4gKwlyZXR1cm4gaW5mby0+Ymxv Y2tfd1twbGFuZV07Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2Zvcm1hdF9pbmZvX2Js b2NrX3dpZHRoKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBkcm1fZm9ybWF0X2luZm9fYmxvY2tf aGVpZ2h0IC0gaGVpZ2h0IGluIHBpeGVscyBvZiBhIGJsb2NrCj4gPiArICogQGluZm86IHBpeGVs IGZvcm1hdCBpbmZvCj4gPiArICogQHBsYW5lOiBwbGFuZSBpbmRleAo+ID4gKyAqCj4gPiArICog UmV0dXJuczoKPiA+ICsgKiBUaGUgaGVpZ2h0IGluIHBpeGVscyBvZiBhIGJsb2NrLCBkZXBlbmRp bmcgb24gdGhlIHBsYW5lIGluZGV4Lgo+ID4gKyAqLwo+ID4gK3Vuc2lnbmVkIGludCBkcm1fZm9y bWF0X2luZm9fYmxvY2tfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8s Cj4gPiArCQkJCQkgIGludCBwbGFuZSkKPiA+ICt7Cj4gPiArCWlmICghaW5mbyB8fCBwbGFuZSA+ PSBpbmZvLT5udW1fcGxhbmVzKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWlmICghaW5m by0+YmxvY2tfaFtwbGFuZV0pCj4gPiArCQlyZXR1cm4gMTsKPiA+ICsJcmV0dXJuIGluZm8tPmJs b2NrX2hbcGxhbmVdOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9mb3JtYXRfaW5mb19i bG9ja19oZWlnaHQpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ID4gaW5kZXggM2Jm NzI5ZDBhYWU1Li40ZTE0MDEzNzg4Y2QgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZyYW1lYnVmZmVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZm ZXIuYwo+ID4gQEAgLTE5NSwyMCArMTk1LDIzIEBAIHN0YXRpYyBpbnQgZnJhbWVidWZmZXJfY2hl Y2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJZm9yIChpID0gMDsgaSA8IGluZm8tPm51 bV9wbGFuZXM7IGkrKykgewo+ID4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0gZmJfcGxhbmVfd2lk dGgoci0+d2lkdGgsIGluZm8sIGkpOwo+ID4gIAkJdW5zaWduZWQgaW50IGhlaWdodCA9IGZiX3Bs YW5lX2hlaWdodChyLT5oZWlnaHQsIGluZm8sIGkpOwo+ID4gLQkJdW5zaWduZWQgaW50IGNwcCA9 IGluZm8tPmNwcFtpXTsKPiA+ICsJCXVuc2lnbmVkIGludCBibG9ja19zaXplID0gaW5mby0+Y2hh cl9wZXJfYmxvY2tbaV07Cj4gPiArCQl1NjQgbWluX3BpdGNoID0gRElWX1JPVU5EX1VQKCh1NjQp d2lkdGggKiBibG9ja19zaXplLAo+ID4gKwkJCQkJZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRo KGluZm8sIGkpICoKPiA+ICsJCQkJCWRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywg aSkpOwo+IAo+IEkgdGhpbmsgYSBoZWxwZXIgdG8gY29tcHV0ZSB0aGUgZHJtX3BpdGNoLCBpbmNs dWRpbmcgc29tZSBrZXJuZWwtZG9jIHRoYXQKPiBleHBsYWlucyB3aGF0IGV4YWN0bHkgaXQgaXMg KGFuZCB3aHkpIHdvdWxkIGJlIGdvb2QuIEZvciBjbGVhbmVyIGNvZGUsCj4gbGVzcyBkdXBsaWNh dGlvbiBhbmQgdG8gaGF2ZSBhIGdvb2Qgc3BvdCBmb3IgZG9jcy4KClN0YXJrM3kgaGFkIHRoZSBz YW1lIHN1Z2dlc3Rpb24gZHVyaW5nIG91ciBpbnRlcm5hbCByZXZpZXcgOikuCkRvZXMgdGhpcyBz b3VuZHMgZ29vZCB0byB5b3U/CmRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgcGxhbmUs IGJ1ZmZlcl93aWR0aCkKCj4gCj4gPiAgCj4gPiAgCQlpZiAoIXItPmhhbmRsZXNbaV0pIHsKPiA+ ICAJCQlEUk1fREVCVUdfS01TKCJubyBidWZmZXIgb2JqZWN0IGhhbmRsZSBmb3IgcGxhbmUgJWRc biIsIGkpOwo+ID4gIAkJCXJldHVybiAtRUlOVkFMOwo+ID4gIAkJfQo+ID4gIAo+ID4gLQkJaWYg KCh1aW50NjRfdCkgd2lkdGggKiBjcHAgPiBVSU5UX01BWCkKPiA+ICsJCWlmIChtaW5fcGl0Y2gg PiBVSU5UX01BWCkKPiA+ICAJCQlyZXR1cm4gLUVSQU5HRTsKPiA+ICAKPiA+ICAJCWlmICgodWlu dDY0X3QpIGhlaWdodCAqIHItPnBpdGNoZXNbaV0gKyByLT5vZmZzZXRzW2ldID4gVUlOVF9NQVgp Cj4gPiAgCQkJcmV0dXJuIC1FUkFOR0U7Cj4gPiAgCj4gPiAtCQlpZiAoci0+cGl0Y2hlc1tpXSA8 IHdpZHRoICogY3BwKSB7Cj4gPiArCQlpZiAoci0+cGl0Y2hlc1tpXSA8IG1pbl9waXRjaCkgewo+ ID4gIAkJCURSTV9ERUJVR19LTVMoImJhZCBwaXRjaCAldSBmb3IgcGxhbmUgJWRcbiIsIHItPnBp dGNoZXNbaV0sIGkpOwo+ID4gIAkJCXJldHVybiAtRUlOVkFMOwo+ID4gIAkJfQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMKPiA+IGluZGV4IGRlZDdh Mzc5YWMzNS4uZTM0MjUxMTM3MGU3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Z2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jCj4gPiBAQCAtMTcxLDcgKzE3MSw5IEBAIGRybV9nZW1f ZmJfY3JlYXRlX3dpdGhfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9m aWxlICpmaWxlLAo+ID4gIAkJfQo+ID4gIAo+ID4gIAkJbWluX3NpemUgPSAoaGVpZ2h0IC0gMSkg KiBtb2RlX2NtZC0+cGl0Y2hlc1tpXQo+ID4gLQkJCSArIHdpZHRoICogaW5mby0+Y3BwW2ldCj4g PiArCQkJICsgRElWX1JPVU5EX1VQKCh1NjQpd2lkdGggKiBpbmZvLT5jaGFyX3Blcl9ibG9ja1tp XSwKPiA+ICsJCQkJCWRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCBpKSAqCj4gPiAr CQkJCQlkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIGkpKQo+ID4gIAkJCSArIG1v ZGVfY21kLT5vZmZzZXRzW2ldOwo+ID4gIAo+ID4gIAkJaWYgKG9ianNbaV0tPnNpemUgPCBtaW5f c2l6ZSkgewo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaCBiL2luY2x1 ZGUvZHJtL2RybV9mb3VyY2MuaAo+ID4gaW5kZXggODY1ZWY2MGMxN2FmLi4zMDVlODA4NDdhYmMg MTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiA+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9mb3VyY2MuaAo+ID4gQEAgLTU4LDYgKzU4LDI0IEBAIHN0cnVjdCBkcm1fbW9k ZV9mYl9jbWQyOwo+ID4gICAqCXVzZSBpbiBuZXcgY29kZSBhbmQgc2V0IHRvIDAgZm9yIG5ldyBm b3JtYXRzLgo+ID4gICAqIEBudW1fcGxhbmVzOiBOdW1iZXIgb2YgY29sb3IgcGxhbmVzICgxIHRv IDMpCj4gPiAgICogQGNwcDogTnVtYmVyIG9mIGJ5dGVzIHBlciBwaXhlbCAocGVyIHBsYW5lKQo+ IAo+IE5lZWQgdG8gbWFrZSBpdCBjbGVhciB0aGlzIGFsaWFzZXMgd2l0aCBAY2hhcl9wZXJfYmxv Y2sgYW5kIGlzIGRlcHJlY2F0ZWQuCj4gU2FtZSBmb3IgQGNoYXJfcGVyX2Jsb2NrLgo+IAo+ID4g KyAqIEBjaGFyX3Blcl9ibG9jazogIE51bWJlciBvZiBieXRlcyBwZXIgYmxvY2sgKHBlciBwbGFu ZSksIHdoZXJlIGJsb2NrcyBhcmUKPiA+ICsgKglkZWZpbmVkIGFzIGEgcmVjdGFuZ2xlIG9mIHBp eGVscyB3aGljaCBhcmUgc3RvcmVkIG5leHQgdG8gZWFjaCBvdGhlciBpbgo+ID4gKyAqCWEgYnl0 ZSBhbGlnbmVkIG1lbW9yeSByZWdpb24uCj4gPiArICoJVG9nZXRoZXIgd2l0aCBibG9ja193IGFu ZCBibG9ja19oIHRoaXMgY291bGQgYmUgdXNlZCB0byBwcm9wZXJseQo+IHMvY291bGQvaXMvCj4g Cj4gPiArICoJZGVzY3JpYmUgdGlsZXMgaW4gdGlsZWQgZm9ybWF0cyBvciB0byBkZXNjcmliZSBn cm91cHMgb2YgcGl4ZWxzIGluCj4gPiArICoJcGFja2VkIGZvcm1hdHMgZm9yIHdoaWNoIHRoZSBt ZW1vcnkgbmVlZGVkIGZvciBhIHNpbmdsZSBwaXhlbCBpdCdzIG5vdAo+ID4gKyAqCWJ5dGUgYWxp Z25lZC4KPiA+ICsgKiAgICAgIENwcCBoYWQgYmVlbiBrZXB0IGZyb20gaGlzdG9yaWNhbCByZWFz b25zIGJlY2F1c2UgdGhlcmUgYXJlIGEgbG90IG9mCj4gCj4gcy9DcHAvQGNwcC8gZm9yIHByb3Bl ciBoaWdobGlnaHRpbmcgaW4gdGhlIG91dHB1dC4KPiAKPiA+ICsgKglwbGFjZXMgaW4gZHJpdmVy cyB3aGVyZSBpdCdzIHVzZWQuIEluIGRybSBjb3JlIGZvciBnZW5lcmljIGNvZGUgcGF0aHMKPiA+ ICsgKgl0aGUgcHJlZmVycmVkIHdheSBpcyB0byB1c2UgY2hhcl9wZXJfYmxvY2ssIGRybV9mb3Jt YXRfaW5mb19ibG9ja193aWR0aAo+IEBjaGFyX3Blcl9ibG9jayBhbmQgZHJtX2Zvcm1hdF9pbmZv X2Jsb2NrX3dpZHRoKCkgZm9yIGh5cGVybGlua3MuIFNpbWlsYXIKPiB3aXRoIGFsbCB0aGUgb3Ro ZXIgb2NjdXJlbmNlcyBvZiBhIGZ1bmN0aW9uIG5hbWUuCj4gCj4gPiArICoJYW5kIGRybV9mb3Jt YXRfaW5mb19ibG9ja19oZWlnaHQgd2hpY2ggc2hvdWxkIGFsbG93IGhhbmRsaW5nIGJvdGggYmxv Y2sKPiAKPiBzL3Nob3VsZC8vIC0gSSBob3BlIHlvdXIgY29kZSBhY3R1YWxseSB3b3JrcyA6LSkK PiAKPiA+ICsgKglhbmQgbm9uLWJsb2NrIGZvcm1hdHMgaW4gdGhlIHNhbWUgd2F5Lgo+ID4gKyAq CUZvciBmb3JtYXRzIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQganVzdCB3aXRoIG1vZGlm aWVycywgY3BwLwo+ID4gKyAqCWNoYXJfcGVyX2Jsb2NrIG11c3QgYmUgMC4KPiAKPiBUaGlzIGlz IGEgYml0IHZhZ3VlIGltby4gV2hhdCBhYm91dDoKPiAKPiAiRm9yIGZvcm1hdHMgdGhhdCBhcmUg aW50ZW5kZWQgdG8gYmUgdXNlZCBvbmx5IHdpdGggbm9uLWxpbmVhciBtb2RpZmllcnMsCj4gYm90 aCBAY3BwIGFuZCBAY2hhcl9wZXJfYmxvY2sgbXVzdCBiZSAwIGluIHRoZSBnZW5lcmljIGZvcm1h dCB0YWJsZS4KPiBEcml2ZXJzIHNob3VsZCBzdXBwbHkgYWNjdXJhdGUgaW5mb3JtYXRpb24gZnJv bSB0aGVpcgo+ICZkcm1fbW9kZV9jb25maWcuZ2V0X2Zvcm1hdF9pbmZvIGhvb2sgdGhvdWdoLiIK PiAKPiBTaW5jZSBJJ20gYXNzdW1pbmcgdGhhdCBvbmNlIHlvdSBrbm93IHRoZSBleGFjdCBtb2Rp ZmllciwgeW91IGNhbiBlbmxpc3QKPiB0aGUgY29yZSBmb3JtYXQgY2hlY2tpbmcgY29kZSB0byBo ZWxwIHZhbGlkYXRlIGl0Lgo+IAo+ID4gKyAqIEBibG9ja193OiBCbG9jayB3aWR0aCBpbiBwaXhl bHMsIHRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaAo+ID4gKyAqCWRybV9m b3JtYXRfaW5mb19ibG9ja193aWR0aAo+IAo+IFNpbmNlIHlvdSBhbGlhcyBjcHAgYW5kIGNoYXJf cGVyX2Jsb2NrLCBwbHMgbWFrZSBpdCByZWFsbHksIHJlYWxseSBjbGVhcgo+IHRoYXQgaWYgdGhp cyBpc24ndCBzZXQsIHRoZW4gdGhlIGNvZGUgdXNlcyAxIGFzIHRoZSBkZWZhdWx0Lgo+IAo+ID4g KyAqIEBibG9ja19oOiBCbG9jayBoZWlnaHQgaW4gcGl4ZWxzLCB0aGlzIGlzIGludGVuZGVkIHRv IGJlIGFjY2Vzc2VkIHRocm91Z2gKPiA+ICsgKglkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0 Cj4gCj4gU2FtZSBoZXJlLgo+IAo+IFBsZWFzZSB1c2UgdGhlIGlubGluZSBrZXJuZWxkb2Mgc3R5 bGUsIGl0J3MgbXVjaCBtb3JlIHJlYWRhYmxlIGZvciBsb25nCj4gc3R1ZmYgbGlrZSBoZXJlLiBJ ZiB0aGUgaW5jb25zaXN0ZW5jeSBpcmtzIHlvdSwgdGhlbiBwbGVhc2UganVzdCBtb3ZlIHRoZW0K PiBhbGwgdG8gdGhlIGlubGluZSBzdHlsZS4gSW5saW5lIHN0eWxlIGFsc28gYWxsb3dzIHlvdSB0 byBoYXZlIHByb3Blcgo+IHBhcmFncmFwaCBicmVha3Mgd2l0aCBlbXB0eSBsaW5lcy4KPiAKPiA+ ICAgKiBAaHN1YjogSG9yaXpvbnRhbCBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yCj4gPiAgICog QHZzdWI6IFZlcnRpY2FsIGNocm9tYSBzdWJzYW1wbGluZyBmYWN0b3IKPiA+ICAgKiBAaGFzX2Fs cGhhOiBEb2VzIHRoZSBmb3JtYXQgZW1iZWRzIGFuIGFscGhhIGNvbXBvbmVudD8KPiA+IEBAIC02 Nyw3ICs4NSwxMiBAQCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHsKPiA+ICAJdTMyIGZvcm1hdDsK PiA+ICAJdTggZGVwdGg7Cj4gPiAgCXU4IG51bV9wbGFuZXM7Cj4gPiAtCXU4IGNwcFszXTsKPiA+ ICsJdW5pb24gewo+ID4gKwkJdTggY3BwWzNdOwo+ID4gKwkJdTggY2hhcl9wZXJfYmxvY2tbM107 Cj4gPiArCX07Cj4gPiArCXU4IGJsb2NrX3dbM107Cj4gPiArCXU4IGJsb2NrX2hbM107Cj4gPiAg CXU4IGhzdWI7Cj4gPiAgCXU4IHZzdWI7Cj4gPiAgCWJvb2wgaGFzX2FscGhhOwo+ID4gQEAgLTk2 LDYgKzExOSwxMCBAQCBpbnQgZHJtX2Zvcm1hdF9ob3J6X2Nocm9tYV9zdWJzYW1wbGluZyh1aW50 MzJfdCBmb3JtYXQpOwo+ID4gIGludCBkcm1fZm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5n KHVpbnQzMl90IGZvcm1hdCk7Cj4gPiAgaW50IGRybV9mb3JtYXRfcGxhbmVfd2lkdGgoaW50IHdp ZHRoLCB1aW50MzJfdCBmb3JtYXQsIGludCBwbGFuZSk7Cj4gPiAgaW50IGRybV9mb3JtYXRfcGxh bmVfaGVpZ2h0KGludCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50IHBsYW5lKTsKPiA+ICt1 bnNpZ25lZCBpbnQgZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGNvbnN0IHN0cnVjdCBkcm1f Zm9ybWF0X2luZm8gKmluZm8sCj4gPiArCQkJCQkgaW50IHBsYW5lKTsKPiA+ICt1bnNpZ25lZCBp bnQgZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9p bmZvICppbmZvLAo+ID4gKwkJCQkJICBpbnQgcGxhbmUpOwo+ID4gIGNvbnN0IGNoYXIgKmRybV9n ZXRfZm9ybWF0X25hbWUodWludDMyX3QgZm9ybWF0LCBzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1 ZiAqYnVmKTsKPiA+ICAKPiA+ICAjZW5kaWYgLyogX19EUk1fRk9VUkNDX0hfXyAqLwo+IAo+IFdp dGggdGhlIHBvbGlzaCBhZGRyZXNzZWQsIHRoaXMgbGd0bS4KCkFsbCBvZiB0aGVtIGFyZSByZWFz b25hYmxlIHRvIG1lLCBzbyBJJ2xsIGFwcGx5IHRoZW0gaW4gdGhlIG5leHQKdmVyc2lvbi4KCj4g Cj4gT25lIHF1ZXN0aW9uIEkgaGF2ZSBpcyB2YWxpZGF0aW5nIHRoaXMuIEkgdGhpbmsgYSBidW5j aCBvZiB1bml0IHRlc3RzLAo+IGludGVncmF0ZWQgaW50byB0aGUgZXhpc3Rpbmcga21zIHNlbGZ0 ZXN0cyB3ZSBhbHJlYWR5IChzbyB0aGF0Cj4gaW50ZWwtZ2Z4LWNpIGFuZCBvdGhlciBDSSBjYW4g cnVuIGl0KSB3b3VsZCBiZSBncmVhdC4gQm90aCBmb3IgdGhlIHNtYWxsCj4gaGVscGVyIGZ1bmN0 aW9ucyAoYmxvY2sgd2lkdGgvaGVpZ2h0LCBidXQgZXNwZWNpYWxseSBkcm1fcGl0Y2gpLCBidXQg YWxzbwo+IGZvciB0aGUgZHJtX2ZyYW1lYnVmZmVyX2NyZWF0ZSBmdW5jdGlvbnMsIHNvIHRoYXQg d2UgY2FuIGV4ZXJjaXNlIHRoZQo+IG1ldHJpYyBwaWxlIG9mIHZhbGlkYXRpb24gY29ybmVyIGNh c2VzLgo+IC1EYW5pZWwKClNvLCB5b3UgYXJlIHRoaW5raW5nIG9mIGFkZGluZyB0ZXN0cyBoZXJl IGRyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvID8KTG9va2luZyBpbnNpZGUgdGhlIGZvbGRlciwg aXQgc2VlbXMgbW9yZSBsaWtlIGEgc3R1YiB0aGFuIHByb3Blcgp0ZXN0IHN1aXRlIGZvciB0aGUg ZHJtIGZyYW1ld29yaywgb3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZyA/CgpJIGRpZCBydW4gdGVz dHMgZm9yIGFsbCBzdXBwb3J0ZWQgZm9ybWF0cyBieSB0aGUgbWFsaS1kcCwgd2l0aCBvdXIKaW50 ZXJuYWwgdGVzdHN1aXRlIGFuZCBldmVyeXRoaW5nIHdhcyBPSyBmb3IgYWxsIHRoZSBmb3VyY2Mg ZW5hYmxlZAppbiBtYWxpLWRwCgpJJ20gcGxhbm5pbmcgdG8gcnVuIHRoZSBpZ3Qgb24gdG9wIG9m IG1hbGktZHAsIGp1c3QgdG8gZG91YmxlIGNoZWNrIEkKZGlkbid0IGNoYW5nZSBhbnkgb2YgdGhl IGJlaGF2aW91cnMuIEFueSBpZGVhIGlmIHRoZXJlIGlzIGFueSBwdWJsaWMKaWd0IENJIHRoYXQg SSBjb3VsZCBwb2ludCB0byBhIGtlcm5lbCBicmFuY2gsIHRvIHRlc3QgdGhpcyBjaGFuZ2Ugb24K c29tZXRoaW5nIGVsc2Ugb3RoZXIgdGhhbiBtYWxpLWRwPwoKU2hvdWxkbid0IHRoYXQgYmUgZW5v dWdoIGZvciB2YWxpZGF0aW5nIHRoaXMgcGF0Y2hlcz8gCgoKPiAtLSAKPiBEYW5pZWwgVmV0dGVy Cj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKCi0tIApDaGVlcnMsCkFsZXggRwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK