From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH 08/11] drm/msm: Remove hand-rolled out fences Date: Fri, 02 Mar 2018 16:44:55 -0800 Message-ID: <1a1c79ddb6ddabbc72e4624b53460188@codeaurora.org> References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-9-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: <20180228191906.185417-9-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, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxOC0wMi0yOCAxMToxOSwgU2VhbiBQYXVsIHdyb3RlOgo+IFJlbW92ZSByZWxlYXNlL291 dHB1dC9yZXRpcmUgZmVuY2VzIGZyb20gdGhlIGRwdSBkcml2ZXIuIFRoZXNlIGFyZQo+IGFscmVh ZHkgYXZhaWxhYmxlIHZpYSBkcm0gY29yZSdzIE9VVF9GRU5DRSBwcm9wZXJ0eS4KPiAKPiBDaGFu Z2UtSWQ6IElkNDIzOGQwYjU0NTdmMmM4ZWUyZTg3YmI3ODE0ZTE4NTBhNTczNjIzCj4gU2lnbmVk LW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYyB8ICA2NiArLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaCB8ICAyMyAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgIHwgMTc4ICsr Ky0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0 Yy5oICAgICAgfCAgMjggLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyLmMgICB8ICAgMyAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyLmggICB8ICAgNCArLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXMuaCAgfCAgIDggLQo+ICAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYyAgfCAgNzMgKy0tLS0tLQo+ICAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXJfcGh5c192aWQuYyAgfCAgMTkgLS0KPiAgLi4uL2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXNfd2IuYyAgIHwgIDEyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuYyAgICAgICB8ICAzMCAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21f ZHJ2LmggICAgICAgICAgICAgICAgIHwgICAzIC0KPiAgMTIgZmlsZXMgY2hhbmdlZCwgMzYgaW5z ZXJ0aW9ucygrKSwgNDExIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwo+IGluZGV4IDU3Yjg2MjdlZjQxOC4uY2M1YmZh ODYyY2I3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j b25uZWN0b3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25u ZWN0b3IuYwo+IEBAIC01MjEsNyArNTIxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2Nvbm5lY3Rvcl9k ZXN0cm95KHN0cnVjdCAKPiBkcm1fY29ubmVjdG9yCj4gKmNvbm5lY3RvcikKPiAgCQliYWNrbGln aHRfZGV2aWNlX3VucmVnaXN0ZXIoY19jb25uLT5ibF9kZXZpY2UpOwo+ICAJZHJtX2Nvbm5lY3Rv cl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gIAltdXRleF9kZXN0cm95KCZjX2Nvbm4tPmxvY2sp Owo+IC0JZHB1X2ZlbmNlX2RlaW5pdCgmY19jb25uLT5yZXRpcmVfZmVuY2UpOwo+ICAJZHJtX2Nv bm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4gIAlrZnJlZShjX2Nvbm4pOwo+ICB9Cj4gQEAg LTkwNiwxMiArOTA1LDkgQEAgc3RhdGljIGludCAKPiBkcHVfY29ubmVjdG9yX2F0b21pY19nZXRf cHJvcGVydHkoc3RydWN0Cj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJY19zdGF0ZSA9 IHRvX2RwdV9jb25uZWN0b3Jfc3RhdGUoc3RhdGUpOwo+IAo+ICAJaWR4ID0gbXNtX3Byb3BlcnR5 X2luZGV4KCZjX2Nvbm4tPnByb3BlcnR5X2luZm8sIHByb3BlcnR5KTsKPiAtCWlmIChpZHggPT0g Q09OTkVDVE9SX1BST1BfUkVUSVJFX0ZFTkNFKQo+IC0JCXJjID0gZHB1X2ZlbmNlX2NyZWF0ZSgm Y19jb25uLT5yZXRpcmVfZmVuY2UsIHZhbCwgMCk7Cj4gLQllbHNlCj4gLQkJLyogZ2V0IGNhY2hl ZCBwcm9wZXJ0eSB2YWx1ZSAqLwo+IC0JCXJjID0gbXNtX3Byb3BlcnR5X2F0b21pY19nZXQoJmNf Y29ubi0+cHJvcGVydHlfaW5mbywKPiAtCQkJCSZjX3N0YXRlLT5wcm9wZXJ0eV9zdGF0ZSwgcHJv cGVydHksIHZhbCk7Cj4gKwkvKiBnZXQgY2FjaGVkIHByb3BlcnR5IHZhbHVlICovCj4gKwlyYyA9 IG1zbV9wcm9wZXJ0eV9hdG9taWNfZ2V0KCZjX2Nvbm4tPnByb3BlcnR5X2luZm8sCj4gKwkJCSZj X3N0YXRlLT5wcm9wZXJ0eV9zdGF0ZSwgcHJvcGVydHksIHZhbCk7Cj4gCj4gIAkvKiBhbGxvdyBm b3IgY3VzdG9tIG92ZXJyaWRlICovCj4gIAlpZiAoY19jb25uLT5vcHMuZ2V0X3Byb3BlcnR5KQo+ IEBAIC05MjMsMzkgKzkxOSw2IEBAIHN0YXRpYyBpbnQgCj4gZHB1X2Nvbm5lY3Rvcl9hdG9taWNf Z2V0X3Byb3BlcnR5KHN0cnVjdAo+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCXJldHVy biByYzsKPiAgfQo+IAo+IC12b2lkIGRwdV9jb25uZWN0b3JfcHJlcGFyZV9mZW5jZShzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IC17Cj4gLQlpZiAoIWNvbm5lY3Rvcikgewo+IC0J CURQVV9FUlJPUigiaW52YWxpZCBjb25uZWN0b3JcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAt Cj4gLQlkcHVfZmVuY2VfcHJlcGFyZSgmdG9fZHB1X2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5yZXRp cmVfZmVuY2UpOwo+IC19Cj4gLQo+IC12b2lkIGRwdV9jb25uZWN0b3JfY29tcGxldGVfY29tbWl0 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gLQkJa3RpbWVfdCB0cykKPiAtewo+ IC0JaWYgKCFjb25uZWN0b3IpIHsKPiAtCQlEUFVfRVJST1IoImludmFsaWQgY29ubmVjdG9yXG4i KTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+IC0JLyogc2lnbmFsIGNvbm5lY3RvcidzIHJldGly ZSBmZW5jZSAqLwo+IC0JZHB1X2ZlbmNlX3NpZ25hbCgmdG9fZHB1X2Nvbm5lY3Rvcihjb25uZWN0 b3IpLT5yZXRpcmVfZmVuY2UsIHRzLAo+IGZhbHNlKTsKPiAtfQo+IC0KPiAtdm9pZCBkcHVfY29u bmVjdG9yX2NvbW1pdF9yZXNldChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCAKPiBr dGltZV90Cj4gdHMpCj4gLXsKPiAtCWlmICghY29ubmVjdG9yKSB7Cj4gLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGNvbm5lY3RvclxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCS8qIHNpZ25h bCBjb25uZWN0b3IncyByZXRpcmUgZmVuY2UgKi8KPiAtCWRwdV9mZW5jZV9zaWduYWwoJnRvX2Rw dV9jb25uZWN0b3IoY29ubmVjdG9yKS0+cmV0aXJlX2ZlbmNlLCB0cywKPiB0cnVlKTsKPiAtfQo+ IC0KPiAgc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiAgZHB1X2Nvbm5lY3Rvcl9k ZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiAgewo+ IEBAIC0xMjE0LDI2ICsxMTc3LDE5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVj dG9yX2luaXQoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ICAJCQkiY29ubiV1IiwKPiAgCQkJ Y19jb25uLT5iYXNlLmJhc2UuaWQpOwo+IAo+IC0JcmMgPSBkcHVfZmVuY2VfaW5pdCgmY19jb25u LT5yZXRpcmVfZmVuY2UsIGNfY29ubi0+bmFtZSwKPiAtCQkJY19jb25uLT5iYXNlLmJhc2UuaWQp Owo+IC0JaWYgKHJjKSB7Cj4gLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBmZW5jZSwgJWRc biIsIHJjKTsKPiAtCQlnb3RvIGVycm9yX2NsZWFudXBfY29ubjsKPiAtCX0KPiAtCj4gIAltdXRl eF9pbml0KCZjX2Nvbm4tPmxvY2spOwo+IAo+ICAJcmMgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0 YWNoX2VuY29kZXIoJmNfY29ubi0+YmFzZSwgZW5jb2Rlcik7Cj4gIAlpZiAocmMpIHsKPiAgCQlE UFVfRVJST1IoImZhaWxlZCB0byBhdHRhY2ggZW5jb2RlciB0byBjb25uZWN0b3IsICVkXG4iLAo+ IHJjKTsKPiAtCQlnb3RvIGVycm9yX2NsZWFudXBfZmVuY2U7Cj4gKwkJZ290byBlcnJvcl9jbGVh bnVwX2Nvbm47Cj4gIAl9Cj4gCj4gICNpZmRlZiBDT05GSUdfRFJNX01TTV9EU0lfU1RBR0lORwo+ ICAJcmMgPSBkcHVfYmFja2xpZ2h0X3NldHVwKGNfY29ubiwgZGV2KTsKPiAgCWlmIChyYykgewo+ ICAJCURQVV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIGJhY2tsaWdodCwgcmM9JWRcbiIsIHJjKTsK PiAtCQlnb3RvIGVycm9yX2NsZWFudXBfZmVuY2U7Cj4gKwkJZ290byBlcnJvcl9jbGVhbnVwX2Nv bm47Cj4gIAl9Cj4gICNlbmRpZgo+IAo+IEBAIC0xMjQ4LDcgKzEyMDQsNyBAQCBzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqZHB1X2Nvbm5lY3Rvcl9pbml0KHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwK PiAgCQlpZiAoIWluZm8pIHsKPiAgCQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgaW5m byBidWZmZXJcbiIpOwo+ICAJCQlyYyA9IC1FTk9NRU07Cj4gLQkJCWdvdG8gZXJyb3JfY2xlYW51 cF9mZW5jZTsKPiArCQkJZ290byBlcnJvcl9jbGVhbnVwX2Nvbm47Cj4gIAkJfQo+IAo+ICAJCWRw dV9rbXNfaW5mb19yZXNldChpbmZvKTsKPiBAQCAtMTI1Niw3ICsxMjEyLDcgQEAgc3RydWN0IGRy bV9jb25uZWN0b3IgKmRwdV9jb25uZWN0b3JfaW5pdChzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJaWYgKHJjKSB7Cj4gIAkJCURQVV9FUlJPUigicG9zdC1pbml0IGZhaWxlZCwgJWRcbiIs IHJjKTsKPiAgCQkJa2ZyZWUoaW5mbyk7Cj4gLQkJCWdvdG8gZXJyb3JfY2xlYW51cF9mZW5jZTsK PiArCQkJZ290byBlcnJvcl9jbGVhbnVwX2Nvbm47Cj4gIAkJfQo+IAo+ICAJCW1zbV9wcm9wZXJ0 eV9pbnN0YWxsX2Jsb2IoJmNfY29ubi0+cHJvcGVydHlfaW5mbywKPiBAQCAtMTMxMCwxMCArMTI2 Niw2IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9yX2luaXQoc3RydWN0Cj4g ZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJJmNfY29ubi0+cHJvcGVydHlfaW5mbywgImRwdV9kcm1f cm9pX3YxIiwKPiAweDAsCj4gIAkJCQkwLCB+MCwgMCwgQ09OTkVDVE9SX1BST1BfUk9JX1YxKTsK PiAgCX0KPiAtCj4gLQltc21fcHJvcGVydHlfaW5zdGFsbF9yYW5nZSgmY19jb25uLT5wcm9wZXJ0 eV9pbmZvLCAiUkVUSVJFX0ZFTkNFIiwKPiAtCQkJMHgwLCAwLCBJTlJfT1BFTl9NQVgsIDAsCj4g Q09OTkVDVE9SX1BST1BfUkVUSVJFX0ZFTkNFKTsKPiAtCj4gIAltc21fcHJvcGVydHlfaW5zdGFs bF9yYW5nZSgmY19jb25uLT5wcm9wZXJ0eV9pbmZvLCAiYXV0b3JlZnJlc2giLAo+ICAJCQkweDAs IDAsIEFVVE9SRUZSRVNIX01BWF9GUkFNRV9DTlQsIDAsCj4gIAkJCUNPTk5FQ1RPUl9QUk9QX0FV VE9SRUZSRVNIKTsKPiBAQCAtMTM1NCwxMCArMTMwNiw4IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9y ICpkcHVfY29ubmVjdG9yX2luaXQoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ICAJCWRybV9w cm9wZXJ0eV9ibG9iX3B1dChjX2Nvbm4tPmJsb2JfZGl0aGVyKTsKPiAKPiAgCW1zbV9wcm9wZXJ0 eV9kZXN0cm95KCZjX2Nvbm4tPnByb3BlcnR5X2luZm8pOwo+IC1lcnJvcl9jbGVhbnVwX2ZlbmNl Ogo+IC0JbXV0ZXhfZGVzdHJveSgmY19jb25uLT5sb2NrKTsKPiAtCWRwdV9mZW5jZV9kZWluaXQo JmNfY29ubi0+cmV0aXJlX2ZlbmNlKTsKPiAgZXJyb3JfY2xlYW51cF9jb25uOgo+ICsJbXV0ZXhf ZGVzdHJveSgmY19jb25uLT5sb2NrKTsKPiAgCWRybV9jb25uZWN0b3JfY2xlYW51cCgmY19jb25u LT5iYXNlKTsKPiAgZXJyb3JfZnJlZV9jb25uOgo+ICAJa2ZyZWUoY19jb25uKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5oCj4gYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKPiBpbmRleCBmNmY0 ODM3ZDEzNTkuLmZkYjRkODc2NjU0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKPiBAQCAtMjEsNyArMjEsNiBAQAo+ICAjaW5jbHVkZSAi bXNtX2Rydi5oIgo+ICAjaW5jbHVkZSAibXNtX3Byb3AuaCIKPiAgI2luY2x1ZGUgImRwdV9rbXMu aCIKPiAtI2luY2x1ZGUgImRwdV9mZW5jZS5oIgo+IAo+ICAjZGVmaW5lIERQVV9DT05ORUNUT1Jf TkFNRV9TSVpFCTE2Cj4gCj4gQEAgLTI0Nyw3ICsyNDYsNiBAQCBzdHJ1Y3QgZHB1X2Nvbm5lY3Rv cl9ldnQgewo+ICAgKiBAbW11X3Vuc2VjdXJlOiBNTVUgaWQgZm9yIHVuc2VjdXJlIGJ1ZmZlcnMK PiAgICogQG5hbWU6IEFTQ0lJIG5hbWUgb2YgY29ubmVjdG9yCj4gICAqIEBsb2NrOiBNdXRleCBs b2NrIG9iamVjdCBmb3IgdGhpcyBzdHJ1Y3R1cmUKPiAtICogQHJldGlyZV9mZW5jZTogUmV0aXJl IGZlbmNlIGNvbnRleHQgcmVmZXJlbmNlCj4gICAqIEBvcHM6IExvY2FsIGNhbGxiYWNrIGZ1bmN0 aW9uIHBvaW50ZXIgdGFibGUKPiAgICogQGRwbXNfbW9kZTogRFBNUyBwcm9wZXJ0eSBzZXR0aW5n IGZyb20gdXNlciBzcGFjZQo+ICAgKiBAbHBfbW9kZTogTFAgcHJvcGVydHkgc2V0dGluZyBmcm9t IHVzZXIgc3BhY2UKPiBAQCAtMjc0LDcgKzI3Miw2IEBAIHN0cnVjdCBkcHVfY29ubmVjdG9yIHsK PiAgCWNoYXIgbmFtZVtEUFVfQ09OTkVDVE9SX05BTUVfU0laRV07Cj4gCj4gIAlzdHJ1Y3QgbXV0 ZXggbG9jazsKPiAtCXN0cnVjdCBkcHVfZmVuY2VfY29udGV4dCByZXRpcmVfZmVuY2U7Cj4gIAlz dHJ1Y3QgZHB1X2Nvbm5lY3Rvcl9vcHMgb3BzOwo+ICAJaW50IGRwbXNfbW9kZTsKPiAgCWludCBs cF9tb2RlOwo+IEBAIC00NDcsMjYgKzQ0NCw2IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVf Y29ubmVjdG9yX2luaXQoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ICAJCWludCBjb25uZWN0 b3JfcG9sbCwKPiAgCQlpbnQgY29ubmVjdG9yX3R5cGUpOwo+IAo+IC0vKioKPiAtICogZHB1X2Nv bm5lY3Rvcl9wcmVwYXJlX2ZlbmNlIC0gcHJlcGFyZSBmZW5jZSBzdXBwb3J0IGZvciBjdXJyZW50 IAo+IGNvbW1pdAo+IC0gKiBAY29ubmVjdG9yOiBQb2ludGVyIHRvIGRybSBjb25uZWN0b3Igb2Jq ZWN0Cj4gLSAqLwo+IC12b2lkIGRwdV9jb25uZWN0b3JfcHJlcGFyZV9mZW5jZShzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiAtCj4gLS8qKgo+IC0gKiBkcHVfY29ubmVjdG9yX2Nv bXBsZXRlX2NvbW1pdCAtIHNpZ25hbCBjb21wbGV0aW9uIG9mIGN1cnJlbnQgY29tbWl0Cj4gLSAq IEBjb25uZWN0b3I6IFBvaW50ZXIgdG8gZHJtIGNvbm5lY3RvciBvYmplY3QKPiAtICogQHRzOiB0 aW1lc3RhbXAgdG8gYmUgdXBkYXRlZCBpbiB0aGUgZmVuY2Ugc2lnbmFsbGluZwo+IC0gKi8KPiAt dm9pZCBkcHVfY29ubmVjdG9yX2NvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+IGt0aW1lX3QgdHMpOwo+IC0KPiAtLyoqCj4gLSAqIGRwdV9jb25uZWN0b3Jf Y29tbWl0X3Jlc2V0IC0gcmVzZXQgdGhlIGNvbXBsZXRpb24gc2lnbmFsCj4gLSAqIEBjb25uZWN0 b3I6IFBvaW50ZXIgdG8gZHJtIGNvbm5lY3RvciBvYmplY3QKPiAtICogQHRzOiB0aW1lc3RhbXAg dG8gYmUgdXBkYXRlZCBpbiB0aGUgZmVuY2Ugc2lnbmFsbGluZwo+IC0gKi8KPiAtdm9pZCBkcHVf Y29ubmVjdG9yX2NvbW1pdF9yZXNldChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCAK PiBrdGltZV90Cj4gdHMpOwo+IC0KPiAgLyoqCj4gICAqIGRwdV9jb25uZWN0b3JfZ2V0X2luZm8g LSBxdWVyeSBkaXNwbGF5IHNwZWNpZmljIGluZm9ybWF0aW9uCj4gICAqIEBjb25uZWN0b3I6IFBv aW50ZXIgdG8gZHJtIGNvbm5lY3RvciBvYmplY3QKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuYwo+IGluZGV4IGEyNjEwMjFlNWRlYi4uMmQ0NDk4OWFkZTdhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gQEAgLTYyOSw3ICs2 MjksNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCWRwdV9jcF9jcnRjX2Rlc3Ryb3lfcHJvcGVydGllcyhjcnRjKTsKPiAgCV9kcHVfY3J0 Y19kZXN0cm95X2Rlc3Rfc2NhbGVyKGRwdV9jcnRjKTsKPiAKPiAtCWRwdV9mZW5jZV9kZWluaXQo JmRwdV9jcnRjLT5vdXRwdXRfZmVuY2UpOwo+ICAJX2RwdV9jcnRjX2RlaW5pdF9ldmVudHMoZHB1 X2NydGMpOwo+IAo+ICAJZHJtX2NydGNfY2xlYW51cChjcnRjKTsKPiBAQCAtMTY3MSw2NSArMTY3 MCw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19kZXN0X3NjYWxlcl9zZXR1cChzdHJ1Y3QKPiBk cm1fY3J0YyAqY3J0YykKPiAgCX0KPiAgfQo+IAo+IC12b2lkIGRwdV9jcnRjX3ByZXBhcmVfY29t bWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9s ZF9zdGF0ZSkKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiAtCXN0cnVjdCBkcHVf Y3J0YyAqZHB1X2NydGM7Cj4gLQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAtCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9p dGVyIGNvbm5faXRlcjsKPiAtCXN0cnVjdCBkcHVfY3J0Y19yZXRpcmVfZXZlbnQgKnJldGlyZV9l dmVudCA9IE5VTEw7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0JaW50IGk7Cj4gLQo+IC0J aWYgKCFjcnRjIHx8ICFjcnRjLT5zdGF0ZSkgewo+IC0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRj XG4iKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+IC0JZGV2ID0gY3J0Yy0+ZGV2Owo+IC0JZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiAtCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKPiAtCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKGNydGMpKTsKPiAtCj4g LQkvKiBpZGVudGlmeSBjb25uZWN0b3JzIGF0dGFjaGVkIHRvIHRoaXMgY3J0YyAqLwo+IC0JY3N0 YXRlLT5udW1fY29ubmVjdG9ycyA9IDA7Cj4gLQo+IC0JZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJf YmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPiAtCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihj b25uLCAmY29ubl9pdGVyKQo+IC0JCWlmIChjb25uLT5zdGF0ZSAmJiBjb25uLT5zdGF0ZS0+Y3J0 YyA9PSBjcnRjICYmCj4gLQkJCQljc3RhdGUtPm51bV9jb25uZWN0b3JzIDwgTUFYX0NPTk5FQ1RP UlMpIHsKPiAtCQkJY3N0YXRlLT5jb25uZWN0b3JzW2NzdGF0ZS0+bnVtX2Nvbm5lY3RvcnMrK10g PQo+IGNvbm47Cj4gLQkJCWRwdV9jb25uZWN0b3JfcHJlcGFyZV9mZW5jZShjb25uKTsKPiAtCQl9 Cj4gLQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4gLQo+IC0JZm9y IChpID0gMDsgaSA8IERQVV9DUlRDX0ZSQU1FX0VWRU5UX1NJWkU7IGkrKykgewo+IC0JCXJldGly ZV9ldmVudCA9ICZkcHVfY3J0Yy0+cmV0aXJlX2V2ZW50c1tpXTsKPiAtCQlpZiAobGlzdF9lbXB0 eSgmcmV0aXJlX2V2ZW50LT5saXN0KSkKPiAtCQkJYnJlYWs7Cj4gLQkJcmV0aXJlX2V2ZW50ID0g TlVMTDsKPiAtCX0KPiAtCj4gLQlpZiAocmV0aXJlX2V2ZW50KSB7Cj4gLQkJcmV0aXJlX2V2ZW50 LT5udW1fY29ubmVjdG9ycyA9IGNzdGF0ZS0+bnVtX2Nvbm5lY3RvcnM7Cj4gLQkJZm9yIChpID0g MDsgaSA8IGNzdGF0ZS0+bnVtX2Nvbm5lY3RvcnM7IGkrKykKPiAtCQkJcmV0aXJlX2V2ZW50LT5j b25uZWN0b3JzW2ldID0KPiBjc3RhdGUtPmNvbm5lY3RvcnNbaV07Cj4gLQo+IC0JCXNwaW5fbG9j a19pcnFzYXZlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQkJbGlzdF9hZGRfdGFp bCgmcmV0aXJlX2V2ZW50LT5saXN0LAo+IC0KPiAmZHB1X2NydGMtPnJldGlyZV9ldmVudF9saXN0 KTsKPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFn cyk7Cj4gLQl9IGVsc2Ugewo+IC0JCURQVV9FUlJPUigiY3J0YyVkIHJldGlyZSBldmVudCBvdmVy Zmxvd1xuIiwKPiBjcnRjLT5iYXNlLmlkKTsKPiAtCQlEUFVfRVZUMzIoRFJNSUQoY3J0YyksIERQ VV9FVlRMT0dfRVJST1IpOwo+IC0JfQo+IC0KPiAtCS8qIHByZXBhcmUgbWFpbiBvdXRwdXQgZmVu Y2UgKi8KPiAtCWRwdV9mZW5jZV9wcmVwYXJlKCZkcHVfY3J0Yy0+b3V0cHV0X2ZlbmNlKTsKPiAt fQo+IC0KPiAgLyoqCj4gICAqICBfZHB1X2NydGNfY29tcGxldGVfZmxpcCAtIHNpZ25hbCBwZW5k aW5nIHBhZ2VfZmxpcCBldmVudHMKPiAgICogQW55IHBlbmRpbmcgdmJsYW5rIGV2ZW50cyBhcmUg YWRkZWQgdG8gdGhlIHZibGFua19ldmVudF9saXN0Cj4gQEAgLTE3OTksNDEgKzE3MzksNiBAQCBz dGF0aWMgdm9pZCBkcHVfY3J0Y192YmxhbmtfY2Iodm9pZCAqZGF0YSkKPiAgCURQVV9FVlQzMl9W RVJCT1NFKERSTUlEKGNydGMpKTsKPiAgfQo+IAo+IC1zdGF0aWMgdm9pZCBfZHB1X2NydGNfcmV0 aXJlX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywga3RpbWVfdCB0cykKPiAtewo+IC0Jc3Ry dWN0IGRwdV9jcnRjX3JldGlyZV9ldmVudCAqcmV0aXJlX2V2ZW50Owo+IC0Jc3RydWN0IGRwdV9j cnRjICpkcHVfY3J0YzsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQlpbnQgaTsKPiAtCj4g LQlpZiAoIWNydGMpIHsKPiAtCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1cbiIpOwo+IC0JCXJl dHVybjsKPiAtCX0KPiAtCj4gLQlkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+IC0Jc3Bp bl9sb2NrX2lycXNhdmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAtCXJldGlyZV9l dmVudCA9Cj4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZkcHVfY3J0Yy0+cmV0aXJlX2V2ZW50 X2xpc3QsCj4gLQkJCQlzdHJ1Y3QgZHB1X2NydGNfcmV0aXJlX2V2ZW50LCBsaXN0KTsKPiAtCWlm IChyZXRpcmVfZXZlbnQpCj4gLQkJbGlzdF9kZWxfaW5pdCgmcmV0aXJlX2V2ZW50LT5saXN0KTsK PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsK PiAtCj4gLQlpZiAoIXJldGlyZV9ldmVudCkgewo+IC0JCURQVV9FUlJPUigiY3J0YyVkIHJldGly ZSBldmVudCB3aXRob3V0IGtpY2tvZmZcbiIsCj4gLQo+IGNydGMtPmJhc2UuaWQpOwo+IC0JCURQ VV9FVlQzMihEUk1JRChjcnRjKSwgRFBVX0VWVExPR19FUlJPUik7Cj4gLQkJcmV0dXJuOwo+IC0J fQo+IC0KPiAtCURQVV9BVFJBQ0VfQkVHSU4oInNpZ25hbF9yZXRpcmVfZmVuY2UiKTsKPiAtCWZv ciAoaSA9IDA7IChpIDwgcmV0aXJlX2V2ZW50LT5udW1fY29ubmVjdG9ycykgJiYKPiAtCQkJCQly ZXRpcmVfZXZlbnQtPmNvbm5lY3RvcnNbaV07ICsraSkKPiAtCQlkcHVfY29ubmVjdG9yX2NvbXBs ZXRlX2NvbW1pdCgKPiAtCQkJCQlyZXRpcmVfZXZlbnQtPmNvbm5lY3RvcnNbaV0sIHRzKTsKPiAt CURQVV9BVFJBQ0VfRU5EKCJzaWduYWxfcmV0aXJlX2ZlbmNlIik7Cj4gLX0KPiAtCj4gIC8qIF9k cHVfY3J0Y19pZGxlX25vdGlmeSAtIHNpZ25hbCBpZGxlIHRpbWVvdXQgdG8gY2xpZW50ICovCj4g IHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19pZGxlX25vdGlmeShzdHJ1Y3QgZHB1X2NydGMgKmRwdV9j cnRjKQo+ICB7Cj4gQEAgLTE5NDUsMTYgKzE4NTAsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19m cmFtZV9ldmVudF93b3JrKHN0cnVjdAo+IGt0aHJlYWRfd29yayAqd29yaykKPiAgCQkJZnJhbWVf ZG9uZSA9IHRydWU7Cj4gIAl9Cj4gCj4gLQlpZiAoZmV2ZW50LT5ldmVudCAmIERQVV9FTkNPREVS X0ZSQU1FX0VWRU5UX1NJR05BTF9SRUxFQVNFX0ZFTkNFKQo+IHsKPiAtCQlEUFVfQVRSQUNFX0JF R0lOKCJzaWduYWxfcmVsZWFzZV9mZW5jZSIpOwo+IC0JCWRwdV9mZW5jZV9zaWduYWwoJmRwdV9j cnRjLT5vdXRwdXRfZmVuY2UsIGZldmVudC0+dHMsCj4gZmFsc2UpOwo+IC0JCURQVV9BVFJBQ0Vf RU5EKCJzaWduYWxfcmVsZWFzZV9mZW5jZSIpOwo+IC0JfQo+IC0KPiAtCWlmIChmZXZlbnQtPmV2 ZW50ICYgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFVElSRV9GRU5DRSkKPiAtCQkv KiB0aGlzIGFwaSBzaG91bGQgYmUgY2FsbGVkIHdpdGhvdXQgc3Bpbl9sb2NrICovCj4gLQkJX2Rw dV9jcnRjX3JldGlyZV9ldmVudChjcnRjLCBmZXZlbnQtPnRzKTsKPiAtCj4gIAlpZiAoZmV2ZW50 LT5ldmVudCAmIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1BBTkVMX0RFQUQpCj4gIAkJRFBVX0VS Uk9SKCJjcnRjJWQgdHM6JWxsZCByZWNlaXZlZCBwYW5lbCBkZWFkIGV2ZW50XG4iLAo+ICAJCQkJ Y3J0Yy0+YmFzZS5pZCwga3RpbWVfdG9fbnMoZmV2ZW50LT50cykpOwo+IEBAIC0xOTcxLDExICsx ODY2LDExIEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50X3dvcmsoc3RydWN0Cj4g a3RocmVhZF93b3JrICp3b3JrKQo+ICAvKgo+ICAgKiBkcHVfY3J0Y19mcmFtZV9ldmVudF9jYiAt IGNydGMgZnJhbWUgZXZlbnQgY2FsbGJhY2sgQVBJLiBDUlRDIAo+IG1vZHVsZQo+ICAgKiByZWdp c3RlcnMgdGhpcyBBUEkgdG8gZW5jb2RlciBmb3IgYWxsIGZyYW1lIGV2ZW50IGNhbGxiYWNrcyBs aWtlCj4gLSAqIHJlbGVhc2VfZmVuY2UsIHJldGlyZV9mZW5jZSwgZnJhbWVfZXJyb3IsIGZyYW1l X2RvbmUsIGlkbGVfdGltZW91dCwKPiAtICogZXRjLiBFbmNvZGVyIG1heSBjYWxsIGRpZmZlcmVu dCBldmVudHMgZnJvbSBkaWZmZXJlbnQgY29udGV4dCAtIAo+IElSUSwKPiAtICogdXNlciB0aHJl YWQsIGNvbW1pdF90aHJlYWQsIGV0Yy4gRWFjaCBldmVudCBzaG91bGQgYmUgY2FyZWZ1bGx5Cj4g LSAqIHJldmlld2VkIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIGluIHByb3BlciB0YXNrIGNvbnRl eHQgdG8gYXZvaWQKPiBzY2hlZHVsaW5nCj4gLSAqIGRlbGF5IG9yIHByb3Blcmx5IG1hbmFnZSB0 aGUgaXJxIGNvbnRleHQncyBib3R0b20gaGFsZiBwcm9jZXNzaW5nLgo+ICsgKiBmcmFtZV9lcnJv ciwgZnJhbWVfZG9uZSwgaWRsZV90aW1lb3V0LCBldGMuIEVuY29kZXIgbWF5IGNhbGwgCj4gZGlm ZmVyZW50Cj4gZXZlbnRzCj4gKyAqIGZyb20gZGlmZmVyZW50IGNvbnRleHQgLSBJUlEsIHVzZXIg dGhyZWFkLCBjb21taXRfdGhyZWFkLCBldGMuIEVhY2gKPiBldmVudAo+ICsgKiBzaG91bGQgYmUg Y2FyZWZ1bGx5IHJldmlld2VkIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIGluIHByb3BlciB0YXNr Cj4gY29udGV4dAo+ICsgKiB0byBhdm9pZCBzY2hlZHVsaW4gZGVsYXkgb3IgcHJvcGVybHkgbWFu YWdlIHRoZSBpcnEgY29udGV4dCdzIAo+IGJvdHRvbQo+IGhhbGYKPiArICogcHJvY2Vzc2luZy4K PiAgICovCj4gIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50X2NiKHZvaWQgKmRhdGEs IHUzMiBldmVudCkKPiAgewo+IEBAIC0zNDg0LDE0ICszMzc5LDYgQEAgc3RhdGljIHZvaWQgZHB1 X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgCj4gKmNydGMpCj4gIAkJZHB1X3Bvd2VyX2hh bmRsZV91bnJlZ2lzdGVyX2V2ZW50KCZwcml2LT5waGFuZGxlLAo+ICAJCQkJZHB1X2NydGMtPnBv d2VyX2V2ZW50KTsKPiAKPiAtCS8qKgo+IC0JICogQWxsIGNhbGxiYWNrcyBhcmUgdW5yZWdpc3Rl cmVkIGFuZCBmcmFtZSBkb25lIHdhaXRzIGFyZQo+IGNvbXBsZXRlCj4gLQkgKiBhdCB0aGlzIHBv aW50LiBObyBidWZmZXJzIGFyZSBhY2Nlc3NlZCBieSBoYXJkd2FyZS4KPiAtCSAqIHJlc2V0IHRo ZSBmZW5jZSB0aW1lbGluZSBpZiB0aGVyZSBpcyBhbnkgaXNzdWUuCj4gLQkgKi8KPiAtCWRwdV9m ZW5jZV9zaWduYWwoJmRwdV9jcnRjLT5vdXRwdXRfZmVuY2UsIGt0aW1lX2dldCgpLCB0cnVlKTsK PiAtCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9jb25uZWN0b3JzOyArK2kpCj4gLQkJZHB1 X2Nvbm5lY3Rvcl9jb21taXRfcmVzZXQoY3N0YXRlLT5jb25uZWN0b3JzW2ldLAo+IGt0aW1lX2dl dCgpKTsKPiAKPiAgCW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXplb2YoZHB1X2NydGMt Pm1peGVycykpOwo+ICAJZHB1X2NydGMtPm51bV9taXhlcnMgPSAwOwo+IEBAIC0zNzAzLDYgKzM1 OTAsOCBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMK PiAqY3J0YywKPiAgCWludCBtdWx0aXJlY3RfY291bnQgPSAwOwo+ICAJY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcGlwZV9zdGFnZWRbU1NQUF9NQVhdOwo+ICAJaW50IGxlZnRfenBvc19j bnQgPSAwLCByaWdodF96cG9zX2NudCA9IDA7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXIgY29ubl9pdGVyOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gCj4gIAlp ZiAoIWNydGMpIHsKPiAgCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7Cj4gQEAgLTM5NTYs NiArMzg0NSwxNiBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X2NydGMKPiAqY3J0YywKPiAgCQlnb3RvIGVuZDsKPiAgCX0KPiAKPiArCS8qIGlkZW50aWZ5IGNv bm5lY3RvcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCj4gKwljc3RhdGUtPm51bV9jb25uZWN0 b3JzID0gMDsKPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGNydGMtPmRldiwgJmNv bm5faXRlcik7Cj4gKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubiwgJmNvbm5faXRl cikKPiArCQlpZiAoY29ubi0+c3RhdGUgJiYgY29ubi0+c3RhdGUtPmNydGMgPT0gY3J0YyAmJgo+ ICsJCQkJY3N0YXRlLT5udW1fY29ubmVjdG9ycyA8IE1BWF9DT05ORUNUT1JTKSB7Cj4gKwkJCWNz dGF0ZS0+Y29ubmVjdG9yc1tjc3RhdGUtPm51bV9jb25uZWN0b3JzKytdID0KPiBjb25uOwo+ICsJ CX0KPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKPiArCgpJcyB0 aGlzIGh1bmsgcmVsYXRlZCB0byB0aGlzIGNoYW5nZT8KCj4gIGVuZDoKPiAgCV9kcHVfY3J0Y19y cF9mcmVlX3VudXNlZCgmY3N0YXRlLT5ycCk7Cj4gIAlyZXR1cm4gcmM7Cj4gQEAgLTQwMzQsMTMg KzM5MzMsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19pbnN0YWxsX3Byb3BlcnRpZXMoc3RydWN0 Cj4gZHJtX2NydGMgKmNydGMsCj4gIAkJImlucHV0X2ZlbmNlX3RpbWVvdXQiLCAweDAsIDAsCj4g RFBVX0NSVENfTUFYX0lOUFVUX0ZFTkNFX1RJTUVPVVQsCj4gIAkJRFBVX0NSVENfSU5QVVRfRkVO Q0VfVElNRU9VVCwKPiBDUlRDX1BST1BfSU5QVVRfRkVOQ0VfVElNRU9VVCk7Cj4gCj4gLQltc21f cHJvcGVydHlfaW5zdGFsbF9yYW5nZSgmZHB1X2NydGMtPnByb3BlcnR5X2luZm8sCj4gIm91dHB1 dF9mZW5jZSIsCj4gLQkJCTB4MCwgMCwgSU5SX09QRU5fTUFYLCAweDAsCj4gQ1JUQ19QUk9QX09V VFBVVF9GRU5DRSk7Cj4gLQo+IC0JbXNtX3Byb3BlcnR5X2luc3RhbGxfcmFuZ2UoJmRwdV9jcnRj LT5wcm9wZXJ0eV9pbmZvLAo+IC0JCQkib3V0cHV0X2ZlbmNlX29mZnNldCIsIDB4MCwgMCwgMSwg MCwKPiAtCQkJQ1JUQ19QUk9QX09VVFBVVF9GRU5DRV9PRkZTRVQpOwo+IC0KPiAgCW1zbV9wcm9w ZXJ0eV9pbnN0YWxsX3JhbmdlKCZkcHVfY3J0Yy0+cHJvcGVydHlfaW5mbywKPiAgCQkJImNvcmVf Y2xrIiwgMHgwLCAwLCBVNjRfTUFYLAo+ICAJCQlkcHVfa21zLT5wZXJmLm1heF9jb3JlX2Nsa19y YXRlLAo+IEBAIC00MzQyLDI5ICs0MjM0LDEyIEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfYXRvbWlj X2dldF9wcm9wZXJ0eShzdHJ1Y3QKPiBkcm1fY3J0YyAqY3J0YywKPiAgCQl9Cj4gCj4gIAkJaSA9 IG1zbV9wcm9wZXJ0eV9pbmRleCgmZHB1X2NydGMtPnByb3BlcnR5X2luZm8sCj4gcHJvcGVydHkp Owo+IC0JCWlmIChpID09IENSVENfUFJPUF9PVVRQVVRfRkVOQ0UpIHsKPiAtCQkJdWludDMyX3Qg b2Zmc2V0ID0gZHB1X2NydGNfZ2V0X3Byb3BlcnR5KGNzdGF0ZSwKPiAtCQkJCQlDUlRDX1BST1Bf T1VUUFVUX0ZFTkNFX09GRlNFVCk7Cj4gLQo+IC0JCQkvKioKPiAtCQkJICogc2V0IHRoZSBvZmZz ZXQgdG8gMCBvbmx5IGZvciBjbWQgbW9kZSBwYW5lbHMsCj4gc28KPiAtCQkJICogdGhlIHJlbGVh c2UgZmVuY2UgZm9yIHRoZSBjdXJyZW50IGZyYW1lIGNhbiBiZQo+IC0JCQkgKiB0cmlnZ2VyZWQg cmlnaHQgYWZ0ZXIgUFBfRE9ORSBpbnRlcnJ1cHQuCj4gLQkJCSAqLwo+IC0JCQlvZmZzZXQgPSBp c19jbWQgPyAwIDogKG9mZnNldCArIGNvbm5fb2Zmc2V0KTsKPiAtCj4gLQkJCXJldCA9IGRwdV9m ZW5jZV9jcmVhdGUoJmRwdV9jcnRjLT5vdXRwdXRfZmVuY2UsCj4gdmFsLAo+IC0JCQkJCQkJCW9m ZnNldCk7Cj4gLQkJCWlmIChyZXQpCj4gLQkJCQlEUFVfRVJST1IoImZlbmNlIGNyZWF0ZSBmYWls ZWRcbiIpOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCXJldCA9Cj4gbXNtX3Byb3BlcnR5X2F0b21pY19n ZXQoJmRwdV9jcnRjLT5wcm9wZXJ0eV9pbmZvLAo+IC0JCQkJCSZjc3RhdGUtPnByb3BlcnR5X3N0 YXRlLAo+IC0JCQkJCXByb3BlcnR5LCB2YWwpOwo+IC0JCQlpZiAocmV0KQo+IC0JCQkJcmV0ID0g ZHB1X2NwX2NydGNfZ2V0X3Byb3BlcnR5KGNydGMsCj4gLQkJCQkJcHJvcGVydHksIHZhbCk7Cj4g LQkJfQo+ICsJCXJldCA9IG1zbV9wcm9wZXJ0eV9hdG9taWNfZ2V0KCZkcHVfY3J0Yy0+cHJvcGVy dHlfaW5mbywKPiArCQkJCSZjc3RhdGUtPnByb3BlcnR5X3N0YXRlLAo+ICsJCQkJcHJvcGVydHks IHZhbCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0ID0gZHB1X2NwX2NydGNfZ2V0X3Byb3BlcnR5 KGNydGMsCj4gKwkJCQlwcm9wZXJ0eSwgdmFsKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlEUk1fRVJS T1IoImdldCBwcm9wZXJ0eSBmYWlsZWRcbiIpOwo+ICAJfQo+IEBAIC00ODU4LDEwICs0NzMzLDYg QEAgc3RhdGljIGludCBfZHB1X2NydGNfaW5pdF9ldmVudHMoc3RydWN0IGRwdV9jcnRjCj4gKmRw dV9jcnRjKQo+ICAJCWxpc3RfYWRkX3RhaWwoJmRwdV9jcnRjLT5ldmVudF9jYWNoZVtpXS5saXN0 LAo+ICAJCQkJJmRwdV9jcnRjLT5ldmVudF9mcmVlX2xpc3QpOwo+IAo+IC0JSU5JVF9MSVNUX0hF QUQoJmRwdV9jcnRjLT5yZXRpcmVfZXZlbnRfbGlzdCk7Cj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShkcHVfY3J0Yy0+cmV0aXJlX2V2ZW50cyk7IGkrKykKPiAtCQlJTklUX0xJU1RfSEVB RCgmZHB1X2NydGMtPnJldGlyZV9ldmVudHNbaV0ubGlzdCk7Cj4gLQo+ICAJcmV0dXJuIHJjOwo+ ICB9Cj4gCj4gQEAgLTQ5MjAsOSArNDc5MSw2IEBAIHN0cnVjdCBkcm1fY3J0YyAqZHB1X2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ ICAJCXJldHVybiBFUlJfUFRSKHJjKTsKPiAgCX0KPiAKPiAtCS8qIGluaXRpYWxpemUgb3V0cHV0 IGZlbmNlIHN1cHBvcnQgKi8KPiAtCWRwdV9mZW5jZV9pbml0KCZkcHVfY3J0Yy0+b3V0cHV0X2Zl bmNlLCBkcHVfY3J0Yy0+bmFtZSwKPiBjcnRjLT5iYXNlLmlkKTsKPiAtCj4gIAkvKiBjcmVhdGUg Q1JUQyBwcm9wZXJ0aWVzICovCj4gIAltc21fcHJvcGVydHlfaW5pdCgmZHB1X2NydGMtPnByb3Bl cnR5X2luZm8sICZjcnRjLT5iYXNlLCBkZXYsCj4gIAkJCXByaXYtPmNydGNfcHJvcGVydHksIGRw dV9jcnRjLT5wcm9wZXJ0eV9kYXRhLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY3J0Yy5oCj4gaW5kZXggYjYzZGYyNDNiZTMzLi43MjdhMzQzNGE0ZjYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPiBAQCAtMjIsNyArMjIsNiBAQAo+ ICAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+ Cj4gICNpbmNsdWRlICJtc21fcHJvcC5oIgo+IC0jaW5jbHVkZSAiZHB1X2ZlbmNlLmgiCj4gICNp bmNsdWRlICJkcHVfa21zLmgiCj4gICNpbmNsdWRlICJkcHVfY29yZV9wZXJmLmgiCj4gICNpbmNs dWRlICJkcHVfaHdfYmxrLmgiCj4gQEAgLTg1LDE3ICs4NCw2IEBAIHN0cnVjdCBkcHVfY3J0Y19z bW11X3N0YXRlX2RhdGEgewo+ICAJdWludDMyX3QgdHJhbnNpdGlvbl9lcnJvcjsKPiAgfTsKPiAK PiAtLyoqCj4gLSAqIEBjb25uZWN0b3JzICAgIDogQ3VycmVudGx5IGFzc29jaWF0ZWQgZHJtIGNv bm5lY3RvcnMgZm9yIHJldGlyZSAKPiBldmVudAo+IC0gKiBAbnVtX2Nvbm5lY3RvcnM6IE51bWJl ciBvZiBhc3NvY2lhdGVkIGRybSBjb25uZWN0b3JzIGZvciByZXRpcmUgCj4gZXZlbnQKPiAtICog QGxpc3Q6CWV2ZW50IGxpc3QKPiAtICovCj4gLXN0cnVjdCBkcHVfY3J0Y19yZXRpcmVfZXZlbnQg ewo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcnNbTUFYX0NPTk5FQ1RPUlNdOwo+ IC0JaW50IG51bV9jb25uZWN0b3JzOwo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IC19Owo+ IC0KPiAgLyoqCj4gICAqIHN0cnVjdCBkcHVfY3J0Y19taXhlcjogc3RvcmVzIHRoZSBtYXAgZm9y IGVhY2ggdmlydHVhbCBwaXBlbGluZSBpbiAKPiB0aGUKPiBDUlRDCj4gICAqIEBod19sbToJTE0g SFcgRHJpdmVyIGNvbnRleHQKPiBAQCAtMTY5LDcgKzE1Nyw2IEBAIHN0cnVjdCBkcHVfY3J0Y19l dmVudCB7Cj4gICAqIEBkcm1fcmVxdWVzdGVkX3ZibGFuayA6IFdoZXRoZXIgdmJsYW5rcyBoYXZl IGJlZW4gZW5hYmxlZCBpbiB0aGUKPiBlbmNvZGVyCj4gICAqIEBwcm9wZXJ0eV9pbmZvIDogT3Bh cXVlIHN0cnVjdHVyZSBmb3IgZ2VuZXJpYyBwcm9wZXJ0eSBzdXBwb3J0Cj4gICAqIEBwcm9wZXJ0 eV9kZWZhdWx0cyA6IEFycmF5IG9mIGRlZmF1bHQgdmFsdWVzIGZvciBnZW5lcmljIHByb3BlcnR5 Cj4gc3VwcG9ydAo+IC0gKiBAb3V0cHV0X2ZlbmNlICA6IG91dHB1dCByZWxlYXNlIGZlbmNlIGNv bnRleHQKPiAgICogQHN0YWdlX2NmZyAgICAgOiBIL3cgbWl4ZXIgc3RhZ2UgY29uZmlndXJhdGlv bgo+ICAgKiBAZGVidWdmc19yb290ICA6IFBhcmVudCBvZiBkZWJ1Z2ZzIG5vZGUKPiAgICogQHZi bGFua19jYl9jb3VudCA6IGNvdW50IG9mIHZibGFuayBjYWxsYmFjayBzaW5jZSBsYXN0IHJlc2V0 Cj4gQEAgLTE5MCw4ICsxNzcsNiBAQCBzdHJ1Y3QgZHB1X2NydGNfZXZlbnQgewo+ICAgKiBAZnJh bWVfZXZlbnRzICA6IHN0YXRpYyBhbGxvY2F0aW9uIG9mIGluLWZsaWdodCBmcmFtZSBldmVudHMK PiAgICogQGZyYW1lX2V2ZW50X2xpc3QgOiBhdmFpbGFibGUgZnJhbWUgZXZlbnQgbGlzdAo+ICAg KiBAc3Bpbl9sb2NrICAgICA6IHNwaW4gbG9jayBmb3IgZnJhbWUgZXZlbnQsIHRyYW5zYWN0aW9u IHN0YXR1cywgCj4gZXRjLi4uCj4gLSAqIEByZXRpcmVfZXZlbnRzICA6IHN0YXRpYyBhbGxvY2F0 aW9uIG9mIHJldGlyZSBmZW5jZSBjb25uZWN0b3IKPiAtICogQHJldGlyZV9ldmVudF9saXN0IDog YXZhaWxhYmxlIHJldGlyZSBmZW5jZSBjb25uZWN0b3IgbGlzdAo+ICAgKiBAZnJhbWVfZG9uZV9j b21wICAgIDogZm9yIGZyYW1lX2V2ZW50X2RvbmUgc3luY2hyb25pemF0aW9uCj4gICAqIEBldmVu dF90aHJlYWQgIDogUG9pbnRlciB0byBldmVudCBoYW5kbGVyIHRocmVhZAo+ICAgKiBAZXZlbnRf d29ya2VyICA6IEV2ZW50IHdvcmtlciBxdWV1ZQo+IEBAIC0yMjcsOSArMjEyLDYgQEAgc3RydWN0 IGRwdV9jcnRjIHsKPiAgCXN0cnVjdCBtc21fcHJvcGVydHlfZGF0YSBwcm9wZXJ0eV9kYXRhW0NS VENfUFJPUF9DT1VOVF07Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2JfaW5mbzsK PiAKPiAtCS8qIG91dHB1dCBmZW5jZSBzdXBwb3J0ICovCj4gLQlzdHJ1Y3QgZHB1X2ZlbmNlX2Nv bnRleHQgb3V0cHV0X2ZlbmNlOwo+IC0KPiAgCXN0cnVjdCBkcHVfaHdfc3RhZ2VfY2ZnIHN0YWdl X2NmZzsKPiAgCXN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9vdDsKPiAKPiBAQCAtMjUzLDggKzIz NSw2IEBAIHN0cnVjdCBkcHVfY3J0YyB7Cj4gIAlzdHJ1Y3QgZHB1X2NydGNfZnJhbWVfZXZlbnQK PiBmcmFtZV9ldmVudHNbRFBVX0NSVENfRlJBTUVfRVZFTlRfU0laRV07Cj4gIAlzdHJ1Y3QgbGlz dF9oZWFkIGZyYW1lX2V2ZW50X2xpc3Q7Cj4gIAlzcGlubG9ja190IHNwaW5fbG9jazsKPiAtCXN0 cnVjdCBkcHVfY3J0Y19yZXRpcmVfZXZlbnQKPiByZXRpcmVfZXZlbnRzW0RQVV9DUlRDX0ZSQU1F X0VWRU5UX1NJWkVdOwo+IC0Jc3RydWN0IGxpc3RfaGVhZCByZXRpcmVfZXZlbnRfbGlzdDsKPiAg CXN0cnVjdCBjb21wbGV0aW9uIGZyYW1lX2RvbmVfY29tcDsKPiAKPiAgCS8qIGZvciBoYW5kbGlu ZyBpbnRlcm5hbCBldmVudCB0aHJlYWQgKi8KPiBAQCAtNDc1LDE0ICs0NTUsNiBAQCBpbnQgZHB1 X2NydGNfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCAKPiBlbik7Cj4gICAqLwo+ ICB2b2lkIGRwdV9jcnRjX2NvbW1pdF9raWNrb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4g Cj4gLS8qKgo+IC0gKiBkcHVfY3J0Y19wcmVwYXJlX2NvbW1pdCAtIGNhbGxiYWNrIHRvIHByZXBh cmUgZm9yIG91dHB1dCBmZW5jZXMKPiAtICogQGNydGM6IFBvaW50ZXIgdG8gZHJtIGNydGMgb2Jq ZWN0Cj4gLSAqIEBvbGRfc3RhdGU6IFBvaW50ZXIgdG8gZHJtIGNydGMgb2xkIHN0YXRlIG9iamVj dAo+IC0gKi8KPiAtdm9pZCBkcHVfY3J0Y19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpOwo+IC0KPiAgLyoq Cj4gICAqIGRwdV9jcnRjX2NvbXBsZXRlX2NvbW1pdCAtIGNhbGxiYWNrIHNpZ25hbGxpbmcgY29t cGxldGlvbiBvZiAKPiBjdXJyZW50Cj4gY29tbWl0Cj4gICAqIEBjcnRjOiBQb2ludGVyIHRvIGRy bSBjcnRjIG9iamVjdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5j b2Rlci5jCj4gaW5kZXggNGQxZTM2NTJkYmY0Li5hNTRhZDJjZDU4NTYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiBAQCAtMjQ2NSw5ICsyNDY1 LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIAo+IF9kcHVfZW5jb2Rlcl90cmlnZ2VyX2ZsdXNoKHN0 cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+IAo+ICAJcGVuZGluZ19raWNrb2ZmX2NudCA9 IGRwdV9lbmNvZGVyX3BoeXNfaW5jX3BlbmRpbmcocGh5cyk7Cj4gCj4gLQlpZiAocGh5cy0+b3Bz LmlzX21hc3RlciAmJiBwaHlzLT5vcHMuaXNfbWFzdGVyKHBoeXMpKQo+IC0JCWF0b21pY19pbmMo JnBoeXMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCk7Cj4gLQo+ICAJaWYgKGV4dHJhX2ZsdXNo X2JpdHMgJiYgY3RsLT5vcHMudXBkYXRlX3BlbmRpbmdfZmx1c2gpCj4gIAkJY3RsLT5vcHMudXBk YXRlX3BlbmRpbmdfZmx1c2goY3RsLCBleHRyYV9mbHVzaF9iaXRzKTsKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaAo+IGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaAo+IGluZGV4IDY5ZmIyNmNiNDNh Yi4uODZhMzgwMGFmNjczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlci5oCj4gQEAgLTI3LDkgKzI3LDcgQEAKPiAgI2RlZmluZSBEUFVfRU5DT0RFUl9G UkFNRV9FVkVOVF9ET05FCQkJQklUKDApCj4gICNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZF TlRfRVJST1IJCQlCSVQoMSkKPiAgI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9QQU5F TF9ERUFECQlCSVQoMikKPiAtI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxf UkVMRUFTRV9GRU5DRQlCSVQoMykKPiAtI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9T SUdOQUxfUkVUSVJFX0ZFTkNFCUJJVCg0KQo+IC0jZGVmaW5lIERQVV9FTkNPREVSX0ZSQU1FX0VW RU5UX0lETEUJCQlCSVQoNSkKPiArI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9JRExF CQkJQklUKDMpCj4gCj4gICNkZWZpbmUgSURMRV9USU1FT1VUCSg2NiAtIDE2LzIpCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMu aAo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4g aW5kZXggM2IwNTU2OTAwN2QyLi43MWNkMmYyNTg5OTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4gQEAgLTI0NSw4ICsyNDUs NiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfaXJxIHsKPiAgICoJCQkJc2NoZWR1bGVkLiBEZWNyZW1l bnRlZCBpbiBpcnEgaGFuZGxlcgo+ICAgKiBAcGVuZGluZ19jdGxzdGFydF9jbnQ6CUF0b21pYyBj b3VudGVyIHRyYWNraW5nIHRoZSBudW1iZXIgb2YgY3RsCj4gc3RhcnQKPiAgICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLgo+IC0gKiBAcGVuZGluZ19yZXRpcmVfZmVuY2Vf Y250OiAgIEF0b21pYyBjb3VudGVyIHRyYWNraW5nIHRoZSBwZW5kaW5nCj4gcmV0aXJlCj4gLSAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVuY2VzIHRoYXQgaGF2ZSB0byBiZSBzaWdu YWxsZWQuCj4gICAqIEBwZW5kaW5nX2tpY2tvZmZfd3E6CQlXYWl0IHF1ZXVlIGZvciBibG9ja2lu ZyB1bnRpbAo+IGtpY2tvZmYgY29tcGxldGVzCj4gICAqIEBpcnE6CQkJSVJRIHRyYWNraW5nIHN0 cnVjdHVyZXMKPiAgICovCj4gQEAgLTI3Myw3ICsyNzEsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyB7Cj4gIAlhdG9taWNfdCB1bmRlcnJ1bl9jbnQ7Cj4gIAlhdG9taWNfdCBwZW5kaW5nX2N0 bHN0YXJ0X2NudDsKPiAgCWF0b21pY190IHBlbmRpbmdfa2lja29mZl9jbnQ7Cj4gLQlhdG9taWNf dCBwZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQ7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRfdCBwZW5kaW5n X2tpY2tvZmZfd3E7Cj4gIAlzdHJ1Y3QgZHB1X2VuY29kZXJfaXJxIGlycVtJTlRSX0lEWF9NQVhd Owo+ICB9Owo+IEBAIC0zMjMsOSArMzIwLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21k X2F1dG9yZWZyZXNoIHsKPiAgICoJCQlhZnRlciBjdGxfc3RhcnQgaW5zdGVhZCBvZiBiZWZvcmUg bmV4dCBmcmFtZQo+IGtpY2tvZmYKPiAgICogQHBwX3RpbWVvdXRfcmVwb3J0X2NudDogbnVtYmVy IG9mIHBpbmdwb25nIGRvbmUgaXJxIHRpbWVvdXQgZXJyb3JzCj4gICAqIEBhdXRvcmVmcmVzaDog YXV0b3JlZnJlc2ggZmVhdHVyZSBzdGF0ZQo+IC0gKiBAcGVuZGluZ19yZF9wdHJfY250OiBhdG9t aWMgY291bnRlciB0byBpbmRpY2F0ZSBpZiByZXRpcmUgZmVuY2UgY2FuIAo+IGJlCj4gLSAqICAg ICAgICAgICAgICAgICAgICAgIHNpZ25hbGVkIGF0IHRoZSBuZXh0IHJkX3B0cl9pcnEKPiAtICog QHJkX3B0cl90aW1lc3RhbXA6IGxhc3QgcmRfcHRyX2lycSB0aW1lc3RhbXAKPiAgICogQHBlbmRp bmdfdmJsYW5rX2NudDogQXRvbWljIGNvdW50ZXIgdHJhY2tpbmcgcGVuZGluZyB3YWl0IGZvciAK PiBWQkxBTksKPiAgICogQHBlbmRpbmdfdmJsYW5rX3dxOiBXYWl0IHF1ZXVlIGZvciBibG9ja2lu ZyB1bnRpbCBWQkxBTksgcmVjZWl2ZWQKPiAgICovCj4gQEAgLTMzNSw4ICszMjksNiBAQCBzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgewo+ICAJYm9vbCBzZXJpYWxpemVfd2FpdDRwcDsKPiAg CWludCBwcF90aW1lb3V0X3JlcG9ydF9jbnQ7Cj4gIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19j bWRfYXV0b3JlZnJlc2ggYXV0b3JlZnJlc2g7Cj4gLQlhdG9taWNfdCBwZW5kaW5nX3JkX3B0cl9j bnQ7Cj4gLQlrdGltZV90IHJkX3B0cl90aW1lc3RhbXA7Cj4gIAlhdG9taWNfdCBwZW5kaW5nX3Zi bGFua19jbnQ7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRfdCBwZW5kaW5nX3ZibGFua193cTsKPiAgfTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYwo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYwo+IGluZGV4IGU5MjM4MGExZDVhNC4uNmNjZjM3ODIwYWEyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2Nt ZC5jCj4gQEAgLTQ0LDEyICs0NCw2IEBACj4gCj4gICNkZWZpbmUgRFBVX0VOQ19XUl9QVFJfU1RB UlRfVElNRU9VVF9VUyAyMDAwMAo+IAo+IC0vKgo+IC0gKiBUaHJlc2hvbGQgZm9yIHNpZ25hbGxp bmcgcmV0aXJlIGZlbmNlcyBpbiBjYXNlcyB3aGVyZQo+IC0gKiBDVExfU1RBUlRfSVJRIGlzIHJl Y2VpdmVkIGp1c3QgYWZ0ZXIgUkRfUFRSX0lSUQo+IC0gKi8KPiAtI2RlZmluZSBEUFVfRU5DX0NU TF9TVEFSVF9USFJFU0hPTERfVVMgNTAwCj4gLQo+ICBzdGF0aWMgaW5saW5lIGludCBfZHB1X2Vu Y29kZXJfcGh5c19jbWRfZ2V0X2lkbGVfdGltZW91dCgKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5c19jbWQgKmNtZF9lbmMpCj4gIHsKPiBAQCAtMTcwLDggKzE2NCw3IEBAIHN0YXRpYyB2b2lk IAo+IGRwdV9lbmNvZGVyX3BoeXNfY21kX3BwX3R4X2RvbmVfaXJxKHZvaWQKPiAqYXJnLCBpbnQg aXJxX2lkeCkKPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsKPiAg CXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKPiAgCWludCBuZXdfY250Owo+IC0JdTMyIGV2ZW50 ID0gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRE9ORSB8Cj4gLQkJCURQVV9FTkNPREVSX0ZSQU1F X0VWRU5UX1NJR05BTF9SRUxFQVNFX0ZFTkNFOwo+ICsJdTMyIGV2ZW50ID0gRFBVX0VOQ09ERVJf RlJBTUVfRVZFTlRfRE9ORTsKPiAKPiAgCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19w cCkKPiAgCQlyZXR1cm47Cj4gQEAgLTIyMSw3ICsyMTQsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX2NtZF9wcF9yZF9wdHJfaXJxKHZvaWQKPiAqYXJnLCBpbnQgaXJxX2lkeCkKPiAg ewo+ICAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0gYXJnOwo+ICAJc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jOwo+IC0JdTMyIGV2ZW50ID0gMDsKPiAKPiAg CWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19wcCkKPiAgCQlyZXR1cm47Cj4gQEAgLTIy OSwzMCArMjIxLDEwIEBAIHN0YXRpYyB2b2lkIAo+IGRwdV9lbmNvZGVyX3BoeXNfY21kX3BwX3Jk X3B0cl9pcnEodm9pZAo+ICphcmcsIGludCBpcnFfaWR4KQo+ICAJRFBVX0FUUkFDRV9CRUdJTigi cmRfcHRyX2lycSIpOwo+ICAJY21kX2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNf ZW5jKTsKPiAKPiAtCS8qKgo+IC0JICogc2lnbmFsIG9ubHkgZm9yIG1hc3Rlciwgd2hlbiB0aGUg Y3RsX3N0YXJ0IGlycSBpcwo+IC0JICogZG9uZSBhbmQgaW5jcmVtZW50ZWQgdGhlIHBlbmRpbmdf cmRfcHRyX2NudC4KPiAtCSAqLwo+IC0JaWYgKGRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3Rl cihwaHlzX2VuYykKPiAtCQkgICAgJiYgYXRvbWljX2FkZF91bmxlc3MoJmNtZF9lbmMtPnBlbmRp bmdfcmRfcHRyX2NudCwgLTEsCj4gMCkKPiAtCQkgICAgJiYgYXRvbWljX2FkZF91bmxlc3MoCj4g LQkJCQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4gMCkpIHsKPiAt Cj4gLQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVUSVJFX0ZFTkNF Owo+IC0JCWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSkKPiAtCQkJ cGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCj4gLQkJCQlwaHlzX2VuYy0+ cGFyZW50LCBwaHlzX2VuYywgZXZlbnQpOwo+IC0JfQo+IC0KPiAtCURQVV9FVlQzMl9JUlEoRFJN SUQocGh5c19lbmMtPnBhcmVudCksCj4gLQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BP TkdfMCwgZXZlbnQsIDB4ZmZmKTsKPiAtCj4gIAlpZiAocGh5c19lbmMtPnBhcmVudF9vcHMuaGFu ZGxlX3ZibGFua192aXJ0KQo+ICAJCXBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV92Ymxhbmtf dmlydChwaHlzX2VuYy0+cGFyZW50LAo+ICAJCQlwaHlzX2VuYyk7Cj4gCj4gLQljbWRfZW5jLT5y ZF9wdHJfdGltZXN0YW1wID0ga3RpbWVfZ2V0KCk7Cj4gLQo+ICAJYXRvbWljX2FkZF91bmxlc3Mo JmNtZF9lbmMtPnBlbmRpbmdfdmJsYW5rX2NudCwgLTEsIDApOwo+ICAJd2FrZV91cF9hbGwoJmNt ZF9lbmMtPnBlbmRpbmdfdmJsYW5rX3dxKTsKPiAgCURQVV9BVFJBQ0VfRU5EKCJyZF9wdHJfaXJx Iik7Cj4gQEAgLTI2Miw5ICsyMzQsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2Nt ZF9jdGxfc3RhcnRfaXJxKHZvaWQKPiAqYXJnLCBpbnQgaXJxX2lkeCkKPiAgewo+ICAJc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0gYXJnOwo+ICAJc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jOwo+IC0Jc3RydWN0IGRwdV9od19jdGwgKmN0bDsKPiAtCXUzMiBl dmVudCA9IDA7Cj4gLQlzNjQgdGltZV9kaWZmX3VzOwo+IAo+ICAJaWYgKCFwaHlzX2VuYyB8fCAh cGh5c19lbmMtPmh3X2N0bCkKPiAgCQlyZXR1cm47Cj4gQEAgLTI3Miw0MyArMjQxLDggQEAgc3Rh dGljIHZvaWQgCj4gZHB1X2VuY29kZXJfcGh5c19jbWRfY3RsX3N0YXJ0X2lycSh2b2lkCj4gKmFy ZywgaW50IGlycV9pZHgpCj4gIAlEUFVfQVRSQUNFX0JFR0lOKCJjdGxfc3RhcnRfaXJxIik7Cj4g IAljbWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwo+IAo+IC0JY3Rs ID0gcGh5c19lbmMtPmh3X2N0bDsKPiAgCWF0b21pY19hZGRfdW5sZXNzKCZwaHlzX2VuYy0+cGVu ZGluZ19jdGxzdGFydF9jbnQsIC0xLCAwKTsKPiAKPiAtCXRpbWVfZGlmZl91cyA9IGt0aW1lX3Vz X2RlbHRhKGt0aW1lX2dldCgpLAo+IGNtZF9lbmMtPnJkX3B0cl90aW1lc3RhbXApOwo+IC0KPiAt CS8qIGhhbmRsZSByZXRpcmUgZmVuY2UgYmFzZWQgb24gb25seSBtYXN0ZXIgKi8KPiAtCWlmIChk cHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpCj4gLQkJCSYmCj4gYXRvbWlj X3JlYWQoJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQpKSB7Cj4gLQkJLyoqCj4g LQkJICogSGFuZGxlIHJhcmUgY2FzZXMgd2hlcmUgdGhlIGN0bF9zdGFydF9pcnEgaXMgcmVjZWl2 ZWQKPiAtCQkgKiBhZnRlciByZF9wdHJfaXJxLiBJZiBpdCBmYWxscyB3aXRoaW4gYSB0aHJlc2hv bGQsIGl0IGlzCj4gLQkJICogZ3VhcmFudGVlZCB0aGUgZnJhbWUgd291bGQgYmUgcGlja2VkIHVw IGluIHRoZSBjdXJyZW50Cj4gVEUuCj4gLQkJICogU2lnbmFsIHJldGlyZSBmZW5jZSBpbW1lZGlh dGVseSBpbiBzdWNoIGNhc2UuCj4gLQkJICovCj4gLQkJaWYgKCh0aW1lX2RpZmZfdXMgPD0gRFBV X0VOQ19DVExfU1RBUlRfVEhSRVNIT0xEX1VTKQo+IC0JCQkgICAgJiYgYXRvbWljX2FkZF91bmxl c3MoCj4gLQkJCQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4gMCkp IHsKPiAtCj4gLQkJCWV2ZW50ID0KPiBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVU SVJFX0ZFTkNFOwo+IC0KPiAtCQkJaWYgKHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFt ZV9kb25lKQo+IC0JCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCj4g LQkJCQkJcGh5c19lbmMtPnBhcmVudCwgcGh5c19lbmMsCj4gZXZlbnQpOwo+IC0KPiAtCQkvKioK PiAtCQkgKiBJbiBpZGVhbCBjYXNlcywgY3RsX3N0YXJ0X2lycSBpcyByZWNlaXZlZCBiZWZvcmUg dGhlCj4gLQkJICogcmRfcHRyX2lycSwgc28gc2V0IHRoZSBhdG9taWMgZmxhZyB0byBpbmRpY2F0 ZSB0aGUKPiBldmVudAo+IC0JCSAqIGFuZCByZF9wdHJfaXJxIHdpbGwgaGFuZGxlIHNpZ25hbGxp bmcgdGhlIHJldGlyZSBmZW5jZQo+IC0JCSAqLwo+IC0JCX0gZWxzZSB7Cj4gLQkJCWF0b21pY19p bmMoJmNtZF9lbmMtPnBlbmRpbmdfcmRfcHRyX2NudCk7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCURQ VV9FVlQzMl9JUlEoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGN0bC0+aWR4IC0gQ1RMXzAsCj4g LQkJCQl0aW1lX2RpZmZfdXMsIGV2ZW50LCAweGZmZik7Cj4gLQo+ICAJLyogU2lnbmFsIGFueSB3 YWl0aW5nIGN0bCBzdGFydCBpbnRlcnJ1cHQgKi8KPiAgCXdha2VfdXBfYWxsKCZwaHlzX2VuYy0+ cGVuZGluZ19raWNrb2ZmX3dxKTsKPiAgCURQVV9BVFJBQ0VfRU5EKCJjdGxfc3RhcnRfaXJxIik7 Cj4gQEAgLTQwOSw4ICszNDMsNyBAQCBzdGF0aWMgaW50Cj4gX2RwdV9lbmNvZGVyX3BoeXNfY21k X2hhbmRsZV9wcGRvbmVfdGltZW91dCgKPiAgewo+ICAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNf Y21kICpjbWRfZW5jID0KPiAgCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwo+ IC0JdTMyIGZyYW1lX2V2ZW50ID0gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRVJST1IKPiAtCQkJ CXwKPiBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRTsKPiArCXUz MiBmcmFtZV9ldmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VSUk9SOwo+ICAJYm9vbCBk b19sb2cgPSBmYWxzZTsKPiAKPiAgCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19wcCB8 fCAhcGh5c19lbmMtPmh3X2N0bCkKPiBAQCAtMTM0Niw4ICsxMjc5LDYgQEAgc3RydWN0IGRwdV9l bmNvZGVyX3BoeXMgCj4gKmRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXQoCj4gIAlhdG9taWNfc2V0 KCZwaHlzX2VuYy0+dmJsYW5rX3JlZmNvdW50LCAwKTsKPiAgCWF0b21pY19zZXQoJnBoeXNfZW5j LT5wZW5kaW5nX2tpY2tvZmZfY250LCAwKTsKPiAgCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5k aW5nX2N0bHN0YXJ0X2NudCwgMCk7Cj4gLQlhdG9taWNfc2V0KCZwaHlzX2VuYy0+cGVuZGluZ19y ZXRpcmVfZmVuY2VfY250LCAwKTsKPiAtCWF0b21pY19zZXQoJmNtZF9lbmMtPnBlbmRpbmdfcmRf cHRyX2NudCwgMCk7Cj4gIAlhdG9taWNfc2V0KCZjbWRfZW5jLT5wZW5kaW5nX3ZibGFua19jbnQs IDApOwo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmcGh5c19lbmMtPnBlbmRpbmdfa2lja29mZl93 cSk7Cj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjbWRfZW5jLT5wZW5kaW5nX3ZibGFua193cSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy X3BoeXNfdmlkLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy X3BoeXNfdmlkLmMKPiBpbmRleCA2MmM2ZjVjMzU0N2EuLmVkYWFkMDQxMzk4NyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192 aWQuYwo+IEBAIC0zNzMsMTMgKzM3MywxMCBAQCBzdGF0aWMgdm9pZAo+IGRwdV9lbmNvZGVyX3Bo eXNfdmlkX3NldHVwX3RpbWluZ19lbmdpbmUoCj4gIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3Bo eXNfdmlkX3ZibGFua19pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKPiAgewo+ICAJc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0gYXJnOwo+IC0Jc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfdmlkICp2aWRfZW5jID0KPiAtCQkJdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19l bmMpOwo+ICAJc3RydWN0IGRwdV9od19jdGwgKmh3X2N0bDsKPiAgCXVuc2lnbmVkIGxvbmcgbG9j a19mbGFnczsKPiAgCXUzMiBmbHVzaF9yZWdpc3RlciA9IDA7Cj4gIAlpbnQgbmV3X2NudCA9IC0x LCBvbGRfY250ID0gLTE7Cj4gLQl1MzIgZXZlbnQgPSAwOwo+IAo+ICAJaWYgKCFwaHlzX2VuYykK PiAgCQlyZXR1cm47Cj4gQEAgLTM5MCwxOCArMzg3LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29k ZXJfcGh5c192aWRfdmJsYW5rX2lycSh2b2lkCj4gKmFyZywgaW50IGlycV9pZHgpCj4gCj4gIAlE UFVfQVRSQUNFX0JFR0lOKCJ2YmxhbmtfaXJxIik7Cj4gCj4gLQkvKiBzaWduYWwgb25seSBmb3Ig bWFzdGVyLCB3aGVyZSB0aGVyZSBpcyBhIHBlbmRpbmcga2lja29mZiAqLwo+IC0JaWYgKGRwdV9l bmNvZGVyX3BoeXNfdmlkX2lzX21hc3RlcihwaHlzX2VuYykKPiAtCQkJJiYgYXRvbWljX2FkZF91 bmxlc3MoCj4gLQkJCQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4g MCkpIHsKPiAtCQlldmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1NJR05BTF9SRUxFQVNF X0ZFTkNFCj4gLQkJCQl8Cj4gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFVElSRV9G RU5DRTsKPiAtCj4gLQkJaWYgKHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25l KQo+IC0KPiBwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZShwaHlzX2VuYy0+ cGFyZW50LAo+IC0JCQkJcGh5c19lbmMsIGV2ZW50KTsKPiAtCX0KPiAtCj4gIAlpZiAocGh5c19l bmMtPnBhcmVudF9vcHMuaGFuZGxlX3ZibGFua192aXJ0KQo+ICAJCXBoeXNfZW5jLT5wYXJlbnRf b3BzLmhhbmRsZV92YmxhbmtfdmlydChwaHlzX2VuYy0+cGFyZW50LAo+ICAJCQkJcGh5c19lbmMp Owo+IEBAIC00MjIsOSArNDA3LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRf dmJsYW5rX2lycSh2b2lkIAo+ICphcmcsCj4gaW50IGlycV9pZHgpCj4gIAkJCQktMSwgMCk7Cj4g IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxh Z3MpOwo+IAo+IC0JRFBVX0VWVDMyX0lSUShEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgdmlkX2Vu Yy0+aHdfaW50Zi0+aWR4IC0KPiBJTlRGXzAsCj4gLQkJCW9sZF9jbnQsIG5ld19jbnQsIGZsdXNo X3JlZ2lzdGVyLCBldmVudCk7Cj4gLQo+ICAJLyogU2lnbmFsIGFueSB3YWl0aW5nIGF0b21pYyBj b21taXQgdGhyZWFkICovCj4gIAl3YWtlX3VwX2FsbCgmcGh5c19lbmMtPnBlbmRpbmdfa2lja29m Zl93cSk7Cj4gIAlEUFVfQVRSQUNFX0VORCgidmJsYW5rX2lycSIpOwo+IEBAIC0xMDI4LDcgKzEw MTAsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAKPiAqZHB1X2VuY29kZXJfcGh5c192aWRf aW5pdCgKPiAKPiAgCWF0b21pY19zZXQoJnBoeXNfZW5jLT52YmxhbmtfcmVmY291bnQsIDApOwo+ ICAJYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdfa2lja29mZl9jbnQsIDApOwo+IC0JYXRv bWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgMCk7Cj4gIAlpbml0 X3dhaXRxdWV1ZV9oZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX3dxKTsKPiAgCXBoeXNf ZW5jLT5lbmFibGVfc3RhdGUgPSBEUFVfRU5DX0RJU0FCTEVEOwo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3diLmMKPiBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfd2IuYwo+IGluZGV4 IDlhNmZhM2UxZThiNC4uMmJjNTg5NDgzOWM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfd2IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfd2IuYwo+IEBAIC02ODAsMTEgKzY4 MCw4IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfd2JfZG9uZV9pcnEodm9pZCAKPiAq YXJnLAo+IGludCBpcnFfaWR4KQo+ICAJaWYgKHBoeXNfZW5jLT5lbmFibGVfc3RhdGUgPT0gRFBV X0VOQ19ESVNBQkxJTkcpCj4gIAkJZ290byBjb21wbGV0ZTsKPiAKPiAtCWV2ZW50ID0gRFBVX0VO Q09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0UKPiAtCQkJfCBEUFVfRU5DT0RF Ul9GUkFNRV9FVkVOVF9TSUdOQUxfUkVUSVJFX0ZFTkNFCj4gLQkJCXwgRFBVX0VOQ09ERVJfRlJB TUVfRVZFTlRfRE9ORTsKPiArCWV2ZW50ID0gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRE9ORTsK PiAKPiAtCWF0b21pY19hZGRfdW5sZXNzKCZwaHlzX2VuYy0+cGVuZGluZ19yZXRpcmVfZmVuY2Vf Y250LCAtMSwgMCk7Cj4gIAlpZiAocGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2Rv bmUpCj4gIAkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUocGh5c19lbmMt PnBhcmVudCwKPiAgCQkJCXBoeXNfZW5jLCBldmVudCk7Cj4gQEAgLTg0NywxMiArODQ0LDggQEAg c3RhdGljIGludCAKPiBkcHVfZW5jb2Rlcl9waHlzX3diX3dhaXRfZm9yX2NvbW1pdF9kb25lKAo+ ICAJCX0gZWxzZSB7Cj4gIAkJCURQVV9FUlJPUigid2I6JWQga2lja29mZiB0aW1lZCBvdXRcbiIs Cj4gIAkJCQkJd2JfZW5jLT53Yl9kZXYtPndiX2lkeCAtIFdCXzApOwo+IC0JCQlhdG9taWNfYWRk X3VubGVzcygKPiAtCQkJCSZwaHlzX2VuYy0+cGVuZGluZ19yZXRpcmVfZmVuY2VfY250LCAtMSwK PiAwKTsKPiAKPiAtCQkJZXZlbnQgPQo+IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1NJR05BTF9S RUxFQVNFX0ZFTkNFCj4gLQkJCQl8Cj4gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JF VElSRV9GRU5DRQo+IC0JCQkJfCBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9FUlJPUjsKPiArCQkJ ZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9FUlJPUjsKPiAgCQkJaWYgKHBoeXNfZW5j LT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQo+ICAJCQkJcGh5c19lbmMtPnBhcmVudF9v cHMuaGFuZGxlX2ZyYW1lX2RvbmUoCj4gIAkJCQkJcGh5c19lbmMtPnBhcmVudCwgcGh5c19lbmMs Cj4gZXZlbnQpOwo+IEBAIC0xMzMzLDcgKzEzMjYsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 cyAKPiAqZHB1X2VuY29kZXJfcGh5c193Yl9pbml0KAo+ICAJcGh5c19lbmMtPmludGZfbW9kZSA9 IElOVEZfTU9ERV9XQl9MSU5FOwo+ICAJcGh5c19lbmMtPmludGZfaWR4ID0gcC0+aW50Zl9pZHg7 Cj4gIAlwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrID0gcC0+ZW5jX3NwaW5sb2NrOwo+IC0JYXRvbWlj X3NldCgmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgMCk7Cj4gIAlJTklUX0xJ U1RfSEVBRCgmd2JfZW5jLT5pcnFfY2IubGlzdCk7Cj4gCj4gIAkvKiBjcmVhdGUgaW50ZXJuYWwg YnVmZmVyIGZvciBkaXNhYmxlIGxvZ2ljICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2ttcy5jCj4gaW5kZXggM2Q4MzAzN2U4MzA1Li45ZDY4MDMwMzc4YTcgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gQEAgLTU0NSwzNSArNTQ1LDYg QEAgc3RhdGljIHZvaWQgZHB1X2ttc193YWl0X2Zvcl9jb21taXRfZG9uZShzdHJ1Y3QKPiBtc21f a21zICprbXMsCj4gIAl9Cj4gIH0KPiAKPiAtc3RhdGljIHZvaWQgZHB1X2ttc19wcmVwYXJlX2Zl bmNlKHN0cnVjdCBtc21fa21zICprbXMsCj4gLQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9s ZF9zdGF0ZSkKPiAtewo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiAtCWludCBpLCByYzsKPiAtCj4gLQlpZiAoIWtt cyB8fCAhb2xkX3N0YXRlIHx8ICFvbGRfc3RhdGUtPmRldiB8fAo+ICFvbGRfc3RhdGUtPmFjcXVp cmVfY3R4KSB7Cj4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKPiAtCQly ZXR1cm47Cj4gLQl9Cj4gLQo+IC1yZXRyeToKPiAtCS8qIGF0dGVtcHQgdG8gYWNxdWlyZSB3dyBt dXRleCBmb3IgY29ubmVjdGlvbiAqLwo+IC0JcmMgPQo+IGRybV9tb2Rlc2V0X2xvY2soJm9sZF9z dGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LAo+IC0JCQkgICAgICAgb2xk X3N0YXRlLT5hY3F1aXJlX2N0eCk7Cj4gLQo+IC0JaWYgKHJjID09IC1FREVBRExLKSB7Cj4gLQkJ ZHJtX21vZGVzZXRfYmFja29mZihvbGRfc3RhdGUtPmFjcXVpcmVfY3R4KTsKPiAtCQlnb3RvIHJl dHJ5Owo+IC0JfQo+IC0KPiAtCS8qIG9sZF9zdGF0ZSBhY3R1YWxseSBjb250YWlucyB1cGRhdGVk IGNydGMgcG9pbnRlcnMgKi8KPiAtCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0 ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2 ZSkKPiAtCQkJZHB1X2NydGNfcHJlcGFyZV9jb21taXQoY3J0Yywgb2xkX2NydGNfc3RhdGUpOwo+ IC0JfQo+IC19Cj4gLQo+ICAvKioKPiAgICogX2RwdV9rbXNfZ2V0X2Rpc3BsYXlzIC0gcXVlcnkg Zm9yIHVuZGVybHlpbmcgZGlzcGxheSBoYW5kbGVzIGFuZCAKPiBjYWNoZQo+IHRoZW0KPiAgICog QGRwdV9rbXM6ICAgIFBvaW50ZXIgdG8gZHB1IGttcyBzdHJ1Y3R1cmUKPiBAQCAtMTczNCw3ICsx NzA1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtc21fa21zX2Z1bmNzIGttc19mdW5jcyA9IHsK PiAgCS5pcnFfdW5pbnN0YWxsICAgPSBkcHVfaXJxX3VuaW5zdGFsbCwKPiAgCS5pcnEgICAgICAg ICAgICAgPSBkcHVfaXJxLAo+ICAJLnByZWNsb3NlICAgICAgICA9IGRwdV9rbXNfcHJlY2xvc2Us Cj4gLQkucHJlcGFyZV9mZW5jZSAgID0gZHB1X2ttc19wcmVwYXJlX2ZlbmNlLAo+ICAJLnByZXBh cmVfY29tbWl0ICA9IGRwdV9rbXNfcHJlcGFyZV9jb21taXQsCj4gIAkuY29tbWl0ICAgICAgICAg ID0gZHB1X2ttc19jb21taXQsCj4gIAkuY29tcGxldGVfY29tbWl0ID0gZHB1X2ttc19jb21wbGV0 ZV9jb21taXQsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIAo+ IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiBpbmRleCA4Y2FiMzMzZGY3MTcuLmU5 MjM3NmFjYmNmZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gQEAgLTEzMiw4ICsxMzIsNiBA QCBlbnVtIG1zbV9tZHBfY3J0Y19wcm9wZXJ0eSB7Cj4gCj4gIAkvKiByYW5nZSBwcm9wZXJ0aWVz ICovCj4gIAlDUlRDX1BST1BfSU5QVVRfRkVOQ0VfVElNRU9VVCA9IENSVENfUFJPUF9CTE9CQ09V TlQsCj4gLQlDUlRDX1BST1BfT1VUUFVUX0ZFTkNFLAo+IC0JQ1JUQ19QUk9QX09VVFBVVF9GRU5D RV9PRkZTRVQsCj4gIAlDUlRDX1BST1BfRElNX0xBWUVSX1YxLAo+ICAJQ1JUQ19QUk9QX0NPUkVf Q0xLLAo+ICAJQ1JUQ19QUk9QX0NPUkVfQUIsCj4gQEAgLTE2Myw3ICsxNjEsNiBAQCBlbnVtIG1z bV9tZHBfY29ubl9wcm9wZXJ0eSB7Cj4gCj4gIAkvKiByYW5nZSBwcm9wZXJ0aWVzICovCj4gIAlD T05ORUNUT1JfUFJPUF9PVVRfRkIgPSBDT05ORUNUT1JfUFJPUF9CTE9CQ09VTlQsCj4gLQlDT05O RUNUT1JfUFJPUF9SRVRJUkVfRkVOQ0UsCj4gIAlDT05ORUNUT1JfUFJPUF9EU1RfWCwKPiAgCUNP Tk5FQ1RPUl9QUk9QX0RTVF9ZLAo+ICAJQ09OTkVDVE9SX1BST1BfRFNUX1csCgotLSAKSmV5a3Vt YXIgUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVl ZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K