From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 02/25] drm/msm/dpu: avoid tracking reservations in RM Date: Tue, 9 Oct 2018 15:57:55 -0400 Message-ID: <20181009195755.GK154160@art_vandelay> References: <1539059262-8326-1-git-send-email-jsanka@codeaurora.org> <1539059262-8326-3-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1539059262-8326-3-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBPY3QgMDgsIDIwMTggYXQgMDk6Mjc6MTlQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUk0gd2FzIGVxdWlwcGVkIHdpdGggcmVzZXJ2YXRpb24gdHJhY2tpbmcgc3Ry dWN0dXJlIFJTVlAKPiB0byBjYWNoZSBIVyByZXNlcnZhdGlvbiBvZiBkaXNwbGF5cyBmb3IgY2Vy dGFpbiBjbGllbnRzCj4gd2hlcmUgYXRvbWljX2NoZWNrcyAoYXRvbWljIGNvbW1pdCB3aXRoIFRF U1RfT05MWSkgZm9yIGFsbAo+IHRoZSBkaXNwbGF5cyBhcmUgY2FsbGVkIGJlZm9yZSB0aGVpciBy ZXNwZWN0aXZlIGF0b21pY19jb21taXRzLgo+IFNpbmNlIERQVSBkb2Vzbid0IHN1cHBvcnQgdGhl IHNlcXVlbmNlIGFueW1vcmUsIGNsZWFuIHVwCj4gdGhlIHN1cHBvcnQgZnJvbSBSTS4gUmVwbGFj ZSByc3ZwIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKPiBlbmNvZGVyIGlkIHRvIHRhZyB0aGUgSFcg YmxvY2tzIHJlc2VydmVkLgo+IAoKQ2FuIHlvdSBwdXQgc29tZXRoaW5nIHRvIHRoZSBlZmZlY3Qg b2YgIlRoaXMgaXMgdGVtcG9yYXJ5IGFuZCByZW1vdmVkIGluIGEKZnV0dXJlIHBhdGNoIiBpbiB0 aGUgY29tbWl0IG1lc3NhZ2U/CgoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hy b21pdW0ub3JnPgoKCj4gU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBj b2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3JtLmMgfCAyODQgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oIHwgICA0IC0KPiAgMiBmaWxlcyBjaGFuZ2Vk LCA0MyBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X3JtLmMKPiBpbmRleCBiZGIxMTc3Li4zNmE5MjliIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKPiBAQCAtMjEsOCArMjEsOCBAQAo+ICAj aW5jbHVkZSAiZHB1X2VuY29kZXIuaCIKPiAgI2luY2x1ZGUgImRwdV90cmFjZS5oIgo+ICAKPiAt I2RlZmluZSBSRVNFUlZFRF9CWV9PVEhFUihoLCByKSBcCj4gLQkoKGgpLT5yc3ZwICYmICgoaCkt PnJzdnAtPmVuY19pZCAhPSAociktPmVuY19pZCkpCj4gKyNkZWZpbmUgUkVTRVJWRURfQllfT1RI RVIoaCwgcikgIFwKPiArCQkoKGgpLT5lbmNfaWQgJiYgKGgpLT5lbmNfaWQgIT0gcikKPiAgCj4g IC8qKgo+ICAgKiBzdHJ1Y3QgZHB1X3JtX3JlcXVpcmVtZW50cyAtIFJlc2VydmF0aW9uIHJlcXVp cmVtZW50cyBwYXJhbWV0ZXIgYnVuZGxlCj4gQEAgLTM0LDg1ICszNCwyMyBAQCBzdHJ1Y3QgZHB1 X3JtX3JlcXVpcmVtZW50cyB7Cj4gIAlzdHJ1Y3QgZHB1X2VuY29kZXJfaHdfcmVzb3VyY2VzIGh3 X3JlczsKPiAgfTsKPiAgCj4gLS8qKgo+IC0gKiBzdHJ1Y3QgZHB1X3JtX3JzdnAgLSBVc2UgQ2Fz ZSBSZXNlcnZhdGlvbiB0YWdnaW5nIHN0cnVjdHVyZQo+IC0gKglVc2VkIHRvIHRhZyBIVyBibG9j a3MgYXMgcmVzZXJ2ZWQgYnkgYSBDUlRDLT5FbmNvZGVyLT5Db25uZWN0b3IgY2hhaW4KPiAtICoJ QnkgdXNpbmcgYXMgYSB0YWcsIHJhdGhlciB0aGFuIGxpc3RzIG9mIHBvaW50ZXJzIHRvIEhXIGJs b2NrcyB1c2VkCj4gLSAqCXdlIGNhbiBhdm9pZCBzb21lIGxpc3QgbWFuYWdlbWVudCBzaW5jZSB3 ZSBkb24ndCBrbm93IGhvdyBtYW55IGJsb2Nrcwo+IC0gKglvZiBlYWNoIHR5cGUgYSBnaXZlbiB1 c2UgY2FzZSBtYXkgcmVxdWlyZS4KPiAtICogQGxpc3Q6CUxpc3QgaGVhZCBmb3IgbGlzdCBvZiBh bGwgcmVzZXJ2YXRpb25zCj4gLSAqIEBzZXE6CUdsb2JhbCBSU1ZQIHNlcXVlbmNlIG51bWJlciBm b3IgZGVidWdnaW5nLCBlc3BlY2lhbGx5IGZvcgo+IC0gKgkJZGlmZmVyZW50aWF0aW5nIGRpZmZl cmVuY3QgYWxsb2NhdGlvbnMgZm9yIHNhbWUgZW5jb2Rlci4KPiAtICogQGVuY19pZDoJUmVzZXJ2 YXRpb25zIGFyZSB0cmFja2VkIGJ5IEVuY29kZXIgRFJNIG9iamVjdCBJRC4KPiAtICoJCUNSVENz IG1heSBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgRW5jb2RlcnMuCj4gLSAqCQlBbiBlbmNvZGVy IG9yIGNvbm5lY3RvciBpZCBpZGVudGlmaWVzIHRoZSBkaXNwbGF5IHBhdGguCj4gLSAqLwo+IC1z dHJ1Y3QgZHB1X3JtX3JzdnAgewo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IC0JdWludDMy X3Qgc2VxOwo+IC0JdWludDMyX3QgZW5jX2lkOwo+IC19Owo+ICAKPiAgLyoqCj4gICAqIHN0cnVj dCBkcHVfcm1faHdfYmxrIC0gaGFyZHdhcmUgYmxvY2sgdHJhY2tpbmcgbGlzdCBtZW1iZXIKPiAg ICogQGxpc3Q6CUxpc3QgaGVhZCBmb3IgbGlzdCBvZiBhbGwgaGFyZHdhcmUgYmxvY2tzIHRyYWNr aW5nIGl0ZW1zCj4gLSAqIEByc3ZwOglQb2ludGVyIHRvIHVzZSBjYXNlIHJlc2VydmF0aW9uIGlm IHJlc2VydmVkIGJ5IGEgY2xpZW50Cj4gLSAqIEByc3ZwX254dDoJVGVtcG9yYXJ5IHBvaW50ZXIg dXNlZCBkdXJpbmcgcmVzZXJ2YXRpb24gdG8gdGhlIGluY29taW5nCj4gLSAqCQlyZXF1ZXN0LiBX aWxsIGJlIHN3YXBwZWQgaW50byByc3ZwIGlmIHByb3Bvc2FsIGlzIGFjY2VwdGVkCj4gICAqIEB0 eXBlOglUeXBlIG9mIGhhcmR3YXJlIGJsb2NrIHRoaXMgc3RydWN0dXJlIHRyYWNrcwo+ICAgKiBA aWQ6CQlIYXJkd2FyZSBJRCBudW1iZXIsIHdpdGhpbiBpdCdzIG93biBzcGFjZSwgaWUuIExNX1gK PiAtICogQGNhdGFsb2c6CVBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIGNhdGFsb2cgZW50cnkgZm9y IHRoaXMgYmxvY2sKPiArICogQGVuY19pZDoJRW5jb2RlciBpZCB0byB3aGljaCB0aGlzIGJsayBp cyBiaW5kZWQKPiAgICogQGh3OgkJUG9pbnRlciB0byB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIgYWNj ZXNzIG9iamVjdCBmb3IgdGhpcyBibG9jawo+ICAgKi8KPiAgc3RydWN0IGRwdV9ybV9od19ibGsg ewo+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IC0Jc3RydWN0IGRwdV9ybV9yc3ZwICpyc3Zw Owo+IC0Jc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwX254dDsKPiAgCWVudW0gZHB1X2h3X2Jsa190 eXBlIHR5cGU7Cj4gIAl1aW50MzJfdCBpZDsKPiArCXVpbnQzMl90IGVuY19pZDsKPiAgCXN0cnVj dCBkcHVfaHdfYmxrICpodzsKPiAgfTsKPiAgCj4gLS8qKgo+IC0gKiBkcHVfcm1fZGJnX3JzdnBf c3RhZ2UgLSBlbnVtIG9mIHN0ZXBzIGluIG1ha2luZyByZXNlcnZhdGlvbiBmb3IgZXZlbnQgbG9n Z2luZwo+IC0gKi8KPiAtZW51bSBkcHVfcm1fZGJnX3JzdnBfc3RhZ2Ugewo+IC0JRFBVX1JNX1NU QUdFX0JFR0lOLAo+IC0JRFBVX1JNX1NUQUdFX0FGVEVSX0NMRUFSLAo+IC0JRFBVX1JNX1NUQUdF X0FGVEVSX1JTVlBORVhULAo+IC0JRFBVX1JNX1NUQUdFX0ZJTkFMCj4gLX07Cj4gLQo+IC1zdGF0 aWMgdm9pZCBfZHB1X3JtX3ByaW50X3JzdnBzKAo+IC0JCXN0cnVjdCBkcHVfcm0gKnJtLAo+IC0J CWVudW0gZHB1X3JtX2RiZ19yc3ZwX3N0YWdlIHN0YWdlKQo+IC17Cj4gLQlzdHJ1Y3QgZHB1X3Jt X3JzdnAgKnJzdnA7Cj4gLQlzdHJ1Y3QgZHB1X3JtX2h3X2JsayAqYmxrOwo+IC0JZW51bSBkcHVf aHdfYmxrX3R5cGUgdHlwZTsKPiAtCj4gLQlEUFVfREVCVUcoIiVkXG4iLCBzdGFnZSk7Cj4gLQo+ IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShyc3ZwLCAmcm0tPnJzdnBzLCBsaXN0KSB7Cj4gLQkJRFJN X0RFQlVHX0tNUygiJWQgcnN2cFtzJXVlJXVdXG4iLCBzdGFnZSwgcnN2cC0+c2VxLAo+IC0JCQkg ICAgICByc3ZwLT5lbmNfaWQpOwo+IC0JfQo+IC0KPiAtCWZvciAodHlwZSA9IDA7IHR5cGUgPCBE UFVfSFdfQkxLX01BWDsgdHlwZSsrKSB7Cj4gLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShibGssICZy bS0+aHdfYmxrc1t0eXBlXSwgbGlzdCkgewo+IC0JCQlpZiAoIWJsay0+cnN2cCAmJiAhYmxrLT5y c3ZwX254dCkKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkJRFJNX0RFQlVHX0tNUygiJWQgcnN2 cFtzJXVlJXUtPnMldWUldV0gJWQgJWRcbiIsIHN0YWdlLAo+IC0JCQkJKGJsay0+cnN2cCkgPyBi bGstPnJzdnAtPnNlcSA6IDAsCj4gLQkJCQkoYmxrLT5yc3ZwKSA/IGJsay0+cnN2cC0+ZW5jX2lk IDogMCwKPiAtCQkJCShibGstPnJzdnBfbnh0KSA/IGJsay0+cnN2cF9ueHQtPnNlcSA6IDAsCj4g LQkJCQkoYmxrLT5yc3ZwX254dCkgPyBibGstPnJzdnBfbnh0LT5lbmNfaWQgOiAwLAo+IC0JCQkJ YmxrLT50eXBlLCBibGstPmlkKTsKPiAtCQl9Cj4gLQl9Cj4gLX0KPiAtCj4gIHN0cnVjdCBkcHVf aHdfbWRwICpkcHVfcm1fZ2V0X21kcChzdHJ1Y3QgZHB1X3JtICpybSkKPiAgewo+ICAJcmV0dXJu IHJtLT5od19tZHA7Cj4gQEAgLTE0OCwxNSArODYsMTMgQEAgc3RhdGljIGJvb2wgX2RwdV9ybV9n ZXRfaHdfbG9ja2VkKHN0cnVjdCBkcHVfcm0gKnJtLCBzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgKmkp Cj4gIAlpLT5ibGsgPSBsaXN0X3ByZXBhcmVfZW50cnkoaS0+YmxrLCBibGtfbGlzdCwgbGlzdCk7 Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShpLT5ibGssIGJsa19saXN0LCBs aXN0KSB7Cj4gLQkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwID0gaS0+YmxrLT5yc3ZwOwo+IC0K PiAgCQlpZiAoaS0+YmxrLT50eXBlICE9IGktPnR5cGUpIHsKPiAgCQkJRFBVX0VSUk9SKCJmb3Vu ZCBpbmNvcnJlY3QgYmxvY2sgdHlwZSAlZCBvbiAlZCBsaXN0XG4iLAo+ICAJCQkJCWktPmJsay0+ dHlwZSwgaS0+dHlwZSk7Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAo+IC0JCWlmICgo aS0+ZW5jX2lkID09IDApIHx8IChyc3ZwICYmIHJzdnAtPmVuY19pZCA9PSBpLT5lbmNfaWQpKSB7 Cj4gKwkJaWYgKGktPmVuY19pZCA9PSBpLT5ibGstPmVuY19pZCkgewo+ICAJCQlpLT5odyA9IGkt PmJsay0+aHc7Cj4gIAkJCURQVV9ERUJVRygiZm91bmQgdHlwZSAlZCBpZCAlZCBmb3IgZW5jICVk XG4iLAo+ICAJCQkJCWktPnR5cGUsIGktPmJsay0+aWQsIGktPmVuY19pZCk7Cj4gQEAgLTIwOCwy MiArMTQ0LDkgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9od19kZXN0cm95KGVudW0gZHB1X2h3X2Js a190eXBlIHR5cGUsIHZvaWQgKmh3KQo+ICAKPiAgaW50IGRwdV9ybV9kZXN0cm95KHN0cnVjdCBk cHVfcm0gKnJtKQo+ICB7Cj4gLQo+IC0Jc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwX2N1ciwgKnJz dnBfbnh0Owo+ICAJc3RydWN0IGRwdV9ybV9od19ibGsgKmh3X2N1ciwgKmh3X254dDsKPiAgCWVu dW0gZHB1X2h3X2Jsa190eXBlIHR5cGU7Cj4gIAo+IC0JaWYgKCFybSkgewo+IC0JCURQVV9FUlJP UigiaW52YWxpZCBybVxuIik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJzdnBfY3VyLCByc3ZwX254dCwgJnJtLT5yc3ZwcywgbGlz dCkgewo+IC0JCWxpc3RfZGVsKCZyc3ZwX2N1ci0+bGlzdCk7Cj4gLQkJa2ZyZWUocnN2cF9jdXIp Owo+IC0JfQo+IC0KPiAtCj4gIAlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgRFBVX0hXX0JMS19NQVg7 IHR5cGUrKykgewo+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShod19jdXIsIGh3X254dCwg JnJtLT5od19ibGtzW3R5cGVdLAo+ICAJCQkJbGlzdCkgewo+IEBAIC0yOTMsNiArMjE2LDcgQEAg c3RhdGljIGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCj4gIAlibGstPnR5cGUgPSB0eXBlOwo+ ICAJYmxrLT5pZCA9IGlkOwo+ICAJYmxrLT5odyA9IGh3Owo+ICsJYmxrLT5lbmNfaWQgPSAwOwo+ ICAJbGlzdF9hZGRfdGFpbCgmYmxrLT5saXN0LCAmcm0tPmh3X2Jsa3NbdHlwZV0pOwo+ICAKPiAg CXJldHVybiAwOwo+IEBAIC0zMTYsNyArMjQwLDYgQEAgaW50IGRwdV9ybV9pbml0KHN0cnVjdCBk cHVfcm0gKnJtLAo+ICAKPiAgCW11dGV4X2luaXQoJnJtLT5ybV9sb2NrKTsKPiAgCj4gLQlJTklU X0xJU1RfSEVBRCgmcm0tPnJzdnBzKTsKPiAgCWZvciAodHlwZSA9IDA7IHR5cGUgPCBEUFVfSFdf QkxLX01BWDsgdHlwZSsrKQo+ICAJCUlOSVRfTElTVF9IRUFEKCZybS0+aHdfYmxrc1t0eXBlXSk7 Cj4gIAo+IEBAIC00MTAsNyArMzMzLDcgQEAgc3RhdGljIGJvb2wgX2RwdV9ybV9uZWVkc19zcGxp dF9kaXNwbGF5KGNvbnN0IHN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSAqdG9wKQo+ICAgKglw cm9wb3NlZCB1c2UgY2FzZSByZXF1aXJlbWVudHMsIGluY2wuIGhhcmR3aXJlZCBkZXBlbmRlbnQg YmxvY2tzIGxpa2UKPiAgICoJcGluZ3BvbmcKPiAgICogQHJtOiBkcHUgcmVzb3VyY2UgbWFuYWdl ciBoYW5kbGUKPiAtICogQHJzdnA6IHJlc2VydmF0aW9uIGN1cnJlbnRseSBiZWluZyBjcmVhdGVk Cj4gKyAqIEBlbmNfaWQ6IGVuY29kZXIgaWQgcmVxdWVzdGluZyBmb3IgYWxsb2NhdGlvbgo+ICAg KiBAcmVxczogcHJvcG9zZWQgdXNlIGNhc2UgcmVxdWlyZW1lbnRzCj4gICAqIEBsbTogcHJvcG9z ZWQgbGF5ZXIgbWl4ZXIsIGZ1bmN0aW9uIGNoZWNrcyBpZiBsbSwgYW5kIGFsbCBvdGhlciBoYXJk d2lyZWQKPiAgICogICAgICBibG9ja3MgY29ubmVjdGVkIHRvIHRoZSBsbSAocHApIGlzIGF2YWls YWJsZSBhbmQgYXBwcm9wcmlhdGUKPiBAQCAtNDIyLDcgKzM0NSw3IEBAIHN0YXRpYyBib29sIF9k cHVfcm1fbmVlZHNfc3BsaXRfZGlzcGxheShjb25zdCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xv Z3kgKnRvcCkKPiAgICovCj4gIHN0YXRpYyBib29sIF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dldF9j b25uZWN0ZWRfYmxrcygKPiAgCQlzdHJ1Y3QgZHB1X3JtICpybSwKPiAtCQlzdHJ1Y3QgZHB1X3Jt X3JzdnAgKnJzdnAsCj4gKwkJdWludDMyX3QgZW5jX2lkLAo+ICAJCXN0cnVjdCBkcHVfcm1fcmVx dWlyZW1lbnRzICpyZXFzLAo+ICAJCXN0cnVjdCBkcHVfcm1faHdfYmxrICpsbSwKPiAgCQlzdHJ1 Y3QgZHB1X3JtX2h3X2JsayAqKnBwLAo+IEBAIC00NDksNyArMzcyLDcgQEAgc3RhdGljIGJvb2wg X2RwdV9ybV9jaGVja19sbV9hbmRfZ2V0X2Nvbm5lY3RlZF9ibGtzKAo+ICAJfQo+ICAKPiAgCS8q IEFscmVhZHkgcmVzZXJ2ZWQ/ICovCj4gLQlpZiAoUkVTRVJWRURfQllfT1RIRVIobG0sIHJzdnAp KSB7Cj4gKwlpZiAoUkVTRVJWRURfQllfT1RIRVIobG0sIGVuY19pZCkpIHsKPiAgCQlEUFVfREVC VUcoImxtICVkIGFscmVhZHkgcmVzZXJ2ZWRcbiIsIGxtX2NmZy0+aWQpOwo+ICAJCXJldHVybiBm YWxzZTsKPiAgCX0KPiBAQCAtNDY3LDcgKzM5MCw3IEBAIHN0YXRpYyBib29sIF9kcHVfcm1fY2hl Y2tfbG1fYW5kX2dldF9jb25uZWN0ZWRfYmxrcygKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4g IAo+IC0JaWYgKFJFU0VSVkVEX0JZX09USEVSKCpwcCwgcnN2cCkpIHsKPiArCWlmIChSRVNFUlZF RF9CWV9PVEhFUigqcHAsIGVuY19pZCkpIHsKPiAgCQlEUFVfREVCVUcoImxtICVkIHBwICVkIGFs cmVhZHkgcmVzZXJ2ZWRcbiIsIGxtLT5pZCwKPiAgCQkJCSgqcHApLT5pZCk7Cj4gIAkJcmV0dXJu IGZhbHNlOwo+IEBAIC00NzYsMTAgKzM5OSw4IEBAIHN0YXRpYyBib29sIF9kcHVfcm1fY2hlY2tf bG1fYW5kX2dldF9jb25uZWN0ZWRfYmxrcygKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IC1z dGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoCj4gLQkJc3RydWN0IGRwdV9ybSAqcm0sCj4g LQkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwLAo+IC0JCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1l bnRzICpyZXFzKQo+ICtzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoc3RydWN0IGRwdV9y bSAqcm0sIHVpbnQzMl90IGVuY19pZCwKPiArCQkJICAgICAgIHN0cnVjdCBkcHVfcm1fcmVxdWly ZW1lbnRzICpyZXFzKQo+ICAKPiAgewo+ICAJc3RydWN0IGRwdV9ybV9od19ibGsgKmxtW01BWF9C TE9DS1NdOwo+IEBAIC01MDQsNyArNDI1LDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVf bG1zKAo+ICAJCWxtW2xtX2NvdW50XSA9IGl0ZXJfaS5ibGs7Cj4gIAo+ICAJCWlmICghX2RwdV9y bV9jaGVja19sbV9hbmRfZ2V0X2Nvbm5lY3RlZF9ibGtzKAo+IC0JCQkJcm0sIHJzdnAsIHJlcXMs IGxtW2xtX2NvdW50XSwKPiArCQkJCXJtLCBlbmNfaWQsIHJlcXMsIGxtW2xtX2NvdW50XSwKPiAg CQkJCSZwcFtsbV9jb3VudF0sIE5VTEwpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTUxOSw3 ICs0NDAsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoCj4gIAkJCQljb250aW51 ZTsKPiAgCj4gIAkJCWlmICghX2RwdV9ybV9jaGVja19sbV9hbmRfZ2V0X2Nvbm5lY3RlZF9ibGtz KAo+IC0JCQkJCXJtLCByc3ZwLCByZXFzLCBpdGVyX2ouYmxrLAo+ICsJCQkJCXJtLCBlbmNfaWQs IHJlcXMsIGl0ZXJfai5ibGssCj4gIAkJCQkJJnBwW2xtX2NvdW50XSwgaXRlcl9pLmJsaykpCj4g IAkJCQljb250aW51ZTsKPiAgCj4gQEAgLTUzNywxMCArNDU4LDEwIEBAIHN0YXRpYyBpbnQgX2Rw dV9ybV9yZXNlcnZlX2xtcygKPiAgCQlpZiAoIWxtW2ldKQo+ICAJCQlicmVhazsKPiAgCj4gLQkJ bG1baV0tPnJzdnBfbnh0ID0gcnN2cDsKPiAtCQlwcFtpXS0+cnN2cF9ueHQgPSByc3ZwOwo+ICsJ CWxtW2ldLT5lbmNfaWQgPSBlbmNfaWQ7Cj4gKwkJcHBbaV0tPmVuY19pZCA9IGVuY19pZDsKPiAg Cj4gLQkJdHJhY2VfZHB1X3JtX3Jlc2VydmVfbG1zKGxtW2ldLT5pZCwgbG1baV0tPnR5cGUsIHJz dnAtPmVuY19pZCwKPiArCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9sbXMobG1baV0tPmlkLCBsbVtp XS0+dHlwZSwgZW5jX2lkLAo+ICAJCQkJCSBwcFtpXS0+aWQpOwo+ICAJfQo+ICAKPiBAQCAtNTQ5 LDcgKzQ3MCw3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2xtcygKPiAgCj4gIHN0YXRp YyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCj4gIAkJc3RydWN0IGRwdV9ybSAqcm0sCj4gLQkJ c3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwLAo+ICsJCXVpbnQzMl90IGVuY19pZCwKPiAgCQljb25z dCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgKnRvcCkKPiAgewo+ICAJc3RydWN0IGRwdV9y bV9od19ibGsgKmN0bHNbTUFYX0JMT0NLU107Cj4gQEAgLTU3MCw3ICs0OTEsNyBAQCBzdGF0aWMg aW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAo+ICAJCXVuc2lnbmVkIGxvbmcgZmVhdHVyZXMgPSBj dGwtPmNhcHMtPmZlYXR1cmVzOwo+ICAJCWJvb2wgaGFzX3NwbGl0X2Rpc3BsYXk7Cj4gIAo+IC0J CWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVyLmJsaywgcnN2cCkpCj4gKwkJaWYgKFJFU0VSVkVE X0JZX09USEVSKGl0ZXIuYmxrLCBlbmNfaWQpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaGFz X3NwbGl0X2Rpc3BsYXkgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSAmIGZlYXR1cmVzOwo+ IEBAIC01OTEsOSArNTEyLDkgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfY3RscygKPiAg CQlyZXR1cm4gLUVOQVZBSUw7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3Rs cykgJiYgaSA8IG51bV9jdGxzOyBpKyspIHsKPiAtCQljdGxzW2ldLT5yc3ZwX254dCA9IHJzdnA7 Cj4gKwkJY3Rsc1tpXS0+ZW5jX2lkID0gZW5jX2lkOwo+ICAJCXRyYWNlX2RwdV9ybV9yZXNlcnZl X2N0bHMoY3Rsc1tpXS0+aWQsIGN0bHNbaV0tPnR5cGUsCj4gLQkJCQkJICByc3ZwLT5lbmNfaWQp Owo+ICsJCQkJCSAgZW5jX2lkKTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtNjAxLDcg KzUyMiw3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCj4gIAo+ICBzdGF0aWMg aW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAo+ICAJCXN0cnVjdCBkcHVfcm0gKnJtLAo+IC0JCXN0 cnVjdCBkcHVfcm1fcnN2cCAqcnN2cCwKPiArCQl1aW50MzJfdCBlbmNfaWQsCj4gIAkJdWludDMy X3QgaWQsCj4gIAkJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSkKPiAgewo+IEBAIC02MTQsMTQg KzUzNSwxNCBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAo+ICAJCWlmIChpdGVy LmJsay0+aWQgIT0gaWQpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoUkVTRVJWRURfQllf T1RIRVIoaXRlci5ibGssIHJzdnApKSB7Cj4gKwkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXIu YmxrLCBlbmNfaWQpKSB7Cj4gIAkJCURQVV9FUlJPUigidHlwZSAlZCBpZCAlZCBhbHJlYWR5IHJl c2VydmVkXG4iLCB0eXBlLCBpZCk7Cj4gIAkJCXJldHVybiAtRU5BVkFJTDsKPiAgCQl9Cj4gIAo+ IC0JCWl0ZXIuYmxrLT5yc3ZwX254dCA9IHJzdnA7Cj4gKwkJaXRlci5ibGstPmVuY19pZCA9IGVu Y19pZDsKPiAgCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9pbnRmKGl0ZXIuYmxrLT5pZCwgaXRlci5i bGstPnR5cGUsCj4gLQkJCQkJICByc3ZwLT5lbmNfaWQpOwo+ICsJCQkJCSAgZW5jX2lkKTsKPiAg CQlicmVhazsKPiAgCX0KPiAgCj4gQEAgLTYzNiw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IF9kcHVf cm1fcmVzZXJ2ZV9pbnRmKAo+ICAKPiAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50Zl9y ZWxhdGVkX2h3KAo+ICAJCXN0cnVjdCBkcHVfcm0gKnJtLAo+IC0JCXN0cnVjdCBkcHVfcm1fcnN2 cCAqcnN2cCwKPiArCQl1aW50MzJfdCBlbmNfaWQsCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX2h3 X3Jlc291cmNlcyAqaHdfcmVzKQo+ICB7Cj4gIAlpbnQgaSwgcmV0ID0gMDsKPiBAQCAtNjQ2LDcg KzU2Nyw3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRlZF9odygKPiAg CQlpZiAoaHdfcmVzLT5pbnRmc1tpXSA9PSBJTlRGX01PREVfTk9ORSkKPiAgCQkJY29udGludWU7 Cj4gIAkJaWQgPSBpICsgSU5URl8wOwo+IC0JCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKHJt LCByc3ZwLCBpZCwKPiArCQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50ZihybSwgZW5jX2lkLCBp ZCwKPiAgCQkJCURQVV9IV19CTEtfSU5URik7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJl dDsKPiBAQCAtNjU1LDMzICs1NzYsMjcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50 Zl9yZWxhdGVkX2h3KAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfZHB1 X3JtX21ha2VfbmV4dF9yc3ZwKAo+ICtzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlv bigKPiAgCQlzdHJ1Y3QgZHB1X3JtICpybSwKPiAgCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYywK PiAgCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJc3RydWN0IGRwdV9y bV9yc3ZwICpyc3ZwLAo+ICAJCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzICpyZXFzKQo+ICB7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCS8qIENyZWF0ZSByZXNlcnZhdGlvbiBpbmZvLCB0YWcgcmVz ZXJ2ZWQgYmxvY2tzIHdpdGggaXQgYXMgd2UgZ28gKi8KPiAtCXJzdnAtPnNlcSA9ICsrcm0tPnJz dnBfbmV4dF9zZXE7Cj4gLQlyc3ZwLT5lbmNfaWQgPSBlbmMtPmJhc2UuaWQ7Cj4gLQlsaXN0X2Fk ZF90YWlsKCZyc3ZwLT5saXN0LCAmcm0tPnJzdnBzKTsKPiAtCj4gLQlyZXQgPSBfZHB1X3JtX3Jl c2VydmVfbG1zKHJtLCByc3ZwLCByZXFzKTsKPiArCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9sbXMo cm0sIGVuYy0+YmFzZS5pZCwgcmVxcyk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJRFBVX0VSUk9SKCJ1 bmFibGUgdG8gZmluZCBhcHByb3ByaWF0ZSBtaXhlcnNcbiIpOwo+ICAJCXJldHVybiByZXQ7Cj4g IAl9Cj4gIAo+IC0JcmV0ID0gX2RwdV9ybV9yZXNlcnZlX2N0bHMocm0sIHJzdnAsICZyZXFzLT50 b3BvbG9neSk7Cj4gKwlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfY3RscyhybSwgZW5jLT5iYXNlLmlk LCAmcmVxcy0+dG9wb2xvZ3kpOwo+ICAJaWYgKHJldCkgewo+ICAJCURQVV9FUlJPUigidW5hYmxl IHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKPiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAK PiAtCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcocm0sIHJzdnAsICZyZXFz LT5od19yZXMpOwo+ICsJcmV0ID0gX2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRlZF9odyhybSwg ZW5jLT5iYXNlLmlkLCAmcmVxcy0+aHdfcmVzKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gQEAgLTcwNiwxMDggKzYyMSwzMSBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcG9wdWxh dGVfcmVxdWlyZW1lbnRzKAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg ZHB1X3JtX3JzdnAgKl9kcHVfcm1fZ2V0X3JzdnAoCj4gLQkJc3RydWN0IGRwdV9ybSAqcm0sCj4g LQkJc3RydWN0IGRybV9lbmNvZGVyICplbmMpCj4gK3N0YXRpYyB2b2lkIF9kcHVfcm1fcmVsZWFz ZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZHB1X3JtICpybSwgdWludDMyX3QgZW5jX2lkKQo+ICB7Cj4g LQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKmk7Cj4gLQo+IC0JaWYgKCFybSB8fCAhZW5jKSB7Cj4gLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4g LQo+IC0JaWYgKGxpc3RfZW1wdHkoJnJtLT5yc3ZwcykpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQo+ IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShpLCAmcm0tPnJzdnBzLCBsaXN0KQo+IC0JCWlmIChpLT5l bmNfaWQgPT0gZW5jLT5iYXNlLmlkKQo+IC0JCQlyZXR1cm4gaTsKPiAtCj4gLQlyZXR1cm4gTlVM TDsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIF9kcHVfcm1fcmVsZWFzZV9yc3ZwIC0gcmVsZWFzZSBy ZXNvdXJjZXMgYW5kIHJlbGVhc2UgYSByZXNlcnZhdGlvbgo+IC0gKiBAcm06CUtNUyBoYW5kbGUK PiAtICogQHJzdnA6CVJTVlAgcG9pbnRlciB0byByZWxlYXNlIGFuZCByZWxlYXNlIHJlc291cmNl cyBmb3IKPiAtICovCj4gLXN0YXRpYyB2b2lkIF9kcHVfcm1fcmVsZWFzZV9yc3ZwKHN0cnVjdCBk cHVfcm0gKnJtLCBzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnApCj4gLXsKPiAtCXN0cnVjdCBkcHVf cm1fcnN2cCAqcnN2cF9jLCAqcnN2cF9uOwo+ICAJc3RydWN0IGRwdV9ybV9od19ibGsgKmJsazsK PiAgCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGU7Cj4gIAo+IC0JaWYgKCFyc3ZwKQo+IC0JCXJl dHVybjsKPiAtCj4gLQlEUFVfREVCVUcoInJlbCByc3ZwICVkIGVuYyAlZFxuIiwgcnN2cC0+c2Vx LCByc3ZwLT5lbmNfaWQpOwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyc3ZwX2Ms IHJzdnBfbiwgJnJtLT5yc3ZwcywgbGlzdCkgewo+IC0JCWlmIChyc3ZwID09IHJzdnBfYykgewo+ IC0JCQlsaXN0X2RlbCgmcnN2cF9jLT5saXN0KTsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+ IC0KPiAgCWZvciAodHlwZSA9IDA7IHR5cGUgPCBEUFVfSFdfQkxLX01BWDsgdHlwZSsrKSB7Cj4g IAkJbGlzdF9mb3JfZWFjaF9lbnRyeShibGssICZybS0+aHdfYmxrc1t0eXBlXSwgbGlzdCkgewo+ IC0JCQlpZiAoYmxrLT5yc3ZwID09IHJzdnApIHsKPiAtCQkJCWJsay0+cnN2cCA9IE5VTEw7Cj4g LQkJCQlEUFVfREVCVUcoInJlbCByc3ZwICVkIGVuYyAlZCAlZCAlZFxuIiwKPiAtCQkJCQkJcnN2 cC0+c2VxLCByc3ZwLT5lbmNfaWQsCj4gLQkJCQkJCWJsay0+dHlwZSwgYmxrLT5pZCk7Cj4gLQkJ CX0KPiAtCQkJaWYgKGJsay0+cnN2cF9ueHQgPT0gcnN2cCkgewo+IC0JCQkJYmxrLT5yc3ZwX254 dCA9IE5VTEw7Cj4gLQkJCQlEUFVfREVCVUcoInJlbCByc3ZwX254dCAlZCBlbmMgJWQgJWQgJWRc biIsCj4gLQkJCQkJCXJzdnAtPnNlcSwgcnN2cC0+ZW5jX2lkLAo+IC0JCQkJCQlibGstPnR5cGUs IGJsay0+aWQpOwo+ICsJCQlpZiAoYmxrLT5lbmNfaWQgPT0gZW5jX2lkKSB7Cj4gKwkJCQlibGst PmVuY19pZCA9IDA7Cj4gKwkJCQlEUFVfREVCVUcoInJlbCBlbmMgJWQgJWQgJWRcbiIsIGVuY19p ZCwKPiArCQkJCQkgIGJsay0+dHlwZSwgYmxrLT5pZCk7Cj4gIAkJCX0KPiAgCQl9Cj4gIAl9Cj4g LQo+IC0Ja2ZyZWUocnN2cCk7Cj4gIH0KPiAgCj4gIHZvaWQgZHB1X3JtX3JlbGVhc2Uoc3RydWN0 IGRwdV9ybSAqcm0sIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jKQo+ICB7Cj4gLQlzdHJ1Y3QgZHB1 X3JtX3JzdnAgKnJzdnA7Cj4gLQo+IC0JaWYgKCFybSB8fCAhZW5jKSB7Cj4gLQkJRFBVX0VSUk9S KCJpbnZhbGlkIHBhcmFtc1xuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAgCW11dGV4X2xv Y2soJnJtLT5ybV9sb2NrKTsKPiAgCj4gLQlyc3ZwID0gX2RwdV9ybV9nZXRfcnN2cChybSwgZW5j KTsKPiAtCWlmICghcnN2cCkgewo+IC0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGZpbmQgcnN2cCBm b3IgZW5jICVkXG4iLCBlbmMtPmJhc2UuaWQpOwo+IC0JCWdvdG8gZW5kOwo+IC0JfQo+ICsJX2Rw dV9ybV9yZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBlbmMtPmJhc2UuaWQpOwo+ICAKPiAtCV9kcHVf cm1fcmVsZWFzZV9yc3ZwKHJtLCByc3ZwKTsKPiAtZW5kOgo+ICAJbXV0ZXhfdW5sb2NrKCZybS0+ cm1fbG9jayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIF9kcHVfcm1fY29tbWl0X3JzdnAoc3Ry dWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2cCkKPiAtewo+IC0Jc3RydWN0 IGRwdV9ybV9od19ibGsgKmJsazsKPiAtCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGU7Cj4gLQo+ IC0JLyogU3dhcCBuZXh0IHJzdnAgdG8gYmUgdGhlIGFjdGl2ZSAqLwo+IC0JZm9yICh0eXBlID0g MDsgdHlwZSA8IERQVV9IV19CTEtfTUFYOyB0eXBlKyspIHsKPiAtCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGJsaywgJnJtLT5od19ibGtzW3R5cGVdLCBsaXN0KSB7Cj4gLQkJCWlmIChibGstPnJzdnBf bnh0KSB7Cj4gLQkJCQlibGstPnJzdnAgPSBibGstPnJzdnBfbnh0Owo+IC0JCQkJYmxrLT5yc3Zw X254dCA9IE5VTEw7Cj4gLQkJCX0KPiAtCQl9Cj4gLQl9Cj4gLX0KPiAtCj4gIGludCBkcHVfcm1f cmVzZXJ2ZSgKPiAgCQlzdHJ1Y3QgZHB1X3JtICpybSwKPiAgCQlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuYywKPiBAQCAtODE1LDcgKzY1Myw2IEBAIGludCBkcHVfcm1fcmVzZXJ2ZSgKPiAgCQlzdHJ1 Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgdG9wb2xvZ3ksCj4gIAkJYm9vbCB0ZXN0X29ubHkpCj4g IHsKPiAtCXN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2cF9jdXIsICpyc3ZwX254dDsKPiAgCXN0cnVj dCBkcHVfcm1fcmVxdWlyZW1lbnRzIHJlcXM7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtODI4LDgg KzY2NSw2IEBAIGludCBkcHVfcm1fcmVzZXJ2ZSgKPiAgCj4gIAltdXRleF9sb2NrKCZybS0+cm1f bG9jayk7Cj4gIAo+IC0JX2RwdV9ybV9wcmludF9yc3ZwcyhybSwgRFBVX1JNX1NUQUdFX0JFR0lO KTsKPiAtCj4gIAlyZXQgPSBfZHB1X3JtX3BvcHVsYXRlX3JlcXVpcmVtZW50cyhybSwgZW5jLCBj cnRjX3N0YXRlLCAmcmVxcywKPiAgCQkJCQkgICAgdG9wb2xvZ3kpOwo+ICAJaWYgKHJldCkgewo+ IEBAIC04MzcsNTAgKzY3MiwxNyBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCj4gIAkJZ290byBlbmQ7 Cj4gIAl9Cj4gIAo+IC0JLyoKPiAtCSAqIFdlIG9ubHkgc3VwcG9ydCBvbmUgYWN0aXZlIHJlc2Vy dmF0aW9uIHBlci1ody1ibG9jay4gQnV0IHRvIGltcGxlbWVudAo+IC0JICogdHJhbnNhY3Rpb25h bCBzZW1hbnRpY3MgZm9yIHRlc3Qtb25seSwgYW5kIGZvciBhbGxvd2luZyBmYWlsdXJlIHdoaWxl Cj4gLQkgKiBtb2RpZnlpbmcgeW91ciBleGlzdGluZyByZXNlcnZhdGlvbiwgb3ZlciB0aGUgY291 cnNlIG9mIHRoaXMKPiAtCSAqIGZ1bmN0aW9uIHdlIGNhbiBoYXZlIHR3byByZXNlcnZhdGlvbnM6 Cj4gLQkgKiBDdXJyZW50OiBFeGlzdGluZyByZXNlcnZhdGlvbgo+IC0JICogTmV4dDogUHJvcG9z ZWQgcmVzZXJ2YXRpb24uIFRoZSBwcm9wb3NlZCByZXNlcnZhdGlvbiBtYXkgZmFpbCwgb3IgbWF5 Cj4gLQkgKiAgICAgICBiZSBkaXNjYXJkZWQgaWYgaW4gdGVzdC1vbmx5IG1vZGUuCj4gLQkgKiBJ ZiByZXNlcnZhdGlvbiBpcyBzdWNjZXNzZnVsLCBhbmQgd2UncmUgbm90IGluIHRlc3Qtb25seSwg dGhlbiB3ZQo+IC0JICogcmVwbGFjZSB0aGUgY3VycmVudCB3aXRoIHRoZSBuZXh0Lgo+IC0JICov Cj4gLQlyc3ZwX254dCA9IGt6YWxsb2Moc2l6ZW9mKCpyc3ZwX254dCksIEdGUF9LRVJORUwpOwo+ IC0JaWYgKCFyc3ZwX254dCkgewo+IC0JCXJldCA9IC1FTk9NRU07Cj4gLQkJZ290byBlbmQ7Cj4g LQl9Cj4gLQo+IC0JcnN2cF9jdXIgPSBfZHB1X3JtX2dldF9yc3ZwKHJtLCBlbmMpOwo+IC0KPiAt CS8qIENoZWNrIHRoZSBwcm9wb3NlZCByZXNlcnZhdGlvbiwgc3RvcmUgaXQgaW4gaHcncyAibmV4 dCIgZmllbGQgKi8KPiAtCXJldCA9IF9kcHVfcm1fbWFrZV9uZXh0X3JzdnAocm0sIGVuYywgY3J0 Y19zdGF0ZSwgcnN2cF9ueHQsICZyZXFzKTsKPiAtCj4gLQlfZHB1X3JtX3ByaW50X3JzdnBzKHJt LCBEUFVfUk1fU1RBR0VfQUZURVJfUlNWUE5FWFQpOwo+IC0KPiArCXJldCA9IF9kcHVfcm1fbWFr ZV9yZXNlcnZhdGlvbihybSwgZW5jLCBjcnRjX3N0YXRlLCAmcmVxcyk7Cj4gIAlpZiAocmV0KSB7 Cj4gIAkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gcmVzZXJ2ZSBodyByZXNvdXJjZXM6ICVkXG4iLCBy ZXQpOwo+IC0JCV9kcHVfcm1fcmVsZWFzZV9yc3ZwKHJtLCByc3ZwX254dCk7Cj4gKwkJX2RwdV9y bV9yZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBlbmMtPmJhc2UuaWQpOwo+ICAJfSBlbHNlIGlmICh0 ZXN0X29ubHkpIHsKPiAtCQkvKgo+IC0JCSAqIE5vcm1hbGx5LCBpZiB0ZXN0X29ubHksIHRlc3Qg dGhlIHJlc2VydmF0aW9uIGFuZCB0aGVuIHVuZG8KPiAtCQkgKiBIb3dldmVyLCBpZiB0aGUgdXNl ciByZXF1ZXN0cyBMT0NLLCB0aGVuIGtlZXAgdGhlIHJlc2VydmF0aW9uCj4gLQkJICogbWFkZSBk dXJpbmcgdGhlIGF0b21pY19jaGVjayBwaGFzZS4KPiAtCQkgKi8KPiAtCQlEUFVfREVCVUcoInRl c3Rfb25seTogZGlzY2FyZCB0ZXN0IHJzdnBbcyVkZSVkXVxuIiwKPiAtCQkJCXJzdnBfbnh0LT5z ZXEsIHJzdnBfbnh0LT5lbmNfaWQpOwo+IC0JCV9kcHVfcm1fcmVsZWFzZV9yc3ZwKHJtLCByc3Zw X254dCk7Cj4gLQl9IGVsc2Ugewo+IC0JCV9kcHVfcm1fcmVsZWFzZV9yc3ZwKHJtLCByc3ZwX2N1 cik7Cj4gLQo+IC0JCV9kcHVfcm1fY29tbWl0X3JzdnAocm0sIHJzdnBfbnh0KTsKPiArCQkgLyog dGVzdF9vbmx5OiB0ZXN0IHRoZSByZXNlcnZhdGlvbiBhbmQgdGhlbiB1bmRvICovCj4gKwkJRFBV X0RFQlVHKCJ0ZXN0X29ubHk6IGRpc2NhcmQgdGVzdCBbZW5jOiAlZF1cbiIsCj4gKwkJCQllbmMt PmJhc2UuaWQpOwo+ICsJCV9kcHVfcm1fcmVsZWFzZV9yZXNlcnZhdGlvbihybSwgZW5jLT5iYXNl LmlkKTsKPiAgCX0KPiAgCj4gLQlfZHB1X3JtX3ByaW50X3JzdnBzKHJtLCBEUFVfUk1fU1RBR0Vf RklOQUwpOwo+IC0KPiAgZW5kOgo+ICAJbXV0ZXhfdW5sb2NrKCZybS0+cm1fbG9jayk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCj4gaW5kZXggYjgyNzNiZC4uMGRk M2MyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCj4gQEAgLTIz LDIxICsyMywxNyBAQAo+ICAvKioKPiAgICogc3RydWN0IGRwdV9ybSAtIERQVSBkeW5hbWljIGhh cmR3YXJlIHJlc291cmNlIG1hbmFnZXIKPiAgICogQGRldjogZGV2aWNlIGhhbmRsZSBmb3IgZXZl bnQgbG9nZ2luZyBwdXJwb3Nlcwo+IC0gKiBAcnN2cHM6IGxpc3Qgb2YgaGFyZHdhcmUgcmVzZXJ2 YXRpb25zIGJ5IGVhY2ggY3J0Yy0+ZW5jb2Rlci0+Y29ubmVjdG9yCj4gICAqIEBod19ibGtzOiBh cnJheSBvZiBsaXN0cyBvZiBoYXJkd2FyZSByZXNvdXJjZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVt LCBvbmUKPiAgICoJbGlzdCBwZXIgdHlwZSBvZiBoYXJkd2FyZSBibG9jawo+ICAgKiBAaHdfbWRw OiBoYXJkd2FyZSBvYmplY3QgZm9yIG1kcF90b3AKPiAgICogQGxtX21heF93aWR0aDogY2FjaGVk IGxheWVyIG1peGVyIG1heGltdW0gd2lkdGgKPiAtICogQHJzdnBfbmV4dF9zZXE6IHNlcXVlbmNl IG51bWJlciBmb3IgbmV4dCByZXNlcnZhdGlvbiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCj4gICAq IEBybV9sb2NrOiByZXNvdXJjZSBtYW5hZ2VyIG11dGV4Cj4gICAqLwo+ICBzdHJ1Y3QgZHB1X3Jt IHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIHJzdnBz Owo+ICAJc3RydWN0IGxpc3RfaGVhZCBod19ibGtzW0RQVV9IV19CTEtfTUFYXTsKPiAgCXN0cnVj dCBkcHVfaHdfbWRwICpod19tZHA7Cj4gIAl1aW50MzJfdCBsbV9tYXhfd2lkdGg7Cj4gLQl1aW50 MzJfdCByc3ZwX25leHRfc2VxOwo+ICAJc3RydWN0IG11dGV4IHJtX2xvY2s7Cj4gIH07Cj4gIAo+ IC0tIAo+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBv ZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCj4gYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRp dmUgUHJvamVjdAo+IAoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAv IENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVu bwo=