From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: Re: [PATCH v2 3/3] drm/mediatek: fix the wrong pixel clock when resolution is 4K Date: Wed, 27 Jul 2016 11:23:50 +0200 Message-ID: <1469611430.2470.20.camel@pengutronix.de> References: <1469608292-6106-1-git-send-email-bibby.hsieh@mediatek.com> <1469608292-6106-4-git-send-email-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 37BAE88A9C for ; Wed, 27 Jul 2016 09:23:58 +0000 (UTC) In-Reply-To: <1469608292-6106-4-git-send-email-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bibby Hsieh Cc: Junzhi Zhao , linux-kernel@vger.kernel.org, Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , linux-mediatek@lists.infradead.org, Sascha Hauer , Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org QW0gTWl0dHdvY2gsIGRlbiAyNy4wNy4yMDE2LCAxNjozMSArMDgwMCBzY2hyaWViIEJpYmJ5IEhz aWVoOgo+IEZyb206IEp1bnpoaSBaaGFvIDxqdW56aGkuemhhb0BtZWRpYXRlay5jb20+Cj4gCj4g UGl4ZWwgY2xvY2sgc2hvdWxkIGJlIDI5N01IeiB3aGVuIHJlc29sdXRpb24gaXMgNEsuCgpUaGlz IHBhdGNoIGRvZXMgdHdvIGRpZmZlcmVudCB0aGluZ3MsIHBsZWFzZSBkb24ndCBjb25mbGF0ZSB0 aGVtLgoKRmlyc3QsIGl0IGFkZHMgc3VwcG9ydCBmb3IgMTYqMyBhbmQgMiozIGZhY3RvcnMgYmV0 d2VlbiBQTEwgYW5kIHBpeGVsCmNsb2NrLiBUaGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNo IGFuZCBkb2VzIHdoYXQgdGhpcyBwYXRjaApkZXNjcmlwdGlvbiBzYXlzLgoKVGhlIHNlY29uZCBw YXJ0IG1vdmVzIHRoZSBjbG9ja3MgaW50byBhbiBhcnJheSBhbmQgYWRkcyBhbiBpbmRpcmVjdGlv bgp0byBjbG9jayByZWdpc3RyYXRpb24gZGVwZW5kaW5nIG9uIG9mX21hdGNoX25vZGUuIFRoaXMg c2hvdWxkIGJlIGEKc2VwYXJhdGUgcGF0Y2guIEkgc3VwcG9zZSB0aGlzIGNoYW5nZSBpcyBpbiBw cmVwYXJhdGlvbiBmb3IgbXQyNzAxCnN1cHBvcnQsIGJ1dCBJJ20gbm90IHN1cmUgeWV0IGlmIGl0 IGlzIG5lZWRlZCBhdCBhbGwuCgpyZWdhcmRzClBoaWxpcHAKCj4gU2lnbmVkLW9mZi1ieTogSnVu emhpIFpoYW8gPGp1bnpoaS56aGFvQG1lZGlhdGVrLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBCaWJi eSBIc2llaCA8YmliYnkuaHNpZWhAbWVkaWF0ZWsuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RwaS5jIHwgIDE0OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYwo+IGluZGV4IGQwNWNhNzkuLmZh MzkwZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKPiBAQCAtNjAsMTQgKzYw LDI1IEBAIGVudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IHsKPiAgCU1US19EUElfQ09MT1Jf Rk9STUFUX1lDQkNSXzQyMl9GVUxMCj4gIH07Cj4gIAo+ICtlbnVtIG10a19kcGlfY2xrX2lkIHsK PiArCU1US19EUElfQ0xLX0RQSV9FTkdJTkUsCj4gKwlNVEtfRFBJX0NMS19EUElfUElYRUwsCj4g KwlNVEtfRFBJX0NMS19UVkRfUExMLAo+ICsJTVRLX0RQSV9DTEtfQ09VTlQsCj4gK307Cj4gKwo+ ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG10a19kcGlfY2xrX25hbWVzW01US19EUElfQ0xL X0NPVU5UXSA9IHsKPiArCVtNVEtfRFBJX0NMS19EUElfRU5HSU5FXSA9ICJlbmdpbmUiLAo+ICsJ W01US19EUElfQ0xLX0RQSV9QSVhFTF0gPSAicGl4ZWwiLAo+ICsJW01US19EUElfQ0xLX1RWRF9Q TExdID0gInBsbCIsCj4gK307Cj4gKwo+ICBzdHJ1Y3QgbXRrX2RwaSB7Cj4gIAlzdHJ1Y3QgbXRr X2RkcF9jb21wIGRkcF9jb21wOwo+ICAJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gIAl2 b2lkIF9faW9tZW0gKnJlZ3M7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3QgY2xr ICplbmdpbmVfY2xrOwo+IC0Jc3RydWN0IGNsayAqcGl4ZWxfY2xrOwo+IC0Jc3RydWN0IGNsayAq dHZkX2NsazsKPiArCXN0cnVjdCBjbGsgKmNsa1tNVEtfRFBJX0NMS19DT1VOVF07Cj4gIAlpbnQg aXJxOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbW9kZTsKPiAgCWVudW0gbXRrX2RwaV9v dXRfY29sb3JfZm9ybWF0IGNvbG9yX2Zvcm1hdDsKPiBAQCAtNzYsNiArODcsNyBAQCBzdHJ1Y3Qg bXRrX2RwaSB7Cj4gIAllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCBjaGFubmVsX3N3YXA7 Cj4gIAlib29sIHBvd2VyX3N0YTsKPiAgCXU4IHBvd2VyX2N0bDsKPiArCXZvaWQgKmRhdGE7Cj4g IH07Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZHBpICptdGtfZHBpX2Zyb21fZW5j b2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCj4gQEAgLTExNCw2ICsxMjYsMTAgQEAgc3RydWN0 IG10a19kcGlfeWNfbGltaXQgewo+ICAJdTE2IGNfYm90dG9tOwo+ICB9Owo+ICAKPiArc3RydWN0 IG10a19kcGlfY29uZiB7Cj4gKwlpbnQgKCpjbGtfY29uZmlnKShzdHJ1Y3QgbXRrX2RwaSAqZHBp LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7Cj4gK307Cj4gKwo+ICBzdGF0aWMgdm9p ZCBtdGtfZHBpX21hc2soc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIG9mZnNldCwgdTMyIHZhbCwg dTMyIG1hc2spCj4gIHsKPiAgCXUzMiB0bXAgPSByZWFkbChkcGktPnJlZ3MgKyBvZmZzZXQpICYg fm1hc2s7Cj4gQEAgLTM3Nyw4ICszOTMsOCBAQCBzdGF0aWMgdm9pZCBtdGtfZHBpX3Bvd2VyX29m ZihzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBlbnVtIG10a19kcGlfcG93ZXJfY3RsIHBjdGwpCj4gIAkJ cmV0dXJuOwo+ICAKPiAgCW10a19kcGlfZGlzYWJsZShkcGkpOwo+IC0JY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGRwaS0+cGl4ZWxfY2xrKTsKPiAtCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVu Z2luZV9jbGspOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+Y2xrW01US19EUElfQ0xL X0RQSV9QSVhFTF0pOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+Y2xrW01US19EUElf Q0xLX0RQSV9FTkdJTkVdKTsKPiAgCWRwaS0+cG93ZXJfc3RhID0gZmFsc2U7Cj4gIH0KPiAgCj4g QEAgLTM5NSwxMyArNDExLDEzIEBAIHN0YXRpYyBpbnQgbXRrX2RwaV9wb3dlcl9vbihzdHJ1Y3Qg bXRrX2RwaSAqZHBpLCBlbnVtIG10a19kcGlfcG93ZXJfY3RsIHBjdGwpCj4gIAlpZiAoZHBpLT5w b3dlcl9zdGEpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KGRwaS0+ZW5naW5lX2Nsayk7Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5jbGtb TVRLX0RQSV9DTEtfRFBJX0VOR0lORV0pOwo+ICAJaWYgKHJldCkgewo+ICAJCWRldl9lcnIoZHBp LT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazogJWRcbiIsIHJldCk7Cj4gIAkJ Z290byBlcnJfZW5nOwo+ICAJfQo+ICAKPiAtCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkcGkt PnBpeGVsX2Nsayk7Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5jbGtbTVRLX0RQ SV9DTEtfRFBJX1BJWEVMXSk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJZGV2X2VycihkcGktPmRldiwg IkZhaWxlZCB0byBlbmFibGUgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOwo+ICAJCWdvdG8gZXJy X3BpeGVsOwo+IEBAIC00MTIsNyArNDI4LDcgQEAgc3RhdGljIGludCBtdGtfZHBpX3Bvd2VyX29u KHN0cnVjdCBtdGtfZHBpICpkcGksIGVudW0gbXRrX2RwaV9wb3dlcl9jdGwgcGN0bCkKPiAgCXJl dHVybiAwOwo+ICAKPiAgZXJyX3BpeGVsOgo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+ ZW5naW5lX2Nsayk7Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBpLT5jbGtbTVRLX0RQSV9D TEtfRFBJX0VOR0lORV0pOwo+ICBlcnJfZW5nOgo+ICAJZHBpLT5wb3dlcl9jdGwgJj0gfnBjdGw7 Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC00MjgsMzQgKzQ0NCwxOCBAQCBzdGF0aWMgaW50IG10a19k cGlfc2V0X2Rpc3BsYXlfbW9kZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLAo+ICAJc3RydWN0IG10a19k cGlfc3luY19wYXJhbSB2c3luY19sZXZlbiA9IHsgMCB9Owo+ICAJc3RydWN0IG10a19kcGlfc3lu Y19wYXJhbSB2c3luY19yb2RkID0geyAwIH07Cj4gIAlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFt IHZzeW5jX3JldmVuID0geyAwIH07Cj4gLQl1bnNpZ25lZCBsb25nIHBpeF9yYXRlOwo+IC0JdW5z aWduZWQgbG9uZyBwbGxfcmF0ZTsKPiAtCXVuc2lnbmVkIGludCBmYWN0b3I7Cj4gKwlzdHJ1Y3Qg bXRrX2RwaV9jb25mICpjb25mOwo+ICsJaW50IHJldDsKPiAgCj4gIAlpZiAoIWRwaSkgewo+ICAJ CWRldl9lcnIoZHBpLT5kZXYsICJpbnZhbGlkIGFyZ3VtZW50XG4iKTsKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gLQlwaXhfcmF0ZSA9IDEwMDBVTCAqIG1vZGUtPmNsb2NrOwo+IC0J aWYgKG1vZGUtPmNsb2NrIDw9IDc0MDAwKQo+IC0JCWZhY3RvciA9IDggKiAzOwo+IC0JZWxzZQo+ IC0JCWZhY3RvciA9IDQgKiAzOwo+IC0JcGxsX3JhdGUgPSBwaXhfcmF0ZSAqIGZhY3RvcjsKPiAt Cj4gLQlkZXZfZGJnKGRwaS0+ZGV2LCAiV2FudCBQTEwgJWx1IEh6LCBwaXhlbCBjbG9jayAlbHUg SHpcbiIsCj4gLQkJcGxsX3JhdGUsIHBpeF9yYXRlKTsKPiAtCj4gLQljbGtfc2V0X3JhdGUoZHBp LT50dmRfY2xrLCBwbGxfcmF0ZSk7Cj4gLQlwbGxfcmF0ZSA9IGNsa19nZXRfcmF0ZShkcGktPnR2 ZF9jbGspOwo+IC0KPiAtCXBpeF9yYXRlID0gcGxsX3JhdGUgLyBmYWN0b3I7Cj4gLQljbGtfc2V0 X3JhdGUoZHBpLT5waXhlbF9jbGssIHBpeF9yYXRlKTsKPiAtCXBpeF9yYXRlID0gY2xrX2dldF9y YXRlKGRwaS0+cGl4ZWxfY2xrKTsKPiAtCj4gLQlkZXZfZGJnKGRwaS0+ZGV2LCAiR290ICBQTEwg JWx1IEh6LCBwaXhlbCBjbG9jayAlbHUgSHpcbiIsCj4gLQkJcGxsX3JhdGUsIHBpeF9yYXRlKTsK PiArCWNvbmYgPSAoc3RydWN0IG10a19kcGlfY29uZiAqKWRwaS0+ZGF0YTsKPiArCXJldCA9IGNv bmYtPmNsa19jb25maWcoZHBpLCBtb2RlKTsKPiArCWlmIChyZXQpCj4gKwkJZGV2X2VycihkcGkt PmRldiwgImRwaSBjbGsgc2V0IGZhaWxcbiIpOwo+ICAKPiAgCWxpbWl0LmNfYm90dG9tID0gMHgw MDEwOwo+ICAJbGltaXQuY190b3AgPSAweDBGRTA7Cj4gQEAgLTY1NiwyMCArNjU2LDgzIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHBpX2NvbXBvbmVudF9vcHMgPSB7 Cj4gIAkudW5iaW5kID0gbXRrX2RwaV91bmJpbmQsCj4gIH07Cj4gIAo+ICtzdGF0aWMgaW50IG10 a19kcGlfcGFyc2VfY2xrX2Zyb21fZHQoc3RydWN0IG10a19kcGkgKmRwaSwKPiArCQkJCSAgICAg c3RydWN0IGRldmljZV9ub2RlICpucCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUobXRrX2RwaV9jbGtfbmFtZXMpOyBpKyspIHsKPiArCQlkcGktPmNs a1tpXSA9IG9mX2Nsa19nZXRfYnlfbmFtZShucCwKPiArCQkJCQkJICBtdGtfZHBpX2Nsa19uYW1l c1tpXSk7Cj4gKwkJaWYgKElTX0VSUihkcGktPmNsa1tpXSkpCj4gKwkJCXJldHVybiBQVFJfRVJS KGRwaS0+Y2xrW2ldKTsKPiArCX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10ODE3M19jbGtfY29uZmlnKHN0cnVjdCBtdGtfZHBpICpkcGksIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQo+ICt7Cj4gKwl1bnNpZ25lZCBsb25nIHBpeF9yYXRlOwo+ICsJdW5zaWdu ZWQgbG9uZyBwbGxfcmF0ZTsKPiArCXVuc2lnbmVkIGludCBmYWN0b3I7Cj4gKwo+ICsJcGl4X3Jh dGUgPSAxMDAwVUwgKiBtb2RlLT5jbG9jazsKPiArCWlmIChtb2RlLT5jbG9jayA8PSAyNzAwMCkK PiArCQlmYWN0b3IgPSAxNiAqIDM7Cj4gKwllbHNlIGlmIChtb2RlLT5jbG9jayA8PSA3NDI1MCkK PiArCQlmYWN0b3IgPSA4ICogMzsKPiArCWVsc2UgaWYgKG1vZGUtPmNsb2NrIDw9IDE2NzAwMCkK PiArCQlmYWN0b3IgPSA0ICogMzsKPiArCWVsc2UKPiArCQlmYWN0b3IgPSAyICogMzsKPiArCXBs bF9yYXRlID0gcGl4X3JhdGUgKiBmYWN0b3I7Cj4gKwo+ICsJZGV2X2RiZyhkcGktPmRldiwgIldh bnQgUExMICVsdSBIeiwgcGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAo+ICsJCXBsbF9yYXRlLCBwaXhf cmF0ZSk7Cj4gKwo+ICsJcGxsX3JhdGUgPSBjbGtfZ2V0X3JhdGUoZHBpLT5jbGtbTVRLX0RQSV9D TEtfVFZEX1BMTF0pOwo+ICsJcGl4X3JhdGUgPSBwbGxfcmF0ZSAvIGZhY3RvcjsKPiArCWNsa19z ZXRfcmF0ZShkcGktPmNsa1tNVEtfRFBJX0NMS19EUElfUElYRUxdLCBwaXhfcmF0ZSk7Cj4gKwlk ZXZfZGJnKGRwaS0+ZGV2LCAiR290ICBQTEwgJWx1IEh6LCBwaXhlbCBjbG9jayAlbHUgSHpcbiIs Cj4gKwkJcGxsX3JhdGUsIHBpeF9yYXRlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZHBpX2NvbmYgbXQ4MTczX2NvbmYgPSB7Cj4gKwkuY2xr X2NvbmZpZyA9IG10ODE3M19jbGtfY29uZmlnLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RwaV9vZl9pZHNbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUg PSAibWVkaWF0ZWssbXQ4MTczLWRwaSIsCj4gKwkJLmRhdGEgPSAmbXQ4MTczX2NvbmYsCj4gKwl9 LAo+ICsJe30KPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgbXRrX2RwaV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2Owo+ICAJc3RydWN0IG10a19kcGkgKmRwaTsKPiAgCXN0cnVjdCByZXNvdXJjZSAqbWVtOwo+ ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiAgCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqZXAsICpicmlkZ2Vfbm9kZSA9IE5VTEw7Cj4gIAlpbnQgY29tcF9pZDsKPiArCWNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoOwo+ICsJc3RydWN0IG10a19kcGlfY29uZiAq Y29uZjsKPiAgCWludCByZXQ7Cj4gIAo+ICsJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKG10a19kcGlf b2ZfaWRzLCBkZXYtPm9mX25vZGUpOwo+ICsJaWYgKCFtYXRjaCkKPiArCQlyZXR1cm4gLUVOT0RF VjsKPiArCj4gIAlkcGkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRwaSksIEdGUF9LRVJO RUwpOwo+ICAJaWYgKCFkcGkpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICAJZHBpLT5kZXYg PSBkZXY7Cj4gKwlkcGktPmRhdGEgPSAodm9pZCAqKW1hdGNoLT5kYXRhOwo+ICsJY29uZiA9IChz dHJ1Y3QgbXRrX2RwaV9jb25mICopbWF0Y2gtPmRhdGE7Cj4gIAo+ICAJbWVtID0gcGxhdGZvcm1f Z2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiAgCWRwaS0+cmVncyA9IGRl dm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Cj4gQEAgLTY3OSwyNCArNzQyLDkgQEAgc3Rh dGljIGludCBtdGtfZHBpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJ cmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQlkcGktPmVuZ2luZV9jbGsgPSBkZXZtX2Nsa19nZXQo ZGV2LCAiZW5naW5lIik7Cj4gLQlpZiAoSVNfRVJSKGRwaS0+ZW5naW5lX2NsaykpIHsKPiAtCQly ZXQgPSBQVFJfRVJSKGRwaS0+ZW5naW5lX2Nsayk7Cj4gLQkJZGV2X2VycihkZXYsICJGYWlsZWQg dG8gZ2V0IGVuZ2luZSBjbG9jazogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0K PiAtCj4gLQlkcGktPnBpeGVsX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwaXhlbCIpOwo+IC0J aWYgKElTX0VSUihkcGktPnBpeGVsX2NsaykpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGRwaS0+cGl4 ZWxfY2xrKTsKPiAtCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgcGl4ZWwgY2xvY2s6ICVk XG4iLCByZXQpOwo+IC0JCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+IC0JZHBpLT50dmRfY2xrID0g ZGV2bV9jbGtfZ2V0KGRldiwgInBsbCIpOwo+IC0JaWYgKElTX0VSUihkcGktPnR2ZF9jbGspKSB7 Cj4gLQkJcmV0ID0gUFRSX0VSUihkcGktPnR2ZF9jbGspOwo+IC0JCWRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIGdldCB0dmRwbGwgY2xvY2s6ICVkXG4iLCByZXQpOwo+ICsJcmV0ID0gbXRrX2RwaV9w YXJzZV9jbGtfZnJvbV9kdChkcGksIG5wKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRl diwgInBhcnNlIHR2ZCBkaXYgY2xrIGZhaWxlZCEiKTsKPiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ ICAKPiBAQCAtNzU0LDExICs4MDIsNiBAQCBzdGF0aWMgaW50IG10a19kcGlfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RwaV9vZl9pZHNbXSA9IHsKPiAtCXsgLmNv bXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWRwaSIsIH0sCj4gLQl7fQo+IC19Owo+IC0KPiAg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHBpX2RyaXZlciA9IHsKPiAgCS5wcm9iZSA9IG10 a19kcGlfcHJvYmUsCj4gIAkucmVtb3ZlID0gbXRrX2RwaV9yZW1vdmUsCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==