From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH] drm/i915: Add two-stage ILK-style watermark programming (v11) Date: Thu, 25 Feb 2016 08:48:20 -0800 Message-ID: <20160225164820.GA23428@intel.com> References: <1456276813-5689-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A0736E678 for ; Thu, 25 Feb 2016 16:48:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1456276813-5689-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SSBuZXZlciBnb3QgYSBDSSBlbWFpbCBmb3IgdGhpcyAocHJvYmFibHkgYmVjYXVzZSBmZG8gd2Fz IGRvd24gZm9yIGEgd2hpbGUpLApidXQgSSBjYW4gc2VlIHRoZSByZXN1bHRzIGJlbG93IGluIHBh dGNod29yawoKPiAgVGVzdCBnZW1fY3NfcHJlZmV0Y2g6Cj4gICAgICAgICAgU3ViZ3JvdXAgYmFz aWMtZGVmYXVsdDoKPiAgICAgICAgICAgICAgICAgIGluY29tcGxldGUgLT4gUEFTUyAgICAgICAo aWxrLWhwODQ0MHApCj4gIFRlc3Qga21zX2ZsaXA6Cj4gICAgICAgICAgU3ViZ3JvdXAgYmFzaWMt ZmxpcC12cy1kcG1zOgo+ICAgICAgICAgICAgICAgICAgcGFzcyAgICAgICAtPiBETUVTRy1XQVJO IChpbGstaHA4NDQwcCkgVU5TVEFCTEUKClByZS1leGlzdGluZyB3YXRlcm1hcmsgYnVnIGhlcmU6 CiAgICAgICAgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM3 ODcKCkkgaGFkIGhvcGVkIHRoaXMgcGF0Y2ggbWlnaHQgYWxzbyBmaXggdGhhdCBwcm9ibGVtLCBi dXQgSSBndWVzcyBmdXJ0aGVyCmludmVzdGlnYXRpb24gd2lsbCBiZSBuZWVkZWQ7IGl0IHNlZW1z IHRvIGJlIHNvbWV0aGluZyB2ZXJ5CklMSy1zcGVjaWZpYywgbm90IHNlZW4gb24gU05CLCBJVkIs IGV0Yy4KCgo+ICBUZXN0IGttc19mb3JjZV9jb25uZWN0b3JfYmFzaWM6Cj4gICAgICAgICAgU3Vi Z3JvdXAgZm9yY2UtZWRpZDoKPiAgICAgICAgICAgICAgICAgIHNraXAgICAgICAgLT4gUEFTUyAg ICAgICAoc25iLXgyMjB0KQo+ICAgICAgICAgICAgICAgICAgcGFzcyAgICAgICAtPiBTS0lQICAg ICAgIChpdmItdDQzMHMpCgpQcmUtZXhpc3Rpbmc6CiAgICAgICAgaHR0cHM6Ly9idWdzLmZyZWVk ZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM3NjkKCj4gICAgICAgICAgU3ViZ3JvdXAgZm9y Y2UtbG9hZC1kZXRlY3Q6Cj4gICAgICAgICAgICAgICAgICBkbWVzZy1mYWlsIC0+IEZBSUwgICAg ICAgKHNuYi14MjIwdCkKPiAgICAgICAgICAgICAgICAgIGRtZXNnLWZhaWwgLT4gRkFJTCAgICAg ICAoaHN3LWd0MikKClRoZSBkbWVzZyB3YXJuaW5nIGlzIGdvbmUgbm93IChhIGxvY2tpbmcgd2Fy bmluZyB0aGF0IEkgZG9uJ3QgdGhpbmsgbXkKcGF0Y2ggc2hvdWxkIGhhdmUgYWZmZWN0ZWQpOyB0 aGUgcmVtYWluaW5nIHRlc3QgZmFpbHVyZSBpcyBpZGVudGljYWwgdG8Kd2hhdCBpdCB3YXMgYmVm b3JlICh0ZW1wLT5jb25uZWN0aW9uICE9IERSTV9NT0RFX1VOS05PV05DT05ORUNUSU9OKSBhbmQK dW5yZWxhdGVkLgoKSSBkb24ndCBzZWUgYSBidWd6aWxsYSBmb3IgdGhpcywgd2hpY2ggc2VlbXMg c3RyYW5nZSBzaW5jZSBpdCdzIGEKcHJlLWV4aXN0aW5nIGRlZmVjdC4gIEFtIEkgb3Zlcmxvb2tp bmcgaXQgb3IgZG8gSSBuZWVkIHRvIGZpbGUgYSBuZXcKb25lPwoKPiAgICAgICAgICAgICAgICAg IGZhaWwgICAgICAgLT4gU0tJUCAgICAgICAoaWxrLWhwODQ0MHApCgpOb3Qgc3VyZSB3aGF0IGlz IGFjdHVhbGx5IHBsdWdnZWQgaW50byB0aGUgQ0kgbWFjaGluZSwgc28gdGhlIHNraXAgbWF5CmJl IGxlZ2l0aW1hdGUvZXhwZWN0ZWQ/ICBEb2Vzbid0IHNlZW0gcmVsYXRlZCB0byBhbnl0aGluZyBp biBteSBwYXRjaAphbnl3YXkuCgo+ICBUZXN0IGttc19waXBlX2NyY19iYXNpYzoKPiAgICAgICAg ICBTdWJncm91cCBzdXNwZW5kLXJlYWQtY3JjLXBpcGUtYzoKPiAgICAgICAgICAgICAgICAgIHBh c3MgICAgICAgLT4gRE1FU0ctV0FSTiAoYnN3LW51Yy0yKQoKVGhpcyBvbmUgd2FzIGhhcHBlbmlu ZyBzcG9yYWRpY2FsbHkgYmVmb3JlIG15IHBhdGNoOyBJIHRoaW5rIGl0J3MgdGhlCnNhbWUgYnVn IGZpbGVkIGhlcmU6CgogIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTk0MTY0CgpJJ2xsIHVwZGF0ZSB0aGUgYnVnemlsbGEgdG8gaW5kaWNhdGUgaXQgYWxzbyBo YXBwZW5zIG9uIHRoaXMgdGVzdC4KCj4gIFRlc3QgcG1fcnBtOgo+ICAgICAgICAgIFN1Ymdyb3Vw IGJhc2ljLXJ0ZToKPiAgICAgICAgICAgICAgICAgIHBhc3MgICAgICAgLT4gRE1FU0ctV0FSTiAo YnN3LW51Yy0yKQo+ICAgICAgICAgICAgICAgICAgZmFpbCAgICAgICAtPiBQQVNTICAgICAgICho c3ctYnJpeGJveCkKClNhbWUgYnVnIG1lbnRpb25lZCBhYm92ZSAoOTQxNjQpCgoKCk1hdHQKCgpP biBUdWUsIEZlYiAyMywgMjAxNiBhdCAwNToyMDoxM1BNIC0wODAwLCBNYXR0IFJvcGVyIHdyb3Rl Ogo+IEluIGFkZGl0aW9uIHRvIGNhbGN1bGF0aW5nIGZpbmFsIHdhdGVybWFya3MsIGxldCdzIGFs c28gcHJlLWNhbGN1bGF0ZSBhCj4gc2V0IG9mIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgdmFsdWVz IGF0IGF0b21pYyBjaGVjayB0aW1lLiAgVGhlc2UKPiBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcyBh cmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgd2F0ZXJtYXJrcyBmb3IgdGhlIG9sZAo+IHN0YXRlIGFu ZCB0aGUgbmV3IHN0YXRlOyB0aGV5IHNob3VsZCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgb2Yg Ym90aAo+IHN0YXRlcyB3aGljaCBtZWFucyB0aGV5IGNhbiBiZSBwcm9ncmFtbWVkIGltbWVkaWF0 ZWx5IHdoZW4gd2UgY29tbWl0IHRoZQo+IGF0b21pYyBzdGF0ZSAod2l0aG91dCB3YWl0aW5nIGZv ciBhIHZibGFuaykuICBPbmNlIHRoZSB2YmxhbmsgZG9lcwo+IGhhcHBlbiwgd2UgY2FuIHRoZW4g cmUtcHJvZ3JhbSB3YXRlcm1hcmtzIHRvIHRoZSBtb3JlIG9wdGltYWwgZmluYWwKPiB2YWx1ZS4K PiAKPiB2MjogU2lnbmlmaWNhbnQgcmViYXNpbmcvcmV3cml0aW5nLgo+IAo+IHYzOgo+ICAtIE1v dmUgJ25lZWRfcG9zdHZibF91cGRhdGUnIGZsYWcgdG8gQ1JUQyBzdGF0ZSAoRGFuaWVsKQo+ICAt IERvbid0IGZvcmdldCB0byBjaGVjayBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrIHZhbHVlcyBmb3Ig dmFsaWRpdHkKPiAgICAoTWFhcnRlbikKPiAgLSBEb24ndCBkdWUgYXN5bmMgd2F0ZXJtYXJrIG9w dGltaXphdGlvbjsganVzdCBkbyBpdCBhdCB0aGUgZW5kIG9mIHRoZQo+ICAgIGF0b21pYyB0cmFu c2FjdGlvbiwgYWZ0ZXIgd2FpdGluZyBmb3IgdmJsYW5rcy4gIFdlIGRvIHdhbnQgaXQgdG8gYmUK PiAgICBhc3luYyBldmVudHVhbGx5LCBidXQgYWRkaW5nIHRoYXQgbm93IHdpbGwgY2F1c2UgbW9y ZSB0cm91YmxlIGZvcgo+ICAgIE1hYXJ0ZW4ncyBpbi1wcm9ncmVzcyB3b3JrLiAgKE1hYXJ0ZW4p Cj4gIC0gRG9uJ3QgYWxsb2NhdGUgc3BhY2UgaW4gY3J0Y19zdGF0ZSBmb3IgaW50ZXJtZWRpYXRl IHdhdGVybWFya3Mgb24KPiAgICBwbGF0Zm9ybXMgdGhhdCBkb24ndCBuZWVkIGl0IChnZW45Kyku Cj4gIC0gTW92ZSBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiIGludG8gaW50ZWxf YmVnaW5fY3J0Y19jb21taXQKPiAgICBub3cgdGhhdCBpbGtfdXBkYXRlX3dtIGlzIGdvbmUuCj4g Cj4gdjQ6Cj4gIC0gQWRkIGEgd21fbXV0ZXggdG8gY292ZXIgdXBkYXRlcyB0byBpbnRlbF9jcnRj LT5hY3RpdmUgYW5kIHRoZQo+ICAgIG5lZWRfcG9zdHZibF91cGRhdGUgZmxhZy4gIFNpbmNlIHdl IGRvbid0IGhhdmUgYXN5bmMgeWV0IGl0IGlzbid0Cj4gICAgdGVycmlibHkgaW1wb3J0YW50IHll dCwgYnV0IG1pZ2h0IGFzIHdlbGwgYWRkIGl0IG5vdy4KPiAgLSBDaGFuZ2UgaW50ZXJmYWNlIHRv IHByb2dyYW0gd2F0ZXJtYXJrcy4gIFBsYXRmb3JtcyB3aWxsIG5vdyBleHBvc2UKPiAgICAuaW5p dGlhbF93YXRlcm1hcmtzKCkgYW5kIC5vcHRpbWl6ZV93YXRlcm1hcmtzKCkgZnVuY3Rpb25zIHRv IGRvCj4gICAgd2F0ZXJtYXJrIHByb2dyYW1taW5nLiAgVGhlc2Ugc2hvdWxkIGxvY2sgd21fbXV0 ZXgsIGNvcHkgdGhlCj4gICAgYXBwcm9wcmlhdGUgc3RhdGUgdmFsdWVzIGludG8gaW50ZWxfY3J0 Yy0+YWN0aXZlLCBhbmQgdGhlbiBjYWxsCj4gICAgdGhlIGludGVybmFsIHByb2dyYW0gd2F0ZXJt YXJrcyBmdW5jdGlvbi4KPiAKPiB2NToKPiAgLSBTa2lwIGludGVybWVkaWF0ZSB3YXRlcm1hcmsg Y2FsY3VsYXRpb24vY2hlY2sgZHVyaW5nIGluaXRpYWwgaGFyZHdhcmUKPiAgICByZWFkb3V0IHNp bmNlIHdlIGRvbid0IHRydXN0IHRoZSBleGlzdGluZyBIVyB2YWx1ZXMgKGFuZCBkb24ndCBoYXZl Cj4gICAgdmFsaWQgdmFsdWVzIG9mIG91ciBvd24geWV0KS4KPiAgLSBEb24ndCB0cnkgdG8gY2Fs bCAub3B0aW1pemVfd2F0ZXJtYXJrcygpIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUKPiAg ICBhdG9taWMgd2F0ZXJtYXJrcyB5ZXQuICAoTWFhcnRlbikKPiAKPiB2NjoKPiAgLSBSZWJhc2UK PiAKPiB2NzoKPiAgLSBGdXJ0aGVyIHJlYmFzZQo+IAo+IHY4Ogo+ICAtIEEgZmV3IG1pbm9yIGlu ZGVudGF0aW9uIGFuZCBsaW5lIGxlbmd0aCBmaXhlcwo+IAo+IHY5Ogo+ICAtIFlldCBhbm90aGVy IHJlYmFzZSBzaW5jZSBNYWFydGVuJ3MgcGF0Y2hlcyByZXdvcmtlZCBhIGJ1bmNoIG9mIHRoZQo+ ICAgIGNvZGUgKHdtX3ByZSwgd21fcG9zdCwgZXRjLikgdGhhdCB0aGlzIHdhcyBwcmV2aW91c2x5 IGJhc2VkIG9uLgo+IAo+IHYxMDoKPiAgLSBNb3ZlIHdtX211dGV4IHRvIGRldl9wcml2IHRvIHBy b3RlY3QgYWdhaW5zdCByYWNpbmcgY29tbWl0cyBhZ2FpbnN0Cj4gICAgZGlzam9pbnQgQ1JUQyBz ZXRzLiAoTWFhcnRlbikKPiAgLSBEcm9wIHVubmVjZXNzYXJ5IGNsZWFyaW5nIG9mIGNzdGF0ZS0+ d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSAoTWFhcnRlbikKPiAKPiB2MTE6Cj4gIC0gTm93IHRoYXQg d2UndmUgbW92ZWQgdG8gYXRvbWljIHdhdGVybWFyayB1cGRhdGVzLCBtYWtlIHN1cmUgd2UgY2Fs bAo+ICAgIHRoZSBwcm9wZXIgZnVuY3Rpb24gdG8gcHJvZ3JhbSB3YXRlcm1hcmtzIGluCj4gICAg e2lyb25sYWtlLGhhc3dlbGx9X2NydGNfZW5hYmxlKCk7IHRoZSBmYWlsdXJlIHRvIGRvIHNvIG9u IHRoZQo+ICAgIHByZXZpb3VzIHBhdGNoIGl0ZXJhdGlvbiBsZWQgdG8gdXMgbm90IGFjdHVhbGx5 IHByb2dyYW1taW5nIHRoZQo+ICAgIHdhdGVybWFya3MgYmVmb3JlIHR1cm5pbmcgb24gdGhlIENS VEMsIHdoaWNoIHdhcyB0aGUgY2F1c2Ugb2YgdGhlCj4gICAgdW5kZXJydW5zIHRoYXQgdGhlIENJ IHN5c3RlbSB3YXMgc2VlaW5nLgo+ICAtIEZpeCBpbnZlcnRlZCBsb2dpYyBmb3IgZGV0ZXJtaW5p bmcgd2hlbiB0byBvcHRpbWl6ZSB3YXRlcm1hcmtzLiAgV2UKPiAgICB3ZXJlIG5lZWRsZXNzbHkg b3B0aW1pemluZyB3aGVuIHRoZSBpbnRlcm1lZGlhdGUvb3B0aW1hbCB2YWx1ZXMgd2VyZQo+ICAg IHRoZSBzYW1lIChoYXJtbGVzcyksIGJ1dCBub3QgYWN0dWFsbHkgb3B0aW1pemluZyB3aGVuIHRo ZXkgZGlmZmVyZWQKPiAgICAoYWxzbyBoYXJtbGVzcywgYnV0IHdhc3RlZnVsIGZyb20gYSBwb3dl ci9iYW5kd2lkdGggcGVyc3BlY3RpdmUpLgo+IAo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFh cnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9w ZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICB8ICAxMyArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj LmMgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDk3 ICsrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCAgICAgfCAgMjggKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAg ICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICA2IGZpbGVzIGNo YW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMKPiBpbmRleCAxYzZkMjI3Li4zNmMwY2YxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RtYS5jCj4gQEAgLTEwMTAsNiArMTAxMCw3IEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gIAltdXRleF9pbml0 KCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+bW9kZXNldF9y ZXN0b3JlX2xvY2spOwo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmF2X211dGV4KTsKPiArCW11 dGV4X2luaXQoJmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4gIAo+ICAJcmV0ID0gaTkxNV93b3Jr cXVldWVzX2luaXQoZGV2X3ByaXYpOwo+ICAJaWYgKHJldCA8IDApCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gaW5kZXggOWU3NmJmYy4uY2YxN2Q2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC02MzEsNyArNjMxLDExIEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNz IHsKPiAgCQkJICBzdHJ1Y3QgZHBsbCAqYmVzdF9jbG9jayk7Cj4gIAlpbnQgKCpjb21wdXRlX3Bp cGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgICAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKPiAtCXZvaWQgKCpwcm9ncmFtX3dhdGVybWFya3MpKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpOwo+ICsJaW50ICgqY29tcHV0ZV9pbnRlcm1lZGlh dGVfd20pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICAgc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMsCj4gKwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld3N0YXRlKTsKPiArCXZvaWQgKCppbml0aWFsX3dhdGVybWFya3MpKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjc3RhdGUpOwo+ICsJdm9pZCAoKm9wdGltaXplX3dhdGVybWFya3MpKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpOwo+ICAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0 IGRybV9jcnRjICpjcnRjKTsKPiAgCWludCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAgCXZvaWQgKCptb2Rlc2V0X2NvbW1pdF9jZGNsayko c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiBAQCAtMTk4MCw2ICsxOTg0LDEzIEBA IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCQl9Owo+ICAKPiAgCQl1aW50OF90IG1heF9s ZXZlbDsKPiArCj4gKwkJLyoKPiArCQkgKiBTaG91bGQgYmUgaGVsZCBhcm91bmQgYXRvbWljIFdN IHJlZ2lzdGVyIHdyaXRpbmc7IGFsc28KPiArCQkgKiBwcm90ZWN0cyAqIGludGVsX2NydGMtPndt LmFjdGl2ZSBhbmQKPiArCQkgKiBjc3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUuCj4gKwkJ ICovCj4gKwkJc3RydWN0IG11dGV4IHdtX211dGV4Owo+ICAJfSB3bTsKPiAgCj4gIAlzdHJ1Y3Qg aTkxNV9ydW50aW1lX3BtIHBtOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gaW5k ZXggNDYyNWY4YS4uOTY4MmQ5NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5j Cj4gQEAgLTk3LDYgKzk3LDcgQEAgaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJY3J0Y19zdGF0ZS0+ZGlzYWJsZV9scF93bSA9IGZhbHNlOwo+ICAJ Y3J0Y19zdGF0ZS0+ZGlzYWJsZV9jeHNyID0gZmFsc2U7Cj4gIAljcnRjX3N0YXRlLT53bV9jaGFu Z2VkID0gZmFsc2U7Cj4gKwljcnRjX3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gZmFs c2U7Cj4gIAo+ICAJcmV0dXJuICZjcnRjX3N0YXRlLT5iYXNlOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGRlZWU1NjAuLjQyM2I5OWUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTQ4NDYsNyArNDg0Niw0MiBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSkKPiAgCQkJaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCBmYWxz ZSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFuZWVkc19tb2Rlc2V0KCZwaXBlX2NvbmZpZy0+YmFzZSkg JiYgcGlwZV9jb25maWctPndtX2NoYW5nZWQpCj4gKwkvKgo+ICsJICogSVZCIHdvcmthcm91bmQ6 IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiArCSAqIG9u ZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcgc2NhbGluZy4gIExQIHdhdGVybWFya3MgY2FuIGJlIHJl LWVuYWJsZWQKPiArCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4KPiArCSAqCj4gKwkgKiBX YUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiCj4gKwkgKi8KPiArCWlmIChwaXBlX2Nv bmZpZy0+ZGlzYWJsZV9scF93bSkgewo+ICsJCWlsa19kaXNhYmxlX2xwX3dtKGRldik7Cj4gKwkJ aW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Cj4gKwl9Cj4gKwo+ICsJLyoK PiArCSAqIElmIHdlJ3JlIGRvaW5nIGEgbW9kZXNldCwgd2UncmUgZG9uZS4gIE5vIG5lZWQgdG8g ZG8gYW55IHByZS12YmxhbmsKPiArCSAqIHdhdGVybWFyayBwcm9ncmFtbWluZyBoZXJlLgo+ICsJ ICovCj4gKwlpZiAobmVlZHNfbW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpKQo+ICsJCXJldHVy bjsKPiArCj4gKwkvKgo+ICsJICogRm9yIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgYXRvbWljIHdh dGVybWFya3MsIHByb2dyYW0gdGhlCj4gKwkgKiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmtzIGlt bWVkaWF0ZWx5LiAgT24gcHJlLWdlbjkgcGxhdGZvcm1zLCB0aGVzZQo+ICsJICogd2lsbCBiZSB0 aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB0aGF0IGFyZSBzYWZlIGZvciBib3RoIHByZS0gYW5kCj4g KwkgKiBwb3N0LSB2Ymxhbms7IHdoZW4gdmJsYW5rIGhhcHBlbnMsIHRoZSAnYWN0aXZlJyB2YWx1 ZXMgd2lsbCBiZSBzZXQKPiArCSAqIHRvIHRoZSBmaW5hbCAndGFyZ2V0JyB2YWx1ZXMgYW5kIHdl J2xsIGRvIHRoaXMgYWdhaW4gdG8gZ2V0IHRoZQo+ICsJICogb3B0aW1hbCB3YXRlcm1hcmtzLiAg Rm9yIGdlbjkrIHBsYXRmb3JtcywgdGhlIHZhbHVlcyB3ZSBwcm9ncmFtIGhlcmUKPiArCSAqIHdp bGwgYmUgdGhlIGZpbmFsIHRhcmdldCB2YWx1ZXMgd2hpY2ggd2lsbCBnZXQgYXV0b21hdGljYWxs eSBsYXRjaGVkCj4gKwkgKiBhdCB2YmxhbmsgdGltZTsgbm8gZnVydGhlciBwcm9ncmFtbWluZyB3 aWxsIGJlIG5lY2Vzc2FyeS4KPiArCSAqCj4gKwkgKiBJZiBhIHBsYXRmb3JtIGhhc24ndCBiZWVu IHRyYW5zaXRpb25lZCB0byBhdG9taWMgd2F0ZXJtYXJrcyB5ZXQsCj4gKwkgKiB3ZSdsbCBjb250 aW51ZSB0byB1cGRhdGUgd2F0ZXJtYXJrcyB0aGUgb2xkIHdheSwgaWYgZmxhZ3MgdGVsbAo+ICsJ ICogdXMgdG8uCj4gKwkgKi8KPiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVy bWFya3MgIT0gTlVMTCkKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mo cGlwZV9jb25maWcpOwo+ICsJZWxzZSBpZiAocGlwZV9jb25maWctPndtX2NoYW5nZWQpCj4gIAkJ aW50ZWxfdXBkYXRlX3dhdGVybWFya3MoJmNydGMtPmJhc2UpOwo+ICB9Cj4gIAo+IEBAIC00OTI1 LDcgKzQ5NjAsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAkgKi8KPiAgCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7Cj4gIAo+ IC0JaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7Cj4gKwlkZXZfcHJpdi0+ZGlzcGxheS5p bml0aWFsX3dhdGVybWFya3MoaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiAgCWludGVsX2VuYWJsZV9w aXBlKGludGVsX2NydGMpOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hf ZW5jb2RlcikKPiBAQCAtNTAyNCw3ICs1MDU5LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRj X2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpZiAoIWludGVsX2NydGMtPmNvbmZp Zy0+aGFzX2RzaV9lbmNvZGVyKQo+ICAJCWludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5j KGNydGMpOwo+ICAKPiAtCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICsJZGV2X3By aXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsKPiAgCWludGVsX2Vu YWJsZV9waXBlKGludGVsX2NydGMpOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhh c19wY2hfZW5jb2RlcikKPiBAQCAtMTE4MDAsNiArMTE4MzUsNyBAQCBpbnQgaW50ZWxfcGxhbmVf YXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBsYW5lX3N0YXRlLT5wbGFuZTsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg Km9sZF9wbGFuZV9zdGF0ZSA9Cj4gIAkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRl KTsKPiAgCWludCBpZHggPSBpbnRlbF9jcnRjLT5iYXNlLmJhc2UuaWQsIHJldDsKPiBAQCAtMTE4 NTksNiArMTE4OTUsMTEgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCXBpcGVfY29uZmlnLT53bV9jaGFu Z2VkID0gdHJ1ZTsKPiAgCX0KPiAgCj4gKwkvKiBQcmUtZ2VuOSBwbGF0Zm9ybXMgbmVlZCB0d28t c3RlcCB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+ICsJaWYgKHBpcGVfY29uZmlnLT53bV9jaGFuZ2Vk ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSAmJgo+ICsJICAgIGRldl9wcml2LT5kaXNwbGF5 Lm9wdGltaXplX3dhdGVybWFya3MpCj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRl KS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IHRydWU7Cj4gKwo+ICAJaWYgKHZpc2libGUgfHwg d2FzX3Zpc2libGUpCj4gIAkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KPiAgCQkJdG9f aW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gQEAgLTExOTgzLDggKzEyMDI0 LDI5IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJcmV0ID0gMDsKPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3Bp cGVfd20pIHsKPiAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20oaW50 ZWxfY3J0Yywgc3RhdGUpOwo+IC0JCWlmIChyZXQpCj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1f REVCVUdfS01TKCJUYXJnZXQgcGlwZSB3YXRlcm1hcmtzIGFyZSBpbnZhbGlkXG4iKTsKPiAgCQkJ cmV0dXJuIHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKGRldl9wcml2LT5kaXNwbGF5LmNv bXB1dGVfaW50ZXJtZWRpYXRlX3dtICYmCj4gKwkgICAgIXRvX2ludGVsX2F0b21pY19zdGF0ZShz dGF0ZSktPnNraXBfaW50ZXJtZWRpYXRlX3dtKSB7Cj4gKwkJaWYgKFdBUk5fT04oIWRldl9wcml2 LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSkpCj4gKwkJCXJldHVybiAwOwo+ICsKPiArCQkvKgo+ ICsJCSAqIENhbGN1bGF0ZSAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmtzIHRoYXQgc2F0aXNmeSBi b3RoIHRoZQo+ICsJCSAqIG9sZCBzdGF0ZSBhbmQgdGhlIG5ldyBzdGF0ZS4gIFdlIGNhbiBwcm9n cmFtIHRoZXNlCj4gKwkJICogaW1tZWRpYXRlbHkuCj4gKwkJICovCj4gKwkJcmV0ID0gZGV2X3By aXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oY3J0Yy0+ZGV2LAo+ICsJCQkJCQkJ CWludGVsX2NydGMsCj4gKwkJCQkJCQkJcGlwZV9jb25maWcpOwo+ICsJCWlmIChyZXQpIHsKPiAr CQkJRFJNX0RFQlVHX0tNUygiTm8gdmFsaWQgaW50ZXJtZWRpYXRlIHBpcGUgd2F0ZXJtYXJrcyBh cmUgcG9zc2libGVcbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiAgCX0KPiAgCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IEBAIC0xMzQ1Miw2ICsxMzUxNCw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGU7Cj4gIAlp bnQgcmV0ID0gMCwgaTsKPiAgCWJvb2wgaHdfY2hlY2sgPSBpbnRlbF9zdGF0ZS0+bW9kZXNldDsK PiAgCj4gQEAgLTEzNTU1LDYgKzEzNjE4LDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2Nv bW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCWRybV9hdG9taWNfaGVscGVyX3dh aXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7Cj4gIAo+ICsJLyoKPiArCSAqIE5vdyB0aGF0IHRo ZSB2YmxhbmsgaGFzIHBhc3NlZCwgd2UgY2FuIGdvIGFoZWFkIGFuZCBwcm9ncmFtIHRoZQo+ICsJ ICogb3B0aW1hbCB3YXRlcm1hcmtzIG9uIHBsYXRmb3JtcyB0aGF0IG5lZWQgdHdvLXN0ZXAgd2F0 ZXJtYXJrCj4gKwkgKiBwcm9ncmFtbWluZy4KPiArCSAqCj4gKwkgKiBUT0RPOiBNb3ZlIHRoaXMg KGFuZCBvdGhlciBjbGVhbnVwKSB0byBhbiBhc3luYyB3b3JrZXIgZXZlbnR1YWxseS4KPiArCSAq Lwo+ICsJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkg ewo+ICsJCWludGVsX2NzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ ICsKPiArCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcykKPiArCQkJ ZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyhpbnRlbF9jc3RhdGUpOwo+ICsJ fQo+ICsKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWRybV9hdG9taWNf aGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gQEAgLTE1MjI1LDcgKzE1MzAyLDcgQEAgc3RhdGljIHZvaWQgc2Fu aXRpemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaW50IGk7Cj4gIAo+ ICAJLyogT25seSBzdXBwb3J0ZWQgb24gcGxhdGZvcm1zIHRoYXQgdXNlIGF0b21pYyB3YXRlcm1h cmsgZGVzaWduICovCj4gLQlpZiAoIWRldl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJr cykKPiArCWlmICghZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcykKPiAgCQly ZXR1cm47Cj4gIAo+ICAJLyoKPiBAQCAtMTUyNDYsNiArMTUzMjMsMTMgQEAgcmV0cnk6Cj4gIAlp ZiAoV0FSTl9PTihJU19FUlIoc3RhdGUpKSkKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICsJLyoKPiAr CSAqIEhhcmR3YXJlIHJlYWRvdXQgaXMgdGhlIG9ubHkgdGltZSB3ZSBkb24ndCB3YW50IHRvIGNh bGN1bGF0ZQo+ICsJICogaW50ZXJtZWRpYXRlIHdhdGVybWFya3MgKHNpbmNlIHdlIGRvbid0IHRy dXN0IHRoZSBjdXJyZW50Cj4gKwkgKiB3YXRlcm1hcmtzKS4KPiArCSAqLwo+ICsJdG9faW50ZWxf YXRvbWljX3N0YXRlKHN0YXRlKS0+c2tpcF9pbnRlcm1lZGlhdGVfd20gPSB0cnVlOwo+ICsKPiAg CXJldCA9IGludGVsX2F0b21pY19jaGVjayhkZXYsIHN0YXRlKTsKPiAgCWlmIChyZXQpIHsKPiAg CQkvKgo+IEBAIC0xNTI2OCw3ICsxNTM1Miw4IEBAIHJldHJ5Ogo+ICAJZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7Cj4gIAkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwo+ICAKPiAtCQlkZXZfcHJp di0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MoY3MpOwo+ICsJCWNzLT53bS5uZWVkX3Bvc3R2 YmxfdXBkYXRlID0gdHJ1ZTsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1h cmtzKGNzKTsKPiAgCX0KPiAgCj4gIAlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNDg1MjA0OS4uYTlmNzY0MSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI2MCw2ICsyNjAsMTIgQEAgc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSB7Cj4gIAo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyBz aGFyZWRfZHBsbFtJOTE1X05VTV9QTExTXTsKPiAgCXN0cnVjdCBpbnRlbF93bV9jb25maWcgd21f Y29uZmlnOwo+ICsKPiArCS8qCj4gKwkgKiBDdXJyZW50IHdhdGVybWFya3MgY2FuJ3QgYmUgdHJ1 c3RlZCBkdXJpbmcgaGFyZHdhcmUgcmVhZG91dCwgc28KPiArCSAqIGRvbid0IGJvdGhlciBjYWxj dWxhdGluZyBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcy4KPiArCSAqLwo+ICsJYm9vbCBza2lwX2lu dGVybWVkaWF0ZV93bTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4g QEAgLTUwOSwxMyArNTE1LDI5IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCj4gIAlz dHJ1Y3Qgewo+ICAJCS8qCj4gLQkJICogb3B0aW1hbCB3YXRlcm1hcmtzLCBwcm9ncmFtbWVkIHBv c3QtdmJsYW5rIHdoZW4gdGhpcyBzdGF0ZQo+IC0JCSAqIGlzIGNvbW1pdHRlZAo+ICsJCSAqIE9w dGltYWwgd2F0ZXJtYXJrcywgcHJvZ3JhbW1lZCBwb3N0LXZibGFuayB3aGVuIHRoaXMgc3RhdGUK PiArCQkgKiBpcyBjb21taXR0ZWQuCj4gIAkJICovCj4gIAkJdW5pb24gewo+ICAJCQlzdHJ1Y3Qg aW50ZWxfcGlwZV93bSBpbGs7Cj4gIAkJCXN0cnVjdCBza2xfcGlwZV93bSBza2w7Cj4gIAkJfSBv cHRpbWFsOwo+ICsKPiArCQkvKgo+ICsJCSAqIEludGVybWVkaWF0ZSB3YXRlcm1hcmtzOyB0aGVz ZSBjYW4gYmUgcHJvZ3JhbW1lZCBpbW1lZGlhdGVseQo+ICsJCSAqIHNpbmNlIHRoZXkgc2F0aXNm eSBib3RoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UncmUKPiArCQkgKiBzd2l0Y2hpbmcg YXdheSBmcm9tIGFuZCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gd2UncmUgc3dpdGNoaW5nCj4gKwkJ ICogdG8uCj4gKwkJICovCj4gKwkJc3RydWN0IGludGVsX3BpcGVfd20gaW50ZXJtZWRpYXRlOwo+ ICsKPiArCQkvKgo+ICsJCSAqIFBsYXRmb3JtcyB3aXRoIHR3by1zdGVwIHdhdGVybWFyayBwcm9n cmFtbWluZyB3aWxsIG5lZWQgdG8KPiArCQkgKiB1cGRhdGUgd2F0ZXJtYXJrIHByb2dyYW1taW5n IHBvc3QtdmJsYW5rIHRvIHN3aXRjaCBmcm9tIHRoZQo+ICsJCSAqIHNhZmUgaW50ZXJtZWRpYXRl IHdhdGVybWFya3MgdG8gdGhlIG9wdGltYWwgZmluYWwKPiArCQkgKiB3YXRlcm1hcmtzLgo+ICsJ CSAqLwo+ICsJCWJvb2wgbmVlZF9wb3N0dmJsX3VwZGF0ZTsKPiAgCX0gd207Cj4gIH07Cj4gIAo+ IEBAIC02MDEsNiArNjIzLDcgQEAgc3RydWN0IGludGVsX2NydGMgewo+ICAJCQlzdHJ1Y3QgaW50 ZWxfcGlwZV93bSBpbGs7Cj4gIAkJCXN0cnVjdCBza2xfcGlwZV93bSBza2w7Cj4gIAkJfSBhY3Rp dmU7Cj4gKwo+ICAJCS8qIGFsbG93IEN4U1Igb24gdGhpcyBwaXBlICovCj4gIAkJYm9vbCBjeHNy X2FsbG93ZWQ7Cj4gIAl9IHdtOwo+IEBAIC0xNTY2LDYgKzE1ODksNyBAQCB2b2lkIHNrbF93bV9n ZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgc2tsX2RkYl9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgIHN0cnVj dCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pOwo+ICB1aW50MzJfdCBpbGtfcGlw ZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7 Cj4gK2Jvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGlu dCBzYW5pdGl6ZV9yYzZfb3B0aW9uKGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBl bmFibGVfcmM2KTsKPiAgCj4gIC8qIGludGVsX3Nkdm8uYyAqLwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+IGluZGV4IDM0N2Q0ZGYuLmNjZGI1ODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiBAQCAtMjI3OCw2ICsyMjc4LDI5IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9sYXRl bmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRl diwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kpOwo+ICB9Cj4gIAo+ICtz dGF0aWMgYm9vbCBpbGtfdmFsaWRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICsJCQkJIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ICt7Cj4gKwkvKiBMUDAgd2F0 ZXJtYXJrIG1heGltdW1zIGRlcGVuZCBvbiB0aGlzIHBpcGUgYWxvbmUgKi8KPiArCWNvbnN0IHN0 cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0gewo+ICsJCS5udW1fcGlwZXNfYWN0aXZlID0g MSwKPiArCQkuc3ByaXRlc19lbmFibGVkID0gcGlwZV93bS0+c3ByaXRlc19lbmFibGVkLAo+ICsJ CS5zcHJpdGVzX3NjYWxlZCA9IHBpcGVfd20tPnNwcml0ZXNfc2NhbGVkLAo+ICsJfTsKPiArCXN0 cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4Owo+ICsKPiArCS8qIExQMCB3YXRlcm1hcmtzIGFsd2F5 cyB1c2UgMS8yIEREQiBwYXJ0aXRpb25pbmcgKi8KPiArCWlsa19jb21wdXRlX3dtX21heGltdW1z KGRldiwgMCwgJmNvbmZpZywgSU5URUxfRERCX1BBUlRfMV8yLCAmbWF4KTsKPiArCj4gKwkvKiBB dCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLwo+ICsJaWYgKCFpbGtfdmFsaWRhdGVfd21fbGV2 ZWwoMCwgJm1heCwgJnBpcGVfd20tPndtWzBdKSkgewo+ICsJCURSTV9ERUJVR19LTVMoIkxQMCB3 YXRlcm1hcmsgaW52YWxpZFxuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXJl dHVybiB0cnVlOwo+ICt9Cj4gKwo+ICAvKiBDb21wdXRlIG5ldyB3YXRlcm1hcmtzIGZvciB0aGUg cGlwZSAqLwo+ICBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gQEAgLTIyOTIsMTAgKzIzMTUsNiBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVf d20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnNwcnN0YXRlID0gTlVMTDsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqY3Vy c3RhdGUgPSBOVUxMOwo+ICAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldik7Cj4gLQkvKiBMUDAgd2F0ZXJtYXJrIG1heGltdW1zIGRlcGVuZCBvbiB0aGlzIHBpcGUg YWxvbmUgKi8KPiAtCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0gewo+IC0JCS5udW1f cGlwZXNfYWN0aXZlID0gMSwKPiAtCX07Cj4gIAlzdHJ1Y3QgaWxrX3dtX21heGltdW1zIG1heDsK PiAgCj4gIAljc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVs X2NydGMpOwo+IEBAIC0yMzE5LDIxICsyMzM4LDE4IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQkJY3Vyc3RhdGUgPSB0 b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7Cj4gIAl9Cj4gIAo+IC0JY29uZmlnLnNwcml0ZXNfZW5h YmxlZCA9IHNwcnN0YXRlLT52aXNpYmxlOwo+IC0JY29uZmlnLnNwcml0ZXNfc2NhbGVkID0gc3By c3RhdGUtPnZpc2libGUgJiYKPiArCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNzdGF0ZS0+YmFz ZS5hY3RpdmU7Cj4gKwlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+dmlzaWJs ZTsKPiArCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPnZpc2libGUgJiYKPiAg CQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZzcHJz dGF0ZS0+c3JjKSA+PiAxNiB8fAo+ICAJCWRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPmRzdCkg IT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+c3JjKSA+PiAxNik7Cj4gIAo+IC0JcGlwZV93 bS0+cGlwZV9lbmFibGVkID0gY3N0YXRlLT5iYXNlLmFjdGl2ZTsKPiAtCXBpcGVfd20tPnNwcml0 ZXNfZW5hYmxlZCA9IGNvbmZpZy5zcHJpdGVzX2VuYWJsZWQ7Cj4gLQlwaXBlX3dtLT5zcHJpdGVz X3NjYWxlZCA9IGNvbmZpZy5zcHJpdGVzX3NjYWxlZDsKPiAtCj4gIAkvKiBJTEsvU05COiBMUDIr IHdhdGVybWFya3Mgb25seSB3L28gc3ByaXRlcyAqLwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuIDw9IDYgJiYgc3Byc3RhdGUtPnZpc2libGUpCj4gIAkJbWF4X2xldmVsID0gMTsKPiAgCj4g IAkvKiBJTEsvU05CL0lWQjogTFAxKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNjYWxpbmcgKi8KPiAt CWlmIChjb25maWcuc3ByaXRlc19zY2FsZWQpCj4gKwlpZiAocGlwZV93bS0+c3ByaXRlc19zY2Fs ZWQpCj4gIAkJbWF4X2xldmVsID0gMDsKPiAgCj4gIAlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZf cHJpdiwgaW50ZWxfY3J0YywgMCwgY3N0YXRlLAo+IEBAIC0yMzQyLDEyICsyMzU4LDggQEAgc3Rh dGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKPiAgCQlwaXBl X3dtLT5saW5ldGltZSA9IGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGRldiwgY3N0YXRlKTsKPiAg Cj4gLQkvKiBMUDAgd2F0ZXJtYXJrcyBhbHdheXMgdXNlIDEvMiBEREIgcGFydGl0aW9uaW5nICov Cj4gLQlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDAsICZjb25maWcsIElOVEVMX0REQl9Q QVJUXzFfMiwgJm1heCk7Cj4gLQo+IC0JLyogQXQgbGVhc3QgTFAwIG11c3QgYmUgdmFsaWQgKi8K PiAtCWlmICghaWxrX3ZhbGlkYXRlX3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkp Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwlpZiAoIWlsa192YWxpZGF0ZV9waXBlX3dtKGRldiwg cGlwZV93bSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlsa19jb21wdXRlX3dtX3JlZ19t YXhpbXVtcyhkZXYsIDEsICZtYXgpOwo+ICAKPiBAQCAtMjM3Miw2ICsyMzg0LDU5IEBAIHN0YXRp YyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywK PiAgfQo+ICAKPiAgLyoKPiArICogQnVpbGQgYSBzZXQgb2YgJ2ludGVybWVkaWF0ZScgd2F0ZXJt YXJrIHZhbHVlcyB0aGF0IHNhdGlzZnkgYm90aCB0aGUgb2xkCj4gKyAqIHN0YXRlIGFuZCB0aGUg bmV3IHN0YXRlLiAgVGhlc2UgY2FuIGJlIHByb2dyYW1tZWQgdG8gdGhlIGhhcmR3YXJlCj4gKyAq IGltbWVkaWF0ZWx5Lgo+ICsgKi8KPiArc3RhdGljIGludCBpbGtfY29tcHV0ZV9pbnRlcm1lZGlh dGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YywKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq bmV3c3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtICphID0gJm5ld3N0YXRlLT53 bS5pbnRlcm1lZGlhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYiA9ICZpbnRlbF9jcnRj LT53bS5hY3RpdmUuaWxrOwo+ICsJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xl dmVsKGRldik7Cj4gKwo+ICsJLyoKPiArCSAqIFN0YXJ0IHdpdGggdGhlIGZpbmFsLCB0YXJnZXQg d2F0ZXJtYXJrcywgdGhlbiBjb21iaW5lIHdpdGggdGhlCj4gKwkgKiBjdXJyZW50bHkgYWN0aXZl IHdhdGVybWFya3MgdG8gZ2V0IHZhbHVlcyB0aGF0IGFyZSBzYWZlIGJvdGggYmVmb3JlCj4gKwkg KiBhbmQgYWZ0ZXIgdGhlIHZibGFuay4KPiArCSAqLwo+ICsJKmEgPSBuZXdzdGF0ZS0+d20ub3B0 aW1hbC5pbGs7Cj4gKwlhLT5waXBlX2VuYWJsZWQgfD0gYi0+cGlwZV9lbmFibGVkOwo+ICsJYS0+ c3ByaXRlc19lbmFibGVkIHw9IGItPnNwcml0ZXNfZW5hYmxlZDsKPiArCWEtPnNwcml0ZXNfc2Nh bGVkIHw9IGItPnNwcml0ZXNfc2NhbGVkOwo+ICsKPiArCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8 PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKmFfd20g PSAmYS0+d21bbGV2ZWxdOwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqYl93bSA9 ICZiLT53bVtsZXZlbF07Cj4gKwo+ICsJCWFfd20tPmVuYWJsZSAmPSBiX3dtLT5lbmFibGU7Cj4g KwkJYV93bS0+cHJpX3ZhbCA9IG1heChhX3dtLT5wcmlfdmFsLCBiX3dtLT5wcmlfdmFsKTsKPiAr CQlhX3dtLT5zcHJfdmFsID0gbWF4KGFfd20tPnNwcl92YWwsIGJfd20tPnNwcl92YWwpOwo+ICsJ CWFfd20tPmN1cl92YWwgPSBtYXgoYV93bS0+Y3VyX3ZhbCwgYl93bS0+Y3VyX3ZhbCk7Cj4gKwkJ YV93bS0+ZmJjX3ZhbCA9IG1heChhX3dtLT5mYmNfdmFsLCBiX3dtLT5mYmNfdmFsKTsKPiArCX0K PiArCj4gKwkvKgo+ICsJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVzZSBtZXJnZWQg d2F0ZXJtYXJrIHZhbHVlcyBhcmUKPiArCSAqIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlndXJhdGlv biB0aGVtc2VsdmVzLiAgSWYgdGhleSdyZSBub3QsCj4gKwkgKiB0aGVyZSdzIG5vIHNhZmUgd2F5 IHRvIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHN0YXRlIHRvCj4gKwkgKiB0aGUgbmV3IHN0YXRl LCBzbyB3ZSBuZWVkIHRvIGZhaWwgdGhlIGF0b21pYyB0cmFuc2FjdGlvbi4KPiArCSAqLwo+ICsJ aWYgKCFpbGtfdmFsaWRhdGVfcGlwZV93bShkZXYsIGEpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ ICsKPiArCS8qCj4gKwkgKiBJZiBvdXIgaW50ZXJtZWRpYXRlIFdNIGFyZSBpZGVudGljYWwgdG8g dGhlIGZpbmFsIFdNLCB0aGVuIHdlIGNhbgo+ICsJICogb21pdCB0aGUgcG9zdC12YmxhbmsgcHJv Z3JhbW1pbmc7IG9ubHkgdXBkYXRlIGlmIGl0J3MgZGlmZmVyZW50Lgo+ICsJICovCj4gKwlpZiAo bWVtY21wKGEsICZuZXdzdGF0ZS0+d20ub3B0aW1hbC5pbGssIHNpemVvZigqYSkpID09IDApCj4g KwkJbmV3c3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSBmYWxzZTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArLyoKPiAgICogTWVyZ2UgdGhlIHdhdGVybWFya3MgZnJvbSBhbGwg YWN0aXZlIHBpcGVzIGZvciBhIHNwZWNpZmljIGxldmVsLgo+ICAgKi8KPiAgc3RhdGljIHZvaWQg aWxrX21lcmdlX3dtX2xldmVsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTIzODMsOSAr MjQ0OCw3IEBAIHN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJcmV0X3dtLT5lbmFibGUgPSB0cnVlOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSA9Cj4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0+YmFzZS5z dGF0ZSk7Cj4gLQkJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUt PndtLm9wdGltYWwuaWxrOwo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUg PSAmaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsazsKPiAgCQljb25zdCBzdHJ1Y3QgaW50ZWxfd21f bGV2ZWwgKndtID0gJmFjdGl2ZS0+d21bbGV2ZWxdOwo+ICAKPiAgCQlpZiAoIWFjdGl2ZS0+cGlw ZV9lbmFibGVkKQo+IEBAIC0yNTMzLDE1ICsyNTk2LDE0IEBAIHN0YXRpYyB2b2lkIGlsa19jb21w dXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAkvKiBMUDAgcmVn aXN0ZXIgdmFsdWVzICovCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykg ewo+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPQo+IC0JCQl0b19p bnRlbF9jcnRjX3N0YXRlKGludGVsX2NydGMtPmJhc2Uuc3RhdGUpOwo+ICAJCWVudW0gcGlwZSBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwg KnIgPSAmY3N0YXRlLT53bS5vcHRpbWFsLmlsay53bVswXTsKPiArCQljb25zdCBzdHJ1Y3QgaW50 ZWxfd21fbGV2ZWwgKnIgPQo+ICsJCQkmaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsay53bVswXTsK PiAgCj4gIAkJaWYgKFdBUk5fT04oIXItPmVuYWJsZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAt CQlyZXN1bHRzLT53bV9saW5ldGltZVtwaXBlXSA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGsubGlu ZXRpbWU7Cj4gKwkJcmVzdWx0cy0+d21fbGluZXRpbWVbcGlwZV0gPSBpbnRlbF9jcnRjLT53bS5h Y3RpdmUuaWxrLmxpbmV0aW1lOwo+ICAKPiAgCQlyZXN1bHRzLT53bV9waXBlW3BpcGVdID0KPiAg CQkJKHItPnByaV92YWwgPDwgV00wX1BJUEVfUExBTkVfU0hJRlQpIHwKPiBAQCAtMjc0OCw3ICsy ODEwLDcgQEAgc3RhdGljIHZvaWQgaWxrX3dyaXRlX3dtX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlkZXZfcHJpdi0+d20uaHcgPSAqcmVzdWx0czsKPiAgfQo+ ICAKPiAtc3RhdGljIGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiArYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+ICAKPiBAQCAtMzY0MywxMSArMzcwNSw5IEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dt X2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMg dm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUpCj4gK3N0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3Rh dGUtPmJhc2UuY3J0YzsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCXN0cnVjdCBpbnRlbF9w aXBlX3dtIGxwX3dtXzFfMiA9IHt9LCBscF93bV81XzYgPSB7fSwgKmJlc3RfbHBfd207Cj4gIAlz dHJ1Y3QgaWxrX3dtX21heGltdW1zIG1heDsKPiAgCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29u ZmlnID0ge307Cj4gQEAgLTM2NzgsMjggKzM3MzgsMjggQEAgc3RhdGljIHZvaWQgaWxrX3Byb2dy YW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ICAJaWxrX3dy aXRlX3dtX3ZhbHVlcyhkZXZfcHJpdiwgJnJlc3VsdHMpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaWxr X2luaXRpYWxfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjLT5zdGF0ZSk7Cj4gLQo+IC0JV0FSTl9PTihjc3RhdGUtPmJhc2UuYWN0aXZlICE9IGlu dGVsX2NydGMtPmFjdGl2ZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCj4gLQkv Kgo+IC0JICogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJr cyBmb3IgYXQgbGVhc3QKPiAtCSAqIG9uZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcgc2NhbGluZy4g IExQIHdhdGVybWFya3MgY2FuIGJlIHJlLWVuYWJsZWQKPiAtCSAqIHdoZW4gc2NhbGluZyBpcyBk aXNhYmxlZC4KPiAtCSAqCj4gLQkgKiBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZi Cj4gLQkgKi8KPiAtCWlmIChjc3RhdGUtPmRpc2FibGVfbHBfd20pIHsKPiAtCQlpbGtfZGlzYWJs ZV9scF93bShjcnRjLT5kZXYpOwo+IC0JCWludGVsX3dhaXRfZm9yX3ZibGFuayhjcnRjLT5kZXYs IGludGVsX2NydGMtPnBpcGUpOwo+IC0JfQo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndtLndt X211dGV4KTsKPiArCWludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSBjc3RhdGUtPndtLmludGVy bWVkaWF0ZTsKPiArCWlsa19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOwo+ICsJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ICt9Cj4gIAo+IC0JaW50ZWxfY3J0Yy0+ d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7Cj4gK3N0YXRpYyB2b2lkIGls a19vcHRpbWl6ZV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0YXRl LT5iYXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOwo+ICAKPiAtCWlsa19wcm9ncmFtX3dhdGVy bWFya3MoY3N0YXRlKTsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4g KwlpZiAoY3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlKSB7Cj4gKwkJaW50ZWxfY3J0Yy0+ d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7Cj4gKwkJaWxrX3Byb2dyYW1f d2F0ZXJtYXJrcyhkZXZfcHJpdik7Cj4gKwl9Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT53 bS53bV9tdXRleCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2FjdGl2ZV9z dGF0ZSh1aW50MzJfdCB2YWwsCj4gQEAgLTcwNzYsOSArNzEzNiwxMyBAQCB2b2lkIGludGVsX2lu aXRfcG0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkgICAgIGRldl9wcml2LT53bS5zcHJf bGF0ZW5jeVsxXSAmJiBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3lbMV0pIHx8Cj4gIAkJICAgICgh SVNfR0VONShkZXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAmJgo+ICAJCSAgICAg ZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzBdICYmIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeVsw XSkpIHsKPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaWxrX3VwZGF0ZV93bTsK PiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtID0gaWxrX2NvbXB1dGVfcGlw ZV93bTsKPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkucHJvZ3JhbV93YXRlcm1hcmtzID0gaWxrX3By b2dyYW1fd2F0ZXJtYXJrczsKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20gPQo+ICsJCQkJaWxrX2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtOwo+ICsJCQlkZXZf cHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgPQo+ICsJCQkJaWxrX2luaXRpYWxfd2F0 ZXJtYXJrczsKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyA9Cj4g KwkJCQlpbGtfb3B0aW1pemVfd2F0ZXJtYXJrczsKPiAgCQl9IGVsc2Ugewo+ICAJCQlEUk1fREVC VUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVuY3kuICIKPiAgCQkJCSAg ICAgICJEaXNhYmxlIEN4U1JcbiIpOwo+IC0tIAo+IDIuMS40Cj4gCgotLSAKTWF0dCBSb3BlcgpH cmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxv cG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==