From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomi Valkeinen Subject: Re: [PATCH v2 3/3] drm/omap: Make omapdss API more generic Date: Thu, 4 Jan 2018 13:17:26 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fllnx210.ext.ti.com (fllnx210.ext.ti.com [198.47.19.17]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F1AF6E0EE for ; Thu, 4 Jan 2018 11:17:32 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha , dri-devel@lists.freedesktop.org Cc: peter.ujfalusi@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiAwMS8wMS8xOCAxMzo1NSwgSnlyaSBTYXJoYSB3cm90ZToKPiBUaGUgbmV3IG9tYXBk c3MgQVBJIGlzIEhXIGluZGVwZW5kZW50IGFuZCBjbGVhbnMgdXAgc29tZSBvZiB0aGUgRFNTNQo+ IHNwZWNpZmljIGhhY2tzIGZyb20gdGhlIG9tYXBkcm0gc2lkZSBhbmQgZ2V0cyByaWQgb2ZmIHRo ZSBEU1M1IElSUQo+IHJlZ2lzdGVyIGJpdHMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIEhXIGluZGVw ZW5kZW50IGdlbmVyaWMgdTY0IGJhc2VkCj4gbWFjcm9zLiBUaGlzIG5ldyBtYWNyb3MgbWFrZSBp dCBtb3JlIHN0cmFpZ2h0IGZvcndhcmQgdG8gaW1wbGVtZW50IHRoZQo+IElSUSBjb2RlIGZvciB0 aGUgZnV0dXJlIERTUyB2ZXJzaW9ucyB0aGF0IGRvIG5vdCBzaGFyZSB0aGUgc2FtZQo+IHJlZ2lz dGVyIHN0cnVjdHVyZSBhcyBEU1MyIHRvIERTUzUgaGFzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEp5 cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJt L2Rzcy9kaXNwYy5jICAgfCAxNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvZGlzcGMuaCAgIHwgIDMzICsrKysrKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9vbWFwZHNzLmggfCAgNjQgKysrKysrKy0tLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY3J0Yy5jICAgfCAgMTYgKystLQo+ ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuaCAgIHwgICAyICstCj4gIGRyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmggICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vb21hcF9pcnEuYyAgICB8IDEzNiArKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfaXJxLmggICAgfCAgIDIgKy0K PiAgZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jICB8ICAgNyArKwo+ICBkcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX3BsYW5lLmggIHwgICAxICsKPiAgMTAgZmlsZXMgY2hh bmdlZCwgMjY3IGluc2VydGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmMgYi9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9kc3MvZGlzcGMuYwo+IGluZGV4IDA3MDA1M2YuLmE4MGViZTEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9kc3MvZGlzcGMuYwo+IEBAIC02OTgsMjcgKzY5OCwxMiBAQCBzdGF0aWMg Y29uc3QgY2hhciAqZGlzcGNfZ2V0X21ncl9uYW1lKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwp Cj4gIAlyZXR1cm4gbWdyX2Rlc2NbY2hhbm5lbF0ubmFtZTsKPiAgfQo+ICAKPiAtc3RhdGljIHUz MiBkaXNwY19tZ3JfZ2V0X3ZzeW5jX2lycShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKQo+IC17 Cj4gLQlyZXR1cm4gbWdyX2Rlc2NbY2hhbm5lbF0udnN5bmNfaXJxOwo+IC19Cj4gLQo+IC1zdGF0 aWMgdTMyIGRpc3BjX21ncl9nZXRfZnJhbWVkb25lX2lycShlbnVtIG9tYXBfY2hhbm5lbCBjaGFu bmVsKQo+ICtzdGF0aWMgYm9vbCBkaXNwY19tZ3JfaGFzX2ZyYW1lZG9uZShlbnVtIG9tYXBfY2hh bm5lbCBjaGFubmVsKQo+ICB7Cj4gIAlpZiAoY2hhbm5lbCA9PSBPTUFQX0RTU19DSEFOTkVMX0RJ R0lUICYmIGRpc3BjLmZlYXQtPm5vX2ZyYW1lZG9uZV90dikKPiAtCQlyZXR1cm4gMDsKPiAtCj4g LQlyZXR1cm4gbWdyX2Rlc2NbY2hhbm5lbF0uZnJhbWVkb25lX2lycTsKPiAtfQo+IC0KPiAtc3Rh dGljIHUzMiBkaXNwY19tZ3JfZ2V0X3N5bmNfbG9zdF9pcnEoZW51bSBvbWFwX2NoYW5uZWwgY2hh bm5lbCkKPiAtewo+IC0JcmV0dXJuIG1ncl9kZXNjW2NoYW5uZWxdLnN5bmNfbG9zdF9pcnE7Cj4g LX0KPiArCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC11MzIgZGlzcGNfd2JfZ2V0X2ZyYW1lZG9uZV9p cnEodm9pZCkKPiAtewo+IC0JcmV0dXJuIERJU1BDX0lSUV9GUkFNRURPTkVXQjsKPiArCXJldHVy biB0cnVlOwo+ICB9CgpZb3UgY2FuIGp1c3QgZG8KCnJldHVybiBjaGFubmVsICE9IE9NQVBfRFNT X0NIQU5ORUxfRElHSVQgfHwgIWRpc3BjLmZlYXQtPm5vX2ZyYW1lZG9uZV90djsKCj4gIAo+ICBz dGF0aWMgdm9pZCBkaXNwY19tZ3JfZW5hYmxlKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwsIGJv b2wgZW5hYmxlKQo+IEBAIC0zNjA0LDYgKzM1ODksMTIxIEBAIHN0YXRpYyB2b2lkIGRpc3BjX3dy aXRlX2lycWVuYWJsZSh1MzIgbWFzaykKPiAgCWRpc3BjX3JlYWRfcmVnKERJU1BDX0lSUUVOQUJM RSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1NjQgZGlzcGNfaHdfdG9fYXBpX2lycSh1MzIgaHcpCj4g K3sKPiArCXU2NCBhcGkgPSAwOwo+ICsKPiArCWlmIChodyAmIERJU1BDX0lSUV9PQ1BfRVJSKQo+ ICsJCWFwaSB8PSBEU1NfSVJRX0RFVklDRV9PQ1BfRVJSOwo+ICsKPiArCWlmIChodyAmIERJU1BD X0lSUV9GUkFNRURPTkUpCj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMCk7Cj4g KwlpZiAoaHcgJiBESVNQQ19JUlFfVlNZTkMpCj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX1ZTWU5D X0VWRU4oMCk7Cj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfU1lOQ19MT1NUKQo+ICsJCWFwaSB8PSBE U1NfSVJRX01HUl9TWU5DX0xPU1QoMCk7Cj4gKwo+ICsJaWYgKGh3ICYgRElTUENfSVJRX0VWU1lO Q19FVkVOKQo+ICsJCWFwaSB8PSBEU1NfSVJRX01HUl9WU1lOQ19FVkVOKDEpOwo+ICsJaWYgKGh3 ICYgRElTUENfSVJRX0VWU1lOQ19PREQpCj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX1ZTWU5DX09E RCgxKTsKPiArCWlmIChodyAmIERJU1BDX0lSUV9TWU5DX0xPU1RfRElHSVQpCj4gKwkJYXBpIHw9 IERTU19JUlFfTUdSX1NZTkNfTE9TVCgxKTsKPiArCWlmIChodyAmIERJU1BDX0lSUV9GUkFNRURP TkVUVikKPiArCQlhcGkgfD0gRFNTX0lSUV9NR1JfRlJBTUVfRE9ORSgxKTsKPiArCj4gKwlpZiAo aHcgJiBESVNQQ19JUlFfU1lOQ19MT1NUMikKPiArCQlhcGkgfD0gRFNTX0lSUV9NR1JfU1lOQ19M T1NUKDIpOwo+ICsJaWYgKGh3ICYgRElTUENfSVJRX1ZTWU5DMikKPiArCQlhcGkgfD0gRFNTX0lS UV9NR1JfVlNZTkNfRVZFTigyKTsKPiArCWlmIChodyAmIERJU1BDX0lSUV9GUkFNRURPTkUyKQo+ ICsJCWFwaSB8PSBEU1NfSVJRX01HUl9GUkFNRV9ET05FKDIpOwo+ICsKPiArCWlmIChodyAmIERJ U1BDX0lSUV9TWU5DX0xPU1QzKQo+ICsJCWFwaSB8PSBEU1NfSVJRX01HUl9TWU5DX0xPU1QoMyk7 Cj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfVlNZTkMzKQo+ICsJCWFwaSB8PSBEU1NfSVJRX01HUl9W U1lOQ19FVkVOKDMpOwo+ICsJaWYgKGh3ICYgRElTUENfSVJRX0ZSQU1FRE9ORTMpCj4gKwkJYXBp IHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMyk7Cj4gKwo+ICsJaWYgKGh3ICYgRElTUENfSVJR X0dGWF9GSUZPX1VOREVSRkxPVykKPiArCQlhcGkgfD0gRFNTX0lSUV9PVkxfRklGT19VTkRFUkZM T1coMCk7Cj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxPVykKPiArCQlh cGkgfD0gRFNTX0lSUV9PVkxfRklGT19VTkRFUkZMT1coMSk7Cj4gKwlpZiAoaHcgJiBESVNQQ19J UlFfVklEMl9GSUZPX1VOREVSRkxPVykKPiArCQlhcGkgfD0gRFNTX0lSUV9PVkxfRklGT19VTkRF UkZMT1coMik7Cj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfVklEM19GSUZPX1VOREVSRkxPVykKPiAr CQlhcGkgfD0gRFNTX0lSUV9PVkxfRklGT19VTkRFUkZMT1coMyk7Cj4gKwo+ICsJcmV0dXJuIGFw aTsKPiArfQo+ICsKPiArc3RhdGljIHUzMiBkaXNwY19hcGlfdG9faHdfaXJxKHU2NCBhcGkpCj4g K3sKPiArCXUzMiBodyA9IDA7Cj4gKwo+ICsJaWYgKGFwaSAmIERTU19JUlFfREVWSUNFX09DUF9F UlIpCj4gKwkJaHcgfD0gRElTUENfSVJRX09DUF9FUlI7Cj4gKwo+ICsJaWYgKGFwaSAmIERTU19J UlFfTUdSX0ZSQU1FX0RPTkUoMCkpCj4gKwkJaHcgfD0gRElTUENfSVJRX0ZSQU1FRE9ORTsKPiAr CWlmIChhcGkgJiBEU1NfSVJRX01HUl9WU1lOQ19FVkVOKDApKQo+ICsJCWh3IHw9IERJU1BDX0lS UV9WU1lOQzsKPiArCWlmIChhcGkgJiBEU1NfSVJRX01HUl9TWU5DX0xPU1QoMCkpCj4gKwkJaHcg fD0gRElTUENfSVJRX1NZTkNfTE9TVDsKPiArCj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfVlNZ TkNfRVZFTigxKSkKPiArCQlodyB8PSBESVNQQ19JUlFfRVZTWU5DX0VWRU47Cj4gKwlpZiAoYXBp ICYgRFNTX0lSUV9NR1JfVlNZTkNfT0REKDEpKQo+ICsJCWh3IHw9IERJU1BDX0lSUV9FVlNZTkNf T0REOwo+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX1NZTkNfTE9TVCgxKSkKPiArCQlodyB8PSBE SVNQQ19JUlFfU1lOQ19MT1NUX0RJR0lUOwo+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX0ZSQU1F X0RPTkUoMSkpCj4gKwkJaHcgfD0gRElTUENfSVJRX0ZSQU1FRE9ORVRWOwo+ICsKPiArCWlmIChh cGkgJiBEU1NfSVJRX01HUl9TWU5DX0xPU1QoMikpCj4gKwkJaHcgfD0gRElTUENfSVJRX1NZTkNf TE9TVDI7Cj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfVlNZTkNfRVZFTigyKSkKPiArCQlodyB8 PSBESVNQQ19JUlFfVlNZTkMyOwo+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX0ZSQU1FX0RPTkUo MikpCj4gKwkJaHcgfD0gRElTUENfSVJRX0ZSQU1FRE9ORTI7Cj4gKwo+ICsJaWYgKGFwaSAmIERT U19JUlFfTUdSX1NZTkNfTE9TVCgzKSkKPiArCQlodyB8PSBESVNQQ19JUlFfU1lOQ19MT1NUMzsK PiArCWlmIChhcGkgJiBEU1NfSVJRX01HUl9WU1lOQ19FVkVOKDMpKQo+ICsJCWh3IHw9IERJU1BD X0lSUV9WU1lOQzM7Cj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfRlJBTUVfRE9ORSgzKSkKPiAr CQlodyB8PSBESVNQQ19JUlFfRlJBTUVET05FMzsKPiArCj4gKwlpZiAoYXBpICYgRFNTX0lSUV9P VkxfRklGT19VTkRFUkZMT1coMCkpCj4gKwkJaHcgfD0gRElTUENfSVJRX0dGWF9GSUZPX1VOREVS RkxPVzsKPiArCWlmIChhcGkgJiBEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygxKSkKPiArCQlo dyB8PSBESVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxPVzsKPiArCWlmIChhcGkgJiBEU1NfSVJR X09WTF9GSUZPX1VOREVSRkxPVygyKSkKPiArCQlodyB8PSBESVNQQ19JUlFfVklEMl9GSUZPX1VO REVSRkxPVzsKPiArCWlmIChhcGkgJiBEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygzKSkKPiAr CQlodyB8PSBESVNQQ19JUlFfVklEM19GSUZPX1VOREVSRkxPVzsKPiArCj4gKwlyZXR1cm4gaHc7 Cj4gK30KCkkgdGhpbmsgeW91IGNvdWxkIGhhdmUgYSBzaW1wbGUgdGFibGUgd2l0aCBodzphcGkg Yml0IHBhaXJzLiBBbmQgdGhlbiBhCnNpbXBsZSBmb3IgbG9vcCBpbiBib3RoIHRoZSBmdW5jdGlv bnMgYWJvdmUgdG8gZG8gdGhlIHdvcmsuCgo+ICsKPiArc3RhdGljIHU2NCBkaXNwY19hcGlfcmVh ZF9pcnFzdGF0dXModTY0IGNsZWFybWFzaykKPiArewo+ICsJdTMyIGh3X2NsZWFybWFzayA9IGRp c3BjX2FwaV90b19od19pcnEoY2xlYXJtYXNrKTsKPiArCXUzMiBod19zdGF0dXMgPSBkaXNwY19y ZWFkX2lycXN0YXR1cygpOwo+ICsKPiArCWRpc3BjX2NsZWFyX2lycXN0YXR1cyhod19jbGVhcm1h c2sgJiBod19zdGF0dXMpOwo+ICsKPiArCXJldHVybiBkaXNwY19od190b19hcGlfaXJxKGh3X3N0 YXR1cyk7Cj4gK30KCkkgdGhpbmsgd2UgYWx3YXlzIHdhbnQgdG8gcmVhZCB0aGUgd2hvbGUgaXJx c3RhdHVzLCBhbmQgY2xlYXIgaXQuIFlvdQpjYW4gZG8gdGhhdCB3aXRoIHRoZSBmdW5jdGlvbiBh Ym92ZSwgYnV0IEknbSBub3Qgc3VyZSBpZiBjbGVhcm1hc2sKb2ZmZXJzIHVzIGFueXRoaW5nIHdl IGV2ZXIgbmVlZCB0byB1c2UuCgpBbHNvLCB0aGlzIGZ1bmN0aW9uIGFsc28gY2xlYXJzIHRoZSBp cnFzdGF0dXMsIHNvIHBlcmhhcHMgcmVuYW1lIHRoZQpmdW5jdGlvbiB0byByZWFkX2FuZF9jbGVh cl9pcnFzdGF0dXMgdG8gbWFrZSBpdCBvYnZpb3VzLCBhcyBpdCdzIHF1aXRlCmFuIGltcG9ydGFu dCBzaWRlIGVmZmVjdC4KCj4gKwo+ICtzdGF0aWMgdm9pZCBkaXNwY19hcGlfd3JpdGVfaXJxZW5h YmxlKHU2NCBlbmFibGUpCj4gK3sKPiArCXUzMiBod19lbmFibGUgPSBkaXNwY19hcGlfdG9faHdf aXJxKGVuYWJsZSk7Cj4gKwo+ICsJZGlzcGNfd3JpdGVfaXJxZW5hYmxlKGh3X2VuYWJsZSk7Cj4g K30KPiArCj4gIHZvaWQgZGlzcGNfZW5hYmxlX3NpZGxlKHZvaWQpCj4gIHsKPiAgCVJFR19GTERf TU9EKERJU1BDX1NZU0NPTkZJRywgMiwgNCwgMyk7CS8qIFNJRExFTU9ERTogc21hcnQgaWRsZSAq Lwo+IEBAIC00NDUzLDcgKzQ1NTMsNyBAQCBzdGF0aWMgdm9pZCBkaXNwY19lcnJhdGFfaTczNF93 YV9maW5pKHZvaWQpCj4gIAo+ICBzdGF0aWMgdm9pZCBkaXNwY19lcnJhdGFfaTczNF93YSh2b2lk KQo+ICB7Cj4gLQl1MzIgZnJhbWVkb25lX2lycSA9IGRpc3BjX21ncl9nZXRfZnJhbWVkb25lX2ly cShPTUFQX0RTU19DSEFOTkVMX0xDRCk7Cj4gKwl1MzIgZnJhbWVkb25lX2lycSA9IERJU1BDX0lS UV9GUkFNRURPTkU7Cj4gIAlzdHJ1Y3Qgb21hcF9vdmVybGF5X2luZm8gb3ZsaTsKPiAgCXN0cnVj dCBkc3NfbGNkX21ncl9jb25maWcgbGNkX2NvbmY7Cj4gIAl1MzIgZ2F0ZXN0YXRlOwo+IEBAIC00 NTExLDkgKzQ2MTEsOCBAQCBzdGF0aWMgdm9pZCBkaXNwY19lcnJhdGFfaTczNF93YSh2b2lkKQo+ ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRpc3BjX29wcyBkaXNwY19vcHMgPSB7Cj4g LQkucmVhZF9pcnFzdGF0dXMgPSBkaXNwY19yZWFkX2lycXN0YXR1cywKPiAtCS5jbGVhcl9pcnFz dGF0dXMgPSBkaXNwY19jbGVhcl9pcnFzdGF0dXMsCj4gLQkud3JpdGVfaXJxZW5hYmxlID0gZGlz cGNfd3JpdGVfaXJxZW5hYmxlLAo+ICsJLnJlYWRfaXJxc3RhdHVzID0gZGlzcGNfYXBpX3JlYWRf aXJxc3RhdHVzLAo+ICsJLndyaXRlX2lycWVuYWJsZSA9IGRpc3BjX2FwaV93cml0ZV9pcnFlbmFi bGUsCj4gIAo+ICAJLnJlcXVlc3RfaXJxID0gZGlzcGNfcmVxdWVzdF9pcnEsCj4gIAkuZnJlZV9p cnEgPSBkaXNwY19mcmVlX2lycSwKPiBAQCAtNDUyNywxMyArNDYyNiwxMiBAQCBzdGF0aWMgdm9p ZCBkaXNwY19lcnJhdGFfaTczNF93YSh2b2lkKQo+ICAJLmdldF9vdmxfbmFtZSA9IGRpc3BjX2dl dF9vdmxfbmFtZSwKPiAgCS5nZXRfbWdyX25hbWUgPSBkaXNwY19nZXRfbWdyX25hbWUsCj4gIAo+ ICsJLm1ncl9oYXNfZnJhbWVkb25lID0gZGlzcGNfbWdyX2hhc19mcmFtZWRvbmUsCj4gKwo+ICAJ LmdldF9tZW1vcnlfYmFuZHdpZHRoX2xpbWl0ID0gZGlzcGNfZ2V0X21lbW9yeV9iYW5kd2lkdGhf bGltaXQsCj4gIAo+ICAJLm1ncl9lbmFibGUgPSBkaXNwY19tZ3JfZW5hYmxlLAo+ICAJLm1ncl9p c19lbmFibGVkID0gZGlzcGNfbWdyX2lzX2VuYWJsZWQsCj4gLQkubWdyX2dldF92c3luY19pcnEg PSBkaXNwY19tZ3JfZ2V0X3ZzeW5jX2lycSwKPiAtCS5tZ3JfZ2V0X2ZyYW1lZG9uZV9pcnEgPSBk aXNwY19tZ3JfZ2V0X2ZyYW1lZG9uZV9pcnEsCj4gLQkubWdyX2dldF9zeW5jX2xvc3RfaXJxID0g ZGlzcGNfbWdyX2dldF9zeW5jX2xvc3RfaXJxLAo+ICAJLm1ncl9nb19idXN5ID0gZGlzcGNfbWdy X2dvX2J1c3ksCj4gIAkubWdyX2dvID0gZGlzcGNfbWdyX2dvLAo+ICAJLm1ncl9zZXRfbGNkX2Nv bmZpZyA9IGRpc3BjX21ncl9zZXRfbGNkX2NvbmZpZywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmggYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mv ZGlzcGMuaAo+IGluZGV4IGU5MDFkZDEuLmU3MTI2NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9kc3MvZGlzcGMuaAo+IEBAIC0xOCw2ICsxOCwzOSBAQAo+ICAjaWZuZGVmIF9fT01BUDJfRElT UENfUkVHX0gKPiAgI2RlZmluZSBfX09NQVAyX0RJU1BDX1JFR19ICj4gIAo+ICsvKiBESVNQQyBJ UlEgYml0cyAqLwo+ICsjZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUJCSgxIDw8IDApCj4gKyNk ZWZpbmUgRElTUENfSVJRX1ZTWU5DCQkJKDEgPDwgMSkKPiArI2RlZmluZSBESVNQQ19JUlFfRVZT WU5DX0VWRU4JCSgxIDw8IDIpCj4gKyNkZWZpbmUgRElTUENfSVJRX0VWU1lOQ19PREQJCSgxIDw8 IDMpCj4gKyNkZWZpbmUgRElTUENfSVJRX0FDQklBU19DT1VOVF9TVEFUCSgxIDw8IDQpCj4gKyNk ZWZpbmUgRElTUENfSVJRX1BST0dfTElORV9OVU0JCSgxIDw8IDUpCj4gKyNkZWZpbmUgRElTUENf SVJRX0dGWF9GSUZPX1VOREVSRkxPVwkoMSA8PCA2KQo+ICsjZGVmaW5lIERJU1BDX0lSUV9HRlhf RU5EX1dJTgkJKDEgPDwgNykKPiArI2RlZmluZSBESVNQQ19JUlFfUEFMX0dBTU1BX01BU0sJKDEg PDwgOCkKPiArI2RlZmluZSBESVNQQ19JUlFfT0NQX0VSUgkJKDEgPDwgOSkKPiArI2RlZmluZSBE SVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxPVwkoMSA8PCAxMCkKPiArI2RlZmluZSBESVNQQ19J UlFfVklEMV9FTkRfV0lOCQkoMSA8PCAxMSkKPiArI2RlZmluZSBESVNQQ19JUlFfVklEMl9GSUZP X1VOREVSRkxPVwkoMSA8PCAxMikKPiArI2RlZmluZSBESVNQQ19JUlFfVklEMl9FTkRfV0lOCQko MSA8PCAxMykKPiArI2RlZmluZSBESVNQQ19JUlFfU1lOQ19MT1NUCQkoMSA8PCAxNCkKPiArI2Rl ZmluZSBESVNQQ19JUlFfU1lOQ19MT1NUX0RJR0lUCSgxIDw8IDE1KQo+ICsjZGVmaW5lIERJU1BD X0lSUV9XQUtFVVAJCSgxIDw8IDE2KQo+ICsjZGVmaW5lIERJU1BDX0lSUV9TWU5DX0xPU1QyCQko MSA8PCAxNykKPiArI2RlZmluZSBESVNQQ19JUlFfVlNZTkMyCQkoMSA8PCAxOCkKPiArI2RlZmlu ZSBESVNQQ19JUlFfVklEM19FTkRfV0lOCQkoMSA8PCAxOSkKPiArI2RlZmluZSBESVNQQ19JUlFf VklEM19GSUZPX1VOREVSRkxPVwkoMSA8PCAyMCkKPiArI2RlZmluZSBESVNQQ19JUlFfQUNCSUFT X0NPVU5UX1NUQVQyCSgxIDw8IDIxKQo+ICsjZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUyCQko MSA8PCAyMikKPiArI2RlZmluZSBESVNQQ19JUlFfRlJBTUVET05FV0IJCSgxIDw8IDIzKQo+ICsj ZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkVUVgkJKDEgPDwgMjQpCj4gKyNkZWZpbmUgRElTUENf SVJRX1dCQlVGRkVST1ZFUkZMT1cJKDEgPDwgMjUpCj4gKyNkZWZpbmUgRElTUENfSVJRX1dCVU5D T01QTEVURUVSUk9SCSgxIDw8IDI2KQo+ICsjZGVmaW5lIERJU1BDX0lSUV9TWU5DX0xPU1QzCQko MSA8PCAyNykKPiArI2RlZmluZSBESVNQQ19JUlFfVlNZTkMzCQkoMSA8PCAyOCkKPiArI2RlZmlu ZSBESVNQQ19JUlFfQUNCSUFTX0NPVU5UX1NUQVQzCSgxIDw8IDI5KQo+ICsjZGVmaW5lIERJU1BD X0lSUV9GUkFNRURPTkUzCQkoMSA8PCAzMCkKPiArCj4gIC8qIERJU1BDIGNvbW1vbiByZWdpc3Rl cnMgKi8KPiAgI2RlZmluZSBESVNQQ19SRVZJU0lPTgkJCTB4MDAwMAo+ICAjZGVmaW5lIERJU1BD X1NZU0NPTkZJRwkJCTB4MDAxMAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9kc3Mvb21hcGRzcy5oIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL29tYXBkc3MuaAo+ IGluZGV4IGQ3ZWQxYTQuLmIxNDk5YzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vZHNzL29tYXBkc3MuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9v bWFwZHNzLmgKPiBAQCAtMjcsMzcgKzI3LDI5IEBACj4gICNpbmNsdWRlIDx1YXBpL2RybS9kcm1f bW9kZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gIAo+IC0jZGVmaW5lIERJU1BD X0lSUV9GUkFNRURPTkUJCSgxIDw8IDApCj4gLSNkZWZpbmUgRElTUENfSVJRX1ZTWU5DCQkJKDEg PDwgMSkKPiAtI2RlZmluZSBESVNQQ19JUlFfRVZTWU5DX0VWRU4JCSgxIDw8IDIpCj4gLSNkZWZp bmUgRElTUENfSVJRX0VWU1lOQ19PREQJCSgxIDw8IDMpCj4gLSNkZWZpbmUgRElTUENfSVJRX0FD QklBU19DT1VOVF9TVEFUCSgxIDw8IDQpCj4gLSNkZWZpbmUgRElTUENfSVJRX1BST0dfTElORV9O VU0JCSgxIDw8IDUpCj4gLSNkZWZpbmUgRElTUENfSVJRX0dGWF9GSUZPX1VOREVSRkxPVwkoMSA8 PCA2KQo+IC0jZGVmaW5lIERJU1BDX0lSUV9HRlhfRU5EX1dJTgkJKDEgPDwgNykKPiAtI2RlZmlu ZSBESVNQQ19JUlFfUEFMX0dBTU1BX01BU0sJKDEgPDwgOCkKPiAtI2RlZmluZSBESVNQQ19JUlFf T0NQX0VSUgkJKDEgPDwgOSkKPiAtI2RlZmluZSBESVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxP VwkoMSA8PCAxMCkKPiAtI2RlZmluZSBESVNQQ19JUlFfVklEMV9FTkRfV0lOCQkoMSA8PCAxMSkK PiAtI2RlZmluZSBESVNQQ19JUlFfVklEMl9GSUZPX1VOREVSRkxPVwkoMSA8PCAxMikKPiAtI2Rl ZmluZSBESVNQQ19JUlFfVklEMl9FTkRfV0lOCQkoMSA8PCAxMykKPiAtI2RlZmluZSBESVNQQ19J UlFfU1lOQ19MT1NUCQkoMSA8PCAxNCkKPiAtI2RlZmluZSBESVNQQ19JUlFfU1lOQ19MT1NUX0RJ R0lUCSgxIDw8IDE1KQo+IC0jZGVmaW5lIERJU1BDX0lSUV9XQUtFVVAJCSgxIDw8IDE2KQo+IC0j ZGVmaW5lIERJU1BDX0lSUV9TWU5DX0xPU1QyCQkoMSA8PCAxNykKPiAtI2RlZmluZSBESVNQQ19J UlFfVlNZTkMyCQkoMSA8PCAxOCkKPiAtI2RlZmluZSBESVNQQ19JUlFfVklEM19FTkRfV0lOCQko MSA8PCAxOSkKPiAtI2RlZmluZSBESVNQQ19JUlFfVklEM19GSUZPX1VOREVSRkxPVwkoMSA8PCAy MCkKPiAtI2RlZmluZSBESVNQQ19JUlFfQUNCSUFTX0NPVU5UX1NUQVQyCSgxIDw8IDIxKQo+IC0j ZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUyCQkoMSA8PCAyMikKPiAtI2RlZmluZSBESVNQQ19J UlFfRlJBTUVET05FV0IJCSgxIDw8IDIzKQo+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkVU VgkJKDEgPDwgMjQpCj4gLSNkZWZpbmUgRElTUENfSVJRX1dCQlVGRkVST1ZFUkZMT1cJKDEgPDwg MjUpCj4gLSNkZWZpbmUgRElTUENfSVJRX1dCVU5DT01QTEVURUVSUk9SCSgxIDw8IDI2KQo+IC0j ZGVmaW5lIERJU1BDX0lSUV9TWU5DX0xPU1QzCQkoMSA8PCAyNykKPiAtI2RlZmluZSBESVNQQ19J UlFfVlNZTkMzCQkoMSA8PCAyOCkKPiAtI2RlZmluZSBESVNQQ19JUlFfQUNCSUFTX0NPVU5UX1NU QVQzCSgxIDw8IDI5KQo+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUzCQkoMSA8PCAzMCkK PiArI2RlZmluZSBEU1NfTUFYX0NIQU5ORUxTIDgKPiArI2RlZmluZSBEU1NfTUFYX09WTFMgOAo+ ICsKPiArI2RlZmluZSBEU1NfSVJRX0RFVklDRV9PQ1BfRVJSCQlCSVRfVUxMKDApCj4gKwo+ICsj ZGVmaW5lIERTU19JUlFfTUdSX0JJVF9OKGNoLCBiaXQpCSg0ICsgNCAqIGNoICsgYml0KQo+ICsj ZGVmaW5lIERTU19JUlFfT1ZMX0JJVF9OKG92bCwgYml0KSBcCj4gKwkoRFNTX0lSUV9NR1JfQklU X04oRFNTX01BWF9DSEFOTkVMUywgMCkgKyAxICogb3ZsICsgYml0KQo+ICsKPiArI2RlZmluZSBE U1NfSVJRX01HUl9CSVQoY2gsIGJpdCkJQklUX1VMTChEU1NfSVJRX01HUl9CSVRfTihjaCwgYml0 KSkKPiArI2RlZmluZSBEU1NfSVJRX09WTF9CSVQob3ZsLCBiaXQpCUJJVF9VTEwoRFNTX0lSUV9P VkxfQklUX04ob3ZsLCBiaXQpKQo+ICsKPiArI2RlZmluZSBEU1NfSVJRX01HUl9NQVNLKGNoKSBc Cj4gKwlHRU5NQVNLX1VMTChEU1NfSVJRX01HUl9CSVRfTihjaCwgMyksIERTU19JUlFfTUdSX0JJ VF9OKGNoLCAwKSkKPiArI2RlZmluZSBEU1NfSVJRX09WTF9NQVNLKG92bCkgXAo+ICsJR0VOTUFT S19VTEwoRFNTX0lSUV9PVkxfQklUX04ob3ZsLCAwKSwgRFNTX0lSUV9PVkxfQklUX04ob3ZsLCAw KSkKPiArCj4gKyNkZWZpbmUgRFNTX0lSUV9NR1JfRlJBTUVfRE9ORShjaCkJRFNTX0lSUV9NR1Jf QklUKGNoLCAwKQo+ICsjZGVmaW5lIERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oY2gpCURTU19JUlFf TUdSX0JJVChjaCwgMSkKPiArI2RlZmluZSBEU1NfSVJRX01HUl9WU1lOQ19PREQoY2gpCURTU19J UlFfTUdSX0JJVChjaCwgMikKPiArI2RlZmluZSBEU1NfSVJRX01HUl9TWU5DX0xPU1QoY2gpCURT U19JUlFfTUdSX0JJVChjaCwgMykKPiArCj4gKyNkZWZpbmUgRFNTX0lSUV9PVkxfRklGT19VTkRF UkZMT1cob3ZsKQlEU1NfSVJRX09WTF9CSVQob3ZsLCAwKQo+ICAKPiAgc3RydWN0IG9tYXBfZHNz X2RldmljZTsKPiAgc3RydWN0IGRzc19sY2RfbWdyX2NvbmZpZzsKPiBAQCAtNjc4LDkgKzY3MCw4 IEBAIHZvaWQgZHNzX21ncl91bnJlZ2lzdGVyX2ZyYW1lZG9uZV9oYW5kbGVyKGVudW0gb21hcF9j aGFubmVsIGNoYW5uZWwsCj4gIC8qIGRpc3BjIG9wcyAqLwo+ICAKPiAgc3RydWN0IGRpc3BjX29w cyB7Cj4gLQl1MzIgKCpyZWFkX2lycXN0YXR1cykodm9pZCk7Cj4gLQl2b2lkICgqY2xlYXJfaXJx c3RhdHVzKSh1MzIgbWFzayk7Cj4gLQl2b2lkICgqd3JpdGVfaXJxZW5hYmxlKSh1MzIgbWFzayk7 Cj4gKwl1NjQgKCpyZWFkX2lycXN0YXR1cykodTY0IGNsZWFybWFzayk7Cj4gKwl2b2lkICgqd3Jp dGVfaXJxZW5hYmxlKSh1NjQgZW5hYmxlKTsKPiAgCj4gIAlpbnQgKCpyZXF1ZXN0X2lycSkoaXJx X2hhbmRsZXJfdCBoYW5kbGVyLCB2b2lkICpkZXZfaWQpOwo+ICAJdm9pZCAoKmZyZWVfaXJxKSh2 b2lkICpkZXZfaWQpOwo+IEBAIC02OTQsMTMgKzY4NSwxMiBAQCBzdHJ1Y3QgZGlzcGNfb3BzIHsK PiAgCWNvbnN0IGNoYXIgKigqZ2V0X292bF9uYW1lKShlbnVtIG9tYXBfcGxhbmVfaWQgcGxhbmUp Owo+ICAJY29uc3QgY2hhciAqKCpnZXRfbWdyX25hbWUpKGVudW0gb21hcF9jaGFubmVsIGNoYW5u ZWwpOwo+ICAKPiArCWJvb2wgKCptZ3JfaGFzX2ZyYW1lZG9uZSkoZW51bSBvbWFwX2NoYW5uZWwg Y2hhbm5lbCk7Cj4gKwo+ICAJdTMyICgqZ2V0X21lbW9yeV9iYW5kd2lkdGhfbGltaXQpKHZvaWQp Owo+ICAKPiAgCXZvaWQgKCptZ3JfZW5hYmxlKShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsLCBi b29sIGVuYWJsZSk7Cj4gIAlib29sICgqbWdyX2lzX2VuYWJsZWQpKGVudW0gb21hcF9jaGFubmVs IGNoYW5uZWwpOwo+IC0JdTMyICgqbWdyX2dldF92c3luY19pcnEpKGVudW0gb21hcF9jaGFubmVs IGNoYW5uZWwpOwo+IC0JdTMyICgqbWdyX2dldF9mcmFtZWRvbmVfaXJxKShlbnVtIG9tYXBfY2hh bm5lbCBjaGFubmVsKTsKPiAtCXUzMiAoKm1ncl9nZXRfc3luY19sb3N0X2lycSkoZW51bSBvbWFw X2NoYW5uZWwgY2hhbm5lbCk7Cj4gIAlib29sICgqbWdyX2dvX2J1c3kpKGVudW0gb21hcF9jaGFu bmVsIGNoYW5uZWwpOwo+ICAJdm9pZCAoKm1ncl9nbykoZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5l bCk7Cj4gIAl2b2lkICgqbWdyX3NldF9sY2RfY29uZmlnKShlbnVtIG9tYXBfY2hhbm5lbCBjaGFu bmVsLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYyBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY3J0Yy5jCj4gaW5kZXggZmVlOGE2My4uZjdl MTY2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY3J0Yy5jCj4gQEAgLTE0OSw3ICsx NDksNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2NydGNfc2V0X2VuYWJsZWQoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIGVuYWJsZSkKPiAgCXN0cnVjdCBvbWFwX2NydGMgKm9tYXBfY3J0YyA9IHRv X29tYXBfY3J0YyhjcnRjKTsKPiAgCWVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwgPSBvbWFwX2Ny dGMtPmNoYW5uZWw7Cj4gIAlzdHJ1Y3Qgb21hcF9pcnFfd2FpdCAqd2FpdDsKPiAtCXUzMiBmcmFt ZWRvbmVfaXJxLCB2c3luY19pcnE7Cj4gKwl1NjQgdnN5bmNfaXJxLCBmcmFtZWRvbmVfaXJxOwo+ ICAJaW50IHJldDsKPiAgCj4gIAlpZiAoV0FSTl9PTihvbWFwX2NydGMtPmVuYWJsZWQgPT0gZW5h YmxlKSkKPiBAQCAtMTY5LDggKzE2OSwxMCBAQCBzdGF0aWMgdm9pZCBvbWFwX2NydGNfc2V0X2Vu YWJsZWQoc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIGVuYWJsZSkKPiAgCQlvbWFwX2NydGMt Pmlnbm9yZV9kaWdpdF9zeW5jX2xvc3QgPSB0cnVlOwo+ICAJfQo+ICAKPiAtCWZyYW1lZG9uZV9p cnEgPSBwcml2LT5kaXNwY19vcHMtPm1ncl9nZXRfZnJhbWVkb25lX2lycShjaGFubmVsKTsKPiAt CXZzeW5jX2lycSA9IHByaXYtPmRpc3BjX29wcy0+bWdyX2dldF92c3luY19pcnEoY2hhbm5lbCk7 Cj4gKwo+ICsJdnN5bmNfaXJxID0gKERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oY2hhbm5lbCkgfAo+ ICsJCSAgICAgRFNTX0lSUV9NR1JfVlNZTkNfT0REKGNoYW5uZWwpKTsKPiArCWZyYW1lZG9uZV9p cnEgPSBEU1NfSVJRX01HUl9GUkFNRV9ET05FKGNoYW5uZWwpOwo+ICAKPiAgCWlmIChlbmFibGUp IHsKPiAgCQl3YWl0ID0gb21hcF9pcnFfd2FpdF9pbml0KGRldiwgdnN5bmNfaXJxLCAxKTsKPiBA QCAtMTg0LDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19zZXRfZW5hYmxlZChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQo+ICAJCSAqIGV2ZW4gYW5kIG9kZCBmcmFt ZXMuCj4gIAkJICovCj4gIAo+IC0JCWlmIChmcmFtZWRvbmVfaXJxKQo+ICsJCWlmIChwcml2LT5k aXNwY19vcHMtPm1ncl9oYXNfZnJhbWVkb25lKGNoYW5uZWwpKQo+ICAJCQl3YWl0ID0gb21hcF9p cnFfd2FpdF9pbml0KGRldiwgZnJhbWVkb25lX2lycSwgMSk7Cj4gIAkJZWxzZQo+ICAJCQl3YWl0 ID0gb21hcF9pcnFfd2FpdF9pbml0KGRldiwgdnN5bmNfaXJxLCAyKTsKPiBAQCAtMjcyLDE3ICsy NzQsMTcgQEAgc3RhdGljIHZvaWQgb21hcF9jcnRjX2Rzc191bnJlZ2lzdGVyX2ZyYW1lZG9uZSgK PiAgICogU2V0dXAsIEZsdXNoIGFuZCBQYWdlIEZsaXAKPiAgICovCj4gIAo+IC12b2lkIG9tYXBf Y3J0Y19lcnJvcl9pcnEoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1aW50MzJfdCBpcnFzdGF0dXMp Cj4gK3ZvaWQgb21hcF9jcnRjX2Vycm9yX2lycShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHU2NCBp cnFzdGF0dXMpCj4gIHsKPiAgCXN0cnVjdCBvbWFwX2NydGMgKm9tYXBfY3J0YyA9IHRvX29tYXBf Y3J0YyhjcnRjKTsKPiAgCj4gIAlpZiAob21hcF9jcnRjLT5pZ25vcmVfZGlnaXRfc3luY19sb3N0 KSB7Cj4gLQkJaXJxc3RhdHVzICY9IH5ESVNQQ19JUlFfU1lOQ19MT1NUX0RJR0lUOwo+ICsJCWly cXN0YXR1cyAmPSB+RFNTX0lSUV9NR1JfU1lOQ19MT1NUKG9tYXBfY3J0Yy0+Y2hhbm5lbCk7Cj4g IAkJaWYgKCFpcnFzdGF0dXMpCj4gIAkJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlEUk1fRVJST1Jf UkFURUxJTUlURUQoIiVzOiBlcnJvcnM6ICUwOHhcbiIsIG9tYXBfY3J0Yy0+bmFtZSwgaXJxc3Rh dHVzKTsKPiArCURSTV9FUlJPUl9SQVRFTElNSVRFRCgiJXM6IGVycm9yczogJTAxNmxseFxuIiwg b21hcF9jcnRjLT5uYW1lLCBpcnFzdGF0dXMpOwo+ICB9Cj4gIAo+ICB2b2lkIG9tYXBfY3J0Y192 YmxhbmtfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmggYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFw X2NydGMuaAo+IGluZGV4IGFkN2IwMDcuLjU1ZTJlMDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9vbWFwX2NydGMuaAo+IEBAIC0zNyw3ICszNyw3IEBACj4gIHN0cnVjdCBkcm1fY3J0YyAqb21h cF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwgc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKPiAgaW50IG9tYXBfY3J0 Y193YWl0X3BlbmRpbmcoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAtdm9pZCBvbWFwX2NydGNf ZXJyb3JfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdWludDMyX3QgaXJxc3RhdHVzKTsKPiAr dm9pZCBvbWFwX2NydGNfZXJyb3JfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTY0IGlycXN0 YXR1cyk7Cj4gIHZvaWQgb21hcF9jcnRjX3ZibGFua19pcnEoc3RydWN0IGRybV9jcnRjICpjcnRj KTsKPiAgCj4gICNlbmRpZiAvKiBfX09NQVBEUk1fQ1JUQ19IX18gKi8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfZHJ2LmgKPiBpbmRleCAwYWM5N2ZlLi4xYTQ3OWVhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9vbWFwX2Rydi5oCj4gQEAgLTgxLDggKzgxLDcgQEAgc3RydWN0IG9tYXBfZHJtX3By aXZhdGUgewo+ICAJLyogaXJxIGhhbmRsaW5nOiAqLwo+ICAJc3BpbmxvY2tfdCB3YWl0X2xvY2s7 CQkvKiBwcm90ZWN0cyB0aGUgd2FpdF9saXN0ICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRf bGlzdDsJLyogbGlzdCBvZiBvbWFwX2lycV93YWl0ICovCj4gLQl1aW50MzJfdCBpcnFfbWFzazsJ CS8qIGVuYWJsZWQgaXJxcyBpbiBhZGRpdGlvbiB0byB3YWl0X2xpc3QgKi8KPiAtCj4gKwl1NjQg aXJxX21hc2s7CQkJLyogZW5hYmxlZCBpcnFzIGluIGFkZGl0aW9uIHRvIHdhaXRfbGlzdCAqLwo+ ICAJLyogbWVtb3J5IGJhbmR3aWR0aCBsaW1pdCBpZiBpdCBpcyBuZWVkZWQgb24gdGhlIHBsYXRm b3JtICovCj4gIAl1bnNpZ25lZCBpbnQgbWF4X2JhbmR3aWR0aDsKPiAgfTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9v bWFwZHJtL29tYXBfaXJxLmMKPiBpbmRleCBiMGY2ODUwLi41N2VhMDhlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vb21hcGRybS9vbWFwX2lycS5jCj4gQEAgLTIwLDI1ICsyMCwyNCBAQAo+ICBzdHJ1Y3Qgb21h cF9pcnFfd2FpdCB7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4gIAl3YWl0X3F1ZXVlX2hl YWRfdCB3cTsKPiAtCXVpbnQzMl90IGlycW1hc2s7Cj4gKwl1NjQgaXJxbWFzazsKPiAgCWludCBj b3VudDsKPiAgfTsKPiAgCj4gIC8qIGNhbGwgd2l0aCB3YWl0X2xvY2sgYW5kIGRpc3BjIHJ1bnRp bWUgaGVsZCAqLwo+IC1zdGF0aWMgdm9pZCBvbWFwX2lycV91cGRhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiArc3RhdGljIHZvaWQgb21hcF9pcnFfZnVsbF9tYXNrKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHU2NCAqaXJxbWFzaykKPiAgewo+ICAJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUg KnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IG9tYXBfaXJxX3dhaXQgKndhaXQ7 Cj4gLQl1aW50MzJfdCBpcnFtYXNrID0gcHJpdi0+aXJxX21hc2s7Cj4gIAo+ICAJYXNzZXJ0X3Nw aW5fbG9ja2VkKCZwcml2LT53YWl0X2xvY2spOwo+ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnko d2FpdCwgJnByaXYtPndhaXRfbGlzdCwgbm9kZSkKPiAtCQlpcnFtYXNrIHw9IHdhaXQtPmlycW1h c2s7Cj4gKwkqaXJxbWFzayA9IHByaXYtPmlycV9tYXNrOwo+ICAKPiAtCURCRygiaXJxbWFzaz0l MDh4IiwgaXJxbWFzayk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHdhaXQsICZwcml2LT53YWl0 X2xpc3QsIG5vZGUpCj4gKwkJKmlycW1hc2sgfD0gd2FpdC0+aXJxbWFzazsKPiAgCj4gLQlwcml2 LT5kaXNwY19vcHMtPndyaXRlX2lycWVuYWJsZShpcnFtYXNrKTsKPiArCURCRygiaXJxbWFzayAw eCUwMTZsbHgiLCAqaXJxbWFzayk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG9tYXBfaXJxX3dh aXRfaGFuZGxlcihzdHJ1Y3Qgb21hcF9pcnFfd2FpdCAqd2FpdCkKPiBAQCAtNDgsMTkgKzQ3LDI0 IEBAIHN0YXRpYyB2b2lkIG9tYXBfaXJxX3dhaXRfaGFuZGxlcihzdHJ1Y3Qgb21hcF9pcnFfd2Fp dCAqd2FpdCkKPiAgfQo+ICAKPiAgc3RydWN0IG9tYXBfaXJxX3dhaXQgKiBvbWFwX2lycV93YWl0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQl1aW50MzJfdCBpcnFtYXNrLCBpbnQg Y291bnQpCj4gKwkJdTY0IHdhaXRtYXNrLCBpbnQgY291bnQpCj4gIHsKPiAgCXN0cnVjdCBvbWFw X2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBvbWFwX2ly cV93YWl0ICp3YWl0ID0ga3phbGxvYyhzaXplb2YoKndhaXQpLCBHRlBfS0VSTkVMKTsKPiAgCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwl1NjQgaXJxbWFzazsKPiArCj4gKwlpZiAoIXdhaXQpCj4g KwkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmd2FpdC0+d3EpOwo+ IC0Jd2FpdC0+aXJxbWFzayA9IGlycW1hc2s7Cj4gKwl3YWl0LT5pcnFtYXNrID0gd2FpdG1hc2s7 Cj4gIAl3YWl0LT5jb3VudCA9IGNvdW50Owo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZwcml2 LT53YWl0X2xvY2ssIGZsYWdzKTsKPiAgCWxpc3RfYWRkKCZ3YWl0LT5ub2RlLCAmcHJpdi0+d2Fp dF9saXN0KTsKPiAtCW9tYXBfaXJxX3VwZGF0ZShkZXYpOwo+ICsJb21hcF9pcnFfZnVsbF9tYXNr KGRldiwgJmlycW1hc2spOwo+ICsJcHJpdi0+ZGlzcGNfb3BzLT53cml0ZV9pcnFlbmFibGUoaXJx bWFzayk7Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53YWl0X2xvY2ssIGZsYWdz KTsKPiAgCj4gIAlyZXR1cm4gd2FpdDsKPiBAQCAtNzEsMTMgKzc1LDE1IEBAIGludCBvbWFwX2ly cV93YWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBvbWFwX2lycV93YWl0ICp3YWl0 LAo+ICB7Cj4gIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJdTY0IGlycW1hc2s7Cj4gIAlpbnQgcmV0 Owo+ICAKPiAgCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh3YWl0LT53cSwgKHdhaXQtPmNvdW50 IDw9IDApLCB0aW1lb3V0KTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+d2FpdF9s b2NrLCBmbGFncyk7Cj4gIAlsaXN0X2RlbCgmd2FpdC0+bm9kZSk7Cj4gLQlvbWFwX2lycV91cGRh dGUoZGV2KTsKPiArCW9tYXBfaXJxX2Z1bGxfbWFzayhkZXYsICZpcnFtYXNrKTsKPiArCXByaXYt PmRpc3BjX29wcy0+d3JpdGVfaXJxZW5hYmxlKGlycW1hc2spOwo+ICAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcHJpdi0+d2FpdF9sb2NrLCBmbGFncyk7Cj4gIAo+ICAJa2ZyZWUod2FpdCk7Cj4g QEAgLTEwNCwxMiArMTEwLDE1IEBAIGludCBvbWFwX2lycV9lbmFibGVfdmJsYW5rKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAllbnVtIG9tYXBfY2hhbm5l bCBjaGFubmVsID0gb21hcF9jcnRjX2NoYW5uZWwoY3J0Yyk7Cj4gKwl1NjQgaXJxbWFzazsKPiAg Cj4gIAlEQkcoImRldj0lcCwgY3J0Yz0ldSIsIGRldiwgY2hhbm5lbCk7Cj4gIAo+ICAJc3Bpbl9s b2NrX2lycXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+IC0JcHJpdi0+aXJxX21hc2sg fD0gcHJpdi0+ZGlzcGNfb3BzLT5tZ3JfZ2V0X3ZzeW5jX2lycShjaGFubmVsKTsKPiAtCW9tYXBf aXJxX3VwZGF0ZShkZXYpOwo+ICsJcHJpdi0+aXJxX21hc2sgfD0gRFNTX0lSUV9NR1JfVlNZTkNf RVZFTihjaGFubmVsKSB8Cj4gKwkJRFNTX0lSUV9NR1JfVlNZTkNfT0REKGNoYW5uZWwpOwo+ICsJ b21hcF9pcnFfZnVsbF9tYXNrKGRldiwgJmlycW1hc2spOwo+ICsJcHJpdi0+ZGlzcGNfb3BzLT53 cml0ZV9pcnFlbmFibGUoaXJxbWFzayk7Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2 LT53YWl0X2xvY2ssIGZsYWdzKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMTMwLDM2ICsxMzks MzYgQEAgdm9pZCBvbWFwX2lycV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g IAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5lbCA9IG9t YXBfY3J0Y19jaGFubmVsKGNydGMpOwo+ICsJdTY0IGlycW1hc2s7Cj4gIAo+ICAJREJHKCJkZXY9 JXAsIGNydGM9JXUiLCBkZXYsIGNoYW5uZWwpOwo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZw cml2LT53YWl0X2xvY2ssIGZsYWdzKTsKPiAtCXByaXYtPmlycV9tYXNrICY9IH5wcml2LT5kaXNw Y19vcHMtPm1ncl9nZXRfdnN5bmNfaXJxKGNoYW5uZWwpOwo+IC0Jb21hcF9pcnFfdXBkYXRlKGRl dik7Cj4gKwlwcml2LT5pcnFfbWFzayAmPSB+KERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oY2hhbm5l bCkgfAo+ICsJCQkgICAgRFNTX0lSUV9NR1JfVlNZTkNfT0REKGNoYW5uZWwpKTsKPiArCW9tYXBf aXJxX2Z1bGxfbWFzayhkZXYsICZpcnFtYXNrKTsKPiArCXByaXYtPmRpc3BjX29wcy0+d3JpdGVf aXJxZW5hYmxlKGlycW1hc2spOwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+d2Fp dF9sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG9tYXBfaXJxX2ZpZm9fdW5k ZXJmbG93KHN0cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2LAo+IC0JCQkJICAgIHUzMiBpcnFz dGF0dXMpCj4gKwkJCQkgICAgdTY0IGlycXN0YXR1cykKPiAgewo+ICAJc3RhdGljIERFRklORV9S QVRFTElNSVRfU1RBVEUoX3JzLCBERUZBVUxUX1JBVEVMSU1JVF9JTlRFUlZBTCwKPiAgCQkJCSAg ICAgIERFRkFVTFRfUkFURUxJTUlUX0JVUlNUKTsKPiAtCXN0YXRpYyBjb25zdCB1MzIgaXJxYml0 c1tdID0geyBESVNQQ19JUlFfR0ZYX0ZJRk9fVU5ERVJGTE9XLAo+IC0JCQkJICAgICAgIERJU1BD X0lSUV9WSUQxX0ZJRk9fVU5ERVJGTE9XLAo+IC0JCQkJICAgICAgIERJU1BDX0lSUV9WSUQyX0ZJ Rk9fVU5ERVJGTE9XLAo+IC0JCQkJICAgICAgIERJU1BDX0lSUV9WSUQzX0ZJRk9fVU5ERVJGTE9X IH07Cj4gLQo+IC0JY29uc3QgdTMyIG1hc2sgPSBESVNQQ19JUlFfR0ZYX0ZJRk9fVU5ERVJGTE9X Cj4gLQkJICAgICAgIHwgRElTUENfSVJRX1ZJRDFfRklGT19VTkRFUkZMT1cKPiAtCQkgICAgICAg fCBESVNQQ19JUlFfVklEMl9GSUZPX1VOREVSRkxPVwo+IC0JCSAgICAgICB8IERJU1BDX0lSUV9W SUQzX0ZJRk9fVU5ERVJGTE9XOwo+ICsJc3RhdGljIGNvbnN0IHU2NCB1Zl9tYXNrID0KPiArCQlE U1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygwKSB8IERTU19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9X KDEpIHwKPiArCQlEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygyKSB8IERTU19JUlFfT1ZMX0ZJ Rk9fVU5ERVJGTE9XKDMpIHwKPiArCQlEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVyg0KSB8IERT U19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9XKDUpIHwKPiArCQlEU1NfSVJRX09WTF9GSUZPX1VOREVS RkxPVyg2KSB8CURTU19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9XKDcpOwoKVXNlIGEgZm9yIGxvb3Ag dG8gc2V0dXAgdGhlIG1hc2suIFdpdGggdGhlIGFib3ZlLCBpZiBpbiB0aGUgZnV0dXJlIHdlCmNo YW5nZSB0aGUgaXJxIGJpdHMgYW5kLCBzYXksIGNoYW5nZSB0aGUgbnVtIG9mIG92bHMgdG8gNCwg dGhlIGFib3ZlCndpbGwgYnJlYWsuCgo+ICAJdW5zaWduZWQgaW50IGk7Cj4gKwl1NjQgbWFza2Vk Owo+ICAKPiAgCXNwaW5fbG9jaygmcHJpdi0+d2FpdF9sb2NrKTsKPiAtCWlycXN0YXR1cyAmPSBw cml2LT5pcnFfbWFzayAmIG1hc2s7Cj4gKwltYXNrZWQgPSBpcnFzdGF0dXMgJiB1Zl9tYXNrICYg cHJpdi0+aXJxX21hc2s7Cj4gIAlzcGluX3VubG9jaygmcHJpdi0+d2FpdF9sb2NrKTsKPiAgCj4g LQlpZiAoIWlycXN0YXR1cykKPiArCWlmICghbWFza2VkKQo+ICAJCXJldHVybjsKPiAgCj4gIAlp ZiAoIV9fcmF0ZWxpbWl0KCZfcnMpKQo+IEBAIC0xNjcsMjEgKzE3NiwxOSBAQCBzdGF0aWMgdm9p ZCBvbWFwX2lycV9maWZvX3VuZGVyZmxvdyhzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiwK PiAgCj4gIAlEUk1fRVJST1IoIkZJRk8gdW5kZXJmbG93IG9uICIpOwo+ICAKPiAtCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGlycWJpdHMpOyArK2kpIHsKPiAtCQlpZiAoaXJxYml0c1tpXSAm IGlycXN0YXR1cykKPiAtCQkJcHJfY29udCgiJXMgIiwgcHJpdi0+ZGlzcGNfb3BzLT5nZXRfb3Zs X25hbWUoaSkpOwo+ICsJZm9yIChpID0gMDsgaSA8IERTU19NQVhfT1ZMUzsgKytpKSB7Cj4gKwkJ aWYgKG1hc2tlZCAmIERTU19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9XKGkpKQo+ICsJCQlwcl9jb250 KCIldTolcyAiLCBpLCBwcml2LT5kaXNwY19vcHMtPmdldF9vdmxfbmFtZShpKSk7Cj4gIAl9Cj4g IAo+IC0JcHJfY29udCgiKDB4JTA4eClcbiIsIGlycXN0YXR1cyk7Cj4gKwlwcl9jb250KCIoJTAx NmxseClcbiIsIGlycXN0YXR1cyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG9tYXBfaXJxX29j cF9lcnJvcl9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQl1MzIgaXJxc3RhdHVz KQo+ICsJCQkJICAgICAgIHU2NCBpcnFzdGF0dXMpCj4gIHsKPiAtCWlmICghKGlycXN0YXR1cyAm IERJU1BDX0lSUV9PQ1BfRVJSKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JZGV2X2Vycl9yYXRlbGlt aXRlZChkZXYtPmRldiwgIk9DUCBlcnJvclxuIik7Cj4gKwlpZiAoaXJxc3RhdHVzICYgRFNTX0lS UV9ERVZJQ0VfT0NQX0VSUikKPiArCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRldi0+ZGV2LCAiT0NQ IGVycm9yXG4iKTsKPiAgfQo+ICAKPiAgc3RhdGljIGlycXJldHVybl90IG9tYXBfaXJxX2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+IEBAIC0xOTEsNDcgKzE5OCw0MCBAQCBzdGF0aWMgaXJx cmV0dXJuX3Qgb21hcF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gIAlzdHJ1Y3Qg b21hcF9pcnFfd2FpdCAqd2FpdCwgKm47Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJdW5z aWduZWQgaW50IGlkOwo+IC0JdTMyIGlycXN0YXR1czsKPiArCXU2NCBpcnFzdGF0dXMsIGNsZWFy bWFzazsKPiAgCj4gLQlpcnFzdGF0dXMgPSBwcml2LT5kaXNwY19vcHMtPnJlYWRfaXJxc3RhdHVz KCk7Cj4gLQlwcml2LT5kaXNwY19vcHMtPmNsZWFyX2lycXN0YXR1cyhpcnFzdGF0dXMpOwo+IC0J cHJpdi0+ZGlzcGNfb3BzLT5yZWFkX2lycXN0YXR1cygpOyAgICAgICAgLyogZmx1c2ggcG9zdGVk IHdyaXRlICovCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+d2FpdF9sb2NrLCBmbGFncyk7 Cj4gKwlvbWFwX2lycV9mdWxsX21hc2soZGV2LCAmY2xlYXJtYXNrKTsKPiArCWlycXN0YXR1cyA9 IHByaXYtPmRpc3BjX29wcy0+cmVhZF9pcnFzdGF0dXMoY2xlYXJtYXNrKTsKPiArCj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUod2FpdCwgbiwgJnByaXYtPndhaXRfbGlzdCwgbm9kZSkgewo+ ICsJCWlmIChpcnFzdGF0dXMgJiB3YWl0LT5pcnFtYXNrKQo+ICsJCQlvbWFwX2lycV93YWl0X2hh bmRsZXIod2FpdCk7Cj4gKwl9Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53YWl0 X2xvY2ssIGZsYWdzKTsKPiAgCj4gLQlWRVJCKCJpcnFzOiAlMDh4IiwgaXJxc3RhdHVzKTsKPiAr CVZFUkIoImlycXM6IDB4JTAxNmxseFxuIiwgaXJxc3RhdHVzKTsKPiAgCj4gIAlmb3IgKGlkID0g MDsgaWQgPCBwcml2LT5udW1fY3J0Y3M7IGlkKyspIHsKPiAgCQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBwcml2LT5jcnRjc1tpZF07Cj4gIAkJZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5lbCA9IG9t YXBfY3J0Y19jaGFubmVsKGNydGMpOwo+ICAKPiAtCQlpZiAoaXJxc3RhdHVzICYgcHJpdi0+ZGlz cGNfb3BzLT5tZ3JfZ2V0X3ZzeW5jX2lycShjaGFubmVsKSkgewo+ICsJCWlmIChpcnFzdGF0dXMg JiAoRFNTX0lSUV9NR1JfVlNZTkNfRVZFTihjaGFubmVsKSB8Cj4gKwkJCQkgRFNTX0lSUV9NR1Jf VlNZTkNfT0REKGNoYW5uZWwpKSkgewo+ICAJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIGlkKTsK PiAgCQkJb21hcF9jcnRjX3ZibGFua19pcnEoY3J0Yyk7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoaXJx c3RhdHVzICYgcHJpdi0+ZGlzcGNfb3BzLT5tZ3JfZ2V0X3N5bmNfbG9zdF9pcnEoY2hhbm5lbCkp Cj4gKwkJaWYgKGlycXN0YXR1cyAmIERTU19JUlFfTUdSX1NZTkNfTE9TVChjaGFubmVsKSkKPiAg CQkJb21hcF9jcnRjX2Vycm9yX2lycShjcnRjLCBpcnFzdGF0dXMpOwo+ICAJfQo+ICAKPiAgCW9t YXBfaXJxX29jcF9lcnJvcl9oYW5kbGVyKGRldiwgaXJxc3RhdHVzKTsKPiAgCW9tYXBfaXJxX2Zp Zm9fdW5kZXJmbG93KHByaXYsIGlycXN0YXR1cyk7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHdh aXQsIG4sICZwcml2LT53YWl0X2xpc3QsIG5vZGUpIHsKPiAtCQlpZiAod2FpdC0+aXJxbWFzayAm IGlycXN0YXR1cykKPiAtCQkJb21hcF9pcnFfd2FpdF9oYW5kbGVyKHdhaXQpOwo+IC0JfQo+IC0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+d2FpdF9sb2NrLCBmbGFncyk7Cj4gLQoKV2h5 IGRpZCB5b3UgY2hhbmdlIHRoZSBsb2NhdGlvbiB3aGVyZSB3YWl0X2hhbmRsZXIgaXMgYmVpbmcg Y2FsbGVkPwoKIFRvbWkKCi0tIApUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2Fs YW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4KWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEt NC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==