From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v9 13/21] drm/i915/guc: Provide register list to be saved/restored during engine reset Date: Thu, 15 Jun 2017 13:18:20 -0700 Message-ID: <20170615201828.23144-14-michel.thierry@intel.com> References: <20170615201828.23144-1-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D3B86E80F for ; Thu, 15 Jun 2017 20:18:32 +0000 (UTC) In-Reply-To: <20170615201828.23144-1-michel.thierry@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 R3VDIGV4cGVjdHMgYSBsaXN0IG9mIHJlZ2lzdGVycyBmcm9tIHRoZSBkcml2ZXIgd2hpY2ggYXJl IHNhdmVkL3Jlc3RvcmVkCmR1cmluZyBlbmdpbmUgcmVzZXQuIFRoZSB0eXBlIG9mIHZhbHVlIHRv IGJlIHNhdmVkIGlzIGNvbnRyb2xsZWQgYnkKZmxhZ3MuIFdlIHByb3ZpZGUgYSBtaW5pbWFsIHNl dCBvZiByZWdpc3RlcnMgdGhhdCB3ZSB3YW50IEd1QyB0byBzYXZlIGFuZApyZXN0b3JlLiBUaGlz IGlzIG5vdCBhbiBpc3N1ZSBpbiBjYXNlIG9mIGVuZ2luZSByZXNldCBhcyBkcml2ZXIgaW5pdGlh bGl6ZXMKbW9zdCBvZiB0aGVtIGZvbGxvd2luZyBhbiBlbmdpbmUgcmVzZXQsIGJ1dCBpbiBjYXNl IG9mIG1lZGlhIHJlc2V0IChha2EKd2F0Y2hkb2cgcmVzZXQpIHdoaWNoIGlzIGNvbXBsZXRlbHkg aW50ZXJuYWwgdG8gR3VDIChpbmNsdWRpbmcgcmVzdWJtaXNzaW9uCm9mIGh1bmcgd29ya2xvYWQp LCBpdCBpcyBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0aGlzIGxpc3QsIG90aGVyd2lzZSBHdUMgd29u J3QKYmUgYWJsZSB0byBzY2hlZHVsZSBmdXJ0aGVyIHdvcmtsb2FkcyBhZnRlciBhIHJlc2V0LiBU aGlzIGlzIHRoZSBtaW5pbWFsCnNldCBvZiByZWdpc3RlcnMgaWRlbnRpZmllZCBmb3IgdGhpbmdz IHRvIHdvcmsgYXMgZXhwZWN0ZWQgYnV0IGlmIHdlIHNlZQphbnkgbmV3IGlzc3VlcywgdGhpcyBy ZWdpc3RlciBsaXN0IGNhbiBiZSBleHBhbmRlZC4KCkluIG9yZGVyIHRvIG5vdCBsb29zZSBhbnkg ZXhpc3Rpbmcgd29ya2Fyb3VuZHMsIHdlIGhhdmUgdG8gbGV0IEd1QyBrbm93CnRoZSByZWdpc3Rl cnMgYW5kIGl0cyB2YWx1ZXMuIFRoZXNlIHdpbGwgYmUgcmVhcHBsaWVkIGFmdGVyIHRoZSByZXNl dC4KTm90ZSB0aGF0IHdlIGNhbid0IGp1c3QgcmVhZCB0aGUgY3VycmVudCB2YWx1ZSBiZWNhdXNl IG1vc3Qgb2YgdGhlc2UKcmVnaXN0ZXJzIGFyZSBtYXNrZWQgKHNvIHdlIGhhdmUgYSB3b3JrYXJv dW5kIGZvciBhIHdvcmthcm91bmQgZm9yIGEKd29ya2Fyb3VuZCkuCgp2MjogUkVHU0VUX01BU0tF RCBpcyB0b28gZGlmZmljdWx0IGZvciBHdUMsIHVzZSBSRUdTRVRfU0FWRV9ERUZBVUxUX1ZBTFVF CmFuZCBjdXJyZW50IHZhbHVlIGZyb20gUklOR19NT0RFIHJlZyBpbnN0ZWFkOyBubyBuZWVkIHRv IHByZXNlcnZlCmhlYWQvdGFpbCBlaXRoZXIsIGJlIGV4dHJhIHBhcmFub2lkIGFuZCBzYXZlIHdo aXRlbGlzdGVkIHJlZ2lzdGVycyAoRGFuaWVsZSkuCgp2MzogV29ya2Fyb3VuZHMgYWRkZWQgb25s eSBvbmNlIGR1cmluZyBfaW5pdF93b3JrYXJvdW5kcyBhbHNvIGhhdmUgdG8KYmVlbiByZXN0b3Jl ZCwgb3Igd2UgcmlzayBsb29zaW5nIHRoZW0gYWZ0ZXIgaW50ZXJuYWwgR3VDIHJlc2V0CihEYW5p ZWxlKS4KCnY0OiBSZW5hbWUgbWFjcm8gdXNlZCB0byBrZWVwIHRyYWNrIHRoZSB3b3JrYXJvdW5k IHJlZ2lzdGVycyB3ZSB3aWxsCmhhdmUgdG8gcmVzdG9yZSBhZnRlciByZXNldCAocy9JOTE1X0dV Q19SRUdfV1JJVEUvV0FfUkVHX1dSX0dVQ19SRVNUT1JFKS4KCnY1OiBPbmx5IGFzayBndWMgdG8g cmVhcHBseSB3b3JrYXJvdW5kcyBpbiBjYXNlIG9mIHJlbmRlciByZXNldCAoRGFuaWVsZSkuCgpD YzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAzICsrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCA3MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jICAgICB8IDY1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2Vk LCAxMTYgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggNmU5OGFiNTNmNTVlLi5mNjhjZmRmNjQwZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtMTg3Myw3ICsxODczLDEwIEBAIHN0cnVjdCBpOTE1X3dhX3JlZyB7CiAKIHN0cnVj dCBpOTE1X3dvcmthcm91bmRzIHsKIAlzdHJ1Y3QgaTkxNV93YV9yZWcgcmVnW0k5MTVfTUFYX1dB X1JFR1NdOworCS8qIGxpc3Qgb2YgcmVnaXN0ZXJzIChhbmQgdGhlaXIgdmFsdWVzKSB0aGF0IEd1 QyB3aWxsIGhhdmUgdG8gcmVzdG9yZSAqLworCXN0cnVjdCBpOTE1X3dhX3JlZyBndWNfcmVnW0dV Q19SRUdTRVRfTUFYX1JFR0lTVEVSU107CiAJdTMyIGNvdW50OworCXUzMiBndWNfY291bnQ7CiAJ dTMyIGh3X3doaXRlbGlzdF9jb3VudFtJOTE1X05VTV9FTkdJTkVTXTsKIH07CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA0OTEzZWM5OTFmNGQuLjJi YjE4ZDI0ZWQ0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u YwpAQCAtMTAxOCw2ICsxMDE4LDI0IEBAIHN0YXRpYyB2b2lkIGd1Y19wb2xpY2llc19pbml0KHN0 cnVjdCBndWNfcG9saWNpZXMgKnBvbGljaWVzKQogCXBvbGljaWVzLT5pc192YWxpZCA9IDE7CiB9 CiAKKy8qCisgKiBJbiB0aGlzIG1hY3JvIGl0IGlzIGhpZ2hseSB1bmxpa2VseSB0byBleGNlZWQg bWF4IHZhbHVlIGJ1dCBldmVuIGlmIHdlIGRpZAorICogaXQgaXMgbm90IGFuIGVycm9yIHNvIGp1 c3QgdGhyb3cgYSB3YXJuaW5nIGFuZCBjb250aW51ZS4gT25seSBzaWRlIGVmZmVjdAorICogaW4g Y29udGludWluZyBmdXJ0aGVyIG1lYW5zIHNvbWUgcmVnaXN0ZXJzIHdvbid0IGJlIGFkZGVkIHRv IHNhdmUvcmVzdG9yZQorICogbGlzdC4KKyAqLworI2RlZmluZSBHVUNfQUREX01NSU9fUkVHX0FE Uyhub2RlLCByZWdfYWRkciwgX2ZsYWdzLCBkZWZ2YWx1ZSkJCVwKKwlkbyB7CQkJCQkJCQlcCisJ CXUzMiBfX2NvdW50ID0gbm9kZS0+bnVtYmVyX29mX3JlZ2lzdGVyczsJCVwKKwkJaWYgKFdBUk5f T04oX19jb3VudCA+PSBHVUNfUkVHU0VUX01BWF9SRUdJU1RFUlMpKQlcCisJCQljb250aW51ZTsJ CQkJCVwKKwkJbm9kZS0+cmVnaXN0ZXJzW19fY291bnRdLm9mZnNldCA9IHJlZ19hZGRyLnJlZzsJ CVwKKwkJbm9kZS0+cmVnaXN0ZXJzW19fY291bnRdLmZsYWdzID0gKF9mbGFncyk7CQlcCisJCWlm IChkZWZ2YWx1ZSkJCQkJCQlcCisJCQlub2RlLT5yZWdpc3RlcnNbX19jb3VudF0udmFsdWUgPSAo ZGVmdmFsdWUpOwlcCisJCW5vZGUtPm51bWJlcl9vZl9yZWdpc3RlcnMrKzsJCQkJXAorCX0gd2hp bGUgKDApCisKIHN0YXRpYyBpbnQgZ3VjX2Fkc19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1 Yyk7CkBAIC0xMDMxLDYgKzEwNDksNyBAQCBzdGF0aWMgaW50IGd1Y19hZHNfY3JlYXRlKHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKIAkJdTggcmVnX3N0YXRlX2J1ZmZlcltHVUNfUzNfU0FWRV9TUEFD RV9QQUdFUyAqIFBBR0VfU0laRV07CiAJfSBfX3BhY2tlZCAqYmxvYjsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKndvcmthcm91bmRz ID0gJmRldl9wcml2LT53b3JrYXJvdW5kczsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAl1 MzIgYmFzZTsKIApAQCAtMTA1MCw2ICsxMDY5LDQ5IEBAIHN0YXRpYyBpbnQgZ3VjX2Fkc19jcmVh dGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCiAJLyogTU1JTyByZWcgc3RhdGUgKi8KIAlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKKwkJdTMyIGk7CisJCXN0cnVjdCBn dWNfbW1pb19yZWdzZXQgKmVuZ19yZWcgPQorCQkJJmJsb2ItPnJlZ19zdGF0ZS5lbmdpbmVfcmVn W2VuZ2luZS0+Z3VjX2lkXTsKKworCQkvKgorCQkgKiBQcm92aWRlIGEgbGlzdCBvZiByZWdpc3Rl cnMgdG8gYmUgc2F2ZWQvcmVzdG9yZWQgZHVyaW5nIGdwdQorCQkgKiByZXNldC4gVGhpcyBpcyBt YWlubHkgcmVxdWlyZWQgZm9yIE1lZGlhIHJlc2V0IChha2Egd2F0Y2hkb2cKKwkJICogdGltZW91 dCkgd2hpY2ggaXMgY29tcGxldGVseSB1bmRlciB0aGUgY29udHJvbCBvZiBHdUMKKwkJICogKHJl c3VibWlzc2lvbiBvZiBodW5nIHdvcmtsb2FkIGlzIGhhbmRsZWQgaW5zaWRlIEd1QykuCisJCSAq LworCQlHVUNfQUREX01NSU9fUkVHX0FEUyhlbmdfcmVnLCBSSU5HX0hXU19QR0EoZW5naW5lLT5t bWlvX2Jhc2UpLAorCQkJCSAgICAgR1VDX1JFR1NFVF9FTkdJTkVSRVNFVCB8CisJCQkJICAgICBH VUNfUkVHU0VUX1NBVkVfQ1VSUkVOVF9WQUxVRSwgMCk7CisKKwkJLyoKKwkJICogV29ya2Fyb3Vu ZCB0aGUgZ3VjIGlzc3VlIHdpdGggbWFza2VkIHJlZ2lzdGVycywgbm90ZSB0aGF0CisJCSAqIGF0 IHRoaXMgcG9pbnQgZ3VjIHN1Ym1pc3Npb24gaXMgc3RpbGwgZGlzYWJsZWQgYW5kIHRoZSBtb2Rl CisJCSAqIHJlZ2lzdGVyIGRvZXNudCBoYXZlIHRoZSBpcnFfc3RlZXJpbmcgYml0IHNldCwgd2hp Y2ggd2UKKwkJICogbmVlZCB0byBmd2QgaXJxcyB0byBHdUMuCisJCSAqLworCQlHVUNfQUREX01N SU9fUkVHX0FEUyhlbmdfcmVnLCBSSU5HX01PREVfR0VONyhlbmdpbmUpLAorCQkJCSAgICAgR1VD X1JFR1NFVF9FTkdJTkVSRVNFVCB8CisJCQkJICAgICBHVUNfUkVHU0VUX1NBVkVfREVGQVVMVF9W QUxVRSwKKwkJCQkgICAgIEk5MTVfUkVBRChSSU5HX01PREVfR0VONyhlbmdpbmUpKSB8CisJCQkJ ICAgICBHRlhfSU5URVJSVVBUX1NURUVSSU5HIHwgKDB4RkZGRjw8MTYpKTsKKworCQlHVUNfQURE X01NSU9fUkVHX0FEUyhlbmdfcmVnLCBSSU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSksCisJCQkJ ICAgICBHVUNfUkVHU0VUX0VOR0lORVJFU0VUIHwKKwkJCQkgICAgIEdVQ19SRUdTRVRfU0FWRV9D VVJSRU5UX1ZBTFVFLCAwKTsKKworCQkvKiBhc2sgZ3VjIHRvIHJlLWFwcGx5IHdvcmthcm91bmRz IHNldCBpbiAqX2luaXRfd29ya2Fyb3VuZHMgKi8KKwkJaWYgKGVuZ2luZS0+aWQgPT0gUkNTKSB7 CisJCQlmb3IgKGkgPSAwOyBpIDwgd29ya2Fyb3VuZHMtPmd1Y19jb3VudDsgaSsrKQorCQkJCUdV Q19BRERfTU1JT19SRUdfQURTKGVuZ19yZWcsCisJCQkJCQkgICAgIHdvcmthcm91bmRzLT5ndWNf cmVnW2ldLmFkZHIsCisJCQkJCQkgICAgIEdVQ19SRUdTRVRfRU5HSU5FUkVTRVQgfAorCQkJCQkJ ICAgICBHVUNfUkVHU0VUX1NBVkVfREVGQVVMVF9WQUxVRSwKKwkJCQkJCSAgICAgd29ya2Fyb3Vu ZHMtPmd1Y19yZWdbaV0udmFsdWUpOworCQl9CisKKwkJRFJNX0RFQlVHX0RSSVZFUigiJXMgcmVn aXN0ZXIgc2F2ZS9yZXN0b3JlIGNvdW50OiAldVxuIiwKKwkJCQkgZW5naW5lLT5uYW1lLCBlbmdf cmVnLT5udW1iZXJfb2ZfcmVnaXN0ZXJzKTsKKwogCQlibG9iLT5yZWdfc3RhdGUud2hpdGVfbGlz dFtlbmdpbmUtPmd1Y19pZF0ubW1pb19zdGFydCA9CiAJCQlpOTE1X21taW9fcmVnX29mZnNldChS SU5HX0ZPUkNFX1RPX05PTlBSSVYoZW5naW5lLT5tbWlvX2Jhc2UsIDApKTsKIApAQCAtMTA1OSw5 ICsxMTIxLDEzIEBAIHN0YXRpYyBpbnQgZ3VjX2Fkc19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKQogCQkgKiBpbmNvbnNpc3RlbmNpZXMgd2l0aCB0aGUgaGFuZGxpbmcgb2YgRk9SQ0VfVE9f Tk9OUFJJVgogCQkgKiByZWdpc3RlcnMuCiAJCSAqLwotCQlibG9iLT5yZWdfc3RhdGUud2hpdGVf bGlzdFtlbmdpbmUtPmd1Y19pZF0uY291bnQgPSAwOworCQlibG9iLT5yZWdfc3RhdGUud2hpdGVf bGlzdFtlbmdpbmUtPmd1Y19pZF0uY291bnQgPQorCQkJCQl3b3JrYXJvdW5kcy0+aHdfd2hpdGVs aXN0X2NvdW50W2lkXTsKIAotCQkvKiBOb3RoaW5nIHRvIGJlIHNhdmVkIG9yIHJlc3RvcmVkIGZv ciBub3cuICovCisJCWZvciAoaSA9IDA7IGkgPCB3b3JrYXJvdW5kcy0+aHdfd2hpdGVsaXN0X2Nv dW50W2lkXTsgaSsrKSB7CisJCQlibG9iLT5yZWdfc3RhdGUud2hpdGVfbGlzdFtlbmdpbmUtPmd1 Y19pZF0ub2Zmc2V0c1tpXSA9CisJCQkJSTkxNV9SRUFEKFJJTkdfRk9SQ0VfVE9fTk9OUFJJVihl bmdpbmUtPm1taW9fYmFzZSwgaSkpOworCQl9CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMKaW5kZXggYmMzOGJkMTI4Yjc2Li41YzQxMzNhYmFlMGEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC03MDgsNiArNzA4LDI5IEBAIHN0 YXRpYyBpbnQgd2FfcmluZ193aGl0ZWxpc3RfcmVnKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBndWNfd2FfYWRkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgICAgaTkxNV9yZWdfdCBhZGRyLCBjb25zdCB1 MzIgdmFsKQoreworCWNvbnN0IHUzMiBpZHggPSBkZXZfcHJpdi0+d29ya2Fyb3VuZHMuZ3VjX2Nv dW50OworCisJSTkxNV9XUklURShhZGRyLCB2YWwpOworCWlmIChXQVJOX09OKGlkeCA+PSBHVUNf UkVHU0VUX01BWF9SRUdJU1RFUlMpKQorCQlyZXR1cm4gLUVOT1NQQzsKKworCWRldl9wcml2LT53 b3JrYXJvdW5kcy5ndWNfcmVnW2lkeF0uYWRkciA9IGFkZHI7CisJLyogR3VDIGNhbid0IGhhbmRs ZSBtYXNrZWQgcmVncywgc28gd2Ugc3RvcmUgdGhlIHZhbHVlfG1hc2sgdG9nZXRoZXIgKi8KKwlk ZXZfcHJpdi0+d29ya2Fyb3VuZHMuZ3VjX3JlZ1tpZHhdLnZhbHVlID0gdmFsOworCWRldl9wcml2 LT53b3JrYXJvdW5kcy5ndWNfY291bnQrKzsKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIFdB X1JFR19XUl9HVUNfUkVTVE9SRShhZGRyLCB2YWwpIGRvIHsgXAorCQljb25zdCBpbnQgciA9IGd1 Y193YV9hZGQoZGV2X3ByaXYsIChhZGRyKSwgKHZhbCkpOyBcCisJCWlmIChyKSBcCisJCQlyZXR1 cm4gcjsgXAorCX0gd2hpbGUgKDApCisKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3dvcmthcm91bmRz KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CkBAIC04MTUsMTUgKzgzOCwxNiBAQCBzdGF0 aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJaW50IHJldDsKIAogCS8qIFdhQ29uZXh0U3dpdGNoV2l0aENvbmN1cnJlbnRUTEJJbnZh bGlkYXRlOnNrbCxieHQsa2JsLGdsayAqLwotCUk5MTVfV1JJVEUoR0VOOV9DU0ZFX0NISUNLRU4x X1JDUywgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9E SVNBQkxFKSk7CisJV0FfUkVHX1dSX0dVQ19SRVNUT1JFKEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1Ms CisJCQkgICAgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9QUkVFTVBUX0dQR1BVX1NZTkNfU1dJ VENIX0RJU0FCTEUpKTsKIAogCS8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1lckRlY3JlbWVudDpz a2wsYnh0LGtibCxnbGsgKi8KLQlJOTE1X1dSSVRFKEJEV19TQ1JBVENIMSwgSTkxNV9SRUFEKEJE V19TQ1JBVENIMSkgfAotCQkgICBHRU45X0xCU19TTEFfUkVUUllfVElNRVJfREVDUkVNRU5UX0VO QUJMRSk7CisJV0FfUkVHX1dSX0dVQ19SRVNUT1JFKEJEV19TQ1JBVENIMSwgSTkxNV9SRUFEKEJE V19TQ1JBVENIMSkgfAorCQkJICAgICAgR0VOOV9MQlNfU0xBX1JFVFJZX1RJTUVSX0RFQ1JFTUVO VF9FTkFCTEUpOwogCiAJLyogV2FEaXNhYmxlS2lsbExvZ2ljOmJ4dCxza2wsa2JsICovCi0JSTkx NV9XUklURShHQU1fRUNPQ0hLLCBJOTE1X1JFQUQoR0FNX0VDT0NISykgfAotCQkgICBFQ09DSEtf RElTX1RMQik7CisJV0FfUkVHX1dSX0dVQ19SRVNUT1JFKEdBTV9FQ09DSEssIEk5MTVfUkVBRChH QU1fRUNPQ0hLKSB8CisJCQkgICAgICBFQ09DSEtfRElTX1RMQik7CiAKIAkvKiBXYUNsZWFyRmxv d0NvbnRyb2xHcGdwdUNvbnRleHRTYXZlOnNrbCxieHQsa2JsLGdsayAqLwogCS8qIFdhRGlzYWJs ZVBhcnRpYWxJbnN0U2hvb3Rkb3duOnNrbCxieHQsa2JsLGdsayAqLwpAQCAtODk0LDggKzkxOCw4 IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAkJCSAgSERDX0ZPUkNFX05PTl9DT0hFUkVOVCk7CiAKIAkvKiBXYURpc2Fi bGVIRENJbnZhbGlkYXRpb246c2tsLGJ4dCxrYmwgKi8KLQlJOTE1X1dSSVRFKEdBTV9FQ09DSEss IEk5MTVfUkVBRChHQU1fRUNPQ0hLKSB8Ci0JCSAgIEJEV19ESVNBQkxFX0hEQ19JTlZBTElEQVRJ T04pOworCVdBX1JFR19XUl9HVUNfUkVTVE9SRShHQU1fRUNPQ0hLLCBJOTE1X1JFQUQoR0FNX0VD T0NISykgfAorCQkJICAgICAgQkRXX0RJU0FCTEVfSERDX0lOVkFMSURBVElPTik7CiAKIAkvKiBX YURpc2FibGVTYW1wbGVyUG93ZXJCeXBhc3NGb3JTT1BpbmdQb25nOnNrbCxieHQsa2JsICovCiAJ aWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8CkBAIC05MDgsOCArOTMyLDggQEAgc3RhdGljIGlu dCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CVdBX1NFVF9CSVRfTUFTS0VEKEhBTEZfU0xJQ0VfQ0hJQ0tFTjIsIEdFTjhfU1RfUE9fRElTQUJM RSk7CiAKIAkvKiBXYU9DTENvaGVyZW50TGluZUZsdXNoOnNrbCxieHQsa2JsICovCi0JSTkxNV9X UklURShHRU44X0wzU1FDUkVHNCwgKEk5MTVfUkVBRChHRU44X0wzU1FDUkVHNCkgfAotCQkJCSAg ICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMpKTsKKwlXQV9SRUdfV1JfR1VDX1JFU1RP UkUoR0VOOF9MM1NRQ1JFRzQsIChJOTE1X1JFQUQoR0VOOF9MM1NRQ1JFRzQpIHwKKwkJCQkJICAg ICAgIEdFTjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5FUykpOwogCiAJLyogV2FWRkVTdGF0ZUFm dGVyUGlwZUNvbnRyb2x3aXRoTWVkaWFTdGF0ZUNsZWFyOnNrbCxieHQsZ2xrICovCiAJcmV0ID0g d2FfcmluZ193aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOV9DVFhfUFJFRU1QVF9SRUcpOwpAQCAt OTg0LDEyICsxMDA4LDEyIEBAIHN0YXRpYyBpbnQgc2tsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIHVudGlsIEQwIHdoaWNoIGlzIHRoZSBkZWZh dWx0IGNhc2Ugc28gdGhpcyBpcyBlcXVpdmFsZW50IHRvCiAJICogIVdhRGlzYWJsZVBlckN0eHRQ cmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sOnNrbAogCSAqLwotCUk5MTVfV1JJVEUoR0VON19G Rl9TTElDRV9DU19DSElDS0VOMSwKLQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfRkZTQ19Q RVJDVFhfUFJFRU1QVF9DVFJMKSk7CisJV0FfUkVHX1dSX0dVQ19SRVNUT1JFKEdFTjdfRkZfU0xJ Q0VfQ1NfQ0hJQ0tFTjEsCisJCQkgICAgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9GRlNDX1BF UkNUWF9QUkVFTVBUX0NUUkwpKTsKIAogCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDpza2wg Ki8KLQlJOTE1X1dSSVRFKEdFTjhfR0FSQkNOVEwsIChJOTE1X1JFQUQoR0VOOF9HQVJCQ05UTCkg fAotCQkJCSAgIEdFTjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpKTsKKwlXQV9SRUdfV1JfR1VD X1JFU1RPUkUoR0VOOF9HQVJCQ05UTCwgKEk5MTVfUkVBRChHRU44X0dBUkJDTlRMKSB8CisJCQkJ CSAgICAgIEdFTjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpKTsKIAogCS8qIFdhRGlzYWJsZUdh ZnNVbml0Q2xrR2F0aW5nOnNrbCAqLwogCVdBX1NFVF9CSVQoR0VON19VQ0dDVEw0LCBHRU44X0VV X0dBVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpOwpAQCAtMTAxOSwxMiArMTA0MywxMiBAQCBzdGF0 aWMgaW50IGJ4dF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkvKiBXYVN0b3JlTXVsdGlwbGVQVEVlbmFibGU6Ynh0ICovCiAJLyogVGhpcyBpcyBhIHJl cXVpcmVtZW50IGFjY29yZGluZyB0byBIYXJkd2FyZSBzcGVjaWZpY2F0aW9uICovCiAJaWYgKElT X0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkKLQkJSTkxNV9XUklURShUSUxF Q1RMLCBJOTE1X1JFQUQoVElMRUNUTCkgfCBUSUxFQ1RMX1RMQlBGKTsKKwkJV0FfUkVHX1dSX0dV Q19SRVNUT1JFKFRJTEVDVEwsIEk5MTVfUkVBRChUSUxFQ1RMKSB8IFRJTEVDVExfVExCUEYpOwog CiAJLyogV2FTZXRDbGNrR2F0aW5nRGlzYWJsZU1lZGlhOmJ4dCAqLwogCWlmIChJU19CWFRfUkVW SUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKLQkJSTkxNV9XUklURShHRU43X01JU0ND UENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENUTCkgJgotCQkJCQkgICAgfkdFTjhfRE9QX0NM T0NLX0dBVEVfTUVESUFfRU5BQkxFKSk7CisJCVdBX1JFR19XUl9HVUNfUkVTVE9SRShHRU43X01J U0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENUTCkgJgorCQkJCQkJICAgICAgIH5HRU44 X0RPUF9DTE9DS19HQVRFX01FRElBX0VOQUJMRSkpOwogCX0KIAogCS8qIFdhRGlzYWJsZVRocmVh ZFN0YWxsRG9wQ2xvY2tHYXRpbmc6Ynh0ICovCkBAIC0xMDYwLDggKzEwODQsOCBAQCBzdGF0aWMg aW50IGJ4dF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAogCS8qIFdhUHJvZ3JhbUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCAqLwogCWlmIChJU19C WFRfUkVWSUQoZGV2X3ByaXYsIEJYVF9SRVZJRF9CMCwgUkVWSURfRk9SRVZFUikpCi0JCUk5MTVf V1JJVEUoR0VOOF9MM1NRQ1JFRzEsIEwzX0dFTkVSQUxfUFJJT19DUkVESVRTKDYyKSB8Ci0JCQkJ CSAgIEwzX0hJR0hfUFJJT19DUkVESVRTKDIpKTsKKwkJV0FfUkVHX1dSX0dVQ19SRVNUT1JFKEdF TjhfTDNTUUNSRUcxLCBMM19HRU5FUkFMX1BSSU9fQ1JFRElUUyg2MikgfAorCQkJCQkJICAgICAg TDNfSElHSF9QUklPX0NSRURJVFMoMikpOwogCiAJLyogV2FUb0VuYWJsZUh3Rml4Rm9yUHVzaENv bnN0SFdCdWc6Ynh0ICovCiAJaWYgKElTX0JYVF9SRVZJRChkZXZfcHJpdiwgQlhUX1JFVklEX0Mw LCBSRVZJRF9GT1JFVkVSKSkKQEAgLTEwODYsOCArMTExMCw4IEBAIHN0YXRpYyBpbnQga2JsX2lu aXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1cm4g cmV0OwogCiAJLyogV2FFbmFibGVHYXBzVHN2Q3JlZGl0Rml4OmtibCAqLwotCUk5MTVfV1JJVEUo R0VOOF9HQVJCQ05UTCwgKEk5MTVfUkVBRChHRU44X0dBUkJDTlRMKSB8Ci0JCQkJICAgR0VOOV9H QVBTX1RTVl9DUkVESVRfRElTQUJMRSkpOworCVdBX1JFR19XUl9HVUNfUkVTVE9SRShHRU44X0dB UkJDTlRMLCAoSTkxNV9SRUFEKEdFTjhfR0FSQkNOVEwpIHwKKwkJCQkJICAgICAgR0VOOV9HQVBT X1RTVl9DUkVESVRfRElTQUJMRSkpOwogCiAJLyogV2FEaXNhYmxlRHluYW1pY0NyZWRpdFNoYXJp bmc6a2JsICovCiAJaWYgKElTX0tCTF9SRVZJRChkZXZfcHJpdiwgMCwgS0JMX1JFVklEX0IwKSkK QEAgLTExNDgsNiArMTE3Miw3IEBAIGludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCVdBUk5fT04oZW5naW5lLT5pZCAhPSBSQ1MpOwogCiAJ ZGV2X3ByaXYtPndvcmthcm91bmRzLmNvdW50ID0gMDsKKwlkZXZfcHJpdi0+d29ya2Fyb3VuZHMu Z3VjX2NvdW50ID0gMDsKIAlkZXZfcHJpdi0+d29ya2Fyb3VuZHMuaHdfd2hpdGVsaXN0X2NvdW50 W2VuZ2luZS0+aWRdID0gMDsKIAogCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQotLSAKMi4x MS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK