From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] Revert "drm/i915: Add two-stage ILK-style watermark programming (v10)" Date: Wed, 20 Jan 2016 10:10:44 +0100 Message-ID: <20160120091044.GA19130@phenom.ffwll.local> References: <1453232584-8543-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 51A5B6E44B for ; Wed, 20 Jan 2016 01:10:39 -0800 (PST) Received: by mail-wm0-f52.google.com with SMTP id l65so170284744wmf.1 for ; Wed, 20 Jan 2016 01:10:39 -0800 (PST) Content-Disposition: inline In-Reply-To: <1453232584-8543-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKYW4gMTksIDIwMTYgYXQgMTE6NDM6MDRBTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBUaGlzIHJldmVydHMgY29tbWl0IDM5NmUzM2FlMjA0ZjUyYWJlYmVjOWU1NzhmNDRjNzQ5 MzA1NTAwZjQuCj4gCj4gVGhpcyBjb21taXQgd2FzIHRyaWdnZXJpbmcgc29tZSBGSUZPIHVuZGVy cnVuIHdhcm5pbmdzIG9uIElMSy1JVkIKPiBwbGF0Zm9ybXMgKGJ1dCBzdXJwcmlzaW5nbHkgbm90 IG9uIEhTVy9CRFcgdGhhdCBzaGFyZSBtb3JlIG9yIGxlc3MgdGhlCj4gc2FtZSBjb2RlcGF0aHMp LiAgVGhlc2UgdW5kZXJydW5zIHdlcmUgY2F1Z2h0IGJ5IHRoZSBjb250aW51b3VzCj4gaW50ZWdy YXRpb24gKENJKSBzeXN0ZW0gYW5kIGNvdWxkIGJlIHJlcHJvZHVjZWQgY29uc2lzdGVudGx5IHdo ZW4KPiBydW5uaW5nIHRoZSBiYXNpYyBhY2NlcHRhbmNlIHRlc3RzIChCQVQpIG9uIHRoZSBhZmZl Y3RlZCBwbGF0Zm9ybXMuCj4gCj4gTm90ZSB0aGF0IHRoaXMgcmV2ZXJ0IHdpbGwgY2F1c2UgYSB2 aXNpYmxlIHJlZ3Jlc3Npb24gZm9yIHNvbWUKPiBlbmQtdXNlcnM7IHRoZSAiZmxpY2tlciB3aGVu IG1vdXNlIG1vdmVzIGJldHdlZW4gbW9uaXRvcnMgaW4gWCIgaXNzdWUKPiB0aGF0IHdhcyByZXBv cnRlZCBiZWZvcmUgdGhpcyBwYXRjaCB3YXMgbWVyZ2VkIHdpbGwgbm93IHJldHVybi4gIEhvd2V2 ZXIKPiByZWdyZXNzaW9ucyB0aGF0IGFyZSB2aXNpYmxlIHRvIENJIGhhdmUgaGlnaGVyIHByaW9y aXR5IHNpbmNlIHRoZXkKPiBwcmV2ZW50IHByb3BlciB0ZXN0aW5nIG9mIGZ1dHVyZSBwYXRjaGVz IG9uIHRob3NlIHBsYXRmb3Jtcy4gIEhvcGVmdWxseQo+IHdlJ2xsIGJlIGFibGUgdG8gZmlndXJl IG91dCB0aGUgY2F1c2Ugb2YgdGhlIHVuZGVycnVucyBxdWlja2x5IGFuZAo+IHJlbWVyZ2UgYW4g aW1wcm92ZWQgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIHRvIGZpeCB0aGUgcmVncmVzc2lvbi4KPiAK PiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+IEJ1Z3ppbGxhOiBodHRwczov L2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05MzY0MAo+IFNpZ25lZC1vZmYt Ynk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KClF1ZXVlZCBmb3IgLW5leHQsIHRoYW5r cyBmb3IgdGhlIHBhdGNoLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RtYS5jICAgICAgfCAgIDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgfCAgMTMgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8 ICAgMSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA5MiArLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg fCAgMjggKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDE2 MiArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKyksIDI0MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMKPiBpbmRleCBhMGY1NjU5Li5kNzBkOTZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rt YS5jCj4gQEAgLTg5Niw3ICs4OTYsNiBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICAJbXV0ZXhfaW5pdCgmZGV2X3By aXYtPnNiX2xvY2spOwo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPm1vZGVzZXRfcmVzdG9yZV9s b2NrKTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gLQltdXRleF9pbml0 KCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ICAKPiAgCWludGVsX3BtX3NldHVwKGRldik7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGFmMzAxNDguLmQzYjk4YzIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjI4LDExICs2MjgsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkJCSAgc3RydWN0IGRwbGwgKmJlc3RfY2xvY2spOwo+ ICAJaW50ICgqY29tcHV0ZV9waXBlX3dtKShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJ ICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gLQlpbnQgKCpjb21wdXRl X2ludGVybWVkaWF0ZV93bSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAtCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqbmV3c3RhdGUpOwo+IC0Jdm9pZCAoKmluaXRpYWxfd2F0ZXJtYXJrcykoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSk7Cj4gLQl2b2lkICgqb3B0aW1pemVfd2F0ZXJt YXJrcykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSk7Cj4gKwl2b2lkICgqcHJvZ3Jh bV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAgCXZvaWQg KCp1cGRhdGVfd20pKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIAlpbnQgKCptb2Rlc2V0X2Nh bGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAl2b2lkICgqbW9k ZXNldF9jb21taXRfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gQEAg LTE5MzgsMTMgKzE5MzQsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAkJfTsKPiAg Cj4gIAkJdWludDhfdCBtYXhfbGV2ZWw7Cj4gLQo+IC0JCS8qCj4gLQkJICogU2hvdWxkIGJlIGhl bGQgYXJvdW5kIGF0b21pYyBXTSByZWdpc3RlciB3cml0aW5nOyBhbHNvCj4gLQkJICogcHJvdGVj dHMgKiBpbnRlbF9jcnRjLT53bS5hY3RpdmUgYW5kCj4gLQkJICogY3N0YXRlLT53bS5uZWVkX3Bv c3R2YmxfdXBkYXRlLgo+IC0JCSAqLwo+IC0JCXN0cnVjdCBtdXRleCB3bV9tdXRleDsKPiAgCX0g d207Cj4gIAo+ICAJc3RydWN0IGk5MTVfcnVudGltZV9wbSBwbTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwo+IGluZGV4IDk2ODJkOTQuLjQ2MjVmOGEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWMuYwo+IEBAIC05Nyw3ICs5Nyw2IEBAIGludGVsX2NydGNfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWNydGNfc3RhdGUtPmRpc2FibGVf bHBfd20gPSBmYWxzZTsKPiAgCWNydGNfc3RhdGUtPmRpc2FibGVfY3hzciA9IGZhbHNlOwo+ICAJ Y3J0Y19zdGF0ZS0+d21fY2hhbmdlZCA9IGZhbHNlOwo+IC0JY3J0Y19zdGF0ZS0+d20ubmVlZF9w b3N0dmJsX3VwZGF0ZSA9IGZhbHNlOwo+ICAKPiAgCXJldHVybiAmY3J0Y19zdGF0ZS0+YmFzZTsK PiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBhODUxY2I3Li4z MjYwZmM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC00ODMz LDQyICs0ODMzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKPiAgCQlpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2X3ByaXYsIGZh bHNlKTsKPiAgCX0KPiAgCj4gLQkvKgo+IC0JICogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJs ZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiAtCSAqIG9uZSBmcmFtZSBiZWZv cmUgZW5hYmxpbmcgc2NhbGluZy4gIExQIHdhdGVybWFya3MgY2FuIGJlIHJlLWVuYWJsZWQKPiAt CSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4KPiAtCSAqCj4gLQkgKiBXYUN4U1JEaXNhYmxl ZEZvclNwcml0ZVNjYWxpbmc6aXZiCj4gLQkgKi8KPiAtCWlmIChwaXBlX2NvbmZpZy0+ZGlzYWJs ZV9scF93bSkgewo+IC0JCWlsa19kaXNhYmxlX2xwX3dtKGRldik7Cj4gLQkJaW50ZWxfd2FpdF9m b3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIElmIHdl J3JlIGRvaW5nIGEgbW9kZXNldCwgd2UncmUgZG9uZS4gIE5vIG5lZWQgdG8gZG8gYW55IHByZS12 YmxhbmsKPiAtCSAqIHdhdGVybWFyayBwcm9ncmFtbWluZyBoZXJlLgo+IC0JICovCj4gLQlpZiAo bmVlZHNfbW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpKQo+IC0JCXJldHVybjsKPiAtCj4gLQkv Kgo+IC0JICogRm9yIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgYXRvbWljIHdhdGVybWFya3MsIHBy b2dyYW0gdGhlCj4gLQkgKiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmtzIGltbWVkaWF0ZWx5LiAg T24gcHJlLWdlbjkgcGxhdGZvcm1zLCB0aGVzZQo+IC0JICogd2lsbCBiZSB0aGUgaW50ZXJtZWRp YXRlIHZhbHVlcyB0aGF0IGFyZSBzYWZlIGZvciBib3RoIHByZS0gYW5kCj4gLQkgKiBwb3N0LSB2 Ymxhbms7IHdoZW4gdmJsYW5rIGhhcHBlbnMsIHRoZSAnYWN0aXZlJyB2YWx1ZXMgd2lsbCBiZSBz ZXQKPiAtCSAqIHRvIHRoZSBmaW5hbCAndGFyZ2V0JyB2YWx1ZXMgYW5kIHdlJ2xsIGRvIHRoaXMg YWdhaW4gdG8gZ2V0IHRoZQo+IC0JICogb3B0aW1hbCB3YXRlcm1hcmtzLiAgRm9yIGdlbjkrIHBs YXRmb3JtcywgdGhlIHZhbHVlcyB3ZSBwcm9ncmFtIGhlcmUKPiAtCSAqIHdpbGwgYmUgdGhlIGZp bmFsIHRhcmdldCB2YWx1ZXMgd2hpY2ggd2lsbCBnZXQgYXV0b21hdGljYWxseSBsYXRjaGVkCj4g LQkgKiBhdCB2YmxhbmsgdGltZTsgbm8gZnVydGhlciBwcm9ncmFtbWluZyB3aWxsIGJlIG5lY2Vz c2FyeS4KPiAtCSAqCj4gLQkgKiBJZiBhIHBsYXRmb3JtIGhhc24ndCBiZWVuIHRyYW5zaXRpb25l ZCB0byBhdG9taWMgd2F0ZXJtYXJrcyB5ZXQsCj4gLQkgKiB3ZSdsbCBjb250aW51ZSB0byB1cGRh dGUgd2F0ZXJtYXJrcyB0aGUgb2xkIHdheSwgaWYgZmxhZ3MgdGVsbAo+IC0JICogdXMgdG8uCj4g LQkgKi8KPiAtCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgIT0gTlVM TCkKPiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MocGlwZV9jb25maWcp Owo+IC0JZWxzZSBpZiAocGlwZV9jb25maWctPndtX2NoYW5nZWQpCj4gKwlpZiAoIW5lZWRzX21v ZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNlKSAmJiBwaXBlX2NvbmZpZy0+d21fY2hhbmdlZCkKPiAg CQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcygmY3J0Yy0+YmFzZSk7Cj4gIH0KPiAgCj4gQEAgLTEx OTE0LDExICsxMTg3OSw2IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlwaXBlX2NvbmZpZy0+d21fY2hh bmdlZCA9IHRydWU7Cj4gIAl9Cj4gIAo+IC0JLyogUHJlLWdlbjkgcGxhdGZvcm1zIG5lZWQgdHdv LXN0ZXAgd2F0ZXJtYXJrIHVwZGF0ZXMgKi8KPiAtCWlmIChwaXBlX2NvbmZpZy0+d21fY2hhbmdl ZCAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgJiYKPiAtCSAgICBkZXZfcHJpdi0+ZGlzcGxh eS5vcHRpbWl6ZV93YXRlcm1hcmtzKQo+IC0JCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSktPndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSB0cnVlOwo+IC0KPiAgCWlmICh2aXNpYmxlIHx8 IHdhc192aXNpYmxlKQo+ICAJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Cj4gIAkJCXRv X2ludGVsX3BsYW5lKHBsYW5lKS0+ZnJvbnRidWZmZXJfYml0Owo+IEBAIC0xMjA3NSwyOSArMTIw MzUsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCXJldCA9IDA7Cj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9w aXBlX3dtKSB7Cj4gIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKGlu dGVsX2NydGMsIHN0YXRlKTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoIlRh cmdldCBwaXBlIHdhdGVybWFya3MgYXJlIGludmFsaWRcbiIpOwo+IC0JCQlyZXR1cm4gcmV0Owo+ IC0JCX0KPiAtCX0KPiAtCj4gLQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20gJiYKPiAtCSAgICAhdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+c2tpcF9p bnRlcm1lZGlhdGVfd20pIHsKPiAtCQlpZiAoV0FSTl9PTighZGV2X3ByaXYtPmRpc3BsYXkuY29t cHV0ZV9waXBlX3dtKSkKPiAtCQkJcmV0dXJuIDA7Cj4gLQo+IC0JCS8qCj4gLQkJICogQ2FsY3Vs YXRlICdpbnRlcm1lZGlhdGUnIHdhdGVybWFya3MgdGhhdCBzYXRpc2Z5IGJvdGggdGhlCj4gLQkJ ICogb2xkIHN0YXRlIGFuZCB0aGUgbmV3IHN0YXRlLiAgV2UgY2FuIHByb2dyYW0gdGhlc2UKPiAt CQkgKiBpbW1lZGlhdGVseS4KPiAtCQkgKi8KPiAtCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5j b21wdXRlX2ludGVybWVkaWF0ZV93bShjcnRjLT5kZXYsCj4gLQkJCQkJCQkJaW50ZWxfY3J0YywK PiAtCQkJCQkJCQlwaXBlX2NvbmZpZyk7Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlEUk1fREVCVUdf S01TKCJObyB2YWxpZCBpbnRlcm1lZGlhdGUgcGlwZSB3YXRlcm1hcmtzIGFyZSBwb3NzaWJsZVxu Iik7Cj4gKwkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAtCQl9Cj4gIAl9Cj4gIAo+ICAJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiBAQCAtMTM1NjIsNyArMTM1MDEsNiBA QCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlOwo+ICAJ aW50IHJldCA9IDAsIGk7Cj4gIAlib29sIGh3X2NoZWNrID0gaW50ZWxfc3RhdGUtPm1vZGVzZXQ7 Cj4gIAo+IEBAIC0xMzY2MiwyMCArMTM2MDAsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19j b21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOwo+ICAKPiAtCS8qCj4gLQkgKiBOb3cgdGhhdCB0 aGUgdmJsYW5rIGhhcyBwYXNzZWQsIHdlIGNhbiBnbyBhaGVhZCBhbmQgcHJvZ3JhbSB0aGUKPiAt CSAqIG9wdGltYWwgd2F0ZXJtYXJrcyBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIHR3by1zdGVwIHdh dGVybWFyawo+IC0JICogcHJvZ3JhbW1pbmcuCj4gLQkgKgo+IC0JICogVE9ETzogTW92ZSB0aGlz IChhbmQgb3RoZXIgY2xlYW51cCkgdG8gYW4gYXN5bmMgd29ya2VyIGV2ZW50dWFsbHkuCj4gLQkg Ki8KPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkp IHsKPiAtCQlpbnRlbF9jc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK PiAtCj4gLQkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MpCj4gLQkJ CWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MoaW50ZWxfY3N0YXRlKTsKPiAt CX0KPiAtCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC0xNTM0Miw3ICsxNTI2Niw3IEBAIHN0YXRpYyB2b2lkIHNh bml0aXplX3dhdGVybWFya3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWludCBpOwo+ICAK PiAgCS8qIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0aGF0IHVzZSBhdG9taWMgd2F0ZXJt YXJrIGRlc2lnbiAqLwo+IC0JaWYgKCFkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1h cmtzKQo+ICsJaWYgKCFkZXZfcHJpdi0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MpCj4gIAkJ cmV0dXJuOwo+ICAKPiAgCS8qCj4gQEAgLTE1MzYzLDEzICsxNTI4Nyw2IEBAIHJldHJ5Ogo+ICAJ aWYgKFdBUk5fT04oSVNfRVJSKHN0YXRlKSkpCj4gIAkJZ290byBmYWlsOwo+ICAKPiAtCS8qCj4g LQkgKiBIYXJkd2FyZSByZWFkb3V0IGlzIHRoZSBvbmx5IHRpbWUgd2UgZG9uJ3Qgd2FudCB0byBj YWxjdWxhdGUKPiAtCSAqIGludGVybWVkaWF0ZSB3YXRlcm1hcmtzIChzaW5jZSB3ZSBkb24ndCB0 cnVzdCB0aGUgY3VycmVudAo+IC0JICogd2F0ZXJtYXJrcykuCj4gLQkgKi8KPiAtCXRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSktPnNraXBfaW50ZXJtZWRpYXRlX3dtID0gdHJ1ZTsKPiAtCj4g IAlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4gIAlpZiAocmV0KSB7Cj4g IAkJLyoKPiBAQCAtMTUzOTIsOCArMTUzMDksNyBAQCByZXRyeToKPiAgCWZvcl9lYWNoX2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKPiAgCj4gLQkJY3MtPndt Lm5lZWRfcG9zdHZibF91cGRhdGUgPSB0cnVlOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5Lm9wdGlt aXplX3dhdGVybWFya3MoY3MpOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJt YXJrcyhjcyk7Cj4gIAl9Cj4gIAo+ICAJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDA1OWI0NmUuLjE1OTE3ZTMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNjAsMTIgKzI2MCw2IEBAIHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgewo+ICAKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcg c2hhcmVkX2RwbGxbSTkxNV9OVU1fUExMU107Cj4gIAlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIHdt X2NvbmZpZzsKPiAtCj4gLQkvKgo+IC0JICogQ3VycmVudCB3YXRlcm1hcmtzIGNhbid0IGJlIHRy dXN0ZWQgZHVyaW5nIGhhcmR3YXJlIHJlYWRvdXQsIHNvCj4gLQkgKiBkb24ndCBib3RoZXIgY2Fs Y3VsYXRpbmcgaW50ZXJtZWRpYXRlIHdhdGVybWFya3MuCj4gLQkgKi8KPiAtCWJvb2wgc2tpcF9p bnRlcm1lZGlhdGVfd207Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewo+ IEBAIC01MTMsMjkgKzUwNywxMyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gIAo+ICAJ c3RydWN0IHsKPiAgCQkvKgo+IC0JCSAqIE9wdGltYWwgd2F0ZXJtYXJrcywgcHJvZ3JhbW1lZCBw b3N0LXZibGFuayB3aGVuIHRoaXMgc3RhdGUKPiAtCQkgKiBpcyBjb21taXR0ZWQuCj4gKwkJICog b3B0aW1hbCB3YXRlcm1hcmtzLCBwcm9ncmFtbWVkIHBvc3QtdmJsYW5rIHdoZW4gdGhpcyBzdGF0 ZQo+ICsJCSAqIGlzIGNvbW1pdHRlZAo+ICAJCSAqLwo+ICAJCXVuaW9uIHsKPiAgCQkJc3RydWN0 IGludGVsX3BpcGVfd20gaWxrOwo+ICAJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gc2tsOwo+ICAJCX0g b3B0aW1hbDsKPiAtCj4gLQkJLyoKPiAtCQkgKiBJbnRlcm1lZGlhdGUgd2F0ZXJtYXJrczsgdGhl c2UgY2FuIGJlIHByb2dyYW1tZWQgaW1tZWRpYXRlbHkKPiAtCQkgKiBzaW5jZSB0aGV5IHNhdGlz ZnkgYm90aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJ3JlCj4gLQkJICogc3dpdGNoaW5n IGF3YXkgZnJvbSBhbmQgdGhlIG5ldyBjb25maWd1cmF0aW9uIHdlJ3JlIHN3aXRjaGluZwo+IC0J CSAqIHRvLgo+IC0JCSAqLwo+IC0JCXN0cnVjdCBpbnRlbF9waXBlX3dtIGludGVybWVkaWF0ZTsK PiAtCj4gLQkJLyoKPiAtCQkgKiBQbGF0Zm9ybXMgd2l0aCB0d28tc3RlcCB3YXRlcm1hcmsgcHJv Z3JhbW1pbmcgd2lsbCBuZWVkIHRvCj4gLQkJICogdXBkYXRlIHdhdGVybWFyayBwcm9ncmFtbWlu ZyBwb3N0LXZibGFuayB0byBzd2l0Y2ggZnJvbSB0aGUKPiAtCQkgKiBzYWZlIGludGVybWVkaWF0 ZSB3YXRlcm1hcmtzIHRvIHRoZSBvcHRpbWFsIGZpbmFsCj4gLQkJICogd2F0ZXJtYXJrcy4KPiAt CQkgKi8KPiAtCQlib29sIG5lZWRfcG9zdHZibF91cGRhdGU7Cj4gIAl9IHdtOwo+ICB9Owo+ICAK PiBAQCAtNjIyLDcgKzYwMCw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAgCQkJc3RydWN0IGlu dGVsX3BpcGVfd20gaWxrOwo+ICAJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gc2tsOwo+ICAJCX0gYWN0 aXZlOwo+IC0KPiAgCQkvKiBhbGxvdyBDeFNSIG9uIHRoaXMgcGlwZSAqLwo+ICAJCWJvb2wgY3hz cl9hbGxvd2VkOwo+ICAJfSB3bTsKPiBAQCAtMTU4Myw3ICsxNTYwLDYgQEAgdm9pZCBza2xfd21f Z2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIHNrbF9kZGJfZ2V0 X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBzdHJ1 Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKPiAgdWludDMyX3QgaWxrX3Bp cGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Owo+IC1ib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAK PiAgLyogaW50ZWxfc2R2by5jICovCj4gIGJvb2wgaW50ZWxfc2R2b19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggNmIyYjNlMy4uYWQz OTNhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yMjczLDI5ICsyMjczLDYg QEAgc3RhdGljIHZvaWQgc2tsX3NldHVwX3dtX2xhdGVuY3koc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2LCAiR2VuOSBQbGFuZSIsIGRldl9wcml2 LT53bS5za2xfbGF0ZW5jeSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGlsa192YWxpZGF0ZV9w aXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgc3RydWN0IGludGVsX3BpcGVf d20gKnBpcGVfd20pCj4gLXsKPiAtCS8qIExQMCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5kIG9u IHRoaXMgcGlwZSBhbG9uZSAqLwo+IC0JY29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25m aWcgPSB7Cj4gLQkJLm51bV9waXBlc19hY3RpdmUgPSAxLAo+IC0JCS5zcHJpdGVzX2VuYWJsZWQg PSBwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQsCj4gLQkJLnNwcml0ZXNfc2NhbGVkID0gcGlwZV93 bS0+c3ByaXRlc19zY2FsZWQsCj4gLQl9Owo+IC0Jc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7 Cj4gLQo+IC0JLyogTFAwIHdhdGVybWFya3MgYWx3YXlzIHVzZSAxLzIgRERCIHBhcnRpdGlvbmlu ZyAqLwo+IC0JaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAwLCAmY29uZmlnLCBJTlRFTF9E REJfUEFSVF8xXzIsICZtYXgpOwo+IC0KPiAtCS8qIEF0IGxlYXN0IExQMCBtdXN0IGJlIHZhbGlk ICovCj4gLQlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZlbCgwLCAmbWF4LCAmcGlwZV93bS0+d21b MF0pKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiTFAwIHdhdGVybWFyayBpbnZhbGlkXG4iKTsKPiAt CQlyZXR1cm4gZmFsc2U7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gIC8q IENvbXB1dGUgbmV3IHdhdGVybWFya3MgZm9yIHRoZSBwaXBlICovCj4gIHN0YXRpYyBpbnQgaWxr X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQkJICAg ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiBAQCAtMjMxMCw2ICsyMjg3LDEw IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Byc3RhdGUgPSBOVUxMOwo+ ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7Cj4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiArCS8qIExQMCB3YXRlcm1h cmsgbWF4aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlwZSBhbG9uZSAqLwo+ICsJc3RydWN0IGludGVs X3dtX2NvbmZpZyBjb25maWcgPSB7Cj4gKwkJLm51bV9waXBlc19hY3RpdmUgPSAxLAo+ICsJfTsK PiAgCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4Owo+ICAKPiAgCWNzdGF0ZSA9IGludGVsX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gQEAgLTIzMzMsMTggKzIz MTQsMjEgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAo+ICAJCQljdXJzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzKTsK PiAgCX0KPiAgCj4gLQlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0aXZl Owo+IC0JcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4gLQlw aXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRlLT52aXNpYmxlICYmCj4gKwljb25maWcu c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4gKwljb25maWcuc3ByaXRlc19z Y2FsZWQgPSBzcHJzdGF0ZS0+dmlzaWJsZSAmJgo+ICAJCShkcm1fcmVjdF93aWR0aCgmc3Byc3Rh dGUtPmRzdCkgIT0gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5zcmMpID4+IDE2IHx8Cj4gIAkJ ZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+ZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0 YXRlLT5zcmMpID4+IDE2KTsKPiAgCj4gKwlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUt PmJhc2UuYWN0aXZlOwo+ICsJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gY29uZmlnLnNwcml0 ZXNfZW5hYmxlZDsKPiArCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gY29uZmlnLnNwcml0ZXNf c2NhbGVkOwo+ICsKPiAgCS8qIElMSy9TTkI6IExQMisgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzcHJp dGVzICovCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNiAmJiBzcHJzdGF0ZS0+dmlz aWJsZSkKPiAgCQltYXhfbGV2ZWwgPSAxOwo+ICAKPiAgCS8qIElMSy9TTkIvSVZCOiBMUDErIHdh dGVybWFya3Mgb25seSB3L28gc2NhbGluZyAqLwo+IC0JaWYgKHBpcGVfd20tPnNwcml0ZXNfc2Nh bGVkKQo+ICsJaWYgKGNvbmZpZy5zcHJpdGVzX3NjYWxlZCkKPiAgCQltYXhfbGV2ZWwgPSAwOwo+ ICAKPiAgCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCAwLCBjc3Rh dGUsCj4gQEAgLTIzNTMsOCArMjMzNywxMiBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVf d20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAlpZiAoSVNfSEFTV0VMTChkZXYp IHx8IElTX0JST0FEV0VMTChkZXYpKQo+ICAJCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2NvbXB1 dGVfbGluZXRpbWVfd20oZGV2LCBjc3RhdGUpOwo+ICAKPiAtCWlmICghaWxrX3ZhbGlkYXRlX3Bp cGVfd20oZGV2LCBwaXBlX3dtKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkvKiBMUDAgd2F0ZXJt YXJrcyBhbHdheXMgdXNlIDEvMiBEREIgcGFydGl0aW9uaW5nICovCj4gKwlpbGtfY29tcHV0ZV93 bV9tYXhpbXVtcyhkZXYsIDAsICZjb25maWcsIElOVEVMX0REQl9QQVJUXzFfMiwgJm1heCk7Cj4g Kwo+ICsJLyogQXQgbGVhc3QgTFAwIG11c3QgYmUgdmFsaWQgKi8KPiArCWlmICghaWxrX3ZhbGlk YXRlX3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gIAo+ICAJaWxrX2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRldiwgMSwgJm1heCk7Cj4g IAo+IEBAIC0yMzc5LDU5ICsyMzY3LDYgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dt KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICB9Cj4gIAo+ICAvKgo+IC0gKiBCdWls ZCBhIHNldCBvZiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmsgdmFsdWVzIHRoYXQgc2F0aXNmeSBi b3RoIHRoZSBvbGQKPiAtICogc3RhdGUgYW5kIHRoZSBuZXcgc3RhdGUuICBUaGVzZSBjYW4gYmUg cHJvZ3JhbW1lZCB0byB0aGUgaGFyZHdhcmUKPiAtICogaW1tZWRpYXRlbHkuCj4gLSAqLwo+IC1z dGF0aWMgaW50IGlsa19jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+IC0JCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSkKPiAtewo+IC0Jc3RydWN0 IGludGVsX3BpcGVfd20gKmEgPSAmbmV3c3RhdGUtPndtLmludGVybWVkaWF0ZTsKPiAtCXN0cnVj dCBpbnRlbF9waXBlX3dtICpiID0gJmludGVsX2NydGMtPndtLmFjdGl2ZS5pbGs7Cj4gLQlpbnQg bGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiAtCj4gLQkvKgo+IC0J ICogU3RhcnQgd2l0aCB0aGUgZmluYWwsIHRhcmdldCB3YXRlcm1hcmtzLCB0aGVuIGNvbWJpbmUg d2l0aCB0aGUKPiAtCSAqIGN1cnJlbnRseSBhY3RpdmUgd2F0ZXJtYXJrcyB0byBnZXQgdmFsdWVz IHRoYXQgYXJlIHNhZmUgYm90aCBiZWZvcmUKPiAtCSAqIGFuZCBhZnRlciB0aGUgdmJsYW5rLgo+ IC0JICovCj4gLQkqYSA9IG5ld3N0YXRlLT53bS5vcHRpbWFsLmlsazsKPiAtCWEtPnBpcGVfZW5h YmxlZCB8PSBiLT5waXBlX2VuYWJsZWQ7Cj4gLQlhLT5zcHJpdGVzX2VuYWJsZWQgfD0gYi0+c3By aXRlc19lbmFibGVkOwo+IC0JYS0+c3ByaXRlc19zY2FsZWQgfD0gYi0+c3ByaXRlc19zY2FsZWQ7 Cj4gLQo+IC0JZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ IC0JCXN0cnVjdCBpbnRlbF93bV9sZXZlbCAqYV93bSA9ICZhLT53bVtsZXZlbF07Cj4gLQkJY29u c3Qgc3RydWN0IGludGVsX3dtX2xldmVsICpiX3dtID0gJmItPndtW2xldmVsXTsKPiAtCj4gLQkJ YV93bS0+ZW5hYmxlICY9IGJfd20tPmVuYWJsZTsKPiAtCQlhX3dtLT5wcmlfdmFsID0gbWF4KGFf d20tPnByaV92YWwsIGJfd20tPnByaV92YWwpOwo+IC0JCWFfd20tPnNwcl92YWwgPSBtYXgoYV93 bS0+c3ByX3ZhbCwgYl93bS0+c3ByX3ZhbCk7Cj4gLQkJYV93bS0+Y3VyX3ZhbCA9IG1heChhX3dt LT5jdXJfdmFsLCBiX3dtLT5jdXJfdmFsKTsKPiAtCQlhX3dtLT5mYmNfdmFsID0gbWF4KGFfd20t PmZiY192YWwsIGJfd20tPmZiY192YWwpOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBXZSBuZWVk IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIG1lcmdlZCB3YXRlcm1hcmsgdmFsdWVzIGFyZQo+IC0J ICogYWN0dWFsbHkgYSB2YWxpZCBjb25maWd1cmF0aW9uIHRoZW1zZWx2ZXMuICBJZiB0aGV5J3Jl IG5vdCwKPiAtCSAqIHRoZXJlJ3Mgbm8gc2FmZSB3YXkgdG8gdHJhbnNpdGlvbiBmcm9tIHRoZSBv bGQgc3RhdGUgdG8KPiAtCSAqIHRoZSBuZXcgc3RhdGUsIHNvIHdlIG5lZWQgdG8gZmFpbCB0aGUg YXRvbWljIHRyYW5zYWN0aW9uLgo+IC0JICovCj4gLQlpZiAoIWlsa192YWxpZGF0ZV9waXBlX3dt KGRldiwgYSkpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JLyoKPiAtCSAqIElmIG91ciBp bnRlcm1lZGlhdGUgV00gYXJlIGlkZW50aWNhbCB0byB0aGUgZmluYWwgV00sIHRoZW4gd2UgY2Fu Cj4gLQkgKiBvbWl0IHRoZSBwb3N0LXZibGFuayBwcm9ncmFtbWluZzsgb25seSB1cGRhdGUgaWYg aXQncyBkaWZmZXJlbnQuCj4gLQkgKi8KPiAtCWlmIChtZW1jbXAoYSwgJm5ld3N0YXRlLT53bS5v cHRpbWFsLmlsaywgc2l6ZW9mKCphKSkgIT0gMCkKPiAtCQluZXdzdGF0ZS0+d20ubmVlZF9wb3N0 dmJsX3VwZGF0ZSA9IGZhbHNlOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC0vKgo+ICAg KiBNZXJnZSB0aGUgd2F0ZXJtYXJrcyBmcm9tIGFsbCBhY3RpdmUgcGlwZXMgZm9yIGEgc3BlY2lm aWMgbGV2ZWwuCj4gICAqLwo+ICBzdGF0aWMgdm9pZCBpbGtfbWVyZ2Vfd21fbGV2ZWwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtMjQ0Myw3ICsyMzc4LDkgQEAgc3RhdGljIHZvaWQgaWxr X21lcmdlX3dtX2xldmVsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXRfd20tPmVuYWJs ZSA9IHRydWU7Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGludGVsX2NydGMpIHsK PiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZlID0gJmludGVsX2NydGMtPndt LmFjdGl2ZS5pbGs7Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9 Cj4gKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gKwkJ Y29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndtLm9wdGltYWwu aWxrOwo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqd20gPSAmYWN0aXZlLT53bVts ZXZlbF07Cj4gIAo+ICAJCWlmICghYWN0aXZlLT5waXBlX2VuYWJsZWQpCj4gQEAgLTI1OTEsMTQg KzI1MjgsMTUgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAKPiAgCS8qIExQMCByZWdpc3RlciB2YWx1ZXMgKi8KPiAgCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSA9Cj4gKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0 Yy0+YmFzZS5zdGF0ZSk7Cj4gIAkJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqciA9Cj4gLQkJCSZpbnRlbF9jcnRjLT53 bS5hY3RpdmUuaWxrLndtWzBdOwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqciA9 ICZjc3RhdGUtPndtLm9wdGltYWwuaWxrLndtWzBdOwo+ICAKPiAgCQlpZiAoV0FSTl9PTighci0+ ZW5hYmxlKSkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCXJlc3VsdHMtPndtX2xpbmV0aW1lW3Bp cGVdID0gaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsay5saW5ldGltZTsKPiArCQlyZXN1bHRzLT53 bV9saW5ldGltZVtwaXBlXSA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGsubGluZXRpbWU7Cj4gIAo+ ICAJCXJlc3VsdHMtPndtX3BpcGVbcGlwZV0gPQo+ICAJCQkoci0+cHJpX3ZhbCA8PCBXTTBfUElQ RV9QTEFORV9TSElGVCkgfAo+IEBAIC0yODA1LDcgKzI3NDMsNyBAQCBzdGF0aWMgdm9pZCBpbGtf d3JpdGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWRl dl9wcml2LT53bS5odyA9ICpyZXN1bHRzOwo+ICB9Cj4gIAo+IC1ib29sIGlsa19kaXNhYmxlX2xw X3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBib29sIGlsa19kaXNhYmxlX2xw X3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+IEBAIC0zNjk4LDkgKzM2MzYs MTEgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFy a3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBpbGtf cHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICsJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX3BpcGVfd20gbHBfd21fMV8yID0ge30sIGxw X3dtXzVfNiA9IHt9LCAqYmVzdF9scF93bTsKPiAgCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4 Owo+ICAJc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcgPSB7fTsKPiBAQCAtMzczMSwyOCAr MzY3MSwyOCBAQCBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlsa193cml0ZV93bV92YWx1ZXMoZGV2X3ByaXYs ICZyZXN1bHRzKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaWxrX2luaXRpYWxfd2F0ZXJtYXJr cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ICtzdGF0aWMgdm9pZCBpbGtfdXBk YXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiAtCWlu dGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSBjc3RhdGUtPndtLmludGVybWVkaWF0ZTsKPiAtCWls a19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+d20ud21fbXV0ZXgpOwo+IC19Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl ID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+IC1zdGF0aWMgdm9pZCBp bGtfb3B0aW1pemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNzdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKPiArCVdBUk5fT04oY3N0YXRlLT5iYXNl LmFjdGl2ZSAhPSBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9w cml2LT53bS53bV9tdXRleCk7Cj4gLQlpZiAoY3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRl KSB7Cj4gLQkJaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5p bGs7Cj4gLQkJaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7Cj4gKwkvKgo+ICsJICog SVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYXQg bGVhc3QKPiArCSAqIG9uZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcgc2NhbGluZy4gIExQIHdhdGVy bWFya3MgY2FuIGJlIHJlLWVuYWJsZWQKPiArCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4K PiArCSAqCj4gKwkgKiBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiCj4gKwkgKi8K PiArCWlmIChjc3RhdGUtPmRpc2FibGVfbHBfd20pIHsKPiArCQlpbGtfZGlzYWJsZV9scF93bShj cnRjLT5kZXYpOwo+ICsJCWludGVsX3dhaXRfZm9yX3ZibGFuayhjcnRjLT5kZXYsIGludGVsX2Ny dGMtPnBpcGUpOwo+ICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgp Owo+ICsKPiArCWludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSBjc3RhdGUtPndtLm9wdGltYWwu aWxrOwo+ICsKPiArCWlsa19wcm9ncmFtX3dhdGVybWFya3MoY3N0YXRlKTsKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQgc2tsX3BpcGVfd21fYWN0aXZlX3N0YXRlKHVpbnQzMl90IHZhbCwKPiBAQCAt NzA3OSwxMyArNzAxOSw5IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzFdICYmIGRldl9wcml2LT53 bS5jdXJfbGF0ZW5jeVsxXSkgfHwKPiAgCQkgICAgKCFJU19HRU41KGRldikgJiYgZGV2X3ByaXYt PndtLnByaV9sYXRlbmN5WzBdICYmCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lb MF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+ICsJCQlkZXZfcHJpdi0+ZGlz cGxheS51cGRhdGVfd20gPSBpbGtfdXBkYXRlX3dtOwo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5j b21wdXRlX3BpcGVfd20gPSBpbGtfY29tcHV0ZV9waXBlX3dtOwo+IC0JCQlkZXZfcHJpdi0+ZGlz cGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bSA9Cj4gLQkJCQlpbGtfY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd207Cj4gLQkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyA9Cj4g LQkJCQlpbGtfaW5pdGlhbF93YXRlcm1hcmtzOwo+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5vcHRp bWl6ZV93YXRlcm1hcmtzID0KPiAtCQkJCWlsa19vcHRpbWl6ZV93YXRlcm1hcmtzOwo+ICsJCQlk ZXZfcHJpdi0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MgPSBpbGtfcHJvZ3JhbV93YXRlcm1h cmtzOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIGRp c3BsYXkgcGxhbmUgbGF0ZW5jeS4gIgo+ICAJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7Cj4g LS0gCj4gMi4xLjQKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRl bCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=