From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 4/7] drm/i915: Clean up ilk/icl pipe/output CSC programming Date: Wed, 13 Mar 2019 21:51:03 +0200 Message-ID: <20190313195103.GO3888@intel.com> References: <20190218193137.22914-1-ville.syrjala@linux.intel.com> <20190218193137.22914-5-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id B93E16E0BA for ; Wed, 13 Mar 2019 19:51:06 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMTMsIDIwMTkgYXQgMDQ6Mzg6MDFQTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBWaWxsZSBT eXJqYWxhIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPlNlbnQ6IFR1 ZXNkYXksIEZlYnJ1YXJ5IDE5LCAyMDE5IDE6MDIgQU0KPiA+VG86IGludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiA+Q2M6IFNoYW5rYXIsIFVtYSA8dW1hLnNoYW5rYXJAaW50ZWwuY29t PjsgUm9wZXIsIE1hdHRoZXcgRAo+ID48bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+U3Vi amVjdDogW1BBVENIIDQvN10gZHJtL2k5MTU6IENsZWFuIHVwIGlsay9pY2wgcGlwZS9vdXRwdXQg Q1NDIHByb2dyYW1taW5nCj4gPgo+ID5Gcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgo+ID4KPiA+V2UgaGF2ZSBmYXIgdG9vIG11Y2ggbWVzc3kgZHVw bGljYXRlZCBjb2RlIGluIHRoZSBwaXBlL291dHB1dCBDU0MgcHJvZ3JhbW1pbmcuCj4gPlNpbXBs eSBwcm92aWRlIHR3byBmdW5jdGlvbnMKPiA+KGlsa191cGRhdGVfcGlwZV9jc2MoKSBhbmQgaWNs X3VwZGF0ZV9vdXRwdXRfY3NjKCkpIHRvIHByb2dyYW0gdGhlIHJlbGV2YW50IENTQwo+ID5yZWdp c3RlcnMuIFRoZSBkZXNpcmVkIG9mZnNldHMgYW5kIGNvZWZmaWNpZW50cyBhcmUgcGFzc2VkIGlu IGFzIHBhcmFtZXRlcnMuCj4gPgo+ID5TaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4tLS0KPiA+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yLmMgfCAxNjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiA+ IDEgZmlsZSBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKPiA+Cj4g PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID5pbmRleCBkZGM0OGMwZDQ1YWMuLjYxY2I2 OTA1OGIzNSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3Iu Ywo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPkBAIC00MCwy MyArNDAsNiBAQAo+ID4gI2RlZmluZSBDVE1fQ09FRkZfQUJTKGNvZWZmKQkJKChjb2VmZikgJiAo Q1RNX0NPRUZGX1NJR04gLSAxKSkKPiA+Cj4gPiAjZGVmaW5lIExFR0FDWV9MVVRfTEVOR1RICQky NTYKPiA+LQo+ID4tLyogUG9zdCBvZmZzZXQgdmFsdWVzIGZvciBSR0ItPllDQkNSIGNvbnZlcnNp b24gKi8gLSNkZWZpbmUKPiA+UE9TVE9GRl9SR0JfVE9fWVVWX0hJIDB4ODAwIC0jZGVmaW5lIFBP U1RPRkZfUkdCX1RPX1lVVl9NRSAweDEwMCAtCj4gPiNkZWZpbmUgUE9TVE9GRl9SR0JfVE9fWVVW X0xPIDB4ODAwCj4gPi0KPiA+LS8qCj4gPi0gKiBUaGVzZSB2YWx1ZXMgYXJlIGRpcmVjdCByZWdp c3RlciB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSBCc3BlYywKPiA+LSAqIGZvciBSR0ItPllVViBj b252ZXJzaW9uIG1hdHJpeCAoY29sb3JzcGFjZSBCVDcwOSkKPiA+LSAqLwo+ID4tI2RlZmluZSBD U0NfUkdCX1RPX1lVVl9SVV9HVSAweDJiYTgwOWQ4IC0jZGVmaW5lIENTQ19SR0JfVE9fWVVWX0JV Cj4gPjB4MzdlODAwMDAgLSNkZWZpbmUgQ1NDX1JHQl9UT19ZVVZfUllfR1kgMHgxZTA4OWNjMCAt I2RlZmluZQo+ID5DU0NfUkdCX1RPX1lVVl9CWSAweGI1MjgwMDAwIC0jZGVmaW5lIENTQ19SR0Jf VE9fWVVWX1JWX0dWIDB4YmNlODlhZDggLQo+ID4jZGVmaW5lIENTQ19SR0JfVE9fWVVWX0JWIDB4 MWUwODAwMDAKPiA+LQo+ID4gLyoKPiA+ICAqIEV4dHJhY3QgdGhlIENTQyBjb2VmZmljaWVudCBm cm9tIGEgQ1RNIGNvZWZmaWNpZW50IChpbiBVMzIuMzIgZml4ZWQgcG9pbnQKPiA+ICAqIGZvcm1h dCkuIFRoaXMgbWFjcm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50IHdlIHdhbnQgdHJhbnNmb3JtZWQg YW5kIHRoZSBAQCAtNzQsNgo+ID4rNTcsMzEgQEAKPiA+ICNkZWZpbmUgSUxLX0NTQ19DT0VGRl8x XzAJCVwKPiA+IAkoKDcgPDwgMTIpIHwgSUxLX0NTQ19DT0VGRl9GUChDVE1fQ09FRkZfMV8wLCA4 KSkKPiA+Cj4gPisjZGVmaW5lIElMS19DU0NfUE9TVE9GRl9MSU1JVEVEX1JBTkdFICgxNiAqICgx IDw8IDEyKSAvIDI1NSkKPiA+Kwo+ID4rc3RhdGljIGNvbnN0IHUxNiBpbGtfY3NjX29mZl96ZXJv WzNdID0ge307Cj4gPisKPiA+K3N0YXRpYyBjb25zdCB1MTYgaWxrX2NzY19wb3N0b2ZmX2xpbWl0 ZWRfcmFuZ2VbM10gPSB7Cj4gPisJSUxLX0NTQ19QT1NUT0ZGX0xJTUlURURfUkFOR0UsCj4gPisJ SUxLX0NTQ19QT1NUT0ZGX0xJTUlURURfUkFOR0UsCj4gPisJSUxLX0NTQ19QT1NUT0ZGX0xJTUlU RURfUkFOR0UsCj4gPit9Owo+ID4rCj4gPisvKgo+ID4rICogVGhlc2UgdmFsdWVzIGFyZSBkaXJl Y3QgcmVnaXN0ZXIgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGUgQnNwZWMsCj4gPisgKiBmb3IgUkdC LT5ZVVYgY29udmVyc2lvbiBtYXRyaXggKGNvbG9yc3BhY2UgQlQ3MDkpICAqLyBzdGF0aWMgY29u c3QKPiA+K3UxNiBpbGtfY3NjX2NvZWZmX3JnYl90b195Y2Jjcls5XSA9IHsKPiA+KwkweDFlMDgs IDB4OWNjMCwgMHhiNTI4LAo+ID4rCTB4MmJhOCwgMHgwOWQ4LCAweDM3ZTgsCj4gPisJMHhiY2U4 LCAweDlhZDgsIDB4MWUwOCwKPiA+K307Cj4gCj4gSSBhbSBub3Qgc3VyZSBpZiB0aGUgbWF0cml4 IGNvZWZmaWNpZW50cyBhcmUgY29ycmVjdC4gQ2FuIHlvdSBwbGVhc2UgY3Jvc3MgY2hlY2ssIGlm IEkgYW0KPiBtaXNzaW5nIHNvbWV0aGluZy4gU3BlYyBoYXMgdGhlc2UgYXMgdmFsdWVzIChob3Bp bmcgdGFibGUgZG9lc27igJl0IGdldCBkaXN0b3J0ZWQgd2hpbGUgc2VuZGluZyA6KSkKPiAJQnQu NjAxCQkJQnQuNzA5Cj4gCVZhbHVlCVByb2dyYW0JVmFsdWUJCVByb2dyYW0KPiBSVQkwLjI5OTAJ MHgxOTkwCQkwLjIxMjYwCQkweDJEOTgKPiBHVQkwLjU4NzAJMHgwOTY4CQkwLjcxNTIwCQkweDBC NzAKPiBCVQkwLjExNDAJMHgzRTk4CQkwLjA3MjIwCQkweDM5NDAKPiBSVgktMC4xNjg3CTB4QUFD OAkJLTAuMTE0NjAJMHhCRUE4Cj4gR1YJLTAuMzMxMwkweDlBOTgJCS0wLjM4NTQwCTB4OUM1OAo+ IEJWCTAuNTAwMAkweDA4MDAJCTAuNTAwMDAJCTB4MDgwMAo+IFJZCTAuNTAwMAkweDA4MDAJCTAu NTAwMDAJCTB4MDgwMAo+IEdZCS0wLjQxODcJMHg5RDY4CQktMC40NTQyMAkweDlFODgKPiBCWQkt MC4wODEzCTB4QkE2OAkJLTAuMDQ1ODAJMHhCNUUwCgpNeSBjYWxjdWxhdGlvbnMgYXJlIGdpdmlu ZyBtZSB0aGlzOgoJMHgxZTEwLCAweDljYzgsIDB4YjUyOCwKCTB4MmJiMCwgMHgwOWQwLCAweDM3 ZjAsCgkweGJjZTAsIDB4OWFkOCwgMHgxZTEwLAoKVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBteSBu dW1iZXJzIGFuZCB0aGUgb25lcyBpbiB0aGUgY29kZSBzZWVtCnRvIGJlIG1vcmUgb3IgbGVzcyBq dXN0IGR1ZSB0byByb3VuZGluZy4KClRoZSBudW1iZXJzIGluIHRoZSBzcGVjIHdvdWxkIGFwcGVh ciB0byBiZSBmb3IgZnVsbCByYW5nZSBvdXRwdXQsCmJ1dCB3ZSB3YW50IGxpbWl0ZWQgcmFuZ2Uu Cgo+IAo+IAo+ID4rCj4gPisvKiBQb3N0IG9mZnNldCB2YWx1ZXMgZm9yIFJHQi0+WUNCQ1IgY29u dmVyc2lvbiAqLyBzdGF0aWMgY29uc3QgdTE2Cj4gPitpbGtfY3NjX3Bvc3RvZmZfcmdiX3RvX3lj YmNyWzNdID0gewo+ID4rCTB4MDgwMCwgMHgwMTAwLCAweDA4MDAsCj4gPit9Owo+ID4rCj4gPiBz dGF0aWMgYm9vbCBsdXRfaXNfbGVnYWN5KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAq bHV0KSAgewo+ID4gCXJldHVybiBkcm1fY29sb3JfbHV0X3NpemUobHV0KSA9PSBMRUdBQ1lfTFVU X0xFTkdUSDsgQEAgLTExMyw1NAo+ID4rMTIxLDYwIEBAIHN0YXRpYyB1NjQgKmN0bV9tdWx0X2J5 X2xpbWl0ZWQodTY0ICpyZXN1bHQsIGNvbnN0IHU2NCAqaW5wdXQpCj4gPiAJcmV0dXJuIHJlc3Vs dDsKPiA+IH0KPiA+Cj4gPi1zdGF0aWMgdm9pZCBpbGtfbG9hZF95Y2Jjcl9jb252ZXJzaW9uX21h dHJpeChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+K3N0YXRpYyB2b2lkIGlsa191cGRhdGVf cGlwZV9jc2Moc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPisJCQkJY29uc3QgdTE2IHByZW9m ZlszXSwKPiA+KwkJCQljb25zdCB1MTYgY29lZmZbOV0sCj4gPisJCQkJY29uc3QgdTE2IHBvc3Rv ZmZbM10pCj4gPiB7Cj4gPiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gPiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ ID4KPiA+LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKSB7Cj4gPi0JCUk5MTVfV1JJVEUo UElQRV9DU0NfUFJFT0ZGX0hJKHBpcGUpLCAwKTsKPiA+LQkJSTkxNV9XUklURShQSVBFX0NTQ19Q UkVPRkZfTUUocGlwZSksIDApOwo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9MTyhw aXBlKSwgMCk7Cj4gPisJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfSEkocGlwZSksIHByZW9m ZlswXSk7Cj4gPisJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTUUocGlwZSksIHByZW9mZlsx XSk7Cj4gPisJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTE8ocGlwZSksIHByZW9mZlsyXSk7 Cj4gPgo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBpcGUpLAo+ID5DU0Nf UkdCX1RPX1lVVl9SVV9HVSk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlUocGlw ZSksIENTQ19SR0JfVE9fWVVWX0JVKTsKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JZ X0dZKHBpcGUpLCBjb2VmZlswXSA8PCAxNiB8IGNvZWZmWzFdKTsKPiA+KwlJOTE1X1dSSVRFKFBJ UEVfQ1NDX0NPRUZGX0JZKHBpcGUpLCBjb2VmZlsyXSA8PCAxNik7Cj4gPgo+ID4tCQlJOTE1X1dS SVRFKFBJUEVfQ1NDX0NPRUZGX1JZX0dZKHBpcGUpLAo+ID5DU0NfUkdCX1RPX1lVVl9SWV9HWSk7 Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlkocGlwZSksIENTQ19SR0JfVE9fWVVW X0JZKTsKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBpcGUpLCBjb2VmZlsz XSA8PCAxNiB8IGNvZWZmWzRdKTsKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JVKHBp cGUpLCBjb2VmZls1XSA8PCAxNik7Cj4gPgo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZG X1JWX0dWKHBpcGUpLAo+ID5DU0NfUkdCX1RPX1lVVl9SVl9HVik7Cj4gPi0JCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfQlYocGlwZSksIENTQ19SR0JfVE9fWVVWX0JWKTsKPiA+KwlJOTE1X1dS SVRFKFBJUEVfQ1NDX0NPRUZGX1JWX0dWKHBpcGUpLCBjb2VmZls2XSA8PCAxNiB8IGNvZWZmWzdd KTsKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JWKHBpcGUpLCBjb2VmZls4XSA8PCAx Nik7Cj4gPgo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksCj4gPlBP U1RPRkZfUkdCX1RPX1lVVl9ISSk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9N RShwaXBlKSwKPiA+UE9TVE9GRl9SR0JfVE9fWVVWX01FKTsKPiA+LQkJSTkxNV9XUklURShQSVBF X0NTQ19QT1NUT0ZGX0xPKHBpcGUpLAo+ID5QT1NUT0ZGX1JHQl9UT19ZVVZfTE8pOwo+ID4tCX0g ZWxzZSB7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX1BSRU9GRl9ISShwaXBlKSwg MCk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX1BSRU9GRl9NRShwaXBlKSwgMCk7 Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX1BSRU9GRl9MTyhwaXBlKSwgMCk7Cj4g Pi0KPiA+LQkJSTkxNV9XUklURShQSVBFX0NTQ19PVVRQVVRfQ09FRkZfUlVfR1UocGlwZSksCj4g Pi0JCQkgICBDU0NfUkdCX1RPX1lVVl9SVV9HVSk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0Nf T1VUUFVUX0NPRUZGX0JVKHBpcGUpLAo+ID5DU0NfUkdCX1RPX1lVVl9CVSk7Cj4gPi0KPiA+LQkJ STkxNV9XUklURShQSVBFX0NTQ19PVVRQVVRfQ09FRkZfUllfR1kocGlwZSksCj4gPi0JCQkgICBD U0NfUkdCX1RPX1lVVl9SWV9HWSk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX0NP RUZGX0JZKHBpcGUpLAo+ID5DU0NfUkdCX1RPX1lVVl9CWSk7Cj4gPi0KPiA+LQkJSTkxNV9XUklU RShQSVBFX0NTQ19PVVRQVVRfQ09FRkZfUlZfR1YocGlwZSksCj4gPi0JCQkgICBDU0NfUkdCX1RP X1lVVl9SVl9HVik7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX0NPRUZGX0JWKHBp cGUpLAo+ID5DU0NfUkdCX1RPX1lVVl9CVik7Cj4gPi0KPiA+LQkJSTkxNV9XUklURShQSVBFX0NT Q19PVVRQVVRfUE9TVE9GRl9ISShwaXBlKSwKPiA+LQkJCSAgIFBPU1RPRkZfUkdCX1RPX1lVVl9I SSk7Cj4gPi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX1BPU1RPRkZfTUUocGlwZSksCj4g Pi0JCQkgICBQT1NUT0ZGX1JHQl9UT19ZVVZfTUUpOwo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1ND X09VVFBVVF9QT1NUT0ZGX0xPKHBpcGUpLAo+ID4tCQkJICAgUE9TVE9GRl9SR0JfVE9fWVVWX0xP KTsKPiA+KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gPisJCUk5MTVfV1JJVEUo UElQRV9DU0NfUE9TVE9GRl9ISShwaXBlKSwgcG9zdG9mZlswXSk7Cj4gPisJCUk5MTVfV1JJVEUo UElQRV9DU0NfUE9TVE9GRl9NRShwaXBlKSwgcG9zdG9mZlsxXSk7Cj4gPisJCUk5MTVfV1JJVEUo UElQRV9DU0NfUE9TVE9GRl9MTyhwaXBlKSwgcG9zdG9mZlsyXSk7Cj4gPiAJfQo+ID4gfQo+ID4K PiA+K3N0YXRpYyB2b2lkIGljbF91cGRhdGVfb3V0cHV0X2NzYyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiA+KwkJCQkgIGNvbnN0IHUxNiBwcmVvZmZbM10sCj4gPisJCQkJICBjb25zdCB1MTYg Y29lZmZbOV0sCj4gPisJCQkJICBjb25zdCB1MTYgcG9zdG9mZlszXSkKPiA+K3sKPiA+KwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsK PiA+KwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gPisKPiA+KwlJOTE1X1dSSVRFKFBJ UEVfQ1NDX09VVFBVVF9QUkVPRkZfSEkocGlwZSksIHByZW9mZlswXSk7Cj4gPisJSTkxNV9XUklU RShQSVBFX0NTQ19PVVRQVVRfUFJFT0ZGX01FKHBpcGUpLCBwcmVvZmZbMV0pOwo+ID4rCUk5MTVf V1JJVEUoUElQRV9DU0NfT1VUUFVUX1BSRU9GRl9MTyhwaXBlKSwgcHJlb2ZmWzJdKTsKPiA+Kwo+ ID4rCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX0NPRUZGX1JZX0dZKHBpcGUpLCBjb2VmZlsw XSA8PCAxNiB8Cj4gPmNvZWZmWzFdKTsKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX09VVFBVVF9D T0VGRl9CWShwaXBlKSwgY29lZmZbMl0pOwo+ID4rCj4gPisJSTkxNV9XUklURShQSVBFX0NTQ19P VVRQVVRfQ09FRkZfUlVfR1UocGlwZSksIGNvZWZmWzNdIDw8IDE2IHwKPiA+Y29lZmZbNF0pOwo+ ID4rCUk5MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX0NPRUZGX0JVKHBpcGUpLCBjb2VmZls1XSk7 Cj4gPisKPiA+KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX09VVFBVVF9DT0VGRl9SVl9HVihwaXBlKSwg Y29lZmZbNl0gPDwgMTYgfAo+ID5jb2VmZls3XSk7Cj4gPisJSTkxNV9XUklURShQSVBFX0NTQ19P VVRQVVRfQ09FRkZfQlYocGlwZSksIGNvZWZmWzhdKTsKPiA+Kwo+ID4rCUk5MTVfV1JJVEUoUElQ RV9DU0NfT1VUUFVUX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmZbMF0pOwo+ID4rCUk5MTVfV1JJ VEUoUElQRV9DU0NfT1VUUFVUX1BPU1RPRkZfTUUocGlwZSksIHBvc3RvZmZbMV0pOwo+ID4rCUk5 MTVfV1JJVEUoUElQRV9DU0NfT1VUUFVUX1BPU1RPRkZfTE8ocGlwZSksIHBvc3RvZmZbMl0pOyB9 Cj4gPisKPiA+IHN0YXRpYyBib29sIGlsa19jc2NfbGltaXRlZF9yYW5nZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgIHsKPiA+IAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ QEAgLTE4NSw3ICsxOTksMTUgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfY3NjX21hdHJpeChjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4qY3J0Y19zdGF0ZSkKPiA+Cj4gPiAJaWYgKGNy dGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCB8 fAo+ID4gCSAgICBjcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JN QVRfWUNCQ1I0NDQpIHsKPiA+LQkJaWxrX2xvYWRfeWNiY3JfY29udmVyc2lvbl9tYXRyaXgoY3J0 Yyk7Cj4gPisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4rCQkJaWNsX3VwZGF0 ZV9vdXRwdXRfY3NjKGNydGMsIGlsa19jc2Nfb2ZmX3plcm8sCj4gPisJCQkJCSAgICAgIGlsa19j c2NfY29lZmZfcmdiX3RvX3ljYmNyLAo+ID4rCQkJCQkgICAgICBpbGtfY3NjX3Bvc3RvZmZfcmdi X3RvX3ljYmNyKTsKPiA+KwkJZWxzZQo+ID4rCQkJaWxrX3VwZGF0ZV9waXBlX2NzYyhjcnRjLCBp bGtfY3NjX29mZl96ZXJvLAo+ID4rCQkJCQkgICAgaWxrX2NzY19jb2VmZl9yZ2JfdG9feWNiY3Is Cj4gPisJCQkJCSAgICBpbGtfY3NjX3Bvc3RvZmZfcmdiX3RvX3ljYmNyKTsKPiA+Kwo+ID4gCQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX01PREUocGlwZSksIGNydGNfc3RhdGUtPmNzY19tb2RlKTsKPiA+ IAkJLyoKPiA+IAkJICogT24gcHJlIEdFTjExIG91dHB1dCBDU0MgaXMgbm90IHRoZXJlLCBzbyB3 aXRoIDEgcGlwZSBDU0MgQEAgLQo+ID4yNTgsMzggKzI4MCwxMiBAQCBzdGF0aWMgdm9pZCBpbGtf bG9hZF9jc2NfbWF0cml4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPipjcnRjX3N0 YXRlKQo+ID4gCQl9Cj4gPiAJfQo+ID4KPiA+LQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JZ X0dZKHBpcGUpLCBjb2VmZnNbMF0gPDwgMTYgfCBjb2VmZnNbMV0pOwo+ID4tCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfQlkocGlwZSksIGNvZWZmc1syXSA8PCAxNik7Cj4gPi0KPiA+LQlJOTE1 X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBpcGUpLCBjb2VmZnNbM10gPDwgMTYgfCBjb2Vm ZnNbNF0pOwo+ID4tCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlUocGlwZSksIGNvZWZmc1s1 XSA8PCAxNik7Cj4gPi0KPiA+LQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JWX0dWKHBpcGUp LCBjb2VmZnNbNl0gPDwgMTYgfCBjb2VmZnNbN10pOwo+ID4tCUk5MTVfV1JJVEUoUElQRV9DU0Nf Q09FRkZfQlYocGlwZSksIGNvZWZmc1s4XSA8PCAxNik7Cj4gPisJaWxrX3VwZGF0ZV9waXBlX2Nz YyhjcnRjLCBpbGtfY3NjX29mZl96ZXJvLCBjb2VmZnMsCj4gPisJCQkgICAgbGltaXRlZF9jb2xv cl9yYW5nZSA/Cj4gPisJCQkgICAgaWxrX2NzY19wb3N0b2ZmX2xpbWl0ZWRfcmFuZ2UgOgo+ID4r CQkJICAgIGlsa19jc2Nfb2ZmX3plcm8pOwo+ID4KPiA+LQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BS RU9GRl9ISShwaXBlKSwgMCk7Cj4gPi0JSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTUUocGlw ZSksIDApOwo+ID4tCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAwKTsKPiA+ LQo+ID4tCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikgewo+ID4tCQl1MTYgcG9zdG9mZiA9 IDA7Cj4gPi0KPiA+LQkJaWYgKGxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gPi0JCQlwb3N0b2ZmID0g KDE2ICogKDEgPDwgMTIpIC8gMjU1KSAmIDB4MWZmZjsKPiA+LQo+ID4tCQlJOTE1X1dSSVRFKFBJ UEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmYpOwo+ID4tCQlJOTE1X1dSSVRFKFBJUEVf Q1NDX1BPU1RPRkZfTUUocGlwZSksIHBvc3RvZmYpOwo+ID4tCQlJOTE1X1dSSVRFKFBJUEVfQ1ND X1BPU1RPRkZfTE8ocGlwZSksIHBvc3RvZmYpOwo+ID4tCj4gPi0JCUk5MTVfV1JJVEUoUElQRV9D U0NfTU9ERShwaXBlKSwgY3J0Y19zdGF0ZS0+Y3NjX21vZGUpOwo+ID4tCX0gZWxzZSB7Cj4gPi0J CXUzMiBtb2RlID0gQ1NDX01PREVfWVVWX1RPX1JHQjsKPiA+LQo+ID4tCQlpZiAobGltaXRlZF9j b2xvcl9yYW5nZSkKPiA+LQkJCW1vZGUgfD0gQ1NDX0JMQUNLX1NDUkVFTl9PRkZTRVQ7Cj4gPi0K PiA+LQkJSTkxNV9XUklURShQSVBFX0NTQ19NT0RFKHBpcGUpLCBtb2RlKTsKPiAKPiBMb29rcyBs aWtlIHRoaXMgaXMgbm90IGhhbmRsZWQgYW5kIGdvdCBkcm9wcGVkLiBQcmUgR2VuNyBzdHVmZi4K ClllYWgsIHdlIGRvbid0IHVzZSB0aGUgQ1NDICh5ZXQpIG9uIHByZS1IU1cuIEV2ZW4gaWYgd2Ug c3RhcnQgdG8KdXNlIGl0IHdlJ2xsIG5vdCBiZSB1c2luZyBpdCBmb3IgUkdCIGZ1bGwtPmxpbWl0 ZWQgY29udmVyc2lvbi4KU28gd2Ugd29uJ3QgYWN0dWFsbHkgcHJvZ3JhbSBpdCBsaWtlIHRoaXMg aW4gdGhlIGVuZC4KCj4gCj4gPi0JfQo+ID4rCUk5MTVfV1JJVEUoUElQRV9DU0NfTU9ERShwaXBl KSwgY3J0Y19zdGF0ZS0+Y3NjX21vZGUpOwo+ID4gfQo+ID4KPiA+IC8qCj4gPi0tCj4gPjIuMTku Mgo+IAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZng=