From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: Re: [PATCH v6 3/7] gpu: ipu-v3: ipu-ic: Fully describe colorspace conversions Date: Fri, 8 Mar 2019 17:16:22 -0800 Message-ID: <6ebec765-652b-412a-94fc-66168841e1eb@gmail.com> References: <20190307233356.23748-1-slongerbeam@gmail.com> <20190307233356.23748-4-slongerbeam@gmail.com> <1552045591.4009.4.camel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2BF46E42A for ; Sat, 9 Mar 2019 01:16:26 +0000 (UTC) Received: by mail-pg1-x542.google.com with SMTP id j3so15447598pgm.11 for ; Fri, 08 Mar 2019 17:16:26 -0800 (PST) In-Reply-To: <1552045591.4009.4.camel@pengutronix.de> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Philipp Zabel , linux-media@vger.kernel.org Cc: "open list:STAGING SUBSYSTEM" , "open list:FRAMEBUFFER LAYER" , Bartlomiej Zolnierkiewicz , Greg Kroah-Hartman , open list , "open list:DRM DRIVERS FOR FREESCALE IMX" , Mauro Carvalho Chehab List-Id: dri-devel@lists.freedesktop.org CgpPbiAzLzgvMTkgMzo0NiBBTSwgUGhpbGlwcCBaYWJlbCB3cm90ZToKPiBPbiBUaHUsIDIwMTkt MDMtMDcgYXQgMTU6MzMgLTA4MDAsIFN0ZXZlIExvbmdlcmJlYW0gd3JvdGU6Cj4+IE9ubHkgcHJv dmlkaW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IFJHQi9ZVVYgc3BhY2UgdG8gdGhlIElDIHRhc2sg aW5pdAo+PiBmdW5jdGlvbnMgaXMgbm90IHN1ZmZpY2llbnQuIFRvIGZ1bGx5IGNoYXJhY3Rlcml6 ZSBhIGNvbG9yc3BhY2UKPj4gY29udmVyc2lvbiwgdGhlIGNvbG9yc3BhY2UgKGNocm9tYXRpY2l0 aWVzKSwgWSdDYkNyIGVuY29kaW5nIHN0YW5kYXJkLAo+PiBhbmQgcXVhbnRpemF0aW9uIGFsc28g bmVlZCB0byBiZSBzcGVjaWZpZWQuCj4+Cj4+IERlZmluZSBhICdzdHJ1Y3QgaXB1X2ljX2NvbG9y c3BhY2UnIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBhYm92ZSwgYW5kIHBhc3MKPj4gdGhlIGlucHV0 IGFuZCBvdXRwdXQgaXB1X2ljX2NvbG9yc3BhY2UgdG8gdGhlIElDIHRhc2sgaW5pdCBmdW5jdGlv bnMuCj4+Cj4+IFRoaXMgYWxsb3dzIHRvIGFjdHVhbGx5IGVuZm9yY2UgdGhlIGZhY3QgdGhhdCB0 aGUgSUM6Cj4+Cj4+IC0gY2FuIG9ubHkgZW5jb2RlIHRvL2Zyb20gWVVWIGZ1bGwgcmFuZ2UgKGZv bGxvdy11cCBwYXRjaCB3aWxsIHJlbW92ZQo+PiAgICB0aGlzIHJlc3RyaWN0aW9uKS4KPj4gLSBj YW4gb25seSBlbmNvZGUgdG8vZnJvbSBSR0IgZnVsbCByYW5nZS4KPj4gLSBjYW4gb25seSBlbmNv ZGUgdXNpbmcgQlQuNjAxIHN0YW5kYXJkIChmb2xsb3ctdXAgcGF0Y2ggd2lsbCBhZGQKPj4gICAg UmVjLjcwOSBlbmNvZGluZyBzdXBwb3J0KS4KPj4gLSBjYW5ub3QgY29udmVydCBjb2xvcnNwYWNl cyBmcm9tIGlucHV0IHRvIG91dHB1dCwgdGhlCj4+ICAgIGlucHV0IGFuZCBvdXRwdXQgY29sb3Jz cGFjZSBjaHJvbWF0aWNpdGllcyBtdXN0IGJlIHRoZSBzYW1lLgo+Pgo+PiBUaGUgZGV0ZXJtaW5h dGlvbiBvZiB0aGUgQ1NDIGNvZWZmaWNpZW50cyBiYXNlZCBvbiB0aGUgaW5wdXQvb3V0cHV0Cj4+ IGNvbG9yc3BhY2UgcGFyYW1ldGVycyBhcmUgbW92ZWQgdG8gYSBuZXcgZnVuY3Rpb24gY2FsY19j c2NfY29lZmZzKCksCj4+IGNhbGxlZCBieSBpbml0X2NzYygpLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBTdGV2ZSBMb25nZXJiZWFtIDxzbG9uZ2VyYmVhbUBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgIGRy aXZlcnMvZ3B1L2lwdS12My9pcHUtaWMuYyAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysrKysr KysrKy0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWltYWdlLWNvbnZlcnQuYyAg ICAgIHwgIDI3ICsrLS0KPj4gICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaW14L2lteC1pYy1wcnBl bmN2Zi5jIHwgIDIyICsrKy0KPj4gICBpbmNsdWRlL3ZpZGVvL2lteC1pcHUtdjMuaCAgICAgICAg ICAgICAgICAgIHwgIDM3ICsrKysrLQo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlv bnMoKyksIDY4IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvaXB1 LXYzL2lwdS1pYy5jIGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pYy5jCj4+IGluZGV4IGI2M2Ey ODI2YjYyOS4uYzQwNDhjOTIxODAxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9pcHUtdjMv aXB1LWljLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pYy5jCj4+IEBAIC0xNDYs OCArMTQ2LDEwIEBAIHN0cnVjdCBpcHVfaWMgewo+PiAgIAljb25zdCBzdHJ1Y3QgaWNfdGFza19y ZWdvZmZzICpyZWc7Cj4+ICAgCWNvbnN0IHN0cnVjdCBpY190YXNrX2JpdGZpZWxkcyAqYml0Owo+ PiAgIAo+PiAtCWVudW0gaXB1X2NvbG9yX3NwYWNlIGluX2NzLCBnX2luX2NzOwo+PiAtCWVudW0g aXB1X2NvbG9yX3NwYWNlIG91dF9jczsKPj4gKwlzdHJ1Y3QgaXB1X2ljX2NvbG9yc3BhY2UgaW5f Y3M7Cj4+ICsJc3RydWN0IGlwdV9pY19jb2xvcnNwYWNlIGdfaW5fY3M7Cj4+ICsJc3RydWN0IGlw dV9pY19jb2xvcnNwYWNlIG91dF9jczsKPj4gKwo+PiAgIAlib29sIGdyYXBoaWNzOwo+PiAgIAli b29sIHJvdGF0aW9uOwo+PiAgIAlib29sIGluX3VzZTsKPj4gQEAgLTIzNSw0MiArMjM3LDgzIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNfZW5jb2RlX2NvZWZmIGljX2VuY29kZV95Y2JjcjJyZ2Jf NjAxID0gewo+PiAgIAkuc2NhbGUgPSAyLAo+PiAgIH07Cj4+ICAgCj4+ICtzdGF0aWMgaW50IGNh bGNfY3NjX2NvZWZmcyhzdHJ1Y3QgaXB1X2ljX3ByaXYgKnByaXYsCj4+ICsJCQkgICBzdHJ1Y3Qg aWNfZW5jb2RlX2NvZWZmICpjb2VmZl9vdXQsCj4+ICsJCQkgICBjb25zdCBzdHJ1Y3QgaXB1X2lj X2NvbG9yc3BhY2UgKmluLAo+PiArCQkJICAgY29uc3Qgc3RydWN0IGlwdV9pY19jb2xvcnNwYWNl ICpvdXQpCj4+ICt7Cj4+ICsJYm9vbCBpbnZlcnNlX2VuY29kZTsKPj4gKwo+PiArCWlmIChpbi0+ Y29sb3JzcGFjZSAhPSBvdXQtPmNvbG9yc3BhY2UpIHsKPj4gKwkJZGV2X2Vycihwcml2LT5pcHUt PmRldiwgIkNhbm5vdCBjb252ZXJ0IGNvbG9yc3BhY2VzXG4iKTsKPj4gKwkJcmV0dXJuIC1FTk9U U1VQUDsKPj4gKwl9Cj4gSSBkb24ndCB0aGluayB0aGlzIGlzIHVzZWZ1bCBlbm91Z2ggdG8gd2Fy cmFudCBoYXZpbmcgdGhlIGNvbG9yc3BhY2UKPiBmaWVsZCBpbiBpcHVfaWNfY29sb3JzcGFjZS4g TGV0IHRoZSBjYWxsZXIgbWFrZSBzdXJlIG9mIHRoaXMsIHNhbWUgYXMKPiBmb3IgeGZlcl9mdW5j LgoKT2ssIGZvciB4ZmVyX2Z1bmMgaXQgaXMgaW1wbGljaXQgdGhhdCB0aGUgZ2FtbWEgZnVuY3Rp b24gbXVzdCBiZSB0aGUgCnNhbWUgZm9yIGlucHV0IGFuZCBvdXRwdXQsIHNvIEkgYWdyZWUgaXQg bWlnaHQgYXMgd2VsbCBiZSBpbXBsaWNpdCBmb3IgCmNocm9tYXRpY2l0aWVzIHRvby4KCgo+Cj4+ ICsJaWYgKG91dC0+ZW5jICE9IFY0TDJfWUNCQ1JfRU5DXzYwMSkgewo+PiArCQlkZXZfZXJyKHBy aXYtPmlwdS0+ZGV2LCAiT25seSBCVC42MDEgZW5jb2Rpbmcgc3VwcG9ydGVkXG4iKTsKPj4gKwkJ cmV0dXJuIC1FTk9UU1VQUDsKPj4gKwl9Cj4gVGhpcyBpcyBvbmx5IGltcG9ydGFudCBpZiBvdXQt PmNzIGlzIElQVVYzX0NPTE9SU1BBQ0VfWVVWLCByaWdodD8gSWYgdGhlCj4gb3V0cHV0IGlzIFJH QiB0aGlzIGZpZWxkIHNob3VsZG4ndCBtYXR0ZXIuCgpJdCBtYXR0ZXJzIGZvciBlbmNvZGluZyBZ VVYgdG8gUkdCLCBvciB0aGUgaW52ZXJzZSBSR0IgdG8gWVVWLiBUaGUgCmVuY29kaW5nIHN0YW5k YXJkIGRvZXNuJ3QgbWF0dGVyIG9ubHkgaWYgbm8gZW5jb2RpbmcvaW52ZXJzZSBlbmNvZGluZyBp cyAKcmVxdWVzdGVkIChZVVYgdG8gWVVWIG9yIFJHQiB0byBSR0IpLgoKPgo+PiArCj4+ICsJaWYg KChpbi0+Y3MgPT0gSVBVVjNfQ09MT1JTUEFDRV9ZVVYgJiYKPj4gKwkgICAgIGluLT5xdWFudCAh PSBWNEwyX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFKSB8fAo+PiArCSAgICAob3V0LT5jcyA9PSBJ UFVWM19DT0xPUlNQQUNFX1lVViAmJgo+PiArCSAgICAgb3V0LT5xdWFudCAhPSBWNEwyX1FVQU5U SVpBVElPTl9GVUxMX1JBTkdFKSkgewo+PiArCQlkZXZfZXJyKHByaXYtPmlwdS0+ZGV2LCAiTGlt aXRlZCByYW5nZSBZVVYgbm90IHN1cHBvcnRlZFxuIik7Cj4+ICsJCXJldHVybiAtRU5PVFNVUFA7 Cj4+ICsJfQo+PiArCj4+ICsJaWYgKChpbi0+Y3MgPT0gSVBVVjNfQ09MT1JTUEFDRV9SR0IgJiYK Pj4gKwkgICAgIGluLT5xdWFudCAhPSBWNEwyX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFKSB8fAo+ PiArCSAgICAob3V0LT5jcyA9PSBJUFVWM19DT0xPUlNQQUNFX1JHQiAmJgo+PiArCSAgICAgb3V0 LT5xdWFudCAhPSBWNEwyX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFKSkgewo+PiArCQlkZXZfZXJy KHByaXYtPmlwdS0+ZGV2LCAiTGltaXRlZCByYW5nZSBSR0Igbm90IHN1cHBvcnRlZFxuIik7Cj4+ ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGluLT5jcyA9PSBvdXQt PmNzKSB7Cj4+ICsJCSpjb2VmZl9vdXQgPSBpY19lbmNvZGVfaWRlbnRpdHk7Cj4+ICsKPj4gKwkJ cmV0dXJuIDA7Cj4+ICsJfQo+PiArCj4+ICsJaW52ZXJzZV9lbmNvZGUgPSAoaW4tPmNzID09IElQ VVYzX0NPTE9SU1BBQ0VfWVVWKTsKPiBXaGF0IGRvZXMgaW52ZXJzZV9lbmNvZGUgbWVhbiBpbiB0 aGlzIGNvbnRleHQ/CgpJdCBtZWFucyBZVVYgdG8gUkdCLiBBdCB0aGlzIHBvaW50IGluIHRoZSBm dW5jdGlvbiBpdCBpcyBkZXRlcm1pbmVkIHRoYXQgCmVuY29kaW5nIG9yIGludmVyc2UgZW5jb2Rp bmcgaXMgcmVxdWVzdGVkLgoKPgo+PiArCj4+ICsJKmNvZWZmX291dCA9IGludmVyc2VfZW5jb2Rl ID8KPj4gKwkJaWNfZW5jb2RlX3ljYmNyMnJnYl82MDEgOiBpY19lbmNvZGVfcmdiMnljYmNyXzYw MTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIGludCBpbml0X2Nz YyhzdHJ1Y3QgaXB1X2ljICppYywKPj4gLQkJICAgIGVudW0gaXB1X2NvbG9yX3NwYWNlIGluZiwK Pj4gLQkJICAgIGVudW0gaXB1X2NvbG9yX3NwYWNlIG91dGYsCj4+ICsJCSAgICBjb25zdCBzdHJ1 Y3QgaXB1X2ljX2NvbG9yc3BhY2UgKmluLAo+PiArCQkgICAgY29uc3Qgc3RydWN0IGlwdV9pY19j b2xvcnNwYWNlICpvdXQsCj4+ICAgCQkgICAgaW50IGNzY19pbmRleCkKPj4gICB7Cj4+ICAgCXN0 cnVjdCBpcHVfaWNfcHJpdiAqcHJpdiA9IGljLT5wcml2Owo+PiAtCWNvbnN0IHN0cnVjdCBpY19l bmNvZGVfY29lZmYgKmNvZWZmOwo+PiArCXN0cnVjdCBpY19lbmNvZGVfY29lZmYgY29lZmY7Cj4g SSB1bmRlcnN0YW5kIHRoaXMgaXMgYSBwcmVwYXJhdGlvbiBmb3IgcGF0Y2ggNSwgYnV0IG9uIGl0 cyBvd24gdGhpcwo+IGludHJvZHVjZXMgYW4gdW5uZWNlc3NhcnkgY29weS4KClRydWUsIEknbGwg dHJ5IHRvIHJlbW92ZSB0aGUgY29weSBpbiB0aGlzIHBhdGNoLgoKPgo+PiAgIAl1MzIgX19pb21l bSAqYmFzZTsKPj4gICAJY29uc3QgdTE2ICgqYylbM107Cj4+ICAgCWNvbnN0IHUxNiAqYTsKPj4g ICAJdTMyIHBhcmFtOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBjYWxjX2NzY19jb2Vm ZnMocHJpdiwgJmNvZWZmLCBpbiwgb3V0KTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0 Owo+PiAgIAo+PiAgIAliYXNlID0gKHUzMiBfX2lvbWVtICopCj4+ICAgCQkocHJpdi0+dHBtZW1f YmFzZSArIGljLT5yZWctPnRwbWVtX2NzY1tjc2NfaW5kZXhdKTsKPj4gICAKPj4gLQlpZiAoaW5m ID09IElQVVYzX0NPTE9SU1BBQ0VfWVVWICYmIG91dGYgPT0gSVBVVjNfQ09MT1JTUEFDRV9SR0Ip Cj4+IC0JCWNvZWZmID0gJmljX2VuY29kZV95Y2JjcjJyZ2JfNjAxOwo+PiAtCWVsc2UgaWYgKGlu ZiA9PSBJUFVWM19DT0xPUlNQQUNFX1JHQiAmJiBvdXRmID09IElQVVYzX0NPTE9SU1BBQ0VfWVVW KQo+PiAtCQljb2VmZiA9ICZpY19lbmNvZGVfcmdiMnljYmNyXzYwMTsKPj4gLQllbHNlIGlmIChp bmYgPT0gSVBVVjNfQ09MT1JTUEFDRV9SR0IgJiYgb3V0ZiA9PSBJUFVWM19DT0xPUlNQQUNFX1JH QikKPj4gLQkJY29lZmYgPSAmaWNfZW5jb2RlX2lkZW50aXR5Owo+PiAtCWVsc2Ugewo+PiAtCQlk ZXZfZXJyKHByaXYtPmlwdS0+ZGV2LCAiVW5zdXBwb3J0ZWQgY29sb3Igc3BhY2UgY29udmVyc2lv blxuIik7Cj4+IC0JCXJldHVybiAtRUlOVkFMOwo+PiAtCX0KPj4gLQo+PiAgIAkvKiBDYXN0IHRv IHVuc2lnbmVkICovCj4+IC0JYyA9IChjb25zdCB1MTYgKCopWzNdKWNvZWZmLT5jb2VmZjsKPj4g LQlhID0gKGNvbnN0IHUxNiAqKWNvZWZmLT5vZmZzZXQ7Cj4+ICsJYyA9IChjb25zdCB1MTYgKCop WzNdKWNvZWZmLmNvZWZmOwo+PiArCWEgPSAoY29uc3QgdTE2ICopY29lZmYub2Zmc2V0Owo+PiAg IAo+PiAgIAlwYXJhbSA9ICgoYVswXSAmIDB4MWYpIDw8IDI3KSB8ICgoY1swXVswXSAmIDB4MWZm KSA8PCAxOCkgfAo+PiAgIAkJKChjWzFdWzFdICYgMHgxZmYpIDw8IDkpIHwgKGNbMl1bMl0gJiAw eDFmZik7Cj4+ICAgCXdyaXRlbChwYXJhbSwgYmFzZSsrKTsKPj4gICAKPj4gLQlwYXJhbSA9ICgo YVswXSAmIDB4MWZlMCkgPj4gNSkgfCAoY29lZmYtPnNjYWxlIDw8IDgpIHwKPj4gLQkJKGNvZWZm LT5zYXQgPDwgMTApOwo+PiArCXBhcmFtID0gKChhWzBdICYgMHgxZmUwKSA+PiA1KSB8IChjb2Vm Zi5zY2FsZSA8PCA4KSB8Cj4+ICsJCShjb2VmZi5zYXQgPDwgMTApOwo+PiAgIAl3cml0ZWwocGFy YW0sIGJhc2UrKyk7Cj4+ICAgCj4+ICAgCXBhcmFtID0gKChhWzFdICYgMHgxZikgPDwgMjcpIHwg KChjWzBdWzFdICYgMHgxZmYpIDw8IDE4KSB8Cj4+IEBAIC0zNTcsMTQgKzQwMCwxNCBAQCB2b2lk IGlwdV9pY190YXNrX2VuYWJsZShzdHJ1Y3QgaXB1X2ljICppYykKPj4gICAJaWYgKGljLT5yb3Rh dGlvbikKPj4gICAJCWljX2NvbmYgfD0gaWMtPmJpdC0+aWNfY29uZl9yb3RfZW47Cj4+ICAgCj4+ IC0JaWYgKGljLT5pbl9jcyAhPSBpYy0+b3V0X2NzKQo+PiArCWlmIChpYy0+aW5fY3MuY3MgIT0g aWMtPm91dF9jcy5jcykKPj4gICAJCWljX2NvbmYgfD0gaWMtPmJpdC0+aWNfY29uZl9jc2MxX2Vu Owo+PiAgIAo+PiAgIAlpZiAoaWMtPmdyYXBoaWNzKSB7Cj4+ICAgCQlpY19jb25mIHw9IGljLT5i aXQtPmljX2NvbmZfY21iX2VuOwo+PiAgIAkJaWNfY29uZiB8PSBpYy0+Yml0LT5pY19jb25mX2Nz YzFfZW47Cj4+ICAgCj4+IC0JCWlmIChpYy0+Z19pbl9jcyAhPSBpYy0+b3V0X2NzKQo+PiArCQlp ZiAoaWMtPmdfaW5fY3MuY3MgIT0gaWMtPm91dF9jcy5jcykKPj4gICAJCQlpY19jb25mIHw9IGlj LT5iaXQtPmljX2NvbmZfY3NjMl9lbjsKPj4gICAJfQo+PiAgIAo+PiBAQCAtMzk5LDcgKzQ0Miw3 IEBAIHZvaWQgaXB1X2ljX3Rhc2tfZGlzYWJsZShzdHJ1Y3QgaXB1X2ljICppYykKPj4gICBFWFBP UlRfU1lNQk9MX0dQTChpcHVfaWNfdGFza19kaXNhYmxlKTsKPj4gICAKPj4gICBpbnQgaXB1X2lj X3Rhc2tfZ3JhcGhpY3NfaW5pdChzdHJ1Y3QgaXB1X2ljICppYywKPj4gLQkJCSAgICAgIGVudW0g aXB1X2NvbG9yX3NwYWNlIGluX2dfY3MsCj4+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgaXB1X2lj X2NvbG9yc3BhY2UgKmdfaW5fY3MsCj4gV2hhdCBtYWRlIHlvdSBkZWNpZGUgbm90IHRvIGV4cG9z ZSB0aGUgdGFzayBwYXJhbWV0ZXIgc3RydWN0dXJlPwo+Cj4gSSB3YXMgaG9waW5nIHdlIGNvdWxk IGV2ZW50dWFsbHkgbW92ZSB0aGUgVjRMMiBjb2xvcmltZXRyeSBzZXR0aW5ncyB0bwo+IGNvbnZl cnNpb24gbWF0cml4IHRyYW5zbGF0aW9uIGludG8gaW14LW1lZGlhLgoKU3VyZSwgSSdtIGZpbmUg d2l0aCB0aGF0LiBJJ2xsIG1vdmUgdGhlIHRhc2sgcGFyYW1ldGVyIHN0cnVjdCB0byAKaW14LWlw dS12My5oLgoKPgo+IEJ0dywgZG8geW91IGhhdmUgYW55IHBsYW5zIGZvciB1c2luZyBJQyBjb21w b3NpdGlvbj8KPiBpcHVfaWNfdGFza19ncmFwaGljc19pbml0KCkgaXMgY3VycmVudGx5IHVudXNl ZC4uLgoKTm8gcGxhbnMgZm9yIElDIGNvbXBvc2l0aW9uLCBJJ3ZlIG9ubHkgYmVlbiBrZWVwaW5n IHRoZSBmdW5jdGlvbiAKdXAtdG8tZGF0ZS4gSSd2ZSBuZXZlciBldmVuIHRlc3RlZCB0aGlzLCBp dCBtaWdodCBub3QgZXZlbiB3b3JrLiBTaG91bGQgCml0IGJlIHJlbW92ZWQ/Cgo+Cj4+ICAgCQkJ ICAgICAgYm9vbCBnYWxwaGFfZW4sIHUzMiBnYWxwaGEsCj4+ICAgCQkJICAgICAgYm9vbCBjb2xv cmtleV9lbiwgdTMyIGNvbG9ya2V5KQo+PiAgIHsKPj4gQEAgLTQxNiwyMCArNDU5LDI1IEBAIGlu dCBpcHVfaWNfdGFza19ncmFwaGljc19pbml0KHN0cnVjdCBpcHVfaWMgKmljLAo+PiAgIAlpY19j b25mID0gaXB1X2ljX3JlYWQoaWMsIElDX0NPTkYpOwo+PiAgIAo+PiAgIAlpZiAoIShpY19jb25m ICYgaWMtPmJpdC0+aWNfY29uZl9jc2MxX2VuKSkgewo+PiArCQlzdHJ1Y3QgaXB1X2ljX2NvbG9y c3BhY2UgcmdiX2NzOwo+PiArCj4+ICsJCWlwdV9pY19maWxsX2NvbG9yc3BhY2UoJnJnYl9jcywK Pj4gKwkJCQkgICAgICAgVjRMMl9DT0xPUlNQQUNFX1NSR0IsCj4+ICsJCQkJICAgICAgIFY0TDJf WUNCQ1JfRU5DXzYwMSwKPj4gKwkJCQkgICAgICAgVjRMMl9RVUFOVElaQVRJT05fRlVMTF9SQU5H RSwKPj4gKwkJCQkgICAgICAgSVBVVjNfQ09MT1JTUEFDRV9SR0IpOwo+PiArCj4+ICAgCQkvKiBu ZWVkIHRyYW5zcGFyZW50IENTQzEgY29udmVyc2lvbiAqLwo+PiAtCQlyZXQgPSBpbml0X2NzYyhp YywgSVBVVjNfQ09MT1JTUEFDRV9SR0IsCj4+IC0JCQkgICAgICAgSVBVVjNfQ09MT1JTUEFDRV9S R0IsIDApOwo+PiArCQlyZXQgPSBpbml0X2NzYyhpYywgJnJnYl9jcywgJnJnYl9jcywgMCk7Cj4+ ICAgCQlpZiAocmV0KQo+PiAgIAkJCWdvdG8gdW5sb2NrOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWMt PmdfaW5fY3MgPSBpbl9nX2NzOwo+PiArCWljLT5nX2luX2NzID0gKmdfaW5fY3M7Cj4+ICAgCj4+ IC0JaWYgKGljLT5nX2luX2NzICE9IGljLT5vdXRfY3MpIHsKPj4gLQkJcmV0ID0gaW5pdF9jc2Mo aWMsIGljLT5nX2luX2NzLCBpYy0+b3V0X2NzLCAxKTsKPj4gLQkJaWYgKHJldCkKPj4gLQkJCWdv dG8gdW5sb2NrOwo+PiAtCX0KPj4gKwlyZXQgPSBpbml0X2NzYyhpYywgJmljLT5nX2luX2NzLCAm aWMtPm91dF9jcywgMSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byB1bmxvY2s7Cj4gSSBoYWQg dG8gbG9vayB0d2ljZSwgYnV0IHRoaXMgaXMgZmluZS4gSWYgaWMtPmdfaW5fY3MgPT0gaWMtPm91 dF9jcywKPiBpcHVfaWNfdGFza19lbmFibGUoKSB3b24ndCBlbmFibGUgQ1NDMiBpbiBJQ19DT05G LCBhbmQgdGhlc2UgVFBNRU0KPiB2YWx1ZXMgd2lsbCBiZSBpZ25vcmVkLgo+Cj4+ICAgCj4+ICAg CWlmIChnYWxwaGFfZW4pIHsKPj4gICAJCWljX2NvbmYgfD0gSUNfQ09ORl9JQ19HTEJfTE9DX0E7 Cj4+IEBAIC00NTYsMTAgKzUwNCwxMCBAQCBpbnQgaXB1X2ljX3Rhc2tfZ3JhcGhpY3NfaW5pdChz dHJ1Y3QgaXB1X2ljICppYywKPj4gICBFWFBPUlRfU1lNQk9MX0dQTChpcHVfaWNfdGFza19ncmFw aGljc19pbml0KTsKPj4gICAKPj4gICBpbnQgaXB1X2ljX3Rhc2tfaW5pdF9yc2Moc3RydWN0IGlw dV9pYyAqaWMsCj4+ICsJCQkgY29uc3Qgc3RydWN0IGlwdV9pY19jb2xvcnNwYWNlICppbl9jcywK Pj4gKwkJCSBjb25zdCBzdHJ1Y3QgaXB1X2ljX2NvbG9yc3BhY2UgKm91dF9jcywKPj4gICAJCQkg aW50IGluX3dpZHRoLCBpbnQgaW5faGVpZ2h0LAo+PiAgIAkJCSBpbnQgb3V0X3dpZHRoLCBpbnQg b3V0X2hlaWdodCwKPj4gLQkJCSBlbnVtIGlwdV9jb2xvcl9zcGFjZSBpbl9jcywKPj4gLQkJCSBl bnVtIGlwdV9jb2xvcl9zcGFjZSBvdXRfY3MsCj4+ICAgCQkJIHUzMiByc2MpCj4+ICAgewo+PiAg IAlzdHJ1Y3QgaXB1X2ljX3ByaXYgKnByaXYgPSBpYy0+cHJpdjsKPj4gQEAgLTQ5MSwyOCArNTM5 LDI0IEBAIGludCBpcHVfaWNfdGFza19pbml0X3JzYyhzdHJ1Y3QgaXB1X2ljICppYywKPj4gICAJ aXB1X2ljX3dyaXRlKGljLCByc2MsIGljLT5yZWctPnJzYyk7Cj4+ICAgCj4+ICAgCS8qIFNldHVw IGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gKi8KPj4gLQlpYy0+aW5fY3MgPSBpbl9jczsKPj4gLQlp Yy0+b3V0X2NzID0gb3V0X2NzOwo+PiArCWljLT5pbl9jcyA9ICppbl9jczsKPj4gKwlpYy0+b3V0 X2NzID0gKm91dF9jczsKPj4gICAKPj4gLQlpZiAoaWMtPmluX2NzICE9IGljLT5vdXRfY3MpIHsK Pj4gLQkJcmV0ID0gaW5pdF9jc2MoaWMsIGljLT5pbl9jcywgaWMtPm91dF9jcywgMCk7Cj4+IC0J CWlmIChyZXQpCj4+IC0JCQlnb3RvIHVubG9jazsKPj4gLQl9Cj4+ICsJcmV0ID0gaW5pdF9jc2Mo aWMsICZpYy0+aW5fY3MsICZpYy0+b3V0X2NzLCAwKTsKPiBTYW1lIGFzIGFib3ZlIGZvciBDU0Mx Lgo+ICAgCj4+IC11bmxvY2s6Cj4+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxv Y2ssIGZsYWdzKTsKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAgCj4+ICAgaW50IGlwdV9p Y190YXNrX2luaXQoc3RydWN0IGlwdV9pYyAqaWMsCj4+ICsJCSAgICAgY29uc3Qgc3RydWN0IGlw dV9pY19jb2xvcnNwYWNlICppbl9jcywKPj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgaXB1X2ljX2Nv bG9yc3BhY2UgKm91dF9jcywKPj4gICAJCSAgICAgaW50IGluX3dpZHRoLCBpbnQgaW5faGVpZ2h0 LAo+PiAtCQkgICAgIGludCBvdXRfd2lkdGgsIGludCBvdXRfaGVpZ2h0LAo+PiAtCQkgICAgIGVu dW0gaXB1X2NvbG9yX3NwYWNlIGluX2NzLAo+PiAtCQkgICAgIGVudW0gaXB1X2NvbG9yX3NwYWNl IG91dF9jcykKPj4gKwkJICAgICBpbnQgb3V0X3dpZHRoLCBpbnQgb3V0X2hlaWdodCkKPj4gICB7 Cj4+IC0JcmV0dXJuIGlwdV9pY190YXNrX2luaXRfcnNjKGljLCBpbl93aWR0aCwgaW5faGVpZ2h0 LCBvdXRfd2lkdGgsCj4+IC0JCQkJICAgIG91dF9oZWlnaHQsIGluX2NzLCBvdXRfY3MsIDApOwo+ PiArCXJldHVybiBpcHVfaWNfdGFza19pbml0X3JzYyhpYywgaW5fY3MsIG91dF9jcywKPj4gKwkJ CQkgICAgaW5fd2lkdGgsIGluX2hlaWdodCwKPj4gKwkJCQkgICAgb3V0X3dpZHRoLCBvdXRfaGVp Z2h0LCAwKTsKPj4gICB9Cj4+ICAgRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ljX3Rhc2tfaW5pdCk7 Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWltYWdlLWNvbnZl cnQuYyBiL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtaW1hZ2UtY29udmVydC5jCj4+IGluZGV4IDEz MTAzYWI4NjA1MC4uY2NiYzhmNGQ5NWQ3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9pcHUt djMvaXB1LWltYWdlLWNvbnZlcnQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWlt YWdlLWNvbnZlcnQuYwo+PiBAQCAtMTMxNyw3ICsxMzE3LDcgQEAgc3RhdGljIGludCBjb252ZXJ0 X3N0YXJ0KHN0cnVjdCBpcHVfaW1hZ2VfY29udmVydF9ydW4gKnJ1biwgdW5zaWduZWQgaW50IHRp bGUpCj4+ICAgCXN0cnVjdCBpcHVfaW1hZ2VfY29udmVydF9wcml2ICpwcml2ID0gY2hhbi0+cHJp djsKPj4gICAJc3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2ltYWdlICpzX2ltYWdlID0gJmN0eC0+ aW47Cj4+ICAgCXN0cnVjdCBpcHVfaW1hZ2VfY29udmVydF9pbWFnZSAqZF9pbWFnZSA9ICZjdHgt Pm91dDsKPj4gLQllbnVtIGlwdV9jb2xvcl9zcGFjZSBzcmNfY3MsIGRlc3RfY3M7Cj4+ICsJc3Ry dWN0IGlwdV9pY19jb2xvcnNwYWNlIHNyY19jcywgZGVzdF9jczsKPj4gICAJdW5zaWduZWQgaW50 IGRzdF90aWxlID0gY3R4LT5vdXRfdGlsZV9tYXBbdGlsZV07Cj4+ICAgCXVuc2lnbmVkIGludCBk ZXN0X3dpZHRoLCBkZXN0X2hlaWdodDsKPj4gICAJdW5zaWduZWQgaW50IGNvbCwgcm93Owo+PiBA QCAtMTMyNyw4ICsxMzI3LDE2IEBAIHN0YXRpYyBpbnQgY29udmVydF9zdGFydChzdHJ1Y3QgaXB1 X2ltYWdlX2NvbnZlcnRfcnVuICpydW4sIHVuc2lnbmVkIGludCB0aWxlKQo+PiAgIAlkZXZfZGJn KHByaXYtPmlwdS0+ZGV2LCAiJXM6IHRhc2sgJXU6IHN0YXJ0aW5nIGN0eCAlcCBydW4gJXAgdGls ZSAldSAtPiAldVxuIiwKPj4gICAJCV9fZnVuY19fLCBjaGFuLT5pY190YXNrLCBjdHgsIHJ1biwg dGlsZSwgZHN0X3RpbGUpOwo+PiAgIAo+PiAtCXNyY19jcyA9IGlwdV9waXhlbGZvcm1hdF90b19j b2xvcnNwYWNlKHNfaW1hZ2UtPmZtdC0+Zm91cmNjKTsKPj4gLQlkZXN0X2NzID0gaXB1X3BpeGVs Zm9ybWF0X3RvX2NvbG9yc3BhY2UoZF9pbWFnZS0+Zm10LT5mb3VyY2MpOwo+PiArCWlwdV9pY19m aWxsX2NvbG9yc3BhY2UoJnNyY19jcywKPj4gKwkJCXNfaW1hZ2UtPmJhc2UucGl4LmNvbG9yc3Bh Y2UsCj4+ICsJCQlzX2ltYWdlLT5iYXNlLnBpeC55Y2Jjcl9lbmMsCj4+ICsJCQlzX2ltYWdlLT5i YXNlLnBpeC5xdWFudGl6YXRpb24sCj4+ICsJCQlpcHVfcGl4ZWxmb3JtYXRfdG9fY29sb3JzcGFj ZShzX2ltYWdlLT5mbXQtPmZvdXJjYykpOwo+PiArCWlwdV9pY19maWxsX2NvbG9yc3BhY2UoJmRl c3RfY3MsCj4+ICsJCQlkX2ltYWdlLT5iYXNlLnBpeC5jb2xvcnNwYWNlLAo+PiArCQkJZF9pbWFn ZS0+YmFzZS5waXgueWNiY3JfZW5jLAo+PiArCQkJZF9pbWFnZS0+YmFzZS5waXgucXVhbnRpemF0 aW9uLAo+PiArCQkJaXB1X3BpeGVsZm9ybWF0X3RvX2NvbG9yc3BhY2UoZF9pbWFnZS0+Zm10LT5m b3VyY2MpKTsKPiBJZiBpcHVfaWNfdGFza19pbml0KF9yc2MpIGNvdWxkIGJlIHBhc3NlZCB0aGUg dGFzayBwYXJhbWV0ZXIgc3RydWN0dXJlLAo+IGl0IGNvdWxkIGJlIGNhbGN1bGF0ZWQgb25jZSBp biBpcHVfaW1hZ2VfY29udmVydF9wcmVwYXJlIGFuZCBzdG9yZWQgaW4KPiBpcHVfaW1hZ2VfY29u dmVydF9jdHggZm9yIHJlcGVhdGVkIHVzZS4KClllcywgSSdsbCBhZGQgdGhpcyBmb3IgdjcuCgpT dGV2ZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs