From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/11] drm/i915: Store rawclk_freq in dev_priv Date: Tue, 12 Jan 2016 19:47:26 +0200 Message-ID: <20160112174726.GB23290@intel.com> References: <1448893432-6978-1-git-send-email-ville.syrjala@linux.intel.com> <1448893432-6978-8-git-send-email-ville.syrjala@linux.intel.com> <87oaea49oy.fsf@intel.com> <20151201132513.GV4437@intel.com> <877fky41ju.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 62EED6E421 for ; Tue, 12 Jan 2016 09:47:29 -0800 (PST) Content-Disposition: inline In-Reply-To: <877fky41ju.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 T24gVHVlLCBEZWMgMDEsIDIwMTUgYXQgMDU6NDM6MzNQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAwMSBEZWMgMjAxNSwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiBPbiBUdWUsIERlYyAwMSwgMjAxNSBhdCAwMjo0 Nzo0MVBNICswMjAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiA+PiBPbiBNb24sIDMwIE5vdiAyMDE1 LCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+PiA+IEZyb206IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4gPgo+ID4+ID4g R2VuZXJhbGl6ZSByYXdjbGsgaGFuZGxpbmcgYnkgc3RvcmluZyBpdCBpbiBkZXZfcHJpdi4KPiA+ PiA+Cj4gPj4gPiBQcmVzdW1hYmx5IG91ciBocmF3Y2xrIHJlYWRvdXQgd29ya3MgYXQgbGVhc3Qg Zm9yIENURyBhbmQgRUxLCj4gPj4gPiBzaW5jZSB3ZSd2ZSBiZWVuIHVzaW5nIGl0IGZvciBEUCBB VVggb24gdGhvc2UgcGxhdGZvcm1zLiBUaGVyZQo+ID4+ID4gYXJlIG5vIHJlYWwgZG9jcyBhbnlt b3JlIGFmdGVyIGNvbmZpZ2RiIHZhbmlzaGVkLCBzbyB0aGUgb25seQo+ID4+ID4gcmVmZXJlbmNl IGlzIHRoZSBwdWJsaWMgQ1RHIEdNQ0ggc3BlYy4gV2hhdCBiaXRzIGFyZSBsaXN0ZWQgaW4KPiA+ PiA+IHRoYXQgZG9jIG1hdGNoIG91ciBjb2RlLiBUaGUgRUxLIEdNQ0ggc3BlYyBoYXZlIG5vIHJl bGV2YW50Cj4gPj4gPiBkZXRhaWxzIHVuZm9ydHVuYXRlbHkuCj4gPj4gPgo+ID4+ID4gVGhlIFBO ViBzaXR1YXRpb24gaXMgbGVzcyBjbGVhci4gU3RhcnRpbmcgZnJvbQo+ID4+ID4gY29tbWl0IGFh MTdjZGI0ZjgzNiAoImRybS9pOTE1OiBpbml0aWFsaXplIGJhY2tsaWdodCBtYXggZnJvbSBWQlQi KQo+ID4+ID4gd2UgYXNzdW1lIHRoYXQgdGhlIENURy9FTEsgaHJhd2NsayByZWFkb3V0IHdvcmtz IGZvciBQTlYgYXMgd2VsbC4KPiA+PiA+IEF0IGxlYXN0IHRoZSByZXN1bHRzICpzZWVtKiByZWFz b25hYmxlIGZvciBvbmUgUE5WIG1hY2hpbmUgKExlbm92bwo+ID4+ID4gSWRlYXBhZCBTMTAtM3Qp LiBTYWRseSB0aGUgUE5WIEdNQ0ggc3BlYyBkb2Vzbid0IGhhdmUgdGhlIGdvb2RzIG9uCj4gPj4g PiB0aGUgcmVsZXZhbnQgcmVnaXN0ZXIgZWl0aGVyLgo+ID4+ID4KPiA+PiA+IFNvIGxldCdzIGtl ZXAgYXNzdW1pbmcgaXQgd29ya3MgZm9yIFBOVixFTEssQ1RHIGFuZCByZWFkIGl0IG91dCBvbgo+ ID4+ID4gdGhvc2UgcGxhdGZvcm1zLiBHMzMgYWxzbyBoYXMgaHJhd2NsayBhY2NvcmRpbmcgdG8g c29tZSBub3Rlcwo+ID4+ID4gaW4gQlNwZWMsIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIGl0 IGZvciBhbnl0aGluZywgc28gbGV0J3Mgbm90Cj4gPj4gPiBldmVuIHRyeSB0byByZWFkIGl0IG91 dCB0aGVyZS4KPiA+PiAKPiA+PiBMb29rcyBzZW5zaWJsZSBidXQgbW9kZXJhdGVseSBzY2FyeSwg ZGlkIG5vdCByZXZpZXcgcHJvcGVybHkgeWV0LAo+ID4+IGhvd2V2ZXIgYSBmZXcgbml0cGlja3Mg YmVsb3cuCj4gPj4gCj4gPj4gPgo+ID4+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+PiA+IC0tLQo+ID4+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAxICsKPiA+PiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA1NSArKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KPiA+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAg fCAxNiArKysrKy0tLS0tLQo+ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICAgICB8ICAyIC0tCj4gPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAg IHwgMjQgKysrKysrKystLS0tLS0tLQo+ID4+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0 aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4gPj4gPgo+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gPj4gPiBpbmRleCA5YWIzZTI1ZGRmMzguLjY0ZmFjZDQxMDAzNyAxMDA2NDQKPiA+PiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiA+IEBAIC0xNzgxLDYgKzE3ODEsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPj4gPiAgCXVuc2lnbmVkIGludCBza2xfYm9vdF9j ZGNsazsKPiA+PiA+ICAJdW5zaWduZWQgaW50IGNkY2xrX2ZyZXEsIG1heF9jZGNsa19mcmVxOwo+ ID4+ID4gIAl1bnNpZ25lZCBpbnQgbWF4X2RvdGNsa19mcmVxOwo+ID4+ID4gKwl1bnNpZ25lZCBp bnQgcmF3Y2xrX2ZyZXE7Cj4gPj4gPiAgCXVuc2lnbmVkIGludCBocGxsX2ZyZXE7Cj4gPj4gPiAg CXVuc2lnbmVkIGludCBjemNsa19mcmVxOwo+ID4+ID4gIAo+ID4+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ID4+ID4gaW5kZXggODQzOTVjOGM5ZGNlLi44NGExMzU5ZWNiYTUg MTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+ID4g QEAgLTE2OCw0OSArMTY4LDYxIEBAIHN0YXRpYyBpbnQgdmx2X2dldF9jY2tfY2xvY2tfaHBsbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gPiAgCXJldHVybiBESVZfUk9V TkRfQ0xPU0VTVChkZXZfcHJpdi0+aHBsbF9mcmVxIDw8IDEsIGRpdmlkZXIgKyAxKTsKPiA+PiA+ ICB9Cj4gPj4gPiAgCj4gPj4gPiAtaW50Cj4gPj4gPiAtaW50ZWxfcGNoX3Jhd2NsayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4+ID4gK3N0YXRpYyBpbnQKPiA+PiA+ICtpbnRlbF9wY2hfcmF3 Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+PiAKPiA+PiBJIGd1ZXNz IGludGVsXyBwcmVmaXggd291bGQgbm90IGJlIG5lZWRlZCBhbnltb3JlLiAqc2hydWcqLgo+ID4K PiA+IFllYWgsIGxhenluZXNzIHdvbiBhbmQgSSBkaWRuJ3Qgc3RhcnQgcmVuYW1pbmcgc3R1ZmYg dG9vIG11Y2guCj4gCj4gTm8gd29ycmllcy4KPiAKPiA+Cj4gPj4gCj4gPj4gPiAgewo+ID4+ID4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4+ID4gLQo+ID4+ID4gLQlXQVJOX09OKCFIQVNfUENIX1NQTElUKGRldikpOwo+ID4+ID4gKwly ZXR1cm4gKEk5MTVfUkVBRChQQ0hfUkFXQ0xLX0ZSRVEpICYgUkFXQ0xLX0ZSRVFfTUFTSykgKiAx MDAwOwo+ID4+ID4gK30KPiA+PiA+ICAKPiA+PiA+IC0JcmV0dXJuIEk5MTVfUkVBRChQQ0hfUkFX Q0xLX0ZSRVEpICYgUkFXQ0xLX0ZSRVFfTUFTSzsKPiA+PiA+ICtzdGF0aWMgaW50Cj4gPj4gPiAr aW50ZWxfdmx2X2hyYXdjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ ID4gK3sKPiA+PiA+ICsJcmV0dXJuIDIwMDAwMDsKPiA+PiA+ICB9Cj4gPj4gPiAgCj4gPj4gPiAt LyogaHJhd2Nsb2NrIGlzIDEvNCB0aGUgRlNCIGZyZXF1ZW5jeSAqLwo+ID4+ID4gLWludCBpbnRl bF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gPiArc3RhdGljIGludAo+ID4+ ID4gK2ludGVsX2c0eF9ocmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+PiA+ICB7Cj4gPj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gPj4gPiAgCXVpbnQzMl90IGNsa2NmZzsKPiA+PiA+ICAKPiA+PiA+ IC0JLyogVGhlcmUgaXMgbm8gQ0xLQ0ZHIHJlZyBpbiBWYWxsZXl2aWV3LiBWTFYgaHJhd2NsayBp cyAyMDAgTUh6ICovCj4gPj4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPj4gPiAtCQly ZXR1cm4gMjAwOwo+ID4+ID4gLQo+ID4+ID4gKwkvKiBocmF3Y2xvY2sgaXMgMS80IHRoZSBGU0Ig ZnJlcXVlbmN5ICovCj4gPj4gPiAgCWNsa2NmZyA9IEk5MTVfUkVBRChDTEtDRkcpOwo+ID4+ID4g IAlzd2l0Y2ggKGNsa2NmZyAmIENMS0NGR19GU0JfTUFTSykgewo+ID4+ID4gIAljYXNlIENMS0NG R19GU0JfNDAwOgo+ID4+ID4gLQkJcmV0dXJuIDEwMDsKPiA+PiA+ICsJCXJldHVybiAxMDAwMDA7 Cj4gPj4gPiAgCWNhc2UgQ0xLQ0ZHX0ZTQl81MzM6Cj4gPj4gPiAtCQlyZXR1cm4gMTMzOwo+ID4+ ID4gKwkJcmV0dXJuIDEzMzMzMzsKPiA+PiA+ICAJY2FzZSBDTEtDRkdfRlNCXzY2NzoKPiA+PiA+ IC0JCXJldHVybiAxNjY7Cj4gPj4gPiArCQlyZXR1cm4gMTY2NjY3Owo+ID4+ID4gIAljYXNlIENM S0NGR19GU0JfODAwOgo+ID4+ID4gLQkJcmV0dXJuIDIwMDsKPiA+PiA+ICsJCXJldHVybiAyMDAw MDA7Cj4gPj4gPiAgCWNhc2UgQ0xLQ0ZHX0ZTQl8xMDY3Ogo+ID4+ID4gLQkJcmV0dXJuIDI2NjsK PiA+PiA+ICsJCXJldHVybiAyNjY2Njc7Cj4gPj4gPiAgCWNhc2UgQ0xLQ0ZHX0ZTQl8xMzMzOgo+ ID4+ID4gLQkJcmV0dXJuIDMzMzsKPiA+PiA+ICsJCXJldHVybiAzMzMzMzM7Cj4gPj4gPiAgCS8q IHRoZXNlIHR3byBhcmUganVzdCBhIGd1ZXNzOyBvbmUgb2YgdGhlbSBtaWdodCBiZSByaWdodCAq Lwo+ID4+ID4gIAljYXNlIENMS0NGR19GU0JfMTYwMDoKPiA+PiA+ICAJY2FzZSBDTEtDRkdfRlNC XzE2MDBfQUxUOgo+ID4+ID4gLQkJcmV0dXJuIDQwMDsKPiA+PiA+ICsJCXJldHVybiA0MDAwMDA7 Cj4gPj4gPiAgCWRlZmF1bHQ6Cj4gPj4gPiAtCQlyZXR1cm4gMTMzOwo+ID4+ID4gKwkJcmV0dXJu IDEzMzMzMzsKPiA+PiA+ICAJfQo+ID4+ID4gIH0KPiA+PiA+ICAKPiA+PiA+ICtzdGF0aWMgdm9p ZCBpbnRlbF91cGRhdGVfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+PiA+ICt7Cj4gPj4gPiArCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKPiA+PiA+ICsJ CWRldl9wcml2LT5yYXdjbGtfZnJlcSA9IGludGVsX3BjaF9yYXdjbGsoZGV2X3ByaXYpOwo+ID4+ ID4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiA+PiA+ICsJCWRldl9wcml2 LT5yYXdjbGtfZnJlcSA9IGludGVsX3Zsdl9ocmF3Y2xrKGRldl9wcml2KTsKPiA+PiA+ICsJZWxz ZSBpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gPj4gPiAr CQlkZXZfcHJpdi0+cmF3Y2xrX2ZyZXEgPSBpbnRlbF9nNHhfaHJhd2NsayhkZXZfcHJpdik7Cj4g Pj4gPiArCWVsc2UKPiA+PiA+ICsJCXJldHVybjsgLyogbm8gcmF3Y2xrIG9uIG90aGVyIHBsYXRm b3Jtcywgb3Igbm8gbmVlZCB0byBrbm93IGl0ICovCj4gPj4gPiArCj4gPj4gPiArCURSTV9ERUJV R19EUklWRVIoInJhd2NsayByYXRlOiAlZCBrSHpcbiIsIGRldl9wcml2LT5yYXdjbGtfZnJlcSk7 Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jemNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gPiAgewo+ID4+ID4gIAlp ZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ID4+ID4gQEAgLTE1MTQ1LDYgKzE1MTU3LDcg QEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiA+ ICAJfQo+ID4+ID4gIAo+ID4+ID4gIAlpbnRlbF91cGRhdGVfY3pjbGsoZGV2X3ByaXYpOwo+ID4+ ID4gKwlpbnRlbF91cGRhdGVfcmF3Y2xrKGRldl9wcml2KTsKPiA+PiA+ICAJaW50ZWxfdXBkYXRl X2NkY2xrKGRldik7Cj4gPj4gPiAgCj4gPj4gPiAgCWludGVsX3NoYXJlZF9kcGxsX2luaXQoZGV2 KTsKPiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+ID4gaW5kZXggZjMzNWM5MmI0ZmE3 Li4yYTliNTcxMGVlODMgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g Pj4gPiBAQCAtNjc1LDEzICs2NzUsMTMgQEAgaW50ZWxfZHBfYXV4X3dhaXRfZG9uZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCBib29sIGhhc19hdXhfaXJxKQo+ID4+ID4gIHN0YXRpYyB1aW50 MzJfdCBpOXh4X2dldF9hdXhfY2xvY2tfZGl2aWRlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCBpbnQgaW5kZXgpCj4gPj4gPiAgewo+ID4+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+PiA+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4+ ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2Rp Z19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+PiA+ICAKPiA+PiA+ICAJLyoKPiA+PiA+ICAJICog VGhlIGNsb2NrIGRpdmlkZXIgaXMgYmFzZWQgb2ZmIHRoZSBocmF3Y2xrLCBhbmQgd291bGQgbGlr ZSB0byBydW4gYXQKPiA+PiA+ICAJICogMk1Iei4gIFNvLCB0YWtlIHRoZSBocmF3Y2xrIHZhbHVl IGFuZCBkaXZpZGUgYnkgMiBhbmQgdXNlIHRoYXQKPiA+PiA+ICAJICovCj4gPj4gCj4gPj4gVGhl IGNvbW1lbnQgbmVlZHMgdXBkYXRpbmcuIFBvc3NpYmx5IGVsc2V3aGVyZSB0b28gb3V0c2lkZSBv ZiBwYXRjaAo+ID4+IGNvbnRleHQuCj4gPgo+ID4gVGhhdCdzIGJlaW5nIGRvbmUgaW4gcGF0Y2gg MTEvMTEuIEkgYXNzdW1lIHRoYXQncyBnb29kIGVub3VnaCBwbGFjZSBmb3IKPiA+IHlvdT8KPiAK PiBZZXMuCj4gCj4gPgo+ID4+IAo+ID4+ID4gLQlyZXR1cm4gaW5kZXggPyAwIDogRElWX1JPVU5E X0NMT1NFU1QoaW50ZWxfaHJhd2NsayhkZXYpLCAyKTsKPiA+PiA+ICsJcmV0dXJuIGluZGV4ID8g MCA6IERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5yYXdjbGtfZnJlcSwgMjAwMCk7Cj4gPj4g PiAgfQo+ID4+ID4gIAo+ID4+ID4gIHN0YXRpYyB1aW50MzJfdCBpbGtfZ2V0X2F1eF9jbG9ja19k aXZpZGVyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBpbmRleCkKPiA+PiA+IEBAIC02 OTMsMTIgKzY5MywxMCBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2dldF9hdXhfY2xvY2tfZGl2aWRl cihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgaW5kZXgpCj4gPj4gPiAgCWlmIChpbmRl eCkKPiA+PiA+ICAJCXJldHVybiAwOwo+ID4+ID4gIAo+ID4+ID4gLQlpZiAoaW50ZWxfZGlnX3Bv cnQtPnBvcnQgPT0gUE9SVF9BKSB7Cj4gPj4gPiArCWlmIChpbnRlbF9kaWdfcG9ydC0+cG9ydCA9 PSBQT1JUX0EpCj4gPj4gPiAgCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPmNk Y2xrX2ZyZXEsIDIwMDApOwo+ID4+ID4gLQo+ID4+ID4gLQl9IGVsc2Ugewo+ID4+ID4gLQkJcmV0 dXJuIERJVl9ST1VORF9DTE9TRVNUKGludGVsX3BjaF9yYXdjbGsoZGV2KSwgMik7Cj4gPj4gPiAt CX0KPiA+PiA+ICsJZWxzZQo+ID4+ID4gKwkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9w cml2LT5yYXdjbGtfZnJlcSwgMjAwMCk7Cj4gPj4gPiAgfQo+ID4+ID4gIAo+ID4+ID4gIHN0YXRp YyB1aW50MzJfdCBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsIGludCBpbmRleCkKPiA+PiA+IEBAIC03MTksNyArNzE3LDcgQEAgc3RhdGljIHVpbnQz Ml90IGhzd19nZXRfYXV4X2Nsb2NrX2RpdmlkZXIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwg aW50IGluZGV4KQo+ID4+ID4gIAkJZGVmYXVsdDogcmV0dXJuIDA7Cj4gPj4gPiAgCQl9Cj4gPj4g PiAgCX0gZWxzZSAgewo+ID4+ID4gLQkJcmV0dXJuIGluZGV4ID8gMCA6IERJVl9ST1VORF9DTE9T RVNUKGludGVsX3BjaF9yYXdjbGsoZGV2KSwgMik7Cj4gPj4gPiArCQlyZXR1cm4gaW5kZXggPyAw IDogRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPnJhd2Nsa19mcmVxLCAyMDAwKTsKPiA+PiA+ ICAJfQo+ID4+ID4gIH0KPiA+PiA+ICAKPiA+PiA+IEBAIC01MjM3LDcgKzUyMzUsNyBAQCBpbnRl bF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+PiA+ICB7Cj4gPj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gPiAgCXUzMiBwcF9vbiwgcHBfb2ZmLCBwcF9k aXYsIHBvcnRfc2VsID0gMDsKPiA+PiA+IC0JaW50IGRpdiA9IEhBU19QQ0hfU1BMSVQoZGV2KSA/ IGludGVsX3BjaF9yYXdjbGsoZGV2KSA6IGludGVsX2hyYXdjbGsoZGV2KTsKPiA+PiA+ICsJaW50 IGRpdiA9IGRldl9wcml2LT5yYXdjbGtfZnJlcSAvIDEwMDA7Cj4gPgo+ID4gQlRXIGhlcmUgc3Rp bGwgcm91bmQgZG93biB3aGVuIGNhbGN1bGF0aW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIgZGl2aXNv ci4KPiA+IENvbnNpZGVyaW5nIHRoYXQgb25lIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGUgcGFuZWwg cG93ZXIgZGVsYXlzLCBJJ20KPiA+IHRoaW5raW5nIHdlIHNob3VsZCByZWFsbHkgcm91bmQgdXAg dG8gbWFrZSBzdXJlIHdlIG5ldmVyIGVuZCB1cCB3aXRoIGEKPiA+IHNob3J0ZXIgZGVsYXkgdGhh biBzcGVjaWZpZWQuIEJ1dCB0aGF0IGRpc2FncmVlcyB3aXRoIHRoZSBleGFtcGxlcyBpbgo+ID4g dGhlIHNwZWMsIHNvIG5vdCByZWFsbHkgc3VyZSB3aGF0J3MgYmVzdC4KPiA+Cj4gPj4gPiAgCWk5 MTVfcmVnX3QgcHBfb25fcmVnLCBwcF9vZmZfcmVnLCBwcF9kaXZfcmVnLCBwcF9jdHJsX3JlZzsK PiA+PiA+ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPnBvcnQ7 Cj4gPj4gPiAgCWNvbnN0IHN0cnVjdCBlZHBfcG93ZXJfc2VxICpzZXEgPSAmaW50ZWxfZHAtPnBw c19kZWxheXM7Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gaW5kZXggMWZm ZDhkNWMzMjM1Li41NGI2NTk1MTYyMmQgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+PiA+IEBAIC0xMDUwLDggKzEwNTAsNiBAQCB2b2lkIGk5MTVfYXVkaW9fY29t cG9uZW50X2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+PiA+ ICAvKiBpbnRlbF9kaXNwbGF5LmMgKi8KPiA+PiA+ICBleHRlcm4gY29uc3Qgc3RydWN0IGRybV9w bGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jczsKPiA+PiA+ICBib29sIGludGVsX2hhc19wZW5k aW5nX2ZiX3VucGluKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ID4gLWludCBpbnRlbF9w Y2hfcmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ID4gLWludCBpbnRlbF9ocmF3 Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ID4gIHZvaWQgaW50ZWxfbWFya19idXN5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ID4gIHZvaWQgaW50ZWxfbWFya19pZGxlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4+ID4gIHZvaWQgaW50ZWxfY3J0Y19yZXN0b3JlX21v ZGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwo+ID4+ID4gaW5kZXggODkxYTU4NzIyNWUyLi5iOGM3OGQ4ODUzMTEgMTAwNjQ0Cj4gPj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPj4gPiBAQCAtMTMxNCw4ICsxMzE0 LDggQEAgc3RhdGljIHUzMiBscHRfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+ID4+ID4gICAqLwo+ID4+ID4gIHN0YXRpYyB1MzIg cGNoX2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21f ZnJlcV9oeikKPiA+PiA+ICB7Cj4gPj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25u ZWN0b3ItPmJhc2UuZGV2Owo+ID4+ID4gLQlpbnQgY2xvY2sgPSBNSHooaW50ZWxfcGNoX3Jhd2Ns ayhkZXYpKTsKPiA+PiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+PiA+ICsJaW50IGNsb2NrID0gMTAwMCAqIGRl dl9wcml2LT5yYXdjbGtfZnJlcTsKPiA+PiA+ICAKPiA+PiA+ICAJcmV0dXJuIGNsb2NrIC8gKHB3 bV9mcmVxX2h6ICogMTI4KTsKPiA+PiAKPiA+PiBDb3VsZCB1c2U6Cj4gPj4gCj4gPj4gCXJldHVy biBLSHooZGV2X3ByaXYtPnJhd2Nsa19mcmVxKSAvIChwd21fZnJlcV9oeiAqIDEyOCk7Cj4gPj4g Cj4gPj4gU2FtZSB0aGluZyBhbGwgYXJvdW5kLgo+ID4KPiA+IEkgY2FuIHJlc3BpbiB3aXRoIHRo YXQuCj4gCj4gWW91IGNhbiBjaG9vc2UgdG8gcmVzcGluLCBvciB0byB3YWl0IHVudGlsIEkgZ2V0 IGFyb3VuZCB0byBhY3R1YWxseQo+IHJldmlld2luZyB0aGUgcGF0Y2ggaW5zdGVhZCBvZiBqdXN0 IGJpa2VzaGVkZGluZy4gOykKCkRpZCBJIHdhaXQgbG9uZyBlbm91Z2g/IDspCgo+IAo+IEJSLAo+ IEphbmkuCj4gCj4gPgo+ID4+IAo+ID4+IFNpZGUgbm90ZSwgbWF5YmUgdGhlc2Ugc2hvdWxkIGFs c28gcm91bmQgY2xvc2VzdCAoZm9sbG93LXVwKS4KPiA+Cj4gPiBIbW0uIFllYWgsIEkgZ3Vlc3Mg Y2xvc2VzdCB3b3VsZCBiZSB3YXJyYW50ZWQgZm9yIFBXTS4KPiA+Cj4gPj4gCj4gPj4gCj4gPj4g PiAgfQo+ID4+ID4gQEAgLTEzMzAsMTIgKzEzMzAsMTEgQEAgc3RhdGljIHUzMiBwY2hfaHpfdG9f cHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+ ID4+ID4gICAqLwo+ID4+ID4gIHN0YXRpYyB1MzIgaTl4eF9oel90b19wd20oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgcHdtX2ZyZXFfaHopCj4gPj4gPiAgewo+ID4+ID4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiA+PiA+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ PiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0 b3ItPmJhc2UuZGV2KTsKPiA+PiA+ICAJaW50IGNsb2NrOwo+ID4+ID4gIAo+ID4+ID4gLQlpZiAo SVNfUElORVZJRVcoZGV2KSkKPiA+PiA+IC0JCWNsb2NrID0gTUh6KGludGVsX2hyYXdjbGsoZGV2 KSk7Cj4gPj4gPiArCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gPj4gPiArCQljbG9jayA9 IDEwMDAgKiBkZXZfcHJpdi0+cmF3Y2xrX2ZyZXE7Cj4gPj4gPiAgCWVsc2UKPiA+PiA+ICAJCWNs b2NrID0gMTAwMCAqIGRldl9wcml2LT5jZGNsa19mcmVxOwo+ID4+ID4gIAo+ID4+ID4gQEAgLTEz NTQsNyArMTM1Myw3IEBAIHN0YXRpYyB1MzIgaTk2NV9oel90b19wd20oc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLCB1MzIgcHdtX2ZyZXFfaHopCj4gPj4gPiAgCWludCBjbG9jazsK PiA+PiA+ICAKPiA+PiA+ICAJaWYgKElTX0c0WChkZXZfcHJpdikpCj4gPj4gPiAtCQljbG9jayA9 IE1IeihpbnRlbF9ocmF3Y2xrKGRldikpOwo+ID4+ID4gKwkJY2xvY2sgPSAxMDAwICogZGV2X3By aXYtPnJhd2Nsa19mcmVxOwo+ID4+ID4gIAllbHNlCj4gPj4gPiAgCQljbG9jayA9IDEwMDAgKiBk ZXZfcHJpdi0+Y2RjbGtfZnJlcTsKPiA+PiA+ICAKPiA+PiA+IEBAIC0xMzY4LDE4ICsxMzY3LDE3 IEBAIHN0YXRpYyB1MzIgaTk2NV9oel90b19wd20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLCB1MzIgcHdtX2ZyZXFfaHopCj4gPj4gPiAgICovCj4gPj4gPiAgc3RhdGljIHUzMiB2 bHZfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9m cmVxX2h6KQo+ID4+ID4gIHsKPiA+PiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5l Y3Rvci0+YmFzZS5kZXY7Cj4gPj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gPiAtCWludCBjbG9jazsKPiA+PiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2 KTsKPiA+PiA+ICAKPiA+PiA+ICAJaWYgKChJOTE1X1JFQUQoQ0JSMV9WTFYpICYgQ0JSX1BXTV9D TE9DS19NVVhfU0VMRUNUKSA9PSAwKSB7Cj4gPj4gPiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYp KQo+ID4+ID4gKwkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4+ID4gIAkJCXJldHVy biBLSHooMTkyMDApIC8gKHB3bV9mcmVxX2h6ICogMTYpOwo+ID4+ID4gIAkJZWxzZQo+ID4+ID4g IAkJCXJldHVybiBNSHooMjUpIC8gKHB3bV9mcmVxX2h6ICogMTYpOwo+ID4+ID4gIAl9IGVsc2Ug ewo+ID4+ID4gLQkJY2xvY2sgPSBpbnRlbF9ocmF3Y2xrKGRldik7Cj4gPj4gPiAtCQlyZXR1cm4g TUh6KGNsb2NrKSAvIChwd21fZnJlcV9oeiAqIDEyOCk7Cj4gPj4gPiArCQlpbnQgY2xvY2sgPSAx MDAwICogZGV2X3ByaXYtPnJhd2Nsa19mcmVxOwo+ID4+ID4gKwo+ID4+ID4gKwkJcmV0dXJuIGNs b2NrIC8gKHB3bV9mcmVxX2h6ICogMTI4KTsKPiA+PiA+ICAJfQo+ID4+ID4gIH0KPiA+PiAKPiA+ PiAtLSAKPiA+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50 ZXIKPiAKPiAtLSAKPiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==