From mboxrd@z Thu Jan 1 00:00:00 1970 From: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH 3/6] drm/msm: Remove dpu bus scaling code Date: Mon, 02 Jul 2018 22:57:20 +0530 Message-ID: References: <20180628205334.158846-1-seanpaul@chromium.org> <20180628205334.158846-4-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180628205334.158846-4-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0wNi0yOSAwMjoyMywgU2VhbiBQYXVsIHdyb3RlOgo+IFFDIGJ1cyBzY2FsaW5nIGlz bid0IHVwc3RyZWFtIHlldCwgc28gcmVtb3ZlIHRoZSBidXMgc2NhbGluZyBjb2RlIHVudGlsCj4g aXQgaXMuCgpIaSBTZWFuLApNRFA1IGRyaXZlciBkb2VzIGhhdmUgYnVzX3NjYWxpbmcgY29kZSB1 bmRlciAKRE9XTlNUUkVBTV9DT05GSUdfTVNNX0JVU19TQ0FMSU5HIGdhdGUuCk9uIHNpbWlsYXIg bGluZXMgd2Uga2VwdCB0aGUgRFBVIGJ1c19zY2FsaW5nIGNvZGUgdW5kZXIgdGhlIApDT05GSUdf UUNPTV9CVVNfU0NBTElORyAod2hpY2ggaXMgd2hhdCB1c2VkIGRvd25zdHJlYW0pIGNvbmZpZyBm b3IgRFBVIAp0b28uCkJ1dCBpZiB5b3UgdGhpbmsgd2Ugc2hvdWxkIHJlbW92ZSBpdCB0aWxsIGJ1 c19zY2FsZSBkcml2ZXIgaXMgCnVwc3RyZWFtZWQsIEkgYW0gZmluZSBicmluZ2luZyBpdCBiYWNr IGF0IGEgbGF0ZXIgcG9pbnQuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBh dWxAY2hyb21pdW0ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY29yZV9wZXJmLmMgfCAgMzUgLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jICAgICAgIHwgICA3ICstCj4gIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3Bvd2VyX2hhbmRsZS5jICB8IDUyMiArLS0tLS0tLS0tLS0tLS0tLS0KPiAgLi4uL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmggIHwgIDY1ICstLQo+ICA0IGZpbGVzIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNjI1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMKPiBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuYwo+IGluZGV4IDEwMTljZTc1 OTRmZi4uNDFjNTE5MWY5MDU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jb3JlX3BlcmYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jb3JlX3BlcmYuYwo+IEBAIC0yMjEsNyArMjIxLDYgQEAgaW50IGRwdV9jb3JlX3Bl cmZfY3J0Y19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIHN0YXRpYyBpbnQgX2RwdV9j b3JlX3BlcmZfY3J0Y191cGRhdGVfYnVzKHN0cnVjdCBkcHVfa21zICprbXMsCj4gIAkJc3RydWN0 IGRybV9jcnRjICpjcnRjLCB1MzIgYnVzX2lkKQo+ICB7Cj4gLQl1NjQgYndfc3VtX29mX2ludGZz ID0gMCwgYnVzX2FiX3F1b3RhLCBidXNfaWJfcXVvdGE7Cj4gIAlzdHJ1Y3QgZHB1X2NvcmVfcGVy Zl9wYXJhbXMgcGVyZiA9IHsgeyAwIH0gfTsKPiAgCWVudW0gZHB1X2NydGNfY2xpZW50X3R5cGUg Y3Vycl9jbGllbnRfdHlwZQo+ICAJCQkJCT0gZHB1X2NydGNfZ2V0X2NsaWVudF90eXBlKGNydGMp Owo+IEBAIC0yMzksNDUgKzIzOCwxMSBAQCBzdGF0aWMgaW50IF9kcHVfY29yZV9wZXJmX2NydGNf dXBkYXRlX2J1cyhzdHJ1Y3QKPiBkcHVfa21zICprbXMsCj4gIAkJCQltYXgocGVyZi5tYXhfcGVy X3BpcGVfaWJbYnVzX2lkXSwKPiAgCQkJCWRwdV9jc3RhdGUtPm5ld19wZXJmLm1heF9wZXJfcGlw ZV9pYltidXNfaWRdKTsKPiAKPiAtCQkJYndfc3VtX29mX2ludGZzICs9IGRwdV9jc3RhdGUtPm5l d19wZXJmLmJ3X2N0bFtidXNfaWRdOwo+IC0KPiAgCQkJRFBVX0RFQlVHKCJjcnRjPSVkIGJ1c19p ZD0lZCBidz0lbGx1XG4iLAo+ICAJCQkJdG1wX2NydGMtPmJhc2UuaWQsIGJ1c19pZCwKPiAgCQkJ CWRwdV9jc3RhdGUtPm5ld19wZXJmLmJ3X2N0bFtidXNfaWRdKTsKPiAgCQl9Cj4gIAl9Cj4gLQo+ IC0JYnVzX2FiX3F1b3RhID0gbWF4KGJ3X3N1bV9vZl9pbnRmcywgCj4ga21zLT5wZXJmLnBlcmZf dHVuZS5taW5fYnVzX3ZvdGUpOwo+IC0JYnVzX2liX3F1b3RhID0gcGVyZi5tYXhfcGVyX3BpcGVf aWJbYnVzX2lkXTsKPiAtCj4gLQlpZiAoa21zLT5wZXJmLnBlcmZfdHVuZS5tb2RlID09IERQVV9Q RVJGX01PREVfRklYRUQpIHsKPiAtCQlidXNfYWJfcXVvdGEgPSBrbXMtPnBlcmYuZml4X2NvcmVf YWJfdm90ZTsKPiAtCQlidXNfaWJfcXVvdGEgPSBrbXMtPnBlcmYuZml4X2NvcmVfaWJfdm90ZTsK PiAtCX0KPiAtCj4gLQlzd2l0Y2ggKGN1cnJfY2xpZW50X3R5cGUpIHsKPiAtCWNhc2UgTlJUX0NM SUVOVDoKPiAtCQlyZXQgPSBkcHVfcG93ZXJfZGF0YV9idXNfc2V0X3F1b3RhKAo+IC0JCQkJJmtt cy0+cGhhbmRsZSwga21zLT5jb3JlX2NsaWVudCwKPiAtCQkJCURQVV9QT1dFUl9IQU5ETEVfREFU QV9CVVNfQ0xJRU5UX05SVCwKPiAtCQkJCWJ1c19pZCwgYnVzX2FiX3F1b3RhLCBidXNfaWJfcXVv dGEpOwo+IC0JCURQVV9ERUJVRygiY2xpZW50OiVzIGJ1c19pZD0lZCBhYj0lbGx1IGliPSVsbHVc biIsICJucnQiLAo+IC0JCQkgIGJ1c19pZCwgYnVzX2FiX3F1b3RhLCBidXNfaWJfcXVvdGEpOwo+ IC0JCWJyZWFrOwo+IC0KPiAtCWNhc2UgUlRfQ0xJRU5UOgo+IC0JCXJldCA9IGRwdV9wb3dlcl9k YXRhX2J1c19zZXRfcXVvdGEoCj4gLQkJCQkma21zLT5waGFuZGxlLCBrbXMtPmNvcmVfY2xpZW50 LAo+IC0JCQkJRFBVX1BPV0VSX0hBTkRMRV9EQVRBX0JVU19DTElFTlRfUlQsCj4gLQkJCQlidXNf aWQsIGJ1c19hYl9xdW90YSwgYnVzX2liX3F1b3RhKTsKPiAtCQlEUFVfREVCVUcoImNsaWVudDol cyBidXNfaWQ9JWQgYWI9JWxsdSBpYj0lbGx1XG4iLCAicnQiLAo+IC0JCQkgIGJ1c19pZCwgYnVz X2FiX3F1b3RhLCBidXNfaWJfcXVvdGEpOwo+IC0JCWJyZWFrOwo+IC0KPiAtCWRlZmF1bHQ6Cj4g LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNsaWVudCB0eXBlOiVkXG4iLCBjdXJyX2NsaWVudF90eXBl KTsKPiAtCQlicmVhazsKPiAtCX0KPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBpbmRleCAzODg5ZTRhN2RmYmMuLjYwNWRh ODViYjUzZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBA QCAtMTI2NSwxMSArMTI2NSw3IEBAIHN0YXRpYyBpbnQgZHB1X2JpbmQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QKPiBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgCQlnb3RvIGNsa19y YXRlX2Vycm9yOwo+ICAJfQo+IAo+IC0JcmV0ID0gZHB1X3Bvd2VyX3Jlc291cmNlX2luaXQocGRl diwgJmRwdV9rbXMtPnBoYW5kbGUpOwo+IC0JaWYgKHJldCkgewo+IC0JCXByX2VycigiZHB1IHBv d2VyIHJlc291cmNlIGluaXQgZmFpbGVkXG4iKTsKPiAtCQlnb3RvIHBvd2VyX2luaXRfZmFpbDsK PiAtCX0KPiArCWRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHBkZXYsICZkcHVfa21zLT5waGFuZGxl KTsKPiAKPiAgCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRwdV9rbXMpOwo+IAo+IEBAIC0x MjgzLDcgKzEyNzksNiBAQCBzdGF0aWMgaW50IGRwdV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0Cj4gZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAlwcml2LT5rbXMgPSAmZHB1 X2ttcy0+YmFzZTsKPiAgCXJldHVybiByZXQ7Cj4gCj4gLXBvd2VyX2luaXRfZmFpbDoKPiAgY2xr X3JhdGVfZXJyb3I6Cj4gIAltc21fZHNzX3B1dF9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1f Y2xrKTsKPiAgY2xrX2dldF9lcnJvcjoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRsZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxlLmMKPiBpbmRleCBmOTk3YmQ5ZTEwOWMuLmE2OGYxMjQ5 Mzg4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93 ZXJfaGFuZGxlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93 ZXJfaGFuZGxlLmMKPiBAQCAtMjQsMTMyICsyNCw2IEBACj4gICNpbmNsdWRlICJkcHVfcG93ZXJf aGFuZGxlLmgiCj4gICNpbmNsdWRlICJkcHVfdHJhY2UuaCIKPiAKPiAtI2lmZGVmIENPTkZJR19R Q09NX0JVU19TQ0FMSU5HCj4gLSNpbmNsdWRlIDxsaW51eC9tc20tYnVzLmg+Cj4gLSNpbmNsdWRl IDxsaW51eC9tc20tYnVzLWJvYXJkLmg+Cj4gLQo+IC0jZGVmaW5lIERQVV9CVVNfVkVDVE9SX0VO VFJZKHNyY192YWwsIGRzdF92YWwsIGFiX3ZhbCwgaWJfdmFsKSBcCj4gLQl7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAtCQkuc3Jj ID0gc3JjX3ZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0J CS5kc3QgPSBkc3RfdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gLQkJLmFiID0gKGFiX3ZhbCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiAtCQkuaWIgPSAoaWJfdmFsKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+IC0JfQo+IC0KPiAtc3RhdGljIHN0cnVjdCBtc21fYnVzX3ZlY3RvcnMgZHB1 X3JlZ19idXNfdmVjdG9yc1tdID0gewo+IC0JRFBVX0JVU19WRUNUT1JfRU5UUlkoTVNNX0JVU19N QVNURVJfRklSU1QsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9ESVNQTEFZX0NGRywgMCwgMCks Cj4gLQlEUFVfQlVTX1ZFQ1RPUl9FTlRSWShNU01fQlVTX01BU1RFUl9GSVJTVCwKPiAtCQkJICAg ICBNU01fQlVTX1NMQVZFX0RJU1BMQVlfQ0ZHLCAwLCA3NjgwMDAwMCksCj4gLQlEUFVfQlVTX1ZF Q1RPUl9FTlRSWShNU01fQlVTX01BU1RFUl9GSVJTVCwKPiAtCQkJICAgICBNU01fQlVTX1NMQVZF X0RJU1BMQVlfQ0ZHLCAwLCAxNTAwMDAwMDApLAo+IC0JRFBVX0JVU19WRUNUT1JfRU5UUlkoTVNN X0JVU19NQVNURVJfRklSU1QsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9ESVNQTEFZX0NGRywg MCwgMzAwMDAwMDAwKSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c19wYXRocyBk cHVfcmVnX2J1c191c2VjYXNlc1tdID0geyB7Cj4gLQkJLm51bV9wYXRocyA9IDEsCj4gLQkJLnZl Y3RvcnMgPSAmZHB1X3JlZ19idXNfdmVjdG9yc1swXSwKPiAtfSwgewo+IC0JCS5udW1fcGF0aHMg PSAxLAo+IC0JCS52ZWN0b3JzID0gJmRwdV9yZWdfYnVzX3ZlY3RvcnNbMV0sCj4gLX0sIHsKPiAt CQkubnVtX3BhdGhzID0gMSwKPiAtCQkudmVjdG9ycyA9ICZkcHVfcmVnX2J1c192ZWN0b3JzWzJd LAo+IC19LCB7Cj4gLQkJLm51bV9wYXRocyA9IDEsCj4gLQkJLnZlY3RvcnMgPSAmZHB1X3JlZ19i dXNfdmVjdG9yc1szXSwKPiAtfSB9Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBtc21fYnVzX3NjYWxl X3BkYXRhIGRwdV9yZWdfYnVzX3NjYWxlX3RhYmxlID0gewo+IC0JLnVzZWNhc2UgPSBkcHVfcmVn X2J1c191c2VjYXNlcywKPiAtCS5udW1fdXNlY2FzZXMgPSBBUlJBWV9TSVpFKGRwdV9yZWdfYnVz X3VzZWNhc2VzKSwKPiAtCS5uYW1lID0gIm1kc3NfcmVnIiwKPiAtfTsKPiAtCj4gLXN0YXRpYyBz dHJ1Y3QgbXNtX2J1c192ZWN0b3JzIGRwdV9kYXRhX2J1c192ZWN0b3JzW10gPSB7Cj4gLQlEUFVf QlVTX1ZFQ1RPUl9FTlRSWShNU01fQlVTX01BU1RFUl9NRFBfUE9SVDAsCj4gLQkJCSAgICAgTVNN X0JVU19TTEFWRV9NTk9DX0hGX01FTV9OT0MsIDAsIDApLAo+IC0JRFBVX0JVU19WRUNUT1JfRU5U UlkoTVNNX0JVU19NQVNURVJfTURQX1BPUlQxLAo+IC0JCQkgICAgIE1TTV9CVVNfU0xBVkVfTU5P Q19IRl9NRU1fTk9DLCAwLCAwKSwKPiAtCURQVV9CVVNfVkVDVE9SX0VOVFJZKE1TTV9CVVNfTUFT VEVSX01EUF9QT1JUMCwKPiAtCQkJICAgICBNU01fQlVTX1NMQVZFX01OT0NfSEZfTUVNX05PQywg MCwgNjQwMDAwMDAwMCksCj4gLQlEUFVfQlVTX1ZFQ1RPUl9FTlRSWShNU01fQlVTX01BU1RFUl9N RFBfUE9SVDEsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9NTk9DX0hGX01FTV9OT0MsIDAsIDY0 MDAwMDAwMDApLAo+IC0JRFBVX0JVU19WRUNUT1JfRU5UUlkoTVNNX0JVU19NQVNURVJfTURQX1BP UlQwLAo+IC0JCQkgICAgIE1TTV9CVVNfU0xBVkVfTU5PQ19IRl9NRU1fTk9DLCAwLCA2NDAwMDAw MDAwKSwKPiAtCURQVV9CVVNfVkVDVE9SX0VOVFJZKE1TTV9CVVNfTUFTVEVSX01EUF9QT1JUMSwK PiAtCQkJICAgICBNU01fQlVTX1NMQVZFX01OT0NfSEZfTUVNX05PQywgMCwgNjQwMDAwMDAwMCks Cj4gLX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0IG1zbV9idXNfcGF0aHMgZHB1X2RhdGFfYnVzX3Vz ZWNhc2VzW10gPSB7IHsKPiAtCQkubnVtX3BhdGhzID0gMiwKPiAtCQkudmVjdG9ycyA9ICZkcHVf ZGF0YV9idXNfdmVjdG9yc1swXSwKPiAtfSwgewo+IC0JCS5udW1fcGF0aHMgPSAyLAo+IC0JCS52 ZWN0b3JzID0gJmRwdV9kYXRhX2J1c192ZWN0b3JzWzJdLAo+IC19LCB7Cj4gLQkJLm51bV9wYXRo cyA9IDIsCj4gLQkJLnZlY3RvcnMgPSAmZHB1X2RhdGFfYnVzX3ZlY3RvcnNbNF0sCj4gLX0gfTsK PiAtCj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c19zY2FsZV9wZGF0YSBkcHVfZGF0YV9idXNfc2Nh bGVfdGFibGUgPSB7Cj4gLQkudXNlY2FzZSA9IGRwdV9kYXRhX2J1c191c2VjYXNlcywKPiAtCS5u dW1fdXNlY2FzZXMgPSBBUlJBWV9TSVpFKGRwdV9kYXRhX2J1c191c2VjYXNlcyksCj4gLQkubmFt ZSA9ICJtZHNzX21ub2MiLAo+IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBtc21fYnVzX3ZlY3Rv cnMgZHB1X2xsY2NfYnVzX3ZlY3RvcnNbXSA9IHsKPiAtCURQVV9CVVNfVkVDVE9SX0VOVFJZKE1T TV9CVVNfTUFTVEVSX01OT0NfSEZfTUVNX05PQywKPiAtCQkJICAgICBNU01fQlVTX1NMQVZFX0xM Q0MsIDAsIDApLAo+IC0JRFBVX0JVU19WRUNUT1JfRU5UUlkoTVNNX0JVU19NQVNURVJfTU5PQ19I Rl9NRU1fTk9DLAo+IC0JCQkgICAgIE1TTV9CVVNfU0xBVkVfTExDQywgMCwgNjQwMDAwMDAwMCks Cj4gLQlEUFVfQlVTX1ZFQ1RPUl9FTlRSWShNU01fQlVTX01BU1RFUl9NTk9DX0hGX01FTV9OT0Ms Cj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9MTENDLCAwLCA2NDAwMDAwMDAwKSwKPiAtfTsKPiAt Cj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c19wYXRocyBkcHVfbGxjY19idXNfdXNlY2FzZXNbXSA9 IHsgewo+IC0JCS5udW1fcGF0aHMgPSAxLAo+IC0JCS52ZWN0b3JzID0gJmRwdV9sbGNjX2J1c192 ZWN0b3JzWzBdLAo+IC19LCB7Cj4gLQkJLm51bV9wYXRocyA9IDEsCj4gLQkJLnZlY3RvcnMgPSAm ZHB1X2xsY2NfYnVzX3ZlY3RvcnNbMV0sCj4gLX0sIHsKPiAtCQkubnVtX3BhdGhzID0gMSwKPiAt CQkudmVjdG9ycyA9ICZkcHVfbGxjY19idXNfdmVjdG9yc1syXSwKPiAtfSB9Owo+IC1zdGF0aWMg c3RydWN0IG1zbV9idXNfc2NhbGVfcGRhdGEgZHB1X2xsY2NfYnVzX3NjYWxlX3RhYmxlID0gewo+ IC0JLnVzZWNhc2UgPSBkcHVfbGxjY19idXNfdXNlY2FzZXMsCj4gLQkubnVtX3VzZWNhc2VzID0g QVJSQVlfU0laRShkcHVfbGxjY19idXNfdXNlY2FzZXMpLAo+IC0JLm5hbWUgPSAibWRzc19sbGNj IiwKPiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c192ZWN0b3JzIGRwdV9lYmlfYnVz X3ZlY3RvcnNbXSA9IHsKPiAtCURQVV9CVVNfVkVDVE9SX0VOVFJZKE1TTV9CVVNfTUFTVEVSX0xM Q0MsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9FQklfQ0gwLCAwLCAwKSwKPiAtCURQVV9CVVNf VkVDVE9SX0VOVFJZKE1TTV9CVVNfTUFTVEVSX0xMQ0MsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFW RV9FQklfQ0gwLCAwLCA2NDAwMDAwMDAwKSwKPiAtCURQVV9CVVNfVkVDVE9SX0VOVFJZKE1TTV9C VVNfTUFTVEVSX0xMQ0MsCj4gLQkJCSAgICAgTVNNX0JVU19TTEFWRV9FQklfQ0gwLCAwLCA2NDAw MDAwMDAwKSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c19wYXRocyBkcHVfZWJp X2J1c191c2VjYXNlc1tdID0geyB7Cj4gLQkJLm51bV9wYXRocyA9IDEsCj4gLQkJLnZlY3RvcnMg PSAmZHB1X2ViaV9idXNfdmVjdG9yc1swXSwKPiAtfSwgewo+IC0JCS5udW1fcGF0aHMgPSAxLAo+ IC0JCS52ZWN0b3JzID0gJmRwdV9lYmlfYnVzX3ZlY3RvcnNbMV0sCj4gLX0sIHsKPiAtCQkubnVt X3BhdGhzID0gMSwKPiAtCQkudmVjdG9ycyA9ICZkcHVfZWJpX2J1c192ZWN0b3JzWzJdLAo+IC19 IH07Cj4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2J1c19zY2FsZV9wZGF0YSBkcHVfZWJpX2J1c19zY2Fs ZV90YWJsZSA9IHsKPiAtCS51c2VjYXNlID0gZHB1X2ViaV9idXNfdXNlY2FzZXMsCj4gLQkubnVt X3VzZWNhc2VzID0gQVJSQVlfU0laRShkcHVfZWJpX2J1c191c2VjYXNlcyksCj4gLQkubmFtZSA9 ICJtZHNzX2ViaSIsCj4gLX07Cj4gLSNlbmRpZgo+IC0KPiAgc3RhdGljIGNvbnN0IGNoYXIgKmRh dGFfYnVzX25hbWVbRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01BWF0gPSB7Cj4gIAlbRFBVX1BP V0VSX0hBTkRMRV9EQlVTX0lEX01OT0NdID0gInFjb20sZHB1LWRhdGEtYnVzIiwKPiAgCVtEUFVf UE9XRVJfSEFORExFX0RCVVNfSURfTExDQ10gPSAicWNvbSxkcHUtbGxjYy1idXMiLAo+IEBAIC0y MjIsMzY2ICs5NiwxNSBAQCB2b2lkIGRwdV9wb3dlcl9jbGllbnRfZGVzdHJveShzdHJ1Y3QKPiBk cHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAo+ICAJfQo+ICB9CmRwdV9wb3dlcl9oYW5kbGVfZ2V0 X2RidXNfbmFtZSBpcyB1bnVzZWQsIHBsZWFzZSByZW1vdmUgaXQuCkFsc28gZGF0YV9idXNfbmFt ZSBjYW4gYmUgcmVtb3ZlZC4KClRoYW5rcywKUmFqZXNoCgo+IAo+IC0jaWZkZWYgQ09ORklHX1FD T01fQlVTX1NDQUxJTkcKPiAtCj4gLSNkZWZpbmUgTUFYX0FYSV9QT1JUX0NPVU5UIDMKPiAtCj4g LXN0YXRpYyBpbnQgX2RwdV9wb3dlcl9kYXRhX2J1c19zZXRfcXVvdGEoCj4gLQkJc3RydWN0IGRw dV9wb3dlcl9kYXRhX2J1c19oYW5kbGUgKnBkYnVzLAo+IC0JCXU2NCBhYl9xdW90YV9ydCwgdTY0 IGFiX3F1b3RhX25ydCwKPiAtCQl1NjQgaWJfcXVvdGFfcnQsIHU2NCBpYl9xdW90YV9ucnQpCj4g LXsKPiAtCWludCBuZXdfdWNfaWR4Owo+IC0JdTY0IGFiX3F1b3RhW01BWF9BWElfUE9SVF9DT1VO VF0gPSB7MCwgMH07Cj4gLQl1NjQgaWJfcXVvdGFbTUFYX0FYSV9QT1JUX0NPVU5UXSA9IHswLCAw fTsKPiAtCWludCByYzsKPiAtCj4gLQlpZiAocGRidXMtPmRhdGFfYnVzX2hkbCA8IDEpIHsKPiAt CQlwcl9lcnIoImludmFsaWQgYnVzIGhhbmRsZSAlZFxuIiwgcGRidXMtPmRhdGFfYnVzX2hkbCk7 Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JcGRidXMtPmFiX3J0ID0gYWJfcXVv dGFfcnQ7Cj4gLQlwZGJ1cy0+aWJfcnQgPSBpYl9xdW90YV9ydDsKPiAtCXBkYnVzLT5hYl9ucnQg PSBhYl9xdW90YV9ucnQ7Cj4gLQlwZGJ1cy0+aWJfbnJ0ID0gaWJfcXVvdGFfbnJ0Owo+IC0KPiAt CWlmIChwZGJ1cy0+ZW5hYmxlKSB7Cj4gLQkJYWJfcXVvdGFfcnQgPSBtYXhfdCh1NjQsIGFiX3F1 b3RhX3J0LAo+IC0JCQkJRFBVX1BPV0VSX0hBTkRMRV9FTkFCTEVfQlVTX0FCX1FVT1RBKTsKPiAt CQlpYl9xdW90YV9ydCA9IG1heF90KHU2NCwgaWJfcXVvdGFfcnQsCj4gLQkJCQlEUFVfUE9XRVJf SEFORExFX0VOQUJMRV9CVVNfSUJfUVVPVEEpOwo+IC0JCWFiX3F1b3RhX25ydCA9IG1heF90KHU2 NCwgYWJfcXVvdGFfbnJ0LAo+IC0JCQkJRFBVX1BPV0VSX0hBTkRMRV9FTkFCTEVfQlVTX0FCX1FV T1RBKTsKPiAtCQlpYl9xdW90YV9ucnQgPSBtYXhfdCh1NjQsIGliX3F1b3RhX25ydCwKPiAtCQkJ CURQVV9QT1dFUl9IQU5ETEVfRU5BQkxFX0JVU19JQl9RVU9UQSk7Cj4gLQl9IGVsc2Ugewo+IC0J CWFiX3F1b3RhX3J0ID0gbWluX3QodTY0LCBhYl9xdW90YV9ydCwKPiAtCQkJCURQVV9QT1dFUl9I QU5ETEVfRElTQUJMRV9CVVNfQUJfUVVPVEEpOwo+IC0JCWliX3F1b3RhX3J0ID0gbWluX3QodTY0 LCBpYl9xdW90YV9ydCwKPiAtCQkJCURQVV9QT1dFUl9IQU5ETEVfRElTQUJMRV9CVVNfSUJfUVVP VEEpOwo+IC0JCWFiX3F1b3RhX25ydCA9IG1pbl90KHU2NCwgYWJfcXVvdGFfbnJ0LAo+IC0JCQkJ RFBVX1BPV0VSX0hBTkRMRV9ESVNBQkxFX0JVU19BQl9RVU9UQSk7Cj4gLQkJaWJfcXVvdGFfbnJ0 ID0gbWluX3QodTY0LCBpYl9xdW90YV9ucnQsCj4gLQkJCQlEUFVfUE9XRVJfSEFORExFX0RJU0FC TEVfQlVTX0lCX1FVT1RBKTsKPiAtCX0KPiAtCj4gLQlpZiAoIWFiX3F1b3RhX3J0ICYmICFhYl9x dW90YV9ucnQgJiYgIWliX3F1b3RhX3J0ICYmICFpYl9xdW90YV9ucnQpICAKPiB7Cj4gLQkJbmV3 X3VjX2lkeCA9IDA7Cj4gLQl9IGVsc2Ugewo+IC0JCWludCBpOwo+IC0JCXN0cnVjdCBtc21fYnVz X3ZlY3RvcnMgKnZlY3QgPSBOVUxMOwo+IC0JCXN0cnVjdCBtc21fYnVzX3NjYWxlX3BkYXRhICpi d190YWJsZSA9Cj4gLQkJCXBkYnVzLT5kYXRhX2J1c19zY2FsZV90YWJsZTsKPiAtCQl1MzIgbnJ0 X2F4aV9wb3J0X2NudCA9IHBkYnVzLT5ucnRfYXhpX3BvcnRfY250Owo+IC0JCXUzMiB0b3RhbF9h eGlfcG9ydF9jbnQgPSBwZGJ1cy0+YXhpX3BvcnRfY250Owo+IC0JCXUzMiBydF9heGlfcG9ydF9j bnQgPSB0b3RhbF9heGlfcG9ydF9jbnQgLSBucnRfYXhpX3BvcnRfY250Owo+IC0KPiAtCQlpZiAo IWJ3X3RhYmxlIHx8ICF0b3RhbF9heGlfcG9ydF9jbnQgfHwKPiAtCQkgICAgdG90YWxfYXhpX3Bv cnRfY250ID4gTUFYX0FYSV9QT1JUX0NPVU5UKSB7Cj4gLQkJCXByX2VycigiaW52YWxpZCBpbnB1 dFxuIik7Cj4gLQkJCXJldHVybiAtRUlOVkFMOwo+IC0JCX0KPiAtCj4gLQkJaWYgKHBkYnVzLT5i dXNfY2hhbm5lbHMpIHsKPiAtCQkJaWJfcXVvdGFfcnQgPSBkaXZfdTY0KGliX3F1b3RhX3J0LAo+ IC0JCQkJCQlwZGJ1cy0+YnVzX2NoYW5uZWxzKTsKPiAtCQkJaWJfcXVvdGFfbnJ0ID0gZGl2X3U2 NChpYl9xdW90YV9ucnQsCj4gLQkJCQkJCXBkYnVzLT5idXNfY2hhbm5lbHMpOwo+IC0JCX0KPiAt Cj4gLQkJaWYgKG5ydF9heGlfcG9ydF9jbnQpIHsKPiAtCj4gLQkJCWFiX3F1b3RhX3J0ID0gZGl2 X3U2NChhYl9xdW90YV9ydCwgcnRfYXhpX3BvcnRfY250KTsKPiAtCQkJYWJfcXVvdGFfbnJ0ID0g ZGl2X3U2NChhYl9xdW90YV9ucnQsIG5ydF9heGlfcG9ydF9jbnQpOwo+IC0KPiAtCQkJZm9yIChp ID0gMDsgaSA8IHRvdGFsX2F4aV9wb3J0X2NudDsgaSsrKSB7Cj4gLQkJCQlpZiAoaSA8IHJ0X2F4 aV9wb3J0X2NudCkgewo+IC0JCQkJCWFiX3F1b3RhW2ldID0gYWJfcXVvdGFfcnQ7Cj4gLQkJCQkJ aWJfcXVvdGFbaV0gPSBpYl9xdW90YV9ydDsKPiAtCQkJCX0gZWxzZSB7Cj4gLQkJCQkJYWJfcXVv dGFbaV0gPSBhYl9xdW90YV9ucnQ7Cj4gLQkJCQkJaWJfcXVvdGFbaV0gPSBpYl9xdW90YV9ucnQ7 Cj4gLQkJCQl9Cj4gLQkJCX0KPiAtCQl9IGVsc2Ugewo+IC0JCQlhYl9xdW90YVswXSA9IGRpdl91 NjQoYWJfcXVvdGFfcnQgKyBhYl9xdW90YV9ucnQsCj4gLQkJCQkJdG90YWxfYXhpX3BvcnRfY250 KTsKPiAtCQkJaWJfcXVvdGFbMF0gPSBpYl9xdW90YV9ydCArIGliX3F1b3RhX25ydDsKPiAtCj4g LQkJCWZvciAoaSA9IDE7IGkgPCB0b3RhbF9heGlfcG9ydF9jbnQ7IGkrKykgewo+IC0JCQkJYWJf cXVvdGFbaV0gPSBhYl9xdW90YVswXTsKPiAtCQkJCWliX3F1b3RhW2ldID0gaWJfcXVvdGFbMF07 Cj4gLQkJCX0KPiAtCQl9Cj4gLQo+IC0JCW5ld191Y19pZHggPSAocGRidXMtPmN1cnJfYndfdWNf aWR4ICUKPiAtCQkJKGJ3X3RhYmxlLT5udW1fdXNlY2FzZXMgLSAxKSkgKyAxOwo+IC0KPiAtCQlm b3IgKGkgPSAwOyBpIDwgdG90YWxfYXhpX3BvcnRfY250OyBpKyspIHsKPiAtCQkJdmVjdCA9ICZi d190YWJsZS0+dXNlY2FzZVtuZXdfdWNfaWR4XS52ZWN0b3JzW2ldOwo+IC0JCQl2ZWN0LT5hYiA9 IGFiX3F1b3RhW2ldOwo+IC0JCQl2ZWN0LT5pYiA9IGliX3F1b3RhW2ldOwo+IC0KPiAtCQkJcHJf ZGVidWcoCj4gLQkJCQkiJXMgdWNfaWR4PSVkICVzIHBhdGggaWR4PSVkIGFiPSVsbHUgaWI9JWxs dVxuIiwKPiAtCQkJCWJ3X3RhYmxlLT5uYW1lLAo+IC0JCQkJbmV3X3VjX2lkeCwgKGkgPCBydF9h eGlfcG9ydF9jbnQpID8gInJ0IiA6ICJucnQiCj4gLQkJCQksIGksIHZlY3QtPmFiLCB2ZWN0LT5p Yik7Cj4gLQkJfQo+IC0JfQo+IC0JcGRidXMtPmN1cnJfYndfdWNfaWR4ID0gbmV3X3VjX2lkeDsK PiAtCXBkYnVzLT5hb19id191Y19pZHggPSBuZXdfdWNfaWR4Owo+IC0KPiAtCURQVV9BVFJBQ0Vf QkVHSU4oIm1zbV9idXNfc2NhbGVfcmVxIik7Cj4gLQlyYyA9IG1zbV9idXNfc2NhbGVfY2xpZW50 X3VwZGF0ZV9yZXF1ZXN0KHBkYnVzLT5kYXRhX2J1c19oZGwsCj4gLQkJCW5ld191Y19pZHgpOwo+ IC0JRFBVX0FUUkFDRV9FTkQoIm1zbV9idXNfc2NhbGVfcmVxIik7Cj4gLQo+IC0JcmV0dXJuIHJj Owo+IC19Cj4gLQo+IC1pbnQgZHB1X3Bvd2VyX2RhdGFfYnVzX3NldF9xdW90YShzdHJ1Y3QgZHB1 X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAtCQlzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudCAqcGNs aWVudCwKPiAtCQlpbnQgYnVzX2NsaWVudCwgdTMyIGJ1c19pZCwKPiAtCQl1NjQgYWJfcXVvdGEs IHU2NCBpYl9xdW90YSkKPiAtewo+IC0JaW50IHJjID0gMDsKPiAtCWludCBpOwo+IC0JdTY0IHRv dGFsX2FiX3J0ID0gMCwgdG90YWxfaWJfcnQgPSAwOwo+IC0JdTY0IHRvdGFsX2FiX25ydCA9IDAs IHRvdGFsX2liX25ydCA9IDA7Cj4gLQlzdHJ1Y3QgZHB1X3Bvd2VyX2NsaWVudCAqY2xpZW50Owo+ IC0KPiAtCWlmICghcGhhbmRsZSB8fCAhcGNsaWVudCB8fAo+IC0JCQlidXNfY2xpZW50ID49IERQ VV9QT1dFUl9IQU5ETEVfREFUQV9CVVNfQ0xJRU5UX01BWCB8fAo+IC0JCQlidXNfaWQgPj0gRFBV X1BPV0VSX0hBTkRMRV9EQlVTX0lEX01BWCkgewo+IC0JCXByX2VycigiaW52YWxpZCBwYXJhbWV0 ZXJzXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQltdXRleF9sb2NrKCZw aGFuZGxlLT5waGFuZGxlX2xvY2spOwo+IC0KPiAtCXBjbGllbnQtPmFiW2J1c19jbGllbnRdID0g YWJfcXVvdGE7Cj4gLQlwY2xpZW50LT5pYltidXNfY2xpZW50XSA9IGliX3F1b3RhOwo+IC0JdHJh Y2VfZHB1X3BlcmZfdXBkYXRlX2J1cyhidXNfY2xpZW50LCBhYl9xdW90YSwgaWJfcXVvdGEpOwo+ IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoY2xpZW50LCAmcGhhbmRsZS0+cG93ZXJfY2xpZW50 X2NsaXN0LCBsaXN0KSB7Cj4gLQkJZm9yIChpID0gMDsgaSA8IERQVV9QT1dFUl9IQU5ETEVfREFU QV9CVVNfQ0xJRU5UX01BWDsgaSsrKSB7Cj4gLQkJCWlmIChpID09IERQVV9QT1dFUl9IQU5ETEVf REFUQV9CVVNfQ0xJRU5UX05SVCkgewo+IC0JCQkJdG90YWxfYWJfbnJ0ICs9IGNsaWVudC0+YWJb aV07Cj4gLQkJCQl0b3RhbF9pYl9ucnQgKz0gY2xpZW50LT5pYltpXTsKPiAtCQkJfSBlbHNlIHsK PiAtCQkJCXRvdGFsX2FiX3J0ICs9IGNsaWVudC0+YWJbaV07Cj4gLQkJCQl0b3RhbF9pYl9ydCA9 IG1heCh0b3RhbF9pYl9ydCwgY2xpZW50LT5pYltpXSk7Cj4gLQkJCX0KPiAtCQl9Cj4gLQl9Cj4g LQo+IC0JaWYgKHBoYW5kbGUtPmRhdGFfYnVzX2hhbmRsZVtidXNfaWRdLmRhdGFfYnVzX2hkbCkK PiAtCQlyYyA9IF9kcHVfcG93ZXJfZGF0YV9idXNfc2V0X3F1b3RhKAo+IC0JCQkmcGhhbmRsZS0+ ZGF0YV9idXNfaGFuZGxlW2J1c19pZF0sCj4gLQkJCXRvdGFsX2FiX3J0LCB0b3RhbF9hYl9ucnQs Cj4gLQkJCXRvdGFsX2liX3J0LCB0b3RhbF9pYl9ucnQpOwo+IC0KPiAtCW11dGV4X3VubG9jaygm cGhhbmRsZS0+cGhhbmRsZV9sb2NrKTsKPiAtCj4gLQlyZXR1cm4gcmM7Cj4gLX0KPiAtCj4gLXN0 YXRpYyB2b2lkIGRwdV9wb3dlcl9kYXRhX2J1c191bnJlZ2lzdGVyKAo+IC0JCXN0cnVjdCBkcHVf cG93ZXJfZGF0YV9idXNfaGFuZGxlICpwZGJ1cykKPiAtewo+IC0JaWYgKHBkYnVzLT5kYXRhX2J1 c19oZGwpIHsKPiAtCQltc21fYnVzX3NjYWxlX3VucmVnaXN0ZXJfY2xpZW50KHBkYnVzLT5kYXRh X2J1c19oZGwpOwo+IC0JCXBkYnVzLT5kYXRhX2J1c19oZGwgPSAwOwo+IC0JfQo+IC19Cj4gLQo+ IC1zdGF0aWMgaW50IGRwdV9wb3dlcl9kYXRhX2J1c19yZWdpc3RlcihzdHJ1Y3QgZHB1X3Bvd2Vy X2hhbmRsZSAKPiAqcGhhbmRsZSwKPiAtCQlpbnQgaW5kZXgpCj4gLXsKPiAtCXN0cnVjdCBkcHVf cG93ZXJfZGF0YV9idXNfaGFuZGxlICpwZGJ1cyA9IAo+ICZwaGFuZGxlLT5kYXRhX2J1c19oYW5k bGVbaW5kZXhdOwo+IC0KPiAtCXBkYnVzLT5idXNfY2hhbm5lbHMgPSAyOwo+IC0JcGRidXMtPm5y dF9heGlfcG9ydF9jbnQgPSAwOwo+IC0JcGRidXMtPmF4aV9wb3J0X2NudCA9IDE7Cj4gLQo+IC0J c3dpdGNoIChpbmRleCkgewo+IC0JY2FzZSBEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTU5PQzoK PiAtCQlwZGJ1cy0+ZGF0YV9idXNfc2NhbGVfdGFibGUgPSAmZHB1X2RhdGFfYnVzX3NjYWxlX3Rh YmxlOwo+IC0JCXBkYnVzLT5heGlfcG9ydF9jbnQgPSAyOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBE UFVfUE9XRVJfSEFORExFX0RCVVNfSURfTExDQzoKPiAtCQlwZGJ1cy0+ZGF0YV9idXNfc2NhbGVf dGFibGUgPSAmZHB1X2xsY2NfYnVzX3NjYWxlX3RhYmxlOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBE UFVfUE9XRVJfSEFORExFX0RCVVNfSURfRUJJOgo+IC0JCXBkYnVzLT5kYXRhX2J1c19zY2FsZV90 YWJsZSA9ICZkcHVfZWJpX2J1c19zY2FsZV90YWJsZTsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6 Cj4gLQkJcHJfZXJyKCJpbnZhbGlkIGRhdGFfYnVzIHR5cGU6ICVkIiwgaW5kZXgpOwo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCXBkYnVzLT5kYXRhX2J1c19oZGwgPSBtc21fYnVz X3NjYWxlX3JlZ2lzdGVyX2NsaWVudCgKPiAtCQkJcGRidXMtPmRhdGFfYnVzX3NjYWxlX3RhYmxl KTsKPiAtCWlmICghcGRidXMtPmRhdGFfYnVzX2hkbCkgewo+IC0JCXByX2VycigiZGF0YV9idXNf Y2xpZW50IHJlZ2lzdGVyIGZhaWxlZFxuIik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4g LQlwcl9kZWJ1ZygicmVnaXN0ZXIgJXMgZGF0YV9idXNfaGRsPSV4XG4iLCBkYXRhX2J1c19uYW1l W2luZGV4XSwKPiAtCQkJcGRidXMtPmRhdGFfYnVzX2hkbCk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4g LX0KPiAtCj4gLXN0YXRpYyBpbnQgZHB1X3Bvd2VyX3JlZ19idXNfcmVnaXN0ZXIoc3RydWN0IGRw dV9wb3dlcl9oYW5kbGUgCj4gKnBoYW5kbGUpCj4gLXsKPiAtCXBoYW5kbGUtPnJlZ19idXNfaGRs ID0gbXNtX2J1c19zY2FsZV9yZWdpc3Rlcl9jbGllbnQoCj4gLQkJCSZkcHVfcmVnX2J1c19zY2Fs ZV90YWJsZSk7Cj4gLQlpZiAoIXBoYW5kbGUtPnJlZ19idXNfaGRsKSB7Cj4gLQkJcHJfZXJyKCJy ZWdfYnVzX2NsaWVudCByZWdpc3RlciBmYWlsZWRcbiIpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+ IC0JfQo+IC0JcHJfZGVidWcoInJlZ2lzdGVyIHJlZ19idXNfaGRsPSV4XG4iLCBwaGFuZGxlLT5y ZWdfYnVzX2hkbCk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGRw dV9wb3dlcl9yZWdfYnVzX3VucmVnaXN0ZXIodTMyIHJlZ19idXNfaGRsKQo+IC17Cj4gLQlpZiAo cmVnX2J1c19oZGwpCj4gLQkJbXNtX2J1c19zY2FsZV91bnJlZ2lzdGVyX2NsaWVudChyZWdfYnVz X2hkbCk7Cj4gLX0KPiAtCj4gLWludCBkcHVfcG93ZXJfZGF0YV9idXNfc3RhdGVfdXBkYXRlKHN0 cnVjdCBkcHVfcG93ZXJfaGFuZGxlICpwaGFuZGxlLAo+IC0JCQkJCQkJYm9vbCBlbmFibGUpCj4g LXsKPiAtCWludCBpOwo+IC0KPiAtCWlmICghcGhhbmRsZSkgewo+IC0JCXByX2VycigiaW52YWxp ZCBwYXJhbVxuIik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JZm9yIChpID0g RFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01OT0M7Cj4gLQkJCWkgPCBEUFVfUE9XRVJfSEFORExF X0RCVVNfSURfTUFYOyBpKyspCj4gLQkJcGhhbmRsZS0+ZGF0YV9idXNfaGFuZGxlW2ldLmVuYWJs ZSA9IGVuYWJsZTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkcHVf cG93ZXJfZGF0YV9idXNfdXBkYXRlKHN0cnVjdCBkcHVfcG93ZXJfZGF0YV9idXNfaGFuZGxlIAo+ ICpwZGJ1cywKPiAtCQkJCQkJCWJvb2wgZW5hYmxlKQo+IC17Cj4gLQlpbnQgcmMgPSAwOwo+IC0K PiAtCXBkYnVzLT5lbmFibGUgPSBlbmFibGU7Cj4gLQo+IC0JaWYgKHBkYnVzLT5kYXRhX2J1c19o ZGwpCj4gLQkJcmMgPSBfZHB1X3Bvd2VyX2RhdGFfYnVzX3NldF9xdW90YShwZGJ1cywgcGRidXMt PmFiX3J0LAo+IC0JCQkJcGRidXMtPmFiX25ydCwgcGRidXMtPmliX3J0LCBwZGJ1cy0+aWJfbnJ0 KTsKPiAtCj4gLQlpZiAocmMpCj4gLQkJcHJfZXJyKCJmYWlsZWQgdG8gc2V0IGRhdGEgYnVzIHZv dGUgcmM9JWQgZW5hYmxlOiVkXG4iLAo+IC0JCQkJCQkJcmMsIGVuYWJsZSk7Cj4gLQo+IC0JcmV0 dXJuIHJjOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9wb3dlcl9yZWdfYnVzX3VwZGF0ZSh1 MzIgcmVnX2J1c19oZGwsIHUzMiB1c2VjYXNlX25keCkKPiAtewo+IC0JaW50IHJjID0gMDsKPiAt Cj4gLQlpZiAocmVnX2J1c19oZGwpCj4gLQkJcmMgPSBtc21fYnVzX3NjYWxlX2NsaWVudF91cGRh dGVfcmVxdWVzdChyZWdfYnVzX2hkbCwKPiAtCQkJCQkJCQl1c2VjYXNlX25keCk7Cj4gLQlpZiAo cmMpCj4gLQkJcHJfZXJyKCJmYWlsZWQgdG8gc2V0IHJlZyBidXMgdm90ZSByYz0lZFxuIiwgcmMp Owo+IC0KPiAtCXJldHVybiByYzsKPiAtfQo+IC0jZWxzZQo+IC1zdGF0aWMgaW50IGRwdV9wb3dl cl9kYXRhX2J1c19yZWdpc3RlcihzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAKPiAqcGhhbmRsZSwK PiAtCQlpbnQgaW5kZXgpCj4gLXsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9p ZCBkcHVfcG93ZXJfZGF0YV9idXNfdW5yZWdpc3RlcigKPiAtCQlzdHJ1Y3QgZHB1X3Bvd2VyX2Rh dGFfYnVzX2hhbmRsZSAqcGRidXMpCj4gLXsKPiAtfQo+IC0KPiAtaW50IGRwdV9wb3dlcl9kYXRh X2J1c19zZXRfcXVvdGEoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCj4gLQkJc3Ry dWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQsCj4gLQkJaW50IGJ1c19jbGllbnQsIHUzMiBi dXNfaWQsCj4gLQkJdTY0IGFiX3F1b3RhLCB1NjQgaWJfcXVvdGEpCj4gLXsKPiAtCXJldHVybiAw Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9wb3dlcl9yZWdfYnVzX3JlZ2lzdGVyKHN0cnVj dCBkcHVfcG93ZXJfaGFuZGxlIAo+ICpwaGFuZGxlKQo+IC17Cj4gLQlyZXR1cm4gMDsKPiAtfQo+ IC0KPiAtc3RhdGljIHZvaWQgZHB1X3Bvd2VyX3JlZ19idXNfdW5yZWdpc3Rlcih1MzIgcmVnX2J1 c19oZGwpCj4gLXsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkcHVfcG93ZXJfcmVnX2J1c191cGRh dGUodTMyIHJlZ19idXNfaGRsLCB1MzIgdXNlY2FzZV9uZHgpCj4gLXsKPiAtCXJldHVybiAwOwo+ IC19Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9wb3dlcl9kYXRhX2J1c191cGRhdGUoc3RydWN0IGRw dV9wb3dlcl9kYXRhX2J1c19oYW5kbGUgCj4gKnBkYnVzLAo+IC0JCQkJCQkJYm9vbCBlbmFibGUp Cj4gLXsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1pbnQgZHB1X3Bvd2VyX2RhdGFfYnVzX3N0 YXRlX3VwZGF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAtCQkJCQkJCWJv b2wgZW5hYmxlKQo+IC17Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0jZW5kaWYKPiAtCj4gLWludCBk cHVfcG93ZXJfcmVzb3VyY2VfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICt2 b2lkIGRwdV9wb3dlcl9yZXNvdXJjZV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYs Cj4gIAlzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSkKPiAgewo+IC0JaW50IHJjID0g MCwgaTsKPiAtCj4gIAlwaGFuZGxlLT5kZXYgPSAmcGRldi0+ZGV2Owo+IAo+IC0JcmMgPSBkcHVf cG93ZXJfcmVnX2J1c19yZWdpc3RlcihwaGFuZGxlKTsKPiAtCWlmIChyYykgewo+IC0JCXByX2Vy cigicmVnaXN0ZXIgYnVzIHBhcnNlIGZhaWxlZCByYz0lZFxuIiwgcmMpOwo+IC0JCXJldHVybiBy YzsKPiAtCX0KPiAtCj4gLQlmb3IgKGkgPSBEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTU5PQzsK PiAtCQkJaSA8IERQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9NQVg7IGkrKykgewo+IC0JCXJjID0g ZHB1X3Bvd2VyX2RhdGFfYnVzX3JlZ2lzdGVyKHBoYW5kbGUsIGkpOwo+IC0JCWlmIChyYykgewo+ IC0JCQlwcl9lcnIoInJlZ2lzdGVyIGRhdGEgYnVzIHBhcnNlIGZhaWxlZCBpZD0lZCByYz0lZFxu IiwKPiAtCQkJCQlpLCByYyk7Cj4gLQkJCWdvdG8gZGF0YV9idXNfZXJyOwo+IC0JCX0KPiAtCX0K PiAtCj4gIAlJTklUX0xJU1RfSEVBRCgmcGhhbmRsZS0+cG93ZXJfY2xpZW50X2NsaXN0KTsKPiAg CUlOSVRfTElTVF9IRUFEKCZwaGFuZGxlLT5ldmVudF9saXN0KTsKPiAKPiAgCW11dGV4X2luaXQo JnBoYW5kbGUtPnBoYW5kbGVfbG9jayk7Cj4gLQo+IC0JcmV0dXJuIHJjOwo+IC0KPiAtZGF0YV9i dXNfZXJyOgo+IC0JZm9yIChpLS07IGkgPj0gMDsgaS0tKQo+IC0JCWRwdV9wb3dlcl9kYXRhX2J1 c191bnJlZ2lzdGVyKCZwaGFuZGxlLT5kYXRhX2J1c19oYW5kbGVbaV0pOwo+IC0JZHB1X3Bvd2Vy X3JlZ19idXNfdW5yZWdpc3RlcihwaGFuZGxlLT5yZWdfYnVzX2hkbCk7Cj4gLQlyZXR1cm4gcmM7 Cj4gIH0KPiAKPiAgdm9pZCBkcHVfcG93ZXJfcmVzb3VyY2VfZGVpbml0KHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsCj4gQEAgLTU4OSw3ICsxMTIsNiBAQCB2b2lkIGRwdV9wb3dlcl9yZXNv dXJjZV9kZWluaXQoc3RydWN0IAo+IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiAgewo+ICAJc3Ry dWN0IGRwdV9wb3dlcl9jbGllbnQgKmN1cnJfY2xpZW50LCAqbmV4dF9jbGllbnQ7Cj4gIAlzdHJ1 Y3QgZHB1X3Bvd2VyX2V2ZW50ICpjdXJyX2V2ZW50LCAqbmV4dF9ldmVudDsKPiAtCWludCBpOwo+ IAo+ICAJaWYgKCFwaGFuZGxlIHx8ICFwZGV2KSB7Cj4gIAkJcHJfZXJyKCJpbnZhbGlkIGlucHV0 IHBhcmFtXG4iKTsKPiBAQCAtNjE1LDE3ICsxMzcsMTEgQEAgdm9pZCBkcHVfcG93ZXJfcmVzb3Vy Y2VfZGVpbml0KHN0cnVjdAo+IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiAgCQlsaXN0X2RlbCgm Y3Vycl9ldmVudC0+bGlzdCk7Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJnBoYW5kbGUtPnBoYW5k bGVfbG9jayk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IERQVV9QT1dFUl9IQU5ETEVfREJVU19J RF9NQVg7IGkrKykKPiAtCQlkcHVfcG93ZXJfZGF0YV9idXNfdW5yZWdpc3RlcigmcGhhbmRsZS0+ ZGF0YV9idXNfaGFuZGxlW2ldKTsKPiAtCj4gLQlkcHVfcG93ZXJfcmVnX2J1c191bnJlZ2lzdGVy KHBoYW5kbGUtPnJlZ19idXNfaGRsKTsKPiAgfQo+IAo+ICBpbnQgZHB1X3Bvd2VyX3Jlc291cmNl X2VuYWJsZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAqcGhhbmRsZSwKPiAgCXN0cnVjdCBkcHVf cG93ZXJfY2xpZW50ICpwY2xpZW50LCBib29sIGVuYWJsZSkKPiAgewo+IC0JaW50IHJjID0gMCwg aTsKPiAgCWJvb2wgY2hhbmdlZCA9IGZhbHNlOwo+ICAJdTMyIG1heF91c2VjYXNlX25keCA9IFZP VEVfSU5ERVhfRElTQUJMRSwgcHJldl91c2VjYXNlX25keDsKPiAgCXN0cnVjdCBkcHVfcG93ZXJf Y2xpZW50ICpjbGllbnQ7Cj4gQEAgLTY2OCw1MyArMTg0LDE5IEBAIGludCBkcHVfcG93ZXJfcmVz b3VyY2VfZW5hYmxlKHN0cnVjdAo+IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCj4gIAlpZiAo ZW5hYmxlKSB7Cj4gIAkJZHB1X3Bvd2VyX2V2ZW50X3RyaWdnZXJfbG9ja2VkKHBoYW5kbGUsCj4g IAkJCQlEUFVfUE9XRVJfRVZFTlRfUFJFX0VOQUJMRSk7Cj4gLQo+IC0JCWZvciAoaSA9IDA7IGkg PCBEUFVfUE9XRVJfSEFORExFX0RCVVNfSURfTUFYOyBpKyspIHsKPiAtCQkJcmMgPSBkcHVfcG93 ZXJfZGF0YV9idXNfdXBkYXRlKAo+IC0JCQkJCSZwaGFuZGxlLT5kYXRhX2J1c19oYW5kbGVbaV0s IGVuYWJsZSk7Cj4gLQkJCWlmIChyYykgewo+IC0JCQkJcHJfZXJyKCJmYWlsZWQgdG8gc2V0IGRh dGEgYnVzIHZvdGUgaWQ9JWQgcmM9JWRcbiIsCj4gLQkJCQkJCWksIHJjKTsKPiAtCQkJCWdvdG8g ZGF0YV9idXNfaGRsX2VycjsKPiAtCQkJfQo+IC0JCX0KPiAtCj4gLQkJcmMgPSBkcHVfcG93ZXJf cmVnX2J1c191cGRhdGUocGhhbmRsZS0+cmVnX2J1c19oZGwsCj4gLQkJCQkJCQltYXhfdXNlY2Fz ZV9uZHgpOwo+IC0JCWlmIChyYykgewo+IC0JCQlwcl9lcnIoImZhaWxlZCB0byBzZXQgcmVnIGJ1 cyB2b3RlIHJjPSVkXG4iLCByYyk7Cj4gLQkJCWdvdG8gcmVnX2J1c19oZGxfZXJyOwo+IC0JCX0K PiAtCj4gIAkJZHB1X3Bvd2VyX2V2ZW50X3RyaWdnZXJfbG9ja2VkKHBoYW5kbGUsCj4gIAkJCQlE UFVfUE9XRVJfRVZFTlRfUE9TVF9FTkFCTEUpOwo+IAo+ICAJfSBlbHNlIHsKPiAgCQlkcHVfcG93 ZXJfZXZlbnRfdHJpZ2dlcl9sb2NrZWQocGhhbmRsZSwKPiAgCQkJCURQVV9QT1dFUl9FVkVOVF9Q UkVfRElTQUJMRSk7Cj4gLQo+IC0JCWRwdV9wb3dlcl9yZWdfYnVzX3VwZGF0ZShwaGFuZGxlLT5y ZWdfYnVzX2hkbCwKPiAtCQkJCQkJCW1heF91c2VjYXNlX25keCk7Cj4gLQo+IC0JCWZvciAoaSA9 IDAgOyBpIDwgRFBVX1BPV0VSX0hBTkRMRV9EQlVTX0lEX01BWDsgaSsrKQo+IC0JCQlkcHVfcG93 ZXJfZGF0YV9idXNfdXBkYXRlKCZwaGFuZGxlLT5kYXRhX2J1c19oYW5kbGVbaV0sCj4gLQkJCQkJ ZW5hYmxlKTsKPiAtCj4gIAkJZHB1X3Bvd2VyX2V2ZW50X3RyaWdnZXJfbG9ja2VkKHBoYW5kbGUs Cj4gIAkJCQlEUFVfUE9XRVJfRVZFTlRfUE9TVF9ESVNBQkxFKTsKPiAgCX0KPiAKPiAgZW5kOgo+ ICAJbXV0ZXhfdW5sb2NrKCZwaGFuZGxlLT5waGFuZGxlX2xvY2spOwo+IC0JcmV0dXJuIHJjOwo+ IC0KPiAtcmVnX2J1c19oZGxfZXJyOgo+IC0JZm9yIChpID0gMCA7IGkgPCBEUFVfUE9XRVJfSEFO RExFX0RCVVNfSURfTUFYOyBpKyspCj4gLQkJZHB1X3Bvd2VyX2RhdGFfYnVzX3VwZGF0ZSgmcGhh bmRsZS0+ZGF0YV9idXNfaGFuZGxlW2ldLCAwKTsKPiAtZGF0YV9idXNfaGRsX2VycjoKPiAtCXBo YW5kbGUtPmN1cnJlbnRfdXNlY2FzZV9uZHggPSBwcmV2X3VzZWNhc2VfbmR4Owo+IC0JbXV0ZXhf dW5sb2NrKCZwaGFuZGxlLT5waGFuZGxlX2xvY2spOwo+IC0JcmV0dXJuIHJjOwo+ICsJcmV0dXJu IDA7Cj4gIH0KPiAKPiAgc3RydWN0IGRwdV9wb3dlcl9ldmVudCAqZHB1X3Bvd2VyX2hhbmRsZV9y ZWdpc3Rlcl9ldmVudCgKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3Bvd2VyX2hhbmRsZS5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcG93ZXJfaGFuZGxlLmgKPiBpbmRleCAxOTNmNDY4ODZiYzIuLjM0NGY3NDQ2NGVjYSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxl LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcG93ZXJfaGFuZGxl LmgKPiBAQCAtOTcsMzYgKzk3LDYgQEAgc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgewo+ICAJYm9v bCBhY3RpdmU7Cj4gIH07Cj4gCj4gLS8qKgo+IC0gKiBzdHJ1Y3QgZHB1X3Bvd2VyX2RhdGFfaGFu ZGxlOiBwb3dlciBoYW5kbGUgc3RydWN0IGZvciBkYXRhIGJ1cwo+IC0gKiBAZGF0YV9idXNfc2Nh bGVfdGFibGU6IHBvaW50ZXIgdG8gYnVzIHNjYWxpbmcgdGFibGUKPiAtICogQGRhdGFfYnVzX2hk bDogY3VycmVudCBkYXRhIGJ1cyBoYW5kbGUKPiAtICogQGF4aV9wb3J0X2NudDogbnVtYmVyIG9m IHJ0IGF4aSBwb3J0cwo+IC0gKiBAbnJ0X2F4aV9wb3J0X2NudDogbnVtYmVyIG9mIG5ydCBheGkg cG9ydHMKPiAtICogQGJ1c19jaGFubmVsczogbnVtYmVyIG9mIG1lbW9yeSBidXMgY2hhbm5lbHMK PiAtICogQGN1cnJfYndfdWNfaWR4OiBjdXJyZW50IHVzZSBjYXNlIGluZGV4IG9mIGRhdGEgYnVz Cj4gLSAqIEBhb19id191Y19pZHg6IGFjdGl2ZSBvbmx5IHVzZSBjYXNlIGluZGV4IG9mIGRhdGEg YnVzCj4gLSAqIEBhYl9ydDogcmVhbHRpbWUgYWIgcXVvdGEKPiAtICogQGliX3J0OiByZWFsdGlt ZSBpYiBxdW90YQo+IC0gKiBAYWJfbnJ0OiBub24tcmVhbHRpbWUgYWIgcXVvdGEKPiAtICogQGli X25ydDogbm9uLXJlYWx0aW1lIGliIHF1b3RhCj4gLSAqIEBlbmFibGU6IHRydWUgaWYgYnVzIGlz IGVuYWJsZWQKPiAtICovCj4gLXN0cnVjdCBkcHVfcG93ZXJfZGF0YV9idXNfaGFuZGxlIHsKPiAt CXN0cnVjdCBtc21fYnVzX3NjYWxlX3BkYXRhICpkYXRhX2J1c19zY2FsZV90YWJsZTsKPiAtCXUz MiBkYXRhX2J1c19oZGw7Cj4gLQl1MzIgYXhpX3BvcnRfY250Owo+IC0JdTMyIG5ydF9heGlfcG9y dF9jbnQ7Cj4gLQl1MzIgYnVzX2NoYW5uZWxzOwo+IC0JdTMyIGN1cnJfYndfdWNfaWR4Owo+IC0J dTMyIGFvX2J3X3VjX2lkeDsKPiAtCXU2NCBhYl9ydDsKPiAtCXU2NCBpYl9ydDsKPiAtCXU2NCBh Yl9ucnQ7Cj4gLQl1NjQgaWJfbnJ0Owo+IC0JYm9vbCBlbmFibGU7Cj4gLX07Cj4gLQo+ICAvKgo+ ICAgKiBzdHJ1Y3QgZHB1X3Bvd2VyX2V2ZW50IC0gbG9jYWwgZXZlbnQgcmVnaXN0cmF0aW9uIHN0 cnVjdHVyZQo+ICAgKiBAY2xpZW50X25hbWU6IG5hbWUgb2YgdGhlIGNsaWVudCByZWdpc3Rlcmlu Zwo+IEBAIC0xNTEsOCArMTIxLDYgQEAgc3RydWN0IGRwdV9wb3dlcl9ldmVudCB7Cj4gICAqIEBw aGFuZGxlX2xvY2s6IGxvY2sgdG8gc3luY2hyb25pemUgdGhlIGVuYWJsZS9kaXNhYmxlCj4gICAq IEBkZXY6IHBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZQo+ICAgKiBAdXNlY2FzZV9uZHg6IGN1 cnJlbnQgdXNlY2FzZSBpbmRleAo+IC0gKiBAcmVnX2J1c19oZGw6IGN1cnJlbnQgcmVnaXN0ZXIg YnVzIGhhbmRsZQo+IC0gKiBAZGF0YV9idXNfaGFuZGxlOiBjb250ZXh0IHN0cnVjdHVyZSBmb3Ig ZGF0YSBidXMgY29udHJvbAo+ICAgKiBAZXZlbnRfbGlzdDogY3VycmVudCBwb3dlciBoYW5kbGUg ZXZlbnQgbGlzdAo+ICAgKi8KPiAgc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgewo+IEBAIC0xNjAs OSArMTI4LDYgQEAgc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgewo+ICAJc3RydWN0IG11dGV4IHBo YW5kbGVfbG9jazsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCXUzMiBjdXJyZW50X3VzZWNh c2VfbmR4Owo+IC0JdTMyIHJlZ19idXNfaGRsOwo+IC0Jc3RydWN0IGRwdV9wb3dlcl9kYXRhX2J1 c19oYW5kbGUgZGF0YV9idXNfaGFuZGxlCj4gLQkJW0RQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9N QVhdOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBldmVudF9saXN0Owo+ICB9Owo+IAo+IEBAIC0xNzAs MTAgKzEzNSw4IEBAIHN0cnVjdCBkcHVfcG93ZXJfaGFuZGxlIHsKPiAgICogZHB1X3Bvd2VyX3Jl c291cmNlX2luaXQoKSAtIGluaXRpYWxpemVzIHRoZSBkcHUgcG93ZXIgaGFuZGxlCj4gICAqIEBw ZGV2OiAgIHBsYXRmb3JtIGRldmljZSB0byBzZWFyY2ggdGhlIHBvd2VyIHJlc291cmNlcwo+ICAg KiBAcGRhdGE6ICBwb3dlciBoYW5kbGUgdG8gc3RvcmUgdGhlIHBvd2VyIHJlc291cmNlcwo+IC0g Kgo+IC0gKiBSZXR1cm46IGVycm9yIGNvZGUuCj4gICAqLwo+IC1pbnQgZHB1X3Bvd2VyX3Jlc291 cmNlX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiArdm9pZCBkcHVfcG93ZXJf cmVzb3VyY2VfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJc3RydWN0IGRw dV9wb3dlcl9oYW5kbGUgKnBkYXRhKTsKPiAKPiAgLyoqCj4gQEAgLTIxNywzMiArMTgwLDYgQEAg dm9pZCBkcHVfcG93ZXJfY2xpZW50X2Rlc3Ryb3koc3RydWN0Cj4gZHB1X3Bvd2VyX2hhbmRsZSAq cGhhbmRsZSwKPiAgaW50IGRwdV9wb3dlcl9yZXNvdXJjZV9lbmFibGUoc3RydWN0IGRwdV9wb3dl cl9oYW5kbGUgKnBkYXRhLAo+ICAJc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQsIGJv b2wgZW5hYmxlKTsKPiAKPiAtLyoqCj4gLSAqIGRwdV9wb3dlcl9kYXRhX2J1c19zdGF0ZV91cGRh dGUoKSAtIHVwZGF0ZSBkYXRhIGJ1cyBzdGF0ZQo+IC0gKiBAcGRhdGE6ICBwb3dlciBoYW5kbGUg Y29udGFpbmluZyB0aGUgcmVzb3VyY2VzCj4gLSAqIEBlbmFibGU6IHRha2UgZW5hYmxlIHZzIGRp c2FibGUgcGF0aAo+IC0gKgo+IC0gKiBSZXR1cm46IGVycm9yIGNvZGUuCj4gLSAqLwo+IC1pbnQg ZHB1X3Bvd2VyX2RhdGFfYnVzX3N0YXRlX3VwZGF0ZShzdHJ1Y3QgZHB1X3Bvd2VyX2hhbmRsZSAq cGhhbmRsZSwKPiAtCQkJCQkJCWJvb2wgZW5hYmxlKTsKPiAtCj4gLS8qKgo+IC0gKiBkcHVfcG93 ZXJfZGF0YV9idXNfc2V0X3F1b3RhKCkgLSBzZXQgZGF0YSBidXMgcXVvdGEgZm9yIHBvd2VyIAo+ IGNsaWVudAo+IC0gKiBAcGhhbmRsZTogIHBvd2VyIGhhbmRsZSBjb250YWluaW5nIHRoZSByZXNv dXJjZXMKPiAtICogQGNsaWVudDogY2xpZW50IGluZm9ybWF0aW9uIHRvIHNldCBxdW90YQo+IC0g KiBAYnVzX2NsaWVudDogcmVhbC10aW1lIG9yIG5vbi1yZWFsLXRpbWUgYnVzIGNsaWVudAo+IC0g KiBAYnVzX2lkOiBpZGVudGlmaWVyIG9mIGRhdGEgYnVzLCBzZWUgRFBVX1BPV0VSX0hBTkRMRV9E QlVTX0lECj4gLSAqIEBhYl9xdW90YTogYXJiaXRyYXRlZCBidXMgYmFuZHdpZHRoCj4gLSAqIEBp Yl9xdW90YTogaW5zdGFudGFuZW91cyBidXMgYmFuZHdpZHRoCj4gLSAqCj4gLSAqIFJldHVybjog emVybyBpZiBzdWNjZXNzLCBvciBlcnJvciBjb2RlIG90aGVyd2lzZQo+IC0gKi8KPiAtaW50IGRw dV9wb3dlcl9kYXRhX2J1c19zZXRfcXVvdGEoc3RydWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5k bGUsCj4gLQkJc3RydWN0IGRwdV9wb3dlcl9jbGllbnQgKnBjbGllbnQsCj4gLQkJaW50IGJ1c19j bGllbnQsIHUzMiBidXNfaWQsCj4gLQkJdTY0IGFiX3F1b3RhLCB1NjQgaWJfcXVvdGEpOwo+IC0K PiAgLyoqCj4gICAqIGRwdV9wb3dlcl9kYXRhX2J1c19iYW5kd2lkdGhfY3RybCgpIC0gY29udHJv bCBkYXRhIGJ1cyBiYW5kd2lkdGggCj4gZW5hYmxlCj4gICAqIEBwaGFuZGxlOiAgcG93ZXIgaGFu ZGxlIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9mcmVlZHJlbm8K