From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shankar, Uma" Subject: Re: [v8 2/2] drm/i915/icl: Enable Plane Input CSC for YUV to RGB Conversion Date: Thu, 1 Nov 2018 18:42:55 +0000 Message-ID: References: <1541097192-12300-1-git-send-email-uma.shankar@intel.com> <1541097192-12300-3-git-send-email-uma.shankar@intel.com> <20181101182936.GL9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 47E496E46A for ; Thu, 1 Nov 2018 18:43:02 +0000 (UTC) In-Reply-To: <20181101182936.GL9144@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?iso-8859-1?Q?Ville_Syrj=E4l=E4?= Cc: "intel-gfx@lists.freedesktop.org" , "Syrjala, Ville" , "Lankhorst, Maarten" List-Id: intel-gfx@lists.freedesktop.org Cgo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPkZyb206IFZpbGxlIFN5cmrDpGzDpCBbbWFp bHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+U2VudDogRnJpZGF5LCBOb3ZlbWJl ciAyLCAyMDE4IDEyOjAwIEFNCj5UbzogU2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5j b20+Cj5DYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgU3lyamFsYSwgVmlsbGUg PHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPjsKPkxhbmtob3JzdCwgTWFhcnRlbiA8bWFhcnRlbi5s YW5raG9yc3RAaW50ZWwuY29tPgo+U3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFt2OCAyLzJdIGRy bS9pOTE1L2ljbDogRW5hYmxlIFBsYW5lIElucHV0IENTQyBmb3IgWVVWIHRvCj5SR0IgQ29udmVy c2lvbgo+Cj5PbiBGcmksIE5vdiAwMiwgMjAxOCBhdCAxMjowMzoxMkFNICswNTMwLCBVbWEgU2hh bmthciB3cm90ZToKPj4gUGxhbmUgaW5wdXQgQ1NDIG5lZWRzIHRvIGJlIGVuYWJsZWQgdG8gY29u dmVydCBmcmFtYnVmZmVycyBmcm9tIFlVViB0bwo+PiBSR0IuIFRoaXMgaXMgbmVlZGVkIGZvciBi b3R0b20gMyBwbGFuZXMgb24gSUNMLCByZXN0IG9mIHRoZSBwbGFuZXMKPj4gaGF2ZSBoYXJkY29k ZWQgY29udmVyc2lvbiBhbmQgdGFrZW4gY2FyZSBieSB0aGUgbGVnYWN5IGNvZGUuCj4+Cj4+IFRo aXMgcGF0Y2ggZGVmaW5lcyB0aGUgY28tZWZmaWNpZW50IHZhbHVlcyBmb3IgWVVWIHRvIFJHQiBj b252ZXJzaW9uCj4+IGluIEJUNzA5IGFuZCBCVDYwMSBmb3JtYXRzLiBJdCBwcm9ncmFtcyB0aGUg Y29lZmZpY2llbnRzIGFuZCBlbmFibGVzCj4+IHRoZSBwbGFuZSBpbnB1dCBjc2MgdW5pdCBpbiBo YXJkd2FyZS4KPj4KPj4gVGhpcyBoYXMgYmVlbiB2ZXJpZmllZCBhbmQgdGVzdGVkIGJ5IE1hYXJ0 ZW4gYW5kIHRoZSBjaGFuZ2UgaXMgd29ya2luZwo+PiBhcyBleHBlY3B0ZWQuCj4+Cj4+IHYyOiBB ZGRyZXNzZWQgTWFhcnRlbidzIGFuZCBWaWxsZSdzIHJldmlldyBjb21tZW50cyBhbmQgYWRkZWQg dGhlCj4+IGNvZWZmaWNpZW50cyBpbiBhIDJEIGFycmF5IGluc3RlYWQgb2YgaW5kZXBlbmRlbnQg TWFjcm9zLgo+Pgo+PiB2MzogQWRkZWQgaW5kaXZpZHVhbCBjb2VmZmljaWVudCBtYXRyaXggKDkg dmFsdWVzKSBpbnN0ZWFkIG9mIDYKPj4gcmVnaXN0ZXIgdmFsdWVzIGFzIHBlciBNYWFydGVuJ3Mg Y29tbWVudC4gQWxzbyBhZGRyZXNlZCBhIHNoaWZ0IGlzc3VlCj4+IHdpdGggQiBjaGFubmVsIGNv ZWZmaWNpZW50Lgo+Pgo+PiB2NDogQWRkZWQgc3VwcG9ydCBmb3IgTGltaXRlZCBSYW5nZSBDb2xv ciBIYW5kbGluZwo+Pgo+PiB2NTogRml4ZWQgTWF0dCBhbmQgTWFhcnRlbidzIHJldmlldyBjb21t ZW50cy4KPj4KPj4gdjY6IEFkZGVkIGh1bWFuIHJlYWRhYmxlIG1hdHJpeCB2YWx1ZXMgZm9yIFlV ViB0byBSR0IgQ29udmVyc2lvbiBhbG9uZwo+PiB3aXRoIGp1c3QgdGhlIGJzcGVjIHJlZ2lzdGVy IHZhbHVlcywgYXMgcGVyIE1hdHQncyBzdWdnZXN0aW9uLgo+Pgo+PiB2NzogUmVmYWN0b3JlZCB0 aGUgY29kZSwgbW92ZSBjc2MgY29lZmZpY2llbnQgcHJvZ3JhbW1pbmcgZnVuY3Rpb24gdG8KPj4g aW50ZWxfc3ByaXRlLmMgYW5kIG1hZGUgaXQgc3RhdGljIGFzIHBlciBWaWxsZSdzIHJldmlldyBj b21tZW50Lgo+Pgo+PiB2ODogQWRkcmVzc2VkIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnQuIENhbGxl ZCB0aGUgY29lZmZpY2llbnQKPj4gcHJvZ3JhbW1pbmcgZnJvbSB3aXRoaW4gdGhlIHNrbF9wcm9n cmFtX3BsYW5lIGFuZCB1c2VkIEk5MTVfV1JJVEVfRlcKPj4gaW5zdGVhZCBvZiBJOTE1X1dSSVRF Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29t Pgo+PiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4K Pj4gUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+Cj4+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgIDE3ICsrKystLQo+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu YyAgfCAxMDgKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIDIgZmls ZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggZmUwNDVhYi4uZGFlYzFmZCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMzY2Niw2ICsz NjY2LDcgQEAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUKPipjcnRjX3N0YXRlLAo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9Cj4+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4+ICAJY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPj4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+PiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+Pgo+PiAgCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpIHsKPj4gQEAgLTM2NzUsMTQgKzM2NzYsMjAgQEAgdTMy IGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0Cj5pbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+PiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9E SVNBQkxFOwo+PiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBnbGtfcGxhbmVfY29sb3JfY3RsX2FscGhh KHBsYW5lX3N0YXRlKTsKPj4KPj4gLQlpZiAoZmItPmZvcm1hdC0+aXNfeXV2KSB7Cj4+IC0JCWlm IChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9lbmNvZGluZyA9PQo+RFJNX0NPTE9SX1lDQkNSX0JU NzA5KQo+PiAtCQkJcGxhbmVfY29sb3JfY3RsIHw9Cj5QTEFORV9DT0xPUl9DU0NfTU9ERV9ZVVY3 MDlfVE9fUkdCNzA5Owo+PiArCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYgIWljbF9pc19oZHJf cGxhbmUocGxhbmUpKSB7Cj4+ICsJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9lbmNvZGlu ZyA9PQo+PiArCQkJCURSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKPj4gKwkJCXBsYW5lX2NvbG9yX2N0 bCB8PQo+PiArCj4JUExBTkVfQ09MT1JfQ1NDX01PREVfWVVWNzA5X1RPX1JHQjcwOTsKPj4gIAkJ ZWxzZQo+PiAtCQkJcGxhbmVfY29sb3JfY3RsIHw9Cj5QTEFORV9DT0xPUl9DU0NfTU9ERV9ZVVY2 MDFfVE9fUkdCNzA5Owo+PiArCQkJcGxhbmVfY29sb3JfY3RsIHw9Cj4+ICsKPglQTEFORV9DT0xP Ul9DU0NfTU9ERV9ZVVY2MDFfVE9fUkdCNzA5Owo+Pgo+PiAgCQlpZiAocGxhbmVfc3RhdGUtPmJh c2UuY29sb3JfcmFuZ2UgPT0KPkRSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+PiAtCQkJcGxh bmVfY29sb3JfY3RsIHw9Cj5QTEFORV9DT0xPUl9ZVVZfUkFOR0VfQ09SUkVDVElPTl9ESVNBQkxF Owo+PiArCQkJcGxhbmVfY29sb3JfY3RsIHw9Cj4+ICsJCQlQTEFORV9DT0xPUl9ZVVZfUkFOR0Vf Q09SUkVDVElPTl9ESVNBQkxFOwo+Cj5UaGVzZSBmb3JtYXR0aW5nIGNoYW5nZXMgdG8gdGhlIFNE UiBwbGFuZSBwYXRoIGRvbid0IHNlZW0gdG8gYmVsb25nIGluIHRoaXMKPnBhdGNoLiBKdXN0IGFk ZHMgbm9pc2UgbWFraW5nIGl0IGhhcmQgdG8gc2VlIHdoYXQgaXMgYWN0dWFsbHkgY2hhbmdlZC4K Ckl0IHdhcyBnb2luZyBiZXlvbmQgODAgY2hhcmFjdGVycyBzbyB0aG91Z2h0IG9mIGNvcnJlY3Rp bmcgaXQsIGJ1dCB5ZXMgdGhleSBkb24ndApiZWxvbmcgdG8gdGhlIGN1cnJlbnQgY2hhbmdlIGhl cmUuIFdpbGwgZHJvcCB0aGVzZSBmcm9tIHRoZSBwYXRjaC4KCj4+ICsJfSBlbHNlIGlmIChmYi0+ Zm9ybWF0LT5pc195dXYpIHsKPj4gKwkJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX0lO UFVUX0NTQ19FTkFCTEU7Cj4+ICAJfQo+Pgo+PiAgCXJldHVybiBwbGFuZV9jb2xvcl9jdGw7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+IGluZGV4IGM2MDRmNmIuLjBiOWNm MjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+IEBAIC00MCw2ICs0 MCw3IEBACj4+ICAjaW5jbHVkZSAiaW50ZWxfZnJvbnRidWZmZXIuaCIKPj4gICNpbmNsdWRlIDxk cm0vaTkxNV9kcm0uaD4KPj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+PiArI2luY2x1ZGUgPGRy bS9kcm1fY29sb3JfbWdtdC5oPgo+Pgo+PiAgaW50IGludGVsX3VzZWNzX3RvX3NjYW5saW5lcyhj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKPj4gIAkJCSAgICAg aW50IHVzZWNzKQo+PiBAQCAtMzYxLDYgKzM2MiwxMDkgQEAgaW50IGludGVsX3BsYW5lX2NoZWNr X3NyY19jb29yZGluYXRlcyhzdHJ1Y3QKPmludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK Pj4gIAkJICAgICAgKChjcnRjX3cgKyAxKSA8PCAxNil8KGNydGNfaCArIDEpKTsgIH0KPj4KPj4g Ky8qIFByZW9mZnNldCB2YWx1ZXMgZm9yIFlVViB0byBSR0IgQ29udmVyc2lvbiAqLwo+PiArI2Rl ZmluZSBQUkVPRkZfWVVWX1RPX1JHQl9ISQkJMHgxODAwCj4+ICsjZGVmaW5lIFBSRU9GRl9ZVVZf VE9fUkdCX01FCQkweDFGMDAKPj4gKyNkZWZpbmUgUFJFT0ZGX1lVVl9UT19SR0JfTE8JCTB4MTgw MAo+PiArCj4+ICsjZGVmaW5lICBST0ZGKHgpICAgICAgICAgICgoKHgpICYgMHhmZmZmKSA8PCAx NikKPj4gKyNkZWZpbmUgIEdPRkYoeCkgICAgICAgICAgKCgoeCkgJiAweGZmZmYpIDw8IDApCj4+ ICsjZGVmaW5lICBCT0ZGKHgpICAgICAgICAgICgoKHgpICYgMHhmZmZmKSA8PCAxNikKPj4gKwo+ PiArc3RhdGljIHZvaWQKPj4gK2ljbF9wcm9ncmFtX2lucHV0X2NzY19jb2VmZihjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gKwkJCSAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSB7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0KPj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ ZGV2KTsKPj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+ICsJ c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9Cj4+ICsJCXRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPgo+cy9pbnRlbF9wbGFuZS9wbGFuZS8KPgo+PiArCWVu dW0gcGxhbmVfaWQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+aWQ7Cj4KPnMvcGxhbmUvcGxhbmVfaWQv Cj4KPkkgYW0gdHJ5aW5nIHRvIG1ha2UgdGhlIGRyaXZlciB1c2UgY29uc2lzdG5ldCBuYW1lcyBm b3IgdGhpbmdzLgo+TGV0J3Mgbm90IGdvIGFnYWluc3QgdGhhdCBwcm9jZXNzIHdoZW4gYWRkaW5n IG5ldyBjb2RlLgoKT2sgU3VyZSwgd2lsbCBrZWVwIHRoaXMgaW4gbWluZCBmb3IgZnV0dXJlIGNo YW5nZXMgYXMgd2VsbC4KCj4+ICsKPj4gKwlzdGF0aWMgY29uc3QgdTE2IGlucHV0X2NzY19tYXRy aXhbXVs5XSA9IHsKPj4gKwkJLyoKPj4gKwkJICogQlQuNjAxIGZ1bGwgcmFuZ2UgWUNiQ3IgLT4g ZnVsbCByYW5nZSBSR0IKPj4gKwkJICogVGhlIG1hdHJpeCByZXF1aXJlZCBpcyA6Cj4+ICsJCSAq IFsxLjAwMCwgMC4wMDAsIDEuMzcxLAo+PiArCQkgKiAgMS4wMDAsIC0wLjMzNiwgLTAuNjk4LAo+ PiArCQkgKiAgMS4wMDAsIDEuNzMyLCAwLjAwMDBdCj4+ICsJCSAqLwo+PiArCQlbRFJNX0NPTE9S X1lDQkNSX0JUNjAxXSA9IHsKPj4gKwkJCTB4N0FGOCwgMHg3ODAwLCAweDAsCj4+ICsJCQkweDhC MjgsIDB4NzgwMCwgMHg5QUMwLAo+PiArCQkJMHgwLCAweDc4MDAsIDB4N0REOCwKPj4gKwkJfSwK Pj4gKwkJLyoKPj4gKwkJICogQlQuNzA5IGZ1bGwgcmFuZ2UgWUNiQ3IgLT4gZnVsbCByYW5nZSBS R0IKPj4gKwkJICogVGhlIG1hdHJpeCByZXF1aXJlZCBpcyA6Cj4+ICsJCSAqIFsxLjAwMCwgMC4w MDAsIDEuNTc0LAo+PiArCQkgKiAgMS4wMDAsIC0wLjE4NywgLTAuNDY4LAo+PiArCQkgKiAgMS4w MDAsIDEuODU1LCAwLjAwMDBdCj4+ICsJCSAqLwo+PiArCQlbRFJNX0NPTE9SX1lDQkNSX0JUNzA5 XSA9IHsKPj4gKwkJCTB4N0M5OCwgMHg3ODAwLCAweDAsCj4+ICsJCQkweDlFRjgsIDB4NzgwMCwg MHhBQkY4LAo+PiArCQkJMHgwLCAweDc4MDAsICAweDdFRDgsCj4+ICsJCX0sCj4+ICsJfTsKPj4g Kwo+PiArCS8qIE1hdHJpeCBmb3IgTGltaXRlZCBSYW5nZSB0byBGdWxsIFJhbmdlIENvbnZlcnNp b24gKi8KPj4gKwlzdGF0aWMgY29uc3QgdTE2IGlucHV0X2NzY19tYXRyaXhfbHJbXVs5XSA9IHsK Pj4gKwkJLyoKPj4gKwkJICogQlQuNjAxIExpbXRlZCByYW5nZSBZQ2JDciAtPiBmdWxsIHJhbmdl IFJHQgo+PiArCQkgKiBUaGUgbWF0cml4IHJlcXVpcmVkIGlzIDoKPj4gKwkJICogWzEuMTY0Mzg0 LCAwLjAwMCwgMS41OTYzNzAsCj4+ICsJCSAqICAxLjEzODM5MywgLTAuMzgyNTAwLCAtMC43OTQ1 OTgsCj4+ICsJCSAqICAxLjEzODM5MywgMS45NzE2OTYsIDAuMDAwMF0KPj4gKwkJICovCj4+ICsJ CVtEUk1fQ09MT1JfWUNCQ1JfQlQ2MDFdID0gewo+PiArCQkJMHg3Q0M4LCAweDc5NTAsIDB4MCwK Pj4gKwkJCTB4OENCOCwgMHg3OTE4LCAweDlDNDAsCj4+ICsJCQkweDAsIDB4NzkxOCwgMHg3RkM4 LAo+PiArCQl9LAo+PiArCQkvKgo+PiArCQkgKiBCVC43MDkgTGltaXRlZCByYW5nZSBZQ2JDciAt PiBmdWxsIHJhbmdlIFJHQgo+PiArCQkgKiBUaGUgbWF0cml4IHJlcXVpcmVkIGlzIDoKPj4gKwkJ ICogWzEuMTY0LCAwLjAwMCwgMS44MzM2NzEsCj4+ICsJCSAqICAxLjEzODM5MywgLTAuMjEzMjQ5 LCAtMC41MzI5MDksCj4+ICsJCSAqICAxLjEzODM5MywgMi4xMTI0MDIsIDAuMDAwMF0KPj4gKwkJ ICovCj4+ICsJCVtEUk1fQ09MT1JfWUNCQ1JfQlQ3MDldID0gewo+PiArCQkJMHg3RUE4LCAweDc5 NTAsIDB4MCwKPj4gKwkJCTB4ODg4OCwgMHg3OTE4LCAweEFEQTgsCj4+ICsJCQkweDAsIDB4Nzkx OCwgIDB4Njg3MCwKPj4gKwkJfSwKPj4gKwl9Owo+PiArCWNvbnN0IHUxNiAqY3NjOwo+PiArCj4+ ICsJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09Cj5EUk1fQ09MT1JfWUNCQ1Jf RlVMTF9SQU5HRSkKPj4gKwkJY3NjID0gaW5wdXRfY3NjX21hdHJpeFtwbGFuZV9zdGF0ZS0+YmFz ZS5jb2xvcl9lbmNvZGluZ107Cj4+ICsJZWxzZQo+PiArCQljc2MgPSBpbnB1dF9jc2NfbWF0cml4 X2xyW3BsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29kaW5nXTsKPj4gKwo+PiArCUk5MTVfV1JJ VEVfRlcoUExBTkVfSU5QVVRfQ1NDX0NPRUZGKHBpcGUsIHBsYW5lLCAwKSwgUk9GRihjc2NbMF0p Cj58Cj4+ICsJCSAgIEdPRkYoY3NjWzFdKSk7Cj4KPlNvbWUgYWxpZ25tZW50IGlzc3VlcyBoZXJl LiBJIGd1ZXNzIG1pc3NpbmcgYSByZWluZGVudCBhZnRlciBhZGRpbmcgdGhlIF9GVygpLgoKWWVh aCwgd2lsbCByZWN0aWZ5IHRoaXMuCgo+PiArCUk5MTVfV1JJVEVfRlcoUExBTkVfSU5QVVRfQ1ND X0NPRUZGKHBpcGUsIHBsYW5lLCAxKSwKPkJPRkYoY3NjWzJdKSk7Cj4+ICsJSTkxNV9XUklURV9G VyhQTEFORV9JTlBVVF9DU0NfQ09FRkYocGlwZSwgcGxhbmUsIDIpLCBST0ZGKGNzY1szXSkKPnwK Pj4gKwkJICAgR09GRihjc2NbNF0pKTsKPj4gKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX0lOUFVUX0NT Q19DT0VGRihwaXBlLCBwbGFuZSwgMyksCj5CT0ZGKGNzY1s1XSkpOwo+PiArCUk5MTVfV1JJVEVf RlcoUExBTkVfSU5QVVRfQ1NDX0NPRUZGKHBpcGUsIHBsYW5lLCA0KSwgUk9GRihjc2NbNl0pCj58 Cj4+ICsJCSAgIEdPRkYoY3NjWzddKSk7Cj4+ICsJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9D U0NfQ09FRkYocGlwZSwgcGxhbmUsIDUpLAo+Qk9GRihjc2NbOF0pKTsKPj4gKwo+PiArCUk5MTVf V1JJVEVfRlcoUExBTkVfSU5QVVRfQ1NDX1BSRU9GRihwaXBlLCBwbGFuZSwgMCksCj4+ICsJCSAg IFBSRU9GRl9ZVVZfVE9fUkdCX0hJKTsKPj4gKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX0lOUFVUX0NT Q19QUkVPRkYocGlwZSwgcGxhbmUsIDEpLAo+PiArCQkgICBQUkVPRkZfWVVWX1RPX1JHQl9NRSk7 Cj4+ICsJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9DU0NfUFJFT0ZGKHBpcGUsIHBsYW5lLCAy KSwKPj4gKwkJICAgUFJFT0ZGX1lVVl9UT19SR0JfTE8pOwo+PiArCUk5MTVfV1JJVEVfRlcoUExB TkVfSU5QVVRfQ1NDX1BPU1RPRkYocGlwZSwgcGxhbmUsIDApLCAweDApOwo+PiArCUk5MTVfV1JJ VEVfRlcoUExBTkVfSU5QVVRfQ1NDX1BPU1RPRkYocGlwZSwgcGxhbmUsIDEpLCAweDApOwo+PiAr CUk5MTVfV1JJVEVfRlcoUExBTkVfSU5QVVRfQ1NDX1BPU1RPRkYocGlwZSwgcGxhbmUsIDIpLCAw eDApOyB9Cj4+ICsKPj4gIHN0YXRpYyB2b2lkCj4+ICBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLAo+PiAgCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLCBAQCAtMzgxLDYgKzQ4NSw3Cj5AQAo+PiBpbnQgaW50ZWxfcGxhbmVfY2hl Y2tfc3JjX2Nvb3JkaW5hdGVzKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4+ICAJdWludDMyX3Qgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNjsKPj4gIAl1aW50MzJfdCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmxpbmtlZCA9 IHBsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmU7Cj4+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPj4gIAl1bnNpZ25lZCBsb25nIGlycWZs YWdzOwo+PiAgCXUzMiBrZXltc2sgPSAwLCBrZXltYXggPSAwOwo+Pgo+PiBAQCAtMzk0LDYgKzQ5 OSw5IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0Cj5pbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4+ICAJCUk5MTVfV1JJVEVfRlcoUExBTkVfQ09M T1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwKPj4gIAkJCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9j dGwpOwo+Pgo+PiArCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYgaWNsX2lzX2hkcl9wbGFuZShw bGFuZSkpCj4+ICsJCWljbF9wcm9ncmFtX2lucHV0X2NzY19jb2VmZihjcnRjX3N0YXRlLCBwbGFu ZV9zdGF0ZSk7Cj4+ICsKPj4gIAlpZiAoa2V5LT5mbGFncykgewo+PiAgCQlJOTE1X1dSSVRFX0ZX KFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZV9pZCksIGtleS0KPj5taW5fdmFsdWUpOwo+Pgo+PiAt LQo+PiAxLjkuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKPgo+LS0KPlZpbGxlIFN5cmrDpGzDpAo+SW50ZWwKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==