From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v6 7/8] drm/i915: BDW clock change support Date: Mon, 29 Jun 2015 14:46:41 +0300 Message-ID: <20150629114641.GH5176@intel.com> References: <1433335514-4156-1-git-send-email-mika.kahola@intel.com> <1433335514-4156-8-git-send-email-mika.kahola@intel.com> <87bngf4xk3.fsf@intel.com> <878ubj4x9f.fsf@intel.com> <871tguzri1.fsf@intel.com> <1435577811.2888.8.camel@sorvi> <87ioa6yc4e.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 61AB36E87E for ; Mon, 29 Jun 2015 04:46:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <87ioa6yc4e.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMjksIDIwMTUgYXQgMDI6NDI6MjVQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gTW9uLCAyOSBKdW4gMjAxNSwgTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVs LmNvbT4gd3JvdGU6Cj4gPiBPbiBNb24sIDIwMTUtMDYtMjkgYXQgMTQ6MjQgKzAzMDAsIEphbmkg TmlrdWxhIHdyb3RlOgo+ID4+IE9uIFR1ZSwgMTYgSnVuIDIwMTUsIEphbmkgTmlrdWxhIDxqYW5p Lm5pa3VsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4+ID4gT24gVHVlLCAxNiBKdW4gMjAx NSwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPj4g Pj4gT24gV2VkLCAwMyBKdW4gMjAxNSwgTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNv bT4gd3JvdGU6Cj4gPj4gPj4+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gPj4gPj4+Cj4gPj4gPj4+IEFkZCBzdXBwb3J0IGZvciBjaGFuZ2lu ZyBjZGNsayBmcmVxdWVuY3kgZHVyaW5nIHJ1bnRpbWUgb24gQkRXLiBUaGUKPiA+PiA+Pj4gcHJv Y2VkdXJlIGlzIHF1aXRlIGEgYml0IGRpZmZlcmVudCBvbiBCRFcgZnJvbSB0aGUgb25lIG9uIEhT Vywgc28KPiA+PiA+Pj4gYWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24gZm9yIGl0Lgo+ID4+ID4+Pgo+ ID4+ID4+PiBBbHNvIHdpdGggSVBTIGVuYWJsZWQgdGhlIGFjdHVhbCBwaXhlbCByYXRlIG11c3Ru J3QgZXhjZWVkIDk1JSBvZiBjZGNsaywKPiA+PiA+Pj4gc28gdGFrZSB0aGF0IGludG8gYWNjb3Vu dCB3aGVuIGNvbXB1dGluZyB0aGUgbWF4IHBpeGVsIHJhdGUuCj4gPj4gPj4+Cj4gPj4gPj4+IHYy OiBHcmFiIHJwcy5od19sb2NrIGFyb3VuZCBzYW5keWJyaWRnZV9wY29kZV93cml0ZSgpCj4gPj4g Pj4+IHYzOiBSZWJhc2UgZHVlIHRvIHBvd2VyIHdlbGwgdnMuIC5nbG9iYWxfcmVzb3VyY2VzKCkg cmVvcmRlcmluZwo+ID4+ID4+PiB2NDogUmViYXNlZCB0byB0aGUgbGF0ZXN0Cj4gPj4gPj4+IHY1 OiBSZWJhc2VkIHRvIHRoZSBsYXRlc3QKPiA+PiA+Pj4gdjY6IFBhdGNoIG9yZGVyIHNodWZmbGUg c28gdGhhdCBCcm9hZHdlbGwgQ0QgY2xvY2sgY2hhbmdlIGlzCj4gPj4gPj4+ICAgICBhcHBsaWVk IGJlZm9yZSB0aGUgcGF0Y2ggZm9yIEhhc3dlbGwgQ0QgY2xvY2sgY2hhbmdlCj4gPj4gPj4+IHY3 OiBGaXggZm9yIHBhdGNoIHN0eWxlIHByb2JsZW1zCj4gPj4gPj4+Cj4gPj4gPj4+IFNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g Pj4gPj4+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+ Cj4gPj4gPj4KPiA+PiA+PiBUaGlzIHBhdGNoIGhhcmQgaGFuZ3MgbXkgQkRXIE5VQyBhdCBib290 IHdoZW4gYm90aCBEUCBhbmQgSERNSSBhcmUKPiA+PiA+PiBjb25uZWN0ZWQuIEVpdGhlciBEUCBv ciBIRE1JIGFsb25lIGFyZSBnb29kLCBzYW1lIHdpdGggaG90cGx1Z2dpbmcgdGhlCj4gPj4gPj4g b3RoZXIgYWZ0ZXJ3YXJkcy4gQm9vdGluZyB0byBncnViIHdpdGggYm90aCBjb25uZWN0ZWQsIGFu ZCB1bnBsdWdnaW5nCj4gPj4gPj4gSERNSSBiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsIGFsc28g cmVwcm9kdWNlcyB0aGUgaXNzdWUuCj4gPj4gPj4KPiA+PiA+PiBJdCBsb29rcyBsaWtlIHRoZSBw cm9ibGVtIGJvaWxzIGRvd24gdG8gdGhlIEJJT1Mgc2V0dGluZyB1cCBhIHNtYWxsZXIKPiA+PiA+ PiByZXNvbHV0aW9uIG9uIHRoZSBEUCBkaXNwbGF5IHdoZW4gYm90aCBhcmUgY29ubmVjdGVkLCBh bmQgdGhpcyBwYXRjaAo+ID4+ID4+IGZhaWxzIHRvIGNvcGUgd2l0aCB0aGF0IG9uIGk5MTUgbG9h ZC4KPiA+PiA+Cj4gPj4gPiBCeSAidGhpcyBwYXRjaCIgSSBvYnZpb3VzbHkgcmVmZXIgdG8KPiA+ PiA+Cj4gPj4gPiBjb21taXQgYjQzMmU1Y2ZkNWU5MjEyN2FkMmRkODNiZmMzMDgzZjFkYmNlNDNm Ygo+ID4+ID4gQXV0aG9yOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+ID4+ID4gRGF0ZTogICBXZWQgSnVuIDMgMTU6NDU6MTMgMjAxNSArMDMwMAo+ID4+ ID4KPiA+PiA+ICAgICBkcm0vaTkxNTogQkRXIGNsb2NrIGNoYW5nZSBzdXBwb3J0Cj4gPj4gPgo+ ID4+ID4gYW5kIGV2ZXJ5dGhpbmcgd29ya3MgZm9yIHRoZSBjb21taXQgYmVmb3JlIHRoYXQuCj4g Pj4gCj4gPj4gQW55b25lIHdvcmtpbmcgb24gdGhpcywgb3Igc2hvdWxkIHdlIHJldmVydD8KPiA+ PiAKPiA+PiBCUiwKPiA+PiBKYW5pLgo+ID4+IAo+ID4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0 IFZpbGxlIGhhcyBhbiBpZGVhIG9yIGhvdyB0byBmaXggdGhpcy4KPiAKPiBWaWxsZSwgd2hlbiBk byB5b3UgdGhpbmsgd2UgY2FuIGNvbnZlcnQgdGhlIGlkZWEgaW50byBhIHBhdGNoPyBTaG91bGQg d2UKPiByZXZlcnQgaW4gdGhlIG1lYW4gdGltZT8KCkkgd2FzIHRoaW5raW5nIGl0IG1heSBoYXZl IGJlZW4gYXRvbWljIG1ha2luZyBhIG1lc3Mgb2YgdGhpbmdzIGFuZAplbmFibGluZyBwbGFuZXMg d2hpbGUgdGhlIHBpcGUgd2FzIG9mZi4gQnV0IEkgbWF5IGJlIHRvdGFsbHkgb2ZmIGhlcmUKc2lu Y2UgdGhlIGN1cnJlbnQgYXRvbWljIGNvZGUgZG9lc24ndCBhZ3JlZSB3aXRoIG15IGJyYWluIGF0 IGFsbC4KClNvIG5vLCBJIGhhdmUgbm8gcGF0Y2ggdG8gZml4IGl0LiBTb21lb25lIG5lZWRzIHRv IGZpcnN0IGNoZWNrIHdoZXJlCmV4YWN0bHkgdGhlIGhhbmcgaGFwcGVucy4KCj4gCj4gQlIsCj4g SmFuaS4KPiAKPiAKPiAKPiA+Cj4gPiBDaGVlcnMsCj4gPiBNaWthCj4gPgo+ID4+IAo+ID4+ID4K PiA+PiA+IEJSLAo+ID4+ID4gSmFuaS4KPiA+PiA+Cj4gPj4gPgo+ID4+ID4KPiA+PiA+Cj4gPj4g Pgo+ID4+ID4+Cj4gPj4gPj4gQlIsCj4gPj4gPj4gSmFuaS4KPiA+PiA+Pgo+ID4+ID4+Cj4gPj4g Pj4KPiA+PiA+Pj4KPiA+PiA+Pj4gQXV0aG9yOiAgICBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4+ID4+PiAtLS0KPiA+PiA+Pj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgMiArCj4gPj4gPj4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KPiA+PiA+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+ID4+ID4+Pgo+ID4+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ PiA+Pj4gaW5kZXggNzIxMzIyNC4uMGY3MmMwZSAxMDA2NDQKPiA+PiA+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gPj4gPj4+IEBAIC02NzA1LDYgKzY3MDUsNyBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKPiA+PiA+Pj4gICNkZWZpbmUJICBHRU42X1BDT0RFX1JFQURfUkM2 VklEUwkJMHg1Cj4gPj4gPj4+ICAjZGVmaW5lICAgICBHRU42X0VOQ09ERV9SQzZfVklEKG12KQkJ KCgobXYpIC0gMjQ1KSAvIDUpCj4gPj4gPj4+ICAjZGVmaW5lICAgICBHRU42X0RFQ09ERV9SQzZf VklEKHZpZHMpCQkoKCh2aWRzKSAqIDUpICsgMjQ1KQo+ID4+ID4+PiArI2RlZmluZSAgIEJEV19Q Q09ERV9ESVNQTEFZX0ZSRVFfQ0hBTkdFX1JFUQkweDE4Cj4gPj4gPj4+ICAjZGVmaW5lICAgR0VO OV9QQ09ERV9SRUFEX01FTV9MQVRFTkNZCQkweDYKPiA+PiA+Pj4gICNkZWZpbmUgICAgIEdFTjlf TUVNX0xBVEVOQ1lfTEVWRUxfTUFTSwkJMHhGRgo+ID4+ID4+PiAgI2RlZmluZSAgICAgR0VOOV9N RU1fTEFURU5DWV9MRVZFTF8xXzVfU0hJRlQJOAo+ID4+ID4+PiBAQCAtNzE3MCw2ICs3MTcxLDcg QEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPj4gPj4+ICAjZGVmaW5lICBMQ1BMTF9D TEtfRlJFUV8zMzdfNV9CRFcJKDI8PDI2KQo+ID4+ID4+PiAgI2RlZmluZSAgTENQTExfQ0xLX0ZS RVFfNjc1X0JEVwkJKDM8PDI2KQo+ID4+ID4+PiAgI2RlZmluZSAgTENQTExfQ0RfQ0xPQ0tfRElT QUJMRQkJKDE8PDI1KQo+ID4+ID4+PiArI2RlZmluZSAgTENQTExfUk9PVF9DRF9DTE9DS19ESVNB QkxFCSgxPDwyNCkKPiA+PiA+Pj4gICNkZWZpbmUgIExDUExMX0NEMlhfQ0xPQ0tfRElTQUJMRQko MTw8MjMpCj4gPj4gPj4+ICAjZGVmaW5lICBMQ1BMTF9QT1dFUl9ET1dOX0FMTE9XCQkoMTw8MjIp Cj4gPj4gPj4+ICAjZGVmaW5lICBMQ1BMTF9DRF9TT1VSQ0VfRkNMSwkJKDE8PDIxKQo+ID4+ID4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gPj4+IGluZGV4IGMzZjAxYWEu LmIxZTIwNjkgMTAwNjQ0Cj4gPj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+PiA+Pj4gQEAgLTU3NTEsNyArNTc1MSwyMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF91 cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gPj4+ICB7Cj4gPj4g Pj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiA+PiA+Pj4gIAo+ID4+ID4+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+PiA+ Pj4gKwlpZiAoSVNfQlJPQURXRUxMKGRldikpICB7Cj4gPj4gPj4+ICsJCS8qCj4gPj4gPj4+ICsJ CSAqIEZJWE1FIHdpdGggZXh0cmEgY29vbGluZyB3ZSBjYW4gYWxsb3cKPiA+PiA+Pj4gKwkJICog NTQwIE1IeiBmb3IgVUxYIGFuZCA2NzUgTWh6IGZvciBVTFQuCj4gPj4gPj4+ICsJCSAqIEhvdyBj YW4gd2Uga25vdyBpZiBleHRyYSBjb29saW5nIGlzCj4gPj4gPj4+ICsJCSAqIGF2YWlsYWJsZT8g UENJIElELCBWVEIsIHNvbWV0aGluZyBlbHNlPwo+ID4+ID4+PiArCQkgKi8KPiA+PiA+Pj4gKwkJ aWYgKEk5MTVfUkVBRChGVVNFX1NUUkFQKSAmIEhTV19DRENMS19MSU1JVCkKPiA+PiA+Pj4gKwkJ CWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDQ1MDAwMDsKPiA+PiA+Pj4gKwkJZWxzZSBpZiAo SVNfQkRXX1VMWChkZXYpKQo+ID4+ID4+PiArCQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0g NDUwMDAwOwo+ID4+ID4+PiArCQllbHNlIGlmIChJU19CRFdfVUxUKGRldikpCj4gPj4gPj4+ICsJ CQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA1NDAwMDA7Cj4gPj4gPj4+ICsJCWVsc2UKPiA+ PiA+Pj4gKwkJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDY3NTAwMDsKPiA+PiA+Pj4gKwl9 IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4+ID4+PiAgCQlkZXZfcHJpdi0+bWF4 X2NkY2xrX2ZyZXEgPSA0MDAwMDA7Cj4gPj4gPj4+ICAJfSBlbHNlIHsKPiA+PiA+Pj4gIAkJLyog b3RoZXJ3aXNlIGFzc3VtZSBjZGNsayBpcyBmaXhlZCAqLwo+ID4+ID4+PiBAQCAtNjYyMSwxMyAr NjYzNiwxMSBAQCBzdGF0aWMgYm9vbCBwaXBlX2NvbmZpZ19zdXBwb3J0c19pcHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ID4+PiAgCQlyZXR1cm4gdHJ1ZTsKPiA+PiA+ Pj4gIAo+ID4+ID4+PiAgCS8qCj4gPj4gPj4+IC0JICogRklYTUUgaWYgd2UgY29tcGFyZSBhZ2Fp bnN0IG1heCB3ZSBzaG91bGQgdGhlbgo+ID4+ID4+PiAtCSAqIGluY3JlYXNlIHRoZSBjZGNsayBm cmVxdWVuY3kgd2hlbiB0aGUgY3VycmVudAo+ID4+ID4+PiAtCSAqIHZhbHVlIGlzIHRvbyBsb3cu IFRoZSBvdGhlciBvcHRpb24gaXMgdG8gY29tcGFyZQo+ID4+ID4+PiAtCSAqIGFnYWluc3QgdGhl IGNkY2xrIGZyZXF1ZW5jeSB3ZSdyZSBnb2luZyBoYXZlIHBvc3QKPiA+PiA+Pj4gLQkgKiBtb2Rl c2V0IChpZS4gb25lIHdlIGNvbXB1dGVkIHVzaW5nIG90aGVyIGNvbnN0cmFpbnRzKS4KPiA+PiA+ Pj4gLQkgKiBOZWVkIHRvIG1lYXN1cmUgd2hldGhlciB1c2luZyBhIGxvd2VyIGNkY2xrIHcvbyBJ UFMKPiA+PiA+Pj4gLQkgKiBpcyBiZXR0ZXIgb3Igd29yc2UgdGhhbiBhIGhpZ2hlciBjZGNsayB3 LyBJUFMuCj4gPj4gPj4+ICsJICogV2UgY29tcGFyZSBhZ2FpbnN0IG1heCB3aGljaCBtZWFucyB3 ZSBtdXN0IHRha2UKPiA+PiA+Pj4gKwkgKiB0aGUgaW5jcmVhc2VkIGNkY2xrIHJlcXVpcmVtZW50 IGludG8gYWNjb3VudCB3aGVuCj4gPj4gPj4+ICsJICogY2FsY3VsYXRpbmcgdGhlIG5ldyBjZGNs ay4KPiA+PiA+Pj4gKwkgKgo+ID4+ID4+PiArCSAqIFNob3VsZCBtZWFzdXJlIHdoZXRoZXIgdXNp bmcgYSBsb3dlciBjZGNsayB3L28gSVBTCj4gPj4gPj4+ICAJICovCj4gPj4gPj4+ICAJcmV0dXJu IGlsa19waXBlX3BpeGVsX3JhdGUocGlwZV9jb25maWcpIDw9Cj4gPj4gPj4+ICAJCWRldl9wcml2 LT5tYXhfY2RjbGtfZnJlcSAqIDk1IC8gMTAwOwo+ID4+ID4+PiBAQCAtOTYwOCw2ICs5NjIxLDE4 MiBAQCBzdGF0aWMgdm9pZCBicm94dG9uX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ID4+ID4+PiAgCQlicm94dG9uX3NldF9jZGNs ayhkZXYsIHJlcV9jZGNsayk7Cj4gPj4gPj4+ICB9Cj4gPj4gPj4+ICAKPiA+PiA+Pj4gKy8qIGNv bXB1dGUgdGhlIG1heCByYXRlIGZvciBuZXcgY29uZmlndXJhdGlvbiAqLwo+ID4+ID4+PiArc3Rh dGljIGludCBpbGtfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4+ID4+PiArewo+ID4+ID4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZf cHJpdi0+ZGV2Owo+ID4+ID4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ID4+ ID4+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+PiA+Pj4gKwlpbnQgbWF4X3BpeGVsX3Jh dGUgPSAwOwo+ID4+ID4+PiArCWludCBwaXhlbF9yYXRlOwo+ID4+ID4+PiArCj4gPj4gPj4+ICsJ Zm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIHsKPiA+PiA+Pj4gKwkJaWYgKCFjcnRjLT5zdGF0ZS0+ ZW5hYmxlKQo+ID4+ID4+PiArCQkJY29udGludWU7Cj4gPj4gPj4+ICsKPiA+PiA+Pj4gKwkJaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPj4gPj4+ICsJCXBpeGVsX3JhdGUgPSBp bGtfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNvbmZpZyk7Cj4gPj4gPj4+ICsKPiA+PiA+ Pj4gKwkJLyogcGl4ZWwgcmF0ZSBtdXN0bid0IGV4Y2VlZCA5NSUgb2YgY2RjbGsgd2l0aCBJUFMg b24gQkRXICovCj4gPj4gPj4+ICsJCWlmIChJU19CUk9BRFdFTEwoZGV2KSAmJiBpbnRlbF9jcnRj LT5jb25maWctPmlwc19lbmFibGVkKQo+ID4+ID4+PiArCQkJcGl4ZWxfcmF0ZSA9IERJVl9ST1VO RF9VUChwaXhlbF9yYXRlICogMTAwLCA5NSk7Cj4gPj4gPj4+ICsKPiA+PiA+Pj4gKwkJbWF4X3Bp eGVsX3JhdGUgPSBtYXgobWF4X3BpeGVsX3JhdGUsIHBpeGVsX3JhdGUpOwo+ID4+ID4+PiArCX0K PiA+PiA+Pj4gKwo+ID4+ID4+PiArCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPiA+PiA+Pj4gK30K PiA+PiA+Pj4gKwo+ID4+ID4+PiArc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NldF9jZGNsayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2RjbGspCj4gPj4gPj4+ICt7Cj4gPj4gPj4+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiA+ Pj4gKwl1aW50MzJfdCB2YWwsIGRhdGE7Cj4gPj4gPj4+ICsJaW50IHJldDsKPiA+PiA+Pj4gKwo+ ID4+ID4+PiArCWlmIChXQVJOKChJOTE1X1JFQUQoTENQTExfQ1RMKSAmCj4gPj4gPj4+ICsJCSAg KExDUExMX1BMTF9ESVNBQkxFIHwgTENQTExfUExMX0xPQ0sgfAo+ID4+ID4+PiArCQkgICBMQ1BM TF9DRF9DTE9DS19ESVNBQkxFIHwgTENQTExfUk9PVF9DRF9DTE9DS19ESVNBQkxFIHwKPiA+PiA+ Pj4gKwkJICAgTENQTExfQ0QyWF9DTE9DS19ESVNBQkxFIHwgTENQTExfUE9XRVJfRE9XTl9BTExP VyB8Cj4gPj4gPj4+ICsJCSAgIExDUExMX0NEX1NPVVJDRV9GQ0xLKSkgIT0gTENQTExfUExMX0xP Q0ssCj4gPj4gPj4+ICsJCSAidHJ5aW5nIHRvIGNoYW5nZSBjZGNsayBmcmVxdWVuY3kgd2l0aCBj ZGNsayBub3QgZW5hYmxlZFxuIikpCj4gPj4gPj4+ICsJCXJldHVybjsKPiA+PiA+Pj4gKwo+ID4+ ID4+PiArCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gPj4gPj4+ICsJcmV0 ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsCj4gPj4gPj4+ICsJCQkJICAgICAg QkRXX1BDT0RFX0RJU1BMQVlfRlJFUV9DSEFOR0VfUkVRLCAweDApOwo+ID4+ID4+PiArCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiA+PiA+Pj4gKwlpZiAocmV0KSB7Cj4g Pj4gPj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGluZm9ybSBwY29kZSBhYm91dCBjZGNsayBj aGFuZ2VcbiIpOwo+ID4+ID4+PiArCQlyZXR1cm47Cj4gPj4gPj4+ICsJfQo+ID4+ID4+PiArCj4g Pj4gPj4+ICsJdmFsID0gSTkxNV9SRUFEKExDUExMX0NUTCk7Cj4gPj4gPj4+ICsJdmFsIHw9IExD UExMX0NEX1NPVVJDRV9GQ0xLOwo+ID4+ID4+PiArCUk5MTVfV1JJVEUoTENQTExfQ1RMLCB2YWwp Owo+ID4+ID4+PiArCj4gPj4gPj4+ICsJaWYgKHdhaXRfZm9yX2F0b21pY191cyhJOTE1X1JFQUQo TENQTExfQ1RMKSAmCj4gPj4gPj4+ICsJCQkgICAgICAgTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9O RSwgMSkpCj4gPj4gPj4+ICsJCURSTV9FUlJPUigiU3dpdGNoaW5nIHRvIEZDTEsgZmFpbGVkXG4i KTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCXZhbCA9IEk5MTVfUkVBRChMQ1BMTF9DVEwpOwo+ID4+ ID4+PiArCXZhbCAmPSB+TENQTExfQ0xLX0ZSRVFfTUFTSzsKPiA+PiA+Pj4gKwo+ID4+ID4+PiAr CXN3aXRjaCAoY2RjbGspIHsKPiA+PiA+Pj4gKwljYXNlIDQ1MDAwMDoKPiA+PiA+Pj4gKwkJdmFs IHw9IExDUExMX0NMS19GUkVRXzQ1MDsKPiA+PiA+Pj4gKwkJZGF0YSA9IDA7Cj4gPj4gPj4+ICsJ CWJyZWFrOwo+ID4+ID4+PiArCWNhc2UgNTQwMDAwOgo+ID4+ID4+PiArCQl2YWwgfD0gTENQTExf Q0xLX0ZSRVFfNTRPX0JEVzsKPiA+PiA+Pj4gKwkJZGF0YSA9IDE7Cj4gPj4gPj4+ICsJCWJyZWFr Owo+ID4+ID4+PiArCWNhc2UgMzM3NTAwOgo+ID4+ID4+PiArCQl2YWwgfD0gTENQTExfQ0xLX0ZS RVFfMzM3XzVfQkRXOwo+ID4+ID4+PiArCQlkYXRhID0gMjsKPiA+PiA+Pj4gKwkJYnJlYWs7Cj4g Pj4gPj4+ICsJY2FzZSA2NzUwMDA6Cj4gPj4gPj4+ICsJCXZhbCB8PSBMQ1BMTF9DTEtfRlJFUV82 NzVfQkRXOwo+ID4+ID4+PiArCQlkYXRhID0gMzsKPiA+PiA+Pj4gKwkJYnJlYWs7Cj4gPj4gPj4+ ICsJZGVmYXVsdDoKPiA+PiA+Pj4gKwkJV0FSTigxLCAiaW52YWxpZCBjZGNsayBmcmVxdWVuY3lc biIpOwo+ID4+ID4+PiArCQlyZXR1cm47Cj4gPj4gPj4+ICsJfQo+ID4+ID4+PiArCj4gPj4gPj4+ ICsJSTkxNV9XUklURShMQ1BMTF9DVEwsIHZhbCk7Cj4gPj4gPj4+ICsKPiA+PiA+Pj4gKwl2YWwg PSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiA+PiA+Pj4gKwl2YWwgJj0gfkxDUExMX0NEX1NPVVJD RV9GQ0xLOwo+ID4+ID4+PiArCUk5MTVfV1JJVEUoTENQTExfQ1RMLCB2YWwpOwo+ID4+ID4+PiAr Cj4gPj4gPj4+ICsJaWYgKHdhaXRfZm9yX2F0b21pY191cygoSTkxNV9SRUFEKExDUExMX0NUTCkg Jgo+ID4+ID4+PiArCQkJCUxDUExMX0NEX1NPVVJDRV9GQ0xLX0RPTkUpID09IDAsIDEpKQo+ID4+ ID4+PiArCQlEUk1fRVJST1IoIlN3aXRjaGluZyBiYWNrIHRvIExDUExMIGZhaWxlZFxuIik7Cj4g Pj4gPj4+ICsKPiA+PiA+Pj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ ID4+ID4+PiArCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBIU1dfUENPREVfREVf V1JJVEVfRlJFUV9SRVEsIGRhdGEpOwo+ID4+ID4+PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnJwcy5od19sb2NrKTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCWludGVsX3VwZGF0ZV9jZGNsayhk ZXYpOwo+ID4+ID4+PiArCj4gPj4gPj4+ICsJV0FSTihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtf ZnJlcSwKPiA+PiA+Pj4gKwkgICAgICJjZGNsayByZXF1ZXN0ZWQgJWQga0h6IGJ1dCBnb3QgJWQg a0h6XG4iLAo+ID4+ID4+PiArCSAgICAgY2RjbGssIGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+ PiA+Pj4gK30KPiA+PiA+Pj4gKwo+ID4+ID4+PiArc3RhdGljIGludCBicm9hZHdlbGxfY2FsY19j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gPj4+ICsJCQkgICAg ICBpbnQgbWF4X3BpeGVsX3JhdGUpCj4gPj4gPj4+ICt7Cj4gPj4gPj4+ICsJaW50IGNkY2xrOwo+ ID4+ID4+PiArCj4gPj4gPj4+ICsJLyoKPiA+PiA+Pj4gKwkgKiBGSVhNRSBzaG91bGQgYWxzbyBh Y2NvdW50IGZvciBwbGFuZSByYXRpbwo+ID4+ID4+PiArCSAqIG9uY2UgNjRicHAgcGl4ZWwgZm9y bWF0cyBhcmUgc3VwcG9ydGVkLgo+ID4+ID4+PiArCSAqLwo+ID4+ID4+PiArCWlmIChtYXhfcGl4 ZWxfcmF0ZSA+IDU0MDAwMCkKPiA+PiA+Pj4gKwkJY2RjbGsgPSA2NzUwMDA7Cj4gPj4gPj4+ICsJ ZWxzZSBpZiAobWF4X3BpeGVsX3JhdGUgPiA0NTAwMDApCj4gPj4gPj4+ICsJCWNkY2xrID0gNTQw MDAwOwo+ID4+ID4+PiArCWVsc2UgaWYgKG1heF9waXhlbF9yYXRlID4gMzM3NTAwKQo+ID4+ID4+ PiArCQljZGNsayA9IDQ1MDAwMDsKPiA+PiA+Pj4gKwllbHNlCj4gPj4gPj4+ICsJCWNkY2xrID0g MzM3NTAwOwo+ID4+ID4+PiArCj4gPj4gPj4+ICsJLyoKPiA+PiA+Pj4gKwkgKiBGSVhNRSBtb3Zl IHRoZSBjZGNsayBjYWNsdWxhdGlvbiB0bwo+ID4+ID4+PiArCSAqIGNvbXB1dGVfY29uZmlnKCkg c28gd2UgY2FuIGZhaWwgZ3JhY2VndWxseS4KPiA+PiA+Pj4gKwkgKi8KPiA+PiA+Pj4gKwlpZiAo Y2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPiA+PiA+Pj4gKwkJRFJNX0VSUk9S KCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVkIGtIeilcbiIsCj4gPj4g Pj4+ICsJCQkgIGNkY2xrLCBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpOwo+ID4+ID4+PiArCQlj ZGNsayA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcTsKPiA+PiA+Pj4gKwl9Cj4gPj4gPj4+ICsK PiA+PiA+Pj4gKwlyZXR1cm4gY2RjbGs7Cj4gPj4gPj4+ICt9Cj4gPj4gPj4+ICsKPiA+PiA+Pj4g K3N0YXRpYyBpbnQgYnJvYWR3ZWxsX21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKPiA+PiA+Pj4gK3sKPiA+PiA+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ID4+ID4+PiArCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKPiA+PiA+Pj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7Cj4gPj4gPj4+ICsJaW50IG1heF9waXhjbGsgPSBpbGtfbWF4X3BpeGVsX3JhdGUoZGV2 X3ByaXYpOwo+ID4+ID4+PiArCWludCBjZGNsaywgaTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCWNk Y2xrID0gYnJvYWR3ZWxsX2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhjbGspOwo+ID4+ID4+ PiArCj4gPj4gPj4+ICsJaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ID4+ID4+ PiArCQlyZXR1cm4gMDsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCS8qIGFkZCBhbGwgYWN0aXZlIHBp cGVzIHRvIHRoZSBzdGF0ZSAqLwo+ID4+ID4+PiArCWZvcl9lYWNoX2NydGMoc3RhdGUtPmRldiwg Y3J0Yykgewo+ID4+ID4+PiArCQlpZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpCj4gPj4gPj4+ICsJ CQljb250aW51ZTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCQljcnRjX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPj4gPj4+ICsJCWlmIChJU19FUlIoY3J0 Y19zdGF0ZSkpCj4gPj4gPj4+ICsJCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKPiA+PiA+ Pj4gKwl9Cj4gPj4gPj4+ICsKPiA+PiA+Pj4gKwkvKiBkaXNhYmxlL2VuYWJsZSBhbGwgY3VycmVu dGx5IGFjdGl2ZSBwaXBlcyB3aGlsZSB3ZSBjaGFuZ2UgY2RjbGsgKi8KPiA+PiA+Pj4gKwlmb3Jf ZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKQo+ID4+ID4+PiAr CQlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ID4+ID4+PiArCQkJY3J0Y19zdGF0ZS0+bW9kZV9j aGFuZ2VkID0gdHJ1ZTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiArCXJldHVybiAwOwo+ID4+ID4+PiAr fQo+ID4+ID4+PiArCj4gPj4gPj4+ICtzdGF0aWMgdm9pZCBicm9hZHdlbGxfbW9kZXNldF9nbG9i YWxfcmVzb3VyY2VzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+PiA+Pj4gK3sK PiA+PiA+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiA+PiA+Pj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4+ID4+PiArCWludCBtYXhfcGl4ZWxfcmF0ZSA9IGlsa19tYXhfcGl4ZWxfcmF0ZShkZXZfcHJp dik7Cj4gPj4gPj4+ICsJaW50IHJlcV9jZGNsayA9IGJyb2Fkd2VsbF9jYWxjX2NkY2xrKGRldl9w cml2LCBtYXhfcGl4ZWxfcmF0ZSk7Cj4gPj4gPj4+ICsKPiA+PiA+Pj4gKwlpZiAocmVxX2NkY2xr ICE9IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ID4+ID4+PiArCQlicm9hZHdlbGxfc2V0X2NkY2xr KGRldiwgcmVxX2NkY2xrKTsKPiA+PiA+Pj4gK30KPiA+PiA+Pj4gKwo+ID4+ID4+PiAgc3RhdGlj IGludCBoYXN3ZWxsX2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiA+PiA+Pj4gIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiA+PiA+Pj4gIHsKPiA+PiA+Pj4gQEAgLTEyNzg4LDggKzEyOTc3LDEyIEBAIHN0YXRpYyBpbnQg X19pbnRlbF9zZXRfbW9kZV9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ID4+ID4+PiAgCSAqIG1vZGUgc2V0IG9uIHRoaXMgY3J0Yy4gIEZvciBvdGhlciBjcnRjcyB3ZSBu ZWVkIHRvIHVzZSB0aGUKPiA+PiA+Pj4gIAkgKiBhZGp1c3RlZF9tb2RlIGJpdHMgaW4gdGhlIGNy dGMgZGlyZWN0bHkuCj4gPj4gPj4+ICAJICovCj4gPj4gPj4+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPiA+PiA+Pj4gLQkJcmV0ID0gdmFsbGV5dmlld19t b2Rlc2V0X2dsb2JhbF9waXBlcyhzdGF0ZSk7Cj4gPj4gPj4+ICsJaWYgKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19CUk9YVE9OKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpIHsKPiA+PiA+Pj4g KwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpCj4gPj4gPj4+ICsJ CQlyZXQgPSB2YWxsZXl2aWV3X21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0YXRlKTsKPiA+PiA+Pj4g KwkJZWxzZQo+ID4+ID4+PiArCQkJcmV0ID0gYnJvYWR3ZWxsX21vZGVzZXRfZ2xvYmFsX3BpcGVz KHN0YXRlKTsKPiA+PiA+Pj4gKwo+ID4+ID4+PiAgCQlpZiAocmV0KQo+ID4+ID4+PiAgCQkJcmV0 dXJuIHJldDsKPiA+PiA+Pj4gIAl9Cj4gPj4gPj4+IEBAIC0xNDY3Nyw2ICsxNDg3MCw5IEBAIHN0 YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+ ID4+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5mZGlfbGlua190cmFpbiA9IGl2Yl9tYW51YWxfZmRp X2xpbmtfdHJhaW47Cj4gPj4gPj4+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikgfHwgSVNf QlJPQURXRUxMKGRldikpIHsKPiA+PiA+Pj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtf dHJhaW4gPSBoc3dfZmRpX2xpbmtfdHJhaW47Cj4gPj4gPj4+ICsJCWlmIChJU19CUk9BRFdFTEwo ZGV2KSkKPiA+PiA+Pj4gKwkJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfZ2xvYmFsX3Jlc291 cmNlcyA9Cj4gPj4gPj4+ICsJCQkJYnJvYWR3ZWxsX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlczsK PiA+PiA+Pj4gIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4+ID4+PiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2dsb2JhbF9yZXNvdXJjZXMgPQo+ID4+ID4+PiAgCQkJ dmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9yZXNvdXJjZXM7Cj4gPj4gPj4+IC0tIAo+ID4+ID4+ PiAxLjkuMQo+ID4+ID4+Pgo+ID4+ID4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+ID4+ID4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPj4gPj4+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiA+Pj4gaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4+ID4+Cj4gPj4gPj4g LS0gCj4gPj4gPj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2Vu dGVyCj4gPj4gPgo+ID4+ID4gLS0gCj4gPj4gPiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3Vy Y2UgVGVjaG5vbG9neSBDZW50ZXIKPiA+PiAKPiA+PiAtLSAKPiA+PiBKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPiA+Cj4gPgo+IAo+IC0tIAo+IEphbmkg TmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK