From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/3] drm/i915/icl: move MG pll hw_state readout Date: Wed, 27 Feb 2019 20:13:42 +0200 Message-ID: <20190227181342.GX20097@intel.com> References: <20190222232324.16405-1-lucas.demarchi@intel.com> <20190225204212.GO20097@intel.com> <20190226000305.u43wyyklhefhlz2u@ldmartin-desk.jf.intel.com> <20190226142101.GU20097@intel.com> <20190226191544.i6npiq5lyjrwxgij@ldmartin-desk.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id B743D6E0F0 for ; Wed, 27 Feb 2019 18:13:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190226191544.i6npiq5lyjrwxgij@ldmartin-desk.jf.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMjYsIDIwMTkgYXQgMTE6MTU6NDRBTSAtMDgwMCwgTHVjYXMgRGUgTWFyY2hp IHdyb3RlOgo+IE9uIFR1ZSwgRmViIDI2LCAyMDE5IGF0IDA0OjIxOjAxUE0gKzAyMDAsIFZpbGxl IFN5cmrDpGzDpCB3cm90ZToKPiA+T24gTW9uLCBGZWIgMjUsIDIwMTkgYXQgMDQ6MDM6MDVQTSAt MDgwMCwgTHVjYXMgRGUgTWFyY2hpIHdyb3RlOgo+ID4+IE9uIE1vbiwgRmViIDI1LCAyMDE5IGF0 IDEwOjQyOjEyUE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+PiA+T24gRnJpLCBG ZWIgMjIsIDIwMTkgYXQgMDM6MjM6MjJQTSAtMDgwMCwgTHVjYXMgRGUgTWFyY2hpIHdyb3RlOgo+ ID4+ID4+IExldCB0aGUgTUcgcGxscyBoYXZlIHRoZWlyIG93biBob29rcyBzaW5jZSBpdCBzaGFy ZXMgdmVyeSBsaXR0bGUgd2l0aAo+ID4+ID4+IG90aGVyIFBMTCB0eXBlcy4gSXQncyBhbHNvIGJl dHRlciBzbyB0aGUgcGxhdGZvcm0gaW5mbyBjb250YWlucyB0aGUgaW5mbwo+ID4+ID4+IGlmIHRo ZSBQTEwgaXMgZm9yIE1HIFBIWSByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZSBQTEwgaWRzLgo+ ID4+ID4+Cj4gPj4gPj4gU2lnbmVkLW9mZi1ieTogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1h cmNoaUBpbnRlbC5jb20+Cj4gPj4gPgo+ID4+ID5UaGVyZSdzIHF1aXRlIGEgYml0IG1vcmUgY2xl YW51cCB0byBiZSBkb25lIGluIHRoaXMgYXJlYS4gQXMgYSBzdGFydAo+ID4+ID5odHRwczovL3Bh dGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzU2MzU0LyA7KQo+ID4+Cj4gPj4gSSBzdGFy dGVkIHJldmlld2luZyB0aGF0IGFuZCBldmVuIGdhdmUgbXkgci1iIGluIHNvbWUgcGF0Y2hlcyAt IGZpcnN0Cj4gPj4gcGF0Y2hlcyBjYXVzZSBzZXZlcmFsIGNvbmZsaWN0cyB3aXRoIGluLWZsaWdo dCBwYXRjaGVzIHRob3VnaC4gTm90IHN1cmUKPiA+PiBob3cgYmVuZWZpY2lhbCB0aGV5IGFyZS4K PiA+Cj4gPlRoZSBjdXJyZW50IGNvZGUgaXMgcXVpdGUgbWVzc3ksIGFuZCB0aHVzIGhhcmQgdG8g Zm9sbG93Lgo+ID5JdCBzaG91bGQgYmUgY2xlYW5lZCB1cCBiZWZvcmUgd2UgcGlsZSBldmVuIG1v cmUgc3R1ZmYgb24gdG9wLgo+ID5QZW9wbGUgaGFkIGFscmVhZHkgY2FyZ28gY3VsdGVkIGFsbCB0 aGUgY3J1ZCBmcm9tIHRoZSBvbGRlcgo+ID5pbXBsZW1lbnRhdGlvbnMgdG8gdGhlIGxhdGVyIG9u ZXMuCj4gPgo+ID5XZSBjYW4ndCBsZXQgdGhlIGRpcnQgYWNjdW11bGF0ZSBpbmRlZmluaXRlbHkg YmVjYXVzZSBldmVudHVhbGx5Cj4gPnRoZSBwb2ludCBjb21lcyB3aGVyZSB0aGUgdGhpbmcgZWl0 aGVyIGNvbGxhcHNlcyB1bmRlciBpdHMgb3duIHdlaWdodAo+ID5vciBzb21lb25lIGp1c3QgZGVj aWRlcyB0byBub3QgZXZlbiBsb29rIGF0IHRoZSBwcmV2aW91cyBjb2RlIGFuZAo+ID5kb2VzIHRo ZSBuZXcgdGhpbmcgdG90YWxseSBkaWZmZXJlbnRseS4gQW5kIHRoYXQgYXBwcm9hY2ggZG9lcyBu b3QKPiA+c2NhbGUgYmVjYXVzZSB0aGVuIGV2ZXJ5b25lIGhhcyB0byBrZWVwIGluIG1pbmQgTiBk aWZmZXJlbnQgd2F5cwo+ID5vZiBkb2luZyB0aGUgZXhhY3Qgc2FtZSB0aGluZy4gQW5kIGFsc28g YWxsIHRoZSBsZWFybmluZ3MgZnJvbSB0aGUKPiA+b2xkIGNvZGUgYXJlIGZvcmdvdHRlbiBhbmQg d2UgcHJvYmFibHkgZ2V0IG1vcmUgYnVncyBhcyBhIHJlc3VsdC4KPiAKPiBJIGFncmVlIHdpdGgg YWxsIG9mIHRoYXQuIEknbSB0YWxraW5nIGFib3V0IHRob3NlIHBhcnRpY3VsYXIgY2hhbmdlcyBh bmQKPiB0aGUgdGltaW5nIHdpdGggdGhlIHBlbmRpbmcgd29yayBnb2luZyB1cHN0cmVhbSwgbm90 IGdlbmVyaWNhbGx5LgoKVGhlcmUgaXMgYWx3YXlzIHBlbmRpbmcgd29yayBzb21ld2hlcmUuIFdl IGNhbid0IHN0b3AgZm9yIHRoYXQuIEFsc28KaWYgdGhlcmUncyBtb3JlIG9mIHRoaXMgc3R1ZmYg YWJvdXQgdG8gYmUgc3VibWl0dGVkIHVwc3RyZWFtIHdlIApzaG91bGQgY2xlYW4gaXQgdXAgYmVm b3JlIGl0IGxhbmRzLgoKPiAKPiA+PiBJTU8gbGFzdCAzIHBhdGNoZXMgY291bGQgYmUgc3RhbmRh bG9uZQo+ID4+IChwYXJ0aWN1bGFybHkgdGhlIG9uZSB0aGF0IGlzIGEgYnVnIGZpeCwgYW5kIGRv ZXNuJ3QgZGVwZW5kIG9uIHRoZQo+ID4+IHByZXZpb3VzIG9uZXMpCj4gPgo+ID5Ob3RoaW5nIHBy ZXZlbnRzIHRoZSBwYXRjaGVzIGZyb20gYmVpbmcgcmV2aWV3ZWQvbWVyZ2VkIG91dCBvZiBvcmRl ci4KPiAKPiBDSSBydW5uaW5nIG9uIHRoZW0gYW5kIHRoZXkgdGFraW5nIG1vcmUgdGltZSB0byBi ZSBtZXJnZWQgd2FpdGluZyBmb3IKPiB0aGUgb3RoZXIgcGF0Y2hlcyB0byBiZSByZXZpZXdlZC4K ClRoZSBmaXJzdCBwYXJ0IGlzIGFscmVhZHkgc29ydGVkIGJ5IENJIGNoZWNraW5nIHRoZSB3aG9s ZSB0aGluZy4KClRoZSBzZWNvbmQgcGFydCBzaG91bGQgYmUgZWFzeSB0byBmaXguCgo+IAo+IEx1 Y2FzIERlIE1hcmNoaQo+IAo+ID4KPiA+Pgo+ID4+ID5UaGlzIHBhdGNoIGxvb2tzIGdvb2QgdG8g bWUuIEl0J2xsIGNvbmZsaWN0IHdpdGggbXkgc2VyaWVzIHRob3VnaCwgYnV0Cj4gPj4gPm5vIGJp Z2dpZS4KPiA+PiA+UmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gPj4KPiA+PiB0aGFua3MKPiA+PiBMdWNhcyBEZSBNYXJjaGkKPiA+ Pgo+ID4+ID4KPiA+PiA+PiAtLS0KPiA+PiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBsbF9tZ3IuYyB8IDEyMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ID4+ID4+ICAxIGZp bGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCj4gPj4gPj4KPiA+ PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+PiA+PiBpbmRleCAwYTQy ZDExYzRjMzMuLmU0ZWM3M2Q0MTVkOSAxMDA2NDQKPiA+PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gPj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4+ID4+IEBAIC0yOTY2LDYgKzI5NjYsNjggQEAgc3RhdGlj IGk5MTVfcmVnX3QgaWNsX3BsbF9pZF90b19lbmFibGVfcmVnKGVudW0gaW50ZWxfZHBsbF9pZCBp ZCkKPiA+PiA+PiAgCXJldHVybiBNR19QTExfRU5BQkxFKGljbF9wbGxfaWRfdG9fdGNfcG9ydChp ZCkpOwo+ID4+ID4+ICB9Cj4gPj4gPj4KPiA+PiA+PiArc3RhdGljIGJvb2wgbWdfcGxsX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gPj4gKwkJCQlz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiA+PiA+PiArCQkJCXN0cnVjdCBpbnRlbF9k cGxsX2h3X3N0YXRlICpod19zdGF0ZSkKPiA+PiA+PiArewo+ID4+ID4+ICsJY29uc3QgZW51bSBp bnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiA+PiA+PiArCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaWNsX3BsbF9pZF90b190Y19wb3J0KGlkKTsKPiA+PiA+PiArCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+ID4+ID4+ICsJYm9vbCByZXQgPSBmYWxzZTsKPiA+PiA+PiArCXUzMiB2 YWw7Cj4gPj4gPj4gKwo+ID4+ID4+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gPj4gPj4gKwkJCQkJCSAgICAgUE9XRVJfRE9NQUlOX1BM TFMpOwo+ID4+ID4+ICsJaWYgKCF3YWtlcmVmKQo+ID4+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+ PiA+PiArCj4gPj4gPj4gKwl2YWwgPSBJOTE1X1JFQUQoTUdfUExMX0VOQUJMRSh0Y19wb3J0KSk7 Cj4gPj4gPj4gKwlpZiAoISh2YWwgJiBQTExfRU5BQkxFKSkKPiA+PiA+PiArCQlnb3RvIG91dDsK PiA+PiA+PiArCj4gPj4gPj4gKwlod19zdGF0ZS0+bWdfcmVmY2xraW5fY3RsID0gSTkxNV9SRUFE KE1HX1JFRkNMS0lOX0NUTCh0Y19wb3J0KSk7Cj4gPj4gPj4gKwlod19zdGF0ZS0+bWdfcmVmY2xr aW5fY3RsICY9IE1HX1JFRkNMS0lOX0NUTF9PRF8yX01VWF9NQVNLOwo+ID4+ID4+ICsKPiA+PiA+ PiArCWh3X3N0YXRlLT5tZ19jbGt0b3AyX2NvcmVjbGtjdGwxID0KPiA+PiA+PiArCQlJOTE1X1JF QUQoTUdfQ0xLVE9QMl9DT1JFQ0xLQ1RMMSh0Y19wb3J0KSk7Cj4gPj4gPj4gKwlod19zdGF0ZS0+ bWdfY2xrdG9wMl9jb3JlY2xrY3RsMSAmPQo+ID4+ID4+ICsJCU1HX0NMS1RPUDJfQ09SRUNMS0NU TDFfQV9ESVZSQVRJT19NQVNLOwo+ID4+ID4+ICsKPiA+PiA+PiArCWh3X3N0YXRlLT5tZ19jbGt0 b3AyX2hzY2xrY3RsID0KPiA+PiA+PiArCQlJOTE1X1JFQUQoTUdfQ0xLVE9QMl9IU0NMS0NUTCh0 Y19wb3J0KSk7Cj4gPj4gPj4gKwlod19zdGF0ZS0+bWdfY2xrdG9wMl9oc2Nsa2N0bCAmPQo+ID4+ ID4+ICsJCU1HX0NMS1RPUDJfSFNDTEtDVExfVExJTkVEUlZfQ0xLU0VMX01BU0sgfAo+ID4+ID4+ ICsJCU1HX0NMS1RPUDJfSFNDTEtDVExfQ09SRV9JTlBVVFNFTF9NQVNLIHwKPiA+PiA+PiArCQlN R19DTEtUT1AyX0hTQ0xLQ1RMX0hTRElWX1JBVElPX01BU0sgfAo+ID4+ID4+ICsJCU1HX0NMS1RP UDJfSFNDTEtDVExfRFNESVZfUkFUSU9fTUFTSzsKPiA+PiA+PiArCj4gPj4gPj4gKwlod19zdGF0 ZS0+bWdfcGxsX2RpdjAgPSBJOTE1X1JFQUQoTUdfUExMX0RJVjAodGNfcG9ydCkpOwo+ID4+ID4+ ICsJaHdfc3RhdGUtPm1nX3BsbF9kaXYxID0gSTkxNV9SRUFEKE1HX1BMTF9ESVYxKHRjX3BvcnQp KTsKPiA+PiA+PiArCWh3X3N0YXRlLT5tZ19wbGxfbGYgPSBJOTE1X1JFQUQoTUdfUExMX0xGKHRj X3BvcnQpKTsKPiA+PiA+PiArCWh3X3N0YXRlLT5tZ19wbGxfZnJhY19sb2NrID0gSTkxNV9SRUFE KE1HX1BMTF9GUkFDX0xPQ0sodGNfcG9ydCkpOwo+ID4+ID4+ICsJaHdfc3RhdGUtPm1nX3BsbF9z c2MgPSBJOTE1X1JFQUQoTUdfUExMX1NTQyh0Y19wb3J0KSk7Cj4gPj4gPj4gKwo+ID4+ID4+ICsJ aHdfc3RhdGUtPm1nX3BsbF9iaWFzID0gSTkxNV9SRUFEKE1HX1BMTF9CSUFTKHRjX3BvcnQpKTsK PiA+PiA+PiArCWh3X3N0YXRlLT5tZ19wbGxfdGRjX2NvbGRzdF9iaWFzID0KPiA+PiA+PiArCQlJ OTE1X1JFQUQoTUdfUExMX1REQ19DT0xEU1RfQklBUyh0Y19wb3J0KSk7Cj4gPj4gPj4gKwo+ID4+ ID4+ICsJaWYgKGRldl9wcml2LT5jZGNsay5ody5yZWYgPT0gMzg0MDApIHsKPiA+PiA+PiArCQlo d19zdGF0ZS0+bWdfcGxsX3RkY19jb2xkc3RfYmlhc19tYXNrID0gTUdfUExMX1REQ19DT0xEU1Rf Q09MRFNUQVJUOwo+ID4+ID4+ICsJCWh3X3N0YXRlLT5tZ19wbGxfYmlhc19tYXNrID0gMDsKPiA+ PiA+PiArCX0gZWxzZSB7Cj4gPj4gPj4gKwkJaHdfc3RhdGUtPm1nX3BsbF90ZGNfY29sZHN0X2Jp YXNfbWFzayA9IC0xVTsKPiA+PiA+PiArCQlod19zdGF0ZS0+bWdfcGxsX2JpYXNfbWFzayA9IC0x VTsKPiA+PiA+PiArCX0KPiA+PiA+PiArCj4gPj4gPj4gKwlod19zdGF0ZS0+bWdfcGxsX3RkY19j b2xkc3RfYmlhcyAmPSBod19zdGF0ZS0+bWdfcGxsX3RkY19jb2xkc3RfYmlhc19tYXNrOwo+ID4+ ID4+ICsJaHdfc3RhdGUtPm1nX3BsbF9iaWFzICY9IGh3X3N0YXRlLT5tZ19wbGxfYmlhc19tYXNr Owo+ID4+ID4+ICsKPiA+PiA+PiArCXJldCA9IHRydWU7Cj4gPj4gPj4gK291dDoKPiA+PiA+PiAr CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUywgd2Fr ZXJlZik7Cj4gPj4gPj4gKwlyZXR1cm4gcmV0Owo+ID4+ID4+ICt9Cj4gPj4gPj4gKwo+ID4+ID4+ ICBzdGF0aWMgYm9vbCBpY2xfcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPj4gPj4gIAkJCQkgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGws Cj4gPj4gPj4gIAkJCQkgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3X3N0YXRlKQo+ID4+ ID4+IEBAIC0yOTg0LDUwICszMDQ2LDggQEAgc3RhdGljIGJvb2wgaWNsX3BsbF9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ID4+ICAJaWYgKCEodmFs ICYgUExMX0VOQUJMRSkpCj4gPj4gPj4gIAkJZ290byBvdXQ7Cj4gPj4gPj4KPiA+PiA+PiAtCWlm IChpbnRlbF9kcGxsX2lzX2NvbWJvcGh5KGlkKSB8fAo+ID4+ID4+IC0JICAgIGlkID09IERQTExf SURfSUNMX1RCVFBMTCkgewo+ID4+ID4+IC0JCWh3X3N0YXRlLT5jZmdjcjAgPSBJOTE1X1JFQUQo SUNMX0RQTExfQ0ZHQ1IwKGlkKSk7Cj4gPj4gPj4gLQkJaHdfc3RhdGUtPmNmZ2NyMSA9IEk5MTVf UkVBRChJQ0xfRFBMTF9DRkdDUjEoaWQpKTsKPiA+PiA+PiAtCX0gZWxzZSB7Cj4gPj4gPj4gLQkJ ZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpY2xfcGxsX2lkX3RvX3RjX3BvcnQoaWQpOwo+ID4+ID4+ IC0KPiA+PiA+PiAtCQlod19zdGF0ZS0+bWdfcmVmY2xraW5fY3RsID0gSTkxNV9SRUFEKE1HX1JF RkNMS0lOX0NUTCh0Y19wb3J0KSk7Cj4gPj4gPj4gLQkJaHdfc3RhdGUtPm1nX3JlZmNsa2luX2N0 bCAmPSBNR19SRUZDTEtJTl9DVExfT0RfMl9NVVhfTUFTSzsKPiA+PiA+PiAtCj4gPj4gPj4gLQkJ aHdfc3RhdGUtPm1nX2Nsa3RvcDJfY29yZWNsa2N0bDEgPQo+ID4+ID4+IC0JCQlJOTE1X1JFQUQo TUdfQ0xLVE9QMl9DT1JFQ0xLQ1RMMSh0Y19wb3J0KSk7Cj4gPj4gPj4gLQkJaHdfc3RhdGUtPm1n X2Nsa3RvcDJfY29yZWNsa2N0bDEgJj0KPiA+PiA+PiAtCQkJTUdfQ0xLVE9QMl9DT1JFQ0xLQ1RM MV9BX0RJVlJBVElPX01BU0s7Cj4gPj4gPj4gLQo+ID4+ID4+IC0JCWh3X3N0YXRlLT5tZ19jbGt0 b3AyX2hzY2xrY3RsID0KPiA+PiA+PiAtCQkJSTkxNV9SRUFEKE1HX0NMS1RPUDJfSFNDTEtDVEwo dGNfcG9ydCkpOwo+ID4+ID4+IC0JCWh3X3N0YXRlLT5tZ19jbGt0b3AyX2hzY2xrY3RsICY9Cj4g Pj4gPj4gLQkJCU1HX0NMS1RPUDJfSFNDTEtDVExfVExJTkVEUlZfQ0xLU0VMX01BU0sgfAo+ID4+ ID4+IC0JCQlNR19DTEtUT1AyX0hTQ0xLQ1RMX0NPUkVfSU5QVVRTRUxfTUFTSyB8Cj4gPj4gPj4g LQkJCU1HX0NMS1RPUDJfSFNDTEtDVExfSFNESVZfUkFUSU9fTUFTSyB8Cj4gPj4gPj4gLQkJCU1H X0NMS1RPUDJfSFNDTEtDVExfRFNESVZfUkFUSU9fTUFTSzsKPiA+PiA+PiAtCj4gPj4gPj4gLQkJ aHdfc3RhdGUtPm1nX3BsbF9kaXYwID0gSTkxNV9SRUFEKE1HX1BMTF9ESVYwKHRjX3BvcnQpKTsK PiA+PiA+PiAtCQlod19zdGF0ZS0+bWdfcGxsX2RpdjEgPSBJOTE1X1JFQUQoTUdfUExMX0RJVjEo dGNfcG9ydCkpOwo+ID4+ID4+IC0JCWh3X3N0YXRlLT5tZ19wbGxfbGYgPSBJOTE1X1JFQUQoTUdf UExMX0xGKHRjX3BvcnQpKTsKPiA+PiA+PiAtCQlod19zdGF0ZS0+bWdfcGxsX2ZyYWNfbG9jayA9 IEk5MTVfUkVBRChNR19QTExfRlJBQ19MT0NLKHRjX3BvcnQpKTsKPiA+PiA+PiAtCQlod19zdGF0 ZS0+bWdfcGxsX3NzYyA9IEk5MTVfUkVBRChNR19QTExfU1NDKHRjX3BvcnQpKTsKPiA+PiA+PiAt Cj4gPj4gPj4gLQkJaHdfc3RhdGUtPm1nX3BsbF9iaWFzID0gSTkxNV9SRUFEKE1HX1BMTF9CSUFT KHRjX3BvcnQpKTsKPiA+PiA+PiAtCQlod19zdGF0ZS0+bWdfcGxsX3RkY19jb2xkc3RfYmlhcyA9 Cj4gPj4gPj4gLQkJCUk5MTVfUkVBRChNR19QTExfVERDX0NPTERTVF9CSUFTKHRjX3BvcnQpKTsK PiA+PiA+PiAtCj4gPj4gPj4gLQkJaWYgKGRldl9wcml2LT5jZGNsay5ody5yZWYgPT0gMzg0MDAp IHsKPiA+PiA+PiAtCQkJaHdfc3RhdGUtPm1nX3BsbF90ZGNfY29sZHN0X2JpYXNfbWFzayA9IE1H X1BMTF9URENfQ09MRFNUX0NPTERTVEFSVDsKPiA+PiA+PiAtCQkJaHdfc3RhdGUtPm1nX3BsbF9i aWFzX21hc2sgPSAwOwo+ID4+ID4+IC0JCX0gZWxzZSB7Cj4gPj4gPj4gLQkJCWh3X3N0YXRlLT5t Z19wbGxfdGRjX2NvbGRzdF9iaWFzX21hc2sgPSAtMVU7Cj4gPj4gPj4gLQkJCWh3X3N0YXRlLT5t Z19wbGxfYmlhc19tYXNrID0gLTFVOwo+ID4+ID4+IC0JCX0KPiA+PiA+PiAtCj4gPj4gPj4gLQkJ aHdfc3RhdGUtPm1nX3BsbF90ZGNfY29sZHN0X2JpYXMgJj0gaHdfc3RhdGUtPm1nX3BsbF90ZGNf Y29sZHN0X2JpYXNfbWFzazsKPiA+PiA+PiAtCQlod19zdGF0ZS0+bWdfcGxsX2JpYXMgJj0gaHdf c3RhdGUtPm1nX3BsbF9iaWFzX21hc2s7Cj4gPj4gPj4gLQl9Cj4gPj4gPj4gKwlod19zdGF0ZS0+ Y2ZnY3IwID0gSTkxNV9SRUFEKElDTF9EUExMX0NGR0NSMChpZCkpOwo+ID4+ID4+ICsJaHdfc3Rh dGUtPmNmZ2NyMSA9IEk5MTVfUkVBRChJQ0xfRFBMTF9DRkdDUjEoaWQpKTsKPiA+PiA+Pgo+ID4+ ID4+ICAJcmV0ID0gdHJ1ZTsKPiA+PiA+PiAgb3V0Ogo+ID4+ID4+IEBAIC0zMjAzLDE0ICszMjIz LDIwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfZnVuY3MgaWNsX3Bs bF9mdW5jcyA9IHsKPiA+PiA+PiAgCS5nZXRfaHdfc3RhdGUgPSBpY2xfcGxsX2dldF9od19zdGF0 ZSwKPiA+PiA+PiAgfTsKPiA+PiA+Pgo+ID4+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsX2Z1bmNzIG1nX3BsbF9mdW5jcyA9IHsKPiA+PiA+PiArCS5lbmFibGUgPSBp Y2xfcGxsX2VuYWJsZSwKPiA+PiA+PiArCS5kaXNhYmxlID0gaWNsX3BsbF9kaXNhYmxlLAo+ID4+ ID4+ICsJLmdldF9od19zdGF0ZSA9IG1nX3BsbF9nZXRfaHdfc3RhdGUsCj4gPj4gPj4gK307Cj4g Pj4gPj4gKwo+ID4+ID4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRwbGxfaW5mbyBpY2xfcGxsc1td ID0gewo+ID4+ID4+ICAJeyAiRFBMTCAwIiwgICAmaWNsX3BsbF9mdW5jcywgRFBMTF9JRF9JQ0xf RFBMTDAsICAwIH0sCj4gPj4gPj4gIAl7ICJEUExMIDEiLCAgICZpY2xfcGxsX2Z1bmNzLCBEUExM X0lEX0lDTF9EUExMMSwgIDAgfSwKPiA+PiA+PiAgCXsgIlRCVCBQTEwiLCAgJmljbF9wbGxfZnVu Y3MsIERQTExfSURfSUNMX1RCVFBMTCwgMCB9LAo+ID4+ID4+IC0JeyAiTUcgUExMIDEiLCAmaWNs X3BsbF9mdW5jcywgRFBMTF9JRF9JQ0xfTUdQTEwxLCAwIH0sCj4gPj4gPj4gLQl7ICJNRyBQTEwg MiIsICZpY2xfcGxsX2Z1bmNzLCBEUExMX0lEX0lDTF9NR1BMTDIsIDAgfSwKPiA+PiA+PiAtCXsg Ik1HIFBMTCAzIiwgJmljbF9wbGxfZnVuY3MsIERQTExfSURfSUNMX01HUExMMywgMCB9LAo+ID4+ ID4+IC0JeyAiTUcgUExMIDQiLCAmaWNsX3BsbF9mdW5jcywgRFBMTF9JRF9JQ0xfTUdQTEw0LCAw IH0sCj4gPj4gPj4gKwl7ICJNRyBQTEwgMSIsICZtZ19wbGxfZnVuY3MsIERQTExfSURfSUNMX01H UExMMSwgMCB9LAo+ID4+ID4+ICsJeyAiTUcgUExMIDIiLCAmbWdfcGxsX2Z1bmNzLCBEUExMX0lE X0lDTF9NR1BMTDIsIDAgfSwKPiA+PiA+PiArCXsgIk1HIFBMTCAzIiwgJm1nX3BsbF9mdW5jcywg RFBMTF9JRF9JQ0xfTUdQTEwzLCAwIH0sCj4gPj4gPj4gKwl7ICJNRyBQTEwgNCIsICZtZ19wbGxf ZnVuY3MsIERQTExfSURfSUNMX01HUExMNCwgMCB9LAo+ID4+ID4+ICAJeyB9LAo+ID4+ID4+ICB9 Owo+ID4+ID4+Cj4gPj4gPj4gLS0KPiA+PiA+PiAyLjIwLjAKPiA+PiA+Pgo+ID4+ID4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4gPj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+ID4+ID4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiA+PiA+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo+ID4+ID4KPiA+PiA+LS0KPiA+PiA+VmlsbGUgU3lyasOkbMOkCj4gPj4gPkludGVs Cj4gPgo+ID4tLSAKPiA+VmlsbGUgU3lyasOkbMOkCj4gPkludGVsCgotLSAKVmlsbGUgU3lyasOk bMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==