From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Convert ICL-style DSI to use phy namespace Date: Thu, 05 Sep 2019 15:49:16 +0300 Message-ID: <8736ha52nn.fsf@intel.com> References: <20190905012037.7157-1-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18BB989BB0 for ; Thu, 5 Sep 2019 12:49:23 +0000 (UTC) In-Reply-To: <20190905012037.7157-1-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org Cc: Ville Syrjala List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwNCBTZXAgMjAxOSwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4gd3JvdGU6Cj4gSUNMKyBEU0kgb3V0cHV0cyBvcGVyYXRlIGEgYml0IGRpZmZlcmVudGx5IHRo YW4gRFAvSERNSS9lRFAgYW5kIGFyZSBtb3JlCj4gY2xvc2VseSB0aWVkIHRvIHRoZSBQSFkgdGhh biB0byB0aGUgRERJLiAgU2luY2Ugd2UndmUgc2VwYXJhdGVkIFBIWSdzCj4gb3V0IGludG8gdGhl aXIgb3duIG5hbWVzcGFjZSBpdCBtYWtlcyBzZW5zZSB0byBvcGVyYXRlIG9uICdlbnVtIHBoeScK PiB0aHJvdWdob3V0IG1vc3Qgb2YgdGhlIElDTCBEU0kgY29kZSByYXRoZXIgdGhhbiAnZW51bSBw b3J0JyB3aGljaCB3ZQo+IGdlbmVyYWxseSB1c2UgdG8gcmVmZXIgdG8gdGhlIERESSB0aGVzZSBk YXlzLiAgUGFydCBvZiB0aGlzIHRyYW5zaXRpb24KPiBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYXMg cGFydCBvZiBjb21taXQgZGM4NjdiYzdkODg3ICgiZHJtL2k5MTUvZ2VuMTE6Cj4gQ29udmVydCBj b21ibyBQSFkgbG9naWMgdG8gdXNlIG5ldyAnZW51bSBwaHknIG5hbWVzcGFjZSIpLCBhbHRob3Vn aCB0aGF0Cj4gcGF0Y2ggb25seSBtaWdyYXRlZCB0aGUgcGFydHMgb2YgdGhlIGNvZGUgdGhhdCB3 ZXJlIHNwZWNpZmljYWxseQo+IHVwZGF0aW5nIHRoZSBjb21ibyBQSFkgcmVnaXN0ZXJzIHRoZW1z ZWx2ZXMuICBNb3ZpbmcgdGhlIHJlc3Qgb2YgdGhlCj4gY29kZSBvdmVyIHRvIHRoZSBQSFkgbmFt ZXNwYWNlIGFzIHdlbGwgd2lsbCBob3BlZnVsbHkgbWFrZSB0aGluZ3MgbW9yZQo+IGNvbnNpc3Rl bnQgYW5kIGxlc3MgY29uZnVzaW5nLgo+Cj4gTm90ZSB0aGF0IHRoZSBjaGFuZ2UgaGVyZSBpcyBy ZWFsbHkganVzdCBhIG5hbWluZyBjaGFuZ2UuICBPbiBhbGwgb2YgdGhlCj4gcGxhdGZvcm1zIHRo YXQgdGhpcyBjb2RlIGN1cnJlbnRseSBhcHBsaWVzIHRvLCB0aGUgRFNJIG91dHB1dHMgYWx3YXlz Cj4gaGF2ZSBwb3J0PT1waHkgc28gd2UncmUgc3RpbGwgcGFzc2luZyB0aGUgc2FtZSBpbnRlZ2Vy IHZhbHVlcyBhcm91bmQgbm8KPiBtYXR0ZXIgd2hpY2ggdHlwZSBvZiBlbnVtIHRoZXkgYmVsb25n IHRvLi4KPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+ IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+CgpD YzogVmlsbGUgJiBWYW5kaXRhLCBGWUksIG1heWJlIHlvdSB3YW50IHRvIGV5ZWJhbGwgdGhyb3Vn aCB0aGlzLgoKUmV2aWV3ZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+ Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYyAgIHwgMjM2 ICsrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHNpLmggfCAgIDUgKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygr KSwgMTE1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaWNsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNp LmMKPiBpbmRleCA2ZTM5OGMzM2E1MjQuLjVjZjMyMDMyZTc5NSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5jCj4gQEAgLTY1LDkgKzY1LDkgQEAgc3RhdGljIHZvaWQg d2FpdF9mb3JfcGF5bG9hZF9jcmVkaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCQlEUk1fRVJST1IoIkRTSSBwYXlsb2FkIGNyZWRpdHMgbm90IHJlbGVhc2VkXG4iKTsK PiAgfQo+ICAKPiAtc3RhdGljIGVudW0gdHJhbnNjb2RlciBkc2lfcG9ydF90b190cmFuc2NvZGVy KGVudW0gcG9ydCBwb3J0KQo+ICtzdGF0aWMgZW51bSB0cmFuc2NvZGVyIGRzaV9waHlfdG9fdHJh bnNjb2RlcihlbnVtIHBoeSBwaHkpCj4gIHsKPiAtCWlmIChwb3J0ID09IFBPUlRfQSkKPiArCWlm IChwaHkgPT0gUEhZX0EpCj4gIAkJcmV0dXJuIFRSQU5TQ09ERVJfRFNJXzA7Cj4gIAllbHNlCj4g IAkJcmV0dXJuIFRSQU5TQ09ERVJfRFNJXzE7Cj4gQEAgLTc4LDIwICs3OCwyMCBAQCBzdGF0aWMg dm9pZCB3YWl0X2Zvcl9jbWRzX2Rpc3BhdGNoZWRfdG9fcGFuZWwoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9 IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICAJc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqZHNpOwo+IC0JZW51bSBwb3J0IHBvcnQ7Cj4gKwllbnVtIHBoeSBwaHk7Cj4gIAllbnVt IHRyYW5zY29kZXIgZHNpX3RyYW5zOwo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiB3YWl0IGZvciBo ZWFkZXIvcGF5bG9hZCBjcmVkaXRzIHRvIGJlIHJlbGVhc2VkICovCj4gLQlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0gZHNpX3BvcnRf dG9fdHJhbnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2kt PnBoeXMpIHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIocGh5KTsKPiAg CQl3YWl0X2Zvcl9oZWFkZXJfY3JlZGl0cyhkZXZfcHJpdiwgZHNpX3RyYW5zKTsKPiAgCQl3YWl0 X2Zvcl9wYXlsb2FkX2NyZWRpdHMoZGV2X3ByaXYsIGRzaV90cmFucyk7Cj4gIAl9Cj4gIAo+ICAJ Lyogc2VuZCBub3AgRENTIGNvbW1hbmQgKi8KPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGlu dGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlkc2kgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ ZGV2aWNlOwo+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJ CWRzaSA9IGludGVsX2RzaS0+ZHNpX2hvc3RzW3BoeV0tPmRldmljZTsKPiAgCQlkc2ktPm1vZGVf ZmxhZ3MgfD0gTUlQSV9EU0lfTU9ERV9MUE07Cj4gIAkJZHNpLT5jaGFubmVsID0gMDsKPiAgCQly ZXQgPSBtaXBpX2RzaV9kY3Nfbm9wKGRzaSk7Cj4gQEAgLTEwMCwxNCArMTAwLDE0IEBAIHN0YXRp YyB2b2lkIHdhaXRfZm9yX2NtZHNfZGlzcGF0Y2hlZF90b19wYW5lbChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKPiAgCX0KPiAgCj4gIAkvKiB3YWl0IGZvciBoZWFkZXIgY3JlZGl0cyB0 byBiZSByZWxlYXNlZCAqLwo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5w b3J0cykgewo+IC0JCWRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4g Kwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJZHNpX3RyYW5z ID0gZHNpX3BoeV90b190cmFuc2NvZGVyKHBoeSk7Cj4gIAkJd2FpdF9mb3JfaGVhZGVyX2NyZWRp dHMoZGV2X3ByaXYsIGRzaV90cmFucyk7Cj4gIAl9Cj4gIAo+ICAJLyogd2FpdCBmb3IgTFAgVFgg aW4gcHJvZ3Jlc3MgYml0IHRvIGJlIGNsZWFyZWQgKi8KPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBv cnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlkc2lfdHJhbnMgPSBkc2lfcG9ydF90b190cmFu c2NvZGVyKHBvcnQpOwo+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykg ewo+ICsJCWRzaV90cmFucyA9IGRzaV9waHlfdG9fdHJhbnNjb2RlcihwaHkpOwo+ICAJCWlmICh3 YWl0X2Zvcl91cyghKEk5MTVfUkVBRChEU0lfTFBfTVNHKGRzaV90cmFucykpICYKPiAgCQkJCSAg TFBUWF9JTl9QUk9HUkVTUyksIDIwKSkKPiAgCQkJRFJNX0VSUk9SKCJMUFRYIGJpdCBub3QgY2xl YXJlZFxuIik7Cj4gQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgYm9vbCBhZGRfcGF5bGRfdG9f cXVldWUoc3RydWN0IGludGVsX2RzaV9ob3N0ICpob3N0LCBjb25zdCB1OCAqZGF0YSwKPiAgewo+ ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gaG9zdC0+aW50ZWxfZHNpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kc2ktPmJhc2Uu YmFzZS5kZXYpOwo+IC0JZW51bSB0cmFuc2NvZGVyIGRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3Ry YW5zY29kZXIoaG9zdC0+cG9ydCk7Cj4gKwllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zID0gZHNp X3BoeV90b190cmFuc2NvZGVyKGhvc3QtPnBoeSk7Cj4gIAlpbnQgZnJlZV9jcmVkaXRzOwo+ICAJ aW50IGksIGo7Cj4gIAo+IEBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIGludCBkc2lfc2VuZF9w a3RfaGRyKHN0cnVjdCBpbnRlbF9kc2lfaG9zdCAqaG9zdCwKPiAgewo+ICAJc3RydWN0IGludGVs X2RzaSAqaW50ZWxfZHNpID0gaG9zdC0+aW50ZWxfZHNpOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kc2ktPmJhc2UuYmFzZS5kZXYpOwo+IC0J ZW51bSB0cmFuc2NvZGVyIGRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIoaG9zdC0+ cG9ydCk7Cj4gKwllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zID0gZHNpX3BoeV90b190cmFuc2Nv ZGVyKGhvc3QtPnBoeSk7Cj4gIAl1MzIgdG1wOwo+ICAJaW50IGZyZWVfY3JlZGl0czsKPiAgCj4g QEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfcHJvZ3JhbV9lc2NfY2xr X2RpdihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlz dHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5i YXNlKTsKPiAtCWVudW0gcG9ydCBwb3J0Owo+ICsJZW51bSBwaHkgcGh5Owo+ICAJdTMyIGJwcCA9 IG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAoaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQpOwo+ ICAJdTMyIGFmZV9jbGtfa2h6OyAvKiA4WCBDbG9jayAqLwo+ICAJdTMyIGVzY19jbGtfZGl2X207 Cj4gQEAgLTMxNSwyOSArMzE1LDI5IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9wcm9ncmFtX2Vz Y19jbGtfZGl2KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCWVzY19jbGtf ZGl2X20gPSBESVZfUk9VTkRfVVAoYWZlX2Nsa19raHosIERTSV9NQVhfRVNDX0NMSyk7Cj4gIAo+ IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCUk5MTVf V1JJVEUoSUNMX0RTSV9FU0NfQ0xLX0RJVihwb3J0KSwKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5 LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0lfRVNDX0NMS19ESVYo cGh5KSwKPiAgCQkJICAgZXNjX2Nsa19kaXZfbSAmIElDTF9FU0NfQ0xLX0RJVl9NQVNLKTsKPiAt CQlQT1NUSU5HX1JFQUQoSUNMX0RTSV9FU0NfQ0xLX0RJVihwb3J0KSk7Cj4gKwkJUE9TVElOR19S RUFEKElDTF9EU0lfRVNDX0NMS19ESVYocGh5KSk7Cj4gIAl9Cj4gIAo+IC0JZm9yX2VhY2hfZHNp X3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCUk5MTVfV1JJVEUoSUNMX0RQSFlf RVNDX0NMS19ESVYocG9ydCksCj4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5w aHlzKSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFBIWV9FU0NfQ0xLX0RJVihwaHkpLAo+ICAJCQkg ICBlc2NfY2xrX2Rpdl9tICYgSUNMX0VTQ19DTEtfRElWX01BU0spOwo+IC0JCVBPU1RJTkdfUkVB RChJQ0xfRFBIWV9FU0NfQ0xLX0RJVihwb3J0KSk7Cj4gKwkJUE9TVElOR19SRUFEKElDTF9EUEhZ X0VTQ19DTEtfRElWKHBoeSkpOwo+ICAJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZXRfZHNp X2lvX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkJICAgICBzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kpCj4gIHsKPiAtCWVudW0gcG9ydCBw b3J0Owo+ICsJZW51bSBwaHkgcGh5Owo+ICAKPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGlu dGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlXQVJOX09OKGludGVsX2RzaS0+aW9fd2FrZXJlZltwb3J0 XSk7Cj4gLQkJaW50ZWxfZHNpLT5pb193YWtlcmVmW3BvcnRdID0KPiArCWZvcl9lYWNoX2RzaV9w aHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiArCQlXQVJOX09OKGludGVsX2RzaS0+aW9fd2Fr ZXJlZltwaHldKTsKPiArCQlpbnRlbF9kc2ktPmlvX3dha2VyZWZbcGh5XSA9Cj4gIAkJCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+IC0JCQkJCQlwb3J0ID09IFBPUlRfQSA/Cj4g KwkJCQkJCXBoeSA9PSBQSFlfQSA/Cj4gIAkJCQkJCVBPV0VSX0RPTUFJTl9QT1JUX0RESV9BX0lP IDoKPiAgCQkJCQkJUE9XRVJfRE9NQUlOX1BPUlRfRERJX0JfSU8pOwo+ICAJfQo+IEBAIC0zNDcs MTMgKzM0NywxMyBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZW5hYmxlX2lvX3Bvd2VyKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+IC0J ZW51bSBwb3J0IHBvcnQ7Cj4gKwllbnVtIHBoeSBwaHk7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCWZv cl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQl0bXAgPSBJOTE1 X1JFQUQoSUNMX0RTSV9JT19NT0RFQ1RMKHBvcnQpKTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5 LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiArCQl0bXAgPSBJOTE1X1JFQUQoSUNMX0RTSV9JT19NT0RF Q1RMKHBoeSkpOwo+ICAJCXRtcCB8PSBDT01CT19QSFlfTU9ERV9EU0k7Cj4gLQkJSTkxNV9XUklU RShJQ0xfRFNJX0lPX01PREVDVEwocG9ydCksIHRtcCk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNJ X0lPX01PREVDVEwocGh5KSwgdG1wKTsKPiAgCX0KPiAgCj4gIAlnZXRfZHNpX2lvX3Bvd2VyX2Rv bWFpbnMoZGV2X3ByaXYsIGludGVsX2RzaSk7Cj4gQEAgLTQ3NiwxNyArNDc2LDI0IEBAIHN0YXRp YyB2b2lkIGdlbjExX2RzaV9lbmFibGVfZGRpX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5j X3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gIAl1MzIgdG1wOwo+IC0JZW51bSBwb3J0 IHBvcnQ7Cj4gKwllbnVtIHBoeSBwaHk7Cj4gIAo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwg aW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCXRtcCA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwb3J0 KSk7Cj4gKwkvKgo+ICsJICogVGFrZSBub3RlOiBhbHRob3VnaCB3ZSB1c3VhbGx5IHVzZSAncG9y dCcgdG8gcmVmZXIgdG8gdGhlIERESSBvbgo+ICsJICogcGxhdGZvcm1zIHdoZXJlIHRoZSBEREkg aXMgZGlzdGluY3QgZnJvbSB0aGUgUEhZLCBpdCdzIHN0aWxsIHNhZmUgdG8KPiArCSAqIHVzZSB0 aGUgcGh5IGluZGV4IGhlcmUuICBUaGUgb25seSBwbGF0Zm9ybSB0aGF0IGhhcyBwb3J0ICE9IHBo eQo+ICsJICogc2l0dWF0aW9ucyBpcyBFSEwgYW5kIERTSSBvbiBQSFktQSB0aGVyZSBhbHdheXMg dXNlcyBEREktQSwgbmV2ZXIKPiArCSAqIERESS1ELgo+ICsJICovCj4gKwlmb3JfZWFjaF9kc2lf cGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJdG1wID0gSTkxNV9SRUFEKERESV9CVUZf Q1RMKHBoeSkpOwo+ICAJCXRtcCB8PSBERElfQlVGX0NUTF9FTkFCTEU7Cj4gLQkJSTkxNV9XUklU RShERElfQlVGX0NUTChwb3J0KSwgdG1wKTsKPiArCQlJOTE1X1dSSVRFKERESV9CVUZfQ1RMKHBo eSksIHRtcCk7Cj4gIAo+IC0JCWlmICh3YWl0X2Zvcl91cyghKEk5MTVfUkVBRChERElfQlVGX0NU TChwb3J0KSkgJgo+ICsJCWlmICh3YWl0X2Zvcl91cyghKEk5MTVfUkVBRChERElfQlVGX0NUTChw aHkpKSAmCj4gIAkJCQkgIERESV9CVUZfSVNfSURMRSksCj4gIAkJCQkgIDUwMCkpCj4gLQkJCURS TV9FUlJPUigiRERJIHBvcnQ6JWMgYnVmZmVyIGlkbGVcbiIsIHBvcnRfbmFtZShwb3J0KSk7Cj4g KwkJCURSTV9FUlJPUigiRERJIHBvcnQ6JWMgYnVmZmVyIGlkbGVcbiIsIHBoeV9uYW1lKHBoeSkp Owo+ICAJfQo+ICB9Cj4gIAo+IEBAIC00OTUsMzIgKzUwMiwzMSBAQCBzdGF0aWMgdm9pZCBnZW4x MV9kc2lfc2V0dXBfZHBoeV90aW1pbmdzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxf ZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXUzMiB0bXA7Cj4gLQllbnVtIHBvcnQgcG9ydDsKPiAg CWVudW0gcGh5IHBoeTsKPiAgCj4gIAkvKiBQcm9ncmFtIFQtSU5JVCBtYXN0ZXIgcmVnaXN0ZXJz ICovCj4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJ dG1wID0gSTkxNV9SRUFEKElDTF9EU0lfVF9JTklUX01BU1RFUihwb3J0KSk7Cj4gKwlmb3JfZWFj aF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJdG1wID0gSTkxNV9SRUFEKElD TF9EU0lfVF9JTklUX01BU1RFUihwaHkpKTsKPiAgCQl0bXAgJj0gfk1BU1RFUl9JTklUX1RJTUVS X01BU0s7Cj4gIAkJdG1wIHw9IGludGVsX2RzaS0+aW5pdF9jb3VudDsKPiAtCQlJOTE1X1dSSVRF KElDTF9EU0lfVF9JTklUX01BU1RFUihwb3J0KSwgdG1wKTsKPiArCQlJOTE1X1dSSVRFKElDTF9E U0lfVF9JTklUX01BU1RFUihwaHkpLCB0bXApOwo+ICAJfQo+ICAKPiAgCS8qIFByb2dyYW0gRFBI WSBjbG9jayBsYW5lcyB0aW1pbmdzICovCj4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRl bF9kc2ktPnBvcnRzKSB7Cj4gLQkJSTkxNV9XUklURShEUEhZX0NMS19USU1JTkdfUEFSQU0ocG9y dCksIGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVs X2RzaS0+cGh5cykgewo+ICsJCUk5MTVfV1JJVEUoRFBIWV9DTEtfVElNSU5HX1BBUkFNKHBoeSks IGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICAKPiAgCQkvKiBzaGFkb3cgcmVnaXN0ZXIgaW5zaWRl IGRpc3BsYXkgY29yZSAqLwo+IC0JCUk5MTVfV1JJVEUoRFNJX0NMS19USU1JTkdfUEFSQU0ocG9y dCksIGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICsJCUk5MTVfV1JJVEUoRFNJX0NMS19USU1JTkdf UEFSQU0ocGh5KSwgaW50ZWxfZHNpLT5kcGh5X3JlZyk7Cj4gIAl9Cj4gIAo+ICAJLyogUHJvZ3Jh bSBEUEhZIGRhdGEgbGFuZXMgdGltaW5ncyAqLwo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwg aW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCUk5MTVfV1JJVEUoRFBIWV9EQVRBX1RJTUlOR19QQVJB TShwb3J0KSwKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiAr CQlJOTE1X1dSSVRFKERQSFlfREFUQV9USU1JTkdfUEFSQU0ocGh5KSwKPiAgCQkJICAgaW50ZWxf ZHNpLT5kcGh5X2RhdGFfbGFuZV9yZWcpOwo+ICAKPiAgCQkvKiBzaGFkb3cgcmVnaXN0ZXIgaW5z aWRlIGRpc3BsYXkgY29yZSAqLwo+IC0JCUk5MTVfV1JJVEUoRFNJX0RBVEFfVElNSU5HX1BBUkFN KHBvcnQpLAo+ICsJCUk5MTVfV1JJVEUoRFNJX0RBVEFfVElNSU5HX1BBUkFNKHBoeSksCj4gIAkJ CSAgIGludGVsX2RzaS0+ZHBoeV9kYXRhX2xhbmVfcmVnKTsKPiAgCX0KPiAgCj4gQEAgLTUzMiwx NyArNTM4LDE3IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9zZXR1cF9kcGh5X3RpbWluZ3Moc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkgKi8KPiAgCWlmIChJU19HRU4oZGV2X3By aXYsIDExKSkgewo+ICAJCWlmIChpbnRlbF9kc2lfYml0cmF0ZShpbnRlbF9kc2kpIDw9IDgwMDAw MCkgewo+IC0JCQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4g LQkJCQl0bXAgPSBJOTE1X1JFQUQoRFBIWV9UQV9USU1JTkdfUEFSQU0ocG9ydCkpOwo+ICsJCQlm b3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJCQl0bXAgPSBJOTE1 X1JFQUQoRFBIWV9UQV9USU1JTkdfUEFSQU0ocGh5KSk7Cj4gIAkJCQl0bXAgJj0gflRBX1NVUkVf TUFTSzsKPiAgCQkJCXRtcCB8PSBUQV9TVVJFX09WRVJSSURFIHwgVEFfU1VSRSgwKTsKPiAtCQkJ CUk5MTVfV1JJVEUoRFBIWV9UQV9USU1JTkdfUEFSQU0ocG9ydCksIHRtcCk7Cj4gKwkJCQlJOTE1 X1dSSVRFKERQSFlfVEFfVElNSU5HX1BBUkFNKHBoeSksIHRtcCk7Cj4gIAo+ICAJCQkJLyogc2hh ZG93IHJlZ2lzdGVyIGluc2lkZSBkaXNwbGF5IGNvcmUgKi8KPiAtCQkJCXRtcCA9IEk5MTVfUkVB RChEU0lfVEFfVElNSU5HX1BBUkFNKHBvcnQpKTsKPiArCQkJCXRtcCA9IEk5MTVfUkVBRChEU0lf VEFfVElNSU5HX1BBUkFNKHBoeSkpOwo+ICAJCQkJdG1wICY9IH5UQV9TVVJFX01BU0s7Cj4gIAkJ CQl0bXAgfD0gVEFfU1VSRV9PVkVSUklERSB8IFRBX1NVUkUoMCk7Cj4gLQkJCQlJOTE1X1dSSVRF KERTSV9UQV9USU1JTkdfUEFSQU0ocG9ydCksIHRtcCk7Cj4gKwkJCQlJOTE1X1dSSVRFKERTSV9U QV9USU1JTkdfUEFSQU0ocGh5KSwgdG1wKTsKPiAgCQkJfQo+ICAJCX0KPiAgCX0KPiBAQCAtNjI4 LDExICs2MzQsMTEgQEAgZ2VuMTFfZHNpX2NvbmZpZ3VyZV90cmFuc2NvZGVyKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ICAJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJdTMyIHRtcDsKPiAtCWVudW0gcG9ydCBwb3J0Owo+ICsJ ZW51bSBwaHkgcGh5Owo+ICAJZW51bSB0cmFuc2NvZGVyIGRzaV90cmFuczsKPiAgCj4gLQlmb3Jf ZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0g ZHNpX3BvcnRfdG9fdHJhbnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBp bnRlbF9kc2ktPnBoeXMpIHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIo cGh5KTsKPiAgCQl0bXAgPSBJOTE1X1JFQUQoRFNJX1RSQU5TX0ZVTkNfQ09ORihkc2lfdHJhbnMp KTsKPiAgCj4gIAkJaWYgKGludGVsX2RzaS0+ZW90cF9wa3QpCj4gQEAgLTcxMSw4ICs3MTcsOCBA QCBnZW4xMV9kc2lfY29uZmlndXJlX3RyYW5zY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAo+ICAJLyogZW5hYmxlIHBvcnQgc3luYyBtb2RlIGlmIGR1YWwgbGluayAqLwo+ ICAJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKSB7Cj4gLQkJZm9yX2VhY2hfZHNpX3BvcnQocG9y dCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCQlkc2lfdHJhbnMgPSBkc2lfcG9ydF90b190cmFu c2NvZGVyKHBvcnQpOwo+ICsJCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMp IHsKPiArCQkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190cmFuc2NvZGVyKHBoeSk7Cj4gIAkJCXRt cCA9IEk5MTVfUkVBRChUUkFOU19ERElfRlVOQ19DVEwyKGRzaV90cmFucykpOwo+ICAJCQl0bXAg fD0gUE9SVF9TWU5DX01PREVfRU5BQkxFOwo+ICAJCQlJOTE1X1dSSVRFKFRSQU5TX0RESV9GVU5D X0NUTDIoZHNpX3RyYW5zKSwgdG1wKTsKPiBAQCAtNzIyLDggKzcyOCw4IEBAIGdlbjExX2RzaV9j b25maWd1cmVfdHJhbnNjb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQlj b25maWd1cmVfZHVhbF9saW5rX21vZGUoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICAJfQo+ICAK PiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlkc2lf dHJhbnMgPSBkc2lfcG9ydF90b190cmFuc2NvZGVyKHBvcnQpOwo+ICsJZm9yX2VhY2hfZHNpX3Bo eShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJCWRzaV90cmFucyA9IGRzaV9waHlfdG9fdHJh bnNjb2RlcihwaHkpOwo+ICAKPiAgCQkvKiBzZWxlY3QgZGF0YSBsYW5lIHdpZHRoICovCj4gIAkJ dG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NUTChkc2lfdHJhbnMpKTsKPiBAQCAtNzUz LDggKzc1OSw4IEBAIGdlbjExX2RzaV9jb25maWd1cmVfdHJhbnNjb2RlcihzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCX0KPiAgCj4gIAkvKiB3YWl0IGZvciBsaW5rIHJlYWR5ICov Cj4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNp X3RyYW5zID0gZHNpX3BvcnRfdG9fdHJhbnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9w aHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3Ry YW5zY29kZXIocGh5KTsKPiAgCQlpZiAod2FpdF9mb3JfdXMoKEk5MTVfUkVBRChEU0lfVFJBTlNf RlVOQ19DT05GKGRzaV90cmFucykpICYKPiAgCQkJCUxJTktfUkVBRFkpLCAyNTAwKSkKPiAgCQkJ RFJNX0VSUk9SKCJEU0kgbGluayBub3QgcmVhZHlcbiIpOwo+IEBAIC03NjksNyArNzc1LDcgQEAg Z2VuMTFfZHNpX3NldF90cmFuc2NvZGVyX3RpbWluZ3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNp KCZlbmNvZGVyLT5iYXNlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAgCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAt CWVudW0gcG9ydCBwb3J0Owo+ICsJZW51bSBwaHkgcGh5Owo+ICAJZW51bSB0cmFuc2NvZGVyIGRz aV90cmFuczsKPiAgCS8qIGhvcml6b250YWwgdGltaW5ncyAqLwo+ICAJdTE2IGh0b3RhbCwgaGFj dGl2ZSwgaHN5bmNfc3RhcnQsIGhzeW5jX2VuZCwgaHN5bmNfc2l6ZTsKPiBAQCAtODA2LDggKzgx Miw4IEBAIGdlbjExX2RzaV9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICAJCURSTV9FUlJPUigiaGFjdGl2ZSBwaXhlbHMgYXJlIG5vdCBtdWx0 aXBsZSBvZiA0XG4iKTsKPiAgCj4gIAkvKiBwcm9ncmFtIFRSQU5TX0hUT1RBTCByZWdpc3RlciAq Lwo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWRz aV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4gKwlmb3JfZWFjaF9kc2lf cGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190 cmFuc2NvZGVyKHBoeSk7Cj4gIAkJSTkxNV9XUklURShIVE9UQUwoZHNpX3RyYW5zKSwKPiAgCQkJ ICAgKGhhY3RpdmUgLSAxKSB8ICgoaHRvdGFsIC0gMSkgPDwgMTYpKTsKPiAgCX0KPiBAQCAtODI5 LDE2ICs4MzUsMTYgQEAgZ2VuMTFfZHNpX3NldF90cmFuc2NvZGVyX3RpbWluZ3Moc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCWhzeW5jX2VuZCAvPSAyOwo+ICAJCX0KPiAgCj4g LQkJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCQlkc2lf dHJhbnMgPSBkc2lfcG9ydF90b190cmFuc2NvZGVyKHBvcnQpOwo+ICsJCWZvcl9lYWNoX2RzaV9w aHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiArCQkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190 cmFuc2NvZGVyKHBoeSk7Cj4gIAkJCUk5MTVfV1JJVEUoSFNZTkMoZHNpX3RyYW5zKSwKPiAgCQkJ CSAgIChoc3luY19zdGFydCAtIDEpIHwgKChoc3luY19lbmQgLSAxKSA8PCAxNikpOwo+ICAJCX0K PiAgCX0KPiAgCj4gIAkvKiBwcm9ncmFtIFRSQU5TX1ZUT1RBTCByZWdpc3RlciAqLwo+IC0JZm9y X2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWRzaV90cmFucyA9 IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwg aW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190cmFuc2NvZGVy KHBoeSk7Cj4gIAkJLyoKPiAgCQkgKiBGSVhNRTogUHJvZ3JhbWluZyB0aGlzIGJ5IGFzc3VtaW5n IHByb2dyZXNzaXZlIG1vZGUsIHNpbmNlCj4gIAkJICogbm9uLWludGVybGFjZWQgaW5mbyBmcm9t IFZCVCBpcyBub3Qgc2F2ZWQgaW5zaWRlCj4gQEAgLTg1Niw4ICs4NjIsOCBAQCBnZW4xMV9kc2lf c2V0X3RyYW5zY29kZXJfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CQlEUk1fRVJST1IoInZzeW5jX3N0YXJ0IGxlc3MgdGhhbiB2YWN0aXZlXG4iKTsKPiAgCj4gIAkv KiBwcm9ncmFtIFRSQU5TX1ZTWU5DIHJlZ2lzdGVyICovCj4gLQlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0gZHNpX3BvcnRfdG9fdHJh bnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMp IHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIocGh5KTsKPiAgCQlJOTE1 X1dSSVRFKFZTWU5DKGRzaV90cmFucyksCj4gIAkJCSAgICh2c3luY19zdGFydCAtIDEpIHwgKCh2 c3luY19lbmQgLSAxKSA8PCAxNikpOwo+ICAJfQo+IEBAIC04NjgsMTUgKzg3NCwxNSBAQCBnZW4x MV9kc2lfc2V0X3RyYW5zY29kZXJfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCSAqIGluZm8gYXZhaWxhYmxlIGFzIGRlc2NyaWJlZCBhYm92ZS4KPiAgCSAqIHByb2dy YW0gVFJBTlNfVlNZTkNTSElGVCByZWdpc3Rlcgo+ICAJICovCj4gLQlmb3JfZWFjaF9kc2lfcG9y dChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0gZHNpX3BvcnRfdG9f dHJhbnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBo eXMpIHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIocGh5KTsKPiAgCQlJ OTE1X1dSSVRFKFZTWU5DU0hJRlQoZHNpX3RyYW5zKSwgdnN5bmNfc2hpZnQpOwo+ICAJfQo+ICAK PiAgCS8qIHByb2dyYW0gVFJBTlNfVkJMQU5LIHJlZ2lzdGVyLCBzaG91bGQgYmUgc2FtZSBhcyB2 dG90YWwgcHJvZ3JhbW1lZCAqLwo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsK PiAtCQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJCWRz aV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4gKwkJZm9yX2VhY2hfZHNp X3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3Rv X3RyYW5zY29kZXIocGh5KTsKPiAgCQkJSTkxNV9XUklURShWQkxBTksoZHNpX3RyYW5zKSwKPiAg CQkJCSAgICh2YWN0aXZlIC0gMSkgfCAoKHZ0b3RhbCAtIDEpIDw8IDE2KSk7Cj4gIAkJfQo+IEBA IC04ODcsMTIgKzg5MywxMiBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZW5hYmxlX3RyYW5zY29k ZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3Ry dWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFz ZSk7Cj4gLQllbnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5IHBoeTsKPiAgCWVudW0gdHJhbnNj b2RlciBkc2lfdHJhbnM7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBv cnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlkc2lfdHJhbnMgPSBkc2lfcG9ydF90b190cmFu c2NvZGVyKHBvcnQpOwo+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykg ewo+ICsJCWRzaV90cmFucyA9IGRzaV9waHlfdG9fdHJhbnNjb2RlcihwaHkpOwo+ICAJCXRtcCA9 IEk5MTVfUkVBRChQSVBFQ09ORihkc2lfdHJhbnMpKTsKPiAgCQl0bXAgfD0gUElQRUNPTkZfRU5B QkxFOwo+ICAJCUk5MTVfV1JJVEUoUElQRUNPTkYoZHNpX3RyYW5zKSwgdG1wKTsKPiBAQCAtOTA4 LDcgKzkxNCw3IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9zZXR1cF90aW1lb3V0cyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxf ZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAtCWVu dW0gcG9ydCBwb3J0Owo+ICsJZW51bSBwaHkgcGh5Owo+ICAJZW51bSB0cmFuc2NvZGVyIGRzaV90 cmFuczsKPiAgCXUzMiB0bXAsIGhzX3R4X3RpbWVvdXQsIGxwX3J4X3RpbWVvdXQsIHRhX3RpbWVv dXQsIGRpdmlzb3IsIG11bDsKPiAgCj4gQEAgLTkyNiw4ICs5MzIsOCBAQCBzdGF0aWMgdm9pZCBn ZW4xMV9kc2lfc2V0dXBfdGltZW91dHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4g IAlscF9yeF90aW1lb3V0ID0gRElWX1JPVU5EX1VQKGludGVsX2RzaS0+bHBfcnhfdGltZW91dCAq IG11bCwgZGl2aXNvcik7Cj4gIAl0YV90aW1lb3V0ID0gRElWX1JPVU5EX1VQKGludGVsX2RzaS0+ dHVybl9hcm5kX3ZhbCAqIG11bCwgZGl2aXNvcik7Cj4gIAo+IC0JZm9yX2VhY2hfZHNpX3BvcnQo cG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3Ry YW5zY29kZXIocG9ydCk7Cj4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlz KSB7Cj4gKwkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190cmFuc2NvZGVyKHBoeSk7Cj4gIAo+ICAJ CS8qIHByb2dyYW0gaHN0X3R4X3RpbWVvdXQgKi8KPiAgCQl0bXAgPSBJOTE1X1JFQUQoRFNJX0hT VFhfVE8oZHNpX3RyYW5zKSk7Cj4gQEAgLTk5MCwxNCArOTk2LDE0IEBAIHN0YXRpYyB2b2lkIGdl bjExX2RzaV9wb3dlcnVwX3BhbmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNp KCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsKPiAtCWVu dW0gcG9ydCBwb3J0Owo+ICsJZW51bSBwaHkgcGh5Owo+ICAJZW51bSB0cmFuc2NvZGVyIGRzaV90 cmFuczsKPiAgCXUzMiB0bXA7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIHNldCBtYXhpbXVtIHJl dHVybiBwYWNrZXQgc2l6ZSAqLwo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNp LT5wb3J0cykgewo+IC0JCWRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7 Cj4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJZHNpX3Ry YW5zID0gZHNpX3BoeV90b190cmFuc2NvZGVyKHBoeSk7Cj4gIAo+ICAJCS8qCj4gIAkJICogRklY TUU6IFRoaXMgdXNlcyB0aGUgbnVtYmVyIG9mIERXJ3MgY3VycmVudGx5IGluIHRoZSBwYXlsb2Fk Cj4gQEAgLTEwMDcsNyArMTAxMyw3IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9wb3dlcnVwX3Bh bmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJCXRtcCAmPSBOVU1CRVJfUlhf UExPQURfRFdfTUFTSzsKPiAgCQkvKiBtdWx0aXBseSAiTnVtYmVyIFJ4IFBheWxvYWQgRFciIGJ5 IDQgdG8gZ2V0IG1heCB2YWx1ZSAqLwo+ICAJCXRtcCA9IHRtcCAqIDQ7Cj4gLQkJZHNpID0gaW50 ZWxfZHNpLT5kc2lfaG9zdHNbcG9ydF0tPmRldmljZTsKPiArCQlkc2kgPSBpbnRlbF9kc2ktPmRz aV9ob3N0c1twaHldLT5kZXZpY2U7Cj4gIAkJcmV0ID0gbWlwaV9kc2lfc2V0X21heGltdW1fcmV0 dXJuX3BhY2tldF9zaXplKGRzaSwgdG1wKTsKPiAgCQlpZiAocmV0IDwgMCkKPiAgCQkJRFJNX0VS Uk9SKCJlcnJvciBzZXR0aW5nIG1heCByZXR1cm4gcGt0IHNpemUlZFxuIiwgdG1wKTsKPiBAQCAt MTA2NSwxMiArMTA3MSwxMiBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZGlzYWJsZV90cmFuc2Nv ZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0 cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJh c2UpOwo+IC0JZW51bSBwb3J0IHBvcnQ7Cj4gKwllbnVtIHBoeSBwaHk7Cj4gIAllbnVtIHRyYW5z Y29kZXIgZHNpX3RyYW5zOwo+ICAJdTMyIHRtcDsKPiAgCj4gLQlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0gZHNpX3BvcnRfdG9fdHJh bnNjb2Rlcihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMp IHsKPiArCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIocGh5KTsKPiAgCj4gIAkJ LyogZGlzYWJsZSB0cmFuc2NvZGVyICovCj4gIAkJdG1wID0gSTkxNV9SRUFEKFBJUEVDT05GKGRz aV90cmFucykpOwo+IEBAIC0xMTAwLDEzICsxMTA2LDEzIEBAIHN0YXRpYyB2b2lkIGdlbjExX2Rz aV9kZWNvbmZpZ3VyZV90cmFuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2lu dGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gLQllbnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5 IHBoeTsKPiAgCWVudW0gdHJhbnNjb2RlciBkc2lfdHJhbnM7Cj4gIAl1MzIgdG1wOwo+ICAKPiAg CS8qIHB1dCBkc2kgbGluayBpbiBVTFBTICovCj4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBp bnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJZHNpX3RyYW5zID0gZHNpX3BvcnRfdG9fdHJhbnNjb2Rl cihwb3J0KTsKPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiAr CQlkc2lfdHJhbnMgPSBkc2lfcGh5X3RvX3RyYW5zY29kZXIocGh5KTsKPiAgCQl0bXAgPSBJOTE1 X1JFQUQoRFNJX0xQX01TRyhkc2lfdHJhbnMpKTsKPiAgCQl0bXAgfD0gTElOS19FTlRFUl9VTFBT Owo+ICAJCXRtcCAmPSB+TElOS19VTFBTX1RZUEVfTFAxMTsKPiBAQCAtMTExOSw4ICsxMTI1LDgg QEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2RlY29uZmlndXJlX3RyYW5jb2RlcihzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCX0KPiAgCj4gIAkvKiBkaXNhYmxlIGRkaSBmdW5jdGlv biAqLwo+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0J CWRzaV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4gKwlmb3JfZWFjaF9k c2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gKwkJZHNpX3RyYW5zID0gZHNpX3BoeV90 b190cmFuc2NvZGVyKHBoeSk7Cj4gIAkJdG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NU TChkc2lfdHJhbnMpKTsKPiAgCQl0bXAgJj0gflRSQU5TX0RESV9GVU5DX0VOQUJMRTsKPiAgCQlJ OTE1X1dSSVRFKFRSQU5TX0RESV9GVU5DX0NUTChkc2lfdHJhbnMpLCB0bXApOwo+IEBAIC0xMTI4 LDggKzExMzQsOCBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZGVjb25maWd1cmVfdHJhbmNvZGVy KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCS8qIGRpc2FibGUgcG9ydCBz eW5jIG1vZGUgaWYgZHVhbCBsaW5rICovCj4gIAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmspIHsK PiAtCQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJCWRz aV90cmFucyA9IGRzaV9wb3J0X3RvX3RyYW5zY29kZXIocG9ydCk7Cj4gKwkJZm9yX2VhY2hfZHNp X3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJCQlkc2lfdHJhbnMgPSBkc2lfcGh5X3Rv X3RyYW5zY29kZXIocGh5KTsKPiAgCQkJdG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NU TDIoZHNpX3RyYW5zKSk7Cj4gIAkJCXRtcCAmPSB+UE9SVF9TWU5DX01PREVfRU5BQkxFOwo+ICAJ CQlJOTE1X1dSSVRFKFRSQU5TX0RESV9GVU5DX0NUTDIoZHNpX3RyYW5zKSwgdG1wKTsKPiBAQCAt MTE0MiwxOSArMTE0OCwxOSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZGlzYWJsZV9wb3J0KHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxf ZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXUz MiB0bXA7Cj4gLQllbnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5IHBoeTsKPiAgCj4gIAlnZW4x MV9kc2lfdW5nYXRlX2Nsb2NrcyhlbmNvZGVyKTsKPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQs IGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQl0bXAgPSBJOTE1X1JFQUQoRERJX0JVRl9DVEwocG9y dCkpOwo+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJCXRt cCA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwaHkpKTsKPiAgCQl0bXAgJj0gfkRESV9CVUZfQ1RM X0VOQUJMRTsKPiAtCQlJOTE1X1dSSVRFKERESV9CVUZfQ1RMKHBvcnQpLCB0bXApOwo+ICsJCUk5 MTVfV1JJVEUoRERJX0JVRl9DVEwocGh5KSwgdG1wKTsKPiAgCj4gLQkJaWYgKHdhaXRfZm9yX3Vz KChJOTE1X1JFQUQoRERJX0JVRl9DVEwocG9ydCkpICYKPiArCQlpZiAod2FpdF9mb3JfdXMoKEk5 MTVfUkVBRChERElfQlVGX0NUTChwaHkpKSAmCj4gIAkJCQkgRERJX0JVRl9JU19JRExFKSwKPiAg CQkJCSA4KSkKPiAgCQkJRFJNX0VSUk9SKCJEREkgcG9ydDolYyBidWZmZXIgbm90IGlkbGVcbiIs Cj4gLQkJCQkgIHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkJCQkgIHBoeV9uYW1lKHBoeSkpOwo+ICAJ fQo+ICAJZ2VuMTFfZHNpX2dhdGVfY2xvY2tzKGVuY29kZXIpOwo+ICB9Cj4gQEAgLTExNjMsMjUg KzExNjksMjUgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2Rpc2FibGVfaW9fcG93ZXIoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVs X2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gLQll bnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5IHBoeTsKPiAgCXUzMiB0bXA7Cj4gIAo+IC0JZm9y X2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICsJZm9yX2VhY2hfZHNp X3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICAJCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICAKPiAtCQl3YWtlcmVmID0gZmV0Y2hfYW5kX3plcm8oJmludGVsX2RzaS0+aW9fd2FrZXJl Zltwb3J0XSk7Cj4gKwkJd2FrZXJlZiA9IGZldGNoX2FuZF96ZXJvKCZpbnRlbF9kc2ktPmlvX3dh a2VyZWZbcGh5XSk7Cj4gIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsCj4gLQkJ CQkJcG9ydCA9PSBQT1JUX0EgPwo+ICsJCQkJCXBoeSA9PSBQSFlfQSA/Cj4gIAkJCQkJUE9XRVJf RE9NQUlOX1BPUlRfRERJX0FfSU8gOgo+ICAJCQkJCVBPV0VSX0RPTUFJTl9QT1JUX0RESV9CX0lP LAo+ICAJCQkJCXdha2VyZWYpOwo+ICAJfQo+ICAKPiAgCS8qIHNldCBtb2RlIHRvIERESSAqLwo+ IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCXRtcCA9 IEk5MTVfUkVBRChJQ0xfRFNJX0lPX01PREVDVEwocG9ydCkpOwo+ICsJZm9yX2VhY2hfZHNpX3Bo eShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ICsJCXRtcCA9IEk5MTVfUkVBRChJQ0xfRFNJX0lP X01PREVDVEwocGh5KSk7Cj4gIAkJdG1wICY9IH5DT01CT19QSFlfTU9ERV9EU0k7Cj4gLQkJSTkx NV9XUklURShJQ0xfRFNJX0lPX01PREVDVEwocG9ydCksIHRtcCk7Cj4gKwkJSTkxNV9XUklURShJ Q0xfRFNJX0lPX01PREVDVEwocGh5KSwgdG1wKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTI3OCw3 ICsxMjg0LDcgQEAgc3RhdGljIGludCBnZW4xMV9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlhZGp1c3RlZF9tb2RlLT5mbGFncyA9IDA7Cj4gIAo+ ICAJLyogRHVhbCBsaW5rIGdvZXMgdG8gdHJhbmNvZGVyIERTSScwJyAqLwo+IC0JaWYgKGludGVs X2RzaS0+cG9ydHMgPT0gQklUKFBPUlRfQikpCj4gKwlpZiAoaW50ZWxfZHNpLT5waHlzID09IEJJ VChQSFlfQikpCj4gIAkJcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyID0gVFJBTlNDT0RFUl9E U0lfMTsKPiAgCWVsc2UKPiAgCQlwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSBUUkFOU0NP REVSX0RTSV8wOwo+IEBAIC0xMzAzLDcgKzEzMDksNyBAQCBzdGF0aWMgYm9vbCBnZW4xMV9kc2lf Z2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGlu dGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4g IAllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zOwo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gLQllbnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5IHBoeTsKPiAgCWJvb2wgcmV0ID0gZmFs c2U7Cj4gIAl1MzIgdG1wOwo+ICAKPiBAQCAtMTMxMiw4ICsxMzE4LDggQEAgc3RhdGljIGJvb2wg Z2VuMTFfZHNpX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JZm9yX2VhY2hfZHNpX3Bv cnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWRzaV90cmFucyA9IGRzaV9wb3J0X3Rv X3RyYW5zY29kZXIocG9ydCk7Cj4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5w aHlzKSB7Cj4gKwkJZHNpX3RyYW5zID0gZHNpX3BoeV90b190cmFuc2NvZGVyKHBoeSk7Cj4gIAkJ dG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NUTChkc2lfdHJhbnMpKTsKPiAgCQlzd2l0 Y2ggKHRtcCAmIFRSQU5TX0RESV9FRFBfSU5QVVRfTUFTSykgewo+ICAJCWNhc2UgVFJBTlNfRERJ X0VEUF9JTlBVVF9BX09OOgo+IEBAIC0xNTUyLDYgKzE1NTgsNyBAQCB2b2lkIGljbF9kc2lfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGU7 Cj4gIAllbnVtIHBvcnQgcG9ydDsKPiArCWVudW0gcGh5IHBoeTsKPiAgCj4gIAlpZiAoIWludGVs X2Jpb3NfaXNfZHNpX3ByZXNlbnQoZGV2X3ByaXYsICZwb3J0KSkKPiAgCQlyZXR1cm47Cj4gQEAg LTE2MTMsMjEgKzE2MjAsMjIgQEAgdm9pZCBpY2xfZHNpX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xpZ2h0KGNvbm5lY3Rv ciwgSU5WQUxJRF9QSVBFKTsKPiAgCj4gIAlpZiAoZGV2X3ByaXYtPnZidC5kc2kuY29uZmlnLT5k dWFsX2xpbmspCj4gLQkJaW50ZWxfZHNpLT5wb3J0cyA9IEJJVChQT1JUX0EpIHwgQklUKFBPUlRf Qik7Cj4gKwkJaW50ZWxfZHNpLT5waHlzID0gQklUKFBIWV9BKSB8IEJJVChQSFlfQik7Cj4gIAll bHNlCj4gLQkJaW50ZWxfZHNpLT5wb3J0cyA9IEJJVChwb3J0KTsKPiArCQlpbnRlbF9kc2ktPnBo eXMgPSBCSVQocG9ydCk7ICAvKiBzaW5jZSBwb3J0PT1waHkgKi8KPiAgCj4gIAlpbnRlbF9kc2kt PmRjc19iYWNrbGlnaHRfcG9ydHMgPSBkZXZfcHJpdi0+dmJ0LmRzaS5ibF9wb3J0czsKPiAgCWlu dGVsX2RzaS0+ZGNzX2NhYmNfcG9ydHMgPSBkZXZfcHJpdi0+dmJ0LmRzaS5jYWJjX3BvcnRzOwo+ ICAKPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCWZv cl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxf ZHNpX2hvc3QgKmhvc3Q7Cj4gIAo+IC0JCWhvc3QgPSBpbnRlbF9kc2lfaG9zdF9pbml0KGludGVs X2RzaSwgJmdlbjExX2RzaV9ob3N0X29wcywgcG9ydCk7Cj4gKwkJaG9zdCA9IGludGVsX2RzaV9o b3N0X2luaXQoaW50ZWxfZHNpLCAmZ2VuMTFfZHNpX2hvc3Rfb3BzLAo+ICsJCQkJCSAgIChlbnVt IHBvcnQpcGh5KTsKPiAgCQlpZiAoIWhvc3QpCj4gIAkJCWdvdG8gZXJyOwo+ICAKPiAtCQlpbnRl bF9kc2ktPmRzaV9ob3N0c1twb3J0XSA9IGhvc3Q7Cj4gKwkJaW50ZWxfZHNpLT5kc2lfaG9zdHNb cGh5XSA9IGhvc3Q7Cj4gIAl9Cj4gIAo+ICAJaWYgKCFpbnRlbF9kc2lfdmJ0X2luaXQoaW50ZWxf ZHNpLCBNSVBJX0RTSV9HRU5FUklDX1BBTkVMX0lEKSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kc2kuaAo+IGluZGV4IGIxNWJlNTgxNDU5OS4uNWQwNjEwZmI4NWEzIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNpLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzaS5oCj4gQEAgLTEyNSw3 ICsxMjUsMTAgQEAgc3RydWN0IGludGVsX2RzaSB7Cj4gIHN0cnVjdCBpbnRlbF9kc2lfaG9zdCB7 Cj4gIAlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCBiYXNlOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50 ZWxfZHNpOwo+IC0JZW51bSBwb3J0IHBvcnQ7Cj4gKwl1bmlvbiB7Cj4gKwkJZW51bSBwb3J0IHBv cnQ7CQkvKiBWTFYgRFNJICovCj4gKwkJZW51bSBwaHkgcGh5OwkJLyogSUNMIERTSSAqLwo+ICsJ fTsKPiAgCj4gIAkvKiBvdXIgbGl0dGxlIGhhY2sgKi8KPiAgCXN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRldmljZTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3Mg Q2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==