From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: [PATCH 05/19] drm/i915/icl: Interrupt handling Date: Wed, 14 Feb 2018 16:12:13 +0200 Message-ID: <20180214141213.24140-1-mika.kuoppala@linux.intel.com> References: <20180213163738.9055-6-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 A2F796E3F1 for ; Wed, 14 Feb 2018 14:12:36 +0000 (UTC) In-Reply-To: <20180213163738.9055-6-mika.kuoppala@linux.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 Cc: Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCnYyOiBSZWJh c2UuCgp2MzoKICAqIFJlbW92ZSBEUEYsIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBTS0wrLgog ICogRml4IC1pbnRlcm5hbCByZWJhc2Ugd3J0LiBleGVjbGlzdHMgaW50ZXJydXB0IGhhbmRsaW5n LgoKdjQ6IFJlYmFzZS4KCnY1OgogICogVXBkYXRlZCBmb3IgUE9SIGNoYW5nZXMuIChEYW5pZWxl IENlcmFvbG8gU3B1cmlvKQogICogTWVyZ2VkIHdpdGggaXJxIGhhbmRsaW5nIGZpeGVzIGJ5IERh bmllbGUgQ2VyYW9sbyBTcHVyaW86CiAgICAgICogU2ltcGxpZnkgdGhlIGNvZGUgYnkgdXNpbmcg Z2VuOF9jc19pcnFfaGFuZGxlci4KICAgICAgKiBGaXggaW50ZXJydXB0IGhhbmRsaW5nIGZvciB0 aGUgdXBzdHJlYW0ga2VybmVsLgoKdjY6CiAgKiBSZW1vdmUgZWFybHkgYnJpbmd1cCBkZWJ1ZyBt ZXNzYWdlcyAoVHZydGtvKQogICogQWRkIE5CIGFib3V0IGFyYml0cmFyeSBzcGluIHdhaXQgdGlt ZW91dCAoVHZydGtvKQoKdjcgKGZyb20gUGF1bG8pOgogICogRG9uJ3QgdHJ5IHRvIHdyaXRlIFJP IGJpdHMgdG8gcmVnaXN0ZXJzLgogICogRG9uJ3QgY2hlY2sgZm9yIFBDSCB0eXBlcyB0aGF0IGRv bid0IGV4aXN0LiBQQ0ggaW50ZXJydXB0cyBhcmUgbm90CiAgICBoZXJlIHlldC4KCnY5OgogICog c3F1YXNoZWQgaW4gc2VsZWN0b3IgYW5kIHNoYXJlZCByZWdpc3RlciBoYW5kbGluZyAoRGFuaWVs ZSkKICAqIHNraXAgd3JpdGluZyBvZiBpcnEgaWYgZGF0YSBpcyBub3QgdmFsaWQgKERhbmllbGUp CiAgKiB1c2UgdGltZV9hZnRlcjMyIChDaHJpcykKICAqIHVzZSBJOTE1X01BWF9WQ1MgYW5kIEk5 MTVfTUFYX1ZFQ1MgKERhbmllbGUpCiAgKiByZW1vdmUgZmFrZSBwbSBpbnRlcnJ1cHQgaGFuZGxp bmcgZm9yIGxhdGVyIHBhdGNoIChNaWthKQoKQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+CkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFv bG9zcHVyaW9AaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIHwgMjEyICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg fCAgIDcgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjE4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBiODg2YmQ0NTlhY2MuLjlhMmQxMmM4YzQ0 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC00MDgsNiArNDA4LDM3IEBAIHZvaWQgZ2Vu Nl9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogfQogCitzdGF0aWMgaW50 IGdlbjExX3NlcnZpY2Vfc2hhcmVkX2lpcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCQkJICAgIGNvbnN0IHVuc2lnbmVkIGludCBiYW5rLAorCQkJCSAgICBjb25zdCB1bnNp Z25lZCBpbnQgYml0KQoreworCXU2NCB3YWl0X2VuZDsKKwl1MzIgaWRlbnQ7CisJaW50IGlycTsK KworCUk5MTVfV1JJVEVfRlcoR0VOMTFfSUlSX1JFR19TRUxFQ1RPUihiYW5rKSwgQklUKGJpdCkp OworCS8qCisJICogTkI6IFNwZWNzIGRvIG5vdCBzcGVjaWZ5IGhvdyBsb25nIHRvIHNwaW4gd2Fp dC4KKwkgKiBUYWtpbmcgMTAwdXMgYXMgYW4gZWR1Y2F0ZWQgZ3Vlc3MKKwkgKi8KKwl3YWl0X2Vu ZCA9IChsb2NhbF9jbG9jaygpID4+IDEwKSArIDEwMDsKKwlkbyB7CisJCWlkZW50ID0gSTkxNV9S RUFEX0ZXKEdFTjExX0lOVFJfSURFTlRJVFlfUkVHKGJhbmspKTsKKwl9IHdoaWxlICghKGlkZW50 ICYgR0VOMTFfSU5UUl9EQVRBX1ZBTElEKSAmJgorCQkgIXRpbWVfYWZ0ZXIzMihsb2NhbF9jbG9j aygpID4+IDEwLCB3YWl0X2VuZCkpOworCisJaWYgKCEoaWRlbnQgJiBHRU4xMV9JTlRSX0RBVEFf VkFMSUQpKSB7CisJCURSTV9FUlJPUigiSU5UUl9JREVOVElUWV9SRUcldToldSB0aW1lZCBvdXQh XG4iLCBiYW5rLCBiaXQpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwlpcnEgPSBpZGVu dCAmIEdFTjExX0lOVFJfRU5HSU5FX01BU0s7CisKKwlJOTE1X1dSSVRFX0ZXKEdFTjExX0lOVFJf SURFTlRJVFlfUkVHKGJhbmspLCBpZGVudCk7CisKKwlyZXR1cm4gaXJxOworfQorCiB2b2lkIGdl bjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIHsKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsKQEAg LTQxNSw2ICs0NDYsOSBAQCB2b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoUkVBRF9PTkNFKHJwcy0+aW50ZXJydXB0 c19lbmFibGVkKSkKIAkJcmV0dXJuOwogCisJaWYgKFdBUk5fT05fT05DRShJU19HRU4xMShkZXZf cHJpdikpKQorCQlyZXR1cm47CisKIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2sp OwogCVdBUk5fT05fT05DRShycHMtPnBtX2lpcik7CiAJV0FSTl9PTl9PTkNFKEk5MTVfUkVBRChn ZW42X3BtX2lpcihkZXZfcHJpdikpICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwpAQCAtNDMx LDYgKzQ2NSw5IEBAIHZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIVJFQURfT05DRShycHMtPmludGVycnVwdHNf ZW5hYmxlZCkpCiAJCXJldHVybjsKIAorCWlmIChXQVJOX09OX09OQ0UoSVNfR0VOMTEoZGV2X3By aXYpKSkKKwkJcmV0dXJuOworCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsK IAlycHMtPmludGVycnVwdHNfZW5hYmxlZCA9IGZhbHNlOwogCkBAIC0yNzQ2LDYgKzI3ODMsMTAy IEBAIHN0YXRpYyB2b2lkIF9fZmluaV93ZWRnZShzdHJ1Y3Qgd2VkZ2VfbWUgKncpCiAJICAgICAo VyktPmk5MTU7CQkJCQkJCVwKIAkgICAgIF9fZmluaV93ZWRnZSgoVykpKQogCitzdGF0aWMgX19h bHdheXNfaW5saW5lIHZvaWQKK2dlbjExX2NzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgdTMyIGlpcikKK3sKKwlnZW44X2NzX2lycV9oYW5kbGVyKGVuZ2luZSwg aWlyLCAwKTsKK30KKworc3RhdGljIHZvaWQKK2dlbjExX2d0X2lycV9oYW5kbGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgY29uc3QgdTMyIG1hc3Rlcl9jdGwpCit7CisJdTE2 IGlycVsyXVszMl07CisJdW5zaWduZWQgaW50IGJhbmssIGVuZ2luZTsKKworCW1lbXNldChpcnEs IDAsIHNpemVvZihpcnEpKTsKKworCWZvciAoYmFuayA9IDA7IGJhbmsgPCAyOyBiYW5rKyspIHsK KwkJdW5zaWduZWQgbG9uZyB0bXA7CisJCXVuc2lnbmVkIGludCBiaXQ7CisJCXUzMiBkdzsKKwkJ aW50IHJldDsKKworCQlpZiAoIShtYXN0ZXJfY3RsICYgR0VOMTFfR1RfRFdfSVJRKGJhbmspKSkK KwkJCWNvbnRpbnVlOworCisJCWR3ID0gSTkxNV9SRUFEX0ZXKEdFTjExX0dUX0lOVFJfRFcoYmFu aykpOworCQlpZiAoIWR3KQorCQkJRFJNX0VSUk9SKCJHVF9JTlRSX0RXJXUgYmxhbmshXG4iLCBi YW5rKTsKKworCQl0bXAgPSBkdzsKKwkJZm9yX2VhY2hfc2V0X2JpdChiaXQsICZ0bXAsIDMyKSB7 CisJCQlyZXQgPSBnZW4xMV9zZXJ2aWNlX3NoYXJlZF9paXIoZGV2X3ByaXYsIGJhbmssIGJpdCk7 CisJCQlpZiAodW5saWtlbHkocmV0IDwgMCkpCisJCQkJY29udGludWU7CisKKwkJCWlycVtiYW5r XVtiaXRdID0gcmV0OworCQl9CisKKwkJSTkxNV9XUklURV9GVyhHRU4xMV9HVF9JTlRSX0RXKGJh bmspLCBkdyk7CisJfQorCisJaWYgKGlycVswXVtHRU4xMV9SQ1MwXSkKKwkJZ2VuMTFfY3NfaXJx X2hhbmRsZXIoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLAorCQkJCSAgICAgaXJxWzBdW0dFTjExX1JD UzBdKTsKKworCWlmIChpcnFbMF1bR0VOMTFfQkNTXSkKKwkJZ2VuMTFfY3NfaXJxX2hhbmRsZXIo ZGV2X3ByaXYtPmVuZ2luZVtCQ1NdLAorCQkJCSAgICAgaXJxWzBdW0dFTjExX0JDU10pOworCisJ Zm9yIChlbmdpbmUgPSAwOyBlbmdpbmUgPCBJOTE1X01BWF9WQ1M7IGVuZ2luZSsrKQorCQlpZiAo aXJxWzFdW0dFTjExX1ZDUyhlbmdpbmUpXSkKKwkJCWdlbjExX2NzX2lycV9oYW5kbGVyKGRldl9w cml2LT5lbmdpbmVbX1ZDUyhlbmdpbmUpXSwKKwkJCQkJICAgICBpcnFbMV1bR0VOMTFfVkNTKGVu Z2luZSldKTsKKworCWZvciAoZW5naW5lID0gMDsgZW5naW5lIDwgSTkxNV9NQVhfVkVDUzsgZW5n aW5lKyspCisJCWlmIChpcnFbMV1bR0VOMTFfVkVDUyhlbmdpbmUpXSkKKwkJCWdlbjExX2NzX2ly cV9oYW5kbGVyKGRldl9wcml2LT5lbmdpbmVbX1ZFQ1MoZW5naW5lKV0sCisJCQkJCSAgICAgaXJx WzFdW0dFTjExX1ZFQ1MoZW5naW5lKV0pOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgZ2VuMTFf aXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBhcmc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwl1MzIgbWFzdGVyX2N0bDsKKwl1MzIgZGlzcF9jdGw7CisKKwlpZiAoIWludGVs X2lycXNfZW5hYmxlZChkZXZfcHJpdikpCisJCXJldHVybiBJUlFfTk9ORTsKKworCW1hc3Rlcl9j dGwgPSBJOTE1X1JFQURfRlcoR0VOMTFfR0ZYX01TVFJfSVJRKTsKKwltYXN0ZXJfY3RsICY9IH5H RU4xMV9NQVNURVJfSVJROworCWlmICghbWFzdGVyX2N0bCkKKwkJcmV0dXJuIElSUV9OT05FOwor CisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzLiAqLworCUk5MTVfV1JJVEVfRlcoR0VOMTFfR0ZYX01T VFJfSVJRLCAwKTsKKworCS8qIElSUXMgYXJlIHN5bmNlZCBkdXJpbmcgcnVudGltZV9zdXNwZW5k LCB3ZSBkb24ndCByZXF1aXJlIGEgd2FrZXJlZiAqLworCWRpc2FibGVfcnBtX3dha2VyZWZfYXNz ZXJ0cyhkZXZfcHJpdik7CisKKwkvKiBGaW5kLCBjbGVhciwgdGhlbiBwcm9jZXNzIGVhY2ggc291 cmNlIG9mIGludGVycnVwdC4gKi8KKwlnZW4xMV9ndF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgbWFz dGVyX2N0bCk7CisKKwlpZiAobWFzdGVyX2N0bCAmIEdFTjExX0RJU1BMQVlfSVJRKSB7CisJCWRp c3BfY3RsID0gSTkxNV9SRUFEX0ZXKEdFTjExX0RJU1BMQVlfSU5UX0NUTCk7CisJCWdlbjhfZGVf aXJxX2hhbmRsZXIoZGV2X3ByaXYsIGRpc3BfY3RsKTsKKwl9CisKKwkvKiBBY2tub3dsZWRnZSBh bmQgZW5hYmxlIGludGVycnVwdHMuICovCisJSTkxNV9XUklURV9GVyhHRU4xMV9HRlhfTVNUUl9J UlEsIEdFTjExX01BU1RFUl9JUlEgfCBtYXN0ZXJfY3RsKTsKKwlQT1NUSU5HX1JFQURfRlcoR0VO MTFfR0ZYX01TVFJfSVJRKTsKKworCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2 KTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKwogLyoqCiAgKiBpOTE1X3Jlc2V0X2Rldmlj ZSAtIGRvIHByb2Nlc3MgY29udGV4dCBlcnJvciBoYW5kbGluZyB3b3JrCiAgKiBAZGV2X3ByaXY6 IGk5MTUgZGV2aWNlIHByaXZhdGUKQEAgLTMxNTksNiArMzI5Miw0MiBAQCBzdGF0aWMgdm9pZCBn ZW44X2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpYnhfaXJxX3Jlc2V0KGRl dl9wcml2KTsKIH0KIAorc3RhdGljIHZvaWQgZ2VuMTFfZ3RfaXJxX3Jlc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwkvKiBEaXNhYmxlIFJDUywgQkNTLCBWQ1MgYW5k IFZFQ1MgY2xhc3MgZW5naW5lcy4gKi8KKwlJOTE1X1dSSVRFKEdFTjExX1JFTkRFUl9DT1BZX0lO VFJfRU5BQkxFLCAwKTsKKwlJOTE1X1dSSVRFKEdFTjExX1ZDU19WRUNTX0lOVFJfRU5BQkxFLAkg IDApOworCisJLyogUmVzdG9yZSBtYXNrcyBpcnFzIG9uIFJDUywgQkNTLCBWQ1MgYW5kIFZFQ1Mg ZW5naW5lcy4gKi8KKwlJOTE1X1dSSVRFKEdFTjExX1JDUzBfUlNWRF9JTlRSX01BU0ssCX4wKTsK KwlJOTE1X1dSSVRFKEdFTjExX0JDU19SU1ZEX0lOVFJfTUFTSywJfjApOworCUk5MTVfV1JJVEUo R0VOMTFfVkNTMF9WQ1MxX0lOVFJfTUFTSywJfjApOworCUk5MTVfV1JJVEUoR0VOMTFfVkNTMl9W Q1MzX0lOVFJfTUFTSywJfjApOworCUk5MTVfV1JJVEUoR0VOMTFfVkVDUzBfVkVDUzFfSU5UUl9N QVNLLAl+MCk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbjExX2lycV9yZXNldChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJaW50IHBpcGU7CisKKwlJOTE1X1dSSVRFKEdFTjExX0dGWF9NU1RSX0lS USwgMCk7CisJUE9TVElOR19SRUFEKEdFTjExX0dGWF9NU1RSX0lSUSk7CisKKwlnZW4xMV9ndF9p cnFfcmVzZXQoZGV2X3ByaXYpOworCisJSTkxNV9XUklURShHRU4xMV9ESVNQTEFZX0lOVF9DVEws IDApOworCisJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKKwkJaWYgKGludGVsX2Rpc3Bs YXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJpdiwKKwkJCQkJCSAgIFBPV0VSX0RPTUFJTl9QSVBF KHBpcGUpKSkKKwkJCUdFTjhfSVJRX1JFU0VUX05EWChERV9QSVBFLCBwaXBlKTsKKworCUdFTjNf SVJRX1JFU0VUKEdFTjhfREVfUE9SVF8pOworCUdFTjNfSVJRX1JFU0VUKEdFTjhfREVfTUlTQ18p OworCUdFTjNfSVJRX1JFU0VUKEdFTjhfUENVXyk7Cit9CisKIHZvaWQgZ2VuOF9pcnFfcG93ZXJf d2VsbF9wb3N0X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJ ICAgICB1OCBwaXBlX21hc2spCiB7CkBAIC0zNjU2LDYgKzM4MjUsNDEgQEAgc3RhdGljIGludCBn ZW44X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAwOwog fQogCitzdGF0aWMgdm9pZCBnZW4xMV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCWNvbnN0IHUzMiBpcnFzID0gR1RfUkVOREVSX1VTRVJf SU5URVJSVVBUIHwgR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUOworCisJQlVJTERfQlVHX09O KGlycXMgJiAweGZmZmYwMDAwKTsKKworCS8qIEVuYWJsZSBSQ1MsIEJDUywgVkNTIGFuZCBWRUNT IGNsYXNzIGludGVycnVwdHMuICovCisJSTkxNV9XUklURShHRU4xMV9SRU5ERVJfQ09QWV9JTlRS X0VOQUJMRSwgaXJxcyA8PCAxNiB8IGlycXMpOworCUk5MTVfV1JJVEUoR0VOMTFfVkNTX1ZFQ1Nf SU5UUl9FTkFCTEUsCSAgaXJxcyA8PCAxNiB8IGlycXMpOworCisJLyogVW5tYXNrIGlycXMgb24g UkNTLCBCQ1MsIFZDUyBhbmQgVkVDUyBlbmdpbmVzLiAqLworCUk5MTVfV1JJVEUoR0VOMTFfUkNT MF9SU1ZEX0lOVFJfTUFTSywJfihpcnFzIDw8IDE2KSk7CisJSTkxNV9XUklURShHRU4xMV9CQ1Nf UlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PCAxNikpOworCUk5MTVfV1JJVEUoR0VOMTFfVkNTMF9W Q1MxX0lOVFJfTUFTSywJfihpcnFzIHwgaXJxcyA8PCAxNikpOworCUk5MTVfV1JJVEUoR0VOMTFf VkNTMl9WQ1MzX0lOVFJfTUFTSywJfihpcnFzIHwgaXJxcyA8PCAxNikpOworCUk5MTVfV1JJVEUo R0VOMTFfVkVDUzBfVkVDUzFfSU5UUl9NQVNLLAl+KGlycXMgfCBpcnFzIDw8IDE2KSk7CisKKwlk ZXZfcHJpdi0+cG1faW1yID0gMHhmZmZmZmZmZjsgLyogVE9ETyAqLworfQorCitzdGF0aWMgaW50 IGdlbjExX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlnZW4x MV9ndF9pcnFfcG9zdGluc3RhbGwoZGV2X3ByaXYpOworCWdlbjhfZGVfaXJxX3Bvc3RpbnN0YWxs KGRldl9wcml2KTsKKworCUk5MTVfV1JJVEUoR0VOMTFfRElTUExBWV9JTlRfQ1RMLCBHRU4xMV9E SVNQTEFZX0lSUV9FTkFCTEUpOworCisJSTkxNV9XUklURShHRU4xMV9HRlhfTVNUUl9JUlEsIEdF TjExX01BU1RFUl9JUlEpOworCVBPU1RJTkdfUkVBRChHRU4xMV9HRlhfTVNUUl9JUlEpOworCisJ cmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgY2hlcnJ5dmlld19pcnFfcG9zdGluc3RhbGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CkBAIC00MTA0LDYgKzQzMDgsMTQgQEAgdm9pZCBpbnRlbF9pcnFf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldi0+ZHJpdmVyLT5l bmFibGVfdmJsYW5rID0gaTk2NV9lbmFibGVfdmJsYW5rOwogCQlkZXYtPmRyaXZlci0+ZGlzYWJs ZV92YmxhbmsgPSBpOTY1X2Rpc2FibGVfdmJsYW5rOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRf aXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMSkgeworCQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBnZW4xMV9pcnFf aGFuZGxlcjsKKwkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuMTFfaXJxX3Jlc2V0 OworCQlkZXYtPmRyaXZlci0+aXJxX3Bvc3RpbnN0YWxsID0gZ2VuMTFfaXJxX3Bvc3RpbnN0YWxs OworCQlkZXYtPmRyaXZlci0+aXJxX3VuaW5zdGFsbCA9IGdlbjExX2lycV9yZXNldDsKKwkJZGV2 LT5kcml2ZXItPmVuYWJsZV92YmxhbmsgPSBnZW44X2VuYWJsZV92Ymxhbms7CisJCWRldi0+ZHJp dmVyLT5kaXNhYmxlX3ZibGFuayA9IGdlbjhfZGlzYWJsZV92Ymxhbms7CisJCWRldl9wcml2LT5k aXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBzcHRfaHBkX2lycV9zZXR1cDsKIAl9IGVsc2UgaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewogCQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBn ZW44X2lycV9oYW5kbGVyOwogCQlkZXYtPmRyaXZlci0+aXJxX3ByZWluc3RhbGwgPSBnZW44X2ly cV9yZXNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDk4ZDMzNmExZDg4NS4uZTIwN2Mz YTJlZWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTgwMjcsNyArODAyNywxMCBAQCB2 b2lkIGludGVsX3Nhbml0aXplX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJZGV2X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkID0gdHJ1ZTsgLyogZm9yY2Ug UkM2IGRpc2FibGluZyAqLwogCWludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsK IAotCWdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOworCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgMTEpCisJCWdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOwor CWVsc2UKKwkJV0FSTl9PTl9PTkNFKDEpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxf ZGlzYWJsZV9sbGNfcHN0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtODE0 MCw2ICs4MTQzLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWNoZXJyeXZpZXdfZW5hYmxlX3JwcyhkZXZfcHJpdik7 CiAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewogCQl2YWxsZXl2aWV3X2Vu YWJsZV9ycHMoZGV2X3ByaXYpOworCX0gZWxzZSBpZiAoV0FSTl9PTl9PTkNFKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEpKSB7CisJCS8qIFRPRE8gKi8KIAl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgewogCQlnZW45X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwogCX0gZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK