From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 04/10] drm/i915: Perform static RPS frequency setup before userspace Date: Mon, 11 Jul 2016 16:31:33 +0300 Message-ID: <87eg70ti6i.fsf@intel.com> References: <1468055535-19740-1-git-send-email-chris@chris-wilson.co.uk> <1468055535-19740-5-git-send-email-chris@chris-wilson.co.uk> 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 1DCB96E3D8 for ; Mon, 11 Jul 2016 13:32:09 +0000 (UTC) In-Reply-To: <1468055535-19740-5-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXMgdGhl c2UgUlBTIGZyZXF1ZW5jeSB2YWx1ZXMgYXJlIHBhcnQgb2Ygb3VyIHVzZXJzcGFjZSBpbnRlcmZh Y2UsIHRoZXkKPiBtdXN0IGJlIGVzdGFibGlzaGVkIGJlZm9yZSB0aGF0IHVzZXJzcGFjZSBpbnRl cmZhY2UgaXMgcmVnaXN0ZXJlZC4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jIHwgOTggKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg MSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggZGY3MmY4ZTdiNGIzLi41NGY3MzlmYmQxMzMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtNTEwMiwzNSArNTEwMiwzMSBAQCBpbnQg c2FuaXRpemVfcmM2X29wdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGlu dCBlbmFibGVfcmM2KQo+ICAKPiAgc3RhdGljIHZvaWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2ll cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXVpbnQzMl90IHJw X3N0YXRlX2NhcDsKPiAtCXUzMiBkZGNjX3N0YXR1cyA9IDA7Cj4gLQlpbnQgcmV0Owo+IC0KPiAg CS8qIEFsbCBvZiB0aGVzZSB2YWx1ZXMgYXJlIGluIHVuaXRzIG9mIDUwTUh6ICovCj4gLQlkZXZf cHJpdi0+cnBzLmN1cl9mcmVxCQk9IDA7Cj4gKwo+ICAJLyogc3RhdGljIHZhbHVlcyBmcm9tIEhX OiBSUDAgPiBSUDEgPiBSUG4gKG1pbl9mcmVxKSAqLwo+ICAJaWYgKElTX0JST1hUT04oZGV2X3By aXYpKSB7Cj4gLQkJcnBfc3RhdGVfY2FwID0gSTkxNV9SRUFEKEJYVF9SUF9TVEFURV9DQVApOwo+ ICsJCXUzMiBycF9zdGF0ZV9jYXAgPSBJOTE1X1JFQUQoQlhUX1JQX1NUQVRFX0NBUCk7Cj4gIAkJ ZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSA9IChycF9zdGF0ZV9jYXAgPj4gMTYpICYgMHhmZjsKPiAg CQlkZXZfcHJpdi0+cnBzLnJwMV9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkgJiAweGZmOwo+ ICAJCWRldl9wcml2LT5ycHMubWluX2ZyZXEgPSAocnBfc3RhdGVfY2FwID4+ICAwKSAmIDB4ZmY7 Cj4gIAl9IGVsc2Ugewo+IC0JCXJwX3N0YXRlX2NhcCA9IEk5MTVfUkVBRChHRU42X1JQX1NUQVRF X0NBUCk7Cj4gKwkJdTMyIHJwX3N0YXRlX2NhcCA9IEk5MTVfUkVBRChHRU42X1JQX1NUQVRFX0NB UCk7Cj4gIAkJZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSA9IChycF9zdGF0ZV9jYXAgPj4gIDApICYg MHhmZjsKPiAgCQlkZXZfcHJpdi0+cnBzLnJwMV9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkg JiAweGZmOwo+ICAJCWRldl9wcml2LT5ycHMubWluX2ZyZXEgPSAocnBfc3RhdGVfY2FwID4+IDE2 KSAmIDB4ZmY7Cj4gIAl9Cj4gLQo+ICAJLyogaHdfbWF4ID0gUlAwIHVudGlsIHdlIGNoZWNrIGZv ciBvdmVyY2xvY2tpbmcgKi8KPiAtCWRldl9wcml2LT5ycHMubWF4X2ZyZXEJCT0gZGV2X3ByaXYt PnJwcy5ycDBfZnJlcTsKPiArCWRldl9wcml2LT5ycHMubWF4X2ZyZXEgPSBkZXZfcHJpdi0+cnBz LnJwMF9mcmVxOwo+ICAKPiAgCWRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEgPSBkZXZfcHJp di0+cnBzLnJwMV9mcmVxOwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikgfHwKPiAgCSAgICBJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZ TEFLRShkZXZfcHJpdikpIHsKPiAtCQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9w cml2LAo+IC0JCQkJCUhTV19QQ09ERV9EWU5BTUlDX0RVVFlfQ1lDTEVfQ09OVFJPTCwKPiAtCQkJ CQkmZGRjY19zdGF0dXMpOwo+IC0JCWlmICgwID09IHJldCkKPiArCQl1MzIgZGRjY19zdGF0dXMg PSAwOwo+ICsKPiArCQlpZiAoc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKPiArCQkJ CQkgICBIU1dfUENPREVfRFlOQU1JQ19EVVRZX0NZQ0xFX0NPTlRST0wsCj4gKwkJCQkJICAgJmRk Y2Nfc3RhdHVzKSA9PSAwKQoKCldlIGRvIHRoZSByZWFkIG5vdyB3aXRob3V0IGZvcmNld2FrZSwg YnV0IHRoaXMgc2hvdWxkIG5vdCBtYXR0ZXIuCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cgo+ICAJCQlkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9m cmVxID0KPiAgCQkJCWNsYW1wX3QodTgsCj4gIAkJCQkJKChkZGNjX3N0YXR1cyA+PiA4KSAmIDB4 ZmYpLAo+IEBAIC01MTQwLDMwICs1MTM2LDE0IEBAIHN0YXRpYyB2b2lkIGdlbjZfaW5pdF9ycHNf ZnJlcXVlbmNpZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWlm IChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiAgCQkv KiBTdG9yZSB0aGUgZnJlcXVlbmN5IHZhbHVlcyBpbiAxNi42NiBNSFogdW5pdHMsIHdoaWNoIGlz Cj4gLQkJICAgdGhlIG5hdHVyYWwgaGFyZHdhcmUgdW5pdCBmb3IgU0tMICovCj4gKwkJICogdGhl IG5hdHVyYWwgaGFyZHdhcmUgdW5pdCBmb3IgU0tMCj4gKwkJICovCj4gIAkJZGV2X3ByaXYtPnJw cy5ycDBfZnJlcSAqPSBHRU45X0ZSRVFfU0NBTEVSOwo+ICAJCWRldl9wcml2LT5ycHMucnAxX2Zy ZXEgKj0gR0VOOV9GUkVRX1NDQUxFUjsKPiAgCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxICo9IEdF TjlfRlJFUV9TQ0FMRVI7Cj4gIAkJZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSAqPSBHRU45X0ZSRVFf U0NBTEVSOwo+ICAJCWRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEgKj0gR0VOOV9GUkVRX1ND QUxFUjsKPiAgCX0KPiAtCj4gLQlkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSA9IGRldl9wcml2LT5y cHMubWluX2ZyZXE7Cj4gLQlkZXZfcHJpdi0+cnBzLmN1cl9mcmVxID0gZGV2X3ByaXYtPnJwcy5p ZGxlX2ZyZXE7Cj4gLQo+IC0JLyogUHJlc2VydmUgbWluL21heCBzZXR0aW5ncyBpbiBjYXNlIG9m IHJlLWluaXQgKi8KPiAtCWlmIChkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCA9PSAw KQo+IC0JCWRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0ID0gZGV2X3ByaXYtPnJwcy5t YXhfZnJlcTsKPiAtCj4gLQlpZiAoZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPT0g MCkgewo+IC0JCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQo+IC0JCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCA9Cj4gLQkJCQltYXhf dChpbnQsIGRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEsCj4gLQkJCQkgICAgICBpbnRlbF9m cmVxX29wY29kZShkZXZfcHJpdiwgNDUwKSk7Cj4gLQkJZWxzZQo+IC0JCQlkZXZfcHJpdi0+cnBz Lm1pbl9mcmVxX3NvZnRsaW1pdCA9Cj4gLQkJCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxOwo+IC0J fQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCByZXNldF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IEBAIC01MTgzLDggKzUxNjMsNiBAQCBzdGF0aWMgdm9pZCBnZW45X2Vu YWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+IC0J Z2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhkZXZfcHJpdik7Cj4gLQo+ICAJLyogV2FHc3ZEaXNh YmxlVHVyYm86IFdvcmthcm91bmQgdG8gZGlzYWJsZSB0dXJibyBvbiBCWFQgQSogKi8KPiAgCWlm IChJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiAgCQkvKgo+IEBA IC01MzAxLDkgKzUyNzksNiBAQCBzdGF0aWMgdm9pZCBnZW44X2VuYWJsZV9ycHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJLyogMmE6IERpc2FibGUgUkMgc3RhdGVzLiAq Lwo+ICAJSTkxNV9XUklURShHRU42X1JDX0NPTlRST0wsIDApOwo+ICAKPiAtCS8qIEluaXRpYWxp emUgcnBzIGZyZXF1ZW5jaWVzICovCj4gLQlnZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVzKGRldl9w cml2KTsKPiAtCj4gIAkvKiAyYjogUHJvZ3JhbSBSQzYgdGhyZXNob2xkcy4qLwo+ICAJSTkxNV9X UklURShHRU42X1JDNl9XQUtFX1JBVEVfTElNSVQsIDQwIDw8IDE2KTsKPiAgCUk5MTVfV1JJVEUo R0VONl9SQ19FVkFMVUFUSU9OX0lOVEVSVkFMLCAxMjUwMDApOyAvKiAxMjUwMCAqIDEyODBucyAq Lwo+IEBAIC01MzkyLDkgKzUzNjcsNiBAQCBzdGF0aWMgdm9pZCBnZW42X2VuYWJsZV9ycHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWludGVsX3VuY29yZV9mb3Jj ZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gLQkvKiBJbml0aWFsaXpl IHJwcyBmcmVxdWVuY2llcyAqLwo+IC0JZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhkZXZfcHJp dik7Cj4gLQo+ICAJLyogZGlzYWJsZSB0aGUgY291bnRlcnMgYW5kIHNldCBkZXRlcm1pbmlzdGlj IHRocmVzaG9sZHMgKi8KPiAgCUk5MTVfV1JJVEUoR0VONl9SQ19DT05UUk9MLCAwKTsKPiAgCj4g QEAgLTU3NzgsOCArNTc1MCw2IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfaW5pdF9ndF9wb3dl cnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXZsdl9pbml0 X2dwbGxfcmVmX2ZyZXEoZGV2X3ByaXYpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7Cj4gLQo+ICAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19HUFVfRlJFUV9TVFMpOwo+ICAJc3dpdGNoICgodmFsID4+IDYpICYgMykgewo+ICAJY2Fz ZSAwOgo+IEBAIC01ODE1LDE4ICs1Nzg1LDYgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19pbml0 X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlEUk1f REVCVUdfRFJJVkVSKCJtaW4gR1BVIGZyZXE6ICVkIE1IeiAoJXUpXG4iLAo+ICAJCQkgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWluX2ZyZXEpLAo+ICAJCQkgZGV2X3By aXYtPnJwcy5taW5fZnJlcSk7Cj4gLQo+IC0JZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEgPSBkZXZf cHJpdi0+cnBzLm1pbl9mcmVxOwo+IC0JZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSA9IGRldl9wcml2 LT5ycHMuaWRsZV9mcmVxOwo+IC0KPiAtCS8qIFByZXNlcnZlIG1pbi9tYXggc2V0dGluZ3MgaW4g Y2FzZSBvZiByZS1pbml0ICovCj4gLQlpZiAoZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGlt aXQgPT0gMCkKPiAtCQlkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCA9IGRldl9wcml2 LT5ycHMubWF4X2ZyZXE7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT5ycHMubWluX2ZyZXFfc29mdGxp bWl0ID09IDApCj4gLQkJZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPSBkZXZfcHJp di0+cnBzLm1pbl9mcmVxOwo+IC0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19pbml0X2d0X3Bvd2Vyc2F2 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTU4MzcsOCArNTc5NSw2 IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXZsdl9pbml0X2dwbGxfcmVmX2ZyZXEoZGV2 X3ByaXYpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gLQo+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICAJdmFsID0gdmx2X2Nja19yZWFk KGRldl9wcml2LCBDQ0tfRlVTRV9SRUcpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2Jf bG9jayk7Cj4gQEAgLTU4ODAsMTggKzU4MzYsNiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2lu aXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkg ICBkZXZfcHJpdi0+cnBzLnJwMV9mcmVxIHwKPiAgCQkgICBkZXZfcHJpdi0+cnBzLm1pbl9mcmVx KSAmIDEsCj4gIAkJICAiT2RkIEdQVSBmcmVxIHZhbHVlc1xuIik7Cj4gLQo+IC0JZGV2X3ByaXYt PnJwcy5pZGxlX2ZyZXEgPSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxOwo+IC0JZGV2X3ByaXYtPnJw cy5jdXJfZnJlcSA9IGRldl9wcml2LT5ycHMuaWRsZV9mcmVxOwo+IC0KPiAtCS8qIFByZXNlcnZl IG1pbi9tYXggc2V0dGluZ3MgaW4gY2FzZSBvZiByZS1pbml0ICovCj4gLQlpZiAoZGV2X3ByaXYt PnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQgPT0gMCkKPiAtCQlkZXZfcHJpdi0+cnBzLm1heF9mcmVx X3NvZnRsaW1pdCA9IGRldl9wcml2LT5ycHMubWF4X2ZyZXE7Cj4gLQo+IC0JaWYgKGRldl9wcml2 LT5ycHMubWluX2ZyZXFfc29mdGxpbWl0ID09IDApCj4gLQkJZGV2X3ByaXYtPnJwcy5taW5fZnJl cV9zb2Z0bGltaXQgPSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxOwo+IC0KPiAtCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdmFsbGV5 dmlld19jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gQEAgLTY1NTksMTAgKzY1MDMsMzAgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwo+ICAJfQo+ICAKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7Cj4gKwo+ICsJLyogSW5pdGlhbGl6ZSBSUFMgbGltaXRzIChmb3IgdXNlcnNwYWNl KSAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCWNoZXJyeXZpZXdfaW5p dF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikpCj4gIAkJdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gKwll bHNlCj4gKwkJZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhkZXZfcHJpdik7Cj4gKwo+ICsJLyog RGVyaXZlIGluaXRpYWwgdXNlciBwcmVmZXJlbmNlcy9saW1pdHMgZnJvbSB0aGUgaGFyZHdhcmUg bGltaXRzICovCj4gKwlkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSA9IGRldl9wcml2LT5ycHMubWlu X2ZyZXE7Cj4gKwlkZXZfcHJpdi0+cnBzLmN1cl9mcmVxID0gZGV2X3ByaXYtPnJwcy5pZGxlX2Zy ZXE7Cj4gKwo+ICsJZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQgPSBkZXZfcHJpdi0+ cnBzLm1heF9mcmVxOwo+ICsJZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPSBkZXZf cHJpdi0+cnBzLm1pbl9mcmVxOwo+ICsKPiArCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICsJCWRldl9wcml2LT5ycHMubWluX2ZyZXFfc29mdGxp bWl0ID0KPiArCQkJbWF4X3QoaW50LAo+ICsJCQkgICAgICBkZXZfcHJpdi0+cnBzLmVmZmljaWVu dF9mcmVxLAo+ICsJCQkgICAgICBpbnRlbF9mcmVxX29wY29kZShkZXZfcHJpdiwgNDUwKSk7Cj4g Kwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICB9Cj4gIAo+ICB2 b2lkIGludGVsX2NsZWFudXBfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAtLSAKPiAyLjguMQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK