From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 13/13] drm/i915: Make SKL/KBL DPLL0 managed by the shared dpll code Date: Thu, 3 Mar 2016 14:33:59 +0100 Message-ID: <56D83D47.9080506@linux.intel.com> References: <1456494866-7665-14-git-send-email-ander.conselvan.de.oliveira@intel.com> <1456736924-4259-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 8CE536EA65 for ; Thu, 3 Mar 2016 13:34:01 +0000 (UTC) In-Reply-To: <1456736924-4259-1-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjktMDItMTYgb20gMTA6MDggc2NocmVlZiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmE6 Cj4gSW5jbHVkZSBEUExMMCBpbiB0aGUgbWFuYWdlZCBkcGxscyBmb3IgU0tML0tCTC4gV2hpbGUg aXQgaGFzIHRvIGJlIGtlcHQKPiBlbmFibGVkIGJlY2F1c2Ugb2YgaXQgZHJpdmluZyBDRENMSywg aXQgaXMgYmV0dGVyIHRvIHNwZWNpYWwgY2FzZSB0aGF0Cj4gaW5zaWRlIHRoZSBEUExMIGNvZGUg dGhhbiBpbiB0aGUgaGlnaGVyIGxldmVsLgo+Cj4gdjI6IFVzZSBJTlRFTF9EUExMX0FMV0FZU19P TiBmbGFnLiAoQW5kZXIpCj4KPiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xp dmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4KPiAtLS0KPiBJ IHdhc24ndCBhYmxlIHRvIHRlc3QgdGhpcyBwYXRjaC4gV291bGQgcmVhbGx5IGFwcHJlY2lhdGUg YSB0ZXN0ZWQgYnkKPiBmcm9tIHNvbWVvbmUuClVuZm9ydHVuYXRlbHkgbm8gc2tsIHdpdGggZURQ IGhlcmUgZWl0aGVyLiA6KAo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAg IHwgIDIxIC0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgIHwg IDUyICstLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdy LmMgfCAxMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oIHwgICA3ICstCj4gIDQgZmlsZXMgY2hhbmdlZCwg MTA5IGluc2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gaW5kZXggM2NiOWYzNi4uOGVmNGQyZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gQEAgLTEwMDgsOSArMTAwOCw2IEBAIHNrbF9kZGlfcGxsX3NlbGVjdChzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgewo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGw7Cj4gIAo+IC0JaWYgKGludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VE UCkKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4gIAlwbGwgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGwo aW50ZWxfY3J0YywgY3J0Y19zdGF0ZSwgaW50ZWxfZW5jb2Rlcik7Cj4gIAlpZiAocGxsID09IE5V TEwpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZmluZCBQTEwgZm9yIHBpcGUg JWNcbiIsCj4gQEAgLTE1NzAsMjQgKzE1NjcsNiBAQCB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0 KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXVpbnQzMl90IGRwbGwgPSBwaXBl X2NvbmZpZy0+ZGRpX3BsbF9zZWw7Cj4gIAkJdWludDMyX3QgdmFsOwo+ICAKPiAtCQkvKgo+IC0J CSAqIERQTEwwIGlzIHVzZWQgZm9yIGVEUCBhbmQgaXMgdGhlIG9ubHkgInByaXZhdGUiIERQTEwg KGFzCj4gLQkJICogb3Bwb3NlZCB0byBzaGFyZWQpIG9uIFNLTAo+IC0JCSAqLwo+IC0JCWlmIChl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiAtCQkJV0FSTl9PTihkcGxsICE9 IFNLTF9EUExMMCk7Cj4gLQo+IC0JCQl2YWwgPSBJOTE1X1JFQUQoRFBMTF9DVFJMMSk7Cj4gLQo+ IC0JCQl2YWwgJj0gfihEUExMX0NUUkwxX0hETUlfTU9ERShkcGxsKSB8Cj4gLQkJCQkgRFBMTF9D VFJMMV9TU0MoZHBsbCkgfAo+IC0JCQkJIERQTExfQ1RSTDFfTElOS19SQVRFX01BU0soZHBsbCkp Owo+IC0JCQl2YWwgfD0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuY3RybDEgPDwgKGRwbGwg KiA2KTsKPiAtCj4gLQkJCUk5MTVfV1JJVEUoRFBMTF9DVFJMMSwgdmFsKTsKPiAtCQkJUE9TVElO R19SRUFEKERQTExfQ1RSTDEpOwo+IC0JCX0KPiAtCj4gIAkJLyogRERJIC0+IFBMTCBtYXBwaW5n ICAqLwo+ICAJCXZhbCA9IEk5MTVfUkVBRChEUExMX0NUUkwyKTsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggNWJlNjg5Mi4uOWZlZjg3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC0xMjI5LDUyICsxMjI5LDYgQEAgaW50ZWxfZHBfY29ubmVjdG9yX3VucmVn aXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAJaW50ZWxf Y29ubmVjdG9yX3VucmVnaXN0ZXIoaW50ZWxfY29ubmVjdG9yKTsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQKPiAtc2tsX2VkcF9zZXRfcGxsX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcpCj4gLXsKPiAtCXUzMiBjdHJsMTsKPiAtCj4gLQltZW1zZXQoJnBpcGVfY29u ZmlnLT5kcGxsX2h3X3N0YXRlLCAwLAo+IC0JICAgICAgIHNpemVvZihwaXBlX2NvbmZpZy0+ZHBs bF9od19zdGF0ZSkpOwo+IC0KPiAtCXBpcGVfY29uZmlnLT5kZGlfcGxsX3NlbCA9IFNLTF9EUExM MDsKPiAtCXBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmNmZ2NyMSA9IDA7Cj4gLQlwaXBlX2Nv bmZpZy0+ZHBsbF9od19zdGF0ZS5jZmdjcjIgPSAwOwo+IC0KPiAtCWN0cmwxID0gRFBMTF9DVFJM MV9PVkVSUklERShTS0xfRFBMTDApOwo+IC0Jc3dpdGNoIChwaXBlX2NvbmZpZy0+cG9ydF9jbG9j ayAvIDIpIHsKPiAtCWNhc2UgODEwMDA6Cj4gLQkJY3RybDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JB VEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfODEwLAo+IC0JCQkJCSAgICAgIFNLTF9EUExMMCk7Cj4g LQkJYnJlYWs7Cj4gLQljYXNlIDEzNTAwMDoKPiAtCQljdHJsMSB8PSBEUExMX0NUUkwxX0xJTktf UkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMzUwLAo+IC0JCQkJCSAgICAgIFNLTF9EUExMMCk7 Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDI3MDAwMDoKPiAtCQljdHJsMSB8PSBEUExMX0NUUkwxX0xJ TktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8yNzAwLAo+IC0JCQkJCSAgICAgIFNLTF9EUExM MCk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDE2MjAwMDoKPiAtCQljdHJsMSB8PSBEUExMX0NUUkwx X0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xNjIwLAo+IC0JCQkJCSAgICAgIFNLTF9E UExMMCk7Cj4gLQkJYnJlYWs7Cj4gLQkvKiBUQkQ6IEZvciBEUCBsaW5rIHJhdGVzIDIuMTYgR0h6 IGFuZCA0LjMyIEdIeiwgVkNPIGlzIDg2NDAgd2hpY2gKPiAtCXJlc3VsdHMgaW4gQ0RDTEsgY2hh bmdlLiBOZWVkIHRvIGhhbmRsZSB0aGUgY2hhbmdlIG9mIENEQ0xLIGJ5Cj4gLQlkaXNhYmxpbmcg cGlwZXMgYW5kIHJlLWVuYWJsaW5nIHRoZW0gKi8KPiAtCWNhc2UgMTA4MDAwOgo+IC0JCWN0cmwx IHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzEwODAsCj4gLQkJ CQkJICAgICAgU0tMX0RQTEwwKTsKPiAtCQlicmVhazsKPiAtCWNhc2UgMjE2MDAwOgo+IC0JCWN0 cmwxIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzIxNjAsCj4g LQkJCQkJICAgICAgU0tMX0RQTEwwKTsKPiAtCQlicmVhazsKPiAtCj4gLQl9Cj4gLQlwaXBlX2Nv bmZpZy0+ZHBsbF9od19zdGF0ZS5jdHJsMSA9IGN0cmwxOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW50 Cj4gIGludGVsX2RwX3NpbmtfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgY29uc3Qg aW50ICoqc2lua19yYXRlcykKPiAgewo+IEBAIC0xNjMyLDExICsxNTg2LDcgQEAgZm91bmQ6Cj4g IAkJCQkmcGlwZV9jb25maWctPmRwX20yX24yKTsKPiAgCX0KPiAgCj4gLQlpZiAoKElTX1NLWUxB S0UoZGV2KSAgfHwgSVNfS0FCWUxBS0UoZGV2KSkgJiYgaXNfZWRwKGludGVsX2RwKSkKPiAtCQlz a2xfZWRwX3NldF9wbGxfY29uZmlnKHBpcGVfY29uZmlnKTsKPiAtCWVsc2UgaWYgKElTX0JST1hU T04oZGV2KSB8fCBJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4gLQkJLyog aGFuZGxlZCBpbiBkZGkgKi87Cj4gLQllbHNlCj4gKwlpZiAoIUhBU19EREkoZGV2KSkKPiAgCQlp bnRlbF9kcF9zZXRfY2xvY2soZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICAKPiAgCXJldHVybiB0 cnVlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IGluZGV4IGQzNzE2ODAu LjZlYzc4MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9t Z3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiBAQCAt Nzg1LDcgKzc4NSwxMiBAQCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyB7Cj4gIH07Cj4gIAo+ICAvKiB0 aGlzIGFycmF5IGlzIGluZGV4ZWQgYnkgdGhlICpzaGFyZWQqIHBsbCBpZCAqLwo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IHNrbF9kcGxsX3JlZ3Mgc2tsX2RwbGxfcmVnc1szXSA9IHsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBza2xfZHBsbF9yZWdzIHNrbF9kcGxsX3JlZ3NbNF0gPSB7Cj4gKwl7Cj4g KwkJLyogRFBMTCAwICovCj4gKwkJLmN0bCA9IExDUExMMV9DVEwsCj4gKwkJLyogRFBMTCAwIGRv ZXNuJ3Qgc3VwcG9ydCBIRE1JIG1vZGUgKi8KPiArCX0sCj4gIAl7Cj4gIAkJLyogRFBMTCAxICov Cj4gIAkJLmN0bCA9IExDUExMMl9DVEwsCj4gQEAgLTgwNiwyNCArODExLDI5IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyBza2xfZHBsbF9yZWdzWzNdID0gewo+ICAJfSwKPiAg fTsKPiAgCj4gLXN0YXRpYyB2b2lkIHNrbF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KnBsbCkKPiArc3RhdGljIHZvaWQgc2tsX2RkaV9wbGxfd3JpdGVfY3RybDEoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBs bCAqcGxsKQo+ICB7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gLQl1bnNpZ25lZCBpbnQgZHBsbDsKPiAt CWNvbnN0IHN0cnVjdCBza2xfZHBsbF9yZWdzICpyZWdzID0gc2tsX2RwbGxfcmVnczsKPiAtCj4g LQkvKiBEUExMMCBpcyBub3QgcGFydCBvZiB0aGUgc2hhcmVkIERQTExzLCBzbyBwbGwtPmlkIGlz IDAgZm9yIERQTEwxICovCj4gLQlkcGxsID0gcGxsLT5pZCArIDE7Cj4gIAo+ICAJdmFsID0gSTkx NV9SRUFEKERQTExfQ1RSTDEpOwo+ICAKPiAtCXZhbCAmPSB+KERQTExfQ1RSTDFfSERNSV9NT0RF KGRwbGwpIHwgRFBMTF9DVFJMMV9TU0MoZHBsbCkgfAo+IC0JCSBEUExMX0NUUkwxX0xJTktfUkFU RV9NQVNLKGRwbGwpKTsKPiAtCXZhbCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5jdHJsMSA8PCAo ZHBsbCAqIDYpOwo+ICsJdmFsICY9IH4oRFBMTF9DVFJMMV9IRE1JX01PREUocGxsLT5pZCkgfCBE UExMX0NUUkwxX1NTQyhwbGwtPmlkKSB8Cj4gKwkJIERQTExfQ1RSTDFfTElOS19SQVRFX01BU0so cGxsLT5pZCkpOwo+ICsJdmFsIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLmN0cmwxIDw8IChwbGwt PmlkICogNik7Cj4gIAo+ICAJSTkxNV9XUklURShEUExMX0NUUkwxLCB2YWwpOwo+ICAJUE9TVElO R19SRUFEKERQTExfQ1RSTDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBza2xfZGRpX3BsbF9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgICAgc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBza2xfZHBs bF9yZWdzICpyZWdzID0gc2tsX2RwbGxfcmVnczsKPiArCj4gKwlXQVJOX09OKHBsbC0+aWQgPT0g RFBMTF9JRF9TS0xfRFBMTDApOwo+ICsKPiArCXNrbF9kZGlfcGxsX3dyaXRlX2N0cmwxKGRldl9w cml2LCBwbGwpOwo+ICAKPiAgCUk5MTVfV1JJVEUocmVnc1twbGwtPmlkXS5jZmdjcjEsIHBsbC0+ Y29uZmlnLmh3X3N0YXRlLmNmZ2NyMSk7Cj4gIAlJOTE1X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY2Zn Y3IyLCBwbGwtPmNvbmZpZy5od19zdGF0ZS5jZmdjcjIpOwo+IEBAIC04MzQsOCArODQ0LDE1IEBA IHN0YXRpYyB2b2lkIHNrbF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAlJOTE1X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY3RsLAo+ICAJCSAgIEk5MTVf UkVBRChyZWdzW3BsbC0+aWRdLmN0bCkgfCBMQ1BMTF9QTExfRU5BQkxFKTsKPiAgCj4gLQlpZiAo d2FpdF9mb3IoSTkxNV9SRUFEKERQTExfU1RBVFVTKSAmIERQTExfTE9DSyhkcGxsKSwgNSkpCj4g LQkJRFJNX0VSUk9SKCJEUExMICVkIG5vdCBsb2NrZWRcbiIsIGRwbGwpOwo+ICsJaWYgKHdhaXRf Zm9yKEk5MTVfUkVBRChEUExMX1NUQVRVUykgJiBEUExMX0xPQ0socGxsLT5pZCksIDUpKQo+ICsJ CURSTV9FUlJPUigiRFBMTCAlZCBub3QgbG9ja2VkXG4iLCBwbGwtPmlkKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgc2tsX2RkaV9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICt7Cj4g KwlXQVJOX09OKHBsbC0+aWQgIT0gRFBMTF9JRF9TS0xfRFBMTDApOwo+ICsJc2tsX2RkaV9wbGxf d3JpdGVfY3RybDEoZGV2X3ByaXYsIHBsbCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9k ZGlfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC04 NDksMzIgKzg2NiwzNSBAQCBzdGF0aWMgdm9pZCBza2xfZGRpX3BsbF9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCVBPU1RJTkdfUkVBRChyZWdzW3BsbC0+aWRd LmN0bCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHNrbF9kZGlfZHBsbDBfZGlzYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqcGxsKQo+ICt7Cj4gK30KPiArCj4gIHN0YXRpYyBib29sIHNrbF9kZGlfcGxsX2dl dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAg IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsLAo+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxf ZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpCj4gIHsKPiAgCXVpbnQzMl90IHZhbDsKPiAtCXVuc2ln bmVkIGludCBkcGxsOwo+ICAJY29uc3Qgc3RydWN0IHNrbF9kcGxsX3JlZ3MgKnJlZ3MgPSBza2xf ZHBsbF9yZWdzOwo+ICAJYm9vbCByZXQ7Cj4gIAo+ICsJV0FSTl9PTihwbGwtPmlkID09IERQTExf SURfU0tMX0RQTEwwKTsKPiArCj4gIAlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2Vu YWJsZWQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4g IAo+ICAJcmV0ID0gZmFsc2U7Cj4gIAo+IC0JLyogRFBMTDAgaXMgbm90IHBhcnQgb2YgdGhlIHNo YXJlZCBEUExMcywgc28gcGxsLT5pZCBpcyAwIGZvciBEUExMMSAqLwo+IC0JZHBsbCA9IHBsbC0+ aWQgKyAxOwo+IC0KPiAgCXZhbCA9IEk5MTVfUkVBRChyZWdzW3BsbC0+aWRdLmN0bCk7Cj4gIAlp ZiAoISh2YWwgJiBMQ1BMTF9QTExfRU5BQkxFKSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gIAl2YWwg PSBJOTE1X1JFQUQoRFBMTF9DVFJMMSk7Cj4gLQlod19zdGF0ZS0+Y3RybDEgPSAodmFsID4+IChk cGxsICogNikpICYgMHgzZjsKPiArCWh3X3N0YXRlLT5jdHJsMSA9ICh2YWwgPj4gKHBsbC0+aWQg KiA2KSkgJiAweDNmOwo+ICAKPiAgCS8qIGF2b2lkIHJlYWRpbmcgYmFjayBzdGFsZSB2YWx1ZXMg aWYgSERNSSBtb2RlIGlzIG5vdCBlbmFibGVkICovCj4gLQlpZiAodmFsICYgRFBMTF9DVFJMMV9I RE1JX01PREUoZHBsbCkpIHsKPiArCWlmICh2YWwgJiBEUExMX0NUUkwxX0hETUlfTU9ERShwbGwt PmlkKSkgewo+ICAJCWh3X3N0YXRlLT5jZmdjcjEgPSBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5j ZmdjcjEpOwo+ICAJCWh3X3N0YXRlLT5jZmdjcjIgPSBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5j ZmdjcjIpOwo+ICAJfQo+IEBAIC04ODYsNiArOTA2LDM3IEBAIG91dDoKPiAgCXJldHVybiByZXQ7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIHNrbF9kZGlfZHBsbDBfZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0 ZSAqaHdfc3RhdGUpCj4gK3sKPiArCXVpbnQzMl90IHZhbDsKPiArCWNvbnN0IHN0cnVjdCBza2xf ZHBsbF9yZWdzICpyZWdzID0gc2tsX2RwbGxfcmVnczsKPiArCWJvb2wgcmV0Owo+ICsKPiArCVdB Uk5fT04ocGxsLT5pZCAhPSBEUExMX0lEX1NLTF9EUExMMCk7CkknbSBhbGwgZm9yIHBhcmFub2lh LCBidXQgaG93IGNhbiB0aGlzIGV2ZXIgaGFwcGVuPwoKU2VlbXMgcGxsMCBoYXMgaXRzIG93biBm dW5jdGlvbiBwb2ludGVycywgc28geW91J2QgaGF2ZSB0byBkbyBzb21ldGhpbmcgbGlrZSBwbGwx LT5mdW5jcy0+Z2V0X2h3X3N0YXRlKHBsbDApOwoKSSBkb24ndCB0aGluayB0aGlzIHdpbGwgZXZl ciBoYXBwZW4sIHNvIGFsbCB0aGUgcGFyYW5vaWEgZnJvbSB0aGVzZSBmdW5jdGlvbnMgdGhhdCBh cmUgY2FsbGVkIGZyb20gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgY2FuIGJlIHJlbW92ZWQuCj4gKwlp ZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIFBPV0VSX0RP TUFJTl9QTExTKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0ID0gZmFsc2U7Cj4gKwo+ ICsJLyogRFBMTDAgaXMgYWx3YXlzIGVuYWJsZWQgc2luY2UgaXQgZHJpdmVzIENEQ0xLICovCj4g Kwl2YWwgPSBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5jdGwpOwo+ICsJaWYgKFdBUk5fT04oISh2 YWwgJiBMQ1BMTF9QTExfRU5BQkxFKSkpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJdmFsID0gSTkx NV9SRUFEKERQTExfQ1RSTDEpOwo+ICsJaHdfc3RhdGUtPmN0cmwxID0gKHZhbCA+PiAocGxsLT5p ZCAqIDYpKSAmIDB4M2Y7Cj4gKwo+ICsJcmV0ID0gdHJ1ZTsKPiArCj4gK291dDoKPiArCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiAgc3RydWN0IHNrbF93cnBsbF9jb250ZXh0IHsKPiAgCXVp bnQ2NF90IG1pbl9kZXZpYXRpb247CQkvKiBjdXJyZW50IG1pbmltYWwgZGV2aWF0aW9uICovCj4g IAl1aW50NjRfdCBjZW50cmFsX2ZyZXE7CQkvKiBjaG9zZW4gY2VudHJhbCBmcmVxICovCj4gQEAg LTExNjUsNyArMTIxNiw4IEBAIHNrbF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSBEUExMX0NGR0NSMl9Q RElWKHdycGxsX3BhcmFtcy5wZGl2KSB8Cj4gIAkJCSB3cnBsbF9wYXJhbXMuY2VudHJhbF9mcmVx Owo+ICAJfSBlbHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9S VCB8fAo+IC0JCSAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCkgewo+ICsJ CSAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCB8fAo+ICsJCSAgIGVuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ICAJCXN3aXRjaCAoY3J0Y19zdGF0ZS0+ cG9ydF9jbG9jayAvIDIpIHsKPiAgCQljYXNlIDgxMDAwOgo+ICAJCQljdHJsMSB8PSBEUExMX0NU UkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV84MTAsIDApOwo+IEBAIC0xMTc2LDYg KzEyMjgsMTkgQEAgc2tsX2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQljYXNlIDI3MDAwMDoKPiAgCQkJY3Ry bDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMjcwMCwgMCk7 Cj4gIAkJCWJyZWFrOwo+ICsJCS8qIGVEUCAxLjQgcmF0ZXMgKi8KPiArCQljYXNlIDE2MjAwMDoK PiArCQkJY3RybDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVf MTYyMCwgMCk7Cj4gKwkJCWJyZWFrOwo+ICsJCS8qIFRCRDogRm9yIERQIGxpbmsgcmF0ZXMgMi4x NiBHSHogYW5kIDQuMzIgR0h6LCBWQ08gaXMgODY0MCB3aGljaAo+ICsJCXJlc3VsdHMgaW4gQ0RD TEsgY2hhbmdlLiBOZWVkIHRvIGhhbmRsZSB0aGUgY2hhbmdlIG9mIENEQ0xLIGJ5Cj4gKwkJZGlz YWJsaW5nIHBpcGVzIGFuZCByZS1lbmFibGluZyB0aGVtICovClNvdW5kcyBsaWtlIHdlIHJlYWxs eSBuZWVkIHRvIHN0YXJ0IHN1cHBvcnRpbmcgY2RjbGsgY2hhbmdlcyBvbiBTS0wsIGlmIGl0J3Mg YmFzZWQgb24gdGhpcyBwbGw/Cm1vZGVzZXRfY2FsY19jZGNsayBhbmQgbW9kZXNldF9jb21taXRf Y2RjbGsuCgp+TWFhcnRlbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK