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:51:35 +0100 Message-ID: <56D84167.1080706@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> <56D83D47.9080506@linux.intel.com> <1457012458.2724.30.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 076BB6E013 for ; Thu, 3 Mar 2016 13:51:36 +0000 (UTC) In-Reply-To: <1457012458.2724.30.camel@gmail.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 T3AgMDMtMDMtMTYgb20gMTQ6NDAgc2NocmVlZiBBbmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmE6 Cj4gT24gVGh1LCAyMDE2LTAzLTAzIGF0IDE0OjMzICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3 cm90ZToKPj4gT3AgMjktMDItMTYgb20gMTA6MDggc2NocmVlZiBBbmRlciBDb25zZWx2YW4gZGUg T2xpdmVpcmE6Cj4+PiBJbmNsdWRlIERQTEwwIGluIHRoZSBtYW5hZ2VkIGRwbGxzIGZvciBTS0wv S0JMLiBXaGlsZSBpdCBoYXMgdG8gYmUga2VwdAo+Pj4gZW5hYmxlZCBiZWNhdXNlIG9mIGl0IGRy aXZpbmcgQ0RDTEssIGl0IGlzIGJldHRlciB0byBzcGVjaWFsIGNhc2UgdGhhdAo+Pj4gaW5zaWRl IHRoZSBEUExMIGNvZGUgdGhhbiBpbiB0aGUgaGlnaGVyIGxldmVsLgo+Pj4KPj4+IHYyOiBVc2Ug SU5URUxfRFBMTF9BTFdBWVNfT04gZmxhZy4gKEFuZGVyKQo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6 IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Cj4+PiBhbmRlci5jb25zZWx2YW4uZGUub2xp dmVpcmFAaW50ZWwuY29tPgo+Pj4KPj4+IC0tLQo+Pj4gSSB3YXNuJ3QgYWJsZSB0byB0ZXN0IHRo aXMgcGF0Y2guIFdvdWxkIHJlYWxseSBhcHByZWNpYXRlIGEgdGVzdGVkIGJ5Cj4+PiBmcm9tIHNv bWVvbmUuCj4+IFVuZm9ydHVuYXRlbHkgbm8gc2tsIHdpdGggZURQIGhlcmUgZWl0aGVyLiA6KAo+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgfCAgMjEgLS0tLS0tCj4+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICB8ICA1MiArLS0tLS0tLS0t LS0tLQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgfCAxMzEgKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+Pj4gLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuaCB8ICAgNyArLQo+Pj4gIDQgZmlsZXMgY2hhbmdlZCwgMTA5 IGluc2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPj4+IGluZGV4IDNjYjlmMzYuLjhlZjRkMmUgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKPj4+IEBAIC0xMDA4LDkgKzEwMDgsNiBAQCBza2xfZGRpX3BsbF9z ZWxlY3Qoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+PiAgewo+Pj4gIAlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPj4+ICAKPj4+IC0JaWYgKGludGVsX2VuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPj4+IC0JCXJldHVybiB0cnVlOwo+Pj4gLQo+Pj4gIAlw bGwgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGwoaW50ZWxfY3J0YywgY3J0Y19zdGF0ZSwgaW50ZWxf ZW5jb2Rlcik7Cj4+PiAgCWlmIChwbGwgPT0gTlVMTCkgewo+Pj4gIAkJRFJNX0RFQlVHX0RSSVZF UigiZmFpbGVkIHRvIGZpbmQgUExMIGZvciBwaXBlICVjXG4iLAo+Pj4gQEAgLTE1NzAsMjQgKzE1 NjcsNiBAQCB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4+ PiAqZW5jb2RlciwKPj4+ICAJCXVpbnQzMl90IGRwbGwgPSBwaXBlX2NvbmZpZy0+ZGRpX3BsbF9z ZWw7Cj4+PiAgCQl1aW50MzJfdCB2YWw7Cj4+PiAgCj4+PiAtCQkvKgo+Pj4gLQkJICogRFBMTDAg aXMgdXNlZCBmb3IgZURQIGFuZCBpcyB0aGUgb25seSAicHJpdmF0ZSIgRFBMTCAoYXMKPj4+IC0J CSAqIG9wcG9zZWQgdG8gc2hhcmVkKSBvbiBTS0wKPj4+IC0JCSAqLwo+Pj4gLQkJaWYgKGVuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+Pj4gLQkJCVdBUk5fT04oZHBsbCAhPSBT S0xfRFBMTDApOwo+Pj4gLQo+Pj4gLQkJCXZhbCA9IEk5MTVfUkVBRChEUExMX0NUUkwxKTsKPj4+ IC0KPj4+IC0JCQl2YWwgJj0gfihEUExMX0NUUkwxX0hETUlfTU9ERShkcGxsKSB8Cj4+PiAtCQkJ CSBEUExMX0NUUkwxX1NTQyhkcGxsKSB8Cj4+PiAtCQkJCSBEUExMX0NUUkwxX0xJTktfUkFURV9N QVNLKGRwbGwpKTsKPj4+IC0JCQl2YWwgfD0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuY3Ry bDEgPDwgKGRwbGwgKgo+Pj4gNik7Cj4+PiAtCj4+PiAtCQkJSTkxNV9XUklURShEUExMX0NUUkwx LCB2YWwpOwo+Pj4gLQkJCVBPU1RJTkdfUkVBRChEUExMX0NUUkwxKTsKPj4+IC0JCX0KPj4+IC0K Pj4+ICAJCS8qIERESSAtPiBQTEwgbWFwcGluZyAgKi8KPj4+ICAJCXZhbCA9IEk5MTVfUkVBRChE UExMX0NUUkwyKTsKPj4+ICAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+IGluZGV4 IDViZTY4OTIuLjlmZWY4NzcgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+PiBA QCAtMTIyOSw1MiArMTIyOSw2IEBAIGludGVsX2RwX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IKPj4+ICppbnRlbF9jb25uZWN0b3IpCj4+PiAgCWludGVsX2Nvbm5l Y3Rvcl91bnJlZ2lzdGVyKGludGVsX2Nvbm5lY3Rvcik7Cj4+PiAgfQo+Pj4gIAo+Pj4gLXN0YXRp YyB2b2lkCj4+PiAtc2tsX2VkcF9zZXRfcGxsX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpCj4+PiAtewo+Pj4gLQl1MzIgY3RybDE7Cj4+PiAtCj4+PiAtCW1lbXNl dCgmcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUsIDAsCj4+PiAtCSAgICAgICBzaXplb2YocGlw ZV9jb25maWctPmRwbGxfaHdfc3RhdGUpKTsKPj4+IC0KPj4+IC0JcGlwZV9jb25maWctPmRkaV9w bGxfc2VsID0gU0tMX0RQTEwwOwo+Pj4gLQlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5jZmdj cjEgPSAwOwo+Pj4gLQlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5jZmdjcjIgPSAwOwo+Pj4g LQo+Pj4gLQljdHJsMSA9IERQTExfQ1RSTDFfT1ZFUlJJREUoU0tMX0RQTEwwKTsKPj4+IC0Jc3dp dGNoIChwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAvIDIpIHsKPj4+IC0JY2FzZSA4MTAwMDoKPj4+ IC0JCWN0cmwxIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzgx MCwKPj4+IC0JCQkJCSAgICAgIFNLTF9EUExMMCk7Cj4+PiAtCQlicmVhazsKPj4+IC0JY2FzZSAx MzUwMDA6Cj4+PiAtCQljdHJsMSB8PSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJ TktfUkFURV8xMzUwLAo+Pj4gLQkJCQkJICAgICAgU0tMX0RQTEwwKTsKPj4+IC0JCWJyZWFrOwo+ Pj4gLQljYXNlIDI3MDAwMDoKPj4+IC0JCWN0cmwxIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQ TExfQ1RSTDFfTElOS19SQVRFXzI3MDAsCj4+PiAtCQkJCQkgICAgICBTS0xfRFBMTDApOwo+Pj4g LQkJYnJlYWs7Cj4+PiAtCWNhc2UgMTYyMDAwOgo+Pj4gLQkJY3RybDEgfD0gRFBMTF9DVFJMMV9M SU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMTYyMCwKPj4+IC0JCQkJCSAgICAgIFNLTF9E UExMMCk7Cj4+PiAtCQlicmVhazsKPj4+IC0JLyogVEJEOiBGb3IgRFAgbGluayByYXRlcyAyLjE2 IEdIeiBhbmQgNC4zMiBHSHosIFZDTyBpcyA4NjQwIHdoaWNoCj4+PiAtCXJlc3VsdHMgaW4gQ0RD TEsgY2hhbmdlLiBOZWVkIHRvIGhhbmRsZSB0aGUgY2hhbmdlIG9mIENEQ0xLIGJ5Cj4+PiAtCWRp c2FibGluZyBwaXBlcyBhbmQgcmUtZW5hYmxpbmcgdGhlbSAqLwo+Pj4gLQljYXNlIDEwODAwMDoK Pj4+IC0JCWN0cmwxIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRF XzEwODAsCj4+PiAtCQkJCQkgICAgICBTS0xfRFBMTDApOwo+Pj4gLQkJYnJlYWs7Cj4+PiAtCWNh c2UgMjE2MDAwOgo+Pj4gLQkJY3RybDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJM MV9MSU5LX1JBVEVfMjE2MCwKPj4+IC0JCQkJCSAgICAgIFNLTF9EUExMMCk7Cj4+PiAtCQlicmVh azsKPj4+IC0KPj4+IC0JfQo+Pj4gLQlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5jdHJsMSA9 IGN0cmwxOwo+Pj4gLX0KPj4+IC0KPj4+ICBzdGF0aWMgaW50Cj4+PiAgaW50ZWxfZHBfc2lua19y YXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBjb25zdCBpbnQgKipzaW5rX3JhdGVzKQo+ Pj4gIHsKPj4+IEBAIC0xNjMyLDExICsxNTg2LDcgQEAgZm91bmQ6Cj4+PiAgCQkJCSZwaXBlX2Nv bmZpZy0+ZHBfbTJfbjIpOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCWlmICgoSVNfU0tZTEFLRShkZXYp ICB8fCBJU19LQUJZTEFLRShkZXYpKSAmJiBpc19lZHAoaW50ZWxfZHApKQo+Pj4gLQkJc2tsX2Vk cF9zZXRfcGxsX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4+PiAtCWVsc2UgaWYgKElTX0JST1hUT04o ZGV2KSB8fCBJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4+PiAtCQkvKiBo YW5kbGVkIGluIGRkaSAqLzsKPj4+IC0JZWxzZQo+Pj4gKwlpZiAoIUhBU19EREkoZGV2KSkKPj4+ ICAJCWludGVsX2RwX3NldF9jbG9jayhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4+PiAgCj4+PiAg CXJldHVybiB0cnVlOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwbGxfbWdyLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ Pj4gaW5kZXggZDM3MTY4MC4uNmVjNzgzNiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwbGxfbWdyLmMKPj4+IEBAIC03ODUsNyArNzg1LDEyIEBAIHN0cnVjdCBza2xfZHBsbF9y ZWdzIHsKPj4+ICB9Owo+Pj4gIAo+Pj4gIC8qIHRoaXMgYXJyYXkgaXMgaW5kZXhlZCBieSB0aGUg KnNoYXJlZCogcGxsIGlkICovCj4+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBza2xfZHBsbF9yZWdz IHNrbF9kcGxsX3JlZ3NbM10gPSB7Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBza2xfZHBsbF9y ZWdzIHNrbF9kcGxsX3JlZ3NbNF0gPSB7Cj4+PiArCXsKPj4+ICsJCS8qIERQTEwgMCAqLwo+Pj4g KwkJLmN0bCA9IExDUExMMV9DVEwsCj4+PiArCQkvKiBEUExMIDAgZG9lc24ndCBzdXBwb3J0IEhE TUkgbW9kZSAqLwo+Pj4gKwl9LAo+Pj4gIAl7Cj4+PiAgCQkvKiBEUExMIDEgKi8KPj4+ICAJCS5j dGwgPSBMQ1BMTDJfQ1RMLAo+Pj4gQEAgLTgwNiwyNCArODExLDI5IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgc2tsX2RwbGxfcmVncyBza2xfZHBsbF9yZWdzWzNdID0gewo+Pj4gIAl9LAo+Pj4gIH07 Cj4+PiAgCj4+PiAtc3RhdGljIHZvaWQgc2tsX2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPj4+IC0JCQkgICAgICAgc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGwpCj4+PiArc3RhdGljIHZvaWQgc2tsX2RkaV9wbGxfd3JpdGVfY3RybDEoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gKwkJCQkgICAgc3RydWN0IGludGVsX3No YXJlZF9kcGxsICpwbGwpCj4+PiAgewo+Pj4gIAl1aW50MzJfdCB2YWw7Cj4+PiAtCXVuc2lnbmVk IGludCBkcGxsOwo+Pj4gLQljb25zdCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyAqcmVncyA9IHNrbF9k cGxsX3JlZ3M7Cj4+PiAtCj4+PiAtCS8qIERQTEwwIGlzIG5vdCBwYXJ0IG9mIHRoZSBzaGFyZWQg RFBMTHMsIHNvIHBsbC0+aWQgaXMgMCBmb3IgRFBMTDEKPj4+ICovCj4+PiAtCWRwbGwgPSBwbGwt PmlkICsgMTsKPj4+ICAKPj4+ICAJdmFsID0gSTkxNV9SRUFEKERQTExfQ1RSTDEpOwo+Pj4gIAo+ Pj4gLQl2YWwgJj0gfihEUExMX0NUUkwxX0hETUlfTU9ERShkcGxsKSB8IERQTExfQ1RSTDFfU1ND KGRwbGwpIHwKPj4+IC0JCSBEUExMX0NUUkwxX0xJTktfUkFURV9NQVNLKGRwbGwpKTsKPj4+IC0J dmFsIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLmN0cmwxIDw8IChkcGxsICogNik7Cj4+PiArCXZh bCAmPSB+KERQTExfQ1RSTDFfSERNSV9NT0RFKHBsbC0+aWQpIHwgRFBMTF9DVFJMMV9TU0MocGxs LT5pZCkgfAo+Pj4gKwkJIERQTExfQ1RSTDFfTElOS19SQVRFX01BU0socGxsLT5pZCkpOwo+Pj4g Kwl2YWwgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUuY3RybDEgPDwgKHBsbC0+aWQgKiA2KTsKPj4+ ICAKPj4+ICAJSTkxNV9XUklURShEUExMX0NUUkwxLCB2YWwpOwo+Pj4gIAlQT1NUSU5HX1JFQUQo RFBMTF9DVFJMMSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHNrbF9kZGlfcGxsX2Vu YWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiArCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+Pj4gK3sKPj4+ICsJY29uc3Qgc3RydWN0IHNr bF9kcGxsX3JlZ3MgKnJlZ3MgPSBza2xfZHBsbF9yZWdzOwo+Pj4gKwo+Pj4gKwlXQVJOX09OKHBs bC0+aWQgPT0gRFBMTF9JRF9TS0xfRFBMTDApOwo+Pj4gKwo+Pj4gKwlza2xfZGRpX3BsbF93cml0 ZV9jdHJsMShkZXZfcHJpdiwgcGxsKTsKPj4+ICAKPj4+ICAJSTkxNV9XUklURShyZWdzW3BsbC0+ aWRdLmNmZ2NyMSwgcGxsLT5jb25maWcuaHdfc3RhdGUuY2ZnY3IxKTsKPj4+ICAJSTkxNV9XUklU RShyZWdzW3BsbC0+aWRdLmNmZ2NyMiwgcGxsLT5jb25maWcuaHdfc3RhdGUuY2ZnY3IyKTsKPj4+ IEBAIC04MzQsOCArODQ0LDE1IEBAIHN0YXRpYyB2b2lkIHNrbF9kZGlfcGxsX2VuYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+Pj4gKmRldl9wcml2LAo+Pj4gIAlJOTE1X1dSSVRFKHJlZ3Nb cGxsLT5pZF0uY3RsLAo+Pj4gIAkJICAgSTkxNV9SRUFEKHJlZ3NbcGxsLT5pZF0uY3RsKSB8IExD UExMX1BMTF9FTkFCTEUpOwo+Pj4gIAo+Pj4gLQlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKERQTExf U1RBVFVTKSAmIERQTExfTE9DSyhkcGxsKSwgNSkpCj4+PiAtCQlEUk1fRVJST1IoIkRQTEwgJWQg bm90IGxvY2tlZFxuIiwgZHBsbCk7Cj4+PiArCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoRFBMTF9T VEFUVVMpICYgRFBMTF9MT0NLKHBsbC0+aWQpLCA1KSkKPj4+ICsJCURSTV9FUlJPUigiRFBMTCAl ZCBub3QgbG9ja2VkXG4iLCBwbGwtPmlkKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQg c2tsX2RkaV9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ Pj4gKwkJCQkgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4+PiArewo+Pj4gKwlXQVJO X09OKHBsbC0+aWQgIT0gRFBMTF9JRF9TS0xfRFBMTDApOwo+Pj4gKwlza2xfZGRpX3BsbF93cml0 ZV9jdHJsMShkZXZfcHJpdiwgcGxsKTsKPj4+ICB9Cj4+PiAgCj4+PiAgc3RhdGljIHZvaWQgc2ts X2RkaV9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiBA QCAtODQ5LDMyICs4NjYsMzUgQEAgc3RhdGljIHZvaWQgc2tsX2RkaV9wbGxfZGlzYWJsZShzdHJ1 Y3QKPj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gIAlQT1NUSU5HX1JFQUQocmVn c1twbGwtPmlkXS5jdGwpOwo+Pj4gIH0KPj4+ICAKPj4+ICtzdGF0aWMgdm9pZCBza2xfZGRpX2Rw bGwwX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gKwkJCQkg IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+Pj4gK3sKPj4+ICt9Cj4+PiArCj4+PiAg c3RhdGljIGJvb2wgc2tsX2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bCwKPj4+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpCj4+ PiAgewo+Pj4gIAl1aW50MzJfdCB2YWw7Cj4+PiAtCXVuc2lnbmVkIGludCBkcGxsOwo+Pj4gIAlj b25zdCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyAqcmVncyA9IHNrbF9kcGxsX3JlZ3M7Cj4+PiAgCWJv b2wgcmV0Owo+Pj4gIAo+Pj4gKwlXQVJOX09OKHBsbC0+aWQgPT0gRFBMTF9JRF9TS0xfRFBMTDAp Owo+Pj4gKwo+Pj4gIAlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsCj4+PiBQT1dFUl9ET01BSU5fUExMUykpCj4+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+PiAg Cj4+PiAgCXJldCA9IGZhbHNlOwo+Pj4gIAo+Pj4gLQkvKiBEUExMMCBpcyBub3QgcGFydCBvZiB0 aGUgc2hhcmVkIERQTExzLCBzbyBwbGwtPmlkIGlzIDAgZm9yIERQTEwxCj4+PiAqLwo+Pj4gLQlk cGxsID0gcGxsLT5pZCArIDE7Cj4+PiAtCj4+PiAgCXZhbCA9IEk5MTVfUkVBRChyZWdzW3BsbC0+ aWRdLmN0bCk7Cj4+PiAgCWlmICghKHZhbCAmIExDUExMX1BMTF9FTkFCTEUpKQo+Pj4gIAkJZ290 byBvdXQ7Cj4+PiAgCj4+PiAgCXZhbCA9IEk5MTVfUkVBRChEUExMX0NUUkwxKTsKPj4+IC0JaHdf c3RhdGUtPmN0cmwxID0gKHZhbCA+PiAoZHBsbCAqIDYpKSAmIDB4M2Y7Cj4+PiArCWh3X3N0YXRl LT5jdHJsMSA9ICh2YWwgPj4gKHBsbC0+aWQgKiA2KSkgJiAweDNmOwo+Pj4gIAo+Pj4gIAkvKiBh dm9pZCByZWFkaW5nIGJhY2sgc3RhbGUgdmFsdWVzIGlmIEhETUkgbW9kZSBpcyBub3QgZW5hYmxl ZCAqLwo+Pj4gLQlpZiAodmFsICYgRFBMTF9DVFJMMV9IRE1JX01PREUoZHBsbCkpIHsKPj4+ICsJ aWYgKHZhbCAmIERQTExfQ1RSTDFfSERNSV9NT0RFKHBsbC0+aWQpKSB7Cj4+PiAgCQlod19zdGF0 ZS0+Y2ZnY3IxID0gSTkxNV9SRUFEKHJlZ3NbcGxsLT5pZF0uY2ZnY3IxKTsKPj4+ICAJCWh3X3N0 YXRlLT5jZmdjcjIgPSBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5jZmdjcjIpOwo+Pj4gIAl9Cj4+ PiBAQCAtODg2LDYgKzkwNiwzNyBAQCBvdXQ6Cj4+PiAgCXJldHVybiByZXQ7Cj4+PiAgfQo+Pj4g IAo+Pj4gK3N0YXRpYyBib29sIHNrbF9kZGlfZHBsbDBfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICsJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqcGxsLAo+Pj4gKwkJCQkgICAgICAgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUK Pj4+ICpod19zdGF0ZSkKPj4+ICt7Cj4+PiArCXVpbnQzMl90IHZhbDsKPj4+ICsJY29uc3Qgc3Ry dWN0IHNrbF9kcGxsX3JlZ3MgKnJlZ3MgPSBza2xfZHBsbF9yZWdzOwo+Pj4gKwlib29sIHJldDsK Pj4+ICsKPj4+ICsJV0FSTl9PTihwbGwtPmlkICE9IERQTExfSURfU0tMX0RQTEwwKTsKPj4gSSdt IGFsbCBmb3IgcGFyYW5vaWEsIGJ1dCBob3cgY2FuIHRoaXMgZXZlciBoYXBwZW4/Cj4+Cj4+IFNl ZW1zIHBsbDAgaGFzIGl0cyBvd24gZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHlvdSdkIGhhdmUgdG8g ZG8gc29tZXRoaW5nIGxpa2UKPj4gcGxsMS0+ZnVuY3MtPmdldF9od19zdGF0ZShwbGwwKTsKPj4K Pj4gSSBkb24ndCB0aGluayB0aGlzIHdpbGwgZXZlciBoYXBwZW4sIHNvIGFsbCB0aGUgcGFyYW5v aWEgZnJvbSB0aGVzZSBmdW5jdGlvbnMKPj4gdGhhdCBhcmUgY2FsbGVkIGZyb20gdGhlIGZ1bmN0 aW9uIHBvaW50ZXIgY2FuIGJlIHJlbW92ZWQuCj4gSSB3ZW50IGEgYml0IG92ZXJib2FyZC4gV2ls bCByZXNwaW4uCj4KPj4+ICsJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVk KGRldl9wcml2LAo+Pj4gUE9XRVJfRE9NQUlOX1BMTFMpKQo+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+ Pj4gKwo+Pj4gKwlyZXQgPSBmYWxzZTsKPj4+ICsKPj4+ICsJLyogRFBMTDAgaXMgYWx3YXlzIGVu YWJsZWQgc2luY2UgaXQgZHJpdmVzIENEQ0xLICovCj4+PiArCXZhbCA9IEk5MTVfUkVBRChyZWdz W3BsbC0+aWRdLmN0bCk7Cj4+PiArCWlmIChXQVJOX09OKCEodmFsICYgTENQTExfUExMX0VOQUJM RSkpKQo+Pj4gKwkJZ290byBvdXQ7Cj4+PiArCj4+PiArCXZhbCA9IEk5MTVfUkVBRChEUExMX0NU UkwxKTsKPj4+ICsJaHdfc3RhdGUtPmN0cmwxID0gKHZhbCA+PiAocGxsLT5pZCAqIDYpKSAmIDB4 M2Y7Cj4+PiArCj4+PiArCXJldCA9IHRydWU7Cj4+PiArCj4+PiArb3V0Ogo+Pj4gKwlpbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+Pj4gKwo+Pj4g KwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICBzdHJ1Y3Qgc2tsX3dycGxsX2NvbnRleHQg ewo+Pj4gIAl1aW50NjRfdCBtaW5fZGV2aWF0aW9uOwkJLyogY3VycmVudCBtaW5pbWFsIGRldmlh dGlvbgo+Pj4gKi8KPj4+ICAJdWludDY0X3QgY2VudHJhbF9mcmVxOwkJLyogY2hvc2VuIGNlbnRy YWwgZnJlcSAqLwo+Pj4gQEAgLTExNjUsNyArMTIxNiw4IEBAIHNrbF9nZXRfZHBsbChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0Cj4+PiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAo+Pj4gIAkJCSBEUExMX0NGR0NSMl9QRElWKHdycGxsX3BhcmFtcy5wZGl2KSB8Cj4+PiAgCQkJ IHdycGxsX3BhcmFtcy5jZW50cmFsX2ZyZXE7Cj4+PiAgCX0gZWxzZSBpZiAoZW5jb2Rlci0+dHlw ZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQgfHwKPj4+IC0JCSAgIGVuY29kZXItPnR5cGUg PT0gSU5URUxfT1VUUFVUX0RQX01TVCkgewo+Pj4gKwkJICAgZW5jb2Rlci0+dHlwZSA9PSBJTlRF TF9PVVRQVVRfRFBfTVNUIHx8Cj4+PiArCQkgICBlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9FRFApIHsKPj4+ICAJCXN3aXRjaCAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayAvIDIpIHsKPj4+ ICAJCWNhc2UgODEwMDA6Cj4+PiAgCQkJY3RybDEgfD0KPj4+IERQTExfQ1RSTDFfTElOS19SQVRF KERQTExfQ1RSTDFfTElOS19SQVRFXzgxMCwgMCk7Cj4+PiBAQCAtMTE3Niw2ICsxMjI4LDE5IEBA IHNrbF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0Cj4+PiBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+Pj4gIAkJY2FzZSAyNzAwMDA6Cj4+PiAgCQkJY3RybDEg fD0KPj4+IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzI3MDAsIDAp Owo+Pj4gIAkJCWJyZWFrOwo+Pj4gKwkJLyogZURQIDEuNCByYXRlcyAqLwo+Pj4gKwkJY2FzZSAx NjIwMDA6Cj4+PiArCQkJY3RybDEgfD0KPj4+IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RS TDFfTElOS19SQVRFXzE2MjAsIDApOwo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwkJLyogVEJEOiBGb3Ig RFAgbGluayByYXRlcyAyLjE2IEdIeiBhbmQgNC4zMiBHSHosIFZDTyBpcwo+Pj4gODY0MCB3aGlj aAo+Pj4gKwkJcmVzdWx0cyBpbiBDRENMSyBjaGFuZ2UuIE5lZWQgdG8gaGFuZGxlIHRoZSBjaGFu Z2Ugb2YgQ0RDTEsKPj4+IGJ5Cj4+PiArCQlkaXNhYmxpbmcgcGlwZXMgYW5kIHJlLWVuYWJsaW5n IHRoZW0gKi8KPj4gU291bmRzIGxpa2Ugd2UgcmVhbGx5IG5lZWQgdG8gc3RhcnQgc3VwcG9ydGlu ZyBjZGNsayBjaGFuZ2VzIG9uIFNLTCwgaWYgaXQncwo+PiBiYXNlZCBvbiB0aGlzIHBsbD8KPj4g bW9kZXNldF9jYWxjX2NkY2xrIGFuZCBtb2Rlc2V0X2NvbW1pdF9jZGNsay4KPiBDbGludCBUYXls b3IgaGFzIGJlZW4gd29ya2luZyBvbiBpdDoKPgo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL2FyY2hpdmVzL2ludGVsLWdmeC8yMDE2LUZlYnJ1YXJ5LzA4Nzc5Ni5odG1sCj4KQWggaW5k ZWVkLCB0aGF0IHdvdWxkIGRlZmluaXRlbHkgaGVscCB3aXRoIHRoaXMgVEJEIQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK