From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kumar Valsan, Prathap" Subject: Re: [PATCH 21/24] drm/i915: Remove logical HW ID Date: Fri, 19 Jul 2019 16:56:46 -0400 Message-ID: <20190719205646.GN3842@intel.com> References: <20190715080946.15593-1-chris@chris-wilson.co.uk> <20190715080946.15593-21-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F0C86E861 for ; Fri, 19 Jul 2019 20:41:07 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190715080946.15593-21-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMTUsIDIwMTkgYXQgMDk6MDk6NDNBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdlIG9ubHkgbmVlZCB0byBrZWVwIGEgdW5pcXVlIHRhZyBmb3IgdGhlIGFjdGl2ZSBs aWZldGltZSBvZiB0aGUKPiBjb250ZXh0LCBhbmQgZm9yIGFzIGxvbmcgYXMgd2UgbmVlZCB0byBp ZGVudGlmeSB0aGF0IGNvbnRleHQuIFRoZSBIVwo+IHVzZXMgdGhlIHRhZyB0byBkZXRlcm1pbmUg aWYgaXQgc2hvdWxkIHVzZSBhIGxpdGUtcmVzdG9yZSAod2h5IG5vdCB0aGUKPiBMUkNBPykgYW5k IHBhc3NlcyB0aGUgdGFnIGJhY2sgZm9yIHZhcmlvdXMgc3RhdHVzIGlkZW50aWZpZXMuIFRoZSBv bmx5Cj4gc3RhdHVzIHdlIG5lZWQgdG8gdHJhY2sgaXMgZm9yIE9BLCBzbyB3aGVuIHVzaW5nIHBl cmYsIHdlIGFzc2lnbiB0aGUKPiBzcGVjaWZpYyBjb250ZXh0IGEgdW5pcXVlIHRhZy4KCkRldmlj ZSBQYWdlIGZhdWx0IGhhbmRsZXIgbmVlZHMgbG9naWNhbCBIVyBpZC4gTG9naWNhbCBIVyBpZCB3 aWxsIGJlCnVzZWQgdG8gaWRlbnRpZnkgdGhlIGdlbSBjb250ZXh0IHRvIGZ1cnRoZXIgbG9va3Vw IHRoZSBhZGRyZXNzIHNwYWNlLgoKUHJhdGhhcAo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jICAgfCAxNTEgLS0tLS0tLS0tLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmggICB8ICAxNSAtLQo+ ICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggfCAgMTggLS0t Cj4gIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAxMyAr LQo+ICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgIDgg LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmggfCAgIDEg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgfCAgIDUg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgIDI4 ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMgICAgICAgICAgICAgIHwg IDE3IC0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8 ICAgMyAtCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgICB8 ICAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgICAg fCAgIDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAg fCAgMjggKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICAgICAgICAg ICAgfCAgMzggKystLS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZp Y3QuYyAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Zt YS5jICAgICB8ICAgMiArLQo+ICAxNiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAy ODggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f Y29udGV4dC5jCj4gaW5kZXggZTlmNWUxOTI2NWI5Li4yNjY5ZTAzODY2MWUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTY3LDk1ICsx NjcsNiBAQCBsb29rdXBfdXNlcl9lbmdpbmUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgCXJldHVybiBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdpbmUoY3R4LCBpZHgpOwo+ICB9Cj4g IAo+IC1zdGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIGdmcF90IGdmcCkKPiAtewo+IC0JdW5zaWduZWQgaW50IG1heDsKPiAtCj4gLQlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gLQo+IC0JaWYgKElOVEVM X0dFTihpOTE1KSA+PSAxMSkKPiAtCQltYXggPSBHRU4xMV9NQVhfQ09OVEVYVF9IV19JRDsKPiAt CWVsc2UgaWYgKFVTRVNfR1VDX1NVQk1JU1NJT04oaTkxNSkpCj4gLQkJLyoKPiAtCQkgKiBXaGVu IHVzaW5nIEd1QyBpbiBwcm94eSBzdWJtaXNzaW9uLCBHdUMgY29uc3VtZXMgdGhlCj4gLQkJICog aGlnaGVzdCBiaXQgaW4gdGhlIGNvbnRleHQgaWQgdG8gaW5kaWNhdGUgcHJveHkgc3VibWlzc2lv bi4KPiAtCQkgKi8KPiAtCQltYXggPSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQ7Cj4gLQllbHNlCj4g LQkJbWF4ID0gTUFYX0NPTlRFWFRfSFdfSUQ7Cj4gLQo+IC0JcmV0dXJuIGlkYV9zaW1wbGVfZ2V0 KCZpOTE1LT5jb250ZXh0cy5od19pZGEsIDAsIG1heCwgZ2ZwKTsKPiAtfQo+IC0KPiAtc3RhdGlj IGludCBzdGVhbF9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAtewo+IC0J c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgKmNuOwo+IC0JTElTVF9IRUFEKHBpbm5lZCk7 Cj4gLQlpbnQgaWQgPSAtRU5PU1BDOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUt PmNvbnRleHRzLm11dGV4KTsKPiAtCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4LCBj biwKPiAtCQkJCSAmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCwgaHdfaWRfbGluaykgewo+IC0J CWlmIChhdG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpKSB7Cj4gLQkJCWxpc3RfbW92 ZV90YWlsKCZjdHgtPmh3X2lkX2xpbmssICZwaW5uZWQpOwo+IC0JCQljb250aW51ZTsKPiAtCQl9 Cj4gLQo+IC0JCUdFTV9CVUdfT04oIWN0eC0+aHdfaWQpOyAvKiBwZXJtYS1waW5uZWQga2VybmVs IGNvbnRleHQgKi8KPiAtCQlsaXN0X2RlbF9pbml0KCZjdHgtPmh3X2lkX2xpbmspOwo+IC0JCWlk ID0gY3R4LT5od19pZDsKPiAtCQlicmVhazsKPiAtCX0KPiAtCj4gLQkvKgo+IC0JICogUmVtZW1i ZXIgaG93IGZhciB3ZSBnb3QgdXAgb24gdGhlIGxhc3QgcmVwb3NzZXNpb24gc2Nhbiwgc28gdGhl Cj4gLQkgKiBsaXN0IGlzIGtlcHQgaW4gYSAibGVhc3QgcmVjZW50bHkgc2Nhbm5lZCIgb3JkZXIu Cj4gLQkgKi8KPiAtCWxpc3Rfc3BsaWNlX3RhaWwoJnBpbm5lZCwgJmk5MTUtPmNvbnRleHRzLmh3 X2lkX2xpc3QpOwo+IC0JcmV0dXJuIGlkOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGFzc2lnbl9o d19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50ICpvdXQpCj4g LXsKPiAtCWludCByZXQ7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+Y29udGV4 dHMubXV0ZXgpOwo+IC0KPiAtCS8qCj4gLQkgKiBXZSBwcmVmZXIgdG8gc3RlYWwvc3RhbGwgb3Vy c2VsdmVzIGFuZCBvdXIgdXNlcnMgb3ZlciB0aGF0IG9mIHRoZQo+IC0JICogZW50aXJlIHN5c3Rl bS4gVGhhdCBtYXkgYmUgYSBsaXR0bGUgdW5mYWlyIHRvIG91ciB1c2VycywgYW5kCj4gLQkgKiBl dmVuIGh1cnQgaGlnaCBwcmlvcml0eSBjbGllbnRzLiBUaGUgY2hvaWNlIGlzIHdoZXRoZXIgdG8g b29ta2lsbAo+IC0JICogc29tZXRoaW5nIGVsc2UsIG9yIHN0ZWFsIGEgY29udGV4dCBpZC4KPiAt CSAqLwo+IC0JcmV0ID0gbmV3X2h3X2lkKGk5MTUsIEdGUF9LRVJORUwgfCBfX0dGUF9SRVRSWV9N QVlGQUlMIHwgX19HRlBfTk9XQVJOKTsKPiAtCWlmICh1bmxpa2VseShyZXQgPCAwKSkgewo+IC0J CXJldCA9IHN0ZWFsX2h3X2lkKGk5MTUpOwo+IC0JCWlmIChyZXQgPCAwKSAvKiBvbmNlIGFnYWlu IGZvciB0aGUgY29ycmVjdCBlcnJubyBjb2RlICovCj4gLQkJCXJldCA9IG5ld19od19pZChpOTE1 LCBHRlBfS0VSTkVMKTsKPiAtCQlpZiAocmV0IDwgMCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0K PiAtCj4gLQkqb3V0ID0gcmV0Owo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lk IHJlbGVhc2VfaHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAtewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Cj4gLQo+IC0JaWYgKGxpc3Rf ZW1wdHkoJmN0eC0+aHdfaWRfbGluaykpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCW11dGV4X2xvY2so Jmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiAtCWlmICghbGlzdF9lbXB0eSgmY3R4LT5od19pZF9s aW5rKSkgewo+IC0JCWlkYV9zaW1wbGVfcmVtb3ZlKCZpOTE1LT5jb250ZXh0cy5od19pZGEsIGN0 eC0+aHdfaWQpOwo+IC0JCWxpc3RfZGVsX2luaXQoJmN0eC0+aHdfaWRfbGluayk7Cj4gLQl9Cj4g LQltdXRleF91bmxvY2soJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiAtfQo+IC0KPiAgc3RhdGlj IHZvaWQgX19mcmVlX2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmUsIHVuc2lnbmVk IGludCBjb3VudCkKPiAgewo+ICAJd2hpbGUgKGNvdW50LS0pIHsKPiBAQCAtMzA5LDcgKzIyMCw2 IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4KQo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgCUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGN0eCkp Owo+ICAKPiAtCXJlbGVhc2VfaHdfaWQoY3R4KTsKPiAgCWlmIChjdHgtPnZtKQo+ICAJCWk5MTVf dm1fcHV0KGN0eC0+dm0pOwo+ICAKPiBAQCAtMzgxLDEyICsyOTEsNiBAQCBzdGF0aWMgdm9pZCBj b250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAlpOTE1X2dlbV9j b250ZXh0X3NldF9jbG9zZWQoY3R4KTsKPiAgCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJB REYpOwo+ICAKPiAtCS8qCj4gLQkgKiBUaGlzIGNvbnRleHQgd2lsbCBuZXZlciBhZ2FpbiBiZSBh c3NpbmdlZCB0byBIVywgc28gd2UgY2FuCj4gLQkgKiByZXVzZSBpdHMgSUQgZm9yIHRoZSBuZXh0 IGNvbnRleHQuCj4gLQkgKi8KPiAtCXJlbGVhc2VfaHdfaWQoY3R4KTsKPiAtCj4gIAkvKgo+ICAJ ICogVGhlIExVVCB1c2VzIHRoZSBWTUEgYXMgYSBiYWNrcG9pbnRlciB0byB1bnJlZiB0aGUgb2Jq ZWN0LAo+ICAJICogc28gd2UgbmVlZCB0byBjbGVhciB0aGUgTFVUIGJlZm9yZSB3ZSBjbG9zZSBh bGwgdGhlIFZNQSAoaW5zaWRlCj4gQEAgLTQ0OSw3ICszNTMsNiBAQCBfX2NyZWF0ZV9jb250ZXh0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJUkNVX0lOSVRfUE9JTlRFUihjdHgt PmVuZ2luZXMsIGUpOwo+ICAKPiAgCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwg R0ZQX0tFUk5FTCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmY3R4LT5od19pZF9saW5rKTsKPiAgCj4g IAkvKiBOQjogTWFyayBhbGwgc2xpY2VzIGFzIG5lZWRpbmcgYSByZW1hcCBzbyB0aGF0IHdoZW4g dGhlIGNvbnRleHQgZmlyc3QKPiAgCSAqIGxvYWRzIGl0IHdpbGwgcmVzdG9yZSB3aGF0ZXZlciBy ZW1hcCBzdGF0ZSBhbHJlYWR5IGV4aXN0cy4gSWYgdGhlcmUKPiBAQCAtNTcyLDEzICs0NzUsNiBA QCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CWlmIChJU19FUlIoY3R4KSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9j b250ZXh0X3Bpbl9od19pZChjdHgpOwo+IC0JaWYgKHJldCkgewo+IC0JCWNvbnRleHRfY2xvc2Uo Y3R4KTsKPiAtCQljdHggPSBFUlJfUFRSKHJldCk7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+ ICAJY3R4LT5maWxlX3ByaXYgPSBFUlJfUFRSKC1FQkFERik7Cj4gIAlpOTE1X2dlbV9jb250ZXh0 X3NldF9jbG9zZWQoY3R4KTsgLyogbm90IHVzZXIgYWNjZXNzaWJsZSAqLwo+ICAJaTkxNV9nZW1f Y29udGV4dF9jbGVhcl9iYW5uYWJsZShjdHgpOwo+IEBAIC02MDksMTggKzUwNSwxMSBAQCBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCj4gIHsKPiAgCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gLQlpbnQgZXJyOwo+ICAKPiAgCWN0eCA9IGk5MTVfZ2Vt X2NyZWF0ZV9jb250ZXh0KGk5MTUsIDApOwo+ICAJaWYgKElTX0VSUihjdHgpKQo+ICAJCXJldHVy biBjdHg7Cj4gIAo+IC0JZXJyID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKPiAt CWlmIChlcnIpIHsKPiAtCQlkZXN0cm95X2tlcm5lbF9jb250ZXh0KCZjdHgpOwo+IC0JCXJldHVy biBFUlJfUFRSKGVycik7Cj4gLQl9Cj4gLQo+ICAJaTkxNV9nZW1fY29udGV4dF9jbGVhcl9iYW5u YWJsZShjdHgpOwo+ICAJY3R4LT5zY2hlZC5wcmlvcml0eSA9IEk5MTVfVVNFUl9QUklPUklUWShw cmlvKTsKPiAgCWN0eC0+cmluZ19zaXplID0gUEFHRV9TSVpFOwo+IEBAIC02NjAsMTUgKzU0OSw2 IEBAIGludCBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGVmYXVsdCBnbG9iYWwg Y29udGV4dFxuIik7Cj4gIAkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKPiAgCX0KPiAtCS8qCj4gLQkg KiBGb3IgZWFzeSByZWNvZ25pc2FibGl0eSwgd2Ugd2FudCB0aGUga2VybmVsIGNvbnRleHQgdG8g YmUgMCBhbmQgdGhlbgo+IC0JICogYWxsIHVzZXIgY29udGV4dHMgd2lsbCBoYXZlIG5vbi16ZXJv IGh3X2lkLiBLZXJuZWwgY29udGV4dHMgYXJlCj4gLQkgKiBwZXJtYW5lbnRseSBwaW5uZWQsIHNv IHRoYXQgd2UgbmV2ZXIgc3VmZmVyIGEgc3RhbGwgYW5kIGNhbgo+IC0JICogdXNlIHRoZW0gZnJv bSBhbnkgYWxsb2NhdGlvbiBjb250ZXh0IChlLmcuIGZvciBldmljdGluZyBvdGhlcgo+IC0JICog Y29udGV4dHMgYW5kIGZyb20gaW5zaWRlIHRoZSBzaHJpbmtlcikuCj4gLQkgKi8KPiAtCUdFTV9C VUdfT04oY3R4LT5od19pZCk7Cj4gLQlHRU1fQlVHX09OKCFhdG9taWNfcmVhZCgmY3R4LT5od19p ZF9waW5fY291bnQpKTsKPiAgCWRldl9wcml2LT5rZXJuZWxfY29udGV4dCA9IGN0eDsKPiAgCj4g IAlEUk1fREVCVUdfRFJJVkVSKCIlcyBjb250ZXh0IHN1cHBvcnQgaW5pdGlhbGl6ZWRcbiIsCj4g QEAgLTY4MiwxMCArNTYyLDYgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0c19maW5pKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJZGVzdHJveV9rZXJuZWxfY29udGV4dCgmaTkxNS0+a2Vy bmVsX2NvbnRleHQpOwo+IC0KPiAtCS8qIE11c3QgZnJlZSBhbGwgZGVmZXJyZWQgY29udGV4dHMg KHZpYSBmbHVzaF93b3JrcXVldWUpIGZpcnN0ICovCj4gLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5 KCZpOTE1LT5jb250ZXh0cy5od19pZF9saXN0KSk7Cj4gLQlpZGFfZGVzdHJveSgmaTkxNS0+Y29u dGV4dHMuaHdfaWRhKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBjb250ZXh0X2lkcl9jbGVhbnVw KGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSkKPiBAQCAtMjM2NiwzMyArMjI0Miw2IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X3Jlc2V0X3N0YXRzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1pbnQgX19pOTE1X2dlbV9jb250ZXh0X3Bp bl9od19pZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKPiAtCWludCBlcnIgPSAwOwo+IC0KPiAt CW11dGV4X2xvY2soJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiAtCj4gLQlHRU1fQlVHX09OKGk5 MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGN0eCkpOwo+IC0KPiAtCWlmIChsaXN0X2VtcHR5KCZj dHgtPmh3X2lkX2xpbmspKSB7Cj4gLQkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY3R4LT5od19p ZF9waW5fY291bnQpKTsKPiAtCj4gLQkJZXJyID0gYXNzaWduX2h3X2lkKGk5MTUsICZjdHgtPmh3 X2lkKTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dF91bmxvY2s7Cj4gLQo+IC0JCWxpc3Rf YWRkX3RhaWwoJmN0eC0+aHdfaWRfbGluaywgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QpOwo+ IC0JfQo+IC0KPiAtCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50 KSA9PSB+MHUpOwo+IC0JYXRvbWljX2luYygmY3R4LT5od19pZF9waW5fY291bnQpOwo+IC0KPiAt b3V0X3VubG9jazoKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+Y29udGV4dHMubXV0ZXgpOwo+IC0J cmV0dXJuIGVycjsKPiAtfQo+IC0KPiAgLyogR0VNIGNvbnRleHQtZW5naW5lcyBpdGVyYXRvcjog Zm9yX2VhY2hfZ2VtX2VuZ2luZSgpICovCj4gIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAgaTkx NV9nZW1fZW5naW5lc19pdGVyX25leHQoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciAqaXQp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXgg MTA2ZTJjY2Y3YTRjLi42ZmIzYWQ3ZTAzZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9jb250ZXh0LmgKPiBAQCAtMTEyLDIxICsxMTIsNiBAQCBpOTE1X2dlbV9j b250ZXh0X2NsZWFyX3VzZXJfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ ICAJY2xlYXJfYml0KENPTlRFWFRfVVNFUl9FTkdJTkVTLCAmY3R4LT5mbGFncyk7Cj4gIH0KPiAg Cj4gLWludCBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpOwo+IC1zdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19p ZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+IC17Cj4gLQlpZiAoYXRvbWljX2luY19u b3RfemVybygmY3R4LT5od19pZF9waW5fY291bnQpKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCXJl dHVybiBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGN0eCk7Cj4gLX0KPiAtCj4gLXN0YXRp YyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3VucGluX2h3X2lkKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCj4gLXsKPiAtCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJmN0eC0+aHdf aWRfcGluX2NvdW50KSA9PSAwdSk7Cj4gLQlhdG9taWNfZGVjKCZjdHgtPmh3X2lkX3Bpbl9jb3Vu dCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9jb250ZXh0X2lzX2tl cm5lbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICB7Cj4gIAlyZXR1cm4gIWN0eC0+ ZmlsZV9wcml2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHRfdHlwZXMuaAo+IGluZGV4IDBlZTYxNDgyZWY5NC4uODBjZDNhYjM1NWUwIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5o Cj4gQEAgLTE0NywyNCArMTQ3LDYgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ICAjZGVm aW5lIENPTlRFWFRfRk9SQ0VfU0lOR0xFX1NVQk1JU1NJT04JMgo+ICAjZGVmaW5lIENPTlRFWFRf VVNFUl9FTkdJTkVTCQkzCj4gIAo+IC0JLyoqCj4gLQkgKiBAaHdfaWQ6IC0gdW5pcXVlIGlkZW50 aWZpZXIgZm9yIHRoZSBjb250ZXh0Cj4gLQkgKgo+IC0JICogVGhlIGhhcmR3YXJlIG5lZWRzIHRv IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb250ZXh0IGZvciBhIGZldwo+IC0JICogZnVuY3Rpb25z IGxpa2UgZmF1bHQgcmVwb3J0aW5nLCBQQVNJRCwgc2NoZWR1bGluZy4gVGhlCj4gLQkgKiAmZHJt X2k5MTVfcHJpdmF0ZS5jb250ZXh0X2h3X2lkYSBpcyB1c2VkIHRvIGFzc2lnbiBhIHVucWl1ZQo+ IC0JICogaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29udGV4dC4KPiAtCSAqCj4gLQkgKiBA aHdfaWRfcGluX2NvdW50OiAtIG51bWJlciBvZiB0aW1lcyB0aGlzIGNvbnRleHQgaGFkIGJlZW4g cGlubmVkCj4gLQkgKiBmb3IgdXNlIChzaG91bGQgYmUsIGF0IG1vc3QsIG9uY2UgcGVyIGVuZ2lu ZSkuCj4gLQkgKgo+IC0JICogQGh3X2lkX2xpbms6IC0gYWxsIGNvbnRleHRzIHdpdGggYW4gYXNz aWduZWQgaWQgYXJlIHRyYWNrZWQKPiAtCSAqIGZvciBwb3NzaWJsZSByZXBvc3Nlc3Npb24uCj4g LQkgKi8KPiAtCXVuc2lnbmVkIGludCBod19pZDsKPiAtCWF0b21pY190IGh3X2lkX3Bpbl9jb3Vu dDsKPiAtCXN0cnVjdCBsaXN0X2hlYWQgaHdfaWRfbGluazsKPiAtCj4gIAlzdHJ1Y3QgbXV0ZXgg bXV0ZXg7Cj4gIAo+ICAJc3RydWN0IGk5MTVfc2NoZWRfYXR0ciBzY2hlZDsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ IGluZGV4IGRiNzg1NmYwZjMxZS4uYTdiNmRhMjlmM2RmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAt NTI0LDkgKzUyNCw5IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCj4g IAkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKPiAgCQkJaWYgKGVycikg ewo+IC0JCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGgg Z3B1ICglcykgaW4gY3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiArCQkJCXBy X2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIFtm dWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiAgCQkJCSAgICAgICBuZHdvcmRzLCBkdywgbWF4 X2R3b3JkcyhvYmopLAo+IC0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKPiAr CQkJCSAgICAgICBlbmdpbmUtPm5hbWUsCj4gIAkJCQkgICAgICAgeWVzbm8oISFjdHgtPnZtKSwg ZXJyKTsKPiAgCQkJCWdvdG8gb3V0X3VubG9jazsKPiAgCQkJfQo+IEBAIC02NDMsOSArNjQzLDkg QEAgc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCj4gIAkJCWVy ciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKPiAgCQkJaWYgKGVycikgewo+IC0J CQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICgl cykgaW4gY3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiArCQkJCXByX2Vycigi RmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIFtmdWxsLXBw Z3R0PyAlc10sIGVycj0lZFxuIiwKPiAgCQkJCSAgICAgICBuZHdvcmRzLCBkdywgbWF4X2R3b3Jk cyhvYmopLAo+IC0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKPiArCQkJCSAg ICAgICBlbmdpbmUtPm5hbWUsCj4gIAkJCQkgICAgICAgeWVzbm8oISFjdHgtPnZtKSwgZXJyKTsK PiAgCQkJCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4gIAkJCQlnb3RvIG91dF90ZXN0Owo+ IEBAIC0xMjE5LDEwICsxMjE5LDkgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQg KmFyZykKPiAgCj4gIAkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKPiAg CQkJaWYgKGVycikgewo+IC0JCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVs dS8lbHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxu IiwKPiArCQkJCXByX2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRo IGdwdSAoJXMpIFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiAgCQkJCSAgICAgICBuZHdv cmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAo+IC0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4 LT5od19pZCwKPiAtCQkJCSAgICAgICB5ZXNubyghIWN0eC0+dm0pLCBlcnIpOwo+ICsJCQkJICAg ICAgIGVuZ2luZS0+bmFtZSwgeWVzbm8oISFjdHgtPnZtKSwgZXJyKTsKPiAgCQkJCWdvdG8gb3V0 X3VubG9jazsKPiAgCQkJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBpbmRleCBiZTg5NzRjY2ZmMjQuLjAxMDRmMTZiMTMy NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tf Y29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYwo+IEBAIC0xMyw3ICsxMyw2IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAgewo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsK PiAgCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplOwo+IC0JaW50IHJldDsKPiAgCj4gIAljdHgg PSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIWN0eCkKPiBAQCAt MzAsMTMgKzI5LDggQEAgbW9ja19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+ICAJUkNVX0lOSVRfUE9JTlRFUihjdHgtPmVuZ2luZXMsIGUpOwo+ICAKPiAgCUlOSVRfUkFE SVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7Cj4gLQlJTklUX0xJU1RfSEVB RCgmY3R4LT5od19pZF9saW5rKTsKPiAgCW11dGV4X2luaXQoJmN0eC0+bXV0ZXgpOwo+ICAKPiAt CXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGN0eCk7Cj4gLQlpZiAocmV0IDwgMCkK PiAtCQlnb3RvIGVycl9lbmdpbmVzOwo+IC0KPiAgCWlmIChuYW1lKSB7Cj4gIAkJc3RydWN0IGk5 MTVfcHBndHQgKnBwZ3R0Owo+ICAKPiBAQCAtNTQsOCArNDgsNiBAQCBtb2NrX2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAo+ICAJcmV0dXJuIGN0eDsKPiAgCj4gLWVy cl9lbmdpbmVzOgo+IC0JZnJlZV9lbmdpbmVzKHJjdV9hY2Nlc3NfcG9pbnRlcihjdHgtPmVuZ2lu ZXMpKTsKPiAgZXJyX2ZyZWU6Cj4gIAlrZnJlZShjdHgpOwo+ICAJcmV0dXJuIE5VTEw7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IGluZGV4IGMw MDQxOWUzOGE3Ny4uMzYzOTRkNDA2MWU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IEBAIC01Miw2ICs1Miw3IEBAIHN0cnVjdCBpbnRl bF9jb250ZXh0IHsKPiAgCj4gIAl1MzIgKmxyY19yZWdfc3RhdGU7Cj4gIAl1NjQgbHJjX2Rlc2M7 Cj4gKwl1MzIgaHdfdGFnOwo+ICAKPiAgCXVuc2lnbmVkIGludCBhY3RpdmVfY291bnQ7IC8qIHBy b3RlY3RlZCBieSB0aW1lbGluZS0+bXV0ZXggKi8KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBpbmRleCAxZGE4ZDJmMzRjNTYuLjEyMWFiZTVi MDhlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf dHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBl cy5oCj4gQEAgLTI3MCwxMCArMjcwLDEzIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAK PiAgCXU4IGNsYXNzOwo+ICAJdTggaW5zdGFuY2U7Cj4gKwo+ICsJdTMyIHVhYmlfY2FwYWJpbGl0 aWVzOwo+ICAJdTMyIGNvbnRleHRfc2l6ZTsKPiAgCXUzMiBtbWlvX2Jhc2U7Cj4gIAo+IC0JdTMy IHVhYmlfY2FwYWJpbGl0aWVzOwo+ICsJdW5zaWduZWQgaW50IGh3X3RhZzsKPiArI2RlZmluZSBO VU1fSFdfVEFHICgyNTYpCj4gIAo+ICAJc3RydWN0IHJiX25vZGUgdWFiaV9ub2RlOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IDE4ZDlkZGM1Y2Q1OC4uYWUxNWUw ZGQ5OGFjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtNDEyLDkg KzQxMiw2IEBAIGxyY19kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCA9IGNlLT5nZW1fY29udGV4dDsKPiAgCXU2NCBkZXNjOwo+ICAKPiAtCUJVSUxEX0JVR19PTihN QVhfQ09OVEVYVF9IV19JRCA+IChCSVQoR0VOOF9DVFhfSURfV0lEVEgpKSk7Cj4gLQlCVUlMRF9C VUdfT04oR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgPiAoQklUKEdFTjExX1NXX0NUWF9JRF9XSURU SCkpKTsKPiAtCj4gIAlkZXNjID0gY3R4LT5kZXNjX3RlbXBsYXRlOwkJCQkvKiBiaXRzICAwLTEx ICovCj4gIAlHRU1fQlVHX09OKGRlc2MgJiBHRU5NQVNLX1VMTCg2MywgMTIpKTsKPiAgCj4gQEAg LTQyOCwyMCArNDI1LDExIEBAIGxyY19kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJICogYW55dGhpbmcgYmVsb3cu Cj4gIAkgKi8KPiAgCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkgewo+IC0JCUdF TV9CVUdfT04oY3R4LT5od19pZCA+PSBCSVQoR0VOMTFfU1dfQ1RYX0lEX1dJRFRIKSk7Cj4gLQkJ ZGVzYyB8PSAodTY0KWN0eC0+aHdfaWQgPDwgR0VOMTFfU1dfQ1RYX0lEX1NISUZUOwo+IC0JCQkJ CQkJCS8qIGJpdHMgMzctNDcgKi8KPiAtCj4gIAkJZGVzYyB8PSAodTY0KWVuZ2luZS0+aW5zdGFu Y2UgPDwgR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUOwo+ICAJCQkJCQkJCS8qIGJpdHMgNDgt NTMgKi8KPiAgCj4gLQkJLyogVE9ETzogZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBTVyBjb3VudGVy IChiaXRzIDU1LTYwKSAqLwo+IC0KPiAgCQlkZXNjIHw9ICh1NjQpZW5naW5lLT5jbGFzcyA8PCBH RU4xMV9FTkdJTkVfQ0xBU1NfU0hJRlQ7Cj4gIAkJCQkJCQkJLyogYml0cyA2MS02MyAqLwo+IC0J fSBlbHNlIHsKPiAtCQlHRU1fQlVHX09OKGN0eC0+aHdfaWQgPj0gQklUKEdFTjhfQ1RYX0lEX1dJ RFRIKSk7Cj4gLQkJZGVzYyB8PSAodTY0KWN0eC0+aHdfaWQgPDwgR0VOOF9DVFhfSURfU0hJRlQ7 CS8qIGJpdHMgMzItNTIgKi8KPiAgCX0KPiAgCj4gIAlyZXR1cm4gZGVzYzsKPiBAQCAtNTM3LDYg KzUyNSwxNSBAQCBleGVjbGlzdHNfc2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IGludCBpZHgpCj4gIAkJaW50ZWxfY29udGV4dF9nZXQoY2UpOwo+ICAJCWNlLT5pbmZsaWdodCA9 IHJxLT5lbmdpbmU7Cj4gIAo+ICsJCWlmIChjZS0+aHdfdGFnKSB7Cj4gKwkJCWNlLT5scmNfZGVz YyB8PSAodTY0KWNlLT5od190YWcgPDwgMzI7Cj4gKwkJfSBlbHNlIHsKPiArCQkJY2UtPmxyY19k ZXNjICY9IH5HRU5NQVNLX1VMTCg0NywgMzcpOwo+ICsJCQljZS0+bHJjX2Rlc2MgfD0KPiArCQkJ CSh1NjQpKHJxLT5lbmdpbmUtPmh3X3RhZysrICUgTlVNX0hXX1RBRykgPDwKPiArCQkJCUdFTjEx X1NXX0NUWF9JRF9TSElGVDsKPiArCQl9Cj4gKwo+ICAJCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1 c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOwo+ICAJCWludGVsX2VuZ2lu ZV9jb250ZXh0X2luKGNlLT5pbmZsaWdodCk7Cj4gIAl9Cj4gQEAgLTE1NTEsNyArMTU0OCw2IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYp Cj4gIAo+ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4gIHsKPiAtCWk5MTVfZ2VtX2NvbnRleHRfdW5waW5faHdfaWQoY2UtPmdl bV9jb250ZXh0KTsKPiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmop Owo+ICAJaW50ZWxfcmluZ19yZXNldChjZS0+cmluZywgY2UtPnJpbmctPnRhaWwpOwo+ICB9Cj4g QEAgLTE2MDYsMTggKzE2MDIsMTIgQEAgX19leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlLAo+ICAJCWdvdG8gdW5waW5fYWN0aXZlOwo+ICAJfQo+ICAKPiAtCXJl dCA9IGk5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGNlLT5nZW1fY29udGV4dCk7Cj4gLQlpZiAo cmV0KQo+IC0JCWdvdG8gdW5waW5fbWFwOwo+IC0KPiAgCWNlLT5scmNfZGVzYyA9IGxyY19kZXNj cmlwdG9yKGNlLCBlbmdpbmUpOwo+ICAJY2UtPmxyY19yZWdfc3RhdGUgPSB2YWRkciArIExSQ19T VEFURV9QTiAqIFBBR0VfU0laRTsKPiAgCV9fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3RhdGUoY2Us IGVuZ2luZSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIAo+IC11bnBpbl9tYXA6Cj4gLQlpOTE1X2dl bV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKPiAgdW5waW5fYWN0aXZlOgo+ICAJ aW50ZWxfY29udGV4dF9hY3RpdmVfcmVsZWFzZShjZSk7Cj4gIGVycjoKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQva3ZtZ3QuYwo+IGluZGV4IDE0NDMwMWI3NzhkZi4uOTQxZDBmMDhiMDQ3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiBAQCAtMTU2NiwyNyArMTU2NiwxMCBAQCB2Z3B1X2lkX3No b3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiAg CXJldHVybiBzcHJpbnRmKGJ1ZiwgIlxuIik7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzc2l6ZV90Cj4g LWh3X2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwKPiAtCSAgIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IG1kZXZfZGV2aWNlICptZGV2 ID0gbWRldl9mcm9tX2RldihkZXYpOwo+IC0KPiAtCWlmIChtZGV2KSB7Cj4gLQkJc3RydWN0IGlu dGVsX3ZncHUgKnZncHUgPSAoc3RydWN0IGludGVsX3ZncHUgKikKPiAtCQkJbWRldl9nZXRfZHJ2 ZGF0YShtZGV2KTsKPiAtCQlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwKPiAtCQkJICAgICAg IHZncHUtPnN1Ym1pc3Npb24uc2hhZG93WzBdLT5nZW1fY29udGV4dC0+aHdfaWQpOwo+IC0JfQo+ IC0JcmV0dXJuIHNwcmludGYoYnVmLCAiXG4iKTsKPiAtfQo+IC0KPiAgc3RhdGljIERFVklDRV9B VFRSX1JPKHZncHVfaWQpOwo+IC1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaHdfaWQpOwo+ICAKPiAg c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmludGVsX3ZncHVfYXR0cnNbXSA9IHsKPiAgCSZkZXZf YXR0cl92Z3B1X2lkLmF0dHIsCj4gLQkmZGV2X2F0dHJfaHdfaWQuYXR0ciwKPiAgCU5VTEwKPiAg fTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBiNmI4MDk2M2Y5 OTIuLmI3ZWM5ZjNjZGMyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g QEAgLTE1ODEsOSArMTU4MSw2IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2U7Cj4gIAo+ICAJCXNlcV9wdXRzKG0sICJIVyBjb250ZXh0ICIpOwo+IC0JCWlmICghbGlzdF9l bXB0eSgmY3R4LT5od19pZF9saW5rKSkKPiAtCQkJc2VxX3ByaW50ZihtLCAiJXggW3BpbiAldV0i LCBjdHgtPmh3X2lkLAo+IC0JCQkJICAgYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50 KSk7Cj4gIAkJaWYgKGN0eC0+cGlkKSB7Cj4gIAkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggMDI2ZWUxZjU1 MzZkLi43NTY3MWZhZjI2M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKPiBAQCAtNTA2LDkgKzUwNiw5IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgCQkJCWNvbnN0IGNoYXIgKmhl YWRlciwKPiAgCQkJCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9jb250ZXh0ICpjdHgpCj4g IHsKPiAtCWVycl9wcmludGYobSwgIiVzJXNbJWRdIGh3X2lkICVkLCBwcmlvICVkLCBndWlsdHkg JWQgYWN0aXZlICVkXG4iLAo+IC0JCSAgIGhlYWRlciwgY3R4LT5jb21tLCBjdHgtPnBpZCwgY3R4 LT5od19pZCwKPiAtCQkgICBjdHgtPnNjaGVkX2F0dHIucHJpb3JpdHksIGN0eC0+Z3VpbHR5LCBj dHgtPmFjdGl2ZSk7Cj4gKwllcnJfcHJpbnRmKG0sICIlcyVzWyVkXSBwcmlvICVkLCBndWlsdHkg JWQgYWN0aXZlICVkXG4iLAo+ICsJCSAgIGhlYWRlciwgY3R4LT5jb21tLCBjdHgtPnBpZCwgY3R4 LT5zY2hlZF9hdHRyLnByaW9yaXR5LAo+ICsJCSAgIGN0eC0+Z3VpbHR5LCBjdHgtPmFjdGl2ZSk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+IEBAIC0xMzEwLDcgKzEzMTAsNiBAQCBzdGF0aWMgdm9p ZCByZWNvcmRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfY29udGV4dCAqZSwKPiAgCQly Y3VfcmVhZF91bmxvY2soKTsKPiAgCX0KPiAgCj4gLQllLT5od19pZCA9IGN0eC0+aHdfaWQ7Cj4g IAllLT5zY2hlZF9hdHRyID0gY3R4LT5zY2hlZDsKPiAgCWUtPmd1aWx0eSA9IGF0b21pY19yZWFk KCZjdHgtPmd1aWx0eV9jb3VudCk7Cj4gIAllLT5hY3RpdmUgPSBhdG9taWNfcmVhZCgmY3R4LT5h Y3RpdmVfY291bnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+IGluZGV4 IGEyNGMzNTEwN2QxNi4uMWQ5NTFlYWU3ZTJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5oCj4gQEAgLTExNyw3ICsxMTcsNiBAQCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUg ewo+ICAJCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9jb250ZXh0IHsKPiAgCQkJY2hhciBjb21tW1RB U0tfQ09NTV9MRU5dOwo+ICAJCQlwaWRfdCBwaWQ7Cj4gLQkJCXUzMiBod19pZDsKPiAgCQkJaW50 IGFjdGl2ZTsKPiAgCQkJaW50IGd1aWx0eTsKPiAgCQkJc3RydWN0IGk5MTVfc2NoZWRfYXR0ciBz Y2hlZF9hdHRyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggNThhNzFlZmMyNWRi Li5kZjAyZTBmZTA3MDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0xMjkz LDE5ICsxMjkzLDE0IEBAIHN0YXRpYyBpbnQgb2FfZ2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhf aWRfbWFzayA9Cj4gIAkJCQkoMVUgPDwgR0VOOF9DVFhfSURfV0lEVEgpIC0gMTsKPiAgCQkJaTkx NS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPQo+IC0JCQkJdXBwZXJfMzJfYml0cyhjZS0+bHJj X2Rlc2MpOwo+IC0JCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAmPQo+ICAJCQkJaTkx NS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzazsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAo+ ICAJY2FzZSAxMTogewo+ICAJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sgPQo+ IC0JCQkoKDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURUSCkgLSAxKSA8PCAoR0VOMTFfU1dfQ1RY X0lEX1NISUZUIC0gMzIpIHwKPiAtCQkJKCgxVSA8PCBHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfV0lE VEgpIC0gMSkgPDwgKEdFTjExX0VOR0lORV9JTlNUQU5DRV9TSElGVCAtIDMyKSB8Cj4gLQkJCSgo MSA8PCBHRU4xMV9FTkdJTkVfQ0xBU1NfV0lEVEgpIC0gMSkgPDwgKEdFTjExX0VOR0lORV9DTEFT U19TSElGVCAtIDMyKTsKPiAtCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IHVwcGVy XzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKPiAtCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9p ZCAmPQo+ICsJCQkoKDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURUSCkgLSAxKSA8PCAoR0VOMTFf U1dfQ1RYX0lEX1NISUZUIC0gMzIpOwo+ICsJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ID0KPiAgCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzazsKPiAgCQlicmVhazsK PiAgCX0KPiBAQCAtMTMxNCw2ICsxMzA5LDggQEAgc3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0 eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAJCU1JU1NJTkdfQ0FTRShJ TlRFTF9HRU4oaTkxNSkpOwo+ICAJfQo+ICAKPiArCWNlLT5od190YWcgPSBpOTE1LT5wZXJmLm9h LnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+ICsKPiAgCURSTV9ERUJVR19EUklWRVIoImZpbHRlcmlu ZyBvbiBjdHhfaWQ9MHgleCBjdHhfaWRfbWFzaz0weCV4XG4iLAo+ICAJCQkgaTkxNS0+cGVyZi5v YS5zcGVjaWZpY19jdHhfaWQsCj4gIAkJCSBpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9t YXNrKTsKPiBAQCAtMTMzMCwxOCArMTMyNywxOSBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJf Y3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAqLwo+ICBzdGF0aWMg dm9pZCBvYV9wdXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRl dl9wcml2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBzdHJlYW0tPmRldl9w cml2Owo+ICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAKPiAtCWRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+IC0JZGV2X3ByaXYtPnBlcmYu b2Euc3BlY2lmaWNfY3R4X2lkX21hc2sgPSAwOwo+IC0KPiAtCWNlID0gZmV0Y2hfYW5kX3plcm8o JmRldl9wcml2LT5wZXJmLm9hLnBpbm5lZF9jdHgpOwo+IC0JaWYgKGNlKSB7Cj4gLQkJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJY2UgPSBmZXRjaF9hbmRfemVy bygmaTkxNS0+cGVyZi5vYS5waW5uZWRfY3R4KTsKPiArCWlmIChjZSkgIHsKPiArCQltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQljZS0+aHdfdGFnID0gMDsKPiAgCQlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKPiArCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAJfQo+ICsKPiArCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0gSU5WQUxJRF9D VFhfSUQ7Cj4gKwlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90cmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gaW5kZXggZGEx OGI4ZDZiODBjLi5mYmY2ZGQwZWI1YzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90cmFjZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5o Cj4gQEAgLTY2NSw3ICs2NjUsNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3RfcXVldWUsCj4g IAo+ICAJICAgIFRQX1NUUlVDVF9fZW50cnkoCj4gIAkJCSAgICAgX19maWVsZCh1MzIsIGRldikK PiAtCQkJICAgICBfX2ZpZWxkKHUzMiwgaHdfaWQpCj4gIAkJCSAgICAgX19maWVsZCh1NjQsIGN0 eCkKPiAgCQkJICAgICBfX2ZpZWxkKHUxNiwgY2xhc3MpCj4gIAkJCSAgICAgX19maWVsZCh1MTYs IGluc3RhbmNlKQo+IEBAIC02NzUsNyArNjc0LDYgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0 X3F1ZXVlLAo+ICAKPiAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAgCQkJICAgX19lbnRyeS0+ZGV2 ID0gcnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPiAtCQkJICAgX19lbnRyeS0+aHdfaWQg PSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwo+ICAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJxLT5l bmdpbmUtPnVhYmlfY2xhc3M7Cj4gIAkJCSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2lu ZS0+aW5zdGFuY2U7Cj4gIAkJCSAgIF9fZW50cnktPmN0eCA9IHJxLT5mZW5jZS5jb250ZXh0Owo+ IEBAIC02ODMsMTAgKzY4MSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF9xdWV1ZSwKPiAg CQkJICAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsKPiAgCQkJICAgKSwKPiAgCj4gLQkgICAgVFBf cHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCBzZXFubz0l dSwgZmxhZ3M9MHgleCIsCj4gKwkgICAgVFBfcHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0ldToldSwg Y3R4PSVsbHUsIHNlcW5vPSV1LCBmbGFncz0weCV4IiwKPiAgCQkgICAgICBfX2VudHJ5LT5kZXYs IF9fZW50cnktPmNsYXNzLCBfX2VudHJ5LT5pbnN0YW5jZSwKPiAtCQkgICAgICBfX2VudHJ5LT5o d19pZCwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPiAtCQkgICAgICBfX2VudHJ5LT5m bGFncykKPiArCQkgICAgICBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vLCBfX2VudHJ5LT5m bGFncykKPiAgKTsKPiAgCj4gIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9yZXF1ZXN0LAo+IEBA IC02OTUsNyArNjkyLDYgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhpOTE1X3JlcXVlc3QsCj4gIAo+ ICAJICAgIFRQX1NUUlVDVF9fZW50cnkoCj4gIAkJCSAgICAgX19maWVsZCh1MzIsIGRldikKPiAt CQkJICAgICBfX2ZpZWxkKHUzMiwgaHdfaWQpCj4gIAkJCSAgICAgX19maWVsZCh1NjQsIGN0eCkK PiAgCQkJICAgICBfX2ZpZWxkKHUxNiwgY2xhc3MpCj4gIAkJCSAgICAgX19maWVsZCh1MTYsIGlu c3RhbmNlKQo+IEBAIC03MDQsMTYgKzcwMCwxNSBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGk5MTVf cmVxdWVzdCwKPiAgCj4gIAkgICAgVFBfZmFzdF9hc3NpZ24oCj4gIAkJCSAgIF9fZW50cnktPmRl diA9IHJxLT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Cj4gLQkJCSAgIF9fZW50cnktPmh3X2lk ID0gcnEtPmdlbV9jb250ZXh0LT5od19pZDsKPiAgCQkJICAgX19lbnRyeS0+Y2xhc3MgPSBycS0+ ZW5naW5lLT51YWJpX2NsYXNzOwo+ICAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdp bmUtPmluc3RhbmNlOwo+ICAJCQkgICBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsK PiAgCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBycS0+ZmVuY2Uuc2Vxbm87Cj4gIAkJCSAgICksCj4g IAo+IC0JICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGh3X2lkPSV1LCBjdHg9 JWxsdSwgc2Vxbm89JXUiLAo+ICsJICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUs IGN0eD0lbGx1LCBzZXFubz0ldSIsCj4gIAkJICAgICAgX19lbnRyeS0+ZGV2LCBfX2VudHJ5LT5j bGFzcywgX19lbnRyeS0+aW5zdGFuY2UsCj4gLQkJICAgICAgX19lbnRyeS0+aHdfaWQsIF9fZW50 cnktPmN0eCwgX19lbnRyeS0+c2Vxbm8pCj4gKwkJICAgICAgX19lbnRyeS0+Y3R4LCBfX2VudHJ5 LT5zZXFubykKPiAgKTsKPiAgCj4gIERFRklORV9FVkVOVChpOTE1X3JlcXVlc3QsIGk5MTVfcmVx dWVzdF9hZGQsCj4gQEAgLTczOCw3ICs3MzMsNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rf aW4sCj4gIAo+ICAJICAgIFRQX1NUUlVDVF9fZW50cnkoCj4gIAkJCSAgICAgX19maWVsZCh1MzIs IGRldikKPiAtCQkJICAgICBfX2ZpZWxkKHUzMiwgaHdfaWQpCj4gIAkJCSAgICAgX19maWVsZCh1 NjQsIGN0eCkKPiAgCQkJICAgICBfX2ZpZWxkKHUxNiwgY2xhc3MpCj4gIAkJCSAgICAgX19maWVs ZCh1MTYsIGluc3RhbmNlKQo+IEBAIC03NDksNyArNzQzLDYgQEAgVFJBQ0VfRVZFTlQoaTkxNV9y ZXF1ZXN0X2luLAo+ICAKPiAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAgCQkJICAgX19lbnRyeS0+ ZGV2ID0gcnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPiAtCQkJICAgX19lbnRyeS0+aHdf aWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwo+ICAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJx LT5lbmdpbmUtPnVhYmlfY2xhc3M7Cj4gIAkJCSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEtPmVu Z2luZS0+aW5zdGFuY2U7Cj4gIAkJCSAgIF9fZW50cnktPmN0eCA9IHJxLT5mZW5jZS5jb250ZXh0 Owo+IEBAIC03NTgsOSArNzUxLDkgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X2luLAo+ICAJ CQkgICBfX2VudHJ5LT5wb3J0ID0gcG9ydDsKPiAgCQkJICAgKSwKPiAgCj4gLQkgICAgVFBfcHJp bnRrKCJkZXY9JXUsIGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwg cHJpbz0ldSwgcG9ydD0ldSIsCj4gKwkgICAgVFBfcHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0ldTol dSwgY3R4PSVsbHUsIHNlcW5vPSV1LCBwcmlvPSV1LCBwb3J0PSV1IiwKPiAgCQkgICAgICBfX2Vu dHJ5LT5kZXYsIF9fZW50cnktPmNsYXNzLCBfX2VudHJ5LT5pbnN0YW5jZSwKPiAtCQkgICAgICBf X2VudHJ5LT5od19pZCwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPiArCQkgICAgICBf X2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vLAo+ICAJCSAgICAgIF9fZW50cnktPnByaW8sIF9f ZW50cnktPnBvcnQpCj4gICk7Cj4gIAo+IEBAIC03NzAsNyArNzYzLDYgQEAgVFJBQ0VfRVZFTlQo aTkxNV9yZXF1ZXN0X291dCwKPiAgCj4gIAkgICAgVFBfU1RSVUNUX19lbnRyeSgKPiAgCQkJICAg ICBfX2ZpZWxkKHUzMiwgZGV2KQo+IC0JCQkgICAgIF9fZmllbGQodTMyLCBod19pZCkKPiAgCQkJ ICAgICBfX2ZpZWxkKHU2NCwgY3R4KQo+ICAJCQkgICAgIF9fZmllbGQodTE2LCBjbGFzcykKPiAg CQkJICAgICBfX2ZpZWxkKHUxNiwgaW5zdGFuY2UpCj4gQEAgLTc4MCw3ICs3NzIsNiBAQCBUUkFD RV9FVkVOVChpOTE1X3JlcXVlc3Rfb3V0LAo+ICAKPiAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAg CQkJICAgX19lbnRyeS0+ZGV2ID0gcnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPiAtCQkJ ICAgX19lbnRyeS0+aHdfaWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwo+ICAJCQkgICBfX2Vu dHJ5LT5jbGFzcyA9IHJxLT5lbmdpbmUtPnVhYmlfY2xhc3M7Cj4gIAkJCSAgIF9fZW50cnktPmlu c3RhbmNlID0gcnEtPmVuZ2luZS0+aW5zdGFuY2U7Cj4gIAkJCSAgIF9fZW50cnktPmN0eCA9IHJx LT5mZW5jZS5jb250ZXh0Owo+IEBAIC03ODgsMTAgKzc3OSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVf cmVxdWVzdF9vdXQsCj4gIAkJCSAgIF9fZW50cnktPmNvbXBsZXRlZCA9IGk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocnEpOwo+ICAJCQkgICApLAo+ICAKPiAtCQkgICAgVFBfcHJpbnRrKCJkZXY9JXUs IGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwgY29tcGxldGVkPz0l dSIsCj4gKwkJICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGN0eD0lbGx1LCBz ZXFubz0ldSwgY29tcGxldGVkPz0ldSIsCj4gIAkJCSAgICAgIF9fZW50cnktPmRldiwgX19lbnRy eS0+Y2xhc3MsIF9fZW50cnktPmluc3RhbmNlLAo+IC0JCQkgICAgICBfX2VudHJ5LT5od19pZCwg X19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPiAtCQkJICAgICAgX19lbnRyeS0+Y29tcGxl dGVkKQo+ICsJCQkgICAgICBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vLCBfX2VudHJ5LT5j b21wbGV0ZWQpCj4gICk7Cj4gIAo+ICAjZWxzZQo+IEBAIC04MjksNyArODE5LDYgQEAgVFJBQ0Vf RVZFTlQoaTkxNV9yZXF1ZXN0X3dhaXRfYmVnaW4sCj4gIAo+ICAJICAgIFRQX1NUUlVDVF9fZW50 cnkoCj4gIAkJCSAgICAgX19maWVsZCh1MzIsIGRldikKPiAtCQkJICAgICBfX2ZpZWxkKHUzMiwg aHdfaWQpCj4gIAkJCSAgICAgX19maWVsZCh1NjQsIGN0eCkKPiAgCQkJICAgICBfX2ZpZWxkKHUx NiwgY2xhc3MpCj4gIAkJCSAgICAgX19maWVsZCh1MTYsIGluc3RhbmNlKQo+IEBAIC04NDUsNyAr ODM0LDYgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X3dhaXRfYmVnaW4sCj4gIAkgICAgICov Cj4gIAkgICAgVFBfZmFzdF9hc3NpZ24oCj4gIAkJCSAgIF9fZW50cnktPmRldiA9IHJxLT5pOTE1 LT5kcm0ucHJpbWFyeS0+aW5kZXg7Cj4gLQkJCSAgIF9fZW50cnktPmh3X2lkID0gcnEtPmdlbV9j b250ZXh0LT5od19pZDsKPiAgCQkJICAgX19lbnRyeS0+Y2xhc3MgPSBycS0+ZW5naW5lLT51YWJp X2NsYXNzOwo+ICAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPmluc3RhbmNl Owo+ICAJCQkgICBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKPiBAQCAtODUzLDkg Kzg0MSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF93YWl0X2JlZ2luLAo+ICAJCQkgICBf X2VudHJ5LT5mbGFncyA9IGZsYWdzOwo+ICAJCQkgICApLAo+ICAKPiAtCSAgICBUUF9wcmludGso ImRldj0ldSwgZW5naW5lPSV1OiV1LCBod19pZD0ldSwgY3R4PSVsbHUsIHNlcW5vPSV1LCBmbGFn cz0weCV4IiwKPiArCSAgICBUUF9wcmludGsoImRldj0ldSwgZW5naW5lPSV1OiV1LCBjdHg9JWxs dSwgc2Vxbm89JXUsIGZsYWdzPTB4JXgiLAo+ICAJCSAgICAgIF9fZW50cnktPmRldiwgX19lbnRy eS0+Y2xhc3MsIF9fZW50cnktPmluc3RhbmNlLAo+IC0JCSAgICAgIF9fZW50cnktPmh3X2lkLCBf X2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vLAo+ICsJCSAgICAgIF9fZW50cnktPmN0eCwgX19l bnRyeS0+c2Vxbm8sCj4gIAkJICAgICAgX19lbnRyeS0+ZmxhZ3MpCj4gICk7Cj4gIAo+IEBAIC05 NTgsMTkgKzk0NiwxNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGk5MTVfY29udGV4dCwKPiAgCVRQ X1NUUlVDVF9fZW50cnkoCj4gIAkJCV9fZmllbGQodTMyLCBkZXYpCj4gIAkJCV9fZmllbGQoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKiwgY3R4KQo+IC0JCQlfX2ZpZWxkKHUzMiwgaHdfaWQpCj4g IAkJCV9fZmllbGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqLCB2bSkKPiAgCSksCj4gIAo+ ICAJVFBfZmFzdF9hc3NpZ24oCj4gIAkJCV9fZW50cnktPmRldiA9IGN0eC0+aTkxNS0+ZHJtLnBy aW1hcnktPmluZGV4Owo+ICAJCQlfX2VudHJ5LT5jdHggPSBjdHg7Cj4gLQkJCV9fZW50cnktPmh3 X2lkID0gY3R4LT5od19pZDsKPiAgCQkJX19lbnRyeS0+dm0gPSBjdHgtPnZtOwo+ICAJKSwKPiAg Cj4gLQlUUF9wcmludGsoImRldj0ldSwgY3R4PSVwLCBjdHhfdm09JXAsIGh3X2lkPSV1IiwKPiAt CQkgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT52bSwgX19lbnRyeS0+aHdf aWQpCj4gKwlUUF9wcmludGsoImRldj0ldSwgY3R4PSVwLCBjdHhfdm09JXAiLAo+ICsJCSAgX19l bnRyeS0+ZGV2LCBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnZtKQo+ICApCj4gIAo+ICBERUZJTkVf RVZFTlQoaTkxNV9jb250ZXh0LCBpOTE1X2NvbnRleHRfY3JlYXRlLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gaW5kZXggYjY0NDlkMGE4 YzE3Li4wN2FiODIyYjIyNGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+IEBAIC00NzUsOCArNDc1LDggQEAgc3RhdGljIGludCBp Z3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQo+ICAJCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAJ CQkJLyogV2hlbiBmdWxsLCBmYWlsX2lmX2J1c3kgd2lsbCB0cmlnZ2VyIEVCVVNZICovCj4gIAkJ CQlpZiAoUFRSX0VSUihycSkgIT0gLUVCVVNZKSB7Cj4gLQkJCQkJcHJfZXJyKCJVbmV4cGVjdGVk IGVycm9yIGZyb20gcmVxdWVzdCBhbGxvYyAoY3R4IGh3IGlkICV1LCBvbiAlcyk6ICVkXG4iLAo+ IC0JCQkJCSAgICAgICBjdHgtPmh3X2lkLCBlbmdpbmUtPm5hbWUsCj4gKwkJCQkJcHJfZXJyKCJV bmV4cGVjdGVkIGVycm9yIGZyb20gcmVxdWVzdCBhbGxvYyAob24gJXMpOiAlZFxuIiwKPiArCQkJ CQkgICAgICAgZW5naW5lLT5uYW1lLAo+ICAJCQkJCSAgICAgICAoaW50KVBUUl9FUlIocnEpKTsK PiAgCQkJCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAgCQkJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+IGluZGV4IGZiYzc5YjE0ODIzYS4uODUwMDhmNGZjNzhj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKPiBAQCAt MTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtYV9jcmVhdGUodm9pZCAqYXJnKQo+ICAJ CX0KPiAgCj4gIAkJbmMgPSAwOwo+IC0JCWZvcl9lYWNoX3ByaW1lX251bWJlcihudW1fY3R4LCBN QVhfQ09OVEVYVF9IV19JRCkgewo+ICsJCWZvcl9lYWNoX3ByaW1lX251bWJlcihudW1fY3R4LCBO VU1fSFdfVEFHKSB7Cj4gIAkJCWZvciAoOyBuYyA8IG51bV9jdHg7IG5jKyspIHsKPiAgCQkJCWN0 eCA9IG1vY2tfY29udGV4dChpOTE1LCAibW9jayIpOwo+ICAJCQkJaWYgKCFjdHgpCj4gLS0gCj4g Mi4yMi4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==