From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH v2 09/10] drm/i915: add uncore flags Date: Tue, 19 Mar 2019 18:28:30 -0700 Message-ID: <366624a1-98ea-e040-e3c0-bfce310f38f4@intel.com> References: <20190319183543.13679-1-daniele.ceraolospurio@intel.com> <20190319183543.13679-10-daniele.ceraolospurio@intel.com> <53d0da523c70307e86465e8e0455eb6b55d50193.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id ABA2389AA6 for ; Wed, 20 Mar 2019 01:28:32 +0000 (UTC) In-Reply-To: <53d0da523c70307e86465e8e0455eb6b55d50193.camel@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAzLzE5LzE5IDU6NTYgUE0sIFBhdWxvIFphbm9uaSB3cm90ZToKPiBFbSB0ZXIsIDIwMTkt MDMtMTkgw6BzIDExOjM1IC0wNzAwLCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIGVzY3JldmV1Ogo+ PiBTYXZlIHNvbWUgdW5jb3JlIHByb3BlcnRpZXMgdG8gYXZvaWQgaGF2aW5nIHRvIGp1bXAgYmFj ayB0bwo+PiBkZXZfcHJpdiBldmVyeSB0aW1lCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IERhbmllbGUg Q2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+IENjOiBQ YXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgIDQgKy0KPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgfCAgMiArLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jICAgICAgICB8ICAyICstCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgICAgIHwgODIgKysrKysr KysrKy0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oICAg ICAgICAgICB8IDEwICsrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF91bmNvcmUuYyB8IDE1ICsrLS0KPj4gICA2IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMo KyksIDUwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gaW5kZXgg Y2E0MWEzZGExOTE4Li5jNjA5YmNhYzg1NzcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+PiBAQCAtMjg0OSw3ICsyODQ5LDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqa2RldikKPj4gICAJZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMo ZGV2X3ByaXYpOwo+PiAgIAlpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoZGV2X3ByaXYpOwo+PiAg IAo+PiAtCWlmIChpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihkZXZf cHJpdikpCj4+ICsJaWYgKGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9u KCZkZXZfcHJpdi0+dW5jb3JlKSkKPj4gICAJCURSTV9FUlJPUigiVW5jbGFpbWVkIGFjY2VzcyBk ZXRlY3RlZCBwcmlvciB0byBzdXNwZW5kaW5nXG4iKTsKPj4gICAKPj4gICAJZGV2X3ByaXYtPnJ1 bnRpbWVfcG0uc3VzcGVuZGVkID0gdHJ1ZTsKPj4gQEAgLTI5MDMsNyArMjkwMyw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqa2RldikKPj4gICAKPj4g ICAJaW50ZWxfb3ByZWdpb25fbm90aWZ5X2FkYXB0ZXIoZGV2X3ByaXYsIFBDSV9EMCk7Cj4+ICAg CWRldl9wcml2LT5ydW50aW1lX3BtLnN1c3BlbmRlZCA9IGZhbHNlOwo+PiAtCWlmIChpbnRlbF91 bmNvcmVfdW5jbGFpbWVkX21taW8oZGV2X3ByaXYpKQo+PiArCWlmIChpbnRlbF91bmNvcmVfdW5j bGFpbWVkX21taW8oJmRldl9wcml2LT51bmNvcmUpKQo+PiAgIAkJRFJNX0RFQlVHX0RSSVZFUigi VW5jbGFpbWVkIGFjY2VzcyBkdXJpbmcgc3VzcGVuZCwgYmlvcz9cbiIpOwo+PiAgIAo+PiAgIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4+IGluZGV4IGQ0ZmNhZDEzNjEyMC4uY2ZlMzc5ZTkzOGU2IDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0xMzUxNyw3ICsxMzUxNyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4+ICAgCQkgKiBzbyBlbmFibGUgZGVidWdnaW5nIGZvciB0aGUgbmV4dCBt b2Rlc2V0IC0gYW5kIGhvcGUgd2UgY2F0Y2gKPj4gICAJCSAqIHRoZSBjdWxwcml0Lgo+PiAgIAkJ ICovCj4+IC0JCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKGRldl9w cml2KTsKPj4gKwkJaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oJmRl dl9wcml2LT51bmNvcmUpOwo+PiAgIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9NT0RFU0VULCB3YWtlcmVmKTsKPj4gICAJfQo+PiAgIAo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+PiBpbmRleCA1N2VkNDlkYzE5YzQuLjEyNTY2 MmM2NDkzNCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2No ZWNrLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPj4g QEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVja19lbGFwc2VkKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gICAJICogcGVyaW9kaWNhbGx5IGFybSB0aGUgbW1p byBjaGVja2VyIHRvIHNlZSBpZiB3ZSBhcmUgdHJpZ2dlcmluZwo+PiAgIAkgKiBhbnkgaW52YWxp ZCBhY2Nlc3MuCj4+ICAgCSAqLwo+PiAtCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9f ZGV0ZWN0aW9uKGRldl9wcml2KTsKPj4gKwlpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlv X2RldGVjdGlvbigmZGV2X3ByaXYtPnVuY29yZSk7Cj4+ICAgCj4+ICAgCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+PiAgIAkJc3RydWN0IGhhbmdjaGVjayBoYzsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gaW5kZXggMTgxNmVlYWUzYmE5Li4yNmIy OGFmYjQ1MDAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29y ZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4+IEBAIC01 MDksMTggKzUwOSwxNyBAQCBnZW42X2NoZWNrX2Zvcl9maWZvX2RlYnVnKHN0cnVjdCBpbnRlbF91 bmNvcmUgKnVuY29yZSkKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGJvb2wKPj4gLWNoZWNrX2Zv cl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICtj aGVja19mb3JfdW5jbGFpbWVkX21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiAg IHsKPj4gLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsK Pj4gICAJYm9vbCByZXQgPSBmYWxzZTsKPj4gICAKPj4gLQlpZiAoSEFTX0ZQR0FfREJHX1VOQ0xB SU1FRChkZXZfcHJpdikpCj4+ICsJaWYgKHVuY29yZS0+ZmxhZ3MgJiBVTkNPUkVfSEFTX0ZQR0Ff REJHX1VOQ0xBSU1FRCkKPj4gICAJCXJldCB8PSBmcGdhX2NoZWNrX2Zvcl91bmNsYWltZWRfbW1p byh1bmNvcmUpOwo+PiAgIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAodW5jb3JlLT5mbGFncyAmIFVOQ09SRV9IQVNf REJHX1VOQ0xBSU1FRCkKPj4gICAJCXJldCB8PSB2bHZfY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlv KHVuY29yZSk7Cj4+ICAgCj4+IC0JaWYgKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykpCj4+ ICsJaWYgKHVuY29yZS0+ZmxhZ3MgJiBVTkNPUkVfSEFTX0ZJRk8pCj4+ICAgCQlyZXQgfD0gZ2Vu Nl9jaGVja19mb3JfZmlmb19kZWJ1Zyh1bmNvcmUpOwo+PiAgIAo+PiAgIAlyZXR1cm4gcmV0Owo+ PiBAQCAtNTI5LDE0ICs1MjgsMTIgQEAgY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICBzdGF0aWMgdm9pZCBfX2ludGVsX3VuY29y ZV9lYXJseV9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4+ICAgCQkJCQkg IHVuc2lnbmVkIGludCByZXN0b3JlX2ZvcmNld2FrZSkKPj4gICB7Cj4+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmVfdG9faTkxNSh1bmNvcmUpOwo+PiAtCj4+ICAgCS8q IGNsZWFyIG91dCB1bmNsYWltZWQgcmVnIGRldGVjdGlvbiBiaXQgKi8KPj4gLQlpZiAoY2hlY2tf Zm9yX3VuY2xhaW1lZF9tbWlvKGk5MTUpKQo+PiArCWlmIChjaGVja19mb3JfdW5jbGFpbWVkX21t aW8odW5jb3JlKSkKPj4gICAJCURSTV9ERUJVRygidW5jbGFpbWVkIG1taW8gZGV0ZWN0ZWQgb24g dW5jb3JlIGluaXQsIGNsZWFyaW5nXG4iKTsKPj4gICAKPj4gICAJLyogV2FEaXNhYmxlU2hhZG93 UmVnRm9yQ3BkOmNodiAqLwo+PiAtCWlmIChJU19DSEVSUllWSUVXKGk5MTUpKSB7Cj4+ICsJaWYg KElTX0NIRVJSWVZJRVcodW5jb3JlX3RvX2k5MTUodW5jb3JlKSkpIHsKPj4gICAJCV9fcmF3X2k5 MTVfd3JpdGUzMih1bmNvcmUsIEdURklGT0NUTCwKPj4gICAJCQkJICAgX19yYXdfaTkxNV9yZWFk MzIodW5jb3JlLCBHVEZJRk9DVEwpIHwKPj4gICAJCQkJICAgR1RfRklGT19DVExfQkxPQ0tfQUxM X1BPTElDWV9TVEFMTCB8Cj4+IEBAIC01NDksNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgX19pbnRl bF91bmNvcmVfZWFybHlfc2FuaXRpemUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+PiAg IAkJc3Bpbl9sb2NrX2lycSgmdW5jb3JlLT5sb2NrKTsKPj4gICAJCXVuY29yZS0+ZnVuY3MuZm9y Y2Vfd2FrZV9nZXQodW5jb3JlLCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4+ICAgCj4+IC0JCWlmIChJ U19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4+ICsJCWlmICh1bmNvcmUtPmZsYWdzICYgVU5DT1JF X0hBU19GSUZPKQo+PiAgIAkJCXVuY29yZS0+Zmlmb19jb3VudCA9IGZpZm9fZnJlZV9lbnRyaWVz KHVuY29yZSk7Cj4+ICAgCQlzcGluX3VubG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4+ICAgCX0K Pj4gQEAgLTY2OCwxMiArNjY1LDEwIEBAIHZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2Vy X2dldChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICAgICovCj4+ICAgdm9pZCBpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkK Pj4gICB7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmVfdG9faTkx NSh1bmNvcmUpOwo+PiAtCj4+ICAgCXNwaW5fbG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4+ICAg CWlmICghLS11bmNvcmUtPnVzZXJfZm9yY2V3YWtlLmNvdW50KSB7Cj4+IC0JCWlmIChpbnRlbF91 bmNvcmVfdW5jbGFpbWVkX21taW8oaTkxNSkpCj4+IC0JCQlkZXZfaW5mbyhpOTE1LT5kcm0uZGV2 LAo+PiArCQlpZiAoaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHVuY29yZSkpCj4+ICsJCQlk ZXZfaW5mbyh1bmNvcmVfdG9faTkxNSh1bmNvcmUpLT5kcm0uZGV2LAo+PiAgIAkJCQkgIkludmFs aWQgbW1pbyBkZXRlY3RlZCBkdXJpbmcgdXNlciBhY2Nlc3NcbiIpOwo+PiAgIAo+PiAgIAkJdW5j b3JlLT51bmNsYWltZWRfbW1pb19jaGVjayA9Cj4+IEBAIC0xMDcyLDEyICsxMDY3LDEyIEBAIGls a19kdW1teV93cml0ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICAgfQo+PiAgIAo+ PiAgIHN0YXRpYyB2b2lkCj4+IC1fX3VuY2xhaW1lZF9yZWdfZGVidWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+PiArX191bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSwKPj4gICAJCSAgICAgIGNvbnN0IGk5MTVfcmVnX3QgcmVnLAo+PiAg IAkJICAgICAgY29uc3QgYm9vbCByZWFkLAo+PiAgIAkJICAgICAgY29uc3QgYm9vbCBiZWZvcmUp Cj4+ICAgewo+PiAtCWlmIChXQVJOKGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdikg JiYgIWJlZm9yZSwKPj4gKwlpZiAoV0FSTihjaGVja19mb3JfdW5jbGFpbWVkX21taW8odW5jb3Jl KSAmJiAhYmVmb3JlLAo+PiAgIAkJICJVbmNsYWltZWQgJXMgcmVnaXN0ZXIgMHgleFxuIiwKPj4g ICAJCSByZWFkID8gInJlYWQgZnJvbSIgOiAid3JpdGUgdG8iLAo+PiAgIAkJIGk5MTVfbW1pb19y ZWdfb2Zmc2V0KHJlZykpKQo+PiBAQCAtMTA4Niw3ICsxMDgxLDcgQEAgX191bmNsYWltZWRfcmVn X2RlYnVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICB9Cj4+ICAgCj4+ ICAgc3RhdGljIGlubGluZSB2b2lkCj4+IC11bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gK3VuY2xhaW1lZF9yZWdfZGVidWcoc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlLAo+PiAgIAkJICAgIGNvbnN0IGk5MTVfcmVnX3QgcmVnLAo+PiAg IAkJICAgIGNvbnN0IGJvb2wgcmVhZCwKPj4gICAJCSAgICBjb25zdCBib29sIGJlZm9yZSkKPj4g QEAgLTEwOTQsNyArMTA4OSw3IEBAIHVuY2xhaW1lZF9yZWdfZGVidWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAlpZiAobGlrZWx5KCFpOTE1X21vZHBhcmFtcy5tbWlv X2RlYnVnKSkKPj4gICAJCXJldHVybjsKPj4gICAKPj4gLQlfX3VuY2xhaW1lZF9yZWdfZGVidWco ZGV2X3ByaXYsIHJlZywgcmVhZCwgYmVmb3JlKTsKPj4gKwlfX3VuY2xhaW1lZF9yZWdfZGVidWco dW5jb3JlLCByZWcsIHJlYWQsIGJlZm9yZSk7Cj4+ICAgfQo+PiAgIAo+PiAgICNkZWZpbmUgR0VO Ml9SRUFEX0hFQURFUih4KSBcCj4+IEBAIC0xMTQ1LDEwICsxMTQwLDEwIEBAIF9fZ2VuMl9yZWFk KDY0KQo+PiAgIAl1IyN4IHZhbCA9IDA7IFwKPj4gICAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxk KGRldl9wcml2KTsgXAo+PiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmdW5jb3JlLT5sb2NrLCBpcnFm bGFncyk7IFwKPj4gLQl1bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIHRydWUsIHRy dWUpCj4+ICsJdW5jbGFpbWVkX3JlZ19kZWJ1Zyh1bmNvcmUsIHJlZywgdHJ1ZSwgdHJ1ZSkKPj4g ICAKPj4gICAjZGVmaW5lIEdFTjZfUkVBRF9GT09URVIgXAo+PiAtCXVuY2xhaW1lZF9yZWdfZGVi dWcoZGV2X3ByaXYsIHJlZywgdHJ1ZSwgZmFsc2UpOyBcCj4+ICsJdW5jbGFpbWVkX3JlZ19kZWJ1 Zyh1bmNvcmUsIHJlZywgdHJ1ZSwgZmFsc2UpOyBcCj4+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnVuY29yZS0+bG9jaywgaXJxZmxhZ3MpOyBcCj4+ICAgCXRyYWNlX2k5MTVfcmVnX3J3KGZh bHNlLCByZWcsIHZhbCwgc2l6ZW9mKHZhbCksIHRyYWNlKTsgXAo+PiAgIAlyZXR1cm4gdmFsCj4+ IEBAIC0xMjU5LDEwICsxMjU0LDEwIEBAIF9fZ2VuMl93cml0ZSgzMikKPj4gICAJdHJhY2VfaTkx NV9yZWdfcncodHJ1ZSwgcmVnLCB2YWwsIHNpemVvZih2YWwpLCB0cmFjZSk7IFwKPj4gICAJYXNz ZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsgXAo+PiAgIAlzcGluX2xvY2tfaXJxc2F2 ZSgmdW5jb3JlLT5sb2NrLCBpcnFmbGFncyk7IFwKPj4gLQl1bmNsYWltZWRfcmVnX2RlYnVnKGRl dl9wcml2LCByZWcsIGZhbHNlLCB0cnVlKQo+PiArCXVuY2xhaW1lZF9yZWdfZGVidWcodW5jb3Jl LCByZWcsIGZhbHNlLCB0cnVlKQo+PiAgIAo+PiAgICNkZWZpbmUgR0VONl9XUklURV9GT09URVIg XAo+PiAtCXVuY2xhaW1lZF9yZWdfZGVidWcoZGV2X3ByaXYsIHJlZywgZmFsc2UsIGZhbHNlKTsg XAo+PiArCXVuY2xhaW1lZF9yZWdfZGVidWcodW5jb3JlLCByZWcsIGZhbHNlLCBmYWxzZSk7IFwK Pj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdW5jb3JlLT5sb2NrLCBpcnFmbGFncykKPj4g ICAKPj4gICAjZGVmaW5lIF9fZ2VuNl93cml0ZSh4KSBcCj4+IEBAIC0xMzkxLDcgKzEzODYsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBpbnRlbF91 bmNvcmUgKnVuY29yZSkKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdW5jb3JlX3RvX2k5MTUodW5jb3JlKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGk5MTUp IDw9IDUgfHwgaW50ZWxfdmdwdV9hY3RpdmUoaTkxNSkpCj4+ICsJaWYgKCEodW5jb3JlLT5mbGFn cyAmIFVOQ09SRV9IQVNfRk9SQ0VXQUtFKSkKPj4gICAJCXJldHVybjsKPj4gICAKPj4gICAJaWYg KElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewo+PiBAQCAtMTU5MCw2ICsxNTg1LDkgQEAgaW50IGlu dGVsX3VuY29yZV9pbml0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPj4gICAKPj4gICAJ aTkxNV9jaGVja192Z3B1KGk5MTUpOwo+PiAgIAo+PiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPiA1 ICYmICFpbnRlbF92Z3B1X2FjdGl2ZShpOTE1KSkKPj4gKwkJdW5jb3JlLT5mbGFncyB8PSBVTkNP UkVfSEFTX0ZPUkNFV0FLRTsKPj4gKwo+PiAgIAlpbnRlbF91bmNvcmVfZWRyYW1fZGV0ZWN0KGk5 MTUpOwo+PiAgIAlpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHVuY29yZSk7Cj4+ICAgCV9f aW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0aXplKHVuY29yZSwgMCk7Cj4+IEBAIC0xNTk4LDEyICsx NTk2LDE0IEBAIGludCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpCj4+ICAgCXVuY29yZS0+cG1pY19idXNfYWNjZXNzX25iLm5vdGlmaWVyX2NhbGwgPQo+PiAg IAkJaTkxNV9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXI7Cj4+ICAgCj4+IC0JaWYgKElTX0dFTl9S QU5HRShpOTE1LCAyLCA0KSB8fCBpbnRlbF92Z3B1X2FjdGl2ZShpOTE1KSkgewo+PiAtCQlBU1NJ R05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPj4gLQkJQVNTSUdOX1JFQURfTU1J T19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPj4gLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA1KSkg ewo+PiAtCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPj4gLQkJQVNT SUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPj4gKwlpZiAoISh1bmNvcmUtPmZs YWdzICYgVU5DT1JFX0hBU19GT1JDRVdBS0UpKSB7Cj4gCj4gVGhpcyBjaGFuZ2VzIHRoZSBiZWhh dmlvciB3aGVuIGl0J3MgZ2VuNSBhbmQgdmdwdSBpcyBhY3RpdmUuIElzIHRoaXMKPiBldmVuIHBv c3NpYmxlPyBJZiBub3QsIHdpbGwgaXQgZXZlciBiZT8gV2hldGhlciBpbnRlbnRpb25hbCBvciBu b3QsCj4gcGVyaGFwcyBpdCBuZWVkcyB0byBiZSBpbiBhIHNlcGFyYXRlIHBhdGNoLgoKSXQgc2hv dWxkbid0IGJlIHBvc3NpYmxlLCBHVlQgaXMgZ2VuOCsuIEdlbjUgZG9lc24ndCBoYXZlIFBQR1RU IHNvIGl0IGlzIApub3Qgc29tZXRoaW5nIHlvdSBjYW4gcnVuIHZpcnR1YWxpemF0aW9uIG9uIGFu ZCB0aGF0IGlzIHdoeSBJIGRpZG4ndCAKY2FyZSBvZiB0aGF0IGNhc2UuCgo+IAo+IFNpbmNlIHRo aXMgaXMgc3RpbGwgdGhlIGluaXQgZnVuY3Rpb24sIG1heWJlIHdlIGRvbid0IGV2ZW4gbmVlZCB0 aGlzCj4gY2hhbmdlLgoKVHJ1ZSwgSSBqdXN0IHRob3VnaHQgdGhhdCBzaW5jZSBJIGhhZCB0aGUg ZmxhZyBJIGNvdWxkIG1ha2UgdXNlIG9mIGl0IHRvIApyZW1vdmUgc29tZSByZWR1bmRhbnQgY2hl Y2tzIDpQCgo+IAo+IAo+PiArCQlpZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4+ICsJCQlBU1NJR05f V1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPj4gKwkJCUFTU0lHTl9SRUFEX01NSU9f VkZVTkNTKHVuY29yZSwgZ2VuNSk7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlBU1NJR05fV1JJVEVf TU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPj4gKwkJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNT KHVuY29yZSwgZ2VuMik7Cj4+ICsJCX0KPj4gICAJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoaTkx NSwgNiwgNykpIHsKPj4gICAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjYp Owo+PiAgIAo+PiBAQCAtMTYzMyw2ICsxNjMzLDE1IEBAIGludCBpbnRlbF91bmNvcmVfaW5pdChz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICAgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5D Uyh1bmNvcmUsIGdlbjExX2Z3dGFibGUpOwo+PiAgIAl9Cj4+ICAgCj4+ICsJaWYgKEhBU19GUEdB X0RCR19VTkNMQUlNRUQoaTkxNSkpCj4+ICsJCXVuY29yZS0+ZmxhZ3MgfD0gVU5DT1JFX0hBU19G UEdBX0RCR19VTkNMQUlNRUQ7Cj4+ICsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJ U19DSEVSUllWSUVXKGk5MTUpKQo+PiArCQl1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfREJH X1VOQ0xBSU1FRDsKPj4gKwo+PiArCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4+ICsJ CXVuY29yZS0+ZmxhZ3MgfD0gVU5DT1JFX0hBU19GSUZPOwo+PiArCj4+ICAgCWlvc2ZfbWJpX3Jl Z2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcigmdW5jb3JlLT5wbWljX2J1c19hY2Nlc3Nf bmIpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gQEAgLTE4NjQsMTUgKzE4NzMsMTQgQEAgaW50 IF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+PiAgIAlyZXR1cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gLWJvb2wgaW50ZWxfdW5jb3Jl X3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK2Jv b2wgaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZSkKPj4gICB7Cj4+IC0JcmV0dXJuIGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdik7 Cj4+ICsJcmV0dXJuIGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyh1bmNvcmUpOwo+PiAgIH0KPj4g ICAKPj4gICBib29sCj4+IC1pbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlv bihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICtpbnRlbF91bmNvcmVfYXJt X3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ ICAgewo+PiAtCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3Jl Owo+PiAgIAlib29sIHJldCA9IGZhbHNlOwo+PiAgIAo+PiAgIAlzcGluX2xvY2tfaXJxKCZ1bmNv cmUtPmxvY2spOwo+PiBAQCAtMTg4MCw3ICsxODg4LDcgQEAgaW50ZWxfdW5jb3JlX2FybV91bmNs YWltZWRfbW1pb19kZXRlY3Rpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ PiAgIAlpZiAodW5saWtlbHkodW5jb3JlLT51bmNsYWltZWRfbW1pb19jaGVjayA8PSAwKSkKPj4g ICAJCWdvdG8gb3V0Owo+PiAgIAo+PiAtCWlmICh1bmxpa2VseShpbnRlbF91bmNvcmVfdW5jbGFp bWVkX21taW8oZGV2X3ByaXYpKSkgewo+PiArCWlmICh1bmxpa2VseShpbnRlbF91bmNvcmVfdW5j bGFpbWVkX21taW8odW5jb3JlKSkpIHsKPj4gICAJCWlmICghaTkxNV9tb2RwYXJhbXMubW1pb19k ZWJ1Zykgewo+PiAgIAkJCURSTV9ERUJVRygiVW5jbGFpbWVkIHJlZ2lzdGVyIGRldGVjdGVkLCAi Cj4+ICAgCQkJCSAgImVuYWJsaW5nIG9uZXNob3QgdW5jbGFpbWVkIHJlZ2lzdGVyIHJlcG9ydGlu Zy4gIgo+PiBAQCAtMTkxMiw3ICsxOTIwLDcgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3Jf cmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCX0gZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICAgCQlmd19kb21haW5zID0gX19nZW42X3Jl Z19yZWFkX2Z3X2RvbWFpbnModW5jb3JlLCBvZmZzZXQpOwo+PiAgIAl9IGVsc2Ugewo+PiAtCQlX QVJOX09OKCFJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDIsIDUpKTsKPj4gKwkJV0FSTl9PTighKHVu Y29yZS0+ZmxhZ3MgJiBVTkNPUkVfSEFTX0ZPUkNFV0FLRSkpOwo+IAo+IFRoYXQgZG9lc24ndCBs b29rIGVxdWl2YWxlbnQuIElzbid0IGl0IGFsd2F5cyBnb25uYSBXQVJOIG5vdz8gR2VuIDItNQo+ IG5ldmVyIGhhcyB0aGUgZmxhZy4KCm9vb3BzLCB5b3UncmUgcmlnaHQgdGhlIGNoZWNrIGlzIHRo ZSB3cm9uZyB3YXkgYXJvdW5kCgo+IAo+IFRoZSB3aG9sZSBmdW5jdGlvbiBpcyBhYm91dCBjaGVj a2luZyBmb3IgZ2Vucywgd2hlbiB3ZSBzd2l0Y2ggdG8KPiBjaGVja2luZyB0aGUgZmxhZyB3ZSBt YWtlIGl0IGhhcmRlciB0byByZWFkLCBlc3BlY2lhbGx5IHNpbmNlIHRoZQo+IHJlYWRlciBub3cg aGFzIHRvIHRoaW5rIGFib3V0IHdoZXRoZXIgdmdwdV9hY3RpdmUoKSB3YXMgdHJ1ZSBkdXJpbmcK PiBpbml0aWFsaXphdGlvbi4gSSdtIG5vdCBzdXJlIHRoaXMgaXMgYW4gaW1wcm92ZW1lbnQuCgpJ J3ZlIHJlYWQgdGhpcyBjaGVjayBhcyAiaWYgd2UgZGlkbid0IG1hdGNoIGFueSBvZiB0aGUgYWJv dmUgY2FzZXMgb24gYSAKcGxhdGZvcm0gd2l0aCBmb3JjZXdha2UgdGhlbiB3ZSdyZSBtaXNzaW5n IHNvbWV0aGluZywgc28gd2FybiIsIGtpbmQgb2YgCmxpa2UgYSBNSVNTSU5HX0NBU0UgbWFjcm8u IFdoYXQgZ2VuIGlzIHRoZSBwbGF0Zm9ybSBvciB3aGV0aGVyIHdlJ3JlIG9uIAphIHZncHUgb3Ig bm90IGlzIG5vdCByZWFsbHkgc29tZXRoaW5nIHdlIGNhcmUgYWJvdXQgaGVyZSBJTU8uCgo+IAo+ PiAgIAkJZndfZG9tYWlucyA9IDA7Cj4+ICAgCX0KPj4gICAKPj4gQEAgLTE5MzgsNyArMTk0Niw3 IEBAIGludGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4gICAJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDYs IDcpKSB7Cj4+ICAgCQlmd19kb21haW5zID0gRk9SQ0VXQUtFX1JFTkRFUjsKPj4gICAJfSBlbHNl IHsKPj4gLQkJV0FSTl9PTighSVNfR0VOX1JBTkdFKGRldl9wcml2LCAyLCA1KSk7Cj4+ICsJCVdB Uk5fT04oISh1bmNvcmUtPmZsYWdzICYgVU5DT1JFX0hBU19GT1JDRVdBS0UpKTsKPiAKPiBTYW1l IGhlcmUuCj4gCgpvb29wcyB4MiA6UAoKPj4gICAJCWZ3X2RvbWFpbnMgPSAwOwo+PiAgIAl9Cj4+ ICAgCj4+IEBAIC0xOTY5LDcgKzE5NzcsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9y ZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAo+PiAgIAlXQVJOX09O KCFvcCk7Cj4+ICAgCj4+IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPj4gKwlp ZiAoIShkZXZfcHJpdi0+dW5jb3JlLmZsYWdzICYgVU5DT1JFX0hBU19GT1JDRVdBS0UpKQo+IAo+ IFRoaXMgY2hhbmdlcyB0aGUgdmdwdV9hY3RpdmUoKSBmcm9tIHNvbWV0aGluZyB5b3UgY2FsbCBh bGwgdGhlIHRpbWUgdG8KPiBhIHN0YXRpYyBjaGVjayB0aGF0IGlzIG9ubHkgZXZlciBjaGVja2Vk IGR1cmluZyBpbml0aWFsaXphdGlvbi4gQSBxdWljawo+IHJlYWQgYXQgdGhlIHZncHUgY29kZSBk b2VzIG5vdCB0ZWxsIG1lIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgdGhhdAo+IGNhbiBjaGFu Z2Ugb3ZlciB0aW1lIChpLmUuLCB0aGUgcmVzdWx0IGludGVsX3ZncHVfYWN0aXZlKCkgaXMgYWx3 YXlzCj4gdGhlIHNhbWUpLCBidXQgbXkgZmlyc3QgZ3Vlc3Mgd291bGQgYmUgdGhhdCBpdCBjb3Vs ZCBjaGFuZ2Ugb3ZlciB0aW1lLgoKQUZBSVUgaW50ZWxfdmdwdV9hY3RpdmUoKSB0ZWxscyB1cyB3 aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgb24gYSB2aXJ0dWFsIApHUFUgc28gaXQgY2FuJ3QgY2hhbmdl IGF0IHJ1bnRpbWUuCgo+IAo+IFN0aWxsLCB0aGlzIGlzIHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0 IHNob3VsZCBiZSBpbiBpdHMgb3duIHBhdGNoIGlmCj4gaXQncyBhIGJlaGF2aW9yIGNoYW5nZSBh bmQgbm90IGp1c3QgYSByZXdvcmsgaW4gZnVuY3Rpb24gYXJndW1lbnRzLgo+IAoKSSdsbCBzcGxp dCBpdCBvdXQKCj4gLQo+IAo+IE92ZXJhbGwsIEknbSBub3Qgc3VwZXIgc29sZCBpbiB0aGUgY3Vy cmVudCBhcHByb2FjaCBvZiB0aGUgcGF0Y2guCj4gUGVyaGFwcyBpdCdzIGZpbmUgdG8gYWN0dWFs bHkgY2FsbCB1bmNvcmVfdG9faTkxNSgpIGluIHRoZSBmdW5jdGlvbnMKPiB0aGF0IG5lZWQgdG8g ZG8gZ2VuIG9yIGZlYXR1cmUgY2hlY2tzIChlLmcuLAo+IGNoZWNrX2Zvcl91bmNsYWltZWRfbW1p bygpKS4gTWF5YmUgaW5zdGVhZCBvZiBhZGRpbmcgdGhlIGZsYWdzIGFuZAo+IGNvbnZlcnRpbmcg ZXZlcnl0aGluZyB0byBpbnRlbF91bmNvcmUgd2Ugc2hvdWxkIGtlZXAgdGhlIGNvbnZlcnNpb24g b2YKPiBldmVyeXRoaW5nIHRvIGludGVsX3VuY29yZSBhbmQgdGhlbiB1c2UgdW5jb3JlX3RvX2k5 MTUoKSB3aGVuIG5lZWRlZC4KPiAKPiBJJ20gbm90IGFnYWluc3QgdGhlIHBhdGNoLCBidXQgd2Ug YXQgbGVhc3QgbmVlZCB0byBzb3J0IG91dCB0aGUKPiBwb3NzaWJsZSBiZWhhdmlvciBjaGFuZ2Vz IChvciBnbyB0aGUgZWFzaWVyIHdheSB0byBqdXN0IGNvbnZlcnQgYWxsCj4gdGhlc2UgZnVuY3Rp b25zIGFuZCB0aGVuIHVzZSB1bmNvcmVfdG9faTkxNSgpIHdoZW4gbmVlZGVkKS4KCkkganVzdCB3 YW50ZWQgdG8gcmVkdWNlIHRoZSBjYWxscyB0byB1bmNvcmVfdG9faTkxNSBhcyBtdWNoIGFzIHBv c3NpYmxlIApmb3IgZXh0cmEgZW5jYXBzdWxhdGlvbi4gTXkgZ29hbCBpcyB0byBoYXZlIG5vIGRl dl9wcml2IGludm9sdm1lbnQgaXMgCnRoZSBmdWxsIHJlYWQvd3JpdGUgZmxvdyBhdCB0aGUgZW5k IG9mIHRoZSByZXdvcmssIGJ1dCBpZiB0aGUgZ2VuZXJhbCAKY29uc2Vuc3VzIGlzIHRvIHVzZSB1 bmNvcmVfdG9faTkxNSgpIGluc3RlYWQgSSBkb24ndCBtaW5kIHN3aXRjaGluZyB0byB0aGF0LgoK VGhhbmtzIGZvciB0aGUgZmVlZGJhY2shCkRhbmllbGUKCj4gCj4gSGF2aW5nIG1vcmUgb3Bpbmlv bnMgb24gdGhlIGRlc2lnbiB3b3VsZCBwcm9iYWJseSBoZWxwLiBQaW5nIEBldmVyeW9uZS4KPiAK Pj4gICAJCXJldHVybiAwOwo+PiAgIAo+PiAgIAlpZiAob3AgJiBGV19SRUdfUkVBRCkKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgKPj4gaW5kZXggZDM0NWU1YWIwNGE1Li42ZGY2NTg2 YmI2MDMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5o Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oCj4+IEBAIC0xMjcs NiArMTI3LDEyIEBAIHN0cnVjdCBpbnRlbF91bmNvcmUgewo+PiAgIAl9IHVzZXJfZm9yY2V3YWtl Owo+PiAgIAo+PiAgIAlpbnQgdW5jbGFpbWVkX21taW9fY2hlY2s7Cj4+ICsKPj4gKwl1MzIgZmxh Z3M7Cj4+ICsjZGVmaW5lIFVOQ09SRV9IQVNfRk9SQ0VXQUtFCQlCSVQoMCkKPj4gKyNkZWZpbmUg VU5DT1JFX0hBU19GUEdBX0RCR19VTkNMQUlNRUQJQklUKDEpCj4+ICsjZGVmaW5lIFVOQ09SRV9I QVNfREJHX1VOQ0xBSU1FRAlCSVQoMikKPj4gKyNkZWZpbmUgVU5DT1JFX0hBU19GSUZPCQkJQklU KDMpCj4+ICAgfTsKPj4gICAKPj4gICAvKiBJdGVyYXRlIG92ZXIgaW5pdGlhbGlzZWQgZncgZG9t YWlucyAqLwo+PiBAQCAtMTQ2LDggKzE1Miw4IEBAIGZvcmNld2FrZV9kb21haW5fdG9fdW5jb3Jl KGNvbnN0IHN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiAqZCkKPj4gICB2b2lk IGludGVsX3VuY29yZV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+PiAgIGludCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUp Owo+PiAgIHZvaWQgaW50ZWxfdW5jb3JlX3BydW5lKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZSk7Cj4+IC1ib29sIGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAtYm9vbCBpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9t bWlvX2RldGVjdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiArYm9v bCBpbnRlbF91bmNvcmVfdW5jbGFpbWVkX21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl KTsKPj4gK2Jvb2wgaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPj4gICB2b2lkIGludGVsX3VuY29yZV9maW5pKHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4+ICAgdm9pZCBpbnRlbF91bmNvcmVfc3VzcGVu ZChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+PiAgIHZvaWQgaW50ZWxfdW5jb3JlX3Jl c3VtZV9lYXJseShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCj4+IGluZGV4IDY5YWEyNjBiNDc5 ZC4uZDJjNmEwM2ZiMjljIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfdW5jb3JlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX3VuY29yZS5jCj4+IEBAIC0xMjIsNiArMTIyLDcgQEAgaW50IGludGVsX3VuY29y ZV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+PiAgIHN0YXRpYyBpbnQgaW50ZWxfdW5jb3JlX2NoZWNr X2ZvcmNld2FrZV9kb21haW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4g ICB7Cj4+ICAgI2RlZmluZSBGV19SQU5HRSAweDQwMDAwCj4+ICsJc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4+ICAgCXVuc2lnbmVkIGxvbmcgKnZhbGlk Owo+PiAgIAl1MzIgb2Zmc2V0Owo+PiAgIAlpbnQgZXJyOwo+PiBAQCAtMTQyLDMxICsxNDMsMzEg QEAgc3RhdGljIGludCBpbnRlbF91bmNvcmVfY2hlY2tfZm9yY2V3YWtlX2RvbWFpbnMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcmkKPj4gICAJaWYgKCF2YWxpZCkKPj4gICAJCXJldHVy biAtRU5PTUVNOwo+PiAgIAo+PiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJp di0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dl dCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+PiAgIAo+PiAtCWNoZWNrX2Zvcl91bmNsYWltZWRf bW1pbyhkZXZfcHJpdik7Cj4+ICsJY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHVuY29yZSk7Cj4+ ICAgCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgRldfUkFOR0U7IG9mZnNldCArPSA0KSB7Cj4+ ICAgCQlpOTE1X3JlZ190IHJlZyA9IHsgb2Zmc2V0IH07Cj4+ICAgCj4+ICAgCQkodm9pZClJOTE1 X1JFQURfRlcocmVnKTsKPj4gLQkJaWYgKCFjaGVja19mb3JfdW5jbGFpbWVkX21taW8oZGV2X3By aXYpKQo+PiArCQlpZiAoIWNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyh1bmNvcmUpKQo+PiAgIAkJ CXNldF9iaXQob2Zmc2V0LCB2YWxpZCk7Cj4+ICAgCX0KPj4gICAKPj4gLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4+ICsJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPj4gICAKPj4g ICAJZXJyID0gMDsKPj4gICAJZm9yX2VhY2hfc2V0X2JpdChvZmZzZXQsIHZhbGlkLCBGV19SQU5H RSkgewo+PiAgIAkJaTkxNV9yZWdfdCByZWcgPSB7IG9mZnNldCB9Owo+PiAgIAo+PiAgIAkJaW9z Zl9tYmlfcHVuaXRfYWNxdWlyZSgpOwo+PiAtCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc2V0 KCZkZXZfcHJpdi0+dW5jb3JlKTsKPj4gKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldCh1 bmNvcmUpOwo+PiAgIAkJaW9zZl9tYmlfcHVuaXRfcmVsZWFzZSgpOwo+PiAgIAo+PiAtCQljaGVj a19mb3JfdW5jbGFpbWVkX21taW8oZGV2X3ByaXYpOwo+PiArCQljaGVja19mb3JfdW5jbGFpbWVk X21taW8odW5jb3JlKTsKPj4gICAKPj4gICAJCSh2b2lkKUk5MTVfUkVBRChyZWcpOwo+PiAtCQlp ZiAoY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKGRldl9wcml2KSkgewo+PiArCQlpZiAoY2hlY2tf Zm9yX3VuY2xhaW1lZF9tbWlvKHVuY29yZSkpIHsKPj4gICAJCQlwcl9lcnIoIlVuY2xhaW1lZCBt bWlvIHJlYWQgdG8gcmVnaXN0ZXIgMHglMDR4XG4iLAo+PiAgIAkJCSAgICAgICBvZmZzZXQpOwo+ PiAgIAkJCWVyciA9IC1FSU5WQUw7Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA==