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==