From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 10/10] drm/i915: Move sandybride pcode access to intel_sideband.c Date: Tue, 23 Apr 2019 20:22:59 +0300 Message-ID: <20190423172259.GE1747@intel.com> References: <20190419171402.30596-1-chris@chris-wilson.co.uk> <20190419171402.30596-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1373B894E7 for ; Tue, 23 Apr 2019 17:23:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190419171402.30596-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBcHIgMTksIDIwMTkgYXQgMDY6MTQ6MDJQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IHNhbmR5YnJpZGVfcGNvZGUgaXMgYW5vdGhlciBzaWRlYmFuZCwgc28gbW92ZSBpdCB0 byB0aGVpciBuZXcgaG9tZS4KCkNsb3NlIGVub3VnaC4KClJldmlld2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKPiAKPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAxMCAtLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgICB8IDE5NSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMgfCAxOTYgKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuaCB8ICAxMCAr Kwo+ICA1IGZpbGVzIGNoYW5nZWQsIDIwNyBpbnNlcnRpb25zKCspLCAyMDUgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZjQ4NzlmYjQxYWE2Li40NWM5OTg4 NzBiODcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzQyNywxNiArMzQyNyw2 IEBAIGludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9kaXNwbGF5X3ByaW50X2Vycm9y X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCj4gIAkJCQkJICAgIHN0 cnVjdCBpbnRlbF9kaXNwbGF5X2Vycm9yX3N0YXRlICplcnJvcik7Cj4gIAo+IC1pbnQgc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBt Ym94LCB1MzIgKnZhbCk7Cj4gLWludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsCj4gLQkJCQkgICAgdTMy IHZhbCwgaW50IGZhc3RfdGltZW91dF91cywKPiAtCQkJCSAgICBpbnQgc2xvd190aW1lb3V0X21z KTsKPiAtI2RlZmluZSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgbWJveCwgdmFs KQlcCj4gLQlzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGRldl9wcml2LCBtYm94LCB2 YWwsIDUwMCwgMCkKPiAtCj4gLWludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKPiAtCQkgICAgICB1MzIg cmVwbHlfbWFzaywgdTMyIHJlcGx5LCBpbnQgdGltZW91dF9iYXNlX21zKTsKPiAtCj4gIC8qIGlu dGVsX2RwaW9fcGh5LmMgKi8KPiAgdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ICAJCQkgICAgIGVu dW0gZHBpb19waHkgKnBoeSwgZW51bSBkcGlvX2NoYW5uZWwgKmNoKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCj4gaW5kZXggMjQ3NmU4Njc5ODFkLi5jYTU5ODJlNDVlM2UgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gQEAgLTE2LDYgKzE2LDcgQEAKPiAgI2luY2x1ZGUg Imk5MTVfcmVnLmgiCj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAgI2luY2x1ZGUgImludGVs X2hkY3AuaCIKPiArI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCj4gIAo+ICAjZGVmaW5lIEtF WV9MT0FEX1RSSUVTCTUKPiAgI2RlZmluZSBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9N Uwk1MAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGM5YTMyMWFhNWQyNi4uMDkwNGY1 ZmYyZGViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTk3MTQsMjAxICs5NzE0 LDYgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSBpbnQgZ2VuNl9jaGVja19tYWlsYm94 X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJICAgIHUz MiBtYm94KQo+IC17Cj4gLQlzd2l0Y2ggKG1ib3ggJiBHRU42X1BDT0RFX0VSUk9SX01BU0spIHsK PiAtCWNhc2UgR0VONl9QQ09ERV9TVUNDRVNTOgo+IC0JCXJldHVybiAwOwo+IC0JY2FzZSBHRU42 X1BDT0RFX1VOSU1QTEVNRU5URURfQ01EOgo+IC0JCXJldHVybiAtRU5PREVWOwo+IC0JY2FzZSBH RU42X1BDT0RFX0lMTEVHQUxfQ01EOgo+IC0JCXJldHVybiAtRU5YSU87Cj4gLQljYXNlIEdFTjZf UENPREVfTUlOX0ZSRVFfVEFCTEVfR1RfUkFUSU9fT1VUX09GX1JBTkdFOgo+IC0JY2FzZSBHRU43 X1BDT0RFX01JTl9GUkVRX1RBQkxFX0dUX1JBVElPX09VVF9PRl9SQU5HRToKPiAtCQlyZXR1cm4g LUVPVkVSRkxPVzsKPiAtCWNhc2UgR0VONl9QQ09ERV9USU1FT1VUOgo+IC0JCXJldHVybiAtRVRJ TUVET1VUOwo+IC0JZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UobWJveCAmIEdFTjZfUENPREVf RVJST1JfTUFTSyk7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxp bmUgaW50IGdlbjdfY2hlY2tfbWFpbGJveF9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+IC0JCQkJCSAgICB1MzIgbWJveCkKPiAtewo+IC0Jc3dpdGNoIChtYm94ICYg R0VONl9QQ09ERV9FUlJPUl9NQVNLKSB7Cj4gLQljYXNlIEdFTjZfUENPREVfU1VDQ0VTUzoKPiAt CQlyZXR1cm4gMDsKPiAtCWNhc2UgR0VONl9QQ09ERV9JTExFR0FMX0NNRDoKPiAtCQlyZXR1cm4g LUVOWElPOwo+IC0JY2FzZSBHRU43X1BDT0RFX1RJTUVPVVQ6Cj4gLQkJcmV0dXJuIC1FVElNRURP VVQ7Cj4gLQljYXNlIEdFTjdfUENPREVfSUxMRUdBTF9EQVRBOgo+IC0JCXJldHVybiAtRUlOVkFM Owo+IC0JY2FzZSBHRU43X1BDT0RFX01JTl9GUkVRX1RBQkxFX0dUX1JBVElPX09VVF9PRl9SQU5H RToKPiAtCQlyZXR1cm4gLUVPVkVSRkxPVzsKPiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNF KG1ib3ggJiBHRU42X1BDT0RFX0VSUk9SX01BU0spOwo+IC0JCXJldHVybiAwOwo+IC0JfQo+IC19 Cj4gLQo+IC1zdGF0aWMgaW50IF9fc2FuZHlicmlkZ2VfcGNvZGVfcncoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJICB1MzIgbWJveCwgdTMyICp2YWwsCj4gLQkJCQkg IGludCBmYXN0X3RpbWVvdXRfdXMsCj4gLQkJCQkgIGludCBzbG93X3RpbWVvdXRfbXMsCj4gLQkJ CQkgIGJvb2wgaXNfcmVhZCkKPiAtewo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYt PnNiX2xvY2spOwo+IC0KPiAtCS8qCj4gLQkgKiBHRU42X1BDT0RFXyogYXJlIG91dHNpZGUgb2Yg dGhlIGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgo+IC0JICogdXNlIHRlIGZ3IEk5MTVfUkVBRCB2 YXJpYW50cyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB3b3JrCj4gLQkgKiByZXF1aXJlZCB3aGVu IHJlYWRpbmcvd3JpdGluZy4KPiAtCSAqLwo+IC0KPiAtCWlmIChJOTE1X1JFQURfRlcoR0VONl9Q Q09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVfUkVBRFkpCj4gLQkJcmV0dXJuIC1FQUdBSU47Cj4g LQo+IC0JSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsICp2YWwpOwo+IC0JSTkxNV9XUklU RV9GVyhHRU42X1BDT0RFX0RBVEExLCAwKTsKPiAtCUk5MTVfV1JJVEVfRlcoR0VONl9QQ09ERV9N QUlMQk9YLCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7Cj4gLQo+IC0JaWYgKF9faW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXJfZncoJmRldl9wcml2LT51bmNvcmUsCj4gLQkJCQkJIEdFTjZfUENPREVf TUFJTEJPWCwgR0VONl9QQ09ERV9SRUFEWSwgMCwKPiAtCQkJCQkgZmFzdF90aW1lb3V0X3VzLAo+ IC0JCQkJCSBzbG93X3RpbWVvdXRfbXMsCj4gLQkJCQkJICZtYm94KSkKPiAtCQlyZXR1cm4gLUVU SU1FRE9VVDsKPiAtCj4gLQlpZiAoaXNfcmVhZCkKPiAtCQkqdmFsID0gSTkxNV9SRUFEX0ZXKEdF TjZfUENPREVfREFUQSk7Cj4gLQo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KQo+IC0J CXJldHVybiBnZW43X2NoZWNrX21haWxib3hfc3RhdHVzKGRldl9wcml2LCBtYm94KTsKPiAtCWVs c2UKPiAtCQlyZXR1cm4gZ2VuNl9jaGVja19tYWlsYm94X3N0YXR1cyhkZXZfcHJpdiwgbWJveCk7 Cj4gLX0KPiAtCj4gLWludAo+IC1zYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKQo+IC17Cj4gLQlpbnQgZXJy Owo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAtCWVyciA9IF9fc2Fu ZHlicmlkZ2VfcGNvZGVfcncoZGV2X3ByaXYsIG1ib3gsIHZhbCwKPiAtCQkJCSAgICAgNTAwLCAw LAo+IC0JCQkJICAgICB0cnVlKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+IC0KPiAtCWlmIChlcnIpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29k ZSAocmVhZCBmcm9tIG1ib3ggJXgpIG1haWxib3ggYWNjZXNzIGZhaWxlZCBmb3IgJXBzOiAlZFxu IiwKPiAtCQkJCSBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGVycik7Cj4gLQl9 Cj4gLQo+IC0JcmV0dXJuIGVycjsKPiAtfQo+IC0KPiAtaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dy aXRlX3RpbWVvdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJICAg IHUzMiBtYm94LCB1MzIgdmFsLAo+IC0JCQkJICAgIGludCBmYXN0X3RpbWVvdXRfdXMsCj4gLQkJ CQkgICAgaW50IHNsb3dfdGltZW91dF9tcykKPiAtewo+IC0JaW50IGVycjsKPiAtCj4gLQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gLQllcnIgPSBfX3NhbmR5YnJpZGdlX3Bjb2Rl X3J3KGRldl9wcml2LCBtYm94LCAmdmFsLAo+IC0JCQkJICAgICBmYXN0X3RpbWVvdXRfdXMsIHNs b3dfdGltZW91dF9tcywKPiAtCQkJCSAgICAgZmFsc2UpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+c2JfbG9jayk7Cj4gLQo+IC0JaWYgKGVycikgewo+IC0JCURSTV9ERUJVR19EUklWRVIo Indhcm5pbmc6IHBjb2RlICh3cml0ZSBvZiAweCUwOHggdG8gbWJveCAleCkgbWFpbGJveCBhY2Nl c3MgZmFpbGVkIGZvciAlcHM6ICVkXG4iLAo+IC0JCQkJIHZhbCwgbWJveCwgX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApLCBlcnIpOwo+IC0JfQo+IC0KPiAtCXJldHVybiBlcnI7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBib29sIHNrbF9wY29kZV90cnlfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LAo+IC0JCQkJICB1MzIgcmVxdWVzdCwgdTMyIHJlcGx5 X21hc2ssIHUzMiByZXBseSwKPiAtCQkJCSAgdTMyICpzdGF0dXMpCj4gLXsKPiAtCSpzdGF0dXMg PSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KGRldl9wcml2LCBtYm94LCAmcmVxdWVzdCwKPiAtCQkJ CQkgNTAwLCAwLAo+IC0JCQkJCSB0cnVlKTsKPiAtCj4gLQlyZXR1cm4gKnN0YXR1cyB8fCAoKHJl cXVlc3QgJiByZXBseV9tYXNrKSA9PSByZXBseSk7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBza2xf cGNvZGVfcmVxdWVzdCAtIHNlbmQgUENPREUgcmVxdWVzdCB1bnRpbCBhY2tub3dsZWRnbWVudAo+ IC0gKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCj4gLSAqIEBtYm94OiBQQ09ERSBtYWlsYm94 IElEIHRoZSByZXF1ZXN0IGlzIHRhcmdldGVkIGZvcgo+IC0gKiBAcmVxdWVzdDogcmVxdWVzdCBJ RAo+IC0gKiBAcmVwbHlfbWFzazogbWFzayB1c2VkIHRvIGNoZWNrIGZvciByZXF1ZXN0IGFja25v d2xlZGdtZW50Cj4gLSAqIEByZXBseTogdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgcmVxdWVzdCBh Y2tub3dsZWRnbWVudAo+IC0gKiBAdGltZW91dF9iYXNlX21zOiB0aW1lb3V0IGZvciBwb2xsaW5n IHdpdGggcHJlZW1wdGlvbiBlbmFibGVkCj4gLSAqCj4gLSAqIEtlZXAgcmVzZW5kaW5nIHRoZSBA cmVxdWVzdCB0byBAbWJveCB1bnRpbCBQQ09ERSBhY2tub3dsZWRnZXMgaXQsIFBDT0RFCj4gLSAq IHJlcG9ydHMgYW4gZXJyb3Igb3IgYW4gb3ZlcmFsbCB0aW1lb3V0IG9mIEB0aW1lb3V0X2Jhc2Vf bXMrNTAgbXMgZXhwaXJlcy4KPiAtICogVGhlIHJlcXVlc3QgaXMgYWNrbm93bGVkZ2VkIG9uY2Ug dGhlIFBDT0RFIHJlcGx5IGR3b3JkIGVxdWFscyBAcmVwbHkgYWZ0ZXIKPiAtICogYXBwbHlpbmcg QHJlcGx5X21hc2suIFBvbGxpbmcgaXMgZmlyc3QgYXR0ZW1wdGVkIHdpdGggcHJlZW1wdGlvbiBl bmFibGVkCj4gLSAqIGZvciBAdGltZW91dF9iYXNlX21zIGFuZCBpZiB0aGlzIHRpbWVzIG91dCBm b3IgYW5vdGhlciA1MCBtcyB3aXRoCj4gLSAqIHByZWVtcHRpb24gZGlzYWJsZWQuCj4gLSAqCj4g LSAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAlLUVUSU1FRE9VVCBpbiBjYXNlIG9mIGEgdGltZW91 dCwgPDAgaW4gY2FzZSBvZiBzb21lCj4gLSAqIG90aGVyIGVycm9yIGFzIHJlcG9ydGVkIGJ5IFBD T0RFLgo+IC0gKi8KPiAtaW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAo+IC0JCSAgICAgIHUzMiByZXBs eV9tYXNrLCB1MzIgcmVwbHksIGludCB0aW1lb3V0X2Jhc2VfbXMpCj4gLXsKPiAtCXUzMiBzdGF0 dXM7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK PiAtCj4gLSNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3ByaXYsIG1ib3gs IHJlcXVlc3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCj4gLQkJCQkgICAmc3RhdHVzKQo+IC0KPiAt CS8qCj4gLQkgKiBQcmltZSB0aGUgUENPREUgYnkgZG9pbmcgYSByZXF1ZXN0IGZpcnN0LiBOb3Jt YWxseSBpdCBndWFyYW50ZWVzCj4gLQkgKiB0aGF0IGEgc3Vic2VxdWVudCByZXF1ZXN0LCBhdCBt b3N0IEB0aW1lb3V0X2Jhc2VfbXMgbGF0ZXIsIHN1Y2NlZWRzLgo+IC0JICogX3dhaXRfZm9yKCkg ZG9lc24ndCBndWFyYW50ZWUgd2hlbiBpdHMgcGFzc2VkIGNvbmRpdGlvbiBpcyBldmFsdWF0ZWQK PiAtCSAqIGZpcnN0LCBzbyBzZW5kIHRoZSBmaXJzdCByZXF1ZXN0IGV4cGxpY2l0bHkuCj4gLQkg Ki8KPiAtCWlmIChDT05EKSB7Cj4gLQkJcmV0ID0gMDsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAt CXJldCA9IF93YWl0X2ZvcihDT05ELCB0aW1lb3V0X2Jhc2VfbXMgKiAxMDAwLCAxMCwgMTApOwo+ IC0JaWYgKCFyZXQpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JLyoKPiAtCSAqIFRoZSBhYm92ZSBj YW4gdGltZSBvdXQgaWYgdGhlIG51bWJlciBvZiByZXF1ZXN0cyB3YXMgbG93ICgyIGluIHRoZQo+ IC0JICogd29yc3QgY2FzZSkgX2FuZF8gUENPREUgd2FzIGJ1c3kgZm9yIHNvbWUgcmVhc29uIGV2 ZW4gYWZ0ZXIgYQo+IC0JICogKHF1ZXVlZCkgcmVxdWVzdCBhbmQgQHRpbWVvdXRfYmFzZV9tcyBk ZWxheS4gQXMgYSB3b3JrYXJvdW5kIHJldHJ5Cj4gLQkgKiB0aGUgcG9sbCB3aXRoIHByZWVtcHRp b24gZGlzYWJsZWQgdG8gbWF4aW1pemUgdGhlIG51bWJlciBvZgo+IC0JICogcmVxdWVzdHMuIElu Y3JlYXNlIHRoZSB0aW1lb3V0IGZyb20gQHRpbWVvdXRfYmFzZV9tcyB0byA1MG1zIHRvCj4gLQkg KiBhY2NvdW50IGZvciBpbnRlcnJ1cHRzIHRoYXQgY291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2Yg dGhlc2UKPiAtCSAqIHJlcXVlc3RzLCBhbmQgZm9yIGFueSBxdWlya3Mgb2YgdGhlIFBDT0RFIGZp cm13YXJlIHRoYXQgZGVsYXlzCj4gLQkgKiB0aGUgcmVxdWVzdCBjb21wbGV0aW9uLgo+IC0JICov Cj4gLQlEUk1fREVCVUdfS01TKCJQQ09ERSB0aW1lb3V0LCByZXRyeWluZyB3aXRoIHByZWVtcHRp b24gZGlzYWJsZWRcbiIpOwo+IC0JV0FSTl9PTl9PTkNFKHRpbWVvdXRfYmFzZV9tcyA+IDMpOwo+ IC0JcHJlZW1wdF9kaXNhYmxlKCk7Cj4gLQlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoQ09ORCwgNTAp Owo+IC0JcHJlZW1wdF9lbmFibGUoKTsKPiAtCj4gLW91dDoKPiAtCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwo+IC0JcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKPiAtI3VuZGVm IENPTkQKPiAtfQo+IC0KPiAgc3RhdGljIGludCBieXRfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcnBzICpy cHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc2lkZWJhbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGVi YW5kLmMKPiBpbmRleCA3MTEzZmI4ODUwZDYuLjg3YjVhMTRjN2NhOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IEBAIC0zMzMsMyArMzMzLDE5OSBAQCB2b2lkIGlu dGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTE2IHJlZywgdTMy IHZhbHVlLAo+ICB7Cj4gIAlpbnRlbF9zYmlfcncoaTkxNSwgcmVnLCBkZXN0aW5hdGlvbiwgJnZh bHVlLCBmYWxzZSk7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGdlbjZfY2hlY2tfbWFp bGJveF9zdGF0dXModTMyIG1ib3gpCj4gK3sKPiArCXN3aXRjaCAobWJveCAmIEdFTjZfUENPREVf RVJST1JfTUFTSykgewo+ICsJY2FzZSBHRU42X1BDT0RFX1NVQ0NFU1M6Cj4gKwkJcmV0dXJuIDA7 Cj4gKwljYXNlIEdFTjZfUENPREVfVU5JTVBMRU1FTlRFRF9DTUQ6Cj4gKwkJcmV0dXJuIC1FTk9E RVY7Cj4gKwljYXNlIEdFTjZfUENPREVfSUxMRUdBTF9DTUQ6Cj4gKwkJcmV0dXJuIC1FTlhJTzsK PiArCWNhc2UgR0VONl9QQ09ERV9NSU5fRlJFUV9UQUJMRV9HVF9SQVRJT19PVVRfT0ZfUkFOR0U6 Cj4gKwljYXNlIEdFTjdfUENPREVfTUlOX0ZSRVFfVEFCTEVfR1RfUkFUSU9fT1VUX09GX1JBTkdF Ogo+ICsJCXJldHVybiAtRU9WRVJGTE9XOwo+ICsJY2FzZSBHRU42X1BDT0RFX1RJTUVPVVQ6Cj4g KwkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRShtYm94 ICYgR0VONl9QQ09ERV9FUlJPUl9NQVNLKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBpbnQgZ2VuN19jaGVja19tYWlsYm94X3N0YXR1cyh1MzIgbWJveCkK PiArewo+ICsJc3dpdGNoIChtYm94ICYgR0VONl9QQ09ERV9FUlJPUl9NQVNLKSB7Cj4gKwljYXNl IEdFTjZfUENPREVfU1VDQ0VTUzoKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgR0VONl9QQ09ERV9J TExFR0FMX0NNRDoKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJY2FzZSBHRU43X1BDT0RFX1RJTUVP VVQ6Cj4gKwkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gKwljYXNlIEdFTjdfUENPREVfSUxMRUdBTF9E QVRBOgo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJY2FzZSBHRU43X1BDT0RFX01JTl9GUkVRX1RB QkxFX0dUX1JBVElPX09VVF9PRl9SQU5HRToKPiArCQlyZXR1cm4gLUVPVkVSRkxPVzsKPiArCWRl ZmF1bHQ6Cj4gKwkJTUlTU0lOR19DQVNFKG1ib3ggJiBHRU42X1BDT0RFX0VSUk9SX01BU0spOwo+ ICsJCXJldHVybiAwOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9fc2FuZHlicmlkZ2Vf cGNvZGVfcncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJCQkgIHUzMiBtYm94 LCB1MzIgKnZhbCwKPiArCQkJCSAgaW50IGZhc3RfdGltZW91dF91cywKPiArCQkJCSAgaW50IHNs b3dfdGltZW91dF9tcywKPiArCQkJCSAgYm9vbCBpc19yZWFkKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmk5MTUtPnNiX2xvY2spOwo+ICsKPiArCS8qCj4gKwkgKiBHRU42X1BDT0RFXyogYXJl IG91dHNpZGUgb2YgdGhlIGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgo+ICsJICogdXNlIHRlIGZ3 IEk5MTVfUkVBRCB2YXJpYW50cyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB3b3JrCj4gKwkgKiBy ZXF1aXJlZCB3aGVuIHJlYWRpbmcvd3JpdGluZy4KPiArCSAqLwo+ICsKPiArCWlmIChpbnRlbF91 bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEdFTjZfUENPREVfTUFJTEJPWCkgJiBHRU42X1BDT0RFX1JF QURZKQo+ICsJCXJldHVybiAtRUFHQUlOOwo+ICsKPiArCWludGVsX3VuY29yZV93cml0ZV9mdyh1 bmNvcmUsIEdFTjZfUENPREVfREFUQSwgKnZhbCk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGVfZnco dW5jb3JlLCBHRU42X1BDT0RFX0RBVEExLCAwKTsKPiArCWludGVsX3VuY29yZV93cml0ZV9mdyh1 bmNvcmUsCj4gKwkJCSAgICAgIEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9QQ09ERV9SRUFEWSB8 IG1ib3gpOwo+ICsKPiArCWlmIChfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KHVuY29yZSwK PiArCQkJCQkgR0VONl9QQ09ERV9NQUlMQk9YLAo+ICsJCQkJCSBHRU42X1BDT0RFX1JFQURZLCAw LAo+ICsJCQkJCSBmYXN0X3RpbWVvdXRfdXMsCj4gKwkJCQkJIHNsb3dfdGltZW91dF9tcywKPiAr CQkJCQkgJm1ib3gpKQo+ICsJCXJldHVybiAtRVRJTUVET1VUOwo+ICsKPiArCWlmIChpc19yZWFk KQo+ICsJCSp2YWwgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEdFTjZfUENPREVfREFU QSk7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihpOTE1KSA+IDYpCj4gKwkJcmV0dXJuIGdlbjdfY2hl Y2tfbWFpbGJveF9zdGF0dXMobWJveCk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGdlbjZfY2hlY2tf bWFpbGJveF9zdGF0dXMobWJveCk7Cj4gK30KPiArCj4gK2ludCBzYW5keWJyaWRnZV9wY29kZV9y ZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWJveCwgdTMyICp2YWwpCj4g K3sKPiArCWludCBlcnI7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmaTkxNS0+c2JfbG9jayk7Cj4gKwll cnIgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KGk5MTUsIG1ib3gsIHZhbCwKPiArCQkJCSAgICAg NTAwLCAwLAo+ICsJCQkJICAgICB0cnVlKTsKPiArCW11dGV4X3VubG9jaygmaTkxNS0+c2JfbG9j ayk7Cj4gKwo+ICsJaWYgKGVycikgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBj b2RlIChyZWFkIGZyb20gbWJveCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHM6ICVk XG4iLAo+ICsJCQkJIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgZXJyKTsKPiAr CX0KPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgc2FuZHlicmlkZ2VfcGNvZGVf d3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJCSAgICB1 MzIgbWJveCwgdTMyIHZhbCwKPiArCQkJCSAgICBpbnQgZmFzdF90aW1lb3V0X3VzLAo+ICsJCQkJ ICAgIGludCBzbG93X3RpbWVvdXRfbXMpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJbXV0ZXhf bG9jaygmaTkxNS0+c2JfbG9jayk7Cj4gKwllcnIgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3J3KGk5 MTUsIG1ib3gsICZ2YWwsCj4gKwkJCQkgICAgIGZhc3RfdGltZW91dF91cywgc2xvd190aW1lb3V0 X21zLAo+ICsJCQkJICAgICBmYWxzZSk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPnNiX2xvY2sp Owo+ICsKPiArCWlmIChlcnIpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29k ZSAod3JpdGUgb2YgMHglMDh4IHRvIG1ib3ggJXgpIG1haWxib3ggYWNjZXNzIGZhaWxlZCBmb3Ig JXBzOiAlZFxuIiwKPiArCQkJCSB2YWwsIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgZXJyKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9v bCBza2xfcGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUz MiBtYm94LAo+ICsJCQkJICB1MzIgcmVxdWVzdCwgdTMyIHJlcGx5X21hc2ssIHUzMiByZXBseSwK PiArCQkJCSAgdTMyICpzdGF0dXMpCj4gK3sKPiArCSpzdGF0dXMgPSBfX3NhbmR5YnJpZGdlX3Bj b2RlX3J3KGk5MTUsIG1ib3gsICZyZXF1ZXN0LAo+ICsJCQkJCSA1MDAsIDAsCj4gKwkJCQkJIHRy dWUpOwo+ICsKPiArCXJldHVybiAqc3RhdHVzIHx8ICgocmVxdWVzdCAmIHJlcGx5X21hc2spID09 IHJlcGx5KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHNrbF9wY29kZV9yZXF1ZXN0IC0gc2VuZCBQ Q09ERSByZXF1ZXN0IHVudGlsIGFja25vd2xlZGdtZW50Cj4gKyAqIEBpOTE1OiBkZXZpY2UgcHJp dmF0ZQo+ICsgKiBAbWJveDogUENPREUgbWFpbGJveCBJRCB0aGUgcmVxdWVzdCBpcyB0YXJnZXRl ZCBmb3IKPiArICogQHJlcXVlc3Q6IHJlcXVlc3QgSUQKPiArICogQHJlcGx5X21hc2s6IG1hc2sg dXNlZCB0byBjaGVjayBmb3IgcmVxdWVzdCBhY2tub3dsZWRnbWVudAo+ICsgKiBAcmVwbHk6IHZh bHVlIHVzZWQgdG8gY2hlY2sgZm9yIHJlcXVlc3QgYWNrbm93bGVkZ21lbnQKPiArICogQHRpbWVv dXRfYmFzZV9tczogdGltZW91dCBmb3IgcG9sbGluZyB3aXRoIHByZWVtcHRpb24gZW5hYmxlZAo+ ICsgKgo+ICsgKiBLZWVwIHJlc2VuZGluZyB0aGUgQHJlcXVlc3QgdG8gQG1ib3ggdW50aWwgUENP REUgYWNrbm93bGVkZ2VzIGl0LCBQQ09ERQo+ICsgKiByZXBvcnRzIGFuIGVycm9yIG9yIGFuIG92 ZXJhbGwgdGltZW91dCBvZiBAdGltZW91dF9iYXNlX21zKzUwIG1zIGV4cGlyZXMuCj4gKyAqIFRo ZSByZXF1ZXN0IGlzIGFja25vd2xlZGdlZCBvbmNlIHRoZSBQQ09ERSByZXBseSBkd29yZCBlcXVh bHMgQHJlcGx5IGFmdGVyCj4gKyAqIGFwcGx5aW5nIEByZXBseV9tYXNrLiBQb2xsaW5nIGlzIGZp cnN0IGF0dGVtcHRlZCB3aXRoIHByZWVtcHRpb24gZW5hYmxlZAo+ICsgKiBmb3IgQHRpbWVvdXRf YmFzZV9tcyBhbmQgaWYgdGhpcyB0aW1lcyBvdXQgZm9yIGFub3RoZXIgNTAgbXMgd2l0aAo+ICsg KiBwcmVlbXB0aW9uIGRpc2FibGVkLgo+ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywg JS1FVElNRURPVVQgaW4gY2FzZSBvZiBhIHRpbWVvdXQsIDwwIGluIGNhc2Ugb2Ygc29tZQo+ICsg KiBvdGhlciBlcnJvciBhcyByZXBvcnRlZCBieSBQQ09ERS4KPiArICovCj4gK2ludCBza2xfcGNv ZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIG1ib3gsIHUzMiBy ZXF1ZXN0LAo+ICsJCSAgICAgIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHksIGludCB0aW1lb3V0 X2Jhc2VfbXMpCj4gK3sKPiArCXUzMiBzdGF0dXM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW11dGV4 X2xvY2soJmk5MTUtPnNiX2xvY2spOwo+ICsKPiArI2RlZmluZSBDT05EIFwKPiArCXNrbF9wY29k ZV90cnlfcmVxdWVzdChpOTE1LCBtYm94LCByZXF1ZXN0LCByZXBseV9tYXNrLCByZXBseSwgJnN0 YXR1cykKPiArCj4gKwkvKgo+ICsJICogUHJpbWUgdGhlIFBDT0RFIGJ5IGRvaW5nIGEgcmVxdWVz dCBmaXJzdC4gTm9ybWFsbHkgaXQgZ3VhcmFudGVlcwo+ICsJICogdGhhdCBhIHN1YnNlcXVlbnQg cmVxdWVzdCwgYXQgbW9zdCBAdGltZW91dF9iYXNlX21zIGxhdGVyLCBzdWNjZWVkcy4KPiArCSAq IF93YWl0X2ZvcigpIGRvZXNuJ3QgZ3VhcmFudGVlIHdoZW4gaXRzIHBhc3NlZCBjb25kaXRpb24g aXMgZXZhbHVhdGVkCj4gKwkgKiBmaXJzdCwgc28gc2VuZCB0aGUgZmlyc3QgcmVxdWVzdCBleHBs aWNpdGx5Lgo+ICsJICovCj4gKwlpZiAoQ09ORCkgewo+ICsJCXJldCA9IDA7Cj4gKwkJZ290byBv dXQ7Cj4gKwl9Cj4gKwlyZXQgPSBfd2FpdF9mb3IoQ09ORCwgdGltZW91dF9iYXNlX21zICogMTAw MCwgMTAsIDEwKTsKPiArCWlmICghcmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8qCj4gKwkg KiBUaGUgYWJvdmUgY2FuIHRpbWUgb3V0IGlmIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgd2FzIGxv dyAoMiBpbiB0aGUKPiArCSAqIHdvcnN0IGNhc2UpIF9hbmRfIFBDT0RFIHdhcyBidXN5IGZvciBz b21lIHJlYXNvbiBldmVuIGFmdGVyIGEKPiArCSAqIChxdWV1ZWQpIHJlcXVlc3QgYW5kIEB0aW1l b3V0X2Jhc2VfbXMgZGVsYXkuIEFzIGEgd29ya2Fyb3VuZCByZXRyeQo+ICsJICogdGhlIHBvbGwg d2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkIHRvIG1heGltaXplIHRoZSBudW1iZXIgb2YKPiArCSAq IHJlcXVlc3RzLiBJbmNyZWFzZSB0aGUgdGltZW91dCBmcm9tIEB0aW1lb3V0X2Jhc2VfbXMgdG8g NTBtcyB0bwo+ICsJICogYWNjb3VudCBmb3IgaW50ZXJydXB0cyB0aGF0IGNvdWxkIHJlZHVjZSB0 aGUgbnVtYmVyIG9mIHRoZXNlCj4gKwkgKiByZXF1ZXN0cywgYW5kIGZvciBhbnkgcXVpcmtzIG9m IHRoZSBQQ09ERSBmaXJtd2FyZSB0aGF0IGRlbGF5cwo+ICsJICogdGhlIHJlcXVlc3QgY29tcGxl dGlvbi4KPiArCSAqLwo+ICsJRFJNX0RFQlVHX0tNUygiUENPREUgdGltZW91dCwgcmV0cnlpbmcg d2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkXG4iKTsKPiArCVdBUk5fT05fT05DRSh0aW1lb3V0X2Jh c2VfbXMgPiAzKTsKPiArCXByZWVtcHRfZGlzYWJsZSgpOwo+ICsJcmV0ID0gd2FpdF9mb3JfYXRv bWljKENPTkQsIDUwKTsKPiArCXByZWVtcHRfZW5hYmxlKCk7Cj4gKwo+ICtvdXQ6Cj4gKwltdXRl eF91bmxvY2soJmk5MTUtPnNiX2xvY2spOwo+ICsJcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsK PiArI3VuZGVmIENPTkQKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zaWRlYmFuZC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuaAo+ IGluZGV4IDlkMzZiZGMxNzk1NS4uYTA5MDdlMmM0OTkyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zaWRlYmFuZC5oCj4gQEAgLTEyNyw0ICsxMjcsMTQgQEAgdTMyIGludGVsX3NiaV9y ZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MTYgcmVnLAo+ICB2b2lkIGludGVs X3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTE2IHJlZywgdTMyIHZh bHVlLAo+ICAJCSAgICAgZW51bSBpbnRlbF9zYmlfZGVzdGluYXRpb24gZGVzdGluYXRpb24pOwo+ ICAKPiAraW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHUzMiBtYm94LCB1MzIgKnZhbCk7Cj4gK2ludCBzYW5keWJyaWRnZV9wY29kZV93cml0 ZV90aW1lb3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWJveCwKPiArCQkJ CSAgICB1MzIgdmFsLCBpbnQgZmFzdF90aW1lb3V0X3VzLAo+ICsJCQkJICAgIGludCBzbG93X3Rp bWVvdXRfbXMpOwo+ICsjZGVmaW5lIHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGk5MTUsIG1ib3gs IHZhbCkJXAo+ICsJc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChpOTE1LCBtYm94LCB2 YWwsIDUwMCwgMCkKPiArCj4gK2ludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAo+ICsJCSAgICAgIHUzMiByZXBs eV9tYXNrLCB1MzIgcmVwbHksIGludCB0aW1lb3V0X2Jhc2VfbXMpOwo+ICsKPiAgI2VuZGlmIC8q IF9JTlRFTF9TSURFQkFORF9IICovCj4gLS0gCj4gMi4yMC4xCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOk CkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==