From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 03/46] drm/i915: Track all held rpm wakerefs Date: Mon, 07 Jan 2019 15:14:00 +0200 Message-ID: <87sgy4390n.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F4FB89308 for ; Mon, 7 Jan 2019 13:15:39 +0000 (UTC) In-Reply-To: <20190107115509.12523-3-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+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWcgICAgICAgICAgICB8ICAgMiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgIDYg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDgg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA3 ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDQ0 ICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAgICAgfCAy NjcgKysrKysrKysrKysrKysrKy0tCj4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf Z2VtX2RldmljZS5jICB8ICAgOCArLQo+ICA3IGZpbGVzIGNoYW5nZWQsIDI5MiBpbnNlcnRpb25z KCspLCA1MCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9LY29uZmlnLmRlYnVnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zwo+IGlu ZGV4IDllMzZmZmI1ZWI3Yy4uYTk3OTI5YzQ3NDY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcuZGVidWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29u ZmlnLmRlYnVnCj4gQEAgLTIxLDExICsyMSwxMSBAQCBjb25maWcgRFJNX0k5MTVfREVCVUcKPiAg ICAgICAgICBzZWxlY3QgREVCVUdfRlMKPiAgICAgICAgICBzZWxlY3QgUFJFRU1QVF9DT1VOVAo+ ICAgICAgICAgIHNlbGVjdCBJMkNfQ0hBUkRFVgo+ICsgICAgICAgIHNlbGVjdCBTVEFDS0RFUE9U Cj4gICAgICAgICAgc2VsZWN0IERSTV9EUF9BVVhfQ0hBUkRFVgo+ICAgICAgICAgIHNlbGVjdCBY ODZfTVNSICMgdXNlZCBieSBpZ3QvcG1fcnBtCj4gICAgICAgICAgc2VsZWN0IERSTV9WR0VNICMg dXNlZCBieSBpZ3QvcHJpbWVfdmdlbSAoZG1hYnVmIGludGVyb3AgY2hlY2tzKQo+ICAgICAgICAg IHNlbGVjdCBEUk1fREVCVUdfTU0gaWYgRFJNPXkKPiAtICAgICAgICBzZWxlY3QgU1RBQ0tERVBP VCBpZiBEUk09eSAjIGZvciBEUk1fREVCVUdfTU0KPiAgCXNlbGVjdCBEUk1fREVCVUdfU0VMRlRF U1QKPiAgCXNlbGVjdCBTV19TWU5DICMgc2lnbmFsaW5nIHZhbGlkYXRpb24gZnJhbWV3b3JrIChp Z3Qvc3luY29iaiopCj4gIAlzZWxlY3QgRFJNX0k5MTVfU1dfRkVOQ0VfREVCVUdfT0JKRUNUUwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggYzc3MzI2YTdkMDU4Li4zYTM2 OTI0NWQ3ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNzAy LDYgKzI3MDIsMTIgQEAgc3RhdGljIGludCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCSAgIHBjaV9wb3dlcl9uYW1lKHBkZXYtPmN1 cnJlbnRfc3RhdGUpLAo+ICAJCSAgIHBkZXYtPmN1cnJlbnRfc3RhdGUpOwo+ICAKPiArCWlmIChJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKSkgewo+ICsJCXN0cnVj dCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7Cj4gKwo+ICsJCXByaW50 X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihkZXZfcHJpdiwgJnApOwo+ICsJfQo+ICsKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDE3ZmNhM2Jh MzQzZS4uZTJmNDc1M2NhMjFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTkw Niw2ICs5MDYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBwc19t dXRleCk7Cj4gIAo+ICAJaTkxNV9tZW1jcHlfaW5pdF9lYXJseShkZXZfcHJpdik7Cj4gKwlpbnRl bF9ydW50aW1lX3BtX2luaXRfZWFybHkoZGV2X3ByaXYpOwo+ICAKPiAgCXJldCA9IGk5MTVfd29y a3F1ZXVlc19pbml0KGRldl9wcml2KTsKPiAgCWlmIChyZXQgPCAwKQo+IEBAIC0xODA4LDggKzE4 MDksNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJaTkxNV9kcml2ZXJfY2xlYW51cF9tbWlvKGRldl9wcml2KTsKPiAgCj4gIAllbmFibGVfcnBt X3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gLQo+IC0JV0FSTl9PTihhdG9taWNfcmVhZCgm ZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCkpOwo+ICsJaW50ZWxfcnVudGltZV9w bV9jbGVhbnVwKGRldl9wcml2KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJf cmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IEBAIC0yMDExLDYgKzIwMTEsOCBAQCBz dGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmRfbGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBi b29sIGhpYmVybmF0aW9uKQo+ICAKPiAgb3V0Ogo+ICAJZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2Vy dHMoZGV2X3ByaXYpOwo+ICsJaWYgKCFkZXZfcHJpdi0+dW5jb3JlLnVzZXJfZm9yY2V3YWtlLmNv dW50KQo+ICsJCWludGVsX3J1bnRpbWVfcG1fY2xlYW51cChkZXZfcHJpdik7Cj4KCldoeSB3b3Vs ZCB3ZSBoYXZlIGZvcmNld2FrZSBhY3RpdmUgaW4gaGVyZT8KCkFyZSB5b3UgcGxhbm5pbmcgb24g ZXh0ZW5kaW5nIHRoZSBpbnRlbF9ydW50aW1lX3BtX2NsZWFudXA/CkF0bGVhc3QgaW4gdGhlIGNh bGxzaXRlICdpbnRlbF9ydW50aW1lX2Fzc2VydF9ub193YWtlcmVmcycgd291bGQKbWFrZSBtb3Jl IHNlbnNlLgoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMjk2Niw3ICsyOTY4LDcgQEAgc3Rh dGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKPiAgCX0K PiAgCj4gIAllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gLQlXQVJOX09O X09OQ0UoYXRvbWljX3JlYWQoJmRldl9wcml2LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpKTsK PiArCWludGVsX3J1bnRpbWVfcG1fY2xlYW51cChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKGludGVs X3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKGRldl9wcml2KSkKPiAgCQlEUk1f RVJST1IoIlVuY2xhaW1lZCBhY2Nlc3MgZGV0ZWN0ZWQgcHJpb3IgdG8gc3VzcGVuZGluZ1xuIik7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMTdhMDE3NjQ1YzVkLi42MGI5ODEwM2Fi YTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDUsNiArNDUsNyBAQAo+ICAj aW5jbHVkZSA8bGludXgvcG1fcW9zLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlvbi5o Pgo+ICAjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N0YWNr ZGVwb3QuaD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2lu dGVsLWd0dC5oPgo+IEBAIC0xMTU2LDYgKzExNTcsMTIgQEAgc3RydWN0IGk5MTVfcnVudGltZV9w bSB7Cj4gIAlhdG9taWNfdCB3YWtlcmVmX2NvdW50Owo+ICAJYm9vbCBzdXNwZW5kZWQ7Cj4gIAli b29sIGlycXNfZW5hYmxlZDsKPiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9E RUJVR19SVU5USU1FX1BNKQo+ICsJc3BpbmxvY2tfdCBkZWJ1Z19sb2NrOwo+ICsJZGVwb3Rfc3Rh Y2tfaGFuZGxlX3QgKmRlYnVnX293bmVyczsKPiArCXVuc2lnbmVkIGxvbmcgZGVidWdfY291bnQ7 Cj4gKyNlbmRpZgo+ICB9Owo+ICAKPiAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2Ugewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMWExMWMyYmViN2YzLi5hYzUxM2ZkNzAzMTUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC00MSw2ICs0MSw4IEBACj4gICNp bmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8bWVkaWEvY2VjLW5vdGlmaWVy Lmg+Cj4gIAo+ICtzdHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gKwo+ICAvKioKPiAgICogX193YWl0X2Zv ciAtIG1hZ2ljIHdhaXQgbWFjcm8KPiAgICoKPiBAQCAtMjA4NCw2ICsyMDg2LDcgQEAgYm9vbCBp bnRlbF9wc3JfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBpbnRl bF9pbml0X3F1aXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAg LyogaW50ZWxfcnVudGltZV9wbS5jICovCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9pbml0X2Vh cmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBpbnRlbF9wb3dl cl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7Cj4gIHZvaWQgaW50ZWxf cG93ZXJfZG9tYWluc19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgYm9vbCByZXN1bWUpOwo+IEBAIC0yMTA2LDYgKzIxMDksNyBAQCB2b2lk IGJ4dF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGJvb2wgcmVzdW1lKTsKPiAgdm9pZCBieHRfZGlzcGxheV9jb3JlX3VuaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50ZWxfcnVudGlt ZV9wbV9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQg aW50ZWxfcnVudGltZV9wbV9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gIGNvbnN0IGNoYXIgKgo+ICBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pOwo+ICAKPiBAQCAtMjEyMywyMyAr MjEyNywyMyBAQCB2b2lkIGljbF9kYnVmX3NsaWNlc191cGRhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgdTggcmVxX3NsaWNlcyk7Cj4gIAo+ICBzdGF0aWMg aW5saW5lIHZvaWQKPiAtYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2Fzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5k ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCVdBUk5fT05DRShkZXZf cHJpdi0+cnVudGltZV9wbS5zdXNwZW5kZWQsCj4gKwlXQVJOX09OQ0UoaTkxNS0+cnVudGltZV9w bS5zdXNwZW5kZWQsCj4gIAkJICAiRGV2aWNlIHN1c3BlbmRlZCBkdXJpbmcgSFcgYWNjZXNzXG4i KTsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gLWFzc2VydF9ycG1fd2FrZWxvY2tf aGVsZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2Fzc2VydF9ycG1fd2Fr ZWxvY2tfaGVsZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+IC0JYXNzZXJ0 X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChkZXZfcHJpdik7Cj4gLQlXQVJOX09OQ0UoIWF0b21p Y19yZWFkKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KSwKPiArCWFzc2VydF9y cG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoaTkxNSk7Cj4gKwlXQVJOX09OQ0UoIWF0b21pY19yZWFk KCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpLAo+ICAJCSAgIlJQTSB3YWtlbG9jayBy ZWYgbm90IGhlbGQgZHVyaW5nIEhXIGFjY2VzcyIpOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogZGlz YWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzIC0gZGlzYWJsZSB0aGUgUlBNIGFzc2VydCBjaGVja3MK PiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICsgKiBAaTkxNTogaTkxNSBk ZXZpY2UgaW5zdGFuY2UKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBkaXNhYmxlIGFzc2VydHMg dGhhdCBjaGVjayBpZiB3ZSBob2xkIGFuIFJQTSB3YWtlbG9jawo+ICAgKiByZWZlcmVuY2UsIHdo aWxlIGtlZXBpbmcgdGhlIGRldmljZS1ub3Qtc3VzcGVuZGVkIGNoZWNrcyBzdGlsbCBlbmFibGVk Lgo+IEBAIC0yMTU2LDE0ICsyMTYwLDE0IEBAIGFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIGVuYWJsZV9ycG1fd2FrZXJlZl9h c3NlcnRzKCkuCj4gICAqLwo+ICBzdGF0aWMgaW5saW5lIHZvaWQKPiAtZGlzYWJsZV9ycG1fd2Fr ZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArZGlzYWJs ZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7 Cj4gLQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAr CWF0b21pY19pbmMoJmk5MTUtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCk7Cj4gIH0KPiAgCj4g IC8qKgo+ICAgKiBlbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyAtIHJlLWVuYWJsZSB0aGUgUlBN IGFzc2VydCBjaGVja3MKPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICsg KiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBy ZS1lbmFibGVzIHRoZSBSUE0gYXNzZXJ0IGNoZWNrcyBhZnRlciBkaXNhYmxpbmcgdGhlbSB3aXRo Cj4gICAqIGRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cy4gSXQncyBtZWFudCB0byBiZSB1c2Vk IG9ubHkgaW4gc3BlY2lhbAo+IEBAIC0yMTczLDE1ICsyMTc3LDI1IEBAIGRpc2FibGVfcnBtX3dh a2VyZWZfYXNzZXJ0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIGRp c2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cygpLgo+ICAgKi8KPiAgc3RhdGljIGlubGluZSB2b2lk Cj4gLWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gIHsKPiAtCWF0b21pY19kZWMoJmRldl9wcml2LT5ydW50aW1lX3BtLndh a2VyZWZfY291bnQpOwo+ICsJYXRvbWljX2RlYygmaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2Nv dW50KTsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC1ib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2lu X3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGludGVsX3J1 bnRpbWVfcG1fZ2V0X25vcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gLXZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7Cj4gK2Jvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9u b3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3ZvaWQgaW50ZWxfcnVu dGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiArI2lmIElT X0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCj4gK3ZvaWQgcHJpbnRf aW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ ICsJCQkJICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBwcmludF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gKwkJCQkJCSAgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICt7Cj4gK30K PiArI2VuZGlmCgpQbHVyYWwgJ3dha2VyZWZzJyB3b3VsZCByZWFkIGJldHRlciBmb3IgbWUuCgo+ ICAKPiAgdm9pZCBjaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCQkJICAgICBib29sIG92ZXJyaWRlLCB1bnNpZ25lZCBpbnQgbWFzayk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IGluZGV4IDllOTUwMWY4MmYw Ni4uNjdkNzFjYzYwNGYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwo+IEBAIC0yOSw2ICsyOSw4IEBACj4gICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC92Z2FhcmIuaD4KPiAgCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3By aW50Lmg+Cj4gKwo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUgImludGVsX2Ry di5oIgo+ICAKPiBAQCAtNDksNiArNTEsMTg5IEBACj4gICAqIHByZXNlbnQgZm9yIGEgZ2l2ZW4g cGxhdGZvcm0uCj4gICAqLwo+ICAKPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RF QlVHX1JVTlRJTUVfUE0pCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvc29ydC5oPgo+ICsKPiArI2Rl ZmluZSBTVEFDS0RFUFRIIDgKPiArCj4gK3N0YXRpYyB2b2lkIGluaXRfaW50ZWxfcnVudGltZV9w bV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzcGluX2xv Y2tfaW5pdCgmaTkxNS0+cnVudGltZV9wbS5kZWJ1Z19sb2NrKTsKPiArfQo+ICsKPiArc3RhdGlj IG5vaW5saW5lIHZvaWQKPiArdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9ydW50aW1lX3BtICpy cG0gPSAmaTkxNS0+cnVudGltZV9wbTsKPiArCXVuc2lnbmVkIGxvbmcgZW50cmllc1tTVEFDS0RF UFRIXTsKPiArCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9IHsKPiArCQkuZW50cmllcyA9IGVu dHJpZXMsCj4gKwkJLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShlbnRyaWVzKSwKPiArCQkuc2tp cCA9IDEKPiArCX07Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJZGVwb3Rfc3RhY2tfaGFu ZGxlX3Qgc3RhY2ssICpzdGFja3M7Cj4gKwo+ICsJaWYgKCFIQVNfUlVOVElNRV9QTShpOTE1KSkK PiArCQlyZXR1cm47Cj4gKwo+ICsJc2F2ZV9zdGFja190cmFjZSgmdHJhY2UpOwo+ICsJaWYgKHRy YWNlLm5yX2VudHJpZXMgJiYKPiArCSAgICB0cmFjZS5lbnRyaWVzW3RyYWNlLm5yX2VudHJpZXMg LSAxXSA9PSBVTE9OR19NQVgpCj4gKwkJdHJhY2UubnJfZW50cmllcy0tOwo+ICsKCldoYXQgaXMg dGhpcyBzcGVjaWFsIGhhbmRsaW5nIGZvcj8KCj4gKwlzdGFjayA9IGRlcG90X3NhdmVfc3RhY2so JnRyYWNlLCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKPiArCWlmICghc3RhY2spCj4gKwkJ cmV0dXJuOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZycG0tPmRlYnVnX2xvY2ssIGZsYWdz KTsKPiArCXN0YWNrcyA9IGtyZWFsbG9jKHJwbS0+ZGVidWdfb3duZXJzLAo+ICsJCQkgIChycG0t PmRlYnVnX2NvdW50ICsgMSkgKiBzaXplb2YoKnN0YWNrcyksCj4gKwkJCSAgR0ZQX05PV0FJVCB8 IF9fR0ZQX05PV0FSTik7Cj4gKwlpZiAoc3RhY2tzKSB7Cj4gKwkJc3RhY2tzW3JwbS0+ZGVidWdf Y291bnQrK10gPSBzdGFjazsKPiArCQlycG0tPmRlYnVnX293bmVycyA9IHN0YWNrczsKPiArCX0K PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJwbS0+ZGVidWdfbG9jaywgZmxhZ3MpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVfcnVudGltZV9w bSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07Cj4gKwlkZXBvdF9zdGFja19oYW5kbGVfdCAqc3Rh Y2tzOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgm cnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7Cj4gKwlzdGFja3MgPSBmZXRjaF9hbmRfemVybygmcnBt LT5kZWJ1Z19vd25lcnMpOwo+ICsJcnBtLT5kZWJ1Z19jb3VudCA9IDA7Cj4gKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZycG0tPmRlYnVnX2xvY2ssIGZsYWdzKTsKPiArCj4gKwlrZnJlZShzdGFj a3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNtcGhhbmRsZShjb25zdCB2b2lkICpfYSwgY29u c3Qgdm9pZCAqX2IpCj4gK3sKPiArCWNvbnN0IGRlcG90X3N0YWNrX2hhbmRsZV90ICogY29uc3Qg YSA9IF9hLCAqIGNvbnN0IGIgPSBfYjsKPiArCj4gKwlpZiAoKmEgPCAqYikKPiArCQlyZXR1cm4g LTE7Cj4gKwllbHNlIGlmICgqYSA+ICpiKQo+ICsJCXJldHVybiAxOwo+ICsJZWxzZQo+ICsJCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX3ByaW50X2ludGVsX3J1bnRpbWVfcG1f d2FrZXJlZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gKwkJCQkJICAgICBkZXBvdF9zdGFja19o YW5kbGVfdCAqc3RhY2tzLAo+ICsJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBjb3VudCkKPiArewo+ ICsJdW5zaWduZWQgbG9uZyBlbnRyaWVzW1NUQUNLREVQVEhdOwo+ICsJdW5zaWduZWQgbG9uZyBp Owo+ICsJY2hhciAqYnVmOwo+ICsKPiArCWRybV9wcmludGYocCwgIldha2VyZWYgY291bnQ6ICVs dVxuIiwgY291bnQpOwo+ICsKPiArCWJ1ZiA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVM KTsKPiArCWlmICghYnVmKQo+ICsJCXJldHVybjsKPiArCj4gKwlzb3J0KHN0YWNrcywgY291bnQs IHNpemVvZigqc3RhY2tzKSwgY21waGFuZGxlLCBOVUxMKTsKCklzIHRoZSBzb3J0aW5nIG9ubHkg Zm9yIG5pY2VyIG91dHB1dD8KCj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK PiArCQlzdHJ1Y3Qgc3RhY2tfdHJhY2UgdHJhY2UgPSB7Cj4gKwkJCS5lbnRyaWVzID0gZW50cmll cywKPiArCQkJLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShlbnRyaWVzKSwKPiArCQl9Owo+ICsJ CWRlcG90X3N0YWNrX2hhbmRsZV90IHN0YWNrID0gc3RhY2tzW2ldOwo+ICsJCXVuc2lnbmVkIGxv bmcgcmVwOwo+ICsKPiArCQlyZXAgPSAxOwo+ICsJCXdoaWxlIChpICsgMSA8IGNvdW50ICYmIHN0 YWNrc1tpICsgMV0gPT0gc3RhY2spCj4gKwkJCXJlcCsrLCBpKys7Cj4gKwkJZGVwb3RfZmV0Y2hf c3RhY2soc3RhY2ssICZ0cmFjZSk7Cj4gKwkJc25wcmludF9zdGFja190cmFjZShidWYsIFBBR0Vf U0laRSwgJnRyYWNlLCAyKTsKPiArCQlkcm1fcHJpbnRmKHAsICJXYWtlcmVmIHglbHUgdGFrZW4g YXQ6XG4lcyIsIHJlcCwgYnVmKTsKPiArCX0KPiArCj4gKwlrZnJlZShidWYpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBzaG93X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiArewoKcy93YWtlcmVmL3dha2VyZWZzPwoKLU1pa2EKCj4gKwlz dHJ1Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKPiArCWRlcG90 X3N0YWNrX2hhbmRsZV90ICpzdGFja3M7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzLCBjb3VudDsK PiArCXN0cnVjdCBkcm1fcHJpbnRlciBwOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZycG0t PmRlYnVnX2xvY2ssIGZsYWdzKTsKPiArCXN0YWNrcyA9IGZldGNoX2FuZF96ZXJvKCZycG0tPmRl YnVnX293bmVycyk7Cj4gKwljb3VudCA9IGZldGNoX2FuZF96ZXJvKCZycG0tPmRlYnVnX2NvdW50 KTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJwbS0+ZGVidWdfbG9jaywgZmxhZ3MpOwo+ ICsJaWYgKCFjb3VudCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcCA9IGRybV9kZWJ1Z19wcmludGVy KCJpOTE1Iik7Cj4gKwlfX3ByaW50X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZigmcCwgc3RhY2tz LCBjb3VudCk7Cj4gKwo+ICsJa2ZyZWUoc3RhY2tzKTsKPiArfQo+ICsKPiArdm9pZCBwcmludF9p bnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g KwkJCQkgICAgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICt7Cj4gKwlkZXBvdF9zdGFja19oYW5k bGVfdCAqc3RhY2tzID0gTlVMTDsKPiArCXVuc2lnbmVkIGxvbmcgY291bnQgPSAwOwo+ICsKPiAr CWRvIHsKPiArCQlzdHJ1Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9w bTsKPiArCQl1bnNpZ25lZCBsb25nIGFsbG9jID0gY291bnQ7Cj4gKwkJZGVwb3Rfc3RhY2tfaGFu ZGxlX3QgKnM7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnEoJnJwbS0+ZGVidWdfbG9jayk7Cj4gKwkJ Y291bnQgPSBycG0tPmRlYnVnX2NvdW50Owo+ICsJCWlmIChjb3VudCA9PSBhbGxvYykgewo+ICsJ CQltZW1jcHkoc3RhY2tzLAo+ICsJCQkgICAgICAgcnBtLT5kZWJ1Z19vd25lcnMsCj4gKwkJCSAg ICAgICBjb3VudCAqIHNpemVvZigqc3RhY2tzKSk7Cj4gKwkJfQo+ICsJCXNwaW5fdW5sb2NrX2ly cSgmcnBtLT5kZWJ1Z19sb2NrKTsKPiArCQlpZiAoY291bnQgPT0gYWxsb2MpCj4gKwkJCWJyZWFr Owo+ICsKPiArCQlzID0ga3JlYWxsb2Moc3RhY2tzLCBjb3VudCAqIHNpemVvZigqc3RhY2tzKSwg R0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKCFzKQo+ICsJCQlnb3RvIG91dDsKPiArCj4gKwkJc3RhY2tz ID0gczsKPiArCX0gd2hpbGUgKDEpOwo+ICsKPiArCV9fcHJpbnRfaW50ZWxfcnVudGltZV9wbV93 YWtlcmVmKHAsIHN0YWNrcywgY291bnQpOwo+ICsKPiArb3V0Ogo+ICsJa2ZyZWUoc3RhY2tzKTsK PiArfQo+ICsKPiArI2Vsc2UKPiArCj4gK3N0YXRpYyB2b2lkIGluaXRfaW50ZWxfcnVudGltZV9w bV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIHRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bnRyYWNrX2lu dGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAr ewo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzaG93X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICt9Cj4gKwo+ICsjZW5kaWYKPiAr Cj4gIGJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsX2lzX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCSBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBw b3dlcl93ZWxsX2lkKTsKPiAgCj4gQEAgLTM5ODYsNyArNDE3MSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9ydW50aW1lX3BtX2dldCAtIGdyYWIgYSBy dW50aW1lIHBtIHJlZmVyZW5jZQo+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNl Cj4gKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICAgKgo+ICAgKiBUaGlzIGZ1bmN0 aW9uIGdyYWJzIGEgZGV2aWNlLWxldmVsIHJ1bnRpbWUgcG0gcmVmZXJlbmNlIChtb3N0bHkgdXNl ZCBmb3IgR0VNCj4gICAqIGNvZGUgdG8gZW5zdXJlIHRoZSBHVFQgb3IgR1QgaXMgb24pIGFuZCBl bnN1cmVzIHRoYXQgaXQgaXMgcG93ZXJlZCB1cC4KPiBAQCAtMzk5NCwyMiArNDE3OSwyNCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIEFueSBydW50aW1lIHBtIHJlZmVyZW5jZSBvYnRh aW5lZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYwo+ICAgKiBjYWxsIHRv IGludGVsX3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFzZSB0aGUgcmVmZXJlbmNlIGFnYWluLgo+ ICAgKi8KPiAtdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYt PmRybS5wZGV2Owo+ICsJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpOTE1LT5kcm0ucGRldjsKPiAg CXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2Owo+ICAJaW50IHJldDsKPiAgCj4gIAly ZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKGtkZXYpOwo+ICAJV0FSTl9PTkNFKHJldCA8IDAsICJw bV9ydW50aW1lX2dldF9zeW5jKCkgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiAgCj4gLQlhdG9taWNf aW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAtCWFzc2VydF9ycG1f d2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3Bt Lndha2VyZWZfY291bnQpOwo+ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICsK PiArCXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgfQo+ICAKPiAgLyoq Cj4gICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZSAtIGdyYWIgYSBydW50aW1lIHBt IHJlZmVyZW5jZSBpZiBkZXZpY2UgaW4gdXNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2Ug aW5zdGFuY2UKPiArICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRo aXMgZnVuY3Rpb24gZ3JhYnMgYSBkZXZpY2UtbGV2ZWwgcnVudGltZSBwbSByZWZlcmVuY2UgaWYg dGhlIGRldmljZSBpcwo+ICAgKiBhbHJlYWR5IGluIHVzZSBhbmQgZW5zdXJlcyB0aGF0IGl0IGlz IHBvd2VyZWQgdXAuIEl0IGlzIGlsbGVnYWwgdG8gdHJ5Cj4gQEAgLTQwMjAsMTAgKzQyMDcsMTAg QEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAqCj4gICAqIFJldHVybnM6IFRydWUgaWYgdGhlIHdha2VyZWYgd2FzIGFjcXVp cmVkLCBvciBGYWxzZSBvdGhlcndpc2UuCj4gICAqLwo+IC1ib29sIGludGVsX3J1bnRpbWVfcG1f Z2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK2Jvb2wg aW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICB7Cj4gIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfUE0pKSB7Cj4gLQkJc3RydWN0IHBj aV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gKwkJc3RydWN0IHBjaV9kZXYgKnBk ZXYgPSBpOTE1LT5kcm0ucGRldjsKPiAgCQlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRl djsKPiAgCj4gIAkJLyoKPiBAQCAtNDAzNiwxNSArNDIyMywxNyBAQCBib29sIGludGVsX3J1bnRp bWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gLQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cnVu dGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAtCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZf cHJpdik7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpOwo+ ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICsKPiArCXRyYWNrX2ludGVsX3J1 bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAg LyoqCj4gICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1lIC0gZ3JhYiBhIHJ1bnRpbWUg cG0gcmVmZXJlbmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICog QGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZ3Jh YnMgYSBkZXZpY2UtbGV2ZWwgcnVudGltZSBwbSByZWZlcmVuY2UgKG1vc3RseSB1c2VkIGZvciBH RU0KPiAgICogY29kZSB0byBlbnN1cmUgdGhlIEdUVCBvciBHVCBpcyBvbikuCj4gQEAgLTQwNTks MzIgKzQyNDgsMzUgQEAgYm9vbCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKiBBbnkgcnVudGltZSBwbSByZWZlcmVu Y2Ugb2J0YWluZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRyaWMKPiAgICog Y2FsbCB0byBpbnRlbF9ydW50aW1lX3BtX3B1dCgpIHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZSBh Z2Fpbi4KPiAgICovCj4gLXZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt2b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0 X25vcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlzdHJ1Y3Qg cGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiArCXN0cnVjdCBwY2lfZGV2ICpw ZGV2ID0gaTkxNS0+ZHJtLnBkZXY7Cj4gIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRl djsKPiAgCj4gLQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOwo+ICsJYXNzZXJ0 X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICAJcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoa2Rl dik7Cj4gIAo+IC0JYXRvbWljX2luYygmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3Vu dCk7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpOwo+ICsK PiArCXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiAgfQo+ICAKPiAgLyoq Cj4gICAqIGludGVsX3J1bnRpbWVfcG1fcHV0IC0gcmVsZWFzZSBhIHJ1bnRpbWUgcG0gcmVmZXJl bmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICogQGk5MTU6IGk5 MTUgZGV2aWNlIGluc3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZHJvcHMgdGhlIGRl dmljZS1sZXZlbCBydW50aW1lIHBtIHJlZmVyZW5jZSBvYnRhaW5lZCBieQo+ICAgKiBpbnRlbF9y dW50aW1lX3BtX2dldCgpIGFuZCBtaWdodCBwb3dlciBkb3duIHRoZSBjb3JyZXNwb25kaW5nCj4g ICAqIGhhcmR3YXJlIGJsb2NrIHJpZ2h0IGF3YXkgaWYgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVu Y2UuCj4gICAqLwo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+IC0Jc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZf cHJpdi0+ZHJtLnBkZXY7Cj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUtPmRybS5wZGV2 Owo+ICAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5kZXY7Cj4gIAo+IC0JYXNzZXJ0X3Jw bV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKPiAtCWF0b21pY19kZWMoJmRldl9wcml2LT5ydW50 aW1lX3BtLndha2VyZWZfY291bnQpOwo+ICsJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUp Owo+ICsJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmk5MTUtPnJ1bnRpbWVfcG0ud2FrZXJlZl9j b3VudCkpCj4gKwkJdW50cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoaTkxNSk7Cj4gIAo+ ICAJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShrZGV2KTsKPiAgCXBtX3J1bnRpbWVfcHV0X2F1 dG9zdXNwZW5kKGtkZXYpOwo+IEBAIC00MDkyLDcgKzQyODQsNyBAQCB2b2lkIGludGVsX3J1bnRp bWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIC8qKgo+ ICAgKiBpbnRlbF9ydW50aW1lX3BtX2VuYWJsZSAtIGVuYWJsZSBydW50aW1lIHBtCj4gLSAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICogQGk5MTU6IGk5MTUgZGV2aWNlIGlu c3RhbmNlCj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBydW50aW1lIHBtIGF0IHRo ZSBlbmQgb2YgdGhlIGRyaXZlciBsb2FkIHNlcXVlbmNlLgo+ICAgKgo+IEBAIC00MTAwLDkgKzQy OTIsOSBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgICogc3Vib3JkaW5hdGUgZGlzcGxheSBwb3dlciBkb21haW5zLiBUaGF0 IGlzIGRvbmUgYnkKPiAgICogaW50ZWxfcG93ZXJfZG9tYWluc19lbmFibGUoKS4KPiAgICovCj4g LXZvaWQgaW50ZWxfcnVudGltZV9wbV9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICt2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICB7Cj4gLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5k cm0ucGRldjsKPiArCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7Cj4gIAlz dHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRldjsKPiAgCj4gIAkvKgo+IEBAIC00MTI0LDcg KzQzMTYsNyBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCSAqIHNvIHRoZSBkcml2ZXIncyBvd24gUlBNIHJlZmVyZW5j ZSB0cmFja2luZyBhc3NlcnRzIGFsc28gd29yayBvbgo+ICAJICogcGxhdGZvcm1zIHdpdGhvdXQg UlBNIHN1cHBvcnQuCj4gIAkgKi8KPiAtCWlmICghSEFTX1JVTlRJTUVfUE0oZGV2X3ByaXYpKSB7 Cj4gKwlpZiAoIUhBU19SVU5USU1FX1BNKGk5MTUpKSB7Cj4gIAkJaW50IHJldDsKPiAgCj4gIAkJ cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChrZGV2KTsKPiBAQCAtNDE0MiwxNyArNDMz NCwzNiBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwo+ICB9 Cj4gIAo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRl dl9wcml2LT5kcm0ucGRldjsKPiArCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBk ZXY7Cj4gIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRldjsKPiAgCj4gIAkvKiBUcmFu c2ZlciBycG0gb3duZXJzaGlwIGJhY2sgdG8gY29yZSAqLwo+IC0JV0FSTihwbV9ydW50aW1lX2dl dF9zeW5jKCZkZXZfcHJpdi0+ZHJtLnBkZXYtPmRldikgPCAwLAo+ICsJV0FSTihwbV9ydW50aW1l X2dldF9zeW5jKGtkZXYpIDwgMCwKPiAgCSAgICAgIkZhaWxlZCB0byBwYXNzIHJwbSBvd25lcnNo aXAgYmFjayB0byBjb3JlXG4iKTsKPiAgCj4gIAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNw ZW5kKGtkZXYpOwo+ICAKPiAtCWlmICghSEFTX1JVTlRJTUVfUE0oZGV2X3ByaXYpKQo+ICsJaWYg KCFIQVNfUlVOVElNRV9QTShpOTE1KSkKPiAgCQlwbV9ydW50aW1lX3B1dChrZGV2KTsKPiAgfQo+ ICsKPiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gKnJwbSA9ICZpOTE1LT5y dW50aW1lX3BtOwo+ICsKPiArCWlmIChXQVJOKGF0b21pY19yZWFkKCZycG0tPndha2VyZWZfY291 bnQpLAo+ICsJCSAiaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50PSVkIG9uIGNsZWFudXBc biIsCj4gKwkJIGF0b21pY19yZWFkKCZycG0tPndha2VyZWZfY291bnQpKSkgewo+ICsJCXNob3df aW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwo+ICsJCWF0b21pY19zZXQoJnJwbS0+d2Fr ZXJlZl9jb3VudCwgMCk7Cj4gKwl9Cj4gKwo+ICsJdW50cmFja19pbnRlbF9ydW50aW1lX3BtX3dh a2VyZWYoaTkxNSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlpbml0X2ludGVsX3J1bnRp bWVfcG1fd2FrZXJlZihpOTE1KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCA0M2VkOGIyOGFlYWEuLjBlYjI4M2U3 ZmM5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMKPiBAQCAtMTU0LDE1ICsxNTQsMTcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAJcGRldi0+ZGV2LmFyY2hkYXRhLmlvbW11ID0g KHZvaWQgKiktMTsKPiAgI2VuZGlmCj4gIAo+ICsJaTkxNSA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqKShwZGV2ICsgMSk7Cj4gKwlwY2lfc2V0X2RydmRhdGEocGRldiwgaTkxNSk7Cj4gKwo+ ICsJaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KGk5MTUpOwo+ICsKPiAgCWRldl9wbV9kb21h aW5fc2V0KCZwZGV2LT5kZXYsICZwbV9kb21haW4pOwo+ICAJcG1fcnVudGltZV9lbmFibGUoJnBk ZXYtPmRldik7Cj4gIAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKCZwZGV2LT5kZXYp Owo+ICAJaWYgKHBtX3J1bnRpbWVfZW5hYmxlZCgmcGRldi0+ZGV2KSkKPiAgCQlXQVJOX09OKHBt X3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldikpOwo+ICAKPiAtCWk5MTUgPSAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKikocGRldiArIDEpOwo+IC0JcGNpX3NldF9kcnZkYXRhKHBkZXYsIGk5 MTUpOwo+IC0KPiAgCWVyciA9IGRybV9kZXZfaW5pdCgmaTkxNS0+ZHJtLCAmbW9ja19kcml2ZXIs ICZwZGV2LT5kZXYpOwo+ICAJaWYgKGVycikgewo+ICAJCXByX2VycigiRmFpbGVkIHRvIGluaXRp YWxpc2UgbW9jayBHRU0gZGV2aWNlOiBlcnI9JWRcbiIsIGVycik7Cj4gLS0gCj4gMi4yMC4xCj4K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==