From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Herbert Subject: Re: [PATCH V4] drm/i915/skl: SKL CDCLK change on modeset tracking VCO Date: Thu, 11 Feb 2016 17:11:52 -0800 Message-ID: <56BD3158.3070407@intel.com> References: <1449620105-32754-1-git-send-email-clinton.a.taylor@intel.com> <1455232928-2806-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 3390E6E032 for ; Thu, 11 Feb 2016 17:11:53 -0800 (PST) In-Reply-To: <1455232928-2806-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, Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org W0knbSBjaGVhdGluZyBhbmQgZG9pbmcgdGhpcyBjb2RlIHJldmlldyB3aXRoIHRoZSBhdXRob3Ig d2F0Y2hpbmcgb3ZlciBteSBzaG91bGRlcl0KCk9uIDExLzAyLzE2IDE1OjIyLCBjbGludG9uLmEu dGF5bG9yQGludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBDbGludCBUYXlsb3IgPGNsaW50b24uYS50 YXlsb3JAaW50ZWwuY29tPgo+IAo+IFRyYWNrIFZDTyBmcmVxdWVuY3kgb2YgU0tMIGluc3RlYWQg b2YgdGhlIGJvb3QgQ0RDTEsgYW5kIGFsbG93IG1vZGVzZXQKPiB0byBzZXQgY2RjbGsgYmFzZWQg b24gdGhlIG1heCByZXF1aXJlZCBwaXhlbCBjbG9jayBiYXNlZCBvbiBWQ08KPiBzZWxlY3RlZC4K Ck5pdDogdGhlIG1haW4gcG9pbnQgc2hvdWxkbid0IGNvbWUgc2Vjb25kLgoKPiBUaGUgdmNvIHNo b3VsZCBiZSB0cmFja2VkIGF0IHRoZSBhdG9taWMgbGV2ZWwgYW5kIGFsbCBDUlRDcyB1cGRhdGVk IGlmCj4gdGhlIHJlcXVpcmVkIHZjbyBpcyBjaGFuZ2VkLiBBdCB0aGlzIHRpbWUgdGhlIGVEUCBw bGwgaXMgY29uZmlndXJlZAo+IGluc2lkZSB0aGUgZW5jb2RlciB3aGljaCBoYXMgbm8gdmlzaWJp bGl0eSBpbnRvIHRoZSBhdG9taWMgc3RhdGUuCgpzaG91bGQgYmUgLT4gaXMKCgo+IFdoZW4gZURQ IHYxLjQgcGFuZWwgdGhhdCByZXF1aXJlIHRoZSA4NjQwIHZjbyBhcmUgYXZhaWxhYmxlIHRoaXMg bWF5IG5lZWQKPiB0byBiZSBpbnZlc3RpZ2F0ZWQuCgpKdXN0IHNheSB0aGF0IDg2NDAgY2FuJ3Qg YmUgdGVzdGVkIHlldC4KCj4gVjE6IGluaXRpYWwgdmVyc2lvbgo+IFYyOiBhZGQgdmNvIHRyYWNr aW5nIGluIGludGVsX2RwX2NvbXB1dGVfY29uZmlnKCksIHJlbmFtZQo+IHNrbF9ib290X2NkY2xr Lgo+IFYzOiByZWJhc2UsIFYyIGZlZWRiYWNrIG5vdCBwb3NzaWJsZSBhcyBlbmNvZGVycyBhcmUg bm90IGF3YXJlIG9mCj4gYXRvbWljLgo+IFY0OiB0cmFjayB0YXJnZXQgdmNvIGlzIGF0b21pYyBz dGF0ZS4gbW9kZXNldCBhbGwgQ1JUQ3MgaWYgdmNvIGNoYW5nZXMKPiAKPiBTaWduZWQtb2ZmLWJ5 OiBDbGludCBUYXlsb3IgPGNsaW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+IENjOiBWaWxsZSA9 P2lzby04ODU5LTE/UT9TeXJqPUU0bD1FND89IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAgMiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgfCAgICAyICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAgOTcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAg ICAgfCAgIDEwICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwg ICAgNCArKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDgyMTY2NjUuLmY2NWRkMWEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTgyMiw3ICsxODIyLDcgQEAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJaW50IG51bV9mZW5jZV9yZWdzOyAvKiA4IG9uIHBy ZS05NjUsIDE2IG90aGVyd2lzZSAqLwo+ICAKPiAgCXVuc2lnbmVkIGludCBmc2JfZnJlcSwgbWVt X2ZyZXEsIGlzX2RkcjM7Cj4gLQl1bnNpZ25lZCBpbnQgc2tsX2Jvb3RfY2RjbGs7Cj4gKwl1bnNp Z25lZCBpbnQgc2tsX3Zjb19mcmVxOwo+ICAJdW5zaWduZWQgaW50IGNkY2xrX2ZyZXEsIG1heF9j ZGNsa19mcmVxLCBhdG9taWNfY2RjbGtfZnJlcTsKPiAgCXVuc2lnbmVkIGludCBtYXhfZG90Y2xr X2ZyZXE7Cj4gIAl1bnNpZ25lZCBpbnQgaHBsbF9mcmVxOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gaW5kZXggNmQ1YjA5Zi4uMjg1YWRhYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gQEAgLTI5NTgsNyArMjk1OCw3IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaW50IGNkY2xrX2ZyZXE7Cj4gIAo+ICAJCWNkY2xrX2Zy ZXEgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZChkZXYpOwo+IC0J CWRldl9wcml2LT5za2xfYm9vdF9jZGNsayA9IGNkY2xrX2ZyZXE7Cj4gKwkJZGV2X3ByaXYtPnNr bF92Y29fZnJlcSA9IHNrbF9jZGNsa19nZXRfdmNvKGNkY2xrX2ZyZXEpOwoKLSBza2xfY2RjbGtf Z2V0X3ZjbygpICAgICAgYW5kIHNrbF9jZGNsa19mcmVxdWVuY2llc1tdIHNob3VsZCBwcm9iYWJs eSBiZSByZW5hbWVkIHRvOgorIHNrbF9nZXRfYmlvc19jZGNsa192Y28oKSBhbmQgc2tsX2Jpb3Nf Y2RjbGtfZnJlcXVlbmNpZXNbXQoKdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIChkaWZmZXJl bnQpIG1hcHBpbmcgdXNlZCBpbiB0aGUgbmV3IHNrbF9tb2Rlc2V0X2NhbGNfY2RjbGsoKQpmdW5j dGlvbiBiZWxvdy4KCgo+ICAJCWlmIChza2xfc2FuaXRpemVfY2RjbGsoZGV2X3ByaXYpKQo+ICAJ CQlEUk1fREVCVUdfS01TKCJTYW5pdGl6ZWQgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIp Owo+ICAJCWlmICghKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9FTkFCTEUpKQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA5ZTIyNzNiLi5lZjRhYzM0 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC01NjYzLDcgKzU2 NjMsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNrbF9jZGNsa19kZWNpbWFsKHVuc2lnbmVkIGlu dCBmcmVxKQo+ICAJcmV0dXJuIChmcmVxIC0gMTAwMCkgLyA1MDA7Cj4gIH0KPiAgCj4gLXN0YXRp YyB1bnNpZ25lZCBpbnQgc2tsX2NkY2xrX2dldF92Y28odW5zaWduZWQgaW50IGZyZXEpCj4gK3Vu c2lnbmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSkKPiAgewo+ICAJ dW5zaWduZWQgaW50IGk7Cj4gIAo+IEBAIC01ODIxLDE3ICs1ODIxLDE3IEBAIHZvaWQgc2tsX3Vu aW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICB2b2lk IHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ IC0JdW5zaWduZWQgaW50IHJlcXVpcmVkX3ZjbzsKPiAtCj4gIAkvKiBEUExMMCBub3QgZW5hYmxl ZCAoaGFwcGVucyBvbiBlYXJseSBCSU9TIHZlcnNpb25zKSAqLwo+ICAJaWYgKCEoSTkxNV9SRUFE KExDUExMMV9DVEwpICYgTENQTExfUExMX0VOQUJMRSkpIHsKPiAgCQkvKiBlbmFibGUgRFBMTDAg Ki8KPiAtCQlyZXF1aXJlZF92Y28gPSBza2xfY2RjbGtfZ2V0X3ZjbyhkZXZfcHJpdi0+c2tsX2Jv b3RfY2RjbGspOwo+IC0JCXNrbF9kcGxsMF9lbmFibGUoZGV2X3ByaXYsIHJlcXVpcmVkX3Zjbyk7 Cj4gKwkJaWYgKGRldl9wcml2LT5za2xfdmNvX2ZyZXEgIT0gODY0MCkgewo+ICsJCQlkZXZfcHJp di0+c2tsX3Zjb19mcmVxID0gODEwMDsKPiArCQl9Cj4gKwkJc2tsX2RwbGwwX2VuYWJsZShkZXZf cHJpdiwgZGV2X3ByaXYtPnNrbF92Y29fZnJlcSk7Cj4gIAl9Cj4gIAo+ICAJLyogc2V0IENEQ0xL IHRvIHRoZSBmcmVxdWVuY3kgdGhlIEJJT1MgY2hvc2UgKi8KClRoaXMgY29tbWVudCBuZWVkcyB0 byBiZSB1cGRhdGVkLiBNYXliZSBzb21ldGhpbmcgbGlrZToKImluaXRpYWxpemUgdG8gdGhlIGxv d2VzdC9tb3N0IGVjb25vbWljYWwgZnJlcSBmb3Igbm93OyB3aWxsIG1vZGVzZXQgdmVyeSBzb29u IGFueXdheSIuCgo+IC0Jc2tsX3NldF9jZGNsayhkZXZfcHJpdiwgZGV2X3ByaXYtPnNrbF9ib290 X2NkY2xrKTsKPiArCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsIChkZXZfcHJpdi0+c2tsX3Zjb19m cmVxID09IDgxMDApID8gMzM3NTAwIDogMzA4NTcwICk7Cj4gIAo+ICAJLyogZW5hYmxlIERCVUYg cG93ZXIgKi8KPiAgCUk5MTVfV1JJVEUoREJVRl9DVEwsIEk5MTVfUkVBRChEQlVGX0NUTCkgfCBE QlVGX1BPV0VSX1JFUVVFU1QpOwo+IEBAIC01ODQ3LDcgKzU4NDcsNyBAQCBpbnQgc2tsX3Nhbml0 aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdWlu dDMyX3QgbGNwbGwxID0gSTkxNV9SRUFEKExDUExMMV9DVEwpOwo+ICAJdWludDMyX3QgY2RjdGwg PSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKTsKPiAtCWludCBmcmVxID0gZGV2X3ByaXYtPnNrbF9ib290 X2NkY2xrOwo+ICsJaW50IGZyZXEgPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKPiAgCj4gIAkvKgo+ ICAJICogY2hlY2sgaWYgdGhlIHByZS1vcyBpbnRpYWxpemVkIHRoZSBkaXNwbGF5Cj4gQEAgLTU4 NzEsMTEgKzU4NzEsNyBAQCBpbnQgc2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCQkvKiBBbGwgd2VsbDsgbm90aGluZyB0byBzYW5pdGl6ZSAq Lwo+ICAJCXJldHVybiBmYWxzZTsKPiAgc2FuaXRpemU6Cj4gLQkvKgo+IC0JICogQXMgb2Ygbm93 IGluaXRpYWxpemUgd2l0aCBtYXggY2RjbGsgdGlsbAo+IC0JICogd2UgZ2V0IGR5bmFtaWMgY2Rj bGsgc3VwcG9ydAo+IC0JICogKi8KPiAtCWRldl9wcml2LT5za2xfYm9vdF9jZGNsayA9IGRldl9w cml2LT5tYXhfY2RjbGtfZnJlcTsKPiArCQo+ICAJc2tsX2luaXRfY2RjbGsoZGV2X3ByaXYpOwo+ ICAKPiAgCS8qIHdlIGRpZCBoYXZlIHRvIHNhbml0aXplICovCj4gQEAgLTk4NDUsNiArOTg0MSw2 OCBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfbW9kZXNldF9jb21taXRfY2RjbGsoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgCWJyb2Fkd2VsbF9zZXRfY2RjbGsoZGV2LCBy ZXFfY2RjbGspOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2RjbGso c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ICsJaW50IG1heF9waXhj bGsgPSBpbGtfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOwoKY29uc3QgPwoKPiArCWludCBjZGNsazsK PiArCQo+ICsJLyoKPiArCSogRklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUgcmF0 aW8KPiArCSogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCj4gKwkqLwo+ ICsKPiArCWlmICh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT52Y29fdGFyZ2V0ID09IDg2 NDApIHsKPiArCQkvKiB2Y28gODY0MCAqLwo+ICsJCWlmIChtYXhfcGl4Y2xrID4gNTQwMDAwKQo+ ICsJCQljZGNsayA9IDYxNzE0MDsKPiArCQllbHNlIGlmIChtYXhfcGl4Y2xrID4gNDMyMDAwKQo+ ICsJCQljZGNsayA9IDU0MDAwMDsKPiArCQllbHNlIGlmIChtYXhfcGl4Y2xrID4gMzA4NTcwKQo+ ICsJCQljZGNsayA9IDQzMjAwMDsKPiArCQllbHNlCj4gKwkJCWNkY2xrID0gMzA4NTcwOwo+ICsJ fQo+ICsJZWxzZSB7Cj4gKwkJLyogVkNPIDgxMDAgKi8KPiArCQlpZiAobWF4X3BpeGNsayA+IDU0 MDAwMCkKPiArCQkJY2RjbGsgPSA2NzUwMDA7Cj4gKwkJZWxzZSBpZiAobWF4X3BpeGNsayA+IDQ1 MDAwMCkKPiArCQkJY2RjbGsgPSA1NDAwMDA7Cj4gKwkJZWxzZSBpZiAobWF4X3BpeGNsayA+IDMz NzUwMCkKPiArCQkJY2RjbGsgPSA0NTAwMDA7Cj4gKwkJZWxzZQo+ICsJCQljZGNsayA9IDMzNzUw MDsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogRklYTUUgbW92ZSB0aGUgY2RjbGsgY2FjbHVsYXRp b24gdG8KPiArCSAqIGNvbXB1dGVfY29uZmlnKCkgc28gd2UgY2FuIGZhaWwgZ3JhY2VndWxseS4K PiArCSAqLwoKVGhpcyBjb3BpZWQgdHlwb3Mgd2lsbCBoZWxwIGZ1dHVyZSBncmVwIGFuZCBzZWFy Y2gvcmVwbGFjZS4KCj4gKwlpZiAoY2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsK PiArCQlEUk1fRVJST1IoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAoJWQg a0h6KVxuIiwKPiArCQkJICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKPiArCQlj ZGNsayA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcTsKPiArCX0KPiArCj4gKwl0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsayA9IGNkY2xrOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBza2xfbW9kZXNldF9jb21taXRfY2RjbGsoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG9sZF9zdGF0ZS0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXVuc2lnbmVkIGludCByZXFfY2RjbGsgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUob2xkX3N0YXRlKS0+Y2RjbGs7Cj4gKwo+ICsJc2tsX3NldF9jZGNsayhkZXZf cHJpdiwgcmVxX2NkY2xrKTsKPiArCj4gKwlpZiAodG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9z dGF0ZSktPnZjb190YXJnZXQpIHsKPiArCQlkZXZfcHJpdi0+c2tsX3Zjb19mcmVxID0gdG9faW50 ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSktPnZjb190YXJnZXQ7Cj4gKwl9Cj4gK30KPiArCj4g IHN0YXRpYyBpbnQgaGFzd2VsbF9jcnRjX2NvbXB1dGVfY2xvY2soc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiAgewo+IEBAIC0xMzIxOSwxMSArMTMyNzcsMTMgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0 X2FsbF9waXBlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICBzdGF0aWMg aW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gIAlzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShz dGF0ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdGF0ZS0+ZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCWludCByZXQgPSAwLCBpOwo+ICsJdW5zaWduZWQg aW50IHRhcmdldF92Y287Cj4gIAo+ICAJaWYgKCFjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3Rz KHN0YXRlKSkgewo+ICAJCURSTV9ERUJVR19LTVMoInJlamVjdGluZyBjb25mbGljdGluZyBkaWdp dGFsIHBvcnQgY29uZmlndXJhdGlvblxuIik7Cj4gQEAgLTEzMjQ5LDggKzEzMzA5LDE0IEBAIHN0 YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJICovCj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xr KSB7Cj4gIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrKHN0YXRl KTsKCklmIHlvdSBjaGFuZ2UgdGhpcyB0bzoKCiAgaWYgKCAoIHJldCA9IGRldl9wcml2LT5kaXNw bGF5Lm1vZGVzZXRfY2FsY19jZGNsayhzdGF0ZSkgKSA8IDAgKQogICAgICAgIHJldHVybiByZXQ7 CgouLi4gdGhlbiB5b3UgY2FuIHNpbXBsaWZ5IHRoZSBib29sZWFuIGV4cHJlc3Npb25zIGJlbG93 CgoKPiArCQl0YXJnZXRfdmNvID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+dmNvX3Rh cmdldDsKPiAtCQlpZiAoIXJldCAmJiBpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2 LT5jZGNsa19mcmVxKQo+ICsJCWlmIChJU19TS1lMQUtFKGRldikgfHwgKElTX0tBQllMQUtFKGRl dikpKSB7CgpFeHRyYSBwYXJlbnMKCj4gKwkJCWlmICgoKHRhcmdldF92Y28pICYmIChkZXZfcHJp di0+c2tsX3Zjb19mcmVxICE9IHRhcmdldF92Y28pKSB8fAo+ICsJCQkgICAoIXJldCAmJiBpbnRl bF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxKSkgewo+ICsJCQkJcmV0 ID0gaW50ZWxfbW9kZXNldF9hbGxfcGlwZXMoc3RhdGUpOwo+ICsJCQl9Cj4gKwkJfSBlbHNlIGlm ICghcmV0ICYmIGludGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEp Cj4gIAkJCXJldCA9IGludGVsX21vZGVzZXRfYWxsX3BpcGVzKHN0YXRlKTsKClN1Z2dlc3Rpb24g KGFzc3VtaW5nIHJldCBjaGFuZ2UgYWJvdmUpOgoKCWNvbnN0IGJvb2wgY2RjbGtfY2hhbmdlID0g aW50ZWxfc3RhdGUtPmRldl9jZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKCgljb25zdCBi b29sIHZjb19jaGFuZ2UgPSAoIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpICkg JiYKCQkodGFyZ2V0X3ZjbykgJiYgKGRldl9wcml2LT5za2xfdmNvX2ZyZXEgIT0gdGFyZ2V0X3Zj bykpIDsKCglpZiAoIGNkY2xrX2NoYW5nZSB8fCB2Y29fY2hhbmdlICkKCQlyZXQgPSBpbnRlbF9t b2Rlc2V0X2FsbF9waXBlcyhzdGF0ZSk7CgoKCj4gIAkJaWYgKHJldCA8IDApCj4gQEAgLTE1MDAy LDYgKzE1MDY4LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAJCQlicm94dG9uX21vZGVzZXRfY29tbWl0X2NkY2xrOwo+ICAJCWRl dl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4gIAkJCWJyb3h0b25fbW9kZXNl dF9jYWxjX2NkY2xrOwo+ICsJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxB S0UoZGV2KSkgewo+ICsJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY29tbWl0X2NkY2xrID0K PiArCQkJc2tsX21vZGVzZXRfY29tbWl0X2NkY2xrOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5Lm1v ZGVzZXRfY2FsY19jZGNsayA9Cj4gKwkJCXNrbF9tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gIAl9Cj4g IAo+ICAJc3dpdGNoIChJTlRFTF9JTkZPKGRldiktPmdlbikgewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+IGluZGV4IGEwNzNmMDQuLmZiYzM3ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiBAQCAtMTI0Miw5ICsxMjQyLDEwIEBAIGludGVsX2RwX2Nvbm5lY3Rvcl91bnJlZ2lzdGVy KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQKPiAtc2tsX2VkcF9zZXRfcGxsX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpCj4gK3NrbF9lZHBfc2V0X3BsbF9jb25maWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gIHsKPiAgCXUzMiBjdHJsMTsKPiArCXUzMiB2Y28gPSA4MTAwOwo+ICAKPiAgCW1lbXNldCgm cGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUsIDAsCj4gIAkgICAgICAgc2l6ZW9mKHBpcGVfY29u ZmlnLT5kcGxsX2h3X3N0YXRlKSk7Cj4gQEAgLTEyNzcsMTMgKzEyNzgsMTYgQEAgc2tsX2VkcF9z ZXRfcGxsX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAlj YXNlIDEwODAwMDoKPiAgCQljdHJsMSB8PSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwx X0xJTktfUkFURV8xMDgwLAo+ICAJCQkJCSAgICAgIFNLTF9EUExMMCk7Cj4gKwkJdmNvID0gODY0 MDsKPiAgCQlicmVhazsKPiAgCWNhc2UgMjE2MDAwOgo+ICAJCWN0cmwxIHw9IERQTExfQ1RSTDFf TElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzIxNjAsCj4gIAkJCQkJICAgICAgU0tMX0RQ TEwwKTsKPiArCQl2Y28gPSA4NjQwOwo+ICAJCWJyZWFrOwo+IC0KPiAgCX0KPiArCj4gKwl0b19p bnRlbF9hdG9taWNfc3RhdGUocGlwZV9jb25maWctPmJhc2Uuc3RhdGUpLT52Y29fdGFyZ2V0ID0g dmNvOwo+ICAJcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuY3RybDEgPSBjdHJsMTsKPiAgfQo+ ICAKPiBAQCAtMTY2NCw3ICsxNjY4LDcgQEAgZm91bmQ6Cj4gIAl9Cj4gIAo+ICAJaWYgKChJU19T S1lMQUtFKGRldikgIHx8IElTX0tBQllMQUtFKGRldikpICYmIGlzX2VkcChpbnRlbF9kcCkpCj4g LQkJc2tsX2VkcF9zZXRfcGxsX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4gKwkJc2tsX2VkcF9zZXRf cGxsX2NvbmZpZyhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwoKQ2xpbnQgc2F5czogSSB3aWxsIHJl bW92ZSB0aGUgZGV2X3ByaXYgcGFyYW0uCgoKPiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkK PiAgCQkvKiBoYW5kbGVkIGluIGRkaSAqLzsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8 fCBJU19CUk9BRFdFTEwoZGV2KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDg3 ODE3MmEuLjAwNWUwMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNjAs NiArMjYwLDkgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gIAo+ICAJc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsX2NvbmZpZyBzaGFyZWRfZHBsbFtJOTE1X05VTV9QTExTXTsKPiAgCXN0 cnVjdCBpbnRlbF93bV9jb25maWcgd21fY29uZmlnOwo+ICsKPiArCS8qIFNLTC9LQkwgT25seSAq Lwo+ICsJdW5zaWduZWQgaW50IHZjb190YXJnZXQ7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgewo+IEBAIC0xMTkxLDYgKzExOTQsNyBAQCB2b2lkIGJ4dF9kaXNhYmxlX2Rj OShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIHNrbF9pbml0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBza2xfc2FuaXRp emVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBza2xf dW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3Vuc2ln bmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSk7Cj4gIHZvaWQgc2ts X2VuYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBz a2xfZGlzYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9p ZCBpbnRlbF9kcF9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==