From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: Re: [PATCH v2 3/3] drm/omap: Make omapdss API more generic Date: Sun, 7 Jan 2018 22:14:59 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelnx193.ext.ti.com (lelnx193.ext.ti.com [198.47.27.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAC2B6E556 for ; Sun, 7 Jan 2018 20:15:07 +0000 (UTC) In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomi Valkeinen , dri-devel@lists.freedesktop.org Cc: peter.ujfalusi@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gMDEvMDQvMTggMTM6MTcsIFRvbWkgVmFsa2VpbmVuIHdyb3RlOgo+IEhpLAo+IAo+IE9uIDAx LzAxLzE4IDEzOjU1LCBKeXJpIFNhcmhhIHdyb3RlOgo+PiBUaGUgbmV3IG9tYXBkc3MgQVBJIGlz IEhXIGluZGVwZW5kZW50IGFuZCBjbGVhbnMgdXAgc29tZSBvZiB0aGUgRFNTNQo+PiBzcGVjaWZp YyBoYWNrcyBmcm9tIHRoZSBvbWFwZHJtIHNpZGUgYW5kIGdldHMgcmlkIG9mZiB0aGUgRFNTNSBJ UlEKPj4gcmVnaXN0ZXIgYml0cyBhbmQgcmVwbGFjZSB0aGVtIHdpdGggSFcgaW5kZXBlbmRlbnQg Z2VuZXJpYyB1NjQgYmFzZWQKPj4gbWFjcm9zLiBUaGlzIG5ldyBtYWNyb3MgbWFrZSBpdCBtb3Jl IHN0cmFpZ2h0IGZvcndhcmQgdG8gaW1wbGVtZW50IHRoZQo+PiBJUlEgY29kZSBmb3IgdGhlIGZ1 dHVyZSBEU1MgdmVyc2lvbnMgdGhhdCBkbyBub3Qgc2hhcmUgdGhlIHNhbWUKPj4gcmVnaXN0ZXIg c3RydWN0dXJlIGFzIERTUzIgdG8gRFNTNSBoYXMuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEp5cmkg U2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v ZHNzL2Rpc3BjLmMgICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4+ ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvZGlzcGMuaCAgIHwgIDMzICsrKysrKysrCj4+ ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb21hcGRzcy5oIHwgIDY0ICsrKysrKystLS0t LS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmMgICB8ICAxNiArKy0t Cj4+ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuaCAgIHwgICAyICstCj4+ICBk cml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5oICAgIHwgICAzICstCj4+ICBkcml2ZXJz L2dwdS9kcm0vb21hcGRybS9vbWFwX2lycS5jICAgIHwgMTM2ICsrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfaXJxLmggICAgfCAg IDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYyAgfCAgIDcgKysK Pj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuaCAgfCAgIDEgKwo+PiAgMTAg ZmlsZXMgY2hhbmdlZCwgMjY3IGluc2VydGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kaXNwYy5jIGIvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmMKPj4gaW5kZXggMDcwMDUzZi4uYTgwZWJlMSAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2Rpc3BjLmMKPj4gQEAgLTY5OCwyNyArNjk4 LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpkaXNwY19nZXRfbWdyX25hbWUoZW51bSBvbWFwX2No YW5uZWwgY2hhbm5lbCkKPj4gIAlyZXR1cm4gbWdyX2Rlc2NbY2hhbm5lbF0ubmFtZTsKPj4gIH0K Pj4gIAo+PiAtc3RhdGljIHUzMiBkaXNwY19tZ3JfZ2V0X3ZzeW5jX2lycShlbnVtIG9tYXBfY2hh bm5lbCBjaGFubmVsKQo+PiAtewo+PiAtCXJldHVybiBtZ3JfZGVzY1tjaGFubmVsXS52c3luY19p cnE7Cj4+IC19Cj4+IC0KPj4gLXN0YXRpYyB1MzIgZGlzcGNfbWdyX2dldF9mcmFtZWRvbmVfaXJx KGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwpCj4+ICtzdGF0aWMgYm9vbCBkaXNwY19tZ3JfaGFz X2ZyYW1lZG9uZShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKQo+PiAgewo+PiAgCWlmIChjaGFu bmVsID09IE9NQVBfRFNTX0NIQU5ORUxfRElHSVQgJiYgZGlzcGMuZmVhdC0+bm9fZnJhbWVkb25l X3R2KQo+PiAtCQlyZXR1cm4gMDsKPj4gLQo+PiAtCXJldHVybiBtZ3JfZGVzY1tjaGFubmVsXS5m cmFtZWRvbmVfaXJxOwo+PiAtfQo+PiAtCj4+IC1zdGF0aWMgdTMyIGRpc3BjX21ncl9nZXRfc3lu Y19sb3N0X2lycShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKQo+PiAtewo+PiAtCXJldHVybiBt Z3JfZGVzY1tjaGFubmVsXS5zeW5jX2xvc3RfaXJxOwo+PiAtfQo+PiArCQlyZXR1cm4gZmFsc2U7 Cj4+ICAKPj4gLXUzMiBkaXNwY193Yl9nZXRfZnJhbWVkb25lX2lycSh2b2lkKQo+PiAtewo+PiAt CXJldHVybiBESVNQQ19JUlFfRlJBTUVET05FV0I7Cj4+ICsJcmV0dXJuIHRydWU7Cj4+ICB9Cj4g Cj4gWW91IGNhbiBqdXN0IGRvCj4gCj4gcmV0dXJuIGNoYW5uZWwgIT0gT01BUF9EU1NfQ0hBTk5F TF9ESUdJVCB8fCAhZGlzcGMuZmVhdC0+bm9fZnJhbWVkb25lX3R2Owo+IAoKU3VyZSwgSSdsbCBj aGFuZ2UgdGhhdC4KCj4+ICAKPj4gIHN0YXRpYyB2b2lkIGRpc3BjX21ncl9lbmFibGUoZW51bSBv bWFwX2NoYW5uZWwgY2hhbm5lbCwgYm9vbCBlbmFibGUpCj4+IEBAIC0zNjA0LDYgKzM1ODksMTIx IEBAIHN0YXRpYyB2b2lkIGRpc3BjX3dyaXRlX2lycWVuYWJsZSh1MzIgbWFzaykKPj4gIAlkaXNw Y19yZWFkX3JlZyhESVNQQ19JUlFFTkFCTEUpOwo+PiAgfQo+PiAgCj4+ICtzdGF0aWMgdTY0IGRp c3BjX2h3X3RvX2FwaV9pcnEodTMyIGh3KQo+PiArewo+PiArCXU2NCBhcGkgPSAwOwo+PiArCj4+ ICsJaWYgKGh3ICYgRElTUENfSVJRX09DUF9FUlIpCj4+ICsJCWFwaSB8PSBEU1NfSVJRX0RFVklD RV9PQ1BfRVJSOwo+PiArCj4+ICsJaWYgKGh3ICYgRElTUENfSVJRX0ZSQU1FRE9ORSkKPj4gKwkJ YXBpIHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMCk7Cj4+ICsJaWYgKGh3ICYgRElTUENfSVJR X1ZTWU5DKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9NR1JfVlNZTkNfRVZFTigwKTsKPj4gKwlpZiAo aHcgJiBESVNQQ19JUlFfU1lOQ19MT1NUKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9NR1JfU1lOQ19M T1NUKDApOwo+PiArCj4+ICsJaWYgKGh3ICYgRElTUENfSVJRX0VWU1lOQ19FVkVOKQo+PiArCQlh cGkgfD0gRFNTX0lSUV9NR1JfVlNZTkNfRVZFTigxKTsKPj4gKwlpZiAoaHcgJiBESVNQQ19JUlFf RVZTWU5DX09ERCkKPj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX1ZTWU5DX09ERCgxKTsKPj4gKwlp ZiAoaHcgJiBESVNQQ19JUlFfU1lOQ19MT1NUX0RJR0lUKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9N R1JfU1lOQ19MT1NUKDEpOwo+PiArCWlmIChodyAmIERJU1BDX0lSUV9GUkFNRURPTkVUVikKPj4g KwkJYXBpIHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMSk7Cj4+ICsKPj4gKwlpZiAoaHcgJiBE SVNQQ19JUlFfU1lOQ19MT1NUMikKPj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX1NZTkNfTE9TVCgy KTsKPj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfVlNZTkMyKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9N R1JfVlNZTkNfRVZFTigyKTsKPj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfRlJBTUVET05FMikKPj4g KwkJYXBpIHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMik7Cj4+ICsKPj4gKwlpZiAoaHcgJiBE SVNQQ19JUlFfU1lOQ19MT1NUMykKPj4gKwkJYXBpIHw9IERTU19JUlFfTUdSX1NZTkNfTE9TVCgz KTsKPj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfVlNZTkMzKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9N R1JfVlNZTkNfRVZFTigzKTsKPj4gKwlpZiAoaHcgJiBESVNQQ19JUlFfRlJBTUVET05FMykKPj4g KwkJYXBpIHw9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMyk7Cj4+ICsKPj4gKwlpZiAoaHcgJiBE SVNQQ19JUlFfR0ZYX0ZJRk9fVU5ERVJGTE9XKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9PVkxfRklG T19VTkRFUkZMT1coMCk7Cj4+ICsJaWYgKGh3ICYgRElTUENfSVJRX1ZJRDFfRklGT19VTkRFUkZM T1cpCj4+ICsJCWFwaSB8PSBEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygxKTsKPj4gKwlpZiAo aHcgJiBESVNQQ19JUlFfVklEMl9GSUZPX1VOREVSRkxPVykKPj4gKwkJYXBpIHw9IERTU19JUlFf T1ZMX0ZJRk9fVU5ERVJGTE9XKDIpOwo+PiArCWlmIChodyAmIERJU1BDX0lSUV9WSUQzX0ZJRk9f VU5ERVJGTE9XKQo+PiArCQlhcGkgfD0gRFNTX0lSUV9PVkxfRklGT19VTkRFUkZMT1coMyk7Cj4+ ICsKPj4gKwlyZXR1cm4gYXBpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdTMyIGRpc3BjX2FwaV90 b19od19pcnEodTY0IGFwaSkKPj4gK3sKPj4gKwl1MzIgaHcgPSAwOwo+PiArCj4+ICsJaWYgKGFw aSAmIERTU19JUlFfREVWSUNFX09DUF9FUlIpCj4+ICsJCWh3IHw9IERJU1BDX0lSUV9PQ1BfRVJS Owo+PiArCj4+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoMCkpCj4+ICsJCWh3 IHw9IERJU1BDX0lSUV9GUkFNRURPTkU7Cj4+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX1ZTWU5D X0VWRU4oMCkpCj4+ICsJCWh3IHw9IERJU1BDX0lSUV9WU1lOQzsKPj4gKwlpZiAoYXBpICYgRFNT X0lSUV9NR1JfU1lOQ19MT1NUKDApKQo+PiArCQlodyB8PSBESVNQQ19JUlFfU1lOQ19MT1NUOwo+ PiArCj4+ICsJaWYgKGFwaSAmIERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oMSkpCj4+ICsJCWh3IHw9 IERJU1BDX0lSUV9FVlNZTkNfRVZFTjsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfVlNZTkNf T0REKDEpKQo+PiArCQlodyB8PSBESVNQQ19JUlFfRVZTWU5DX09ERDsKPj4gKwlpZiAoYXBpICYg RFNTX0lSUV9NR1JfU1lOQ19MT1NUKDEpKQo+PiArCQlodyB8PSBESVNQQ19JUlFfU1lOQ19MT1NU X0RJR0lUOwo+PiArCWlmIChhcGkgJiBEU1NfSVJRX01HUl9GUkFNRV9ET05FKDEpKQo+PiArCQlo dyB8PSBESVNQQ19JUlFfRlJBTUVET05FVFY7Cj4+ICsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9N R1JfU1lOQ19MT1NUKDIpKQo+PiArCQlodyB8PSBESVNQQ19JUlFfU1lOQ19MT1NUMjsKPj4gKwlp ZiAoYXBpICYgRFNTX0lSUV9NR1JfVlNZTkNfRVZFTigyKSkKPj4gKwkJaHcgfD0gRElTUENfSVJR X1ZTWU5DMjsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfRlJBTUVfRE9ORSgyKSkKPj4gKwkJ aHcgfD0gRElTUENfSVJRX0ZSQU1FRE9ORTI7Cj4+ICsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9N R1JfU1lOQ19MT1NUKDMpKQo+PiArCQlodyB8PSBESVNQQ19JUlFfU1lOQ19MT1NUMzsKPj4gKwlp ZiAoYXBpICYgRFNTX0lSUV9NR1JfVlNZTkNfRVZFTigzKSkKPj4gKwkJaHcgfD0gRElTUENfSVJR X1ZTWU5DMzsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9NR1JfRlJBTUVfRE9ORSgzKSkKPj4gKwkJ aHcgfD0gRElTUENfSVJRX0ZSQU1FRE9ORTM7Cj4+ICsKPj4gKwlpZiAoYXBpICYgRFNTX0lSUV9P VkxfRklGT19VTkRFUkZMT1coMCkpCj4+ICsJCWh3IHw9IERJU1BDX0lSUV9HRlhfRklGT19VTkRF UkZMT1c7Cj4+ICsJaWYgKGFwaSAmIERTU19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9XKDEpKQo+PiAr CQlodyB8PSBESVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxPVzsKPj4gKwlpZiAoYXBpICYgRFNT X0lSUV9PVkxfRklGT19VTkRFUkZMT1coMikpCj4+ICsJCWh3IHw9IERJU1BDX0lSUV9WSUQyX0ZJ Rk9fVU5ERVJGTE9XOwo+PiArCWlmIChhcGkgJiBEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygz KSkKPj4gKwkJaHcgfD0gRElTUENfSVJRX1ZJRDNfRklGT19VTkRFUkZMT1c7Cj4+ICsKPj4gKwly ZXR1cm4gaHc7Cj4+ICt9Cj4gCj4gSSB0aGluayB5b3UgY291bGQgaGF2ZSBhIHNpbXBsZSB0YWJs ZSB3aXRoIGh3OmFwaSBiaXQgcGFpcnMuIEFuZCB0aGVuIGEKPiBzaW1wbGUgZm9yIGxvb3AgaW4g Ym90aCB0aGUgZnVuY3Rpb25zIGFib3ZlIHRvIGRvIHRoZSB3b3JrLgo+IAoKT2ssIEknbGwgZG8g dGhhdC4KCj4+ICsKPj4gK3N0YXRpYyB1NjQgZGlzcGNfYXBpX3JlYWRfaXJxc3RhdHVzKHU2NCBj bGVhcm1hc2spCj4+ICt7Cj4+ICsJdTMyIGh3X2NsZWFybWFzayA9IGRpc3BjX2FwaV90b19od19p cnEoY2xlYXJtYXNrKTsKPj4gKwl1MzIgaHdfc3RhdHVzID0gZGlzcGNfcmVhZF9pcnFzdGF0dXMo KTsKPj4gKwo+PiArCWRpc3BjX2NsZWFyX2lycXN0YXR1cyhod19jbGVhcm1hc2sgJiBod19zdGF0 dXMpOwo+PiArCj4+ICsJcmV0dXJuIGRpc3BjX2h3X3RvX2FwaV9pcnEoaHdfc3RhdHVzKTsKPj4g K30KPiAKPiBJIHRoaW5rIHdlIGFsd2F5cyB3YW50IHRvIHJlYWQgdGhlIHdob2xlIGlycXN0YXR1 cywgYW5kIGNsZWFyIGl0LiBZb3UKPiBjYW4gZG8gdGhhdCB3aXRoIHRoZSBmdW5jdGlvbiBhYm92 ZSwgYnV0IEknbSBub3Qgc3VyZSBpZiBjbGVhcm1hc2sKPiBvZmZlcnMgdXMgYW55dGhpbmcgd2Ug ZXZlciBuZWVkIHRvIHVzZS4KPiAKCkJ1dCB0aGUgc2VtYW50aWNhbGx5IGNvcnJlY3Qgd2F5IGlz IHRvIGNsZWFyIG9ubHkgdGhlIGludGVycnVwdHMgd2UKaGFuZGxlLiBJbiB0aGVvcnkgdGhlcmUg Y291bGQgYmUgc29tZSBvdGhlciBlbnRpdHkgZm9sbG93aW5nIHNvbWUgb3RoZXIKaW50ZXJydXB0 cyBhbmQgY2xlYXJpbmcgdGhlIGludGVycnVwdHMgd2UgYXJlIG5vdCBoYW5kbGluZyBjb3VsZCBy dWluCnRoYXQuIEJ1dCBpbiBwcmFjdGljZSBhdCB0aGUgbW9tZW50IGV2ZXJ5dGhpbmcgd291bGQg d29yayBmaW5lIHdpdGhvdXQKdGhlIGNsZWFybWFzayB0b28uIElzIHRoYXQgcmVhc29uIGVub3Vn aCB0byByZW1vdmUgaXQ/Cgo+IEFsc28sIHRoaXMgZnVuY3Rpb24gYWxzbyBjbGVhcnMgdGhlIGly cXN0YXR1cywgc28gcGVyaGFwcyByZW5hbWUgdGhlCj4gZnVuY3Rpb24gdG8gcmVhZF9hbmRfY2xl YXJfaXJxc3RhdHVzIHRvIG1ha2UgaXQgb2J2aW91cywgYXMgaXQncyBxdWl0ZQo+IGFuIGltcG9y dGFudCBzaWRlIGVmZmVjdC4KPiAKClN1cmUsIEknbGwgY2hhbmdlIHRoYXQuCgo+PiArCj4+ICtz dGF0aWMgdm9pZCBkaXNwY19hcGlfd3JpdGVfaXJxZW5hYmxlKHU2NCBlbmFibGUpCj4+ICt7Cj4+ ICsJdTMyIGh3X2VuYWJsZSA9IGRpc3BjX2FwaV90b19od19pcnEoZW5hYmxlKTsKPj4gKwo+PiAr CWRpc3BjX3dyaXRlX2lycWVuYWJsZShod19lbmFibGUpOwo+PiArfQo+PiArCj4+ICB2b2lkIGRp c3BjX2VuYWJsZV9zaWRsZSh2b2lkKQo+PiAgewo+PiAgCVJFR19GTERfTU9EKERJU1BDX1NZU0NP TkZJRywgMiwgNCwgMyk7CS8qIFNJRExFTU9ERTogc21hcnQgaWRsZSAqLwo+PiBAQCAtNDQ1Myw3 ICs0NTUzLDcgQEAgc3RhdGljIHZvaWQgZGlzcGNfZXJyYXRhX2k3MzRfd2FfZmluaSh2b2lkKQo+ PiAgCj4+ICBzdGF0aWMgdm9pZCBkaXNwY19lcnJhdGFfaTczNF93YSh2b2lkKQo+PiAgewo+PiAt CXUzMiBmcmFtZWRvbmVfaXJxID0gZGlzcGNfbWdyX2dldF9mcmFtZWRvbmVfaXJxKE9NQVBfRFNT X0NIQU5ORUxfTENEKTsKPj4gKwl1MzIgZnJhbWVkb25lX2lycSA9IERJU1BDX0lSUV9GUkFNRURP TkU7Cj4+ICAJc3RydWN0IG9tYXBfb3ZlcmxheV9pbmZvIG92bGk7Cj4+ICAJc3RydWN0IGRzc19s Y2RfbWdyX2NvbmZpZyBsY2RfY29uZjsKPj4gIAl1MzIgZ2F0ZXN0YXRlOwo+PiBAQCAtNDUxMSw5 ICs0NjExLDggQEAgc3RhdGljIHZvaWQgZGlzcGNfZXJyYXRhX2k3MzRfd2Eodm9pZCkKPj4gIH0K Pj4gIAo+PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkaXNwY19vcHMgZGlzcGNfb3BzID0gewo+PiAt CS5yZWFkX2lycXN0YXR1cyA9IGRpc3BjX3JlYWRfaXJxc3RhdHVzLAo+PiAtCS5jbGVhcl9pcnFz dGF0dXMgPSBkaXNwY19jbGVhcl9pcnFzdGF0dXMsCj4+IC0JLndyaXRlX2lycWVuYWJsZSA9IGRp c3BjX3dyaXRlX2lycWVuYWJsZSwKPj4gKwkucmVhZF9pcnFzdGF0dXMgPSBkaXNwY19hcGlfcmVh ZF9pcnFzdGF0dXMsCj4+ICsJLndyaXRlX2lycWVuYWJsZSA9IGRpc3BjX2FwaV93cml0ZV9pcnFl bmFibGUsCj4+ICAKPj4gIAkucmVxdWVzdF9pcnEgPSBkaXNwY19yZXF1ZXN0X2lycSwKPj4gIAku ZnJlZV9pcnEgPSBkaXNwY19mcmVlX2lycSwKPj4gQEAgLTQ1MjcsMTMgKzQ2MjYsMTIgQEAgc3Rh dGljIHZvaWQgZGlzcGNfZXJyYXRhX2k3MzRfd2Eodm9pZCkKPj4gIAkuZ2V0X292bF9uYW1lID0g ZGlzcGNfZ2V0X292bF9uYW1lLAo+PiAgCS5nZXRfbWdyX25hbWUgPSBkaXNwY19nZXRfbWdyX25h bWUsCj4+ICAKPj4gKwkubWdyX2hhc19mcmFtZWRvbmUgPSBkaXNwY19tZ3JfaGFzX2ZyYW1lZG9u ZSwKPj4gKwo+PiAgCS5nZXRfbWVtb3J5X2JhbmR3aWR0aF9saW1pdCA9IGRpc3BjX2dldF9tZW1v cnlfYmFuZHdpZHRoX2xpbWl0LAo+PiAgCj4+ICAJLm1ncl9lbmFibGUgPSBkaXNwY19tZ3JfZW5h YmxlLAo+PiAgCS5tZ3JfaXNfZW5hYmxlZCA9IGRpc3BjX21ncl9pc19lbmFibGVkLAo+PiAtCS5t Z3JfZ2V0X3ZzeW5jX2lycSA9IGRpc3BjX21ncl9nZXRfdnN5bmNfaXJxLAo+PiAtCS5tZ3JfZ2V0 X2ZyYW1lZG9uZV9pcnEgPSBkaXNwY19tZ3JfZ2V0X2ZyYW1lZG9uZV9pcnEsCj4+IC0JLm1ncl9n ZXRfc3luY19sb3N0X2lycSA9IGRpc3BjX21ncl9nZXRfc3luY19sb3N0X2lycSwKPj4gIAkubWdy X2dvX2J1c3kgPSBkaXNwY19tZ3JfZ29fYnVzeSwKPj4gIAkubWdyX2dvID0gZGlzcGNfbWdyX2dv LAo+PiAgCS5tZ3Jfc2V0X2xjZF9jb25maWcgPSBkaXNwY19tZ3Jfc2V0X2xjZF9jb25maWcsCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvZGlzcGMuaCBiL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kaXNwYy5oCj4+IGluZGV4IGU5MDFkZDEuLmU3MTI2NmUg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kaXNwYy5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kaXNwYy5oCj4+IEBAIC0xOCw2ICsxOCwz OSBAQAo+PiAgI2lmbmRlZiBfX09NQVAyX0RJU1BDX1JFR19ICj4+ICAjZGVmaW5lIF9fT01BUDJf RElTUENfUkVHX0gKPj4gIAo+PiArLyogRElTUEMgSVJRIGJpdHMgKi8KPj4gKyNkZWZpbmUgRElT UENfSVJRX0ZSQU1FRE9ORQkJKDEgPDwgMCkKPj4gKyNkZWZpbmUgRElTUENfSVJRX1ZTWU5DCQkJ KDEgPDwgMSkKPj4gKyNkZWZpbmUgRElTUENfSVJRX0VWU1lOQ19FVkVOCQkoMSA8PCAyKQo+PiAr I2RlZmluZSBESVNQQ19JUlFfRVZTWU5DX09ERAkJKDEgPDwgMykKPj4gKyNkZWZpbmUgRElTUENf SVJRX0FDQklBU19DT1VOVF9TVEFUCSgxIDw8IDQpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9QUk9H X0xJTkVfTlVNCQkoMSA8PCA1KQo+PiArI2RlZmluZSBESVNQQ19JUlFfR0ZYX0ZJRk9fVU5ERVJG TE9XCSgxIDw8IDYpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9HRlhfRU5EX1dJTgkJKDEgPDwgNykK Pj4gKyNkZWZpbmUgRElTUENfSVJRX1BBTF9HQU1NQV9NQVNLCSgxIDw8IDgpCj4+ICsjZGVmaW5l IERJU1BDX0lSUV9PQ1BfRVJSCQkoMSA8PCA5KQo+PiArI2RlZmluZSBESVNQQ19JUlFfVklEMV9G SUZPX1VOREVSRkxPVwkoMSA8PCAxMCkKPj4gKyNkZWZpbmUgRElTUENfSVJRX1ZJRDFfRU5EX1dJ TgkJKDEgPDwgMTEpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9WSUQyX0ZJRk9fVU5ERVJGTE9XCSgx IDw8IDEyKQo+PiArI2RlZmluZSBESVNQQ19JUlFfVklEMl9FTkRfV0lOCQkoMSA8PCAxMykKPj4g KyNkZWZpbmUgRElTUENfSVJRX1NZTkNfTE9TVAkJKDEgPDwgMTQpCj4+ICsjZGVmaW5lIERJU1BD X0lSUV9TWU5DX0xPU1RfRElHSVQJKDEgPDwgMTUpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9XQUtF VVAJCSgxIDw8IDE2KQo+PiArI2RlZmluZSBESVNQQ19JUlFfU1lOQ19MT1NUMgkJKDEgPDwgMTcp Cj4+ICsjZGVmaW5lIERJU1BDX0lSUV9WU1lOQzIJCSgxIDw8IDE4KQo+PiArI2RlZmluZSBESVNQ Q19JUlFfVklEM19FTkRfV0lOCQkoMSA8PCAxOSkKPj4gKyNkZWZpbmUgRElTUENfSVJRX1ZJRDNf RklGT19VTkRFUkZMT1cJKDEgPDwgMjApCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9BQ0JJQVNfQ09V TlRfU1RBVDIJKDEgPDwgMjEpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUyCQkoMSA8 PCAyMikKPj4gKyNkZWZpbmUgRElTUENfSVJRX0ZSQU1FRE9ORVdCCQkoMSA8PCAyMykKPj4gKyNk ZWZpbmUgRElTUENfSVJRX0ZSQU1FRE9ORVRWCQkoMSA8PCAyNCkKPj4gKyNkZWZpbmUgRElTUENf SVJRX1dCQlVGRkVST1ZFUkZMT1cJKDEgPDwgMjUpCj4+ICsjZGVmaW5lIERJU1BDX0lSUV9XQlVO Q09NUExFVEVFUlJPUgkoMSA8PCAyNikKPj4gKyNkZWZpbmUgRElTUENfSVJRX1NZTkNfTE9TVDMJ CSgxIDw8IDI3KQo+PiArI2RlZmluZSBESVNQQ19JUlFfVlNZTkMzCQkoMSA8PCAyOCkKPj4gKyNk ZWZpbmUgRElTUENfSVJRX0FDQklBU19DT1VOVF9TVEFUMwkoMSA8PCAyOSkKPj4gKyNkZWZpbmUg RElTUENfSVJRX0ZSQU1FRE9ORTMJCSgxIDw8IDMwKQo+PiArCj4+ICAvKiBESVNQQyBjb21tb24g cmVnaXN0ZXJzICovCj4+ICAjZGVmaW5lIERJU1BDX1JFVklTSU9OCQkJMHgwMDAwCj4+ICAjZGVm aW5lIERJU1BDX1NZU0NPTkZJRwkJCTB4MDAxMAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vZHNzL29tYXBkc3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9v bWFwZHNzLmgKPj4gaW5kZXggZDdlZDFhNC4uYjE0OTljMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZHNzL29tYXBkc3MuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9kc3Mvb21hcGRzcy5oCj4+IEBAIC0yNywzNyArMjcsMjkgQEAKPj4gICNpbmNsdWRl IDx1YXBpL2RybS9kcm1fbW9kZS5oPgo+PiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+PiAg Cj4+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUJCSgxIDw8IDApCj4+IC0jZGVmaW5lIERJ U1BDX0lSUV9WU1lOQwkJCSgxIDw8IDEpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9FVlNZTkNfRVZF TgkJKDEgPDwgMikKPj4gLSNkZWZpbmUgRElTUENfSVJRX0VWU1lOQ19PREQJCSgxIDw8IDMpCj4+ IC0jZGVmaW5lIERJU1BDX0lSUV9BQ0JJQVNfQ09VTlRfU1RBVAkoMSA8PCA0KQo+PiAtI2RlZmlu ZSBESVNQQ19JUlFfUFJPR19MSU5FX05VTQkJKDEgPDwgNSkKPj4gLSNkZWZpbmUgRElTUENfSVJR X0dGWF9GSUZPX1VOREVSRkxPVwkoMSA8PCA2KQo+PiAtI2RlZmluZSBESVNQQ19JUlFfR0ZYX0VO RF9XSU4JCSgxIDw8IDcpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9QQUxfR0FNTUFfTUFTSwkoMSA8 PCA4KQo+PiAtI2RlZmluZSBESVNQQ19JUlFfT0NQX0VSUgkJKDEgPDwgOSkKPj4gLSNkZWZpbmUg RElTUENfSVJRX1ZJRDFfRklGT19VTkRFUkZMT1cJKDEgPDwgMTApCj4+IC0jZGVmaW5lIERJU1BD X0lSUV9WSUQxX0VORF9XSU4JCSgxIDw8IDExKQo+PiAtI2RlZmluZSBESVNQQ19JUlFfVklEMl9G SUZPX1VOREVSRkxPVwkoMSA8PCAxMikKPj4gLSNkZWZpbmUgRElTUENfSVJRX1ZJRDJfRU5EX1dJ TgkJKDEgPDwgMTMpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9TWU5DX0xPU1QJCSgxIDw8IDE0KQo+ PiAtI2RlZmluZSBESVNQQ19JUlFfU1lOQ19MT1NUX0RJR0lUCSgxIDw8IDE1KQo+PiAtI2RlZmlu ZSBESVNQQ19JUlFfV0FLRVVQCQkoMSA8PCAxNikKPj4gLSNkZWZpbmUgRElTUENfSVJRX1NZTkNf TE9TVDIJCSgxIDw8IDE3KQo+PiAtI2RlZmluZSBESVNQQ19JUlFfVlNZTkMyCQkoMSA8PCAxOCkK Pj4gLSNkZWZpbmUgRElTUENfSVJRX1ZJRDNfRU5EX1dJTgkJKDEgPDwgMTkpCj4+IC0jZGVmaW5l IERJU1BDX0lSUV9WSUQzX0ZJRk9fVU5ERVJGTE9XCSgxIDw8IDIwKQo+PiAtI2RlZmluZSBESVNQ Q19JUlFfQUNCSUFTX0NPVU5UX1NUQVQyCSgxIDw8IDIxKQo+PiAtI2RlZmluZSBESVNQQ19JUlFf RlJBTUVET05FMgkJKDEgPDwgMjIpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkVXQgkJ KDEgPDwgMjMpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkVUVgkJKDEgPDwgMjQpCj4+ IC0jZGVmaW5lIERJU1BDX0lSUV9XQkJVRkZFUk9WRVJGTE9XCSgxIDw8IDI1KQo+PiAtI2RlZmlu ZSBESVNQQ19JUlFfV0JVTkNPTVBMRVRFRVJST1IJKDEgPDwgMjYpCj4+IC0jZGVmaW5lIERJU1BD X0lSUV9TWU5DX0xPU1QzCQkoMSA8PCAyNykKPj4gLSNkZWZpbmUgRElTUENfSVJRX1ZTWU5DMwkJ KDEgPDwgMjgpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9BQ0JJQVNfQ09VTlRfU1RBVDMJKDEgPDwg MjkpCj4+IC0jZGVmaW5lIERJU1BDX0lSUV9GUkFNRURPTkUzCQkoMSA8PCAzMCkKPj4gKyNkZWZp bmUgRFNTX01BWF9DSEFOTkVMUyA4Cj4+ICsjZGVmaW5lIERTU19NQVhfT1ZMUyA4Cj4+ICsKPj4g KyNkZWZpbmUgRFNTX0lSUV9ERVZJQ0VfT0NQX0VSUgkJQklUX1VMTCgwKQo+PiArCj4+ICsjZGVm aW5lIERTU19JUlFfTUdSX0JJVF9OKGNoLCBiaXQpCSg0ICsgNCAqIGNoICsgYml0KQo+PiArI2Rl ZmluZSBEU1NfSVJRX09WTF9CSVRfTihvdmwsIGJpdCkgXAo+PiArCShEU1NfSVJRX01HUl9CSVRf TihEU1NfTUFYX0NIQU5ORUxTLCAwKSArIDEgKiBvdmwgKyBiaXQpCj4+ICsKPj4gKyNkZWZpbmUg RFNTX0lSUV9NR1JfQklUKGNoLCBiaXQpCUJJVF9VTEwoRFNTX0lSUV9NR1JfQklUX04oY2gsIGJp dCkpCj4+ICsjZGVmaW5lIERTU19JUlFfT1ZMX0JJVChvdmwsIGJpdCkJQklUX1VMTChEU1NfSVJR X09WTF9CSVRfTihvdmwsIGJpdCkpCj4+ICsKPj4gKyNkZWZpbmUgRFNTX0lSUV9NR1JfTUFTSyhj aCkgXAo+PiArCUdFTk1BU0tfVUxMKERTU19JUlFfTUdSX0JJVF9OKGNoLCAzKSwgRFNTX0lSUV9N R1JfQklUX04oY2gsIDApKQo+PiArI2RlZmluZSBEU1NfSVJRX09WTF9NQVNLKG92bCkgXAo+PiAr CUdFTk1BU0tfVUxMKERTU19JUlFfT1ZMX0JJVF9OKG92bCwgMCksIERTU19JUlFfT1ZMX0JJVF9O KG92bCwgMCkpCj4+ICsKPj4gKyNkZWZpbmUgRFNTX0lSUV9NR1JfRlJBTUVfRE9ORShjaCkJRFNT X0lSUV9NR1JfQklUKGNoLCAwKQo+PiArI2RlZmluZSBEU1NfSVJRX01HUl9WU1lOQ19FVkVOKGNo KQlEU1NfSVJRX01HUl9CSVQoY2gsIDEpCj4+ICsjZGVmaW5lIERTU19JUlFfTUdSX1ZTWU5DX09E RChjaCkJRFNTX0lSUV9NR1JfQklUKGNoLCAyKQo+PiArI2RlZmluZSBEU1NfSVJRX01HUl9TWU5D X0xPU1QoY2gpCURTU19JUlFfTUdSX0JJVChjaCwgMykKPj4gKwo+PiArI2RlZmluZSBEU1NfSVJR X09WTF9GSUZPX1VOREVSRkxPVyhvdmwpCURTU19JUlFfT1ZMX0JJVChvdmwsIDApCj4+ICAKPj4g IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2U7Cj4+ICBzdHJ1Y3QgZHNzX2xjZF9tZ3JfY29uZmlnOwo+ PiBAQCAtNjc4LDkgKzY3MCw4IEBAIHZvaWQgZHNzX21ncl91bnJlZ2lzdGVyX2ZyYW1lZG9uZV9o YW5kbGVyKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwsCj4+ICAvKiBkaXNwYyBvcHMgKi8KPj4g IAo+PiAgc3RydWN0IGRpc3BjX29wcyB7Cj4+IC0JdTMyICgqcmVhZF9pcnFzdGF0dXMpKHZvaWQp Owo+PiAtCXZvaWQgKCpjbGVhcl9pcnFzdGF0dXMpKHUzMiBtYXNrKTsKPj4gLQl2b2lkICgqd3Jp dGVfaXJxZW5hYmxlKSh1MzIgbWFzayk7Cj4+ICsJdTY0ICgqcmVhZF9pcnFzdGF0dXMpKHU2NCBj bGVhcm1hc2spOwo+PiArCXZvaWQgKCp3cml0ZV9pcnFlbmFibGUpKHU2NCBlbmFibGUpOwo+PiAg Cj4+ICAJaW50ICgqcmVxdWVzdF9pcnEpKGlycV9oYW5kbGVyX3QgaGFuZGxlciwgdm9pZCAqZGV2 X2lkKTsKPj4gIAl2b2lkICgqZnJlZV9pcnEpKHZvaWQgKmRldl9pZCk7Cj4+IEBAIC02OTQsMTMg KzY4NSwxMiBAQCBzdHJ1Y3QgZGlzcGNfb3BzIHsKPj4gIAljb25zdCBjaGFyICooKmdldF9vdmxf bmFtZSkoZW51bSBvbWFwX3BsYW5lX2lkIHBsYW5lKTsKPj4gIAljb25zdCBjaGFyICooKmdldF9t Z3JfbmFtZSkoZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5lbCk7Cj4+ICAKPj4gKwlib29sICgqbWdy X2hhc19mcmFtZWRvbmUpKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwpOwo+PiArCj4+ICAJdTMy ICgqZ2V0X21lbW9yeV9iYW5kd2lkdGhfbGltaXQpKHZvaWQpOwo+PiAgCj4+ICAJdm9pZCAoKm1n cl9lbmFibGUpKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwsIGJvb2wgZW5hYmxlKTsKPj4gIAli b29sICgqbWdyX2lzX2VuYWJsZWQpKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwpOwo+PiAtCXUz MiAoKm1ncl9nZXRfdnN5bmNfaXJxKShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKTsKPj4gLQl1 MzIgKCptZ3JfZ2V0X2ZyYW1lZG9uZV9pcnEpKGVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwpOwo+ PiAtCXUzMiAoKm1ncl9nZXRfc3luY19sb3N0X2lycSkoZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5l bCk7Cj4+ICAJYm9vbCAoKm1ncl9nb19idXN5KShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKTsK Pj4gIAl2b2lkICgqbWdyX2dvKShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsKTsKPj4gIAl2b2lk ICgqbWdyX3NldF9sY2RfY29uZmlnKShlbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsLAo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmMgYi9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9vbWFwX2NydGMuYwo+PiBpbmRleCBmZWU4YTYzLi5mN2UxNjY4IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYwo+PiBAQCAtMTQ5LDcgKzE0OSw3IEBA IHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19zZXRfZW5hYmxlZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGJvb2wgZW5hYmxlKQo+PiAgCXN0cnVjdCBvbWFwX2NydGMgKm9tYXBfY3J0YyA9IHRvX29tYXBf Y3J0YyhjcnRjKTsKPj4gIAllbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsID0gb21hcF9jcnRjLT5j aGFubmVsOwo+PiAgCXN0cnVjdCBvbWFwX2lycV93YWl0ICp3YWl0Owo+PiAtCXUzMiBmcmFtZWRv bmVfaXJxLCB2c3luY19pcnE7Cj4+ICsJdTY0IHZzeW5jX2lycSwgZnJhbWVkb25lX2lycTsKPj4g IAlpbnQgcmV0Owo+PiAgCj4+ICAJaWYgKFdBUk5fT04ob21hcF9jcnRjLT5lbmFibGVkID09IGVu YWJsZSkpCj4+IEBAIC0xNjksOCArMTY5LDEwIEBAIHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19zZXRf ZW5hYmxlZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQo+PiAgCQlvbWFwX2Ny dGMtPmlnbm9yZV9kaWdpdF9zeW5jX2xvc3QgPSB0cnVlOwo+PiAgCX0KPj4gIAo+PiAtCWZyYW1l ZG9uZV9pcnEgPSBwcml2LT5kaXNwY19vcHMtPm1ncl9nZXRfZnJhbWVkb25lX2lycShjaGFubmVs KTsKPj4gLQl2c3luY19pcnEgPSBwcml2LT5kaXNwY19vcHMtPm1ncl9nZXRfdnN5bmNfaXJxKGNo YW5uZWwpOwo+PiArCj4+ICsJdnN5bmNfaXJxID0gKERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oY2hh bm5lbCkgfAo+PiArCQkgICAgIERTU19JUlFfTUdSX1ZTWU5DX09ERChjaGFubmVsKSk7Cj4+ICsJ ZnJhbWVkb25lX2lycSA9IERTU19JUlFfTUdSX0ZSQU1FX0RPTkUoY2hhbm5lbCk7Cj4+ICAKPj4g IAlpZiAoZW5hYmxlKSB7Cj4+ICAJCXdhaXQgPSBvbWFwX2lycV93YWl0X2luaXQoZGV2LCB2c3lu Y19pcnEsIDEpOwo+PiBAQCAtMTg0LDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19z ZXRfZW5hYmxlZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQo+PiAgCQkgKiBl dmVuIGFuZCBvZGQgZnJhbWVzLgo+PiAgCQkgKi8KPj4gIAo+PiAtCQlpZiAoZnJhbWVkb25lX2ly cSkKPj4gKwkJaWYgKHByaXYtPmRpc3BjX29wcy0+bWdyX2hhc19mcmFtZWRvbmUoY2hhbm5lbCkp Cj4+ICAJCQl3YWl0ID0gb21hcF9pcnFfd2FpdF9pbml0KGRldiwgZnJhbWVkb25lX2lycSwgMSk7 Cj4+ICAJCWVsc2UKPj4gIAkJCXdhaXQgPSBvbWFwX2lycV93YWl0X2luaXQoZGV2LCB2c3luY19p cnEsIDIpOwo+PiBAQCAtMjcyLDE3ICsyNzQsMTcgQEAgc3RhdGljIHZvaWQgb21hcF9jcnRjX2Rz c191bnJlZ2lzdGVyX2ZyYW1lZG9uZSgKPj4gICAqIFNldHVwLCBGbHVzaCBhbmQgUGFnZSBGbGlw Cj4+ICAgKi8KPj4gIAo+PiAtdm9pZCBvbWFwX2NydGNfZXJyb3JfaXJxKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywgdWludDMyX3QgaXJxc3RhdHVzKQo+PiArdm9pZCBvbWFwX2NydGNfZXJyb3JfaXJx KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTY0IGlycXN0YXR1cykKPj4gIHsKPj4gIAlzdHJ1Y3Qg b21hcF9jcnRjICpvbWFwX2NydGMgPSB0b19vbWFwX2NydGMoY3J0Yyk7Cj4+ICAKPj4gIAlpZiAo b21hcF9jcnRjLT5pZ25vcmVfZGlnaXRfc3luY19sb3N0KSB7Cj4+IC0JCWlycXN0YXR1cyAmPSB+ RElTUENfSVJRX1NZTkNfTE9TVF9ESUdJVDsKPj4gKwkJaXJxc3RhdHVzICY9IH5EU1NfSVJRX01H Ul9TWU5DX0xPU1Qob21hcF9jcnRjLT5jaGFubmVsKTsKPj4gIAkJaWYgKCFpcnFzdGF0dXMpCj4+ ICAJCQlyZXR1cm47Cj4+ICAJfQo+PiAgCj4+IC0JRFJNX0VSUk9SX1JBVEVMSU1JVEVEKCIlczog ZXJyb3JzOiAlMDh4XG4iLCBvbWFwX2NydGMtPm5hbWUsIGlycXN0YXR1cyk7Cj4+ICsJRFJNX0VS Uk9SX1JBVEVMSU1JVEVEKCIlczogZXJyb3JzOiAlMDE2bGx4XG4iLCBvbWFwX2NydGMtPm5hbWUs IGlycXN0YXR1cyk7Cj4+ICB9Cj4+ICAKPj4gIHZvaWQgb21hcF9jcnRjX3ZibGFua19pcnEoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vb21hcF9jcnRjLmggYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuaAo+PiBp bmRleCBhZDdiMDA3Li41NWUyZTAyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX2NydGMuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Ny dGMuaAo+PiBAQCAtMzcsNyArMzcsNyBAQAo+PiAgc3RydWN0IGRybV9jcnRjICpvbWFwX2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKPj4gIGludCBvbWFwX2NydGNfd2Fp dF9wZW5kaW5nKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4+IC12b2lkIG9tYXBfY3J0Y19lcnJv cl9pcnEoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1aW50MzJfdCBpcnFzdGF0dXMpOwo+PiArdm9p ZCBvbWFwX2NydGNfZXJyb3JfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTY0IGlycXN0YXR1 cyk7Cj4+ICB2b2lkIG9tYXBfY3J0Y192YmxhbmtfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 Cj4+ICAKPj4gICNlbmRpZiAvKiBfX09NQVBEUk1fQ1JUQ19IX18gKi8KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX2Rydi5oCj4+IGluZGV4IDBhYzk3ZmUuLjFhNDc5ZWEgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vb21hcF9kcnYuaAo+PiBAQCAtODEsOCArODEsNyBAQCBzdHJ1Y3Qgb21hcF9k cm1fcHJpdmF0ZSB7Cj4+ICAJLyogaXJxIGhhbmRsaW5nOiAqLwo+PiAgCXNwaW5sb2NrX3Qgd2Fp dF9sb2NrOwkJLyogcHJvdGVjdHMgdGhlIHdhaXRfbGlzdCAqLwo+PiAgCXN0cnVjdCBsaXN0X2hl YWQgd2FpdF9saXN0OwkvKiBsaXN0IG9mIG9tYXBfaXJxX3dhaXQgKi8KPj4gLQl1aW50MzJfdCBp cnFfbWFzazsJCS8qIGVuYWJsZWQgaXJxcyBpbiBhZGRpdGlvbiB0byB3YWl0X2xpc3QgKi8KPj4g LQo+PiArCXU2NCBpcnFfbWFzazsJCQkvKiBlbmFibGVkIGlycXMgaW4gYWRkaXRpb24gdG8gd2Fp dF9saXN0ICovCj4+ICAJLyogbWVtb3J5IGJhbmR3aWR0aCBsaW1pdCBpZiBpdCBpcyBuZWVkZWQg b24gdGhlIHBsYXRmb3JtICovCj4+ICAJdW5zaWduZWQgaW50IG1heF9iYW5kd2lkdGg7Cj4+ICB9 Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9pcnEuYyBiL2Ry aXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfaXJxLmMKPj4gaW5kZXggYjBmNjg1MC4uNTdlYTA4 ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9pcnEuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2lycS5jCj4+IEBAIC0yMCwyNSArMjAs MjQgQEAKPj4gIHN0cnVjdCBvbWFwX2lycV93YWl0IHsKPj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIG5v ZGU7Cj4+ICAJd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Cj4+IC0JdWludDMyX3QgaXJxbWFzazsKPj4g Kwl1NjQgaXJxbWFzazsKPj4gIAlpbnQgY291bnQ7Cj4+ICB9Owo+PiAgCj4+ICAvKiBjYWxsIHdp dGggd2FpdF9sb2NrIGFuZCBkaXNwYyBydW50aW1lIGhlbGQgKi8KPj4gLXN0YXRpYyB2b2lkIG9t YXBfaXJxX3VwZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiArc3RhdGljIHZvaWQgb21h cF9pcnFfZnVsbF9tYXNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCAqaXJxbWFzaykKPj4g IHsKPj4gIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4+ICAJc3RydWN0IG9tYXBfaXJxX3dhaXQgKndhaXQ7Cj4+IC0JdWludDMyX3QgaXJxbWFzayA9 IHByaXYtPmlycV9tYXNrOwo+PiAgCj4+ICAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZwcml2LT53YWl0 X2xvY2spOwo+PiAgCj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh3YWl0LCAmcHJpdi0+d2FpdF9s aXN0LCBub2RlKQo+PiAtCQlpcnFtYXNrIHw9IHdhaXQtPmlycW1hc2s7Cj4+ICsJKmlycW1hc2sg PSBwcml2LT5pcnFfbWFzazsKPj4gIAo+PiAtCURCRygiaXJxbWFzaz0lMDh4IiwgaXJxbWFzayk7 Cj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh3YWl0LCAmcHJpdi0+d2FpdF9saXN0LCBub2RlKQo+ PiArCQkqaXJxbWFzayB8PSB3YWl0LT5pcnFtYXNrOwo+PiAgCj4+IC0JcHJpdi0+ZGlzcGNfb3Bz LT53cml0ZV9pcnFlbmFibGUoaXJxbWFzayk7Cj4+ICsJREJHKCJpcnFtYXNrIDB4JTAxNmxseCIs ICppcnFtYXNrKTsKPj4gIH0KPj4gIAo+PiAgc3RhdGljIHZvaWQgb21hcF9pcnFfd2FpdF9oYW5k bGVyKHN0cnVjdCBvbWFwX2lycV93YWl0ICp3YWl0KQo+PiBAQCAtNDgsMTkgKzQ3LDI0IEBAIHN0 YXRpYyB2b2lkIG9tYXBfaXJxX3dhaXRfaGFuZGxlcihzdHJ1Y3Qgb21hcF9pcnFfd2FpdCAqd2Fp dCkKPj4gIH0KPj4gIAo+PiAgc3RydWN0IG9tYXBfaXJxX3dhaXQgKiBvbWFwX2lycV93YWl0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gLQkJdWludDMyX3QgaXJxbWFzaywgaW50IGNv dW50KQo+PiArCQl1NjQgd2FpdG1hc2ssIGludCBjb3VudCkKPj4gIHsKPj4gIAlzdHJ1Y3Qgb21h cF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJc3RydWN0IG9tYXBf aXJxX3dhaXQgKndhaXQgPSBremFsbG9jKHNpemVvZigqd2FpdCksIEdGUF9LRVJORUwpOwo+PiAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsJdTY0IGlycW1hc2s7Cj4+ICsKPj4gKwlpZiAoIXdh aXQpCj4+ICsJCXJldHVybiBOVUxMOwo+PiAgCj4+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmd2Fp dC0+d3EpOwo+PiAtCXdhaXQtPmlycW1hc2sgPSBpcnFtYXNrOwo+PiArCXdhaXQtPmlycW1hc2sg PSB3YWl0bWFzazsKPj4gIAl3YWl0LT5jb3VudCA9IGNvdW50Owo+PiAgCj4+ICAJc3Bpbl9sb2Nr X2lycXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+PiAgCWxpc3RfYWRkKCZ3YWl0LT5u b2RlLCAmcHJpdi0+d2FpdF9saXN0KTsKPj4gLQlvbWFwX2lycV91cGRhdGUoZGV2KTsKPj4gKwlv bWFwX2lycV9mdWxsX21hc2soZGV2LCAmaXJxbWFzayk7Cj4+ICsJcHJpdi0+ZGlzcGNfb3BzLT53 cml0ZV9pcnFlbmFibGUoaXJxbWFzayk7Cj4+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJp di0+d2FpdF9sb2NrLCBmbGFncyk7Cj4+ICAKPj4gIAlyZXR1cm4gd2FpdDsKPj4gQEAgLTcxLDEz ICs3NSwxNSBAQCBpbnQgb21hcF9pcnFfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3Qgb21hcF9pcnFfd2FpdCAqd2FpdCwKPj4gIHsKPj4gIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0 ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4g Kwl1NjQgaXJxbWFzazsKPj4gIAlpbnQgcmV0Owo+PiAgCj4+ICAJcmV0ID0gd2FpdF9ldmVudF90 aW1lb3V0KHdhaXQtPndxLCAod2FpdC0+Y291bnQgPD0gMCksIHRpbWVvdXQpOwo+PiAgCj4+ICAJ c3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+PiAgCWxpc3RfZGVs KCZ3YWl0LT5ub2RlKTsKPj4gLQlvbWFwX2lycV91cGRhdGUoZGV2KTsKPj4gKwlvbWFwX2lycV9m dWxsX21hc2soZGV2LCAmaXJxbWFzayk7Cj4+ICsJcHJpdi0+ZGlzcGNfb3BzLT53cml0ZV9pcnFl bmFibGUoaXJxbWFzayk7Cj4+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+d2FpdF9s b2NrLCBmbGFncyk7Cj4+ICAKPj4gIAlrZnJlZSh3YWl0KTsKPj4gQEAgLTEwNCwxMiArMTEwLDE1 IEBAIGludCBvbWFwX2lycV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4g IAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJ dW5zaWduZWQgbG9uZyBmbGFnczsKPj4gIAllbnVtIG9tYXBfY2hhbm5lbCBjaGFubmVsID0gb21h cF9jcnRjX2NoYW5uZWwoY3J0Yyk7Cj4+ICsJdTY0IGlycW1hc2s7Cj4+ICAKPj4gIAlEQkcoImRl dj0lcCwgY3J0Yz0ldSIsIGRldiwgY2hhbm5lbCk7Cj4+ICAKPj4gIAlzcGluX2xvY2tfaXJxc2F2 ZSgmcHJpdi0+d2FpdF9sb2NrLCBmbGFncyk7Cj4+IC0JcHJpdi0+aXJxX21hc2sgfD0gcHJpdi0+ ZGlzcGNfb3BzLT5tZ3JfZ2V0X3ZzeW5jX2lycShjaGFubmVsKTsKPj4gLQlvbWFwX2lycV91cGRh dGUoZGV2KTsKPj4gKwlwcml2LT5pcnFfbWFzayB8PSBEU1NfSVJRX01HUl9WU1lOQ19FVkVOKGNo YW5uZWwpIHwKPj4gKwkJRFNTX0lSUV9NR1JfVlNZTkNfT0REKGNoYW5uZWwpOwo+PiArCW9tYXBf aXJxX2Z1bGxfbWFzayhkZXYsICZpcnFtYXNrKTsKPj4gKwlwcml2LT5kaXNwY19vcHMtPndyaXRl X2lycWVuYWJsZShpcnFtYXNrKTsKPj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53 YWl0X2xvY2ssIGZsYWdzKTsKPj4gIAo+PiAgCXJldHVybiAwOwo+PiBAQCAtMTMwLDM2ICsxMzks MzYgQEAgdm9pZCBvbWFwX2lycV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4+ICAJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICAJZW51bSBvbWFwX2NoYW5uZWwgY2hhbm5lbCA9 IG9tYXBfY3J0Y19jaGFubmVsKGNydGMpOwo+PiArCXU2NCBpcnFtYXNrOwo+PiAgCj4+ICAJREJH KCJkZXY9JXAsIGNydGM9JXUiLCBkZXYsIGNoYW5uZWwpOwo+PiAgCj4+ICAJc3Bpbl9sb2NrX2ly cXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+PiAtCXByaXYtPmlycV9tYXNrICY9IH5w cml2LT5kaXNwY19vcHMtPm1ncl9nZXRfdnN5bmNfaXJxKGNoYW5uZWwpOwo+PiAtCW9tYXBfaXJx X3VwZGF0ZShkZXYpOwo+PiArCXByaXYtPmlycV9tYXNrICY9IH4oRFNTX0lSUV9NR1JfVlNZTkNf RVZFTihjaGFubmVsKSB8Cj4+ICsJCQkgICAgRFNTX0lSUV9NR1JfVlNZTkNfT0REKGNoYW5uZWwp KTsKPj4gKwlvbWFwX2lycV9mdWxsX21hc2soZGV2LCAmaXJxbWFzayk7Cj4+ICsJcHJpdi0+ZGlz cGNfb3BzLT53cml0ZV9pcnFlbmFibGUoaXJxbWFzayk7Cj4+ICAJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdi0+d2FpdF9sb2NrLCBmbGFncyk7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyB2b2lk IG9tYXBfaXJxX2ZpZm9fdW5kZXJmbG93KHN0cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2LAo+ PiAtCQkJCSAgICB1MzIgaXJxc3RhdHVzKQo+PiArCQkJCSAgICB1NjQgaXJxc3RhdHVzKQo+PiAg ewo+PiAgCXN0YXRpYyBERUZJTkVfUkFURUxJTUlUX1NUQVRFKF9ycywgREVGQVVMVF9SQVRFTElN SVRfSU5URVJWQUwsCj4+ICAJCQkJICAgICAgREVGQVVMVF9SQVRFTElNSVRfQlVSU1QpOwo+PiAt CXN0YXRpYyBjb25zdCB1MzIgaXJxYml0c1tdID0geyBESVNQQ19JUlFfR0ZYX0ZJRk9fVU5ERVJG TE9XLAo+PiAtCQkJCSAgICAgICBESVNQQ19JUlFfVklEMV9GSUZPX1VOREVSRkxPVywKPj4gLQkJ CQkgICAgICAgRElTUENfSVJRX1ZJRDJfRklGT19VTkRFUkZMT1csCj4+IC0JCQkJICAgICAgIERJ U1BDX0lSUV9WSUQzX0ZJRk9fVU5ERVJGTE9XIH07Cj4+IC0KPj4gLQljb25zdCB1MzIgbWFzayA9 IERJU1BDX0lSUV9HRlhfRklGT19VTkRFUkZMT1cKPj4gLQkJICAgICAgIHwgRElTUENfSVJRX1ZJ RDFfRklGT19VTkRFUkZMT1cKPj4gLQkJICAgICAgIHwgRElTUENfSVJRX1ZJRDJfRklGT19VTkRF UkZMT1cKPj4gLQkJICAgICAgIHwgRElTUENfSVJRX1ZJRDNfRklGT19VTkRFUkZMT1c7Cj4+ICsJ c3RhdGljIGNvbnN0IHU2NCB1Zl9tYXNrID0KPj4gKwkJRFNTX0lSUV9PVkxfRklGT19VTkRFUkZM T1coMCkgfCBEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVygxKSB8Cj4+ICsJCURTU19JUlFfT1ZM X0ZJRk9fVU5ERVJGTE9XKDIpIHwgRFNTX0lSUV9PVkxfRklGT19VTkRFUkZMT1coMykgfAo+PiAr CQlEU1NfSVJRX09WTF9GSUZPX1VOREVSRkxPVyg0KSB8IERTU19JUlFfT1ZMX0ZJRk9fVU5ERVJG TE9XKDUpIHwKPj4gKwkJRFNTX0lSUV9PVkxfRklGT19VTkRFUkZMT1coNikgfAlEU1NfSVJRX09W TF9GSUZPX1VOREVSRkxPVyg3KTsKPiAKPiBVc2UgYSBmb3IgbG9vcCB0byBzZXR1cCB0aGUgbWFz ay4gV2l0aCB0aGUgYWJvdmUsIGlmIGluIHRoZSBmdXR1cmUgd2UKPiBjaGFuZ2UgdGhlIGlycSBi aXRzIGFuZCwgc2F5LCBjaGFuZ2UgdGhlIG51bSBvZiBvdmxzIHRvIDQsIHRoZSBhYm92ZQo+IHdp bGwgYnJlYWsuCj4gCj4+ICAJdW5zaWduZWQgaW50IGk7Cj4+ICsJdTY0IG1hc2tlZDsKPj4gIAo+ PiAgCXNwaW5fbG9jaygmcHJpdi0+d2FpdF9sb2NrKTsKPj4gLQlpcnFzdGF0dXMgJj0gcHJpdi0+ aXJxX21hc2sgJiBtYXNrOwo+PiArCW1hc2tlZCA9IGlycXN0YXR1cyAmIHVmX21hc2sgJiBwcml2 LT5pcnFfbWFzazsKPj4gIAlzcGluX3VubG9jaygmcHJpdi0+d2FpdF9sb2NrKTsKPj4gIAo+PiAt CWlmICghaXJxc3RhdHVzKQo+PiArCWlmICghbWFza2VkKQo+PiAgCQlyZXR1cm47Cj4+ICAKPj4g IAlpZiAoIV9fcmF0ZWxpbWl0KCZfcnMpKQo+PiBAQCAtMTY3LDIxICsxNzYsMTkgQEAgc3RhdGlj IHZvaWQgb21hcF9pcnFfZmlmb191bmRlcmZsb3coc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnBy aXYsCj4+ICAKPj4gIAlEUk1fRVJST1IoIkZJRk8gdW5kZXJmbG93IG9uICIpOwo+PiAgCj4+IC0J Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXJxYml0cyk7ICsraSkgewo+PiAtCQlpZiAoaXJx Yml0c1tpXSAmIGlycXN0YXR1cykKPj4gLQkJCXByX2NvbnQoIiVzICIsIHByaXYtPmRpc3BjX29w cy0+Z2V0X292bF9uYW1lKGkpKTsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgRFNTX01BWF9PVkxTOyAr K2kpIHsKPj4gKwkJaWYgKG1hc2tlZCAmIERTU19JUlFfT1ZMX0ZJRk9fVU5ERVJGTE9XKGkpKQo+ PiArCQkJcHJfY29udCgiJXU6JXMgIiwgaSwgcHJpdi0+ZGlzcGNfb3BzLT5nZXRfb3ZsX25hbWUo aSkpOwo+PiAgCX0KPj4gIAo+PiAtCXByX2NvbnQoIigweCUwOHgpXG4iLCBpcnFzdGF0dXMpOwo+ PiArCXByX2NvbnQoIiglMDE2bGx4KVxuIiwgaXJxc3RhdHVzKTsKPj4gIH0KPj4gIAo+PiAgc3Rh dGljIHZvaWQgb21hcF9pcnFfb2NwX2Vycm9yX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPj4gLQl1MzIgaXJxc3RhdHVzKQo+PiArCQkJCSAgICAgICB1NjQgaXJxc3RhdHVzKQo+PiAg ewo+PiAtCWlmICghKGlycXN0YXR1cyAmIERJU1BDX0lSUV9PQ1BfRVJSKSkKPj4gLQkJcmV0dXJu Owo+PiAtCj4+IC0JZGV2X2Vycl9yYXRlbGltaXRlZChkZXYtPmRldiwgIk9DUCBlcnJvclxuIik7 Cj4+ICsJaWYgKGlycXN0YXR1cyAmIERTU19JUlFfREVWSUNFX09DUF9FUlIpCj4+ICsJCWRldl9l cnJfcmF0ZWxpbWl0ZWQoZGV2LT5kZXYsICJPQ1AgZXJyb3JcbiIpOwo+PiAgfQo+PiAgCj4+ICBz dGF0aWMgaXJxcmV0dXJuX3Qgb21hcF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4+ IEBAIC0xOTEsNDcgKzE5OCw0MCBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgb21hcF9pcnFfaGFuZGxl cihpbnQgaXJxLCB2b2lkICphcmcpCj4+ICAJc3RydWN0IG9tYXBfaXJxX3dhaXQgKndhaXQsICpu Owo+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICAJdW5zaWduZWQgaW50IGlkOwo+PiAtCXUz MiBpcnFzdGF0dXM7Cj4+ICsJdTY0IGlycXN0YXR1cywgY2xlYXJtYXNrOwo+PiAgCj4+IC0JaXJx c3RhdHVzID0gcHJpdi0+ZGlzcGNfb3BzLT5yZWFkX2lycXN0YXR1cygpOwo+PiAtCXByaXYtPmRp c3BjX29wcy0+Y2xlYXJfaXJxc3RhdHVzKGlycXN0YXR1cyk7Cj4+IC0JcHJpdi0+ZGlzcGNfb3Bz LT5yZWFkX2lycXN0YXR1cygpOyAgICAgICAgLyogZmx1c2ggcG9zdGVkIHdyaXRlICovCj4+ICsJ c3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+PiArCW9tYXBfaXJx X2Z1bGxfbWFzayhkZXYsICZjbGVhcm1hc2spOwo+PiArCWlycXN0YXR1cyA9IHByaXYtPmRpc3Bj X29wcy0+cmVhZF9pcnFzdGF0dXMoY2xlYXJtYXNrKTsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZSh3YWl0LCBuLCAmcHJpdi0+d2FpdF9saXN0LCBub2RlKSB7Cj4+ICsJCWlmIChp cnFzdGF0dXMgJiB3YWl0LT5pcnFtYXNrKQo+PiArCQkJb21hcF9pcnFfd2FpdF9oYW5kbGVyKHdh aXQpOwo+PiArCX0KPj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53YWl0X2xvY2ss IGZsYWdzKTsKPj4gIAo+PiAtCVZFUkIoImlycXM6ICUwOHgiLCBpcnFzdGF0dXMpOwo+PiArCVZF UkIoImlycXM6IDB4JTAxNmxseFxuIiwgaXJxc3RhdHVzKTsKPj4gIAo+PiAgCWZvciAoaWQgPSAw OyBpZCA8IHByaXYtPm51bV9jcnRjczsgaWQrKykgewo+PiAgCQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBwcml2LT5jcnRjc1tpZF07Cj4+ICAJCWVudW0gb21hcF9jaGFubmVsIGNoYW5uZWwgPSBv bWFwX2NydGNfY2hhbm5lbChjcnRjKTsKPj4gIAo+PiAtCQlpZiAoaXJxc3RhdHVzICYgcHJpdi0+ ZGlzcGNfb3BzLT5tZ3JfZ2V0X3ZzeW5jX2lycShjaGFubmVsKSkgewo+PiArCQlpZiAoaXJxc3Rh dHVzICYgKERTU19JUlFfTUdSX1ZTWU5DX0VWRU4oY2hhbm5lbCkgfAo+PiArCQkJCSBEU1NfSVJR X01HUl9WU1lOQ19PREQoY2hhbm5lbCkpKSB7Cj4+ICAJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYs IGlkKTsKPj4gIAkJCW9tYXBfY3J0Y192YmxhbmtfaXJxKGNydGMpOwo+PiAgCQl9Cj4+ICAKPj4g LQkJaWYgKGlycXN0YXR1cyAmIHByaXYtPmRpc3BjX29wcy0+bWdyX2dldF9zeW5jX2xvc3RfaXJx KGNoYW5uZWwpKQo+PiArCQlpZiAoaXJxc3RhdHVzICYgRFNTX0lSUV9NR1JfU1lOQ19MT1NUKGNo YW5uZWwpKQo+PiAgCQkJb21hcF9jcnRjX2Vycm9yX2lycShjcnRjLCBpcnFzdGF0dXMpOwo+PiAg CX0KPj4gIAo+PiAgCW9tYXBfaXJxX29jcF9lcnJvcl9oYW5kbGVyKGRldiwgaXJxc3RhdHVzKTsK Pj4gIAlvbWFwX2lycV9maWZvX3VuZGVyZmxvdyhwcml2LCBpcnFzdGF0dXMpOwo+PiAgCj4+IC0J c3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPndhaXRfbG9jaywgZmxhZ3MpOwo+PiAtCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSh3YWl0LCBuLCAmcHJpdi0+d2FpdF9saXN0LCBub2RlKSB7Cj4+IC0J CWlmICh3YWl0LT5pcnFtYXNrICYgaXJxc3RhdHVzKQo+PiAtCQkJb21hcF9pcnFfd2FpdF9oYW5k bGVyKHdhaXQpOwo+PiAtCX0KPj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53YWl0 X2xvY2ssIGZsYWdzKTsKPj4gLQo+IAo+IFdoeSBkaWQgeW91IGNoYW5nZSB0aGUgbG9jYXRpb24g d2hlcmUgd2FpdF9oYW5kbGVyIGlzIGJlaW5nIGNhbGxlZD8KPiAKClNvIHRoYXQgSSB3b3VsZCBu b3QgbmVlZCB0byB0YWtlIHRoZSAmcHJpdi0+d2FpdF9sb2NrIHR3aWNlLiBGaXJzdCBmb3IKY2Fs Y3VsYXRpbmcgdGhlIHByb3BlciBjbGVhcm1hc2sgYW5kIHRoZSBhZ2FpbiBmb3IgY2hlY2tpbmcg dGhlIHdhaXRfbGlzdC4KCkNoZWVycywKSnlyaQoKLS0gClRleGFzIEluc3RydW1lbnRzIEZpbmxh bmQgT3ksIFBvcmtrYWxhbmthdHUgMjIsIDAwMTgwIEhlbHNpbmtpLgpZLXR1bm51cy9CdXNpbmVz cyBJRDogMDYxNTUyMS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK