From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 05/19] drm/i915/icl: Interrupt handling Date: Thu, 15 Feb 2018 16:35:13 +0000 Message-ID: References: <20180214141213.24140-1-mika.kuoppala@linux.intel.com> <20180215162729.16034-1-mika.kuoppala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 497BD6E541 for ; Thu, 15 Feb 2018 16:35:17 +0000 (UTC) In-Reply-To: <20180215162729.16034-1-mika.kuoppala@linux.intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kuoppala , intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE1LzAyLzIwMTggMTY6MjcsIE1pa2EgS3VvcHBhbGEgd3JvdGU6Cj4gRnJvbTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkkgdGhpbmsgYSBwb2ludCBoYXMg YXJyaXZlZCB3aGVuIEkgYWxtb3N0IGRvbid0IHJlY29nbml6ZSB0aGUgY29kZSBhbnkgCmxvbmdl ciBzbyB3b3VsZCB3YW50IHRvIHJlbGlucXVpc2ggdGhlIGF1dGhvcnNoaXAgaWYgeW91IGRvbid0 IG1pbmQuCgpSZWdhcmRzLAoKVHZydGtvCgoKPiB2MjogUmViYXNlLgo+IAo+IHYzOgo+ICAgICog UmVtb3ZlIERQRiwgaXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFNLTCsuCj4gICAgKiBGaXggLWlu dGVybmFsIHJlYmFzZSB3cnQuIGV4ZWNsaXN0cyBpbnRlcnJ1cHQgaGFuZGxpbmcuCj4gCj4gdjQ6 IFJlYmFzZS4KPiAKPiB2NToKPiAgICAqIFVwZGF0ZWQgZm9yIFBPUiBjaGFuZ2VzLiAoRGFuaWVs ZSBDZXJhb2xvIFNwdXJpbykKPiAgICAqIE1lcmdlZCB3aXRoIGlycSBoYW5kbGluZyBmaXhlcyBi eSBEYW5pZWxlIENlcmFvbG8gU3B1cmlvOgo+ICAgICAgICAqIFNpbXBsaWZ5IHRoZSBjb2RlIGJ5 IHVzaW5nIGdlbjhfY3NfaXJxX2hhbmRsZXIuCj4gICAgICAgICogRml4IGludGVycnVwdCBoYW5k bGluZyBmb3IgdGhlIHVwc3RyZWFtIGtlcm5lbC4KPiAKPiB2NjoKPiAgICAqIFJlbW92ZSBlYXJs eSBicmluZ3VwIGRlYnVnIG1lc3NhZ2VzIChUdnJ0a28pCj4gICAgKiBBZGQgTkIgYWJvdXQgYXJi aXRyYXJ5IHNwaW4gd2FpdCB0aW1lb3V0IChUdnJ0a28pCj4gCj4gdjcgKGZyb20gUGF1bG8pOgo+ ICAgICogRG9uJ3QgdHJ5IHRvIHdyaXRlIFJPIGJpdHMgdG8gcmVnaXN0ZXJzLgo+ICAgICogRG9u J3QgY2hlY2sgZm9yIFBDSCB0eXBlcyB0aGF0IGRvbid0IGV4aXN0LiBQQ0ggaW50ZXJydXB0cyBh cmUgbm90Cj4gICAgICBoZXJlIHlldC4KPiAKPiB2OToKPiAgICAqIHNxdWFzaGVkIGluIHNlbGVj dG9yIGFuZCBzaGFyZWQgcmVnaXN0ZXIgaGFuZGxpbmcgKERhbmllbGUpCj4gICAgKiBza2lwIHdy aXRpbmcgb2YgaXJxIGlmIGRhdGEgaXMgbm90IHZhbGlkIChEYW5pZWxlKQo+ICAgICogdXNlIHRp bWVfYWZ0ZXIzMiAoQ2hyaXMpCj4gICAgKiB1c2UgSTkxNV9NQVhfVkNTIGFuZCBJOTE1X01BWF9W RUNTIChEYW5pZWxlKQo+ICAgICogcmVtb3ZlIGZha2UgcG0gaW50ZXJydXB0IGhhbmRsaW5nIGZv ciBsYXRlciBwYXRjaCAoTWlrYSkKPiAKPiB2MTA6Cj4gICAgKiBEaXJlY3QgcHJvY2Vzc2luZyBv ZiBiYW5rcy4gY2xlYXIgYmFua3MgZWFybHkgKENocmlzKQo+ICAgICogcmVtb3ZlIHBvbGwgb24g dmFsaWQgYml0LCBvbmx5IGNsZWFyIHZhbGlkIGJpdCAoTWlrYSkKPiAgICAqIHVzZSByYXcgYWNj ZXNzb3JzLCBiZXR0ZXIgbmFtaW5nIChDaHJpcykKPiAKPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFu aWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5j b20+Cj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJh b2xvc3B1cmlvQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBPc2NhciBNYXRlbyA8b3NjYXIu bWF0ZW9AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56 YW5vbmlAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3Vv cHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyB8IDIyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIHwgICA3ICstCj4gICAyIGZpbGVzIGNo YW5nZWQsIDIyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gaW5kZXggYjg4NmJkNDU5YWNjLi5lMzkxNGQxZTIwNGUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtNDE1LDYgKzQxNSw5IEBAIHZvaWQgZ2VuNl9lbmFibGVf cnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlm IChSRUFEX09OQ0UocnBzLT5pbnRlcnJ1cHRzX2VuYWJsZWQpKQo+ICAgCQlyZXR1cm47Cj4gICAK PiArCWlmIChXQVJOX09OX09OQ0UoSVNfR0VOMTEoZGV2X3ByaXYpKSkKPiArCQlyZXR1cm47Cj4g Kwo+ICAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gICAJV0FSTl9PTl9P TkNFKHJwcy0+cG1faWlyKTsKPiAgIAlXQVJOX09OX09OQ0UoSTkxNV9SRUFEKGdlbjZfcG1faWly KGRldl9wcml2KSkgJiBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyk7Cj4gQEAgLTQzMSw2ICs0MzQs OSBAQCB2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICAJaWYgKCFSRUFEX09OQ0UocnBzLT5pbnRlcnJ1cHRzX2VuYWJs ZWQpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiArCWlmIChXQVJOX09OX09OQ0UoSVNfR0VOMTEoZGV2 X3ByaXYpKSkKPiArCQlyZXR1cm47Cj4gKwo+ICAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5p cnFfbG9jayk7Cj4gICAJcnBzLT5pbnRlcnJ1cHRzX2VuYWJsZWQgPSBmYWxzZTsKPiAgIAo+IEBA IC0yNzQ2LDYgKzI3NTIsMTQzIEBAIHN0YXRpYyB2b2lkIF9fZmluaV93ZWRnZShzdHJ1Y3Qgd2Vk Z2VfbWUgKncpCj4gICAJICAgICAoVyktPmk5MTU7CQkJCQkJCVwKPiAgIAkgICAgIF9fZmluaV93 ZWRnZSgoVykpKQo+ICAgCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZAo+ICtnZW4xMV9j c19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lLCBjb25z dCB1MzIgaWlyKQo+ICt7Cj4gKwlnZW44X2NzX2lycV9oYW5kbGVyKGVuZ2luZSwgaWlyLCAwKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArZ2VuMTFfZ3RfZW5naW5lX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICogY29uc3QgaTkxNSwKPiArCQkJICAgIGNvbnN0IHVuc2ln bmVkIGludCBiYW5rLAo+ICsJCQkgICAgY29uc3QgdW5zaWduZWQgaW50IGVuZ2luZV9uLAo+ICsJ CQkgICAgY29uc3QgdTE2IGlpcikKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKiBj b25zdCBlbmdpbmUgPSBpOTE1LT5lbmdpbmU7Cj4gKwo+ICsJc3dpdGNoIChiYW5rKSB7Cj4gKwlj YXNlIDA6Cj4gKwkJc3dpdGNoIChlbmdpbmVfbikgewo+ICsKPiArCQljYXNlIEdFTjExX1JDUzA6 Cj4gKwkJCXJldHVybiBnZW4xMV9jc19pcnFfaGFuZGxlcihlbmdpbmVbUkNTXSwgaWlyKTsKPiAr Cj4gKwkJY2FzZSBHRU4xMV9CQ1M6Cj4gKwkJCXJldHVybiBnZW4xMV9jc19pcnFfaGFuZGxlcihl bmdpbmVbQkNTXSwgaWlyKTsKPiArCQl9Cj4gKwljYXNlIDE6Cj4gKwkJc3dpdGNoIChlbmdpbmVf bikgewo+ICsKPiArCQljYXNlIEdFTjExX1ZDUygwKToKPiArCQkJcmV0dXJuIGdlbjExX2NzX2ly cV9oYW5kbGVyKGVuZ2luZVtfVkNTKDApXSwgaWlyKTsKPiArCQljYXNlIEdFTjExX1ZDUygxKToK PiArCQkJcmV0dXJuIGdlbjExX2NzX2lycV9oYW5kbGVyKGVuZ2luZVtfVkNTKDEpXSwgaWlyKTsK PiArCQljYXNlIEdFTjExX1ZDUygyKToKPiArCQkJcmV0dXJuIGdlbjExX2NzX2lycV9oYW5kbGVy KGVuZ2luZVtfVkNTKDIpXSwgaWlyKTsKPiArCQljYXNlIEdFTjExX1ZDUygzKToKPiArCQkJcmV0 dXJuIGdlbjExX2NzX2lycV9oYW5kbGVyKGVuZ2luZVtfVkNTKDMpXSwgaWlyKTsKPiArCj4gKwkJ Y2FzZSBHRU4xMV9WRUNTKDApOgo+ICsJCQlyZXR1cm4gZ2VuMTFfY3NfaXJxX2hhbmRsZXIoZW5n aW5lW19WRUNTKDApXSwgaWlyKTsKPiArCQljYXNlIEdFTjExX1ZFQ1MoMSk6Cj4gKwkJCXJldHVy biBnZW4xMV9jc19pcnFfaGFuZGxlcihlbmdpbmVbX1ZFQ1MoMSldLCBpaXIpOwo+ICsJCX0KPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHUzMgo+ICtnZW4xMV9ndF9lbmdpbmVfaW50cihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqIGNvbnN0IGk5MTUsCj4gKwkJICAgICBjb25zdCB1bnNpZ25lZCBp bnQgYmFuaywgY29uc3QgdW5zaWduZWQgaW50IGJpdCkKPiArewo+ICsJdm9pZCBfX2lvbWVtICog Y29uc3QgcmVncyA9IGk5MTUtPnJlZ3M7Cj4gKwl1MzIgaWRlbnQ7Cj4gKwo+ICsJd3JpdGVsKEJJ VChiaXQpLAo+ICsJICAgICAgIHJlZ3MgKyBpOTE1X21taW9fcmVnX29mZnNldChHRU4xMV9JSVJf UkVHX1NFTEVDVE9SKGJhbmspKSk7Cj4gKwo+ICsJaWRlbnQgPSByZWFkbChyZWdzICsKPiArCQkg ICAgICBpOTE1X21taW9fcmVnX29mZnNldChHRU4xMV9JTlRSX0lERU5USVRZX1JFRyhiYW5rKSkp Owo+ICsKPiArCWlmICh1bmxpa2VseSghKGlkZW50ICYgR0VOMTFfSU5UUl9EQVRBX1ZBTElEKSkp IHsKPiArCQlEUk1fRVJST1IoIklOVFJfSURFTlRJVFlfUkVHJXU6JXUgMHglMDh4IG5vdCB2YWxp ZCFcbiIsCj4gKwkJCSAgYmFuaywgYml0LCBpZGVudCk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4g Kwo+ICsJd3JpdGVsKEdFTjExX0lOVFJfREFUQV9WQUxJRCwKPiArCSAgICAgICByZWdzICsgaTkx NV9tbWlvX3JlZ19vZmZzZXQoR0VOMTFfSU5UUl9JREVOVElUWV9SRUcoYmFuaykpKTsKPiArCj4g KwlyZXR1cm4gaWRlbnQgJiBHRU4xMV9JTlRSX0VOR0lORV9NQVNLOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZAo+ICtnZW4xMV9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq IGNvbnN0IGk5MTUsCj4gKwkJICAgICBjb25zdCB1MzIgbWFzdGVyX2N0bCkKPiArewo+ICsJdm9p ZCBfX2lvbWVtICogY29uc3QgcmVncyA9IGk5MTUtPnJlZ3M7Cj4gKwl1bnNpZ25lZCBpbnQgYmFu azsKPiArCj4gKwlmb3IgKGJhbmsgPSAwOyBiYW5rIDwgMjsgYmFuaysrKSB7Cj4gKwkJdW5zaWdu ZWQgbG9uZyBpbnRyX2R3Owo+ICsJCXVuc2lnbmVkIGludCBiaXQ7Cj4gKwo+ICsJCWlmICghKG1h c3Rlcl9jdGwgJiBHRU4xMV9HVF9EV19JUlEoYmFuaykpKQo+ICsJCQljb250aW51ZTsKPiArCj4g KwkJaW50cl9kdyA9IHJlYWRsKHJlZ3MgKwo+ICsJCQkJaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VO MTFfR1RfSU5UUl9EVyhiYW5rKSkpOwo+ICsKPiArCQlpZiAodW5saWtlbHkoIWludHJfZHcpKQo+ ICsJCQlEUk1fRVJST1IoIkdUX0lOVFJfRFcldSBibGFuayFcbiIsIGJhbmspOwo+ICsKPiArCQlm b3JfZWFjaF9zZXRfYml0KGJpdCwgJmludHJfZHcsIDMyKSB7Cj4gKwkJCWNvbnN0IHUxNiBpaXIg PSBnZW4xMV9ndF9lbmdpbmVfaW50cihpOTE1LCBiYW5rLCBiaXQpOwo+ICsKPiArCQkJaWYgKHVu bGlrZWx5KCFpaXIpKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlnZW4xMV9ndF9lbmdpbmVf aXJxX2hhbmRsZXIoaTkxNSwgYmFuaywgYml0LCBpaXIpOwo+ICsJCX0KPiArCj4gKwkJLyogQ2xl YXIgbXVzdCBiZSBhZnRlciBzaGFyZWQgaGFzIGJlZW4gc2VydmVkIGZvciBlbmdpbmUgKi8KPiAr CQl3cml0ZWwoaW50cl9kdywKPiArCQkgICAgICAgcmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0 KEdFTjExX0dUX0lOVFJfRFcoYmFuaykpKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGlycXJl dHVybl90IGdlbjExX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKiBjb25zdCBkZXZfcHJpdiA9Cj4gKwkJdG9faTkxNSgoc3Ry dWN0IGRybV9kZXZpY2UgKilhcmcpOwo+ICsJdTMyIG1hc3Rlcl9jdGw7Cj4gKwo+ICsJaWYgKCFp bnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKQo+ICsJCXJldHVybiBJUlFfTk9ORTsKPiArCj4g KwltYXN0ZXJfY3RsID0gSTkxNV9SRUFEX0ZXKEdFTjExX0dGWF9NU1RSX0lSUSk7Cj4gKwltYXN0 ZXJfY3RsICY9IH5HRU4xMV9NQVNURVJfSVJROwo+ICsJaWYgKCFtYXN0ZXJfY3RsKQo+ICsJCXJl dHVybiBJUlFfTk9ORTsKPiArCj4gKwkvKiBEaXNhYmxlIGludGVycnVwdHMuICovCj4gKwlJOTE1 X1dSSVRFX0ZXKEdFTjExX0dGWF9NU1RSX0lSUSwgMCk7Cj4gKwo+ICsJLyogRmluZCwgY2xlYXIs IHRoZW4gcHJvY2VzcyBlYWNoIHNvdXJjZSBvZiBpbnRlcnJ1cHQuICovCj4gKwlnZW4xMV9ndF9p cnFfaGFuZGxlcihkZXZfcHJpdiwgbWFzdGVyX2N0bCk7Cj4gKwo+ICsJaWYgKG1hc3Rlcl9jdGwg JiBHRU4xMV9ESVNQTEFZX0lSUSkgewo+ICsJCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhk ZXZfcHJpdik7Cj4gKwkJZ2VuOF9kZV9pcnFfaGFuZGxlcihkZXZfcHJpdiwKPiArCQkJCSAgICBJ OTE1X1JFQURfRlcoR0VOMTFfRElTUExBWV9JTlRfQ1RMKSk7Cj4gKwkJZW5hYmxlX3JwbV93YWtl cmVmX2Fzc2VydHMoZGV2X3ByaXYpOwo+ICsJfQo+ICsKPiArCS8qIEFja25vd2xlZGdlIGFuZCBl bmFibGUgaW50ZXJydXB0cy4gKi8KPiArCUk5MTVfV1JJVEVfRlcoR0VOMTFfR0ZYX01TVFJfSVJR LCBHRU4xMV9NQVNURVJfSVJRIHwgbWFzdGVyX2N0bCk7Cj4gKwo+ICsJcmV0dXJuIElSUV9IQU5E TEVEOwo+ICt9Cj4gKwo+ICAgLyoqCj4gICAgKiBpOTE1X3Jlc2V0X2RldmljZSAtIGRvIHByb2Nl c3MgY29udGV4dCBlcnJvciBoYW5kbGluZyB3b3JrCj4gICAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2 aWNlIHByaXZhdGUKPiBAQCAtMzE1OSw2ICszMzAyLDQyIEBAIHN0YXRpYyB2b2lkIGdlbjhfaXJx X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWlieF9pcnFfcmVzZXQoZGV2X3By aXYpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGdlbjExX2d0X2lycV9yZXNldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIERpc2FibGUgUkNTLCBCQ1Ms IFZDUyBhbmQgVkVDUyBjbGFzcyBlbmdpbmVzLiAqLwo+ICsJSTkxNV9XUklURShHRU4xMV9SRU5E RVJfQ09QWV9JTlRSX0VOQUJMRSwgMCk7Cj4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDU19WRUNTX0lO VFJfRU5BQkxFLAkgIDApOwo+ICsKPiArCS8qIFJlc3RvcmUgbWFza3MgaXJxcyBvbiBSQ1MsIEJD UywgVkNTIGFuZCBWRUNTIGVuZ2luZXMuICovCj4gKwlJOTE1X1dSSVRFKEdFTjExX1JDUzBfUlNW RF9JTlRSX01BU0ssCX4wKTsKPiArCUk5MTVfV1JJVEUoR0VOMTFfQkNTX1JTVkRfSU5UUl9NQVNL LAl+MCk7Cj4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDUzBfVkNTMV9JTlRSX01BU0ssCX4wKTsKPiAr CUk5MTVfV1JJVEUoR0VOMTFfVkNTMl9WQ1MzX0lOVFJfTUFTSywJfjApOwo+ICsJSTkxNV9XUklU RShHRU4xMV9WRUNTMF9WRUNTMV9JTlRSX01BU0ssCX4wKTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgZ2VuMTFfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlpbnQg cGlwZTsKPiArCj4gKwlJOTE1X1dSSVRFKEdFTjExX0dGWF9NU1RSX0lSUSwgMCk7Cj4gKwlQT1NU SU5HX1JFQUQoR0VOMTFfR0ZYX01TVFJfSVJRKTsKPiArCj4gKwlnZW4xMV9ndF9pcnFfcmVzZXQo ZGV2X3ByaXYpOwo+ICsKPiArCUk5MTVfV1JJVEUoR0VOMTFfRElTUExBWV9JTlRfQ1RMLCAwKTsK PiArCj4gKwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICsJCWlmIChpbnRlbF9kaXNw bGF5X3Bvd2VyX2lzX2VuYWJsZWQoZGV2X3ByaXYsCj4gKwkJCQkJCSAgIFBPV0VSX0RPTUFJTl9Q SVBFKHBpcGUpKSkKPiArCQkJR0VOOF9JUlFfUkVTRVRfTkRYKERFX1BJUEUsIHBpcGUpOwo+ICsK PiArCUdFTjNfSVJRX1JFU0VUKEdFTjhfREVfUE9SVF8pOwo+ICsJR0VOM19JUlFfUkVTRVQoR0VO OF9ERV9NSVNDXyk7Cj4gKwlHRU4zX0lSUV9SRVNFVChHRU44X1BDVV8pOwo+ICt9Cj4gKwo+ICAg dm9pZCBnZW44X2lycV9wb3dlcl93ZWxsX3Bvc3RfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgICAgIHU4IHBpcGVfbWFzaykKPiAgIHsKPiBAQCAtMzY1 Niw2ICszODM1LDQxIEBAIHN0YXRpYyBpbnQgZ2VuOF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBn ZW4xMV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICt7Cj4gKwljb25zdCB1MzIgaXJxcyA9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCB8IEdU X0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVDsKPiArCj4gKwlCVUlMRF9CVUdfT04oaXJxcyAmIDB4 ZmZmZjAwMDApOwo+ICsKPiArCS8qIEVuYWJsZSBSQ1MsIEJDUywgVkNTIGFuZCBWRUNTIGNsYXNz IGludGVycnVwdHMuICovCj4gKwlJOTE1X1dSSVRFKEdFTjExX1JFTkRFUl9DT1BZX0lOVFJfRU5B QkxFLCBpcnFzIDw8IDE2IHwgaXJxcyk7Cj4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDU19WRUNTX0lO VFJfRU5BQkxFLAkgIGlycXMgPDwgMTYgfCBpcnFzKTsKPiArCj4gKwkvKiBVbm1hc2sgaXJxcyBv biBSQ1MsIEJDUywgVkNTIGFuZCBWRUNTIGVuZ2luZXMuICovCj4gKwlJOTE1X1dSSVRFKEdFTjEx X1JDUzBfUlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PCAxNikpOwo+ICsJSTkxNV9XUklURShHRU4x MV9CQ1NfUlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PCAxNikpOwo+ICsJSTkxNV9XUklURShHRU4x MV9WQ1MwX1ZDUzFfSU5UUl9NQVNLLAl+KGlycXMgfCBpcnFzIDw8IDE2KSk7Cj4gKwlJOTE1X1dS SVRFKEdFTjExX1ZDUzJfVkNTM19JTlRSX01BU0ssCX4oaXJxcyB8IGlycXMgPDwgMTYpKTsKPiAr CUk5MTVfV1JJVEUoR0VOMTFfVkVDUzBfVkVDUzFfSU5UUl9NQVNLLAl+KGlycXMgfCBpcnFzIDw8 IDE2KSk7Cj4gKwo+ICsJZGV2X3ByaXYtPnBtX2ltciA9IDB4ZmZmZmZmZmY7IC8qIFRPRE8gKi8K PiArfQo+ICsKPiArc3RhdGljIGludCBnZW4xMV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCj4gKwlnZW4xMV9ndF9pcnFfcG9zdGluc3RhbGwoZGV2X3By aXYpOwo+ICsJZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwoZGV2X3ByaXYpOwo+ICsKPiArCUk5MTVf V1JJVEUoR0VOMTFfRElTUExBWV9JTlRfQ1RMLCBHRU4xMV9ESVNQTEFZX0lSUV9FTkFCTEUpOwo+ ICsKPiArCUk5MTVfV1JJVEUoR0VOMTFfR0ZYX01TVFJfSVJRLCBHRU4xMV9NQVNURVJfSVJRKTsK PiArCVBPU1RJTkdfUkVBRChHRU4xMV9HRlhfTVNUUl9JUlEpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICAgc3RhdGljIGludCBjaGVycnl2aWV3X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiBAQCAtNDEwNCw2ICs0MzE4LDE0IEBAIHZvaWQgaW50ZWxf aXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlkZXYtPmRy aXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5NjVfZW5hYmxlX3ZibGFuazsKPiAgIAkJZGV2LT5kcml2 ZXItPmRpc2FibGVfdmJsYW5rID0gaTk2NV9kaXNhYmxlX3ZibGFuazsKPiAgIAkJZGV2X3ByaXYt PmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IGk5MTVfaHBkX2lycV9zZXR1cDsKPiArCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICsJCWRldi0+ZHJpdmVyLT5pcnFfaGFu ZGxlciA9IGdlbjExX2lycV9oYW5kbGVyOwo+ICsJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFs bCA9IGdlbjExX2lycV9yZXNldDsKPiArCQlkZXYtPmRyaXZlci0+aXJxX3Bvc3RpbnN0YWxsID0g Z2VuMTFfaXJxX3Bvc3RpbnN0YWxsOwo+ICsJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0g Z2VuMTFfaXJxX3Jlc2V0Owo+ICsJCWRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gZ2VuOF9l bmFibGVfdmJsYW5rOwo+ICsJCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayA9IGdlbjhfZGlz YWJsZV92Ymxhbms7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IHNwdF9o cGRfaXJxX3NldHVwOwo+ICAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7 Cj4gICAJCWRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciA9IGdlbjhfaXJxX2hhbmRsZXI7Cj4gICAJ CWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGdlbjhfaXJxX3Jlc2V0Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+IGluZGV4IDkzOWI4YTQxNTgwYy4uOTk2YWI4NjEwMGVlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTgwMjksNyArODAyOSwxMCBAQCB2b2lkIGludGVs X3Nhbml0aXplX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gICAJZGV2X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkID0gdHJ1ZTsgLyogZm9yY2UgUkM2IGRp c2FibGluZyAqLwo+ICAgCWludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKPiAg IAo+IC0JZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDExKQo+ICsJCWdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoZGV2X3By aXYpOwo+ICsJZWxzZQo+ICsJCVdBUk5fT05fT05DRSgxKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IGlubGluZSB2b2lkIGludGVsX2Rpc2FibGVfbGxjX3BzdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiBAQCAtODE0Miw2ICs4MTQ1LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5h YmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWNoZXJyeXZp ZXdfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSkgewo+ICAgCQl2YWxsZXl2aWV3X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+ICsJfSBl bHNlIGlmIChXQVJOX09OX09OQ0UoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkpIHsKPiArCQkv KiBUT0RPICovCj4gICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAg IAkJZ2VuOV9lbmFibGVfcnBzKGRldl9wcml2KTsKPiAgIAl9IGVsc2UgaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikpIHsKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==