From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 10/11] drm/i915: Move sandybride pcode access to intel_sideband.c Date: Fri, 19 Jan 2018 10:21:31 +0200 Message-ID: <87h8rii7hw.fsf@gaia.fi.intel.com> References: <20180115084723.2221-1-chris@chris-wilson.co.uk> <20180115084723.2221-11-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id D9CA96E068 for ; Fri, 19 Jan 2018 08:21:42 +0000 (UTC) In-Reply-To: <20180115084723.2221-11-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gc2FuZHli cmlkZV9wY29kZSBpcyBhbm90aGVyIHNpZGViYW5kLCBzbyBtb3ZlIGl0IHRvIHRoZWlyIG5ldyBo b21lLgo+CgpVcCB0byB0aGlzIHBhdGNoLCBvbWl0dGluZyB0aGUgd2FpdGJvb3N0aW5nLiBVcHRp bWUgNDFtaW4gdGlsbApzeXN0ZW0gaGFuZyBvbiBqMTkwMC4KCldpdGggd2FpdGJvb3N0aW5nIHBh dGNoIGl0IGRpZCBzdXJ2aXZlIHdpdGhvdXQgc3lzdGVtIGhhbmdzCmZvciAyNGgrIGJ1dCB0aGUg ZnJlcXVlbmN5IHNlZW1lZCB0byByZW1haW4gY29uc3RhbnQuCgotTWlrYQoKCj4gU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDUgLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgICAgICAgfCAxOTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jIHwgMTkwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc2lkZWJhbmQuaCB8ICAgNSArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDE5NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDRk OWU5NzQxZWQ4Zi4uYTBiYjBmMDE4YTc2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g QEAgLTM3MDYsMTEgKzM3MDYsNiBAQCBpbnRlbF9kaXNwbGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgZXh0ZXJuIHZvaWQgaW50ZWxf ZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVm ICplLAo+ICAJCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJvcl9zdGF0ZSAqZXJyb3Ip Owo+ICAKPiAtaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwpOwo+IC1pbnQgc2FuZHlicmlkZ2VfcGNv ZGVfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMy IHZhbCk7Cj4gLWludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKPiAtCQkgICAgICB1MzIgcmVwbHlfbWFz aywgdTMyIHJlcGx5LCBpbnQgdGltZW91dF9iYXNlX21zKTsKPiAtCj4gIC8qIGludGVsX2RwaW9f cGh5LmMgKi8KPiAgdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ICAJCQkgICAgIGVudW0gZHBpb19w aHkgKnBoeSwgZW51bSBkcGlvX2NoYW5uZWwgKmNoKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRj cC5jCj4gaW5kZXggZDBlOTcxNzJiOGVkLi4xYWZhZTkzNzA3YTEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRjcC5jCj4gQEAgLTExLDggKzExLDkgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2ky Yy5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+Cj4gIAo+IC0jaW5jbHVkZSAiaW50ZWxf ZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi Cj4gKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgo+ICAKPiAgI2RlZmluZSBLRVlfTE9BRF9U UklFUwk1Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDE4OTQ1MjY0YjgzNS4u YTY5Yjc0MjE0N2Y3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTkwODAsMTk2 ICs5MDgwLDYgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSBpbnQgZ2VuNl9jaGVja19t YWlsYm94X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAt CXVpbnQzMl90IGZsYWdzID0KPiAtCQlJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAm IEdFTjZfUENPREVfRVJST1JfTUFTSzsKPiAtCj4gLQlzd2l0Y2ggKGZsYWdzKSB7Cj4gLQljYXNl IEdFTjZfUENPREVfU1VDQ0VTUzoKPiAtCQlyZXR1cm4gMDsKPiAtCWNhc2UgR0VONl9QQ09ERV9V TklNUExFTUVOVEVEX0NNRDoKPiAtCQlyZXR1cm4gLUVOT0RFVjsKPiAtCWNhc2UgR0VONl9QQ09E RV9JTExFR0FMX0NNRDoKPiAtCQlyZXR1cm4gLUVOWElPOwo+IC0JY2FzZSBHRU42X1BDT0RFX01J Tl9GUkVRX1RBQkxFX0dUX1JBVElPX09VVF9PRl9SQU5HRToKPiAtCWNhc2UgR0VON19QQ09ERV9N SU5fRlJFUV9UQUJMRV9HVF9SQVRJT19PVVRfT0ZfUkFOR0U6Cj4gLQkJcmV0dXJuIC1FT1ZFUkZM T1c7Cj4gLQljYXNlIEdFTjZfUENPREVfVElNRU9VVDoKPiAtCQlyZXR1cm4gLUVUSU1FRE9VVDsK PiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNFKGZsYWdzKTsKPiAtCQlyZXR1cm4gMDsKPiAt CX0KPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBpbnQgZ2VuN19jaGVja19tYWlsYm94X3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXVpbnQzMl90IGZs YWdzID0KPiAtCQlJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVf RVJST1JfTUFTSzsKPiAtCj4gLQlzd2l0Y2ggKGZsYWdzKSB7Cj4gLQljYXNlIEdFTjZfUENPREVf U1VDQ0VTUzoKPiAtCQlyZXR1cm4gMDsKPiAtCWNhc2UgR0VONl9QQ09ERV9JTExFR0FMX0NNRDoK PiAtCQlyZXR1cm4gLUVOWElPOwo+IC0JY2FzZSBHRU43X1BDT0RFX1RJTUVPVVQ6Cj4gLQkJcmV0 dXJuIC1FVElNRURPVVQ7Cj4gLQljYXNlIEdFTjdfUENPREVfSUxMRUdBTF9EQVRBOgo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0JY2FzZSBHRU43X1BDT0RFX01JTl9GUkVRX1RBQkxFX0dUX1JBVElP X09VVF9PRl9SQU5HRToKPiAtCQlyZXR1cm4gLUVPVkVSRkxPVzsKPiAtCWRlZmF1bHQ6Cj4gLQkJ TUlTU0lOR19DQVNFKGZsYWdzKTsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiAtfQo+IC0KPiAtc3Rh dGljIGludCBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAtCQkJCSAgdTMyIG1ib3gsIHUzMiAqdmFsLCBib29sIGlzX3JlYWQpCj4gLXsK PiAtCWludCBzdGF0dXM7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnNi X2xvY2spOwo+IC0KPiAtCS8qCj4gLQkgKiBHRU42X1BDT0RFXyogYXJlIG91dHNpZGUgb2YgdGhl IGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgo+IC0JICogdXNlIHRlIGZ3IEk5MTVfUkVBRCB2YXJp YW50cyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB3b3JrCj4gLQkgKiByZXF1aXJlZCB3aGVuIHJl YWRpbmcvd3JpdGluZy4KPiAtCSAqLwo+IC0KPiAtCWlmIChJOTE1X1JFQURfRlcoR0VONl9QQ09E RV9NQUlMQk9YKSAmIEdFTjZfUENPREVfUkVBRFkpCj4gLQkJcmV0dXJuIC1FQUdBSU47Cj4gLQo+ IC0JSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsICp2YWwpOwo+IC0JSTkxNV9XUklURV9G VyhHRU42X1BDT0RFX0RBVEExLCAwKTsKPiAtCUk5MTVfV1JJVEVfRlcoR0VONl9QQ09ERV9NQUlM Qk9YLCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7Cj4gLQo+IC0JaWYgKF9faW50ZWxfd2FpdF9m b3JfcmVnaXN0ZXJfZncoZGV2X3ByaXYsCj4gLQkJCQkJIEdFTjZfUENPREVfTUFJTEJPWCwgR0VO Nl9QQ09ERV9SRUFEWSwgMCwKPiAtCQkJCQkgNTAwLCAwLCBOVUxMKSkKPiAtCQlyZXR1cm4gLUVU SU1FRE9VVDsKPiAtCj4gLQlpZiAoaXNfcmVhZCkKPiAtCQkqdmFsID0gSTkxNV9SRUFEX0ZXKEdF TjZfUENPREVfREFUQSk7Cj4gLQlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgMCk7Cj4g LQo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KQo+IC0JCXN0YXR1cyA9IGdlbjdfY2hl Y2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+IC0JZWxzZQo+IC0JCXN0YXR1cyA9IGdlbjZf Y2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+IC0KPiAtCXJldHVybiBzdGF0dXM7Cj4g LX0KPiAtCj4gLWludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKQo+IC17Cj4gLQlpbnQgc3RhdHVzOwo+ IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAtCXN0YXR1cyA9IF9fc2Fu ZHlicmlkZ2VfcGNvZGVfcncoZGV2X3ByaXYsIG1ib3gsIHZhbCwgdHJ1ZSk7Cj4gLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAtCj4gLQlpZiAoc3RhdHVzKSB7Cj4gLQkJRFJN X0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUgKHJlYWQgZnJvbSBtYm94ICV4KSBtYWlsYm94 IGFjY2VzcyBmYWlsZWQgZm9yICVwczogJWRcbiIsCj4gLQkJCQkgbWJveCwgX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApLCBzdGF0dXMpOwo+IC0JfQo+IC0KPiAtCXJldHVybiBzdGF0dXM7Cj4g LX0KPiAtCj4gLWludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgICB1MzIgbWJveCwgdTMyIHZhbCkKPiAtewo+IC0JaW50 IHN0YXR1czsKPiAtCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gLQlzdGF0 dXMgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KGRldl9wcml2LCBtYm94LCAmdmFsLCBmYWxzZSk7 Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAtCj4gLQlpZiAoc3RhdHVz KSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUgKHdyaXRlIG9mIDB4JTA4 eCB0byBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBmYWlsZWQgZm9yICVwczogJWRcbiIsCj4gLQkJ CQkgdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIHN0YXR1cyk7Cj4gLQl9 Cj4gLQo+IC0JcmV0dXJuIHN0YXR1czsKPiAtfQo+IC0KPiAtc3RhdGljIGJvb2wgc2tsX3Bjb2Rl X3RyeV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gs Cj4gLQkJCQkgIHUzMiByZXF1ZXN0LCB1MzIgcmVwbHlfbWFzaywgdTMyIHJlcGx5LAo+IC0JCQkJ ICB1MzIgKnN0YXR1cykKPiAtewo+IC0JKnN0YXR1cyA9IF9fc2FuZHlicmlkZ2VfcGNvZGVfcnco ZGV2X3ByaXYsIG1ib3gsICZyZXF1ZXN0LCB0cnVlKTsKPiAtCj4gLQlyZXR1cm4gKnN0YXR1cyB8 fCAoKHJlcXVlc3QgJiByZXBseV9tYXNrKSA9PSByZXBseSk7Cj4gLX0KPiAtCj4gLS8qKgo+IC0g KiBza2xfcGNvZGVfcmVxdWVzdCAtIHNlbmQgUENPREUgcmVxdWVzdCB1bnRpbCBhY2tub3dsZWRn bWVudAo+IC0gKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCj4gLSAqIEBtYm94OiBQQ09ERSBt YWlsYm94IElEIHRoZSByZXF1ZXN0IGlzIHRhcmdldGVkIGZvcgo+IC0gKiBAcmVxdWVzdDogcmVx dWVzdCBJRAo+IC0gKiBAcmVwbHlfbWFzazogbWFzayB1c2VkIHRvIGNoZWNrIGZvciByZXF1ZXN0 IGFja25vd2xlZGdtZW50Cj4gLSAqIEByZXBseTogdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgcmVx dWVzdCBhY2tub3dsZWRnbWVudAo+IC0gKiBAdGltZW91dF9iYXNlX21zOiB0aW1lb3V0IGZvciBw b2xsaW5nIHdpdGggcHJlZW1wdGlvbiBlbmFibGVkCj4gLSAqCj4gLSAqIEtlZXAgcmVzZW5kaW5n IHRoZSBAcmVxdWVzdCB0byBAbWJveCB1bnRpbCBQQ09ERSBhY2tub3dsZWRnZXMgaXQsIFBDT0RF Cj4gLSAqIHJlcG9ydHMgYW4gZXJyb3Igb3IgYW4gb3ZlcmFsbCB0aW1lb3V0IG9mIEB0aW1lb3V0 X2Jhc2VfbXMrNTAgbXMgZXhwaXJlcy4KPiAtICogVGhlIHJlcXVlc3QgaXMgYWNrbm93bGVkZ2Vk IG9uY2UgdGhlIFBDT0RFIHJlcGx5IGR3b3JkIGVxdWFscyBAcmVwbHkgYWZ0ZXIKPiAtICogYXBw bHlpbmcgQHJlcGx5X21hc2suIFBvbGxpbmcgaXMgZmlyc3QgYXR0ZW1wdGVkIHdpdGggcHJlZW1w dGlvbiBlbmFibGVkCj4gLSAqIGZvciBAdGltZW91dF9iYXNlX21zIGFuZCBpZiB0aGlzIHRpbWVz IG91dCBmb3IgYW5vdGhlciA1MCBtcyB3aXRoCj4gLSAqIHByZWVtcHRpb24gZGlzYWJsZWQuCj4g LSAqCj4gLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAlLUVUSU1FRE9VVCBpbiBjYXNlIG9mIGEg dGltZW91dCwgPDAgaW4gY2FzZSBvZiBzb21lCj4gLSAqIG90aGVyIGVycm9yIGFzIHJlcG9ydGVk IGJ5IFBDT0RFLgo+IC0gKi8KPiAtaW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAo+IC0JCSAgICAgIHUz MiByZXBseV9tYXNrLCB1MzIgcmVwbHksIGludCB0aW1lb3V0X2Jhc2VfbXMpCj4gLXsKPiAtCXUz MiBzdGF0dXM7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9s b2NrKTsKPiAtCj4gLSNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3ByaXYs IG1ib3gsIHJlcXVlc3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCj4gLQkJCQkgICAmc3RhdHVzKQo+ IC0KPiAtCS8qCj4gLQkgKiBQcmltZSB0aGUgUENPREUgYnkgZG9pbmcgYSByZXF1ZXN0IGZpcnN0 LiBOb3JtYWxseSBpdCBndWFyYW50ZWVzCj4gLQkgKiB0aGF0IGEgc3Vic2VxdWVudCByZXF1ZXN0 LCBhdCBtb3N0IEB0aW1lb3V0X2Jhc2VfbXMgbGF0ZXIsIHN1Y2NlZWRzLgo+IC0JICogX3dhaXRf Zm9yKCkgZG9lc24ndCBndWFyYW50ZWUgd2hlbiBpdHMgcGFzc2VkIGNvbmRpdGlvbiBpcyBldmFs dWF0ZWQKPiAtCSAqIGZpcnN0LCBzbyBzZW5kIHRoZSBmaXJzdCByZXF1ZXN0IGV4cGxpY2l0bHku Cj4gLQkgKi8KPiAtCWlmIChDT05EKSB7Cj4gLQkJcmV0ID0gMDsKPiAtCQlnb3RvIG91dDsKPiAt CX0KPiAtCXJldCA9IF93YWl0X2ZvcihDT05ELCB0aW1lb3V0X2Jhc2VfbXMgKiAxMDAwLCAxMCwg MTApOwo+IC0JaWYgKCFyZXQpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JLyoKPiAtCSAqIFRoZSBh Ym92ZSBjYW4gdGltZSBvdXQgaWYgdGhlIG51bWJlciBvZiByZXF1ZXN0cyB3YXMgbG93ICgyIGlu IHRoZQo+IC0JICogd29yc3QgY2FzZSkgX2FuZF8gUENPREUgd2FzIGJ1c3kgZm9yIHNvbWUgcmVh c29uIGV2ZW4gYWZ0ZXIgYQo+IC0JICogKHF1ZXVlZCkgcmVxdWVzdCBhbmQgQHRpbWVvdXRfYmFz ZV9tcyBkZWxheS4gQXMgYSB3b3JrYXJvdW5kIHJldHJ5Cj4gLQkgKiB0aGUgcG9sbCB3aXRoIHBy ZWVtcHRpb24gZGlzYWJsZWQgdG8gbWF4aW1pemUgdGhlIG51bWJlciBvZgo+IC0JICogcmVxdWVz dHMuIEluY3JlYXNlIHRoZSB0aW1lb3V0IGZyb20gQHRpbWVvdXRfYmFzZV9tcyB0byA1MG1zIHRv Cj4gLQkgKiBhY2NvdW50IGZvciBpbnRlcnJ1cHRzIHRoYXQgY291bGQgcmVkdWNlIHRoZSBudW1i ZXIgb2YgdGhlc2UKPiAtCSAqIHJlcXVlc3RzLCBhbmQgZm9yIGFueSBxdWlya3Mgb2YgdGhlIFBD T0RFIGZpcm13YXJlIHRoYXQgZGVsYXlzCj4gLQkgKiB0aGUgcmVxdWVzdCBjb21wbGV0aW9uLgo+ IC0JICovCj4gLQlEUk1fREVCVUdfS01TKCJQQ09ERSB0aW1lb3V0LCByZXRyeWluZyB3aXRoIHBy ZWVtcHRpb24gZGlzYWJsZWRcbiIpOwo+IC0JV0FSTl9PTl9PTkNFKHRpbWVvdXRfYmFzZV9tcyA+ IDMpOwo+IC0JcHJlZW1wdF9kaXNhYmxlKCk7Cj4gLQlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoQ09O RCwgNTApOwo+IC0JcHJlZW1wdF9lbmFibGUoKTsKPiAtCj4gLW91dDoKPiAtCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+IC0JcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKPiAt I3VuZGVmIENPTkQKPiAtfQo+IC0KPiAgc3RhdGljIGludCBieXRfZ3B1X2ZyZXEoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf cnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3NpZGViYW5kLmMKPiBpbmRleCA2ODE1YmU5ZTViN2MuLmE5YmEzNzhiZjlmYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IEBAIC0zODMsMyArMzgzLDE5MyBAQCB2 b2lkIHZsdl9mbGlzZHNpX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IHsKPiAgCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0ZMSVNEU0kp KTsKPiAgfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgZ2VuNl9jaGVja19tYWlsYm94X3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXVpbnQzMl90IGZs YWdzID0KPiArCQlJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVf RVJST1JfTUFTSzsKPiArCj4gKwlzd2l0Y2ggKGZsYWdzKSB7Cj4gKwljYXNlIEdFTjZfUENPREVf U1VDQ0VTUzoKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgR0VONl9QQ09ERV9VTklNUExFTUVOVEVE X0NNRDoKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCWNhc2UgR0VONl9QQ09ERV9JTExFR0FMX0NN RDoKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJY2FzZSBHRU42X1BDT0RFX01JTl9GUkVRX1RBQkxF X0dUX1JBVElPX09VVF9PRl9SQU5HRToKPiArCWNhc2UgR0VON19QQ09ERV9NSU5fRlJFUV9UQUJM RV9HVF9SQVRJT19PVVRfT0ZfUkFOR0U6Cj4gKwkJcmV0dXJuIC1FT1ZFUkZMT1c7Cj4gKwljYXNl IEdFTjZfUENPREVfVElNRU9VVDoKPiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiArCWRlZmF1bHQ6 Cj4gKwkJTUlTU0lOR19DQVNFKGZsYWdzKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBpbnQgZ2VuN19jaGVja19tYWlsYm94X3N0YXR1cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXVpbnQzMl90IGZsYWdzID0KPiArCQlJ OTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVfRVJST1JfTUFTSzsK PiArCj4gKwlzd2l0Y2ggKGZsYWdzKSB7Cj4gKwljYXNlIEdFTjZfUENPREVfU1VDQ0VTUzoKPiAr CQlyZXR1cm4gMDsKPiArCWNhc2UgR0VONl9QQ09ERV9JTExFR0FMX0NNRDoKPiArCQlyZXR1cm4g LUVOWElPOwo+ICsJY2FzZSBHRU43X1BDT0RFX1RJTUVPVVQ6Cj4gKwkJcmV0dXJuIC1FVElNRURP VVQ7Cj4gKwljYXNlIEdFTjdfUENPREVfSUxMRUdBTF9EQVRBOgo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsJY2FzZSBHRU43X1BDT0RFX01JTl9GUkVRX1RBQkxFX0dUX1JBVElPX09VVF9PRl9SQU5H RToKPiArCQlyZXR1cm4gLUVPVkVSRkxPVzsKPiArCWRlZmF1bHQ6Cj4gKwkJTUlTU0lOR19DQVNF KGZsYWdzKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludCBfX3Nh bmR5YnJpZGdlX3Bjb2RlX3J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAr CQkJCSAgdTMyIG1ib3gsIHUzMiAqdmFsLCBib29sIGlzX3JlYWQpCj4gK3sKPiArCWludCBzdGF0 dXM7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsK PiArCS8qCj4gKwkgKiBHRU42X1BDT0RFXyogYXJlIG91dHNpZGUgb2YgdGhlIGZvcmNld2FrZSBk b21haW4sIHdlIGNhbgo+ICsJICogdXNlIHRlIGZ3IEk5MTVfUkVBRCB2YXJpYW50cyB0byByZWR1 Y2UgdGhlIGFtb3VudCBvZiB3b3JrCj4gKwkgKiByZXF1aXJlZCB3aGVuIHJlYWRpbmcvd3JpdGlu Zy4KPiArCSAqLwo+ICsKPiArCWlmIChJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAm IEdFTjZfUENPREVfUkVBRFkpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gKwo+ICsJSTkxNV9XUklU RV9GVyhHRU42X1BDT0RFX0RBVEEsICp2YWwpOwo+ICsJSTkxNV9XUklURV9GVyhHRU42X1BDT0RF X0RBVEExLCAwKTsKPiArCUk5MTVfV1JJVEVfRlcoR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BD T0RFX1JFQURZIHwgbWJveCk7Cj4gKwo+ICsJaWYgKF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJf ZncoZGV2X3ByaXYsCj4gKwkJCQkJIEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9QQ09ERV9SRUFE WSwgMCwKPiArCQkJCQkgNTAwLCAwLCBOVUxMKSkKPiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAr Cj4gKwlpZiAoaXNfcmVhZCkKPiArCQkqdmFsID0gSTkxNV9SRUFEX0ZXKEdFTjZfUENPREVfREFU QSk7Cj4gKwlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgMCk7Cj4gKwo+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPiA2KQo+ICsJCXN0YXR1cyA9IGdlbjdfY2hlY2tfbWFpbGJveF9z dGF0dXMoZGV2X3ByaXYpOwo+ICsJZWxzZQo+ICsJCXN0YXR1cyA9IGdlbjZfY2hlY2tfbWFpbGJv eF9zdGF0dXMoZGV2X3ByaXYpOwo+ICsKPiArCXJldHVybiBzdGF0dXM7Cj4gK30KPiArCj4gK2lu dCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIG1ib3gsIHUzMiAqdmFsKQo+ICt7Cj4gKwlpbnQgc3RhdHVzOwo+ICsKPiArCW11dGV4 X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXN0YXR1cyA9IF9fc2FuZHlicmlkZ2VfcGNv ZGVfcncoZGV2X3ByaXYsIG1ib3gsIHZhbCwgdHJ1ZSk7Cj4gKwltdXRleF91bmxvY2soJmRldl9w cml2LT5zYl9sb2NrKTsKPiArCj4gKwlpZiAoc3RhdHVzKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZF Uigid2FybmluZzogcGNvZGUgKHJlYWQgZnJvbSBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBmYWls ZWQgZm9yICVwczogJWRcbiIsCj4gKwkJCQkgbWJveCwgX19idWlsdGluX3JldHVybl9hZGRyZXNz KDApLCBzdGF0dXMpOwo+ICsJfQo+ICsKPiArCXJldHVybiBzdGF0dXM7Cj4gK30KPiArCj4gK2lu dCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCSAgICB1MzIgbWJveCwgdTMyIHZhbCkKPiArewo+ICsJaW50IHN0YXR1czsKPiAr Cj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwlzdGF0dXMgPSBfX3NhbmR5 YnJpZGdlX3Bjb2RlX3J3KGRldl9wcml2LCBtYm94LCAmdmFsLCBmYWxzZSk7Cj4gKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gKwlpZiAoc3RhdHVzKSB7Cj4gKwkJRFJN X0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUgKHdyaXRlIG9mIDB4JTA4eCB0byBtYm94ICV4 KSBtYWlsYm94IGFjY2VzcyBmYWlsZWQgZm9yICVwczogJWRcbiIsCj4gKwkJCQkgdmFsLCBtYm94 LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIHN0YXR1cyk7Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIHN0YXR1czsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgc2tsX3Bjb2RlX3RyeV9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsCj4gKwkJCQkgIHUz MiByZXF1ZXN0LCB1MzIgcmVwbHlfbWFzaywgdTMyIHJlcGx5LAo+ICsJCQkJICB1MzIgKnN0YXR1 cykKPiArewo+ICsJKnN0YXR1cyA9IF9fc2FuZHlicmlkZ2VfcGNvZGVfcncoZGV2X3ByaXYsIG1i b3gsICZyZXF1ZXN0LCB0cnVlKTsKPiArCj4gKwlyZXR1cm4gKnN0YXR1cyB8fCAoKHJlcXVlc3Qg JiByZXBseV9tYXNrKSA9PSByZXBseSk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBza2xfcGNvZGVf cmVxdWVzdCAtIHNlbmQgUENPREUgcmVxdWVzdCB1bnRpbCBhY2tub3dsZWRnbWVudAo+ICsgKiBA ZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCj4gKyAqIEBtYm94OiBQQ09ERSBtYWlsYm94IElEIHRo ZSByZXF1ZXN0IGlzIHRhcmdldGVkIGZvcgo+ICsgKiBAcmVxdWVzdDogcmVxdWVzdCBJRAo+ICsg KiBAcmVwbHlfbWFzazogbWFzayB1c2VkIHRvIGNoZWNrIGZvciByZXF1ZXN0IGFja25vd2xlZGdt ZW50Cj4gKyAqIEByZXBseTogdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgcmVxdWVzdCBhY2tub3ds ZWRnbWVudAo+ICsgKiBAdGltZW91dF9iYXNlX21zOiB0aW1lb3V0IGZvciBwb2xsaW5nIHdpdGgg cHJlZW1wdGlvbiBlbmFibGVkCj4gKyAqCj4gKyAqIEtlZXAgcmVzZW5kaW5nIHRoZSBAcmVxdWVz dCB0byBAbWJveCB1bnRpbCBQQ09ERSBhY2tub3dsZWRnZXMgaXQsIFBDT0RFCj4gKyAqIHJlcG9y dHMgYW4gZXJyb3Igb3IgYW4gb3ZlcmFsbCB0aW1lb3V0IG9mIEB0aW1lb3V0X2Jhc2VfbXMrNTAg bXMgZXhwaXJlcy4KPiArICogVGhlIHJlcXVlc3QgaXMgYWNrbm93bGVkZ2VkIG9uY2UgdGhlIFBD T0RFIHJlcGx5IGR3b3JkIGVxdWFscyBAcmVwbHkgYWZ0ZXIKPiArICogYXBwbHlpbmcgQHJlcGx5 X21hc2suIFBvbGxpbmcgaXMgZmlyc3QgYXR0ZW1wdGVkIHdpdGggcHJlZW1wdGlvbiBlbmFibGVk Cj4gKyAqIGZvciBAdGltZW91dF9iYXNlX21zIGFuZCBpZiB0aGlzIHRpbWVzIG91dCBmb3IgYW5v dGhlciA1MCBtcyB3aXRoCj4gKyAqIHByZWVtcHRpb24gZGlzYWJsZWQuCj4gKyAqCj4gKyAqIFJl dHVybnMgMCBvbiBzdWNjZXNzLCAlLUVUSU1FRE9VVCBpbiBjYXNlIG9mIGEgdGltZW91dCwgPDAg aW4gY2FzZSBvZiBzb21lCj4gKyAqIG90aGVyIGVycm9yIGFzIHJlcG9ydGVkIGJ5IFBDT0RFLgo+ ICsgKi8KPiAraW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAo+ICsJCSAgICAgIHUzMiByZXBseV9tYXNr LCB1MzIgcmVwbHksIGludCB0aW1lb3V0X2Jhc2VfbXMpCj4gK3sKPiArCXUzMiBzdGF0dXM7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4g KyNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3ByaXYsIG1ib3gsIHJlcXVl c3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCj4gKwkJCQkgICAmc3RhdHVzKQo+ICsKPiArCS8qCj4g KwkgKiBQcmltZSB0aGUgUENPREUgYnkgZG9pbmcgYSByZXF1ZXN0IGZpcnN0LiBOb3JtYWxseSBp dCBndWFyYW50ZWVzCj4gKwkgKiB0aGF0IGEgc3Vic2VxdWVudCByZXF1ZXN0LCBhdCBtb3N0IEB0 aW1lb3V0X2Jhc2VfbXMgbGF0ZXIsIHN1Y2NlZWRzLgo+ICsJICogX3dhaXRfZm9yKCkgZG9lc24n dCBndWFyYW50ZWUgd2hlbiBpdHMgcGFzc2VkIGNvbmRpdGlvbiBpcyBldmFsdWF0ZWQKPiArCSAq IGZpcnN0LCBzbyBzZW5kIHRoZSBmaXJzdCByZXF1ZXN0IGV4cGxpY2l0bHkuCj4gKwkgKi8KPiAr CWlmIChDT05EKSB7Cj4gKwkJcmV0ID0gMDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCXJldCA9 IF93YWl0X2ZvcihDT05ELCB0aW1lb3V0X2Jhc2VfbXMgKiAxMDAwLCAxMCwgMTApOwo+ICsJaWYg KCFyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBhYm92ZSBjYW4gdGlt ZSBvdXQgaWYgdGhlIG51bWJlciBvZiByZXF1ZXN0cyB3YXMgbG93ICgyIGluIHRoZQo+ICsJICog d29yc3QgY2FzZSkgX2FuZF8gUENPREUgd2FzIGJ1c3kgZm9yIHNvbWUgcmVhc29uIGV2ZW4gYWZ0 ZXIgYQo+ICsJICogKHF1ZXVlZCkgcmVxdWVzdCBhbmQgQHRpbWVvdXRfYmFzZV9tcyBkZWxheS4g QXMgYSB3b3JrYXJvdW5kIHJldHJ5Cj4gKwkgKiB0aGUgcG9sbCB3aXRoIHByZWVtcHRpb24gZGlz YWJsZWQgdG8gbWF4aW1pemUgdGhlIG51bWJlciBvZgo+ICsJICogcmVxdWVzdHMuIEluY3JlYXNl IHRoZSB0aW1lb3V0IGZyb20gQHRpbWVvdXRfYmFzZV9tcyB0byA1MG1zIHRvCj4gKwkgKiBhY2Nv dW50IGZvciBpbnRlcnJ1cHRzIHRoYXQgY291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2YgdGhlc2UK PiArCSAqIHJlcXVlc3RzLCBhbmQgZm9yIGFueSBxdWlya3Mgb2YgdGhlIFBDT0RFIGZpcm13YXJl IHRoYXQgZGVsYXlzCj4gKwkgKiB0aGUgcmVxdWVzdCBjb21wbGV0aW9uLgo+ICsJICovCj4gKwlE Uk1fREVCVUdfS01TKCJQQ09ERSB0aW1lb3V0LCByZXRyeWluZyB3aXRoIHByZWVtcHRpb24gZGlz YWJsZWRcbiIpOwo+ICsJV0FSTl9PTl9PTkNFKHRpbWVvdXRfYmFzZV9tcyA+IDMpOwo+ICsJcHJl ZW1wdF9kaXNhYmxlKCk7Cj4gKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoQ09ORCwgNTApOwo+ICsJ cHJlZW1wdF9lbmFibGUoKTsKPiArCj4gK291dDoKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnNiX2xvY2spOwo+ICsJcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKPiArI3VuZGVmIENPTkQK PiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuaAo+IGluZGV4IDQ2ZTkxN2Rk Mzk3My4uOTk5YzFkYTJjZDkzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3NpZGViYW5kLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFu ZC5oCj4gQEAgLTY4LDQgKzY4LDkgQEAgdTMyIGludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiAgdm9pZCBpbnRlbF9zYmlfd3JpdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLCB1MzIgdmFsdWUsCj4gIAkJ ICAgICBlbnVtIGludGVsX3NiaV9kZXN0aW5hdGlvbiBkZXN0aW5hdGlvbik7Cj4gIAo+ICtpbnQg c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBtYm94LCB1MzIgKnZhbCk7Cj4gK2ludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgdmFsKTsKPiAraW50 IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IG1ib3gsIHUzMiByZXF1ZXN0LAo+ICsJCSAgICAgIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHks IGludCB0aW1lb3V0X2Jhc2VfbXMpOwo+ICsKPiAgI2VuZGlmIC8qIF9JTlRFTF9TSURFQkFORF9I ICovCj4gLS0gCj4gMi4xNS4xCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=