From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v6 7/8] drm/i915: BDW clock change support Date: Mon, 29 Jun 2015 14:24:54 +0300 Message-ID: <871tguzri1.fsf@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A2B76E850 for ; Mon, 29 Jun 2015 04:22:23 -0700 (PDT) In-Reply-To: <878ubj4x9f.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: Mika Kahola , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxNiBKdW4gMjAxNSwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVs LmNvbT4gd3JvdGU6Cj4gT24gVHVlLCAxNiBKdW4gMjAxNSwgSmFuaSBOaWt1bGEgPGphbmkubmlr dWxhQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+IE9uIFdlZCwgMDMgSnVuIDIwMTUsIE1pa2Eg S2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+IHdyb3RlOgo+Pj4gRnJvbTogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4+Cj4+PiBBZGQgc3VwcG9y dCBmb3IgY2hhbmdpbmcgY2RjbGsgZnJlcXVlbmN5IGR1cmluZyBydW50aW1lIG9uIEJEVy4gVGhl Cj4+PiBwcm9jZWR1cmUgaXMgcXVpdGUgYSBiaXQgZGlmZmVyZW50IG9uIEJEVyBmcm9tIHRoZSBv bmUgb24gSFNXLCBzbwo+Pj4gYWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24gZm9yIGl0Lgo+Pj4KPj4+ IEFsc28gd2l0aCBJUFMgZW5hYmxlZCB0aGUgYWN0dWFsIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNl ZWQgOTUlIG9mIGNkY2xrLAo+Pj4gc28gdGFrZSB0aGF0IGludG8gYWNjb3VudCB3aGVuIGNvbXB1 dGluZyB0aGUgbWF4IHBpeGVsIHJhdGUuCj4+Pgo+Pj4gdjI6IEdyYWIgcnBzLmh3X2xvY2sgYXJv dW5kIHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKCkKPj4+IHYzOiBSZWJhc2UgZHVlIHRvIHBvd2Vy IHdlbGwgdnMuIC5nbG9iYWxfcmVzb3VyY2VzKCkgcmVvcmRlcmluZwo+Pj4gdjQ6IFJlYmFzZWQg dG8gdGhlIGxhdGVzdAo+Pj4gdjU6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdAo+Pj4gdjY6IFBhdGNo IG9yZGVyIHNodWZmbGUgc28gdGhhdCBCcm9hZHdlbGwgQ0QgY2xvY2sgY2hhbmdlIGlzCj4+PiAg ICAgYXBwbGllZCBiZWZvcmUgdGhlIHBhdGNoIGZvciBIYXN3ZWxsIENEIGNsb2NrIGNoYW5nZQo+ Pj4gdjc6IEZpeCBmb3IgcGF0Y2ggc3R5bGUgcHJvYmxlbXMKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5 OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4gU2ln bmVkLW9mZi1ieTogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KPj4KPj4gVGhp cyBwYXRjaCBoYXJkIGhhbmdzIG15IEJEVyBOVUMgYXQgYm9vdCB3aGVuIGJvdGggRFAgYW5kIEhE TUkgYXJlCj4+IGNvbm5lY3RlZC4gRWl0aGVyIERQIG9yIEhETUkgYWxvbmUgYXJlIGdvb2QsIHNh bWUgd2l0aCBob3RwbHVnZ2luZyB0aGUKPj4gb3RoZXIgYWZ0ZXJ3YXJkcy4gQm9vdGluZyB0byBn cnViIHdpdGggYm90aCBjb25uZWN0ZWQsIGFuZCB1bnBsdWdnaW5nCj4+IEhETUkgYmVmb3JlIGxv YWRpbmcgdGhlIGtlcm5lbCBhbHNvIHJlcHJvZHVjZXMgdGhlIGlzc3VlLgo+Pgo+PiBJdCBsb29r cyBsaWtlIHRoZSBwcm9ibGVtIGJvaWxzIGRvd24gdG8gdGhlIEJJT1Mgc2V0dGluZyB1cCBhIHNt YWxsZXIKPj4gcmVzb2x1dGlvbiBvbiB0aGUgRFAgZGlzcGxheSB3aGVuIGJvdGggYXJlIGNvbm5l Y3RlZCwgYW5kIHRoaXMgcGF0Y2gKPj4gZmFpbHMgdG8gY29wZSB3aXRoIHRoYXQgb24gaTkxNSBs b2FkLgo+Cj4gQnkgInRoaXMgcGF0Y2giIEkgb2J2aW91c2x5IHJlZmVyIHRvCj4KPiBjb21taXQg YjQzMmU1Y2ZkNWU5MjEyN2FkMmRkODNiZmMzMDgzZjFkYmNlNDNmYgo+IEF1dGhvcjogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBEYXRlOiAgIFdlZCBK dW4gMyAxNTo0NToxMyAyMDE1ICswMzAwCj4KPiAgICAgZHJtL2k5MTU6IEJEVyBjbG9jayBjaGFu Z2Ugc3VwcG9ydAo+Cj4gYW5kIGV2ZXJ5dGhpbmcgd29ya3MgZm9yIHRoZSBjb21taXQgYmVmb3Jl IHRoYXQuCgpBbnlvbmUgd29ya2luZyBvbiB0aGlzLCBvciBzaG91bGQgd2UgcmV2ZXJ0PwoKQlIs CkphbmkuCgoKPgo+IEJSLAo+IEphbmkuCj4KPgo+Cj4KPgo+Pgo+PiBCUiwKPj4gSmFuaS4KPj4K Pj4KPj4KPj4+Cj4+PiBBdXRob3I6ICAgIFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICAgICAgfCAgIDIgKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyB8IDIxNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+Pj4gIDIgZmlsZXMg Y2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+Pj4gaW5kZXggNzIxMzIyNC4uMGY3MmMwZSAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+IEBAIC02NzA1LDYgKzY3MDUsNyBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKPj4+ICAjZGVmaW5lCSAgR0VONl9QQ09ERV9SRUFEX1JDNlZJRFMJ CTB4NQo+Pj4gICNkZWZpbmUgICAgIEdFTjZfRU5DT0RFX1JDNl9WSUQobXYpCQkoKChtdikgLSAy NDUpIC8gNSkKPj4+ICAjZGVmaW5lICAgICBHRU42X0RFQ09ERV9SQzZfVklEKHZpZHMpCQkoKCh2 aWRzKSAqIDUpICsgMjQ1KQo+Pj4gKyNkZWZpbmUgICBCRFdfUENPREVfRElTUExBWV9GUkVRX0NI QU5HRV9SRVEJMHgxOAo+Pj4gICNkZWZpbmUgICBHRU45X1BDT0RFX1JFQURfTUVNX0xBVEVOQ1kJ CTB4Ngo+Pj4gICNkZWZpbmUgICAgIEdFTjlfTUVNX0xBVEVOQ1lfTEVWRUxfTUFTSwkJMHhGRgo+ Pj4gICNkZWZpbmUgICAgIEdFTjlfTUVNX0xBVEVOQ1lfTEVWRUxfMV81X1NISUZUCTgKPj4+IEBA IC03MTcwLDYgKzcxNzEsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPj4+ICAjZGVm aW5lICBMQ1BMTF9DTEtfRlJFUV8zMzdfNV9CRFcJKDI8PDI2KQo+Pj4gICNkZWZpbmUgIExDUExM X0NMS19GUkVRXzY3NV9CRFcJCSgzPDwyNikKPj4+ICAjZGVmaW5lICBMQ1BMTF9DRF9DTE9DS19E SVNBQkxFCQkoMTw8MjUpCj4+PiArI2RlZmluZSAgTENQTExfUk9PVF9DRF9DTE9DS19ESVNBQkxF CSgxPDwyNCkKPj4+ICAjZGVmaW5lICBMQ1BMTF9DRDJYX0NMT0NLX0RJU0FCTEUJKDE8PDIzKQo+ Pj4gICNkZWZpbmUgIExDUExMX1BPV0VSX0RPV05fQUxMT1cJCSgxPDwyMikKPj4+ICAjZGVmaW5l ICBMQ1BMTF9DRF9TT1VSQ0VfRkNMSwkJKDE8PDIxKQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+Pj4gaW5kZXggYzNmMDFhYS4uYjFlMjA2OSAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+PiBAQCAtNTc1MSw3ICs1NzUxLDIyIEBAIHN0YXRp YyB2b2lkIGludGVsX3VwZGF0ZV9tYXhfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ ICB7Cj4+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4+PiAgCj4+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4+ICsJaWYgKElT X0JST0FEV0VMTChkZXYpKSAgewo+Pj4gKwkJLyoKPj4+ICsJCSAqIEZJWE1FIHdpdGggZXh0cmEg Y29vbGluZyB3ZSBjYW4gYWxsb3cKPj4+ICsJCSAqIDU0MCBNSHogZm9yIFVMWCBhbmQgNjc1IE1o eiBmb3IgVUxULgo+Pj4gKwkJICogSG93IGNhbiB3ZSBrbm93IGlmIGV4dHJhIGNvb2xpbmcgaXMK Pj4+ICsJCSAqIGF2YWlsYWJsZT8gUENJIElELCBWVEIsIHNvbWV0aGluZyBlbHNlPwo+Pj4gKwkJ ICovCj4+PiArCQlpZiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYgSFNXX0NEQ0xLX0xJTUlUKQo+ Pj4gKwkJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDQ1MDAwMDsKPj4+ICsJCWVsc2UgaWYg KElTX0JEV19VTFgoZGV2KSkKPj4+ICsJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA0NTAw MDA7Cj4+PiArCQllbHNlIGlmIChJU19CRFdfVUxUKGRldikpCj4+PiArCQkJZGV2X3ByaXYtPm1h eF9jZGNsa19mcmVxID0gNTQwMDAwOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJCWRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSA9IDY3NTAwMDsKPj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKPj4+ICAJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDQwMDAwMDsKPj4+ICAJfSBlbHNl IHsKPj4+ICAJCS8qIG90aGVyd2lzZSBhc3N1bWUgY2RjbGsgaXMgZml4ZWQgKi8KPj4+IEBAIC02 NjIxLDEzICs2NjM2LDExIEBAIHN0YXRpYyBib29sIHBpcGVfY29uZmlnX3N1cHBvcnRzX2lwcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgCQlyZXR1cm4gdHJ1ZTsKPj4+ ICAKPj4+ICAJLyoKPj4+IC0JICogRklYTUUgaWYgd2UgY29tcGFyZSBhZ2FpbnN0IG1heCB3ZSBz aG91bGQgdGhlbgo+Pj4gLQkgKiBpbmNyZWFzZSB0aGUgY2RjbGsgZnJlcXVlbmN5IHdoZW4gdGhl IGN1cnJlbnQKPj4+IC0JICogdmFsdWUgaXMgdG9vIGxvdy4gVGhlIG90aGVyIG9wdGlvbiBpcyB0 byBjb21wYXJlCj4+PiAtCSAqIGFnYWluc3QgdGhlIGNkY2xrIGZyZXF1ZW5jeSB3ZSdyZSBnb2lu ZyBoYXZlIHBvc3QKPj4+IC0JICogbW9kZXNldCAoaWUuIG9uZSB3ZSBjb21wdXRlZCB1c2luZyBv dGhlciBjb25zdHJhaW50cykuCj4+PiAtCSAqIE5lZWQgdG8gbWVhc3VyZSB3aGV0aGVyIHVzaW5n IGEgbG93ZXIgY2RjbGsgdy9vIElQUwo+Pj4gLQkgKiBpcyBiZXR0ZXIgb3Igd29yc2UgdGhhbiBh IGhpZ2hlciBjZGNsayB3LyBJUFMuCj4+PiArCSAqIFdlIGNvbXBhcmUgYWdhaW5zdCBtYXggd2hp Y2ggbWVhbnMgd2UgbXVzdCB0YWtlCj4+PiArCSAqIHRoZSBpbmNyZWFzZWQgY2RjbGsgcmVxdWly ZW1lbnQgaW50byBhY2NvdW50IHdoZW4KPj4+ICsJICogY2FsY3VsYXRpbmcgdGhlIG5ldyBjZGNs ay4KPj4+ICsJICoKPj4+ICsJICogU2hvdWxkIG1lYXN1cmUgd2hldGhlciB1c2luZyBhIGxvd2Vy IGNkY2xrIHcvbyBJUFMKPj4+ICAJICovCj4+PiAgCXJldHVybiBpbGtfcGlwZV9waXhlbF9yYXRl KHBpcGVfY29uZmlnKSA8PQo+Pj4gIAkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOTUgLyAx MDA7Cj4+PiBAQCAtOTYwOCw2ICs5NjIxLDE4MiBAQCBzdGF0aWMgdm9pZCBicm94dG9uX21vZGVz ZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ Pj4gIAkJYnJveHRvbl9zZXRfY2RjbGsoZGV2LCByZXFfY2RjbGspOwo+Pj4gIH0KPj4+ICAKPj4+ ICsvKiBjb21wdXRlIHRoZSBtYXggcmF0ZSBmb3IgbmV3IGNvbmZpZ3VyYXRpb24gKi8KPj4+ICtz dGF0aWMgaW50IGlsa19tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRl djsKPj4+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4+PiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKPj4+ICsJaW50IG1heF9waXhlbF9yYXRlID0gMDsKPj4+ICsJaW50IHBpeGVs X3JhdGU7Cj4+PiArCj4+PiArCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKSB7Cj4+PiArCQlpZiAo IWNydGMtPnN0YXRlLT5lbmFibGUpCj4+PiArCQkJY29udGludWU7Cj4+PiArCj4+PiArCQlpbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4+ICsJCXBpeGVsX3JhdGUgPSBpbGtfcGlw ZV9waXhlbF9yYXRlKGludGVsX2NydGMtPmNvbmZpZyk7Cj4+PiArCj4+PiArCQkvKiBwaXhlbCBy YXRlIG11c3RuJ3QgZXhjZWVkIDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8KPj4+ICsJ CWlmIChJU19CUk9BRFdFTEwoZGV2KSAmJiBpbnRlbF9jcnRjLT5jb25maWctPmlwc19lbmFibGVk KQo+Pj4gKwkJCXBpeGVsX3JhdGUgPSBESVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSAqIDEwMCwgOTUp Owo+Pj4gKwo+Pj4gKwkJbWF4X3BpeGVsX3JhdGUgPSBtYXgobWF4X3BpeGVsX3JhdGUsIHBpeGVs X3JhdGUpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgY2RjbGspCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gKwl1aW50MzJfdCB2YWwsIGRhdGE7 Cj4+PiArCWludCByZXQ7Cj4+PiArCj4+PiArCWlmIChXQVJOKChJOTE1X1JFQUQoTENQTExfQ1RM KSAmCj4+PiArCQkgIChMQ1BMTF9QTExfRElTQUJMRSB8IExDUExMX1BMTF9MT0NLIHwKPj4+ICsJ CSAgIExDUExMX0NEX0NMT0NLX0RJU0FCTEUgfCBMQ1BMTF9ST09UX0NEX0NMT0NLX0RJU0FCTEUg fAo+Pj4gKwkJICAgTENQTExfQ0QyWF9DTE9DS19ESVNBQkxFIHwgTENQTExfUE9XRVJfRE9XTl9B TExPVyB8Cj4+PiArCQkgICBMQ1BMTF9DRF9TT1VSQ0VfRkNMSykpICE9IExDUExMX1BMTF9MT0NL LAo+Pj4gKwkJICJ0cnlpbmcgdG8gY2hhbmdlIGNkY2xrIGZyZXF1ZW5jeSB3aXRoIGNkY2xrIG5v dCBlbmFibGVkXG4iKSkKPj4+ICsJCXJldHVybjsKPj4+ICsKPj4+ICsJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKPj4+ICsJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUo ZGV2X3ByaXYsCj4+PiArCQkJCSAgICAgIEJEV19QQ09ERV9ESVNQTEFZX0ZSRVFfQ0hBTkdFX1JF USwgMHgwKTsKPj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+Pj4g KwlpZiAocmV0KSB7Cj4+PiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbmZvcm0gcGNvZGUgYWJv dXQgY2RjbGsgY2hhbmdlXG4iKTsKPj4+ICsJCXJldHVybjsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwl2 YWwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPj4+ICsJdmFsIHw9IExDUExMX0NEX1NPVVJDRV9G Q0xLOwo+Pj4gKwlJOTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsKPj4+ICsKPj4+ICsJaWYgKHdh aXRfZm9yX2F0b21pY191cyhJOTE1X1JFQUQoTENQTExfQ1RMKSAmCj4+PiArCQkJICAgICAgIExD UExMX0NEX1NPVVJDRV9GQ0xLX0RPTkUsIDEpKQo+Pj4gKwkJRFJNX0VSUk9SKCJTd2l0Y2hpbmcg dG8gRkNMSyBmYWlsZWRcbiIpOwo+Pj4gKwo+Pj4gKwl2YWwgPSBJOTE1X1JFQUQoTENQTExfQ1RM KTsKPj4+ICsJdmFsICY9IH5MQ1BMTF9DTEtfRlJFUV9NQVNLOwo+Pj4gKwo+Pj4gKwlzd2l0Y2gg KGNkY2xrKSB7Cj4+PiArCWNhc2UgNDUwMDAwOgo+Pj4gKwkJdmFsIHw9IExDUExMX0NMS19GUkVR XzQ1MDsKPj4+ICsJCWRhdGEgPSAwOwo+Pj4gKwkJYnJlYWs7Cj4+PiArCWNhc2UgNTQwMDAwOgo+ Pj4gKwkJdmFsIHw9IExDUExMX0NMS19GUkVRXzU0T19CRFc7Cj4+PiArCQlkYXRhID0gMTsKPj4+ ICsJCWJyZWFrOwo+Pj4gKwljYXNlIDMzNzUwMDoKPj4+ICsJCXZhbCB8PSBMQ1BMTF9DTEtfRlJF UV8zMzdfNV9CRFc7Cj4+PiArCQlkYXRhID0gMjsKPj4+ICsJCWJyZWFrOwo+Pj4gKwljYXNlIDY3 NTAwMDoKPj4+ICsJCXZhbCB8PSBMQ1BMTF9DTEtfRlJFUV82NzVfQkRXOwo+Pj4gKwkJZGF0YSA9 IDM7Cj4+PiArCQlicmVhazsKPj4+ICsJZGVmYXVsdDoKPj4+ICsJCVdBUk4oMSwgImludmFsaWQg Y2RjbGsgZnJlcXVlbmN5XG4iKTsKPj4+ICsJCXJldHVybjsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlJ OTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsKPj4+ICsKPj4+ICsJdmFsID0gSTkxNV9SRUFEKExD UExMX0NUTCk7Cj4+PiArCXZhbCAmPSB+TENQTExfQ0RfU09VUkNFX0ZDTEs7Cj4+PiArCUk5MTVf V1JJVEUoTENQTExfQ1RMLCB2YWwpOwo+Pj4gKwo+Pj4gKwlpZiAod2FpdF9mb3JfYXRvbWljX3Vz KChJOTE1X1JFQUQoTENQTExfQ1RMKSAmCj4+PiArCQkJCUxDUExMX0NEX1NPVVJDRV9GQ0xLX0RP TkUpID09IDAsIDEpKQo+Pj4gKwkJRFJNX0VSUk9SKCJTd2l0Y2hpbmcgYmFjayB0byBMQ1BMTCBm YWlsZWRcbiIpOwo+Pj4gKwo+Pj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2sp Owo+Pj4gKwlzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgSFNXX1BDT0RFX0RFX1dS SVRFX0ZSRVFfUkVRLCBkYXRhKTsKPj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+Pj4gKwo+Pj4gKwlpbnRlbF91cGRhdGVfY2RjbGsoZGV2KTsKPj4+ICsKPj4+ICsJ V0FSTihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcSwKPj4+ICsJICAgICAiY2RjbGsgcmVx dWVzdGVkICVkIGtIeiBidXQgZ290ICVkIGtIelxuIiwKPj4+ICsJICAgICBjZGNsaywgZGV2X3By aXYtPmNkY2xrX2ZyZXEpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGJyb2Fkd2VsbF9j YWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICsJCQkgICAg ICBpbnQgbWF4X3BpeGVsX3JhdGUpCj4+PiArewo+Pj4gKwlpbnQgY2RjbGs7Cj4+PiArCj4+PiAr CS8qCj4+PiArCSAqIEZJWE1FIHNob3VsZCBhbHNvIGFjY291bnQgZm9yIHBsYW5lIHJhdGlvCj4+ PiArCSAqIG9uY2UgNjRicHAgcGl4ZWwgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgo+Pj4gKwkgKi8K Pj4+ICsJaWYgKG1heF9waXhlbF9yYXRlID4gNTQwMDAwKQo+Pj4gKwkJY2RjbGsgPSA2NzUwMDA7 Cj4+PiArCWVsc2UgaWYgKG1heF9waXhlbF9yYXRlID4gNDUwMDAwKQo+Pj4gKwkJY2RjbGsgPSA1 NDAwMDA7Cj4+PiArCWVsc2UgaWYgKG1heF9waXhlbF9yYXRlID4gMzM3NTAwKQo+Pj4gKwkJY2Rj bGsgPSA0NTAwMDA7Cj4+PiArCWVsc2UKPj4+ICsJCWNkY2xrID0gMzM3NTAwOwo+Pj4gKwo+Pj4g KwkvKgo+Pj4gKwkgKiBGSVhNRSBtb3ZlIHRoZSBjZGNsayBjYWNsdWxhdGlvbiB0bwo+Pj4gKwkg KiBjb21wdXRlX2NvbmZpZygpIHNvIHdlIGNhbiBmYWlsIGdyYWNlZ3VsbHkuCj4+PiArCSAqLwo+ Pj4gKwlpZiAoY2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPj4+ICsJCURSTV9F UlJPUigicmVxdWVzdGVkIGNkY2xrICglZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+ Pj4gKwkJCSAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7Cj4+PiArCQljZGNsayA9 IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gY2Rj bGs7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgYnJvYWR3ZWxsX21vZGVzZXRfZ2xvYmFs X3BpcGVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ICt7Cj4+PiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4+PiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwo+Pj4gKwlpbnQgbWF4X3BpeGNsayA9IGlsa19tYXhfcGl4ZWxfcmF0ZShkZXZfcHJp dik7Cj4+PiArCWludCBjZGNsaywgaTsKPj4+ICsKPj4+ICsJY2RjbGsgPSBicm9hZHdlbGxfY2Fs Y19jZGNsayhkZXZfcHJpdiwgbWF4X3BpeGNsayk7Cj4+PiArCj4+PiArCWlmIChjZGNsayA9PSBk ZXZfcHJpdi0+Y2RjbGtfZnJlcSkKPj4+ICsJCXJldHVybiAwOwo+Pj4gKwo+Pj4gKwkvKiBhZGQg YWxsIGFjdGl2ZSBwaXBlcyB0byB0aGUgc3RhdGUgKi8KPj4+ICsJZm9yX2VhY2hfY3J0YyhzdGF0 ZS0+ZGV2LCBjcnRjKSB7Cj4+PiArCQlpZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpCj4+PiArCQkJ Y29udGludWU7Cj4+PiArCj4+PiArCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19z dGF0ZShzdGF0ZSwgY3J0Yyk7Cj4+PiArCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+Pj4gKwkJ CXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIGRpc2Fi bGUvZW5hYmxlIGFsbCBjdXJyZW50bHkgYWN0aXZlIHBpcGVzIHdoaWxlIHdlIGNoYW5nZSBjZGNs ayAqLwo+Pj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRl LCBpKQo+Pj4gKwkJaWYgKGNydGNfc3RhdGUtPmVuYWJsZSkKPj4+ICsJCQljcnRjX3N0YXRlLT5t b2RlX2NoYW5nZWQgPSB0cnVlOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+ PiArc3RhdGljIHZvaWQgYnJvYWR3ZWxsX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmRldjsKPj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ICsJaW50IG1heF9waXhlbF9yYXRlID0gaWxrX21heF9w aXhlbF9yYXRlKGRldl9wcml2KTsKPj4+ICsJaW50IHJlcV9jZGNsayA9IGJyb2Fkd2VsbF9jYWxj X2NkY2xrKGRldl9wcml2LCBtYXhfcGl4ZWxfcmF0ZSk7Cj4+PiArCj4+PiArCWlmIChyZXFfY2Rj bGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEpCj4+PiArCQlicm9hZHdlbGxfc2V0X2NkY2xrKGRl diwgcmVxX2NkY2xrKTsKPj4+ICt9Cj4+PiArCj4+PiAgc3RhdGljIGludCBoYXN3ZWxsX2NydGNf Y29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4+ICAJCQkJICAgICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiAgewo+Pj4gQEAgLTEyNzg4LDgg KzEyOTc3LDEyIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZV9jaGVja3Moc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4gIAkgKiBtb2RlIHNldCBvbiB0aGlzIGNydGMuICBG b3Igb3RoZXIgY3J0Y3Mgd2UgbmVlZCB0byB1c2UgdGhlCj4+PiAgCSAqIGFkanVzdGVkX21vZGUg Yml0cyBpbiB0aGUgY3J0YyBkaXJlY3RseS4KPj4+ICAJICovCj4+PiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKSB7Cj4+PiAtCQlyZXQgPSB2YWxsZXl2aWV3X21v ZGVzZXRfZ2xvYmFsX3BpcGVzKHN0YXRlKTsKPj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19CUk9YVE9OKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpIHsKPj4+ICsJCWlmIChJU19W QUxMRVlWSUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKQo+Pj4gKwkJCXJldCA9IHZhbGxleXZp ZXdfbW9kZXNldF9nbG9iYWxfcGlwZXMoc3RhdGUpOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJCXJldCA9 IGJyb2Fkd2VsbF9tb2Rlc2V0X2dsb2JhbF9waXBlcyhzdGF0ZSk7Cj4+PiArCj4+PiAgCQlpZiAo cmV0KQo+Pj4gIAkJCXJldHVybiByZXQ7Cj4+PiAgCX0KPj4+IEBAIC0xNDY3Nyw2ICsxNDg3MCw5 IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+Pj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBpdmJfbWFudWFsX2Zk aV9saW5rX3RyYWluOwo+Pj4gIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9B RFdFTEwoZGV2KSkgewo+Pj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBo c3dfZmRpX2xpbmtfdHJhaW47Cj4+PiArCQlpZiAoSVNfQlJPQURXRUxMKGRldikpCj4+PiArCQkJ ZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzID0KPj4+ICsJCQkJYnJv YWR3ZWxsX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlczsKPj4+ICAJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKPj4+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfZ2xvYmFsX3Jl c291cmNlcyA9Cj4+PiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9yZXNvdXJjZXM7Cj4+ PiAtLSAKPj4+IDEuOS4xCj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4KPj4gLS0gCj4+IEphbmkgTmlrdWxhLCBJbnRlbCBP cGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgo+Cj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVs IE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9w ZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==