From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 4/5] drm/i915: Implement color management on bdw/skl/bxt/kbl Date: Mon, 22 Feb 2016 16:52:43 -0800 Message-ID: <20160223005243.GN22387@intel.com> References: <1456150691-20231-1-git-send-email-lionel.g.landwerlin@intel.com> <1456150691-20231-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: <1456150691-20231-5-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org, kausalmalladi@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBGZWIgMjIsIDIwMTYgYXQgMDI6MTg6MTBQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gUGF0Y2ggYmFzZWQgb24gYSBwcmV2aW91cyBzZXJpZXMgYnkgU2hhc2hhbmsg U2hhcm1hLgo+IAo+IHYyOiBEbyBub3QgcmVhZCBHQU1NQV9NT0RFIHJlZ2lzdGVyIHRvIGZpZ3Vy ZSB3aGF0IG1vZGUgd2UncmUgaW4KPiAKPiB2MzogUHJvZ3JhbSBQUkVDX1BBTF9HQ19NQVggdG8g Y2xhbXAgcGl4ZWwgdmFsdWVzID4gMS4wCj4gCj4gICAgIEFkZCBkb2N1bWVudGF0aW9uIG9uIGhv dyB0aGUgQnJvYWRjYXN0IFJHQiBwcm9wZXJ0eSBpcyBhZmZlY3RlZCBieSBDVE0KPiAKPiB2NDog VXBkYXRlIGNvbnRyaWJ1dG9ycwo+IAo+IHY1OiBSZWZhY3RvciBkZWdhbW1hL2dhbW1hIExVVHMg bG9hZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCj4gCj4gdjY6IEZpeCBtaXNzaW5nIGludGVsX2Ny dGMgdmFyaWFibGUgKGJpc2VjdCBpc3N1ZSkKCk5vdCBzdXJlIGlmIHlvdSBzYXcgbWUgZmVlZGJh Y2sgb24gdjQgb3Igbm90OgogICBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZl cy9pbnRlbC1nZngvMjAxNi1GZWJydWFyeS8wODgwNDMuaHRtbAoKSXQgbG9va3MgbGlrZSBtb3N0 IG9mIHRob3NlIGNvbW1lbnRzIHN0aWxsIGFwcGx5IGhlcmUuICBJZiB5b3UgZGlzYWdyZWUKd2l0 aCBteSBjb21tZW50cywgdGhhdCdzIGZpbmUgdG9vLCBJIGp1c3Qgd2FudGVkIHRvIG1ha2Ugc3Vy ZSBpdCBkaWRuJ3QKZ2V0IG92ZXJsb29rZWQuICA6LSkKCgpNYXR0Cgo+IAo+IFNpZ25lZC1vZmYt Ynk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogS3VtYXIsIEtpcmFuIFMgPGtpcmFuLnMua3VtYXJAaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEthdXNhbCBNYWxsYWRpIDxrYXVzYWxtYWxsYWRpQGdtYWlsLmNv bT4KPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAgIHwgICA2ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICB8ICAyNCArKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA2ICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgIDIyICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb2xvci5jICAgfCAzNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDIyICsrLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwgICA4ICsKPiAgOCBmaWxlcyBjaGFuZ2VkLCAz ODMgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vRG9jQm9vay9ncHUudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1w bAo+IGluZGV4IDE2OTJjNGQuLjQzMGU5OWIgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9E b2NCb29rL2dwdS50bXBsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4g QEAgLTIxNTMsNyArMjE1MywxMSBAQCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KPiAgCTx0ZCB2YWxpZ249 InRvcCIgPnsgIkF1dG9tYXRpYyIsICJGdWxsIiwgIkxpbWl0ZWQgMTY6MjM1IiB9PC90ZD4KPiAg CTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+Cj4gLQk8dGQgdmFsaWduPSJ0b3AiID5U QkQ8L3RkPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+V2hlbiB0aGlzIHByb3BlcnR5IGlzIHNldCB0 byBMaW1pdGVkIDE2OjIzNQo+ICsJCWFuZCBDVE0gaXMgc2V0LCB0aGUgaGFyZHdhcmUgd2lsbCBi ZSBwcm9ncmFtbWVkIHdpdGggdGhlCj4gKwkJcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbiBv ZiBDVE0gYnkgdGhlIGxpbWl0ZWQgcmFuZ2UKPiArCQltYXRyaXggdG8gZW5zdXJlIHRoZSBwaXhl bHMgbm9ybWFseSBpbiB0aGUgcmFuZ2UgMC4uMS4wIGFyZQo+ICsJCXJlbWFwcGVkIHRvIHRoZSBy YW5nZSAxNi8yNTUuLjIzNS8yNTUuPC90ZD4KPiAgCTwvdHI+Cj4gIAk8dHI+Cj4gIAk8dGQgdmFs aWduPSJ0b3AiID7igJxhdWRpb+KAnTwvdGQ+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5k ZXggMjBlODIwMC4uMzgwN2I3MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC02 Niw2ICs2Niw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXI7Cj4gICNkZWZpbmUg SVZCX0NVUlNPUl9PRkZTRVRTIFwKPiAgCS5jdXJzb3Jfb2Zmc2V0cyA9IHsgQ1VSU09SX0FfT0ZG U0VULCBJVkJfQ1VSU09SX0JfT0ZGU0VULCBJVkJfQ1VSU09SX0NfT0ZGU0VUIH0KPiAgCj4gKyNk ZWZpbmUgQkRXX0NPTE9SUyBcCj4gKwkuY29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gNTEy LCAuZ2FtbWFfbHV0X3NpemUgPSA1MTIgfQo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9kZXZpY2VfaW5mbyBpbnRlbF9pODMwX2luZm8gPSB7Cj4gIAkuZ2VuID0gMiwgLmlzX21vYmls ZSA9IDEsIC5jdXJzb3JfbmVlZHNfcGh5c2ljYWwgPSAxLCAubnVtX3BpcGVzID0gMiwKPiAgCS5o YXNfb3ZlcmxheSA9IDEsIC5vdmVybGF5X25lZWRzX3BoeXNpY2FsID0gMSwKPiBAQCAtMjg4LDI0 ICsyOTEsMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9o YXN3ZWxsX21faW5mbyA9IHsKPiAgCS5pc19tb2JpbGUgPSAxLAo+ICB9Owo+ICAKPiArI2RlZmlu ZSBCRFdfRkVBVFVSRVMgXAo+ICsJSFNXX0ZFQVRVUkVTLCBcCj4gKwlCRFdfQ09MT1JTCj4gKwo+ ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2Jyb2Fkd2VsbF9k X2luZm8gPSB7Cj4gLQlIU1dfRkVBVFVSRVMsCj4gKwlCRFdfRkVBVFVSRVMsCj4gIAkuZ2VuID0g OCwKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50 ZWxfYnJvYWR3ZWxsX21faW5mbyA9IHsKPiAtCUhTV19GRUFUVVJFUywKPiArCUJEV19GRUFUVVJF UywKPiAgCS5nZW4gPSA4LCAuaXNfbW9iaWxlID0gMSwKPiAgfTsKPiAgCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJvYWR3ZWxsX2d0M2RfaW5mbyA9IHsK PiAtCUhTV19GRUFUVVJFUywKPiArCUJEV19GRUFUVVJFUywKPiAgCS5nZW4gPSA4LAo+ICAJLnJp bmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcg fCBCU0QyX1JJTkcsCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rldmlj ZV9pbmZvIGludGVsX2Jyb2Fkd2VsbF9ndDNtX2luZm8gPSB7Cj4gLQlIU1dfRkVBVFVSRVMsCj4g KwlCRFdfRkVBVFVSRVMsCj4gIAkuZ2VuID0gOCwgLmlzX21vYmlsZSA9IDEsCj4gIAkucmluZ19t YXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVCT1hfUklORyB8IEJT RDJfUklORywKPiAgfTsKPiBAQCAtMzIxLDEzICszMjgsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7Cj4gIH07Cj4gIAo+ ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3NreWxha2VfaW5m byA9IHsKPiAtCUhTV19GRUFUVVJFUywKPiArCUJEV19GRUFUVVJFUywKPiAgCS5pc19za3lsYWtl ID0gMSwKPiAgCS5nZW4gPSA5LAo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9kZXZpY2VfaW5mbyBpbnRlbF9za3lsYWtlX2d0M19pbmZvID0gewo+IC0JSFNXX0ZFQVRVUkVT LAo+ICsJQkRXX0ZFQVRVUkVTLAo+ICAJLmlzX3NreWxha2UgPSAxLAo+ICAJLmdlbiA9IDksCj4g IAkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVCT1hf UklORyB8IEJTRDJfUklORywKPiBAQCAtMzQ1LDE3ICszNTIsMTggQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9icm94dG9uX2luZm8gPSB7Cj4gIAkuaGFzX2Zi YyA9IDEsCj4gIAlHRU5fREVGQVVMVF9QSVBFT0ZGU0VUUywKPiAgCUlWQl9DVVJTT1JfT0ZGU0VU UywKPiArCUJEV19DT0xPUlMsCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2RldmljZV9pbmZvIGludGVsX2thYnlsYWtlX2luZm8gPSB7Cj4gLQlIU1dfRkVBVFVSRVMsCj4g KwlCRFdfRkVBVFVSRVMsCj4gIAkuaXNfcHJlbGltaW5hcnkgPSAxLAo+ICAJLmlzX2thYnlsYWtl ID0gMSwKPiAgCS5nZW4gPSA5LAo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9kZXZpY2VfaW5mbyBpbnRlbF9rYWJ5bGFrZV9ndDNfaW5mbyA9IHsKPiAtCUhTV19GRUFUVVJF UywKPiArCUJEV19GRUFUVVJFUywKPiAgCS5pc19wcmVsaW1pbmFyeSA9IDEsCj4gIAkuaXNfa2Fi eWxha2UgPSAxLAo+ICAJLmdlbiA9IDksCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXgg NjYzNGMwOS4uNzYyN2E0ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02NjAs NiArNjYwLDcgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJLyogZGlzcGxh eSBjbG9jayBpbmNyZWFzZS9kZWNyZWFzZSAqLwo+ICAJLyogcGxsIGNsb2NrIGluY3JlYXNlL2Rl Y3JlYXNlICovCj4gIAo+ICsJdm9pZCAoKmxvYWRfY3NjX21hdHJpeCkoc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKPiAgCXZvaWQgKCpsb2FkX2x1dHMpKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4g IH07Cj4gIAo+IEBAIC04MDgsNiArODA5LDExIEBAIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB7 Cj4gIAl1OCBoYXNfc2xpY2VfcGc6MTsKPiAgCXU4IGhhc19zdWJzbGljZV9wZzoxOwo+ICAJdTgg aGFzX2V1X3BnOjE7Cj4gKwo+ICsJc3RydWN0IGNvbG9yX2x1dHMgewo+ICsJCXUxNiBkZWdhbW1h X2x1dF9zaXplOwo+ICsJCXUxNiBnYW1tYV9sdXRfc2l6ZTsKPiArCX0gY29sb3I7Cj4gIH07Cj4g IAo+ICAjdW5kZWYgREVGSU5FX0ZMQUcKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCAz Nzc0ODcwLi44Y2U3NmQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTc2NTAs NiArNzY1MCwyOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSBQSVBF X0NTQ19QT1NUT0ZGX01FKHBpcGUpCV9NTUlPX1BJUEUocGlwZSwgX1BJUEVfQV9DU0NfUE9TVE9G Rl9NRSwgX1BJUEVfQl9DU0NfUE9TVE9GRl9NRSkKPiAgI2RlZmluZSBQSVBFX0NTQ19QT1NUT0ZG X0xPKHBpcGUpCV9NTUlPX1BJUEUocGlwZSwgX1BJUEVfQV9DU0NfUE9TVE9GRl9MTywgX1BJUEVf Ql9DU0NfUE9TVE9GRl9MTykKPiAgCj4gKy8qIHBpcGUgZGVnYW1tYS9nYW1tYSBMVVRzIG9uIElW QisgKi8KPiArI2RlZmluZSBfUEFMX1BSRUNfSU5ERVhfQQkweDRBNDAwCj4gKyNkZWZpbmUgX1BB TF9QUkVDX0lOREVYX0IJMHg0QUMwMAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19JTkRFWF9DCTB4NEI0 MDAKPiArI2RlZmluZSAgIFBBTF9QUkVDXzEwXzEyX0JJVAkJKDAgPDwgMzEpCj4gKyNkZWZpbmUg ICBQQUxfUFJFQ19TUExJVF9NT0RFCQkoMSA8PCAzMSkKPiArI2RlZmluZSAgIFBBTF9QUkVDX0FV VE9fSU5DUkVNRU5UCSgxIDw8IDE1KQo+ICsjZGVmaW5lIF9QQUxfUFJFQ19EQVRBX0EJMHg0QTQw NAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19EQVRBX0IJMHg0QUMwNAo+ICsjZGVmaW5lIF9QQUxfUFJF Q19EQVRBX0MJMHg0QjQwNAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19HQ19NQVhfQQkweDRBNDEwCj4g KyNkZWZpbmUgX1BBTF9QUkVDX0dDX01BWF9CCTB4NEFDMTAKPiArI2RlZmluZSBfUEFMX1BSRUNf R0NfTUFYX0MJMHg0QjQxMAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0EJMHg0QTQy MAo+ICsjZGVmaW5lIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0IJMHg0QUMyMAo+ICsjZGVmaW5lIF9Q QUxfUFJFQ19FWFRfR0NfTUFYX0MJMHg0QjQyMAo+ICsKPiArI2RlZmluZSBQUkVDX1BBTF9JTkRF WChwaXBlKQkJX01NSU9fUElQRShwaXBlLCBfUEFMX1BSRUNfSU5ERVhfQSwgX1BBTF9QUkVDX0lO REVYX0IpCj4gKyNkZWZpbmUgUFJFQ19QQUxfREFUQShwaXBlKQkJX01NSU9fUElQRShwaXBlLCBf UEFMX1BSRUNfREFUQV9BLCBfUEFMX1BSRUNfREFUQV9CKQo+ICsjZGVmaW5lIFBSRUNfUEFMX0dD X01BWChwaXBlLCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFMX1BSRUNfR0NfTUFYX0EsIF9QQUxf UFJFQ19HQ19NQVhfQikgKyAoaSkgKiA0KQo+ICsjZGVmaW5lIFBSRUNfUEFMX0VYVF9HQ19NQVgo cGlwZSwgaSkJX01NSU8oX1BJUEUocGlwZSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQSwgX1BBTF9Q UkVDX0VYVF9HQ19NQVhfQikgKyAoaSkgKiA0KQo+ICsKPiAgLyogTUlQSSBEU0kgcmVnaXN0ZXJz ICovCj4gIAo+ICAjZGVmaW5lIF9NSVBJX1BPUlQocG9ydCwgYSwgYykJX1BPUlQzKHBvcnQsIGEs IDAsIGMpCS8qIHBvcnRzIEEgYW5kIEMgb25seSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3IuYwo+IGluZGV4IGJhMjdjZTIuLmE2YzdkMjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMKPiBAQCAtMjQsNDQgKzI0LDE3MiBAQAo+ICAKPiAgI2luY2x1ZGUgImludGVsX2Ry di5oIgo+ICAKPiArI2RlZmluZSBDVE1fQ09FRkZfU0lHTgkoMVVMTCA8PCA2MykKPiArCj4gKyNk ZWZpbmUgQ1RNX0NPRUZGXzFfMAkoMVVMTCA8PCAzMikKPiArI2RlZmluZSBDVE1fQ09FRkZfMl8w CShDVE1fQ09FRkZfMV8wIDw8IDEpCj4gKyNkZWZpbmUgQ1RNX0NPRUZGXzRfMAkoQ1RNX0NPRUZG XzJfMCA8PCAxKQo+ICsjZGVmaW5lIENUTV9DT0VGRl8wXzUJKENUTV9DT0VGRl8xXzAgPj4gMSkK PiArI2RlZmluZSBDVE1fQ09FRkZfMF8yNQkoQ1RNX0NPRUZGXzBfNSA+PiAxKQo+ICsjZGVmaW5l IENUTV9DT0VGRl8wXzEyNQkoQ1RNX0NPRUZGXzBfMjUgPj4gMSkKPiArCj4gKyNkZWZpbmUgQ1RN X0NPRUZGX0xJTUlURURfUkFOR0UgKCgyMzVVTEwgLSAxNlVMTCkgKiBDVE1fQ09FRkZfMV8wIC8g MjU1KQo+ICsKPiArI2RlZmluZSBDVE1fQ09FRkZfTkVHQVRJVkUoY29lZmYpCSgoKGNvZWZmKSAm IENUTV9DT0VGRl9TSUdOKSAhPSAwKQo+ICsjZGVmaW5lIENUTV9DT0VGRl9BQlMoY29lZmYpCQko KGNvZWZmKSAmIChDVE1fQ09FRkZfU0lHTiAtIDEpKQo+ICsKPiArI2RlZmluZSBMRUdBQ1lfTFVU X0xFTkdUSAkJKHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkgKiAyNTYpCj4gKwo+ICAvKgo+ IC0gKiBTZXQgdXAgdGhlIHBpcGUgQ1NDIHVuaXQuCj4gKyAqIEV4dHJhY3QgdGhlIENTQyBjb2Vm ZmljaWVudCBmcm9tIGEgQ1RNIGNvZWZmaWNpZW50IChpbiBVMzIuMzIgZml4ZWQgcG9pbnQKPiAr ICogZm9ybWF0KS4gVGhpcyBtYWNybyB0YWtlcyB0aGUgY29lZmZpY2llbnQgd2Ugd2FudCB0cmFu c2Zvcm1lZCBhbmQgdGhlCj4gKyAqIG51bWJlciBvZiBmcmFjdGlvbmFsIGJpdHMuCj4gICAqCj4g LSAqIEN1cnJlbnRseSBvbmx5IGZ1bGwgcmFuZ2UgUkdCIHRvIGxpbWl0ZWQgcmFuZ2UgUkdCIGNv bnZlcnNpb24KPiAtICogaXMgc3VwcG9ydGVkLCBidXQgZXZlbnR1YWxseSB0aGlzIHNob3VsZCBo YW5kbGUgdmFyaW91cwo+IC0gKiBSR0I8LT5ZQ2JDciBzY2VuYXJpb3MgYXMgd2VsbC4KPiArICog V2Ugb25seSBoYXZlIGEgOSBiaXRzIHByZWNpc2lvbiB3aW5kb3cgd2hpY2ggc2xpZGVzIGRlcGVu ZGluZyBvbiB0aGUgdmFsdWUKPiArICogb2YgdGhlIENUTSBjb2VmZmljaWVudCBhbmQgd2Ugd3Jp dGUgdGhlIHZhbHVlIGZyb20gYml0IDMuIFdlIGFsc28gcm91bmQgdGhlCj4gKyAqIHZhbHVlLgo+ ICAgKi8KPiArI2RlZmluZSBJOVhYX0NTQ19DT0VGRl9GUChjb2VmZiwgZmJpdHMpCVwKPiArCShj bGFtcF92YWwoKChjb2VmZikgPj4gKDMyIC0gKGZiaXRzKSAtIDMpKSArIDQsIDAsIDB4ZmZmKSAm IDB4ZmY4KQo+ICsKPiArI2RlZmluZSBJOVhYX0NTQ19DT0VGRl9MSU1JVEVEX1JBTkdFCVwKPiAr CUk5WFhfQ1NDX0NPRUZGX0ZQKENUTV9DT0VGRl9MSU1JVEVEX1JBTkdFLCA5KQo+ICsjZGVmaW5l IEk5WFhfQ1NDX0NPRUZGXzFfMAkJXAo+ICsJKCg3IDw8IDEyKSB8IEk5WFhfQ1NDX0NPRUZGX0ZQ KENUTV9DT0VGRl8xXzAsIDgpKQo+ICsKPiArc3RhdGljIGJvb2wgY3J0Y19zdGF0ZV9pc19sZWdh Y3koc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJcmV0dXJuICFzdGF0ZS0+ ZGVnYW1tYV9sdXQgJiYKPiArCQkhc3RhdGUtPmN0bSAmJgo+ICsJCXN0YXRlLT5nYW1tYV9sdXQg JiYKPiArCQlzdGF0ZS0+Z2FtbWFfbHV0LT5sZW5ndGggPT0gTEVHQUNZX0xVVF9MRU5HVEg7Cj4g K30KPiArCj4gKy8qCj4gKyAqIFdoZW4gdXNpbmcgbGltaXRlZCByYW5nZSwgbXVsdGlwbHkgdGhl IG1hdHJpeCBnaXZlbiBieSB1c2Vyc3BhY2UgYnkKPiArICogdGhlIG1hdHJpeCB0aGF0IHdlIHdv dWxkIHVzZSBmb3IgdGhlIGxpbWl0ZWQgcmFuZ2UuIFdlIGRvIHRoZQo+ICsgKiBtdWx0aXBsaWNh dGlvbiBpbiBVMi4zMCBmb3JtYXQuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBjdG1fbXVsdF9ieV9s aW1pdGVkKHVpbnQ2NF90ICpyZXN1bHQsIGludDY0X3QgKmlucHV0KQo+ICt7Cj4gKwlpbnQgaSwg ajsKPiArCXVpbnQ2NF90IGxpbWl0ZWRfY29lZmZzWzldID0geyBDVE1fQ09FRkZfTElNSVRFRF9S QU5HRSwgMCwgMCwKPiArCQkJCSAgICAgICAwLCBDVE1fQ09FRkZfTElNSVRFRF9SQU5HRSwgMCwK PiArCQkJCSAgICAgICAwLCAwLCBDVE1fQ09FRkZfTElNSVRFRF9SQU5HRSB9Owo+ICsKPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxpbWl0ZWRfY29lZmZzKTsgaSsrKSB7Cj4gKwkJaW50 IGNvbHVtbiA9IGkgJSAzLCByb3cgPSBpIC8gMzsKPiArCQlpbnQgbmVnYXRpdmUgPSAwOwo+ICsK PiArCQlpbnB1dFtpXSA9IDA7CgoKCgoKPiArCQlmb3IgKGogPSAwOyBqIDwgMzsgaisrKSB7Cj4g KwkJCWludDY0X3QgdXNlcl9jb2VmZiA9IGlucHV0W2ogKiAzICsgY29sdW1uXTsKPiArCQkJdWlu dDY0X3QgbGltaXRlZF9jb2VmZiA9Cj4gKwkJCQlsaW1pdGVkX2NvZWZmc1tyb3cgKiAzICsgal0g Pj4gMjsKPiArCQkJdWludDY0X3QgYWJzX2NvZWZmID0KPiArCQkJCWNsYW1wX3ZhbChDVE1fQ09F RkZfQUJTKHVzZXJfY29lZmYpLAo+ICsJCQkJCSAgMCwKPiArCQkJCQkgIENUTV9DT0VGRl80XzAg LSAxKSA+PiAyOwo+ICsKPiArCQkJaWYgKENUTV9DT0VGRl9ORUdBVElWRSh1c2VyX2NvZWZmKSkK PiArCQkJCW5lZ2F0aXZlID0gIW5lZ2F0aXZlOwo+ICsJCQlyZXN1bHRbaV0gKz0gbGltaXRlZF9j b2VmZiAqIGFic19jb2VmZjsKPiArCQl9Cj4gKwo+ICsJCXJlc3VsdFtpXSA+Pj0gMjc7Cj4gKwkJ aWYgKG5lZ2F0aXZlKQo+ICsJCQlyZXN1bHRbaV0gfD0gQ1RNX0NPRUZGX1NJR047Cj4gKwl9Cj4g K30KPiArCj4gKy8qIFNldCB1cCB0aGUgcGlwZSBDU0MgdW5pdC4gKi8KPiAgc3RhdGljIHZvaWQg aTl4eF9sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlID0gY3J0Yy0+c3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+IC0JdWludDE2X3QgY29lZmYgPSAweDc4MDA7IC8qIDEuMCAqLwo+ICsJaW50IGksIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9Owo+ ICAKPiAtCS8qCj4gLQkgKiBUT0RPOiBDaGVjayB3aGF0IGtpbmQgb2YgdmFsdWVzIGFjdHVhbGx5 IGNvbWUgb3V0IG9mIHRoZSBwaXBlCj4gLQkgKiB3aXRoIHRoZXNlIGNvZWZmL3Bvc3RvZmYgdmFs dWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZSBiZXN0Cj4gLQkgKiBhY2N1cmFjeS4gUGVyaGFwcyB3 ZSBldmVuIG5lZWQgdG8gdGFrZSB0aGUgYnBjIHZhbHVlIGludG8KPiAtCSAqIGNvbnNpZGVyYXRp b24uCj4gLQkgKi8KPiArCWlmIChjcnRjX3N0YXRlLT5jdG0pIHsKPiArCQlzdHJ1Y3QgZHJtX2Nv bG9yX2N0bSAqY3RtID0KPiArCQkJKHN0cnVjdCBkcm1fY29sb3JfY3RtICopY3J0Y19zdGF0ZS0+ Y3RtLT5kYXRhOwo+ICsJCXVpbnQ2NF90IGlucHV0WzldID0geyAwLCB9Owo+ICAKPiAtCWlmIChp bnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gLQkJY29lZmYgPSAoKDIz NSAtIDE2KSAqICgxIDw8IDEyKSAvIDI1NSkgJiAweGZmODsgLyogMC54eHguLi4gKi8KPiArCQlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJCQljdG1fbXVs dF9ieV9saW1pdGVkKGlucHV0LCBjdG0tPm1hdHJpeCk7Cj4gKwkJZWxzZSB7Cj4gKwkJCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlucHV0KTsgaSsrKQo+ICsJCQkJaW5wdXRbaV0gPSBjdG0t Pm1hdHJpeFtpXTsKPiArCQl9Cj4gKwo+ICsJCS8qCj4gKwkJICogQ29udmVydCBmaXhlZCBwb2lu dCBTMzEuMzIgaW5wdXQgdG8gZm9ybWF0IHN1cHBvcnRlZCBieSB0aGUKPiArCQkgKiBoYXJkd2Fy ZS4KPiArCQkgKi8KPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2VmZnMpOyBpKysp IHsKPiArCQkJdWludDY0X3QgYWJzX2NvZWZmID0gKCgxVUxMIDw8IDYzKSAtIDEpICYgaW5wdXRb aV07Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBDbGFtcCBpbnB1dCB2YWx1ZSB0byBtaW4vbWF4IHN1 cHBvcnRlZCBieQo+ICsJCQkgKiBoYXJkd2FyZS4KPiArCQkJICovCj4gKwkJCWFic19jb2VmZiA9 IGNsYW1wX3ZhbChhYnNfY29lZmYsIDAsIENUTV9DT0VGRl80XzAgLSAxKTsKPiArCj4gKwkJCS8q IHNpZ24gYml0ICovCj4gKwkJCWlmIChDVE1fQ09FRkZfTkVHQVRJVkUoaW5wdXRbaV0pKQo+ICsJ CQkJY29lZmZzW2ldIHw9IDEgPDwgMTU7Cj4gKwo+ICsJCQlpZiAoYWJzX2NvZWZmIDwgQ1RNX0NP RUZGXzBfMTI1KQo+ICsJCQkJY29lZmZzW2ldIHw9ICgzIDw8IDEyKSB8Cj4gKwkJCQkJSTlYWF9D U0NfQ09FRkZfRlAoYWJzX2NvZWZmLCAxMik7Cj4gKwkJCWVsc2UgaWYgKGFic19jb2VmZiA8IENU TV9DT0VGRl8wXzI1KQo+ICsJCQkJY29lZmZzW2ldIHw9ICgyIDw8IDEyKSB8Cj4gKwkJCQkJSTlY WF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZmLCAxMSk7Cj4gKwkJCWVsc2UgaWYgKGFic19jb2VmZiA8 IENUTV9DT0VGRl8wXzUpCj4gKwkJCQljb2VmZnNbaV0gfD0gKDEgPDwgMTIpIHwKPiArCQkJCQlJ OVhYX0NTQ19DT0VGRl9GUChhYnNfY29lZmYsIDEwKTsKPiArCQkJZWxzZSBpZiAoYWJzX2NvZWZm IDwgQ1RNX0NPRUZGXzFfMCkKPiArCQkJCWNvZWZmc1tpXSB8PSBJOVhYX0NTQ19DT0VGRl9GUChh YnNfY29lZmYsIDkpOwo+ICsJCQllbHNlIGlmIChhYnNfY29lZmYgPCBDVE1fQ09FRkZfMl8wKQo+ ICsJCQkJY29lZmZzW2ldIHw9ICg3IDw8IDEyKSB8Cj4gKwkJCQkJSTlYWF9DU0NfQ09FRkZfRlAo YWJzX2NvZWZmLCA4KTsKPiArCQkJZWxzZQo+ICsJCQkJY29lZmZzW2ldIHw9ICg2IDw8IDEyKSB8 Cj4gKwkJCQkJSTlYWF9DU0NfQ09FRkZfRlAoYWJzX2NvZWZmLCA3KTsKPiArCQl9Cj4gKwl9IGVs c2Ugewo+ICsJCS8qCj4gKwkJICogTG9hZCBhbiBpZGVudGlmeSBtYXRyaXggaWYgbm8gY29lZmZp Y2llbnRzIGFyZSBwcm92aWRlZC4KPiArCQkgKgo+ICsJCSAqIFRPRE86IENoZWNrIHdoYXQga2lu ZCBvZiB2YWx1ZXMgYWN0dWFsbHkgY29tZSBvdXQgb2YgdGhlCj4gKwkJICogcGlwZSB3aXRoIHRo ZXNlIGNvZWZmL3Bvc3RvZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZQo+ICsJCSAqIGJl c3QgYWNjdXJhY3kuIFBlcmhhcHMgd2UgZXZlbiBuZWVkIHRvIHRha2UgdGhlIGJwYyB2YWx1ZQo+ ICsJCSAqIGludG8gY29uc2lkZXJhdGlvbi4KPiArCQkgKi8KPiArCQlmb3IgKGkgPSAwOyBpIDwg MzsgaSsrKSB7Cj4gKwkJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFu Z2UpCj4gKwkJCQljb2VmZnNbaSAqIDMgKyBpXSA9Cj4gKwkJCQkJSTlYWF9DU0NfQ09FRkZfTElN SVRFRF9SQU5HRTsKPiArCQkJZWxzZQo+ICsJCQkJY29lZmZzW2kgKiAzICsgaV0gPSBJOVhYX0NT Q19DT0VGRl8xXzA7Cj4gKwkJfQo+ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBHWS9HVSBhbmQgUlkv UlUgc2hvdWxkIGJlIHRoZSBvdGhlciB3YXkgYXJvdW5kIGFjY29yZGluZwo+ICAJICogdG8gQlNw ZWMsIGJ1dCByZWFsaXR5IGRvZXNuJ3QgYWdyZWUuIEp1c3Qgc2V0IHRoZW0gdXAgaW4KPiAgCSAq IGEgd2F5IHRoYXQgcmVzdWx0cyBpbiB0aGUgY29ycmVjdCBwaWN0dXJlLgo+ICAJICovCj4gLQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JZX0dZKHBpcGUpLCBjb2VmZiA8PCAxNik7Cj4gLQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JZKHBpcGUpLCAwKTsKPiArCUk5MTVfV1JJVEUoUElQ RV9DU0NfQ09FRkZfUllfR1kocGlwZSksIGNvZWZmc1swXSA8PCAxNiB8IGNvZWZmc1sxXSk7Cj4g KwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JZKHBpcGUpLCBjb2VmZnNbMl0gPDwgMTYpOwo+ ICAKPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUlVfR1UocGlwZSksIGNvZWZmKTsKPiAt CUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlUocGlwZSksIDApOwo+ICsJSTkxNV9XUklURShQ SVBFX0NTQ19DT0VGRl9SVV9HVShwaXBlKSwgY29lZmZzWzNdIDw8IDE2IHwgY29lZmZzWzRdKTsK PiArCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlUocGlwZSksIGNvZWZmc1s1XSA8PCAxNik7 Cj4gIAo+IC0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9SVl9HVihwaXBlKSwgMCk7Cj4gLQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JWKHBpcGUpLCBjb2VmZiA8PCAxNik7Cj4gKwlJOTE1 X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JWX0dWKHBpcGUpLCBjb2VmZnNbNl0gPDwgMTYgfCBjb2Vm ZnNbN10pOwo+ICsJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CVihwaXBlKSwgY29lZmZzWzhd IDw8IDE2KTsKPiAgCj4gIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9ISShwaXBlKSwgMCk7 Cj4gIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9NRShwaXBlKSwgMCk7Cj4gQEAgLTkwLDEz ICsyMTgsMTggQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICAKPiAgdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiAgewo+IC0JaTl4eF9sb2FkX2NzY19tYXRyaXgoY3J0Yyk7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPmRpc3Bs YXkubG9hZF9jc2NfbWF0cml4KQo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJp eChjcnRjKTsKPiAgfQo+ICAKPiAtLyogTG9hZHMgdGhlIHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3Ig dGhlIENSVEMgd2l0aCB0aGUgcHJlcGFyZWQgdmFsdWVzLiAqLwo+ICsvKiBMb2FkcyB0aGUgbGVn YWN5IHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENSVEMuICovCj4gIHN0YXRpYyB2b2lkIGk5 eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUg PSBjcnRjLT5zdGF0ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g QEAgLTEwOSwxOCArMjQyLDMzIEBAIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCQkJYXNzZXJ0X3BsbF9lbmFibGVkKGRldl9wcml2LCBwaXBlKTsK PiAgCX0KPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPiAtCQl1aW50MzJfdCB3 b3JkID0gKGludGVsX2NydGMtPmx1dF9yW2ldIDw8IDE2KSB8Cj4gLQkJCShpbnRlbF9jcnRjLT5s dXRfZ1tpXSA8PCA4KSB8Cj4gLQkJCWludGVsX2NydGMtPmx1dF9iW2ldOwo+IC0JCWlmIChIQVNf R01DSF9ESVNQTEFZKGRldikpCj4gLQkJCUk5MTVfV1JJVEUoUEFMRVRURShwaXBlLCBpKSwgd29y ZCk7Cj4gLQkJZWxzZQo+IC0JCQlJOTE1X1dSSVRFKExHQ19QQUxFVFRFKHBpcGUsIGkpLCB3b3Jk KTsKPiArCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KSB7Cj4gKwkJc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dCA9Cj4gKwkJCShzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqKSBzdGF0ZS0+Z2FtbWFfbHV0LT5k YXRhOwo+ICsJCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ICsJCQl1aW50MzJfdCB3b3Jk ID0KPiArCQkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgOCkgPDwgMTYpIHwK PiArCQkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmdyZWVuLCA4KSA8PCA4KSB8Cj4g KwkJCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDgpOwo+ICsKPiArCQkJaWYg KEhBU19HTUNIX0RJU1BMQVkoZGV2KSkKPiArCQkJCUk5MTVfV1JJVEUoUEFMRVRURShwaXBlLCBp KSwgd29yZCk7Cj4gKwkJCWVsc2UKPiArCQkJCUk5MTVfV1JJVEUoTEdDX1BBTEVUVEUocGlwZSwg aSksIHdvcmQpOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IDI1Njsg aSsrKSB7Cj4gKwkJCXVpbnQzMl90IHdvcmQgPSAoaSA8PCAxNikgfCAoaSA8PCA4KSB8IGk7Cj4g Kwo+ICsJCQlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXYpKQo+ICsJCQkJSTkxNV9XUklURShQQUxF VFRFKHBpcGUsIGkpLCB3b3JkKTsKPiArCQkJZWxzZQo+ICsJCQkJSTkxNV9XUklURShMR0NfUEFM RVRURShwaXBlLCBpKSwgd29yZCk7Cj4gKwkJfQo+ICAJfQo+ICB9Cj4gIAo+IC0vKiBMb2FkcyB0 aGUgbGVnYWN5IHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENSVEMgb24gSGFzd2VsbCsuICov Cj4gKy8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyBv biBIYXN3ZWxsLiAqLwo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 Cj4gQEAgLTE0OSw2ICsyOTcsODkgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9sb2FkX2x1dHMoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCWhzd19lbmFibGVfaXBzKGludGVsX2NydGMpOwo+ICB9 Cj4gIAo+ICsvKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBC cm9hZHdlbGwrLiAqLwo+ICtzdGF0aWMgdm9pZCBicm9hZHdlbGxfbG9hZF9sdXRzKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRl djsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUgPSBjcnRjLT5zdGF0ZTsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRl KHN0YXRlKTsKPiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsK PiArCXVpbnQzMl90IGksIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXYpLT5jb2xvci5kZWdhbW1h X2x1dF9zaXplOwo+ICsKPiArCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeShzdGF0ZSkpIHsKPiAr CQloYXN3ZWxsX2xvYWRfbHV0cyhjcnRjKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJSTkx NV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwKPiArCQkgICBQQUxfUFJFQ19TUExJVF9NT0RF IHwgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+ICsKPiArCWlmIChzdGF0ZS0+ZGVnYW1tYV9s dXQpIHsKPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0KPiArCQkJKHN0cnVjdCBkcm1f Y29sb3JfbHV0ICopIHN0YXRlLT5kZWdhbW1hX2x1dC0+ZGF0YTsKPiArCj4gKwkJZm9yIChpID0g MDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiArCQkJdWludDMyX3Qgd29yZCA9Cj4gKwkJCWRybV9j b2xvcl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxMCkgPDwgMjAgfAo+ICsJCQlkcm1fY29sb3Jf bHV0X2V4dHJhY3QobHV0W2ldLmdyZWVuLCAxMCkgPDwgMTAgfAo+ICsJCQlkcm1fY29sb3JfbHV0 X2V4dHJhY3QobHV0W2ldLmJsdWUsIDEwKTsKPiArCj4gKwkJCUk5MTVfV1JJVEUoUFJFQ19QQUxf REFUQShwaXBlKSwgd29yZCk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlmb3IgKGkgPSAwOyBp IDwgbHV0X3NpemU7IGkrKykgewo+ICsJCQl1aW50MzJfdCB2ID0gKGkgKiAoKDEgPDwgMTApIC0g MSkpIC8gKGx1dF9zaXplIC0gMSk7Cj4gKwo+ICsJCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEo cGlwZSksCj4gKwkJCQkgICAodiA8PCAyMCkgfCAodiA8PCAxMCkgfCB2KTsKPiArCQl9Cj4gKwl9 Cj4gKwo+ICsJaWYgKHN0YXRlLT5nYW1tYV9sdXQpIHsKPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCAqbHV0ID0KPiArCQkJKHN0cnVjdCBkcm1fY29sb3JfbHV0ICopIHN0YXRlLT5nYW1tYV9sdXQt PmRhdGE7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJCXVp bnQzMl90IHdvcmQgPQo+ICsJCQkoZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5yZWQsIDEw KSA8PCAyMCkgfAo+ICsJCQkoZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwgMTAp IDw8IDEwKSB8Cj4gKwkJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTApOwo+ ICsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCB3b3JkKTsKPiArCQl9Cj4g Kwo+ICsJCS8qIFByb2dyYW0gdGhlIG1heCByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAu ICovCj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMCksCj4gKwkJCSAgIGRy bV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxNikpOwo+ICsJCUk5MTVfV1JJVEUoUFJF Q19QQUxfR0NfTUFYKHBpcGUsIDEpLAo+ICsJCQkgICBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0 W2ldLmdyZWVuLCAxNikpOwo+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIp LAo+ICsJCQkgICBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDE2KSk7Cj4gKwl9 IGVsc2Ugewo+ICsJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJCXVpbnQz Ml90IHYgPSAoaSAqICgoMSA8PCAxMCkgLSAxKSkgLyAobHV0X3NpemUgLSAxKTsKPiArCj4gKwkJ CUk5MTVfV1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwKPiArCQkJCSAgICh2IDw8IDIwKSB8ICh2 IDw8IDEwKSB8IHYpOwo+ICsJCX0KPiArCj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgo cGlwZSwgMCksICgxIDw8IDE2KSAtIDEpOwo+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFY KHBpcGUsIDEpLCAoMSA8PCAxNikgLSAxKTsKPiArCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01B WChwaXBlLCAyKSwgKDEgPDwgMTYpIC0gMSk7Cj4gKwl9Cj4gKwo+ICsJaW50ZWxfc3RhdGUtPmdh bW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfU1BMSVQ7Cj4gKwlJOTE1X1dSSVRFKEdBTU1BX01P REUocGlwZSksIEdBTU1BX01PREVfTU9ERV9TUExJVCk7Cj4gKwlQT1NUSU5HX1JFQUQoR0FNTUFf TU9ERShwaXBlKSk7Cj4gKwo+ICsJLyoKPiArCSAqIFJlc2V0IHRoZSBpbmRleCwgb3RoZXJ3aXNl IGl0IHByZXZlbnRzIHRoZSBsZWdhY3kgcGFsZXR0ZSB0byBiZQo+ICsJICogd3JpdHRlbiBwcm9w ZXJseS4KPiArCSAqLwo+ICsJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7Cj4g K30KPiArCj4gIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMTYx LDM4ICszOTIsNjEgQEAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICAJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzKGNydGMpOwo+ICB9Cj4gIAo+ IC12b2lkIGludGVsX2NvbG9yX2xlZ2FjeV9nYW1tYV9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRj LCB1MTYgKnJlZCwgdTE2ICpncmVlbiwKPiAtCQkJCSAgdTE2ICpibHVlLCB1aW50MzJfdCBzdGFy dCwgdWludDMyX3Qgc2l6ZSkKPiAraW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiArCQkgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IHsKPiAtCWludCBlbmQgPSAoc3RhcnQgKyBzaXplID4gMjU2KSA/IDI1NiA6IHN0YXJ0ICsgc2l6 ZSwgaTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzaXplX3Qg Z2FtbWFfbGVuZ3RoLCBkZWdhbW1hX2xlbmd0aDsKPiAgCj4gLQlmb3IgKGkgPSBzdGFydDsgaSA8 IGVuZDsgaSsrKSB7Cj4gLQkJaW50ZWxfY3J0Yy0+bHV0X3JbaV0gPSByZWRbaV0gPj4gODsKPiAt CQlpbnRlbF9jcnRjLT5sdXRfZ1tpXSA9IGdyZWVuW2ldID4+IDg7Cj4gLQkJaW50ZWxfY3J0Yy0+ bHV0X2JbaV0gPSBibHVlW2ldID4+IDg7Cj4gLQl9Cj4gKwlkZWdhbW1hX2xlbmd0aCA9IElOVEVM X0lORk8oZGV2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSAqCj4gKwkJc2l6ZW9mKHN0cnVjdCBk cm1fY29sb3JfbHV0KTsKPiArCWdhbW1hX2xlbmd0aCA9IElOVEVMX0lORk8oZGV2KS0+Y29sb3Iu Z2FtbWFfbHV0X3NpemUgKgo+ICsJCXNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCk7Cj4gKwo+ ICsJLyoKPiArCSAqIFdlIGFsbG93IGJvdGggZGVnYW1tYSAmIGdhbW1hIGx1dHMgYXQgdGhlIHJp Z2h0IHNpemUgb3IKPiArCSAqIE5VTEwuCj4gKwkgKi8KPiArCWlmICgoIWNydGNfc3RhdGUtPmRl Z2FtbWFfbHV0IHx8Cj4gKwkgICAgIGNydGNfc3RhdGUtPmRlZ2FtbWFfbHV0LT5sZW5ndGggPT0g ZGVnYW1tYV9sZW5ndGgpICYmCj4gKwkgICAgKCFjcnRjX3N0YXRlLT5nYW1tYV9sdXQgfHwKPiAr CSAgICAgY3J0Y19zdGF0ZS0+Z2FtbWFfbHV0LT5sZW5ndGggPT0gZ2FtbWFfbGVuZ3RoKSkKPiAr CQlyZXR1cm4gMDsKPiArCj4gKwkvKgo+ICsJICogV2UgYWxzbyBhbGxvdyBubyBkZWdhbW1hIGx1 dCBhbmQgYSBnYW1tYSBsdXQgYXQgdGhlIGxlZ2FjeQo+ICsJICogc2l6ZSAoMjU2IGVudHJpZXMp Lgo+ICsJICovCj4gKwlpZiAoIWNydGNfc3RhdGUtPmRlZ2FtbWFfbHV0ICYmCj4gKwkgICAgY3J0 Y19zdGF0ZS0+Z2FtbWFfbHV0ICYmCj4gKwkgICAgY3J0Y19zdGF0ZS0+Z2FtbWFfbHV0LT5sZW5n dGggPT0gTEVHQUNZX0xVVF9MRU5HVEgpCj4gKwkJcmV0dXJuIDA7Cj4gIAo+IC0JaW50ZWxfY29s b3JfbG9hZF9sdXRzKGNydGMpOwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4gIHZvaWQg aW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JaW50IGk7Cj4gIAo+ICAJZHJtX21vZGVf Y3J0Y19zZXRfZ2FtbWFfc2l6ZShjcnRjLCAyNTYpOwo+IC0JZm9yIChpID0gMDsgaSA8IDI1Njsg aSsrKSB7Cj4gLQkJaW50ZWxfY3J0Yy0+bHV0X3JbaV0gPSBpOwo+IC0JCWludGVsX2NydGMtPmx1 dF9nW2ldID0gaTsKPiAtCQlpbnRlbF9jcnRjLT5sdXRfYltpXSA9IGk7Cj4gLQl9Cj4gIAo+IC0J aWYgKElTX0hBU1dFTEwoZGV2KSB8fAo+IC0JICAgIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4 ICYmICFJU19DSEVSUllWSUVXKGRldikpKQo+ICsJaWYgKElTX0hBU1dFTEwoZGV2KSkgewo+ICsJ CWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCA9IGk5eHhfbG9hZF9jc2NfbWF0cml4 Owo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGhhc3dlbGxfbG9hZF9sdXRzOwo+ IC0JZWxzZQo+ICsJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2KSB8fCBJU19TS1lMQUtFKGRl dikgfHwKPiArCQkgICBJU19CUk9YVE9OKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkgewo+ICsJ CWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCA9IGk5eHhfbG9hZF9jc2NfbWF0cml4 Owo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGJyb2Fkd2VsbF9sb2FkX2x1dHM7 Cj4gKwl9IGVsc2Ugewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9h ZF9sdXRzOwo+ICsJfQo+ICsKPiArCS8qIEVuYWJsZSBjb2xvciBtYW5hZ2VtZW50IHN1cHBvcnQg d2hlbiB3ZSBoYXZlIGRlZ2FtbWEgJiBnYW1tYSBMVVRzLiAqLwo+ICsJaWYgKElOVEVMX0lORk8o ZGV2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSAhPSAwICYmCj4gKwkgICAgSU5URUxfSU5GTyhk ZXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZSAhPSAwKQo+ICsJCWRybV9oZWxwZXJfY3J0Y19lbmFi bGVfY29sb3JfbWdtdChjcnRjLAo+ICsJCQkJCUlOVEVMX0lORk8oZGV2KS0+Y29sb3IuZGVnYW1t YV9sdXRfc2l6ZSwKPiArCQkJCQlJTlRFTF9JTkZPKGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXpl KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBhY2JiMWQ5 Li4xYWFmZTAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0x MTg0Niw2ICsxMTg0NiwxMiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gKwlpZiAo Y3J0Y19zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Cj4gKwkJcmV0ID0gaW50ZWxfY29sb3Jf Y2hlY2soY3J0YywgY3J0Y19zdGF0ZSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsK PiArCX0KPiArCj4gIAlyZXQgPSAwOwo+ICAJaWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVf cGlwZV93bSkgewo+ICAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bShp bnRlbF9jcnRjLCBzdGF0ZSk7Cj4gQEAgLTExODY3LDcgKzExODczLDYgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJfZnVuY3Mg PSB7Cj4gIAkubW9kZV9zZXRfYmFzZV9hdG9taWMgPSBpbnRlbF9waXBlX3NldF9iYXNlX2F0b21p YywKPiAtCS5sb2FkX2x1dCA9IGludGVsX2NvbG9yX2xvYWRfbHV0cywKPiAgCS5hdG9taWNfYmVn aW4gPSBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdCwKPiAgCS5hdG9taWNfZmx1c2ggPSBpbnRlbF9m aW5pc2hfY3J0Y19jb21taXQsCj4gIAkuYXRvbWljX2NoZWNrID0gaW50ZWxfY3J0Y19hdG9taWNf Y2hlY2ssCj4gQEAgLTEzMzk4LDYgKzEzNDAzLDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWlj X2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQlod19jaGVjayA9IHRydWU7Cj4g IAkJfQo+ICAKPiArCQlpZiAoIW1vZGVzZXQgJiYKPiArCQkgICAgY3J0Yy0+c3RhdGUtPmFjdGl2 ZSAmJgo+ICsJCSAgICBjcnRjLT5zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Cj4gKwkJCS8q Cj4gKwkJCSAqIE9ubHkgdXBkYXRlIGNvbG9yIG1hbmFnZW1lbnQgd2hlbiBub3QgZG9pbmcKPiAr CQkJICogYSBtb2Rlc2V0IGFzIHRoaXMgd2lsbCBiZSBkb25lIGJ5Cj4gKwkJCSAqIGNydGNfZW5h YmxlIGFscmVhZHkuCj4gKwkJCSAqLwo+ICsJCQlpbnRlbF9jb2xvcl9zZXRfY3NjKGNydGMpOwo+ ICsJCQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY3J0Yyk7Cj4gKwkJfQo+ICsKPiAgCQlpZiAoIW1v ZGVzZXQpCj4gIAkJCWludGVsX3ByZV9wbGFuZV91cGRhdGUodG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjX3N0YXRlKSk7Cj4gIAo+IEBAIC0xMzQ4Nyw4ICsxMzUwNCw5IEBAIG91dDoKPiAgI3VuZGVm IGZvcl9lYWNoX2ludGVsX2NydGNfbWFza2VkCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jcnRjX2Z1bmNzIGludGVsX2NydGNfZnVuY3MgPSB7Cj4gLQkuZ2FtbWFfc2V0ID0gaW50ZWxf Y29sb3JfbGVnYWN5X2dhbW1hX3NldCwKPiArCS5nYW1tYV9zZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9sZWdhY3lfZ2FtbWFfc2V0LAo+ICAJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnLAo+ICsJLnNldF9wcm9wZXJ0eSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfc2V0 X3Byb3BlcnR5LAo+ICAJLmRlc3Ryb3kgPSBpbnRlbF9jcnRjX2Rlc3Ryb3ksCj4gIAkucGFnZV9m bGlwID0gaW50ZWxfY3J0Y19wYWdlX2ZsaXAsCj4gIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9 IGludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g aW5kZXggOTc0MmQ1Yi4uMzA4MmRiZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTE2MjQsOSArMTYyNCw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBl cl9mdW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3M7Cj4gIAo+ICAvKiBpbnRlbF9jb2xvci5j ICovCj4gIHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICtp bnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKnN0YXRlKTsKPiAgdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1f Y3J0YyAqY3J0Yyk7Cj4gIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7Cj4gLXZvaWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAo+IC0JCQkJICB1MTYgKmJsdWUsIHVp bnQzMl90IHN0YXJ0LCB1aW50MzJfdCBzaXplKTsKPiAgCj4gICNlbmRpZiAvKiBfX0lOVEVMX0RS Vl9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiBpbmRleCA5N2E5MWU2Li43 NzdmOThjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gQEAgLTM3OSw2ICsz NzksNyBAQCByZXRyeToKPiAgCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJ CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9j cnRjICpuZXdfY3J0YzsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgCj4g IAkJZmJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07Cj4gIAkJY29ubmVjdG9y ID0gZmJfY29ubi0+Y29ubmVjdG9yOwo+IEBAIC00MjAsNiArNDIxLDEzIEBAIHJldHJ5Ogo+ICAK PiAgCQludW1fY29ubmVjdG9yc19lbmFibGVkKys7Cj4gIAo+ICsJCWludGVsX2NydGMgPSB0b19p bnRlbF9jcnRjKGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwo+ICsJCWZvciAoaiA9IDA7IGogPCAy NTY7IGorKykgewo+ICsJCQlpbnRlbF9jcnRjLT5sdXRfcltqXSA9IGo7Cj4gKwkJCWludGVsX2Ny dGMtPmx1dF9nW2pdID0gajsKPiArCQkJaW50ZWxfY3J0Yy0+bHV0X2Jbal0gPSBqOwo+ICsJCX0K PiArCj4gIAkJbmV3X2NydGMgPSBpbnRlbF9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsIGNvbm5l Y3Rvci0+c3RhdGUtPmNydGMpOwo+ICAKPiAgCQkvKgo+IC0tIAo+IDIuNy4wCj4gCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFp bGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKTWF0dCBS b3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYg RGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==