From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 07/13] drm/i915: Use a table to initilize shared dplls Date: Wed, 2 Mar 2016 16:30:56 +0100 Message-ID: <56D70730.7030804@linux.intel.com> References: <1456494866-7665-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1456494866-7665-8-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 75DA06E8C7 for ; Wed, 2 Mar 2016 15:30:58 +0000 (UTC) In-Reply-To: <1456494866-7665-8-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjYtMDItMTYgb20gMTQ6NTQgc2NocmVlZiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmE6 Cj4gVXNlIGEgdGFibGUgdG8gc3RvcmUgdGhlIHBlci1wbGF0Zm9ybSBzaGFyZWQgZHBsbCBpbmZv cm1hdGlvbiBpbiBvbmUKPiBwbGFjZS4gVGhpcyB3YXksIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHBs YXRmb3JtIHNwZWNpZmljIGluaXQgZnVudGlvbnMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBD b25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5j b20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgfCAgMTYg Ky0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgfCAxODkgKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcGxsX21nci5oIHwgIDIyICsrLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9u cygrKSwgMTE5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IGluZGV4IGU3MjMzMjMuLjEzM2I2YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTkxNDgsOCArOTE0OCw4IEBAIHN0YXRpYyBib29sIGlyb25sYWtlX2dl dF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJaW50ZWxfZ2V0X3No YXJlZF9kcGxsX2J5X2lkKGRldl9wcml2LCBwbGxfaWQpOwo+ICAJCXBsbCA9IHBpcGVfY29uZmln LT5zaGFyZWRfZHBsbDsKPiAgCj4gLQkJV0FSTl9PTighcGxsLT5nZXRfaHdfc3RhdGUoZGV2X3By aXYsIHBsbCwKPiAtCQkJCQkgICAmcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUpKTsKPiArCQlX QVJOX09OKCFwbGwtPmZ1bmNzLmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLAo+ICsJCQkJCQkg JnBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlKSk7Cj4gIAo+ICAJCXRtcCA9IHBpcGVfY29uZmln LT5kcGxsX2h3X3N0YXRlLmRwbGw7Cj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIg PQo+IEBAIC05Njk1LDggKzk2OTUsOCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcG9y dF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlwbGwgPSBwaXBlX2NvbmZp Zy0+c2hhcmVkX2RwbGw7Cj4gIAlpZiAocGxsKSB7Cj4gLQkJV0FSTl9PTighcGxsLT5nZXRfaHdf c3RhdGUoZGV2X3ByaXYsIHBsbCwKPiAtCQkJCQkgICAmcGlwZV9jb25maWctPmRwbGxfaHdfc3Rh dGUpKTsKPiArCQlXQVJOX09OKCFwbGwtPmZ1bmNzLmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxs LAo+ICsJCQkJCQkgJnBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlKSk7Cj4gIAl9Cj4gIAo+ICAJ LyoKPiBAQCAtMTI3MjgsNyArMTI3MjgsNyBAQCBjaGVja19zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCQlEUk1fREVCVUdfS01TKCIlc1xuIiwgcGxsLT5u YW1lKTsKPiAgCj4gLQkJYWN0aXZlID0gcGxsLT5nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwg JmRwbGxfaHdfc3RhdGUpOwo+ICsJCWFjdGl2ZSA9IHBsbC0+ZnVuY3MuZ2V0X2h3X3N0YXRlKGRl dl9wcml2LCBwbGwsICZkcGxsX2h3X3N0YXRlKTsKPiAgCj4gIAkJSTkxNV9TVEFURV9XQVJOKHBs bC0+YWN0aXZlID4gaHdlaWdodDMyKHBsbC0+Y29uZmlnLmNydGNfbWFzayksCj4gIAkJICAgICAi bW9yZSBhY3RpdmUgcGxsIHVzZXJzIHRoYW4gcmVmZXJlbmNlczogJWkgdnMgJWlcbiIsCj4gQEAg LTE1NDY2LDggKzE1NDY2LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3 X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPm51bV9zaGFyZWRfZHBsbDsgaSsrKSB7Cj4gIAkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAgCj4gLQkJcGxsLT5vbiA9IHBs bC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsCj4gLQkJCQkJICAgICZwbGwtPmNvbmZpZy5o d19zdGF0ZSk7Cj4gKwkJcGxsLT5vbiA9IHBsbC0+ZnVuY3MuZ2V0X2h3X3N0YXRlKGRldl9wcml2 LCBwbGwsCj4gKwkJCQkJCSAgJnBsbC0+Y29uZmlnLmh3X3N0YXRlKTsKPiAgCQlwbGwtPmFjdGl2 ZSA9IDA7Cj4gIAkJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPiAgCQlmb3JfZWFjaF9pbnRl bF9jcnRjKGRldiwgY3J0Yykgewo+IEBAIC0xNTYwMiw3ICsxNTYwMiw3IEBAIGludGVsX21vZGVz ZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAkJRFJNX0RF QlVHX0tNUygiJXMgZW5hYmxlZCBidXQgbm90IGluIHVzZSwgZGlzYWJsaW5nXG4iLCBwbGwtPm5h bWUpOwo+ICAKPiAtCQlwbGwtPmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4gKwkJcGxsLT5mdW5j cy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ICAJCXBsbC0+b24gPSBmYWxzZTsKPiAgCX0KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gaW5kZXggODg5Y2VlZC4uZTg4 ZGM0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC03NCw3 ICs3NCw3IEBAIHZvaWQgYXNzZXJ0X3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCWlmIChXQVJOKCFwbGwsICJhc3NlcnRpbmcgRFBMTCAlcyB3aXRoIG5v IERQTExcbiIsIG9ub2ZmKHN0YXRlKSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWN1cl9zdGF0ZSA9 IHBsbC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsICZod19zdGF0ZSk7Cj4gKwljdXJfc3Rh dGUgPSBwbGwtPmZ1bmNzLmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLCAmaHdfc3RhdGUpOwo+ ICAJSTkxNV9TVEFURV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiAgCSAgICAgIiVzIGFzc2Vy dGlvbiBmYWlsdXJlIChleHBlY3RlZCAlcywgY3VycmVudCAlcylcbiIsCj4gIAkJCXBsbC0+bmFt ZSwgb25vZmYoc3RhdGUpLCBvbm9mZihjdXJfc3RhdGUpKTsKPiBAQCAtOTUsNyArOTUsNyBAQCB2 b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4g IAkJV0FSTl9PTihwbGwtPm9uKTsKPiAgCQlhc3NlcnRfc2hhcmVkX2RwbGxfZGlzYWJsZWQoZGV2 X3ByaXYsIHBsbCk7Cj4gIAo+IC0JCXBsbC0+bW9kZV9zZXQoZGV2X3ByaXYsIHBsbCk7Cj4gKwkJ cGxsLT5mdW5jcy5tb2RlX3NldChkZXZfcHJpdiwgcGxsKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAt MTMzLDcgKzEzMyw3IEBAIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VS X0RPTUFJTl9QTExTKTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJlbmFibGluZyAlc1xuIiwgcGxs LT5uYW1lKTsKPiAtCXBsbC0+ZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ICsJcGxsLT5mdW5jcy5l bmFibGUoZGV2X3ByaXYsIHBsbCk7Cj4gIAlwbGwtPm9uID0gdHJ1ZTsKPiAgfQo+ICAKPiBAQCAt MTY4LDcgKzE2OCw3IEBAIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgCQlyZXR1cm47Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiZGlzYWJs aW5nICVzXG4iLCBwbGwtPm5hbWUpOwo+IC0JcGxsLT5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ ICsJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ICAJcGxsLT5vbiA9IGZhbHNl Owo+ICAKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5f UExMUyk7Cj4gQEAgLTM5OCwyOSArMzk4LDEzIEBAIHN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXVkZWxheSgyMDAp Owo+ICB9Cj4gIAo+IC1zdGF0aWMgY2hhciAqaWJ4X3BjaF9kcGxsX25hbWVzW10gPSB7Cj4gLQki UENIIERQTEwgQSIsCj4gLQkiUENIIERQTEwgQiIsCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGxfZnVuY3MgaWJ4X3BjaF9kcGxsX2Z1bmNzID0gewo+ICsJLm1vZGVfc2V0 ID0gaWJ4X3BjaF9kcGxsX21vZGVfc2V0LAo+ICsJLmVuYWJsZSA9IGlieF9wY2hfZHBsbF9lbmFi bGUsCj4gKwkuZGlzYWJsZSA9IGlieF9wY2hfZHBsbF9kaXNhYmxlLAo+ICsJLmdldF9od19zdGF0 ZSA9IGlieF9wY2hfZHBsbF9nZXRfaHdfc3RhdGUsCj4gIH07Cj4gIAo+IC1zdGF0aWMgdm9pZCBp YnhfcGNoX2RwbGxfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JaW50IGk7 Cj4gLQo+IC0JZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbCA9IDI7Cj4gLQo+IC0JZm9yIChpID0g MDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewo+IC0JCWRldl9wcml2LT5z aGFyZWRfZHBsbHNbaV0uaWQgPSBpOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0ubmFt ZSA9IGlieF9wY2hfZHBsbF9uYW1lc1tpXTsKPiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ld Lm1vZGVfc2V0ID0gaWJ4X3BjaF9kcGxsX21vZGVfc2V0Owo+IC0JCWRldl9wcml2LT5zaGFyZWRf ZHBsbHNbaV0uZW5hYmxlID0gaWJ4X3BjaF9kcGxsX2VuYWJsZTsKPiAtCQlkZXZfcHJpdi0+c2hh cmVkX2RwbGxzW2ldLmRpc2FibGUgPSBpYnhfcGNoX2RwbGxfZGlzYWJsZTsKPiAtCQlkZXZfcHJp di0+c2hhcmVkX2RwbGxzW2ldLmdldF9od19zdGF0ZSA9Cj4gLQkJCWlieF9wY2hfZHBsbF9nZXRf aHdfc3RhdGU7Cj4gLQl9Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGhzd19kZGlfd3JwbGxfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgIHN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gQEAgLTQ5Miw0MCArNDc2LDE2IEBAIHN0 YXRpYyBib29sIGhzd19kZGlfc3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBo c3dfZGRpX3BsbF9uYW1lc1tdID0gewo+IC0JIldSUExMIDEiLAo+IC0JIldSUExMIDIiLAo+IC0J IlNQTEwiCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfZnVuY3MgaHN3 X2RkaV93cnBsbF9mdW5jcyA9IHsKPiArCS5lbmFibGUgPSBoc3dfZGRpX3dycGxsX2VuYWJsZSwK PiArCS5kaXNhYmxlID0gaHN3X2RkaV93cnBsbF9kaXNhYmxlLAo+ICsJLmdldF9od19zdGF0ZSA9 IGhzd19kZGlfd3JwbGxfZ2V0X2h3X3N0YXRlLAo+ICB9Owo+ICAKPiAtc3RhdGljIHZvaWQgaHN3 X3NoYXJlZF9kcGxsc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAt ewo+IC0JaW50IGk7Cj4gLQo+IC0JZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbCA9IDM7Cj4gLQo+ IC0JZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNb aV0uaWQgPSBpOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0ubmFtZSA9IGhzd19kZGlf cGxsX25hbWVzW2ldOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZGlzYWJsZSA9IGhz d19kZGlfd3JwbGxfZGlzYWJsZTsKPiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmVuYWJs ZSA9IGhzd19kZGlfd3JwbGxfZW5hYmxlOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0u Z2V0X2h3X3N0YXRlID0KPiAtCQkJaHN3X2RkaV93cnBsbF9nZXRfaHdfc3RhdGU7Cj4gLQl9Cj4g LQo+IC0JLyogU1BMTCBpcyBzcGVjaWFsLCBidXQgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQgYW55 d2F5Li4gKi8KPiAtCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uaWQgPSBpOwo+IC0JZGV2X3By aXYtPnNoYXJlZF9kcGxsc1tpXS5uYW1lID0gaHN3X2RkaV9wbGxfbmFtZXNbaV07Cj4gLQlkZXZf cHJpdi0+c2hhcmVkX2RwbGxzW2ldLmRpc2FibGUgPSBoc3dfZGRpX3NwbGxfZGlzYWJsZTsKPiAt CWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZW5hYmxlID0gaHN3X2RkaV9zcGxsX2VuYWJsZTsK PiAtCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZ2V0X2h3X3N0YXRlID0gaHN3X2RkaV9zcGxs X2dldF9od19zdGF0ZTsKPiAtCj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg c2tsX2RkaV9wbGxfbmFtZXNbXSA9IHsKPiAtCSJEUExMIDEiLAo+IC0JIkRQTEwgMiIsCj4gLQki RFBMTCAzIiwKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBo c3dfZGRpX3NwbGxfZnVuY3MgPSB7Cj4gKwkuZW5hYmxlID0gaHN3X2RkaV9zcGxsX2VuYWJsZSwK PiArCS5kaXNhYmxlID0gaHN3X2RkaV9zcGxsX2Rpc2FibGUsCj4gKwkuZ2V0X2h3X3N0YXRlID0g aHN3X2RkaV9zcGxsX2dldF9od19zdGF0ZSwKPiAgfTsKPiAgCj4gIHN0cnVjdCBza2xfZHBsbF9y ZWdzIHsKPiBAQCAtNjM0LDI2ICs1OTQsMTAgQEAgb3V0Ogo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgc2tsX3NoYXJlZF9kcGxsc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JaW50IGk7Cj4gLQo+IC0JZGV2X3ByaXYtPm51bV9z aGFyZWRfZHBsbCA9IDM7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hh cmVkX2RwbGw7IGkrKykgewo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uaWQgPSBpOwo+ IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0ubmFtZSA9IHNrbF9kZGlfcGxsX25hbWVzW2ld Owo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZGlzYWJsZSA9IHNrbF9kZGlfcGxsX2Rp c2FibGU7Cj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5lbmFibGUgPSBza2xfZGRpX3Bs bF9lbmFibGU7Cj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5nZXRfaHdfc3RhdGUgPQo+ IC0JCQlza2xfZGRpX3BsbF9nZXRfaHdfc3RhdGU7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyBj b25zdCBjaGFyICogY29uc3QgYnh0X2RkaV9wbGxfbmFtZXNbXSA9IHsKPiAtCSJQT1JUIFBMTCBB IiwKPiAtCSJQT1JUIFBMTCBCIiwKPiAtCSJQT1JUIFBMTCBDIiwKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBza2xfZGRpX3BsbF9mdW5jcyA9IHsKPiArCS5l bmFibGUgPSBza2xfZGRpX3BsbF9lbmFibGUsCj4gKwkuZGlzYWJsZSA9IHNrbF9kZGlfcGxsX2Rp c2FibGUsCj4gKwkuZ2V0X2h3X3N0YXRlID0gc2tsX2RkaV9wbGxfZ2V0X2h3X3N0YXRlLAo+ICB9 Owo+ICAKPiAgc3RhdGljIHZvaWQgYnh0X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiBAQCAtODM4LDM0ICs3ODIsMTcgQEAgb3V0Ogo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgYnh0X3NoYXJlZF9kcGxsc19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JaW50IGk7Cj4gLQo+IC0JZGV2 X3ByaXYtPm51bV9zaGFyZWRfZHBsbCA9IDM7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9w cml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNb aV0uaWQgPSBpOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0ubmFtZSA9IGJ4dF9kZGlf cGxsX25hbWVzW2ldOwo+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZGlzYWJsZSA9IGJ4 dF9kZGlfcGxsX2Rpc2FibGU7Cj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5lbmFibGUg PSBieHRfZGRpX3BsbF9lbmFibGU7Cj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5nZXRf aHdfc3RhdGUgPQo+IC0JCQlieHRfZGRpX3BsbF9nZXRfaHdfc3RhdGU7Cj4gLQl9Cj4gLX0KPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBieHRfZGRpX3BsbF9m dW5jcyA9IHsKPiArCS5lbmFibGUgPSBieHRfZGRpX3BsbF9lbmFibGUsCj4gKwkuZGlzYWJsZSA9 IGJ4dF9kZGlfcGxsX2Rpc2FibGUsCj4gKwkuZ2V0X2h3X3N0YXRlID0gYnh0X2RkaV9wbGxfZ2V0 X2h3X3N0YXRlLAo+ICt9Owo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1aW50MzJfdCB2YWwgPSBJOTE1X1JFQUQo TENQTExfQ1RMKTsKPiAgCj4gLQlpZiAoSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRl dikpCj4gLQkJc2tsX3NoYXJlZF9kcGxsc19pbml0KGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElT X0JST1hUT04oZGV2KSkKPiAtCQlieHRfc2hhcmVkX2RwbGxzX2luaXQoZGV2X3ByaXYpOwo+IC0J ZWxzZQo+IC0JCWhzd19zaGFyZWRfZHBsbHNfaW5pdChkZXZfcHJpdik7Cj4gLQo+ICAJaWYgKElT X1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7Cj4gIAkJaW50IGNkY2xrX2ZyZXE7 Cj4gIAo+IEBAIC04OTMsMTYgKzgyMCw3MiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcGxsX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCX0KPiAgfQo+ICAKPiArc3RydWN0IGRwbGxf aW5mbyB7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsJY29uc3QgaW50IGlkOwo+ICsJY29uc3Qg c3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2Z1bmNzICpmdW5jczsKPiArfTsKPiArClNlZW1zIHNo YXJlZF9kcGxsc1tpXS5pZCA9PSBpLCBzbyB0aGF0IGNvdWxkIGJlIHJlbW92ZWQuIElmIHlvdSBh bHNvIG1vdmUgbmFtZSB0byBmdW5jcyB5b3UgY291bGQga2lsbCB0aGlzIHN0cnVjdC4KCn5NYWFy dGVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=