From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH V8] drm/i915/skl: SKL CDCLK change on modeset tracking VCO Date: Thu, 10 Mar 2016 15:35:22 +0200 Message-ID: <20160310133522.GJ10446@intel.com> References: <1449620105-32754-1-git-send-email-clinton.a.taylor@intel.com> <1457560719-20866-1-git-send-email-clinton.a.taylor@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 ESMTP id 8B4F86E24A for ; Thu, 10 Mar 2016 13:35:25 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1457560719-20866-1-git-send-email-clinton.a.taylor@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: clinton.a.taylor@intel.com Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMDksIDIwMTYgYXQgMDE6NTg6MzlQTSAtMDgwMCwgY2xpbnRvbi5hLnRheWxv ckBpbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogQ2xpbnQgVGF5bG9yIDxjbGludG9uLmEudGF5bG9y QGludGVsLmNvbT4KPiAKPiBXQVJOSU5HOiBVc2luZyBDaHJvbWVPUyB3aXRoIGFuIGVEUCBwYW5l bCBhbmQgYSA0S0A2MCBEUCBtb25pdG9yIGNvbm5lY3RlZAo+IHRvIERESTEgdGhlIHN5c3RlbSB3 aWxsIGhhcmQgaGFuZyBkdXJpbmcgYSBjb2xkIGJvb3QuIE9jY3VycyB3aGVuIERESTEKPiBpcyBl bmFibGVkIHdoZW4gdGhlIGNkY2xrIGlzIGxlc3MgdGhlbiByZXF1aXJlZC4gRFAgY29ubmVjdGVk IHRvIERESTIKPiBhbmQgSFBEIG9uIGVpdGhlciBwb3J0IHdvcmtzIGNvcnJlY3RseS4KPiAKPiBT ZXQgY2RjbGsgYmFzZWQgb24gdGhlIG1heCByZXF1aXJlZCBwaXhlbCBjbG9jayBiYXNlZCBvbiBW Q08KPiBzZWxlY3RlZC4gVHJhY2sgYm9vdCB2Y28gaW5zdGVhZCBvZiBib290IGNkY2xrLgo+IAo+ IFRoZSB2Y28gaXMgbm93IHRyYWNrZWQgYXQgdGhlIGF0b21pYyBsZXZlbCBhbmQgYWxsIENSVENz IHVwZGF0ZWQgaWYKPiB0aGUgcmVxdWlyZWQgdmNvIGlzIGNoYW5nZWQuIE5vdCB0ZXN0ZWQgd2l0 aCBlRFAgdjEuNCBwYW5lbHMgdGhhdAo+IHJlcXVpcmUgODY0MCB2Y28gZHVlIHRvIGF2YWlsYWJp bGl0eS4KPiAKPiBWMTogaW5pdGlhbCB2ZXJzaW9uCj4gVjI6IGFkZCB2Y28gdHJhY2tpbmcgaW4g aW50ZWxfZHBfY29tcHV0ZV9jb25maWcoKSwgcmVuYW1lCj4gc2tsX2Jvb3RfY2RjbGsuCj4gVjM6 IHJlYmFzZSwgVjIgZmVlZGJhY2sgbm90IHBvc3NpYmxlIGFzIGVuY29kZXJzIGFyZSBub3QgYXdh cmUgb2YKPiBhdG9taWMuCj4gVjQ6IHRyYWNrIHRhcmdldCB2Y28gaXMgYXRvbWljIHN0YXRlLiBt b2Rlc2V0IGFsbCBDUlRDcyBpZiB2Y28gY2hhbmdlcwo+IFY1OiByZW5hbWUgYXRvbWljIHZhcmlh YmxlLCBjbGVhbmVyIGlmL2Vsc2UgbG9naWMsIHVzZSBleGlzdGluZyB2Y28gaWYKPiAgICAgICBl bmNvZGVyIGRvZXMgbm90IHJldHVybiBhIG5ldyB2Y28gdmFsdWUuIGNoZWNrX3BhdGNoLnBsIGNs ZWFudXAKPiBWNjogc2ltcGxpZnkgbG9naWMgaW4gaW50ZWxfbW9kZXNldF9jaGVja3MuCj4gVjc6 IHJlb3JkZXIgYW4gSUYgZm9yIHJlYWRhYmlsaXR5IGFuZCB3aGl0ZXNwYWNlIGZpeC4KPiBWODog dXNlIGRldl9jZGNsayBmb3IgdHJhY2tpbmcgbmV3IGNkY2xrIGR1cmluZyBhdG9taWMKPiAKPiBT aWduZWQtb2ZmLWJ5OiBDbGludCBUYXlsb3IgPGNsaW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgICAyICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICB8ICAgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDEwOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8 ICAgIDUgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAgNSAr Kwo+ICA1IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBmMzdhYzEyLi44M2JiM2ZkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE4MzMsNyArMTgzMyw3IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsKPiAgCWludCBudW1fZmVuY2VfcmVnczsgLyogOCBvbiBwcmUtOTY1 LCAxNiBvdGhlcndpc2UgKi8KPiAgCj4gIAl1bnNpZ25lZCBpbnQgZnNiX2ZyZXEsIG1lbV9mcmVx LCBpc19kZHIzOwo+IC0JdW5zaWduZWQgaW50IHNrbF9ib290X2NkY2xrOwo+ICsJdW5zaWduZWQg aW50IHNrbF92Y29fZnJlcTsKPiAgCXVuc2lnbmVkIGludCBjZGNsa19mcmVxLCBtYXhfY2RjbGtf ZnJlcSwgYXRvbWljX2NkY2xrX2ZyZXE7Cj4gIAl1bnNpZ25lZCBpbnQgbWF4X2RvdGNsa19mcmVx Owo+ICAJdW5zaWduZWQgaW50IHJhd2Nsa19mcmVxOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gaW5kZXggNjJkZTlmNC4uZjYyODY0NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gQEAgLTMwMDMsNyArMzAwMyw3IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJaW50IGNkY2xrX2ZyZXE7Cj4gIAo+ICAJCWNkY2xrX2ZyZXEg PSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZChkZXYpOwo+IC0JCWRl dl9wcml2LT5za2xfYm9vdF9jZGNsayA9IGNkY2xrX2ZyZXE7Cj4gKwkJZGV2X3ByaXYtPnNrbF92 Y29fZnJlcSA9IHNrbF9jZGNsa19nZXRfdmNvKGNkY2xrX2ZyZXEpOwo+ICAJCWlmIChza2xfc2Fu aXRpemVfY2RjbGsoZGV2X3ByaXYpKQo+ICAJCQlEUk1fREVCVUdfS01TKCJTYW5pdGl6ZWQgY2Rj bGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIpOwo+ICAJCWlmICghKEk5MTVfUkVBRChMQ1BMTDFf Q1RMKSAmIExDUExMX1BMTF9FTkFCTEUpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCA2MmQzNmE3Li4xMGNkZWI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC01ODExLDcgKzU4MTEsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNr bF9jZGNsa19kZWNpbWFsKHVuc2lnbmVkIGludCBmcmVxKQo+ICAJcmV0dXJuIChmcmVxIC0gMTAw MCkgLyA1MDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2NkY2xrX2dldF92 Y28odW5zaWduZWQgaW50IGZyZXEpCj4gK3Vuc2lnbmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1 bnNpZ25lZCBpbnQgZnJlcSkKPiAgewo+ICAJdW5zaWduZWQgaW50IGk7Cj4gIAo+IEBAIC01OTY5 LDE3ICs1OTY5LDIxIEBAIHZvaWQgc2tsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICB2b2lkIHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JdW5zaWduZWQgaW50IHJlcXVpcmVkX3ZjbzsK PiArCXVuc2lnbmVkIGludCBjZGNsazsKPiAgCj4gIAkvKiBEUExMMCBub3QgZW5hYmxlZCAoaGFw cGVucyBvbiBlYXJseSBCSU9TIHZlcnNpb25zKSAqLwo+ICAJaWYgKCEoSTkxNV9SRUFEKExDUExM MV9DVEwpICYgTENQTExfUExMX0VOQUJMRSkpIHsKPiAgCQkvKiBlbmFibGUgRFBMTDAgKi8KPiAt CQlyZXF1aXJlZF92Y28gPSBza2xfY2RjbGtfZ2V0X3ZjbyhkZXZfcHJpdi0+c2tsX2Jvb3RfY2Rj bGspOwo+IC0JCXNrbF9kcGxsMF9lbmFibGUoZGV2X3ByaXYsIHJlcXVpcmVkX3Zjbyk7Cj4gKwkJ aWYgKGRldl9wcml2LT5za2xfdmNvX2ZyZXEgIT0gODY0MCkKPiArCQkJZGV2X3ByaXYtPnNrbF92 Y29fZnJlcSA9IDgxMDA7Cj4gKwkJc2tsX2RwbGwwX2VuYWJsZShkZXZfcHJpdiwgZGV2X3ByaXYt PnNrbF92Y29fZnJlcSk7Cj4gKwkJY2RjbGsgPSAoKGRldl9wcml2LT5za2xfdmNvX2ZyZXEgPT0g ODEwMCkgPyAzMzc1MDAgOiAzMDg1NzApOwo+ICsJfSBlbHNlIHsKPiArCQljZGNsayA9IGRldl9w cml2LT5jZGNsa19mcmVxOwo+ICAJfQo+ICAKPiAtCS8qIHNldCBDRENMSyB0byB0aGUgZnJlcXVl bmN5IHRoZSBCSU9TIGNob3NlICovCj4gLQlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJp di0+c2tsX2Jvb3RfY2RjbGspOwo+ICsJLyogc2V0IENEQ0xLIHRvIHRoZSBsb3dlc3QgZnJlcXVl bmN5LCBNb2Rlc2V0IGZvbGxvd3MgKi8KPiArCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsIGNkY2xr KTsKPiAgCj4gIAkvKiBlbmFibGUgREJVRiBwb3dlciAqLwo+ICAJSTkxNV9XUklURShEQlVGX0NU TCwgSTkxNV9SRUFEKERCVUZfQ1RMKSB8IERCVUZfUE9XRVJfUkVRVUVTVCk7Cj4gQEAgLTU5OTUs NyArNTk5OSw3IEBAIGludCBza2xfc2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICB7Cj4gIAl1aW50MzJfdCBsY3BsbDEgPSBJOTE1X1JFQUQoTENQTEwx X0NUTCk7Cj4gIAl1aW50MzJfdCBjZGN0bCA9IEk5MTVfUkVBRChDRENMS19DVEwpOwo+IC0JaW50 IGZyZXEgPSBkZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGs7Cj4gKwlpbnQgZnJlcSA9IGRldl9wcml2 LT5jZGNsa19mcmVxOwo+ICAKPiAgCS8qCj4gIAkgKiBjaGVjayBpZiB0aGUgcHJlLW9zIGludGlh bGl6ZWQgdGhlIGRpc3BsYXkKPiBAQCAtNjAxOSwxMSArNjAyMyw3IEBAIGludCBza2xfc2FuaXRp emVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCS8qIEFsbCB3 ZWxsOyBub3RoaW5nIHRvIHNhbml0aXplICovCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICBzYW5pdGl6 ZToKPiAtCS8qCj4gLQkgKiBBcyBvZiBub3cgaW5pdGlhbGl6ZSB3aXRoIG1heCBjZGNsayB0aWxs Cj4gLQkgKiB3ZSBnZXQgZHluYW1pYyBjZGNsayBzdXBwb3J0Cj4gLQkgKiAqLwo+IC0JZGV2X3By aXYtPnNrbF9ib290X2NkY2xrID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxOwo+ICsKPiAgCXNr bF9pbml0X2NkY2xrKGRldl9wcml2KTsKPiAgCj4gIAkvKiB3ZSBkaWQgaGF2ZSB0byBzYW5pdGl6 ZSAqLwo+IEBAIC05OTYzLDYgKzk5NjMsNzEgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX21vZGVz ZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIAli cm9hZHdlbGxfc2V0X2NkY2xrKGRldiwgcmVxX2NkY2xrKTsKPiAgfQo+ICAKPiArc3RhdGljIGlu dCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiArewo+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRl bF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiArCWNvbnN0IGludCBtYXhfcGl4Y2xrID0gaWxr X21heF9waXhlbF9yYXRlKHN0YXRlKTsKPiArCWludCBjZGNsazsKPiArCj4gKwkvKgo+ICsJICog RklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUgcmF0aW8KPiArCSAqIG9uY2UgNjRi cHAgcGl4ZWwgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgo+ICsJICovCj4gKwo+ICsJaWYgKHRvX2lu dGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPmNkY2xrX3BsbF92Y28gPT0gODY0MCkgewo+ICsJCS8q IHZjbyA4NjQwICovCj4gKwkJaWYgKG1heF9waXhjbGsgPiA1NDAwMDApCj4gKwkJCWNkY2xrID0g NjE3MTQwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiA0MzIwMDApCj4gKwkJCWNkY2xrID0g NTQwMDAwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiAzMDg1NzApCj4gKwkJCWNkY2xrID0g NDMyMDAwOwo+ICsJCWVsc2UKPiArCQkJY2RjbGsgPSAzMDg1NzA7Cj4gKwl9IGVsc2Ugewo+ICsJ CS8qIFZDTyA4MTAwICovCj4gKwkJaWYgKG1heF9waXhjbGsgPiA1NDAwMDApCj4gKwkJCWNkY2xr ID0gNjc1MDAwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiA0NTAwMDApCj4gKwkJCWNkY2xr ID0gNTQwMDAwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiAzMzc1MDApCj4gKwkJCWNkY2xr ID0gNDUwMDAwOwo+ICsJCWVsc2UKPiArCQkJY2RjbGsgPSAzMzc1MDA7Cj4gKwl9Cj4gKwo+ICsJ LyoKPiArCSAqIEZJWE1FIG1vdmUgdGhlIGNkY2xrIGNhY2x1bGF0aW9uIHRvCj4gKwkgKiBjb21w dXRlX2NvbmZpZygpIHNvIHdlIGNhbiBmYWlsIGdyYWNlZ3VsbHkuCj4gKwkgKi8KPiArCWlmIChj ZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgewo+ICsJCURSTV9FUlJPUigicmVxdWVz dGVkIGNkY2xrICglZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+ICsJCQkgIGNkY2xr LCBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpOwo+ICsJCWNkY2xrID0gZGV2X3ByaXYtPm1heF9j ZGNsa19mcmVxOwo+ICsJfQo+ICsKPiArCWludGVsX3N0YXRlLT5jZGNsayA9IGludGVsX3N0YXRl LT5kZXZfY2RjbGsgPSBjZGNsazsKPiArCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykK PiArCQlpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrID0gMzM3NTAwOwoKVGhhdCdzIG5vdCBjb3JyZWN0 IGZvciB0aGUgdmNvPT04NjQwIGNhc2UuCgo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBza2xfbW9kZXNldF9jb21taXRfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9sZF9zdGF0 ZS0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiArCXVuc2lnbmVkIGludCByZXFfY2RjbGsgPSB0b19pbnRlbF9hdG9taWNfc3Rh dGUob2xkX3N0YXRlKS0+ZGV2X2NkY2xrOwoKVGhpcyBsb29rcyBjb3JyZWN0IG5vdy4KCj4gKwo+ ICsJLyoKPiArCSAqIEZJWE1FIGRpc2FibGUvZW5hYmxlIFBMTCBzaG91bGQgd3JhcCBzZXRfY2Rj bGsoKQo+ICsJICovCj4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCByZXFfY2RjbGspOwo+ICsK PiArCWRldl9wcml2LT5za2xfdmNvX2ZyZXEgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3N0 YXRlKS0+Y2RjbGtfcGxsX3ZjbzsKPiArfQo+ICsKPiAgc3RhdGljIGludCBoYXN3ZWxsX2NydGNf Y29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgICAgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gQEAgLTEzMzc5LDkgKzEzNDQ0 LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAJICogYWRqdXN0ZWRfbW9kZSBiaXRzIGluIHRoZSBjcnRjIGRpcmVj dGx5Lgo+ICAJICovCj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xr KSB7Cj4gKwkJaWYgKCFpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbykKPiArCQkJaW50ZWxfc3Rh dGUtPmNkY2xrX3BsbF92Y28gPSBkZXZfcHJpdi0+c2tsX3Zjb19mcmVxOwo+ICsKPiAgCQlyZXQg PSBkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsoc3RhdGUpOwo+ICsJCWlmIChy ZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICAKPiAtCQlpZiAoIXJldCAmJiBpbnRlbF9zdGF0 ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ICsJCWlmIChpbnRlbF9zdGF0 ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxIHx8Cj4gKwkJICAgIGludGVsX3N0 YXRlLT5jZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5za2xfdmNvX2ZyZXEpCj4gIAkJCXJldCA9 IGludGVsX21vZGVzZXRfYWxsX3BpcGVzKHN0YXRlKTsKPiAgCj4gIAkJaWYgKHJldCA8IDApCj4g QEAgLTEzNzUzLDcgKzEzODI0LDggQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2Fj eV9tb2Rlc2V0X3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsKPiAgCj4gIAkJaWYgKGRldl9wcml2 LT5kaXNwbGF5Lm1vZGVzZXRfY29tbWl0X2NkY2xrICYmCj4gLQkJICAgIGludGVsX3N0YXRlLT5k ZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEpCj4gKwkJICAgIChpbnRlbF9zdGF0ZS0+ ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxIHx8Cj4gKwkJICAgIGludGVsX3N0YXRl LT5jZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5za2xfdmNvX2ZyZXEpKQo+ICAJCQlkZXZfcHJp di0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayhzdGF0ZSk7CgphcyBkb2VzIHRoaXMuCgpX aXRoIHRoZSAibm8gYWN0aXZlIHBpcGVzIHdpdGggdmNvPT04NjQwIiBjYXNlIGZpeGVkIHRoaXMg aXMKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+CgpJIHN0aWxsIG5lZWQgdG8gc2VlIGlmIEkgY291bGQgcmVwcm9kdWNlIHRoZSBoYW5n IHNvbWVob3cgb24gbXkgZW5kLiBJCmdvdCBhbm90aGVyIFNLTCBub3csIGJ1dCB1bmZvcnR1bmF0 ZWx5IGl0J3MgYSBOVUMgc28gSSBjYW4ndCBhY3R1YWxseQp0ZXN0IHRoZSBlRFAgcGFydCBvbiBp dCwgYW5kIHRoZSBteSBlRFAgU0tMIG1hY2hpbmUgaXMgdG9vIHVuc3RhYmxlIHRvCmRvIGFueXRo aW5nIHdpdGggbXVsdGlwbGUgZGlzcGxheXMgYXR0YWNoZWQuIEkgZGlkIGV4Y2VyY2lzZSB0aGUg ZURQCnZjbyBzdHVmZiBvbiBpdCB0aG91Z2gsIGFuZCB3aXRoIG15IGV4dHJhIHBhdGNoZXMgb24g dG9wIGV2ZW4gdGVzdGVkCnRoZSB2Y28gY2hhbmdpbmcgYnkgcHJvZ2FtbWluZyB0aGUgd3Jvbmcg dmNvIG9yaWdpbmFsbHksIGFuZCB0aGVuCmNoZWNrZWQgdGhhdCBpdCBnb3QgY29ycmVjdGVkIG9u IHRoZSBmaXJzdCBtb2Rlc2V0LgoKCj4gIAl9Cj4gIAo+IEBAIC0xNTIzMSw4ICsxNTMwMywxMiBA QCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCQkJYnJveHRvbl9tb2Rlc2V0X2NvbW1pdF9jZGNsazsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQo+ICAJCQlicm94dG9uX21vZGVzZXRfY2FsY19jZGNsazsK PiArCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikpIHsKPiAr CQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayA9Cj4gKwkJCXNrbF9tb2Rl c2V0X2NvbW1pdF9jZGNsazsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2Rj bGsgPQo+ICsJCQlza2xfbW9kZXNldF9jYWxjX2NkY2xrOwo+ICAJfQo+IC0KPiAgCXN3aXRjaCAo SU5URUxfSU5GTyhkZXYpLT5nZW4pIHsKPiAgCWNhc2UgMjoKPiAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5xdWV1ZV9mbGlwID0gaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwOwo+IEBAIC0xNTk2OCw3ICsxNjA0 NCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkgewo+ICAJ CQlkZXZfcHJpdi0+YWN0aXZlX2NydGNzIHw9IDEgPDwgY3J0Yy0+cGlwZTsKPiAgCj4gLQkJCWlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChJU19CUk9BRFdFTEwoZGV2X3By aXYpIHx8IElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8Cj4gKwkJCSAgICBJU19LQUJZTEFLRShkZXZf cHJpdikpIHsKPiAgCQkJCXBpeGNsayA9IGlsa19waXBlX3BpeGVsX3JhdGUoY3J0Y19zdGF0ZSk7 Cj4gIAo+ICAJCQkJLyogcGl4ZWwgcmF0ZSBtdXN0bid0IGV4Y2VlZCA5NSUgb2YgY2RjbGsgd2l0 aCBJUFMgb24gQkRXICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggMzUxYThmMy4u NDI5OGY4OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0xMjI4LDYgKzEyMjgs NyBAQCBzdGF0aWMgdm9pZAo+ICBza2xfZWRwX3NldF9wbGxfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJdTMyIGN0cmwxOwo+ICsJdTMyIHZjbyA9 IDgxMDA7Cj4gIAo+ICAJbWVtc2V0KCZwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZSwgMCwKPiAg CSAgICAgICBzaXplb2YocGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUpKTsKPiBAQCAtMTI2MCwx MyArMTI2MSwxNyBAQCBza2xfZWRwX3NldF9wbGxfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZykKPiAgCWNhc2UgMTA4MDAwOgo+ICAJCWN0cmwxIHw9IERQTExfQ1RS TDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzEwODAsCj4gIAkJCQkJICAgICAgU0tM X0RQTEwwKTsKPiArCQl2Y28gPSA4NjQwOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSAyMTYwMDA6Cj4g IAkJY3RybDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMjE2 MCwKPiAgCQkJCQkgICAgICBTS0xfRFBMTDApOwo+ICsJCXZjbyA9IDg2NDA7Cj4gIAkJYnJlYWs7 Cj4gIAo+ICAJfQo+ICsKPiArCXRvX2ludGVsX2F0b21pY19zdGF0ZShwaXBlX2NvbmZpZy0+YmFz ZS5zdGF0ZSktPmNkY2xrX3BsbF92Y28gPSB2Y287Cj4gIAlwaXBlX2NvbmZpZy0+ZHBsbF9od19z dGF0ZS5jdHJsMSA9IGN0cmwxOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g aW5kZXggN2IyZDY2ZC4uMTc3MjFiMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTMwMSw2ICszMDEsMTAgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gIAkgKiBk b24ndCBib3RoZXIgY2FsY3VsYXRpbmcgaW50ZXJtZWRpYXRlIHdhdGVybWFya3MuCj4gIAkgKi8K PiAgCWJvb2wgc2tpcF9pbnRlcm1lZGlhdGVfd207Cj4gKwo+ICsJLyogU0tML0tCTCBPbmx5ICov Cj4gKwl1bnNpZ25lZCBpbnQgY2RjbGtfcGxsX3ZjbzsKPiArCj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgewo+IEBAIC0xMjQ3LDYgKzEyNTEsNyBAQCB2b2lkIGJ4dF9kaXNh YmxlX2RjOShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIHNrbF9p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBza2xf c2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9p ZCBza2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g K3Vuc2lnbmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSk7Cj4gIHZv aWQgc2tsX2VuYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg dm9pZCBza2xfZGlzYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAgdm9pZCBpbnRlbF9kcF9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IC0tIAo+ IDEuNy45LjUKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=