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:08:29 -0200 Message-ID: <1517515709.4564.153.camel@intel.com> References: <20180123190536.11208-1-paulo.r.zanoni@intel.com> <20180123190536.11208-2-paulo.r.zanoni@intel.com> <20180129105141.wjipfqkxekzq7ojm@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCA3B6EF01 for ; Thu, 1 Feb 2018 20:08:47 +0000 (UTC) In-Reply-To: <20180129105141.wjipfqkxekzq7ojm@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: imre.deak@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gU2VnLCAyMDE4LTAxLTI5IMOgcyAxMjo1MSArMDIwMCwgSW1yZSBEZWFrIGVzY3JldmV1Ogo+ IE9uIFR1ZSwgSmFuIDIzLCAyMDE4IGF0IDA1OjA1OjIwUE0gLTAyMDAsIFBhdWxvIFphbm9uaSB3 cm90ZToKPiA+IFRoaXMgY29tbWl0IGFkZHMgdGhlIGJhc2ljIENEQ0xLIGZ1bmN0aW9ucywgYnV0 IGl0J3Mgc3RpbGwgbWlzc2luZwo+ID4gcGllY2VzIG9mIHRoZSBkaXNwbGF5IGluaXRpYWxpemF0 aW9uIHNlcXVlbmNlLgo+ID4gCj4gPiB2MjoKPiA+ICAtIEltcGxlbWVudCB0aGUgdm9sdGFnZSBs ZXZlbHMuCj4gPiAgLSBSZWJhc2UuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9u aSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCAgICB8ICAxMCArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NkY2xrLmMgfCAyNTMKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgIHwgICAyICsKPiA+ICAz IGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBpbmRleCBhYmQ5ZWU4NzYxODYuLmQ3MmUy MDZiMmI5ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC03MTEzLDgg KzcxMTMsMTIgQEAgZW51bSB7Cj4gPiAgI2RlZmluZSBTS0xfREZTTV9QSVBFX0JfRElTQUJMRQkJ KDEgPDwgMjEpCj4gPiAgI2RlZmluZSBTS0xfREZTTV9QSVBFX0NfRElTQUJMRQkJKDEgPDwgMjgp Cj4gPiAgCj4gPiAtI2RlZmluZSBTS0xfRFNTTQkJCV9NTUlPKDB4NTEwMDQpCj4gPiAtI2RlZmlu ZSBDTkxfRFNTTV9DRENMS19QTExfUkVGQ0xLXzI0TUh6CSgxIDw8IDMxKQo+ID4gKyNkZWZpbmUg U0tMX0RTU00JCQkJX01NSU8oMHg1MTAwNCkKPiA+ICsjZGVmaW5lIENOTF9EU1NNX0NEQ0xLX1BM TF9SRUZDTEtfMjRNSHoJCSgxIDw8IDMxKQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtfUExM X1JFRkNMS19NQVNLCQkoNyA8PCAyOSkKPiA+ICsjZGVmaW5lIElDTF9EU1NNX0NEQ0xLX1BMTF9S RUZDTEtfMjRNSHoJCSgwIDw8IDI5KQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtfUExMX1JF RkNMS18xOV8yTUh6CSgxIDw8IDI5KQo+ID4gKyNkZWZpbmUgSUNMX0RTU01fQ0RDTEtfUExMX1JF RkNMS18zOF80TUh6CSgyIDw8IDI5KQo+ID4gIAo+ID4gICNkZWZpbmUgR0VON19GRl9TTElDRV9D U19DSElDS0VOMQlfTU1JTygweDIwZTApCj4gPiAgI2RlZmluZSAgIEdFTjlfRkZTQ19QRVJDVFhf UFJFRU1QVF9DVFJMCSgxPDwxNCkKPiA+IEBAIC04NzYwLDYgKzg3NjQsOCBAQCBlbnVtIHNrbF9w b3dlcl9nYXRlIHsKPiA+ICAjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkUJQlhUX0NE Q0xLX0NEMlhfUElQRSgzKQo+ID4gICNkZWZpbmUgIEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VO QUJMRQkoMTw8MTYpCj4gPiAgI2RlZmluZSAgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0sJKDB4N2Zm KQo+ID4gKyNkZWZpbmUgIElDTF9DRENMS19DRDJYX1BJUEUocGlwZSkJKChwaXBlKSA8PCAxOSkK PiA+ICsjZGVmaW5lICBJQ0xfQ0RDTEtfQ0QyWF9QSVBFX05PTkUJSUNMX0NEQ0xLX0NEMlhfUElQ RSg3KQo+ID4gIAo+ID4gIC8qIExDUExMX0NUTCAqLwo+ID4gICNkZWZpbmUgTENQTEwxX0NUTAkJ X01NSU8oMHg0NjAxMCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jZGNsay5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiA+IGlu ZGV4IGM0MzkyZWEzNGEzZC4uZDg2Nzk1NmQ1YTlmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY2RjbGsuYwo+ID4gQEAgLTE3NjYsNiArMTc2NiwyMTUgQEAgc3RhdGljIHZvaWQgY25s X3Nhbml0aXplX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiAgCWRldl9wcml2LT5jZGNsay5ody52Y28gPSAtMTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGlj IGludCBpY2xfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrLCB1bnNpZ25lZCBpbnQgcmVmKQo+ID4g K3sKPiA+ICsJaW50IHJhbmdlc18yNFtdID0geyAzMTIwMDAsIDU1MjAwMCwgNjQ4MDAwIH07Cj4g PiArCWludCByYW5nZXNfMTlfMzhbXSA9IHsgMzA3MjAwLCA1NTY4MDAsIDY1MjgwMCB9Owo+ID4g KwlpbnQgKnJhbmdlczsKPiA+ICsKPiA+ICsJc3dpdGNoIChyZWYpIHsKPiA+ICsJZGVmYXVsdDoK PiA+ICsJCU1JU1NJTkdfQ0FTRShyZWYpOwo+ID4gKwljYXNlIDI0MDAwOgo+ID4gKwkJcmFuZ2Vz ID0gcmFuZ2VzXzI0Owo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgMTkyMDA6Cj4gPiArCWNhc2Ug Mzg0MDA6Cj4gPiArCQlyYW5nZXMgPSByYW5nZXNfMTlfMzg7Cj4gPiArCQlicmVhazsKPiA+ICsJ fQo+ID4gKwo+ID4gKwlpZiAobWluX2NkY2xrID4gcmFuZ2VzWzFdKQo+ID4gKwkJcmV0dXJuIHJh bmdlc1syXTsKPiA+ICsJZWxzZSBpZiAobWluX2NkY2xrID4gcmFuZ2VzWzBdKQo+ID4gKwkJcmV0 dXJuIHJhbmdlc1sxXTsKPiA+ICsJZWxzZQo+ID4gKwkJcmV0dXJuIHJhbmdlc1swXTsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIGludCBpY2xfY2FsY19jZGNsa19wbGxfdmNvKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsIGludCBjZGNsaykKPiA+ICt7Cj4gPiArCWludCBy YXRpbzsKPiA+ICsKPiA+ICsJLyogNTBNSHogPT0gQ0RDTEsgUExMIGRpc2FibGVkLiAqLwo+ID4g KwlpZiAoY2RjbGsgPT0gNTAwMDApCj4gCj4gSGVyZSBhbmQgZXZlcnl3aGVyZSBlbHNlIGNkY2xr Lmh3LmJ5cGFzcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mCj4gaGFyZAo+IGNvZGluZyBpdC4K CkkgcmVhbGx5IGRvbid0IHVuZGVyc3RhbmQgeW91ciBjb21tZW50LCBhbmQgSSBhbHNvIGxvb2tl ZCBhdCAiZHJtL2k5MTU6CkFkZCB0cmFja2luZyBmb3IgQ0RDTEsgYnlwYXNzIGZyZXF1ZW5jeSIg YW5kIGRvbid0IHVuZGVyc3RhbmQgaXQKZWl0aGVyLgoKT24gb3VyIGRvY3VtZW50YXRpb24gSSBj YW4ndCBmaW5kIGFueXRoaW5nIG5hbWVkICJieXBhc3MgY2xvY2siLCBhbmQKdGhlcmUncyBubyBl eHBsYW5hdGlvbiBpbiBvdXIgY29kZSBub3IgdGhlIGNvbW1pdCBtZXNzYWdlLiBUaGUgNTBNSHog aXMKdGhlIENEQ0xLIHZhbHVlIChub3QgImJ5cGFzcyBjbG9jayIpIHdoZW4gdGhlIENEQ0xLIFBM TCBpcyBkaXNhYmxlZC4KCkluIHRoZSBkcml2ZXIsIEkgc2VlIHRoZSAiYnlwYXNzIiBjbG9jayBp cyBzZXQgdG8gdGhlIHJlZmNsayB3ZSByZWFkCmZyb20gdGhlIGhhcmR3YXJlLCBhbmQgdGhhdCBo YXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSA1ME1IeiB3ZSdyZQp0YWxraW5nIGFib3V0IGF0IHRo YXQgcG9pbnQuIFdlIGNhbid0IGV2ZW4gcmVhZCB0aGF0IDUwTUh6IHZhbHVlIGZyb20KdGhlIGhh cmR3YXJlLiBPbiBJQ0wsIHRoZSByZWZjbGsgaXMgZWl0aGVyIDI0LCAxOS4yIG9yIDM4LjQsIHdl IGNhbid0CnJlYWQgdGhlIDUwIGFueXdoZXJlLgoKSSdsbCByZWFsbHkgbmVlZCBhIGJldHRlciBl eHBsYW5hdGlvbiBvbiB3aGF0IGV4YWN0bHkgeW91IG1lYW50IHdpdGgKdGhpcyAiYnlwYXNzIiBj bG9jayB0aGluZyBpZiBJIG5lZWQgdG8gaW1wbGVtZW50IGl0IG9uIElDTC4gSSBqdXN0CmNhbid0 IHNlZSB0aG9zZSAiNTAwMDAiIHJlZmVyZW5jZXMgZ29pbmcgYXdheS4gSSBjYW4ndCBzZWUgd2hh dCdzIHdyb25nCndpdGggdGhpcyBjb2RlLgoKPiAKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4g Kwlzd2l0Y2ggKGNkY2xrKSB7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0UoY2Rj bGspOwo+ID4gKwljYXNlIDMwNzIwMDoKPiA+ICsJY2FzZSA1NTY4MDA6Cj4gPiArCWNhc2UgNjUy ODAwOgo+ID4gKwkJV0FSTl9PTihkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDE5MjAwICYmCj4g PiArCQkJZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAzODQwMCk7Cj4gPiArCQlicmVhazsKPiA+ ICsJY2FzZSAzMTIwMDA6Cj4gPiArCWNhc2UgNTUyMDAwOgo+ID4gKwljYXNlIDY0ODAwMDoKPiA+ ICsJCVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAyNDAwMCk7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJcmF0aW8gPSBjZGNsayAvIChkZXZfcHJpdi0+Y2RjbGsuaHcucmVmIC8gMik7Cj4g PiArCj4gPiArCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogcmF0aW87Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGljbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlCj4g PiAqY2RjbGtfc3RhdGUpCj4gPiArewo+ID4gKwl1bnNpZ25lZCBpbnQgY2RjbGsgPSBjZGNsa19z dGF0ZS0+Y2RjbGs7Cj4gPiArCXVuc2lnbmVkIGludCB2Y28gPSBjZGNsa19zdGF0ZS0+dmNvOwo+ ID4gKwlpbnQgcmV0Owo+ID4gKwl1MzIgdm9sdGFnZV9sZXZlbDsKPiA+ICsKPiA+ICsJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiA+ICsJcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3Qo ZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLAo+ID4gKwkJCQlTS0xfQ0RDTEtfUFJF UEFSRV9GT1JfQ0hBTkdFLAo+ID4gKwkJCQlTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwKPiA+ ICsJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UsIDMpOwo+ID4gKwltdXRleF91bmxvY2so JmRldl9wcml2LT5wY3VfbG9jayk7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURSTV9FUlJPUigi RmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hhbmdlCj4gPiAoJWQpXG4iLAo+ID4g KwkJCSAgcmV0KTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKiBGSVhNRTog V2Ugc2hvdWxkIGFsc28gY29uc2lkZXIgdGhlIERESSBjbG9jayBoZXJlLiAqLwo+ID4gKwlzd2l0 Y2ggKGNkY2xrKSB7Cj4gPiArCWNhc2UgMzA3MjAwOgo+ID4gKwljYXNlIDMxMjAwMDoKPiA+ICsJ CXZvbHRhZ2VfbGV2ZWwgPSAwOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgNTU2ODAwOgo+ID4g KwljYXNlIDU1MjAwMDoKPiA+ICsJCXZvbHRhZ2VfbGV2ZWwgPSAxOwo+ID4gKwkJYnJlYWs7Cj4g PiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0UoY2RjbGspOwo+ID4gKwljYXNlIDY1Mjgw MDoKPiA+ICsJY2FzZSA2NDgwMDA6Cj4gPiArCQl2b2x0YWdlX2xldmVsID0gMjsKPiA+ICsJCWJy ZWFrOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IDAg JiYKPiA+ICsJICAgIGRldl9wcml2LT5jZGNsay5ody52Y28gIT0gdmNvKQo+ID4gKwkJY25sX2Nk Y2xrX3BsbF9kaXNhYmxlKGRldl9wcml2KTsKPiA+ICsKPiA+ICsJaWYgKGRldl9wcml2LT5jZGNs ay5ody52Y28gIT0gdmNvKQo+ID4gKwkJY25sX2NkY2xrX3BsbF9lbmFibGUoZGV2X3ByaXYsIHZj byk7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCBJQ0xfQ0RDTEtfQ0QyWF9QSVBF X05PTkUgfAo+ID4gKwkJCSAgICAgIHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKSk7Cj4gPiArCj4g PiArCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gPiArCXNhbmR5YnJpZGdlX3Bj b2RlX3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwKPiA+ICsJCQkJdm9s dGFnZV9sZXZlbCk7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiA+ ICsKPiA+ICsJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQgaWNsX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gPiArCQkJICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ID4g K3sKPiA+ICsJdTMyIHZhbDsKPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKFNLTF9EU1NNKTsK PiA+ICsJc3dpdGNoICh2YWwgJiBJQ0xfRFNTTV9DRENMS19QTExfUkVGQ0xLX01BU0spIHsKPiA+ ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdfQ0FTRSh2YWwpOwo+ID4gKwljYXNlIElDTF9EU1NN X0NEQ0xLX1BMTF9SRUZDTEtfMjRNSHo6Cj4gPiArCQljZGNsa19zdGF0ZS0+cmVmID0gMjQwMDA7 Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJQ0xfRFNTTV9DRENMS19QTExfUkVGQ0xLXzE5XzJN SHo6Cj4gPiArCQljZGNsa19zdGF0ZS0+cmVmID0gMTkyMDA7Cj4gPiArCQlicmVhazsKPiA+ICsJ Y2FzZSBJQ0xfRFNTTV9DRENMS19QTExfUkVGQ0xLXzM4XzRNSHo6Cj4gPiArCQljZGNsa19zdGF0 ZS0+cmVmID0gMzg0MDA7Cj4gPiArCQlicmVhazsKPiA+ICsJfQo+ID4gKwo+ID4gKwl2YWwgPSBJ OTE1X1JFQUQoQlhUX0RFX1BMTF9FTkFCTEUpOwo+ID4gKwlpZiAoKHZhbCAmIEJYVF9ERV9QTExf UExMX0VOQUJMRSkgPT0gMCB8fAo+ID4gKwkgICAgKHZhbCAmIEJYVF9ERV9QTExfTE9DSykgPT0g MCkgewo+ID4gKwkJLyogQ0RDTEsgUExMIGlzIGRpc2FibGVkLCB0aGUgVkNPL3JhdGlvIGRvZXNu J3QKPiA+IG1hdHRlciwgYnV0Cj4gPiArCQkgKiBzZXR0aW5nIGl0IHRvIHplcm8gaXMgYSB3YXkg dG8gc2lnbmFsIHRoYXQuICovCj4gPiArCQljZGNsa19zdGF0ZS0+dmNvID0gMDsKPiA+ICsJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDUwMDAwOwo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCj4g PiArCWNkY2xrX3N0YXRlLT52Y28gPSAodmFsICYgQlhUX0RFX1BMTF9SQVRJT19NQVNLKSAqCj4g PiBjZGNsa19zdGF0ZS0+cmVmOwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RM KTsKPiA+ICsJV0FSTl9PTigodmFsICYgQlhUX0NEQ0xLX0NEMlhfRElWX1NFTF9NQVNLKSAhPSAw KTsKPiA+ICsKPiA+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtfc3RhdGUtPnZjbyAvIDI7 Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGljbF9pbml0X2NkY2xrIC0gSW5pdGlhbGl6 ZSBDRENMSyBvbiBJQ0wKPiA+ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCj4gPiArICoKPiA+ ICsgKiBJbml0aWFsaXplIENEQ0xLIGZvciBJQ0wuIFRoaXMgY29uc2lzdHMgbWFpbmx5IG9mIGlu aXRpYWxpemluZwo+ID4gKyAqIGRldl9wcml2LT5jZGNsay5odyBhbmQgc2FuaXRpemluZyB0aGUg c3RhdGUgb2YgdGhlIGhhcmR3YXJlIGlmCj4gPiBuZWVkZWQuIFRoaXMKPiA+ICsgKiBpcyBnZW5l cmFsbHkgZG9uZSBvbmx5IGR1cmluZyB0aGUgZGlzcGxheSBjb3JlIGluaXRpYWxpemF0aW9uCj4g PiBzZXF1ZW5jZSwgYWZ0ZXIKPiA+ICsgKiB3aGljaCB0aGUgRE1DIHdpbGwgdGFrZSBjYXJlIG9m IHR1cm5pbmcgQ0RDTEsgb2ZmL29uIGFzIG5lZWRlZC4KPiA+ICsgKi8KPiA+ICt2b2lkIGljbF9p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICt7Cj4gPiAr CXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0ZTsKPiA+ICsJdTMyIHZhbDsKPiA+ ICsKPiA+ICsJLyogVGhpcyBzZXRzIGRldl9wcml2LT5jZGNsay5ody4gKi8KPiA+ICsJaW50ZWxf dXBkYXRlX2NkY2xrKGRldl9wcml2KTsKPiA+ICsKPiA+ICsJY2RjbGtfc3RhdGUgPSBkZXZfcHJp di0+Y2RjbGsuaHc7Cj4gPiArCj4gPiArCS8qIFRoaXMgbWVhbnMgQ0RDTEsgZGlzYWJsZWQuICov Cj4gPiArCWlmIChjZGNsa19zdGF0ZS5jZGNsayA9PSA1MDAwMCkKPiA+ICsJCWdvdG8gc2FuaXRp emU7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVfUkVBRChDRENMS19DVEwpOwo+ID4gKwo+ID4gKwlp ZiAoKHZhbCAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSykgIT0gMCkKPiA+ICsJCWdvdG8g c2FuaXRpemU7Cj4gPiArCj4gPiArCWlmICgodmFsICYgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0sp ICE9Cj4gPiArCSAgICBza2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsp KQo+ID4gKwkJZ290byBzYW5pdGl6ZTsKPiA+ICsKPiA+ICsJcmV0dXJuOwo+ID4gKwo+ID4gK3Nh bml0aXplOgo+ID4gKwlEUk1fREVCVUdfS01TKCJTYW5pdGl6aW5nIGNkY2xrIHByb2dyYW1tZWQg YnkgcHJlLW9zXG4iKTsKPiA+ICsKPiA+ICsJY2RjbGtfc3RhdGUucmVmID0gZGV2X3ByaXYtPmNk Y2xrLmh3LnJlZjsKPiA+ICsJY2RjbGtfc3RhdGUuY2RjbGsgPSBpY2xfY2FsY19jZGNsaygwLCBj ZGNsa19zdGF0ZS5yZWYpOwo+ID4gKwljZGNsa19zdGF0ZS52Y28gPSBpY2xfY2FsY19jZGNsa19w bGxfdmNvKGRldl9wcml2LAo+ID4gY2RjbGtfc3RhdGUuY2RjbGspOwo+ID4gKwo+ID4gKwlpY2xf c2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUpOwo+ID4gK30KPiA+ICsKPiA+ICsvKioK PiA+ICsgKiBpY2xfdW5pbml0X2NkY2xrIC0gVW5pbml0aWFsaXplIENEQ0xLIG9uIElDTAo+ID4g KyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UKPiA+ICsgKgo+ID4gKyAqIFVuaW5pdGlhbGl6ZSBD RENMSyBmb3IgSUNMLiBUaGlzIGlzIGRvbmUgb25seSBkdXJpbmcgdGhlCj4gPiBkaXNwbGF5IGNv cmUKPiA+ICsgKiB1bmluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgo+ID4gKyAqLwo+ID4gK3ZvaWQg aWNsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAr ewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSBkZXZfcHJpdi0+ Y2RjbGsuaHc7Cj4gPiArCj4gPiArCWNkY2xrX3N0YXRlLmNkY2xrID0gY2RjbGtfc3RhdGUucmVm Owo+IAo+IE9uIElDTCBpdCdzIHRoZSBzbG93IGNsb2NrIChjcm9jbG9jaykgdXNlZCBmb3IgdGhl IGJ5cGFzcyBjbG9jawo+IHNvdXJjZSwKPiBzbyBoYXZlIHRvIHNldCBjZGNsa19zdGF0ZS5ieXBh c3MgaGVyZS4KPiAKPiA+ICsJY2RjbGtfc3RhdGUudmNvID0gMDsKPiA+ICsKPiA+ICsJaWNsX3Nl dF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4g PiAgICogY25sX2luaXRfY2RjbGsgLSBJbml0aWFsaXplIENEQ0xLIG9uIENOTAo+ID4gICAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UKPiA+IEBAIC0yMjA0LDYgKzI0MTMsMzYgQEAgc3RhdGljIGlu dCBjbmxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgaW50IGljbF9tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2 KTsKPiA+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ID4gdG9f aW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+ICsJdW5zaWduZWQgaW50IHJlZiA9IGludGVs X3N0YXRlLT5jZGNsay5sb2dpY2FsLnJlZjsKPiA+ICsJaW50IG1pbl9jZGNsaywgY2RjbGssIHZj bzsKPiA+ICsKPiA+ICsJbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUp Owo+ID4gKwlpZiAobWluX2NkY2xrIDwgMCkKPiA+ICsJCXJldHVybiBtaW5fY2RjbGs7Cj4gPiAr Cj4gPiArCWNkY2xrID0gaWNsX2NhbGNfY2RjbGsobWluX2NkY2xrLCByZWYpOwo+ID4gKwl2Y28g PSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gPiArCj4gPiArCWlu dGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKPiA+ICsJaW50ZWxfc3RhdGUtPmNk Y2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNsazsKPiA+ICsKPiA+ICsJaWYgKCFpbnRlbF9zdGF0ZS0+ YWN0aXZlX2NydGNzKSB7Cj4gPiArCQljZGNsayA9IGljbF9jYWxjX2NkY2xrKDAsIHJlZik7Cj4g PiArCQl2Y28gPSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gPiAr Cj4gPiArCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKPiA+ICsJCWludGVs X3N0YXRlLT5jZGNsay5hY3R1YWwuY2RjbGsgPSBjZGNsazsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJ CWludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwgPSBpbnRlbF9zdGF0ZS0KPiA+ID5jZGNsay5sb2dp Y2FsOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0 aWMgaW50IGludGVsX2NvbXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ ID4gKmRldl9wcml2KQo+ID4gIHsKPiA+ICAJaW50IG1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYt Pm1heF9jZGNsa19mcmVxOwo+ID4gQEAgLTIyMzcsNyArMjQ3NiwxMiBAQCBzdGF0aWMgaW50IGlu dGVsX2NvbXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gICAqLwo+ID4gIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gLQlpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikpIHsKPiA+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlpZiAo ZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiA9PSAyNDAwMCkKPiA+ICsJCQlkZXZfcHJpdi0+bWF4X2Nk Y2xrX2ZyZXEgPSA2NDgwMDA7Cj4gPiArCQllbHNlCj4gPiArCQkJZGV2X3ByaXYtPm1heF9jZGNs a19mcmVxID0gNjUyODAwOwo+ID4gKwl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYp KSB7Cj4gPiAgCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA1MjgwMDA7Cj4gPiAgCX0gZWxz ZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiA+ICAJCXUzMiBsaW1pdCA9IEk5MTVfUkVB RChTS0xfREZTTSkgJgo+ID4gU0tMX0RGU01fQ0RDTEtfTElNSVRfTUFTSzsKPiA+IEBAIC0yNDYx LDkgKzI3MDUsMTQgQEAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdAo+ID4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2Rj bGsgPSBjbmxfc2V0X2NkY2xrOwo+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxj X2NkY2xrID0KPiA+ICAJCQljbmxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ID4gKwl9IGVsc2UgaWYg KElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2Rj bGsgPSBpY2xfc2V0X2NkY2xrOwo+ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxj X2NkY2xrID0KPiA+IGljbF9tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gPiAgCX0KPiA+ICAKPiA+IC0J aWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJp dikpCj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBpY2xfZ2V0X2NkY2xrOwo+ ID4gKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ICAJCWRldl9wcml2LT5k aXNwbGF5LmdldF9jZGNsayA9IGNubF9nZXRfY2RjbGs7Cj4gPiAgCWVsc2UgaWYgKElTX0dFTjlf QkMoZGV2X3ByaXYpKQo+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gc2tsX2dl dF9jZGNsazsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggM2NlZTU0 YmMwMzUyLi5jNWQ2MDkyYWNhNDEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiA+IEBAIC0xNDAzLDYgKzE0MDMsOCBAQCB2b2lkIGNubF9pbml0X2NkY2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgY25sX3VuaW5pdF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gIHZvaWQgYnh0X2luaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICB2b2lkIGJ4dF91bmlu aXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICt2b2lkIGlj bF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiArdm9p ZCBpY2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g PiAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gPiAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAgdm9pZCBpbnRlbF91cGRhdGVfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IC0tIAo+ID4gMi4xNC4zCj4gPiAKPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK