From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v2 09/10] drm/i915: add uncore flags Date: Tue, 19 Mar 2019 17:56:45 -0700 Message-ID: <53d0da523c70307e86465e8e0455eb6b55d50193.camel@intel.com> References: <20190319183543.13679-1-daniele.ceraolospurio@intel.com> <20190319183543.13679-10-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 C6ABA89BB0 for ; Wed, 20 Mar 2019 00:56:46 +0000 (UTC) In-Reply-To: <20190319183543.13679-10-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gdGVyLCAyMDE5LTAzLTE5IMOgcyAxMTozNSAtMDcwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byBlc2NyZXZldToKPiBTYXZlIHNvbWUgdW5jb3JlIHByb3BlcnRpZXMgdG8gYXZvaWQgaGF2aW5n IHRvIGp1bXAgYmFjayB0bwo+IGRldl9wcml2IGV2ZXJ5IHRpbWUKPiAKPiBTaWduZWQtb2ZmLWJ5 OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29t Pgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgIDQgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgIHwgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgICAgICAgIHwgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgICAgIHwgODIgKysrKysr KysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaCAgICAg ICAgICAgfCAxMCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3Vu Y29yZS5jIHwgMTUgKystLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDUw IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGNhNDFhM2Rh MTkxOC4uYzYwOWJjYWM4NTc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTI4 NDksNyArMjg0OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmtkZXYpCj4gIAllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4g IAlpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoZGV2X3ByaXYpOwo+ICAKPiAtCWlmIChpbnRlbF91 bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihkZXZfcHJpdikpCj4gKwlpZiAoaW50 ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oJmRldl9wcml2LT51bmNvcmUp KQo+ICAJCURSTV9FUlJPUigiVW5jbGFpbWVkIGFjY2VzcyBkZXRlY3RlZCBwcmlvciB0byBzdXNw ZW5kaW5nXG4iKTsKPiAgCj4gIAlkZXZfcHJpdi0+cnVudGltZV9wbS5zdXNwZW5kZWQgPSB0cnVl Owo+IEBAIC0yOTAzLDcgKzI5MDMsNyBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gIAo+ICAJaW50ZWxfb3ByZWdpb25fbm90aWZ5X2FkYXB0 ZXIoZGV2X3ByaXYsIFBDSV9EMCk7Cj4gIAlkZXZfcHJpdi0+cnVudGltZV9wbS5zdXNwZW5kZWQg PSBmYWxzZTsKPiAtCWlmIChpbnRlbF91bmNvcmVfdW5jbGFpbWVkX21taW8oZGV2X3ByaXYpKQo+ ICsJaWYgKGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbygmZGV2X3ByaXYtPnVuY29yZSkpCj4g IAkJRFJNX0RFQlVHX0RSSVZFUigiVW5jbGFpbWVkIGFjY2VzcyBkdXJpbmcgc3VzcGVuZCwgYmlv cz9cbiIpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGQ0ZmNhZDEzNjEyMC4uY2ZlMzc5ZTkz OGU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzUxNyw3 ICsxMzUxNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJICogc28gZW5hYmxlIGRlYnVnZ2luZyBmb3Ig dGhlIG5leHQgbW9kZXNldCAtIGFuZCBob3BlIHdlIGNhdGNoCj4gIAkJICogdGhlIGN1bHByaXQu Cj4gIAkJICovCj4gLQkJaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24o ZGV2X3ByaXYpOwo+ICsJCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9u KCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJp diwgUE9XRVJfRE9NQUlOX01PREVTRVQsIHdha2VyZWYpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+IGluZGV4IDU3ZWQ0OWRjMTljNC4uMTI1NjYyYzY0 OTM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMjcw LDcgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQo+ICAJICogcGVyaW9kaWNhbGx5IGFybSB0aGUgbW1pbyBjaGVja2Vy IHRvIHNlZSBpZiB3ZSBhcmUgdHJpZ2dlcmluZwo+ICAJICogYW55IGludmFsaWQgYWNjZXNzLgo+ ICAJICovCj4gLQlpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihkZXZf cHJpdik7Cj4gKwlpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbigmZGV2 X3ByaXYtPnVuY29yZSk7Cj4gIAo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGlkKSB7Cj4gIAkJc3RydWN0IGhhbmdjaGVjayBoYzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYwo+IGluZGV4IDE4MTZlZWFlM2JhOS4uMjZiMjhhZmI0NTAwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtNTA5LDE4ICs1MDksMTcgQEAgZ2VuNl9jaGVj a19mb3JfZmlmb19kZWJ1ZyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIH0KPiAgCj4g IHN0YXRpYyBib29sCj4gLWNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2NoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9 ICZkZXZfcHJpdi0+dW5jb3JlOwo+ICAJYm9vbCByZXQgPSBmYWxzZTsKPiAgCj4gLQlpZiAoSEFT X0ZQR0FfREJHX1VOQ0xBSU1FRChkZXZfcHJpdikpCj4gKwlpZiAodW5jb3JlLT5mbGFncyAmIFVO Q09SRV9IQVNfRlBHQV9EQkdfVU5DTEFJTUVEKQo+ICAJCXJldCB8PSBmcGdhX2NoZWNrX2Zvcl91 bmNsYWltZWRfbW1pbyh1bmNvcmUpOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCWlmICh1bmNvcmUtPmZsYWdzICYgVU5D T1JFX0hBU19EQkdfVU5DTEFJTUVEKQo+ICAJCXJldCB8PSB2bHZfY2hlY2tfZm9yX3VuY2xhaW1l ZF9tbWlvKHVuY29yZSk7Cj4gIAo+IC0JaWYgKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykp Cj4gKwlpZiAodW5jb3JlLT5mbGFncyAmIFVOQ09SRV9IQVNfRklGTykKPiAgCQlyZXQgfD0gZ2Vu Nl9jaGVja19mb3JfZmlmb19kZWJ1Zyh1bmNvcmUpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAg LTUyOSwxNCArNTI4LDEyIEBAIGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHN0YXRpYyB2b2lkIF9faW50ZWxfdW5jb3JlX2Vhcmx5 X3Nhbml0aXplKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiAgCQkJCQkgIHVuc2lnbmVk IGludCByZXN0b3JlX2ZvcmNld2FrZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSB1bmNvcmVfdG9faTkxNSh1bmNvcmUpOwo+IC0KPiAgCS8qIGNsZWFyIG91dCB1bmNs YWltZWQgcmVnIGRldGVjdGlvbiBiaXQgKi8KPiAtCWlmIChjaGVja19mb3JfdW5jbGFpbWVkX21t aW8oaTkxNSkpCj4gKwlpZiAoY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHVuY29yZSkpCj4gIAkJ RFJNX0RFQlVHKCJ1bmNsYWltZWQgbW1pbyBkZXRlY3RlZCBvbiB1bmNvcmUgaW5pdCwgY2xlYXJp bmdcbiIpOwo+ICAKPiAgCS8qIFdhRGlzYWJsZVNoYWRvd1JlZ0ZvckNwZDpjaHYgKi8KPiAtCWlm IChJU19DSEVSUllWSUVXKGk5MTUpKSB7Cj4gKwlpZiAoSVNfQ0hFUlJZVklFVyh1bmNvcmVfdG9f aTkxNSh1bmNvcmUpKSkgewo+ICAJCV9fcmF3X2k5MTVfd3JpdGUzMih1bmNvcmUsIEdURklGT0NU TCwKPiAgCQkJCSAgIF9fcmF3X2k5MTVfcmVhZDMyKHVuY29yZSwgR1RGSUZPQ1RMKSB8Cj4gIAkJ CQkgICBHVF9GSUZPX0NUTF9CTE9DS19BTExfUE9MSUNZX1NUQUxMIHwKPiBAQCAtNTQ5LDcgKzU0 Niw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0aXplKHN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSwKPiAgCQlzcGluX2xvY2tfaXJxKCZ1bmNvcmUtPmxvY2spOwo+ ICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQodW5jb3JlLCByZXN0b3JlX2ZvcmNld2Fr ZSk7Cj4gIAo+IC0JCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4gKwkJaWYgKHVuY29y ZS0+ZmxhZ3MgJiBVTkNPUkVfSEFTX0ZJRk8pCj4gIAkJCXVuY29yZS0+Zmlmb19jb3VudCA9IGZp Zm9fZnJlZV9lbnRyaWVzKHVuY29yZSk7Cj4gIAkJc3Bpbl91bmxvY2tfaXJxKCZ1bmNvcmUtPmxv Y2spOwo+ICAJfQo+IEBAIC02NjgsMTIgKzY2NSwxMCBAQCB2b2lkIGludGVsX3VuY29yZV9mb3Jj ZXdha2VfdXNlcl9nZXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICAgKi8KPiAgdm9p ZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmVfdG9f aTkxNSh1bmNvcmUpOwo+IC0KPiAgCXNwaW5fbG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4gIAlp ZiAoIS0tdW5jb3JlLT51c2VyX2ZvcmNld2FrZS5jb3VudCkgewo+IC0JCWlmIChpbnRlbF91bmNv cmVfdW5jbGFpbWVkX21taW8oaTkxNSkpCj4gLQkJCWRldl9pbmZvKGk5MTUtPmRybS5kZXYsCj4g KwkJaWYgKGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyh1bmNvcmUpKQo+ICsJCQlkZXZfaW5m byh1bmNvcmVfdG9faTkxNSh1bmNvcmUpLT5kcm0uZGV2LAo+ICAJCQkJICJJbnZhbGlkIG1taW8g ZGV0ZWN0ZWQgZHVyaW5nIHVzZXIgYWNjZXNzXG4iKTsKPiAgCj4gIAkJdW5jb3JlLT51bmNsYWlt ZWRfbW1pb19jaGVjayA9Cj4gQEAgLTEwNzIsMTIgKzEwNjcsMTIgQEAgaWxrX2R1bW15X3dyaXRl KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAt X191bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArX191bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiAg CQkgICAgICBjb25zdCBpOTE1X3JlZ190IHJlZywKPiAgCQkgICAgICBjb25zdCBib29sIHJlYWQs Cj4gIAkJICAgICAgY29uc3QgYm9vbCBiZWZvcmUpCj4gIHsKPiAtCWlmIChXQVJOKGNoZWNrX2Zv cl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdikgJiYgIWJlZm9yZSwKPiArCWlmIChXQVJOKGNoZWNr X2Zvcl91bmNsYWltZWRfbW1pbyh1bmNvcmUpICYmICFiZWZvcmUsCj4gIAkJICJVbmNsYWltZWQg JXMgcmVnaXN0ZXIgMHgleFxuIiwKPiAgCQkgcmVhZCA/ICJyZWFkIGZyb20iIDogIndyaXRlIHRv IiwKPiAgCQkgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSkpCj4gQEAgLTEwODYsNyArMTA4MSw3 IEBAIF9fdW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+IC11bmNsYWltZWRfcmVnX2RlYnVn KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArdW5jbGFpbWVkX3JlZ19kZWJ1 ZyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gIAkJICAgIGNvbnN0IGk5MTVfcmVnX3Qg cmVnLAo+ICAJCSAgICBjb25zdCBib29sIHJlYWQsCj4gIAkJICAgIGNvbnN0IGJvb2wgYmVmb3Jl KQo+IEBAIC0xMDk0LDcgKzEwODksNyBAQCB1bmNsYWltZWRfcmVnX2RlYnVnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWlmIChsaWtlbHkoIWk5MTVfbW9kcGFyYW1zLm1t aW9fZGVidWcpKQo+ICAJCXJldHVybjsKPiAgCj4gLQlfX3VuY2xhaW1lZF9yZWdfZGVidWcoZGV2 X3ByaXYsIHJlZywgcmVhZCwgYmVmb3JlKTsKPiArCV9fdW5jbGFpbWVkX3JlZ19kZWJ1Zyh1bmNv cmUsIHJlZywgcmVhZCwgYmVmb3JlKTsKPiAgfQo+ICAKPiAgI2RlZmluZSBHRU4yX1JFQURfSEVB REVSKHgpIFwKPiBAQCAtMTE0NSwxMCArMTE0MCwxMCBAQCBfX2dlbjJfcmVhZCg2NCkKPiAgCXUj I3ggdmFsID0gMDsgXAo+ICAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsgXAo+ ICAJc3Bpbl9sb2NrX2lycXNhdmUoJnVuY29yZS0+bG9jaywgaXJxZmxhZ3MpOyBcCj4gLQl1bmNs YWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIHRydWUsIHRydWUpCj4gKwl1bmNsYWltZWRf cmVnX2RlYnVnKHVuY29yZSwgcmVnLCB0cnVlLCB0cnVlKQo+ICAKPiAgI2RlZmluZSBHRU42X1JF QURfRk9PVEVSIFwKPiAtCXVuY2xhaW1lZF9yZWdfZGVidWcoZGV2X3ByaXYsIHJlZywgdHJ1ZSwg ZmFsc2UpOyBcCj4gKwl1bmNsYWltZWRfcmVnX2RlYnVnKHVuY29yZSwgcmVnLCB0cnVlLCBmYWxz ZSk7IFwKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVuY29yZS0+bG9jaywgaXJxZmxhZ3Mp OyBcCj4gIAl0cmFjZV9pOTE1X3JlZ19ydyhmYWxzZSwgcmVnLCB2YWwsIHNpemVvZih2YWwpLCB0 cmFjZSk7IFwKPiAgCXJldHVybiB2YWwKPiBAQCAtMTI1OSwxMCArMTI1NCwxMCBAQCBfX2dlbjJf d3JpdGUoMzIpCj4gIAl0cmFjZV9pOTE1X3JlZ19ydyh0cnVlLCByZWcsIHZhbCwgc2l6ZW9mKHZh bCksIHRyYWNlKTsgXAo+ICAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsgXAo+ ICAJc3Bpbl9sb2NrX2lycXNhdmUoJnVuY29yZS0+bG9jaywgaXJxZmxhZ3MpOyBcCj4gLQl1bmNs YWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIGZhbHNlLCB0cnVlKQo+ICsJdW5jbGFpbWVk X3JlZ19kZWJ1Zyh1bmNvcmUsIHJlZywgZmFsc2UsIHRydWUpCj4gIAo+ICAjZGVmaW5lIEdFTjZf V1JJVEVfRk9PVEVSIFwKPiAtCXVuY2xhaW1lZF9yZWdfZGVidWcoZGV2X3ByaXYsIHJlZywgZmFs c2UsIGZhbHNlKTsgXAo+ICsJdW5jbGFpbWVkX3JlZ19kZWJ1Zyh1bmNvcmUsIHJlZywgZmFsc2Us IGZhbHNlKTsgXAo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdW5jb3JlLT5sb2NrLCBpcnFm bGFncykKPiAgCj4gICNkZWZpbmUgX19nZW42X3dyaXRlKHgpIFwKPiBAQCAtMTM5MSw3ICsxMzg2 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdW5jb3JlX3RvX2k5MTUodW5jb3JlKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpIDw9 IDUgfHwgaW50ZWxfdmdwdV9hY3RpdmUoaTkxNSkpCj4gKwlpZiAoISh1bmNvcmUtPmZsYWdzICYg VU5DT1JFX0hBU19GT1JDRVdBS0UpKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoSU5URUxfR0VO KGk5MTUpID49IDExKSB7Cj4gQEAgLTE1OTAsNiArMTU4NSw5IEBAIGludCBpbnRlbF91bmNvcmVf aW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIAo+ICAJaTkxNV9jaGVja192Z3B1 KGk5MTUpOwo+ICAKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPiA1ICYmICFpbnRlbF92Z3B1X2Fj dGl2ZShpOTE1KSkKPiArCQl1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRk9SQ0VXQUtFOwo+ ICsKPiAgCWludGVsX3VuY29yZV9lZHJhbV9kZXRlY3QoaTkxNSk7Cj4gIAlpbnRlbF91bmNvcmVf ZndfZG9tYWluc19pbml0KHVuY29yZSk7Cj4gIAlfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6 ZSh1bmNvcmUsIDApOwo+IEBAIC0xNTk4LDEyICsxNTk2LDE0IEBAIGludCBpbnRlbF91bmNvcmVf aW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIAl1bmNvcmUtPnBtaWNfYnVzX2Fj Y2Vzc19uYi5ub3RpZmllcl9jYWxsID0KPiAgCQlpOTE1X3BtaWNfYnVzX2FjY2Vzc19ub3RpZmll cjsKPiAgCj4gLQlpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDIsIDQpIHx8IGludGVsX3ZncHVfYWN0 aXZlKGk5MTUpKSB7Cj4gLQkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuMik7 Cj4gLQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPiAtCX0gZWxzZSBp ZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4gLQkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29y ZSwgZ2VuNSk7Cj4gLQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPiAr CWlmICghKHVuY29yZS0+ZmxhZ3MgJiBVTkNPUkVfSEFTX0ZPUkNFV0FLRSkpIHsKClRoaXMgY2hh bmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBpdCdzIGdlbjUgYW5kIHZncHUgaXMgYWN0aXZlLiBJcyB0 aGlzCmV2ZW4gcG9zc2libGU/IElmIG5vdCwgd2lsbCBpdCBldmVyIGJlPyBXaGV0aGVyIGludGVu dGlvbmFsIG9yIG5vdCwKcGVyaGFwcyBpdCBuZWVkcyB0byBiZSBpbiBhIHNlcGFyYXRlIHBhdGNo LgoKU2luY2UgdGhpcyBpcyBzdGlsbCB0aGUgaW5pdCBmdW5jdGlvbiwgbWF5YmUgd2UgZG9uJ3Qg ZXZlbiBuZWVkIHRoaXMKY2hhbmdlLgoKCj4gKwkJaWYgKElTX0dFTihpOTE1LCA1KSkgewo+ICsJ CQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPiArCQkJQVNTSUdOX1JF QURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPiArCQl9IGVsc2Ugewo+ICsJCQlBU1NJR05f V1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPiArCQkJQVNTSUdOX1JFQURfTU1JT19W RlVOQ1ModW5jb3JlLCBnZW4yKTsKPiArCQl9Cj4gIAl9IGVsc2UgaWYgKElTX0dFTl9SQU5HRShp OTE1LCA2LCA3KSkgewo+ICAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjYp Owo+ICAKPiBAQCAtMTYzMyw2ICsxNjMzLDE1IEBAIGludCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gIAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5j b3JlLCBnZW4xMV9md3RhYmxlKTsKPiAgCX0KPiAgCj4gKwlpZiAoSEFTX0ZQR0FfREJHX1VOQ0xB SU1FRChpOTE1KSkKPiArCQl1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRlBHQV9EQkdfVU5D TEFJTUVEOwo+ICsKPiArCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVco aTkxNSkpCj4gKwkJdW5jb3JlLT5mbGFncyB8PSBVTkNPUkVfSEFTX0RCR19VTkNMQUlNRUQ7Cj4g Kwo+ICsJaWYgKElTX0dFTl9SQU5HRShpOTE1LCA2LCA3KSkKPiArCQl1bmNvcmUtPmZsYWdzIHw9 IFVOQ09SRV9IQVNfRklGTzsKPiArCj4gIAlpb3NmX21iaV9yZWdpc3Rlcl9wbWljX2J1c19hY2Nl c3Nfbm90aWZpZXIoJnVuY29yZS0+cG1pY19idXNfYWNjZXNzX25iKTsKPiAgCj4gIAlyZXR1cm4g MDsKPiBAQCAtMTg2NCwxNSArMTg3MywxNCBAQCBpbnQgX19pbnRlbF93YWl0X2Zvcl9yZWdpc3Rl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+IC1ib29sIGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2Jvb2wgaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgewo+IC0JcmV0dXJuIGNoZWNrX2Zvcl91bmNs YWltZWRfbW1pbyhkZXZfcHJpdik7Cj4gKwlyZXR1cm4gY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlv KHVuY29yZSk7Cj4gIH0KPiAgCj4gIGJvb2wKPiAtaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRf bW1pb19kZXRlY3Rpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtpbnRl bF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJp di0+dW5jb3JlOwo+ICAJYm9vbCByZXQgPSBmYWxzZTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZ1 bmNvcmUtPmxvY2spOwo+IEBAIC0xODgwLDcgKzE4ODgsNyBAQCBpbnRlbF91bmNvcmVfYXJtX3Vu Y2xhaW1lZF9tbWlvX2RldGVjdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAlpZiAodW5saWtlbHkodW5jb3JlLT51bmNsYWltZWRfbW1pb19jaGVjayA8PSAwKSkKPiAg CQlnb3RvIG91dDsKPiAgCj4gLQlpZiAodW5saWtlbHkoaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9t bWlvKGRldl9wcml2KSkpIHsKPiArCWlmICh1bmxpa2VseShpbnRlbF91bmNvcmVfdW5jbGFpbWVk X21taW8odW5jb3JlKSkpIHsKPiAgCQlpZiAoIWk5MTVfbW9kcGFyYW1zLm1taW9fZGVidWcpIHsK PiAgCQkJRFJNX0RFQlVHKCJVbmNsYWltZWQgcmVnaXN0ZXIgZGV0ZWN0ZWQsICIKPiAgCQkJCSAg ImVuYWJsaW5nIG9uZXNob3QgdW5jbGFpbWVkIHJlZ2lzdGVyIHJlcG9ydGluZy4gIgo+IEBAIC0x OTEyLDcgKzE5MjAsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA2KSB7Cj4gIAkJZndfZG9tYWlucyA9IF9fZ2VuNl9yZWdfcmVhZF9md19kb21haW5z KHVuY29yZSwgb2Zmc2V0KTsKPiAgCX0gZWxzZSB7Cj4gLQkJV0FSTl9PTighSVNfR0VOX1JBTkdF KGRldl9wcml2LCAyLCA1KSk7Cj4gKwkJV0FSTl9PTighKHVuY29yZS0+ZmxhZ3MgJiBVTkNPUkVf SEFTX0ZPUkNFV0FLRSkpOwoKVGhhdCBkb2Vzbid0IGxvb2sgZXF1aXZhbGVudC4gSXNuJ3QgaXQg YWx3YXlzIGdvbm5hIFdBUk4gbm93PyBHZW4gMi01Cm5ldmVyIGhhcyB0aGUgZmxhZy4KClRoZSB3 aG9sZSBmdW5jdGlvbiBpcyBhYm91dCBjaGVja2luZyBmb3IgZ2Vucywgd2hlbiB3ZSBzd2l0Y2gg dG8KY2hlY2tpbmcgdGhlIGZsYWcgd2UgbWFrZSBpdCBoYXJkZXIgdG8gcmVhZCwgZXNwZWNpYWxs eSBzaW5jZSB0aGUKcmVhZGVyIG5vdyBoYXMgdG8gdGhpbmsgYWJvdXQgd2hldGhlciB2Z3B1X2Fj dGl2ZSgpIHdhcyB0cnVlIGR1cmluZwppbml0aWFsaXphdGlvbi4gSSdtIG5vdCBzdXJlIHRoaXMg aXMgYW4gaW1wcm92ZW1lbnQuIAoKPiAgCQlmd19kb21haW5zID0gMDsKPiAgCX0KPiAgCj4gQEAg LTE5MzgsNyArMTk0Niw3IEBAIGludGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0gZWxzZSBpZiAoSVNfR0VOX1JBTkdF KGRldl9wcml2LCA2LCA3KSkgewo+ICAJCWZ3X2RvbWFpbnMgPSBGT1JDRVdBS0VfUkVOREVSOwo+ ICAJfSBlbHNlIHsKPiAtCQlXQVJOX09OKCFJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDIsIDUpKTsK PiArCQlXQVJOX09OKCEodW5jb3JlLT5mbGFncyAmIFVOQ09SRV9IQVNfRk9SQ0VXQUtFKSk7CgpT YW1lIGhlcmUuCgo+ICAJCWZ3X2RvbWFpbnMgPSAwOwo+ICAJfQo+ICAKPiBAQCAtMTk2OSw3ICsx OTc3LDcgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlXQVJOX09OKCFvcCk7Cj4gIAo+IC0JaWYgKGludGVs X3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPiArCWlmICghKGRldl9wcml2LT51bmNvcmUuZmxhZ3Mg JiBVTkNPUkVfSEFTX0ZPUkNFV0FLRSkpCgpUaGlzIGNoYW5nZXMgdGhlIHZncHVfYWN0aXZlKCkg ZnJvbSBzb21ldGhpbmcgeW91IGNhbGwgYWxsIHRoZSB0aW1lIHRvCmEgc3RhdGljIGNoZWNrIHRo YXQgaXMgb25seSBldmVyIGNoZWNrZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBBIHF1aWNrCnJl YWQgYXQgdGhlIHZncHUgY29kZSBkb2VzIG5vdCB0ZWxsIG1lIHdoZXRoZXIgdGhpcyBpcyBzb21l dGhpbmcgdGhhdApjYW4gY2hhbmdlIG92ZXIgdGltZSAoaS5lLiwgdGhlIHJlc3VsdCBpbnRlbF92 Z3B1X2FjdGl2ZSgpIGlzIGFsd2F5cwp0aGUgc2FtZSksIGJ1dCBteSBmaXJzdCBndWVzcyB3b3Vs ZCBiZSB0aGF0IGl0IGNvdWxkIGNoYW5nZSBvdmVyIHRpbWUuCgpTdGlsbCwgdGhpcyBpcyB0aGUg a2luZCBvZiBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgaW4gaXRzIG93biBwYXRjaCBpZgppdCdzIGEg YmVoYXZpb3IgY2hhbmdlIGFuZCBub3QganVzdCBhIHJld29yayBpbiBmdW5jdGlvbiBhcmd1bWVu dHMuCgotCgpPdmVyYWxsLCBJJ20gbm90IHN1cGVyIHNvbGQgaW4gdGhlIGN1cnJlbnQgYXBwcm9h Y2ggb2YgdGhlIHBhdGNoLgpQZXJoYXBzIGl0J3MgZmluZSB0byBhY3R1YWxseSBjYWxsIHVuY29y ZV90b19pOTE1KCkgaW4gdGhlIGZ1bmN0aW9ucwp0aGF0IG5lZWQgdG8gZG8gZ2VuIG9yIGZlYXR1 cmUgY2hlY2tzIChlLmcuLApjaGVja19mb3JfdW5jbGFpbWVkX21taW8oKSkuIE1heWJlIGluc3Rl YWQgb2YgYWRkaW5nIHRoZSBmbGFncyBhbmQKY29udmVydGluZyBldmVyeXRoaW5nIHRvIGludGVs X3VuY29yZSB3ZSBzaG91bGQga2VlcCB0aGUgY29udmVyc2lvbiBvZgpldmVyeXRoaW5nIHRvIGlu dGVsX3VuY29yZSBhbmQgdGhlbiB1c2UgdW5jb3JlX3RvX2k5MTUoKSB3aGVuIG5lZWRlZC4gCgpJ J20gbm90IGFnYWluc3QgdGhlIHBhdGNoLCBidXQgd2UgYXQgbGVhc3QgbmVlZCB0byBzb3J0IG91 dCB0aGUKcG9zc2libGUgYmVoYXZpb3IgY2hhbmdlcyAob3IgZ28gdGhlIGVhc2llciB3YXkgdG8g anVzdCBjb252ZXJ0IGFsbAp0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZW4gdXNlIHVuY29yZV90b19p OTE1KCkgd2hlbiBuZWVkZWQpLgoKSGF2aW5nIG1vcmUgb3BpbmlvbnMgb24gdGhlIGRlc2lnbiB3 b3VsZCBwcm9iYWJseSBoZWxwLiBQaW5nIEBldmVyeW9uZS4KCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ ICAJaWYgKG9wICYgRldfUkVHX1JFQUQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgK PiBpbmRleCBkMzQ1ZTVhYjA0YTUuLjZkZjY1ODZiYjYwMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VuY29yZS5oCj4gQEAgLTEyNyw2ICsxMjcsMTIgQEAgc3RydWN0IGludGVsX3VuY29y ZSB7Cj4gIAl9IHVzZXJfZm9yY2V3YWtlOwo+ICAKPiAgCWludCB1bmNsYWltZWRfbW1pb19jaGVj azsKPiArCj4gKwl1MzIgZmxhZ3M7Cj4gKyNkZWZpbmUgVU5DT1JFX0hBU19GT1JDRVdBS0UJCUJJ VCgwKQo+ICsjZGVmaW5lIFVOQ09SRV9IQVNfRlBHQV9EQkdfVU5DTEFJTUVECUJJVCgxKQo+ICsj ZGVmaW5lIFVOQ09SRV9IQVNfREJHX1VOQ0xBSU1FRAlCSVQoMikKPiArI2RlZmluZSBVTkNPUkVf SEFTX0ZJRk8JCQlCSVQoMykKPiAgfTsKPiAgCj4gIC8qIEl0ZXJhdGUgb3ZlciBpbml0aWFsaXNl ZCBmdyBkb21haW5zICovCj4gQEAgLTE0Niw4ICsxNTIsOCBAQCBmb3JjZXdha2VfZG9tYWluX3Rv X3VuY29yZShjb25zdCBzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQpCj4g IHZvaWQgaW50ZWxfdW5jb3JlX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gIGludCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpOwo+ICB2b2lkIGludGVsX3VuY29yZV9wcnVuZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpOwo+IC1ib29sIGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC1ib29sIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21t aW9fZGV0ZWN0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2Jvb2wg aW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7 Cj4gK2Jvb2wgaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPiAgdm9pZCBpbnRlbF91bmNvcmVfZmluaShzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ICB2b2lkIGludGVsX3VuY29yZV9zdXNwZW5kKHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gIHZvaWQgaW50ZWxfdW5jb3JlX3Jlc3VtZV9lYXJs eShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCA2OWFhMjYwYjQ3OWQuLmQyYzZhMDNm YjI5YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf dW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5j b3JlLmMKPiBAQCAtMTIyLDYgKzEyMiw3IEBAIGludCBpbnRlbF91bmNvcmVfbW9ja19zZWxmdGVz dHModm9pZCkKPiAgc3RhdGljIGludCBpbnRlbF91bmNvcmVfY2hlY2tfZm9yY2V3YWtlX2RvbWFp bnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gICNkZWZpbmUgRldf UkFOR0UgMHg0MDAwMAo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2 LT51bmNvcmU7Cj4gIAl1bnNpZ25lZCBsb25nICp2YWxpZDsKPiAgCXUzMiBvZmZzZXQ7Cj4gIAlp bnQgZXJyOwo+IEBAIC0xNDIsMzEgKzE0MywzMSBAQCBzdGF0aWMgaW50IGludGVsX3VuY29yZV9j aGVja19mb3JjZXdha2VfZG9tYWlucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaQo+ ICAJaWYgKCF2YWxpZCkKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAtCWNo ZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdik7Cj4gKwljaGVja19mb3JfdW5jbGFpbWVk X21taW8odW5jb3JlKTsKPiAgCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgRldfUkFOR0U7IG9m ZnNldCArPSA0KSB7Cj4gIAkJaTkxNV9yZWdfdCByZWcgPSB7IG9mZnNldCB9Owo+ICAKPiAgCQko dm9pZClJOTE1X1JFQURfRlcocmVnKTsKPiAtCQlpZiAoIWNoZWNrX2Zvcl91bmNsYWltZWRfbW1p byhkZXZfcHJpdikpCj4gKwkJaWYgKCFjaGVja19mb3JfdW5jbGFpbWVkX21taW8odW5jb3JlKSkK PiAgCQkJc2V0X2JpdChvZmZzZXQsIHZhbGlkKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCWVy ciA9IDA7Cj4gIAlmb3JfZWFjaF9zZXRfYml0KG9mZnNldCwgdmFsaWQsIEZXX1JBTkdFKSB7Cj4g IAkJaTkxNV9yZWdfdCByZWcgPSB7IG9mZnNldCB9Owo+ICAKPiAgCQlpb3NmX21iaV9wdW5pdF9h Y3F1aXJlKCk7Cj4gLQkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldCgmZGV2X3ByaXYtPnVu Y29yZSk7Cj4gKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldCh1bmNvcmUpOwo+ICAJCWlv c2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPiAgCj4gLQkJY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlv KGRldl9wcml2KTsKPiArCQljaGVja19mb3JfdW5jbGFpbWVkX21taW8odW5jb3JlKTsKPiAgCj4g IAkJKHZvaWQpSTkxNV9SRUFEKHJlZyk7Cj4gLQkJaWYgKGNoZWNrX2Zvcl91bmNsYWltZWRfbW1p byhkZXZfcHJpdikpIHsKPiArCQlpZiAoY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHVuY29yZSkp IHsKPiAgCQkJcHJfZXJyKCJVbmNsYWltZWQgbW1pbyByZWFkIHRvIHJlZ2lzdGVyIDB4JTA0eFxu IiwKPiAgCQkJICAgICAgIG9mZnNldCk7Cj4gIAkJCWVyciA9IC1FSU5WQUw7CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=