From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v3] drm/i915: Track all held rpm wakerefs Date: Tue, 08 Jan 2019 14:49:27 +0200 Message-ID: <87muob2u20.fsf@gaia.fi.intel.com> References: <20190107115509.12523-3-chris@chris-wilson.co.uk> <20190108122215.25959-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E0CD6EAD8 for ; Tue, 8 Jan 2019 12:51:07 +0000 (UTC) In-Reply-To: <20190108122215.25959-1-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+IHdyaXRlczoKCj4gRXZlcnl0 aW1lIHdlIHRha2UgYSB3YWtlcmVmLCByZWNvcmQgdGhlIHN0YWNrIHRyYWNlIG9mIHdoZXJlIGl0 IHdhcwo+IHRha2VuOyBjbGVhcmluZyB0aGUgc2V0IGlmIHdlIGV2ZXIgZHJvcCBiYWNrIHRvIG5v IG93bmVycy4gRm9yIGRlYnVnZ2luZwo+IGEgcnBtIGxlYWssIHdlIGNhbiBsb29rIGF0IGFsbCB0 aGUgY3VycmVudCB3YWtlcmVmcyBhbmQgY2hlY2sgaWYgdGhleQo+IGhhdmUgYSBtYXRjaGluZyBy cG1fcHV0Lgo+Cj4gdjI6IFVzZSBza2lwPTAgZm9yIHVud2luZGluZyB0aGUgc3RhY2sgYXMgaXQg YXBwZWFycyBvdXIgbm9pbmxpbmUKPiBmdW5jdGlvbiBkb2Vzbid0IGFwcGVhciBvbiB0aGUgc3Rh Y2sgKG5vciBkb2VzIHNhdmVfc3RhY2tfdHJhY2UKPiBpdHNlbGYhKQoKV2l0aCB0aGlzIEkgYW0g YWJsZSB0byBnZXQgcHJldmlvdXMgZnJhbWUgdGhhdCBkaWQgY2FsbAp0aGUgaW50ZWxfcnVudGlt ZV9wbV8qLiBXaGljaCBpcyBnb29kIGVub3VnaCBkbyBkaXN0aW5ndWlzaApjYWxsc2l0ZXMgdW5p cXVlbHkuCgo+IHYzOiBBbGxvdyBycG0tPmRlYnVnX2NvdW50IHRvIGRpc2FwcGVhciBiZXR3ZWVu IGluc3BlY3Rpb25zIGFuZCBzbwo+IGF2b2lkIGNhbGxpbmcga3JlYWxsb2MoMCkgYXMgdGhhdCBt YXkgcmV0dXJuIGEgWkVST19QVFIgbm90IE5VTEwhIChNaWthKQo+Cj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEphbmkgTmlrdWxh IDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBh bGFAbGludXguaW50ZWwuY29tPgoKU29tZSB1c2Ugb2Ygc2luZ3VsYXIgJ3dha2VyZWYnIHdvdWxk IHJlYWQgYmV0dGVyCmlmIGNoYW5nZWQgdG8gcGx1cmFsLiBCdXQgSSBhbSBub3QgaW5zaXN0aW5n LgoKQ2FuJ3QgZmluZCBhbnl0aGluZyBlbHNlIHdpdGggdGhpcyBzbyB5b3UgY2FuIGFkZDoKClJl dmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4K CkFuZCBJIGRpZCBwbGF5IHdpdGggaXQgYnkgaW50cm9kdWNpbmcgaW50ZW50aW9uYWwgbGVha3Mu ClRoZSBzaWduYWwgdG8gbm9pc2UgcmF0aW8gaXMgc3RpbGwgaGlnaCBidXQgaXQgaXMgYSBzdGFy dC4KSWYgaXQgc2VydmVzIGFueSBwdXJwb3NlLCB5b3UgY2FuIGFkZCBhbHNvOgoKVGVzdGVkLWJ5 OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCi1NaWthCgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnICAgICAgICAgICAgfCAg IDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwg ICA2ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwg ICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8 ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8 ICA0NCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jICAgICAg IHwgMjY0ICsrKysrKysrKysrKysrKystLQo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX2dlbV9kZXZpY2UuYyAgfCAgIDggKy0KPiAgNyBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0 aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZy5kZWJ1ZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWcK PiBpbmRleCA5ZTM2ZmZiNWViN2MuLmE5NzkyOWM0NzQ2NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv S2NvbmZpZy5kZWJ1Zwo+IEBAIC0yMSwxMSArMjEsMTEgQEAgY29uZmlnIERSTV9JOTE1X0RFQlVH Cj4gICAgICAgICAgc2VsZWN0IERFQlVHX0ZTCj4gICAgICAgICAgc2VsZWN0IFBSRUVNUFRfQ09V TlQKPiAgICAgICAgICBzZWxlY3QgSTJDX0NIQVJERVYKPiArICAgICAgICBzZWxlY3QgU1RBQ0tE RVBPVAo+ICAgICAgICAgIHNlbGVjdCBEUk1fRFBfQVVYX0NIQVJERVYKPiAgICAgICAgICBzZWxl Y3QgWDg2X01TUiAjIHVzZWQgYnkgaWd0L3BtX3JwbQo+ICAgICAgICAgIHNlbGVjdCBEUk1fVkdF TSAjIHVzZWQgYnkgaWd0L3ByaW1lX3ZnZW0gKGRtYWJ1ZiBpbnRlcm9wIGNoZWNrcykKPiAgICAg ICAgICBzZWxlY3QgRFJNX0RFQlVHX01NIGlmIERSTT15Cj4gLSAgICAgICAgc2VsZWN0IFNUQUNL REVQT1QgaWYgRFJNPXkgIyBmb3IgRFJNX0RFQlVHX01NCj4gIAlzZWxlY3QgRFJNX0RFQlVHX1NF TEZURVNUCj4gIAlzZWxlY3QgU1dfU1lOQyAjIHNpZ25hbGluZyB2YWxpZGF0aW9uIGZyYW1ld29y ayAoaWd0L3N5bmNvYmoqKQo+ICAJc2VsZWN0IERSTV9JOTE1X1NXX0ZFTkNFX0RFQlVHX09CSkVD VFMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDk1ODEzZTIxYWUwMi4u MDUwY2Y4YWJkNDI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAt MjcwMiw2ICsyNzAyLDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9ydW50aW1lX3BtX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQkgICBwY2lfcG93ZXJfbmFtZShwZGV2 LT5jdXJyZW50X3N0YXRlKSwKPiAgCQkgICBwZGV2LT5jdXJyZW50X3N0YXRlKTsKPiAgCj4gKwlp ZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkpIHsKPiArCQlz dHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0pOwo+ICsKPiArCQlw cmludF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoZGV2X3ByaXYsICZwKTsKPiArCX0KPiArCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAxN2Zj YTNiYTM0M2UuLmUyZjQ3NTNjYTIxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBA IC05MDYsNiArOTA2LDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5w cHNfbXV0ZXgpOwo+ICAKPiAgCWk5MTVfbWVtY3B5X2luaXRfZWFybHkoZGV2X3ByaXYpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KGRldl9wcml2KTsKPiAgCj4gIAlyZXQgPSBpOTE1 X3dvcmtxdWV1ZXNfaW5pdChkZXZfcHJpdik7Cj4gIAlpZiAocmV0IDwgMCkKPiBAQCAtMTgwOCw4 ICsxODA5LDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCWk5MTVfZHJpdmVyX2NsZWFudXBfbW1pbyhkZXZfcHJpdik7Cj4gIAo+ICAJZW5hYmxl X3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwo+IC0KPiAtCVdBUk5fT04oYXRvbWljX3Jl YWQoJmRldl9wcml2LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpKTsKPiArCWludGVsX3J1bnRp bWVfcG1fY2xlYW51cChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGk5MTVfZHJp dmVyX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMjAxMSw2ICsyMDExLDgg QEAgc3RhdGljIGludCBpOTE1X2RybV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgYm9vbCBoaWJlcm5hdGlvbikKPiAgCj4gIG91dDoKPiAgCWVuYWJsZV9ycG1fd2FrZXJlZl9h c3NlcnRzKGRldl9wcml2KTsKPiArCWlmICghZGV2X3ByaXYtPnVuY29yZS51c2VyX2ZvcmNld2Fr ZS5jb3VudCkKPiArCQlpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoZGV2X3ByaXYpOwo+ICAKPiAg CXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMjk2Niw3ICsyOTY4LDcgQEAgc3RhdGljIGludCBpbnRl bF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKPiAgCX0KPiAgCj4gIAllbmFi bGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gLQlXQVJOX09OX09OQ0UoYXRvbWlj X3JlYWQoJmRldl9wcml2LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpKTsKPiArCWludGVsX3J1 bnRpbWVfcG1fY2xlYW51cChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKGludGVsX3VuY29yZV9hcm1f dW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKGRldl9wcml2KSkKPiAgCQlEUk1fRVJST1IoIlVuY2xh aW1lZCBhY2Nlc3MgZGV0ZWN0ZWQgcHJpb3IgdG8gc3VzcGVuZGluZ1xuIik7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggN2MxNTJjZDUxNDk4Li5lMWYyNDQxMDdlNDIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDUsNiArNDUsNyBAQAo+ICAjaW5jbHVkZSA8bGlu dXgvcG1fcW9zLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlvbi5oPgo+ICAjaW5jbHVk ZSA8bGludXgvc2htZW1fZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N0YWNrZGVwb3QuaD4KPiAg Cj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2ludGVsLWd0dC5oPgo+ IEBAIC0xMTU2LDYgKzExNTcsMTIgQEAgc3RydWN0IGk5MTVfcnVudGltZV9wbSB7Cj4gIAlhdG9t aWNfdCB3YWtlcmVmX2NvdW50Owo+ICAJYm9vbCBzdXNwZW5kZWQ7Cj4gIAlib29sIGlycXNfZW5h YmxlZDsKPiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1F X1BNKQo+ICsJc3BpbmxvY2tfdCBkZWJ1Z19sb2NrOwo+ICsJZGVwb3Rfc3RhY2tfaGFuZGxlX3Qg KmRlYnVnX293bmVyczsKPiArCXVuc2lnbmVkIGxvbmcgZGVidWdfY291bnQ7Cj4gKyNlbmRpZgo+ ICB9Owo+ICAKPiAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ugewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gaW5kZXggMWExMWMyYmViN2YzLi5hYzUxM2ZkNzAzMTUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC00MSw2ICs0MSw4IEBACj4gICNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8bWVkaWEvY2VjLW5vdGlmaWVyLmg+Cj4gIAo+ICtz dHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gKwo+ICAvKioKPiAgICogX193YWl0X2ZvciAtIG1hZ2ljIHdh aXQgbWFjcm8KPiAgICoKPiBAQCAtMjA4NCw2ICsyMDg2LDcgQEAgYm9vbCBpbnRlbF9wc3JfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBpbnRlbF9pbml0X3F1aXJr cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgLyogaW50ZWxfcnVu dGltZV9wbS5jICovCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7Cj4gIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWlu c19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50 ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbCByZXN1bWUpOwo+IEBAIC0yMTA2LDYgKzIxMDksNyBAQCB2b2lkIGJ4dF9kaXNwbGF5 X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgcmVzdW1l KTsKPiAgdm9pZCBieHRfZGlzcGxheV9jb3JlX3VuaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaW50ZWxfcnVudGlt ZV9wbV9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGNvbnN0 IGNoYXIgKgo+ICBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pOwo+ICAKPiBAQCAtMjEyMywyMyArMjEyNywyMyBAQCB2 b2lkIGljbF9kYnVmX3NsaWNlc191cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCQkgICAgdTggcmVxX3NsaWNlcyk7Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHZvaWQK PiAtYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK2Fzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCVdBUk5fT05DRShkZXZfcHJpdi0+cnVudGlt ZV9wbS5zdXNwZW5kZWQsCj4gKwlXQVJOX09OQ0UoaTkxNS0+cnVudGltZV9wbS5zdXNwZW5kZWQs Cj4gIAkJICAiRGV2aWNlIHN1c3BlbmRlZCBkdXJpbmcgSFcgYWNjZXNzXG4iKTsKPiAgfQo+ICAK PiAgc3RhdGljIGlubGluZSB2b2lkCj4gLWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2Fzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+IC0JYXNzZXJ0X3JwbV9kZXZpY2Vf bm90X3N1c3BlbmRlZChkZXZfcHJpdik7Cj4gLQlXQVJOX09OQ0UoIWF0b21pY19yZWFkKCZkZXZf cHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KSwKPiArCWFzc2VydF9ycG1fZGV2aWNlX25v dF9zdXNwZW5kZWQoaTkxNSk7Cj4gKwlXQVJOX09OQ0UoIWF0b21pY19yZWFkKCZpOTE1LT5ydW50 aW1lX3BtLndha2VyZWZfY291bnQpLAo+ICAJCSAgIlJQTSB3YWtlbG9jayByZWYgbm90IGhlbGQg ZHVyaW5nIEhXIGFjY2VzcyIpOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogZGlzYWJsZV9ycG1fd2Fr ZXJlZl9hc3NlcnRzIC0gZGlzYWJsZSB0aGUgUlBNIGFzc2VydCBjaGVja3MKPiAtICogQGRldl9w cml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICsgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFu Y2UKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBkaXNhYmxlIGFzc2VydHMgdGhhdCBjaGVjayBp ZiB3ZSBob2xkIGFuIFJQTSB3YWtlbG9jawo+ICAgKiByZWZlcmVuY2UsIHdoaWxlIGtlZXBpbmcg dGhlIGRldmljZS1ub3Qtc3VzcGVuZGVkIGNoZWNrcyBzdGlsbCBlbmFibGVkLgo+IEBAIC0yMTU2 LDE0ICsyMTYwLDE0IEBAIGFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKCkuCj4g ICAqLwo+ICBzdGF0aWMgaW5saW5lIHZvaWQKPiAtZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArZGlzYWJsZV9ycG1fd2FrZXJl Zl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlhdG9taWNf aW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiArCWF0b21pY19pbmMo Jmk5MTUtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCk7Cj4gIH0KPiAgCj4gIC8qKgo+ICAgKiBl bmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyAtIHJlLWVuYWJsZSB0aGUgUlBNIGFzc2VydCBjaGVj a3MKPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICsgKiBAaTkxNTogaTkx NSBkZXZpY2UgaW5zdGFuY2UKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiByZS1lbmFibGVzIHRo ZSBSUE0gYXNzZXJ0IGNoZWNrcyBhZnRlciBkaXNhYmxpbmcgdGhlbSB3aXRoCj4gICAqIGRpc2Fi bGVfcnBtX3dha2VyZWZfYXNzZXJ0cy4gSXQncyBtZWFudCB0byBiZSB1c2VkIG9ubHkgaW4gc3Bl Y2lhbAo+IEBAIC0yMTczLDE1ICsyMTc3LDI1IEBAIGRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIGRpc2FibGVfcnBtX3dh a2VyZWZfYXNzZXJ0cygpLgo+ICAgKi8KPiAgc3RhdGljIGlubGluZSB2b2lkCj4gLWVuYWJsZV9y cG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAr ZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gIHsKPiAtCWF0b21pY19kZWMoJmRldl9wcml2LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQp Owo+ICsJYXRvbWljX2RlYygmaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAgfQo+ ICAKPiAtdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+IC1ib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0 X25vcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaW50 ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAr dm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7 Cj4gK2Jvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KTsKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiArI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCj4gK3ZvaWQgcHJpbnRfaW50ZWxfcnVudGlt ZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJCQkJICAgIHN0 cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBwcmlu dF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gKwkJCQkJCSAgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICt7Cj4gK30KPiArI2VuZGlmCj4g IAo+ICB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkgICAgIGJvb2wgb3ZlcnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggOWU5NTAxZjgyZjA2 Li5jODEzYTJiOTcyYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCj4gQEAgLTI5LDYgKzI5LDggQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5oPgo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1fcHJp bnQuaD4KPiArCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2 LmgiCj4gIAo+IEBAIC00OSw2ICs1MSwxODYgQEAKPiAgICogcHJlc2VudCBmb3IgYSBnaXZlbiBw bGF0Zm9ybS4KPiAgICovCj4gIAo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVC VUdfUlVOVElNRV9QTSkKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zb3J0Lmg+Cj4gKwo+ICsjZGVm aW5lIFNUQUNLREVQVEggOAo+ICsKPiArc3RhdGljIHZvaWQgaW5pdF9pbnRlbF9ydW50aW1lX3Bt X3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXNwaW5fbG9j a19pbml0KCZpOTE1LT5ydW50aW1lX3BtLmRlYnVnX2xvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMg bm9pbmxpbmUgdm9pZAo+ICt0cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gKnJw bSA9ICZpOTE1LT5ydW50aW1lX3BtOwo+ICsJdW5zaWduZWQgbG9uZyBlbnRyaWVzW1NUQUNLREVQ VEhdOwo+ICsJc3RydWN0IHN0YWNrX3RyYWNlIHRyYWNlID0gewo+ICsJCS5lbnRyaWVzID0gZW50 cmllcywKPiArCQkubWF4X2VudHJpZXMgPSBBUlJBWV9TSVpFKGVudHJpZXMpLAo+ICsJCS5za2lw ID0gMCAvKiBnY2MgaXMgaWdub3Jpbmcgbm9pbmxpbmUgZm9yIHRhaWwgY2FsbHM/ICovCj4gKwl9 Owo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCWRlcG90X3N0YWNrX2hhbmRsZV90IHN0YWNr LCAqc3RhY2tzOwo+ICsKPiArCWlmICghSEFTX1JVTlRJTUVfUE0oaTkxNSkpCj4gKwkJcmV0dXJu Owo+ICsKPiArCXNhdmVfc3RhY2tfdHJhY2UoJnRyYWNlKTsKPiArCWlmICh0cmFjZS5ucl9lbnRy aWVzICYmCj4gKwkgICAgdHJhY2UuZW50cmllc1t0cmFjZS5ucl9lbnRyaWVzIC0gMV0gPT0gVUxP TkdfTUFYKQo+ICsJCXRyYWNlLm5yX2VudHJpZXMtLTsKPiArCj4gKwlzdGFjayA9IGRlcG90X3Nh dmVfc3RhY2soJnRyYWNlLCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKPiArCWlmICghc3Rh Y2spCj4gKwkJcmV0dXJuOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZycG0tPmRlYnVnX2xv Y2ssIGZsYWdzKTsKPiArCXN0YWNrcyA9IGtyZWFsbG9jKHJwbS0+ZGVidWdfb3duZXJzLAo+ICsJ CQkgIChycG0tPmRlYnVnX2NvdW50ICsgMSkgKiBzaXplb2YoKnN0YWNrcyksCj4gKwkJCSAgR0ZQ X05PV0FJVCB8IF9fR0ZQX05PV0FSTik7Cj4gKwlpZiAoc3RhY2tzKSB7Cj4gKwkJc3RhY2tzW3Jw bS0+ZGVidWdfY291bnQrK10gPSBzdGFjazsKPiArCQlycG0tPmRlYnVnX293bmVycyA9IHN0YWNr czsKPiArCX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJwbS0+ZGVidWdfbG9jaywgZmxh Z3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2Fr ZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVf cnVudGltZV9wbSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07Cj4gKwlkZXBvdF9zdGFja19oYW5k bGVfdCAqc3RhY2tzOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwlzcGluX2xvY2tf aXJxc2F2ZSgmcnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7Cj4gKwlzdGFja3MgPSBmZXRjaF9hbmRf emVybygmcnBtLT5kZWJ1Z19vd25lcnMpOwo+ICsJcnBtLT5kZWJ1Z19jb3VudCA9IDA7Cj4gKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZycG0tPmRlYnVnX2xvY2ssIGZsYWdzKTsKPiArCj4gKwlr ZnJlZShzdGFja3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNtcGhhbmRsZShjb25zdCB2b2lk ICpfYSwgY29uc3Qgdm9pZCAqX2IpCj4gK3sKPiArCWNvbnN0IGRlcG90X3N0YWNrX2hhbmRsZV90 ICogY29uc3QgYSA9IF9hLCAqIGNvbnN0IGIgPSBfYjsKPiArCj4gKwlpZiAoKmEgPCAqYikKPiAr CQlyZXR1cm4gLTE7Cj4gKwllbHNlIGlmICgqYSA+ICpiKQo+ICsJCXJldHVybiAxOwo+ICsJZWxz ZQo+ICsJCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX3ByaW50X2ludGVsX3J1 bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gKwkJCQkJICAgICBkZXBv dF9zdGFja19oYW5kbGVfdCAqc3RhY2tzLAo+ICsJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBjb3Vu dCkKPiArewo+ICsJdW5zaWduZWQgbG9uZyBlbnRyaWVzW1NUQUNLREVQVEhdOwo+ICsJdW5zaWdu ZWQgbG9uZyBpOwo+ICsJY2hhciAqYnVmOwo+ICsKPiArCWRybV9wcmludGYocCwgIldha2VyZWYg Y291bnQ6ICVsdVxuIiwgY291bnQpOwo+ICsKPiArCWJ1ZiA9IGttYWxsb2MoUEFHRV9TSVpFLCBH RlBfS0VSTkVMKTsKPiArCWlmICghYnVmKQo+ICsJCXJldHVybjsKPiArCj4gKwlzb3J0KHN0YWNr cywgY291bnQsIHNpemVvZigqc3RhY2tzKSwgY21waGFuZGxlLCBOVUxMKTsKPiArCj4gKwlmb3Ig KGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9 IHsKPiArCQkJLmVudHJpZXMgPSBlbnRyaWVzLAo+ICsJCQkubWF4X2VudHJpZXMgPSBBUlJBWV9T SVpFKGVudHJpZXMpLAo+ICsJCX07Cj4gKwkJZGVwb3Rfc3RhY2tfaGFuZGxlX3Qgc3RhY2sgPSBz dGFja3NbaV07Cj4gKwkJdW5zaWduZWQgbG9uZyByZXA7Cj4gKwo+ICsJCXJlcCA9IDE7Cj4gKwkJ d2hpbGUgKGkgKyAxIDwgY291bnQgJiYgc3RhY2tzW2kgKyAxXSA9PSBzdGFjaykKPiArCQkJcmVw KyssIGkrKzsKPiArCQlkZXBvdF9mZXRjaF9zdGFjayhzdGFjaywgJnRyYWNlKTsKPiArCQlzbnBy aW50X3N0YWNrX3RyYWNlKGJ1ZiwgUEFHRV9TSVpFLCAmdHJhY2UsIDIpOwo+ICsJCWRybV9wcmlu dGYocCwgIldha2VyZWYgeCVsdSB0YWtlbiBhdDpcbiVzIiwgcmVwLCBidWYpOwo+ICsJfQo+ICsK PiArCWtmcmVlKGJ1Zik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNob3dfaW50ZWxfcnVudGlt ZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1 Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKPiArCWRlcG90X3N0 YWNrX2hhbmRsZV90ICpzdGFja3M7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzLCBjb3VudDsKPiAr CXN0cnVjdCBkcm1fcHJpbnRlciBwOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZycG0tPmRl YnVnX2xvY2ssIGZsYWdzKTsKPiArCXN0YWNrcyA9IGZldGNoX2FuZF96ZXJvKCZycG0tPmRlYnVn X293bmVycyk7Cj4gKwljb3VudCA9IGZldGNoX2FuZF96ZXJvKCZycG0tPmRlYnVnX2NvdW50KTsK PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJwbS0+ZGVidWdfbG9jaywgZmxhZ3MpOwo+ICsJ aWYgKCFjb3VudCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcCA9IGRybV9kZWJ1Z19wcmludGVyKCJp OTE1Iik7Cj4gKwlfX3ByaW50X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZigmcCwgc3RhY2tzLCBj b3VudCk7Cj4gKwo+ICsJa2ZyZWUoc3RhY2tzKTsKPiArfQo+ICsKPiArdm9pZCBwcmludF9pbnRl bF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJ CQkgICAgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICt7Cj4gKwlkZXBvdF9zdGFja19oYW5kbGVf dCAqc3RhY2tzID0gTlVMTDsKPiArCXVuc2lnbmVkIGxvbmcgY291bnQgPSAwOwo+ICsKPiArCWRv IHsKPiArCQlzdHJ1Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsK PiArCQl1bnNpZ25lZCBsb25nIGFsbG9jID0gY291bnQ7Cj4gKwkJZGVwb3Rfc3RhY2tfaGFuZGxl X3QgKnM7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnEoJnJwbS0+ZGVidWdfbG9jayk7Cj4gKwkJY291 bnQgPSBycG0tPmRlYnVnX2NvdW50Owo+ICsJCWlmIChjb3VudCA8PSBhbGxvYykKPiArCQkJbWVt Y3B5KHN0YWNrcywgcnBtLT5kZWJ1Z19vd25lcnMsIGNvdW50ICogc2l6ZW9mKCpzKSk7Cj4gKwkJ c3Bpbl91bmxvY2tfaXJxKCZycG0tPmRlYnVnX2xvY2spOwo+ICsJCWlmIChjb3VudCA8PSBhbGxv YykKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCXMgPSBrcmVhbGxvYyhzdGFja3MsIGNvdW50ICogc2l6 ZW9mKCpzKSwgR0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKCFzKQo+ICsJCQlnb3RvIG91dDsKPiArCj4g KwkJc3RhY2tzID0gczsKPiArCX0gd2hpbGUgKDEpOwo+ICsKPiArCV9fcHJpbnRfaW50ZWxfcnVu dGltZV9wbV93YWtlcmVmKHAsIHN0YWNrcywgY291bnQpOwo+ICsKPiArb3V0Ogo+ICsJa2ZyZWUo c3RhY2tzKTsKPiArfQo+ICsKPiArI2Vsc2UKPiArCj4gK3N0YXRpYyB2b2lkIGluaXRfaW50ZWxf cnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1 bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzaG93X2ludGVsX3J1bnRpbWVfcG1f d2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICt9Cj4gKwo+ICsj ZW5kaWYKPiArCj4gIGJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsX2lzX2VuYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCSBlbnVtIGk5MTVfcG93ZXJf d2VsbF9pZCBwb3dlcl93ZWxsX2lkKTsKPiAgCj4gQEAgLTM5ODYsNyArNDE2OCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9ydW50aW1lX3BtX2dldCAt IGdyYWIgYSBydW50aW1lIHBtIHJlZmVyZW5jZQo+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNl IGluc3RhbmNlCj4gKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICAgKgo+ICAgKiBU aGlzIGZ1bmN0aW9uIGdyYWJzIGEgZGV2aWNlLWxldmVsIHJ1bnRpbWUgcG0gcmVmZXJlbmNlICht b3N0bHkgdXNlZCBmb3IgR0VNCj4gICAqIGNvZGUgdG8gZW5zdXJlIHRoZSBHVFQgb3IgR1QgaXMg b24pIGFuZCBlbnN1cmVzIHRoYXQgaXQgaXMgcG93ZXJlZCB1cC4KPiBAQCAtMzk5NCwyMiArNDE3 NiwyNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIEFueSBydW50aW1lIHBtIHJlZmVy ZW5jZSBvYnRhaW5lZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYwo+ICAg KiBjYWxsIHRvIGludGVsX3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFzZSB0aGUgcmVmZXJlbmNl IGFnYWluLgo+ICAgKi8KPiAtdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0g ZGV2X3ByaXYtPmRybS5wZGV2Owo+ICsJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpOTE1LT5kcm0u cGRldjsKPiAgCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2Owo+ICAJaW50IHJldDsK PiAgCj4gIAlyZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKGtkZXYpOwo+ICAJV0FSTl9PTkNFKHJl dCA8IDAsICJwbV9ydW50aW1lX2dldF9zeW5jKCkgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiAgCj4g LQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAtCWFz c2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5y dW50aW1lX3BtLndha2VyZWZfY291bnQpOwo+ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5 MTUpOwo+ICsKPiArCXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgfQo+ ICAKPiAgLyoqCj4gICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZSAtIGdyYWIgYSBy dW50aW1lIHBtIHJlZmVyZW5jZSBpZiBkZXZpY2UgaW4gdXNlCj4gLSAqIEBkZXZfcHJpdjogaTkx NSBkZXZpY2UgaW5zdGFuY2UKPiArICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gICAq Cj4gICAqIFRoaXMgZnVuY3Rpb24gZ3JhYnMgYSBkZXZpY2UtbGV2ZWwgcnVudGltZSBwbSByZWZl cmVuY2UgaWYgdGhlIGRldmljZSBpcwo+ICAgKiBhbHJlYWR5IGluIHVzZSBhbmQgZW5zdXJlcyB0 aGF0IGl0IGlzIHBvd2VyZWQgdXAuIEl0IGlzIGlsbGVnYWwgdG8gdHJ5Cj4gQEAgLTQwMjAsMTAg KzQyMDQsMTAgQEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICAqCj4gICAqIFJldHVybnM6IFRydWUgaWYgdGhlIHdha2VyZWYg d2FzIGFjcXVpcmVkLCBvciBGYWxzZSBvdGhlcndpc2UuCj4gICAqLwo+IC1ib29sIGludGVsX3J1 bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK2Jvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICB7Cj4gIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUE0pKSB7Cj4gLQkJ c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gKwkJc3RydWN0IHBj aV9kZXYgKnBkZXYgPSBpOTE1LT5kcm0ucGRldjsKPiAgCQlzdHJ1Y3QgZGV2aWNlICprZGV2ID0g JnBkZXYtPmRldjsKPiAgCj4gIAkJLyoKPiBAQCAtNDAzNiwxNSArNDIyMCwxNyBAQCBib29sIGlu dGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gLQlhdG9taWNfaW5jKCZkZXZf cHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAtCWFzc2VydF9ycG1fd2FrZWxvY2tf aGVsZChkZXZfcHJpdik7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZf Y291bnQpOwo+ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICsKPiArCXRyYWNr X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiAg fQo+ICAKPiAgLyoqCj4gICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1lIC0gZ3JhYiBh IHJ1bnRpbWUgcG0gcmVmZXJlbmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFu Y2UKPiArICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVu Y3Rpb24gZ3JhYnMgYSBkZXZpY2UtbGV2ZWwgcnVudGltZSBwbSByZWZlcmVuY2UgKG1vc3RseSB1 c2VkIGZvciBHRU0KPiAgICogY29kZSB0byBlbnN1cmUgdGhlIEdUVCBvciBHVCBpcyBvbikuCj4g QEAgLTQwNTksMzIgKzQyNDUsMzUgQEAgYm9vbCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91 c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKiBBbnkgcnVudGltZSBw bSByZWZlcmVuY2Ugb2J0YWluZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRy aWMKPiAgICogY2FsbCB0byBpbnRlbF9ydW50aW1lX3BtX3B1dCgpIHRvIHJlbGVhc2UgdGhlIHJl ZmVyZW5jZSBhZ2Fpbi4KPiAgICovCj4gLXZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1 bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt2b2lkIGludGVsX3J1bnRp bWVfcG1fZ2V0X25vcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4g LQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiArCXN0cnVjdCBw Y2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7Cj4gIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0g JnBkZXYtPmRldjsKPiAgCj4gLQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOwo+ ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICAJcG1fcnVudGltZV9nZXRfbm9y ZXN1bWUoa2Rldik7Cj4gIAo+IC0JYXRvbWljX2luYygmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2Fr ZXJlZl9jb3VudCk7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291 bnQpOwo+ICsKPiArCXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgfQo+ ICAKPiAgLyoqCj4gICAqIGludGVsX3J1bnRpbWVfcG1fcHV0IC0gcmVsZWFzZSBhIHJ1bnRpbWUg cG0gcmVmZXJlbmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICog QGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZHJv cHMgdGhlIGRldmljZS1sZXZlbCBydW50aW1lIHBtIHJlZmVyZW5jZSBvYnRhaW5lZCBieQo+ICAg KiBpbnRlbF9ydW50aW1lX3BtX2dldCgpIGFuZCBtaWdodCBwb3dlciBkb3duIHRoZSBjb3JyZXNw b25kaW5nCj4gICAqIGhhcmR3YXJlIGJsb2NrIHJpZ2h0IGF3YXkgaWYgdGhpcyBpcyB0aGUgbGFz dCByZWZlcmVuY2UuCj4gICAqLwo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+IC0Jc3RydWN0IHBjaV9kZXYgKnBk ZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUt PmRybS5wZGV2Owo+ICAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5kZXY7Cj4gIAo+IC0J YXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKPiAtCWF0b21pY19kZWMoJmRldl9w cml2LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpOwo+ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19o ZWxkKGk5MTUpOwo+ICsJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmk5MTUtPnJ1bnRpbWVfcG0u d2FrZXJlZl9jb3VudCkpCj4gKwkJdW50cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoaTkx NSk7Cj4gIAo+ICAJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShrZGV2KTsKPiAgCXBtX3J1bnRp bWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwo+IEBAIC00MDkyLDcgKzQyODEsNyBAQCB2b2lkIGlu dGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg Cj4gIC8qKgo+ICAgKiBpbnRlbF9ydW50aW1lX3BtX2VuYWJsZSAtIGVuYWJsZSBydW50aW1lIHBt Cj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICogQGk5MTU6IGk5MTUg ZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBydW50aW1l IHBtIGF0IHRoZSBlbmQgb2YgdGhlIGRyaXZlciBsb2FkIHNlcXVlbmNlLgo+ICAgKgo+IEBAIC00 MTAwLDkgKzQyODksOSBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgICogc3Vib3JkaW5hdGUgZGlzcGxheSBwb3dlciBkb21h aW5zLiBUaGF0IGlzIGRvbmUgYnkKPiAgICogaW50ZWxfcG93ZXJfZG9tYWluc19lbmFibGUoKS4K PiAgICovCj4gLXZvaWQgaW50ZWxfcnVudGltZV9wbV9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICt2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRl dl9wcml2LT5kcm0ucGRldjsKPiArCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBk ZXY7Cj4gIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRldjsKPiAgCj4gIAkvKgo+IEBA IC00MTI0LDcgKzQzMTMsNyBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIHNvIHRoZSBkcml2ZXIncyBvd24gUlBN IHJlZmVyZW5jZSB0cmFja2luZyBhc3NlcnRzIGFsc28gd29yayBvbgo+ICAJICogcGxhdGZvcm1z IHdpdGhvdXQgUlBNIHN1cHBvcnQuCj4gIAkgKi8KPiAtCWlmICghSEFTX1JVTlRJTUVfUE0oZGV2 X3ByaXYpKSB7Cj4gKwlpZiAoIUhBU19SVU5USU1FX1BNKGk5MTUpKSB7Cj4gIAkJaW50IHJldDsK PiAgCj4gIAkJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChrZGV2KTsKPiBAQCAtNDE0 MiwxNyArNDMzMSwzNiBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtk ZXYpOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlzdHJ1Y3QgcGNpX2RldiAq cGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiArCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkx NS0+ZHJtLnBkZXY7Cj4gIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRldjsKPiAgCj4g IAkvKiBUcmFuc2ZlciBycG0gb3duZXJzaGlwIGJhY2sgdG8gY29yZSAqLwo+IC0JV0FSTihwbV9y dW50aW1lX2dldF9zeW5jKCZkZXZfcHJpdi0+ZHJtLnBkZXYtPmRldikgPCAwLAo+ICsJV0FSTihw bV9ydW50aW1lX2dldF9zeW5jKGtkZXYpIDwgMCwKPiAgCSAgICAgIkZhaWxlZCB0byBwYXNzIHJw bSBvd25lcnNoaXAgYmFjayB0byBjb3JlXG4iKTsKPiAgCj4gIAlwbV9ydW50aW1lX2RvbnRfdXNl X2F1dG9zdXNwZW5kKGtkZXYpOwo+ICAKPiAtCWlmICghSEFTX1JVTlRJTUVfUE0oZGV2X3ByaXYp KQo+ICsJaWYgKCFIQVNfUlVOVElNRV9QTShpOTE1KSkKPiAgCQlwbV9ydW50aW1lX3B1dChrZGV2 KTsKPiAgfQo+ICsKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gKnJwbSA9 ICZpOTE1LT5ydW50aW1lX3BtOwo+ICsKPiArCWlmIChXQVJOKGF0b21pY19yZWFkKCZycG0tPndh a2VyZWZfY291bnQpLAo+ICsJCSAiaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50PSVkIG9u IGNsZWFudXBcbiIsCj4gKwkJIGF0b21pY19yZWFkKCZycG0tPndha2VyZWZfY291bnQpKSkgewo+ ICsJCXNob3dfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwo+ICsJCWF0b21pY19zZXQo JnJwbS0+d2FrZXJlZl9jb3VudCwgMCk7Cj4gKwl9Cj4gKwo+ICsJdW50cmFja19pbnRlbF9ydW50 aW1lX3BtX3dha2VyZWYoaTkxNSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9p bml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlpbml0X2lu dGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCBiYWEzYzM4OTE5ZGUu LjA4MjgwOTU2OTY4MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtMTU0LDE1ICsxNTQsMTcgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAJcGRldi0+ZGV2LmFyY2hkYXRh LmlvbW11ID0gKHZvaWQgKiktMTsKPiAgI2VuZGlmCj4gIAo+ICsJaTkxNSA9IChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqKShwZGV2ICsgMSk7Cj4gKwlwY2lfc2V0X2RydmRhdGEocGRldiwgaTkx NSk7Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KGk5MTUpOwo+ICsKPiAgCWRl dl9wbV9kb21haW5fc2V0KCZwZGV2LT5kZXYsICZwbV9kb21haW4pOwo+ICAJcG1fcnVudGltZV9l bmFibGUoJnBkZXYtPmRldik7Cj4gIAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKCZw ZGV2LT5kZXYpOwo+ICAJaWYgKHBtX3J1bnRpbWVfZW5hYmxlZCgmcGRldi0+ZGV2KSkKPiAgCQlX QVJOX09OKHBtX3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldikpOwo+ICAKPiAtCWk5MTUgPSAo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKikocGRldiArIDEpOwo+IC0JcGNpX3NldF9kcnZkYXRh KHBkZXYsIGk5MTUpOwo+IC0KPiAgCWVyciA9IGRybV9kZXZfaW5pdCgmaTkxNS0+ZHJtLCAmbW9j a19kcml2ZXIsICZwZGV2LT5kZXYpOwo+ICAJaWYgKGVycikgewo+ICAJCXByX2VycigiRmFpbGVk IHRvIGluaXRpYWxpc2UgbW9jayBHRU0gZGV2aWNlOiBlcnI9JWRcbiIsIGVycik7Cj4gLS0gCj4g Mi4yMC4xCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=