From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH] drm/i915: Add two-stage ILK-style watermark programming (v11) Date: Mon, 29 Feb 2016 21:52:19 +0200 Message-ID: <1456775539.18663.59.camel@intel.com> References: <1456276813-5689-1-git-send-email-matthew.d.roper@intel.com> <20160225164820.GA23428@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id E0A916E127 for ; Mon, 29 Feb 2016 19:52:22 +0000 (UTC) In-Reply-To: <20160225164820.GA23428@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 , intel-gfx@lists.freedesktop.org Cc: "Sarvela, Tomi P" List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDItMjUgYXQgMDg6NDggLTA4MDAsIE1hdHQgUm9wZXIgd3JvdGU6Cj4gSSBu ZXZlciBnb3QgYSBDSSBlbWFpbCBmb3IgdGhpcyAocHJvYmFibHkgYmVjYXVzZSBmZG8gd2FzIGRv d24gZm9yIGEKPiB3aGlsZSksCj4gYnV0IEkgY2FuIHNlZSB0aGUgcmVzdWx0cyBiZWxvdyBpbiBw YXRjaHdvcmsKCldlIGFsc28gaGF2ZSB0aGUgcHJvYmxlbSwgdGhhdCBpZiBhIHBhdGNoIHByZXZl bnRzIGEgbWFjaGluZSBmcm9tCmJvb3RpbmcgdGhhdCBtYWNoaW5lIHdvbid0IGJlIGluY2x1ZGVk IGluIHRoZSBDSSB0ZXN0IHJlc3VsdC4gVGhpcyB3YXMKdGhlIGNhc2UgaGVyZSBvbiBTS0wuCgot LUltcmUKCj4gCj4gPiDCoFRlc3QgZ2VtX2NzX3ByZWZldGNoOgo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgU3ViZ3JvdXAgYmFzaWMtZGVmYXVsdDoKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpbmNvbXBsZXRlIC0+IFBBU1PCoMKgwqDCoMKgwqDCoChpbGstaHA4NDQwcCkKPiA+ IMKgVGVzdCBrbXNfZmxpcDoKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoFN1Ymdyb3VwIGJhc2ljLWZs aXAtdnMtZHBtczoKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYXNzwqDC oMKgwqDCoMKgwqAtPiBETUVTRy1XQVJOIChpbGstaHA4NDQwcCkgVU5TVEFCTEUKPiAKPiBQcmUt ZXhpc3Rpbmcgd2F0ZXJtYXJrIGJ1ZyBoZXJlOgo+IMKgwqDCoMKgwqDCoMKgwqBodHRwczovL2J1 Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzc4Nwo+IAo+IEkgaGFkIGhvcGVk IHRoaXMgcGF0Y2ggbWlnaHQgYWxzbyBmaXggdGhhdCBwcm9ibGVtLCBidXQgSSBndWVzcwo+IGZ1 cnRoZXIKPiBpbnZlc3RpZ2F0aW9uIHdpbGwgYmUgbmVlZGVkOyBpdCBzZWVtcyB0byBiZSBzb21l dGhpbmcgdmVyeQo+IElMSy1zcGVjaWZpYywgbm90IHNlZW4gb24gU05CLCBJVkIsIGV0Yy4KPiAK PiAKPiA+IMKgVGVzdCBrbXNfZm9yY2VfY29ubmVjdG9yX2Jhc2ljOgo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgU3ViZ3JvdXAgZm9yY2UtZWRpZDoKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBza2lwwqDCoMKgwqDCoMKgwqAtPiBQQVNTwqDCoMKgwqDCoMKgwqAoc25iLXgyMjB0 KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhc3PCoMKgwqDCoMKgwqDC oC0+IFNLSVDCoMKgwqDCoMKgwqDCoChpdmItdDQzMHMpCj4gCj4gUHJlLWV4aXN0aW5nOgo+IMKg wqDCoMKgwqDCoMKgwqBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD05Mzc2OQo+IAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgU3ViZ3JvdXAgZm9yY2UtbG9hZC1kZXRl Y3Q6Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG1lc2ctZmFpbCAtPiBG QUlMwqDCoMKgwqDCoMKgwqAoc25iLXgyMjB0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRtZXNnLWZhaWwgLT4gRkFJTMKgwqDCoMKgwqDCoMKgKGhzdy1ndDIpCj4gCj4g VGhlIGRtZXNnIHdhcm5pbmcgaXMgZ29uZSBub3cgKGEgbG9ja2luZyB3YXJuaW5nIHRoYXQgSSBk b24ndCB0aGluawo+IG15Cj4gcGF0Y2ggc2hvdWxkIGhhdmUgYWZmZWN0ZWQpOyB0aGUgcmVtYWlu aW5nIHRlc3QgZmFpbHVyZSBpcyBpZGVudGljYWwKPiB0bwo+IHdoYXQgaXQgd2FzIGJlZm9yZSAo dGVtcC0+Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9VTktOT1dOQ09OTkVDVElPTikKPiBhbmQKPiB1 bnJlbGF0ZWQuCj4gCj4gSSBkb24ndCBzZWUgYSBidWd6aWxsYSBmb3IgdGhpcywgd2hpY2ggc2Vl bXMgc3RyYW5nZSBzaW5jZSBpdCdzIGEKPiBwcmUtZXhpc3RpbmcgZGVmZWN0LsKgwqBBbSBJIG92 ZXJsb29raW5nIGl0IG9yIGRvIEkgbmVlZCB0byBmaWxlIGEgbmV3Cj4gb25lPwo+IAo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZhaWzCoMKgwqDCoMKgwqDCoC0+IFNLSVDC oMKgwqDCoMKgwqDCoChpbGstaHA4NDQwcCkKPiAKPiBOb3Qgc3VyZSB3aGF0IGlzIGFjdHVhbGx5 IHBsdWdnZWQgaW50byB0aGUgQ0kgbWFjaGluZSwgc28gdGhlIHNraXAKPiBtYXkKPiBiZSBsZWdp dGltYXRlL2V4cGVjdGVkP8KgwqBEb2Vzbid0IHNlZW0gcmVsYXRlZCB0byBhbnl0aGluZyBpbiBt eSBwYXRjaAo+IGFueXdheS4KPiAKPiA+IMKgVGVzdCBrbXNfcGlwZV9jcmNfYmFzaWM6Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqBTdWJncm91cCBzdXNwZW5kLXJlYWQtY3JjLXBpcGUtYzoKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYXNzwqDCoMKgwqDCoMKgwqAtPiBETUVT Ry1XQVJOIChic3ctbnVjLTIpCj4gCj4gVGhpcyBvbmUgd2FzIGhhcHBlbmluZyBzcG9yYWRpY2Fs bHkgYmVmb3JlIG15IHBhdGNoOyBJIHRoaW5rIGl0J3MgdGhlCj4gc2FtZSBidWcgZmlsZWQgaGVy ZToKPiAKPiDCoCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05 NDE2NAo+IAo+IEknbGwgdXBkYXRlIHRoZSBidWd6aWxsYSB0byBpbmRpY2F0ZSBpdCBhbHNvIGhh cHBlbnMgb24gdGhpcyB0ZXN0Lgo+IAo+ID4gwqBUZXN0IHBtX3JwbToKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoFN1Ymdyb3VwIGJhc2ljLXJ0ZToKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBwYXNzwqDCoMKgwqDCoMKgwqAtPiBETUVTRy1XQVJOIChic3ctbnVjLTIpCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmFpbMKgwqDCoMKgwqDCoMKgLT4gUEFT U8KgwqDCoMKgwqDCoMKgKGhzdy1icml4Ym94KQo+IAo+IFNhbWUgYnVnIG1lbnRpb25lZCBhYm92 ZSAoOTQxNjQpCj4gCj4gCj4gCj4gTWF0dAo+IAo+IAo+IE9uIFR1ZSwgRmViIDIzLCAyMDE2IGF0 IDA1OjIwOjEzUE0gLTA4MDAsIE1hdHQgUm9wZXIgd3JvdGU6Cj4gPiBJbiBhZGRpdGlvbiB0byBj YWxjdWxhdGluZyBmaW5hbCB3YXRlcm1hcmtzLCBsZXQncyBhbHNvIHByZS0KPiA+IGNhbGN1bGF0 ZSBhCj4gPiBzZXQgb2YgaW50ZXJtZWRpYXRlIHdhdGVybWFyayB2YWx1ZXMgYXQgYXRvbWljIGNo ZWNrIHRpbWUuwqDCoFRoZXNlCj4gPiBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcyBhcmUgYSBjb21i aW5hdGlvbiBvZiB0aGUgd2F0ZXJtYXJrcyBmb3IgdGhlCj4gPiBvbGQKPiA+IHN0YXRlIGFuZCB0 aGUgbmV3IHN0YXRlOyB0aGV5IHNob3VsZCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgb2YKPiA+ IGJvdGgKPiA+IHN0YXRlcyB3aGljaCBtZWFucyB0aGV5IGNhbiBiZSBwcm9ncmFtbWVkIGltbWVk aWF0ZWx5IHdoZW4gd2UKPiA+IGNvbW1pdCB0aGUKPiA+IGF0b21pYyBzdGF0ZSAod2l0aG91dCB3 YWl0aW5nIGZvciBhIHZibGFuaykuwqDCoE9uY2UgdGhlIHZibGFuayBkb2VzCj4gPiBoYXBwZW4s IHdlIGNhbiB0aGVuIHJlLXByb2dyYW0gd2F0ZXJtYXJrcyB0byB0aGUgbW9yZSBvcHRpbWFsIGZp bmFsCj4gPiB2YWx1ZS4KPiA+IAo+ID4gdjI6IFNpZ25pZmljYW50IHJlYmFzaW5nL3Jld3JpdGlu Zy4KPiA+IAo+ID4gdjM6Cj4gPiDCoC0gTW92ZSAnbmVlZF9wb3N0dmJsX3VwZGF0ZScgZmxhZyB0 byBDUlRDIHN0YXRlIChEYW5pZWwpCj4gPiDCoC0gRG9uJ3QgZm9yZ2V0IHRvIGNoZWNrIGludGVy bWVkaWF0ZSB3YXRlcm1hcmsgdmFsdWVzIGZvciB2YWxpZGl0eQo+ID4gwqDCoMKgKE1hYXJ0ZW4p Cj4gPiDCoC0gRG9uJ3QgZHVlIGFzeW5jIHdhdGVybWFyayBvcHRpbWl6YXRpb247IGp1c3QgZG8g aXQgYXQgdGhlIGVuZCBvZgo+ID4gdGhlCj4gPiDCoMKgwqBhdG9taWMgdHJhbnNhY3Rpb24sIGFm dGVyIHdhaXRpbmcgZm9yIHZibGFua3MuwqDCoFdlIGRvIHdhbnQgaXQgdG8KPiA+IGJlCj4gPiDC oMKgwqBhc3luYyBldmVudHVhbGx5LCBidXQgYWRkaW5nIHRoYXQgbm93IHdpbGwgY2F1c2UgbW9y ZSB0cm91YmxlCj4gPiBmb3IKPiA+IMKgwqDCoE1hYXJ0ZW4ncyBpbi1wcm9ncmVzcyB3b3JrLsKg wqAoTWFhcnRlbikKPiA+IMKgLSBEb24ndCBhbGxvY2F0ZSBzcGFjZSBpbiBjcnRjX3N0YXRlIGZv ciBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcwo+ID4gb24KPiA+IMKgwqDCoHBsYXRmb3JtcyB0aGF0 IGRvbid0IG5lZWQgaXQgKGdlbjkrKS4KPiA+IMKgLSBNb3ZlIFdhQ3hTUkRpc2FibGVkRm9yU3By aXRlU2NhbGluZzppdmIgaW50bwo+ID4gaW50ZWxfYmVnaW5fY3J0Y19jb21taXQKPiA+IMKgwqDC oG5vdyB0aGF0IGlsa191cGRhdGVfd20gaXMgZ29uZS4KPiA+IAo+ID4gdjQ6Cj4gPiDCoC0gQWRk IGEgd21fbXV0ZXggdG8gY292ZXIgdXBkYXRlcyB0byBpbnRlbF9jcnRjLT5hY3RpdmUgYW5kIHRo ZQo+ID4gwqDCoMKgbmVlZF9wb3N0dmJsX3VwZGF0ZSBmbGFnLsKgwqBTaW5jZSB3ZSBkb24ndCBo YXZlIGFzeW5jIHlldCBpdAo+ID4gaXNuJ3QKPiA+IMKgwqDCoHRlcnJpYmx5IGltcG9ydGFudCB5 ZXQsIGJ1dCBtaWdodCBhcyB3ZWxsIGFkZCBpdCBub3cuCj4gPiDCoC0gQ2hhbmdlIGludGVyZmFj ZSB0byBwcm9ncmFtIHdhdGVybWFya3MuwqDCoFBsYXRmb3JtcyB3aWxsIG5vdwo+ID4gZXhwb3Nl Cj4gPiDCoMKgwqAuaW5pdGlhbF93YXRlcm1hcmtzKCkgYW5kIC5vcHRpbWl6ZV93YXRlcm1hcmtz KCkgZnVuY3Rpb25zIHRvIGRvCj4gPiDCoMKgwqB3YXRlcm1hcmsgcHJvZ3JhbW1pbmcuwqDCoFRo ZXNlIHNob3VsZCBsb2NrIHdtX211dGV4LCBjb3B5IHRoZQo+ID4gwqDCoMKgYXBwcm9wcmlhdGUg c3RhdGUgdmFsdWVzIGludG8gaW50ZWxfY3J0Yy0+YWN0aXZlLCBhbmQgdGhlbiBjYWxsCj4gPiDC oMKgwqB0aGUgaW50ZXJuYWwgcHJvZ3JhbSB3YXRlcm1hcmtzIGZ1bmN0aW9uLgo+ID4gCj4gPiB2 NToKPiA+IMKgLSBTa2lwIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgY2FsY3VsYXRpb24vY2hlY2sg ZHVyaW5nIGluaXRpYWwKPiA+IGhhcmR3YXJlCj4gPiDCoMKgwqByZWFkb3V0IHNpbmNlIHdlIGRv bid0IHRydXN0IHRoZSBleGlzdGluZyBIVyB2YWx1ZXMgKGFuZCBkb24ndAo+ID4gaGF2ZQo+ID4g wqDCoMKgdmFsaWQgdmFsdWVzIG9mIG91ciBvd24geWV0KS4KPiA+IMKgLSBEb24ndCB0cnkgdG8g Y2FsbCAub3B0aW1pemVfd2F0ZXJtYXJrcygpIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0Cj4gPiBo YXZlCj4gPiDCoMKgwqBhdG9taWMgd2F0ZXJtYXJrcyB5ZXQuwqDCoChNYWFydGVuKQo+ID4gCj4g PiB2NjoKPiA+IMKgLSBSZWJhc2UKPiA+IAo+ID4gdjc6Cj4gPiDCoC0gRnVydGhlciByZWJhc2UK PiA+IAo+ID4gdjg6Cj4gPiDCoC0gQSBmZXcgbWlub3IgaW5kZW50YXRpb24gYW5kIGxpbmUgbGVu Z3RoIGZpeGVzCj4gPiAKPiA+IHY5Ogo+ID4gwqAtIFlldCBhbm90aGVyIHJlYmFzZSBzaW5jZSBN YWFydGVuJ3MgcGF0Y2hlcyByZXdvcmtlZCBhIGJ1bmNoIG9mCj4gPiB0aGUKPiA+IMKgwqDCoGNv ZGUgKHdtX3ByZSwgd21fcG9zdCwgZXRjLikgdGhhdCB0aGlzIHdhcyBwcmV2aW91c2x5IGJhc2Vk IG9uLgo+ID4gCj4gPiB2MTA6Cj4gPiDCoC0gTW92ZSB3bV9tdXRleCB0byBkZXZfcHJpdiB0byBw cm90ZWN0IGFnYWluc3QgcmFjaW5nIGNvbW1pdHMKPiA+IGFnYWluc3QKPiA+IMKgwqDCoGRpc2pv aW50IENSVEMgc2V0cy4gKE1hYXJ0ZW4pCj4gPiDCoC0gRHJvcCB1bm5lY2Vzc2FyeSBjbGVhcmlu ZyBvZiBjc3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUKPiA+IChNYWFydGVuKQo+ID4gCj4g PiB2MTE6Cj4gPiDCoC0gTm93IHRoYXQgd2UndmUgbW92ZWQgdG8gYXRvbWljIHdhdGVybWFyayB1 cGRhdGVzLCBtYWtlIHN1cmUgd2UKPiA+IGNhbGwKPiA+IMKgwqDCoHRoZSBwcm9wZXIgZnVuY3Rp b24gdG8gcHJvZ3JhbSB3YXRlcm1hcmtzIGluCj4gPiDCoMKgwqB7aXJvbmxha2UsaGFzd2VsbH1f Y3J0Y19lbmFibGUoKTsgdGhlIGZhaWx1cmUgdG8gZG8gc28gb24gdGhlCj4gPiDCoMKgwqBwcmV2 aW91cyBwYXRjaCBpdGVyYXRpb24gbGVkIHRvIHVzIG5vdCBhY3R1YWxseSBwcm9ncmFtbWluZyB0 aGUKPiA+IMKgwqDCoHdhdGVybWFya3MgYmVmb3JlIHR1cm5pbmcgb24gdGhlIENSVEMsIHdoaWNo IHdhcyB0aGUgY2F1c2Ugb2YKPiA+IHRoZQo+ID4gwqDCoMKgdW5kZXJydW5zIHRoYXQgdGhlIENJ IHN5c3RlbSB3YXMgc2VlaW5nLgo+ID4gwqAtIEZpeCBpbnZlcnRlZCBsb2dpYyBmb3IgZGV0ZXJt aW5pbmcgd2hlbiB0byBvcHRpbWl6ZQo+ID4gd2F0ZXJtYXJrcy7CoMKgV2UKPiA+IMKgwqDCoHdl cmUgbmVlZGxlc3NseSBvcHRpbWl6aW5nIHdoZW4gdGhlIGludGVybWVkaWF0ZS9vcHRpbWFsIHZh bHVlcwo+ID4gd2VyZQo+ID4gwqDCoMKgdGhlIHNhbWUgKGhhcm1sZXNzKSwgYnV0IG5vdCBhY3R1 YWxseSBvcHRpbWl6aW5nIHdoZW4gdGhleQo+ID4gZGlmZmVyZWQKPiA+IMKgwqDCoChhbHNvIGhh cm1sZXNzLCBidXQgd2FzdGVmdWwgZnJvbSBhIHBvd2VyL2JhbmR3aWR0aAo+ID4gcGVyc3BlY3Rp dmUpLgo+ID4gCj4gPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5y b3BlckBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuY8KgwqDCoMKgwqDCoHzCoMKgwqAxICsKPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaMKgwqDCoMKgwqDCoHzCoMKgMTMgKystCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jwqDCoHzCoMKgwqAxICsKPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHzCoMKgOTcgKysrKysrKysrKysrKysrKysrKy0tCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoHzCoMKgMjggKysrKystCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKgwqB8IDE2Mgo+ID4gKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiA+IMKgNiBmaWxlcyBjaGFuZ2VkLCAy NDQgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMKPiA+IGluZGV4IDFjNmQyMjcuLjM2YzBjZjEgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jCj4gPiBAQCAtMTAxMCw2ICsxMDEwLDcgQEAgaW50IGk5MTVfZHJpdmVy X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4g PiDCoAltdXRleF9pbml0KCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gPiDCoAltdXRleF9pbml0KCZk ZXZfcHJpdi0+bW9kZXNldF9yZXN0b3JlX2xvY2spOwo+ID4gwqAJbXV0ZXhfaW5pdCgmZGV2X3By aXYtPmF2X211dGV4KTsKPiA+ICsJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsK PiA+IMKgCj4gPiDCoAlyZXQgPSBpOTE1X3dvcmtxdWV1ZXNfaW5pdChkZXZfcHJpdik7Cj4gPiDC oAlpZiAocmV0IDwgMCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDll NzZiZmMuLmNmMTdkNjIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBAQCAt NjMxLDcgKzYzMSwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gPiDCoAkJ CcKgwqBzdHJ1Y3QgZHBsbCAqYmVzdF9jbG9jayk7Cj4gPiDCoAlpbnQgKCpjb21wdXRlX3BpcGVf d20pKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gwqAJCQnCoMKgwqDCoMKgwqDCoHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gPiAtCXZvaWQgKCpwcm9ncmFtX3dhdGVybWFy a3MpKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqY3N0YXRlKTsKPiA+ICsJaW50ICgqY29t cHV0ZV9pbnRlcm1lZGlhdGVfd20pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkJCcKg wqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2NydGMKPiA+ICppbnRlbF9jcnRjLAo+ID4gKwkJCQnC oMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqbmV3c3RhdGUpOwo+ID4g Kwl2b2lkICgqaW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4g KmNzdGF0ZSk7Cj4gPiArCXZvaWQgKCpvcHRpbWl6ZV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZQo+ID4gKmNzdGF0ZSk7Cj4gPiDCoAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpOwo+ID4gwqAJaW50ICgqbW9kZXNldF9jYWxjX2NkY2xrKShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gwqAJdm9pZCAoKm1vZGVzZXRfY29tbWl0X2Nk Y2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ID4gKnN0YXRlKTsKPiA+IEBAIC0xOTgwLDYg KzE5ODQsMTMgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ID4gwqAJCX07Cj4gPiDCoAo+ ID4gwqAJCXVpbnQ4X3QgbWF4X2xldmVsOwo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCcKgKiBTaG91 bGQgYmUgaGVsZCBhcm91bmQgYXRvbWljIFdNIHJlZ2lzdGVyCj4gPiB3cml0aW5nOyBhbHNvCj4g PiArCQnCoCogcHJvdGVjdHMgKiBpbnRlbF9jcnRjLT53bS5hY3RpdmUgYW5kCj4gPiArCQnCoCog Y3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlLgo+ID4gKwkJwqAqLwo+ID4gKwkJc3RydWN0 IG11dGV4IHdtX211dGV4Owo+ID4gwqAJfSB3bTsKPiA+IMKgCj4gPiDCoAlzdHJ1Y3QgaTkxNV9y dW50aW1lX3BtIHBtOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gPiBp bmRleCA0NjI1ZjhhLi45NjgyZDk0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pYy5jCj4gPiBAQCAtOTcsNiArOTcsNyBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiDCoAljcnRjX3N0YXRlLT5kaXNhYmxlX2xwX3dtID0g ZmFsc2U7Cj4gPiDCoAljcnRjX3N0YXRlLT5kaXNhYmxlX2N4c3IgPSBmYWxzZTsKPiA+IMKgCWNy dGNfc3RhdGUtPndtX2NoYW5nZWQgPSBmYWxzZTsKPiA+ICsJY3J0Y19zdGF0ZS0+d20ubmVlZF9w b3N0dmJsX3VwZGF0ZSA9IGZhbHNlOwo+ID4gwqAKPiA+IMKgCXJldHVybiAmY3J0Y19zdGF0ZS0+ YmFzZTsKPiA+IMKgfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ IGluZGV4IGRlZWU1NjAuLjQyM2I5OWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gQEAgLTQ4NDYsNyArNDg0Niw0MiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w cmVfcGxhbmVfdXBkYXRlKHN0cnVjdAo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUpCj4gPiDCoAkJCWludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpOwo+ID4g wqAJfQo+ID4gwqAKPiA+IC0JaWYgKCFuZWVkc19tb2Rlc2V0KCZwaXBlX2NvbmZpZy0+YmFzZSkg JiYgcGlwZV9jb25maWctCj4gPiA+d21fY2hhbmdlZCkKPiA+ICsJLyoKPiA+ICsJwqAqIElWQiB3 b3JrYXJvdW5kOiBtdXN0IGRpc2FibGUgbG93IHBvd2VyIHdhdGVybWFya3MgZm9yCj4gPiBhdCBs ZWFzdAo+ID4gKwnCoCogb25lIGZyYW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5nLsKgwqBMUCB3 YXRlcm1hcmtzIGNhbgo+ID4gYmUgcmUtZW5hYmxlZAo+ID4gKwnCoCogd2hlbiBzY2FsaW5nIGlz IGRpc2FibGVkLgo+ID4gKwnCoCoKPiA+ICsJwqAqIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2Nh bGluZzppdmIKPiA+ICsJwqAqLwo+ID4gKwlpZiAocGlwZV9jb25maWctPmRpc2FibGVfbHBfd20p IHsKPiA+ICsJCWlsa19kaXNhYmxlX2xwX3dtKGRldik7Cj4gPiArCQlpbnRlbF93YWl0X2Zvcl92 YmxhbmsoZGV2LCBjcnRjLT5waXBlKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKgo+ID4gKwnCoCog SWYgd2UncmUgZG9pbmcgYSBtb2Rlc2V0LCB3ZSdyZSBkb25lLsKgwqBObyBuZWVkIHRvIGRvCj4g PiBhbnkgcHJlLXZibGFuawo+ID4gKwnCoCogd2F0ZXJtYXJrIHByb2dyYW1taW5nIGhlcmUuCj4g PiArCcKgKi8KPiA+ICsJaWYgKG5lZWRzX21vZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNlKSkKPiA+ ICsJCXJldHVybjsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJwqAqIEZvciBwbGF0Zm9ybXMgdGhhdCBz dXBwb3J0IGF0b21pYyB3YXRlcm1hcmtzLCBwcm9ncmFtCj4gPiB0aGUKPiA+ICsJwqAqICdpbnRl cm1lZGlhdGUnIHdhdGVybWFya3MgaW1tZWRpYXRlbHkuwqDCoE9uIHByZS1nZW45Cj4gPiBwbGF0 Zm9ybXMsIHRoZXNlCj4gPiArCcKgKiB3aWxsIGJlIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHRo YXQgYXJlIHNhZmUgZm9yIGJvdGgKPiA+IHByZS0gYW5kCj4gPiArCcKgKiBwb3N0LSB2Ymxhbms7 IHdoZW4gdmJsYW5rIGhhcHBlbnMsIHRoZSAnYWN0aXZlJyB2YWx1ZXMKPiA+IHdpbGwgYmUgc2V0 Cj4gPiArCcKgKiB0byB0aGUgZmluYWwgJ3RhcmdldCcgdmFsdWVzIGFuZCB3ZSdsbCBkbyB0aGlz IGFnYWluIHRvCj4gPiBnZXQgdGhlCj4gPiArCcKgKiBvcHRpbWFsIHdhdGVybWFya3MuwqDCoEZv ciBnZW45KyBwbGF0Zm9ybXMsIHRoZSB2YWx1ZXMgd2UKPiA+IHByb2dyYW0gaGVyZQo+ID4gKwnC oCogd2lsbCBiZSB0aGUgZmluYWwgdGFyZ2V0IHZhbHVlcyB3aGljaCB3aWxsIGdldAo+ID4gYXV0 b21hdGljYWxseSBsYXRjaGVkCj4gPiArCcKgKiBhdCB2YmxhbmsgdGltZTsgbm8gZnVydGhlciBw cm9ncmFtbWluZyB3aWxsIGJlCj4gPiBuZWNlc3NhcnkuCj4gPiArCcKgKgo+ID4gKwnCoCogSWYg YSBwbGF0Zm9ybSBoYXNuJ3QgYmVlbiB0cmFuc2l0aW9uZWQgdG8gYXRvbWljCj4gPiB3YXRlcm1h cmtzIHlldCwKPiA+ICsJwqAqIHdlJ2xsIGNvbnRpbnVlIHRvIHVwZGF0ZSB3YXRlcm1hcmtzIHRo ZSBvbGQgd2F5LCBpZgo+ID4gZmxhZ3MgdGVsbAo+ID4gKwnCoCogdXMgdG8uCj4gPiArCcKgKi8K PiA+ICsJaWYgKGRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+ ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsK PiA+ICsJZWxzZSBpZiAocGlwZV9jb25maWctPndtX2NoYW5nZWQpCj4gPiDCoAkJaW50ZWxfdXBk YXRlX3dhdGVybWFya3MoJmNydGMtPmJhc2UpOwo+ID4gwqB9Cj4gPiDCoAo+ID4gQEAgLTQ5MjUs NyArNDk2MCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdAo+ID4g ZHJtX2NydGMgKmNydGMpCj4gPiDCoAnCoCovCj4gPiDCoAlpbnRlbF9jcnRjX2xvYWRfbHV0KGNy dGMpOwo+ID4gwqAKPiA+IC0JaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7Cj4gPiArCWRl dl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhpbnRlbF9jcnRjLT5jb25maWcpOwo+ ID4gwqAJaW50ZWxfZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7Cj4gPiDCoAo+ID4gwqAJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ID4gQEAgLTUwMjQsNyArNTA1OSw3 IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0Cj4gPiBkcm1fY3J0YyAq Y3J0YykKPiA+IMKgCWlmICghaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHNpX2VuY29kZXIpCj4g PiDCoAkJaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoY3J0Yyk7Cj4gPiDCoAo+ID4g LQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiA+ICsJZGV2X3ByaXYtPmRpc3BsYXku aW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsKPiA+IMKgCWludGVsX2VuYWJsZV9waXBl KGludGVsX2NydGMpOwo+ID4gwqAKPiA+IMKgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19w Y2hfZW5jb2RlcikKPiA+IEBAIC0xMTgwMCw2ICsxMTgzNSw3IEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdAo+ID4gZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBsYW5lX3N0YXRlLT5wbGFuZTsK PiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IMKgCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiA+IMKgCQl0b19pbnRlbF9wbGFu ZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwo+ID4gwqAJaW50IGlkeCA9IGludGVsX2NydGMtPmJhc2Uu YmFzZS5pZCwgcmV0Owo+ID4gQEAgLTExODU5LDYgKzExODk1LDExIEBAIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdAo+ID4gZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gPiDCoAkJcGlwZV9jb25maWctPndtX2NoYW5nZWQgPSB0cnVlOwo+ID4gwqAJfQo+ID4g wqAKPiA+ICsJLyogUHJlLWdlbjkgcGxhdGZvcm1zIG5lZWQgdHdvLXN0ZXAgd2F0ZXJtYXJrIHVw ZGF0ZXMgKi8KPiA+ICsJaWYgKHBpcGVfY29uZmlnLT53bV9jaGFuZ2VkICYmIElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgOSAmJgo+ID4gKwnCoMKgwqDCoGRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXpl X3dhdGVybWFya3MpCj4gPiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLQo+ID4g PndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSB0cnVlOwo+ID4gKwo+ID4gwqAJaWYgKHZpc2libGUg fHwgd2FzX3Zpc2libGUpCj4gPiDCoAkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KPiA+ IMKgCQkJdG9faW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gPiBAQCAtMTE5 ODMsOCArMTIwMjQsMjkgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1 Y3QKPiA+IGRybV9jcnRjICpjcnRjLAo+ID4gwqAJcmV0ID0gMDsKPiA+IMKgCWlmIChkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20pIHsKPiA+IMKgCQlyZXQgPSBkZXZfcHJpdi0KPiA+ ID5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bShpbnRlbF9jcnRjLCBzdGF0ZSk7Cj4gPiAtCQlpZiAo cmV0KQo+ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIlRhcmdldCBwaXBl IHdhdGVybWFya3MgYXJlCj4gPiBpbnZhbGlkXG4iKTsKPiA+IMKgCQkJcmV0dXJuIHJldDsKPiA+ ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9p bnRlcm1lZGlhdGVfd20gJiYKPiA+ICsJwqDCoMKgwqAhdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0 YXRlKS0+c2tpcF9pbnRlcm1lZGlhdGVfd20pIHsKPiA+ICsJCWlmIChXQVJOX09OKCFkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20pKQo+ID4gKwkJCXJldHVybiAwOwo+ID4gKwo+ID4g KwkJLyoKPiA+ICsJCcKgKiBDYWxjdWxhdGUgJ2ludGVybWVkaWF0ZScgd2F0ZXJtYXJrcyB0aGF0 Cj4gPiBzYXRpc2Z5IGJvdGggdGhlCj4gPiArCQnCoCogb2xkIHN0YXRlIGFuZCB0aGUgbmV3IHN0 YXRlLsKgwqBXZSBjYW4gcHJvZ3JhbQo+ID4gdGhlc2UKPiA+ICsJCcKgKiBpbW1lZGlhdGVseS4K PiA+ICsJCcKgKi8KPiA+ICsJCXJldCA9IGRldl9wcml2LQo+ID4gPmRpc3BsYXkuY29tcHV0ZV9p bnRlcm1lZGlhdGVfd20oY3J0Yy0+ZGV2LAo+ID4gKwkJCQkJCQkJaW4KPiA+IHRlbF9jcnRjLAo+ ID4gKwkJCQkJCQkJcGkKPiA+IHBlX2NvbmZpZyk7Cj4gPiArCQlpZiAocmV0KSB7Cj4gPiArCQkJ RFJNX0RFQlVHX0tNUygiTm8gdmFsaWQgaW50ZXJtZWRpYXRlIHBpcGUKPiA+IHdhdGVybWFya3Mg YXJlIHBvc3NpYmxlXG4iKTsKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwkJfQo+ID4gwqAJfQo+ ID4gwqAKPiA+IMKgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gPiBAQCAtMTM0 NTIsNiArMTM1MTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0Cj4g PiBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gwqAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwo+ID4gwqAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlOwo+ID4gwqAJaW50IHJldCA9IDAsIGk7Cj4gPiDCoAli b29sIGh3X2NoZWNrID0gaW50ZWxfc3RhdGUtPm1vZGVzZXQ7Cj4gPiDCoAo+ID4gQEAgLTEzNTU1 LDYgKzEzNjE4LDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QKPiA+ IGRybV9kZXZpY2UgKmRldiwKPiA+IMKgCj4gPiDCoAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zv cl92YmxhbmtzKGRldiwgc3RhdGUpOwo+ID4gwqAKPiA+ICsJLyoKPiA+ICsJwqAqIE5vdyB0aGF0 IHRoZSB2YmxhbmsgaGFzIHBhc3NlZCwgd2UgY2FuIGdvIGFoZWFkIGFuZAo+ID4gcHJvZ3JhbSB0 aGUKPiA+ICsJwqAqIG9wdGltYWwgd2F0ZXJtYXJrcyBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIHR3 by1zdGVwCj4gPiB3YXRlcm1hcmsKPiA+ICsJwqAqIHByb2dyYW1taW5nLgo+ID4gKwnCoCoKPiA+ ICsJwqAqIFRPRE86IE1vdmUgdGhpcyAoYW5kIG90aGVyIGNsZWFudXApIHRvIGFuIGFzeW5jIHdv cmtlcgo+ID4gZXZlbnR1YWxseS4KPiA+ICsJwqAqLwo+ID4gKwlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPiArCQlpbnRlbF9jc3RhdGUgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ICsKPiA+ICsJCWlmIChkZXZfcHJp di0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQo+ID4gKwkJCWRldl9wcml2LQo+ID4gPmRp c3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyhpbnRlbF9jc3RhdGUpOwo+ID4gKwl9Cj4gPiArCj4g PiDCoAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiDCoAlkcm1fYXRvbWljX2hl bHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+IMKgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gQEAgLTE1MjI1LDcgKzE1MzAyLDcgQEAgc3RhdGljIHZvaWQg c2FuaXRpemVfd2F0ZXJtYXJrcyhzdHJ1Y3QKPiA+IGRybV9kZXZpY2UgKmRldikKPiA+IMKgCWlu dCBpOwo+ID4gwqAKPiA+IMKgCS8qIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0aGF0IHVz ZSBhdG9taWMgd2F0ZXJtYXJrCj4gPiBkZXNpZ24gKi8KPiA+IC0JaWYgKCFkZXZfcHJpdi0+ZGlz cGxheS5wcm9ncmFtX3dhdGVybWFya3MpCj4gPiArCWlmICghZGV2X3ByaXYtPmRpc3BsYXkub3B0 aW1pemVfd2F0ZXJtYXJrcykKPiA+IMKgCQlyZXR1cm47Cj4gPiDCoAo+ID4gwqAJLyoKPiA+IEBA IC0xNTI0Niw2ICsxNTMyMywxMyBAQCByZXRyeToKPiA+IMKgCWlmIChXQVJOX09OKElTX0VSUihz dGF0ZSkpKQo+ID4gwqAJCWdvdG8gZmFpbDsKPiA+IMKgCj4gPiArCS8qCj4gPiArCcKgKiBIYXJk d2FyZSByZWFkb3V0IGlzIHRoZSBvbmx5IHRpbWUgd2UgZG9uJ3Qgd2FudCB0bwo+ID4gY2FsY3Vs YXRlCj4gPiArCcKgKiBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcyAoc2luY2Ugd2UgZG9uJ3QgdHJ1 c3QgdGhlCj4gPiBjdXJyZW50Cj4gPiArCcKgKiB3YXRlcm1hcmtzKS4KPiA+ICsJwqAqLwo+ID4g Kwl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5za2lwX2ludGVybWVkaWF0ZV93bSA9IHRy dWU7Cj4gPiArCj4gPiDCoAlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4g PiDCoAlpZiAocmV0KSB7Cj4gPiDCoAkJLyoKPiA+IEBAIC0xNTI2OCw3ICsxNTM1Miw4IEBAIHJl dHJ5Ogo+ID4gwqAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBp KSB7Cj4gPiDCoAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzID0KPiA+IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3N0YXRlKTsKPiA+IMKgCj4gPiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5wcm9ncmFt X3dhdGVybWFya3MoY3MpOwo+ID4gKwkJY3MtPndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSB0cnVl Owo+ID4gKwkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyhjcyk7Cj4gPiDC oAl9Cj4gPiDCoAo+ID4gwqAJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggNDg1MjA0OS4uYTlmNzY0MSAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTI2MCw2ICsyNjAsMTIgQEAgc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gPiDCoAo+ID4gwqAJc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsX2NvbmZpZwo+ID4gc2hhcmVkX2RwbGxbSTkxNV9OVU1fUExMU107Cj4gPiDCoAlzdHJ1 Y3QgaW50ZWxfd21fY29uZmlnIHdtX2NvbmZpZzsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJwqAqIEN1 cnJlbnQgd2F0ZXJtYXJrcyBjYW4ndCBiZSB0cnVzdGVkIGR1cmluZyBoYXJkd2FyZQo+ID4gcmVh ZG91dCwgc28KPiA+ICsJwqAqIGRvbid0IGJvdGhlciBjYWxjdWxhdGluZyBpbnRlcm1lZGlhdGUg d2F0ZXJtYXJrcy4KPiA+ICsJwqAqLwo+ID4gKwlib29sIHNraXBfaW50ZXJtZWRpYXRlX3dtOwo+ ID4gwqB9Owo+ID4gwqAKPiA+IMKgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiA+IEBAIC01 MDksMTMgKzUxNSwyOSBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gPiDCoAo+ID4gwqAJ c3RydWN0IHsKPiA+IMKgCQkvKgo+ID4gLQkJwqAqIG9wdGltYWwgd2F0ZXJtYXJrcywgcHJvZ3Jh bW1lZCBwb3N0LXZibGFuayB3aGVuCj4gPiB0aGlzIHN0YXRlCj4gPiAtCQnCoCogaXMgY29tbWl0 dGVkCj4gPiArCQnCoCogT3B0aW1hbCB3YXRlcm1hcmtzLCBwcm9ncmFtbWVkIHBvc3QtdmJsYW5r IHdoZW4KPiA+IHRoaXMgc3RhdGUKPiA+ICsJCcKgKiBpcyBjb21taXR0ZWQuCj4gPiDCoAkJwqAq Lwo+ID4gwqAJCXVuaW9uIHsKPiA+IMKgCQkJc3RydWN0IGludGVsX3BpcGVfd20gaWxrOwo+ID4g wqAJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gc2tsOwo+ID4gwqAJCX0gb3B0aW1hbDsKPiA+ICsKPiA+ ICsJCS8qCj4gPiArCQnCoCogSW50ZXJtZWRpYXRlIHdhdGVybWFya3M7IHRoZXNlIGNhbiBiZQo+ ID4gcHJvZ3JhbW1lZCBpbW1lZGlhdGVseQo+ID4gKwkJwqAqIHNpbmNlIHRoZXkgc2F0aXNmeSBi b3RoIHRoZSBjdXJyZW50Cj4gPiBjb25maWd1cmF0aW9uIHdlJ3JlCj4gPiArCQnCoCogc3dpdGNo aW5nIGF3YXkgZnJvbSBhbmQgdGhlIG5ldyBjb25maWd1cmF0aW9uCj4gPiB3ZSdyZSBzd2l0Y2hp bmcKPiA+ICsJCcKgKiB0by4KPiA+ICsJCcKgKi8KPiA+ICsJCXN0cnVjdCBpbnRlbF9waXBlX3dt IGludGVybWVkaWF0ZTsKPiA+ICsKPiA+ICsJCS8qCj4gPiArCQnCoCogUGxhdGZvcm1zIHdpdGgg dHdvLXN0ZXAgd2F0ZXJtYXJrIHByb2dyYW1taW5nCj4gPiB3aWxsIG5lZWQgdG8KPiA+ICsJCcKg KiB1cGRhdGUgd2F0ZXJtYXJrIHByb2dyYW1taW5nIHBvc3QtdmJsYW5rIHRvCj4gPiBzd2l0Y2gg ZnJvbSB0aGUKPiA+ICsJCcKgKiBzYWZlIGludGVybWVkaWF0ZSB3YXRlcm1hcmtzIHRvIHRoZSBv cHRpbWFsCj4gPiBmaW5hbAo+ID4gKwkJwqAqIHdhdGVybWFya3MuCj4gPiArCQnCoCovCj4gPiAr CQlib29sIG5lZWRfcG9zdHZibF91cGRhdGU7Cj4gPiDCoAl9IHdtOwo+ID4gwqB9Owo+ID4gwqAK PiA+IEBAIC02MDEsNiArNjIzLDcgQEAgc3RydWN0IGludGVsX2NydGMgewo+ID4gwqAJCQlzdHJ1 Y3QgaW50ZWxfcGlwZV93bSBpbGs7Cj4gPiDCoAkJCXN0cnVjdCBza2xfcGlwZV93bSBza2w7Cj4g PiDCoAkJfSBhY3RpdmU7Cj4gPiArCj4gPiDCoAkJLyogYWxsb3cgQ3hTUiBvbiB0aGlzIHBpcGUg Ki8KPiA+IMKgCQlib29sIGN4c3JfYWxsb3dlZDsKPiA+IMKgCX0gd207Cj4gPiBAQCAtMTU2Niw2 ICsxNTg5LDcgQEAgdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlCj4g PiAqZGV2KTsKPiA+IMKgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAkJCcKgwqBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9u ICpkZGIgLyogb3V0Cj4gPiAqLyk7Cj4gPiDCoHVpbnQzMl90IGlsa19waXBlX3BpeGVsX3JhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ICpwaXBlX2NvbmZpZyk7Cj4gPiArYm9v bCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+IMKgaW50IHNh bml0aXplX3JjNl9vcHRpb24oY29uc3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50Cj4gPiBl bmFibGVfcmM2KTsKPiA+IMKgCj4gPiDCoC8qIGludGVsX3Nkdm8uYyAqLwo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+ID4gaW5kZXggMzQ3ZDRkZi4uY2NkYjU4MSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IEBAIC0yMjc4LDYgKzIyNzgsMjkgQEAgc3RhdGljIHZv aWQgc2tsX3NldHVwX3dtX2xhdGVuY3koc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYpCj4gPiDC oAlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRldiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0KPiA+ ID53bS5za2xfbGF0ZW5jeSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiArc3RhdGljIGJvb2wgaWxrX3Zh bGlkYXRlX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJCQkJwqBzdHJ1Y3Qg aW50ZWxfcGlwZV93bSAqcGlwZV93bSkKPiA+ICt7Cj4gPiArCS8qIExQMCB3YXRlcm1hcmsgbWF4 aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlwZSBhbG9uZSAqLwo+ID4gKwljb25zdCBzdHJ1Y3QgaW50 ZWxfd21fY29uZmlnIGNvbmZpZyA9IHsKPiA+ICsJCS5udW1fcGlwZXNfYWN0aXZlID0gMSwKPiA+ ICsJCS5zcHJpdGVzX2VuYWJsZWQgPSBwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQsCj4gPiArCQku c3ByaXRlc19zY2FsZWQgPSBwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCwKPiA+ICsJfTsKPiA+ICsJ c3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7Cj4gPiArCj4gPiArCS8qIExQMCB3YXRlcm1hcmtz IGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRpb25pbmcgKi8KPiA+ICsJaWxrX2NvbXB1dGVfd21f bWF4aW11bXMoZGV2LCAwLCAmY29uZmlnLAo+ID4gSU5URUxfRERCX1BBUlRfMV8yLCAmbWF4KTsK PiA+ICsKPiA+ICsJLyogQXQgbGVhc3QgTFAwIG11c3QgYmUgdmFsaWQgKi8KPiA+ICsJaWYgKCFp bGtfdmFsaWRhdGVfd21fbGV2ZWwoMCwgJm1heCwgJnBpcGVfd20tPndtWzBdKSkgewo+ID4gKwkJ RFJNX0RFQlVHX0tNUygiTFAwIHdhdGVybWFyayBpbnZhbGlkXG4iKTsKPiA+ICsJCXJldHVybiBm YWxzZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiDC oC8qIENvbXB1dGUgbmV3IHdhdGVybWFya3MgZm9yIHRoZSBwaXBlICovCj4gPiDCoHN0YXRpYyBp bnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+ IMKgCQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiBA QCAtMjI5MiwxMCArMjMxNSw2IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1 Y3QKPiA+IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnNwcnN0YXRlID0gTlVMTDsKPiA+IMKgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq Y3Vyc3RhdGUgPSBOVUxMOwo+ID4gwqAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4 X2xldmVsKGRldik7Cj4gPiAtCS8qIExQMCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5kIG9uIHRo aXMgcGlwZSBhbG9uZSAqLwo+ID4gLQlzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIGNvbmZpZyA9IHsK PiA+IC0JCS5udW1fcGlwZXNfYWN0aXZlID0gMSwKPiA+IC0JfTsKPiA+IMKgCXN0cnVjdCBpbGtf d21fbWF4aW11bXMgbWF4Owo+ID4gwqAKPiA+IMKgCWNzdGF0ZSA9IGludGVsX2F0b21pY19nZXRf Y3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gPiBAQCAtMjMxOSwyMSArMjMzOCwxOCBA QCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0Cj4gPiBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLAo+ID4gwqAJCQljdXJzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzKTsK PiA+IMKgCX0KPiA+IMKgCj4gPiAtCWNvbmZpZy5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+ dmlzaWJsZTsKPiA+IC0JY29uZmlnLnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPnZpc2libGUg JiYKPiA+ICsJcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3N0YXRlLT5iYXNlLmFjdGl2ZTsKPiA+ ICsJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4gPiArCXBp cGVfd20tPnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPnZpc2libGUgJiYKPiA+IMKgCQkoZHJt X3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5kc3QpICE9Cj4gPiBkcm1fcmVjdF93aWR0aCgmc3Byc3Rh dGUtPnNyYykgPj4gMTYgfHwKPiA+IMKgCQlkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5kc3Qp ICE9Cj4gPiBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5zcmMpID4+IDE2KTsKPiA+IMKgCj4g PiAtCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNzdGF0ZS0+YmFzZS5hY3RpdmU7Cj4gPiAtCXBp cGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IGNvbmZpZy5zcHJpdGVzX2VuYWJsZWQ7Cj4gPiAtCXBp cGVfd20tPnNwcml0ZXNfc2NhbGVkID0gY29uZmlnLnNwcml0ZXNfc2NhbGVkOwo+ID4gLQo+ID4g wqAJLyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNwcml0ZXMgKi8KPiA+IMKg CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2ICYmIHNwcnN0YXRlLT52aXNpYmxlKQo+ID4g wqAJCW1heF9sZXZlbCA9IDE7Cj4gPiDCoAo+ID4gwqAJLyogSUxLL1NOQi9JVkI6IExQMSsgd2F0 ZXJtYXJrcyBvbmx5IHcvbyBzY2FsaW5nICovCj4gPiAtCWlmIChjb25maWcuc3ByaXRlc19zY2Fs ZWQpCj4gPiArCWlmIChwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCkKPiA+IMKgCQltYXhfbGV2ZWwg PSAwOwo+ID4gwqAKPiA+IMKgCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9j cnRjLCAwLCBjc3RhdGUsCj4gPiBAQCAtMjM0MiwxMiArMjM1OCw4IEBAIHN0YXRpYyBpbnQgaWxr X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QKPiA+IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiDC oAlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ID4gwqAJCXBpcGVf d20tPmxpbmV0aW1lID0gaHN3X2NvbXB1dGVfbGluZXRpbWVfd20oZGV2LAo+ID4gY3N0YXRlKTsK PiA+IMKgCj4gPiAtCS8qIExQMCB3YXRlcm1hcmtzIGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRp b25pbmcgKi8KPiA+IC0JaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAwLCAmY29uZmlnLAo+ ID4gSU5URUxfRERCX1BBUlRfMV8yLCAmbWF4KTsKPiA+IC0KPiA+IC0JLyogQXQgbGVhc3QgTFAw IG11c3QgYmUgdmFsaWQgKi8KPiA+IC0JaWYgKCFpbGtfdmFsaWRhdGVfd21fbGV2ZWwoMCwgJm1h eCwgJnBpcGVfd20tPndtWzBdKSkKPiA+IC0JCXJldHVybiAtRUlOVkFMOwo+ID4gKwlpZiAoIWls a192YWxpZGF0ZV9waXBlX3dtKGRldiwgcGlwZV93bSkpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4g PiDCoAo+ID4gwqAJaWxrX2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRldiwgMSwgJm1heCk7Cj4g PiDCoAo+ID4gQEAgLTIzNzIsNiArMjM4NCw1OSBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3Bp cGVfd20oc3RydWN0Cj4gPiBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ID4gwqB9Cj4gPiDCoAo+ ID4gwqAvKgo+ID4gKyAqIEJ1aWxkIGEgc2V0IG9mICdpbnRlcm1lZGlhdGUnIHdhdGVybWFyayB2 YWx1ZXMgdGhhdCBzYXRpc2Z5Cj4gPiBib3RoIHRoZSBvbGQKPiA+ICsgKiBzdGF0ZSBhbmQgdGhl IG5ldyBzdGF0ZS7CoMKgVGhlc2UgY2FuIGJlIHByb2dyYW1tZWQgdG8gdGhlCj4gPiBoYXJkd2Fy ZQo+ID4gKyAqIGltbWVkaWF0ZWx5Lgo+ID4gKyAqLwo+ID4gK3N0YXRpYyBpbnQgaWxrX2NvbXB1 dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkJCcKgwqDC oMKgwqDCoMKgc3RydWN0IGludGVsX2NydGMKPiA+ICppbnRlbF9jcnRjLAo+ID4gKwkJCQnCoMKg wqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqbmV3c3RhdGUpCj4gPiArewo+ ID4gKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYSA9ICZuZXdzdGF0ZS0+d20uaW50ZXJtZWRpYXRl Owo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYiA9ICZpbnRlbF9jcnRjLT53bS5hY3RpdmUu aWxrOwo+ID4gKwlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsK PiA+ICsKPiA+ICsJLyoKPiA+ICsJwqAqIFN0YXJ0IHdpdGggdGhlIGZpbmFsLCB0YXJnZXQgd2F0 ZXJtYXJrcywgdGhlbiBjb21iaW5lCj4gPiB3aXRoIHRoZQo+ID4gKwnCoCogY3VycmVudGx5IGFj dGl2ZSB3YXRlcm1hcmtzIHRvIGdldCB2YWx1ZXMgdGhhdCBhcmUgc2FmZQo+ID4gYm90aCBiZWZv cmUKPiA+ICsJwqAqIGFuZCBhZnRlciB0aGUgdmJsYW5rLgo+ID4gKwnCoCovCj4gPiArCSphID0g bmV3c3RhdGUtPndtLm9wdGltYWwuaWxrOwo+ID4gKwlhLT5waXBlX2VuYWJsZWQgfD0gYi0+cGlw ZV9lbmFibGVkOwo+ID4gKwlhLT5zcHJpdGVzX2VuYWJsZWQgfD0gYi0+c3ByaXRlc19lbmFibGVk Owo+ID4gKwlhLT5zcHJpdGVzX3NjYWxlZCB8PSBiLT5zcHJpdGVzX3NjYWxlZDsKPiA+ICsKPiA+ ICsJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ID4gKwkJ c3RydWN0IGludGVsX3dtX2xldmVsICphX3dtID0gJmEtPndtW2xldmVsXTsKPiA+ICsJCWNvbnN0 IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqYl93bSA9ICZiLT53bVtsZXZlbF07Cj4gPiArCj4gPiAr CQlhX3dtLT5lbmFibGUgJj0gYl93bS0+ZW5hYmxlOwo+ID4gKwkJYV93bS0+cHJpX3ZhbCA9IG1h eChhX3dtLT5wcmlfdmFsLCBiX3dtLT5wcmlfdmFsKTsKPiA+ICsJCWFfd20tPnNwcl92YWwgPSBt YXgoYV93bS0+c3ByX3ZhbCwgYl93bS0+c3ByX3ZhbCk7Cj4gPiArCQlhX3dtLT5jdXJfdmFsID0g bWF4KGFfd20tPmN1cl92YWwsIGJfd20tPmN1cl92YWwpOwo+ID4gKwkJYV93bS0+ZmJjX3ZhbCA9 IG1heChhX3dtLT5mYmNfdmFsLCBiX3dtLT5mYmNfdmFsKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkv Kgo+ID4gKwnCoCogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVzZSBtZXJnZWQgd2F0ZXJt YXJrIHZhbHVlcwo+ID4gYXJlCj4gPiArCcKgKiBhY3R1YWxseSBhIHZhbGlkIGNvbmZpZ3VyYXRp b24gdGhlbXNlbHZlcy7CoMKgSWYgdGhleSdyZQo+ID4gbm90LAo+ID4gKwnCoCogdGhlcmUncyBu byBzYWZlIHdheSB0byB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCBzdGF0ZSB0bwo+ID4gKwnCoCog dGhlIG5ldyBzdGF0ZSwgc28gd2UgbmVlZCB0byBmYWlsIHRoZSBhdG9taWMKPiA+IHRyYW5zYWN0 aW9uLgo+ID4gKwnCoCovCj4gPiArCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20oZGV2LCBhKSkK PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwnCoCogSWYgb3VyIGlu dGVybWVkaWF0ZSBXTSBhcmUgaWRlbnRpY2FsIHRvIHRoZSBmaW5hbCBXTSwKPiA+IHRoZW4gd2Ug Y2FuCj4gPiArCcKgKiBvbWl0IHRoZSBwb3N0LXZibGFuayBwcm9ncmFtbWluZzsgb25seSB1cGRh dGUgaWYgaXQncwo+ID4gZGlmZmVyZW50Lgo+ID4gKwnCoCovCj4gPiArCWlmIChtZW1jbXAoYSwg Jm5ld3N0YXRlLT53bS5vcHRpbWFsLmlsaywgc2l6ZW9mKCphKSkgPT0gMCkKPiA+ICsJCW5ld3N0 YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gZmFsc2U7Cj4gPiArCj4gPiArCXJldHVybiAw Owo+ID4gK30KPiA+ICsKPiA+ICsvKgo+ID4gwqAgKiBNZXJnZSB0aGUgd2F0ZXJtYXJrcyBmcm9t IGFsbCBhY3RpdmUgcGlwZXMgZm9yIGEgc3BlY2lmaWMKPiA+IGxldmVsLgo+ID4gwqAgKi8KPiA+ IMKgc3RhdGljIHZvaWQgaWxrX21lcmdlX3dtX2xldmVsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPiBAQCAtMjM4Myw5ICsyNDQ4LDcgQEAgc3RhdGljIHZvaWQgaWxrX21lcmdlX3dtX2xldmVs KHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2LAo+ID4gwqAJcmV0X3dtLT5lbmFibGUgPSB0cnVl Owo+ID4gwqAKPiA+IMKgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4g PiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0KPiA+IC0JCQl0b19p bnRlbF9jcnRjX3N0YXRlKGludGVsX2NydGMtCj4gPiA+YmFzZS5zdGF0ZSk7Cj4gPiAtCQljb25z dCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZlID0gJmNzdGF0ZS0KPiA+ID53bS5vcHRpbWFs LmlsazsKPiA+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICphY3RpdmUgPSAmaW50ZWxf Y3J0Yy0KPiA+ID53bS5hY3RpdmUuaWxrOwo+ID4gwqAJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9s ZXZlbCAqd20gPSAmYWN0aXZlLQo+ID4gPndtW2xldmVsXTsKPiA+IMKgCj4gPiDCoAkJaWYgKCFh Y3RpdmUtPnBpcGVfZW5hYmxlZCkKPiA+IEBAIC0yNTMzLDE1ICsyNTk2LDE0IEBAIHN0YXRpYyB2 b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4g PiDCoAo+ID4gwqAJLyogTFAwIHJlZ2lzdGVyIHZhbHVlcyAqLwo+ID4gwqAJZm9yX2VhY2hfaW50 ZWxfY3J0YyhkZXYsIGludGVsX2NydGMpIHsKPiA+IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUgPQo+ID4gLQkJCXRvX2ludGVsX2NydGNfc3RhdGUoaW50ZWxfY3J0Yy0K PiA+ID5iYXNlLnN0YXRlKTsKPiA+IMKgCQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7Cj4gPiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKnIgPSAmY3N0YXRlLQo+ID4g PndtLm9wdGltYWwuaWxrLndtWzBdOwo+ID4gKwkJY29uc3Qgc3RydWN0IGludGVsX3dtX2xldmVs ICpyID0KPiA+ICsJCQkmaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsay53bVswXTsKPiA+IMKgCj4g PiDCoAkJaWYgKFdBUk5fT04oIXItPmVuYWJsZSkpCj4gPiDCoAkJCWNvbnRpbnVlOwo+ID4gwqAK PiA+IC0JCXJlc3VsdHMtPndtX2xpbmV0aW1lW3BpcGVdID0gY3N0YXRlLQo+ID4gPndtLm9wdGlt YWwuaWxrLmxpbmV0aW1lOwo+ID4gKwkJcmVzdWx0cy0+d21fbGluZXRpbWVbcGlwZV0gPSBpbnRl bF9jcnRjLQo+ID4gPndtLmFjdGl2ZS5pbGsubGluZXRpbWU7Cj4gPiDCoAo+ID4gwqAJCXJlc3Vs dHMtPndtX3BpcGVbcGlwZV0gPQo+ID4gwqAJCQkoci0+cHJpX3ZhbCA8PCBXTTBfUElQRV9QTEFO RV9TSElGVCkgfAo+ID4gQEAgLTI3NDgsNyArMjgxMCw3IEBAIHN0YXRpYyB2b2lkIGlsa193cml0 ZV93bV92YWx1ZXMoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKg CWRldl9wcml2LT53bS5odyA9ICpyZXN1bHRzOwo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0YXRpYyBi b29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiArYm9vbCBp bGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gwqB7Cj4gPiDCoAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4g wqAKPiA+IEBAIC0zNjQzLDExICszNzA1LDkgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21f Y29uZmlnKHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2LAo+ID4gwqAJfQo+ID4gwqB9Cj4gPiDC oAo+ID4gLXN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGludGVsX2Ny dGNfc3RhdGUKPiA+ICpjc3RhdGUpCj4gPiArc3RhdGljIHZvaWQgaWxrX3Byb2dyYW1fd2F0ZXJt YXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2KQo+ID4gwqB7Cj4gPiAt CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ID4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBkZXZfcHJpdi0+ZGV2Owo+ID4gwqAJc3RydWN0IGludGVsX3BpcGVfd20gbHBfd21fMV8yID0g e30sIGxwX3dtXzVfNiA9IHt9LAo+ID4gKmJlc3RfbHBfd207Cj4gPiDCoAlzdHJ1Y3QgaWxrX3dt X21heGltdW1zIG1heDsKPiA+IMKgCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0ge307 Cj4gPiBAQCAtMzY3OCwyOCArMzczOCwyOCBAQCBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRl cm1hcmtzKHN0cnVjdAo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ID4gwqAJaWxrX3dy aXRlX3dtX3ZhbHVlcyhkZXZfcHJpdiwgJnJlc3VsdHMpOwo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0 YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gK3N0YXRp YyB2b2lkIGlsa19pbml0aWFsX3dhdGVybWFya3Moc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ ICpjc3RhdGUpCj4gPiDCoHsKPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl ID0KPiA+IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ID4gLQo+ID4gLQlXQVJO X09OKGNzdGF0ZS0+YmFzZS5hY3RpdmUgIT0gaW50ZWxfY3J0Yy0+YWN0aXZlKTsKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjc3RhdGUtCj4gPiA+YmFz ZS5jcnRjLT5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3N0YXRlLQo+ID4gPmJhc2UuY3J0Yyk7Cj4gPiDCoAo+ID4gLQkvKgo+ID4gLQnC oCogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IK PiA+IGF0IGxlYXN0Cj4gPiAtCcKgKiBvbmUgZnJhbWUgYmVmb3JlIGVuYWJsaW5nIHNjYWxpbmcu wqDCoExQIHdhdGVybWFya3MgY2FuCj4gPiBiZSByZS1lbmFibGVkCj4gPiAtCcKgKiB3aGVuIHNj YWxpbmcgaXMgZGlzYWJsZWQuCj4gPiAtCcKgKgo+ID4gLQnCoCogV2FDeFNSRGlzYWJsZWRGb3JT cHJpdGVTY2FsaW5nOml2Ygo+ID4gLQnCoCovCj4gPiAtCWlmIChjc3RhdGUtPmRpc2FibGVfbHBf d20pIHsKPiA+IC0JCWlsa19kaXNhYmxlX2xwX3dtKGNydGMtPmRldik7Cj4gPiAtCQlpbnRlbF93 YWl0X2Zvcl92YmxhbmsoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLQo+ID4gPnBpcGUpOwo+ID4gLQl9 Cj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4gPiArCWludGVsX2Ny dGMtPndtLmFjdGl2ZS5pbGsgPSBjc3RhdGUtPndtLmludGVybWVkaWF0ZTsKPiA+ICsJaWxrX3By b2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PndtLndtX211dGV4KTsKPiA+ICt9Cj4gPiDCoAo+ID4gLQlpbnRlbF9jcnRjLT53bS5hY3RpdmUu aWxrID0gY3N0YXRlLT53bS5vcHRpbWFsLmlsazsKPiA+ICtzdGF0aWMgdm9pZCBpbGtfb3B0aW1p emVfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNzdGF0ZSkKPiA+ICt7 Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0YXRl LQo+ID4gPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0KPiA+ID5iYXNlLmNydGMpOwo+ID4gwqAKPiA+IC0J aWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhjc3RhdGUpOwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJp di0+d20ud21fbXV0ZXgpOwo+ID4gKwlpZiAoY3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRl KSB7Cj4gPiArCQlpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLQo+ID4gPndtLm9w dGltYWwuaWxrOwo+ID4gKwkJaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7Cj4gPiAr CX0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ID4gwqB9Cj4g PiDCoAo+ID4gwqBzdGF0aWMgdm9pZCBza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodWludDMyX3Qg dmFsLAo+ID4gQEAgLTcwNzYsOSArNzEzNiwxMyBAQCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+IMKgCQnCoMKgwqDCoMKgZGV2X3ByaXYtPndtLnNwcl9sYXRl bmN5WzFdICYmIGRldl9wcml2LQo+ID4gPndtLmN1cl9sYXRlbmN5WzFdKSB8fAo+ID4gwqAJCcKg wqDCoMKgKCFJU19HRU41KGRldikgJiYgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5WzBdCj4gPiAm Jgo+ID4gwqAJCcKgwqDCoMKgwqBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMF0gJiYgZGV2X3By aXYtCj4gPiA+d20uY3VyX2xhdGVuY3lbMF0pKSB7Cj4gPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXku dXBkYXRlX3dtID0KPiA+IGlsa191cGRhdGVfd207Cj4gPiDCoAkJCWRldl9wcml2LT5kaXNwbGF5 LmNvbXB1dGVfcGlwZV93bSA9Cj4gPiBpbGtfY29tcHV0ZV9waXBlX3dtOwo+ID4gLQkJCWRldl9w cml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJrcyA9Cj4gPiBpbGtfcHJvZ3JhbV93YXRlcm1h cmtzOwo+ID4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtCj4g PiA9Cj4gPiArCQkJCWlsa19jb21wdXRlX2ludGVybWVkaWF0ZV93bTsKPiA+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgPQo+ID4gKwkJCQlpbGtfaW5pdGlhbF93YXRl cm1hcmtzOwo+ID4gKwkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MgPQo+ ID4gKwkJCQlpbGtfb3B0aW1pemVfd2F0ZXJtYXJrczsKPiA+IMKgCQl9IGVsc2Ugewo+ID4gwqAJ CQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5Cj4gPiBwbGFuZSBsYXRlbmN5 LiAiCj4gPiDCoAkJCQnCoMKgwqDCoMKgwqAiRGlzYWJsZSBDeFNSXG4iKTsKPiA+IC0tIAo+ID4g Mi4xLjQKPiA+IAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK