From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 4/4] drm/i915/icl: Interrupt handling Date: Tue, 27 Feb 2018 18:18:50 -0300 Message-ID: <1519766330.2537.12.camel@intel.com> References: <20180220153755.13509-1-mika.kuoppala@linux.intel.com> <20180220153755.13509-4-mika.kuoppala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F9FE6E814 for ; Tue, 27 Feb 2018 21:19:20 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , Mika Kuoppala , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RW0gVGVyLCAyMDE4LTAyLTI3IMOgcyAxMTo1MSAtMDgwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byBlc2NyZXZldToKPiAKPiBPbiAyMC8wMi8xOCAwNzozNywgTWlrYSBLdW9wcGFsYSB3cm90ZToK PiA+IHYyOiBSZWJhc2UuCj4gPiAKPiA+IHYzOgo+ID4gICAgKiBSZW1vdmUgRFBGLCBpdCBoYXMg YmVlbiByZW1vdmVkIGZyb20gU0tMKy4KPiA+ICAgICogRml4IC1pbnRlcm5hbCByZWJhc2Ugd3J0 LiBleGVjbGlzdHMgaW50ZXJydXB0IGhhbmRsaW5nLgo+ID4gCj4gPiB2NDogUmViYXNlLgo+ID4g Cj4gPiB2NToKPiA+ICAgICogVXBkYXRlZCBmb3IgUE9SIGNoYW5nZXMuIChEYW5pZWxlIENlcmFv bG8gU3B1cmlvKQo+ID4gICAgKiBNZXJnZWQgd2l0aCBpcnEgaGFuZGxpbmcgZml4ZXMgYnkgRGFu aWVsZSBDZXJhb2xvIFNwdXJpbzoKPiA+ICAgICAgICAqIFNpbXBsaWZ5IHRoZSBjb2RlIGJ5IHVz aW5nIGdlbjhfY3NfaXJxX2hhbmRsZXIuCj4gPiAgICAgICAgKiBGaXggaW50ZXJydXB0IGhhbmRs aW5nIGZvciB0aGUgdXBzdHJlYW0ga2VybmVsLgo+ID4gCj4gPiB2NjoKPiA+ICAgICogUmVtb3Zl IGVhcmx5IGJyaW5ndXAgZGVidWcgbWVzc2FnZXMgKFR2cnRrbykKPiA+ICAgICogQWRkIE5CIGFi b3V0IGFyYml0cmFyeSBzcGluIHdhaXQgdGltZW91dCAoVHZydGtvKQo+ID4gCj4gPiB2NyAoZnJv bSBQYXVsbyk6Cj4gPiAgICAqIERvbid0IHRyeSB0byB3cml0ZSBSTyBiaXRzIHRvIHJlZ2lzdGVy cy4KPiA+ICAgICogRG9uJ3QgY2hlY2sgZm9yIFBDSCB0eXBlcyB0aGF0IGRvbid0IGV4aXN0LiBQ Q0ggaW50ZXJydXB0cyBhcmUKPiA+IG5vdAo+ID4gICAgICBoZXJlIHlldC4KPiA+IAo+ID4gdjk6 Cj4gPiAgICAqIHNxdWFzaGVkIGluIHNlbGVjdG9yIGFuZCBzaGFyZWQgcmVnaXN0ZXIgaGFuZGxp bmcgKERhbmllbGUpCj4gPiAgICAqIHNraXAgd3JpdGluZyBvZiBpcnEgaWYgZGF0YSBpcyBub3Qg dmFsaWQgKERhbmllbGUpCj4gPiAgICAqIHVzZSB0aW1lX2FmdGVyMzIgKENocmlzKQo+ID4gICAg KiB1c2UgSTkxNV9NQVhfVkNTIGFuZCBJOTE1X01BWF9WRUNTIChEYW5pZWxlKQo+ID4gICAgKiBy ZW1vdmUgZmFrZSBwbSBpbnRlcnJ1cHQgaGFuZGxpbmcgZm9yIGxhdGVyIHBhdGNoIChNaWthKQo+ ID4gCj4gPiB2MTA6Cj4gPiAgICAqIERpcmVjdCBwcm9jZXNzaW5nIG9mIGJhbmtzLiBjbGVhciBi YW5rcyBlYXJseSAoQ2hyaXMpCj4gPiAgICAqIHJlbW92ZSBwb2xsIG9uIHZhbGlkIGJpdCwgb25s eSBjbGVhciB2YWxpZCBiaXQgKE1pa2EpCj4gPiAgICAqIHVzZSByYXcgYWNjZXNzb3JzLCBiZXR0 ZXIgbmFtaW5nIChDaHJpcykKPiA+IAo+ID4gdjExOgo+ID4gICAgKiBhZGFwdCB0byByYXdfcmVn X1tyZWFkfHdyaXRlXQo+ID4gICAgKiBicmluZyBiYWNrIHBvbGxpbmcgdGhlIHZhbGlkIGJpdCAo RGFuaWVsZSkKPiA+IAo+ID4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+Cj4gPiBDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1 cmlvQGludGVsLmNvbT4KPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiA+IENjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgo+ID4gU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3Nw dXJpb0BpbnRlbC4KPiA+IGNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nh ci5tYXRlb0BpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS3VvcHBhbGEgPG1p a2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgfCAyMjkKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8ICAgNyAr LQo+ID4gICAyIGZpbGVzIGNoYW5nZWQsIDIzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+IGluZGV4IDE3ZGU2Y2VmMmEz MC4uYTc5ZjQ3YWM3NDJhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gQEAg LTQxNSw2ICs0MTUsOSBAQCB2b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdAo+ ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgIAlpZiAoUkVBRF9PTkNFKHJwcy0+ aW50ZXJydXB0c19lbmFibGVkKSkKPiA+ICAgCQlyZXR1cm47Cj4gPiAgIAo+ID4gKwlpZiAoV0FS Tl9PTl9PTkNFKElTX0dFTjExKGRldl9wcml2KSkpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiAg IAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ID4gICAJV0FSTl9PTl9PTkNF KHJwcy0+cG1faWlyKTsKPiA+ICAgCVdBUk5fT05fT05DRShJOTE1X1JFQUQoZ2VuNl9wbV9paXIo ZGV2X3ByaXYpKSAmIGRldl9wcml2LQo+ID4gPnBtX3Jwc19ldmVudHMpOwo+ID4gQEAgLTQzMSw2 ICs0MzQsOSBAQCB2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QKPiA+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gICAJaWYgKCFSRUFEX09OQ0UocnBzLT5pbnRl cnJ1cHRzX2VuYWJsZWQpKQo+ID4gICAJCXJldHVybjsKPiA+ICAgCj4gPiArCWlmIChXQVJOX09O X09OQ0UoSVNfR0VOMTEoZGV2X3ByaXYpKSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICAgCXNw aW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gPiAgIAlycHMtPmludGVycnVwdHNf ZW5hYmxlZCA9IGZhbHNlOwo+ID4gICAKPiA+IEBAIC0yNzU1LDYgKzI3NjEsMTUwIEBAIHN0YXRp YyB2b2lkIF9fZmluaV93ZWRnZShzdHJ1Y3Qgd2VkZ2VfbWUKPiA+ICp3KQo+ID4gICAJICAgICAo VyktPmk5MTU7CQkJCQkJCj4gPiAJXAo+ID4gICAJICAgICBfX2Zpbmlfd2VkZ2UoKFcpKSkKPiA+ ICAgCj4gPiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkCj4gPiArZ2VuMTFfY3NfaXJxX2hh bmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSwgY29uc3QKPiA+IHUz MiBpaXIpCj4gPiArewo+ID4gKwlnZW44X2NzX2lycV9oYW5kbGVyKGVuZ2luZSwgaWlyLCAwKTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICtnZW4xMV9ndF9lbmdpbmVfaXJxX2hh bmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKiBjb25zdCBpOTE1LAo+ID4gKwkJCSAgICBj b25zdCB1bnNpZ25lZCBpbnQgYmFuaywKPiA+ICsJCQkgICAgY29uc3QgdW5zaWduZWQgaW50IGVu Z2luZV9uLAo+ID4gKwkJCSAgICBjb25zdCB1MTYgaWlyKQo+ID4gK3sKPiA+ICsJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqKiBjb25zdCBlbmdpbmUgPSBpOTE1LT5lbmdpbmU7Cj4gPiArCj4gPiAr CXN3aXRjaCAoYmFuaykgewo+ID4gKwljYXNlIDA6Cj4gPiArCQlzd2l0Y2ggKGVuZ2luZV9uKSB7 Cj4gPiArCj4gPiArCQljYXNlIEdFTjExX1JDUzA6Cj4gPiArCQkJcmV0dXJuIGdlbjExX2NzX2ly cV9oYW5kbGVyKGVuZ2luZVtSQ1NdLAo+ID4gaWlyKTsKPiA+ICsKPiA+ICsJCWNhc2UgR0VOMTFf QkNTOgo+ID4gKwkJCXJldHVybiBnZW4xMV9jc19pcnFfaGFuZGxlcihlbmdpbmVbQkNTXSwKPiA+ IGlpcik7Cj4gPiArCQl9Cj4gPiArCWNhc2UgMToKPiA+ICsJCXN3aXRjaCAoZW5naW5lX24pIHsK PiA+ICsKPiA+ICsJCWNhc2UgR0VOMTFfVkNTKDApOgo+ID4gKwkJCXJldHVybgo+ID4gZ2VuMTFf Y3NfaXJxX2hhbmRsZXIoZW5naW5lW19WQ1MoMCldLCBpaXIpOwo+ID4gKwkJY2FzZSBHRU4xMV9W Q1MoMSk6Cj4gPiArCQkJcmV0dXJuCj4gPiBnZW4xMV9jc19pcnFfaGFuZGxlcihlbmdpbmVbX1ZD UygxKV0sIGlpcik7Cj4gPiArCQljYXNlIEdFTjExX1ZDUygyKToKPiA+ICsJCQlyZXR1cm4KPiA+ IGdlbjExX2NzX2lycV9oYW5kbGVyKGVuZ2luZVtfVkNTKDIpXSwgaWlyKTsKPiA+ICsJCWNhc2Ug R0VOMTFfVkNTKDMpOgo+ID4gKwkJCXJldHVybgo+ID4gZ2VuMTFfY3NfaXJxX2hhbmRsZXIoZW5n aW5lW19WQ1MoMyldLCBpaXIpOwo+ID4gKwo+ID4gKwkJY2FzZSBHRU4xMV9WRUNTKDApOgo+ID4g KwkJCXJldHVybgo+ID4gZ2VuMTFfY3NfaXJxX2hhbmRsZXIoZW5naW5lW19WRUNTKDApXSwgaWly KTsKPiA+ICsJCWNhc2UgR0VOMTFfVkVDUygxKToKPiA+ICsJCQlyZXR1cm4KPiA+IGdlbjExX2Nz X2lycV9oYW5kbGVyKGVuZ2luZVtfVkVDUygxKV0sIGlpcik7Cj4gPiArCQl9Cj4gPiArCX0KPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHUzMgo+ID4gK2dlbjExX2d0X2VuZ2luZV9pbnRyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICogY29uc3QgaTkxNSwKPiA+ICsJCSAgICAgY29uc3QgdW5zaWdu ZWQgaW50IGJhbmssIGNvbnN0IHVuc2lnbmVkIGludAo+ID4gYml0KQo+ID4gK3sKPiA+ICsJdm9p ZCBfX2lvbWVtICogY29uc3QgcmVncyA9IGk5MTUtPnJlZ3M7Cj4gPiArCXUzMiB0aW1lb3V0X3Rz Owo+ID4gKwl1MzIgaWRlbnQ7Cj4gPiArCj4gPiArCXJhd19yZWdfd3JpdGUocmVncywgR0VOMTFf SUlSX1JFR19TRUxFQ1RPUihiYW5rKSwKPiA+IEJJVChiaXQpKTsKPiA+ICsKPiA+ICsJLyoKPiA+ ICsJICogTkI6IFNwZWNzIGRvIG5vdCBzcGVjaWZ5IGhvdyBsb25nIHRvIHNwaW4gd2FpdCwKPiA+ ICsJICogc28gd2UgZG8gfjEwMHVzIGFzIGFuIGVkdWNhdGVkIGd1ZXNzLgo+ID4gKwkgKi8KPiA+ ICsJdGltZW91dF90cyA9IChsb2NhbF9jbG9jaygpID4+IDEwKSArIDEwMDsKPiA+ICsJZG8gewo+ ID4gKwkJaWRlbnQgPSByYXdfcmVnX3JlYWQocmVncywKPiA+IEdFTjExX0lOVFJfSURFTlRJVFlf UkVHKGJhbmspKTsKPiA+ICsJfSB3aGlsZSAoIShpZGVudCAmIEdFTjExX0lOVFJfREFUQV9WQUxJ RCkgJiYKPiA+ICsJCSAhdGltZV9hZnRlcjMyKGxvY2FsX2Nsb2NrKCkgPj4gMTAsIHRpbWVvdXRf dHMpKTsKPiA+ICsKPiA+ICsJaWYgKHVubGlrZWx5KCEoaWRlbnQgJiBHRU4xMV9JTlRSX0RBVEFf VkFMSUQpKSkgewo+ID4gKwkJRFJNX0VSUk9SKCJJTlRSX0lERU5USVRZX1JFRyV1OiV1IDB4JTA4 eCBub3QKPiA+IHZhbGlkIVxuIiwKPiA+ICsJCQkgIGJhbmssIGJpdCwgaWRlbnQpOwo+ID4gKwkJ cmV0dXJuIDA7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmF3X3JlZ193cml0ZShyZWdzLCBHRU4xMV9J TlRSX0lERU5USVRZX1JFRyhiYW5rKSwKPiA+ICsJCSAgICAgIEdFTjExX0lOVFJfREFUQV9WQUxJ RCk7Cj4gPiArCj4gPiArCXJldHVybiBpZGVudCAmIEdFTjExX0lOVFJfRU5HSU5FX01BU0s7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArZ2VuMTFfZ3RfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKiBjb25zdCBpOTE1LAo+ID4gKwkJICAgICBjb25zdCB1MzIg bWFzdGVyX2N0bCkKPiA+ICt7Cj4gPiArCXZvaWQgX19pb21lbSAqIGNvbnN0IHJlZ3MgPSBpOTE1 LT5yZWdzOwo+ID4gKwl1bnNpZ25lZCBpbnQgYmFuazsKPiA+ICsKPiA+ICsJZm9yIChiYW5rID0g MDsgYmFuayA8IDI7IGJhbmsrKykgewo+ID4gKwkJdW5zaWduZWQgbG9uZyBpbnRyX2R3Owo+ID4g KwkJdW5zaWduZWQgaW50IGJpdDsKPiA+ICsKPiA+ICsJCWlmICghKG1hc3Rlcl9jdGwgJiBHRU4x MV9HVF9EV19JUlEoYmFuaykpKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJaW50cl9k dyA9IHJhd19yZWdfcmVhZChyZWdzLAo+ID4gR0VOMTFfR1RfSU5UUl9EVyhiYW5rKSk7Cj4gPiAr Cj4gPiArCQlpZiAodW5saWtlbHkoIWludHJfZHcpKQo+ID4gKwkJCURSTV9FUlJPUigiR1RfSU5U Ul9EVyV1IGJsYW5rIVxuIiwgYmFuayk7Cj4gCj4gQ291bGQgY29udGludWUgaGVyZSwgc2luY2Ug dGhlIG90aGVyIG9wZXJhdGlvbnMgaW4gdGhlIGxvb3Agd29uJ3QgYmUgCj4gbWVhbmluZ2Z1bCBp ZiBpbnRyX2R3PTAKPiAKPiA+ICsKPiA+ICsJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmaW50cl9k dywgMzIpIHsKPiA+ICsJCQljb25zdCB1MTYgaWlyID0gZ2VuMTFfZ3RfZW5naW5lX2ludHIoaTkx NSwKPiA+IGJhbmssIGJpdCk7Cj4gPiArCj4gPiArCQkJaWYgKHVubGlrZWx5KCFpaXIpKQo+ID4g KwkJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJCQlnZW4xMV9ndF9lbmdpbmVfaXJxX2hhbmRsZXIo aTkxNSwgYmFuaywKPiA+IGJpdCwgaWlyKTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCS8qIENsZWFy IG11c3QgYmUgYWZ0ZXIgc2hhcmVkIGhhcyBiZWVuIHNlcnZlZCBmb3IKPiA+IGVuZ2luZSAqLwo+ ID4gKwkJcmF3X3JlZ193cml0ZShyZWdzLCBHRU4xMV9HVF9JTlRSX0RXKGJhbmspLAo+ID4gaW50 cl9kdyk7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlycXJldHVybl90IGdlbjEx X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICogY29uc3QgaTkxNSA9IHRvX2k5MTUoYXJnKTsKPiA+ICsJdm9pZCBfX2lv bWVtICogY29uc3QgcmVncyA9IGk5MTUtPnJlZ3M7Cj4gPiArCXUzMiBtYXN0ZXJfY3RsOwo+ID4g Kwo+ID4gKwlpZiAoIWludGVsX2lycXNfZW5hYmxlZChpOTE1KSkKPiA+ICsJCXJldHVybiBJUlFf Tk9ORTsKPiA+ICsKPiA+ICsJbWFzdGVyX2N0bCA9IHJhd19yZWdfcmVhZChyZWdzLCBHRU4xMV9H RlhfTVNUUl9JUlEpOwo+ID4gKwltYXN0ZXJfY3RsICY9IH5HRU4xMV9NQVNURVJfSVJROwo+ID4g KwlpZiAoIW1hc3Rlcl9jdGwpCj4gPiArCQlyZXR1cm4gSVJRX05PTkU7Cj4gPiArCj4gPiArCS8q IERpc2FibGUgaW50ZXJydXB0cy4gKi8KPiA+ICsJcmF3X3JlZ193cml0ZShyZWdzLCBHRU4xMV9H RlhfTVNUUl9JUlEsIDApOwo+ID4gKwo+ID4gKwkvKiBGaW5kLCBjbGVhciwgdGhlbiBwcm9jZXNz IGVhY2ggc291cmNlIG9mIGludGVycnVwdC4gKi8KPiA+ICsJZ2VuMTFfZ3RfaXJxX2hhbmRsZXIo aTkxNSwgbWFzdGVyX2N0bCk7Cj4gPiArCj4gPiArCS8qIElSUXMgYXJlIHN5bmNlZCBkdXJpbmcg cnVudGltZV9zdXNwZW5kLCB3ZSBkb24ndAo+ID4gcmVxdWlyZSBhIHdha2VyZWYgKi8KPiA+ICsJ aWYgKG1hc3Rlcl9jdGwgJiBHRU4xMV9ESVNQTEFZX0lSUSkgewo+ID4gKwkJY29uc3QgdTMyIGRp c3BfY3RsID0gcmF3X3JlZ19yZWFkKHJlZ3MsCj4gPiBHRU4xMV9ESVNQTEFZX0lOVF9DVEwpOwo+ ID4gKwo+ID4gKwkJZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGk5MTUpOwo+ID4gKwkJZ2Vu OF9kZV9pcnFfaGFuZGxlcihpOTE1LCBkaXNwX2N0bCk7Cj4gCj4gZ2VuOF9kZV9pcnFfaGFuZGxl ciByZWZlcnMgdG8gdGhlIHByb3ZpZGVkIHZhbHVlIGFzICJtYXN0ZXJfY3RsIi4gCj4gR0VOMTFf RElTUExBWV9JTlRfQ1RMIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgR0VOOF9NQVNURVJfSVJRIGZv ciB0aGUgCj4gZGlzcGxheS1yZWxhdGVkIGJpdHMgKDE2LTMwKSBzbyBpdCBpcyBvayB0byBwcm92 aWRlIGRpc3BfY3RsLCBidXQgd2UgCj4gY291bGQgdXNlIGEgY29tbWVudCB0byBleHBsYWluIHRo YXQuIEFsc28sIGdlbjhfZGVfaXJxX2hhbmRsZXIgbG9ncyAKPiBlcnJvcnMgYmxhbWluZyB0aGUg bWFzdGVyIHdoZW4gdGhpbmdzIGdvIHdyb25nLCBzbyB3ZSBjb3VsZCB1cGRhdGUKPiB0aGF0IAo+ IHRvIG1ha2UgdGhpbmdzIGNsZWFyZXIsIGJ1dCB0aGF0IGNhbiBjb21lIGFzIGEgZm9sbG93IHVw Lgo+IAo+IEkndmUgY2hlY2tlZCB0aGUgYml0IGRlZmluaXRpb25zIG9mIHRoZSByZWdpc3RlcnMg dXNlZCBpbiAKPiBnZW44X2RlX2lycV9oYW5kbGVyIGFuZCBzb21lIG9mIHRoZSBiaXRzIGhhdmUg bW92ZWQsIGJ1dCBBRkFJQ1MKPiBhbW9uZyAKPiB0aGUgb25lcyB3ZSB1c2UgdGhlIG9ubHkgb25l IHRoYXQgaXMgaW1wYWN0ZWQgaXMgR0VOOF9ERV9NSVNDX0dTRSwKPiB3aGljaCAKPiBpcyBub3cg Z29uZSAoYml0IGlzIG5vdyByZXNlcnZlZCkuIFRoaXMgc2hvdWxkbid0IGltcGFjdCAKPiBnZW44 X2RlX2lycV9oYW5kbGVyIGJlY2F1c2UgdGhlIGludGVycnVwdCBzaG91bGRuJ3QgdHJpZ2dlciBh dCBhbGwsCj4gYnV0IAo+IHdlIGNvdWxkIGF2b2lkIGVuYWJsaW5nIGl0IGZyb20gZ2VuOF9kZV9p cnFfcG9zdGluc3RhbGwuCgpXZSBoYXZlIGEgcGF0Y2ggZm9yIHRoZSBHU0UgYml0LiBBbHNvLCBh IGZldyBvdGhlciBkaXNwbGF5LXJlbGF0ZWQKaW50ZXJydXB0cyBoYXZlIGNoYW5nZWQsIGFuZCB3 ZSBoYXZlIHBhdGNoZXMgZm9yIHRoZW0gdG9vLgoKQWxsIHRoZSBkaXNwbGF5LXJlbGF0ZWQgaW50 ZXJydXB0IHBhdGNoZXMgZGVwZW5kIG9uIHRoaXMgcGF0Y2ggaGVyZSwgSQpkaWRuJ3Qgc2VuZCB0 aGVtIHlldCB0byB0aGUgbGlzdCBzaW5jZSBJIHJlYWxpemVkIHRoaXMgcGF0Y2ggaGVyZSB3b3Vs ZApzdGlsbCBnZXQgYSBmZXcgbmV3IHZlcnNpb25zLCBnZW5lcmF0aW5nIG1vcmUgYW5kIGNvbmZs aWN0cyBvbiBlYWNoCnZlcnNpb24uCgpPbmNlIHRoaXMgb25lIGlzIG1lcmdlZCB3ZSBjYW4gc2Vu ZCB0aGUgZGlzcGxheSBpbnRlcnJ1cHQgb25lcy4KCj4gCj4gQW55d2F5LCBub3RoaW5nIGlzIGZ1 bmN0aW9uYWxseSB3cm9uZyBzbyB3aXRoIGEgY29tbWVudCB0byBleHBsYWluCj4gYWJvdXQgCj4g ZGlzcF9jdGw6Cj4gCj4gcmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmll bGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gCj4gU3RpbGwsIGFuIGFjayBmcm9tIHNvbWVv bmUgbW9yZSBrbm93bGVkZ2VhYmxlIHRoYW4gbWUgd2l0aCBkaXNwbGF5Cj4gY29kZSAKPiB3b3Vs ZCBiZSBuaWNlIDspCj4gCj4gRGFuaWVsZQo+IAo+ID4gKwkJZW5hYmxlX3JwbV93YWtlcmVmX2Fz c2VydHMoaTkxNSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogQWNrbm93bGVkZ2UgYW5kIGVuYWJs ZSBpbnRlcnJ1cHRzLiAqLwo+ID4gKwlyYXdfcmVnX3dyaXRlKHJlZ3MsIEdFTjExX0dGWF9NU1RS X0lSUSwgR0VOMTFfTUFTVEVSX0lSUSB8Cj4gPiBtYXN0ZXJfY3RsKTsKPiA+ICsKPiA+ICsJcmV0 dXJuIElSUV9IQU5ETEVEOwo+ID4gK30KPiA+ICsKPiA+ICAgLyoqCj4gPiAgICAqIGk5MTVfcmVz ZXRfZGV2aWNlIC0gZG8gcHJvY2VzcyBjb250ZXh0IGVycm9yIGhhbmRsaW5nIHdvcmsKPiA+ICAg ICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlCj4gPiBAQCAtMzE4MCw2ICszMzMwLDQy IEBAIHN0YXRpYyB2b2lkIGdlbjhfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlCj4gPiAqZGV2 KQo+ID4gICAJCWlieF9pcnFfcmVzZXQoZGV2X3ByaXYpOwo+ID4gICB9Cj4gPiAgIAo+ID4gK3N0 YXRpYyB2b2lkIGdlbjExX2d0X2lycV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gPiArewo+ID4gKwkvKiBEaXNhYmxlIFJDUywgQkNTLCBWQ1MgYW5kIFZFQ1MgY2xh c3MgZW5naW5lcy4gKi8KPiA+ICsJSTkxNV9XUklURShHRU4xMV9SRU5ERVJfQ09QWV9JTlRSX0VO QUJMRSwgMCk7Cj4gPiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTX1ZFQ1NfSU5UUl9FTkFCTEUsCSAg MCk7Cj4gPiArCj4gPiArCS8qIFJlc3RvcmUgbWFza3MgaXJxcyBvbiBSQ1MsIEJDUywgVkNTIGFu ZCBWRUNTIGVuZ2luZXMuCj4gPiAqLwo+ID4gKwlJOTE1X1dSSVRFKEdFTjExX1JDUzBfUlNWRF9J TlRSX01BU0ssCX4wKTsKPiA+ICsJSTkxNV9XUklURShHRU4xMV9CQ1NfUlNWRF9JTlRSX01BU0ss CX4wKTsKPiA+ICsJSTkxNV9XUklURShHRU4xMV9WQ1MwX1ZDUzFfSU5UUl9NQVNLLAl+MCk7Cj4g PiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTMl9WQ1MzX0lOVFJfTUFTSywJfjApOwo+ID4gKwlJOTE1 X1dSSVRFKEdFTjExX1ZFQ1MwX1ZFQ1MxX0lOVFJfTUFTSywJfjApOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgdm9pZCBnZW4xMV9pcnFfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gPiArCWludCBwaXBlOwo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFKEdFTjExX0dGWF9N U1RSX0lSUSwgMCk7Cj4gPiArCVBPU1RJTkdfUkVBRChHRU4xMV9HRlhfTVNUUl9JUlEpOwo+ID4g Kwo+ID4gKwlnZW4xMV9ndF9pcnFfcmVzZXQoZGV2X3ByaXYpOwo+ID4gKwo+ID4gKwlJOTE1X1dS SVRFKEdFTjExX0RJU1BMQVlfSU5UX0NUTCwgMCk7Cj4gPiArCj4gPiArCWZvcl9lYWNoX3BpcGUo ZGV2X3ByaXYsIHBpcGUpCj4gPiArCQlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9pc19lbmFibGVk KGRldl9wcml2LAo+ID4gKwkJCQkJCSAgIFBPV0VSX0RPTUFJTl9QSQo+ID4gUEUocGlwZSkpKQo+ ID4gKwkJCUdFTjhfSVJRX1JFU0VUX05EWChERV9QSVBFLCBwaXBlKTsKPiA+ICsKPiA+ICsJR0VO M19JUlFfUkVTRVQoR0VOOF9ERV9QT1JUXyk7Cj4gPiArCUdFTjNfSVJRX1JFU0VUKEdFTjhfREVf TUlTQ18pOwo+ID4gKwlHRU4zX0lSUV9SRVNFVChHRU44X1BDVV8pOwo+ID4gK30KPiA+ICsKPiA+ ICAgdm9pZCBnZW44X2lycV9wb3dlcl93ZWxsX3Bvc3RfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiAgIAkJCQkgICAgIHU4IHBpcGVfbWFzaykKPiA+ICAg ewo+ID4gQEAgLTM2NzcsNiArMzg2Myw0MSBAQCBzdGF0aWMgaW50IGdlbjhfaXJxX3Bvc3RpbnN0 YWxsKHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2KQo+ID4gICAJcmV0dXJuIDA7Cj4gPiAgIH0K PiA+ICAgCj4gPiArc3RhdGljIHZvaWQgZ2VuMTFfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwljb25zdCB1MzIgaXJx cyA9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCB8Cj4gPiBHVF9DT05URVhUX1NXSVRDSF9JTlRF UlJVUFQ7Cj4gPiArCj4gPiArCUJVSUxEX0JVR19PTihpcnFzICYgMHhmZmZmMDAwMCk7Cj4gPiAr Cj4gPiArCS8qIEVuYWJsZSBSQ1MsIEJDUywgVkNTIGFuZCBWRUNTIGNsYXNzIGludGVycnVwdHMu ICovCj4gPiArCUk5MTVfV1JJVEUoR0VOMTFfUkVOREVSX0NPUFlfSU5UUl9FTkFCTEUsIGlycXMg PDwgMTYgfAo+ID4gaXJxcyk7Cj4gPiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTX1ZFQ1NfSU5UUl9F TkFCTEUsCSAgaXJxcyA8PCAxNgo+ID4gfCBpcnFzKTsKPiA+ICsKPiA+ICsJLyogVW5tYXNrIGly cXMgb24gUkNTLCBCQ1MsIFZDUyBhbmQgVkVDUyBlbmdpbmVzLiAqLwo+ID4gKwlJOTE1X1dSSVRF KEdFTjExX1JDUzBfUlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PAo+ID4gMTYpKTsKPiA+ICsJSTkx NV9XUklURShHRU4xMV9CQ1NfUlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PAo+ID4gMTYpKTsKPiA+ ICsJSTkxNV9XUklURShHRU4xMV9WQ1MwX1ZDUzFfSU5UUl9NQVNLLAl+KGlycXMgfCBpcnFzCj4g PiA8PCAxNikpOwo+ID4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDUzJfVkNTM19JTlRSX01BU0ssCX4o aXJxcyB8IGlycXMKPiA+IDw8IDE2KSk7Cj4gPiArCUk5MTVfV1JJVEUoR0VOMTFfVkVDUzBfVkVD UzFfSU5UUl9NQVNLLAl+KGlycXMgfAo+ID4gaXJxcyA8PCAxNikpOwo+ID4gKwo+ID4gKwlkZXZf cHJpdi0+cG1faW1yID0gMHhmZmZmZmZmZjsgLyogVE9ETyAqLwo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgaW50IGdlbjExX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiA+ICsKPiA+ICsJZ2VuMTFfZ3RfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsK PiA+ICsJZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwoZGV2X3ByaXYpOwo+ID4gKwo+ID4gKwlJOTE1 X1dSSVRFKEdFTjExX0RJU1BMQVlfSU5UX0NUTCwKPiA+IEdFTjExX0RJU1BMQVlfSVJRX0VOQUJM RSk7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoR0VOMTFfR0ZYX01TVFJfSVJRLCBHRU4xMV9NQVNU RVJfSVJRKTsKPiA+ICsJUE9TVElOR19SRUFEKEdFTjExX0dGWF9NU1RSX0lSUSk7Cj4gPiArCj4g PiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICAgc3RhdGljIGludCBjaGVycnl2aWV3X2ly cV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gICB7Cj4gPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiBAQCAtNDEy NSw2ICs0MzQ2LDE0IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiA+ICpkZXZfcHJpdikKPiA+ICAgCQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5 NjVfZW5hYmxlX3ZibGFuazsKPiA+ICAgCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPQo+ ID4gaTk2NV9kaXNhYmxlX3ZibGFuazsKPiA+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJx X3NldHVwID0KPiA+IGk5MTVfaHBkX2lycV9zZXR1cDsKPiA+ICsJfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDExKSB7Cj4gPiArCQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBn ZW4xMV9pcnFfaGFuZGxlcjsKPiA+ICsJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGdl bjExX2lycV9yZXNldDsKPiA+ICsJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPQo+ID4g Z2VuMTFfaXJxX3Bvc3RpbnN0YWxsOwo+ID4gKwkJZGV2LT5kcml2ZXItPmlycV91bmluc3RhbGwg PSBnZW4xMV9pcnFfcmVzZXQ7Cj4gPiArCQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGdl bjhfZW5hYmxlX3ZibGFuazsKPiA+ICsJCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayA9IGdl bjhfZGlzYWJsZV92Ymxhbms7Cj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVw ID0KPiA+IHNwdF9ocGRfaXJxX3NldHVwOwo+ID4gICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDgpIHsKPiA+ICAgCQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBnZW44X2ly cV9oYW5kbGVyOwo+ID4gICAJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGdlbjhfaXJx X3Jlc2V0Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gaW5kZXggYTg4ZjBmMjEz NjA0Li43YTMxNmY4NjdiNDIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBA QCAtODAzMCw3ICs4MDMwLDEwIEBAIHZvaWQgaW50ZWxfc2FuaXRpemVfZ3RfcG93ZXJzYXZlKHN0 cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgIAlkZXZfcHJpdi0+Z3Rf cG0ucmM2LmVuYWJsZWQgPSB0cnVlOyAvKiBmb3JjZSBSQzYKPiA+IGRpc2FibGluZyAqLwo+ID4g ICAJaW50ZWxfZGlzYWJsZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ID4gICAKPiA+IC0JZ2Vu Nl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgMTEpCj4gPiArCQlnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKGRldl9wcml2KTsK PiA+ICsJZWxzZQo+ID4gKwkJV0FSTl9PTl9PTkNFKDEpOwo+ID4gICB9Cj4gPiAgIAo+ID4gICBz dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZGlzYWJsZV9sbGNfcHN0YXRlKHN0cnVjdAo+ID4gZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+IEBAIC04MTQzLDYgKzgxNDYsOCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9lbmFibGVfcnBzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiAgIAkJY2hlcnJ5dmlld19lbmFibGVfcnBzKGRldl9wcml2KTsKPiA+ICAgCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiA+ICAgCQl2YWxsZXl2aWV3X2VuYWJsZV9y cHMoZGV2X3ByaXYpOwo+ID4gKwl9IGVsc2UgaWYgKFdBUk5fT05fT05DRShJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDExKSkgewo+ID4gKwkJLyogVE9ETyAqLwo+ID4gICAJfSBlbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiA+ICAgCQlnZW45X2VuYWJsZV9ycHMoZGV2X3ByaXYp Owo+ID4gICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gPiAKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==