From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 2/7] drm/i915: Don't use split gamma when we don't have to Date: Wed, 3 Apr 2019 15:40:00 +0300 Message-ID: <20190403124000.GV3888@intel.com> References: <20190401200231.2333-1-ville.syrjala@linux.intel.com> <20190401200231.2333-3-ville.syrjala@linux.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 340EC6E8C0 for ; Wed, 3 Apr 2019 12:40:08 +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 T24gV2VkLCBBcHIgMDMsIDIwMTkgYXQgMTI6MjM6MDZQTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBWaWxsZSBT eXJqYWxhIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPlNlbnQ6IFR1 ZXNkYXksIEFwcmlsIDIsIDIwMTkgMTozMiBBTQo+ID5UbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+ID5DYzogU2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+OyBS b3BlciwgTWF0dGhldyBECj4gPjxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID5TdWJqZWN0 OiBbUEFUQ0ggdjIgMi83XSBkcm0vaTkxNTogRG9uJ3QgdXNlIHNwbGl0IGdhbW1hIHdoZW4gd2Ug ZG9uJ3QgaGF2ZSB0bwo+ID4KPiA+RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiA+Cj4gPlVzaW5nIHRoZSBzcGxpdCBnYW1tYSBtb2RlIHdoZW4g d2UgZG9uJ3QgaGF2ZSB0byBoYXMgdGhlIGFubm95aW5nIHJlcXVpcmVtZW50IG9mCj4gPmxvYWRp bmcgYSBsaW5lYXIgTFVUIHRvIHRoZSB1bnVzZWQgaGFsZi4gSW5zdGVhZCBsZXQncyBtYWtlIGxp ZmUgc2ltcGxlciBieSBzd2l0Y2hpbmcgdG8KPiA+dGhlIDEwYml0IGdhbW1hIG1vZGUgYW5kIGR1 cGxpY2F0aW5nIGVhY2ggZW50cnkuCj4gPgo+ID5UaGlzIGFsc28gYWxsb3dzIHVzIHRvIGxvYWQg dGhlIHNvZnR3YXJlIGdhbW1hIExVVCBpbnRvIHRoZSBoYXJkd2FyZSBkZWdhbW1hCj4gPkxVVCwg dGh1cyByZW1vdmluZyBzb21lIG9mIHRoZSBidWdneSBjb25maWd1cmF0aW9ucyB3ZSBjdXJyZW50 bHkgYWxsb3cKPiA+KFlDYkNyL2xpbWl0ZWQgcmFuZ2UgUkdCCj4gPisgZ2FtbWEgTFVUKS4gV2Ug ZG8gc3RpbGwgaGF2ZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZQo+ID5hbHNvIGJ1Z2d5 LCBidXQgdGhvc2Ugd2lsbCBuZWVkIG1vcmUgY29tcGxpY2F0ZWQgZml4ZXMgb3IgdGhleSBqdXN0 IG5lZWQgdG8gYmUKPiA+cmVqZWN0ZWQuIFNhZGx5IEdMSyBkb2Vzbid0IGhhdmUgdGhpcyBmbGV4 aWJpbGl0eSBhbnltb3JlIGFuZCB0aGUgZGVnYW1tYSBhbmQKPiA+Z2FtbWEgTFVUcyBhcmUgdmVy eSBkaWZmZXJlbnQgc28gbm8gaGVscCB0aGVyZS4KPiA+Cj4gPnYyOiBBcHBseSBhIG1hc2sgd2hl biBjaGVja2luZyBnYW1tYV9tb2RlIG9uIGljbCBzaW5jZSBpdAo+ID4gICAgY29udGFpbnMgbW9y ZSBiaXRzIHRoYW4ganVzdCB0aGUgZ2FtbWEgbW9kZQo+ID52MzogUmViYXNlIGR1ZSB0byBFWFRf R0NfTUFYL0VYVDJfR0NfTUFYIGNoYW5nZXMKPiA+Cj4gPlNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPi0tLQo+ID4gZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgMiArCj4gPiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jIHwgMTg1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4g PiAyIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQo+ID4K PiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGluZGV4Cj4gPjM0MWYwM2UwMDUzNi4uYmVkMmM1MmFl YmQ4IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+QEAgLTcyMTQsNiArNzIxNCw3 IEBAIGVudW0gewo+ID4gI2RlZmluZSBHQU1NQV9NT0RFKHBpcGUpIF9NTUlPX1BJUEUocGlwZSwg X0dBTU1BX01PREVfQSwKPiA+X0dBTU1BX01PREVfQikKPiA+ICNkZWZpbmUgIFBSRV9DU0NfR0FN TUFfRU5BQkxFCSgxIDw8IDMxKQo+ID4gI2RlZmluZSAgUE9TVF9DU0NfR0FNTUFfRU5BQkxFCSgx IDw8IDMwKQo+ID4rI2RlZmluZSAgR0FNTUFfTU9ERV9NT0RFX01BU0sJKDMgPDwgMCkKPiA+ICNk ZWZpbmUgIEdBTU1BX01PREVfTU9ERV84QklUCSgwIDw8IDApCj4gPiAjZGVmaW5lICBHQU1NQV9N T0RFX01PREVfMTBCSVQJKDEgPDwgMCkKPiA+ICNkZWZpbmUgIEdBTU1BX01PREVfTU9ERV8xMkJJ VAkoMiA8PCAwKQo+ID5AQCAtMTAxMjcsNiArMTAxMjgsNyBAQCBlbnVtIHNrbF9wb3dlcl9nYXRl IHsKPiA+ICNkZWZpbmUgICBQQUxfUFJFQ19TUExJVF9NT0RFCQkoMSA8PCAzMSkKPiA+ICNkZWZp bmUgICBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVAkoMSA8PCAxNSkKPiA+ICNkZWZpbmUgICBQQUxf UFJFQ19JTkRFWF9WQUxVRV9NQVNLCSgweDNmZiA8PCAwKQo+ID4rI2RlZmluZSAgIFBBTF9QUkVD X0lOREVYX1ZBTFVFKHgpCSgoeCkgPDwgMCkKPiA+ICNkZWZpbmUgX1BBTF9QUkVDX0RBVEFfQQkw eDRBNDA0Cj4gPiAjZGVmaW5lIF9QQUxfUFJFQ19EQVRBX0IJMHg0QUMwNAo+ID4gI2RlZmluZSBf UEFMX1BSRUNfREFUQV9DCTB4NEI0MDQKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4g PmluZGV4IGQ1YjMwNjBjMjY0NS4uNWVmOTNjNDNhZmNmIDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NvbG9yLmMKPiA+QEAgLTQ2NiwxMTUgKzQ2Niw4MyBAQCBzdGF0aWMgdm9pZCBza2xf Y29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPipjcnRjX3N0YXRl KQo+ID4gCQlpbGtfbG9hZF9jc2NfbWF0cml4KGNydGNfc3RhdGUpOwo+ID4gfQo+ID4KPiA+LXN0 YXRpYyB2b2lkIGJkd19sb2FkX2RlZ2FtbWFfbHV0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ID4rc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0XzEwKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ID4rCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqYmxvYiwKPiA+KwkJCSAgICB1MzIgcHJlY19pbmRleCwgYm9vbCBkdXBsaWNhdGUpCj4gPiB7 Cj4gPi0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gPiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gPi0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtCj4gPj5iYXNlLmRlZ2FtbWFfbHV0Owo+ID4tCXUz MiBpLCBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9z aXplOwo+ID4rCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+ ID4rCWludCBpLCBsdXRfc2l6ZSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iKTsKPiA+IAllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gPgo+ID4tCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5E RVgocGlwZSksCj4gPi0JCSAgIFBBTF9QUkVDX1NQTElUX01PREUgfCBQQUxfUFJFQ19BVVRPX0lO Q1JFTUVOVCk7Cj4gPi0KPiA+LQlpZiAoZGVnYW1tYV9sdXQpIHsKPiA+LQkJY29uc3Qgc3RydWN0 IGRybV9jb2xvcl9sdXQgKmx1dCA9IGRlZ2FtbWFfbHV0LT5kYXRhOwo+ID4rCUk5MTVfV1JJVEUo UFJFQ19QQUxfSU5ERVgocGlwZSksIHByZWNfaW5kZXggfAo+ID4rCQkgICBQQUxfUFJFQ19BVVRP X0lOQ1JFTUVOVCk7Cj4gPgo+ID4tCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykKPiA+ LQkJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMCgmbHV0W2ldKSk7 Cj4gPi0JfSBlbHNlIHsKPiA+KwkvKgo+ID4rCSAqIFdlIGFkdmVydGl6ZSB0aGUgc3BsaXQgZ2Ft bWEgc2l6ZXMuIFdoZW4gbm90IHVzaW5nIHNwbGl0Cj4gCj4gVHlwbyBpbiBhZHZlcnRpc2UuCgpK dXN0IGEgZGlmZmVyZW50IGxhbmd1YWdlLiBUaG91Z2ggbWF5YmUgdGhlICd6JyBpc24ndCBxdWl0 ZSByaWdodCBldmVuCmZvciBVUyBFbmdsaXNoLiAiQ29uc2lzdGVuY3kgbm90IGluY2x1ZGVkIiBz aG91bGQgYmUgb24gdGhlIHBhY2thZ2luZy4KCj4gCj4gPisJICogZ2FtbWEgd2UganVzdCBkdXBs aWNhdGUgZWFjaCBlbnRyeS4KPiA+KwkgKgo+ID4rCSAqIFRPRE86IGV4cG9zZSB0aGUgZnVsbCBM VVQgdG8gdXNlcnNwYWNlCj4gPisJICovCj4gPisJaWYgKGR1cGxpY2F0ZSkgewo+ID4gCQlmb3Ig KGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ID4tCQkJdTMyIHYgPSAoaSAqICgoMSA8PCAx MCkgLSAxKSkgLyAobHV0X3NpemUgLSAxKTsKPiA+LQo+ID4tCQkJSTkxNV9XUklURShQUkVDX1BB TF9EQVRBKHBpcGUpLAo+ID4tCQkJCSAgICh2IDw8IDIwKSB8ICh2IDw8IDEwKSB8IHYpOwo+ID4r CQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0XzEwKCZsdXRbaV0pKTsK PiA+KwkJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMCgmbHV0W2ld KSk7Cj4gPiAJCX0KPiA+Kwl9IGVsc2Ugewo+ID4rCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7 IGkrKykKPiA+KwkJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMCgm bHV0W2ldKSk7Cj4gPiAJfQo+ID4rCj4gPisJLyoKPiA+KwkgKiBSZXNldCB0aGUgaW5kZXgsIG90 aGVyd2lzZSBpdCBwcmV2ZW50cyB0aGUgbGVnYWN5IHBhbGV0dGUgdG8gYmUKPiA+KwkgKiB3cml0 dGVuIHByb3Blcmx5Lgo+ID4rCSAqLwo+ID4rCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlw ZSksIDApOwo+ID4gfQo+ID4KPiA+LXN0YXRpYyB2b2lkIGJkd19sb2FkX2dhbW1hX2x1dChjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgdTMyCj4gPm9mZnNldCkKPiA+ K3N0YXRpYyB2b2lkIGJkd19sb2FkX2x1dF8xMF9tYXgoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gPiB7Cj4gPi0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gPi0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKPiA+LQl1MzIg aSwgbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7 Cj4gPiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ID4KPiA+LQlXQVJOX09OKG9mZnNl dCAmIH5QQUxfUFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsKPiA+LQo+ID4tCUk5MTVfV1JJVEUoUFJF Q19QQUxfSU5ERVgocGlwZSksCj4gPi0JCSAgIChvZmZzZXQgPyBQQUxfUFJFQ19TUExJVF9NT0RF IDogMCkgfAo+ID4tCQkgICBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCB8Cj4gPi0JCSAgIG9mZnNl dCk7Cj4gPi0KPiA+LQlpZiAoZ2FtbWFfbHV0KSB7Cj4gPi0JCWNvbnN0IHN0cnVjdCBkcm1fY29s b3JfbHV0ICpsdXQgPSBnYW1tYV9sdXQtPmRhdGE7Cj4gPi0KPiA+LQkJZm9yIChpID0gMDsgaSA8 IGx1dF9zaXplOyBpKyspCj4gPi0JCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGls a19sdXRfMTAoJmx1dFtpXSkpOwo+ID4tCj4gPi0JCS8qCj4gPi0JCSAqIFByb2dyYW0gdGhlIG1h eCByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuCj4gPi0JCSAqIFRvRG86IEV4dGVuZCB0 aGUgQUJJIHRvIGJlIGFibGUgdG8gcHJvZ3JhbSB2YWx1ZXMKPiA+LQkJICogZnJvbSAxLjAgdG8g My4wCj4gPi0JCSAqLwo+ID4tCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwg MCksICgxIDw8IDE2KSk7Cj4gPi0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfRVhUX0dDX01BWChwaXBl LCAxKSwgKDEgPDwgMTYpKTsKPiA+LQkJSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0NfTUFYKHBp cGUsIDIpLCAoMSA8PCAxNikpOwo+ID4tCj4gPi0JCS8qCj4gPi0JCSAqIFByb2dyYW0gdGhlIGdj IG1heCAyIHJlZ2lzdGVyIHRvIGNsYW1wIHZhbHVlcyA+IDEuMC4KPiA+LQkJICogVG9EbzogRXh0 ZW5kIHRoZSBBQkkgdG8gYmUgYWJsZSB0byBwcm9ncmFtIHZhbHVlcwo+ID4tCQkgKiBmcm9tIDMu MCB0byA3LjAKPiA+LQkJICovCj4gPi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8 IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPi0JCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0VY VDJfR0NfTUFYKHBpcGUsIDApLCAoMSA8PCAxNikpOwo+ID4tCQkJSTkxNV9XUklURShQUkVDX1BB TF9FWFQyX0dDX01BWChwaXBlLCAxKSwgKDEgPDwgMTYpKTsKPiA+LQkJCUk5MTVfV1JJVEUoUFJF Q19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMiksICgxIDw8IDE2KSk7Cj4gPi0JCX0KPiA+LQl9IGVs c2Ugewo+ID4tCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ID4tCQkJdTMyIHYg PSAoaSAqICgoMSA8PCAxMCkgLSAxKSkgLyAobHV0X3NpemUgLSAxKTsKPiA+LQo+ID4tCQkJSTkx NV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ID4tCQkJCSAgICh2IDw8IDIwKSB8ICh2IDw8 IDEwKSB8IHYpOwo+ID4tCQl9Cj4gPi0KPiA+LQkJSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0Nf TUFYKHBpcGUsIDApLCAoMSA8PCAxNikpOwo+ID4tCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0VYVF9H Q19NQVgocGlwZSwgMSksICgxIDw8IDE2KSk7Cj4gPi0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfRVhU X0dDX01BWChwaXBlLCAyKSwgKDEgPDwgMTYpKTsKPiA+LQo+ID4tCQkvKgo+ID4tCQkgKiBQcm9n cmFtIHRoZSBnYyBtYXggMiByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuCj4gPi0JCSAq IFRvRG86IEV4dGVuZCB0aGUgQUJJIHRvIGJlIGFibGUgdG8gcHJvZ3JhbSB2YWx1ZXMKPiA+LQkJ ICogZnJvbSAzLjAgdG8gNy4wCj4gPi0JCSAqLwo+ID4tCQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ID4tCQkJSTkxNV9XUklURShQ UkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAwKSwgKDEgPDwgMTYpKTsKPiA+LQkJCUk5MTVfV1JJ VEUoUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMSksICgxIDw8IDE2KSk7Cj4gPi0JCQlJOTE1 X1dSSVRFKFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIDIpLCAoMSA8PCAxNikpOwo+ID4tCQl9 Cj4gPi0JfQo+ID4rCS8qIFByb2dyYW0gdGhlIG1heCByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMg PiAxLjAuICovCj4gPisJSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDApLCAx IDw8IDE2KTsKPiA+KwlJOTE1X1dSSVRFKFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgMSksIDEg PDwgMTYpOwo+ID4rCUk5MTVfV1JJVEUoUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAyKSwgMSA8 PCAxNik7Cj4gPgo+ID4gCS8qCj4gPi0JICogUmVzZXQgdGhlIGluZGV4LCBvdGhlcndpc2UgaXQg cHJldmVudHMgdGhlIGxlZ2FjeSBwYWxldHRlIHRvIGJlCj4gPi0JICogd3JpdHRlbiBwcm9wZXJs eS4KPiA+KwkgKiBQcm9ncmFtIHRoZSBnYyBtYXggMiByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMg PiAxLjAuCj4gPisJICogVG9EbzogRXh0ZW5kIHRoZSBBQkkgdG8gYmUgYWJsZSB0byBwcm9ncmFt IHZhbHVlcwo+ID4rCSAqIGZyb20gMy4wIHRvIDcuMAo+ID4gCSAqLwo+ID4tCUk5MTVfV1JJVEUo UFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwo+ID4rCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPisJCUk5MTVfV1JJVEUoUFJFQ19Q QUxfRVhUMl9HQ19NQVgocGlwZSwgMCksIDEgPDwgMTYpOwo+ID4rCQlJOTE1X1dSSVRFKFBSRUNf UEFMX0VYVDJfR0NfTUFYKHBpcGUsIDEpLCAxIDw8IDE2KTsKPiA+KwkJSTkxNV9XUklURShQUkVD X1BBTF9FWFQyX0dDX01BWChwaXBlLCAyKSwgMSA8PCAxNik7Cj4gPisJfQo+ID4gfQo+ID4KPiA+ LS8qIExvYWRzIHRoZSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIEJyb2Fkd2Vs bCsuICovIC1zdGF0aWMgdm9pZAo+ID5icm9hZHdlbGxfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4rc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+IHsKPiA+IAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiA+LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiA+Kwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1h X2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4rCWNvbnN0IHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPQo+ID4rY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1h X2x1dDsKPiA+Cj4gPi0JaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNydGNfc3RhdGUp KSB7Cj4gPisJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFXzhC SVQpIHsKPiA+IAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4gPisJfSBlbHNlIGlmIChj cnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV9TUExJVCkgewo+ID4rCQli ZHdfbG9hZF9sdXRfMTAoY3J0YywgZGVnYW1tYV9sdXQsIFBBTF9QUkVDX1NQTElUX01PREUgfAo+ ID4rCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDApLCBmYWxzZSk7Cj4gPisJCWJkd19sb2FkX2x1 dF8xMF9tYXgoY3J0Yyk7Cj4gPisJCWJkd19sb2FkX2x1dF8xMChjcnRjLCBnYW1tYV9sdXQsIFBB TF9QUkVDX1NQTElUX01PREUgfAo+ID4rCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDUxMiksICBm YWxzZSk7Cj4gPiAJfSBlbHNlIHsKPiA+LQkJYmR3X2xvYWRfZGVnYW1tYV9sdXQoY3J0Y19zdGF0 ZSk7Cj4gPi0JCWJkd19sb2FkX2dhbW1hX2x1dChjcnRjX3N0YXRlLAo+ID4tCQkJCSAgIElOVEVM X0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplKTsKPiA+KwkJY29uc3Qgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gZ2FtbWFfbHV0ID86IGRlZ2FtbWFfbHV0Owo+ ID4rCj4gPisJCWJkd19sb2FkX2x1dF8xMChjcnRjLCBibG9iLAo+ID4rCQkJCVBBTF9QUkVDX0lO REVYX1ZBTFVFKDApLCB0cnVlKTsKPiA+KwkJYmR3X2xvYWRfbHV0XzEwX21heChjcnRjKTsKPiA+ IAl9Cj4gPiB9Cj4gPgo+ID5AQCAtNjQ2LDYgKzYxNCw5IEBAIHN0YXRpYyB2b2lkIGdsa19sb2Fk X2RlZ2FtbWFfbHV0X2xpbmVhcihjb25zdCBzdHJ1Y3QKPiA+aW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0Cj4gPgo+ID4gc3RhdGljIHZvaWQgZ2xrX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgIHsKPiA+Kwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4rCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+ID4rCj4gPiAJLyoKPiA+IAkgKiBPbiBHTEsrIGJvdGggcGlwZSBDU0MgYW5kIGRlZ2Ft bWEgTFVUIGFyZSBjb250cm9sbGVkCj4gPiAJICogYnkgY3NjX2VuYWJsZS4gSGVuY2UgZm9yIHRo ZSBjYXNlcyB3aGVyZSB0aGUgQ1NDIGlzIEBAIC02NTksMjIgKzYzMCwyOQo+ID5AQCBzdGF0aWMg dm9pZCBnbGtfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ID4gCWVsc2UKPiA+IAkJZ2xrX2xvYWRfZGVnYW1tYV9sdXRfbGluZWFyKGNydGNfc3Rh dGUpOwo+ID4KPiA+LQlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkp Cj4gPisJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFXzhCSVQp IHsKPiA+IAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4gPi0JZWxzZQo+ID4tCQliZHdf bG9hZF9nYW1tYV9sdXQoY3J0Y19zdGF0ZSwgMCk7Cj4gPisJfSBlbHNlIHsKPiA+KwkJYmR3X2xv YWRfbHV0XzEwKGNydGMsIGdhbW1hX2x1dCwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCksCj4gPmZh bHNlKTsKPiA+KwkJYmR3X2xvYWRfbHV0XzEwX21heChjcnRjKTsKPiA+Kwl9Cj4gPiB9Cj4gPgo+ ID4gc3RhdGljIHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkgIHsKPiA+Kwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4rCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4rCj4g PiAJaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gPiAJCWdsa19sb2FkX2RlZ2Ft bWFfbHV0KGNydGNfc3RhdGUpOwo+ID4KPiA+LQlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2Ft bWEoY3J0Y19zdGF0ZSkpCj4gPisJaWYgKChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFf TU9ERV9NT0RFX01BU0spID09Cj4gPisJICAgIEdBTU1BX01PREVfTU9ERV84QklUKSB7Cj4gPiAJ CWk5eHhfbG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ID4tCWVsc2UKPiA+LQkJLyogVG9EbzogQWRk IHN1cHBvcnQgZm9yIG11bHRpIHNlZ21lbnQgZ2FtbWEgTFVUICovCj4gPi0JCWJkd19sb2FkX2dh bW1hX2x1dChjcnRjX3N0YXRlLCAwKTsKPiA+Kwl9IGVsc2Ugewo+ID4rCQliZHdfbG9hZF9sdXRf MTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSwKPiA+ZmFsc2UpOwo+ ID4rCQliZHdfbG9hZF9sdXRfMTBfbWF4KGNydGMpOwo+ID4rCX0KPiA+IH0KPiA+Cj4gPiBzdGF0 aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkgQEAgLQo+ID45NTksOCArOTM3LDI1IEBAIHN0YXRpYyB1MzIgYmR3X2dh bW1hX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+KmNydGNfc3RhdGUpCj4g PiAJaWYgKCFjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgfHwKPiA+IAkgICAgY3J0Y19zdGF0ZV9p c19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4gPiAJCXJldHVybiBHQU1NQV9NT0RFX01PREVf OEJJVDsKPiA+LQllbHNlCj4gPisJZWxzZSBpZiAoY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQg JiYKPiA+KwkJIGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gPiAJCXJldHVybiBHQU1N QV9NT0RFX01PREVfU1BMSVQ7Cj4gPisJZWxzZQo+ID4rCQlyZXR1cm4gR0FNTUFfTU9ERV9NT0RF XzEwQklUOwo+ID4rfQo+ID4rCj4gPitzdGF0aWMgdTMyIGJkd19jc2NfbW9kZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgewo+ID4rCS8qCj4gPisJICogQ1NDIGNv bWVzIGFmdGVyIHRoZSBMVVQgaW4gZGVnYW1tYSwgUkdCLT5ZQ2JDciwKPiA+KwkgKiBhbmQgUkdC IGZ1bGwtPmxpbWl0ZWQgcmFuZ2UgbW9kZS4KPiA+KwkgKi8KPiA+KwlpZiAoY3J0Y19zdGF0ZS0+ YmFzZS5kZWdhbW1hX2x1dCB8fAo+ID4rCSAgICBjcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ICE9 IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8Cj4gPisJICAgIGNydGNfc3RhdGUtPmxpbWl0ZWRf Y29sb3JfcmFuZ2UpCj4gPisJCXJldHVybiAwOwo+IAo+IFRoZXJlIG1heSBiZSBhIHNjZW5hcmlv IHRoYXQgbm9uLWxpbmVhciBibGVuZGluZyBpcyBkb25lIGFuZCB0aGVuIGF0IHBpcGUgbGV2ZWws Cj4gc29tZSBDVE0gbWFuaXB1bGF0aW9uIGlzIGV4cGVjdGVkIChhZGp1c3RpbmcgaHVlcywgc2F0 dXJhdGlvbiBldGMpIGZvciB0aGlzIHdlIG1heQo+IGhhdmUgdG8gYXBwbHkgZGVnYW1tYSB0byBt YWtlIHRoZSBjb250ZW50IGxpbmVhciwgdGhlbiBDVE0gYW5kIGZpbmFsbHkgZ2FtbWEuCj4gU28g aXMgaXQgcmlnaHQgdG8gcHJlc3VtZSB0aGF0ICBpZiBkZWdhbW1hIGlzIHRoZXJlIENTQyB3aWxs IGFsd2F5cyBiZSBhZnRlciBnYW1tYSA/CgpZZXMsIHRoaXMganVzdCBkZXRlcm1pbmVzIHdoZXRo ZXIgd2UgZ2V0IGx1dC0+Y3NjIG9yIGNzYy0+bHV0IGluCm5vbi1zcGxpdCBnYW1tYSBtb2Rlcy4g Rm9yIHRoZSBjYXNlIHlvdSdyZSB0YWtpbmcgYWJvdXQgd2UnbGwgdXNlCnRoZSBzcGxpdCBnYW1t YSBtb2RlIHNvIGl0J2xsIGJlIGx1dC0+Y3NjLT5sdXQgcmVnYXJkbGVzcyBvZiB0aGlzCkNTQ19N T0RFIGJpdC4KCj4gCj4gPisJcmV0dXJuIENTQ19QT1NJVElPTl9CRUZPUkVfR0FNTUE7Cj4gPiB9 Cj4gPgo+ID4gc3RhdGljIGludCBiZHdfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpIEBAIC05ODIsNyArOTc3LDcKPiA+QEAgc3RhdGljIGludCBiZHdfY29s b3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPgo+ID4gCWNy dGNfc3RhdGUtPmdhbW1hX21vZGUgPSBiZHdfZ2FtbWFfbW9kZShjcnRjX3N0YXRlKTsKPiA+Cj4g Pi0JY3J0Y19zdGF0ZS0+Y3NjX21vZGUgPSAwOwo+ID4rCWNydGNfc3RhdGUtPmNzY19tb2RlID0g YmR3X2NzY19tb2RlKGNydGNfc3RhdGUpOwo+ID4KPiA+IAlyZXQgPSBpbnRlbF9jb2xvcl9hZGRf YWZmZWN0ZWRfcGxhbmVzKGNydGNfc3RhdGUpOwo+ID4gCWlmIChyZXQpCj4gPkBAIC0xMTE2LDcg KzExMTEsNyBAQCB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gPiAJCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKQo+ID4gCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gZ2xrX2xvYWRf bHV0czsKPiA+IAkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gPi0JCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBicm9h ZHdlbGxfbG9hZF9sdXRzOwo+ID4rCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gYmR3 X2xvYWRfbHV0czsKPiA+IAkJZWxzZQo+ID4gCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRz ID0gaTl4eF9sb2FkX2x1dHM7Cj4gPiAJfQo+ID4tLQo+ID4yLjE5LjIKPiAKCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4