From mboxrd@z Thu Jan 1 00:00:00 1970 From: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH 02/19] drm/msm: dpu_crtc: Replace DPU_EVT with tracepoints Date: Tue, 26 Jun 2018 21:15:57 +0530 Message-ID: References: <20180620204841.56354-1-seanpaul@chromium.org> <20180620204841.56354-3-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: <20180620204841.56354-3-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 T24gMjAxOC0wNi0yMSAwMjoxOCwgU2VhbiBQYXVsIHdyb3RlOgo+IFRoaXMgcGF0Y2ggY29udmVy dHMgYWxsIERQVV9FVlRzIGluIGRwdV9jcnRjIHdpdGggZWl0aGVyIGEgRFJNXyogbG9nCj4gbWVz c2FnZSBvciBhIGxpbnV4IHRyYWNlcG9pbnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBSYWplc2ggWWFkYXYgPHJ5YWRh dkBjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuYyAgfCAxMjIgKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfdHJhY2UuaCB8IDE2NiArKysrKysrKysrKysrKysrKysrKysrCj4gIDIg ZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gaW5kZXggOWNhODMyNTg3 N2ExLi5lZWZjMTg5MmFkNDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMKPiBAQCAtNDMxLDE4ICs0MzEsMTIgQEAgc3RhdGljIHZvaWQgKl9kcHVfY3J0Y19y cF9nZXQoc3RydWN0Cj4gZHB1X2NydGNfcmVzcG9vbCAqcnAsIHUzMiB0eXBlLCB1NjQgdGFnKQo+ ICAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJm9sZF9ycC0+cmVzX2xpc3QsIGxpc3QpIHsK PiAgCQkJCWlmIChyZXMtPnR5cGUgIT0gdHlwZSkKPiAgCQkJCQljb250aW51ZTsKPiAtCQkJCURQ VV9ERUJVRygKPiAtCQkJCQkiY3J0YyVkLiV1IGZvdW5kIHJlczoweCV4Ly8lcEsvIGluIGNydGMl ZC4lZFxuIiwKPiAtCQkJCQkJY3J0Yy0+YmFzZS5pZCwKPiAtCQkJCQkJcnAtPnNlcXVlbmNlX2lk LAo+IC0JCQkJCQlyZXMtPnR5cGUsIHJlcy0+dmFsLAo+IC0JCQkJCQljcnRjLT5iYXNlLmlkLAo+ IC0JCQkJCQlvbGRfcnAtPnNlcXVlbmNlX2lkKTsKPiAtCQkJCURQVV9FVlQzMl9WRVJCT1NFKGNy dGMtPmJhc2UuaWQsCj4gLQkJCQkJCXJwLT5zZXF1ZW5jZV9pZCwKPiAtCQkJCQkJcmVzLT50eXBl LCByZXMtPnZhbCwKPiAtCQkJCQkJY3J0Yy0+YmFzZS5pZCwKPiAtCQkJCQkJb2xkX3JwLT5zZXF1 ZW5jZV9pZCk7Cj4gKwkJCQlEUk1fREVCVUdfS01TKCJjcnRjJWQuJXUgZm91bmQgcmVzOjB4JXgv LyVwSy8gIgo+ICsJCQkJCSAgICAgICJpbiBjcnRjJWQuJWRcbiIsCj4gKwkJCQkJICAgICAgY3J0 Yy0+YmFzZS5pZCwgcnAtPnNlcXVlbmNlX2lkLAo+ICsJCQkJCSAgICAgIHJlcy0+dHlwZSwgcmVz LT52YWwsCj4gKwkJCQkJICAgICAgY3J0Yy0+YmFzZS5pZCwKPiArCQkJCQkgICAgICBvbGRfcnAt PnNlcXVlbmNlX2lkKTsKPiAgCQkJCWlmIChyZXMtPm9wcy5nZXQpCj4gIAkJCQkJcmVzLT5vcHMu Z2V0KHJlcy0+dmFsLCAwLCAtMSk7Cj4gIAkJCQl2YWwgPSByZXMtPnZhbDsKPiBAQCAtNjg4LDIz ICs2ODIsMTcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVj dAo+IGRybV9jcnRjICpjcnRjLAo+ICAJCWlmIChwc3RhdGUtPnN0YWdlID09IERQVV9TVEFHRV9C QVNFICYmIGZvcm1hdC0+YWxwaGFfZW5hYmxlKQo+ICAJCQliZ19hbHBoYV9lbmFibGUgPSB0cnVl Owo+IAo+IC0JCURQVV9FVlQzMihEUk1JRChjcnRjKSwgRFJNSUQocGxhbmUpLAo+IC0JCQkJc3Rh dGUtPmZiID8gc3RhdGUtPmZiLT5iYXNlLmlkIDogLTEsCj4gLQkJCQlzdGF0ZS0+c3JjX3ggPj4g MTYsIHN0YXRlLT5zcmNfeSA+PiAxNiwKPiAtCQkJCXN0YXRlLT5zcmNfdyA+PiAxNiwgc3RhdGUt PnNyY19oID4+IDE2LAo+IC0JCQkJc3RhdGUtPmNydGNfeCwgc3RhdGUtPmNydGNfeSwKPiAtCQkJ CXN0YXRlLT5jcnRjX3csIHN0YXRlLT5jcnRjX2gpOwo+IC0KPiAgCQlzdGFnZV9pZHggPSB6cG9z X2NudFtwc3RhdGUtPnN0YWdlXSsrOwo+ICAJCXN0YWdlX2NmZy0+c3RhZ2VbcHN0YXRlLT5zdGFn ZV1bc3RhZ2VfaWR4XSA9Cj4gIAkJCQkJZHB1X3BsYW5lX3BpcGUocGxhbmUpOwo+ICAJCXN0YWdl X2NmZy0+bXVsdGlyZWN0X2luZGV4W3BzdGF0ZS0+c3RhZ2VdW3N0YWdlX2lkeF0gPQo+ICAJCQkJ CXBzdGF0ZS0+bXVsdGlyZWN0X2luZGV4Owo+IAo+IC0JCURQVV9FVlQzMihEUk1JRChjcnRjKSwg RFJNSUQocGxhbmUpLCBzdGFnZV9pZHgsCj4gLQkJCWRwdV9wbGFuZV9waXBlKHBsYW5lKSAtIFNT UFBfVklHMCwgcHN0YXRlLT5zdGFnZSwKPiAtCQkJcHN0YXRlLT5tdWx0aXJlY3RfaW5kZXgsIHBz dGF0ZS0+bXVsdGlyZWN0X21vZGUsCj4gLQkJCWZvcm1hdC0+YmFzZS5waXhlbF9mb3JtYXQsIGZi ID8gZmItPm1vZGlmaWVyIDogMCk7Cj4gKwkJdHJhY2VfZHB1X2NydGNfc2V0dXBfbWl4ZXIoRFJN SUQoY3J0YyksIERSTUlEKHBsYW5lKSwKPiArCQkJCQkgICBzdGF0ZSwgcHN0YXRlLCBzdGFnZV9p ZHgsCj4gKwkJCQkJICAgZHB1X3BsYW5lX3BpcGUocGxhbmUpIC0gU1NQUF9WSUcwLAo+ICsJCQkJ CSAgIGZvcm1hdC0+YmFzZS5waXhlbF9mb3JtYXQsCj4gKwkJCQkJICAgZmIgPyBmYi0+bW9kaWZp ZXIgOiAwKTsKPiAKPiAgCQkvKiBibGVuZCBjb25maWcgdXBkYXRlICovCj4gIAkJZm9yIChsbV9p ZHggPSAwOyBsbV9pZHggPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPiBAQCAt ODIxLDcgKzgwOSw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19jb21wbGV0ZV9mbGlwKHN0cnVj dCBkcm1fY3J0YyAKPiAqY3J0YywKPiAgCQkJZHB1X2NydGMtPmV2ZW50ID0gTlVMTDsKPiAgCQkJ RFJNX0RFQlVHX1ZCTCgiJXM6IHNlbmQgZXZlbnQ6ICVwS1xuIiwKPiAgCQkJCQkJZHB1X2NydGMt Pm5hbWUsIGV2ZW50KTsKPiAtCQkJRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQoY3J0YykpOwo+ICsJ CQl0cmFjZV9kcHVfY3J0Y19jb21wbGV0ZV9mbGlwKERSTUlEKGNydGMpKTsKPiAgCQkJZHJtX2Ny dGNfc2VuZF92YmxhbmtfZXZlbnQoY3J0YywgZXZlbnQpOwo+ICAJCX0KPiAgCX0KPiBAQCAtODU2 LDggKzg0NCw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX3ZibGFua19jYih2b2lkICpkYXRhKQo+ ICAJCWRwdV9jcnRjLT52YmxhbmtfY2JfY291bnQrKzsKPiAgCV9kcHVfY3J0Y19jb21wbGV0ZV9m bGlwKGNydGMsIE5VTEwpOwo+ICAJZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsKPiAtCURS TV9ERUJVR19WQkwoImNydGMlZFxuIiwgY3J0Yy0+YmFzZS5pZCk7Cj4gLQlEUFVfRVZUMzJfVkVS Qk9TRShEUk1JRChjcnRjKSk7Cj4gKwl0cmFjZV9kcHVfY3J0Y192YmxhbmtfY2IoRFJNSUQoY3J0 YykpOwo+ICB9Cj4gCj4gIC8qIF9kcHVfY3J0Y19pZGxlX25vdGlmeSAtIHNpZ25hbCBpZGxlIHRp bWVvdXQgdG8gY2xpZW50ICovCj4gQEAgLTkzMywzNCArOTIwLDI4IEBAIHN0YXRpYyB2b2lkIGRw dV9jcnRjX2ZyYW1lX2V2ZW50X3dvcmsoc3RydWN0Cj4ga3RocmVhZF93b3JrICp3b3JrKQo+ICAJ cHJpdiA9IGRwdV9rbXMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlEUFVfQVRSQUNFX0JFR0lOKCJj cnRjX2ZyYW1lX2V2ZW50Iik7Cj4gCj4gLQlEUFVfREVCVUcoImNydGMlZCBldmVudDoldSB0czol bGxkXG4iLCBjcnRjLT5iYXNlLmlkLCBmZXZlbnQtPmV2ZW50LAo+ICsJRFJNX0RFQlVHX0tNUygi Y3J0YyVkIGV2ZW50OiV1IHRzOiVsbGRcbiIsIGNydGMtPmJhc2UuaWQsIAo+IGZldmVudC0+ZXZl bnQsCj4gIAkJCWt0aW1lX3RvX25zKGZldmVudC0+dHMpKTsKPiAKPiAtCURQVV9FVlQzMl9WRVJC T1NFKERSTUlEKGNydGMpLCBmZXZlbnQtPmV2ZW50LCBEUFVfRVZUTE9HX0ZVTkNfRU5UUlkpOwo+ IC0KPiAgCWlmIChmZXZlbnQtPmV2ZW50ICYgKERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RPTkUK PiAgCQkJCXwgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRVJST1IKPiAgCQkJCXwgRFBVX0VOQ09E RVJfRlJBTUVfRVZFTlRfUEFORUxfREVBRCkpIHsKPiAKPiAgCQlpZiAoYXRvbWljX3JlYWQoJmRw dV9jcnRjLT5mcmFtZV9wZW5kaW5nKSA8IDEpIHsKPiAgCQkJLyogdGhpcyBzaG91bGQgbm90IGhh cHBlbiAqLwo+IC0JCQlEUFVfRVJST1IoImNydGMlZCB0czolbGxkIGludmFsaWQgZnJhbWVfcGVu ZGluZzolZFxuIiwKPiArCQkJRFJNX0VSUk9SKCJjcnRjJWQgZXY6JXUgdHM6JWxsZCBmcmFtZV9w ZW5kaW5nOiVkXG4iLAo+ICAJCQkJCWNydGMtPmJhc2UuaWQsCj4gKwkJCQkJZmV2ZW50LT5ldmVu dCwKPiAgCQkJCQlrdGltZV90b19ucyhmZXZlbnQtPnRzKSwKPiAgCQkJCQlhdG9taWNfcmVhZCgm ZHB1X2NydGMtPmZyYW1lX3BlbmRpbmcpKTsKPiAtCQkJRFBVX0VWVDMyKERSTUlEKGNydGMpLCBm ZXZlbnQtPmV2ZW50LAo+IC0JCQkJCQkJRFBVX0VWVExPR19GVU5DX0NBU0UxKTsKPiAgCQl9IGVs c2UgaWYgKGF0b21pY19kZWNfcmV0dXJuKCZkcHVfY3J0Yy0+ZnJhbWVfcGVuZGluZykgPT0gMCkg ewo+ICAJCQkvKiByZWxlYXNlIGJhbmR3aWR0aCBhbmQgb3RoZXIgcmVzb3VyY2VzICovCj4gLQkJ CURQVV9ERUJVRygiY3J0YyVkIHRzOiVsbGQgbGFzdCBwZW5kaW5nXG4iLAo+IC0JCQkJCWNydGMt PmJhc2UuaWQsCj4gLQkJCQkJa3RpbWVfdG9fbnMoZmV2ZW50LT50cykpOwo+IC0JCQlEUFVfRVZU MzIoRFJNSUQoY3J0YyksIGZldmVudC0+ZXZlbnQsCj4gLQkJCQkJCQlEUFVfRVZUTE9HX0ZVTkNf Q0FTRTIpOwo+ICsJCQl0cmFjZV9kcHVfY3J0Y19mcmFtZV9ldmVudF9kb25lKERSTUlEKGNydGMp LAo+ICsJCQkJCQkJZmV2ZW50LT5ldmVudCk7Cj4gIAkJCWRwdV9jb3JlX3BlcmZfY3J0Y19yZWxl YXNlX2J3KGNydGMpOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCURQVV9FVlQzMl9WRVJCT1NFKERSTUlE KGNydGMpLCBmZXZlbnQtPmV2ZW50LAo+IC0JCQkJCQkJRFBVX0VWVExPR19GVU5DX0NBU0UzKTsK PiArCQkJdHJhY2VfZHB1X2NydGNfZnJhbWVfZXZlbnRfbW9yZV9wZW5kaW5nKERSTUlEKGNydGMp LAo+ICsJCQkJCQkJCWZldmVudC0+ZXZlbnQpOwo+ICAJCX0KPiAKPiAgCQlpZiAoZmV2ZW50LT5l dmVudCAmIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RPTkUpCj4gQEAgLTEwMTEsOCArOTkyLDcg QEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZnJhbWVfZXZlbnRfY2Iodm9pZCAqZGF0YSwgCj4gdTMy IGV2ZW50KQo+ICAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAljcnRjX2lkID0g ZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gCj4gLQlEUFVfREVCVUcoImNydGMlZFxuIiwgY3J0Yy0+ YmFzZS5pZCk7Cj4gLQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChjcnRjKSwgZXZlbnQpOwo+ICsJ dHJhY2VfZHB1X2NydGNfZnJhbWVfZXZlbnRfY2IoRFJNSUQoY3J0YyksIGV2ZW50KTsKPiAKPiAg CS8qIHRyeSB0byBwcm9jZXNzIHRoZSBldmVudCBpbiBjYWxsZXIgY29udGV4dCAqLwo+ICAJZXZl bnRfcHJvY2Vzc2VkID0gX2RwdV9jcnRjX2hhbmRsZV9ldmVudChkcHVfY3J0YywgZXZlbnQpOwo+ IEBAIC0xMDI3LDkgKzEwMDcsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19mcmFtZV9ldmVudF9j Yih2b2lkICpkYXRhLCAKPiB1MzIgZXZlbnQpCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk cHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gCj4gIAlpZiAoIWZldmVudCkgewo+IC0JCURQ VV9FUlJPUigiY3J0YyVkIGV2ZW50ICVkIG92ZXJmbG93XG4iLAo+IC0JCQkJY3J0Yy0+YmFzZS5p ZCwgZXZlbnQpOwo+IC0JCURQVV9FVlQzMihEUk1JRChjcnRjKSwgZXZlbnQpOwo+ICsJCURSTV9F UlJPUigiY3J0YyVkIGV2ZW50ICVkIG92ZXJmbG93XG4iLCBjcnRjLT5iYXNlLmlkLCBldmVudCk7 Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IAo+IEBAIC0xMDQ2LDcgKzEwMjQsNyBAQCB2b2lkIGRwdV9j cnRjX2NvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgCj4gKmNydGMsCj4gIAkJRFBVX0VS Uk9SKCJpbnZhbGlkIGNydGNcbiIpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAtCURQVV9FVlQzMl9W RVJCT1NFKERSTUlEKGNydGMpKTsKPiArCXRyYWNlX2RwdV9jcnRjX2NvbXBsZXRlX2NvbW1pdChE Uk1JRChjcnRjKSk7Cj4gIH0KPiAKPiAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVy X2Zvcl9lbmNvZGVyKAo+IEBAIC0xMTQ2LDkgKzExMjQsOCBAQCBzdGF0aWMgdm9pZCBfZHB1X2Ny dGNfc2V0dXBfbG1fYm91bmRzKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjLAo+ICAJCWNzdGF0ZS0+ bG1fYm91bmRzW2ldLncgPSBjcnRjX3NwbGl0X3dpZHRoOwo+ICAJCWNzdGF0ZS0+bG1fYm91bmRz W2ldLmggPQo+ICAJCQlkcHVfY3J0Y19nZXRfbWl4ZXJfaGVpZ2h0KGRwdV9jcnRjLCBjc3RhdGUs IGFkal9tb2RlKTsKPiAtCQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChjcnRjKSwgaSwKPiAtCQkJ CWNzdGF0ZS0+bG1fYm91bmRzW2ldLngsIGNzdGF0ZS0+bG1fYm91bmRzW2ldLnksCj4gLQkJCQlj c3RhdGUtPmxtX2JvdW5kc1tpXS53LCBjc3RhdGUtPmxtX2JvdW5kc1tpXS5oKTsKPiArCQl0cmFj ZV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoRFJNSUQoY3J0YyksIGksCj4gKwkJCQkJICAgICAg ICZjc3RhdGUtPmxtX2JvdW5kc1tpXSk7Cj4gIAl9Cj4gCj4gIAlkcm1fbW9kZV9kZWJ1Z19wcmlu dG1vZGVsaW5lKGFkal9tb2RlKTsKPiBAQCAtMTM0NSwxNiArMTMyMiwxNCBAQCBzdGF0aWMgaW50 Cj4gX2RwdV9jcnRjX3dhaXRfZm9yX2ZyYW1lX2RvbmUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAJCXJldHVybiAwOwo+ICAJfQo+IAo+IC0JRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQoY3J0Yyks IERQVV9FVlRMT0dfRlVOQ19FTlRSWSk7Cj4gKwlEUFVfQVRSQUNFX0JFR0lOKCJmcmFtZSBkb25l IGNvbXBsZXRpb24gd2FpdCIpOwo+ICAJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0 KCZkcHVfY3J0Yy0+ZnJhbWVfZG9uZV9jb21wLAo+ICAJCQltc2Vjc190b19qaWZmaWVzKERQVV9G UkFNRV9ET05FX1RJTUVPVVQpKTsKPiAgCWlmICghcmV0KSB7Cj4gLQkJRFBVX0VSUk9SKCJmcmFt ZSBkb25lIGNvbXBsZXRpb24gd2FpdCB0aW1lZCBvdXQsIHJldDolZFxuIiwKPiAtCQkJCXJldCk7 Cj4gLQkJRFBVX0VWVDMyKERSTUlEKGNydGMpLCBEUFVfRVZUTE9HX0ZBVEFMKTsKPiArCQlEUk1f RVJST1IoImZyYW1lIGRvbmUgd2FpdCB0aW1lZCBvdXQsIHJldDolZFxuIiwgcmV0KTsKPiAgCQly YyA9IC1FVElNRURPVVQ7Cj4gIAl9Cj4gLQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChjcnRjKSwg RFBVX0VWVExPR19GVU5DX0VYSVQpOwo+ICsJRFBVX0FUUkFDRV9FTkQoImZyYW1lIGRvbmUgY29t cGxldGlvbiB3YWl0Iik7Cj4gCj4gIAlyZXR1cm4gcmM7Cj4gIH0KPiBAQCAtMTQ3NywxMCArMTQ1 Miw5IEBAIHN0YXRpYyBpbnQgX2RwdV9jcnRjX3ZibGFua19lbmFibGVfbm9fbG9jaygKPiAgCQkJ aWYgKGVuYy0+Y3J0YyAhPSBjcnRjKQo+ICAJCQkJY29udGludWU7Cj4gCj4gLQkJCURQVV9FVlQz MihEUk1JRCgmZHB1X2NydGMtPmJhc2UpLCBEUk1JRChlbmMpLCBlbmFibGUsCj4gLQkJCQkJZHB1 X2NydGMtPmVuYWJsZWQsCj4gLQkJCQkJZHB1X2NydGMtPnN1c3BlbmQsCj4gLQkJCQkJZHB1X2Ny dGMtPnZibGFua19yZXF1ZXN0ZWQpOwo+ICsJCQl0cmFjZV9kcHVfY3J0Y192YmxhbmtfZW5hYmxl KERSTUlEKCZkcHVfY3J0Yy0+YmFzZSksCj4gKwkJCQkJCSAgICAgRFJNSUQoZW5jKSwgZW5hYmxl LAo+ICsJCQkJCQkgICAgIGRwdV9jcnRjKTsKPiAKPiAgCQkJZHB1X2VuY29kZXJfcmVnaXN0ZXJf dmJsYW5rX2NhbGxiYWNrKGVuYywKPiAgCQkJCQlkcHVfY3J0Y192YmxhbmtfY2IsICh2b2lkICop Y3J0Yyk7Cj4gQEAgLTE0OTAsMTAgKzE0NjQsOSBAQCBzdGF0aWMgaW50IF9kcHVfY3J0Y192Ymxh bmtfZW5hYmxlX25vX2xvY2soCj4gIAkJCWlmIChlbmMtPmNydGMgIT0gY3J0YykKPiAgCQkJCWNv bnRpbnVlOwo+IAo+IC0JCQlEUFVfRVZUMzIoRFJNSUQoJmRwdV9jcnRjLT5iYXNlKSwgRFJNSUQo ZW5jKSwgZW5hYmxlLAo+IC0JCQkJCWRwdV9jcnRjLT5lbmFibGVkLAo+IC0JCQkJCWRwdV9jcnRj LT5zdXNwZW5kLAo+IC0JCQkJCWRwdV9jcnRjLT52YmxhbmtfcmVxdWVzdGVkKTsKPiArCQkJdHJh Y2VfZHB1X2NydGNfdmJsYW5rX2VuYWJsZShEUk1JRCgmZHB1X2NydGMtPmJhc2UpLAo+ICsJCQkJ CQkgICAgIERSTUlEKGVuYyksIGVuYWJsZSwKPiArCQkJCQkJICAgICBkcHVfY3J0Yyk7Cj4gCj4g IAkJCWRwdV9lbmNvZGVyX3JlZ2lzdGVyX3ZibGFua19jYWxsYmFjayhlbmMsIE5VTEwsIE5VTEwp Owo+ICAJCX0KPiBAQCAtMTUzMiw4ICsxNTA1LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3Nl dF9zdXNwZW5kKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjLCBib29sIGVuYWJsZSkKPiAgCX0KPiAg CWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7Cj4gCj4gLQlEUFVfREVCVUcoImNydGMl ZCBzdXNwZW5kID0gJWRcbiIsIGNydGMtPmJhc2UuaWQsIGVuYWJsZSk7Cj4gLQlEUFVfRVZUMzJf VkVSQk9TRShEUk1JRChjcnRjKSwgZW5hYmxlKTsKPiArCURSTV9ERUJVR19LTVMoImNydGMlZCBz dXNwZW5kID0gJWRcbiIsIGNydGMtPmJhc2UuaWQsIGVuYWJsZSk7Cj4gCj4gIAltdXRleF9sb2Nr KCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPiAKPiBAQCAtMTU0MSw4ICsxNTEzLDcgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX3NldF9zdXNwZW5kKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjLCBib29s IGVuYWJsZSkKPiAgCSAqIElmIHRoZSB2YmxhbmsgaXMgZW5hYmxlZCwgcmVsZWFzZSBhIHBvd2Vy IHJlZmVyZW5jZSBvbiBzdXNwZW5kCj4gIAkgKiBhbmQgdGFrZSBpdCBiYWNrIGR1cmluZyByZXN1 bWUgKGlmIGl0IGlzIHN0aWxsIGVuYWJsZWQpLgo+ICAJICovCj4gLQlEUFVfRVZUMzIoRFJNSUQo JmRwdV9jcnRjLT5iYXNlKSwgZW5hYmxlLCBkcHVfY3J0Yy0+ZW5hYmxlZCwKPiAtCQkJZHB1X2Ny dGMtPnN1c3BlbmQsIGRwdV9jcnRjLT52YmxhbmtfcmVxdWVzdGVkKTsKPiArCXRyYWNlX2RwdV9j cnRjX3NldF9zdXNwZW5kKERSTUlEKCZkcHVfY3J0Yy0+YmFzZSksIGVuYWJsZSwgZHB1X2NydGMp Owo+ICAJaWYgKGRwdV9jcnRjLT5zdXNwZW5kID09IGVuYWJsZSkKPiAgCQlEUFVfREVCVUcoImNy dGMlZCBzdXNwZW5kIGFscmVhZHkgc2V0IHRvICVkLCBpZ25vcmluZyB1cGRhdGVcbiIsCj4gIAkJ CQljcnRjLT5iYXNlLmlkLCBlbmFibGUpOwo+IEBAIC0xNjQ0LDcgKzE2MTUsNyBAQCBzdGF0aWMg dm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyCj4gZXZlbnRfdHlwZSwgdm9pZCAq YXJnKQo+IAo+ICAJbXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7Cj4gCj4gLQlEUFVf RVZUMzIoRFJNSUQoY3J0YyksIGV2ZW50X3R5cGUpOwo+ICsJdHJhY2VfZHB1X2NydGNfaGFuZGxl X3Bvd2VyX2V2ZW50KERSTUlEKGNydGMpLCBldmVudF90eXBlKTsKPiAKPiAgCXN3aXRjaCAoZXZl bnRfdHlwZSkgewo+ICAJY2FzZSBEUFVfUE9XRVJfRVZFTlRfUE9TVF9FTkFCTEU6Cj4gQEAgLTE3 MTIsMTMgKzE2ODMsMTIgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgCj4gKmNydGMpCj4gIAltb2RlID0gJmNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ ICAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gCj4gLQlEUFVfREVCVUcoImNydGMl ZFxuIiwgY3J0Yy0+YmFzZS5pZCk7Cj4gKwlEUk1fREVCVUdfS01TKCJjcnRjJWRcbiIsIGNydGMt PmJhc2UuaWQpOwo+IAo+ICAJaWYgKGRwdV9rbXNfaXNfc3VzcGVuZF9zdGF0ZShjcnRjLT5kZXYp KQo+ICAJCV9kcHVfY3J0Y19zZXRfc3VzcGVuZChjcnRjLCB0cnVlKTsKPiAKPiAgCW11dGV4X2xv Y2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+IC0JRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQoY3J0 YykpOwo+IAo+ICAJLyogdXBkYXRlIGNvbG9yIHByb2Nlc3Npbmcgb24gc3VzcGVuZCAqLwo+ICAJ ZXZlbnQudHlwZSA9IERSTV9FVkVOVF9DUlRDX1BPV0VSOwo+IEBAIC0xNzMzLDggKzE3MDMsNyBA QCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAKPiAqY3J0YykK PiAgCQkJCWNydGMtPmJhc2UuaWQsCj4gIAkJCQlhdG9taWNfcmVhZCgmZHB1X2NydGMtPmZyYW1l X3BlbmRpbmcpKTsKPiAKPiAtCURQVV9FVlQzMihEUk1JRChjcnRjKSwgZHB1X2NydGMtPmVuYWJs ZWQsIGRwdV9jcnRjLT5zdXNwZW5kLAo+IC0JCQlkcHVfY3J0Yy0+dmJsYW5rX3JlcXVlc3RlZCk7 Cj4gKwl0cmFjZV9kcHVfY3J0Y19kaXNhYmxlKERSTUlEKGNydGMpLCBmYWxzZSwgZHB1X2NydGMp Owo+ICAJaWYgKGRwdV9jcnRjLT5lbmFibGVkICYmICFkcHVfY3J0Yy0+c3VzcGVuZCAmJgo+ICAJ CQlkcHVfY3J0Yy0+dmJsYW5rX3JlcXVlc3RlZCkgewo+ICAJCXJldCA9IF9kcHVfY3J0Y192Ymxh bmtfZW5hYmxlX25vX2xvY2soZHB1X2NydGMsIGZhbHNlKTsKPiBAQCAtMTc0NSw4ICsxNzE0LDgg QEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgCj4gKmNydGMp Cj4gIAlkcHVfY3J0Yy0+ZW5hYmxlZCA9IGZhbHNlOwo+IAo+ICAJaWYgKGF0b21pY19yZWFkKCZk cHVfY3J0Yy0+ZnJhbWVfcGVuZGluZykpIHsKPiAtCQlEUFVfRVZUMzIoRFJNSUQoY3J0YyksIGF0 b21pY19yZWFkKCZkcHVfY3J0Yy0+ZnJhbWVfcGVuZGluZyksCj4gLQkJCQkJCQlEUFVfRVZUTE9H X0ZVTkNfQ0FTRTIpOwo+ICsJCXRyYWNlX2RwdV9jcnRjX2Rpc2FibGVfZnJhbWVfcGVuZGluZyhE Uk1JRChjcnRjKSwKPiArCQkJCSAgICAgYXRvbWljX3JlYWQoJmRwdV9jcnRjLT5mcmFtZV9wZW5k aW5nKSk7Cj4gIAkJZHB1X2NvcmVfcGVyZl9jcnRjX3JlbGVhc2VfYncoY3J0Yyk7Cj4gIAkJYXRv bWljX3NldCgmZHB1X2NydGMtPmZyYW1lX3BlbmRpbmcsIDApOwo+ICAJfQo+IEBAIC0xNzkxLDgg KzE3NjAsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjIAo+ ICpjcnRjLAo+ICAJfQo+ICAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gCj4gLQlE UFVfREVCVUcoImNydGMlZFxuIiwgY3J0Yy0+YmFzZS5pZCk7Cj4gLQlEUFVfRVZUMzJfVkVSQk9T RShEUk1JRChjcnRjKSk7Cj4gKwlEUk1fREVCVUdfS01TKCJjcnRjJWRcbiIsIGNydGMtPmJhc2Uu aWQpOwo+ICAJZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiAKPiAgCWRybV9mb3JfZWFj aF9lbmNvZGVyKGVuY29kZXIsIGNydGMtPmRldikgewo+IEBAIC0xODAzLDggKzE3NzEsNyBAQCBz dGF0aWMgdm9pZCBkcHVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjIAo+ICpjcnRjLAo+ICAJ fQo+IAo+ICAJbXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7Cj4gLQlEUFVfRVZUMzIo RFJNSUQoY3J0YyksIGRwdV9jcnRjLT5lbmFibGVkLCBkcHVfY3J0Yy0+c3VzcGVuZCwKPiAtCQkJ ZHB1X2NydGMtPnZibGFua19yZXF1ZXN0ZWQpOwo+ICsJdHJhY2VfZHB1X2NydGNfZW5hYmxlKERS TUlEKGNydGMpLCB0cnVlLCBkcHVfY3J0Yyk7Cj4gIAlpZiAoIWRwdV9jcnRjLT5lbmFibGVkICYm ICFkcHVfY3J0Yy0+c3VzcGVuZCAmJgo+ICAJCQlkcHVfY3J0Yy0+dmJsYW5rX3JlcXVlc3RlZCkg ewo+ICAJCXJldCA9IF9kcHVfY3J0Y192YmxhbmtfZW5hYmxlX25vX2xvY2soZHB1X2NydGMsIHRy dWUpOwo+IEBAIC0yMDc4LDggKzIwNDUsNyBAQCBpbnQgZHB1X2NydGNfdmJsYW5rKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywgYm9vbCAKPiBlbikKPiAgCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0 Yyk7Cj4gCj4gIAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPiAtCURQVV9FVlQz MihEUk1JRCgmZHB1X2NydGMtPmJhc2UpLCBlbiwgZHB1X2NydGMtPmVuYWJsZWQsCj4gLQkJCWRw dV9jcnRjLT5zdXNwZW5kLCBkcHVfY3J0Yy0+dmJsYW5rX3JlcXVlc3RlZCk7Cj4gKwl0cmFjZV9k cHVfY3J0Y192YmxhbmsoRFJNSUQoJmRwdV9jcnRjLT5iYXNlKSwgZW4sIGRwdV9jcnRjKTsKPiAg CWlmIChkcHVfY3J0Yy0+ZW5hYmxlZCAmJiAhZHB1X2NydGMtPnN1c3BlbmQpIHsKPiAgCQlyZXQg PSBfZHB1X2NydGNfdmJsYW5rX2VuYWJsZV9ub19sb2NrKGRwdV9jcnRjLCBlbik7Cj4gIAkJaWYg KHJldCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Ry YWNlLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCj4gaW5k ZXggYjAwYmRjZDBmNGU4Li44Nzc2MjExODQ3ODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfdHJhY2UuaAo+IEBAIC0xNyw4ICsxNywxMCBAQAo+ICAjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3RyYWNlcG9pbnQuaD4KPiAKPiArI2lu Y2x1ZGUgImRwdV9jcnRjLmgiCj4gICNpbmNsdWRlICJkcHVfZW5jb2Rlcl9waHlzLmgiCj4gICNp bmNsdWRlICJkcHVfaHdfbWRzcy5oIgo+ICsjaW5jbHVkZSAiZHB1X3BsYW5lLmgiCj4gCj4gICN1 bmRlZiBUUkFDRV9TWVNURU0KPiAgI2RlZmluZSBUUkFDRV9TWVNURU0gZHB1Cj4gQEAgLTMyNCw2 ICszMjYsMTggQEAgREVGSU5FX0VWRU5UKGRwdV9kcm1fb2JqX3RlbXBsYXRlLAo+IGRwdV9lbmNf cHJlcGFyZV9raWNrb2ZmX3Jlc2V0LAo+ICAJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkKSwKPiAg CVRQX0FSR1MoZHJtX2lkKQo+ICApOwo+ICtERUZJTkVfRVZFTlQoZHB1X2RybV9vYmpfdGVtcGxh dGUsIGRwdV9jcnRjX2NvbXBsZXRlX2ZsaXAsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQp LAo+ICsJVFBfQVJHUyhkcm1faWQpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZHJtX29ial90 ZW1wbGF0ZSwgZHB1X2NydGNfdmJsYW5rX2NiLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lk KSwKPiArCVRQX0FSR1MoZHJtX2lkKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2RybV9vYmpf dGVtcGxhdGUsIGRwdV9jcnRjX2NvbXBsZXRlX2NvbW1pdCwKPiArCVRQX1BST1RPKHVpbnQzMl90 IGRybV9pZCksCj4gKwlUUF9BUkdTKGRybV9pZCkKPiArKTsKPiAKPiAgVFJBQ0VfRVZFTlQoZHB1 X2VuY19lbmFibGUsCj4gIAlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGludCBoZGlzcGxheSwg aW50IHZkaXNwbGF5KSwKPiBAQCAtNTMyLDYgKzU0NiwyMiBAQCBERUZJTkVfRVZFTlQoZHB1X2lk X2V2ZW50X3RlbXBsYXRlLAo+IGRwdV9lbmNfZnJhbWVfZG9uZV90aW1lb3V0LAo+ICAJVFBfUFJP VE8odWludDMyX3QgZHJtX2lkLCB1MzIgZXZlbnQpLAo+ICAJVFBfQVJHUyhkcm1faWQsIGV2ZW50 KQo+ICApOwo+ICtERUZJTkVfRVZFTlQoZHB1X2lkX2V2ZW50X3RlbXBsYXRlLCBkcHVfY3J0Y19m cmFtZV9ldmVudF9jYiwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwgdTMyIGV2ZW50KSwK PiArCVRQX0FSR1MoZHJtX2lkLCBldmVudCkKPiArKTsKPiArREVGSU5FX0VWRU5UKGRwdV9pZF9l dmVudF90ZW1wbGF0ZSwgZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50LAo+ICsJVFBfUFJPVE8o dWludDMyX3QgZHJtX2lkLCB1MzIgZXZlbnQpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGV2ZW50KQo+ ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2lkX2V2ZW50X3RlbXBsYXRlLCBkcHVfY3J0Y19mcmFt ZV9ldmVudF9kb25lLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCB1MzIgZXZlbnQpLAo+ ICsJVFBfQVJHUyhkcm1faWQsIGV2ZW50KQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2lkX2V2 ZW50X3RlbXBsYXRlLCBkcHVfY3J0Y19mcmFtZV9ldmVudF9tb3JlX3BlbmRpbmcsCj4gKwlUUF9Q Uk9UTyh1aW50MzJfdCBkcm1faWQsIHUzMiBldmVudCksCj4gKwlUUF9BUkdTKGRybV9pZCwgZXZl bnQpCj4gKyk7Cj4gCj4gIFRSQUNFX0VWRU5UKGRwdV9lbmNfd2FpdF9ldmVudF90aW1lb3V0LAo+ ICAJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCBpbnQzMl90IGh3X2lkLCBpbnQgcmMsIHM2NCB0 aW1lLAo+IEBAIC01NTgsNiArNTg4LDE0MiBAQCBUUkFDRV9FVkVOVChkcHVfZW5jX3dhaXRfZXZl bnRfdGltZW91dCwKPiAgCQkgIF9fZW50cnktPmV4cGVjdGVkX3RpbWUsIF9fZW50cnktPmF0b21p Y19jbnQpCj4gICk7Cj4gCj4gK1RSQUNFX0VWRU5UKGRwdV9jcnRjX3NldHVwX21peGVyLAo+ICsJ VFBfUFJPVE8odWludDMyX3QgY3J0Y19pZCwgdWludDMyX3QgcGxhbmVfaWQsCj4gKwkJIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpwc3RhdGUs Cj4gKwkJIHVpbnQzMl90IHN0YWdlX2lkeCwgZW51bSBkcHVfc3NwcCBzc3BwLCB1aW50MzJfdCBw aXhlbF9mb3JtYXQsCj4gKwkJIHVpbnQ2NF90IG1vZGlmaWVyKSwKPiArCVRQX0FSR1MoY3J0Y19p ZCwgcGxhbmVfaWQsIHN0YXRlLCBwc3RhdGUsIHN0YWdlX2lkeCwgc3NwcCwKPiArCQlwaXhlbF9m b3JtYXQsIG1vZGlmaWVyKSwKPiArCVRQX1NUUlVDVF9fZW50cnkoCj4gKwkJX19maWVsZCgJdWlu dDMyX3QsCQljcnRjX2lkCQkpCj4gKwkJX19maWVsZCgJdWludDMyX3QsCQlwbGFuZV9pZAkpCj4g KwkJX19maWVsZCgJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSosc3RhdGUJCSkKPiArCQlfX2ZpZWxk KAlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlKixwc3RhdGUJCSkKPiArCQlfX2ZpZWxkKAl1aW50MzJf dCwJCXN0YWdlX2lkeAkpCj4gKwkJX19maWVsZCgJZW51bSBkcHVfc3NwcCwJCXNzcHAJCSkKPiAr CQlfX2ZpZWxkKAl1aW50MzJfdCwJCXBpeGVsX2Zvcm1hdAkpCj4gKwkJX19maWVsZCgJdWludDY0 X3QsCQltb2RpZmllcgkpCj4gKwkpLAo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJX19lbnRyeS0+ Y3J0Y19pZCA9IGNydGNfaWQ7Cj4gKwkJX19lbnRyeS0+cGxhbmVfaWQgPSBwbGFuZV9pZDsKPiAr CQlfX2VudHJ5LT5zdGF0ZSA9IHN0YXRlOwo+ICsJCV9fZW50cnktPnBzdGF0ZSA9IHBzdGF0ZTsK PiArCQlfX2VudHJ5LT5zdGFnZV9pZHggPSBzdGFnZV9pZHg7Cj4gKwkJX19lbnRyeS0+c3NwcCA9 IHNzcHA7Cj4gKwkJX19lbnRyeS0+cGl4ZWxfZm9ybWF0ID0gcGl4ZWxfZm9ybWF0Owo+ICsJCV9f ZW50cnktPm1vZGlmaWVyID0gbW9kaWZpZXI7Cj4gKwkpLAo+ICsJVFBfcHJpbnRrKCJjcnRjX2lk OiV1IHBsYW5lX2lkOiV1IGZiX2lkOiV1IHNyYzp7JXV4JXUrJXV4JXV9ICIKPiArCQkgICJkc3Q6 eyV1eCV1KyV1eCV1fSBzdGFnZV9pZHg6JXUgc3RhZ2U6JWQsIHNzcHA6JWQgIgo+ICsJCSAgIm11 bHRpcmVjdF9pbmRleDolZCBtdWx0aXJlY3RfbW9kZToldSBwaXhfZm9ybWF0OiV1ICIKPiArCQkg ICJtb2RpZmllcjolbGx1IiwKPiArCQkgIF9fZW50cnktPmNydGNfaWQsIF9fZW50cnktPnBsYW5l X2lkLAo+ICsJCSAgX19lbnRyeS0+c3RhdGUtPmZiID8gX19lbnRyeS0+c3RhdGUtPmZiLT5iYXNl LmlkIDogLTEsCj4gKwkJICBfX2VudHJ5LT5zdGF0ZS0+c3JjX3cgPj4gMTYsICBfX2VudHJ5LT5z dGF0ZS0+c3JjX2ggPj4gMTYsCj4gKwkJICBfX2VudHJ5LT5zdGF0ZS0+c3JjX3ggPj4gMTYsICBf X2VudHJ5LT5zdGF0ZS0+c3JjX3kgPj4gMTYsCj4gKwkJICBfX2VudHJ5LT5zdGF0ZS0+Y3J0Y193 LCAgX19lbnRyeS0+c3RhdGUtPmNydGNfaCwKPiArCQkgIF9fZW50cnktPnN0YXRlLT5jcnRjX3gs ICBfX2VudHJ5LT5zdGF0ZS0+Y3J0Y195LAo+ICsJCSAgX19lbnRyeS0+c3RhZ2VfaWR4LCBfX2Vu dHJ5LT5wc3RhdGUtPnN0YWdlLCBfX2VudHJ5LT5zc3BwLAo+ICsJCSAgX19lbnRyeS0+cHN0YXRl LT5tdWx0aXJlY3RfaW5kZXgsCj4gKwkJICBfX2VudHJ5LT5wc3RhdGUtPm11bHRpcmVjdF9tb2Rl LCBfX2VudHJ5LT5waXhlbF9mb3JtYXQsCj4gKwkJICBfX2VudHJ5LT5tb2RpZmllcikKPiArKTsK PiArCj4gK1RSQUNFX0VWRU5UKGRwdV9jcnRjX3NldHVwX2xtX2JvdW5kcywKPiArCVRQX1BST1RP KHVpbnQzMl90IGRybV9pZCwgaW50IG1peGVyLCBzdHJ1Y3QgZHB1X3JlY3QgKmJvdW5kcyksCj4g KwlUUF9BUkdTKGRybV9pZCwgbWl4ZXIsIGJvdW5kcyksCj4gKwlUUF9TVFJVQ1RfX2VudHJ5KAo+ ICsJCV9fZmllbGQoCXVpbnQzMl90LAkJZHJtX2lkCSkKPiArCQlfX2ZpZWxkKAlpbnQsCQkJbWl4 ZXIJKQo+ICsJCV9fZmllbGQoCXN0cnVjdCBkcHVfcmVjdCAqLAlib3VuZHMJKQo+ICsJKSwKPiAr CVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9pZCA9IGRybV9pZDsKPiArCQlfX2Vu dHJ5LT5taXhlciA9IG1peGVyOwo+ICsJCV9fZW50cnktPmJvdW5kcyA9IGJvdW5kczsKPiArCSks Cj4gKwlUUF9wcmludGsoImlkOiV1IG1peGVyOiVkIGJvdW5kczp7JXV4JXUvJXV4JXV9IiwgX19l bnRyeS0+ZHJtX2lkLAo+ICsJCSAgX19lbnRyeS0+bWl4ZXIsIF9fZW50cnktPmJvdW5kcy0+eCwg X19lbnRyeS0+Ym91bmRzLT55LAo+ICsJCSAgX19lbnRyeS0+Ym91bmRzLT53LCBfX2VudHJ5LT5i b3VuZHMtPmgpCj4gKyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChkcHVfY3J0Y192YmxhbmtfZW5hYmxl LAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCB1aW50MzJfdCBlbmNfaWQsIGJvb2wgZW5h YmxlLAo+ICsJCSBzdHJ1Y3QgZHB1X2NydGMgKmNydGMpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGVu Y19pZCwgZW5hYmxlLCBjcnRjKSwKPiArCVRQX1NUUlVDVF9fZW50cnkoCj4gKwkJX19maWVsZCgJ dWludDMyX3QsCQlkcm1faWQJKQo+ICsJCV9fZmllbGQoCXVpbnQzMl90LAkJZW5jX2lkCSkKPiAr CQlfX2ZpZWxkKAlib29sLAkJCWVuYWJsZQkpCj4gKwkJX19maWVsZCgJc3RydWN0IGRwdV9jcnRj ICosCWNydGMJKQo+ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9p ZCA9IGRybV9pZDsKPiArCQlfX2VudHJ5LT5lbmNfaWQgPSBlbmNfaWQ7Cj4gKwkJX19lbnRyeS0+ ZW5hYmxlID0gZW5hYmxlOwo+ICsJCV9fZW50cnktPmNydGMgPSBjcnRjOwo+ICsJKSwKPiArCVRQ X3ByaW50aygiaWQ6JXUgZW5jb2RlcjoldSBlbmFibGU6JXMgc3RhdGV7ZW5hYmxlZDolcyBzdXNw ZW5kOiVzICIKPiArCQkgICJ2YmxhbmtfcmVxOiVzfSIsCj4gKwkJICBfX2VudHJ5LT5kcm1faWQs IF9fZW50cnktPmVuY19pZCwKPiArCQkgIF9fZW50cnktPmVuYWJsZSA/ICJ0cnVlIiA6ICJmYWxz ZSIsCj4gKwkJICBfX2VudHJ5LT5jcnRjLT5lbmFibGVkID8gInRydWUiIDogImZhbHNlIiwKPiAr CQkgIF9fZW50cnktPmNydGMtPnN1c3BlbmQgPyAidHJ1ZSIgOiAiZmFsc2UiLAo+ICsJCSAgX19l bnRyeS0+Y3J0Yy0+dmJsYW5rX3JlcXVlc3RlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpCj4gKyk7Cj4g Kwo+ICtERUNMQVJFX0VWRU5UX0NMQVNTKGRwdV9jcnRjX2VuYWJsZV90ZW1wbGF0ZSwKPiArCVRQ X1BST1RPKHVpbnQzMl90IGRybV9pZCwgYm9vbCBlbmFibGUsIHN0cnVjdCBkcHVfY3J0YyAqY3J0 YyksCj4gKwlUUF9BUkdTKGRybV9pZCwgZW5hYmxlLCBjcnRjKSwKPiArCVRQX1NUUlVDVF9fZW50 cnkoCj4gKwkJX19maWVsZCgJdWludDMyX3QsCQlkcm1faWQJKQo+ICsJCV9fZmllbGQoCWJvb2ws CQkJZW5hYmxlCSkKPiArCQlfX2ZpZWxkKAlzdHJ1Y3QgZHB1X2NydGMgKiwJY3J0YwkpCj4gKwkp LAo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJX19lbnRyeS0+ZHJtX2lkID0gZHJtX2lkOwo+ICsJ CV9fZW50cnktPmVuYWJsZSA9IGVuYWJsZTsKPiArCQlfX2VudHJ5LT5jcnRjID0gY3J0YzsKPiAr CSksCj4gKwlUUF9wcmludGsoImlkOiV1IGVuYWJsZTolcyBzdGF0ZXtlbmFibGVkOiVzIHN1c3Bl bmQ6JXMgCj4gdmJsYW5rX3JlcTolc30iLAo+ICsJCSAgX19lbnRyeS0+ZHJtX2lkLCBfX2VudHJ5 LT5lbmFibGUgPyAidHJ1ZSIgOiAiZmFsc2UiLAo+ICsJCSAgX19lbnRyeS0+Y3J0Yy0+ZW5hYmxl ZCA/ICJ0cnVlIiA6ICJmYWxzZSIsCj4gKwkJICBfX2VudHJ5LT5jcnRjLT5zdXNwZW5kID8gInRy dWUiIDogImZhbHNlIiwKPiArCQkgIF9fZW50cnktPmNydGMtPnZibGFua19yZXF1ZXN0ZWQgPyAi dHJ1ZSIgOiAiZmFsc2UiKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2NydGNfZW5hYmxlX3Rl bXBsYXRlLCBkcHVfY3J0Y19zZXRfc3VzcGVuZCwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9p ZCwgYm9vbCBlbmFibGUsIHN0cnVjdCBkcHVfY3J0YyAqY3J0YyksCj4gKwlUUF9BUkdTKGRybV9p ZCwgZW5hYmxlLCBjcnRjKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2NydGNfZW5hYmxlX3Rl bXBsYXRlLCBkcHVfY3J0Y19lbmFibGUsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGJv b2wgZW5hYmxlLCBzdHJ1Y3QgZHB1X2NydGMgKmNydGMpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGVu YWJsZSwgY3J0YykKPiArKTsKPiArREVGSU5FX0VWRU5UKGRwdV9jcnRjX2VuYWJsZV90ZW1wbGF0 ZSwgZHB1X2NydGNfZGlzYWJsZSwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwgYm9vbCBl bmFibGUsIHN0cnVjdCBkcHVfY3J0YyAqY3J0YyksCj4gKwlUUF9BUkdTKGRybV9pZCwgZW5hYmxl LCBjcnRjKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2NydGNfZW5hYmxlX3RlbXBsYXRlLCBk cHVfY3J0Y192YmxhbmssCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGJvb2wgZW5hYmxl LCBzdHJ1Y3QgZHB1X2NydGMgKmNydGMpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGVuYWJsZSwgY3J0 YykKPiArKTsKPiArCj4gK1RSQUNFX0VWRU5UKGRwdV9jcnRjX2Rpc2FibGVfZnJhbWVfcGVuZGlu ZywKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwgaW50IGZyYW1lX3BlbmRpbmcpLAo+ICsJ VFBfQVJHUyhkcm1faWQsIGZyYW1lX3BlbmRpbmcpLAo+ICsJVFBfU1RSVUNUX19lbnRyeSgKPiAr CQlfX2ZpZWxkKAl1aW50MzJfdCwJCWRybV9pZAkJKQo+ICsJCV9fZmllbGQoCWludCwJCQlmcmFt ZV9wZW5kaW5nCSkKPiArCSksCj4gKwlUUF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT5kcm1f aWQgPSBkcm1faWQ7Cj4gKwkJX19lbnRyeS0+ZnJhbWVfcGVuZGluZyA9IGZyYW1lX3BlbmRpbmc7 Cj4gKwkpLAo+ICsJVFBfcHJpbnRrKCJpZDoldSBmcmFtZV9wZW5kaW5nOiVkIiwgX19lbnRyeS0+ ZHJtX2lkLAo+ICsJCSAgX19lbnRyeS0+ZnJhbWVfcGVuZGluZykKPiArKTsKPiAKPiAgI2RlZmlu ZSBEUFVfQVRSQUNFX0VORChuYW1lKSB0cmFjZV90cmFjaW5nX21hcmtfd3JpdGUoY3VycmVudC0+ dGdpZCwgCj4gbmFtZSwgMCkKPiAgI2RlZmluZSBEUFVfQVRSQUNFX0JFR0lOKG5hbWUpIHRyYWNl X3RyYWNpbmdfbWFya193cml0ZShjdXJyZW50LT50Z2lkLCAKPiBuYW1lLCAxKQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBs aXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K