From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 01/17] drm/i915/icl: add the main CDCLK functions Date: Thu, 01 Feb 2018 18:09:17 -0200 Message-ID: <1517515757.4564.156.camel@intel.com> References: <20180123190536.11208-1-paulo.r.zanoni@intel.com> <20180123190536.11208-2-paulo.r.zanoni@intel.com> <20180126231440.GA16838@jausmus-gentoo-dev6.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5FB589C08 for ; Thu, 1 Feb 2018 20:09:38 +0000 (UTC) In-Reply-To: <20180126231440.GA16838@jausmus-gentoo-dev6.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: James Ausmus Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE4LTAxLTI2IMOgcyAxNToxNCAtMDgwMCwgSmFtZXMgQXVzbXVzIGVzY3JldmV1 Ogo+IE9uIFR1ZSwgSmFuIDIzLCAyMDE4IGF0IDA1OjA1OjIwUE0gLTAyMDAsIFBhdWxvIFphbm9u aSB3cm90ZToKPiA+IFRoaXMgY29tbWl0IGFkZHMgdGhlIGJhc2ljIENEQ0xLIGZ1bmN0aW9ucywg YnV0IGl0J3Mgc3RpbGwgbWlzc2luZwo+ID4gcGllY2VzIG9mIHRoZSBkaXNwbGF5IGluaXRpYWxp emF0aW9uIHNlcXVlbmNlLgo+ID4gCj4gPiB2MjoKPiA+ICAtIEltcGxlbWVudCB0aGUgdm9sdGFn ZSBsZXZlbHMuCj4gPiAgLSBSZWJhc2UuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFph bm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAxMCArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NkY2xrLmMgfCAyNTMKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgIHwgICAyICsKPiA+ ICAzIGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4g Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBpbmRleCBhYmQ5ZWU4NzYxODYuLmQ3 MmUyMDZiMmI5ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC03MTEz LDggKzcxMTMsMTIgQEAgZW51bSB7Cj4gPiAgI2RlZmluZSBTS0xfREZTTV9QSVBFX0JfRElTQUJM RQkJKDEgPDwgMjEpCj4gPiAgI2RlZmluZSBTS0xfREZTTV9QSVBFX0NfRElTQUJMRQkJKDEgPDwg MjgpCj4gPiAgCj4gPiAtI2RlZmluZSBTS0xfRFNTTQkJCV9NTUlPKDB4NTEwMDQpCj4gPiAtI2Rl ZmluZSBDTkxfRFNTTV9DRENMS19QTExfUkVGQ0xLXzI0TUh6CSgxIDw8IDMxKQo+ID4gKyNkZWZp bmUgU0tMX0RTU00JCQkJX01NSU8oMHg1MTAwNCkKPiA+ICsjZGVmaW5lIENOTF9EU1NNX0NEQ0xL X1BMTF9SRUZDTEtfMjRNSHoJCSgxIDw8IDMxKQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtf UExMX1JFRkNMS19NQVNLCQkoNyA8PCAyOSkKPiA+ICsjZGVmaW5lIElDTF9EU1NNX0NEQ0xLX1BM TF9SRUZDTEtfMjRNSHoJCSgwIDw8IDI5KQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtfUExM X1JFRkNMS18xOV8yTUh6CSgxIDw8IDI5KQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtfUExM X1JFRkNMS18zOF80TUh6CSgyIDw8IDI5KQo+ID4gIAo+ID4gICNkZWZpbmUgR0VON19GRl9TTElD RV9DU19DSElDS0VOMQlfTU1JTygweDIwZTApCj4gPiAgI2RlZmluZSAgIEdFTjlfRkZTQ19QRVJD VFhfUFJFRU1QVF9DVFJMCSgxPDwxNCkKPiA+IEBAIC04NzYwLDYgKzg3NjQsOCBAQCBlbnVtIHNr bF9wb3dlcl9nYXRlIHsKPiA+ICAjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkUJQlhU X0NEQ0xLX0NEMlhfUElQRSgzKQo+ID4gICNkZWZpbmUgIEJYVF9DRENMS19TU0FfUFJFQ0hBUkdF X0VOQUJMRQkoMTw8MTYpCj4gPiAgI2RlZmluZSAgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0sJKDB4 N2ZmKQo+ID4gKyNkZWZpbmUgIElDTF9DRENMS19DRDJYX1BJUEUocGlwZSkJKChwaXBlKSA8PCAx OSkKPiAKPiBUaGlzIGlzbid0IHJpZ2h0IC0gcGlwZSBBIGlzICgwIDw8IDE5KSwgYnV0IHBpcGUg QiBpcyAoMiA8PCAxOSksIGFuZAo+IEMKPiBpcyAoNiA8PCAxOSkuCgpSaWdodC4gSSdsbCBmaXgg dGhhdCBvbmNlIHRoZSBvdGhlciByZXZpZXcgY29tbWVudHMgb24gdGhpcyBwYXRjaCBhcmUKY2xh cmlmaWVkLgoKPiAKPiA+ICsjZGVmaW5lICBJQ0xfQ0RDTEtfQ0QyWF9QSVBFX05PTkUJSUNMX0NE Q0xLX0NEMlhfUElQRSg3KQo+ID4gIAo+ID4gIC8qIExDUExMX0NUTCAqLwo+ID4gICNkZWZpbmUg TENQTEwxX0NUTAkJX01NSU8oMHg0NjAxMCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMKPiA+IGluZGV4IGM0MzkyZWEzNGEzZC4uZDg2Nzk1NmQ1YTlmIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+ID4gQEAgLTE3NjYsNiArMTc2NiwyMTUgQEAgc3Rh dGljIHZvaWQgY25sX3Nhbml0aXplX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gPiAgCWRldl9wcml2LT5jZGNsay5ody52Y28gPSAtMTsKPiA+ICB9Cj4gPiAg Cj4gPiArc3RhdGljIGludCBpY2xfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrLCB1bnNpZ25lZCBp bnQgcmVmKQo+ID4gK3sKPiA+ICsJaW50IHJhbmdlc18yNFtdID0geyAzMTIwMDAsIDU1MjAwMCwg NjQ4MDAwIH07Cj4gPiArCWludCByYW5nZXNfMTlfMzhbXSA9IHsgMzA3MjAwLCA1NTY4MDAsIDY1 MjgwMCB9Owo+ID4gKwlpbnQgKnJhbmdlczsKPiA+ICsKPiA+ICsJc3dpdGNoIChyZWYpIHsKPiA+ ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdfQ0FTRShyZWYpOwo+ID4gKwljYXNlIDI0MDAwOgo+ ID4gKwkJcmFuZ2VzID0gcmFuZ2VzXzI0Owo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgMTkyMDA6 Cj4gPiArCWNhc2UgMzg0MDA6Cj4gPiArCQlyYW5nZXMgPSByYW5nZXNfMTlfMzg7Cj4gPiArCQli cmVhazsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAobWluX2NkY2xrID4gcmFuZ2VzWzFdKQo+ID4g KwkJcmV0dXJuIHJhbmdlc1syXTsKPiA+ICsJZWxzZSBpZiAobWluX2NkY2xrID4gcmFuZ2VzWzBd KQo+ID4gKwkJcmV0dXJuIHJhbmdlc1sxXTsKPiA+ICsJZWxzZQo+ID4gKwkJcmV0dXJuIHJhbmdl c1swXTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBpY2xfY2FsY19jZGNsa19wbGxfdmNv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsIGludCBjZGNsaykKPiA+ICt7 Cj4gPiArCWludCByYXRpbzsKPiA+ICsKPiA+ICsJLyogNTBNSHogPT0gQ0RDTEsgUExMIGRpc2Fi bGVkLiAqLwo+ID4gKwlpZiAoY2RjbGsgPT0gNTAwMDApCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsK PiA+ICsJc3dpdGNoIChjZGNsaykgewo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJTUlTU0lOR19DQVNF KGNkY2xrKTsKPiA+ICsJY2FzZSAzMDcyMDA6Cj4gPiArCWNhc2UgNTU2ODAwOgo+ID4gKwljYXNl IDY1MjgwMDoKPiA+ICsJCVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAxOTIwMCAm Jgo+ID4gKwkJCWRldl9wcml2LT5jZGNsay5ody5yZWYgIT0gMzg0MDApOwo+ID4gKwkJYnJlYWs7 Cj4gPiArCWNhc2UgMzEyMDAwOgo+ID4gKwljYXNlIDU1MjAwMDoKPiA+ICsJY2FzZSA2NDgwMDA6 Cj4gPiArCQlXQVJOX09OKGRldl9wcml2LT5jZGNsay5ody5yZWYgIT0gMjQwMDApOwo+ID4gKwl9 Cj4gPiArCj4gPiArCXJhdGlvID0gY2RjbGsgLyAoZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAvIDIp Owo+ID4gKwo+ID4gKwlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlvOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpY2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0 ZQo+ID4gKmNkY2xrX3N0YXRlKQo+ID4gK3sKPiA+ICsJdW5zaWduZWQgaW50IGNkY2xrID0gY2Rj bGtfc3RhdGUtPmNkY2xrOwo+ID4gKwl1bnNpZ25lZCBpbnQgdmNvID0gY2RjbGtfc3RhdGUtPnZj bzsKPiA+ICsJaW50IHJldDsKPiA+ICsJdTMyIHZvbHRhZ2VfbGV2ZWw7Cj4gPiArCj4gPiArCW11 dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gPiArCXJldCA9IHNrbF9wY29kZV9yZXF1 ZXN0KGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwKPiA+ICsJCQkJU0tMX0NEQ0xL X1BSRVBBUkVfRk9SX0NIQU5HRSwKPiA+ICsJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0Us Cj4gPiArCQkJCVNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdFLCAzKTsKPiA+ICsJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fRVJS T1IoIkZhaWxlZCB0byBpbmZvcm0gUENVIGFib3V0IGNkY2xrIGNoYW5nZQo+ID4gKCVkKVxuIiwK PiA+ICsJCQkgIHJldCk7Cj4gPiArCQlyZXR1cm47Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogRklY TUU6IFdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIHRoZSBEREkgY2xvY2sgaGVyZS4gKi8KPiA+ICsJ c3dpdGNoIChjZGNsaykgewo+ID4gKwljYXNlIDMwNzIwMDoKPiA+ICsJY2FzZSAzMTIwMDA6Cj4g PiArCQl2b2x0YWdlX2xldmVsID0gMDsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIDU1NjgwMDoK PiA+ICsJY2FzZSA1NTIwMDA6Cj4gPiArCQl2b2x0YWdlX2xldmVsID0gMTsKPiA+ICsJCWJyZWFr Owo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJTUlTU0lOR19DQVNFKGNkY2xrKTsKPiA+ICsJY2FzZSA2 NTI4MDA6Cj4gPiArCWNhc2UgNjQ4MDAwOgo+ID4gKwkJdm9sdGFnZV9sZXZlbCA9IDI7Cj4gPiAr CQlicmVhazsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAh PSAwICYmCj4gPiArCSAgICBkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IHZjbykKPiA+ICsJCWNu bF9jZGNsa19wbGxfZGlzYWJsZShkZXZfcHJpdik7Cj4gPiArCj4gPiArCWlmIChkZXZfcHJpdi0+ Y2RjbGsuaHcudmNvICE9IHZjbykKPiA+ICsJCWNubF9jZGNsa19wbGxfZW5hYmxlKGRldl9wcml2 LCB2Y28pOwo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgSUNMX0NEQ0xLX0NEMlhf UElQRV9OT05FIHwKPiA+ICsJCQkgICAgICBza2xfY2RjbGtfZGVjaW1hbChjZGNsaykpOwo+ID4g Kwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ID4gKwlzYW5keWJyaWRn ZV9wY29kZV93cml0ZShkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCj4gPiArCQkJ CXZvbHRhZ2VfbGV2ZWwpOwo+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7 Cj4gPiArCj4gPiArCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyB2b2lkIGljbF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gKwkJCSAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkK PiA+ICt7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVfUkVBRChTS0xfRFNT TSk7Cj4gPiArCXN3aXRjaCAodmFsICYgSUNMX0RTU01fQ0RDTEtfUExMX1JFRkNMS19NQVNLKSB7 Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0UodmFsKTsKPiA+ICsJY2FzZSBJQ0xf RFNTTV9DRENMS19QTExfUkVGQ0xLXzI0TUh6Ogo+ID4gKwkJY2RjbGtfc3RhdGUtPnJlZiA9IDI0 MDAwOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgSUNMX0RTU01fQ0RDTEtfUExMX1JFRkNMS18x OV8yTUh6Ogo+ID4gKwkJY2RjbGtfc3RhdGUtPnJlZiA9IDE5MjAwOwo+ID4gKwkJYnJlYWs7Cj4g PiArCWNhc2UgSUNMX0RTU01fQ0RDTEtfUExMX1JFRkNMS18zOF80TUh6Ogo+ID4gKwkJY2RjbGtf c3RhdGUtPnJlZiA9IDM4NDAwOwo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICsJdmFs ID0gSTkxNV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKTsKPiA+ICsJaWYgKCh2YWwgJiBCWFRfREVf UExMX1BMTF9FTkFCTEUpID09IDAgfHwKPiA+ICsJICAgICh2YWwgJiBCWFRfREVfUExMX0xPQ0sp ID09IDApIHsKPiA+ICsJCS8qIENEQ0xLIFBMTCBpcyBkaXNhYmxlZCwgdGhlIFZDTy9yYXRpbyBk b2Vzbid0Cj4gPiBtYXR0ZXIsIGJ1dAo+ID4gKwkJICogc2V0dGluZyBpdCB0byB6ZXJvIGlzIGEg d2F5IHRvIHNpZ25hbCB0aGF0LiAqLwo+ID4gKwkJY2RjbGtfc3RhdGUtPnZjbyA9IDA7Cj4gPiAr CQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA1MDAwMDsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4g Kwo+ID4gKwljZGNsa19zdGF0ZS0+dmNvID0gKHZhbCAmIEJYVF9ERV9QTExfUkFUSU9fTUFTSykg Kgo+ID4gY2RjbGtfc3RhdGUtPnJlZjsKPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKENEQ0xL X0NUTCk7Cj4gPiArCVdBUk5fT04oKHZhbCAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSykg IT0gMCk7Cj4gPiArCj4gPiArCWNkY2xrX3N0YXRlLT5jZGNsayA9IGNkY2xrX3N0YXRlLT52Y28g LyAyOwo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpY2xfaW5pdF9jZGNsayAtIEluaXRp YWxpemUgQ0RDTEsgb24gSUNMCj4gPiArICogQGRldl9wcml2OiBpOTE1IGRldmljZQo+ID4gKyAq Cj4gPiArICogSW5pdGlhbGl6ZSBDRENMSyBmb3IgSUNMLiBUaGlzIGNvbnNpc3RzIG1haW5seSBv ZiBpbml0aWFsaXppbmcKPiA+ICsgKiBkZXZfcHJpdi0+Y2RjbGsuaHcgYW5kIHNhbml0aXppbmcg dGhlIHN0YXRlIG9mIHRoZSBoYXJkd2FyZSBpZgo+ID4gbmVlZGVkLiBUaGlzCj4gPiArICogaXMg Z2VuZXJhbGx5IGRvbmUgb25seSBkdXJpbmcgdGhlIGRpc3BsYXkgY29yZSBpbml0aWFsaXphdGlv bgo+ID4gc2VxdWVuY2UsIGFmdGVyCj4gPiArICogd2hpY2ggdGhlIERNQyB3aWxsIHRha2UgY2Fy ZSBvZiB0dXJuaW5nIENEQ0xLIG9mZi9vbiBhcyBuZWVkZWQuCj4gPiArICovCj4gPiArdm9pZCBp Y2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ ID4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3RhdGU7Cj4gPiArCXUzMiB2YWw7 Cj4gPiArCj4gPiArCS8qIFRoaXMgc2V0cyBkZXZfcHJpdi0+Y2RjbGsuaHcuICovCj4gPiArCWlu dGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gPiArCj4gPiArCWNkY2xrX3N0YXRlID0gZGV2 X3ByaXYtPmNkY2xrLmh3Owo+ID4gKwo+ID4gKwkvKiBUaGlzIG1lYW5zIENEQ0xLIGRpc2FibGVk LiAqLwo+ID4gKwlpZiAoY2RjbGtfc3RhdGUuY2RjbGsgPT0gNTAwMDApCj4gPiArCQlnb3RvIHNh bml0aXplOwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKTsKPiA+ICsKPiA+ ICsJaWYgKCh2YWwgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0spICE9IDApCj4gPiArCQln b3RvIHNhbml0aXplOwo+ID4gKwo+ID4gKwlpZiAoKHZhbCAmIENEQ0xLX0ZSRVFfREVDSU1BTF9N QVNLKSAhPQo+ID4gKwkgICAgc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrKSkKPiA+ICsJCWdvdG8gc2FuaXRpemU7Cj4gPiArCj4gPiArCXJldHVybjsKPiA+ICsKPiA+ ICtzYW5pdGl6ZToKPiA+ICsJRFJNX0RFQlVHX0tNUygiU2FuaXRpemluZyBjZGNsayBwcm9ncmFt bWVkIGJ5IHByZS1vc1xuIik7Cj4gPiArCj4gPiArCWNkY2xrX3N0YXRlLnJlZiA9IGRldl9wcml2 LT5jZGNsay5ody5yZWY7Cj4gPiArCWNkY2xrX3N0YXRlLmNkY2xrID0gaWNsX2NhbGNfY2RjbGso MCwgY2RjbGtfc3RhdGUucmVmKTsKPiA+ICsJY2RjbGtfc3RhdGUudmNvID0gaWNsX2NhbGNfY2Rj bGtfcGxsX3ZjbyhkZXZfcHJpdiwKPiA+IGNkY2xrX3N0YXRlLmNkY2xrKTsKPiA+ICsKPiA+ICsJ aWNsX3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ICt9Cj4gPiArCj4gPiAr LyoqCj4gPiArICogaWNsX3VuaW5pdF9jZGNsayAtIFVuaW5pdGlhbGl6ZSBDRENMSyBvbiBJQ0wK PiA+ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCj4gPiArICoKPiA+ICsgKiBVbmluaXRpYWxp emUgQ0RDTEsgZm9yIElDTC4gVGhpcyBpcyBkb25lIG9ubHkgZHVyaW5nIHRoZQo+ID4gZGlzcGxh eSBjb3JlCj4gPiArICogdW5pbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KPiA+ICsgKi8KPiA+ICt2 b2lkIGljbF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGNkY2xrX3N0YXRlID0gZGV2X3By aXYtPmNkY2xrLmh3Owo+ID4gKwo+ID4gKwljZGNsa19zdGF0ZS5jZGNsayA9IGNkY2xrX3N0YXRl LnJlZjsKPiA+ICsJY2RjbGtfc3RhdGUudmNvID0gMDsKPiA+ICsKPiA+ICsJaWNsX3NldF9jZGNs ayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICog Y25sX2luaXRfY2RjbGsgLSBJbml0aWFsaXplIENEQ0xLIG9uIENOTAo+ID4gICAqIEBkZXZfcHJp djogaTkxNSBkZXZpY2UKPiA+IEBAIC0yMjA0LDYgKzI0MTMsMzYgQEAgc3RhdGljIGludCBjbmxf bW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g PiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgaW50IGljbF9tb2Rlc2V0X2Nh bGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiA+ ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ID4gdG9faW50ZWxf YXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+ICsJdW5zaWduZWQgaW50IHJlZiA9IGludGVsX3N0YXRl LT5jZGNsay5sb2dpY2FsLnJlZjsKPiA+ICsJaW50IG1pbl9jZGNsaywgY2RjbGssIHZjbzsKPiA+ ICsKPiA+ICsJbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ID4g KwlpZiAobWluX2NkY2xrIDwgMCkKPiA+ICsJCXJldHVybiBtaW5fY2RjbGs7Cj4gPiArCj4gPiAr CWNkY2xrID0gaWNsX2NhbGNfY2RjbGsobWluX2NkY2xrLCByZWYpOwo+ID4gKwl2Y28gPSBpY2xf Y2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gPiArCj4gPiArCWludGVsX3N0 YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKPiA+ICsJaW50ZWxfc3RhdGUtPmNkY2xrLmxv Z2ljYWwuY2RjbGsgPSBjZGNsazsKPiA+ICsKPiA+ICsJaWYgKCFpbnRlbF9zdGF0ZS0+YWN0aXZl X2NydGNzKSB7Cj4gPiArCQljZGNsayA9IGljbF9jYWxjX2NkY2xrKDAsIHJlZik7Cj4gPiArCQl2 Y28gPSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gPiArCj4gPiAr CQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKPiA+ICsJCWludGVsX3N0YXRl LT5jZGNsay5hY3R1YWwuY2RjbGsgPSBjZGNsazsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWludGVs X3N0YXRlLT5jZGNsay5hY3R1YWwgPSBpbnRlbF9zdGF0ZS0KPiA+ID5jZGNsay5sb2dpY2FsOwo+ ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgaW50 IGludGVsX2NvbXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRl dl9wcml2KQo+ID4gIHsKPiA+ICAJaW50IG1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPm1heF9j ZGNsa19mcmVxOwo+ID4gQEAgLTIyMzcsNyArMjQ3NiwxMiBAQCBzdGF0aWMgaW50IGludGVsX2Nv bXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ID4gICAqLwo+ID4gIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gLQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikpIHsKPiA+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlpZiAoZGV2X3By aXYtPmNkY2xrLmh3LnJlZiA9PSAyNDAwMCkKPiA+ICsJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2Zy ZXEgPSA2NDgwMDA7Cj4gPiArCQllbHNlCj4gPiArCQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx ID0gNjUyODAwOwo+ID4gKwl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4g PiAgCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA1MjgwMDA7Cj4gPiAgCX0gZWxzZSBpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiA+ICAJCXUzMiBsaW1pdCA9IEk5MTVfUkVBRChTS0xf REZTTSkgJgo+ID4gU0tMX0RGU01fQ0RDTEtfTElNSVRfTUFTSzsKPiA+IEBAIC0yNDYxLDkgKzI3 MDUsMTQgQEAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdAo+ID4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsgPSBj bmxfc2V0X2NkY2xrOwo+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xr ID0KPiA+ICAJCQljbmxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ID4gKwl9IGVsc2UgaWYgKElTX0lD RUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsgPSBp Y2xfc2V0X2NkY2xrOwo+ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xr ID0KPiA+IGljbF9tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4g PiArCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBpY2xfZ2V0X2NkY2xrOwo+ID4gKwll bHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmdldF9jZGNsayA9IGNubF9nZXRfY2RjbGs7Cj4gPiAgCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2 X3ByaXYpKQo+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gc2tsX2dldF9jZGNs azsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggM2NlZTU0YmMwMzUy Li5jNWQ2MDkyYWNhNDEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBA IC0xNDAzLDYgKzE0MDMsOCBAQCB2b2lkIGNubF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4gPiAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgY25sX3VuaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgYnh0X2luaXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICB2b2lkIGJ4dF91bmluaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICt2b2lkIGljbF9pbml0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiArdm9pZCBpY2xf dW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAgdm9p ZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gPiAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Cj4gPiAgdm9pZCBpbnRlbF91cGRhdGVfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IC0tIAo+ID4gMi4xNC4zCj4gPiAKPiA+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK