From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 12/46] drm/i915/gem: Track the rpm wakerefs Date: Wed, 09 Jan 2019 13:16:05 +0200 Message-ID: <87r2dm13pm.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-12-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C68C6E602 for ; Wed, 9 Jan 2019 11:17:46 +0000 (UTC) In-Reply-To: <20190107115509.12523-12-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 Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gS2VlcCB0 cmFjayBvZiB0aGUgdGVtcG9yYXJ5IHJwbSB3YWtlcmVmcyB1c2VkIGZvciB1c2VyIGFjY2VzcyB0 byB0aGUKPiBkZXZpY2UsIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIHVwb24gcmVsZWFzZSBh bmQgY2xlYXJseSBpZGVudGlmeSBhbnkKPiBsZWFrcy4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKYW5pIE5pa3VsYSA8amFu aS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jICAgICAgICAgICAgfCA0NyArKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA1ICsrLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYyAgfCAgNiArKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgMjIgKysrKysrLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jICAgfCAzMiArKysrKysrKystLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgMTIgKysrKy0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICAgICB8ICA1ICsrLQo+ICA3 IGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggMjdmMjA3Y2JhYmQ5Li5lMDRkYWRlY2E4NzkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNzg2LDYgKzc4Niw4IEBAIGZiX3dyaXRl X29yaWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgZG9t YWluKQo+ICAKPiAgdm9pZCBpOTE1X2dlbV9mbHVzaF9nZ3R0X3dyaXRlcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICsKPiAgCS8qCj4gIAkgKiBObyBhY3R1YWwgZmx1c2hpbmcgaXMgcmVxdWlyZWQgZm9yIHRoZSBH VFQgd3JpdGUgZG9tYWluIGZvciByZWFkcwo+ICAJICogZnJvbSB0aGUgR1RUIGRvbWFpbi4gV3Jp dGVzIHRvIGl0ICJpbW1lZGlhdGVseSIgZ28gdG8gbWFpbiBtZW1vcnkKPiBAQCAtODEyLDEzICs4 MTQsMTMgQEAgdm9pZCBpOTE1X2dlbV9mbHVzaF9nZ3R0X3dyaXRlcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChkZXZfcHJp dik7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9 IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCXNwaW5fbG9ja19pcnEoJmRldl9w cml2LT51bmNvcmUubG9jayk7Cj4gIAo+ICAJUE9TVElOR19SRUFEX0ZXKFJJTkdfSEVBRChSRU5E RVJfUklOR19CQVNFKSk7Cj4gIAo+ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2spOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAr CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQKPiBAQCAtMTA3MCw2ICsxMDcyLDcgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpOTE1X2dndHQg KmdndHQgPSAmaTkxNS0+Z2d0dDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3Ry dWN0IGRybV9tbV9ub2RlIG5vZGU7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCXZvaWQg X191c2VyICp1c2VyX2RhdGE7Cj4gQEAgLTEwODAsNyArMTA4Myw3IEBAIGk5MTVfZ2VtX2d0dF9w cmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJaWYgKHJldCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJdm1hID0gaTkxNV9nZW1fb2JqZWN0 X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwKPiAgCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfAo+ ICAJCQkJICAgICAgIFBJTl9OT05GQVVMVCB8Cj4gQEAgLTExNTMsNyArMTE1Niw3IEBAIGk5MTVf Z2VtX2d0dF9wcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCWk5MTVf dm1hX3VucGluKHZtYSk7Cj4gIAl9Cj4gIG91dF91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJ cmV0dXJuIHJldDsKPiBAQCAtMTI1NCw2ICsxMjU3LDcgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9m YXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBp OTE1X2dndHQgKmdndHQgPSAmaTkxNS0+Z2d0dDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK PiAgCXU2NCByZW1haW4sIG9mZnNldDsKPiBAQCAtMTI3MiwxMyArMTI3NiwxNCBAQCBpOTE1X2dl bV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkg KiBUaGlzIGVhc2lseSBkd2FyZnMgYW55IHBlcmZvcm1hbmNlIGFkdmFudGFnZSBmcm9tCj4gIAkJ ICogdXNpbmcgdGhlIGNhY2hlIGJ5cGFzcyBvZiBpbmRpcmVjdCBHR1RUIGFjY2Vzcy4KPiAgCQkg Ki8KPiAtCQlpZiAoIWludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShpOTE1KSkgewo+ICsJ CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoaTkxNSk7Cj4gKwkJaWYg KCF3YWtlcmVmKSB7Cj4gIAkJCXJldCA9IC1FRkFVTFQ7Cj4gIAkJCWdvdG8gb3V0X3VubG9jazsK PiAgCQl9Cj4gIAl9IGVsc2Ugewo+ICAJCS8qIE5vIGJhY2tpbmcgcGFnZXMsIG5vIGZhbGxiYWNr LCB3ZSBtdXN0IGZvcmNlIEdHVFQgYWNjZXNzICovCj4gLQkJaW50ZWxfcnVudGltZV9wbV9nZXQo aTkxNSk7Cj4gKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJfQo+ ICAKPiAgCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsCj4g QEAgLTEzNjAsNyArMTM2NSw3IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gIAl9Cj4g IG91dF9ycG06Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgb3V0X3VubG9jazoKPiAgCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4gcmV0Owo+IEBA IC0xODY1LDYgKzE4NzAsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9m YXVsdCAqdm1mKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ICAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAg CWJvb2wgd3JpdGUgPSBhcmVhLT52bV9mbGFncyAmIFZNX1dSSVRFOwo+ICsJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCXBnb2ZmX3QgcGFnZV9v ZmZzZXQ7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xODk0LDcgKzE5MDAsNyBAQCB2bV9mYXVsdF90IGk5 MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IGVycjsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCXJldCA9IGk5MTVfbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gIAlpZiAocmV0KQo+IEBAIC0xOTcyLDcgKzE5 NzgsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ ICBlcnJfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIGVy cl9ycG06Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gIGVycjoKPiAgCXN3aXRjaCAocmV0KSB7Cj4gQEAgLTIw NDUsNiArMjA1MSw3IEBAIHZvaWQKPiAgaTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICAKPiAgCS8qIFNlcmlhbGlzYXRpb24gYmV0d2VlbiB1c2VyIEdUVCBhY2Nlc3MgYW5kIG91 ciBjb2RlIGRlcGVuZHMgdXBvbgo+ICAJICogcmV2b2tpbmcgdGhlIENQVSdzIFBURSB3aGlsc3Qg dGhlIG11dGV4IGlzIGhlbGQuIFRoZSBuZXh0IHVzZXIKPiBAQCAtMjA1NSw3ICsyMDYyLDcgQEAg aTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g IAkgKiB3YWtlcmVmLgo+ICAJICovCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWlmICghb2JqLT51c2VyZmF1 bHRfY291bnQpCj4gIAkJZ290byBvdXQ7Cj4gQEAgLTIwNzIsNyArMjA3OSw3IEBAIGk5MTVfZ2Vt X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJd21iKCk7 Cj4gIAo+ICBvdXQ6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4g KwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgfQo+ICAKPiAgdm9pZCBp OTE1X2dlbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IEBAIC00NzA3LDggKzQ3MTQsOSBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2Jq ZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJCSAgICBzdHJ1Y3QgbGxp c3Rfbm9kZSAqZnJlZWQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos ICpvbjsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAtCWludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ ICAJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCBmcmVlZCwgZnJlZWQpIHsKPiAg CQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOwo+ICAKPiBAQCAtNDc2OSw3ICs0Nzc3LDcgQEAg c3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gIAkJaWYgKG9uKQo+ICAJCQljb25kX3Jlc2NoZWQoKTsKPiAgCX0KPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1f cHV0KGk5MTUsIHdha2VyZWYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOTE1X2dlbV9mbHVz aF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gQEAgLTQ4Nzgs MTEgKzQ4ODYsMTMgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3Rp dmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCj4gIHZvaWQgaTkxNV9nZW1f c2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiArCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+ICsKPiAgCUdFTV9UUkFDRSgiXG4iKTsKPiAgCj4gIAltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGk5MTUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCS8q Cj4gQEAgLTQ5MDUsNyArNDkxNSw3IEBAIHZvaWQgaTkxNV9nZW1fc2FuaXRpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlpbnRlbF9lbmdpbmVzX3Nhbml0aXplKGk5MTUsIGZh bHNlKTsKPiAgCj4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChpOTE1LCBGT1JDRVdBS0Vf QUxMKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVs X3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAKPiAgCWk5MTVfZ2VtX2NvbnRleHRz X2xvc3QoaTkxNSk7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IEBAIC00OTEzLDExICs0OTIzLDEyIEBAIHZvaWQgaTkxNV9nZW1fc2FuaXRpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCUdFTV9UUkFDRSgiXG4iKTsKPiAgCj4gLQlpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKPiAgCWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGk5MTUpOwo+ICAKPiAgCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC00OTY5LDEyICs0OTgwLDEyIEBAIGlu dCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaWYg KFdBUk5fT04oIWludGVsX2VuZ2luZXNfYXJlX2lkbGUoaTkxNSkpKQo+ICAJCWk5MTVfZ2VtX3Nl dF93ZWRnZWQoaTkxNSk7IC8qIG5vIGhvcGUsIGRpc2NhcmQgZXZlcnl0aGluZyAqLwo+ICAKPiAt CWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJcmV0dXJuIDA7Cj4gIAo+ICBlcnJfdW5sb2NrOgo+ ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRp bWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUs IHdha2VyZWYpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggYTUyZmE0MmVkOGIxLi43NmJiMWE4OWU1 MzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4g QEAgLTIyMDMsNiArMjIwMyw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgZWI7Cj4gIAlzdHJ1Y3QgZG1h X2ZlbmNlICppbl9mZW5jZSA9IE5VTEw7Cj4gIAlzdHJ1Y3Qgc3luY19maWxlICpvdXRfZmVuY2Ug PSBOVUxMOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgb3V0X2ZlbmNlX2Zk ID0gLTE7Cj4gIAlpbnQgZXJyOwo+ICAKPiBAQCAtMjI3Myw3ICsyMjc0LDcgQEAgaTkxNV9nZW1f ZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogd2FrZXJlZiB0aGF0 IHdlIGhvbGQgdW50aWwgdGhlIEdQVSBoYXMgYmVlbiBpZGxlIGZvciBhdCBsZWFzdAo+ICAJICog MTAwbXMuCj4gIAkgKi8KPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGViLmk5MTUpOwo+ICsJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGViLmk5MTUpOwo+ICAKPiAgCWVyciA9IGk5MTVf bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gIAlpZiAoZXJyKQo+IEBAIC0yNDI1LDcg KzI0MjYsNyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJZWJfcmVsZWFzZV92bWFzKCZlYik7Cj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiAgZXJyX3JwbToKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChl Yi5pOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGViLmk5MTUsIHdha2VyZWYpOwo+ICAJ aTkxNV9nZW1fY29udGV4dF9wdXQoZWIuY3R4KTsKPiAgZXJyX2Rlc3Ryb3k6Cj4gIAllYl9kZXN0 cm95KCZlYik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Zl bmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBp bmRleCAxZjcyZjUwNDc5NDUuLmU2ZWRjZDgzNDUwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTIxMCw2ICsyMTAsNyBAQCBzdGF0aWMgdm9p ZCBmZW5jZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgc3RhdGlj IGludCBmZW5jZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4gIAkJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICB7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK PiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKHZtYSkgewo+IEBAIC0yNTcsOSArMjU4LDEwIEBAIHN0 YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ ICAJICogSWYgdGhlIGRldmljZSBpcyBjdXJyZW50bHkgcG93ZXJlZCBkb3duLCB3ZSB3aWxsIGRl ZmVyIHRoZSB3cml0ZQo+ICAJICogdG8gdGhlIHJ1bnRpbWUgcmVzdW1lLCBzZWUgaTkxNV9nZW1f cmVzdG9yZV9mZW5jZXMoKS4KPiAgCSAqLwo+IC0JaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0X2lm X2luX3VzZShmZW5jZS0+aTkxNSkpIHsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dF9pZl9pbl91c2UoZmVuY2UtPmk5MTUpOwo+ICsJaWYgKHdha2VyZWYpIHsKPiAgCQlmZW5jZV93 cml0ZShmZW5jZSwgdm1hKTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZmVu Y2UtPmk5MTUpOwo+ICsJCWludGVsX3J1bnRpbWVfcG1fcHV0KGZlbmNlLT5pOTE1LCB3YWtlcmVm KTsKPiAgCX0KPiAgCj4gIAlpZiAodm1hKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBpbmRleCA2ZGFjOTYxNGY3YmEuLjRiZWMxMDI4NjQ4NyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTI1MjgsNiArMjUyOCw3IEBAIHN0YXRpYyBpbnQgZ2d0 dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB2bWEtPnZtLT5pOTE1Owo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAl1 MzIgcHRlX2ZsYWdzOwo+ICAKPiAgCS8qIEFwcGxpY2FibGUgdG8gVkxWIChnZW44KyBkbyBub3Qg c3VwcG9ydCBSTyBpbiB0aGUgR0dUVCkgKi8KPiBAQCAtMjUzNSw5ICsyNTM2LDkgQEAgc3RhdGlj IGludCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKGk5MTVfZ2Vt X29iamVjdF9pc19yZWFkb25seShvYmopKQo+ICAJCXB0ZV9mbGFncyB8PSBQVEVfUkVBRF9PTkxZ Owo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52 bSwgdm1hLCBjYWNoZV9sZXZlbCwgcHRlX2ZsYWdzKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0 X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYp Owo+ICAKPiAgCXZtYS0+cGFnZV9zaXplcy5ndHQgPSBJOTE1X0dUVF9QQUdFX1NJWkU7Cj4gIAo+ IEBAIC0yNTU0LDEwICsyNTU1LDExIEBAIHN0YXRpYyBpbnQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKPiAgc3RhdGljIHZvaWQgZ2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHZtYS0+ dm0tPmk5MTU7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gLQlpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKPiAgCXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1h LT5zaXplKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50 IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiBAQCAtMjU4OSw5 ICsyNTkxLDExIEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLAo+ICAJfQo+ICAKPiAgCWlmIChmbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5E KSB7Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwkJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7Cj4gKwo+ICsJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK PiAgCQl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEsIGNhY2hlX2xldmVsLCBw dGVfZmxhZ3MpOwo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAr CQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCX0KPiAgCj4gIAlyZXR1 cm4gMDsKPiBAQCAtMjYwMiw5ICsyNjA2LDExIEBAIHN0YXRpYyB2b2lkIGFsaWFzaW5nX2d0dF91 bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSB2bWEtPnZtLT5pOTE1Owo+ICAKPiAgCWlmICh2bWEtPmZsYWdzICYgSTkxNV9W TUFfR0xPQkFMX0JJTkQpIHsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCQlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwo+ICAJCXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9k ZS5zdGFydCwgdm1hLT5zaXplKTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo aTkxNSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gIAl9Cj4g IAo+ICAJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EKSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gaW5kZXggMTY2OTNkZDRkMDE5Li5iYzIz MGU0M2I5OGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMK PiBAQCAtMTU0LDYgKzE1NCw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgCQl7ICZpOTE1LT5tbS5ib3VuZF9saXN0LCBJOTE1X1NIUklOS19CT1VO RCB9LAo+ICAJCXsgTlVMTCwgMCB9LAo+ICAJfSwgKnBoYXNlOwo+ICsJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWYgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7Cj4gIAl1bnNpZ25lZCBs b25nIHNjYW5uZWQgPSAwOwo+ICAJYm9vbCB1bmxvY2s7Cj4gQEAgLTE4Myw5ICsxODQsMTEgQEAg aTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJICogZGV2 aWNlIGp1c3QgdG8gcmVjb3ZlciBhIGxpdHRsZSBtZW1vcnkuIElmIGFic29sdXRlbHkgbmVjZXNz YXJ5LAo+ICAJICogd2Ugd2lsbCBmb3JjZSB0aGUgd2FrZSBkdXJpbmcgb29tLW5vdGlmaWVyLgo+ ICAJICovCj4gLQlpZiAoKGZsYWdzICYgSTkxNV9TSFJJTktfQk9VTkQpICYmCj4gLQkgICAgIWlu dGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShpOTE1KSkKPiAtCQlmbGFncyAmPSB+STkxNV9T SFJJTktfQk9VTkQ7Cj4gKwlpZiAoZmxhZ3MgJiBJOTE1X1NIUklOS19CT1VORCkgewo+ICsJCXdh a2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoaTkxNSk7Cj4gKwkJaWYgKCF3 YWtlcmVmKQo+ICsJCQlmbGFncyAmPSB+STkxNV9TSFJJTktfQk9VTkQ7Cj4gKwl9Cj4gIAo+ICAJ LyoKPiAgCSAqIEFzIHdlIG1heSBjb21wbGV0ZWx5IHJld3JpdGUgdGhlICh1bilib3VuZCBsaXN0 IHdoaWxzdCB1bmJpbmRpbmcKPiBAQCAtMjY2LDcgKzI2OSw3IEBAIGk5MTVfZ2VtX3Nocmluayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCX0KPiAgCj4gIAlpZiAoZmxhZ3MgJiBJ OTE1X1NIUklOS19CT1VORCkKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkx NSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CgpUaGlzIGlzIG9r IGJ1dCByYWlzZXMgYSBxdWVzdGlvbiB0aGF0IGRpZCB3ZSBoYXZlCkdFTV9CVUdfT04od2FrZXJl ZiA9PSAwKSBvbiBwbV9wdXQ/IFBlcmhhcHMgbm90IG5lZWRlZApwZXIgc2UgYXMgd2UgZG8gZmlu ZCB0aGF0IHdlIGRvbid0IGhhdmUgcmVmIGZvciAwLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBh bGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPiAgCj4gIAlpOTE1X3JldGlyZV9y ZXF1ZXN0cyhpOTE1KTsKPiAgCj4gQEAgLTI5MywxNCArMjk2LDE1IEBAIGk5MTVfZ2VtX3Nocmlu ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgICovCj4gIHVuc2lnbmVkIGxvbmcg aTkxNV9nZW1fc2hyaW5rX2FsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAl1bnNpZ25lZCBsb25nIGZyZWVkOwo+ICAK PiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICAJZnJlZWQgPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwg TlVMTCwKPiAgCQkJCUk5MTVfU0hSSU5LX0JPVU5EIHwKPiAgCQkJCUk5MTVfU0hSSU5LX1VOQk9V TkQgfAo+ICAJCQkJSTkxNV9TSFJJTktfQUNUSVZFKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0 X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYp Owo+ICAKPiAgCXJldHVybiBmcmVlZDsKPiAgfQo+IEBAIC0zNzEsMTQgKzM3NSwxNiBAQCBpOTE1 X2dlbV9zaHJpbmtlcl9zY2FuKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0cnVjdCBzaHJp bmtfY29udHJvbCAqc2MpCj4gIAkJCQkJIEk5MTVfU0hSSU5LX0JPVU5EIHwKPiAgCQkJCQkgSTkx NV9TSFJJTktfVU5CT1VORCk7Cj4gIAlpZiAoc2MtPm5yX3NjYW5uZWQgPCBzYy0+bnJfdG9fc2Nh biAmJiBjdXJyZW50X2lzX2tzd2FwZCgpKSB7Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7Cj4gKwkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCQlmcmVlZCArPSBpOTE1X2dlbV9zaHJpbmsoaTkx NSwKPiAgCQkJCQkgc2MtPm5yX3RvX3NjYW4gLSBzYy0+bnJfc2Nhbm5lZCwKPiAgCQkJCQkgJnNj LT5ucl9zY2FubmVkLAo+ICAJCQkJCSBJOTE1X1NIUklOS19BQ1RJVkUgfAo+ICAJCQkJCSBJOTE1 X1NIUklOS19CT1VORCB8Cj4gIAkJCQkJIEk5MTVfU0hSSU5LX1VOQk9VTkQpOwo+IC0JCWludGVs X3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKPiAgCX0KPiAgCj4gIAlzaHJpbmtlcl91bmxvY2soaTkxNSwgdW5s b2NrKTsKPiBAQCAtNDE4LDEyICs0MjQsMTMgQEAgaTkxNV9nZW1fc2hyaW5rZXJfb29tKHN0cnVj dCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKPiAg CQljb250YWluZXJfb2YobmIsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS5vb21fbm90aWZp ZXIpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCXVuc2lnbmVkIGxv bmcgdW5ldmljdGFibGUsIGJvdW5kLCB1bmJvdW5kLCBmcmVlZF9wYWdlczsKPiArCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJZnJlZWRfcGFnZXMgPSBp OTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVMTCwKPiAgCQkJCSAgICAgIEk5MTVfU0hSSU5L X0JPVU5EIHwKPiAgCQkJCSAgICAgIEk5MTVfU0hSSU5LX1VOQk9VTkQpOwo+IC0JaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSwgd2FrZXJlZik7Cj4gIAo+ICAJLyogQmVjYXVzZSB3ZSBtYXkgYmUgYWxsb2NhdGluZyBpbnNp ZGUgb3VyIG93biBkcml2ZXIsIHdlIGNhbm5vdAo+ICAJICogYXNzZXJ0IHRoYXQgdGhlcmUgYXJl IG5vIG9iamVjdHMgd2l0aCBwaW5uZWQgcGFnZXMgdGhhdCBhcmUgbm90Cj4gQEAgLTQ2MSw2ICs0 NjgsNyBAQCBpOTE1X2dlbV9zaHJpbmtlcl92bWFwKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIs IHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cgo+ICAJCWNvbnRhaW5lcl9vZihuYiwgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUsIG1tLnZtYXBfbm90aWZpZXIpOwo+ICAJc3RydWN0IGk5MTVf dm1hICp2bWEsICpuZXh0Owo+ICAJdW5zaWduZWQgbG9uZyBmcmVlZF9wYWdlcyA9IDA7Cj4gKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJvb2wgdW5sb2NrOwo+ICAJaW50IHJldDsKPiAg Cj4gQEAgLTQ3NCwxMiArNDgyLDEyIEBAIGk5MTVfZ2VtX3Nocmlua2VyX3ZtYXAoc3RydWN0IG5v dGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyCj4gIAlpZiAo cmV0KQo+ICAJCWdvdG8gb3V0Owo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJZnJlZWRfcGFnZXMg Kz0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsIC0xVUwsIE5VTEwsCj4gIAkJCQkgICAgICAgSTkxNV9T SFJJTktfQk9VTkQgfAo+ICAJCQkJICAgICAgIEk5MTVfU0hSSU5LX1VOQk9VTkQgfAo+ICAJCQkJ ICAgICAgIEk5MTVfU0hSSU5LX1ZNQVBTKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAK PiAgCS8qIFdlIGFsc28gd2FudCB0byBjbGVhciBhbnkgY2FjaGVkIGlvbWFwcyBhcyB0aGV5IHdy YXAgdm1hcCAqLwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgbmV4dCwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDg1MTMxMTY2NTg5Yy4uYmY0 ZGFlMjY0OWFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBA QCAtOTEzLDEwICs5MTMsMTIgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgc3RhdGljIGJvb2wgcmluZ19pc19pZGxlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Cj4gIAlib29sIGlkbGUgPSB0cnVlOwo+ICAKPiAgCS8qIElmIHRoZSB3aG9sZSBkZXZpY2Ug aXMgYXNsZWVwLCB0aGUgZW5naW5lIG11c3QgYmUgaWRsZSAqLwo+IC0JaWYgKCFpbnRlbF9ydW50 aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpKQo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdik7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0 dXJuIHRydWU7Cj4gIAo+ICAJLyogRmlyc3QgY2hlY2sgdGhhdCBubyBjb21tYW5kcyBhcmUgbGVm dCBpbiB0aGUgcmluZyAqLwo+IEBAIC05MjgsNyArOTMwLDcgQEAgc3RhdGljIGJvb2wgcmluZ19p c19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID4gMiAmJiAhKEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpKQo+ ICAJCWlkbGUgPSBmYWxzZTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo ZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ ICAKPiAgCXJldHVybiBpZGxlOwo+ICB9Cj4gQEAgLTE0MjUsNiArMTQyNyw3IEBAIHZvaWQgaW50 ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5l LT5leGVjbGlzdHM7Cj4gIAlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKiBjb25zdCBlcnJvciA9ICZl bmdpbmUtPmk5MTUtPmdwdV9lcnJvcjsKPiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqbGFz dDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsK PiAgCXN0cnVjdCByYl9ub2RlICpyYjsKPiAgCWludCBjb3VudDsKPiBAQCAtMTQ4Myw5ICsxNDg2 LDEwIEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICAKPiAgCXJjdV9yZWFkX3VubG9jaygpOwo+ICAKPiAtCWlmIChpbnRlbF9ydW50aW1l X3BtX2dldF9pZl9pbl91c2UoZW5naW5lLT5pOTE1KSkgewo+ICsJd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShlbmdpbmUtPmk5MTUpOwo+ICsJaWYgKHdha2VyZWYpIHsK PiAgCQlpbnRlbF9lbmdpbmVfcHJpbnRfcmVnaXN0ZXJzKGVuZ2luZSwgbSk7Cj4gLQkJaW50ZWxf cnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGVuZ2luZS0+aTkxNSk7Cj4gKwkJaW50ZWxfcnVudGlt ZV9wbV9wdXQoZW5naW5lLT5pOTE1LCB3YWtlcmVmKTsKPiAgCX0gZWxzZSB7Cj4gIAkJZHJtX3By aW50ZihtLCAiXHREZXZpY2UgaXMgYXNsZWVwOyBza2lwcGluZyByZWdpc3RlciBkdW1wXG4iKTsK PiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IDhkNGM3NmFjMGU3 ZC4uZDQ5NGQ5MmRhMDJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBA QCAtMTY3MCw2ICsxNjcwLDcgQEAgaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCAqcmVnID0gZGF0YTsKPiAgCXN0 cnVjdCByZWdfd2hpdGVsaXN0IGNvbnN0ICplbnRyeTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtl cmVmOwo+ICAJdW5zaWduZWQgaW50IGZsYWdzOwo+ICAJaW50IHJlbWFpbjsKPiAgCWludCByZXQg PSAwOwo+IEBAIC0xNjk1LDcgKzE2OTYsNyBAQCBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCWZsYWdzID0gcmVnLT5vZmZzZXQgJiAoZW50cnkt PnNpemUgLSAxKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwl3 YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAJaWYgKGVudHJ5LT5z aXplID09IDggJiYgZmxhZ3MgPT0gSTkxNV9SRUdfUkVBRF84Ql9XQSkKPiAgCQlyZWctPnZhbCA9 IEk5MTVfUkVBRDY0XzJ4MzIoZW50cnktPm9mZnNldF9sZHcsCj4gIAkJCQkJICAgIGVudHJ5LT5v ZmZzZXRfdWR3KTsKPiBAQCAtMTcwOSw3ICsxNzEwLDcgQEAgaW50IGk5MTVfcmVnX3JlYWRfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlyZWctPnZhbCA9IEk5MTVfUkVBRDgoZW50 cnktPm9mZnNldF9sZHcpOwo+ICAJZWxzZQo+ICAJCXJldCA9IC1FSU5WQUw7Cj4gLQlpbnRlbF9y dW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAtLSAKPiAy LjIwLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK