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: Thu, 3 Mar 2016 14:35:29 +0100 Message-ID: <56D83DA1.2070109@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> <56D70730.7030804@linux.intel.com> <1457004748.2724.24.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id C8C646EA63 for ; Thu, 3 Mar 2016 13:35:31 +0000 (UTC) In-Reply-To: <1457004748.2724.24.camel@gmail.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 T3AgMDMtMDMtMTYgb20gMTI6MzIgc2NocmVlZiBBbmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmE6 Cj4gSGkgTWFhcnRlbiwKPgo+IFRoYW5rcyBmb3IgcmV2aWV3aW5nLiBDb21tZW50cyBiZWxvdy4K Pgo+IE9uIFdlZCwgMjAxNi0wMy0wMiBhdCAxNjozMCArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qg d3JvdGU6Cj4+IE9wIDI2LTAyLTE2IG9tIDE0OjU0IHNjaHJlZWYgQW5kZXIgQ29uc2VsdmFuIGRl IE9saXZlaXJhOgo+Pj4gVXNlIGEgdGFibGUgdG8gc3RvcmUgdGhlIHBlci1wbGF0Zm9ybSBzaGFy ZWQgZHBsbCBpbmZvcm1hdGlvbiBpbiBvbmUKPj4+IHBsYWNlLiBUaGlzIHdheSwgdGhlcmUgaXMg bm8gbmVlZCBmb3IgcGxhdGZvcm0gc3BlY2lmaWMgaW5pdCBmdW50aW9ucy4KPj4+Cj4+PiBTaWdu ZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPAo+Pj4gYW5kZXIuY29uc2Vs dmFuLmRlLm9saXZlaXJhQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyAgfCAgMTYgKy0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBsbF9tZ3IuYyB8IDE4OSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4+ PiAtLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oIHwgIDIyICsr LS0KPj4+ICAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25z KC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+IGluZGV4 IGU3MjMzMjMuLjEzM2I2YjcgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+Pj4gQEAgLTkxNDgsOCArOTE0OCw4IEBAIHN0YXRpYyBib29sIGlyb25sYWtlX2dldF9w aXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Ywo+Pj4gKmNydGMsCj4+PiAgCQkJaW50ZWxfZ2V0 X3NoYXJlZF9kcGxsX2J5X2lkKGRldl9wcml2LCBwbGxfaWQpOwo+Pj4gIAkJcGxsID0gcGlwZV9j b25maWctPnNoYXJlZF9kcGxsOwo+Pj4gIAo+Pj4gLQkJV0FSTl9PTighcGxsLT5nZXRfaHdfc3Rh dGUoZGV2X3ByaXYsIHBsbCwKPj4+IC0JCQkJCSAgICZwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0 ZSkpOwo+Pj4gKwkJV0FSTl9PTighcGxsLT5mdW5jcy5nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBs bCwKPj4+ICsJCQkJCQkgJnBpcGVfY29uZmlnCj4+PiAtPmRwbGxfaHdfc3RhdGUpKTsKPj4+ICAK Pj4+ICAJCXRtcCA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGw7Cj4+PiAgCQlwaXBl X2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9Cj4+PiBAQCAtOTY5NSw4ICs5Njk1LDggQEAgc3Rh dGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3RhdGUoc3RydWN0Cj4+PiBpbnRlbF9jcnRj ICpjcnRjLAo+Pj4gIAo+Pj4gIAlwbGwgPSBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGw7Cj4+PiAg CWlmIChwbGwpIHsKPj4+IC0JCVdBUk5fT04oIXBsbC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2LCBw bGwsCj4+PiAtCQkJCQkgICAmcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUpKTsKPj4+ICsJCVdB Uk5fT04oIXBsbC0+ZnVuY3MuZ2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsCj4+PiArCQkJCQkJ ICZwaXBlX2NvbmZpZwo+Pj4gLT5kcGxsX2h3X3N0YXRlKSk7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJ LyoKPj4+IEBAIC0xMjcyOCw3ICsxMjcyOCw3IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+PiAgCj4+PiAgCQlEUk1fREVCVUdfS01TKCIlc1xuIiwg cGxsLT5uYW1lKTsKPj4+ICAKPj4+IC0JCWFjdGl2ZSA9IHBsbC0+Z2V0X2h3X3N0YXRlKGRldl9w cml2LCBwbGwsICZkcGxsX2h3X3N0YXRlKTsKPj4+ICsJCWFjdGl2ZSA9IHBsbC0+ZnVuY3MuZ2V0 X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsCj4+PiAmZHBsbF9od19zdGF0ZSk7Cj4+PiAgCj4+PiAg CQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmUgPiBod2VpZ2h0MzIocGxsCj4+PiAtPmNvbmZp Zy5jcnRjX21hc2spLAo+Pj4gIAkJICAgICAibW9yZSBhY3RpdmUgcGxsIHVzZXJzIHRoYW4gcmVm ZXJlbmNlczogJWkgdnMgJWlcbiIsCj4+PiBAQCAtMTU0NjYsOCArMTU0NjYsOCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0Cj4+PiBkcm1fZGV2aWNl ICpkZXYpCj4+PiAgCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBp KyspIHsKPj4+ICAJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gJmRldl9wcml2LT5z aGFyZWRfZHBsbHNbaV07Cj4+PiAgCj4+PiAtCQlwbGwtPm9uID0gcGxsLT5nZXRfaHdfc3RhdGUo ZGV2X3ByaXYsIHBsbCwKPj4+IC0JCQkJCSAgICAmcGxsLT5jb25maWcuaHdfc3RhdGUpOwo+Pj4g KwkJcGxsLT5vbiA9IHBsbC0+ZnVuY3MuZ2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsCj4+PiAr CQkJCQkJICAmcGxsLT5jb25maWcuaHdfc3RhdGUpOwo+Pj4gIAkJcGxsLT5hY3RpdmUgPSAwOwo+ Pj4gIAkJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPj4+ICAJCWZvcl9lYWNoX2ludGVsX2Ny dGMoZGV2LCBjcnRjKSB7Cj4+PiBAQCAtMTU2MDIsNyArMTU2MDIsNyBAQCBpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+PiAgCj4+PiAgCQlEUk1f REVCVUdfS01TKCIlcyBlbmFibGVkIGJ1dCBub3QgaW4gdXNlLCBkaXNhYmxpbmdcbiIsIHBsbAo+ Pj4gLT5uYW1lKTsKPj4+ICAKPj4+IC0JCXBsbC0+ZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPj4+ ICsJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPj4+ICAJCXBsbC0+b24gPSBm YWxzZTsKPj4+ICAJfQo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwbGxfbWdyLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9t Z3IuYwo+Pj4gaW5kZXggODg5Y2VlZC4uZTg4ZGM0NiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwbGxfbWdyLmMKPj4+IEBAIC03NCw3ICs3NCw3IEBAIHZvaWQgYXNzZXJ0X3No YXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAJaWYgKFdB Uk4oIXBsbCwgImFzc2VydGluZyBEUExMICVzIHdpdGggbm8gRFBMTFxuIiwgb25vZmYoc3RhdGUp KSkKPj4+ICAJCXJldHVybjsKPj4+ICAKPj4+IC0JY3VyX3N0YXRlID0gcGxsLT5nZXRfaHdfc3Rh dGUoZGV2X3ByaXYsIHBsbCwgJmh3X3N0YXRlKTsKPj4+ICsJY3VyX3N0YXRlID0gcGxsLT5mdW5j cy5nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwgJmh3X3N0YXRlKTsKPj4+ICAJSTkxNV9TVEFU RV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPj4+ICAJICAgICAiJXMgYXNzZXJ0aW9uIGZhaWx1 cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKPj4+ICAJCQlwbGwtPm5hbWUsIG9ub2Zm KHN0YXRlKSwgb25vZmYoY3VyX3N0YXRlKSk7Cj4+PiBAQCAtOTUsNyArOTUsNyBAQCB2b2lkIGlu dGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+PiAgCQlX QVJOX09OKHBsbC0+b24pOwo+Pj4gIAkJYXNzZXJ0X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGRldl9w cml2LCBwbGwpOwo+Pj4gIAo+Pj4gLQkJcGxsLT5tb2RlX3NldChkZXZfcHJpdiwgcGxsKTsKPj4+ ICsJCXBsbC0+ZnVuY3MubW9kZV9zZXQoZGV2X3ByaXYsIHBsbCk7Cj4+PiAgCX0KPj4+ICB9Cj4+ PiAgCj4+PiBAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxs KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+Pj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChk ZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+Pj4gIAo+Pj4gIAlEUk1fREVCVUdfS01TKCJl bmFibGluZyAlc1xuIiwgcGxsLT5uYW1lKTsKPj4+IC0JcGxsLT5lbmFibGUoZGV2X3ByaXYsIHBs bCk7Cj4+PiArCXBsbC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+Pj4gIAlwbGwtPm9u ID0gdHJ1ZTsKPj4+ICB9Cj4+PiAgCj4+PiBAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgaW50ZWxf ZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4+ICAJCXJldHVy bjsKPj4+ICAKPj4+ICAJRFJNX0RFQlVHX0tNUygiZGlzYWJsaW5nICVzXG4iLCBwbGwtPm5hbWUp Owo+Pj4gLQlwbGwtPmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4+PiArCXBsbC0+ZnVuY3MuZGlz YWJsZShkZXZfcHJpdiwgcGxsKTsKPj4+ICAJcGxsLT5vbiA9IGZhbHNlOwo+Pj4gIAo+Pj4gIAlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+Pj4g QEAgLTM5OCwyOSArMzk4LDEzIEBAIHN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9kaXNhYmxlKHN0 cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgCXVkZWxheSgyMDApOwo+ Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgY2hhciAqaWJ4X3BjaF9kcGxsX25hbWVzW10gPSB7Cj4+ PiAtCSJQQ0ggRFBMTCBBIiwKPj4+IC0JIlBDSCBEUExMIEIiLAo+Pj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfZnVuY3MgaWJ4X3BjaF9kcGxsX2Z1bmNzID0gewo+Pj4g KwkubW9kZV9zZXQgPSBpYnhfcGNoX2RwbGxfbW9kZV9zZXQsCj4+PiArCS5lbmFibGUgPSBpYnhf cGNoX2RwbGxfZW5hYmxlLAo+Pj4gKwkuZGlzYWJsZSA9IGlieF9wY2hfZHBsbF9kaXNhYmxlLAo+ Pj4gKwkuZ2V0X2h3X3N0YXRlID0gaWJ4X3BjaF9kcGxsX2dldF9od19zdGF0ZSwKPj4+ICB9Owo+ Pj4gIAo+Pj4gLXN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4+PiAtewo+Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+Pj4gLQlpbnQgaTsKPj4+IC0KPj4+IC0JZGV2X3ByaXYtPm51bV9z aGFyZWRfZHBsbCA9IDI7Cj4+PiAtCj4+PiAtCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVt X3NoYXJlZF9kcGxsOyBpKyspIHsKPj4+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uaWQg PSBpOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5uYW1lID0gaWJ4X3BjaF9kcGxs X25hbWVzW2ldOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5tb2RlX3NldCA9IGli eF9wY2hfZHBsbF9tb2RlX3NldDsKPj4+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZW5h YmxlID0gaWJ4X3BjaF9kcGxsX2VuYWJsZTsKPj4+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNb aV0uZGlzYWJsZSA9IGlieF9wY2hfZHBsbF9kaXNhYmxlOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJl ZF9kcGxsc1tpXS5nZXRfaHdfc3RhdGUgPQo+Pj4gLQkJCWlieF9wY2hfZHBsbF9nZXRfaHdfc3Rh dGU7Cj4+PiAtCX0KPj4+IC19Cj4+PiAtCj4+PiAgc3RhdGljIHZvaWQgaHN3X2RkaV93cnBsbF9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gIAkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPj4+ICB7Cj4+PiBAQCAtNDkyLDQwICs0NzYs MTYgQEAgc3RhdGljIGJvb2wgaHN3X2RkaV9zcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QKPj4+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gIH0KPj4+ICAKPj4+ICAKPj4+IC1zdGF0aWMg Y29uc3QgY2hhciAqIGNvbnN0IGhzd19kZGlfcGxsX25hbWVzW10gPSB7Cj4+PiAtCSJXUlBMTCAx IiwKPj4+IC0JIldSUExMIDIiLAo+Pj4gLQkiU1BMTCIKPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsX2Z1bmNzIGhzd19kZGlfd3JwbGxfZnVuY3MgPSB7Cj4+PiArCS5l bmFibGUgPSBoc3dfZGRpX3dycGxsX2VuYWJsZSwKPj4+ICsJLmRpc2FibGUgPSBoc3dfZGRpX3dy cGxsX2Rpc2FibGUsCj4+PiArCS5nZXRfaHdfc3RhdGUgPSBoc3dfZGRpX3dycGxsX2dldF9od19z dGF0ZSwKPj4+ICB9Owo+Pj4gIAo+Pj4gLXN0YXRpYyB2b2lkIGhzd19zaGFyZWRfZHBsbHNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiAtewo+Pj4gLQlpbnQgaTsK Pj4+IC0KPj4+IC0JZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbCA9IDM7Cj4+PiAtCj4+PiAtCWZv ciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKPj4+IC0JCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0u aWQgPSBpOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5uYW1lID0gaHN3X2RkaV9w bGxfbmFtZXNbaV07Cj4+PiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmRpc2FibGUgPSBo c3dfZGRpX3dycGxsX2Rpc2FibGU7Cj4+PiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmVu YWJsZSA9IGhzd19kZGlfd3JwbGxfZW5hYmxlOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tpXS5nZXRfaHdfc3RhdGUgPQo+Pj4gLQkJCWhzd19kZGlfd3JwbGxfZ2V0X2h3X3N0YXRlOwo+ Pj4gLQl9Cj4+PiAtCj4+PiAtCS8qIFNQTEwgaXMgc3BlY2lhbCwgYnV0IG5lZWRzIHRvIGJlIGlu aXRpYWxpemVkIGFueXdheS4uICovCj4+PiAtCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uaWQg PSBpOwo+Pj4gLQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLm5hbWUgPSBoc3dfZGRpX3BsbF9u YW1lc1tpXTsKPj4+IC0JZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5kaXNhYmxlID0gaHN3X2Rk aV9zcGxsX2Rpc2FibGU7Cj4+PiAtCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZW5hYmxlID0g aHN3X2RkaV9zcGxsX2VuYWJsZTsKPj4+IC0JZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5nZXRf aHdfc3RhdGUgPSBoc3dfZGRpX3NwbGxfZ2V0X2h3X3N0YXRlOwo+Pj4gLQo+Pj4gLX0KPj4+IC0K Pj4+IC1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNrbF9kZGlfcGxsX25hbWVzW10gPSB7Cj4+ PiAtCSJEUExMIDEiLAo+Pj4gLQkiRFBMTCAyIiwKPj4+IC0JIkRQTEwgMyIsCj4+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBoc3dfZGRpX3NwbGxfZnVuY3Mg PSB7Cj4+PiArCS5lbmFibGUgPSBoc3dfZGRpX3NwbGxfZW5hYmxlLAo+Pj4gKwkuZGlzYWJsZSA9 IGhzd19kZGlfc3BsbF9kaXNhYmxlLAo+Pj4gKwkuZ2V0X2h3X3N0YXRlID0gaHN3X2RkaV9zcGxs X2dldF9od19zdGF0ZSwKPj4+ICB9Owo+Pj4gIAo+Pj4gIHN0cnVjdCBza2xfZHBsbF9yZWdzIHsK Pj4+IEBAIC02MzQsMjYgKzU5NCwxMCBAQCBvdXQ6Cj4+PiAgCXJldHVybiByZXQ7Cj4+PiAgfQo+ Pj4gIAo+Pj4gLXN0YXRpYyB2b2lkIHNrbF9zaGFyZWRfZHBsbHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiAtewo+Pj4gLQlpbnQgaTsKPj4+IC0KPj4+IC0JZGV2 X3ByaXYtPm51bV9zaGFyZWRfZHBsbCA9IDM7Cj4+PiAtCj4+PiAtCWZvciAoaSA9IDA7IGkgPCBk ZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPj4+IC0JCWRldl9wcml2LT5zaGFyZWRf ZHBsbHNbaV0uaWQgPSBpOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5uYW1lID0g c2tsX2RkaV9wbGxfbmFtZXNbaV07Cj4+PiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmRp c2FibGUgPSBza2xfZGRpX3BsbF9kaXNhYmxlOwo+Pj4gLQkJZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tpXS5lbmFibGUgPSBza2xfZGRpX3BsbF9lbmFibGU7Cj4+PiAtCQlkZXZfcHJpdi0+c2hhcmVk X2RwbGxzW2ldLmdldF9od19zdGF0ZSA9Cj4+PiAtCQkJc2tsX2RkaV9wbGxfZ2V0X2h3X3N0YXRl Owo+Pj4gLQl9Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnh0 X2RkaV9wbGxfbmFtZXNbXSA9IHsKPj4+IC0JIlBPUlQgUExMIEEiLAo+Pj4gLQkiUE9SVCBQTEwg QiIsCj4+PiAtCSJQT1JUIFBMTCBDIiwKPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3No YXJlZF9kcGxsX2Z1bmNzIHNrbF9kZGlfcGxsX2Z1bmNzID0gewo+Pj4gKwkuZW5hYmxlID0gc2ts X2RkaV9wbGxfZW5hYmxlLAo+Pj4gKwkuZGlzYWJsZSA9IHNrbF9kZGlfcGxsX2Rpc2FibGUsCj4+ PiArCS5nZXRfaHdfc3RhdGUgPSBza2xfZGRpX3BsbF9nZXRfaHdfc3RhdGUsCj4+PiAgfTsKPj4+ ICAKPj4+ICBzdGF0aWMgdm9pZCBieHRfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+Pj4gQEAgLTgzOCwzNCArNzgyLDE3IEBAIG91dDoKPj4+ICAJcmV0 dXJuIHJldDsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIHZvaWQgYnh0X3NoYXJlZF9kcGxsc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+IC17Cj4+PiAtCWludCBp Owo+Pj4gLQo+Pj4gLQlkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsID0gMzsKPj4+IC0KPj4+IC0J Zm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewo+Pj4gLQkJ ZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5pZCA9IGk7Cj4+PiAtCQlkZXZfcHJpdi0+c2hhcmVk X2RwbGxzW2ldLm5hbWUgPSBieHRfZGRpX3BsbF9uYW1lc1tpXTsKPj4+IC0JCWRldl9wcml2LT5z aGFyZWRfZHBsbHNbaV0uZGlzYWJsZSA9IGJ4dF9kZGlfcGxsX2Rpc2FibGU7Cj4+PiAtCQlkZXZf cHJpdi0+c2hhcmVkX2RwbGxzW2ldLmVuYWJsZSA9IGJ4dF9kZGlfcGxsX2VuYWJsZTsKPj4+IC0J CWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZ2V0X2h3X3N0YXRlID0KPj4+IC0JCQlieHRfZGRp X3BsbF9nZXRfaHdfc3RhdGU7Cj4+PiAtCX0KPj4+IC19Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBieHRfZGRpX3BsbF9mdW5jcyA9IHsKPj4+ICsJLmVu YWJsZSA9IGJ4dF9kZGlfcGxsX2VuYWJsZSwKPj4+ICsJLmRpc2FibGUgPSBieHRfZGRpX3BsbF9k aXNhYmxlLAo+Pj4gKwkuZ2V0X2h3X3N0YXRlID0gYnh0X2RkaV9wbGxfZ2V0X2h3X3N0YXRlLAo+ Pj4gK307Cj4+PiAgCj4+PiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4+PiAgewo+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gIAl1aW50MzJfdCB2YWwgPSBJOTE1X1JFQUQo TENQTExfQ1RMKTsKPj4+ICAKPj4+IC0JaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFL RShkZXYpKQo+Pj4gLQkJc2tsX3NoYXJlZF9kcGxsc19pbml0KGRldl9wcml2KTsKPj4+IC0JZWxz ZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+Pj4gLQkJYnh0X3NoYXJlZF9kcGxsc19pbml0KGRldl9w cml2KTsKPj4+IC0JZWxzZQo+Pj4gLQkJaHN3X3NoYXJlZF9kcGxsc19pbml0KGRldl9wcml2KTsK Pj4+IC0KPj4+ICAJaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7Cj4+ PiAgCQlpbnQgY2RjbGtfZnJlcTsKPj4+ICAKPj4+IEBAIC04OTMsMTYgKzgyMCw3MiBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZGlfcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ICAJ fQo+Pj4gIH0KPj4+ICAKPj4+ICtzdHJ1Y3QgZHBsbF9pbmZvIHsKPj4+ICsJY29uc3QgY2hhciAq bmFtZTsKPj4+ICsJY29uc3QgaW50IGlkOwo+Pj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGxfZnVuY3MgKmZ1bmNzOwo+Pj4gK307Cj4+PiArCj4+IFNlZW1zIHNoYXJlZF9kcGxsc1tp XS5pZCA9PSBpLCBzbyB0aGF0IGNvdWxkIGJlIHJlbW92ZWQuIAo+IFRoZXJlIGFyZSBwbGFjZXMg aW4gdGhlIGNvZGUgdGhhdCBhc3N1bWUgdGhvc2UgYXJlIGVxdWFsLiBJIGNvbnNpZGVyZWQgbm90 Cj4gaW5jbHVkaW5nIHRoZSBpZCwgYnV0IGNvbmNsdWRlZCB0aGF0IGhhdmluZyB0aGUgaWQgYW5k IGEgV0FSTl9PTigpIGluCj4gIGludGVsX3NoYXJlZF9kcGxsX2luaXQoKSBkb2N1bWVudHMgdGhh dCBhc3N1bXB0aW9uIGJldHRlci4KPgo+IEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHJl bW92ZSB0aGF0IGFzc3VtcHRpb24sIGJ1dCB0aGF0IHJlcXVpcmUgY2hhbmdlcwo+IHRvIGludGVs X2F0b21pY19zdGF0ZSBhbmQgdXNlcnMuIEJ1dCBJIHRoaW5rIGl0IHdvdWxkIGJlIG5pY2UgaWYg d2UgY291bGQgaGF2ZSBhCj4gcGVyLURQTEwgc3RhdGUgb2JqZWN0LgpPaywgSSB0aGluayB0aGUg Y3VycmVudCB3YXkgaXMgZmluZSB0aGVuLgo+PiBJZiB5b3UgYWxzbyBtb3ZlIG5hbWUgdG8gZnVu Y3MgeW91IGNvdWxkIGtpbGwgdGhpcyBzdHJ1Y3QuCj4gSW4gYSBsYXRlciBwYXRjaCBJIGFkZCBh IGZsYWdzIGZpZWxkIHRvIHRoaXMgc3RydWN0LiBJIGd1ZXNzIEkgY291bGQgbW92ZSB0aGF0Cj4g dG8gZnVuY3MgdG9vLCBidXQgdGhlbiB3ZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIGJldHRlciBu YW1lIGZvciB0aGF0IHN0cnVjdC4KPiAiZnVuY3MiIHN0YXJ0cyB0byBzb3VuZCB3cm9uZy4KPgo+ IElNTyBoYXZpbmcgdGhhdCBleHRyYSBzdHJ1Y3QgaXMgZmluZSwgc28gSSByYXRoZXIgbGV0IHRo aW5ncyBzZXR0bGUgZmlyc3QgYW5kCj4gdGhlbiBkbyBhbm90aGVyIHJvdW5kIG9mIGNsZWFuIHVw cy4gQnV0IGlmIHRoYXQgaXMgYSBuby1nbywgSSBjYW4gcmUtc3Bpbi4KPgpJIGRvbid0IGhhdmUg YSBzdHJvbmcgb3BpbmlvbiwgeW91IGNhbiBrZWVwIGl0IGxpa2UgaXQgaXMuCgpSZXZpZXdlZC1i eTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==