From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 1/6] drm/fourcc: Add char_per_block, block_w and block_h in drm_format_info Date: Fri, 5 Oct 2018 16:51:48 +0200 Message-ID: <20181005145148.GF31561@phenom.ffwll.local> References: <20181005092606.21100-1-alexandru-cosmin.gheorghe@arm.com> <20181005092606.21100-2-alexandru-cosmin.gheorghe@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5AFD4892E5 for ; Fri, 5 Oct 2018 14:51:53 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id y19-v6so11910259edd.2 for ; Fri, 05 Oct 2018 07:51:53 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181005092606.21100-2-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-Cosmin Gheorghe 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 T24gRnJpLCBPY3QgMDUsIDIwMTggYXQgMDk6MjY6NDdBTSArMDAwMCwgQWxleGFuZHJ1LUNvc21p biBHaGVvcmdoZSB3cm90ZToKPiBGb3Igc29tZSBwaXhlbCBmb3JtYXRzIC5jcHAgc3RydWN0dXJl IGluIGRybV9mb3JtYXQgaW5mbyBpdCdzIG5vdAo+IGVub3VnaCB0byBkZXNjcmliZSB0aGUgcGVj dWxpYXJpdGllcyBvZiB0aGUgcGl4ZWwgbGF5b3V0LCBmb3IgZXhhbXBsZQo+IHRpbGVkIGZvcm1h dHMgb3IgcGFja2VkIGZvcm1hdHMgYXQgYml0IGxldmVsLgo+IAo+IFdoYXQncyBpbXBsZW1lbnRl ZCBoZXJlIGlzIHRvIGFkZCB0aHJlZSBuZXcgbWVtYmVycyB0byBkcm1fZm9ybWF0X2luZm8KPiB0 aGF0IGNvdWxkIGRlc2NyaWJlIHN1Y2ggZm9ybWF0czoKPiAKPiAtIGNoYXJfcGVyX2Jsb2NrWzNd Cj4gLSBibG9ja193WzNdCj4gLSBibG9ja19oWzNdCj4gCj4gY2hhcl9wZXJfYmxvY2sgd2lsbCBi ZSBwdXQgaW4gYSB1bmlvbiBhbG9uZ3NpZGUgY3BwLCBmb3IgdHJhbnNwYXJlbnQKPiBjb21wYXRp YmlsaXR5ICB3aXRoIHRoZSBleGlzdGluZyBmb3JtYXQgZGVzY3JpcHRpb25zLgo+IAo+IFJlZ2Fy ZGluZywgYmxvY2tfdyBhbmQgYmxvY2tfaCB0aGV5IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIHRo cm91Z2gKPiB0aGVpciBlcXVpdmFsZW50IGdldHRlcnMgZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dp ZHRoIC8KPiBkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0LCB0aGUgcmVhc29uIG9mIHRoZSBn ZXR0ZXJzIGlzIHRvIGFic3RyYWN0Cj4gdGhlIGZhY3QgdGhhdCBmb3Igbm9ybWFsIGZvcm1hdHMg YmxvY2tfdyBhbmQgYmxvY2tfaCB3aWxsIGJlIHVuc2V0LzAsCj4gYnV0IHRoZSBtZXRob2RzIHdp bGwgYmUgcmV0dXJuaW5nIDEuCj4gCj4gVXNpbmcgdGhhdCB0aGUgZm9sbG93aW5nIGRybSBjb3Jl IGZ1bmN0aW9ucyBoYWQgYmVlbiB1cGRhdGVkIHRvCj4gZ2VuZXJpY2FsbHkgaGFuZGxlIGJvdGgg YmxvY2sgYW5kIG5vbi1ibG9jayBmb3JtYXRzOgo+IAo+IC0gZHJtX2ZiX2NtYV9nZXRfZ2VtX2Fk ZHI6IGZvciBibG9jayBmb3JtYXRzIGl0IHdpbGwganVzdCByZXR1cm4gdGhlCj4gICBiZWdpbm5p bmcgb2YgdGhlIGJsb2NrLgo+IC0gZnJhbWVidWZmZXJfY2hlY2s6IFVwZGF0ZWQgdG8gY29tcHV0 ZSB0aGUgbWluaW11bSBwaXRjaCBhcwo+IAlESVZfUk9VTkRfVVAod2lkdGggKiBjaGFyX3Blcl9i bG9jaywgZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIGkpCj4gCSogZHJtX2Zvcm1h dF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCBpKSkKPiAtIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhf ZnVuY3M6IFVwZGF0ZWQgdG8gY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUKPiAgIGxhc3QgbGluZSBv ZiBwaXhlbHMgd2l0aCB0aGUgc2FtZSBmb3JtdWxhIGFzIGZvciB0aGUgbWluaW11bSBwaXRjaC4K PiAtIEluIHBsYWNlcyB3aGVyZSBpcyBub3QgZXhwZWN0aW5nIHRvIGhhbmRsZSBibG9jayBmb3Jt YXRzLCBsaWtlIGZiZGV2Cj4gICBoZWxwZXJzIEkganVzdCBhZGRlZCBzb21lIHdhcm5pbmdzIGlu IGNhc2UgdGhlIGJsb2NrIHdpZHRoL2hlaWdodAo+ICAgYXJlIGdyZWF0ZXIgdGhhbiAxLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydSBHaGVvcmdoZSA8YWxleGFuZHJ1LWNvc21pbi5naGVv cmdoZUBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBMaXZpdSBEdWRhdSA8bGl2aXUuZHVkYXVAYXJt LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgICAgICAg ICAgfCAyMSArKysrKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgICAg ICAgICAgICAgIHwgIDYgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgICAgICAg ICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9mcmFtZWJ1ZmZlci5jICAgICAgICAgICAgfCAgOSArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuYyB8ICA0ICstCj4gIGluY2x1ZGUvZHJtL2RybV9m b3VyY2MuaCAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKy0KPiAgNiBmaWxl cyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwo+IGluZGV4IDQ3ZTBlMmY2NjQyZC4uZjgyOTNmNGQ5NmNm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiBAQCAtNzIsNyArNzIsOSBA QCBzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpkcm1fZmJfY21hX2dldF9nZW1fb2JqKHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2dl dF9nZW1fb2JqKTsKPiAgCj4gIC8qKgo+IC0gKiBkcm1fZmJfY21hX2dldF9nZW1fYWRkcigpIC0g R2V0IHBoeXNpY2FsIGFkZHJlc3MgZm9yIGZyYW1lYnVmZmVyCj4gKyAqIGRybV9mYl9jbWFfZ2V0 X2dlbV9hZGRyKCkgLSBHZXQgcGh5c2ljYWwgYWRkcmVzcyBmb3IgZnJhbWVidWZmZXIsIGZvciBw aXhlbAo+ICsgKiBmb3JtYXRzIHdoZXJlIHZhbHVlcyBhcmUgZ3JvdXBlZCBpbiBibG9ja3MgdGhp cyB3aWxsIGdldCB5b3UgdGhlIGJlZ2lubmluZyBvZgo+ICsgKiB0aGUgYmxvY2sKPiAgICogQGZi OiBUaGUgZnJhbWVidWZmZXIKPiAgICogQHN0YXRlOiBXaGljaCBzdGF0ZSBvZiBkcm0gcGxhbmUK PiAgICogQHBsYW5lOiBXaGljaCBwbGFuZQo+IEBAIC04Nyw2ICs4OSwxNCBAQCBkbWFfYWRkcl90 IGRybV9mYl9jbWFfZ2V0X2dlbV9hZGRyKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJ c3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqb2JqOwo+ICAJZG1hX2FkZHJfdCBwYWRkcjsKPiAg CXU4IGhfZGl2ID0gMSwgdl9kaXYgPSAxOwo+ICsJdTMyIGJsb2NrX3cgPSBkcm1fZm9ybWF0X2lu Zm9fYmxvY2tfd2lkdGgoZmItPmZvcm1hdCwgcGxhbmUpOwo+ICsJdTMyIGJsb2NrX2ggPSBkcm1f Zm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGZiLT5mb3JtYXQsIHBsYW5lKTsKPiArCXUzMiBibG9j a19zaXplID0gZmItPmZvcm1hdC0+Y2hhcl9wZXJfYmxvY2tbcGxhbmVdOwo+ICsJdTMyIHNhbXBs ZV94Owo+ICsJdTMyIHNhbXBsZV95Owo+ICsJdTMyIGJsb2NrX3N0YXJ0X3k7Cj4gKwl1MzIgbnVt X2hibG9ja3M7Cj4gKwo+ICAKPiAgCW9iaiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIHBs YW5lKTsKPiAgCWlmICghb2JqKQo+IEBAIC05OSw4ICsxMDksMTMgQEAgZG1hX2FkZHJfdCBkcm1f ZmJfY21hX2dldF9nZW1fYWRkcihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCQl2X2Rp diA9IGZiLT5mb3JtYXQtPnZzdWI7Cj4gIAl9Cj4gIAo+IC0JcGFkZHIgKz0gKGZiLT5mb3JtYXQt PmNwcFtwbGFuZV0gKiAoc3RhdGUtPnNyY194ID4+IDE2KSkgLyBoX2RpdjsKPiAtCXBhZGRyICs9 IChmYi0+cGl0Y2hlc1twbGFuZV0gKiAoc3RhdGUtPnNyY195ID4+IDE2KSkgLyB2X2RpdjsKPiAr CXNhbXBsZV94ID0gKHN0YXRlLT5zcmNfeCA+PiAxNikgLyBoX2RpdjsKPiArCXNhbXBsZV95ID0g KHN0YXRlLT5zcmNfeSA+PiAxNikgLyB2X2RpdjsKPiArCWJsb2NrX3N0YXJ0X3kgPSAoc2FtcGxl X3kgLyBibG9ja19oKSAqIGJsb2NrX2g7Cj4gKwludW1faGJsb2NrcyA9IHNhbXBsZV94IC8gYmxv Y2tfdzsKPiArCj4gKwlwYWRkciArPSBmYi0+cGl0Y2hlc1twbGFuZV0gKiBibG9ja19zdGFydF95 Owo+ICsJcGFkZHIgKz0gYmxvY2tfc2l6ZSAqIG51bV9oYmxvY2tzOwo+ICAKPiAgCXJldHVybiBw YWRkcjsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IGluZGV4IGE1MDRhNWUwNTY3Ni4u OWFkZDBkN2RhNzQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTE1OTUsNiAr MTU5NSwxMCBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9jaGVja192YXIoc3RydWN0IGZiX3Zhcl9zY3Jl ZW5pbmZvICp2YXIsCj4gIAlpZiAodmFyLT5waXhjbG9jayAhPSAwIHx8IGluX2RiZ19tYXN0ZXIo KSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gKwlpZiAoKGRybV9mb3JtYXRfaW5mb19ibG9j a193aWR0aChmYi0+Zm9ybWF0LCAwKSA+IDEpIHx8Cj4gKwkgICAgKGRybV9mb3JtYXRfaW5mb19i bG9ja19oZWlnaHQoZmItPmZvcm1hdCwgMCkgPiAxKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr Cj4gIAkvKgo+ICAJICogQ2hhbmdlcyBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gYXJlIGN1cnJl bnRseSBub3QgcHVzaGVkIGJhY2sKPiAgCSAqIHRvIEtNUywgaGVuY2UgZmFpbCBpZiBkaWZmZXJl bnQgc2V0dGluZ3MgYXJlIHJlcXVlc3RlZC4KPiBAQCAtMTk2OSw2ICsxOTczLDggQEAgdm9pZCBk cm1fZmJfaGVscGVyX2ZpbGxfdmFyKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGUKPiAgewo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBm Yl9oZWxwZXItPmZiOwo+ICAKPiArCVdBUk5fT04oKGRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0 aChmYi0+Zm9ybWF0LCAwKSA+IDEpIHx8Cj4gKwkJKGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWln aHQoZmItPmZvcm1hdCwgMCkgPiAxKSk7Cj4gIAlpbmZvLT5wc2V1ZG9fcGFsZXR0ZSA9IGZiX2hl bHBlci0+cHNldWRvX3BhbGV0dGU7Cj4gIAlpbmZvLT52YXIueHJlc192aXJ0dWFsID0gZmItPndp ZHRoOwo+ICAJaW5mby0+dmFyLnlyZXNfdmlydHVhbCA9IGZiLT5oZWlnaHQ7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zv dXJjYy5jCj4gaW5kZXggYTE1NDc2MzI1N2FlLi4wYzk3MjVmZmQ1ZTkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Zm91cmNjLmMKPiBAQCAtNDAzLDMgKzQwMyw0MyBAQCBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWln aHQoaW50IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxhbmUpCj4gIAlyZXR1cm4gaGVp Z2h0IC8gaW5mby0+dnN1YjsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9mb3JtYXRfcGxhbmVf aGVpZ2h0KTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZm9ybWF0X2luZm9fYmxvY2tfd2lkdGggLSB3 aWR0aCBpbiBwaXhlbHMgb2YgYmxvY2suCj4gKyAqIEBpbmZvOiBwaXhlbCBmb3JtYXQgaW5mbwo+ ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRoZSB3 aWR0aCBpbiBwaXhlbHMgb2YgYSBibG9jaywgZGVwZW5kaW5nIG9uIHRoZSBwbGFuZSBpbmRleC4K PiArICovCj4gK3Vuc2lnbmVkIGludCBkcm1fZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgoY29uc3Qg c3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbywKPiArCQkJCQkgaW50IHBsYW5lKQo+ICt7Cj4g KwlpZiAoIWluZm8gfHwgcGxhbmUgPj0gaW5mby0+bnVtX3BsYW5lcykKPiArCQlyZXR1cm4gMDsK PiArCj4gKwlpZiAoIWluZm8tPmJsb2NrX3dbcGxhbmVdKQo+ICsJCXJldHVybiAxOwo+ICsJcmV0 dXJuIGluZm8tPmJsb2NrX3dbcGxhbmVdOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2Zvcm1h dF9pbmZvX2Jsb2NrX3dpZHRoKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZm9ybWF0X2luZm9fYmxv Y2tfaGVpZ2h0IC0gaGVpZ2h0IGluIHBpeGVscyBvZiBhIGJsb2NrCj4gKyAqIEBpbmZvOiBwaXhl bCBmb3JtYXQgaW5mbwo+ICsgKiBAcGxhbmU6IHBsYW5lIGluZGV4Cj4gKyAqCj4gKyAqIFJldHVy bnM6Cj4gKyAqIFRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9mIGEgYmxvY2ssIGRlcGVuZGluZyBvbiB0 aGUgcGxhbmUgaW5kZXguCj4gKyAqLwo+ICt1bnNpZ25lZCBpbnQgZHJtX2Zvcm1hdF9pbmZvX2Js b2NrX2hlaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvLAo+ICsJCQkJCSAg aW50IHBsYW5lKQo+ICt7Cj4gKwlpZiAoIWluZm8gfHwgcGxhbmUgPj0gaW5mby0+bnVtX3BsYW5l cykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlpZiAoIWluZm8tPmJsb2NrX2hbcGxhbmVdKQo+ICsJ CXJldHVybiAxOwo+ICsJcmV0dXJuIGluZm8tPmJsb2NrX2hbcGxhbmVdOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0woZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodCk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJh bWVidWZmZXIuYwo+IGluZGV4IDNiZjcyOWQwYWFlNS4uNGUxNDAxMzc4OGNkIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+IEBAIC0xOTUsMjAgKzE5NSwyMyBAQCBzdGF0aWMgaW50 IGZyYW1lYnVmZmVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlmb3IgKGkgPSAw OyBpIDwgaW5mby0+bnVtX3BsYW5lczsgaSsrKSB7Cj4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0g ZmJfcGxhbmVfd2lkdGgoci0+d2lkdGgsIGluZm8sIGkpOwo+ICAJCXVuc2lnbmVkIGludCBoZWln aHQgPSBmYl9wbGFuZV9oZWlnaHQoci0+aGVpZ2h0LCBpbmZvLCBpKTsKPiAtCQl1bnNpZ25lZCBp bnQgY3BwID0gaW5mby0+Y3BwW2ldOwo+ICsJCXVuc2lnbmVkIGludCBibG9ja19zaXplID0gaW5m by0+Y2hhcl9wZXJfYmxvY2tbaV07Cj4gKwkJdTY0IG1pbl9waXRjaCA9IERJVl9ST1VORF9VUCgo dTY0KXdpZHRoICogYmxvY2tfc2l6ZSwKPiArCQkJCQlkcm1fZm9ybWF0X2luZm9fYmxvY2tfd2lk dGgoaW5mbywgaSkgKgo+ICsJCQkJCWRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywg aSkpOwoKSSB0aGluayBhIGhlbHBlciB0byBjb21wdXRlIHRoZSBkcm1fcGl0Y2gsIGluY2x1ZGlu ZyBzb21lIGtlcm5lbC1kb2MgdGhhdApleHBsYWlucyB3aGF0IGV4YWN0bHkgaXQgaXMgKGFuZCB3 aHkpIHdvdWxkIGJlIGdvb2QuIEZvciBjbGVhbmVyIGNvZGUsCmxlc3MgZHVwbGljYXRpb24gYW5k IHRvIGhhdmUgYSBnb29kIHNwb3QgZm9yIGRvY3MuCgo+ICAKPiAgCQlpZiAoIXItPmhhbmRsZXNb aV0pIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygibm8gYnVmZmVyIG9iamVjdCBoYW5kbGUgZm9yIHBs YW5lICVkXG4iLCBpKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiAtCQlpZiAo KHVpbnQ2NF90KSB3aWR0aCAqIGNwcCA+IFVJTlRfTUFYKQo+ICsJCWlmIChtaW5fcGl0Y2ggPiBV SU5UX01BWCkKPiAgCQkJcmV0dXJuIC1FUkFOR0U7Cj4gIAo+ICAJCWlmICgodWludDY0X3QpIGhl aWdodCAqIHItPnBpdGNoZXNbaV0gKyByLT5vZmZzZXRzW2ldID4gVUlOVF9NQVgpCj4gIAkJCXJl dHVybiAtRVJBTkdFOwo+ICAKPiAtCQlpZiAoci0+cGl0Y2hlc1tpXSA8IHdpZHRoICogY3BwKSB7 Cj4gKwkJaWYgKHItPnBpdGNoZXNbaV0gPCBtaW5fcGl0Y2gpIHsKPiAgCQkJRFJNX0RFQlVHX0tN UygiYmFkIHBpdGNoICV1IGZvciBwbGFuZSAlZFxuIiwgci0+cGl0Y2hlc1tpXSwgaSk7Cj4gIAkJ CXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFt ZWJ1ZmZlcl9oZWxwZXIuYwo+IGluZGV4IGRlZDdhMzc5YWMzNS4uZTM0MjUxMTM3MGU3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMKPiBAQCAt MTcxLDcgKzE3MSw5IEBAIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3Moc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJCX0KPiAgCj4gIAkJbWluX3Np emUgPSAoaGVpZ2h0IC0gMSkgKiBtb2RlX2NtZC0+cGl0Y2hlc1tpXQo+IC0JCQkgKyB3aWR0aCAq IGluZm8tPmNwcFtpXQo+ICsJCQkgKyBESVZfUk9VTkRfVVAoKHU2NCl3aWR0aCAqIGluZm8tPmNo YXJfcGVyX2Jsb2NrW2ldLAo+ICsJCQkJCWRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZv LCBpKSAqCj4gKwkJCQkJZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCBpKSkKPiAg CQkJICsgbW9kZV9jbWQtPm9mZnNldHNbaV07Cj4gIAo+ICAJCWlmIChvYmpzW2ldLT5zaXplIDwg bWluX3NpemUpIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oIGIvaW5j bHVkZS9kcm0vZHJtX2ZvdXJjYy5oCj4gaW5kZXggODY1ZWY2MGMxN2FmLi4zMDVlODA4NDdhYmMg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZvdXJjYy5oCj4gQEAgLTU4LDYgKzU4LDI0IEBAIHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyOwo+ICAgKgl1c2UgaW4gbmV3IGNvZGUgYW5kIHNldCB0byAwIGZvciBuZXcgZm9ybWF0cy4K PiAgICogQG51bV9wbGFuZXM6IE51bWJlciBvZiBjb2xvciBwbGFuZXMgKDEgdG8gMykKPiAgICog QGNwcDogTnVtYmVyIG9mIGJ5dGVzIHBlciBwaXhlbCAocGVyIHBsYW5lKQoKTmVlZCB0byBtYWtl IGl0IGNsZWFyIHRoaXMgYWxpYXNlcyB3aXRoIEBjaGFyX3Blcl9ibG9jayBhbmQgaXMgZGVwcmVj YXRlZC4KU2FtZSBmb3IgQGNoYXJfcGVyX2Jsb2NrLgoKPiArICogQGNoYXJfcGVyX2Jsb2NrOiAg TnVtYmVyIG9mIGJ5dGVzIHBlciBibG9jayAocGVyIHBsYW5lKSwgd2hlcmUgYmxvY2tzIGFyZQo+ ICsgKglkZWZpbmVkIGFzIGEgcmVjdGFuZ2xlIG9mIHBpeGVscyB3aGljaCBhcmUgc3RvcmVkIG5l eHQgdG8gZWFjaCBvdGhlciBpbgo+ICsgKglhIGJ5dGUgYWxpZ25lZCBtZW1vcnkgcmVnaW9uLgo+ ICsgKglUb2dldGhlciB3aXRoIGJsb2NrX3cgYW5kIGJsb2NrX2ggdGhpcyBjb3VsZCBiZSB1c2Vk IHRvIHByb3Blcmx5CnMvY291bGQvaXMvCgo+ICsgKglkZXNjcmliZSB0aWxlcyBpbiB0aWxlZCBm b3JtYXRzIG9yIHRvIGRlc2NyaWJlIGdyb3VwcyBvZiBwaXhlbHMgaW4KPiArICoJcGFja2VkIGZv cm1hdHMgZm9yIHdoaWNoIHRoZSBtZW1vcnkgbmVlZGVkIGZvciBhIHNpbmdsZSBwaXhlbCBpdCdz IG5vdAo+ICsgKglieXRlIGFsaWduZWQuCj4gKyAqICAgICAgQ3BwIGhhZCBiZWVuIGtlcHQgZnJv bSBoaXN0b3JpY2FsIHJlYXNvbnMgYmVjYXVzZSB0aGVyZSBhcmUgYSBsb3Qgb2YKCnMvQ3BwL0Bj cHAvIGZvciBwcm9wZXIgaGlnaGxpZ2h0aW5nIGluIHRoZSBvdXRwdXQuCgo+ICsgKglwbGFjZXMg aW4gZHJpdmVycyB3aGVyZSBpdCdzIHVzZWQuIEluIGRybSBjb3JlIGZvciBnZW5lcmljIGNvZGUg cGF0aHMKPiArICoJdGhlIHByZWZlcnJlZCB3YXkgaXMgdG8gdXNlIGNoYXJfcGVyX2Jsb2NrLCBk cm1fZm9ybWF0X2luZm9fYmxvY2tfd2lkdGgKQGNoYXJfcGVyX2Jsb2NrIGFuZCBkcm1fZm9ybWF0 X2luZm9fYmxvY2tfd2lkdGgoKSBmb3IgaHlwZXJsaW5rcy4gU2ltaWxhcgp3aXRoIGFsbCB0aGUg b3RoZXIgb2NjdXJlbmNlcyBvZiBhIGZ1bmN0aW9uIG5hbWUuCgo+ICsgKglhbmQgZHJtX2Zvcm1h dF9pbmZvX2Jsb2NrX2hlaWdodCB3aGljaCBzaG91bGQgYWxsb3cgaGFuZGxpbmcgYm90aCBibG9j awoKcy9zaG91bGQvLyAtIEkgaG9wZSB5b3VyIGNvZGUgYWN0dWFsbHkgd29ya3MgOi0pCgo+ICsg KglhbmQgbm9uLWJsb2NrIGZvcm1hdHMgaW4gdGhlIHNhbWUgd2F5Lgo+ICsgKglGb3IgZm9ybWF0 cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGp1c3Qgd2l0aCBtb2RpZmllcnMsIGNwcC8K PiArICoJY2hhcl9wZXJfYmxvY2sgbXVzdCBiZSAwLgoKVGhpcyBpcyBhIGJpdCB2YWd1ZSBpbW8u IFdoYXQgYWJvdXQ6CgoiRm9yIGZvcm1hdHMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBv bmx5IHdpdGggbm9uLWxpbmVhciBtb2RpZmllcnMsCmJvdGggQGNwcCBhbmQgQGNoYXJfcGVyX2Js b2NrIG11c3QgYmUgMCBpbiB0aGUgZ2VuZXJpYyBmb3JtYXQgdGFibGUuCkRyaXZlcnMgc2hvdWxk IHN1cHBseSBhY2N1cmF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZWlyCiZkcm1fbW9kZV9jb25maWcu Z2V0X2Zvcm1hdF9pbmZvIGhvb2sgdGhvdWdoLiIKClNpbmNlIEknbSBhc3N1bWluZyB0aGF0IG9u Y2UgeW91IGtub3cgdGhlIGV4YWN0IG1vZGlmaWVyLCB5b3UgY2FuIGVubGlzdAp0aGUgY29yZSBm b3JtYXQgY2hlY2tpbmcgY29kZSB0byBoZWxwIHZhbGlkYXRlIGl0LgoKPiArICogQGJsb2NrX3c6 IEJsb2NrIHdpZHRoIGluIHBpeGVscywgdGhpcyBpcyBpbnRlbmRlZCB0byBiZSBhY2Nlc3NlZCB0 aHJvdWdoCj4gKyAqCWRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aAoKU2luY2UgeW91IGFsaWFz IGNwcCBhbmQgY2hhcl9wZXJfYmxvY2ssIHBscyBtYWtlIGl0IHJlYWxseSwgcmVhbGx5IGNsZWFy CnRoYXQgaWYgdGhpcyBpc24ndCBzZXQsIHRoZW4gdGhlIGNvZGUgdXNlcyAxIGFzIHRoZSBkZWZh dWx0LgoKPiArICogQGJsb2NrX2g6IEJsb2NrIGhlaWdodCBpbiBwaXhlbHMsIHRoaXMgaXMgaW50 ZW5kZWQgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaAo+ICsgKglkcm1fZm9ybWF0X2luZm9fYmxvY2tf aGVpZ2h0CgpTYW1lIGhlcmUuCgpQbGVhc2UgdXNlIHRoZSBpbmxpbmUga2VybmVsZG9jIHN0eWxl LCBpdCdzIG11Y2ggbW9yZSByZWFkYWJsZSBmb3IgbG9uZwpzdHVmZiBsaWtlIGhlcmUuIElmIHRo ZSBpbmNvbnNpc3RlbmN5IGlya3MgeW91LCB0aGVuIHBsZWFzZSBqdXN0IG1vdmUgdGhlbQphbGwg dG8gdGhlIGlubGluZSBzdHlsZS4gSW5saW5lIHN0eWxlIGFsc28gYWxsb3dzIHlvdSB0byBoYXZl IHByb3BlcgpwYXJhZ3JhcGggYnJlYWtzIHdpdGggZW1wdHkgbGluZXMuCgo+ICAgKiBAaHN1Yjog SG9yaXpvbnRhbCBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yCj4gICAqIEB2c3ViOiBWZXJ0aWNh bCBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yCj4gICAqIEBoYXNfYWxwaGE6IERvZXMgdGhlIGZv cm1hdCBlbWJlZHMgYW4gYWxwaGEgY29tcG9uZW50Pwo+IEBAIC02Nyw3ICs4NSwxMiBAQCBzdHJ1 Y3QgZHJtX2Zvcm1hdF9pbmZvIHsKPiAgCXUzMiBmb3JtYXQ7Cj4gIAl1OCBkZXB0aDsKPiAgCXU4 IG51bV9wbGFuZXM7Cj4gLQl1OCBjcHBbM107Cj4gKwl1bmlvbiB7Cj4gKwkJdTggY3BwWzNdOwo+ ICsJCXU4IGNoYXJfcGVyX2Jsb2NrWzNdOwo+ICsJfTsKPiArCXU4IGJsb2NrX3dbM107Cj4gKwl1 OCBibG9ja19oWzNdOwo+ICAJdTggaHN1YjsKPiAgCXU4IHZzdWI7Cj4gIAlib29sIGhhc19hbHBo YTsKPiBAQCAtOTYsNiArMTE5LDEwIEBAIGludCBkcm1fZm9ybWF0X2hvcnpfY2hyb21hX3N1YnNh bXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBkcm1fZm9ybWF0X3ZlcnRfY2hyb21hX3N1 YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBkcm1fZm9ybWF0X3BsYW5lX3dpZHRo KGludCB3aWR0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxhbmUpOwo+ICBpbnQgZHJtX2Zvcm1h dF9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxhbmUpOwo+ ICt1bnNpZ25lZCBpbnQgZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGNvbnN0IHN0cnVjdCBk cm1fZm9ybWF0X2luZm8gKmluZm8sCj4gKwkJCQkJIGludCBwbGFuZSk7Cj4gK3Vuc2lnbmVkIGlu dCBkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2lu Zm8gKmluZm8sCj4gKwkJCQkJICBpbnQgcGxhbmUpOwo+ICBjb25zdCBjaGFyICpkcm1fZ2V0X2Zv cm1hdF9uYW1lKHVpbnQzMl90IGZvcm1hdCwgc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgKmJ1 Zik7Cj4gIAo+ICAjZW5kaWYgLyogX19EUk1fRk9VUkNDX0hfXyAqLwoKV2l0aCB0aGUgcG9saXNo IGFkZHJlc3NlZCwgdGhpcyBsZ3RtLgoKT25lIHF1ZXN0aW9uIEkgaGF2ZSBpcyB2YWxpZGF0aW5n IHRoaXMuIEkgdGhpbmsgYSBidW5jaCBvZiB1bml0IHRlc3RzLAppbnRlZ3JhdGVkIGludG8gdGhl IGV4aXN0aW5nIGttcyBzZWxmdGVzdHMgd2UgYWxyZWFkeSAoc28gdGhhdAppbnRlbC1nZngtY2kg YW5kIG90aGVyIENJIGNhbiBydW4gaXQpIHdvdWxkIGJlIGdyZWF0LiBCb3RoIGZvciB0aGUgc21h bGwKaGVscGVyIGZ1bmN0aW9ucyAoYmxvY2sgd2lkdGgvaGVpZ2h0LCBidXQgZXNwZWNpYWxseSBk cm1fcGl0Y2gpLCBidXQgYWxzbwpmb3IgdGhlIGRybV9mcmFtZWJ1ZmZlcl9jcmVhdGUgZnVuY3Rp b25zLCBzbyB0aGF0IHdlIGNhbiBleGVyY2lzZSB0aGUKbWV0cmljIHBpbGUgb2YgdmFsaWRhdGlv biBjb3JuZXIgY2FzZXMuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=