From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH 05/20] drm/i915/icl: Interrupt handling Date: Tue, 13 Feb 2018 11:18:32 -0800 Message-ID: <7631518a-dd52-483c-9ec8-e94766530082@intel.com> References: <20180213163738.9055-1-mika.kuoppala@linux.intel.com> <20180213163738.9055-6-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 742836E2D8 for ; Tue, 13 Feb 2018 19:18:33 +0000 (UTC) In-Reply-To: <20180213163738.9055-6-mika.kuoppala@linux.intel.com> Content-Language: en-US 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: Rodrigo Vivi , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMy8wMi8xOCAwODozNywgTWlrYSBLdW9wcGFsYSB3cm90ZToKPiBGcm9tOiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IAo+IHYyOiBSZWJhc2UuCj4gCj4g djM6Cj4gICAgKiBSZW1vdmUgRFBGLCBpdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gU0tMKy4KPiAg ICAqIEZpeCAtaW50ZXJuYWwgcmViYXNlIHdydC4gZXhlY2xpc3RzIGludGVycnVwdCBoYW5kbGlu Zy4KPiAKPiB2NDogUmViYXNlLgo+IAo+IHY1Ogo+ICAgICogVXBkYXRlZCBmb3IgUE9SIGNoYW5n ZXMuIChEYW5pZWxlIENlcmFvbG8gU3B1cmlvKQo+ICAgICogTWVyZ2VkIHdpdGggaXJxIGhhbmRs aW5nIGZpeGVzIGJ5IERhbmllbGUgQ2VyYW9sbyBTcHVyaW86Cj4gICAgICAgICogU2ltcGxpZnkg dGhlIGNvZGUgYnkgdXNpbmcgZ2VuOF9jc19pcnFfaGFuZGxlci4KPiAgICAgICAgKiBGaXggaW50 ZXJydXB0IGhhbmRsaW5nIGZvciB0aGUgdXBzdHJlYW0ga2VybmVsLgo+IAo+IHY2Ogo+ICAgICog UmVtb3ZlIGVhcmx5IGJyaW5ndXAgZGVidWcgbWVzc2FnZXMgKFR2cnRrbykKPiAgICAqIEFkZCBO QiBhYm91dCBhcmJpdHJhcnkgc3BpbiB3YWl0IHRpbWVvdXQgKFR2cnRrbykKPiAKPiB2NyAoZnJv bSBQYXVsbyk6Cj4gICAgKiBEb24ndCB0cnkgdG8gd3JpdGUgUk8gYml0cyB0byByZWdpc3RlcnMu Cj4gICAgKiBEb24ndCBjaGVjayBmb3IgUENIIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QuIFBDSCBp bnRlcnJ1cHRzIGFyZSBub3QKPiAgICAgIGhlcmUgeWV0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog Um9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERh bmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiAtLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCAyMTAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyB8ICAgNyArLQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGI4ODZiZDQ1OWFj Yy4uM2ExZGU0ZTJhOTQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTQxNSw2 ICs0MTUsOSBAQCB2b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlpZiAoUkVBRF9PTkNFKHJwcy0+aW50ZXJydXB0c19l bmFibGVkKSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gKwlpZiAoV0FSTl9PTl9PTkNFKElTX0dFTjEx KGRldl9wcml2KSkpCj4gKwkJcmV0dXJuOwo+ICsKPiAgIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJp di0+aXJxX2xvY2spOwo+ICAgCVdBUk5fT05fT05DRShycHMtPnBtX2lpcik7Cj4gICAJV0FSTl9P Tl9PTkNFKEk5MTVfUkVBRChnZW42X3BtX2lpcihkZXZfcHJpdikpICYgZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMpOwo+IEBAIC00MzEsNiArNDM0LDkgQEAgdm9pZCBnZW42X2Rpc2FibGVfcnBzX2lu dGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmICghUkVB RF9PTkNFKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gKwlp ZiAoV0FSTl9PTl9PTkNFKElTX0dFTjExKGRldl9wcml2KSkpCj4gKwkJcmV0dXJuOwo+ICsKPiAg IAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ICAgCXJwcy0+aW50ZXJydXB0 c19lbmFibGVkID0gZmFsc2U7Cj4gICAKPiBAQCAtMjc0Niw2ICsyNzUyLDEzMSBAQCBzdGF0aWMg dm9pZCBfX2Zpbmlfd2VkZ2Uoc3RydWN0IHdlZGdlX21lICp3KQo+ICAgCSAgICAgKFcpLT5pOTE1 OwkJCQkJCQlcCj4gICAJICAgICBfX2Zpbmlfd2VkZ2UoKFcpKSkKPiAgIAo+ICtzdGF0aWMgX19h bHdheXNfaW5saW5lIHZvaWQKPiArZ2VuMTFfY3NfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCB1MzIgaWlyKQo+ICt7Cj4gKwlnZW44X2NzX2lycV9oYW5kbGVyKGVu Z2luZSwgaWlyLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90Cj4gK2dlbjExX2d0 X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rl cl9jdGwpCj4gK3sKPiArCWlycXJldHVybl90IHJldCA9IElSUV9OT05FOwo+ICsJdTE2IGlycVsy XVszMl07Cj4gKwl1MzIgZHcsIGlkZW50Owo+ICsJdW5zaWduZWQgbG9uZyB0bXA7Cj4gKwl1bnNp Z25lZCBpbnQgYmFuaywgYml0LCBlbmdpbmU7Cj4gKwl1bnNpZ25lZCBsb25nIHdhaXRfc3RhcnQs IHdhaXRfZW5kOwo+ICsKPiArCW1lbXNldChpcnEsIDAsIHNpemVvZihpcnEpKTsKPiArCj4gKwlm b3IgKGJhbmsgPSAwOyBiYW5rIDwgMjsgYmFuaysrKSB7Cj4gKwkJaWYgKG1hc3Rlcl9jdGwgJiBH RU4xMV9HVF9EV19JUlEoYmFuaykpIHsKPiArCQkJZHcgPSBJOTE1X1JFQURfRlcoR0VOMTFfR1Rf SU5UUl9EVyhiYW5rKSk7Cj4gKwkJCWlmICghZHcpCj4gKwkJCQlEUk1fRVJST1IoIkdUX0lOVFJf RFcldSBibGFuayFcbiIsIGJhbmspOwo+ICsJCQl0bXAgPSBkdzsKPiArCQkJZm9yX2VhY2hfc2V0 X2JpdChiaXQsICZ0bXAsIDMyKSB7Cj4gKwkJCQlJOTE1X1dSSVRFX0ZXKEdFTjExX0lJUl9SRUdf U0VMRUNUT1IoYmFuayksIDEgPDwgYml0KTsKPiArCQkJCXdhaXRfc3RhcnQgPSBsb2NhbF9jbG9j aygpID4+IDEwOwo+ICsJCQkJLyogTkI6IFNwZWNzIGRvIG5vdCBzcGVjaWZ5IGhvdyBsb25nIHRv IHNwaW4gd2FpdC4KPiArCQkJCSAqIFRha2luZyAxMDB1cyBhcyBhbiBlZHVjYXRlZCBndWVzcyAq Lwo+ICsJCQkJd2FpdF9lbmQgPSB3YWl0X3N0YXJ0ICsgMTAwOwo+ICsJCQkJZG8gewo+ICsJCQkJ CWlkZW50ID0gSTkxNV9SRUFEX0ZXKEdFTjExX0lOVFJfSURFTlRJVFlfUkVHKGJhbmspKTsKPiAr CQkJCX0gd2hpbGUgKCEoaWRlbnQgJiBHRU4xMV9JTlRSX0RBVEFfVkFMSUQpICYmCj4gKwkJCQkJ ICF0aW1lX2FmdGVyKCh1bnNpZ25lZCBsb25nKWxvY2FsX2Nsb2NrKCkgPj4gMTAsIHdhaXRfZW5k KSk7CgpQYXRjaCAxOC8yMCBjaGFuZ2VzIHRoaXMgdG8gdGltZV9hZnRlcjY0IGFuZCB3YWl0X2Vu ZCB0byB1NjQsIHdoaWNoIApsb29rcyBsaWtlIHRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhp cy4gU2luY2Ugc3BsaXR0aW5nIHBhcnQgb2YgdGhpcyAKbG9vcCBvdXQgYWxzbyBoZWxwcyBtYWtp bmcgdGhpbmdzIGNsZWFuZXIsIHdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gc3F1YXNoIApwYXRjaCAx OC8yMCBpbnRvIHRoaXMgb25lPwoKPiArCj4gKwkJCQlpZiAoIShpZGVudCAmIEdFTjExX0lOVFJf REFUQV9WQUxJRCkpCj4gKwkJCQkJRFJNX0VSUk9SKCJJTlRSX0lERU5USVRZX1JFRyV1OiV1IHRp bWVkIG91dCFcbiIsCj4gKwkJCQkJCSAgYmFuaywgYml0KTsKCklmIHRoZSBkYXRhIGlzIG5vdCB2 YWxpZCB3ZSBzaG91bGQgcHJvYmFibHkgc2tpcCB3cml0aW5nIGl0IHRvIHRoZSAKaXJxW2Jhbmtd W2JpdF0gZmllbGQgYXMgd2UgbWlnaHQgYmUgd3JpdGluZyBhbiBpbmNvcnJlY3QgdmFsdWUuCgo+ ICsKPiArCQkJCWlycVtiYW5rXVtiaXRdID0gaWRlbnQgJiBHRU4xMV9JTlRSX0VOR0lORV9NQVNL Owo+ICsJCQkJaWYgKCFpcnFbYmFua11bYml0XSkKPiArCQkJCQlEUk1fRVJST1IoIklOVFJfSURF TlRJVFlfUkVHJXU6JXUgYmxhbmshXG4iLAo+ICsJCQkJCQkgIGJhbmssIGJpdCk7CgpBcyBtZW50 aW9uZWQgb24gdGhlIHByZXZpb3VzIHJldmlldywgSSBiZWxpZXZlIGl0IGlzIGFjdHVhbGx5IHBv c3NpYmxlIAp0byBnZXQgYSBibGFuayBpZGVudGl0eSByZWdpc3RlciBkdWUgdG8gZG91YmxlIGJ1 ZmZlcmluZyBvZiBpbnRlcnJ1cHRzIAppZiBhIHNlY29uZCBpbnRlcnJ1cHQgYXJyaXZlcyBiZXR3 ZWVuIHJlYWRpbmcgR1RfSU5UUl9EVyBhbmQgcmVhZGluZyAKR0VOMTFfSU5UUl9JREVOVElUWSwg YXMgYm90aCBpbnRlcnJ1cHRzIHdpbGwgYmUgc2VydmljZWQgb24gdGhlIGZpcnN0IAppdGVyYXRp b24gYnV0IEdUX0lOVFJfRFcgd2lsbCBzdGlsbCByZXBvcnQgdGhlIHNlY29uZCBpbnRlcnJ1cHQg YWZ0ZXIgCmJlaW5nIGNsZWFyZWQgb25jZS4gV2UgY2FuIGp1c3QgZHJvcCB0aGUgZXJyb3IgaGVy ZSBhcyBub3RoaW5nIGJhcyAKc2hvdWxkIGhhcHBlbiBhZnRlcndhcmRzCgo+ICsJCQkJSTkxNV9X UklURV9GVyhHRU4xMV9JTlRSX0lERU5USVRZX1JFRyhiYW5rKSwgaWRlbnQpOwo+ICsJCQl9Cj4g KwkJCUk5MTVfV1JJVEVfRlcoR0VOMTFfR1RfSU5UUl9EVyhiYW5rKSwgZHcpOwo+ICsJCX0KPiAr CX0KPiArCj4gKwlpZiAoaXJxWzBdW0dFTjExX1JDUzBdKSB7Cj4gKwkJZ2VuMTFfY3NfaXJxX2hh bmRsZXIoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLAo+ICsJCQkJICAgICBpcnFbMF1bR0VOMTFfUkNT MF0pOwo+ICsJCXJldCA9IElSUV9IQU5ETEVEOwo+ICsJfQo+ICsKPiArCWlmIChpcnFbMF1bR0VO MTFfQkNTXSkgewo+ICsJCWdlbjExX2NzX2lycV9oYW5kbGVyKGRldl9wcml2LT5lbmdpbmVbQkNT XSwKPiArCQkJCSAgICAgaXJxWzBdW0dFTjExX0JDU10pOwo+ICsJCXJldCA9IElSUV9IQU5ETEVE Owo+ICsJfQo+ICsKPiArCWZvciAoZW5naW5lID0gMDsgZW5naW5lIDwgNDsgZW5naW5lKyspIHsK CkNhbiB3ZSB1c2UgSTkxNV9NQVhfVkNTIGhlcmU/Cgo+ICsJCWlmIChpcnFbMV1bR0VOMTFfVkNT KGVuZ2luZSldKSB7Cj4gKwkJCWdlbjExX2NzX2lycV9oYW5kbGVyKGRldl9wcml2LT5lbmdpbmVb X1ZDUyhlbmdpbmUpXSwKPiArCQkJCQkgICAgIGlycVsxXVtHRU4xMV9WQ1MoZW5naW5lKV0pOwo+ ICsJCQlyZXQgPSBJUlFfSEFORExFRDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZm9yIChlbmdpbmUg PSAwOyBlbmdpbmUgPCAyOyBlbmdpbmUrKykgewoKc2FtZSBhcyBhYm92ZSBidXQgd2l0aCBJOTE1 X01BWF9WRUNTCgpUaGFua3MsCkRhbmllbGUKCj4gKwkJaWYgKGlycVsxXVtHRU4xMV9WRUNTKGVu Z2luZSldKSB7Cj4gKwkJCWdlbjExX2NzX2lycV9oYW5kbGVyKGRldl9wcml2LT5lbmdpbmVbX1ZF Q1MoZW5naW5lKV0sCj4gKwkJCQkJICAgICBpcnFbMV1bR0VOMTFfVkVDUyhlbmdpbmUpXSk7Cj4g KwkJCXJldCA9IElSUV9IQU5ETEVEOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoaXJxWzBdW0dF TjExX0dUUE1dICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpIHsKPiArCQlyZXQgPSBJUlFfSEFO RExFRDsKPiArCQlnZW42X3Jwc19pcnFfaGFuZGxlcihkZXZfcHJpdiwgdG1wKTsKPiArCX0KPiAr Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZ2VuMTFfaXJx X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gYXJnOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiArCXUzMiBtYXN0ZXJfY3RsOwo+ICsJdTMyIGRpc3BfY3RsOwo+ICsJaXJx cmV0dXJuX3QgcmV0Owo+ICsKPiArCWlmICghaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkK PiArCQlyZXR1cm4gSVJRX05PTkU7Cj4gKwo+ICsJbWFzdGVyX2N0bCA9IEk5MTVfUkVBRF9GVyhH RU4xMV9HRlhfTVNUUl9JUlEpOwo+ICsKPiArCW1hc3Rlcl9jdGwgJj0gfkdFTjExX01BU1RFUl9J UlE7Cj4gKwlpZiAoIW1hc3Rlcl9jdGwpCj4gKwkJcmV0dXJuIElSUV9OT05FOwo+ICsKPiArCS8q IERpc2FibGUgaW50ZXJydXB0cy4gKi8KPiArCUk5MTVfV1JJVEVfRlcoR0VOMTFfR0ZYX01TVFJf SVJRLCAwKTsKPiArCj4gKwkvKiBJUlFzIGFyZSBzeW5jZWQgZHVyaW5nIHJ1bnRpbWVfc3VzcGVu ZCwgd2UgZG9uJ3QgcmVxdWlyZSBhIHdha2VyZWYgKi8KPiArCWRpc2FibGVfcnBtX3dha2VyZWZf YXNzZXJ0cyhkZXZfcHJpdik7Cj4gKwo+ICsJLyogRmluZCwgY2xlYXIsIHRoZW4gcHJvY2VzcyBl YWNoIHNvdXJjZSBvZiBpbnRlcnJ1cHQuICovCj4gKwlyZXQgPSBnZW4xMV9ndF9pcnFfaGFuZGxl cihkZXZfcHJpdiwgbWFzdGVyX2N0bCk7Cj4gKwo+ICsJaWYgKG1hc3Rlcl9jdGwgJiBHRU4xMV9E SVNQTEFZX0lSUSkgewo+ICsJCWRpc3BfY3RsID0gSTkxNV9SRUFEX0ZXKEdFTjExX0RJU1BMQVlf SU5UX0NUTCk7Cj4gKwkJcmV0IHw9IGdlbjhfZGVfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGRpc3Bf Y3RsKTsKPiArCX0KPiArCj4gKwkvKiBBY2tub3dsZWRnZSBhbmQgZW5hYmxlIGludGVycnVwdHMu ICovCj4gKwlJOTE1X1dSSVRFX0ZXKEdFTjExX0dGWF9NU1RSX0lSUSwgR0VOMTFfTUFTVEVSX0lS USB8IG1hc3Rlcl9jdGwpOwo+ICsJUE9TVElOR19SRUFEX0ZXKEdFTjExX0dGWF9NU1RSX0lSUSk7 Cj4gKwo+ICsJZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gICAvKioKPiAgICAqIGk5MTVfcmVzZXRfZGV2aWNlIC0gZG8g cHJvY2VzcyBjb250ZXh0IGVycm9yIGhhbmRsaW5nIHdvcmsKPiAgICAqIEBkZXZfcHJpdjogaTkx NSBkZXZpY2UgcHJpdmF0ZQo+IEBAIC0zMTU5LDYgKzMyOTAsNDIgQEAgc3RhdGljIHZvaWQgZ2Vu OF9pcnFfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJaWJ4X2lycV9yZXNldChk ZXZfcHJpdik7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgZ2VuMTFfZ3RfaXJxX3Jlc2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJLyogRGlzYWJsZSBSQ1Ms IEJDUywgVkNTIGFuZCBWRUNTIGNsYXNzIGVuZ2luZXMuICovCj4gKwlJOTE1X1dSSVRFKEdFTjEx X1JFTkRFUl9DT1BZX0lOVFJfRU5BQkxFLCAwKTsKPiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTX1ZF Q1NfSU5UUl9FTkFCTEUsCSAgMCk7Cj4gKwo+ICsJLyogUmVzdG9yZSBtYXNrcyBpcnFzIG9uIFJD UywgQkNTLCBWQ1MgYW5kIFZFQ1MgZW5naW5lcy4gKi8KPiArCUk5MTVfV1JJVEUoR0VOMTFfUkNT MF9SU1ZEX0lOVFJfTUFTSywJfjApOwo+ICsJSTkxNV9XUklURShHRU4xMV9CQ1NfUlNWRF9JTlRS X01BU0ssCX4wKTsKPiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTMF9WQ1MxX0lOVFJfTUFTSywJfjAp Owo+ICsJSTkxNV9XUklURShHRU4xMV9WQ1MyX1ZDUzNfSU5UUl9NQVNLLAl+MCk7Cj4gKwlJOTE1 X1dSSVRFKEdFTjExX1ZFQ1MwX1ZFQ1MxX0lOVFJfTUFTSywJfjApOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBnZW4xMV9pcnFfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CWludCBwaXBlOwo+ICsKPiArCUk5MTVfV1JJVEUoR0VOMTFfR0ZYX01TVFJfSVJRLCAwKTsKPiAr CVBPU1RJTkdfUkVBRChHRU4xMV9HRlhfTVNUUl9JUlEpOwo+ICsKPiArCWdlbjExX2d0X2lycV9y ZXNldChkZXZfcHJpdik7Cj4gKwo+ICsJSTkxNV9XUklURShHRU4xMV9ESVNQTEFZX0lOVF9DVEws IDApOwo+ICsKPiArCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gKwkJaWYgKGludGVs X2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJICAgUE9XRVJfRE9N QUlOX1BJUEUocGlwZSkpKQo+ICsJCQlHRU44X0lSUV9SRVNFVF9ORFgoREVfUElQRSwgcGlwZSk7 Cj4gKwo+ICsJR0VOM19JUlFfUkVTRVQoR0VOOF9ERV9QT1JUXyk7Cj4gKwlHRU4zX0lSUV9SRVNF VChHRU44X0RFX01JU0NfKTsKPiArCUdFTjNfSVJRX1JFU0VUKEdFTjhfUENVXyk7Cj4gK30KPiAr Cj4gICB2b2lkIGdlbjhfaXJxX3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCSAgICAgdTggcGlwZV9tYXNrKQo+ICAgewo+IEBA IC0zNjU2LDYgKzM4MjMsNDEgQEAgc3RhdGljIGludCBnZW44X2lycV9wb3N0aW5zdGFsbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2 b2lkIGdlbjExX2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3sKPiArCWNvbnN0IHUzMiBpcnFzID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBU IHwgR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUOwo+ICsKPiArCUJVSUxEX0JVR19PTihpcnFz ICYgMHhmZmZmMDAwMCk7Cj4gKwo+ICsJLyogRW5hYmxlIFJDUywgQkNTLCBWQ1MgYW5kIFZFQ1Mg Y2xhc3MgaW50ZXJydXB0cy4gKi8KPiArCUk5MTVfV1JJVEUoR0VOMTFfUkVOREVSX0NPUFlfSU5U Ul9FTkFCTEUsIGlycXMgPDwgMTYgfCBpcnFzKTsKPiArCUk5MTVfV1JJVEUoR0VOMTFfVkNTX1ZF Q1NfSU5UUl9FTkFCTEUsCSAgaXJxcyA8PCAxNiB8IGlycXMpOwo+ICsKPiArCS8qIFVubWFzayBp cnFzIG9uIFJDUywgQkNTLCBWQ1MgYW5kIFZFQ1MgZW5naW5lcy4gKi8KPiArCUk5MTVfV1JJVEUo R0VOMTFfUkNTMF9SU1ZEX0lOVFJfTUFTSywJfihpcnFzIDw8IDE2KSk7Cj4gKwlJOTE1X1dSSVRF KEdFTjExX0JDU19SU1ZEX0lOVFJfTUFTSywJfihpcnFzIDw8IDE2KSk7Cj4gKwlJOTE1X1dSSVRF KEdFTjExX1ZDUzBfVkNTMV9JTlRSX01BU0ssCX4oaXJxcyB8IGlycXMgPDwgMTYpKTsKPiArCUk5 MTVfV1JJVEUoR0VOMTFfVkNTMl9WQ1MzX0lOVFJfTUFTSywJfihpcnFzIHwgaXJxcyA8PCAxNikp Owo+ICsJSTkxNV9XUklURShHRU4xMV9WRUNTMF9WRUNTMV9JTlRSX01BU0ssCX4oaXJxcyB8IGly cXMgPDwgMTYpKTsKPiArCj4gKwlkZXZfcHJpdi0+cG1faW1yID0gMHhmZmZmZmZmZjsgLyogVE9E TyAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdlbjExX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiArCWdlbjExX2d0X2lycV9wb3N0aW5zdGFsbChk ZXZfcHJpdik7Cj4gKwlnZW44X2RlX2lycV9wb3N0aW5zdGFsbChkZXZfcHJpdik7Cj4gKwo+ICsJ STkxNV9XUklURShHRU4xMV9ESVNQTEFZX0lOVF9DVEwsIEdFTjExX0RJU1BMQVlfSVJRX0VOQUJM RSk7Cj4gKwo+ICsJSTkxNV9XUklURShHRU4xMV9HRlhfTVNUUl9JUlEsIEdFTjExX01BU1RFUl9J UlEpOwo+ICsJUE9TVElOR19SRUFEKEdFTjExX0dGWF9NU1RSX0lSUSk7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50IGNoZXJyeXZpZXdfaXJxX3Bvc3RpbnN0YWxsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IEBAIC00MTA0LDYgKzQzMDYsMTQgQEAgdm9pZCBp bnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWRl di0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gaTk2NV9lbmFibGVfdmJsYW5rOwo+ICAgCQlkZXYt PmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpOTY1X2Rpc2FibGVfdmJsYW5rOwo+ICAgCQlkZXZf cHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOwo+ICsJfSBl bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gKwkJZGV2LT5kcml2ZXItPmly cV9oYW5kbGVyID0gZ2VuMTFfaXJxX2hhbmRsZXI7Cj4gKwkJZGV2LT5kcml2ZXItPmlycV9wcmVp bnN0YWxsID0gZ2VuMTFfaXJxX3Jlc2V0Owo+ICsJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3Rh bGwgPSBnZW4xMV9pcnFfcG9zdGluc3RhbGw7Cj4gKwkJZGV2LT5kcml2ZXItPmlycV91bmluc3Rh bGwgPSBnZW4xMV9pcnFfcmVzZXQ7Cj4gKwkJZGV2LT5kcml2ZXItPmVuYWJsZV92YmxhbmsgPSBn ZW44X2VuYWJsZV92Ymxhbms7Cj4gKwkJZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rID0gZ2Vu OF9kaXNhYmxlX3ZibGFuazsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0g c3B0X2hwZF9pcnFfc2V0dXA7Cj4gICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpIHsKPiAgIAkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gZ2VuOF9pcnFfaGFuZGxlcjsK PiAgIAkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuOF9pcnFfcmVzZXQ7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggZDg4ZjEwN2IwZDUwLi4wODdmOTgxNDYxZTcgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtODAyNyw3ICs4MDI3LDEwIEBAIHZvaWQg aW50ZWxfc2FuaXRpemVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAlkZXZfcHJpdi0+Z3RfcG0ucmM2LmVuYWJsZWQgPSB0cnVlOyAvKiBmb3JjZSBS QzYgZGlzYWJsaW5nICovCj4gICAJaW50ZWxfZGlzYWJsZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYp Owo+ICAgCj4gLQlnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gKwkJZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhk ZXZfcHJpdik7Cj4gKwllbHNlCj4gKwkJV0FSTl9PTl9PTkNFKDEpOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZGlzYWJsZV9sbGNfcHN0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+IEBAIC04MTQwLDYgKzgxNDMsOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJY2hl cnJ5dmlld19lbmFibGVfcnBzKGRldl9wcml2KTsKPiAgIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKSB7Cj4gICAJCXZhbGxleXZpZXdfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4g Kwl9IGVsc2UgaWYgKFdBUk5fT05fT05DRShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSkgewo+ ICsJCS8qIFRPRE8gKi8KPiAgIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkg ewo+ICAgCQlnZW45X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+ICAgCX0gZWxzZSBpZiAoSVNfQlJP QURXRUxMKGRldl9wcml2KSkgewo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK