From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 2/6] drm/i915/icl: add the main CDCLK functions Date: Tue, 06 Feb 2018 13:29:14 -0200 Message-ID: <1517930954.2763.19.camel@intel.com> References: <20180205154046.11485-1-paulo.r.zanoni@intel.com> <20180205154046.11485-3-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id B33BC6E442 for ; Tue, 6 Feb 2018 15:30:04 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Ausmus, James" Cc: Intel GFX List-Id: intel-gfx@lists.freedesktop.org RW0gU2VnLCAyMDE4LTAyLTA1IMOgcyAxNToxMyAtMDgwMCwgQXVzbXVzLCBKYW1lcyBlc2NyZXZl dToKPiBPbiBNb24sIEZlYiAwNSwgMjAxOCBhdCAwMTo0MDo0MlBNIC0wMjAwLCBQYXVsbyBaYW5v bmkgd3JvdGU6Cj4gPiBUaGlzIGNvbW1pdCBhZGRzIHRoZSBiYXNpYyBDRENMSyBmdW5jdGlvbnMs IGJ1dCBpdCdzIHN0aWxsIG1pc3NpbmcKPiA+IHBpZWNlcyBvZiB0aGUgZGlzcGxheSBpbml0aWFs aXphdGlvbiBzZXF1ZW5jZS4KPiA+IAo+ID4gdjI6Cj4gPiAgLSBJbXBsZW1lbnQgdGhlIHZvbHRh Z2UgbGV2ZWxzLgo+ID4gIC0gUmViYXNlLgo+ID4gdjM6Cj4gPiAgLSBBZGp1c3QgdG8gdGhlIG5l dyAiYnlwYXNzIiBjbG9jayAoSW1yZSkuCj4gPiAgLSBDYWxsIGludGVsX2R1bXBfY2RjbGtfc3Rh dGUoKSB0b28uCj4gPiAgLSBSZW5hbWUgYSB2YXJpYWJsZSB0byBhdm9pZCBjb25mdXNpb24uCj4g PiAgLSBTaW1wbGlmeSB0aGUgRFZGUyBwYXJ0Lgo+IAo+ICAgICAgXl5eXl5eXgo+IFNob3VsZG4n dCB0aGlzIGJlIHNvbWV0aGluZyBtb3JlIGxpa2UKPiAKPiAiRHJvcCBEVkZTIHBhcnQgYW5kIHJl cGxhY2Ugd2l0aCBhIFRPRE8iPwo+IAo+ICJTaW1wbGlmeSIgbWFrZXMgaXQgc291bmQgbGlrZSBp dCdzIHN0aWxsIHRoZXJlLCBidXQgaXQncyBub3QsIHVubGVzcwo+IEknbSBtaXNzaW5nIHNvbWV0 aGluZz8KCldlIG5vdyBhbHdheXMgc2V0IHRoZSB2b2x0YWdlIHRvIG1heGltdW0gKDIpIGluc3Rl YWQgb2YgcGlja2luZyBhCnBvc3NpYmx5IHdyb25nIHZhbHVlIChkdWUgdG8gbm90IGNvbnNpZGVy aW5nIHRoZSBEREkgY2xvY2tzKSwgc28gaW4gYQp3YXkgd2UgZG8gdGhlIERWRlMgdGhpbmcsIGp1 c3QgYWx3YXlzIHdpdGggdGhlIHNhZmVzdCB2YWx1ZS4KClRoZSBwYXRjaCB0aGF0IHBpY2tzIHRo ZSBiZXN0IHZhbHVlIHdpbGwgY29tZSBsYXRlci4KCj4gCj4gCj4gPiB2NDoKPiA+ICAtIFJlbW92 ZSB3cm9uZyBiaXQgZGVmaW5pdGlvbiAoSmFtZXMpLgo+ID4gIC0gQWxzbyBkcml2ZS1ieSBmaXgg dGhlIGNvZGluZyBzdHlsZSBmb3IgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb24KPiA+IHdlCj4gPiAg ICB0b3VjaGVkLgo+ID4gCj4gPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNtdXNAaW50ZWwu Y29tPgo+ID4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IFNpZ25lZC1v ZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gLS0tCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAzNSArKystLS0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIHwgMjM1Cj4gPiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICB8ICAgMiArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyNTUgaW5zZXJ0aW9ucygrKSwg MTcgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IGlu ZGV4IGY2ZTE2NzdlODIxMS4uMmI2YTkwODA1NmQ2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ID4gQEAgLTcxODIsOCArNzE4MiwxMiBAQCBlbnVtIHsKPiA+ICAjZGVmaW5lIFNL TF9ERlNNX1BJUEVfQl9ESVNBQkxFICgxIDw8IDIxKQo+ID4gICNkZWZpbmUgU0tMX0RGU01fUElQ RV9DX0RJU0FCTEUgKDEgPDwgMjgpCj4gPiAgCj4gPiAtI2RlZmluZSBTS0xfRFNTTSBfTU1JTygw eDUxMDA0KQo+ID4gLSNkZWZpbmUgQ05MX0RTU01fQ0RDTEtfUExMX1JFRkNMS18yNE1IeiAoMSA8 PCAzMSkKPiA+ICsjZGVmaW5lIFNLTF9EU1NNIF9NTUlPKDB4NTEwMDQpCj4gPiArI2RlZmluZSBD TkxfRFNTTV9DRENMS19QTExfUkVGQ0xLXzI0TUh6ICgxIDw8IDMxKQo+ID4gKyNkZWZpbmUgSUNM X0RTU01fQ0RDTEtfUExMX1JFRkNMS19NQVNLICg3IDw8IDI5KQo+ID4gKyNkZWZpbmUgSUNMX0RT U01fQ0RDTEtfUExMX1JFRkNMS18yNE1IeiAoMCA8PCAyOSkKPiA+ICsjZGVmaW5lIElDTF9EU1NN X0NEQ0xLX1BMTF9SRUZDTEtfMTlfMk1IeiAoMSA8PCAyOSkKPiA+ICsjZGVmaW5lIElDTF9EU1NN X0NEQ0xLX1BMTF9SRUZDTEtfMzhfNE1IeiAoMiA8PCAyOSkKPiA+ICAKPiA+ICAjZGVmaW5lIEdF TjdfRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjEgX01NSU8oMHgyMGUwKQo+ID4gICNkZWZpbmUgICBHRU45 X0ZGU0NfUEVSQ1RYX1BSRUVNUFRfQ1RSTCAoMTw8MTQpCj4gPiBAQCAtODgxNiwyMCArODgyMCwy MSBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiA+ICAKPiA+ICAvKiBDRENMS19DVEwgKi8KPiA+ ICAjZGVmaW5lIENEQ0xLX0NUTCBfTU1JTygweDQ2MDAwKQo+ID4gLSNkZWZpbmUgIENEQ0xLX0ZS RVFfU0VMX01BU0sgKDM8PDI2KQo+ID4gLSNkZWZpbmUgIENEQ0xLX0ZSRVFfNDUwXzQzMiAoMDw8 MjYpCj4gPiAtI2RlZmluZSAgQ0RDTEtfRlJFUV81NDAgKDE8PDI2KQo+ID4gLSNkZWZpbmUgIENE Q0xLX0ZSRVFfMzM3XzMwOCAoMjw8MjYpCj4gPiAtI2RlZmluZSAgQ0RDTEtfRlJFUV82NzVfNjE3 ICgzPDwyNikKPiA+IC0jZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0sgKDM8PDIy KQo+ID4gLSNkZWZpbmUgIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMSAoMDw8MjIpCj4gPiAtI2Rl ZmluZSAgQlhUX0NEQ0xLX0NEMlhfRElWX1NFTF8xXzUgKDE8PDIyKQo+ID4gLSNkZWZpbmUgIEJY VF9DRENMS19DRDJYX0RJVl9TRUxfMiAoMjw8MjIpCj4gPiAtI2RlZmluZSAgQlhUX0NEQ0xLX0NE MlhfRElWX1NFTF80ICgzPDwyMikKPiA+IC0jZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9QSVBFKHBp cGUpICgocGlwZSk8PDIwKQo+ID4gLSNkZWZpbmUgIENEQ0xLX0RJVk1VWF9DRF9PVkVSUklERSAo MTw8MTkpCj4gPiArI2RlZmluZSAgQ0RDTEtfRlJFUV9TRUxfTUFTSyAoMyA8PCAyNikKPiA+ICsj ZGVmaW5lICBDRENMS19GUkVRXzQ1MF80MzIgKDAgPDwgMjYpCj4gPiArI2RlZmluZSAgQ0RDTEtf RlJFUV81NDAgKDEgPDwgMjYpCj4gPiArI2RlZmluZSAgQ0RDTEtfRlJFUV8zMzdfMzA4ICgyIDw8 IDI2KQo+ID4gKyNkZWZpbmUgIENEQ0xLX0ZSRVFfNjc1XzYxNyAoMyA8PCAyNikKPiA+ICsjZGVm aW5lICBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0sgKDMgPDwgMjIpCj4gPiArI2RlZmluZSAg QlhUX0NEQ0xLX0NEMlhfRElWX1NFTF8xICgwIDw8IDIyKQo+ID4gKyNkZWZpbmUgIEJYVF9DRENM S19DRDJYX0RJVl9TRUxfMV81ICgxIDw8IDIyKQo+ID4gKyNkZWZpbmUgIEJYVF9DRENMS19DRDJY X0RJVl9TRUxfMiAoMiA8PCAyMikKPiA+ICsjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VM XzQgKDMgPDwgMjIpCj4gPiArI2RlZmluZSAgQlhUX0NEQ0xLX0NEMlhfUElQRShwaXBlKSAoKHBp cGUpIDw8IDIwKQo+ID4gKyNkZWZpbmUgIENEQ0xLX0RJVk1VWF9DRF9PVkVSUklERSAoMSA8PCAx OSkKPiA+ICAjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkUgQlhUX0NEQ0xLX0NEMlhf UElQRSgzKQo+ID4gLSNkZWZpbmUgIEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRSAoMTw8 MTYpCj4gPiArI2RlZmluZSAgSUNMX0NEQ0xLX0NEMlhfUElQRV9OT05FICg3IDw8IDE5KQo+ID4g KyNkZWZpbmUgIEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRSAoMSA8PCAxNikKPiA+ICAj ZGVmaW5lICBDRENMS19GUkVRX0RFQ0lNQUxfTUFTSyAoMHg3ZmYpCj4gPiAgCj4gPiAgLyogTENQ TExfQ1RMICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2Rj bGsuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gPiBpbmRleCBl ZTc4OGQ1YmU1ZTMuLjUyYTE1ZDBlYWFlOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NkY2xrLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NkY2xrLmMKPiA+IEBAIC0xNzc4LDYgKzE3NzgsMTk3IEBAIHN0YXRpYyB2b2lkIGNubF9zYW5p dGl6ZV9jZGNsayhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gICBk ZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gLTE7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBpbnQg aWNsX2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaywgdW5zaWduZWQgaW50IHJlZikKPiA+ICt7Cj4g PiArIGludCByYW5nZXNfMjRbXSA9IHsgMzEyMDAwLCA1NTIwMDAsIDY0ODAwMCB9Owo+ID4gKyBp bnQgcmFuZ2VzXzE5XzM4W10gPSB7IDMwNzIwMCwgNTU2ODAwLCA2NTI4MDAgfTsKPiA+ICsgaW50 ICpyYW5nZXM7Cj4gPiArCj4gPiArIHN3aXRjaCAocmVmKSB7Cj4gPiArIGRlZmF1bHQ6Cj4gPiAr IE1JU1NJTkdfQ0FTRShyZWYpOwo+ID4gKyBjYXNlIDI0MDAwOgo+ID4gKyByYW5nZXMgPSByYW5n ZXNfMjQ7Cj4gPiArIGJyZWFrOwo+ID4gKyBjYXNlIDE5MjAwOgo+ID4gKyBjYXNlIDM4NDAwOgo+ ID4gKyByYW5nZXMgPSByYW5nZXNfMTlfMzg7Cj4gPiArIGJyZWFrOwo+ID4gKyB9Cj4gPiArCj4g PiArIGlmIChtaW5fY2RjbGsgPiByYW5nZXNbMV0pCj4gPiArIHJldHVybiByYW5nZXNbMl07Cj4g PiArIGVsc2UgaWYgKG1pbl9jZGNsayA+IHJhbmdlc1swXSkKPiA+ICsgcmV0dXJuIHJhbmdlc1sx XTsKPiA+ICsgZWxzZQo+ID4gKyByZXR1cm4gcmFuZ2VzWzBdOwo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgaW50IGljbF9jYWxjX2NkY2xrX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUK PiA+ICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+ID4gK3sKPiA+ICsgaW50IHJhdGlvOwo+ID4gKwo+ ID4gKyBpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LmJ5cGFzcykKPiA+ICsgcmV0dXJu IDA7Cj4gPiArCj4gPiArIHN3aXRjaCAoY2RjbGspIHsKPiA+ICsgZGVmYXVsdDoKPiA+ICsgTUlT U0lOR19DQVNFKGNkY2xrKTsKPiA+ICsgY2FzZSAzMDcyMDA6Cj4gPiArIGNhc2UgNTU2ODAwOgo+ ID4gKyBjYXNlIDY1MjgwMDoKPiA+ICsgV0FSTl9PTihkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9 IDE5MjAwICYmCj4gPiArIGRldl9wcml2LT5jZGNsay5ody5yZWYgIT0gMzg0MDApOwo+ID4gKyBi cmVhazsKPiA+ICsgY2FzZSAzMTIwMDA6Cj4gPiArIGNhc2UgNTUyMDAwOgo+ID4gKyBjYXNlIDY0 ODAwMDoKPiA+ICsgV0FSTl9PTihkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDI0MDAwKTsKPiA+ ICsgfQo+ID4gKwo+ID4gKyByYXRpbyA9IGNkY2xrIC8gKGRldl9wcml2LT5jZGNsay5ody5yZWYg LyAyKTsKPiA+ICsKPiA+ICsgcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaWNsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3Rh dGUgKmNkY2xrX3N0YXRlKQo+ID4gK3sKPiA+ICsgdW5zaWduZWQgaW50IGNkY2xrID0gY2RjbGtf c3RhdGUtPmNkY2xrOwo+ID4gKyB1bnNpZ25lZCBpbnQgdmNvID0gY2RjbGtfc3RhdGUtPnZjbzsK PiA+ICsgaW50IHJldDsKPiA+ICsKPiA+ICsgbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKPiA+ICsgcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENM S19DT05UUk9MLAo+ID4gKyBTS0xfQ0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdFLAo+ID4gKyBTS0xf Q0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwKPiA+ICsgU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0Us IDMpOwo+ID4gKyBtdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gPiArIGlmIChy ZXQpIHsKPiA+ICsgRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5mb3JtIFBDVSBhYm91dCBjZGNsayBj aGFuZ2UgKCVkKVxuIiwKPiA+ICsgIHJldCk7Cj4gPiArIHJldHVybjsKPiA+ICsgfQo+ID4gKwo+ ID4gKyBpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwICYmCj4gPiArICAgIGRldl9wcml2 LT5jZGNsay5ody52Y28gIT0gdmNvKQo+ID4gKyBjbmxfY2RjbGtfcGxsX2Rpc2FibGUoZGV2X3By aXYpOwo+ID4gKwo+ID4gKyBpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gPiAr IGNubF9jZGNsa19wbGxfZW5hYmxlKGRldl9wcml2LCB2Y28pOwo+ID4gKwo+ID4gKyBJOTE1X1dS SVRFKENEQ0xLX0NUTCwgSUNMX0NEQ0xLX0NEMlhfUElQRV9OT05FIHwKPiA+ICsgICAgICBza2xf Y2RjbGtfZGVjaW1hbChjZGNsaykpOwo+ID4gKwo+ID4gKyBtdXRleF9sb2NrKCZkZXZfcHJpdi0+ cGN1X2xvY2spOwo+ID4gKyAvKiBUT0RPOiBhZGQgcHJvcGVyIERWRlMgc3VwcG9ydC4gKi8KPiA+ ICsgc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05U Uk9MLCAyKTsKPiA+ICsgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ID4gKwo+ ID4gKyBpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgdm9pZCBpY2xfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICsgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiArewo+ID4g KyB1MzIgdmFsOwo+ID4gKwo+ID4gKyBjZGNsa19zdGF0ZS0+YnlwYXNzID0gNTAwMDA7Cj4gPiAr Cj4gPiArIHZhbCA9IEk5MTVfUkVBRChTS0xfRFNTTSk7Cj4gPiArIHN3aXRjaCAodmFsICYgSUNM X0RTU01fQ0RDTEtfUExMX1JFRkNMS19NQVNLKSB7Cj4gPiArIGRlZmF1bHQ6Cj4gPiArIE1JU1NJ TkdfQ0FTRSh2YWwpOwo+ID4gKyBjYXNlIElDTF9EU1NNX0NEQ0xLX1BMTF9SRUZDTEtfMjRNSHo6 Cj4gPiArIGNkY2xrX3N0YXRlLT5yZWYgPSAyNDAwMDsKPiA+ICsgYnJlYWs7Cj4gPiArIGNhc2Ug SUNMX0RTU01fQ0RDTEtfUExMX1JFRkNMS18xOV8yTUh6Ogo+ID4gKyBjZGNsa19zdGF0ZS0+cmVm ID0gMTkyMDA7Cj4gPiArIGJyZWFrOwo+ID4gKyBjYXNlIElDTF9EU1NNX0NEQ0xLX1BMTF9SRUZD TEtfMzhfNE1IejoKPiA+ICsgY2RjbGtfc3RhdGUtPnJlZiA9IDM4NDAwOwo+ID4gKyBicmVhazsK PiA+ICsgfQo+ID4gKwo+ID4gKyB2YWwgPSBJOTE1X1JFQUQoQlhUX0RFX1BMTF9FTkFCTEUpOwo+ ID4gKyBpZiAoKHZhbCAmIEJYVF9ERV9QTExfUExMX0VOQUJMRSkgPT0gMCB8fAo+ID4gKyAgICAo dmFsICYgQlhUX0RFX1BMTF9MT0NLKSA9PSAwKSB7Cj4gPiArIC8qIENEQ0xLIFBMTCBpcyBkaXNh YmxlZCwgdGhlIFZDTy9yYXRpbyBkb2Vzbid0IG1hdHRlciwgYnV0Cj4gPiArICogc2V0dGluZyBp dCB0byB6ZXJvIGlzIGEgd2F5IHRvIHNpZ25hbCB0aGF0LiAqLwo+IAo+IGNoZWNrcGF0Y2ggdGhy b3dzIGEgd2FybiBvbiB0aGlzIGNvbW1lbnQ6Cj4gCj4gV0FSTklORzogQmxvY2sgY29tbWVudHMg dXNlIGEgdHJhaWxpbmcgKi8gb24gYSBzZXBhcmF0ZSBsaW5lCj4gIzIxMTogRklMRTogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYzoxODk3Ogo+ICsgICAgICAgICAgICAgICAgKiBz ZXR0aW5nIGl0IHRvIHplcm8gaXMgYSB3YXkgdG8gc2lnbmFsIHRoYXQuICovCj4gCj4gdG90YWw6 IDAgZXJyb3JzLCAxIHdhcm5pbmdzLCAzMTcgbGluZXMgY2hlY2tlZAo+IAo+ID4gKyBjZGNsa19z dGF0ZS0+dmNvID0gMDsKPiA+ICsgY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtfc3RhdGUtPmJ5 cGFzczsKPiA+ICsgcmV0dXJuOwo+ID4gKyB9Cj4gPiArCj4gPiArIGNkY2xrX3N0YXRlLT52Y28g PSAodmFsICYgQlhUX0RFX1BMTF9SQVRJT19NQVNLKSAqIGNkY2xrX3N0YXRlLQo+ID4gPnJlZjsK PiA+ICsKPiA+ICsgdmFsID0gSTkxNV9SRUFEKENEQ0xLX0NUTCk7Cj4gPiArIFdBUk5fT04oKHZh bCAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSykgIT0gMCk7Cj4gPiArCj4gPiArIGNkY2xr X3N0YXRlLT5jZGNsayA9IGNkY2xrX3N0YXRlLT52Y28gLyAyOwo+ID4gK30KPiA+ICsKPiA+ICsv KioKPiA+ICsgKiBpY2xfaW5pdF9jZGNsayAtIEluaXRpYWxpemUgQ0RDTEsgb24gSUNMCj4gPiAr ICogQGRldl9wcml2OiBpOTE1IGRldmljZQo+ID4gKyAqCj4gPiArICogSW5pdGlhbGl6ZSBDRENM SyBmb3IgSUNMLiBUaGlzIGNvbnNpc3RzIG1haW5seSBvZiBpbml0aWFsaXppbmcKPiA+ICsgKiBk ZXZfcHJpdi0+Y2RjbGsuaHcgYW5kIHNhbml0aXppbmcgdGhlIHN0YXRlIG9mIHRoZSBoYXJkd2Fy ZSBpZgo+ID4gbmVlZGVkLiBUaGlzCj4gPiArICogaXMgZ2VuZXJhbGx5IGRvbmUgb25seSBkdXJp bmcgdGhlIGRpc3BsYXkgY29yZSBpbml0aWFsaXphdGlvbgo+ID4gc2VxdWVuY2UsIGFmdGVyCj4g PiArICogd2hpY2ggdGhlIERNQyB3aWxsIHRha2UgY2FyZSBvZiB0dXJuaW5nIENEQ0xLIG9mZi9v biBhcyBuZWVkZWQuCj4gPiArICovCj4gPiArdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKyBzdHJ1Y3QgaW50ZWxfY2RjbGtf c3RhdGUgc2FuaXRpemVkX3N0YXRlOwo+ID4gKyB1MzIgdmFsOwo+ID4gKwo+ID4gKyAvKiBUaGlz IHNldHMgZGV2X3ByaXYtPmNkY2xrLmh3LiAqLwo+ID4gKyBpbnRlbF91cGRhdGVfY2RjbGsoZGV2 X3ByaXYpOwo+ID4gKyBpbnRlbF9kdW1wX2NkY2xrX3N0YXRlKCZkZXZfcHJpdi0+Y2RjbGsuaHcs ICJDdXJyZW50IENEQ0xLIik7Cj4gPiArCj4gPiArIC8qIFRoaXMgbWVhbnMgQ0RDTEsgZGlzYWJs ZWQuICovCj4gPiArIGlmIChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPT0gZGV2X3ByaXYtPmNk Y2xrLmh3LmJ5cGFzcykKPiA+ICsgZ290byBzYW5pdGl6ZTsKPiA+ICsKPiA+ICsgdmFsID0gSTkx NV9SRUFEKENEQ0xLX0NUTCk7Cj4gPiArCj4gPiArIGlmICgodmFsICYgQlhUX0NEQ0xLX0NEMlhf RElWX1NFTF9NQVNLKSAhPSAwKQo+ID4gKyBnb3RvIHNhbml0aXplOwo+ID4gKwo+ID4gKyBpZiAo KHZhbCAmIENEQ0xLX0ZSRVFfREVDSU1BTF9NQVNLKSAhPQo+ID4gKyAgICBza2xfY2RjbGtfZGVj aW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspKQo+ID4gKyBnb3RvIHNhbml0aXplOwo+ID4g Kwo+ID4gKyByZXR1cm47Cj4gPiArCj4gPiArc2FuaXRpemU6Cj4gPiArIERSTV9ERUJVR19LTVMo IlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIpOwo+ID4gKwo+ID4gKyBz YW5pdGl6ZWRfc3RhdGUucmVmID0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZjsKPiA+ICsgc2FuaXRp emVkX3N0YXRlLmNkY2xrID0gaWNsX2NhbGNfY2RjbGsoMCwgc2FuaXRpemVkX3N0YXRlLnJlZik7 Cj4gPiArIHNhbml0aXplZF9zdGF0ZS52Y28gPSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9w cml2LAo+ID4gKyAgICAgc2FuaXRpemVkX3N0YXRlLmNkY2xrKTsKPiA+ICsKPiA+ICsgaWNsX3Nl dF9jZGNsayhkZXZfcHJpdiwgJnNhbml0aXplZF9zdGF0ZSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8q Kgo+ID4gKyAqIGljbF91bmluaXRfY2RjbGsgLSBVbmluaXRpYWxpemUgQ0RDTEsgb24gSUNMCj4g PiArICogQGRldl9wcml2OiBpOTE1IGRldmljZQo+ID4gKyAqCj4gPiArICogVW5pbml0aWFsaXpl IENEQ0xLIGZvciBJQ0wuIFRoaXMgaXMgZG9uZSBvbmx5IGR1cmluZyB0aGUKPiA+IGRpc3BsYXkg Y29yZQo+ID4gKyAqIHVuaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCj4gPiArICovCj4gPiArdm9p ZCBpY2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ICt7Cj4gPiArIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0ZSA9IGRldl9wcml2 LT5jZGNsay5odzsKPiA+ICsKPiA+ICsgY2RjbGtfc3RhdGUuY2RjbGsgPSBjZGNsa19zdGF0ZS5i eXBhc3M7Cj4gPiArIGNkY2xrX3N0YXRlLnZjbyA9IDA7Cj4gPiArCj4gPiArIGljbF9zZXRfY2Rj bGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSk7Cj4gPiArfQo+ID4gKwo+ID4gIC8qKgo+ID4gICAq IGNubF9pbml0X2NkY2xrIC0gSW5pdGlhbGl6ZSBDRENMSyBvbiBDTkwKPiA+ICAgKiBAZGV2X3By aXY6IGk5MTUgZGV2aWNlCj4gPiBAQCAtMjIxNiw2ICsyNDA3LDM2IEBAIHN0YXRpYyBpbnQgY25s X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QKPiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ID4gICByZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIGludCBpY2xfbW9kZXNldF9j YWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICt7Cj4gPiArIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4g PiArIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiA+IHRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiArIHVuc2lnbmVkIGludCByZWYgPSBpbnRlbF9zdGF0 ZS0+Y2RjbGsubG9naWNhbC5yZWY7Cj4gPiArIGludCBtaW5fY2RjbGssIGNkY2xrLCB2Y287Cj4g PiArCj4gPiArIG1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVfbWluX2NkY2xrKHN0YXRlKTsKPiA+ ICsgaWYgKG1pbl9jZGNsayA8IDApCj4gPiArIHJldHVybiBtaW5fY2RjbGs7Cj4gPiArCj4gPiAr IGNkY2xrID0gaWNsX2NhbGNfY2RjbGsobWluX2NkY2xrLCByZWYpOwo+ID4gKyB2Y28gPSBpY2xf Y2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gPiArCj4gPiArIGludGVsX3N0 YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKPiA+ICsgaW50ZWxfc3RhdGUtPmNkY2xrLmxv Z2ljYWwuY2RjbGsgPSBjZGNsazsKPiA+ICsKPiA+ICsgaWYgKCFpbnRlbF9zdGF0ZS0+YWN0aXZl X2NydGNzKSB7Cj4gPiArIGNkY2xrID0gaWNsX2NhbGNfY2RjbGsoMCwgcmVmKTsKPiA+ICsgdmNv ID0gaWNsX2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+ID4gKwo+ID4gKyBp bnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKPiA+ICsgaW50ZWxfc3RhdGUtPmNk Y2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwo+ID4gKyB9IGVsc2Ugewo+ID4gKyBpbnRlbF9zdGF0 ZS0+Y2RjbGsuYWN0dWFsID0gaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWw7Cj4gPiArIH0KPiA+ ICsKPiA+ICsgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgaW50ZWxfY29t cHV0ZV9tYXhfZG90Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpCj4g PiAgewo+ID4gICBpbnQgbWF4X2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXE7 Cj4gPiBAQCAtMjI0OSw3ICsyNDcwLDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9tYXhf ZG90Y2xrKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgICovCj4g PiAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiA+ICB7Cj4gPiAtIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewo+ID4g KyBpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpIHsKPiA+ICsgaWYgKGRldl9wcml2LT5jZGNsay5o dy5yZWYgPT0gMjQwMDApCj4gPiArIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDY0ODAwMDsK PiA+ICsgZWxzZQo+ID4gKyBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA2NTI4MDA7Cj4gPiAr IH0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKPiA+ICAgZGV2X3ByaXYtPm1h eF9jZGNsa19mcmVxID0gNTI4MDAwOwo+ID4gICB9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKSB7Cj4gPiAgIHUzMiBsaW1pdCA9IEk5MTVfUkVBRChTS0xfREZTTSkgJiBTS0xfREZTTV9D RENMS19MSU1JVF9NQVNLOwo+ID4gQEAgLTI0NzMsOSArMjY5OSwxNCBAQCB2b2lkIGludGVsX2lu aXRfY2RjbGtfaG9va3Moc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ICAgZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gY25sX3NldF9jZGNsazsKPiA+ICAgZGV2 X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPiA+ICAgY25sX21vZGVzZXRfY2Fs Y19jZGNsazsKPiA+ICsgfSBlbHNlIGlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkgewo+ID4gKyBk ZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsgPSBpY2xfc2V0X2NkY2xrOwo+ID4gKyBkZXZfcHJp di0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPSBpY2xfbW9kZXNldF9jYWxjX2NkY2xrOwo+ ID4gICB9Cj4gPiAgCj4gPiAtIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ICsgaWYg KElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+ID4gKyBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsg PSBpY2xfZ2V0X2NkY2xrOwo+ID4gKyBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkK PiA+ICAgZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gY25sX2dldF9jZGNsazsKPiA+ICAg ZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gPiAgIGRldl9wcml2LT5kaXNwbGF5Lmdl dF9jZGNsayA9IHNrbF9nZXRfY2RjbGs7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiA+IGluZGV4IGQ2YTgwODM3NGRmYi4uY2NhN2VjYWU1Y2NlIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMTQwMyw2ICsxNDAzLDggQEAgdm9pZCBjbmxfaW5pdF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2KTsKPiA+ICB2b2lkIGNu bF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICB2 b2lkIGJ4dF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g PiAgdm9pZCBieHRfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gPiArdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ID4gK3ZvaWQgaWNsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgaW50ZWxfdXBk YXRlX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAtLQo+ID4g Mi4xNC4zCj4gPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==