From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm: Add ASPEED GFX driver Date: Thu, 28 Mar 2019 08:53:17 +0100 Message-ID: <20190328075317.GR2665@phenom.ffwll.local> References: <20190328054316.17939-1-joel@jms.id.au> <20190328054316.17939-3-joel@jms.id.au> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190328054316.17939-3-joel@jms.id.au> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Joel Stanley Cc: devicetree@vger.kernel.org, Maxime Ripard , linux-aspeed@lists.ozlabs.org, David Airlie , dri-devel@lists.freedesktop.org, Andrew Jeffery , Rob Herring , Sean Paul , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org T24gVGh1LCBNYXIgMjgsIDIwMTkgYXQgMDQ6MTM6MTZQTSArMTAzMCwgSm9lbCBTdGFubGV5IHdy b3RlOgo+IFRoaXMgZHJpdmVyIGlzIGZvciB0aGUgQVNQRUVEIEJNQyBTb0MncyBHRlggZGlzcGxh eSBoYXJkd2FyZS4gVGhpcwo+IGRyaXZlciBydW5zIG9uIHRoZSBBUk0gYmFzZWQgQk1DIHN5c3Rl bXMsIHVubGlrZSB0aGUgYXN0IGRyaXZlciB3aGljaAo+IHJ1bnMgb24gYSBob3N0IENQVSBhbmQg aXMgaXMgZm9yIGEgUENJIGdyYXBoaWNzIGRldmljZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKb2Vs IFN0YW5sZXkgPGpvZWxAam1zLmlkLmF1Pgo+IC0tCj4gQ2hhbmdlcyBzaW5jZSBSRkM6Cj4gIGRy bV9mYmRldl9jbWFfaW5pdCAtPiBkcm1fZmJfY21hX2ZiZGV2X2luaXQgYW5kIHVzZSBnZW5lcmlj IGxhc3RjbG9zZSBjYWxsYmFjawo+ICBVc2UgZ2VuZXJpYyBpcnEgaGFuZGxpbmcgaW5zdGVhZCBv ZiBkcm1faXJxX2luc3RhbGwKPiAgQWRkIGRvYyB0byBkcml2ZXIKPiAgR2V0IHJpZCBvZiB1bm5j ZXNzYXJ5IHJlYWRzIGluIGlycSBlbmFibGUvZGlzYWJsZSBwYXRoCj4gIFJlYmFzZSBvbiBsaW51 eC1uZXh0Cj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAg IDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsK PiAgZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9LY29uZmlnICAgICAgICAgICB8ICAxNSArKwo+ICBk cml2ZXJzL2dwdS9kcm0vYXNwZWVkL01ha2VmaWxlICAgICAgICAgIHwgICAzICsKPiAgZHJpdmVy cy9ncHUvZHJtL2FzcGVlZC9hc3BlZWRfZ2Z4LmggICAgICB8IDEwNCArKysrKysrKysKPiAgZHJp dmVycy9ncHUvZHJtL2FzcGVlZC9hc3BlZWRfZ2Z4X2NydGMuYyB8IDI0OCArKysrKysrKysrKysr KysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9hc3BlZWRfZ2Z4X2Rydi5jICB8IDI2 OSArKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vYXNwZWVkL2FzcGVl ZF9nZnhfb3V0LmMgIHwgIDQ5ICsrKysrCj4gIDggZmlsZXMgY2hhbmdlZCwgNjkxIGluc2VydGlv bnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hc3BlZWQvS2NvbmZp Zwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9NYWtlZmlsZQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9hc3BlZWRfZ2Z4LmgK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVkX2dmeF9j cnRjLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVk X2dmeF9kcnYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9h c3BlZWRfZ2Z4X291dC5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln IGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRleCA4MmJiMjIxZWM5NGUuLmIxZWM4Zjg1 YzJhOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnCj4gQEAgLTMzNSw2ICszMzUsOCBAQCBzb3VyY2UgImRyaXZlcnMv Z3B1L2RybS94ZW4vS2NvbmZpZyIKPiAgCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3Zib3h2 aWRlby9LY29uZmlnIgo+ICAKPiArc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYXNwZWVkL0tjb25m aWciCj4gKwo+ICAjIEtlZXAgbGVnYWN5IGRyaXZlcnMgbGFzdAo+ICAKPiAgbWVudWNvbmZpZyBE Uk1fTEVHQUNZCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDBiYWYxNDhlMzY4Ny4uZGY4ODM1MDQ1MzEwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZQo+IEBAIC0xMTAsMyArMTEwLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QTDEx MSkgKz0gcGwxMTEvCj4gIG9iai0kKENPTkZJR19EUk1fVFZFMjAwKSArPSB0dmUyMDAvCj4gIG9i ai0kKENPTkZJR19EUk1fWEVOKSArPSB4ZW4vCj4gIG9iai0kKENPTkZJR19EUk1fVkJPWFZJREVP KSArPSB2Ym94dmlkZW8vCj4gK29iai0kKENPTkZJR19EUk1fQVNQRUVEX0dGWCkgKz0gYXNwZWVk Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXNwZWVkL0tjb25maWcgYi9kcml2ZXJz L2dwdS9kcm0vYXNwZWVkL0tjb25maWcKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uNmYxZTY0YzBhNmNlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hc3BlZWQvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMTUgQEAKPiArY29uZmlnIERSTV9B U1BFRURfR0ZYCj4gKwl0cmlzdGF0ZSAiQVNQRUVEIEJNQyBEaXNwbGF5IENvbnRyb2xsZXIiCj4g KwlkZXBlbmRzIG9uIERSTSAmJiBPRgo+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4gKwlzZWxl Y3QgRFJNX0tNU19GQl9IRUxQRVIKPiArCXNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKPiArCXNl bGVjdCBEUk1fUEFORUwKPiArCXNlbGVjdCBETUFfQ01BCj4gKwlzZWxlY3QgQ01BCj4gKwlzZWxl Y3QgTUZEX1NZU0NPTgo+ICsJaGVscAo+ICsJICBDaG9zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2 ZSBhbiBBU1BFRUQgQVNUMjQwMC9BU1QyNTAwCj4gKwkgIFNPQyBEaXNwbGF5IENvbnRyb2xsZXIg KGFrYSBHRlgpLgo+ICsKPiArCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGlzIG1vZHVsZSB3aWxsIGJl IGNhbGxlZCBhc3BlZWRfZ2Z4Lgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXNwZWVk L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9NYWtlZmlsZQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZTE5NGNkNzkwZDgKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9NYWtlZmlsZQo+IEBAIC0wLDAgKzEs MyBAQAo+ICthc3BlZWRfZ2Z4LXkgOj0gYXNwZWVkX2dmeF9kcnYubyBhc3BlZWRfZ2Z4X2NydGMu byBhc3BlZWRfZ2Z4X291dC5vCj4gKwo+ICtvYmotJChDT05GSUdfRFJNX0FTUEVFRF9HRlgpICs9 IGFzcGVlZF9nZngubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXNwZWVkL2FzcGVl ZF9nZnguaCBiL2RyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVkX2dmeC5oCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZiNTZlNDI1YmQ0OAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXNwZWVkL2FzcGVlZF9nZnguaAo+IEBAIC0w LDAgKzEsMTA0IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+ICsv LyBDb3B5cmlnaHQgMjAxOCBJQk0gQ29ycG9yYXRpb24KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ICsKPiArc3Ry dWN0IGFzcGVlZF9nZnggewo+ICsJdm9pZCBfX2lvbWVtCQkJKmJhc2U7Cj4gKwlzdHJ1Y3QgY2xr CQkJKmNsazsKPiArCXN0cnVjdCByZXNldF9jb250cm9sCQkqcnN0Owo+ICsJc3RydWN0IHJlZ21h cAkJCSpzY3U7Cj4gKwo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlCXBpcGU7Cj4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvcgkJY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9mYmRldl9j bWEJCSpmYmRldjsKPiArfTsKPiArCj4gK2ludCBhc3BlZWRfZ2Z4X2NyZWF0ZV9waXBlKHN0cnVj dCBkcm1fZGV2aWNlICpkcm0pOwo+ICtpbnQgYXNwZWVkX2dmeF9jcmVhdGVfb3V0cHV0KHN0cnVj dCBkcm1fZGV2aWNlICpkcm0pOwo+ICsKPiArI2RlZmluZSBDUlRfQ1RSTDEJCTB4NjAgLyogQ1JU IENvbnRyb2wgSSAqLwo+ICsjZGVmaW5lIENSVF9DVFJMMgkJMHg2NCAvKiBDUlQgQ29udHJvbCBJ SSAqLwo+ICsjZGVmaW5lIENSVF9TVEFUVVMJCTB4NjggLyogQ1JUIFN0YXR1cyAqLwo+ICsjZGVm aW5lIENSVF9NSVNDCQkweDZjIC8qIENSVCBNaXNjIFNldHRpbmcgKi8KPiArI2RlZmluZSBDUlRf SE9SSVowCQkweDcwIC8qIENSVCBIb3Jpem9udGFsIFRvdGFsICYgRGlzcGxheSBFbmFibGUgRW5k ICovCj4gKyNkZWZpbmUgQ1JUX0hPUklaMQkJMHg3NCAvKiBDUlQgSG9yaXpvbnRhbCBSZXRyYWNl IFN0YXJ0ICYgRW5kICovCj4gKyNkZWZpbmUgQ1JUX1ZFUlQwCQkweDc4IC8qIENSVCBWZXJ0aWNh bCBUb3RhbCAmIERpc3BsYXkgRW5hYmxlIEVuZCAqLwo+ICsjZGVmaW5lIENSVF9WRVJUMQkJMHg3 QyAvKiBDUlQgVmVydGljYWwgUmV0cmFjZSBTdGFydCAmIEVuZCAqLwo+ICsjZGVmaW5lIENSVF9B RERSCQkweDgwIC8qIENSVCBEaXNwbGF5IFN0YXJ0aW5nIEFkZHJlc3MgKi8KPiArI2RlZmluZSBD UlRfT0ZGU0VUCQkweDg0IC8qIENSVCBEaXNwbGF5IE9mZnNldCAmIFRlcm1pbmFsIENvdW50ICov Cj4gKyNkZWZpbmUgQ1JUX1RIUk9ECQkweDg4IC8qIENSVCBUaHJlc2hvbGQgKi8KPiArI2RlZmlu ZSBDUlRfWFNDQUxFCQkweDhDIC8qIENSVCBTY2FsaW5nLVVwIEZhY3RvciAqLwo+ICsjZGVmaW5l IENSVF9DVVJTT1IwCQkweDkwIC8qIENSVCBIYXJkd2FyZSBDdXJzb3IgWCAmIFkgT2Zmc2V0ICov Cj4gKyNkZWZpbmUgQ1JUX0NVUlNPUjEJCTB4OTQgLyogQ1JUIEhhcmR3YXJlIEN1cnNvciBYICYg WSBQb3NpdGlvbiAqLwo+ICsjZGVmaW5lIENSVF9DVVJTT1IyCQkweDk4IC8qIENSVCBIYXJkd2Fy ZSBDdXJzb3IgUGF0dGVybiBBZGRyZXNzICovCj4gKyNkZWZpbmUgQ1JUXzlDCQkJMHg5Qwo+ICsj ZGVmaW5lIENSVF9PU0RfSAkJMHhBMCAvKiBDUlQgT1NEIEhvcml6b250YWwgU3RhcnQvRW5kICov Cj4gKyNkZWZpbmUgQ1JUX09TRF9WCQkweEE0IC8qIENSVCBPU0QgVmVydGljYWwgU3RhcnQvRW5k ICovCj4gKyNkZWZpbmUgQ1JUX09TRF9BRERSCQkweEE4IC8qIENSVCBPU0QgUGF0dGVybiBBZGRy ZXNzICovCj4gKyNkZWZpbmUgQ1JUX09TRF9ESVNQCQkweEFDIC8qIENSVCBPU0QgT2Zmc2V0ICov Cj4gKyNkZWZpbmUgQ1JUX09TRF9USFJFU0gJCTB4QjAgLyogQ1JUIE9TRCBUaHJlc2hvbGQgJiBB bHBoYSAqLwo+ICsjZGVmaW5lIENSVF9CNAkJCTB4QjQKPiArI2RlZmluZSBDUlRfU1RTX1YJCTB4 QjggLyogQ1JUIFN0YXR1cyBWICovCj4gKyNkZWZpbmUgQ1JUX1NDUkFUQ0gJCTB4QkMgLyogU2Ny YXRjaHBhZCAqLwo+ICsjZGVmaW5lIENSVF9CQjBfQUREUgkJMHhEMCAvKiBDUlQgRGlzcGxheSBC QjAgU3RhcnRpbmcgQWRkcmVzcyAqLwo+ICsjZGVmaW5lIENSVF9CQjFfQUREUgkJMHhENCAvKiBD UlQgRGlzcGxheSBCQjEgU3RhcnRpbmcgQWRkcmVzcyAqLwo+ICsjZGVmaW5lIENSVF9CQl9DT1VO VAkJMHhEOCAvKiBDUlQgRGlzcGxheSBCQiBUZXJtaW5hbCBDb3VudCAqLwo+ICsjZGVmaW5lIE9T RF9DT0xPUjEJCTB4RTAgLyogT1NEIENvbG9yIFBhbGV0dGUgSW5kZXggMSAmIDAgKi8KPiArI2Rl ZmluZSBPU0RfQ09MT1IyCQkweEU0IC8qIE9TRCBDb2xvciBQYWxldHRlIEluZGV4IDMgJiAyICov Cj4gKyNkZWZpbmUgT1NEX0NPTE9SMwkJMHhFOCAvKiBPU0QgQ29sb3IgUGFsZXR0ZSBJbmRleCA1 ICYgNCAqLwo+ICsjZGVmaW5lIE9TRF9DT0xPUjQJCTB4RUMgLyogT1NEIENvbG9yIFBhbGV0dGUg SW5kZXggNyAmIDYgKi8KPiArI2RlZmluZSBPU0RfQ09MT1I1CQkweEYwIC8qIE9TRCBDb2xvciBQ YWxldHRlIEluZGV4IDkgJiA4ICovCj4gKyNkZWZpbmUgT1NEX0NPTE9SNgkJMHhGNCAvKiBPU0Qg Q29sb3IgUGFsZXR0ZSBJbmRleCAxMSAmIDEwICovCj4gKyNkZWZpbmUgT1NEX0NPTE9SNwkJMHhG OCAvKiBPU0QgQ29sb3IgUGFsZXR0ZSBJbmRleCAxMyAmIDEyICovCj4gKyNkZWZpbmUgT1NEX0NP TE9SOAkJMHhGQyAvKiBPU0QgQ29sb3IgUGFsZXR0ZSBJbmRleCAxNSAmIDE0ICovCj4gKwo+ICsv KiBDVFJMMSAqLwo+ICsjZGVmaW5lIENSVF9DVFJMX0VOCQkJQklUKDApCj4gKyNkZWZpbmUgQ1JU X0NUUkxfSFdfQ1VSU09SX0VOCQlCSVQoMSkKPiArI2RlZmluZSBDUlRfQ1RSTF9PU0RfRU4JCQlC SVQoMikKPiArI2RlZmluZSBDUlRfQ1RSTF9JTlRFUkxBQ0VECQlCSVQoMykKPiArI2RlZmluZSBD UlRfQ1RSTF9DT0xPUl9SR0I1NjUJCSgwIDw8IDcpCj4gKyNkZWZpbmUgQ1JUX0NUUkxfQ09MT1Jf WVVWNDQ0CQkoMSA8PCA3KQo+ICsjZGVmaW5lIENSVF9DVFJMX0NPTE9SX1hSR0I4ODg4CQkoMiA8 PCA3KQo+ICsjZGVmaW5lIENSVF9DVFJMX0NPTE9SX1JHQjg4OAkJKDMgPDwgNykKPiArI2RlZmlu ZSBDUlRfQ1RSTF9DT0xPUl9ZVVY0NDRfMlJHQgkoNSA8PCA3KQo+ICsjZGVmaW5lIENSVF9DVFJM X0NPTE9SX1lVVjQyMgkJKDcgPDwgNykKPiArI2RlZmluZSBDUlRfQ1RSTF9DT0xPUl9NQVNLCQlH RU5NQVNLKDksIDcpCj4gKyNkZWZpbmUgQ1JUX0NUUkxfSFNZTkNfTkVHQVRJVkUJCUJJVCgxNikK PiArI2RlZmluZSBDUlRfQ1RSTF9WU1lOQ19ORUdBVElWRQkJQklUKDE3KQo+ICsjZGVmaW5lIENS VF9DVFJMX1ZFUlRJQ0FMX0lOVFJfRU4JQklUKDMwKQo+ICsjZGVmaW5lIENSVF9DVFJMX1ZFUlRJ Q0FMX0lOVFJfU1RTCUJJVCgzMSkKPiArCj4gKy8qIENUUkwyICovCj4gKyNkZWZpbmUgQ1JUX0NU UkxfREFDX0VOCQkJQklUKDApCj4gKyNkZWZpbmUgQ1JUX0NUUkxfVkJMQU5LX0xJTkUoeCkJCSgo KHgpIDw8IDIwKSAmIENSVF9DVFJMX1ZCTEFOS19MSU5FX01BU0spCj4gKyNkZWZpbmUgQ1JUX0NU UkxfVkJMQU5LX0xJTkVfTUFTSwlHRU5NQVNLKDIwLCAzMSkKPiArCj4gKy8qIENSVF9IT1JJWjAg Ki8KPiArI2RlZmluZSBDUlRfSF9UT1RBTCh4KQkJCSh4KQo+ICsjZGVmaW5lIENSVF9IX0RFKHgp CQkJKCh4KSA8PCAxNikKPiArCj4gKy8qIENSVF9IT1JJWjEgKi8KPiArI2RlZmluZSBDUlRfSF9S U19TVEFSVCh4KQkJKHgpCj4gKyNkZWZpbmUgQ1JUX0hfUlNfRU5EKHgpCQkJKCh4KSA8PCAxNikK PiArCj4gKy8qIENSVF9WSVJUMCAqLwo+ICsjZGVmaW5lIENSVF9WX1RPVEFMKHgpCQkJKHgpCj4g KyNkZWZpbmUgQ1JUX1ZfREUoeCkJCQkoKHgpIDw8IDE2KQo+ICsKPiArLyogQ1JUX1ZJUlQxICov Cj4gKyNkZWZpbmUgQ1JUX1ZfUlNfU1RBUlQoeCkJCSh4KQo+ICsjZGVmaW5lIENSVF9WX1JTX0VO RCh4KQkJCSgoeCkgPDwgMTYpCj4gKwo+ICsvKiBDUlRfT0ZGU0VUICovCj4gKyNkZWZpbmUgQ1JU X0RJU1BfT0ZGU0VUKHgpCQkoeCkKPiArI2RlZmluZSBDUlRfVEVSTV9DT1VOVCh4KQkJKCh4KSA8 PCAxNikKPiArCj4gKy8qIENSVF9USFJPRCAqLwo+ICsjZGVmaW5lIENSVF9USFJPRF9MT1coeCkJ CSh4KQo+ICsjZGVmaW5lIENSVF9USFJPRF9ISUdIKHgpCQkoKHgpIDw8IDgpCj4gKwo+ICsvKiBE ZWZhdWx0IFRocmVzaG9sZCBTZXRpbmcgKi8KPiArI2RlZmluZSBHNV9DUlRfVEhST0RfVkFMCShD UlRfVEhST0RfTE9XKDB4MjQpIHwgQ1JUX1RIUk9EX0hJR0goMHgzQykpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVkX2dmeF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9k cm0vYXNwZWVkL2FzcGVlZF9nZnhfY3J0Yy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmUyZDFkNzQ5NzM1Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYXNwZWVkL2FzcGVlZF9nZnhfY3J0Yy5jCj4gQEAgLTAsMCArMSwyNDggQEAK PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gKy8vIENvcHlyaWdodCAy MDE4IElCTSBDb3Jwb3JhdGlvbgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5j bHVkZSA8bGludXgvcmVzZXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsKPiAr I2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICsKPiArI2luY2x1ZGUgImFzcGVlZF9n ZnguaCIKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXNwZWVkX2dmeCAqCj4gK2RybV9waXBlX3RvX2Fz cGVlZF9nZngoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQo+ICt7Cj4gKwly ZXR1cm4gY29udGFpbmVyX29mKHBpcGUsIHN0cnVjdCBhc3BlZWRfZ2Z4LCBwaXBlKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBhc3BlZWRfZ2Z4X3NldF9waXhlbF9mbXQoc3RydWN0IGFzcGVlZF9n ZnggKnByaXYsIHUzMiAqYnBwKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcHJp di0+cGlwZS5jcnRjOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNydGMtPmRldjsKPiAr CWNvbnN0IHUzMiBmb3JtYXQgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmZvcm1hdC0+Zm9y bWF0Owo+ICsJdTMyIGN0cmwxOwo+ICsKPiArCWN0cmwxID0gcmVhZGwocHJpdi0+YmFzZSArIENS VF9DVFJMMSk7Cj4gKwljdHJsMSAmPSB+Q1JUX0NUUkxfQ09MT1JfTUFTSzsKPiArCj4gKwlzd2l0 Y2ggKGZvcm1hdCkgewo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiArCQlkZXZfZGJnKGRy bS0+ZGV2LCAiU2V0dGluZyB1cCBSR0I1NjUgbW9kZVxuIik7Cj4gKwkJY3RybDEgfD0gQ1JUX0NU UkxfQ09MT1JfUkdCNTY1Owo+ICsJCSpicHAgPSAxNjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJN X0ZPUk1BVF9YUkdCODg4ODoKPiArCQlkZXZfZGJnKGRybS0+ZGV2LCAiU2V0dGluZyB1cCBYUkdC ODg4OCBtb2RlXG4iKTsKPiArCQljdHJsMSB8PSBDUlRfQ1RSTF9DT0xPUl9YUkdCODg4ODsKPiAr CQkqYnBwID0gMzI7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRldl9lcnIoZHJtLT5k ZXYsICJVbmhhbmRsZWQgcGl4ZWwgZm9ybWF0ICUwOHhcbiIsIGZvcm1hdCk7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJd3JpdGVsKGN0cmwxLCBwcml2LT5iYXNlICsgQ1JUX0NU UkwxKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXNwZWVkX2dm eF9lbmFibGVfY29udHJvbGxlcihzdHJ1Y3QgYXNwZWVkX2dmeCAqcHJpdikKPiArewo+ICsJdTMy IGN0cmwxID0gcmVhZGwocHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4gKwl1MzIgY3RybDIgPSBy ZWFkbChwcml2LT5iYXNlICsgQ1JUX0NUUkwyKTsKPiArCj4gKwkvKiBTQ1UyQzogc2V0IERBQyBz b3VyY2UgZm9yIGRpc3BsYXkgb3V0cHV0IHRvIEdyYXBoaWNzIENSVCAoR0ZYKSAqLwo+ICsJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPnNjdSwgMHgyYywgQklUKDE2KSwgQklUKDE2KSk7Cj4gKwo+ ICsJd3JpdGVsKGN0cmwxIHwgQ1JUX0NUUkxfRU4sIHByaXYtPmJhc2UgKyBDUlRfQ1RSTDEpOwo+ ICsJd3JpdGVsKGN0cmwyIHwgQ1JUX0NUUkxfREFDX0VOLCBwcml2LT5iYXNlICsgQ1JUX0NUUkwy KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXNwZWVkX2dmeF9kaXNhYmxlX2NvbnRyb2xsZXIo c3RydWN0IGFzcGVlZF9nZnggKnByaXYpCj4gK3sKPiArCXUzMiBjdHJsMSA9IHJlYWRsKHByaXYt PmJhc2UgKyBDUlRfQ1RSTDEpOwo+ICsJdTMyIGN0cmwyID0gcmVhZGwocHJpdi0+YmFzZSArIENS VF9DVFJMMik7Cj4gKwo+ICsJd3JpdGVsKGN0cmwxICYgfkNSVF9DVFJMX0VOLCBwcml2LT5iYXNl ICsgQ1JUX0NUUkwxKTsKPiArCXdyaXRlbChjdHJsMiAmIH5DUlRfQ1RSTF9EQUNfRU4sIHByaXYt PmJhc2UgKyBDUlRfQ1RSTDIpOwo+ICsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5zY3Us IDB4MmMsIEJJVCgxNiksIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhc3BlZWRfZ2Z4X2Ny dGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgYXNwZWVkX2dmeCAqcHJpdikKPiArewo+ICsJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm0gPSAmcHJpdi0+cGlwZS5jcnRjLnN0YXRlLT5hZGp1c3RlZF9t b2RlOwo+ICsJdTMyIGN0cmwxLCBkX29mZnNldCwgdF9jb3VudCwgYnBwOwo+ICsJaW50IGVycjsK PiArCj4gKwllcnIgPSBhc3BlZWRfZ2Z4X3NldF9waXhlbF9mbXQocHJpdiwgJmJwcCk7Cj4gKwlp ZiAoZXJyKQo+ICsJCXJldHVybjsKPiArCj4gKyNpZiAwCj4gKwkvKiBUT0RPOiB3ZSBoYXZlIG9u bHkgYmVlbiBhYmxlIHRvIHRlc3Qgd2l0aCB0aGUgNDBNSHogVVNCIGNsb2NrLiBUaGUKPiArCSAq IGNsb2NrIGlzIGZpeGVkLCBzbyB3ZSBjYW5ub3QgYWRqdXN0IGl0IGhlcmUuICovCj4gKwljbGtf c2V0X3JhdGUocHJpdi0+cGl4ZWxfY2xrLCBtLT5jcnRjX2Nsb2NrICogMTAwMCk7Cj4gKyNlbmRp Zgo+ICsKPiArCWN0cmwxID0gcmVhZGwocHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4gKwljdHJs MSAmPSB+KENSVF9DVFJMX0lOVEVSTEFDRUQgfAo+ICsJCQlDUlRfQ1RSTF9IU1lOQ19ORUdBVElW RSB8Cj4gKwkJCUNSVF9DVFJMX1ZTWU5DX05FR0FUSVZFKTsKPiArCj4gKwlpZiAobS0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiArCQljdHJsMSB8PSBDUlRfQ1RSTF9JTlRFUkxB Q0VEOwo+ICsKPiArCWlmICghKG0tPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpKQo+ICsJ CWN0cmwxIHw9IENSVF9DVFJMX0hTWU5DX05FR0FUSVZFOwo+ICsKPiArCWlmICghKG0tPmZsYWdz ICYgRFJNX01PREVfRkxBR19QVlNZTkMpKQo+ICsJCWN0cmwxIHw9IENSVF9DVFJMX1ZTWU5DX05F R0FUSVZFOwo+ICsKPiArCXdyaXRlbChjdHJsMSwgcHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4g Kwo+ICsJLyogSG9yaXpvbnRhbCB0aW1pbmcgKi8KPiArCXdyaXRlbChDUlRfSF9UT1RBTChtLT5o dG90YWwgLSAxKSB8IENSVF9IX0RFKG0tPmhkaXNwbGF5IC0gMSksCj4gKwkJCXByaXYtPmJhc2Ug KyBDUlRfSE9SSVowKTsKPiArCXdyaXRlbChDUlRfSF9SU19TVEFSVChtLT5oc3luY19zdGFydCAt IDEpIHwgQ1JUX0hfUlNfRU5EKG0tPmhzeW5jX2VuZCksCj4gKwkJCXByaXYtPmJhc2UgKyBDUlRf SE9SSVoxKTsKPiArCj4gKwo+ICsJLyogVmVydGljYWwgdGltaW5nICovCj4gKwl3cml0ZWwoQ1JU X1ZfVE9UQUwobS0+dnRvdGFsIC0gMSkgfCBDUlRfVl9ERShtLT52ZGlzcGxheSAtIDEpLAo+ICsJ CQlwcml2LT5iYXNlICsgQ1JUX1ZFUlQwKTsKPiArCXdyaXRlbChDUlRfVl9SU19TVEFSVChtLT52 c3luY19zdGFydCkgfCBDUlRfVl9SU19FTkQobS0+dnN5bmNfZW5kKSwKPiArCQkJcHJpdi0+YmFz ZSArIENSVF9WRVJUMSk7Cj4gKwo+ICsJLyoKPiArCSAqIERpc3BsYXkgT2Zmc2V0OiBhZGRyZXNz IGRpZmZlcmVuY2UgYmV0d2VlbiBjb25zZWN1dGl2ZSBzY2FuIGxpbmVzCj4gKwkgKiBUZXJtaW5h bCBDb3VudDogbWVtb3J5IHNpemUgb2Ygb25lIHNjYW4gbGluZQo+ICsJICovCj4gKwlkX29mZnNl dCA9IG0tPmhkaXNwbGF5ICogYnBwIC8gODsKPiArCXRfY291bnQgPSAobS0+aGRpc3BsYXkgKiBi cHAgKyAxMjcpIC8gMTI4Owo+ICsJd3JpdGVsKENSVF9ESVNQX09GRlNFVChkX29mZnNldCkgfCBD UlRfVEVSTV9DT1VOVCh0X2NvdW50KSwKPiArCQkJcHJpdi0+YmFzZSArIENSVF9PRkZTRVQpOwo+ ICsKPiArCS8qCj4gKwkgKiBUaHJlc2hvbGQ6IEZJRk8gdGhyZXNob2xkcyBvZiByZWZpbGwgYW5k IHN0b3AgKDE2IGJ5dGUgY2h1bmtzCj4gKwkgKiBwZXIgbGluZSwgcm91bmRlZCB1cCkKPiArCSAq Lwo+ICsJd3JpdGVsKEc1X0NSVF9USFJPRF9WQUwsIHByaXYtPmJhc2UgKyBDUlRfVEhST0QpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhc3BlZWRfZ2Z4X3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiArCQkJICAgICAgc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGFzcGVlZF9nZnggKnByaXYgPSBkcm1fcGlwZV90b19h c3BlZWRfZ2Z4KHBpcGUpOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBpcGUtPmNydGM7 Cj4gKwo+ICsJYXNwZWVkX2dmeF9jcnRjX21vZGVfc2V0X25vZmIocHJpdik7Cj4gKwlhc3BlZWRf Z2Z4X2VuYWJsZV9jb250cm9sbGVyKHByaXYpOwo+ICsJZHJtX2NydGNfdmJsYW5rX29uKGNydGMp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhc3BlZWRfZ2Z4X3BpcGVfZGlzYWJsZShzdHJ1Y3Qg ZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4gK3sKPiArCXN0cnVjdCBhc3BlZWRfZ2Z4 ICpwcml2ID0gZHJtX3BpcGVfdG9fYXNwZWVkX2dmeChwaXBlKTsKPiArCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9ICZwaXBlLT5jcnRjOwo+ICsKPiArCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7 Cj4gKwlhc3BlZWRfZ2Z4X2Rpc2FibGVfY29udHJvbGxlcihwcml2KTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgYXNwZWVkX2dmeF9waXBlX3VwZGF0ZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5 X3BpcGUgKnBpcGUsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiArewo+ICsJc3RydWN0IGFzcGVlZF9nZnggKnByaXYgPSBkcm1fcGlwZV90b19hc3BlZWRf Z2Z4KHBpcGUpOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBpcGUtPmNydGM7Cj4gKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsKPiArCXN0 cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ICsJc3RydWN0IGRybV9nZW1f Y21hX29iamVjdCAqZ2VtOwo+ICsKPiArCWlmICghY3J0YykKPiArCQlyZXR1cm47Cj4gKwo+ICsJ c3Bpbl9sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiArCWV2ZW50ID0gY3J0Yy0+ c3RhdGUtPmV2ZW50Owo+ICsJaWYgKGV2ZW50KSB7Cj4gKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0g TlVMTDsKPiArCj4gKwkJaWYgKGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykgPT0gMCkKPiArCQkJ ZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChjcnRjLCBldmVudCk7Cj4gKwkJZWxzZQo+ICsJCQlk cm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBldmVudCk7Cj4gKwl9Cj4gKwlzcGluX3Vu bG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4gKwo+ICsJaWYgKCFmYikKPiArCQly ZXR1cm47Cj4gKwo+ICsJZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7Cj4gKwlp ZiAoIWdlbSkKPiArCQlyZXR1cm47Cj4gKwl3cml0ZWwoZ2VtLT5wYWRkciwgcHJpdi0+YmFzZSAr IENSVF9BRERSKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhc3BlZWRfZ2Z4X3BpcGVfcHJlcGFy ZV9mYihzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4gKwkJCQkgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gK3sKPiArCXJldHVybiBkcm1fZ2VtX2Zi X3ByZXBhcmVfZmIoJnBpcGUtPnBsYW5lLCBwbGFuZV9zdGF0ZSk7Cj4gK30KCmRybV9nZW1fZmJf c2ltcGxlX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiCgo+ICsKPiArc3RhdGljIGludCBhc3BlZWRf Z2Z4X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQo+ ICt7Cj4gKwlzdHJ1Y3QgYXNwZWVkX2dmeCAqcHJpdiA9IGRybV9waXBlX3RvX2FzcGVlZF9nZngo cGlwZSk7Cj4gKwl1MzIgcmVnID0gcmVhZGwocHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4gKwo+ ICsJLyogQ2xlYXIgcGVuZGluZyBWQkxBTksgSVJRICovCj4gKwl3cml0ZWwocmVnIHwgQ1JUX0NU UkxfVkVSVElDQUxfSU5UUl9TVFMsIHByaXYtPmJhc2UgKyBDUlRfQ1RSTDEpOwo+ICsKPiArCXJl ZyB8PSBDUlRfQ1RSTF9WRVJUSUNBTF9JTlRSX0VOOwo+ICsJd3JpdGVsKHJlZywgcHJpdi0+YmFz ZSArIENSVF9DVFJMMSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGFzcGVlZF9nZnhfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBl ICpwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3QgYXNwZWVkX2dmeCAqcHJpdiA9IGRybV9waXBlX3RvX2Fz cGVlZF9nZngocGlwZSk7Cj4gKwl1MzIgcmVnID0gcmVhZGwocHJpdi0+YmFzZSArIENSVF9DVFJM MSk7Cj4gKwo+ICsJcmVnICY9IH5DUlRfQ1RSTF9WRVJUSUNBTF9JTlRSX0VOOwo+ICsJd3JpdGVs KHJlZywgcHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4gKwo+ICsJLyogQ2xlYXIgcGVuZGluZyBW QkxBTksgSVJRICovCj4gKwl3cml0ZWwocmVnIHwgQ1JUX0NUUkxfVkVSVElDQUxfSU5UUl9TVFMs IHByaXYtPmJhc2UgKyBDUlRfQ1RSTDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGFzcGVlZF9nZnhfZnVuY3MgPSB7Cj4gKwkuZW5hYmxl CQk9IGFzcGVlZF9nZnhfcGlwZV9lbmFibGUsCj4gKwkuZGlzYWJsZQk9IGFzcGVlZF9nZnhfcGlw ZV9kaXNhYmxlLAo+ICsJLnVwZGF0ZQkJPSBhc3BlZWRfZ2Z4X3BpcGVfdXBkYXRlLAo+ICsJLnBy ZXBhcmVfZmIJPSBhc3BlZWRfZ2Z4X3BpcGVfcHJlcGFyZV9mYiwKPiArCS5lbmFibGVfdmJsYW5r CT0gYXNwZWVkX2dmeF9lbmFibGVfdmJsYW5rLAo+ICsJLmRpc2FibGVfdmJsYW5rCT0gYXNwZWVk X2dmeF9kaXNhYmxlX3ZibGFuaywKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1aW50MzJfdCBh c3BlZWRfZ2Z4X2Zvcm1hdHNbXSA9IHsKPiArCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwlEUk1f Rk9STUFUX1JHQjU2NSwKPiArfTsKPiArCj4gK2ludCBhc3BlZWRfZ2Z4X2NyZWF0ZV9waXBlKHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCXN0cnVjdCBhc3BlZWRfZ2Z4ICpwcml2ID0g ZHJtLT5kZXZfcHJpdmF0ZTsKPiArCj4gKwlyZXR1cm4gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVf aW5pdChkcm0sICZwcml2LT5waXBlLCAmYXNwZWVkX2dmeF9mdW5jcywKPiArCQkJCQkgICAgYXNw ZWVkX2dmeF9mb3JtYXRzLAo+ICsJCQkJCSAgICBBUlJBWV9TSVpFKGFzcGVlZF9nZnhfZm9ybWF0 cyksCj4gKwkJCQkJICAgIE5VTEwsCj4gKwkJCQkJICAgICZwcml2LT5jb25uZWN0b3IpOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVkX2dmeF9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVkX2dmeF9kcnYuYwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42Yjg4ZDY1OGFjMWYKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzcGVlZC9hc3BlZWRfZ2Z4X2Rydi5jCj4gQEAgLTAs MCArMSwyNjkgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gKy8v IENvcHlyaWdodCAyMDE4IElCTSBDb3Jwb3JhdGlvbgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9yZXNlcnZl ZF9tZW0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxw ZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dl bV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19o ZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4gKwo+ICsjaW5j bHVkZSAiYXNwZWVkX2dmeC5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogQVNQRUVEIEdGWCBEcml2 ZXIKPiArICoKPiArICogVGhpcyBkcml2ZXIgaXMgZm9yIHRoZSBBU1BFRUQgQk1DIFNvQydzIEdG WCBkaXNwbGF5IGhhcmR3YXJlLiBUaGlzCj4gKyAqIGRyaXZlciBydW5zIG9uIHRoZSBBUk0gYmFz ZWQgQk1DIHN5c3RlbXMsIHVubGlrZSB0aGUgYXN0IGRyaXZlciB3aGljaAo+ICsgKiBydW5zIG9u IGEgaG9zdCBDUFUgYW5kIGlzIGlzIGZvciBhIFBDSSBncmFwaGljcyBkZXZpY2UuCj4gKyAqCj4g KyAqIFRoZSBBU1QyNTAwIHN1cHBvcnRzIGEgdG90YWwgb2YgMyBvdXRwdXQgcGF0aHM6Cj4gKyAq Cj4gKyAqICAgMS4gVkdBIG91dHB1dCwgdGhlIG91dHB1dCB0YXJnZXQgY2FuIGNob29zZSBlaXRo ZXIgb3IgYm90aCB0byB0aGUgREFDCj4gKyAqICAgb3IgRFZPIGludGVyZmFjZS4KPiArICoKPiAr ICogICAyLiBHcmFwaGljcyBDUlQgb3V0cHV0LCB0aGUgb3V0cHV0IHRhcmdldCBjYW4gY2hvb3Nl IGVpdGhlciBvciBib3RoIHRvCj4gKyAqICAgdGhlIERBQyBvciBEVk8gaW50ZXJmYWNlLgo+ICsg Kgo+ICsgKiAgIDMuIFZpZGVvIGlucHV0IGZyb20gRFZPLCB0aGUgdmlkZW8gaW5wdXQgY2FuIGJl IHVzZWQgZm9yIHZpZGVvIGVuZ2luZQo+ICsgKiAgIGNhcHR1cmUgb3IgREFDIGRpc3BsYXkgb3V0 cHV0Lgo+ICsgKgo+ICsgKiBPdXRwdXQgb3B0aW9ucyBhcmUgc2VsZWN0ZWQgaW4gU0NVMkMuCj4g KyAqCj4gKyAqIFRoZSAiVkdBIG1vZGUiIGRldmljZSBpcyB0aGUgUENJIGF0dGFjaGVkIGNvbnRy b2xsZXIuIFRoZSAiR3JhcGhpY3MgQ1JUIgo+ICsgKiBpcyB0aGUgQVJNJ3MgaW50ZXJuYWwgZGlz cGxheSBjb250cm9sbGVyLgo+ICsgKgo+ICsgKiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgYSBz aW1wbGUgY29uZmlndXJhdGlvbiBjb25zaXN0aW5nIG9mIGEgNDBNSHoKPiArICogcGl4ZWwgY2xv Y2ssIGZpeGVkIGJ5IGhhcmR3YXJlIGxpbWl0YXRpb25zLCBhbmQgdGhlIFZHQSBvdXRwdXQgcGF0 aC4KPiArICovCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5j cyBhc3BlZWRfZ2Z4X21vZGVfY29uZmlnX2Z1bmNzID0gewo+ICsJLmZiX2NyZWF0ZQkJPSBkcm1f Z2VtX2ZiX2NyZWF0ZSwKPiArCS5hdG9taWNfY2hlY2sJCT0gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2ssCj4gKwkuYXRvbWljX2NvbW1pdAkJPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsCj4gK307 Cj4gKwo+ICtzdGF0aWMgdm9pZCBhc3BlZWRfZ2Z4X3NldHVwX21vZGVfY29uZmlnKHN0cnVjdCBk cm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCWRybV9tb2RlX2NvbmZpZ19pbml0KGRybSk7Cj4gKwo+ ICsJZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOwo+ICsJZHJtLT5tb2RlX2NvbmZpZy5t aW5faGVpZ2h0ID0gMDsKPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gODAwOwo+ICsJ ZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNjAwOwo+ICsJZHJtLT5tb2RlX2NvbmZpZy5m dW5jcyA9ICZhc3BlZWRfZ2Z4X21vZGVfY29uZmlnX2Z1bmNzOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aXJxcmV0dXJuX3QgYXNwZWVkX2dmeF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0YTsKPiArCXN0cnVjdCBhc3BlZWRf Z2Z4ICpwcml2ID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCXUzMiByZWc7Cj4gKwo+ICsJcmVnID0g cmVhZGwocHJpdi0+YmFzZSArIENSVF9DVFJMMSk7Cj4gKwo+ICsJaWYgKHJlZyAmIENSVF9DVFJM X1ZFUlRJQ0FMX0lOVFJfU1RTKSB7Cj4gKwkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmcHJpdi0+ cGlwZS5jcnRjKTsKPiArCQl3cml0ZWwocmVnLCBwcml2LT5iYXNlICsgQ1JUX0NUUkwxKTsKPiAr CQlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIElSUV9OT05FOwo+ICt9 Cj4gKwo+ICsKPiArCj4gK3N0YXRpYyBpbnQgYXNwZWVkX2dmeF9sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0pCj4gK3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZHJtLT5kZXYpOwo+ICsJc3RydWN0IGFzcGVlZF9nZnggKnByaXY7Cj4gKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCWludCByZXQ7Cj4gKwo+ICsJcHJpdiA9IGRldm1fa3ph bGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghcHJp dikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWRybS0+ZGV2X3ByaXZhdGUgPSBwcml2Owo+ICsK PiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7 Cj4gKwlwcml2LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRybS0+ZGV2LCByZXMpOwo+ ICsJaWYgKElTX0VSUihwcml2LT5iYXNlKSkKPiArCQlyZXR1cm4gUFRSX0VSUihwcml2LT5iYXNl KTsKPiArCj4gKwlwcml2LT5zY3UgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxl KCJhc3BlZWQsYXN0MjUwMC1zY3UiKTsKPiArCWlmIChJU19FUlIocHJpdi0+c2N1KSkgewo+ICsJ CWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBmaW5kIFNDVSByZWdtYXBcbiIpOwo+ICsJ CXJldHVybiBQVFJfRVJSKHByaXYtPnNjdSk7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gb2ZfcmVzZXJ2 ZWRfbWVtX2RldmljZV9pbml0KGRybS0+ZGV2KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJy KCZwZGV2LT5kZXYsCj4gKwkJCSJmYWlsZWQgdG8gaW5pdGlhbGl6ZSByZXNlcnZlZCBtZW06ICVk XG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZG1hX3NldF9t YXNrX2FuZF9jb2hlcmVudChkcm0tPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gKwlpZiAocmV0 KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRc biIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlwcml2LT5yc3QgPSBkZXZt X3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZSgmcGRldi0+ZGV2LCBOVUxMKTsKPiArCWlmIChJ U19FUlIocHJpdi0+cnN0KSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwKPiArCQkJIm1pc3Np bmcgb3IgaW52YWxpZCByZXNldCBjb250cm9sbGVyIGRldmljZSB0cmVlIGVudHJ5Iik7Cj4gKwkJ cmV0dXJuIFBUUl9FUlIocHJpdi0+cnN0KTsKPiArCX0KPiArCXJlc2V0X2NvbnRyb2xfZGVhc3Nl cnQocHJpdi0+cnN0KTsKPiArCj4gKwlwcml2LT5jbGsgPSBkZXZtX2Nsa19nZXQoZHJtLT5kZXYs IE5VTEwpOwo+ICsJaWYgKElTX0VSUihwcml2LT5jbGspKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LAo+ICsJCQkibWlzc2luZyBvciBpbnZhbGlkIGNsayBkZXZpY2UgdHJlZSBlbnRyeSIpOwo+ ICsJCXJldHVybiBQVFJfRVJSKHByaXYtPmNsayk7Cj4gKwl9Cj4gKwljbGtfcHJlcGFyZV9lbmFi bGUocHJpdi0+Y2xrKTsKPiArCj4gKwkvKiBTYW5pdGl6ZSBjb250cm9sIHJlZ2lzdGVycyAqLwo+ ICsJd3JpdGVsKDAsIHByaXYtPmJhc2UgKyBDUlRfQ1RSTDEpOwo+ICsJd3JpdGVsKDAsIHByaXYt PmJhc2UgKyBDUlRfQ1RSTDIpOwo+ICsKPiArCWFzcGVlZF9nZnhfc2V0dXBfbW9kZV9jb25maWco ZHJtKTsKPiArCj4gKwlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZHJtLCAxKTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJZGV2X2Vycihkcm0tPmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXNlIHZibGFu a1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBhc3BlZWRfZ2Z4X2Ny ZWF0ZV9vdXRwdXQoZHJtKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2Vycihkcm0tPmRl diwgIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0c1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwlyZXQgPSBhc3BlZWRfZ2Z4X2NyZWF0ZV9waXBlKGRybSk7Cj4gKwlpZiAocmV0IDwg MCkgewo+ICsJCWRldl9lcnIoZHJtLT5kZXYsICJDYW5ub3Qgc2V0dXAgc2ltcGxlIGRpc3BsYXkg cGlwZVxuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBkZXZtX3JlcXVl c3RfaXJxKGRybS0+ZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApLAo+ICsJCQkgICAgICAg YXNwZWVkX2dmeF9pcnFfaGFuZGxlciwgMCwgImFzcGVlZCBnZngiLCBkcm0pOwo+ICsJaWYgKHJl dCA8IDApIHsKPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiRmFpbGVkIHRvIGluc3RhbGwgSVJRIGhh bmRsZXJcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVfY29uZmln X3Jlc2V0KGRybSk7Cj4gKwo+ICsJZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoZHJtLCAzMik7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGFzcGVlZF9nZnhfdW5sb2Fk KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCWRybV9rbXNfaGVscGVyX3BvbGxfZmlu aShkcm0pOwo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiArCj4gKwlkcm0tPmRl dl9wcml2YXRlID0gTlVMTDsKPiArfQo+ICsKPiArREVGSU5FX0RSTV9HRU1fQ01BX0ZPUFMoZm9w cyk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgYXNwZWVkX2dmeF9kcml2ZXIgPSB7 Cj4gKwkuZHJpdmVyX2ZlYXR1cmVzICAgICAgICA9IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNF VCB8Cj4gKwkJCQlEUklWRVJfUFJJTUUgfCBEUklWRVJfQVRPTUlDIHwKPiArCQkJCURSSVZFUl9I QVZFX0lSUSwKPiArCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQgPSBkcm1fZ2VtX2NtYV9mcmVl X29iamVjdCwKPiArCS5nZW1fdm1fb3BzICAgICAgICAgICAgID0gJmRybV9nZW1fY21hX3ZtX29w cywKPiArCS5kdW1iX2NyZWF0ZSAgICAgICAgICAgID0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUs Cj4gKwkucHJpbWVfaGFuZGxlX3RvX2ZkICAgICA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2Zk LAo+ICsJLnByaW1lX2ZkX3RvX2hhbmRsZSAgICAgPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRs ZSwKPiArCS5nZW1fcHJpbWVfZXhwb3J0ICAgICAgID0gZHJtX2dlbV9wcmltZV9leHBvcnQsCj4g KwkuZ2VtX3ByaW1lX2ltcG9ydCAgICAgICA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAo+ICsJLmdl bV9wcmltZV9nZXRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCj4g KwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9z Z190YWJsZSwKPiArCS5nZW1fcHJpbWVfdm1hcCAgICAgICAgID0gZHJtX2dlbV9jbWFfcHJpbWVf dm1hcCwKPiArCS5nZW1fcHJpbWVfdnVubWFwICAgICAgID0gZHJtX2dlbV9jbWFfcHJpbWVfdnVu bWFwLAo+ICsJLmdlbV9wcmltZV9tbWFwICAgICAgICAgPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFw LAo+ICsJLmZvcHMgPSAmZm9wcywKPiArCS5uYW1lID0gImFzcGVlZC1nZngtZHJtIiwKPiArCS5k ZXNjID0gIkFTUEVFRCBHRlggRFJNIiwKPiArCS5kYXRlID0gIjIwMTgwMzE5IiwKPiArCS5tYWpv ciA9IDEsCj4gKwkubWlub3IgPSAwLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgYXNwZWVkX2dmeF9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJh c3BlZWQsYXN0MjQwMC1nZngiIH0sCj4gKwl7IC5jb21wYXRpYmxlID0gImFzcGVlZCxhc3QyNTAw LWdmeCIgfSwKPiArCXsgfQo+ICt9Owo+ICsKPiArc3RhdGljIGludCBhc3BlZWRfZ2Z4X3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkcm07Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRybSA9IGRybV9kZXZfYWxsb2MoJmFzcGVlZF9n ZnhfZHJpdmVyLCAmcGRldi0+ZGV2KTsKPiArCWlmIChJU19FUlIoZHJtKSkKPiArCQlyZXR1cm4g UFRSX0VSUihkcm0pOwo+ICsKPiArCXJldCA9IGFzcGVlZF9nZnhfbG9hZChkcm0pOwo+ICsJaWYg KHJldCkKPiArCQlnb3RvIGVycl9mcmVlOwo+ICsKPiArCXJldCA9IGRybV9kZXZfcmVnaXN0ZXIo ZHJtLCAwKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJfdW5sb2FkOwo+ICsKPiArCXJldHVy biAwOwo+ICsKPiArZXJyX3VubG9hZDoKPiArCWFzcGVlZF9nZnhfdW5sb2FkKGRybSk7Cj4gK2Vy cl9mcmVlOgo+ICsJZHJtX2Rldl9wdXQoZHJtKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGFzcGVlZF9nZnhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwZGV2KTsKPiArCj4gKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsKPiArCWFzcGVlZF9n ZnhfdW5sb2FkKGRybSk7Cj4gKwlkcm1fZGV2X3B1dChkcm0pOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhc3BlZWRfZ2Z4X3BsYXRm b3JtX2RyaXZlciA9IHsKPiArCS5wcm9iZQkJPSBhc3BlZWRfZ2Z4X3Byb2JlLAo+ICsJLnJlbW92 ZQkJPSBhc3BlZWRfZ2Z4X3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAiYXNw ZWVkX2dmeCIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gYXNwZWVkX2dmeF9tYXRjaCwKPiArCX0s Cj4gK307Cj4gKwo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzcGVlZF9nZnhfcGxhdGZvcm1f ZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIkpvZWwgU3RhbmxleSA8am9lbEBqbXMuaWQu YXU+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiQVNQRUVEIEJNQyBEUk0vS01TIGRyaXZlciIp Owo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hc3BlZWQvYXNwZWVkX2dmeF9vdXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3BlZWQvYXNwZWVk X2dmeF9vdXQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43 ZDIwNTdlMDAwNTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzcGVl ZC9hc3BlZWRfZ2Z4X291dC5jCj4gQEAgLTAsMCArMSw0OSBAQAo+ICsvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCsKPiArLy8gQ29weXJpZ2h0IDIwMTggSUJNIENvcnBvcmF0aW9u Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVy Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiYXNwZWVkX2dmeC5oIgo+ICsKPiArc3RhdGljIGludCBhc3Bl ZWRfZ2Z4X2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4g KwlyZXR1cm4gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCA4MDAsIDYwMCk7CgpJcyB0 aGlzIHRoZSBvbmx5IG1vZGUgeW91IGRvLCBvciBqdXN0IGEgZGVmYXVsdD8gSWlyYyBpZiB5b3Ug cmVwb3J0CiJjb25uZWN0ZWQiLCB5b3UnbGwgZ2V0IHRoaXMgYXMgb25lIG9mIHRoZSBmYWxsYmFj ayBtb2RlcyBhbHJlYWR5LgoKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdAo+ICtkcm1f Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyBhc3BlZWRfZ2Z4X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mg PSB7Cj4gKwkuZ2V0X21vZGVzID0gYXNwZWVkX2dmeF9nZXRfbW9kZXMsCj4gK307Cj4gKwo+ICtz dGF0aWMgdm9pZCBhc3BlZWRfZ2Z4X2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0 b3IpOwoKT25seSBuZWVkZWQgZm9yIGhvdHVucGx1Z2dlZCBjb25uZWN0b3JzLCBkcm1fZGV2X3Vu cmVnaXN0ZXIgdGFrZXMgY2FyZSBvZgp0aGlzIGZvciB5b3UgYWxyZWFkeS4KCj4gKwlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFzcGVlZF9nZnhfY29ubmVjdG9yX2Z1bmNzID0gewo+ICsJ LmZpbGxfbW9kZXMJCT0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ ICsJLmRlc3Ryb3kJCT0gYXNwZWVkX2dmeF9jb25uZWN0b3JfZGVzdHJveSwKPiArCS5yZXNldAkJ CT0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ICsJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ ICsJLmF0b21pY19kZXN0cm95X3N0YXRlCT0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rl c3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtpbnQgYXNwZWVkX2dmeF9jcmVhdGVfb3V0cHV0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCXN0cnVjdCBhc3BlZWRfZ2Z4ICpwcml2ID0g ZHJtLT5kZXZfcHJpdmF0ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcHJpdi0+Y29ubmVjdG9yLmRw bXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKPiArCXByaXYtPmNvbm5lY3Rvci5wb2xsZWQgPSAwOwo+ ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZwcml2LT5jb25uZWN0b3IsCj4gKwkJCQkgJmFz cGVlZF9nZnhfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1fY29ubmVjdG9y X2luaXQoZHJtLCAmcHJpdi0+Y29ubmVjdG9yLAo+ICsJCQkJICZhc3BlZWRfZ2Z4X2Nvbm5lY3Rv cl9mdW5jcywKPiArCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVW5rbm93bik7Cj4gKwlyZXR1cm4g cmV0Owo+ICt9Cj4gLS0gCj4gMi4yMC4xCgpWZXJ5IG5pY2UgZHJpdmVyIQoKQWNrZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpGb3IgbWVyZ2luZy9tYWludGVu YW5jZSwgZG8geW91IHdhbnQgdG8gcHV0IHRoaXMgaW50byBkcm0tbWlzYz8KCmh0dHBzOi8vZHJt LnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9tYWludGFpbmVyLXRvb2xzL2NvbW1pdHRlci1kcm0tbWlz Yy5odG1sI3NtYWxsLWRyaXZlcnMKCldlIGNvdWxkIGFsc28gb2ZmaWNpYWxseSBwdXQgZHJtL2Fz dCBpbiB0aGVyZSwgaWYgeW91IHdhbnQgdG8gbWFpbnRhaW4KdGhhdCB0b28uCgpFaXRoZXIgd2F5 LCBwYXRjaCBhbHNvIG5lZWRzIGEgTUFJTlRBSU5FUlMgZW50cnkuCi1EYW5pZWwKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==