From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clint Taylor Subject: Re: [PATCH 06/10] drm/i915: Use the memory latency based WM computation on VLV too Date: Fri, 26 Jun 2015 13:23:27 -0700 Message-ID: <558DB4BF.2000200@intel.com> References: <1435172410-9834-1-git-send-email-ville.syrjala@linux.intel.com> <1435172410-9834-7-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 155066EE6F for ; Fri, 26 Jun 2015 13:25:49 -0700 (PDT) In-Reply-To: <1435172410-9834-7-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDYvMjQvMjAxNSAxMjowMCBQTSwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3Jv dGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPgo+IEluIG9yZGVyIHRvIGdldCBkZWNuZXQgbWVtb3J5IHNlbGYgcmVmcmVzaCByZXNpZGVu Y3kgb24gVkxWLCBmbGlwIGl0Cj4gb3ZlciB0byB0aGUgbmV3IENIViB3YXkgb2YgZG9pbmcgdGhp bmdzLiBWTFYgZG9lc24ndCBkbyBQTTUgb3IgRERSIERWRlMKPiBzbyBpdCdzIGEgYml0IHNpbXBs ZXIuCj4KPiBJJ20gbm90IHN1cmUgdGhlIGN1cnJlbnRseSBtZW1vcnkgbGF0ZW5jeSB1c2VkIGZv ciBDSFYgaXMgcmVhbGx5Cj4gYXBwcm9wcmlhdGUgZm9yIFZMVi4gU29tZSBmdXJ0aGVyIHRlc3Rp bmcgd2lsbCBwcm9iYWJseSBiZSBuZWVkZWQgdG8KPiBmaWd1cmUgdGhhdCBvdXQuCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICAyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAyMjMgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jICB8ICAgNiAtCj4gICAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwg MjI1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDE0MjQzMjAuLmQ2N2I1ZjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTE1NDc2LDcgKzE1NDc2LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3 X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCXBsbC0+b24gPSBmYWxzZTsKPiAg IAl9Cj4KPiAtCWlmIChJU19DSEVSUllWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKQo+ICAgCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gICAJZWxzZSBpZiAoSVNfR0VO OShkZXYpKQo+ICAgCQlza2xfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gaW5kZXggZmZkY2E2Mi4uYzdjOTBjZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+IEBAIC05MzEsNzcgKzkzMSw2IEBAIHN0YXRpYyB2b2lkIHZsdl93cml0ZV93bV92YWx1 ZXMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4KPiAgICN1bmRlZiBGV19XTV9WTFYKPgo+IC1z dGF0aWMgdWludDhfdCB2bHZfY29tcHV0ZV9kcmFpbl9sYXRlbmN5KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAtCQkJCQkgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gLXsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlpbnQgZW50cmllcywgcHJlY19tdWx0LCBk cmFpbl9sYXRlbmN5LCBwaXhlbF9zaXplOwo+IC0JaW50IGNsb2NrID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAtCWNvbnN0IGludCBoaWdoX3By ZWNpc2lvbiA9IElTX0NIRVJSWVZJRVcoZGV2KSA/IDE2IDogNjQ7Cj4gLQo+IC0JLyoKPiAtCSAq IEZJWE1FIHRoZSBwbGFuZSBtaWdodCBoYXZlIGFuIGZiCj4gLQkgKiBidXQgYmUgaW52aXNpYmxl IChlZy4gZHVlIHRvIGNsaXBwaW5nKQo+IC0JICovCj4gLQlpZiAoIWludGVsX2NydGMtPmFjdGl2 ZSB8fCAhcGxhbmUtPnN0YXRlLT5mYikKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAoV0FSTihj bG9jayA9PSAwLCAiUGl4ZWwgY2xvY2sgaXMgemVybyFcbiIpKQo+IC0JCXJldHVybiAwOwo+IC0K PiAtCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChwbGFuZS0+c3RhdGUtPmZiLT5w aXhlbF9mb3JtYXQsIDApOwo+IC0KPiAtCWlmIChXQVJOKHBpeGVsX3NpemUgPT0gMCwgIlBpeGVs IHNpemUgaXMgemVybyFcbiIpKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWVudHJpZXMgPSBESVZf Uk9VTkRfVVAoY2xvY2ssIDEwMDApICogcGl4ZWxfc2l6ZTsKPiAtCj4gLQlwcmVjX211bHQgPSBo aWdoX3ByZWNpc2lvbjsKPiAtCWRyYWluX2xhdGVuY3kgPSA2NCAqIHByZWNfbXVsdCAqIDQgLyBl bnRyaWVzOwo+IC0KPiAtCWlmIChkcmFpbl9sYXRlbmN5ID4gRFJBSU5fTEFURU5DWV9NQVNLKSB7 Cj4gLQkJcHJlY19tdWx0IC89IDI7Cj4gLQkJZHJhaW5fbGF0ZW5jeSA9IDY0ICogcHJlY19tdWx0 ICogNCAvIGVudHJpZXM7Cj4gLQl9Cj4gLQo+IC0JaWYgKGRyYWluX2xhdGVuY3kgPiBEUkFJTl9M QVRFTkNZX01BU0spCj4gLQkJZHJhaW5fbGF0ZW5jeSA9IERSQUlOX0xBVEVOQ1lfTUFTSzsKPiAt Cj4gLQlyZXR1cm4gZHJhaW5fbGF0ZW5jeSB8IChwcmVjX211bHQgPT0gaGlnaF9wcmVjaXNpb24g Pwo+IC0JCQkJRERMX1BSRUNJU0lPTl9ISUdIIDogRERMX1BSRUNJU0lPTl9MT1cpOwo+IC19Cj4g LQo+IC1zdGF0aWMgaW50IHZsdl9jb21wdXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ IC0JCQkgIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gLQkJCSAgaW50IGZpZm9fc2l6ZSkK PiAtewo+IC0JaW50IGNsb2NrLCBlbnRyaWVzLCBwaXhlbF9zaXplOwo+IC0KPiAtCS8qCj4gLQkg KiBGSVhNRSB0aGUgcGxhbmUgbWlnaHQgaGF2ZSBhbiBmYgo+IC0JICogYnV0IGJlIGludmlzaWJs ZSAoZWcuIGR1ZSB0byBjbGlwcGluZykKPiAtCSAqLwo+IC0JaWYgKCFjcnRjLT5hY3RpdmUgfHwg IXBsYW5lLT5iYXNlLnN0YXRlLT5mYikKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlwaXhlbF9zaXpl ID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGxhbmUtPmJhc2Uuc3RhdGUtPmZiLT5waXhlbF9mb3Jt YXQsIDApOwo+IC0JY2xvY2sgPSBjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOwo+IC0KPiAtCWVudHJpZXMgPSBESVZfUk9VTkRfVVAoY2xvY2ssIDEwMDApICogcGl4 ZWxfc2l6ZTsKPiAtCj4gLQkvKgo+IC0JICogU2V0IHVwIHRoZSB3YXRlcm1hcmsgc3VjaCB0aGF0 IHdlIGRvbid0IHN0YXJ0IGlzc3VpbmcgbWVtb3J5Cj4gLQkgKiByZXF1ZXN0cyB1bnRpbCB3ZSBh cmUgd2l0aGluIFBORCdzIG1heCBkZWFkbGluZSB2YWx1ZSAoMjU2dXMpLgo+IC0JICogSWRlYSBi ZWluZyB0byBiZSBpZGxlIGFzIGxvbmcgYXMgcG9zc2libGUgd2hpbGUgc3RpbGwgdGFraW5nCj4g LQkgKiBhZHZhdGFuZ2Ugb2YgUE5EJ3MgZGVhZGxpbmUgc2NoZWR1bGluZy4gVGhlIGxpbWl0IG9m IDgKPiAtCSAqIGNhY2hlbGluZXMgKHVzZWQgd2hlbiB0aGUgRklGTyB3aWxsIGFueXdheSBkcmFp biBpbiBsZXNzIHRpbWUKPiAtCSAqIHRoYW4gMjU2dXMpIHNob3VsZCBtYXRjaCB3aGF0IHdlIHdv dWxkIGJlIGRvbmUgaWYgdHJpY2tsZQo+IC0JICogZmVlZCB3ZXJlIGVuYWJsZWQuCj4gLQkgKi8K PiAtCXJldHVybiBmaWZvX3NpemUgLSBjbGFtcChESVZfUk9VTkRfVVAoMjU2ICogZW50cmllcywg NjQpLCAwLCBmaWZvX3NpemUgLSA4KTsKPiAtfQo+IC0KPiAgIGVudW0gdmx2X3dtX2xldmVsIHsK PiAgIAlWTFZfV01fTEVWRUxfUE0yLAo+ICAgCVZMVl9XTV9MRVZFTF9QTTUsCj4gQEAgLTEwNzYs MTAxICsxMDA1LDYgQEAgc3RhdGljIHVpbnQxNl90IHZsdl9jb21wdXRlX3dtX2xldmVsKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gICAJcmV0dXJuIG1pbl90KGludCwgd20sIFVTSFJUX01B WCk7Cj4gICB9Cj4KPiAtc3RhdGljIGJvb2wgdmx2X2NvbXB1dGVfc3Jfd20oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAtCQkJICAgICAgc3RydWN0IHZsdl93bV92YWx1ZXMgKndtKQo+IC17Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IElOVkFMSURfUElQRTsK PiAtCWludCBudW1fcGxhbmVzID0gMDsKPiAtCWludCBmaWZvX3NpemUgPSAwOwo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZTsKPiAtCj4gLQl3bS0+c3IuY3Vyc29yID0gd20tPnNyLnBsYW5l ID0gMDsKPiAtCj4gLQljcnRjID0gc2luZ2xlX2VuYWJsZWRfY3J0YyhkZXYpOwo+IC0JLyogbWF4 ZmlmbyBub3Qgc3VwcG9ydGVkIG9uIHBpcGUgQyAqLwo+IC0JaWYgKGNydGMgJiYgdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZSAhPSBQSVBFX0MpIHsKPiAtCQlwaXBlID0gdG9faW50ZWxfY3J0Yyhj cnRjKS0+cGlwZTsKPiAtCQludW1fcGxhbmVzID0gISF3bS0+cGlwZVtwaXBlXS5wcmltYXJ5ICsK PiAtCQkJISF3bS0+cGlwZVtwaXBlXS5zcHJpdGVbMF0gKwo+IC0JCQkhIXdtLT5waXBlW3BpcGVd LnNwcml0ZVsxXTsKPiAtCQlmaWZvX3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3Bp cGVzICogNTEyIC0gMTsKPiAtCX0KPiAtCj4gLQlpZiAoZmlmb19zaXplID09IDAgfHwgbnVtX3Bs YW5lcyA+IDEpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCXdtLT5zci5jdXJzb3IgPSB2bHZf Y29tcHV0ZV93bSh0b19pbnRlbF9jcnRjKGNydGMpLAo+IC0JCQkJICAgICAgIHRvX2ludGVsX3Bs YW5lKGNydGMtPmN1cnNvciksIDB4M2YpOwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocGxh bmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGJhc2UuaGVhZCkgewo+IC0JCWlmIChw bGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPiAtCQkJY29udGludWU7 Cj4gLQo+IC0JCWlmIChwbGFuZS0+cGlwZSAhPSBwaXBlKQo+IC0JCQljb250aW51ZTsKPiAtCj4g LQkJd20tPnNyLnBsYW5lID0gdmx2X2NvbXB1dGVfd20odG9faW50ZWxfY3J0YyhjcnRjKSwKPiAt CQkJCQkgICAgICBwbGFuZSwgZmlmb19zaXplKTsKPiAtCQlpZiAod20tPnNyLnBsYW5lICE9IDAp Cj4gLQkJCWJyZWFrOwo+IC0JfQo+IC0KPiAtCXJldHVybiB0cnVlOwo+IC19Cj4gLQo+IC1zdGF0 aWMgdm9pZCB2YWxsZXl2aWV3X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gLXsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JYm9vbCBjeHNyX2VuYWJsZWQ7Cj4gLQlzdHJ1Y3Qg dmx2X3dtX3ZhbHVlcyB3bSA9IGRldl9wcml2LT53bS52bHY7Cj4gLQo+IC0Jd20uZGRsW3BpcGVd LnByaW1hcnkgPSB2bHZfY29tcHV0ZV9kcmFpbl9sYXRlbmN5KGNydGMsIGNydGMtPnByaW1hcnkp Owo+IC0Jd20ucGlwZVtwaXBlXS5wcmltYXJ5ID0gdmx2X2NvbXB1dGVfd20oaW50ZWxfY3J0YywK PiAtCQkJCQkgICAgICAgdG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSksCj4gLQkJCQkJICAg ICAgIHZsdl9nZXRfZmlmb19zaXplKGRldiwgcGlwZSwgMCkpOwo+IC0KPiAtCXdtLmRkbFtwaXBl XS5jdXJzb3IgPSB2bHZfY29tcHV0ZV9kcmFpbl9sYXRlbmN5KGNydGMsIGNydGMtPmN1cnNvcik7 Cj4gLQl3bS5waXBlW3BpcGVdLmN1cnNvciA9IHZsdl9jb21wdXRlX3dtKGludGVsX2NydGMsCj4g LQkJCQkJICAgICAgdG9faW50ZWxfcGxhbmUoY3J0Yy0+Y3Vyc29yKSwKPiAtCQkJCQkgICAgICAw eDNmKTsKPiAtCj4gLQljeHNyX2VuYWJsZWQgPSB2bHZfY29tcHV0ZV9zcl93bShkZXYsICZ3bSk7 Cj4gLQo+IC0JaWYgKG1lbWNtcCgmd20sICZkZXZfcHJpdi0+d20udmx2LCBzaXplb2Yod20pKSA9 PSAwKQo+IC0JCXJldHVybjsKPiAtCj4gLQlEUk1fREVCVUdfS01TKCJTZXR0aW5nIEZJRk8gd2F0 ZXJtYXJrcyAtICVjOiBwbGFuZT0lZCwgY3Vyc29yPSVkLCAiCj4gLQkJICAgICAgIlNSOiBwbGFu ZT0lZCwgY3Vyc29yPSVkXG4iLCBwaXBlX25hbWUocGlwZSksCj4gLQkJICAgICAgd20ucGlwZVtw aXBlXS5wcmltYXJ5LCB3bS5waXBlW3BpcGVdLmN1cnNvciwKPiAtCQkgICAgICB3bS5zci5wbGFu ZSwgd20uc3IuY3Vyc29yKTsKPiAtCj4gLQkvKgo+IC0JICogRklYTUUgRERSIERWRlMgaW50cm9k dWNlcyBtYXNzaXZlIG1lbW9yeSBsYXRlbmNpZXMgd2hpY2gKPiAtCSAqIGFyZSBub3Qga25vd24g dG8gc3lzdGVtIGFnZW50IHNvIGFueSBkZWFkbGluZSBzcGVjaWZpZWQKPiAtCSAqIGJ5IHRoZSBk aXNwbGF5IG1heSBub3QgYmUgcmVzcGVjdGVkLiBUbyBzdXBwb3J0IEREUiBEVkZTCj4gLQkgKiB0 aGUgd2F0ZXJtYXJrIGNvZGUgbmVlZHMgdG8gYmUgcmV3cml0dGVuIHRvIGVzc2VudGlhbGx5Cj4g LQkgKiBieXBhc3MgZGVhZGxpbmUgbWVjaGFuaXNtIGFuZCByZWx5IHNvbGVseSBvbiB0aGUKPiAt CSAqIHdhdGVybWFya3MuIEZvciBub3cgZGlzYWJsZSBERFIgRFZGUy4KPiAtCSAqLwo+IC0JaWYg KElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IC0JCWNodl9zZXRfbWVtb3J5X2R2ZnMoZGV2X3By aXYsIGZhbHNlKTsKPiAtCj4gLQlpZiAoIWN4c3JfZW5hYmxlZCkKPiAtCQlpbnRlbF9zZXRfbWVt b3J5X2N4c3IoZGV2X3ByaXYsIGZhbHNlKTsKPiAtCj4gLQl2bHZfd3JpdGVfd21fdmFsdWVzKGlu dGVsX2NydGMsICZ3bSk7Cj4gLQo+IC0JaWYgKGN4c3JfZW5hYmxlZCkKPiAtCQlpbnRlbF9zZXRf bWVtb3J5X2N4c3IoZGV2X3ByaXYsIHRydWUpOwo+IC0KPiAtCWRldl9wcml2LT53bS52bHYgPSB3 bTsKPiAtfQo+IC0KPiAgIHN0YXRpYyB2b2lkIHZsdl9jb21wdXRlX2ZpZm8oc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2Owo+IEBAIC0xMjcyLDcgKzExMDYsNyBAQCBzdGF0aWMgdm9pZCB2bHZfaW52ZXJ0X3dt cyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgIAl9Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQg X3Zsdl9jb21wdXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICtzdGF0aWMgdm9pZCB2 bHZfY29tcHV0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgIHsKPiAgIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gICAJc3RydWN0IHZsdl93bV9zdGF0 ZSAqd21fc3RhdGUgPSAmY3J0Yy0+d21fc3RhdGU7Cj4gQEAgLTE1MTgsNyArMTM1Miw3IEBAIHN0 YXRpYyB2b2lkIHZsdl91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgIAlzdHJ1Y3Qgdmx2X3dtX3ZhbHVlcyB3 bSA9IHt9Owo+Cj4gLQlfdmx2X2NvbXB1dGVfd20oaW50ZWxfY3J0Yyk7Cj4gKwl2bHZfY29tcHV0 ZV93bShpbnRlbF9jcnRjKTsKPiAgIAl2bHZfbWVyZ2Vfd20oZGV2LCAmd20pOwo+Cj4gICAJaWYg KG1lbWNtcCgmZGV2X3ByaXYtPndtLnZsdiwgJndtLCBzaXplb2Yod20pKSA9PSAwKSB7Cj4gQEAg LTE1NjcsNTQgKzE0MDEsNiBAQCBzdGF0aWMgdm9pZCB2bHZfdXBkYXRlX3dtKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAgIAlkZXZfcHJpdi0+d20udmx2ID0gd207Cj4gICB9Cj4KPiAtc3RhdGlj IHZvaWQgdmFsbGV5dmlld191cGRhdGVfc3ByaXRlX3dtKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+IC0JCQkJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJCQl1aW50MzJfdCBzcHJpdGVf d2lkdGgsCj4gLQkJCQkJdWludDMyX3Qgc3ByaXRlX2hlaWdodCwKPiAtCQkJCQlpbnQgcGl4ZWxf c2l6ZSwKPiAtCQkJCQlib29sIGVuYWJsZWQsIGJvb2wgc2NhbGVkKQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiAtCWludCBzcHJpdGUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPnBsYW5l Owo+IC0JYm9vbCBjeHNyX2VuYWJsZWQ7Cj4gLQlzdHJ1Y3Qgdmx2X3dtX3ZhbHVlcyB3bSA9IGRl dl9wcml2LT53bS52bHY7Cj4gLQo+IC0JaWYgKGVuYWJsZWQpIHsKPiAtCQl3bS5kZGxbcGlwZV0u c3ByaXRlW3Nwcml0ZV0gPQo+IC0JCQl2bHZfY29tcHV0ZV9kcmFpbl9sYXRlbmN5KGNydGMsIHBs YW5lKTsKPiAtCj4gLQkJd20ucGlwZVtwaXBlXS5zcHJpdGVbc3ByaXRlXSA9Cj4gLQkJCXZsdl9j b21wdXRlX3dtKGludGVsX2NydGMsCj4gLQkJCQkgICAgICAgdG9faW50ZWxfcGxhbmUocGxhbmUp LAo+IC0JCQkJICAgICAgIHZsdl9nZXRfZmlmb19zaXplKGRldiwgcGlwZSwgc3ByaXRlKzEpKTsK PiAtCX0gZWxzZSB7Cj4gLQkJd20uZGRsW3BpcGVdLnNwcml0ZVtzcHJpdGVdID0gMDsKPiAtCQl3 bS5waXBlW3BpcGVdLnNwcml0ZVtzcHJpdGVdID0gMDsKPiAtCX0KPiAtCj4gLQljeHNyX2VuYWJs ZWQgPSB2bHZfY29tcHV0ZV9zcl93bShkZXYsICZ3bSk7Cj4gLQo+IC0JaWYgKG1lbWNtcCgmd20s ICZkZXZfcHJpdi0+d20udmx2LCBzaXplb2Yod20pKSA9PSAwKQo+IC0JCXJldHVybjsKPiAtCj4g LQlEUk1fREVCVUdfS01TKCJTZXR0aW5nIEZJRk8gd2F0ZXJtYXJrcyAtICVjOiBzcHJpdGUgJWM9 JWQsICIKPiAtCQkgICAgICAiU1I6IHBsYW5lPSVkLCBjdXJzb3I9JWRcbiIsIHBpcGVfbmFtZShw aXBlKSwKPiAtCQkgICAgICBzcHJpdGVfbmFtZShwaXBlLCBzcHJpdGUpLAo+IC0JCSAgICAgIHdt LnBpcGVbcGlwZV0uc3ByaXRlW3Nwcml0ZV0sCj4gLQkJICAgICAgd20uc3IucGxhbmUsIHdtLnNy LmN1cnNvcik7Cj4gLQo+IC0JaWYgKCFjeHNyX2VuYWJsZWQpCj4gLQkJaW50ZWxfc2V0X21lbW9y eV9jeHNyKGRldl9wcml2LCBmYWxzZSk7Cj4gLQo+IC0Jdmx2X3dyaXRlX3dtX3ZhbHVlcyhpbnRl bF9jcnRjLCAmd20pOwo+IC0KPiAtCWlmIChjeHNyX2VuYWJsZWQpCj4gLQkJaW50ZWxfc2V0X21l bW9yeV9jeHNyKGRldl9wcml2LCB0cnVlKTsKPiAtfQo+IC0KPiAgICNkZWZpbmUgc2luZ2xlX3Bs YW5lX2VuYWJsZWQobWFzaykgaXNfcG93ZXJfb2ZfMihtYXNrKQo+Cj4gICBzdGF0aWMgdm9pZCBn NHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiBAQCAtNzI4OSw4ICs3MDc1LDkg QEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWRldl9w cml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiAgIAkJCWNoZXJyeXZpZXdfaW5pdF9j bG9ja19nYXRpbmc7Cj4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiAtCQlk ZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSB2YWxsZXl2aWV3X3VwZGF0ZV93bTsKPiAtCQlk ZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtID0gdmFsbGV5dmlld191cGRhdGVfc3By aXRlX3dtOwo+ICsJCXZsdl9zZXR1cF93bV9sYXRlbmN5KGRldik7Cj4gKwo+ICsJCWRldl9wcml2 LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHZsdl91cGRhdGVfd207Cj4gICAJCWRldl9wcml2LT5kaXNw bGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiAgIAkJCXZhbGxleXZpZXdfaW5pdF9jbG9ja19nYXRp bmc7Cj4gICAJfSBlbHNlIGlmIChJU19QSU5FVklFVyhkZXYpKSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKPiBpbmRleCAzODA2ZjgzLi5kMjMyNjliIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtNDAyLDEwICs0MDIsNiBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAg CWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gICAJCXNwcmN0bCB8 PSBTUF9USUxFRDsKPgo+IC0JaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKGRwbGFuZSwg Y3J0Yywgc3JjX3csIHNyY19oLAo+IC0JCQkJICAgICAgIHBpeGVsX3NpemUsIHRydWUsCj4gLQkJ CQkgICAgICAgc3JjX3cgIT0gY3J0Y193IHx8IHNyY19oICE9IGNydGNfaCk7Cj4gLQo+ICAgCS8q IFNpemVzIGFyZSAwIGJhc2VkICovCj4gICAJc3JjX3ctLTsKPiAgIAlzcmNfaC0tOwo+IEBAIC00 NzAsOCArNDY2LDYgQEAgdmx2X2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5l LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4KPiAgIAlJOTE1X1dSSVRFKFNQU1VSRihwaXBlLCBw bGFuZSksIDApOwo+ICAgCVBPU1RJTkdfUkVBRChTUFNVUkYocGlwZSwgcGxhbmUpKTsKPiAtCj4g LQlpbnRlbF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3MoZHBsYW5lLCBjcnRjLCAwLCAwLCAwLCBm YWxzZSwgZmFsc2UpOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+CgpSZXZpZXdlZC1ieTogQ2xp bnQgVGF5bG9yIDxDbGludG9uLkEuVGF5bG9yQGludGVsLmNvbT4KVGVzdGVkLWJ5OiBDbGludCBU YXlsb3IgPENsaW50b24uQS5UYXlsb3JAaW50ZWwuY29tPgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK