From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [Intel-gfx] [PATCH 4/5] drm/i915: Implement color management on bdw/skl/bxt/kbl Date: Thu, 25 Feb 2016 16:03:26 -0800 Message-ID: <20160226000326.GF23428@intel.com> References: <1456414423-7079-1-git-send-email-lionel.g.landwerlin@intel.com> <1456414423-7079-5-git-send-email-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1456414423-7079-5-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org, kausalmalladi@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBGZWIgMjUsIDIwMTYgYXQgMDM6MzM6NDJQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gUGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsg U2hhcm1hLgo+IAo+IHYyOiBEbyBub3QgcmVhZCBHQU1NQV9NT0RFIHJlZ2lzdGVyIHRvIGZpZ3Vy ZSB3aGF0IG1vZGUgd2UncmUgaW4KPiAKPiB2MzogUHJvZ3JhbSBQUkVDX1BBTF9HQ19NQVggdG8g Y2xhbXAgcGl4ZWwgdmFsdWVzID4gMS4wCj4gCj4gICAgIEFkZCBkb2N1bWVudGF0aW9uIG9uIGhv dyB0aGUgQnJvYWRjYXN0IFJHQiBwcm9wZXJ0eSBpcyBhZmZlY3RlZCBieSBDVE0KPiAKPiB2NDog VXBkYXRlIGNvbnRyaWJ1dG9ycwo+IAo+IHY1OiBSZWZhY3RvciBkZWdhbW1hL2dhbW1hIExVVHMg bG9hZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCj4gCj4gdjY6IEZpeCBtaXNzaW5nIGludGVsX2Ny dGMgdmFyaWFibGUgKGJpc2VjdCBpc3N1ZSkKPiAKPiB2NzogRml4ICYgc2ltcGxpZnkgbGltaXRl ZCByYW5nZSBtYXRyaXggbXVsdGlwbGljYXRpb24KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFu ayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTGlv bmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IEt1bWFyLCBLaXJhbiBTIDxraXJhbi5zLmt1bWFyQGludGVsLmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBLYXVzYWwgTWFsbGFkaSA8a2F1c2FsbWFsbGFkaUBnbWFpbC5jb20+CgpUaGVyZSBh cmUgdHdvIHRyaXZpYWwgdHlwby9zdHlsZSBpdGVtcyB0aGF0IEkgY2FsbCBvdXQgZmFydGhlciBk b3duLCBidXQKYXNpZGUgZnJvbSB0aG9zZSwgeW91J3ZlIGFkZHJlc3NlZCBldmVyeXRoaW5nIEkg c2F3IGluIGVhcmxpZXIgdmVyc2lvbnMKb2YgdGhpcyBwYXRjaC4gIEl0J3MgYSBwcmV0dHkgbGFy Z2UvY29tcGxpY2F0ZWQgcGF0Y2ggb3ZlcmFsbCwgc28gdGhlcmUKbWF5IGJlIHRoaW5ncyBJIG1p c3NlZCwgYnV0IEkgdGhpbmsgaXQncyBpbiBnb29kIGVub3VnaCBzaGFwZSB0byBtZXJnZS4KCkFj a25vd2xlZGdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KCgo+ IC0tLQo+ICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgICAgICAgfCAgIDYgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgIDI0ICsrLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oICAgICAgfCAgMjIgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgICB8IDM0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMjIgKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mYmRldi5jICAgfCAgIDggKwo+ICA4IGZpbGVzIGNoYW5nZWQsIDM2OSBp bnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9Eb2NCb29rL2dwdS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4g aW5kZXggMTY5MmM0ZC4uNDMwZTk5YiAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jv b2svZ3B1LnRtcGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiBAQCAt MjE1Myw3ICsyMTUzLDExIEBAIHZvaWQgaW50ZWxfY3J0X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgo+ICAJPHRkIHZhbGlnbj0idG9w IiA+eyAiQXV0b21hdGljIiwgIkZ1bGwiLCAiTGltaXRlZCAxNjoyMzUiIH08L3RkPgo+ICAJPHRk IHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KPiAtCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwv dGQ+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID5XaGVuIHRoaXMgcHJvcGVydHkgaXMgc2V0IHRvIExp bWl0ZWQgMTY6MjM1Cj4gKwkJYW5kIENUTSBpcyBzZXQsIHRoZSBoYXJkd2FyZSB3aWxsIGJlIHBy b2dyYW1tZWQgd2l0aCB0aGUKPiArCQlyZXN1bHQgb2YgdGhlIG11bHRpcGxpY2F0aW9uIG9mIENU TSBieSB0aGUgbGltaXRlZCByYW5nZQo+ICsJCW1hdHJpeCB0byBlbnN1cmUgdGhlIHBpeGVscyBu b3JtYWx5IGluIHRoZSByYW5nZSAwLi4xLjAgYXJlCj4gKwkJcmVtYXBwZWQgdG8gdGhlIHJhbmdl IDE2LzI1NS4uMjM1LzI1NS48L3RkPgo+ICAJPC90cj4KPiAgCTx0cj4KPiAgCTx0ZCB2YWxpZ249 InRvcCIgPuKAnGF1ZGlv4oCdPC90ZD4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAy MGU4MjAwLi4zODA3YjczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTY2LDYg KzY2LDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlcjsKPiAgI2RlZmluZSBJVkJf Q1VSU09SX09GRlNFVFMgXAo+ICAJLmN1cnNvcl9vZmZzZXRzID0geyBDVVJTT1JfQV9PRkZTRVQs IElWQl9DVVJTT1JfQl9PRkZTRVQsIElWQl9DVVJTT1JfQ19PRkZTRVQgfQo+ICAKPiArI2RlZmlu ZSBCRFdfQ09MT1JTIFwKPiArCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSA1MTIsIC5n YW1tYV9sdXRfc2l6ZSA9IDUxMiB9Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2k4MzBfaW5mbyA9IHsKPiAgCS5nZW4gPSAyLCAuaXNfbW9iaWxlID0g MSwgLmN1cnNvcl9uZWVkc19waHlzaWNhbCA9IDEsIC5udW1fcGlwZXMgPSAyLAo+ICAJLmhhc19v dmVybGF5ID0gMSwgLm92ZXJsYXlfbmVlZHNfcGh5c2ljYWwgPSAxLAo+IEBAIC0yODgsMjQgKzI5 MSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2hhc3dl bGxfbV9pbmZvID0gewo+ICAJLmlzX21vYmlsZSA9IDEsCj4gIH07Cj4gIAo+ICsjZGVmaW5lIEJE V19GRUFUVVJFUyBcCj4gKwlIU1dfRkVBVFVSRVMsIFwKPiArCUJEV19DT0xPUlMKPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJvYWR3ZWxsX2RfaW5m byA9IHsKPiAtCUhTV19GRUFUVVJFUywKPiArCUJEV19GRUFUVVJFUywKPiAgCS5nZW4gPSA4LAo+ ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9i cm9hZHdlbGxfbV9pbmZvID0gewo+IC0JSFNXX0ZFQVRVUkVTLAo+ICsJQkRXX0ZFQVRVUkVTLAo+ ICAJLmdlbiA9IDgsIC5pc19tb2JpbGUgPSAxLAo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9icm9hZHdlbGxfZ3QzZF9pbmZvID0gewo+IC0J SFNXX0ZFQVRVUkVTLAo+ICsJQkRXX0ZFQVRVUkVTLAo+ICAJLmdlbiA9IDgsCj4gIAkucmluZ19t YXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVCT1hfUklORyB8IEJT RDJfUklORywKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2lu Zm8gaW50ZWxfYnJvYWR3ZWxsX2d0M21faW5mbyA9IHsKPiAtCUhTV19GRUFUVVJFUywKPiArCUJE V19GRUFUVVJFUywKPiAgCS5nZW4gPSA4LCAuaXNfbW9iaWxlID0gMSwKPiAgCS5yaW5nX21hc2sg PSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5HIHwgQlNEMl9S SU5HLAo+ICB9Owo+IEBAIC0zMjEsMTMgKzMyOCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlu dGVsX2RldmljZV9pbmZvIGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsKPiAgfTsKPiAgCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfc2t5bGFrZV9pbmZvID0g ewo+IC0JSFNXX0ZFQVRVUkVTLAo+ICsJQkRXX0ZFQVRVUkVTLAo+ICAJLmlzX3NreWxha2UgPSAx LAo+ICAJLmdlbiA9IDksCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX3NreWxha2VfZ3QzX2luZm8gPSB7Cj4gLQlIU1dfRkVBVFVSRVMsCj4g KwlCRFdfRkVBVFVSRVMsCj4gIAkuaXNfc2t5bGFrZSA9IDEsCj4gIAkuZ2VuID0gOSwKPiAgCS5y aW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5H IHwgQlNEMl9SSU5HLAo+IEBAIC0zNDUsMTcgKzM1MiwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX2RldmljZV9pbmZvIGludGVsX2Jyb3h0b25faW5mbyA9IHsKPiAgCS5oYXNfZmJjID0g MSwKPiAgCUdFTl9ERUZBVUxUX1BJUEVPRkZTRVRTLAo+ICAJSVZCX0NVUlNPUl9PRkZTRVRTLAo+ ICsJQkRXX0NPTE9SUywKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2 aWNlX2luZm8gaW50ZWxfa2FieWxha2VfaW5mbyA9IHsKPiAtCUhTV19GRUFUVVJFUywKPiArCUJE V19GRUFUVVJFUywKPiAgCS5pc19wcmVsaW1pbmFyeSA9IDEsCj4gIAkuaXNfa2FieWxha2UgPSAx LAo+ICAJLmdlbiA9IDksCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2thYnlsYWtlX2d0M19pbmZvID0gewo+IC0JSFNXX0ZFQVRVUkVTLAo+ ICsJQkRXX0ZFQVRVUkVTLAo+ICAJLmlzX3ByZWxpbWluYXJ5ID0gMSwKPiAgCS5pc19rYWJ5bGFr ZSA9IDEsCj4gIAkuZ2VuID0gOSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA4Y2I0 NDE4Li5lNzFkYzlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTY2Myw2ICs2 NjMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkvKiBkaXNwbGF5IGNs b2NrIGluY3JlYXNlL2RlY3JlYXNlICovCj4gIAkvKiBwbGwgY2xvY2sgaW5jcmVhc2UvZGVjcmVh c2UgKi8KPiAgCj4gKwl2b2lkICgqbG9hZF9jc2NfbWF0cml4KShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwo+ICAJdm9pZCAoKmxvYWRfbHV0cykoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAgfTsK PiAgCj4gQEAgLTgxMiw2ICs4MTMsMTEgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAg CXU4IGhhc19zbGljZV9wZzoxOwo+ICAJdTggaGFzX3N1YnNsaWNlX3BnOjE7Cj4gIAl1OCBoYXNf ZXVfcGc6MTsKPiArCj4gKwlzdHJ1Y3QgY29sb3JfbHV0cyB7Cj4gKwkJdTE2IGRlZ2FtbWFfbHV0 X3NpemU7Cj4gKwkJdTE2IGdhbW1hX2x1dF9zaXplOwo+ICsJfSBjb2xvcjsKPiAgfTsKPiAgCj4g ICN1bmRlZiBERUZJTkVfRkxBRwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGY3NmNi ZjMuLjc2YTllNDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNzY1MSw2ICs3 NjUxLDI4IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lIFBJUEVfQ1ND X1BPU1RPRkZfTUUocGlwZSkJX01NSU9fUElQRShwaXBlLCBfUElQRV9BX0NTQ19QT1NUT0ZGX01F LCBfUElQRV9CX0NTQ19QT1NUT0ZGX01FKQo+ICAjZGVmaW5lIFBJUEVfQ1NDX1BPU1RPRkZfTE8o cGlwZSkJX01NSU9fUElQRShwaXBlLCBfUElQRV9BX0NTQ19QT1NUT0ZGX0xPLCBfUElQRV9CX0NT Q19QT1NUT0ZGX0xPKQo+ICAKPiArLyogcGlwZSBkZWdhbW1hL2dhbW1hIExVVHMgb24gSVZCKyAq Lwo+ICsjZGVmaW5lIF9QQUxfUFJFQ19JTkRFWF9BCTB4NEE0MDAKPiArI2RlZmluZSBfUEFMX1BS RUNfSU5ERVhfQgkweDRBQzAwCj4gKyNkZWZpbmUgX1BBTF9QUkVDX0lOREVYX0MJMHg0QjQwMAo+ ICsjZGVmaW5lICAgUEFMX1BSRUNfMTBfMTJfQklUCQkoMCA8PCAzMSkKPiArI2RlZmluZSAgIFBB TF9QUkVDX1NQTElUX01PREUJCSgxIDw8IDMxKQo+ICsjZGVmaW5lICAgUEFMX1BSRUNfQVVUT19J TkNSRU1FTlQJKDEgPDwgMTUpCj4gKyNkZWZpbmUgX1BBTF9QUkVDX0RBVEFfQQkweDRBNDA0Cj4g KyNkZWZpbmUgX1BBTF9QUkVDX0RBVEFfQgkweDRBQzA0Cj4gKyNkZWZpbmUgX1BBTF9QUkVDX0RB VEFfQwkweDRCNDA0Cj4gKyNkZWZpbmUgX1BBTF9QUkVDX0dDX01BWF9BCTB4NEE0MTAKPiArI2Rl ZmluZSBfUEFMX1BSRUNfR0NfTUFYX0IJMHg0QUMxMAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19HQ19N QVhfQwkweDRCNDEwCj4gKyNkZWZpbmUgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQQkweDRBNDIwCj4g KyNkZWZpbmUgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQgkweDRBQzIwCj4gKyNkZWZpbmUgX1BBTF9Q UkVDX0VYVF9HQ19NQVhfQwkweDRCNDIwCj4gKwo+ICsjZGVmaW5lIFBSRUNfUEFMX0lOREVYKHBp cGUpCQlfTU1JT19QSVBFKHBpcGUsIF9QQUxfUFJFQ19JTkRFWF9BLCBfUEFMX1BSRUNfSU5ERVhf QikKPiArI2RlZmluZSBQUkVDX1BBTF9EQVRBKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9QQUxf UFJFQ19EQVRBX0EsIF9QQUxfUFJFQ19EQVRBX0IpCj4gKyNkZWZpbmUgUFJFQ19QQUxfR0NfTUFY KHBpcGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsIF9QQUxfUFJFQ19HQ19NQVhfQSwgX1BBTF9QUkVD X0dDX01BWF9CKSArIChpKSAqIDQpCj4gKyNkZWZpbmUgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBl LCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFMX1BSRUNfRVhUX0dDX01BWF9BLCBfUEFMX1BSRUNf RVhUX0dDX01BWF9CKSArIChpKSAqIDQpCj4gKwo+ICAvKiBNSVBJIERTSSByZWdpc3RlcnMgKi8K PiAgCj4gICNkZWZpbmUgX01JUElfUE9SVChwb3J0LCBhLCBjKQlfUE9SVDMocG9ydCwgYSwgMCwg YykJLyogcG9ydHMgQSBhbmQgQyBvbmx5ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5j Cj4gaW5kZXggMTY2NTdlYi4uYTZkYzJhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3IuYwo+IEBAIC0yNCwzOSArMjQsMTU1IEBACj4gIAo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi Cj4gIAo+ICsjZGVmaW5lIENUTV9DT0VGRl9TSUdOCSgxVUxMIDw8IDYzKQo+ICsKPiArI2RlZmlu ZSBDVE1fQ09FRkZfMV8wCSgxVUxMIDw8IDMyKQo+ICsjZGVmaW5lIENUTV9DT0VGRl8yXzAJKENU TV9DT0VGRl8xXzAgPDwgMSkKPiArI2RlZmluZSBDVE1fQ09FRkZfNF8wCShDVE1fQ09FRkZfMl8w IDw8IDEpCj4gKyNkZWZpbmUgQ1RNX0NPRUZGXzBfNQkoQ1RNX0NPRUZGXzFfMCA+PiAxKQo+ICsj ZGVmaW5lIENUTV9DT0VGRl8wXzI1CShDVE1fQ09FRkZfMF81ID4+IDEpCj4gKyNkZWZpbmUgQ1RN X0NPRUZGXzBfMTI1CShDVE1fQ09FRkZfMF8yNSA+PiAxKQo+ICsKPiArI2RlZmluZSBDVE1fQ09F RkZfTElNSVRFRF9SQU5HRSAoKDIzNVVMTCAtIDE2VUxMKSAqIENUTV9DT0VGRl8xXzAgLyAyNTUp Cj4gKwo+ICsjZGVmaW5lIENUTV9DT0VGRl9ORUdBVElWRShjb2VmZikJKCgoY29lZmYpICYgQ1RN X0NPRUZGX1NJR04pICE9IDApCj4gKyNkZWZpbmUgQ1RNX0NPRUZGX0FCUyhjb2VmZikJCSgoY29l ZmYpICYgKENUTV9DT0VGRl9TSUdOIC0gMSkpCj4gKwo+ICsjZGVmaW5lIExFR0FDWV9MVVRfTEVO R1RICQkoc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqIDI1NikKPiArCj4gIC8qCj4gLSAq IFNldCB1cCB0aGUgcGlwZSBDU0MgdW5pdC4KPiArICogRXh0cmFjdCB0aGUgQ1NDIGNvZWZmaWNp ZW50IGZyb20gYSBDVE0gY29lZmZpY2llbnQgKGluIFUzMi4zMiBmaXhlZCBwb2ludAo+ICsgKiBm b3JtYXQpLiBUaGlzIG1hY3JvIHRha2VzIHRoZSBjb2VmZmljaWVudCB3ZSB3YW50IHRyYW5zZm9y bWVkIGFuZCB0aGUKPiArICogbnVtYmVyIG9mIGZyYWN0aW9uYWwgYml0cy4KPiAgICoKPiAtICog Q3VycmVudGx5IG9ubHkgZnVsbCByYW5nZSBSR0IgdG8gbGltaXRlZCByYW5nZSBSR0IgY29udmVy c2lvbgo+IC0gKiBpcyBzdXBwb3J0ZWQsIGJ1dCBldmVudHVhbGx5IHRoaXMgc2hvdWxkIGhhbmRs ZSB2YXJpb3VzCj4gLSAqIFJHQjwtPllDYkNyIHNjZW5hcmlvcyBhcyB3ZWxsLgo+ICsgKiBXZSBv bmx5IGhhdmUgYSA5IGJpdHMgcHJlY2lzaW9uIHdpbmRvdyB3aGljaCBzbGlkZXMgZGVwZW5kaW5n IG9uIHRoZSB2YWx1ZQo+ICsgKiBvZiB0aGUgQ1RNIGNvZWZmaWNpZW50IGFuZCB3ZSB3cml0ZSB0 aGUgdmFsdWUgZnJvbSBiaXQgMy4gV2UgYWxzbyByb3VuZCB0aGUKPiArICogdmFsdWUuCj4gICAq Lwo+ICsjZGVmaW5lIEk5WFhfQ1NDX0NPRUZGX0ZQKGNvZWZmLCBmYml0cykJXAo+ICsJKGNsYW1w X3ZhbCgoKGNvZWZmKSA+PiAoMzIgLSAoZmJpdHMpIC0gMykpICsgNCwgMCwgMHhmZmYpICYgMHhm ZjgpCj4gKwo+ICsjZGVmaW5lIEk5WFhfQ1NDX0NPRUZGX0xJTUlURURfUkFOR0UJXAo+ICsJSTlY WF9DU0NfQ09FRkZfRlAoQ1RNX0NPRUZGX0xJTUlURURfUkFOR0UsIDkpCj4gKyNkZWZpbmUgSTlY WF9DU0NfQ09FRkZfMV8wCQlcCj4gKwkoKDcgPDwgMTIpIHwgSTlYWF9DU0NfQ09FRkZfRlAoQ1RN X0NPRUZGXzFfMCwgOCkpCj4gKwo+ICtzdGF0aWMgYm9vbCBjcnRjX3N0YXRlX2lzX2xlZ2FjeShz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlyZXR1cm4gIXN0YXRlLT5kZWdh bW1hX2x1dCAmJgo+ICsJCSFzdGF0ZS0+Y3RtICYmCj4gKwkJc3RhdGUtPmdhbW1hX2x1dCAmJgo+ ICsJCXN0YXRlLT5nYW1tYV9sdXQtPmxlbmd0aCA9PSBMRUdBQ1lfTFVUX0xFTkdUSDsKPiArfQo+ ICsKPiArLyoKPiArICogV2hlbiB1c2luZyBsaW1pdGVkIHJhbmdlLCBtdWx0aXBseSB0aGUgbWF0 cml4IGdpdmVuIGJ5IHVzZXJzcGFjZSBieQo+ICsgKiB0aGUgbWF0cml4IHRoYXQgd2Ugd291bGQg dXNlIGZvciB0aGUgbGltaXRlZCByYW5nZS4gV2UgZG8gdGhlCj4gKyAqIG11bHRpcGxpY2F0aW9u IGluIFUyLjMwIGZvcm1hdC4KPiArICovCj4gK3N0YXRpYyB2b2lkIGN0bV9tdWx0X2J5X2xpbWl0 ZWQodWludDY0X3QgKnJlc3VsdCwgaW50NjRfdCAqaW5wdXQpCj4gK3sKPiArCWludCBpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCA5OyBpKyspCj4gKwkJcmVzdWx0W2ldID0gMDsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gKwkJaW50NjRfdCB1c2VyX2NvZWZmID0gaW5wdXRb aSAqIDMgKyBpXTsKPiArCQl1aW50NjRfdCBsaW1pdGVkX2NvZWZmID0gQ1RNX0NPRUZGX0xJTUlU RURfUkFOR0UgPj4gMjsKPiArCQl1aW50NjRfdCBhYnNfY29lZmYgPSBjbGFtcF92YWwoQ1RNX0NP RUZGX0FCUyh1c2VyX2NvZWZmKSwKPiArCQkJCQkgICAgICAgMCwKPiArCQkJCQkgICAgICAgQ1RN X0NPRUZGXzRfMCAtIDEpID4+IDI7Cj4gKwo+ICsJCXJlc3VsdFtpICogMyArIGldID0gKGxpbWl0 ZWRfY29lZmYgKiBhYnNfY29lZmYpID4+IDI3Owo+ICsJCWlmIChDVE1fQ09FRkZfTkVHQVRJVkUo dXNlcl9jb2VmZikpCj4gKwkJCXJlc3VsdFtpICogMyArIGldIHw9IENUTV9DT0VGRl9TSUdOOwo+ ICsJfQo+ICt9Cj4gKwo+ICsvKiBTZXQgdXAgdGhlIHBpcGUgQ1NDIHVuaXQuICovCj4gIHN0YXRp YyB2b2lkIGk5eHhfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGNydGMtPnN0YXRlOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWludCBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiAtCXVpbnQxNl90IGNvZWZmID0gMHg3ODAwOyAvKiAxLjAgKi8KPiArCWlu dCBpLCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCXVpbnQxNl90IGNvZWZmc1s5XSA9IHsg MCwgfTsKPiAgCj4gLQkvKgo+IC0JICogVE9ETzogQ2hlY2sgd2hhdCBraW5kIG9mIHZhbHVlcyBh Y3R1YWxseSBjb21lIG91dCBvZiB0aGUgcGlwZQo+IC0JICogd2l0aCB0aGVzZSBjb2VmZi9wb3N0 b2ZmIHZhbHVlcyBhbmQgYWRqdXN0IHRvIGdldCB0aGUgYmVzdAo+IC0JICogYWNjdXJhY3kuIFBl cmhhcHMgd2UgZXZlbiBuZWVkIHRvIHRha2UgdGhlIGJwYyB2YWx1ZSBpbnRvCj4gLQkgKiBjb25z aWRlcmF0aW9uLgo+IC0JICovCj4gKwlpZiAoY3J0Y19zdGF0ZS0+Y3RtKSB7Cj4gKwkJc3RydWN0 IGRybV9jb2xvcl9jdG0gKmN0bSA9Cj4gKwkJCShzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqKWNydGNf c3RhdGUtPmN0bS0+ZGF0YTsKPiArCQl1aW50NjRfdCBpbnB1dFs5XSA9IHsgMCwgfTsKPiAgCj4g LQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+IC0JCWNvZWZm ID0gKCgyMzUgLSAxNikgKiAoMSA8PCAxMikgLyAyNTUpICYgMHhmZjg7IC8qIDAueHh4Li4uICov Cj4gKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCQkJ Y3RtX211bHRfYnlfbGltaXRlZChpbnB1dCwgY3RtLT5tYXRyaXgpOwo+ICsJCWVsc2UgewoKVGhp cyBtaW5vciBjb2Rpbmcgc3R5bGUgaXNzdWUgc3RpbGwgbmVlZHMgdG8gYmUgZml4ZWQgKGFsbCBi cmFuY2hlcyBvZgppZi9lbHNlIG11c3QgdXNlIGJyYWNlcyBpZiBhbnkgb2YgdGhlbSBuZWVkIGl0 KS4KCgo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnB1dCk7IGkrKykKPiArCQkJ CWlucHV0W2ldID0gY3RtLT5tYXRyaXhbaV07Cj4gKwkJfQo+ICsKPiArCQkvKgo+ICsJCSAqIENv bnZlcnQgZml4ZWQgcG9pbnQgUzMxLjMyIGlucHV0IHRvIGZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhl Cj4gKwkJICogaGFyZHdhcmUuCj4gKwkJICovCj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoY29lZmZzKTsgaSsrKSB7Cj4gKwkJCXVpbnQ2NF90IGFic19jb2VmZiA9ICgoMVVMTCA8PCA2 MykgLSAxKSAmIGlucHV0W2ldOwo+ICsKPiArCQkJLyoKPiArCQkJICogQ2xhbXAgaW5wdXQgdmFs dWUgdG8gbWluL21heCBzdXBwb3J0ZWQgYnkKPiArCQkJICogaGFyZHdhcmUuCj4gKwkJCSAqLwo+ ICsJCQlhYnNfY29lZmYgPSBjbGFtcF92YWwoYWJzX2NvZWZmLCAwLCBDVE1fQ09FRkZfNF8wIC0g MSk7Cj4gKwo+ICsJCQkvKiBzaWduIGJpdCAqLwo+ICsJCQlpZiAoQ1RNX0NPRUZGX05FR0FUSVZF KGlucHV0W2ldKSkKPiArCQkJCWNvZWZmc1tpXSB8PSAxIDw8IDE1Owo+ICsKPiArCQkJaWYgKGFi c19jb2VmZiA8IENUTV9DT0VGRl8wXzEyNSkKPiArCQkJCWNvZWZmc1tpXSB8PSAoMyA8PCAxMikg fAo+ICsJCQkJCUk5WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgMTIpOwo+ICsJCQllbHNlIGlm IChhYnNfY29lZmYgPCBDVE1fQ09FRkZfMF8yNSkKPiArCQkJCWNvZWZmc1tpXSB8PSAoMiA8PCAx MikgfAo+ICsJCQkJCUk5WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgMTEpOwo+ICsJCQllbHNl IGlmIChhYnNfY29lZmYgPCBDVE1fQ09FRkZfMF81KQo+ICsJCQkJY29lZmZzW2ldIHw9ICgxIDw8 IDEyKSB8Cj4gKwkJCQkJSTlYWF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZmLCAxMCk7Cj4gKwkJCWVs c2UgaWYgKGFic19jb2VmZiA8IENUTV9DT0VGRl8xXzApCj4gKwkJCQljb2VmZnNbaV0gfD0gSTlY WF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZmLCA5KTsKPiArCQkJZWxzZSBpZiAoYWJzX2NvZWZmIDwg Q1RNX0NPRUZGXzJfMCkKPiArCQkJCWNvZWZmc1tpXSB8PSAoNyA8PCAxMikgfAo+ICsJCQkJCUk5 WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgOCk7Cj4gKwkJCWVsc2UKPiArCQkJCWNvZWZmc1tp XSB8PSAoNiA8PCAxMikgfAo+ICsJCQkJCUk5WFhfQ1NDX0NPRUZGX0ZQKGFic19jb2VmZiwgNyk7 Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIExvYWQgYW4gaWRlbnRpZnkgbWF0 cml4IGlmIG5vIGNvZWZmaWNpZW50cyBhcmUgcHJvdmlkZWQuCgpUeXBvOgpzL2lkZW50aWZ5L2lk ZW50aXR5LwoKPiArCQkgKgo+ICsJCSAqIFRPRE86IENoZWNrIHdoYXQga2luZCBvZiB2YWx1ZXMg YWN0dWFsbHkgY29tZSBvdXQgb2YgdGhlCj4gKwkJICogcGlwZSB3aXRoIHRoZXNlIGNvZWZmL3Bv c3RvZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZQo+ICsJCSAqIGJlc3QgYWNjdXJhY3ku IFBlcmhhcHMgd2UgZXZlbiBuZWVkIHRvIHRha2UgdGhlIGJwYyB2YWx1ZQo+ICsJCSAqIGludG8g Y29uc2lkZXJhdGlvbi4KPiArCQkgKi8KPiArCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4g KwkJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gKwkJCQlj b2VmZnNbaSAqIDMgKyBpXSA9Cj4gKwkJCQkJSTlYWF9DU0NfQ09FRkZfTElNSVRFRF9SQU5HRTsK PiArCQkJZWxzZQo+ICsJCQkJY29lZmZzW2kgKiAzICsgaV0gPSBJOVhYX0NTQ19DT0VGRl8xXzA7 Cj4gKwkJfQo+ICsJfQo+ICAKPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUllfR1kocGlw ZSksIGNvZWZmIDw8IDE2KTsKPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlkocGlwZSks IDApOwo+ICsJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9SWV9HWShwaXBlKSwgY29lZmZzWzBd IDw8IDE2IHwgY29lZmZzWzFdKTsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlkocGlw ZSksIGNvZWZmc1syXSA8PCAxNik7Cj4gIAo+IC0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9S VV9HVShwaXBlKSwgY29lZmYpOwo+IC0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CVShwaXBl KSwgMCk7Cj4gKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBpcGUpLCBjb2VmZnNb M10gPDwgMTYgfCBjb2VmZnNbNF0pOwo+ICsJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CVShw aXBlKSwgY29lZmZzWzVdIDw8IDE2KTsKPiAgCj4gLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZG X1JWX0dWKHBpcGUpLCAwKTsKPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlYocGlwZSks IGNvZWZmIDw8IDE2KTsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUlZfR1YocGlwZSks IGNvZWZmc1s2XSA8PCAxNiB8IGNvZWZmc1s3XSk7Cj4gKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NP RUZGX0JWKHBpcGUpLCBjb2VmZnNbOF0gPDwgMTYpOwo+ICAKPiAgCUk5MTVfV1JJVEUoUElQRV9D U0NfUFJFT0ZGX0hJKHBpcGUpLCAwKTsKPiAgCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01F KHBpcGUpLCAwKTsKPiBAQCAtODUsMTMgKzIwMSwxOCBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRf Y3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICB2b2lkIGludGVsX2NvbG9y X3NldF9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gLQlpOXh4X2xvYWRfY3NjX21h dHJpeChjcnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsK PiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXgpCj4gKwkJZGV2X3ByaXYt PmRpc3BsYXkubG9hZF9jc2NfbWF0cml4KGNydGMpOwo+ICB9Cj4gIAo+IC0vKiBMb2FkcyB0aGUg cGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRoZSBwcmVwYXJlZCB2YWx1ZXMu ICovCj4gKy8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JU Qy4gKi8KPiAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpzdGF0ZSA9IGNydGMtPnN0YXRlOwo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiBAQCAtMTA0LDE4ICsyMjUsMzMgQEAgc3RhdGljIHZvaWQg aTl4eF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCQlhc3NlcnRfcGxsX2Vu YWJsZWQoZGV2X3ByaXYsIHBpcGUpOwo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCAyNTY7 IGkrKykgewo+IC0JCXVpbnQzMl90IHdvcmQgPSAoaW50ZWxfY3J0Yy0+bHV0X3JbaV0gPDwgMTYp IHwKPiAtCQkJKGludGVsX2NydGMtPmx1dF9nW2ldIDw8IDgpIHwKPiAtCQkJaW50ZWxfY3J0Yy0+ bHV0X2JbaV07Cj4gLQkJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSkKPiAtCQkJSTkxNV9XUklU RShQQUxFVFRFKHBpcGUsIGkpLCB3b3JkKTsKPiAtCQllbHNlCj4gLQkJCUk5MTVfV1JJVEUoTEdD X1BBTEVUVEUocGlwZSwgaSksIHdvcmQpOwo+ICsJaWYgKHN0YXRlLT5nYW1tYV9sdXQpIHsKPiAr CQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0KPiArCQkJKHN0cnVjdCBkcm1fY29sb3JfbHV0 ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4gKwkJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsr KSB7Cj4gKwkJCXVpbnQzMl90IHdvcmQgPQo+ICsJCQkJKGRybV9jb2xvcl9sdXRfZXh0cmFjdChs dXRbaV0ucmVkLCA4KSA8PCAxNikgfAo+ICsJCQkJKGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRb aV0uZ3JlZW4sIDgpIDw8IDgpIHwKPiArCQkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0u Ymx1ZSwgOCk7Cj4gKwo+ICsJCQlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXYpKQo+ICsJCQkJSTkx NV9XUklURShQQUxFVFRFKHBpcGUsIGkpLCB3b3JkKTsKPiArCQkJZWxzZQo+ICsJCQkJSTkxNV9X UklURShMR0NfUEFMRVRURShwaXBlLCBpKSwgd29yZCk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiAr CQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPiArCQkJdWludDMyX3Qgd29yZCA9IChpIDw8 IDE2KSB8IChpIDw8IDgpIHwgaTsKPiArCj4gKwkJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikp Cj4gKwkJCQlJOTE1X1dSSVRFKFBBTEVUVEUocGlwZSwgaSksIHdvcmQpOwo+ICsJCQllbHNlCj4g KwkJCQlJOTE1X1dSSVRFKExHQ19QQUxFVFRFKHBpcGUsIGkpLCB3b3JkKTsKPiArCQl9Cj4gIAl9 Cj4gIH0KPiAgCj4gLS8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0 aGUgQ1JUQyBvbiBIYXN3ZWxsKy4gKi8KPiArLyogTG9hZHMgdGhlIGxlZ2FjeSBwYWxldHRlL2dh bW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIEhhc3dlbGwuICovCj4gIHN0YXRpYyB2b2lkIGhhc3dl bGxfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMTQ0LDYgKzI4MCw4OSBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJaHN3X2VuYWJs ZV9pcHMoaW50ZWxfY3J0Yyk7Cj4gIH0KPiAgCj4gKy8qIExvYWRzIHRoZSBwYWxldHRlL2dhbW1h IHVuaXQgZm9yIHRoZSBDUlRDIG9uIEJyb2Fkd2VsbCsuICovCj4gK3N0YXRpYyB2b2lkIGJyb2Fk d2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSA9IGNydGMtPnN0YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUpOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19p bnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ICsJdWludDMyX3QgaSwgbHV0X3NpemUgPSBJTlRFTF9J TkZPKGRldiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemU7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGVf aXNfbGVnYWN5KHN0YXRlKSkgewo+ICsJCWhhc3dlbGxfbG9hZF9sdXRzKGNydGMpOwo+ICsJCXJl dHVybjsKPiArCX0KPiArCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ICsJ CSAgIFBBTF9QUkVDX1NQTElUX01PREUgfCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gKwo+ ICsJaWYgKHN0YXRlLT5kZWdhbW1hX2x1dCkgewo+ICsJCXN0cnVjdCBkcm1fY29sb3JfbHV0ICps dXQgPQo+ICsJCQkoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgc3RhdGUtPmRlZ2FtbWFfbHV0LT5k YXRhOwo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ICsJCQl1aW50 MzJfdCB3b3JkID0KPiArCQkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5yZWQsIDEwKSA8 PCAyMCB8Cj4gKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uZ3JlZW4sIDEwKSA8PCAx MCB8Cj4gKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTApOwo+ICsKPiAr CQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCB3b3JkKTsKPiArCQl9Cj4gKwl9IGVs c2Ugewo+ICsJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJCXVpbnQzMl90 IHYgPSAoaSAqICgoMSA8PCAxMCkgLSAxKSkgLyAobHV0X3NpemUgLSAxKTsKPiArCj4gKwkJCUk5 MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwKPiArCQkJCSAgICh2IDw8IDIwKSB8ICh2IDw8 IDEwKSB8IHYpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgewo+ ICsJCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPQo+ICsJCQkoc3RydWN0IGRybV9jb2xvcl9s dXQgKikgc3RhdGUtPmdhbW1hX2x1dC0+ZGF0YTsKPiArCj4gKwkJZm9yIChpID0gMDsgaSA8IGx1 dF9zaXplOyBpKyspIHsKPiArCQkJdWludDMyX3Qgd29yZCA9Cj4gKwkJCShkcm1fY29sb3JfbHV0 X2V4dHJhY3QobHV0W2ldLnJlZCwgMTApIDw8IDIwKSB8Cj4gKwkJCShkcm1fY29sb3JfbHV0X2V4 dHJhY3QobHV0W2ldLmdyZWVuLCAxMCkgPDwgMTApIHwKPiArCQkJZHJtX2NvbG9yX2x1dF9leHRy YWN0KGx1dFtpXS5ibHVlLCAxMCk7Cj4gKwo+ICsJCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEo cGlwZSksIHdvcmQpOwo+ICsJCX0KPiArCj4gKwkJLyogUHJvZ3JhbSB0aGUgbWF4IHJlZ2lzdGVy IHRvIGNsYW1wIHZhbHVlcyA+IDEuMC4gKi8KPiArCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01B WChwaXBlLCAwKSwKPiArCQkJICAgZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5yZWQsIDE2 KSk7Cj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksCj4gKwkJCSAgIGRy bV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uZ3JlZW4sIDE2KSk7Cj4gKwkJSTkxNV9XUklURShQ UkVDX1BBTF9HQ19NQVgocGlwZSwgMiksCj4gKwkJCSAgIGRybV9jb2xvcl9sdXRfZXh0cmFjdChs dXRbaV0uYmx1ZSwgMTYpKTsKPiArCX0gZWxzZSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IGx1dF9z aXplOyBpKyspIHsKPiArCQkJdWludDMyX3QgdiA9IChpICogKCgxIDw8IDEwKSAtIDEpKSAvIChs dXRfc2l6ZSAtIDEpOwo+ICsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ ICsJCQkJICAgKHYgPDwgMjApIHwgKHYgPDwgMTApIHwgdik7Cj4gKwkJfQo+ICsKPiArCQlJOTE1 X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgKDEgPDwgMTYpIC0gMSk7Cj4gKwkJSTkx NV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksICgxIDw8IDE2KSAtIDEpOwo+ICsJCUk5 MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCAoMSA8PCAxNikgLSAxKTsKPiArCX0K PiArCj4gKwlpbnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsK PiArCUk5MTVfV1JJVEUoR0FNTUFfTU9ERShwaXBlKSwgR0FNTUFfTU9ERV9NT0RFX1NQTElUKTsK PiArCVBPU1RJTkdfUkVBRChHQU1NQV9NT0RFKHBpcGUpKTsKPiArCj4gKwkvKgo+ICsJICogUmVz ZXQgdGhlIGluZGV4LCBvdGhlcndpc2UgaXQgcHJldmVudHMgdGhlIGxlZ2FjeSBwYWxldHRlIHRv IGJlCj4gKwkgKiB3cml0dGVuIHByb3Blcmx5Lgo+ICsJICovCj4gKwlJOTE1X1dSSVRFKFBSRUNf UEFMX0lOREVYKHBpcGUpLCAwKTsKPiArfQo+ICsKPiAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1 dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+IEBAIC0xNTYsMzkgKzM3NSw2MSBAQCB2b2lkIGludGVsX2NvbG9yX2xv YWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMoY3J0Yyk7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3Nl dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAo+IC0JCQkJICB1 MTYgKmJsdWUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBzaXplKQo+ICtpbnQgaW50ZWxfY29s b3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCSAgICAgIHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0JaW50IGVuZCA9IChzdGFydCArIHNpemUgPiAy NTYpID8gMjU2IDogc3RhcnQgKyBzaXplLCBpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiArCXNpemVfdCBnYW1tYV9sZW5ndGgsIGRlZ2FtbWFfbGVuZ3RoOwo+ICAK PiAtCWZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKPiAtCQlpbnRlbF9jcnRjLT5sdXRf cltpXSA9IHJlZFtpXSA+PiA4Owo+IC0JCWludGVsX2NydGMtPmx1dF9nW2ldID0gZ3JlZW5baV0g Pj4gODsKPiAtCQlpbnRlbF9jcnRjLT5sdXRfYltpXSA9IGJsdWVbaV0gPj4gODsKPiAtCX0KPiAr CWRlZ2FtbWFfbGVuZ3RoID0gSU5URUxfSU5GTyhkZXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXpl ICoKPiArCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpOwo+ICsJZ2FtbWFfbGVuZ3RoID0g SU5URUxfSU5GTyhkZXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZSAqCj4gKwkJc2l6ZW9mKHN0cnVj dCBkcm1fY29sb3JfbHV0KTsKPiArCj4gKwkvKgo+ICsJICogV2UgYWxsb3cgYm90aCBkZWdhbW1h ICYgZ2FtbWEgbHV0cyBhdCB0aGUgcmlnaHQgc2l6ZSBvcgo+ICsJICogTlVMTC4KPiArCSAqLwo+ ICsJaWYgKCghY3J0Y19zdGF0ZS0+ZGVnYW1tYV9sdXQgfHwKPiArCSAgICAgY3J0Y19zdGF0ZS0+ ZGVnYW1tYV9sdXQtPmxlbmd0aCA9PSBkZWdhbW1hX2xlbmd0aCkgJiYKPiArCSAgICAoIWNydGNf c3RhdGUtPmdhbW1hX2x1dCB8fAo+ICsJICAgICBjcnRjX3N0YXRlLT5nYW1tYV9sdXQtPmxlbmd0 aCA9PSBnYW1tYV9sZW5ndGgpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBh bHNvIGFsbG93IG5vIGRlZ2FtbWEgbHV0IGFuZCBhIGdhbW1hIGx1dCBhdCB0aGUgbGVnYWN5Cj4g KwkgKiBzaXplICgyNTYgZW50cmllcykuCj4gKwkgKi8KPiArCWlmICghY3J0Y19zdGF0ZS0+ZGVn YW1tYV9sdXQgJiYKPiArCSAgICBjcnRjX3N0YXRlLT5nYW1tYV9sdXQgJiYKPiArCSAgICBjcnRj X3N0YXRlLT5nYW1tYV9sdXQtPmxlbmd0aCA9PSBMRUdBQ1lfTFVUX0xFTkdUSCkKPiArCQlyZXR1 cm4gMDsKPiAgCj4gLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY3J0Yyk7Cj4gKwlyZXR1cm4gLUVJ TlZBTDsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlp bnQgaTsKPiAgCj4gIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKGNydGMsIDI1Nik7Cj4g LQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPiAtCQlpbnRlbF9jcnRjLT5sdXRfcltpXSA9 IGk7Cj4gLQkJaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPSBpOwo+IC0JCWludGVsX2NydGMtPmx1dF9i W2ldID0gaTsKPiAtCX0KPiAgCj4gLQlpZiAoSVNfSEFTV0VMTChkZXYpIHx8Cj4gLQkgICAgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDggJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkpIHsKPiArCWlm IChJU19IQVNXRUxMKGRldikpIHsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRy aXggPSBpOXh4X2xvYWRfY3NjX21hdHJpeDsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1 dHMgPSBoYXN3ZWxsX2xvYWRfbHV0czsKPiArCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldikg fHwgSVNfU0tZTEFLRShkZXYpIHx8Cj4gKwkJICAgSVNfQlJPWFRPTihkZXYpIHx8IElTX0tBQllM QUtFKGRldikpIHsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBpOXh4 X2xvYWRfY3NjX21hdHJpeDsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBicm9h ZHdlbGxfbG9hZF9sdXRzOwo+ICAJfSBlbHNlIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKPiAgCX0KPiArCj4gKwkvKiBFbmFibGUgY29sb3IgbWFu YWdlbWVudCBzdXBwb3J0IHdoZW4gd2UgaGF2ZSBkZWdhbW1hICYgZ2FtbWEgTFVUcy4gKi8KPiAr CWlmIChJTlRFTF9JTkZPKGRldiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUgIT0gMCAmJgo+ICsJ ICAgIElOVEVMX0lORk8oZGV2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUgIT0gMCkKPiArCQlkcm1f aGVscGVyX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoY3J0YywKPiArCQkJCQlJTlRFTF9JTkZPKGRl diktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUsCj4gKwkJCQkJSU5URUxfSU5GTyhkZXYpLT5jb2xv ci5nYW1tYV9sdXRfc2l6ZSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gaW5kZXggMTU0YWM4Ny4uMjI0ZWM2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiBAQCAtMTE4MzAsNiArMTE4MzAsMTIgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCXJldHVybiByZXQ7Cj4g IAl9Cj4gIAo+ICsJaWYgKGNydGNfc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgewo+ICsJCXJl dCA9IGludGVsX2NvbG9yX2NoZWNrKGNydGMsIGNydGNfc3RhdGUpOwo+ICsJCWlmIChyZXQpCj4g KwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICAJcmV0ID0gMDsKPiAgCWlmIChkZXZfcHJpdi0+ ZGlzcGxheS5jb21wdXRlX3BpcGVfd20pIHsKPiAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5j b21wdXRlX3BpcGVfd20oaW50ZWxfY3J0Yywgc3RhdGUpOwo+IEBAIC0xMTg1MSw3ICsxMTg1Nyw2 IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaW50 ZWxfaGVscGVyX2Z1bmNzID0gewo+ICAJLm1vZGVfc2V0X2Jhc2VfYXRvbWljID0gaW50ZWxfcGlw ZV9zZXRfYmFzZV9hdG9taWMsCj4gLQkubG9hZF9sdXQgPSBpbnRlbF9jb2xvcl9sb2FkX2x1dHMs Cj4gIAkuYXRvbWljX2JlZ2luID0gaW50ZWxfYmVnaW5fY3J0Y19jb21taXQsCj4gIAkuYXRvbWlj X2ZsdXNoID0gaW50ZWxfZmluaXNoX2NydGNfY29tbWl0LAo+ICAJLmF0b21pY19jaGVjayA9IGlu dGVsX2NydGNfYXRvbWljX2NoZWNrLAo+IEBAIC0xMzM4Niw2ICsxMzM5MSwxOCBAQCBzdGF0aWMg aW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0Yyk7Cj4gIAkJfQo+ICAKPiArCQlpZiAoIW1v ZGVzZXQgJiYKPiArCQkgICAgY3J0Yy0+c3RhdGUtPmFjdGl2ZSAmJgo+ICsJCSAgICBjcnRjLT5z dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIE9ubHkgdXBkYXRl IGNvbG9yIG1hbmFnZW1lbnQgd2hlbiBub3QgZG9pbmcKPiArCQkJICogYSBtb2Rlc2V0IGFzIHRo aXMgd2lsbCBiZSBkb25lIGJ5Cj4gKwkJCSAqIGNydGNfZW5hYmxlIGFscmVhZHkuCj4gKwkJCSAq Lwo+ICsJCQlpbnRlbF9jb2xvcl9zZXRfY3NjKGNydGMpOwo+ICsJCQlpbnRlbF9jb2xvcl9sb2Fk X2x1dHMoY3J0Yyk7Cj4gKwkJfQo+ICsKPiAgCQlpZiAoIW1vZGVzZXQpCj4gIAkJCWludGVsX3By ZV9wbGFuZV91cGRhdGUodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSk7Cj4gIAo+IEBA IC0xMzQ3Nyw4ICsxMzQ5NCw5IEBAIG91dDoKPiAgI3VuZGVmIGZvcl9lYWNoX2ludGVsX2NydGNf bWFza2VkCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGludGVsX2Ny dGNfZnVuY3MgPSB7Cj4gLQkuZ2FtbWFfc2V0ID0gaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3Nl dCwKPiArCS5nYW1tYV9zZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9sZWdhY3lfZ2FtbWFfc2V0LAo+ ICAJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLAo+ICsJLnNldF9w cm9wZXJ0eSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfc2V0X3Byb3BlcnR5LAo+ICAJLmRlc3Ry b3kgPSBpbnRlbF9jcnRjX2Rlc3Ryb3ksCj4gIAkucGFnZV9mbGlwID0gaW50ZWxfY3J0Y19wYWdl X2ZsaXAsCj4gIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX2NydGNfZHVwbGljYXRl X3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggOGM0ODEzMS4uYmFhNmFk YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE2MjYsOSArMTYyNiw4IEBA IGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBpbnRlbF9wbGFuZV9o ZWxwZXJfZnVuY3M7Cj4gIAo+ICAvKiBpbnRlbF9jb2xvci5jICovCj4gIHZvaWQgaW50ZWxfY29s b3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICtpbnQgaW50ZWxfY29sb3JfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKTsKPiAg dm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIHZvaWQg aW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gLXZvaWQgaW50 ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVk LCB1MTYgKmdyZWVuLAo+IC0JCQkJICB1MTYgKmJsdWUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJf dCBzaXplKTsKPiAgCj4gICNlbmRpZiAvKiBfX0lOVEVMX0RSVl9IX18gKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiZGV2LmMKPiBpbmRleCA5N2E5MWU2Li43NzdmOThjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gQEAgLTM3OSw2ICszNzksNyBAQCByZXRyeToKPiAgCQlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcjsKPiAgCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpuZXdfY3J0YzsKPiArCQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgCj4gIAkJZmJfY29ubiA9IGZiX2hlbHBl ci0+Y29ubmVjdG9yX2luZm9baV07Cj4gIAkJY29ubmVjdG9yID0gZmJfY29ubi0+Y29ubmVjdG9y Owo+IEBAIC00MjAsNiArNDIxLDEzIEBAIHJldHJ5Ogo+ICAKPiAgCQludW1fY29ubmVjdG9yc19l bmFibGVkKys7Cj4gIAo+ICsJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNvbm5lY3Rvci0+ c3RhdGUtPmNydGMpOwo+ICsJCWZvciAoaiA9IDA7IGogPCAyNTY7IGorKykgewo+ICsJCQlpbnRl bF9jcnRjLT5sdXRfcltqXSA9IGo7Cj4gKwkJCWludGVsX2NydGMtPmx1dF9nW2pdID0gajsKPiAr CQkJaW50ZWxfY3J0Yy0+bHV0X2Jbal0gPSBqOwo+ICsJCX0KPiArCj4gIAkJbmV3X2NydGMgPSBp bnRlbF9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwo+ ICAKPiAgCQkvKgo+IC0tIAo+IDIuNy4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2Fy ZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29y cG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==