From mboxrd@z Thu Jan 1 00:00:00 1970 From: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH 13/19] drm/msm: dpu: Remove dpu evtlog Date: Tue, 26 Jun 2018 12:22:46 +0530 Message-ID: <20d89c24389a5349b4acb634050cf048@codeaurora.org> References: <20180620204841.56354-1-seanpaul@chromium.org> <20180620204841.56354-14-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-14-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+IE5vdyB0aGF0IGV2ZXJ5dGhp bmcgaGFzIGJlZW4gY29udmVydGVkIHRvIHRyYWNlcG9pbnRzLCByZW1vdmUgdGhlIGRwdQo+IGV2 dGxvZy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9y Zz4KUmV2aWV3ZWQtYnk6IFJhamVzaCBZYWRhdiA8cnlhZGF2QGNvZGVhdXJvcmEub3JnPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSAtCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyAgIHwgICA1IC0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNlLmggfCAgMzMgLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZHB1X2RiZy5jICAgICAgICAgICAgIHwgMTQ3ICstLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2RiZy5oICAgICAgICAgICAgIHwgMjI0ICstLS0tLS0t LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZGJnX2V2dGxvZy5jICAgICAgfCAz MDYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlv bnMoKyksIDcwNSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9tc20vZHB1X2RiZ19ldnRsb2cuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL01ha2VmaWxlIAo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+IGluZGV4 IGRjNTY5MDQzNjdkOC4uOWMxODJhOWRhYjJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCj4gQEAg LTc1LDcgKzc1LDYgQEAgbXNtLXkgOj0gXAo+ICAJZGlzcC9kcHUxL2RwdV9tZHNzLm8gXAo+ICAJ ZGlzcC9kcHUxL2RwdV9wb3dlcl9oYW5kbGUubyBcCj4gIAlkcHVfZGJnLm8gXAo+IC0JZHB1X2Ri Z19ldnRsb2cubyBcCj4gIAltc21fcHJvcC5vIFwKPiAgCW1zbV9hdG9taWMubyBcCj4gIAltc21f ZGVidWdmcy5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBp bmRleCA2YWU1YmJhMjEwNzQuLjRmZDVlMWQ3MjYxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBAQCAtNDMsMTEgKzQzLDYgQEAgc3RhdGljIGNvbnN0IGNo YXIgKiBjb25zdCBpb21tdV9wb3J0c1tdID0gewo+ICAJCSJtZHBfMCIsCj4gIH07Cj4gCj4gLS8q Kgo+IC0gKiBDb250cm9scyBzaXplIG9mIGV2ZW50IGxvZyBidWZmZXIuIFNwZWNpZmllZCBhcyBh IHBvd2VyIG9mIDIuCj4gLSAqLwo+IC0jZGVmaW5lIERQVV9FVlRMT0dfU0laRQkxMDI0Cj4gLQo+ ICAvKgo+ICAgKiBUbyBlbmFibGUgb3ZlcmFsbCBEUk0gZHJpdmVyIGxvZ2dpbmcKPiAgICogIyBl Y2hvIDB4MiA+IC9zeXMvbW9kdWxlL2RybS9wYXJhbWV0ZXJzL2RlYnVnCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCj4gYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaAo+IGluZGV4IGQ2ZjExN2JkYWQyNC4uNDFm ZDZhMjI3ZDhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV90cmFjZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNl LmgKPiBAQCAtMTY1LDM5ICsxNjUsNiBAQCBUUkFDRV9FVkVOVChkcHVfdHJhY2VfY291bnRlciwK PiAgCQkJX19nZXRfc3RyKGNvdW50ZXJfbmFtZSksIF9fZW50cnktPnZhbHVlKQo+ICApCj4gCj4g LSNkZWZpbmUgRFBVX1RSQUNFX0VWVExPR19TSVpFCTE1Cj4gLVRSQUNFX0VWRU5UKGRwdV9ldnRs b2csCj4gLQlUUF9QUk9UTyhjb25zdCBjaGFyICp0YWcsIHUzMiB0YWdfaWQsIHUzMiBjbnQsIHUz MiBkYXRhW10pLAo+IC0JVFBfQVJHUyh0YWcsIHRhZ19pZCwgY250LCBkYXRhKSwKPiAtCVRQX1NU UlVDVF9fZW50cnkoCj4gLQkJCV9fZmllbGQoaW50LCBwaWQpCj4gLQkJCV9fc3RyaW5nKGV2dGxv Z190YWcsIHRhZykKPiAtCQkJX19maWVsZCh1MzIsIHRhZ19pZCkKPiAtCQkJX19hcnJheSh1MzIs IGRhdGEsIERQVV9UUkFDRV9FVlRMT0dfU0laRSkKPiAtCSksCj4gLQlUUF9mYXN0X2Fzc2lnbigK PiAtCQkJX19lbnRyeS0+cGlkID0gY3VycmVudC0+dGdpZDsKPiAtCQkJX19hc3NpZ25fc3RyKGV2 dGxvZ190YWcsIHRhZyk7Cj4gLQkJCV9fZW50cnktPnRhZ19pZCA9IHRhZ19pZDsKPiAtCQkJaWYg KGNudCA+IERQVV9UUkFDRV9FVlRMT0dfU0laRSkKPiAtCQkJCWNudCA9IERQVV9UUkFDRV9FVlRM T0dfU0laRTsKPiAtCQkJbWVtY3B5KF9fZW50cnktPmRhdGEsIGRhdGEsIGNudCAqIHNpemVvZih1 MzIpKTsKPiAtCQkJbWVtc2V0KCZfX2VudHJ5LT5kYXRhW2NudF0sIDAsCj4gLQkJCQkoRFBVX1RS QUNFX0VWVExPR19TSVpFIC0gY250KSAqIHNpemVvZih1MzIpKTsKPiAtCSksCj4gLQlUUF9wcmlu dGsoIiVkfCVzOiVkfCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4fCV4 IiwKPiAtCQkJX19lbnRyeS0+cGlkLCBfX2dldF9zdHIoZXZ0bG9nX3RhZyksCj4gLQkJCV9fZW50 cnktPnRhZ19pZCwKPiAtCQkJX19lbnRyeS0+ZGF0YVswXSwgX19lbnRyeS0+ZGF0YVsxXSwKPiAt CQkJX19lbnRyeS0+ZGF0YVsyXSwgX19lbnRyeS0+ZGF0YVszXSwKPiAtCQkJX19lbnRyeS0+ZGF0 YVs0XSwgX19lbnRyeS0+ZGF0YVs1XSwKPiAtCQkJX19lbnRyeS0+ZGF0YVs2XSwgX19lbnRyeS0+ ZGF0YVs3XSwKPiAtCQkJX19lbnRyeS0+ZGF0YVs4XSwgX19lbnRyeS0+ZGF0YVs5XSwKPiAtCQkJ X19lbnRyeS0+ZGF0YVsxMF0sIF9fZW50cnktPmRhdGFbMTFdLAo+IC0JCQlfX2VudHJ5LT5kYXRh WzEyXSwgX19lbnRyeS0+ZGF0YVsxM10sCj4gLQkJCV9fZW50cnktPmRhdGFbMTRdKQo+IC0pCj4g LQo+ICBUUkFDRV9FVkVOVChkcHVfcGVyZl9jcnRjX3VwZGF0ZSwKPiAgCVRQX1BST1RPKHUzMiBj cnRjLCB1NjQgYndfY3RsX21ub2MsIHU2NCBid19jdGxfbGxjYywKPiAgCQkJdTY0IGJ3X2N0bF9l YmksIHUzMiBjb3JlX2Nsa19yYXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9kYmcuYyAKPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2RiZy5jCj4gaW5kZXggMjc1 MzhiYzZjMjkwLi45NDk1YTBmMTdmMWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kcHVfZGJnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9kYmcuYwo+IEBAIC0x NjUsNyArMTY1LDYgQEAgc3RydWN0IGRwdV9kYmdfdmJpZl9kZWJ1Z19idXMgewo+IAo+ICAvKioK PiAgICogc3RydWN0IGRwdV9kYmdfYmFzZSAtIGdsb2JhbCBkcHUgZGVidWcgYmFzZSBzdHJ1Y3R1 cmUKPiAtICogQGV2dGxvZzogZXZlbnQgbG9nIGluc3RhbmNlCj4gICAqIEByZWdfYmFzZV9saXN0 OiBsaXN0IG9mIHJlZ2lzdGVyIGR1bXBpbmcgcmVnaW9ucwo+ICAgKiBAZGV2OiBkZXZpY2UgcG9p bnRlcgo+ICAgKiBAcmVxX2R1bXBfYmxrczogbGlzdCBvZiBibG9ja3MgcmVxdWVzdGVkIGZvciBk dW1waW5nCj4gQEAgLTE3OSw3ICsxNzgsNiBAQCBzdHJ1Y3QgZHB1X2RiZ192YmlmX2RlYnVnX2J1 cyB7Cj4gICAqIEBkc2lfZGJnX2J1czogZHVtcCBkc2kgZGVidWcgYnVzIHJlZ2lzdGVyCj4gICAq Lwo+ICBzdGF0aWMgc3RydWN0IGRwdV9kYmdfYmFzZSB7Cj4gLQlzdHJ1Y3QgZHB1X2RiZ19ldnRs b2cgKmV2dGxvZzsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgcmVnX2Jhc2VfbGlzdDsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldjsKPiAKPiBAQCAtMTk2LDkgKzE5NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHB1 X2RiZ19iYXNlIHsKPiAgCWJvb2wgZHNpX2RiZ19idXM7Cj4gIH0gZHB1X2RiZ19iYXNlOwo+IAo+ IC0vKiBkcHVfZGJnX2Jhc2VfZXZ0bG9nIC0gZ2xvYmFsIHBvaW50ZXIgdG8gbWFpbiBkcHUgZXZl bnQgbG9nIGZvciAKPiBtYWNybyB1c2UgKi8KPiAtc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpkcHVf ZGJnX2Jhc2VfZXZ0bG9nOwo+IC0KPiAgc3RhdGljIHZvaWQgX2RwdV9kZWJ1Z19idXNfeGJhcl9k dW1wKHZvaWQgX19pb21lbSAqbWVtX2Jhc2UsCj4gIAkJc3RydWN0IGRwdV9kZWJ1Z19idXNfZW50 cnkgKmVudHJ5LCB1MzIgdmFsKQo+ICB7Cj4gQEAgLTI1MjYsOCArMjUyMSw2IEBAIHN0YXRpYyB2 b2lkIF9kcHVfZHVtcF9hcnJheShzdHJ1Y3QKPiBkcHVfZGJnX3JlZ19iYXNlICpibGtfYXJyW10s Cj4gIHsKPiAgCWludCBpOwo+IAo+IC0JZHB1X2V2dGxvZ19kdW1wX2FsbChkcHVfZGJnX2Jhc2Uu ZXZ0bG9nKTsKPiAtCj4gIAlpZiAoZHVtcF9hbGwgfHwgIWJsa19hcnIgfHwgIWxlbikgewo+ICAJ CV9kcHVfZHVtcF9yZWdfYWxsKCk7Cj4gIAl9IGVsc2Ugewo+IEBAIC0yNTU2LDcgKzI1NDksNyBA QCBzdGF0aWMgdm9pZCBfZHB1X2R1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgCj4gKndvcmsp Cj4gIHsKPiAgCV9kcHVfZHVtcF9hcnJheShkcHVfZGJnX2Jhc2UucmVxX2R1bXBfYmxrcywKPiAg CQlBUlJBWV9TSVpFKGRwdV9kYmdfYmFzZS5yZXFfZHVtcF9ibGtzKSwKPiAtCQlkcHVfZGJnX2Jh c2Uud29ya19wYW5pYywgImV2dGxvZ193b3JraXRlbSIsCj4gKwkJZHB1X2RiZ19iYXNlLndvcmtf cGFuaWMsICJkcHVkdW1wX3dvcmtpdGVtIiwKPiAgCQlkcHVfZGJnX2Jhc2UuZGJnYnVzX2RwdS5j bW4uaW5jbHVkZV9pbl9kZWZlcnJlZF93b3JrLAo+ICAJCWRwdV9kYmdfYmFzZS5kYmdidXNfdmJp Zl9ydC5jbW4uaW5jbHVkZV9pbl9kZWZlcnJlZF93b3JrLAo+ICAJCWRwdV9kYmdfYmFzZS5kdW1w X2FsbCk7Cj4gQEAgLTI1NjQsNyArMjU1Nyw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfZHVtcF93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAKPiAqd29yaykKPiAKPiAgdm9pZCBkcHVfZGJnX2R1bXAoYm9v bCBxdWV1ZV93b3JrLCBjb25zdCBjaGFyICpuYW1lLCAuLi4pCj4gIHsKPiAtCWludCBpLCBpbmRl eCA9IDA7Cj4gKwlpbnQgaW5kZXggPSAwOwo+ICAJYm9vbCBkb19wYW5pYyA9IGZhbHNlOwo+ICAJ Ym9vbCBkdW1wX2RiZ2J1c19kcHUgPSBmYWxzZTsKPiAgCWJvb2wgZHVtcF9kYmdidXNfdmJpZl9y dCA9IGZhbHNlOwo+IEBAIC0yNTc1LDkgKzI1NjgsNiBAQCB2b2lkIGRwdV9kYmdfZHVtcChib29s IHF1ZXVlX3dvcmssIGNvbnN0IGNoYXIgCj4gKm5hbWUsIC4uLikKPiAgCXN0cnVjdCBkcHVfZGJn X3JlZ19iYXNlICoqYmxrX2FycjsKPiAgCXUzMiBibGtfbGVuOwo+IAo+IC0JaWYgKCFkcHVfZXZ0 bG9nX2lzX2VuYWJsZWQoZHB1X2RiZ19iYXNlLmV2dGxvZywgRFBVX0VWVExPR19BTFdBWVMpKQo+ IC0JCXJldHVybjsKPiAtCj4gIAlpZiAocXVldWVfd29yayAmJiB3b3JrX3BlbmRpbmcoJmRwdV9k YmdfYmFzZS5kdW1wX3dvcmspKQo+ICAJCXJldHVybjsKPiAKPiBAQCAtMjU4OSwxMiArMjU3OSw3 IEBAIHZvaWQgZHB1X2RiZ19kdW1wKGJvb2wgcXVldWVfd29yaywgY29uc3QgY2hhciAKPiAqbmFt ZSwgLi4uKQo+ICAJZHB1X2RiZ19iYXNlLmR1bXBfYWxsID0gZmFsc2U7Cj4gCj4gIAl2YV9zdGFy dChhcmdzLCBuYW1lKTsKPiAtCWkgPSAwOwo+ICAJd2hpbGUgKChibGtfbmFtZSA9IHZhX2FyZyhh cmdzLCBjaGFyKikpKSB7Cj4gLQkJaWYgKGkrKyA+PSBEUFVfRVZUTE9HX01BWF9EQVRBKSB7Cj4g LQkJCXByX2VycigiY291bGQgbm90IHBhcnNlIGFsbCBkdW1wIGFyZ3VtZW50c1xuIik7Cj4gLQkJ CWJyZWFrOwo+IC0JCX0KPiAgCQlpZiAoSVNfRVJSX09SX05VTEwoYmxrX25hbWUpKQo+ICAJCQli cmVhazsKPiAKPiBAQCAtMjY0MSw3ICsyNjI2LDcgQEAgdm9pZCBkcHVfZGJnX2R1bXAoYm9vbCBx dWV1ZV93b3JrLCBjb25zdCBjaGFyIAo+ICpuYW1lLCAuLi4pCj4gIH0KPiAKPiAgLyoKPiAtICog ZHB1X2RiZ19kZWJ1Z2ZzX29wZW4gLSBkZWJ1Z2ZzIG9wZW4gaGFuZGxlciBmb3IgZXZ0bG9nIGR1 bXAKPiArICogZHB1X2RiZ19kZWJ1Z2ZzX29wZW4gLSBkZWJ1Z2ZzIG9wZW4gaGFuZGxlciBmb3Ig ZGVidWcgZHVtcAo+ICAgKiBAaW5vZGU6IGRlYnVnZnMgaW5vZGUKPiAgICogQGZpbGU6IGZpbGUg aGFuZGxlCj4gICAqLwo+IEBAIC0yNjU0LDM1ICsyNjM5LDEzIEBAIHN0YXRpYyBpbnQgZHB1X2Ri Z19kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlCj4gKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkK PiAgfQo+IAo+ICAvKioKPiAtICogZHB1X2V2dGxvZ19kdW1wX3JlYWQgLSBkZWJ1Z2ZzIHJlYWQg aGFuZGxlciBmb3IgZXZ0bG9nIGR1bXAKPiAtICogQGZpbGU6IGZpbGUgaGFuZGxlcgo+IC0gKiBA YnVmZjogdXNlciBidWZmZXIgY29udGVudCBmb3IgZGVidWdmcwo+IC0gKiBAY291bnQ6IHNpemUg b2YgdXNlciBidWZmZXIKPiAtICogQHBwb3M6IHBvc2l0aW9uIG9mZnNldCBvZiB1c2VyIGJ1ZmZl cgo+IC0gKi8KPiAtc3RhdGljIHNzaXplX3QgZHB1X2V2dGxvZ19kdW1wX3JlYWQoc3RydWN0IGZp bGUgKmZpbGUsIGNoYXIgX191c2VyIAo+ICpidWZmLAo+IC0JCXNpemVfdCBjb3VudCwgbG9mZl90 ICpwcG9zKQo+IC17Cj4gLQlzc2l6ZV90IGxlbiA9IDA7Cj4gLQljaGFyIGV2dGxvZ19idWZbRFBV X0VWVExPR19CVUZfTUFYXTsKPiAtCj4gLQlsZW4gPSBkcHVfZXZ0bG9nX2R1bXBfdG9fYnVmZmVy KGRwdV9kYmdfYmFzZS5ldnRsb2csIGV2dGxvZ19idWYsCj4gLQkJCURQVV9FVlRMT0dfQlVGX01B WCk7Cj4gLQlpZiAoY29weV90b191c2VyKGJ1ZmYsIGV2dGxvZ19idWYsIGxlbikpCj4gLQkJcmV0 dXJuIC1FRkFVTFQ7Cj4gLQkqcHBvcyArPSBsZW47Cj4gLQo+IC0JcmV0dXJuIGxlbjsKPiAtfQo+ IC0KPiAtLyoqCj4gLSAqIGRwdV9ldnRsb2dfZHVtcF93cml0ZSAtIGRlYnVnZnMgd3JpdGUgaGFu ZGxlciBmb3IgZXZ0bG9nIGR1bXAKPiArICogZHB1X2RiZ19kdW1wX3dyaXRlIC0gZGVidWdmcyB3 cml0ZSBoYW5kbGVyIGZvciBkZWJ1ZyBkdW1wCj4gICAqIEBmaWxlOiBmaWxlIGhhbmRsZXIKPiAg ICogQHVzZXJfYnVmOiB1c2VyIGJ1ZmZlciBjb250ZW50IGZyb20gZGVidWdmcwo+ICAgKiBAY291 bnQ6IHNpemUgb2YgdXNlciBidWZmZXIKPiAgICogQHBwb3M6IHBvc2l0aW9uIG9mZnNldCBvZiB1 c2VyIGJ1ZmZlcgo+ICAgKi8KPiAtc3RhdGljIHNzaXplX3QgZHB1X2V2dGxvZ19kdW1wX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLAo+ICtzdGF0aWMgc3NpemVfdCBkcHVfZGJnX2R1bXBfd3JpdGUo c3RydWN0IGZpbGUgKmZpbGUsCj4gIAljb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsIHNpemVf dCBjb3VudCwgbG9mZl90ICpwcG9zKQo+ICB7Cj4gIAlfZHB1X2R1bXBfYXJyYXkoTlVMTCwgMCwg ZHB1X2RiZ19iYXNlLnBhbmljX29uX2VyciwgImR1bXBfZGVidWdmcyIsCj4gQEAgLTI2OTEsODYg KzI2NTQsOSBAQCBzdGF0aWMgc3NpemVfdCBkcHVfZXZ0bG9nX2R1bXBfd3JpdGUoc3RydWN0IGZp bGUgCj4gKmZpbGUsCj4gIAlyZXR1cm4gY291bnQ7Cj4gIH0KPiAKPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgZHB1X2V2dGxvZ19mb3BzID0gewo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkcHVfZGJnX2R1bXBfZm9wcyA9IHsKPiAgCS5vcGVuID0g ZHB1X2RiZ19kZWJ1Z2ZzX29wZW4sCj4gLQkucmVhZCA9IGRwdV9ldnRsb2dfZHVtcF9yZWFkLAo+ IC0JLndyaXRlID0gZHB1X2V2dGxvZ19kdW1wX3dyaXRlLAo+IC19Owo+IC0KPiAtLyoKPiAtICog ZHB1X2V2dGxvZ19maWx0ZXJfc2hvdyAtIHJlYWQgY2FsbGJhY2sgZm9yIGV2dGxvZyBmaWx0ZXIK PiAtICogQHM6IHBvaW50ZXIgdG8gc2VxX2ZpbGUgb2JqZWN0Cj4gLSAqIEBkYXRhOiBwb2ludGVy IHRvIHByaXZhdGUgZGF0YQo+IC0gKi8KPiAtc3RhdGljIGludCBkcHVfZXZ0bG9nX2ZpbHRlcl9z aG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKPiAtewo+IC0Jc3RydWN0IGRwdV9k YmdfZXZ0bG9nICpldnRsb2c7Cj4gLQljaGFyIGJ1ZmZlcls2NF07Cj4gLQlpbnQgaTsKPiAtCj4g LQlpZiAoIXMgfHwgIXMtPnByaXZhdGUpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JZXZ0 bG9nID0gcy0+cHJpdmF0ZTsKPiAtCj4gLQlmb3IgKGkgPSAwOyAhZHB1X2V2dGxvZ19nZXRfZmls dGVyKAo+IC0JCQkJZXZ0bG9nLCBpLCBidWZmZXIsIEFSUkFZX1NJWkUoYnVmZmVyKSk7ICsraSkK PiAtCQlzZXFfcHJpbnRmKHMsICIqJXMqXG4iLCBidWZmZXIpOwo+IC0JcmV0dXJuIDA7Cj4gLX0K PiAtCj4gLS8qCj4gLSAqIGRwdV9ldnRsb2dfZmlsdGVyX29wZW4gLSBkZWJ1Z2ZzIG9wZW4gaGFu ZGxlciBmb3IgZXZ0bG9nIGZpbHRlcgo+IC0gKiBAaW5vZGU6IGRlYnVnZnMgaW5vZGUKPiAtICog QGZpbGU6IGZpbGUgaGFuZGxlCj4gLSAqIFJldHVybnM6IHplcm8gb24gc3VjY2Vzcwo+IC0gKi8K PiAtc3RhdGljIGludCBkcHVfZXZ0bG9nX2ZpbHRlcl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmaWxlIAo+ICpmaWxlKQo+IC17Cj4gLQlpZiAoIWZpbGUpCj4gLQkJcmV0dXJuIC1F SU5WQUw7Cj4gLQo+IC0JcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGRwdV9ldnRsb2dfZmlsdGVy X3Nob3csIGlub2RlLT5pX3ByaXZhdGUpOwo+IC19Cj4gLQo+IC0vKgo+IC0gKiBkcHVfZXZ0bG9n X2ZpbHRlcl93cml0ZSAtIHdyaXRlIGNhbGxiYWNrIGZvciBldnRsb2cgZmlsdGVyCj4gLSAqIEBm aWxlOiBwb2ludGVyIHRvIGZpbGUgc3RydWN0dXJlCj4gLSAqIEB1c2VyX2J1ZjogcG9pbnRlciB0 byBpbmNvbWluZyB1c2VyIGRhdGEKPiAtICogQGNvdW50OiBzaXplIG9mIGluY29taW5nIHVzZXIg YnVmZmVyCj4gLSAqIEBwcG9zOiBwb2ludGVyIHRvIGZpbGUgb2Zmc2V0Cj4gLSAqLwo+IC1zdGF0 aWMgc3NpemVfdCBkcHVfZXZ0bG9nX2ZpbHRlcl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAt CWNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3Mp Cj4gLXsKPiAtCWNoYXIgKnRtcF9maWx0ZXIgPSBOVUxMOwo+IC0Jc3NpemVfdCByYyA9IDA7Cj4g LQo+IC0JaWYgKGNvdW50ID4gMCkgewo+IC0JCS8qIGNvcHkgdXNlciBwcm92aWRlZCBzdHJpbmcg YW5kIG51bGwgdGVybWluYXRlIGl0ICovCj4gLQkJdG1wX2ZpbHRlciA9IGt6YWxsb2MoY291bnQg KyAxLCBHRlBfS0VSTkVMKTsKPiAtCQlpZiAoIXRtcF9maWx0ZXIpCj4gLQkJCXJjID0gLUVOT01F TTsKPiAtCQllbHNlIGlmIChjb3B5X2Zyb21fdXNlcih0bXBfZmlsdGVyLCB1c2VyX2J1ZiwgY291 bnQpKQo+IC0JCQlyYyA9IC1FRkFVTFQ7Cj4gLQl9Cj4gLQo+IC0JLyogdXBkYXRlIGFjdHVhbCBm aWx0ZXIgY29uZmlndXJhdGlvbiBvbiBzdWNjZXNzICovCj4gLQlpZiAoIXJjKSB7Cj4gLQkJZHB1 X2V2dGxvZ19zZXRfZmlsdGVyKGRwdV9kYmdfYmFzZS5ldnRsb2csIHRtcF9maWx0ZXIpOwo+IC0J CXJjID0gY291bnQ7Cj4gLQl9Cj4gLQlrZnJlZSh0bXBfZmlsdGVyKTsKPiAtCj4gLQlyZXR1cm4g cmM7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRwdV9l dnRsb2dfZmlsdGVyX2ZvcHMgPSB7Cj4gLQkub3BlbiA9CQlkcHVfZXZ0bG9nX2ZpbHRlcl9vcGVu LAo+IC0JLndyaXRlID0JZHB1X2V2dGxvZ19maWx0ZXJfd3JpdGUsCj4gLQkucmVhZCA9CQlzZXFf cmVhZCwKPiAtCS5sbHNlZWsgPQlzZXFfbHNlZWssCj4gLQkucmVsZWFzZSA9CXNlcV9yZWxlYXNl Cj4gKwkud3JpdGUgPSBkcHVfZGJnX2R1bXBfd3JpdGUsCj4gIH07Cj4gCj4gIC8qKgo+IEBAIC0z MDE4LDEyICsyOTA0LDcgQEAgaW50IGRwdV9kYmdfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgZGVu dHJ5IAo+ICpkZWJ1Z2ZzX3Jvb3QpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gCj4gIAlkZWJ1Z2Zz X2NyZWF0ZV9maWxlKCJkdW1wIiwgMDYwMCwgZGVidWdmc19yb290LCBOVUxMLAo+IC0JCQkmZHB1 X2V2dGxvZ19mb3BzKTsKPiAtCWRlYnVnZnNfY3JlYXRlX3UzMigiZW5hYmxlIiwgMDYwMCwgZGVi dWdmc19yb290LAo+IC0JCQkmKGRwdV9kYmdfYmFzZS5ldnRsb2ctPmVuYWJsZSkpOwo+IC0JZGVi dWdmc19jcmVhdGVfZmlsZSgiZmlsdGVyIiwgMDYwMCwgZGVidWdmc19yb290LAo+IC0JCQlkcHVf ZGJnX2Jhc2UuZXZ0bG9nLAo+IC0JCQkmZHB1X2V2dGxvZ19maWx0ZXJfZm9wcyk7Cj4gKwkJCSZk cHVfZGJnX2R1bXBfZm9wcyk7Cj4gIAlkZWJ1Z2ZzX2NyZWF0ZV91MzIoInBhbmljIiwgMDYwMCwg ZGVidWdmc19yb290LAo+ICAJCQkmZHB1X2RiZ19iYXNlLnBhbmljX29uX2Vycik7Cj4gIAlkZWJ1 Z2ZzX2NyZWF0ZV91MzIoInJlZ19kdW1wIiwgMDYwMCwgZGVidWdmc19yb290LAo+IEBAIC0zMTA2 LDE5ICsyOTg3LDEyIEBAIGludCBkcHVfZGJnX2luaXQoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJ SU5JVF9MSVNUX0hFQUQoJmRwdV9kYmdfYmFzZS5yZWdfYmFzZV9saXN0KTsKPiAgCWRwdV9kYmdf YmFzZS5kZXYgPSBkZXY7Cj4gCj4gLQlkcHVfZGJnX2Jhc2UuZXZ0bG9nID0gZHB1X2V2dGxvZ19p bml0KCk7Cj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZHB1X2RiZ19iYXNlLmV2dGxvZykpCj4gLQkJ cmV0dXJuIFBUUl9FUlIoZHB1X2RiZ19iYXNlLmV2dGxvZyk7Cj4gLQo+IC0JZHB1X2RiZ19iYXNl X2V2dGxvZyA9IGRwdV9kYmdfYmFzZS5ldnRsb2c7Cj4gLQo+ICAJSU5JVF9XT1JLKCZkcHVfZGJn X2Jhc2UuZHVtcF93b3JrLCBfZHB1X2R1bXBfd29yayk7Cj4gIAlkcHVfZGJnX2Jhc2Uud29ya19w YW5pYyA9IGZhbHNlOwo+ICAJZHB1X2RiZ19iYXNlLnBhbmljX29uX2VyciA9IERFRkFVTFRfUEFO SUM7Cj4gIAlkcHVfZGJnX2Jhc2UuZW5hYmxlX3JlZ19kdW1wID0gREVGQVVMVF9SRUdEVU1QOwo+ IAo+IC0JcHJfaW5mbygiZXZ0bG9nX3N0YXR1czogZW5hYmxlOiVkLCBwYW5pYzolZCwgZHVtcDol ZFxuIiwKPiAtCQlkcHVfZGJnX2Jhc2UuZXZ0bG9nLT5lbmFibGUsIGRwdV9kYmdfYmFzZS5wYW5p Y19vbl9lcnIsCj4gKwlwcl9pbmZvKCJkZWJ1Z19zdGF0dXM6IHBhbmljOiVkLCBkdW1wOiVkXG4i LCAKPiBkcHVfZGJnX2Jhc2UucGFuaWNfb25fZXJyLAo+ICAJCWRwdV9kYmdfYmFzZS5lbmFibGVf cmVnX2R1bXApOwo+IAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTMxNTAsOSArMzAyNCw2IEBAIHN0YXRp YyB2b2lkIGRwdV9kYmdfcmVnX2Jhc2VfZGVzdHJveSh2b2lkKQo+ICB2b2lkIGRwdV9kYmdfZGVz dHJveSh2b2lkKQo+ICB7Cj4gIAlfZHB1X2RiZ19kZWJ1Z2ZzX2Rlc3Ryb3koKTsKPiAtCWRwdV9k YmdfYmFzZV9ldnRsb2cgPSBOVUxMOwo+IC0JZHB1X2V2dGxvZ19kZXN0cm95KGRwdV9kYmdfYmFz ZS5ldnRsb2cpOwo+IC0JZHB1X2RiZ19iYXNlLmV2dGxvZyA9IE5VTEw7Cj4gIAlkcHVfZGJnX3Jl Z19iYXNlX2Rlc3Ryb3koKTsKPiAgfQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2RwdV9kYmcuaCAKPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2RiZy5oCj4gaW5kZXgg MjgzZGJiYzAwNjkwLi4wNTJjNzhkNWI0ZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kcHVfZGJnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9kYmcuaAo+IEBA IC0xNywxMDkgKzE3LDExIEBACj4gICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4gICNpbmNs dWRlIDxsaW51eC9saXN0Lmg+Cj4gCj4gLSNkZWZpbmUgRFBVX0VWVExPR19EQVRBX0xJTUlURVIJ KC0xKQo+IC0jZGVmaW5lIERQVV9FVlRMT0dfRlVOQ19FTlRSWQkweDExMTEKPiAtI2RlZmluZSBE UFVfRVZUTE9HX0ZVTkNfRVhJVAkweDIyMjIKPiAtI2RlZmluZSBEUFVfRVZUTE9HX0ZVTkNfQ0FT RTEJMHgzMzMzCj4gLSNkZWZpbmUgRFBVX0VWVExPR19GVU5DX0NBU0UyCTB4NDQ0NAo+IC0jZGVm aW5lIERQVV9FVlRMT0dfRlVOQ19DQVNFMwkweDU1NTUKPiAtI2RlZmluZSBEUFVfRVZUTE9HX0ZV TkNfQ0FTRTQJMHg2NjY2Cj4gLSNkZWZpbmUgRFBVX0VWVExPR19GVU5DX0NBU0U1CTB4Nzc3Nwo+ IC0jZGVmaW5lIERQVV9FVlRMT0dfRlVOQ19DQVNFNgkweDg4ODgKPiAtI2RlZmluZSBEUFVfRVZU TE9HX0ZVTkNfQ0FTRTcJMHg5OTk5Cj4gLSNkZWZpbmUgRFBVX0VWVExPR19GVU5DX0NBU0U4CTB4 YWFhYQo+IC0jZGVmaW5lIERQVV9FVlRMT0dfRlVOQ19DQVNFOQkweGJiYmIKPiAtI2RlZmluZSBE UFVfRVZUTE9HX0ZVTkNfQ0FTRTEwCTB4Y2NjYwo+IC0jZGVmaW5lIERQVV9FVlRMT0dfUEFOSUMJ MHhkZWFkCj4gLSNkZWZpbmUgRFBVX0VWVExPR19GQVRBTAkweGJhZAo+IC0jZGVmaW5lIERQVV9F VlRMT0dfRVJST1IJMHhlYmFkCj4gLQo+IC0jZGVmaW5lIERQVV9EQkdfRFVNUF9EQVRBX0xJTUlU RVIgKE5VTEwpCj4gLQo+IC1lbnVtIGRwdV9kYmdfZXZ0bG9nX2ZsYWcgewo+IC0JRFBVX0VWVExP R19DUklUSUNBTCA9IEJJVCgwKSwKPiAtCURQVV9FVlRMT0dfSVJRID0gQklUKDEpLAo+IC0JRFBV X0VWVExPR19WRVJCT1NFID0gQklUKDIpLAo+IC0JRFBVX0VWVExPR19BTFdBWVMgPSAtMQo+IC19 Owo+IC0KPiAgZW51bSBkcHVfZGJnX2R1bXBfZmxhZyB7Cj4gIAlEUFVfREJHX0RVTVBfSU5fTE9H ID0gQklUKDApLAo+ICAJRFBVX0RCR19EVU1QX0lOX01FTSA9IEJJVCgxKSwKPiAgfTsKPiAKPiAt I2lmZGVmIENPTkZJR19EUk1fRFBVX0VWVExPR19ERUJVRwo+IC0jZGVmaW5lIERQVV9FVlRMT0df REVGQVVMVF9FTkFCTEUgKERQVV9FVlRMT0dfQ1JJVElDQUwgfCAKPiBEUFVfRVZUTE9HX0lSUSkK PiAtI2Vsc2UKPiAtI2RlZmluZSBEUFVfRVZUTE9HX0RFRkFVTFRfRU5BQkxFIDAKPiAtI2VuZGlm Cj4gLQo+IC0vKgo+IC0gKiBldnRsb2cgd2lsbCBwcmludCB0aGlzIG51bWJlciBvZiBlbnRyaWVz IHdoZW4gaXQgaXMgY2FsbGVkIHRocm91Z2gKPiAtICogc3lzZnMgbm9kZSBvciBwYW5pYy4gVGhp cyBwcmV2ZW50cyBrZXJuZWwgbG9nIGZyb20gZXZ0bG9nIG1lc3NhZ2UKPiAtICogZmxvb2QuCj4g LSAqLwo+IC0jZGVmaW5lIERQVV9FVlRMT0dfUFJJTlRfRU5UUlkJMjU2Cj4gLQo+IC0vKgo+IC0g KiBldnRsb2cga2VlcHMgdGhpcyBudW1iZXIgb2YgZW50cmllcyBpbiBtZW1vcnkgZm9yIGRlYnVn IHB1cnBvc2UuIAo+IFRoaXMKPiAtICogbnVtYmVyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHByaW50 IGVudHJ5IHRvIHByZXZlbnQgb3V0IG9mIGJvdW5kIAo+IGV2dGxvZwo+IC0gKiBlbnRyeSBhcnJh eSBhY2Nlc3MuCj4gLSAqLwo+IC0jZGVmaW5lIERQVV9FVlRMT0dfRU5UUlkJKERQVV9FVlRMT0df UFJJTlRfRU5UUlkgKiA0KQo+IC0jZGVmaW5lIERQVV9FVlRMT0dfTUFYX0RBVEEgMTUKPiAtI2Rl ZmluZSBEUFVfRVZUTE9HX0JVRl9NQVggNTEyCj4gLSNkZWZpbmUgRFBVX0VWVExPR19CVUZfQUxJ R04gMzIKPiAtCj4gLXN0cnVjdCBkcHVfZGJnX2V2dGxvZ19sb2cgewo+IC0JczY0IHRpbWU7Cj4g LQljb25zdCBjaGFyICpuYW1lOwo+IC0JaW50IGxpbmU7Cj4gLQl1MzIgZGF0YVtEUFVfRVZUTE9H X01BWF9EQVRBXTsKPiAtCXUzMiBkYXRhX2NudDsKPiAtCWludCBwaWQ7Cj4gLX07Cj4gLQo+IC0v KioKPiAtICogQGZpbHRlcl9saXN0OiBMaW5rZWQgbGlzdCBvZiBjdXJyZW50bHkgYWN0aXZlIGZp bHRlciBzdHJpbmdzCj4gLSAqLwo+IC1zdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgewo+IC0Jc3RydWN0 IGRwdV9kYmdfZXZ0bG9nX2xvZyBsb2dzW0RQVV9FVlRMT0dfRU5UUlldOwo+IC0JdTMyIGZpcnN0 Owo+IC0JdTMyIGxhc3Q7Cj4gLQl1MzIgY3VycjsKPiAtCXUzMiBuZXh0Owo+IC0JdTMyIGVuYWJs ZTsKPiAtCXNwaW5sb2NrX3Qgc3Bpbl9sb2NrOwo+IC0Jc3RydWN0IGxpc3RfaGVhZCBmaWx0ZXJf bGlzdDsKPiAtfTsKPiAtCj4gLWV4dGVybiBzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmRwdV9kYmdf YmFzZV9ldnRsb2c7Cj4gLQo+IC0vKioKPiAtICogRFBVX0VWVDMyIC0gV3JpdGUgYSBsaXN0IG9m IDMyYml0IHZhbHVlcyB0byB0aGUgZXZlbnQgbG9nLCBkZWZhdWx0IAo+IGFyZWEKPiAtICogLi4u IC0gdmFyaWFibGUgYXJndW1lbnRzCj4gLSAqLwo+IC0jZGVmaW5lIERQVV9FVlQzMiguLi4pIGRw dV9ldnRsb2dfbG9nKGRwdV9kYmdfYmFzZV9ldnRsb2csIF9fZnVuY19fLCBcCj4gLQkJX19MSU5F X18sIERQVV9FVlRMT0dfQUxXQVlTLCAjI19fVkFfQVJHU19fLCBcCj4gLQkJRFBVX0VWVExPR19E QVRBX0xJTUlURVIpCj4gLQo+IC0vKioKPiAtICogRFBVX0VWVDMyX1ZFUkJPU0UgLSBXcml0ZSBh IGxpc3Qgb2YgMzJiaXQgdmFsdWVzIGZvciB2ZXJib3NlIGV2ZW50IAo+IGxvZ2dpbmcKPiAtICog Li4uIC0gdmFyaWFibGUgYXJndW1lbnRzCj4gLSAqLwo+IC0jZGVmaW5lIERQVV9FVlQzMl9WRVJC T1NFKC4uLikgZHB1X2V2dGxvZ19sb2coZHB1X2RiZ19iYXNlX2V2dGxvZywgCj4gX19mdW5jX18s IFwKPiAtCQlfX0xJTkVfXywgRFBVX0VWVExPR19WRVJCT1NFLCAjI19fVkFfQVJHU19fLCBcCj4g LQkJRFBVX0VWVExPR19EQVRBX0xJTUlURVIpCj4gLQo+IC0vKioKPiAtICogRFBVX0VWVDMyX0lS USAtIFdyaXRlIGEgbGlzdCBvZiAzMmJpdCB2YWx1ZXMgdG8gdGhlIGV2ZW50IGxvZywgSVJRIAo+ IGFyZWEKPiAtICogLi4uIC0gdmFyaWFibGUgYXJndW1lbnRzCj4gLSAqLwo+IC0jZGVmaW5lIERQ VV9FVlQzMl9JUlEoLi4uKSBkcHVfZXZ0bG9nX2xvZyhkcHVfZGJnX2Jhc2VfZXZ0bG9nLCAKPiBf X2Z1bmNfXywgXAo+IC0JCV9fTElORV9fLCBEUFVfRVZUTE9HX0lSUSwgIyNfX1ZBX0FSR1NfXywg XAo+IC0JCURQVV9FVlRMT0dfREFUQV9MSU1JVEVSKQo+IC0KPiAgLyoqCj4gICAqIERQVV9EQkdf RFVNUCAtIHRyaWdnZXIgZHVtcGluZyBvZiBhbGwgZHB1X2RiZyBmYWNpbGl0aWVzCj4gICAqIEB2 YV9hcmdzOglsaXN0IG9mIG5hbWVkIHJlZ2lzdGVyIGR1bXAgcmFuZ2VzIGFuZCByZWdpb25zIHRv IGR1bXAsIAo+IGFzCj4gQEAgLTEyOCw3NCArMzAsMTAgQEAgZXh0ZXJuIHN0cnVjdCBkcHVfZGJn X2V2dGxvZyAqZHB1X2RiZ19iYXNlX2V2dGxvZzsKPiAgICoJCUluY2x1ZGluZyB0aGUgc3BlY2lh bCBuYW1lICJwYW5pYyIgd2lsbCB0cmlnZ2VyIGEgcGFuaWMgYWZ0ZXIKPiAgICoJCXRoZSBkdW1w aW5nIHdvcmsgaGFzIGNvbXBsZXRlZC4KPiAgICovCj4gLSNkZWZpbmUgRFBVX0RCR19EVU1QKC4u LikgZHB1X2RiZ19kdW1wKGZhbHNlLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXywgCj4gXAo+IC0J CURQVV9EQkdfRFVNUF9EQVRBX0xJTUlURVIpCj4gLQo+IC0vKioKPiAtICogRFBVX0RCR19EVU1Q X1dRIC0gdHJpZ2dlciBkdW1waW5nIG9mIGFsbCBkcHVfZGJnIGZhY2lsaXRpZXMsCj4gcXVldWlu ZyB0aGUgd29yawo+IC0gKiBAdmFfYXJnczoJbGlzdCBvZiBuYW1lZCByZWdpc3RlciBkdW1wIHJh bmdlcyBhbmQgcmVnaW9ucyB0byBkdW1wLCAKPiBhcwo+IC0gKgkJcmVnaXN0ZXJlZCBwcmV2aW91 c2x5IHRocm91Z2ggZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFzZSBhbmQKPiAtICoJCWRwdV9kYmdf cmVnX3JlZ2lzdGVyX2R1bXBfcmFuZ2UuCj4gLSAqCQlJbmNsdWRpbmcgdGhlIHNwZWNpYWwgbmFt ZSAicGFuaWMiIHdpbGwgdHJpZ2dlciBhIHBhbmljIGFmdGVyCj4gLSAqCQl0aGUgZHVtcGluZyB3 b3JrIGhhcyBjb21wbGV0ZWQuCj4gLSAqLwo+IC0jZGVmaW5lIERQVV9EQkdfRFVNUF9XUSguLi4p IGRwdV9kYmdfZHVtcCh0cnVlLCBfX2Z1bmNfXywgCj4gIyNfX1ZBX0FSR1NfXywgXAo+IC0JCURQ VV9EQkdfRFVNUF9EQVRBX0xJTUlURVIpCj4gKyNkZWZpbmUgRFBVX0RCR19EVU1QKC4uLikgZHB1 X2RiZ19kdW1wKGZhbHNlLCBfX2Z1bmNfXywgIyNfX1ZBX0FSR1NfXywgCj4gTlVMTCkKPiAKPiAg I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQo+IAo+IC0vKioKPiAtICogZHB1X2V2dGxvZ19p bml0IC0gYWxsb2NhdGUgYSBuZXcgZXZlbnQgbG9nIG9iamVjdAo+IC0gKiBSZXR1cm5zOglldnRs b2cgb3IgLUVSUk9SCj4gLSAqLwo+IC1zdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmRwdV9ldnRsb2df aW5pdCh2b2lkKTsKPiAtCj4gLS8qKgo+IC0gKiBkcHVfZXZ0bG9nX2Rlc3Ryb3kgLSBkZXN0cm95 IHByZXZpb3VzbHkgYWxsb2NhdGVkIGV2ZW50IGxvZwo+IC0gKiBAZXZ0bG9nOglwb2ludGVyIHRv IGV2dGxvZwo+IC0gKiBSZXR1cm5zOglub25lCj4gLSAqLwo+IC12b2lkIGRwdV9ldnRsb2dfZGVz dHJveShzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmV2dGxvZyk7Cj4gLQo+IC0vKioKPiAtICogZHB1 X2V2dGxvZ19sb2cgLSBsb2cgYW4gZW50cnkgaW50byB0aGUgZXZlbnQgbG9nLgo+IC0gKglsb2cg Y29sbGVjdGlvbiBtYXkgYmUgZW5hYmxlZC9kaXNhYmxlZCBlbnRpcmVseSB2aWEgZGVidWdmcwo+ IC0gKglsb2cgYXJlYSBjb2xsZWN0aW9uIG1heSBiZSBmaWx0ZXJlZCBieSB1c2VyIHByb3ZpZGVk IGZsYWdzIHZpYSAKPiBkZWJ1Z2ZzLgo+IC0gKiBAZXZ0bG9nOglwb2ludGVyIHRvIGV2dGxvZwo+ IC0gKiBAbmFtZToJZnVuY3Rpb24gbmFtZSBvZiBjYWxsIHNpdGUKPiAtICogQGxpbmU6CWxpbmUg bnVtYmVyIG9mIGNhbGwgc2l0ZQo+IC0gKiBAZmxhZzoJbG9nIGFyZWEgZmlsdGVyIGZsYWcgY2hl Y2tlZCBhZ2FpbnN0IHVzZXIncyBkZWJ1Z2ZzIHJlcXVlc3QKPiAtICogUmV0dXJuczoJbm9uZQo+ IC0gKi8KPiAtdm9pZCBkcHVfZXZ0bG9nX2xvZyhzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmV2dGxv ZywgY29uc3QgY2hhciAqbmFtZSwgCj4gaW50IGxpbmUsCj4gLQkJaW50IGZsYWcsIC4uLik7Cj4g LQo+IC0vKioKPiAtICogZHB1X2V2dGxvZ19kdW1wX2FsbCAtIHByaW50IGFsbCBlbnRyaWVzIGlu IGV2ZW50IGxvZyB0byBrZXJuZWwgbG9nCj4gLSAqIEBldnRsb2c6CXBvaW50ZXIgdG8gZXZ0bG9n Cj4gLSAqIFJldHVybnM6CW5vbmUKPiAtICovCj4gLXZvaWQgZHB1X2V2dGxvZ19kdW1wX2FsbChz dHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmV2dGxvZyk7Cj4gLQo+IC0vKioKPiAtICogZHB1X2V2dGxv Z19pc19lbmFibGVkIC0gY2hlY2sgd2hldGhlciBsb2cgY29sbGVjdGlvbiBpcyBlbmFibGVkIGZv ciAKPiBnaXZlbgo+IC0gKglldmVudCBsb2cgYW5kIGxvZyBhcmVhIGZsYWcKPiAtICogQGV2dGxv ZzoJcG9pbnRlciB0byBldnRsb2cKPiAtICogQGZsYWc6CWxvZyBhcmVhIGZpbHRlciBmbGFnCj4g LSAqIFJldHVybnM6CW5vbmUKPiAtICovCj4gLWJvb2wgZHB1X2V2dGxvZ19pc19lbmFibGVkKHN0 cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0bG9nLCB1MzIgZmxhZyk7Cj4gLQo+IC0vKioKPiAtICog ZHB1X2V2dGxvZ19kdW1wX3RvX2J1ZmZlciAtIHByaW50IGNvbnRlbnQgb2YgZXZlbnQgbG9nIHRv IHRoZSBnaXZlbiAKPiBidWZmZXIKPiAtICogQGV2dGxvZzoJCXBvaW50ZXIgdG8gZXZ0bG9nCj4g LSAqIEBldnRsb2dfYnVmOgkJdGFyZ2V0IGJ1ZmZlciB0byBwcmludCBpbnRvCj4gLSAqIEBldnRs b2dfYnVmX3NpemU6CXNpemUgb2YgdGFyZ2V0IGJ1ZmZlcgo+IC0gKiBSZXR1cm5zOgkJbnVtYmVy IG9mIGJ5dGVzIHdyaXR0ZW4gdG8gYnVmZmVyCj4gLSAqLwo+IC1zc2l6ZV90IGRwdV9ldnRsb2df ZHVtcF90b19idWZmZXIoc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpldnRsb2csCj4gLQkJY2hhciAq ZXZ0bG9nX2J1Ziwgc3NpemVfdCBldnRsb2dfYnVmX3NpemUpOwo+IC0KPiAgLyoqCj4gICAqIGRw dV9kYmdfaW5pdF9kYmdfYnVzZXMgLSBpbml0aWFsaXplIGRlYnVnIGJ1cyBkdW1waW5nIHN1cHBv cnQgZm9yCj4gdGhlIGNoaXBzZXQKPiAgICogQGh3dmVyc2lvbjoJCUNoaXBzZXQgcmV2aXNpb24K PiBAQCAtMjAzLDcgKzQxLDcgQEAgc3NpemVfdCBkcHVfZXZ0bG9nX2R1bXBfdG9fYnVmZmVyKHN0 cnVjdAo+IGRwdV9kYmdfZXZ0bG9nICpldnRsb2csCj4gIHZvaWQgZHB1X2RiZ19pbml0X2RiZ19i dXNlcyh1MzIgaHd2ZXJzaW9uKTsKPiAKPiAgLyoqCj4gLSAqIGRwdV9kYmdfaW5pdCAtIGluaXRp YWxpemUgZ2xvYmFsIGRwdSBkZWJ1ZyBmYWNpbGl0aWVzOiBldnRsb2csIAo+IHJlZ2R1bXAKPiAr ICogZHB1X2RiZ19pbml0IC0gaW5pdGlhbGl6ZSBnbG9iYWwgZHB1IGRlYnVnIGZhY2lsaXRpZXM6 IHJlZ2R1bXAKPiAgICogQGRldjoJCWRldmljZSBoYW5kbGUKPiAgICogUmV0dXJuczoJCTAgb3Ig LUVSUk9SCj4gICAqLwo+IEBAIC0yODksMjQgKzEyNyw2IEBAIHZvaWQgZHB1X2RiZ19yZWdfcmVn aXN0ZXJfZHVtcF9yYW5nZShjb25zdCBjaGFyIAo+ICpiYXNlX25hbWUsCj4gICAqLwo+ICB2b2lk IGRwdV9kYmdfc2V0X2RwdV90b3Bfb2Zmc2V0KHUzMiBibGtfb2ZmKTsKPiAKPiAtLyoqCj4gLSAq IGRwdV9ldnRsb2dfc2V0X2ZpbHRlciAtIHVwZGF0ZSBldnRsb2cgZmlsdGVyaW5nCj4gLSAqIEBl dnRsb2c6CXBvaW50ZXIgdG8gZXZ0bG9nCj4gLSAqIEBmaWx0ZXI6ICAgICBwb2ludGVyIHRvIG9w dGlvbmFsIGZ1bmN0aW9uIG5hbWUgZmlsdGVyLCBzZXQgdG8gTlVMTAo+IHRvIGRpc2FibGUKPiAt ICovCj4gLXZvaWQgZHB1X2V2dGxvZ19zZXRfZmlsdGVyKHN0cnVjdCBkcHVfZGJnX2V2dGxvZyAq ZXZ0bG9nLCBjaGFyIAo+ICpmaWx0ZXIpOwo+IC0KPiAtLyoqCj4gLSAqIGRwdV9ldnRsb2dfZ2V0 X2ZpbHRlciAtIHF1ZXJ5IGNvbmZpZ3VyZWQgZXZ0bG9nIGZpbHRlcnMKPiAtICogQGV2dGxvZzoJ cG9pbnRlciB0byBldnRsb2cKPiAtICogQGluZGV4OglmaWx0ZXIgaW5kZXggdG8gcmV0cmlldmUK PiAtICogQGJ1ZjoJcG9pbnRlciB0byBvdXRwdXQgZmlsdGVyIGJ1ZmZlcgo+IC0gKiBAYnVmc3o6 CXNpemUgb2Ygb3V0cHV0IGZpbHRlciBidWZmZXIKPiAtICogUmV0dXJuczoJemVybyBpZiBhIGZp bHRlciBzdHJpbmcgd2FzIHJldHVybmVkCj4gLSAqLwo+IC1pbnQgZHB1X2V2dGxvZ19nZXRfZmls dGVyKHN0cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0bG9nLCBpbnQgaW5kZXgsCj4gLQkJY2hhciAq YnVmLCBzaXplX3QgYnVmc3opOwo+IC0KPiAgLyoqCj4gICAqIGRzaV9jdHJsX2RlYnVnX2R1bXAg LSBkdW1wIGRzaSBkZWJ1ZyBkdW1wIHN0YXR1cwo+ICAgKi8KPiBAQCAtMzE3LDM1ICsxMzcsNiBA QCBzdGF0aWMgaW5saW5lIHZvaWQgZHNpX2N0cmxfZGVidWdfZHVtcCh2b2lkKSB7fQo+ICAjZW5k aWYKPiAKPiAgI2Vsc2UKPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgKmRw dV9ldnRsb2dfaW5pdCh2b2lkKQo+IC17Cj4gLQlyZXR1cm4gTlVMTDsKPiAtfQo+IC0KPiAtc3Rh dGljIGlubGluZSB2b2lkIGRwdV9ldnRsb2dfZGVzdHJveShzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cg KmV2dGxvZykKPiAtewo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgZHB1X2V2dGxvZ19s b2coc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpldnRsb2csCj4gLQkJY29uc3QgY2hhciAqbmFtZSwg aW50IGxpbmUsIGludCBmbGFnLCAuLi4pCj4gLXsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2 b2lkIGRwdV9ldnRsb2dfZHVtcF9hbGwoc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpldnRsb2cpCj4g LXsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBib29sIGRwdV9ldnRsb2dfaXNfZW5hYmxlZChz dHJ1Y3QgZHB1X2RiZ19ldnRsb2cgCj4gKmV2dGxvZywKPiAtCQl1MzIgZmxhZykKPiAtewo+IC0J cmV0dXJuIGZhbHNlOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHNzaXplX3QgZHB1X2V2dGxv Z19kdW1wX3RvX2J1ZmZlcihzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cgCj4gKmV2dGxvZywKPiAtCQlj aGFyICpldnRsb2dfYnVmLCBzc2l6ZV90IGV2dGxvZ19idWZfc2l6ZSkKPiAtewo+IC0JcmV0dXJu IDA7Cj4gLX0KPiAKPiAgc3RhdGljIGlubGluZSB2b2lkIGRwdV9kYmdfaW5pdF9kYmdfYnVzZXMo dTMyIGh3dmVyc2lvbikKPiAgewo+IEBAIC0zODUsMTcgKzE3Niw2IEBAIHZvaWQgZHB1X2RiZ19z ZXRfZHB1X3RvcF9vZmZzZXQodTMyIGJsa19vZmYpCj4gIHsKPiAgfQo+IAo+IC1zdGF0aWMgaW5s aW5lIHZvaWQgZHB1X2V2dGxvZ19zZXRfZmlsdGVyKAo+IC0JCXN0cnVjdCBkcHVfZGJnX2V2dGxv ZyAqZXZ0bG9nLCBjaGFyICpmaWx0ZXIpCj4gLXsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBp bnQgZHB1X2V2dGxvZ19nZXRfZmlsdGVyKHN0cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0bG9nLAo+ IC0JCWludCBpbmRleCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCj4gLXsKPiAtCXJldHVybiAt RUlOVkFMOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgZHNpX2N0cmxfZGVidWdfZHVt cCh2b2lkKQo+ICB7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVf ZGJnX2V2dGxvZy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9kYmdfZXZ0bG9nLmMKPiBk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBlZjEzMmMwMTVhN2UuLjAwMDAwMDAwMDAw MAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2RiZ19ldnRsb2cuYwo+ICsrKyAvZGV2 L251bGwKPiBAQCAtMSwzMDYgKzAsMCBAQAo+IC0vKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAxOCwg VGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gLSAqCj4gLSAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgCj4gbW9kaWZ5Cj4gLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAo+IC0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiAtICoKPiAtICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAtICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPiAtICovCj4gLQo+IC0jZGVmaW5lIHByX2ZtdChmbXQpCSJkcHVf ZGJnOlslc10gIiBmbXQsIF9fZnVuY19fCj4gLQo+IC0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4K PiAtI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9rdGltZS5o Pgo+IC0jaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgo+IC0jaW5jbHVkZSA8bGludXgvdWFjY2Vz cy5oPgo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+IC0jaW5jbHVkZSA8bGludXgvc2xh Yi5oPgo+IC0KPiAtI2luY2x1ZGUgImRwdV9kYmcuaCIKPiAtI2luY2x1ZGUgImRwdV90cmFjZS5o Igo+IC0KPiAtI2RlZmluZSBEUFVfRVZUTE9HX0ZJTFRFUl9TVFJTSVpFCTY0Cj4gLQo+IC1zdHJ1 Y3QgZHB1X2V2dGxvZ19maWx0ZXIgewo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IC0JY2hh ciBmaWx0ZXJbRFBVX0VWVExPR19GSUxURVJfU1RSU0laRV07Cj4gLX07Cj4gLQo+IC1zdGF0aWMg Ym9vbCBfZHB1X2V2dGxvZ19pc19maWx0ZXJlZF9ub19sb2NrKAo+IC0JCXN0cnVjdCBkcHVfZGJn X2V2dGxvZyAqZXZ0bG9nLCBjb25zdCBjaGFyICpzdHIpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZXZ0 bG9nX2ZpbHRlciAqZmlsdGVyX25vZGU7Cj4gLQlib29sIHJjOwo+IC0KPiAtCWlmICghc3RyKQo+ IC0JCXJldHVybiB0cnVlOwo+IC0KPiAtCS8qCj4gLQkgKiBGaWx0ZXIgdGhlIGluY29taW5nIHN0 cmluZyBJRkYgdGhlIGxpc3QgaXMgbm90IGVtcHR5IEFORAo+IC0JICogYSBtYXRjaGluZyBlbnRy eSBpcyBub3QgaW4gdGhlIGxpc3QuCj4gLQkgKi8KPiAtCXJjID0gIWxpc3RfZW1wdHkoJmV2dGxv Zy0+ZmlsdGVyX2xpc3QpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShmaWx0ZXJfbm9kZSwgJmV2 dGxvZy0+ZmlsdGVyX2xpc3QsIGxpc3QpCj4gLQkJaWYgKHN0cm5zdHIoc3RyLCBmaWx0ZXJfbm9k ZS0+ZmlsdGVyLAo+IC0JCQkJCURQVV9FVlRMT0dfRklMVEVSX1NUUlNJWkUgLSAxKSkgewo+IC0J CQlyYyA9IGZhbHNlOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+IC0JcmV0dXJuIHJjOwo+IC19 Cj4gLQo+IC1ib29sIGRwdV9ldnRsb2dfaXNfZW5hYmxlZChzdHJ1Y3QgZHB1X2RiZ19ldnRsb2cg KmV2dGxvZywgdTMyIGZsYWcpCj4gLXsKPiAtCXJldHVybiBldnRsb2cgJiYgKGV2dGxvZy0+ZW5h YmxlICYgZmxhZyk7Cj4gLX0KPiAtCj4gLXZvaWQgZHB1X2V2dGxvZ19sb2coc3RydWN0IGRwdV9k YmdfZXZ0bG9nICpldnRsb2csIGNvbnN0IGNoYXIgKm5hbWUsIAo+IGludCBsaW5lLAo+IC0JCWlu dCBmbGFnLCAuLi4pCj4gLXsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQlpbnQgaSwgdmFs ID0gMDsKPiAtCXZhX2xpc3QgYXJnczsKPiAtCXN0cnVjdCBkcHVfZGJnX2V2dGxvZ19sb2cgKmxv ZzsKPiAtCj4gLQlpZiAoIWV2dGxvZykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKCFkcHVfZXZ0 bG9nX2lzX2VuYWJsZWQoZXZ0bG9nLCBmbGFnKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0Jc3Bpbl9s b2NrX2lycXNhdmUoJmV2dGxvZy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JaWYgKF9kcHVf ZXZ0bG9nX2lzX2ZpbHRlcmVkX25vX2xvY2soZXZ0bG9nLCBuYW1lKSkKPiAtCQlnb3RvIGV4aXQ7 Cj4gLQo+IC0JbG9nID0gJmV2dGxvZy0+bG9nc1tldnRsb2ctPmN1cnJdOwo+IC0JbG9nLT50aW1l ID0ga3RpbWVfdG9fdXMoa3RpbWVfZ2V0KCkpOwo+IC0JbG9nLT5uYW1lID0gbmFtZTsKPiAtCWxv Zy0+bGluZSA9IGxpbmU7Cj4gLQlsb2ctPmRhdGFfY250ID0gMDsKPiAtCWxvZy0+cGlkID0gY3Vy cmVudC0+cGlkOwo+IC0KPiAtCXZhX3N0YXJ0KGFyZ3MsIGZsYWcpOwo+IC0JZm9yIChpID0gMDsg aSA8IERQVV9FVlRMT0dfTUFYX0RBVEE7IGkrKykgewo+IC0KPiAtCQl2YWwgPSB2YV9hcmcoYXJn cywgaW50KTsKPiAtCQlpZiAodmFsID09IERQVV9FVlRMT0dfREFUQV9MSU1JVEVSKQo+IC0JCQli cmVhazsKPiAtCj4gLQkJbG9nLT5kYXRhW2ldID0gdmFsOwo+IC0JfQo+IC0JdmFfZW5kKGFyZ3Mp Owo+IC0JbG9nLT5kYXRhX2NudCA9IGk7Cj4gLQlldnRsb2ctPmN1cnIgPSAoZXZ0bG9nLT5jdXJy ICsgMSkgJSBEUFVfRVZUTE9HX0VOVFJZOwo+IC0JZXZ0bG9nLT5sYXN0Kys7Cj4gLQo+IC0JdHJh Y2VfZHB1X2V2dGxvZyhuYW1lLCBsaW5lLCBsb2ctPmRhdGFfY250LCBsb2ctPmRhdGEpOwo+IC1l eGl0Ogo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZXZ0bG9nLT5zcGluX2xvY2ssIGZsYWdz KTsKPiAtfQo+IC0KPiAtLyogYWx3YXlzIGR1bXAgdGhlIGxhc3QgZW50cmllcyB3aGljaCBhcmUg bm90IGR1bXBlZCB5ZXQgKi8KPiAtc3RhdGljIGJvb2wgX2RwdV9ldnRsb2dfZHVtcF9jYWxjX3Jh bmdlKHN0cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0bG9nKQo+IC17Cj4gLQlpZiAoIWV2dGxvZykK PiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0JZXZ0bG9nLT5maXJzdCA9IGV2dGxvZy0+bmV4dDsK PiAtCj4gLQlpZiAoZXZ0bG9nLT5sYXN0ID09IGV2dGxvZy0+Zmlyc3QpCj4gLQkJcmV0dXJuIGZh bHNlOwo+IC0KPiAtCWlmIChldnRsb2ctPmxhc3QgPCBldnRsb2ctPmZpcnN0KSB7Cj4gLQkJZXZ0 bG9nLT5maXJzdCAlPSBEUFVfRVZUTE9HX0VOVFJZOwo+IC0JCWlmIChldnRsb2ctPmxhc3QgPCBl dnRsb2ctPmZpcnN0KQo+IC0JCQlldnRsb2ctPmxhc3QgKz0gRFBVX0VWVExPR19FTlRSWTsKPiAt CX0KPiAtCj4gLQlpZiAoKGV2dGxvZy0+bGFzdCAtIGV2dGxvZy0+Zmlyc3QpID4gRFBVX0VWVExP R19QUklOVF9FTlRSWSkgewo+IC0JCXByX2luZm8oImV2dGxvZyBza2lwcGluZyAlZCBlbnRyaWVz LCBsYXN0PSVkXG4iLAo+IC0JCQlldnRsb2ctPmxhc3QgLSBldnRsb2ctPmZpcnN0IC0gRFBVX0VW VExPR19QUklOVF9FTlRSWSwKPiAtCQkJZXZ0bG9nLT5sYXN0IC0gMSk7Cj4gLQkJZXZ0bG9nLT5m aXJzdCA9IGV2dGxvZy0+bGFzdCAtIERQVV9FVlRMT0dfUFJJTlRfRU5UUlk7Cj4gLQl9Cj4gLQll dnRsb2ctPm5leHQgPSBldnRsb2ctPmZpcnN0ICsgMTsKPiAtCj4gLQlyZXR1cm4gdHJ1ZTsKPiAt fQo+IC0KPiAtc3NpemVfdCBkcHVfZXZ0bG9nX2R1bXBfdG9fYnVmZmVyKHN0cnVjdCBkcHVfZGJn X2V2dGxvZyAqZXZ0bG9nLAo+IC0JCWNoYXIgKmV2dGxvZ19idWYsIHNzaXplX3QgZXZ0bG9nX2J1 Zl9zaXplKQo+IC17Cj4gLQlpbnQgaTsKPiAtCXNzaXplX3Qgb2ZmID0gMDsKPiAtCXN0cnVjdCBk cHVfZGJnX2V2dGxvZ19sb2cgKmxvZywgKnByZXZfbG9nOwo+IC0JdW5zaWduZWQgbG9uZyBmbGFn czsKPiAtCj4gLQlpZiAoIWV2dGxvZyB8fCAhZXZ0bG9nX2J1ZikKPiAtCQlyZXR1cm4gMDsKPiAt Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZXZ0bG9nLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAtCj4g LQkvKiB1cGRhdGUgbWFya2VycywgZXhpdCBpZiBub3RoaW5nIHRvIHByaW50ICovCj4gLQlpZiAo IV9kcHVfZXZ0bG9nX2R1bXBfY2FsY19yYW5nZShldnRsb2cpKQo+IC0JCWdvdG8gZXhpdDsKPiAt Cj4gLQlsb2cgPSAmZXZ0bG9nLT5sb2dzW2V2dGxvZy0+Zmlyc3QgJSBEUFVfRVZUTE9HX0VOVFJZ XTsKPiAtCj4gLQlwcmV2X2xvZyA9ICZldnRsb2ctPmxvZ3NbKGV2dGxvZy0+Zmlyc3QgLSAxKSAl IERQVV9FVlRMT0dfRU5UUlldOwo+IC0KPiAtCW9mZiA9IHNucHJpbnRmKChldnRsb2dfYnVmICsg b2ZmKSwgKGV2dGxvZ19idWZfc2l6ZSAtIG9mZiksIAo+ICIlczolLTRkIiwKPiAtCQlsb2ctPm5h bWUsIGxvZy0+bGluZSk7Cj4gLQo+IC0JaWYgKG9mZiA8IERQVV9FVlRMT0dfQlVGX0FMSUdOKSB7 Cj4gLQkJbWVtc2V0KChldnRsb2dfYnVmICsgb2ZmKSwgMHgyMCwgKERQVV9FVlRMT0dfQlVGX0FM SUdOIC0gb2ZmKSk7Cj4gLQkJb2ZmID0gRFBVX0VWVExPR19CVUZfQUxJR047Cj4gLQl9Cj4gLQo+ IC0Jb2ZmICs9IHNucHJpbnRmKChldnRsb2dfYnVmICsgb2ZmKSwgKGV2dGxvZ19idWZfc2l6ZSAt IG9mZiksCj4gLQkJIj0+WyUtOGQ6JS0xMWxsdTolOWxsdV1bJS00ZF06IiwgZXZ0bG9nLT5maXJz dCwKPiAtCQlsb2ctPnRpbWUsIChsb2ctPnRpbWUgLSBwcmV2X2xvZy0+dGltZSksIGxvZy0+cGlk KTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgbG9nLT5kYXRhX2NudDsgaSsrKQo+IC0JCW9mZiAr PSBzbnByaW50ZigoZXZ0bG9nX2J1ZiArIG9mZiksIChldnRsb2dfYnVmX3NpemUgLSBvZmYpLAo+ IC0JCQkiJXggIiwgbG9nLT5kYXRhW2ldKTsKPiAtCj4gLQlvZmYgKz0gc25wcmludGYoKGV2dGxv Z19idWYgKyBvZmYpLCAoZXZ0bG9nX2J1Zl9zaXplIC0gb2ZmKSwgIlxuIik7Cj4gLWV4aXQ6Cj4g LQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZldnRsb2ctPnNwaW5fbG9jaywgZmxhZ3MpOwo+IC0K PiAtCXJldHVybiBvZmY7Cj4gLX0KPiAtCj4gLXZvaWQgZHB1X2V2dGxvZ19kdW1wX2FsbChzdHJ1 Y3QgZHB1X2RiZ19ldnRsb2cgKmV2dGxvZykKPiAtewo+IC0JY2hhciBidWZbRFBVX0VWVExPR19C VUZfTUFYXTsKPiAtCj4gLQlpZiAoIWV2dGxvZykKPiAtCQlyZXR1cm47Cj4gLQo+IC0Jd2hpbGUg KGRwdV9ldnRsb2dfZHVtcF90b19idWZmZXIoZXZ0bG9nLCBidWYsIHNpemVvZihidWYpKSkKPiAt CQlwcl9pbmZvKCIlcyIsIGJ1Zik7Cj4gLX0KPiAtCj4gLXN0cnVjdCBkcHVfZGJnX2V2dGxvZyAq ZHB1X2V2dGxvZ19pbml0KHZvaWQpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0 bG9nOwo+IC0KPiAtCWV2dGxvZyA9IGt6YWxsb2Moc2l6ZW9mKCpldnRsb2cpLCBHRlBfS0VSTkVM KTsKPiAtCWlmICghZXZ0bG9nKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IC0KPiAt CXNwaW5fbG9ja19pbml0KCZldnRsb2ctPnNwaW5fbG9jayk7Cj4gLQlldnRsb2ctPmVuYWJsZSA9 IERQVV9FVlRMT0dfREVGQVVMVF9FTkFCTEU7Cj4gLQo+IC0JSU5JVF9MSVNUX0hFQUQoJmV2dGxv Zy0+ZmlsdGVyX2xpc3QpOwo+IC0KPiAtCXJldHVybiBldnRsb2c7Cj4gLX0KPiAtCj4gLWludCBk cHVfZXZ0bG9nX2dldF9maWx0ZXIoc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpldnRsb2csIGludCBp bmRleCwKPiAtCQljaGFyICpidWYsIHNpemVfdCBidWZzeikKPiAtewo+IC0Jc3RydWN0IGRwdV9l dnRsb2dfZmlsdGVyICpmaWx0ZXJfbm9kZTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQlp bnQgcmMgPSAtRUZBVUxUOwo+IC0KPiAtCWlmICghZXZ0bG9nIHx8ICFidWYgfHwgIWJ1ZnN6IHx8 IGluZGV4IDwgMCkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZXZ0bG9nLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoZmls dGVyX25vZGUsICZldnRsb2ctPmZpbHRlcl9saXN0LCBsaXN0KSB7Cj4gLQkJaWYgKGluZGV4LS0p Cj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkvKiBkb24ndCBjYXJlIGFib3V0IHJldHVybiB2YWx1 ZSAqLwo+IC0JCSh2b2lkKXN0cmxjcHkoYnVmLCBmaWx0ZXJfbm9kZS0+ZmlsdGVyLCBidWZzeik7 Cj4gLQkJcmMgPSAwOwo+IC0JCWJyZWFrOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZXZ0bG9nLT5zcGluX2xvY2ssIGZsYWdzKTsKPiAtCj4gLQlyZXR1cm4gcmM7Cj4gLX0KPiAt Cj4gLXZvaWQgZHB1X2V2dGxvZ19zZXRfZmlsdGVyKHN0cnVjdCBkcHVfZGJnX2V2dGxvZyAqZXZ0 bG9nLCBjaGFyIAo+ICpmaWx0ZXIpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZXZ0bG9nX2ZpbHRlciAq ZmlsdGVyX25vZGUsICp0bXA7Cj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfbGlzdDsKPiAtCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQljaGFyICpmbHQ7Cj4gLQo+IC0JaWYgKCFldnRsb2cpCj4g LQkJcmV0dXJuOwo+IC0KPiAtCUlOSVRfTElTVF9IRUFEKCZmcmVlX2xpc3QpOwo+IC0KPiAtCS8q Cj4gLQkgKiBDbGVhciBhY3RpdmUgZmlsdGVyIGxpc3QgYW5kIGNhY2hlIGZpbHRlcl9ub2RlcyBs b2NhbGx5Cj4gLQkgKiB0byByZWR1Y2UgbWVtb3J5IGZyYWdtZW50YXRpb24uCj4gLQkgKi8KPiAt CXNwaW5fbG9ja19pcnFzYXZlKCZldnRsb2ctPnNwaW5fbG9jaywgZmxhZ3MpOwo+IC0JbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGZpbHRlcl9ub2RlLCB0bXAsICZldnRsb2ctPmZpbHRlcl9saXN0 LCAKPiBsaXN0KSB7Cj4gLQkJbGlzdF9kZWxfaW5pdCgmZmlsdGVyX25vZGUtPmxpc3QpOwo+IC0J CWxpc3RfYWRkX3RhaWwoJmZpbHRlcl9ub2RlLT5saXN0LCAmZnJlZV9saXN0KTsKPiAtCX0KPiAt CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmV2dGxvZy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4gLQo+ IC0JLyoKPiAtCSAqIFBhcnNlIGluY29taW5nIGZpbHRlciByZXF1ZXN0IHN0cmluZyBhbmQgYnVp bGQgdXAgYSBuZXcKPiAtCSAqIGZpbHRlciBsaXN0LiBOZXcgZmlsdGVyIG5vZGVzIGFyZSB0YWtl biBmcm9tIHRoZSBsb2NhbAo+IC0JICogZnJlZSBsaXN0LCBpZiBhdmFpbGFibGUsIGFuZCBhbGxv Y2F0ZWQgZnJvbSB0aGUgc3lzdGVtCj4gLQkgKiBoZWFwIG9uY2UgdGhlIGZyZWUgbGlzdCBpcyBl bXB0eS4KPiAtCSAqLwo+IC0Jd2hpbGUgKGZpbHRlciAmJiAoZmx0ID0gc3Ryc2VwKCZmaWx0ZXIs ICJ8XHJcblx0ICIpKSAhPSBOVUxMKSB7Cj4gLQkJaWYgKCEqZmx0KQo+IC0JCQljb250aW51ZTsK PiAtCj4gLQkJaWYgKGxpc3RfZW1wdHkoJmZyZWVfbGlzdCkpIHsKPiAtCQkJZmlsdGVyX25vZGUg PSBremFsbG9jKHNpemVvZigqZmlsdGVyX25vZGUpLCBHRlBfS0VSTkVMKTsKPiAtCQkJaWYgKCFm aWx0ZXJfbm9kZSkKPiAtCQkJCWJyZWFrOwo+IC0KPiAtCQkJSU5JVF9MSVNUX0hFQUQoJmZpbHRl cl9ub2RlLT5saXN0KTsKPiAtCQl9IGVsc2Ugewo+IC0JCQlmaWx0ZXJfbm9kZSA9IGxpc3RfZmly c3RfZW50cnkoJmZyZWVfbGlzdCwKPiAtCQkJCQlzdHJ1Y3QgZHB1X2V2dGxvZ19maWx0ZXIsIGxp c3QpOwo+IC0JCQlsaXN0X2RlbF9pbml0KCZmaWx0ZXJfbm9kZS0+bGlzdCk7Cj4gLQkJfQo+IC0K PiAtCQkvKiBkb24ndCBjYXJlIGlmIGNvcHkgdHJ1bmNhdGVkICovCj4gLQkJKHZvaWQpc3RybGNw eShmaWx0ZXJfbm9kZS0+ZmlsdGVyLCBmbHQsCj4gLQkJCQlEUFVfRVZUTE9HX0ZJTFRFUl9TVFJT SVpFKTsKPiAtCj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmV2dGxvZy0+c3Bpbl9sb2NrLCBmbGFn cyk7Cj4gLQkJbGlzdF9hZGRfdGFpbCgmZmlsdGVyX25vZGUtPmxpc3QsICZldnRsb2ctPmZpbHRl cl9saXN0KTsKPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZldnRsb2ctPnNwaW5fbG9jaywg ZmxhZ3MpOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBGcmVlIGFueSB1bnVzZWQgZmlsdGVyX25v ZGVzIGJhY2sgdG8gdGhlIHN5c3RlbS4KPiAtCSAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGZpbHRlcl9ub2RlLCB0bXAsICZmcmVlX2xpc3QsIGxpc3QpIHsKPiAtCQlsaXN0X2RlbCgm ZmlsdGVyX25vZGUtPmxpc3QpOwo+IC0JCWtmcmVlKGZpbHRlcl9ub2RlKTsKPiAtCX0KPiAtfQo+ IC0KPiAtdm9pZCBkcHVfZXZ0bG9nX2Rlc3Ryb3koc3RydWN0IGRwdV9kYmdfZXZ0bG9nICpldnRs b2cpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZXZ0bG9nX2ZpbHRlciAqZmlsdGVyX25vZGUsICp0bXA7 Cj4gLQo+IC0JaWYgKCFldnRsb2cpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShmaWx0ZXJfbm9kZSwgdG1wLCAmZXZ0bG9nLT5maWx0ZXJfbGlzdCwgCj4gbGlz dCkgewo+IC0JCWxpc3RfZGVsKCZmaWx0ZXJfbm9kZS0+bGlzdCk7Cj4gLQkJa2ZyZWUoZmlsdGVy X25vZGUpOwo+IC0JfQo+IC0Ja2ZyZWUoZXZ0bG9nKTsKPiAtfQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVk cmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K