From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 10/12] drm/i915: HSW cdclk support Date: Fri, 29 May 2015 16:51:55 +0300 Message-ID: <20150529135155.GI5176@intel.com> References: <1432282962-3530-1-git-send-email-mika.kahola@intel.com> <1432282962-3530-11-git-send-email-mika.kahola@intel.com> <20150529113041.GB28280@strange.ger.corp.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 CAA5F6ED83 for ; Fri, 29 May 2015 06:52:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150529113041.GB28280@strange.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Damien Lespiau Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMjksIDIwMTUgYXQgMTI6MzA6NDFQTSArMDEwMCwgRGFtaWVuIExlc3BpYXUg d3JvdGU6Cj4gT24gRnJpLCBNYXkgMjIsIDIwMTUgYXQgMTE6MjI6NDBBTSArMDMwMCwgTWlrYSBL YWhvbGEgd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+ID4gCj4gPiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgY2hhbmdpbmcgdGhl IGNkY2xrIGZyZXF1ZW5jeSBkdXJpbmcgcnVudGltZSBvbgo+ID4gSFNXLiBWTFYvQ0hWIGFscmVh ZHkgaGF2ZSBzdXBwb3J0IGZvciB0aGlzLCBzbyB3ZSBjYW4gZm9sbG93IHRoZWlyCj4gPiBleGFt cGxlIGZvciB0aGUgbW9zdCBwYXJ0LiBPbmx5IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJvZ3JhbW1p bmcgZGlmZmVycywKPiA+IHRoZSByZXN0IGlzIHByZXR0eSBtdWNoIHRoZSBzYW1lLgo+ID4gCj4g PiBUaGUgcGlwZSBwaXhlbCByYXRlIHN0dWZmIGlzIGhhbmRsZWQgYSBiaXQgZGlmZmVyZW50bHkg Zm9yIG5vdyBkdWUgdG8KPiA+IHRoZSBkaWZmZXJlbmNlIGluIHBjaCB2cy4gZ21jaCBwZml0IGhh bmRsaW5nLiBFdmVudHVhbGx5IHdlIHNob3VsZCB1bmlmeQo+ID4gdGhhdCBwYXJ0IHRvIGVsaW1p bmF0ZSB3aGF0IGlzIGVzc2VudGlhbGx5IGR1cGxpY2F0ZWQgY29kZS4KPiA+IAo+ID4gdjI6IEdy YWIgcnBzLmh3X2xvY2sgYXJvdW5kIHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKCkKPiA+IHYzOiBS ZWJhc2UgZHVlIHRvIHBvd2VyIHdlbGwgdnMuIC5nbG9iYWxfcmVzb3VyY2VzKCkgcmVvcmRlcmlu Zwo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4gCj4gPiB2MzogUmViYXNlZCB0byB0aGUgbGF0ZXN0Cj4gPiB2 NDogUmVmb3JtYXR0aW5nICdoYXN3ZWxsX21vZGVzZXRfZ2xvYmFsX3BpcGVzJyBmdW5jdGlvbiB0 bwo+ID4gICAgIHN1cHBvcnQgYXRvbWljIHN0YXRlCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1p a2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gPiAKPiA+IEF1dGhvcjogICAgVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+IAo+ IEFwYXJ0IGZyb20gdGhlIHNtYWxsIHJlbWFyayBiZWxvdywgaXQgbG9va3MgbGlrZSBpdCBkb2Vz IHdoYXQgdGhlIHNwZWMKPiB0ZWxsIHVzIHRvIGRvLgo+IAo+IEhvd2V2ZXIgdGhlcmUgYXJlIGEg ZmV3IGV4dHJhIGNvbW1lbnRzOgo+IAo+ICAgLSBJIHJlbWVtYmVyIHNvbWVvbmUgc2F5aW5nIGNo YW5naW5nIENEQ0xLIGhhc24ndCBiZWVuIHZhbGlkYXRlZCBvbgo+ICAgICBIU1csIHRoYXQncyB1 c3VhbGx5IGEgcmVkIGZsYWcuIEV2ZW4gaWYgaXQgc2VlbXMgbGlrZSBpdCdzIHdvcmtpbmcsCj4g ICAgIEkndmUgbm8gaWRlYSB3aGF0IHRoZSBwY29kZSBkb2VzIHdpdGggdGhlIG5vdGlmaWNhdGlv biBvbiBVTFggZm9yCj4gICAgIGluc3RhbmNlCgpZZWFoIEkgc3VwcG9zZSBpdCdzIGJldHRlciB0 byByZW9yZGVyIHRoaW5ncyBzbyB0aGF0IHRoZSBCRFcgcGF0Y2ggY29tZXMKZmlyc3QuIFRoZW4g aWYgd2UgZGVjaWRlIHRvIGRyb3AgdGhlIEhTVyBvbmUgaXQgd29uJ3QgY2F1c2UgcHJvYmxlbXMg Zm9yCnRoZSBCRFcgcGF0Y2guCgo+ICAgLSBDaGFuZ2luZyBDRENMSyBtZWFucyB3ZSBoYXZlIHRv IGJyaW5nIHdob2xlIGRpc3BsYXkgZG93biBhbmQgdXAKPiAgICAgYWdhaW4sIHdoaWNoIHdpbGwg bWFrZSB0aGUgY3VycmVudCBkaXNwbGF5IGZsaWNrZXIgd2hlbiBob3RwbHVnZ2luZwo+ICAgICBh IHNjcmVlbiB0aGF0IG5lZWRzIGEgQ0RDTEsgYnVtcCBmb3IgaW5zdGFuY2UuCj4gICAtIGl0J2Qg YmUgbmljZSB0byBoYXZlIHNvbWUgaWRlYSBvZiB0aGUgcG93ZXIgZ2FpbiBydW5uaW5nIGF0IGEg bG93ZXIKPiAgICAgZnJlcXVlbmN5Cj4gCj4gLS0gCj4gRGFtaWVuCj4gCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgICAzICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IGluZGV4IDE0MzY2YzguLjAx NWZlMTIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBAQCAtNjcwMSw2ICs2 NzAxLDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPiAgI2RlZmluZQkgIEdFTjZf UENPREVfUkVBRF9SQzZWSURTCQkweDUKPiA+ICAjZGVmaW5lICAgICBHRU42X0VOQ09ERV9SQzZf VklEKG12KQkJKCgobXYpIC0gMjQ1KSAvIDUpCj4gPiAgI2RlZmluZSAgICAgR0VONl9ERUNPREVf UkM2X1ZJRCh2aWRzKQkJKCgodmlkcykgKiA1KSArIDI0NSkKPiA+ICsjZGVmaW5lICAgSFNXX1BD T0RFX0RFX1dSSVRFX0ZSRVFfUkVRCQkweDE3Cj4gPiAgI2RlZmluZSAgIEdFTjlfUENPREVfUkVB RF9NRU1fTEFURU5DWQkJMHg2Cj4gPiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZF TF9NQVNLCQkweEZGCj4gPiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8xXzVf U0hJRlQJOAo+ID4gQEAgLTcxNTksMTAgKzcxNjAsMTIgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93 ZWxscyB7Cj4gPiAgI2RlZmluZSAgTENQTExfUExMX0xPQ0sJCQkoMTw8MzApCj4gPiAgI2RlZmlu ZSAgTENQTExfQ0xLX0ZSRVFfTUFTSwkJKDM8PDI2KQo+ID4gICNkZWZpbmUgIExDUExMX0NMS19G UkVRXzQ1MAkJKDA8PDI2KQo+ID4gKyNkZWZpbmUgIExDUExMX0NMS19GUkVRX0FMVF9IU1cJCSgx PDwyNikgLyogMzM3LjUgKFVMWCkgb3IgNTQwICovCj4gPiAgI2RlZmluZSAgTENQTExfQ0xLX0ZS RVFfNTRPX0JEVwkJKDE8PDI2KQo+ID4gICNkZWZpbmUgIExDUExMX0NMS19GUkVRXzMzN181X0JE VwkoMjw8MjYpCj4gPiAgI2RlZmluZSAgTENQTExfQ0xLX0ZSRVFfNjc1X0JEVwkJKDM8PDI2KQo+ ID4gICNkZWZpbmUgIExDUExMX0NEX0NMT0NLX0RJU0FCTEUJCSgxPDwyNSkKPiA+ICsjZGVmaW5l ICBMQ1BMTF9ST09UX0NEX0NMT0NLX0RJU0FCTEUJKDE8PDI0KQo+ID4gICNkZWZpbmUgIExDUExM X0NEMlhfQ0xPQ0tfRElTQUJMRQkoMTw8MjMpCj4gPiAgI2RlZmluZSAgTENQTExfUE9XRVJfRE9X Tl9BTExPVwkJKDE8PDIyKQo+ID4gICNkZWZpbmUgIExDUExMX0NEX1NPVVJDRV9GQ0xLCQkoMTw8 MjEpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBmZWJmOTkz Li41NTZkMGVjNyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g PiBAQCAtNTU0NSw3ICs1NTQ1LDE2IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9tYXhfY2Rj bGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCj4gPiAtCWlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2KSkgewo+ID4gKwkJaWYg KEk5MTVfUkVBRChGVVNFX1NUUkFQKSAmIEhTV19DRENMS19MSU1JVCkKPiA+ICsJCQlkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEgPSA0NTAwMDA7Cj4gPiArCQllbHNlIGlmIChJU19IU1dfVUxYKGRl dikpCj4gPiArCQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gMzM3NTAwOwo+ID4gKwkJZWxz ZSBpZiAoSVNfSFNXX1VMVChkZXYpKQo+ID4gKwkJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9 IDQ1MDAwMDsKPiA+ICsJCWVsc2UKPiA+ICsJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA1 NDAwMDA7Cj4gPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gPiAgCQlkZXZf cHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA0MDAwMDA7Cj4gPiAgCX0gZWxzZSB7Cj4gPiAgCQkvKiBv dGhlcndpc2UgYXNzdW1lIGNkY2xrIGlzIGZpeGVkICovCj4gPiBAQCAtOTQwNCw2ICs5NDEzLDEz OSBAQCBzdGF0aWMgdm9pZCBicm94dG9uX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gIAkJYnJveHRvbl9zZXRfY2RjbGsoZGV2 LCByZXFfY2RjbGspOwo+ID4gIH0KPiA+ICAKPiA+ICsvKiBjb21wdXRlIHRoZSBtYXggcmF0ZSBm b3IgbmV3IGNvbmZpZ3VyYXRpb24gKi8KPiA+ICtzdGF0aWMgaW50IGlsa19tYXhfcGl4ZWxfcmF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiA+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGM7Cj4gPiArCWludCBtYXhfcGl4ZWxfcmF0ZSA9IDA7Cj4gPiArCj4gPiArCWZvcl9lYWNo X2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gPiArCQlpZiAoY3J0Yy0+bmV3X2VuYWJsZWQpCj4g PiArCQkJbWF4X3BpeGVsX3JhdGUgPSBtYXgoKGludCltYXhfcGl4ZWxfcmF0ZSwKPiA+ICsJCQkJ CSAgICAgKGludClpbGtfcGlwZV9waXhlbF9yYXRlKGNydGMtPmNvbmZpZykpOwo+ID4gKwl9Cj4g PiArCj4gPiArCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPiA+ICt9Cj4gCj4gbmV3X2VuYWJsZWQg ZG9lc24ndCBsb29rIGxpa2Ugd2hhdCB3ZSB3YW50IHRvIGxvb2sgYXQsIGl0IGxvb2tzIGxpa2Ug YQo+IHRlbXBvcmFyeSBmaWVsZCB3ZSBzaG91bGRuJ3QgYmUgdXNpbmcgaW4gbmV3IGNvZGUuIE1h eWJlCj4gY3J0Yy0+c3RhdGUtPmVuYWJsZSBpbnN0ZWFkPwo+IAo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgaGFzd2VsbF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICsJCQkgICAgICBpbnQgbWF4X3BpeGVsX3JhdGUpCj4gPiArewo+ID4gKwlpbnQgY2RjbGs7 Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIEZJWE1FIHNob3VsZCBhbHNvIGFjY291bnQgZm9yIHBs YW5lIHJhdGlvCj4gPiArCSAqIG9uY2UgNjRicHAgcGl4ZWwgZm9ybWF0cyBhcmUgc3VwcG9ydGVk Lgo+ID4gKwkgKi8KPiA+ICsJaWYgKG1heF9waXhlbF9yYXRlID4gNDUwMDAwKQo+ID4gKwkJY2Rj bGsgPSA1NDAwMDA7Cj4gPiArCWVsc2UgaWYgKG1heF9waXhlbF9yYXRlID4gMzM3NTAwIHx8ICFJ U19IU1dfVUxYKGRldl9wcml2KSkKPiA+ICsJCWNkY2xrID0gNDUwMDAwOwo+ID4gKwllbHNlCj4g PiArCQljZGNsayA9IDMzNzUwMDsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRklYTUUgbW92ZSB0 aGUgY2RjbGsgY2FjbHVsYXRpb24gdG8KPiA+ICsJICogY29tcHV0ZV9jb25maWcoKSBzbyB3ZSBj YW4gZmFpbCBncmFjZWd1bGx5Lgo+ID4gKwkgKi8KPiA+ICsJaWYgKGNkY2xrID4gZGV2X3ByaXYt Pm1heF9jZGNsa19mcmVxKSB7Cj4gPiArCQlEUk1fRVJST1IoInJlcXVlc3RlZCBjZGNsayAoJWQg a0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKPiA+ICsJCQkgIGNkY2xrLCBkZXZfcHJpdi0+ bWF4X2NkY2xrX2ZyZXEpOwo+ID4gKwkJY2RjbGsgPSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXE7 Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIGNkY2xrOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgdm9pZCBoYXN3ZWxsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2Rj bGspCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ID4gKwl1aW50MzJfdCB2YWw7Cj4gPiArCj4gPiArCWlmIChXQVJOKChJ OTE1X1JFQUQoTENQTExfQ1RMKSAmCj4gPiArCQkgIChMQ1BMTF9QTExfRElTQUJMRSB8IExDUExM X1BMTF9MT0NLIHwKPiA+ICsJCSAgIExDUExMX0NEX0NMT0NLX0RJU0FCTEUgfCBMQ1BMTF9ST09U X0NEX0NMT0NLX0RJU0FCTEUgfAo+ID4gKwkJICAgTENQTExfQ0QyWF9DTE9DS19ESVNBQkxFIHwg TENQTExfUE9XRVJfRE9XTl9BTExPVyB8Cj4gPiArCQkgICBMQ1BMTF9DRF9TT1VSQ0VfRkNMSykp ICE9IExDUExMX1BMTF9MT0NLLAo+ID4gKwkJICJ0cnlpbmcgdG8gY2hhbmdlIGNkY2xrIGZyZXF1 ZW5jeSB3aXRoIGNkY2xrIG5vdCBlbmFibGVkXG4iKSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ ICsJdmFsID0gSTkxNV9SRUFEKExDUExMX0NUTCk7Cj4gPiArCXZhbCAmPSB+TENQTExfQ0xLX0ZS RVFfTUFTSzsKPiA+ICsKPiA+ICsJc3dpdGNoIChjZGNsaykgewo+ID4gKwljYXNlIDQ1MDAwMDoK PiA+ICsJCXZhbCB8PSBMQ1BMTF9DTEtfRlJFUV80NTA7Cj4gPiArCQlicmVhazsKPiA+ICsJY2Fz ZSAzMzc1MDA6Cj4gPiArCWNhc2UgNTQwMDAwOgo+ID4gKwkJdmFsIHw9IExDUExMX0NMS19GUkVR X0FMVF9IU1c7Cj4gPiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCVdBUk4oMSwgImlu dmFsaWQgY2RjbGsgZnJlcXVlbmN5XG4iKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlJOTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsKPiA+ICsKPiA+ICsJaWYgKElTX0hTV19V TFgoZGV2KSkgewo+ID4gKwkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiA+ ICsJCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBIU1dfUENPREVfREVfV1JJVEVf RlJFUV9SRVEsCj4gPiArCQkJCQljZGNsayA9PSAzMzc1MDApOwo+ID4gKwkJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ID4gKwl9Cj4gPiArCj4gPiArCWludGVsX3VwZGF0 ZV9jZGNsayhkZXYpOwo+ID4gKwo+ID4gKwlXQVJOKGNkY2xrICE9IGRldl9wcml2LT5jZGNsa19m cmVxLAo+ID4gKwkgICAgICJjZGNsayByZXF1ZXN0ZWQgJWQga0h6IGJ1dCBnb3QgJWQga0h6XG4i LAo+ID4gKwkgICAgIGNkY2xrLCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBpbnQgaGFzd2VsbF9tb2Rlc2V0X2dsb2JhbF9waXBlcyhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ICsJaW50IG1h eF9waXhjbGsgPSBpbGtfbWF4X3BpeGVsX3JhdGUoZGV2X3ByaXYpOwo+ID4gKwlpbnQgY2RjbGss IGk7Cj4gPiArCj4gPiArCWNkY2xrID0gaGFzd2VsbF9jYWxjX2NkY2xrKGRldl9wcml2LCBtYXhf cGl4Y2xrKTsKPiA+ICsKPiA+ICsJaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCS8qIGFkZCBhbGwgYWN0aXZlIHBpcGVzIHRvIHRo ZSBzdGF0ZSAqLwo+ID4gKwlmb3JfZWFjaF9jcnRjKHN0YXRlLT5kZXYsIGNydGMpIHsKPiA+ICsJ CWlmICghY3J0Yy0+c3RhdGUtPmVuYWJsZSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJ CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ ICsJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gPiArCQkJcmV0dXJuIFBUUl9FUlIoY3J0Y19z dGF0ZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogZGlzYWJsZS9lbmFibGUgYWxsIGN1cnJlbnRs eSBhY3RpdmUgcGlwZXMgd2hpbGUgd2UgY2hhbmdlIGNkY2xrICovCj4gPiArCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpCj4gPiArCQlpZiAoY3J0Y19z dGF0ZS0+ZW5hYmxlKQo+ID4gKwkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4g PiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBoYXN3ZWxs X21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiA+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ ICsJaW50IG1heF9waXhlbF9yYXRlID0gaWxrX21heF9waXhlbF9yYXRlKGRldl9wcml2KTsKPiA+ ICsJaW50IHJlcV9jZGNsayA9IGhhc3dlbGxfY2FsY19jZGNsayhkZXZfcHJpdiwgbWF4X3BpeGVs X3JhdGUpOwo+ID4gKwo+ID4gKwlpZiAocmVxX2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVx KSB7Cj4gPiArCQloYXN3ZWxsX3NldF9jZGNsayhkZXYsIHJlcV9jZGNsayk7Cj4gPiArCX0KPiA+ ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCBoYXN3ZWxsX2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ICAJCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gPiAgewo+ID4gQEAgLTEyNTgyLDEwICsxMjcyNCwxNiBAQCBzdGF0 aWMgaW50IF9faW50ZWxfc2V0X21vZGVfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiA+ICAJICogbW9kZSBzZXQgb24gdGhpcyBjcnRjLiAgRm9yIG90aGVyIGNydGNzIHdl IG5lZWQgdG8gdXNlIHRoZQo+ID4gIAkgKiBhZGp1c3RlZF9tb2RlIGJpdHMgaW4gdGhlIGNydGMg ZGlyZWN0bHkuCj4gPiAgCSAqLwo+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0JS T1hUT04oZGV2KSkgewo+ID4gLQkJcmV0ID0gdmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9waXBl cyhzdGF0ZSk7Cj4gPiAtCQlpZiAocmV0KQo+ID4gLQkJCXJldHVybiByZXQ7Cj4gPiArCWlmIChJ U19WQUxMRVlWSUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkg ewo+ID4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPiA+ ICsJCQlyZXQgPSB2YWxsZXl2aWV3X21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0YXRlKTsKPiA+ICsJ CQlpZiAocmV0KQo+ID4gKwkJCQlyZXR1cm4gcmV0Owo+ID4gKwkJfSBlbHNlIHsKPiA+ICsJCQly ZXQgPSBoYXN3ZWxsX21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0YXRlKTsKPiA+ICsJCQlpZiAocmV0 KQo+ID4gKwkJCQlyZXR1cm4gcmV0Owo+ID4gKwkJfQo+ID4gIAl9Cj4gPiAgCj4gPiAgCXJldCA9 IF9faW50ZWxfc2V0X21vZGVfc2V0dXBfcGxscyhzdGF0ZSk7Cj4gPiBAQCAtMTQ0NjgsNiArMTQ2 MTYsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmZkaV9saW5rX3RyYWluID0gaXZiX21hbnVh bF9mZGlfbGlua190cmFpbjsKPiA+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikgfHwgSVNf QlJPQURXRUxMKGRldikpIHsKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmZkaV9saW5rX3RyYWlu ID0gaHN3X2ZkaV9saW5rX3RyYWluOwo+ID4gKwkJaWYgKElTX0hBU1dFTEwoZGV2KSkKPiA+ICsJ CQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2dsb2JhbF9yZXNvdXJjZXMgPQo+ID4gKwkJCQlo YXN3ZWxsX21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlczsKPiA+ICAJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfZ2xvYmFsX3Jl c291cmNlcyA9Cj4gPiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9yZXNvdXJjZXM7Cj4g PiAtLSAKPiA+IDEuOS4xCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==