From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915: Modify reset func to handle per engine resets Date: Thu, 17 Mar 2016 15:14:40 +0200 Message-ID: <87k2l1fdq7.fsf@gaia.fi.intel.com> References: <1458129124-12814-1-git-send-email-mika.kuoppala@intel.com> <1458143640-20563-1-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BA356EAAF for ; Thu, 17 Mar 2016 13:17:46 +0000 (UTC) In-Reply-To: <1458143640-20563-1-git-send-email-mika.kuoppala@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+IHdyaXRlczoKCj4g WyB0ZXh0L3BsYWluIF0KPiBJbiBmdWxsIGdwdSByZXNldCB3ZSBwcmltZSBhbGwgZW5naW5lcyBh bmQgcmVzZXQgZG9tYWlucyBjb3JyZXNwb25kaW5nIHRvCj4gZWFjaCBlbmdpbmUuIFBlciBlbmdp bmUgcmVzZXQgaXMganVzdCBhIHNwZWNpYWwgY2FzZSBvZiB0aGlzIHByb2Nlc3MKPiB3aGVyZWlu IG9ubHkgYSBzaW5nbGUgZW5naW5lIGlzIHJlc2V0LiBUaGlzIGNoYW5nZSBpcyBhaW1lZCB0byBt b2RpZnkKPiByZWxldmFudCBmdW5jdGlvbnMgdG8gYWNoaWV2ZSB0aGlzLiBUaGVyZSBhcmUgc29t ZSBvdGhlciBzdGVwcyB3ZSBjYXJyeSBvdXQKPiBpbiBjYXNlIG9mIGVuZ2luZSByZXNldCB3aGlj aCBhcmUgYWRkcmVzc2VkIGluIGxhdGVyIHBhdGNoZXMuCj4KPiBSZXNldCBmdW5jIG5vdyBhY2Nl cHRzIGEgbWFzayBvZiBhbGwgZW5naW5lcyB0aGF0IG5lZWQgdG8gYmUgcmVzZXQuIFdoZXJlCj4g cGVyIGVuZ2luZSByZXNldHMgYXJlIHN1cHBvcnRlZCwgZXJyb3IgaGFuZGxlciBwb3B1bGF0ZXMg dGhlIG1hc2sKPiBhY2NvcmRpbmdseSBvdGhlcndpc2UgYWxsIGVuZ2luZXMgYXJlIHNwZWNpZmll ZC4KPgo+IHYyOiBBTExfRU5HSU5FUyBtYXNrIGZpeHVwLCBiZXR0ZXIgZm9yX2VhY2hfcmluZ19t YXNrZWQgKENocmlzKQo+IHYzOiBXaGl0ZXNwYWNlIGZpeGVzIChDaHJpcykKPiB2NDogUmViYXNl IGR1ZSB0byBzL3JpbmcvZW5naW5lCj4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Cj4gU2lnbmVkLW9mZi1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFs YUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVy eUBsaW51eC5pbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgoKUHVzaGVkIHRvIGRpbnEuIFRoYW5rIHlvdSBhbGwuCgotTWlrYQoK PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgIDIgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDggKystCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDE0ICsrKy0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgfCAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jICAgICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygt KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggMjBlODIwMDhiOGI2Li4zNjQ4Yjcz YjQ4ZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtODgxLDcgKzg4MSw3IEBA IGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJc2ltdWxhdGVk ID0gZGV2X3ByaXYtPmdwdV9lcnJvci5zdG9wX3JpbmdzICE9IDA7Cj4gIAo+IC0JcmV0ID0gaW50 ZWxfZ3B1X3Jlc2V0KGRldik7Cj4gKwlyZXQgPSBpbnRlbF9ncHVfcmVzZXQoZGV2LCBBTExfRU5H SU5FUyk7Cj4gIAo+ICAJLyogQWxzbyByZXNldCB0aGUgZ3B1IGhhbmdtYW4uICovCj4gIAlpZiAo c2ltdWxhdGVkKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZmQxZWQ2NmRkMjk4 Li44OTQwYjM4ZWQ1N2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTk3MSw2 ICsxOTcxLDEwIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmd1Y190 b19pOTE1KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWZvciAoKGlfXykgPSAwOyAoaV9fKSA8 IEk5MTVfTlVNX0VOR0lORVM7IChpX18pKyspIFwKPiAgCQlmb3JfZWFjaF9pZiAoKCgocmluZ19f KSA9ICYoZGV2X3ByaXZfXyktPmVuZ2luZVsoaV9fKV0pLCBpbnRlbF9lbmdpbmVfaW5pdGlhbGl6 ZWQoKHJpbmdfXykpKSkKPiAgCj4gKyNkZWZpbmUgZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdp bmVfXywgZGV2X3ByaXZfXywgbWFza19fKSBcCj4gKwlmb3IgKChlbmdpbmVfXykgPSAmZGV2X3By aXYtPmVuZ2luZVswXTsgKGVuZ2luZV9fKSA8ICZkZXZfcHJpdi0+ZW5naW5lW0k5MTVfTlVNX0VO R0lORVNdOyAoZW5naW5lX18pKyspIFwKPiArCQlmb3JfZWFjaF9pZiAoaW50ZWxfZW5naW5lX2Zs YWcoKGVuZ2luZV9fKSkgJiAobWFza19fKSAmJiBpbnRlbF9lbmdpbmVfaW5pdGlhbGl6ZWQoKGVu Z2luZV9fKSkpCj4gKwo+ICBlbnVtIGhkbWlfZm9yY2VfYXVkaW8gewo+ICAJSERNSV9BVURJT19P RkZfRFZJID0gLTIsCS8qIG5vIGF1eCBkYXRhIGZvciBIRE1JLURWSSBjb252ZXJ0ZXIgKi8KPiAg CUhETUlfQVVESU9fT0ZGLAkJCS8qIGZvcmNlIHR1cm4gb2ZmIEhETUkgYXVkaW8gKi8KPiBAQCAt MjU1Myw2ICsyNTU3LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gICNkZWZpbmUg QkxUX1JJTkcJCSgxPDxCQ1MpCj4gICNkZWZpbmUgVkVCT1hfUklORwkJKDE8PFZFQ1MpCj4gICNk ZWZpbmUgQlNEMl9SSU5HCQkoMTw8VkNTMikKPiArI2RlZmluZSBBTExfRU5HSU5FUwkJKH4wKQo+ ICsKPiAgI2RlZmluZSBIQVNfQlNEKGRldikJCShJTlRFTF9JTkZPKGRldiktPnJpbmdfbWFzayAm IEJTRF9SSU5HKQo+ICAjZGVmaW5lIEhBU19CU0QyKGRldikJCShJTlRFTF9JTkZPKGRldiktPnJp bmdfbWFzayAmIEJTRDJfUklORykKPiAgI2RlZmluZSBIQVNfQkxUKGRldikJCShJTlRFTF9JTkZP KGRldiktPnJpbmdfbWFzayAmIEJMVF9SSU5HKQo+IEBAIC0yNjgxLDcgKzI2ODcsNyBAQCBleHRl cm4gdm9pZCBpOTE1X2RyaXZlcl9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg ZXh0ZXJuIGxvbmcgaTkxNV9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVk IGludCBjbWQsCj4gIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgYXJnKTsKPiAgI2VuZGlmCj4gLWV4 dGVybiBpbnQgaW50ZWxfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtleHRl cm4gaW50IGludGVsX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZW5naW5l X21hc2spOwo+ICBleHRlcm4gYm9vbCBpbnRlbF9oYXNfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICBleHRlcm4gaW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gIGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfY2hpcHNldF92YWwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAz MTY1MmMxZGE3NjEuLmEyNTEwOWFhMDMzYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC01MDEyLDEzICs1MDEyLDEzIEBAIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5lcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGkp Cj4gIAkJZGV2X3ByaXYtPmd0LmNsZWFudXBfZW5naW5lKGVuZ2luZSk7Cj4gIAo+IC0gICAgaWYg KGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAtICAgICAgICAgICAgLyoKPiAtICAgICAgICAgICAg ICogTmVpdGhlciB0aGUgQklPUywgb3Vyc2VsdmVzIG9yIGFueSBvdGhlciBrZXJuZWwKPiAtICAg ICAgICAgICAgICogZXhwZWN0cyB0aGUgc3lzdGVtIHRvIGJlIGluIGV4ZWNsaXN0cyBtb2RlIG9u IHN0YXJ0dXAsCj4gLSAgICAgICAgICAgICAqIHNvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIEdQVSBi YWNrIHRvIGxlZ2FjeSBtb2RlLgo+IC0gICAgICAgICAgICAgKi8KPiAtICAgICAgICAgICAgaW50 ZWxfZ3B1X3Jlc2V0KGRldik7Cj4gKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJCS8q Cj4gKwkJICogTmVpdGhlciB0aGUgQklPUywgb3Vyc2VsdmVzIG9yIGFueSBvdGhlciBrZXJuZWwK PiArCQkgKiBleHBlY3RzIHRoZSBzeXN0ZW0gdG8gYmUgaW4gZXhlY2xpc3RzIG1vZGUgb24gc3Rh cnR1cCwKPiArCQkgKiBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBHUFUgYmFjayB0byBsZWdhY3kg bW9kZS4KPiArCQkgKi8KPiArCQlpbnRlbF9ncHVfcmVzZXQoZGV2LCBBTExfRU5HSU5FUyk7Cj4g IH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYwo+IGluZGV4IDE5OTM0NDlhYjdjNS4uYzExNDY2NWEyNGIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBp OTE1X2dlbV9jb250ZXh0X2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkvKiBUaGUg b25seSBrbm93biB3YXkgdG8gc3RvcCB0aGUgZ3B1IGZyb20gYWNjZXNzaW5nIHRoZSBodyBjb250 ZXh0IGlzCj4gIAkJICogdG8gcmVzZXQgaXQuIERvIHRoaXMgYXMgdGhlIHZlcnkgbGFzdCBvcGVy YXRpb24gdG8gYXZvaWQgY29uZnVzaW5nCj4gIAkJICogb3RoZXIgY29kZSwgbGVhZGluZyB0byBz cHVyaW91cyBlcnJvcnMuICovCj4gLQkJaW50ZWxfZ3B1X3Jlc2V0KGRldik7Cj4gKwkJaW50ZWxf Z3B1X3Jlc2V0KGRldiwgQUxMX0VOR0lORVMpOwo+ICAKPiAgCQkvKiBXaGVuIGRlZmF1bHQgY29u dGV4dCBpcyBjcmVhdGVkIGFuZCBzd2l0Y2hlZCB0bywgYmFzZSBvYmplY3QgcmVmY291bnQKPiAg CQkgKiB3aWxsIGJlIDIgKCsxIGZyb20gb2JqZWN0IGNyZWF0aW9uIGFuZCArMSBmcm9tIGRvX3N3 aXRjaCgpKS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA3ZGZjNDAwN2YzZmEuLjY5 MzU5ZDkxOGE0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC0xNjQsNiArMTY0 LDggQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCBy ZWcpCj4gICNkZWZpbmUgIEdFTjZfR1JET01fUkVOREVSCQkoMSA8PCAxKQo+ICAjZGVmaW5lICBH RU42X0dSRE9NX01FRElBCQkoMSA8PCAyKQo+ICAjZGVmaW5lICBHRU42X0dSRE9NX0JMVAkJCSgx IDw8IDMpCj4gKyNkZWZpbmUgIEdFTjZfR1JET01fVkVDUwkJKDEgPDwgNCkKPiArI2RlZmluZSAg R0VOOF9HUkRPTV9NRURJQTIJCSgxIDw8IDcpCj4gIAo+ICAjZGVmaW5lIFJJTkdfUFBfRElSX0JB U0UocmluZykJCV9NTUlPKChyaW5nKS0+bW1pb19iYXNlKzB4MjI4KQo+ICAjZGVmaW5lIFJJTkdf UFBfRElSX0JBU0VfUkVBRChyaW5nKQlfTU1JTygocmluZyktPm1taW9fYmFzZSsweDUxOCkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IDAyYWRkMDJlMGNlNC4uNTEyYjdm YWVkZWZkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtMTQzMyw3 ICsxNDMzLDcgQEAgc3RhdGljIGludCBpOTE1X3Jlc2V0X2NvbXBsZXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAlyZXR1cm4gKGdkcnN0ICYgR1JET01fUkVTRVRfU1RBVFVTKSA9PSAwOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGk5MTVfZG9fcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiArc3RhdGljIGludCBpOTE1X2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGVuZ2luZV9tYXNrKQo+ICB7Cj4gIAkvKiBhc3NlcnQgcmVzZXQgZm9yIGF0IGxlYXN0 IDIwIHVzZWMgKi8KPiAgCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYtPnBkZXYsIEk5MTVfR0RS U1QsIEdSRE9NX1JFU0VUX0VOQUJMRSk7Cj4gQEAgLTE0NTAsMTMgKzE0NTAsMTMgQEAgc3RhdGlj IGludCBnNHhfcmVzZXRfY29tcGxldGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVy biAoZ2Ryc3QgJiBHUkRPTV9SRVNFVF9FTkFCTEUpID09IDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBp bnQgZzMzX2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBpbnQgZzMz X2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ ICB7Cj4gIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LT5wZGV2LCBJOTE1X0dEUlNULCBHUkRP TV9SRVNFVF9FTkFCTEUpOwo+ICAJcmV0dXJuIHdhaXRfZm9yKGc0eF9yZXNldF9jb21wbGV0ZShk ZXYpLCA1MDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGc0eF9kb19yZXNldChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICtzdGF0aWMgaW50IGc0eF9kb19yZXNldChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWludCByZXQ7Cj4gQEAgLTE0 ODYsNyArMTQ4Niw3IEBAIHN0YXRpYyBpbnQgZzR4X2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBpcm9ubGFrZV9kb19y ZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgaW50IGlyb25sYWtlX2RvX3Jl c2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICAJaW50IHJldDsKPiBAQCAtMTUxMCwyMSArMTUxMCw2MiBAQCBzdGF0aWMgaW50IGlyb25sYWtl X2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAK PiAtc3RhdGljIGludCBnZW42X2RvX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gKy8q IFJlc2V0IHRoZSBoYXJkd2FyZSBkb21haW5zIChHRU5YX0dSRE9NXyopIHNwZWNpZmllZCBieSBt YXNrICovCj4gK3N0YXRpYyBpbnQgZ2VuNl9od19kb21haW5fcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJdTMyIGh3X2RvbWFpbl9tYXNrKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0J aW50CXJldDsKPiAtCj4gLQkvKiBSZXNldCB0aGUgY2hpcCAqLwo+ICsJaW50IHJldDsKPiAgCj4g IAkvKiBHRU42X0dEUlNUIGlzIG5vdCBpbiB0aGUgZ3QgcG93ZXIgd2VsbCwgbm8gbmVlZCB0byBj aGVjawo+ICAJICogZm9yIGZpZm8gc3BhY2UgZm9yIHRoZSB3cml0ZSBvciBmb3JjZXdha2UgdGhl IGNoaXAgZm9yCj4gIAkgKiB0aGUgcmVhZAo+ICAJICovCj4gLQlfX3Jhd19pOTE1X3dyaXRlMzIo ZGV2X3ByaXYsIEdFTjZfR0RSU1QsIEdFTjZfR1JET01fRlVMTCk7Cj4gKwlfX3Jhd19pOTE1X3dy aXRlMzIoZGV2X3ByaXYsIEdFTjZfR0RSU1QsIGh3X2RvbWFpbl9tYXNrKTsKPiAgCj4gLQkvKiBT cGluIHdhaXRpbmcgZm9yIHRoZSBkZXZpY2UgdG8gYWNrIHRoZSByZXNldCByZXF1ZXN0ICovCj4g LQlyZXQgPSB3YWl0X2ZvcigoX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIEdFTjZfR0RSU1Qp ICYgR0VONl9HUkRPTV9GVUxMKSA9PSAwLCA1MDApOwo+ICsjZGVmaW5lIEFDS0VEICgoX19yYXdf aTkxNV9yZWFkMzIoZGV2X3ByaXYsIEdFTjZfR0RSU1QpICYgaHdfZG9tYWluX21hc2spID09IDAp Cj4gKwkvKiBTcGluIHdhaXRpbmcgZm9yIHRoZSBkZXZpY2UgdG8gYWNrIHRoZSByZXNldCByZXF1 ZXN0cyAqLwo+ICsJcmV0ID0gd2FpdF9mb3IoQUNLRUQsIDUwMCk7Cj4gKyN1bmRlZiBBQ0tFRAo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBnZW42X3Jlc2V0X2VuZ2lu ZXMgLSByZXNldCBpbmRpdmlkdWFsIGVuZ2luZXMKPiArICogQGRldjogRFJNIGRldmljZQo+ICsg KiBAZW5naW5lX21hc2s6IG1hc2sgb2YgaW50ZWxfcmluZ19mbGFnKCkgZW5naW5lcyBvciBBTExf RU5HSU5FUyBmb3IgZnVsbCByZXNldAo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVz ZXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyB0aGF0IGFyZSBzZXQgaW4gZW5naW5lX21hc2suCj4g KyAqIElmIHlvdSBwcm92aWRlIEFMTF9FTkdJTkVTIGFzIG1hc2ssIGZ1bGwgZ2xvYmFsIGRvbWFp biByZXNldCB3aWxsIGJlIGlzc3VlZC4KPiArICoKPiArICogTm90ZTogSXQgaXMgcmVzcG9uc2li aWxpdHkgb2YgdGhlIGNhbGxlciB0byBoYW5kbGUgdGhlIGRpZmZlcmVuY2UgYmV0d2Vlbgo+ICsg KiBhc2tpbmcgZnVsbCBkb21haW4gcmVzZXQgdmVyc3VzIHJlc2V0IGZvciBhbGwgYXZhaWxhYmxl IGluZGl2aWR1YWwgZW5naW5lcy4KPiArICoKPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5v bnplcm8gb24gZXJyb3IuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGdlbjZfcmVzZXRfZW5naW5lcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWNvbnN0IHUzMiBod19lbmdpbmVfbWFz a1tJOTE1X05VTV9FTkdJTkVTXSA9IHsKPiArCQlbUkNTXSA9IEdFTjZfR1JET01fUkVOREVSLAo+ ICsJCVtCQ1NdID0gR0VONl9HUkRPTV9CTFQsCj4gKwkJW1ZDU10gPSBHRU42X0dSRE9NX01FRElB LAo+ICsJCVtWQ1MyXSA9IEdFTjhfR1JET01fTUVESUEyLAo+ICsJCVtWRUNTXSA9IEdFTjZfR1JE T01fVkVDUywKPiArCX07Cj4gKwl1MzIgaHdfbWFzazsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYg KGVuZ2luZV9tYXNrID09IEFMTF9FTkdJTkVTKSB7Cj4gKwkJaHdfbWFzayA9IEdFTjZfR1JET01f RlVMTDsKPiArCX0gZWxzZSB7Cj4gKwkJaHdfbWFzayA9IDA7Cj4gKwkJZm9yX2VhY2hfZW5naW5l X21hc2tlZChlbmdpbmUsIGRldl9wcml2LCBlbmdpbmVfbWFzaykKPiArCQkJaHdfbWFzayB8PSBo d19lbmdpbmVfbWFza1tlbmdpbmUtPmlkXTsKPiArCX0KPiArCj4gKwlyZXQgPSBnZW42X2h3X2Rv bWFpbl9yZXNldChkZXZfcHJpdiwgaHdfbWFzayk7Cj4gIAo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9yZXNldChkZXYsIHRydWUpOwo+ICAKPiBAQCAtMTU2NywzNCArMTYwOCwzNCBAQCBzdGF0 aWMgdm9pZCBnZW44X3VucmVxdWVzdF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAJCSAgICAgIF9NQVNLRURfQklUX0RJU0FCTEUoUkVTRVRfQ1RMX1JFUVVF U1RfUkVTRVQpKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBnZW44X2RvX3Jlc2V0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBpbnQgZ2VuOF9yZXNldF9lbmdpbmVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgZGV2X3ByaXYsIGkpCj4gKwlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwg ZGV2X3ByaXYsIGVuZ2luZV9tYXNrKQo+ICAJCWlmIChnZW44X3JlcXVlc3RfZW5naW5lX3Jlc2V0 KGVuZ2luZSkpCj4gIAkJCWdvdG8gbm90X3JlYWR5Owo+ICAKPiAtCXJldHVybiBnZW42X2RvX3Jl c2V0KGRldik7Cj4gKwlyZXR1cm4gZ2VuNl9yZXNldF9lbmdpbmVzKGRldiwgZW5naW5lX21hc2sp Owo+ICAKPiAgbm90X3JlYWR5Ogo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGkpCj4gKwlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9t YXNrKQo+ICAJCWdlbjhfdW5yZXF1ZXN0X2VuZ2luZV9yZXNldChlbmdpbmUpOwo+ICAKPiAgCXJl dHVybiAtRUlPOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50ICgqaW50ZWxfZ2V0X2dwdV9yZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KSkoc3RydWN0IGRybV9kZXZpY2UgKikKPiArc3RhdGljIGlu dCAoKmludGVsX2dldF9ncHVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikpKHN0cnVjdCBk cm1fZGV2aWNlICosCj4gKwkJCQkJCQkgIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ICB7Cj4gIAlp ZiAoIWk5MTUucmVzZXQpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDgpCj4gLQkJcmV0dXJuIGdlbjhfZG9fcmVzZXQ7Cj4gKwkJcmV0dXJuIGdl bjhfcmVzZXRfZW5naW5lczsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp Cj4gLQkJcmV0dXJuIGdlbjZfZG9fcmVzZXQ7Cj4gKwkJcmV0dXJuIGdlbjZfcmVzZXRfZW5naW5l czsKPiAgCWVsc2UgaWYgKElTX0dFTjUoZGV2KSkKPiAgCQlyZXR1cm4gaXJvbmxha2VfZG9fcmVz ZXQ7Cj4gIAllbHNlIGlmIChJU19HNFgoZGV2KSkKPiBAQCAtMTYwNywxMCArMTY0OCwxMCBAQCBz dGF0aWMgaW50ICgqaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSko c3RydWN0IGRybV9kZXZpY2UgKikKPiAgCQlyZXR1cm4gTlVMTDsKPiAgfQo+ICAKPiAtaW50IGlu dGVsX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtpbnQgaW50ZWxfZ3B1X3Jl c2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlp bnQgKCpyZXNldCkoc3RydWN0IGRybV9kZXZpY2UgKik7Cj4gKwlpbnQgKCpyZXNldCkoc3RydWN0 IGRybV9kZXZpY2UgKiwgdW5zaWduZWQpOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXNldCA9IGlu dGVsX2dldF9ncHVfcmVzZXQoZGV2KTsKPiBAQCAtMTYyMSw3ICsxNjYyLDcgQEAgaW50IGludGVs X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJICogcmVxdWVzdCBtYXkgYmUg ZHJvcHBlZCBhbmQgbmV2ZXIgY29tcGxldGVzIChjYXVzaW5nIC1FSU8pLgo+ICAJICovCj4gIAlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gLQly ZXQgPSByZXNldChkZXYpOwo+ICsJcmV0ID0gcmVzZXQoZGV2LCBlbmdpbmVfbWFzayk7Cj4gIAlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ ICAJcmV0dXJuIHJldDsKPiAtLSAKPiAyLjUuMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=