From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 08/19] drm/i915: Convert the ddi cdclk code to get_display_clock_speed Date: Tue, 31 Mar 2015 15:48:52 +0200 Message-ID: <20150331134852.GO6354@phenom.ffwll.local> References: <20150331110535.GB3154@sorvi> <1427800321-4966-1-git-send-email-mika.kahola@intel.com> <20150331131556.GE8912@strange.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) by gabe.freedesktop.org (Postfix) with ESMTP id B8E266E497 for ; Tue, 31 Mar 2015 06:47:05 -0700 (PDT) Received: by wgra20 with SMTP id a20so19810743wgr.3 for ; Tue, 31 Mar 2015 06:47:04 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150331131556.GE8912@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 T24gVHVlLCBNYXIgMzEsIDIwMTUgYXQgMDI6MTU6NTZQTSArMDEwMCwgRGFtaWVuIExlc3BpYXUg d3JvdGU6Cj4gT24gVHVlLCBNYXIgMzEsIDIwMTUgYXQgMDI6MTI6MDFQTSArMDMwMCwgTWlrYSBL YWhvbGEgd3JvdGU6Cj4gPiBVbmlmeSB0aGUgSFNXL0JEVy9TS0wgY2RjbGsgZXh0cmFjdGlvbiBj b2RlIHRvIGNvbmZvcm0gdG8gdGhlIHNhbWUKPiA+IC5nZXRfZGlzcGxheV9jbG9ja19zcGVlZCgp IG1vbGQgdGhhdCBhbGwgdGhlIG90aGVyIHBsYXRmb3Jtcwo+ID4gdXNlLgo+ID4gCj4gPiB2Mjog VXBkYXRlIGR1ZSB0byBTS0wgY29kZSBnZXR0aW5nIGFkZGVkCj4gCj4gSGF2aW5nIGRvbmUgdGhl IHNhbWUgcmViYXNlIGxhc3Qgd2VlaywgSSdtIGZhaXJseSBzdXJlIHRoZXJlIHdlcmUgc29tZQo+ IHdvcmsgbmVlZGVkIChpbnRlbF9hdWRpby5jIGRpZG4ndCBleGlzdCBpbiB0aGUgdjIgb2YgdGhp cyBwYXRjaCkuCj4gVXN1YWxseSB0aGF0J3MgZW5vdWdoIGEgdjMgY29tbWVudDoKPiAKPiB2Mzog UmViYXNlIG9uIHRvcCBvZiAtbmlnaHRseSAoaW50cm9kdWN0aW9uIG9mIGludGVsX2F1ZGlvLmMp IChNaWthIEthaG9sYSkKPiAKPiBvciBzb21ldGhpbmcuCgpBZGRlZCBhbmQgbWVyZ2VkIGFsbCB0 aGUgcmV2aWV3ZWQgcGF0Y2hlcywgdGhhbmtzLgotRGFuaWVsCgo+IAo+IFJldmlld2VkLWJ5OiBE YW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAaW50ZWwuY29tPgo+IAo+ID4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gPiAt LS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgfCAgIDMgKy0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgfCAxMDEgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAgOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgICAyICstCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAxIC0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jICAgICAgfCAgIDIgKy0KPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDEwMiBp bnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXVkaW8uYwo+ID4gaW5kZXggMjM5NmNjNy4uMGQ1YjFjZSAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+IEBAIC00ODUsNyArNDg1LDggQEAgc3RhdGljIGludCBp OTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g PiAgCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICAKPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVURJTyk7Cj4gPiAtCXJldCA9IGludGVsX2RkaV9nZXRf Y2RjbGtfZnJlcShkZXZfcHJpdik7Cj4gPiArCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9k aXNwbGF5X2Nsb2NrX3NwZWVkKGRldl9wcml2LT5kZXYpOwo+ID4gKwo+ID4gIAlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0FVRElPKTsKPiA+ICAKPiA+ICAJ cmV0dXJuIHJldDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCA0N2I5MzA3 Li44YzY5MmQ4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBAQCAtMTY4 OSwxMDUgKzE2ODksNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0 aWMgaW50IHNrbF9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiAtewo+ID4gLQl1aW50MzJfdCBsY3BsbDEgPSBJOTE1X1JFQUQoTENQTEwxX0NUTCk7 Cj4gPiAtCXVpbnQzMl90IGNkY3RsID0gSTkxNV9SRUFEKENEQ0xLX0NUTCk7Cj4gPiAtCXVpbnQz Ml90IGxpbmtyYXRlOwo+ID4gLQo+ID4gLQlpZiAoIShsY3BsbDEgJiBMQ1BMTF9QTExfRU5BQkxF KSkgewo+ID4gLQkJV0FSTigxLCAiTENQTEwxIG5vdCBlbmFibGVkXG4iKTsKPiA+IC0JCXJldHVy biAyNDAwMDsgLyogMjRNSHogaXMgdGhlIGNkIGZyZXEgd2l0aCBOU1NDIHJlZiAqLwo+ID4gLQl9 Cj4gPiAtCj4gPiAtCWlmICgoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNLKSA9PSBDRENMS19G UkVRXzU0MCkKPiA+IC0JCXJldHVybiA1NDAwMDA7Cj4gPiAtCj4gPiAtCWxpbmtyYXRlID0gKEk5 MTVfUkVBRChEUExMX0NUUkwxKSAmCj4gPiAtCQkgICAgRFBMTF9DUlRMMV9MSU5LX1JBVEVfTUFT SyhTS0xfRFBMTDApKSA+PiAxOwo+ID4gLQo+ID4gLQlpZiAobGlua3JhdGUgPT0gRFBMTF9DUlRM MV9MSU5LX1JBVEVfMjE2MCB8fAo+ID4gLQkgICAgbGlua3JhdGUgPT0gRFBMTF9DUlRMMV9MSU5L X1JBVEVfMTA4MCkgewo+ID4gLQkJLyogdmNvIDg2NDAgKi8KPiA+IC0JCXN3aXRjaCAoY2RjdGwg JiBDRENMS19GUkVRX1NFTF9NQVNLKSB7Cj4gPiAtCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoK PiA+IC0JCQlyZXR1cm4gNDMyMDAwOwo+ID4gLQkJY2FzZSBDRENMS19GUkVRXzMzN18zMDg6Cj4g PiAtCQkJcmV0dXJuIDMwODU3MDsKPiA+IC0JCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+ID4g LQkJCXJldHVybiA2MTcxNDA7Cj4gPiAtCQlkZWZhdWx0Ogo+ID4gLQkJCVdBUk4oMSwgIlVua25v d24gY2QgZnJlcSBzZWxlY3Rpb25cbiIpOwo+ID4gLQkJfQo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJ LyogdmNvIDgxMDAgKi8KPiA+IC0JCXN3aXRjaCAoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNL KSB7Cj4gPiAtCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoKPiA+IC0JCQlyZXR1cm4gNDUwMDAw Owo+ID4gLQkJY2FzZSBDRENMS19GUkVRXzMzN18zMDg6Cj4gPiAtCQkJcmV0dXJuIDMzNzUwMDsK PiA+IC0JCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+ID4gLQkJCXJldHVybiA2NzUwMDA7Cj4g PiAtCQlkZWZhdWx0Ogo+ID4gLQkJCVdBUk4oMSwgIlVua25vd24gY2QgZnJlcSBzZWxlY3Rpb25c biIpOwo+ID4gLQkJfQo+ID4gLQl9Cj4gPiAtCj4gPiAtCS8qIGVycm9yIGNhc2UsIGRvIGFzIGlm IERQTEwwIGlzbid0IGVuYWJsZWQgKi8KPiA+IC0JcmV0dXJuIDI0MDAwOwo+ID4gLX0KPiA+IC0K PiA+IC1zdGF0aWMgaW50IGJkd19nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiAtewo+ID4gLQl1aW50MzJfdCBsY3BsbCA9IEk5MTVfUkVBRChMQ1BM TF9DVEwpOwo+ID4gLQl1aW50MzJfdCBmcmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNL Owo+ID4gLQo+ID4gLQlpZiAobGNwbGwgJiBMQ1BMTF9DRF9TT1VSQ0VfRkNMSykKPiA+IC0JCXJl dHVybiA4MDAwMDA7Cj4gPiAtCWVsc2UgaWYgKEk5MTVfUkVBRChGVVNFX1NUUkFQKSAmIEhTV19D RENMS19MSU1JVCkKPiA+IC0JCXJldHVybiA0NTAwMDA7Cj4gPiAtCWVsc2UgaWYgKGZyZXEgPT0g TENQTExfQ0xLX0ZSRVFfNDUwKQo+ID4gLQkJcmV0dXJuIDQ1MDAwMDsKPiA+IC0JZWxzZSBpZiAo ZnJlcSA9PSBMQ1BMTF9DTEtfRlJFUV81NE9fQkRXKQo+ID4gLQkJcmV0dXJuIDU0MDAwMDsKPiA+ IC0JZWxzZSBpZiAoZnJlcSA9PSBMQ1BMTF9DTEtfRlJFUV8zMzdfNV9CRFcpCj4gPiAtCQlyZXR1 cm4gMzM3NTAwOwo+ID4gLQllbHNlCj4gPiAtCQlyZXR1cm4gNjc1MDAwOwo+ID4gLX0KPiA+IC0K PiA+IC1zdGF0aWMgaW50IGhzd19nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3By aXYtPmRldjsKPiA+IC0JdWludDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiA+ IC0JdWludDMyX3QgZnJlcSA9IGxjcGxsICYgTENQTExfQ0xLX0ZSRVFfTUFTSzsKPiA+IC0KPiA+ IC0JaWYgKGxjcGxsICYgTENQTExfQ0RfU09VUkNFX0ZDTEspCj4gPiAtCQlyZXR1cm4gODAwMDAw Owo+ID4gLQllbHNlIGlmIChJOTE1X1JFQUQoRlVTRV9TVFJBUCkgJiBIU1dfQ0RDTEtfTElNSVQp Cj4gPiAtCQlyZXR1cm4gNDUwMDAwOwo+ID4gLQllbHNlIGlmIChmcmVxID09IExDUExMX0NMS19G UkVRXzQ1MCkKPiA+IC0JCXJldHVybiA0NTAwMDA7Cj4gPiAtCWVsc2UgaWYgKElTX0hTV19VTFQo ZGV2KSkKPiA+IC0JCXJldHVybiAzMzc1MDA7Cj4gPiAtCWVsc2UKPiA+IC0JCXJldHVybiA1NDAw MDA7Cj4gPiAtfQo+ID4gLQo+ID4gLWludCBpbnRlbF9kZGlfZ2V0X2NkY2xrX2ZyZXEoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gPiAtCj4gPiAtCWlmIChJU19TS1lMQUtFKGRldikp Cj4gPiAtCQlyZXR1cm4gc2tsX2dldF9jZGNsa19mcmVxKGRldl9wcml2KTsKPiA+IC0KPiA+IC0J aWYgKElTX0JST0FEV0VMTChkZXYpKQo+ID4gLQkJcmV0dXJuIGJkd19nZXRfY2RjbGtfZnJlcShk ZXZfcHJpdik7Cj4gPiAtCj4gPiAtCS8qIEhhc3dlbGwgKi8KPiA+IC0JcmV0dXJuIGhzd19nZXRf Y2RjbGtfZnJlcShkZXZfcHJpdik7Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyB2b2lkIGhzd19k ZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ID4gIHsKPiA+IEBAIC0xOTc0 LDcgKzE4NzUsNyBAQCB2b2lkIGludGVsX2RkaV9wbGxfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ID4gIAkJaHN3X3NoYXJlZF9kcGxsc19pbml0KGRldl9wcml2KTsKPiA+ICAKPiA+ICAJ RFJNX0RFQlVHX0tNUygiQ0RDTEsgcnVubmluZyBhdCAlZEtIelxuIiwKPiA+IC0JCSAgICAgIGlu dGVsX2RkaV9nZXRfY2RjbGtfZnJlcShkZXZfcHJpdikpOwo+ID4gKwkJICAgICAgZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQoZGV2KSk7Cj4gPiAgCj4gPiAgCWlmIChJ U19TS1lMQUtFKGRldikpIHsKPiA+ICAJCWlmICghKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExD UExMX1BMTF9FTkFCTEUpKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g aW5kZXggNGE0ZmRiMC4uNmUzMzI1OCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gPiBAQCAtNTg2NCw2ICs1ODY0LDkzIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ICAJcmV0dXJuIDA7 Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBpbnQgc2t5bGFrZV9nZXRfZGlzcGxheV9jbG9ja19z cGVlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gKwl1aW50MzJfdCBsY3BsbDEg PSBJOTE1X1JFQUQoTENQTEwxX0NUTCk7Cj4gPiArCXVpbnQzMl90IGNkY3RsID0gSTkxNV9SRUFE KENEQ0xLX0NUTCk7Cj4gPiArCXVpbnQzMl90IGxpbmtyYXRlOwo+ID4gKwo+ID4gKwlpZiAoIShs Y3BsbDEgJiBMQ1BMTF9QTExfRU5BQkxFKSkgewo+ID4gKwkJV0FSTigxLCAiTENQTEwxIG5vdCBl bmFibGVkXG4iKTsKPiA+ICsJCXJldHVybiAyNDAwMDsgLyogMjRNSHogaXMgdGhlIGNkIGZyZXEg d2l0aCBOU1NDIHJlZiAqLwo+ID4gKwl9Cj4gPiArCj4gPiArCWlmICgoY2RjdGwgJiBDRENMS19G UkVRX1NFTF9NQVNLKSA9PSBDRENMS19GUkVRXzU0MCkKPiA+ICsJCXJldHVybiA1NDAwMDA7Cj4g PiArCj4gPiArCWxpbmtyYXRlID0gKEk5MTVfUkVBRChEUExMX0NUUkwxKSAmCj4gPiArCQkgICAg RFBMTF9DUlRMMV9MSU5LX1JBVEVfTUFTSyhTS0xfRFBMTDApKSA+PiAxOwo+ID4gKwo+ID4gKwlp ZiAobGlua3JhdGUgPT0gRFBMTF9DUlRMMV9MSU5LX1JBVEVfMjE2MCB8fAo+ID4gKwkgICAgbGlu a3JhdGUgPT0gRFBMTF9DUlRMMV9MSU5LX1JBVEVfMTA4MCkgewo+ID4gKwkJLyogdmNvIDg2NDAg Ki8KPiA+ICsJCXN3aXRjaCAoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNLKSB7Cj4gPiArCQlj YXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoKPiA+ICsJCQlyZXR1cm4gNDMyMDAwOwo+ID4gKwkJY2Fz ZSBDRENMS19GUkVRXzMzN18zMDg6Cj4gPiArCQkJcmV0dXJuIDMwODU3MDsKPiA+ICsJCWNhc2Ug Q0RDTEtfRlJFUV82NzVfNjE3Ogo+ID4gKwkJCXJldHVybiA2MTcxNDA7Cj4gPiArCQlkZWZhdWx0 Ogo+ID4gKwkJCVdBUk4oMSwgIlVua25vd24gY2QgZnJlcSBzZWxlY3Rpb25cbiIpOwo+ID4gKwkJ fQo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJLyogdmNvIDgxMDAgKi8KPiA+ICsJCXN3aXRjaCAoY2Rj dGwgJiBDRENMS19GUkVRX1NFTF9NQVNLKSB7Cj4gPiArCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQz MjoKPiA+ICsJCQlyZXR1cm4gNDUwMDAwOwo+ID4gKwkJY2FzZSBDRENMS19GUkVRXzMzN18zMDg6 Cj4gPiArCQkJcmV0dXJuIDMzNzUwMDsKPiA+ICsJCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+ ID4gKwkJCXJldHVybiA2NzUwMDA7Cj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJCVdBUk4oMSwgIlVu a25vd24gY2QgZnJlcSBzZWxlY3Rpb25cbiIpOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiAr CS8qIGVycm9yIGNhc2UsIGRvIGFzIGlmIERQTEwwIGlzbid0IGVuYWJsZWQgKi8KPiA+ICsJcmV0 dXJuIDI0MDAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGJyb2Fkd2VsbF9nZXRfZGlz cGxheV9jbG9ja19zcGVlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICsJ dWludDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiA+ICsJdWludDMyX3QgZnJl cSA9IGxjcGxsICYgTENQTExfQ0xLX0ZSRVFfTUFTSzsKPiA+ICsKPiA+ICsJaWYgKGxjcGxsICYg TENQTExfQ0RfU09VUkNFX0ZDTEspCj4gPiArCQlyZXR1cm4gODAwMDAwOwo+ID4gKwllbHNlIGlm IChJOTE1X1JFQUQoRlVTRV9TVFJBUCkgJiBIU1dfQ0RDTEtfTElNSVQpCj4gPiArCQlyZXR1cm4g NDUwMDAwOwo+ID4gKwllbHNlIGlmIChmcmVxID09IExDUExMX0NMS19GUkVRXzQ1MCkKPiA+ICsJ CXJldHVybiA0NTAwMDA7Cj4gPiArCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNTRP X0JEVykKPiA+ICsJCXJldHVybiA1NDAwMDA7Cj4gPiArCWVsc2UgaWYgKGZyZXEgPT0gTENQTExf Q0xLX0ZSRVFfMzM3XzVfQkRXKQo+ID4gKwkJcmV0dXJuIDMzNzUwMDsKPiA+ICsJZWxzZQo+ID4g KwkJcmV0dXJuIDY3NTAwMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBoYXN3ZWxsX2dl dF9kaXNwbGF5X2Nsb2NrX3NwZWVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiArewo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4gKwl1aW50MzJfdCBsY3BsbCA9IEk5MTVfUkVBRChMQ1BMTF9DVEwpOwo+ID4gKwl1aW50MzJf dCBmcmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNLOwo+ID4gKwo+ID4gKwlpZiAobGNw bGwgJiBMQ1BMTF9DRF9TT1VSQ0VfRkNMSykKPiA+ICsJCXJldHVybiA4MDAwMDA7Cj4gPiArCWVs c2UgaWYgKEk5MTVfUkVBRChGVVNFX1NUUkFQKSAmIEhTV19DRENMS19MSU1JVCkKPiA+ICsJCXJl dHVybiA0NTAwMDA7Cj4gPiArCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNDUwKQo+ ID4gKwkJcmV0dXJuIDQ1MDAwMDsKPiA+ICsJZWxzZSBpZiAoSVNfSFNXX1VMVChkZXYpKQo+ID4g KwkJcmV0dXJuIDMzNzUwMDsKPiA+ICsJZWxzZQo+ID4gKwkJcmV0dXJuIDU0MDAwMDsKPiA+ICt9 Cj4gPiArCj4gPiAgc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gQEAgLTEzNjg3LDcgKzEzNzc0 LDE2IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ID4gIAl9Cj4gPiAgCj4gPiAgCS8qIFJldHVybnMgdGhlIGNvcmUgZGlzcGxheSBjbG9j ayBzcGVlZCAqLwo+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gKwlpZiAoSVNfU0tZ TEFLRShkZXYpKQo+ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3Bl ZWQgPQo+ID4gKwkJCXNreWxha2VfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Cj4gPiArCWVsc2Ug aWYgKElTX0JST0FEV0VMTChkZXYpKQo+ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3Bs YXlfY2xvY2tfc3BlZWQgPQo+ID4gKwkJCWJyb2Fkd2VsbF9nZXRfZGlzcGxheV9jbG9ja19zcGVl ZDsKPiA+ICsJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpKQo+ID4gKwkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQgPQo+ID4gKwkJCWhhc3dlbGxfZ2V0X2Rpc3BsYXlf Y2xvY2tfc3BlZWQ7Cj4gPiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ICAJCWRl dl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkID0KPiA+ICAJCQl2YWxsZXl2 aWV3X2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwo+ID4gIAllbHNlIGlmIChJU19HRU41KGRldikp Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IGUzOGRiZDUuLjA0N2E1MmUgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBAQCAtNzE3LDcgKzcxNyw3IEBAIHN0 YXRpYyB1aW50MzJfdCBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIGludCBpbmRleCkKPiA+ICAJaWYgKGludGVsX2RpZ19wb3J0LT5wb3J0ID09IFBP UlRfQSkgewo+ID4gIAkJaWYgKGluZGV4KQo+ID4gIAkJCXJldHVybiAwOwo+ID4gLQkJcmV0dXJu IERJVl9ST1VORF9DTE9TRVNUKGludGVsX2RkaV9nZXRfY2RjbGtfZnJlcShkZXZfcHJpdiksIDIw MDApOwo+ID4gKwkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5kaXNwbGF5Lmdl dF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldiksIDIwMDApOwo+ID4gIAl9IGVsc2UgaWYgKGRldl9w cml2LT5wY2hfaWQgPT0gSU5URUxfUENIX0xQVF9ERVZJQ0VfSURfVFlQRSkgewo+ID4gIAkJLyog V29ya2Fyb3VuZCBmb3Igbm9uLVVMVCBIU1cgKi8KPiA+ICAJCXN3aXRjaCAoaW5kZXgpIHsKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBmY2E3YjlmLi40ZjJlZDk1IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtODU2LDcgKzg1Niw2IEBAIHZv aWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiAgdm9pZCBp bnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCk7Cj4g PiAgZW51bSBwb3J0IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KHN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyKTsKPiA+ICBib29sIGludGVsX2RkaV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGVudW0gcGlwZSAqcGlwZSk7Cj4gPiAtaW50IGlu dGVsX2RkaV9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ID4gIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ ID4gIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKPiA+ICB2b2lkIGludGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVuYyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiA+IGluZGV4IGZhNGNjYjMuLmUxMzkyZTcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCj4gPiBAQCAtMTc5Miw3ICsxNzkyLDcgQEAgaHN3X2NvbXB1dGVfbGluZXRpbWVfd20oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gIAlsaW5ldGlt ZSA9IERJVl9ST1VORF9DTE9TRVNUKG1vZGUtPmNydGNfaHRvdGFsICogMTAwMCAqIDgsCj4gPiAg CQkJCSAgICAgbW9kZS0+Y3J0Y19jbG9jayk7Cj4gPiAgCWlwc19saW5ldGltZSA9IERJVl9ST1VO RF9DTE9TRVNUKG1vZGUtPmNydGNfaHRvdGFsICogMTAwMCAqIDgsCj4gPiAtCQkJCQkgaW50ZWxf ZGRpX2dldF9jZGNsa19mcmVxKGRldl9wcml2KSk7Cj4gPiArCQkJCQkgZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQoZGV2X3ByaXYtPmRldikpOwo+ID4gIAo+ID4gIAly ZXR1cm4gUElQRV9XTV9MSU5FVElNRV9JUFNfTElORVRJTUUoaXBzX2xpbmV0aW1lKSB8Cj4gPiAg CSAgICAgICBQSVBFX1dNX0xJTkVUSU1FX1RJTUUobGluZXRpbWUpOwo+ID4gLS0gCj4gPiAxLjku MQo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9y YXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK