From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. (v2) Date: Fri, 22 Mar 2019 21:04:27 +0100 Message-ID: <20190322200428.4008-4-mario.kleiner.de@gmail.com> References: <20190322200428.4008-1-mario.kleiner.de@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190322200428.4008-1-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nicholas.kazlauskas-5C7GfCeVMHo@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org SW4gVlJSIG1vZGUsIHByb3BlciB2YmxhbmsvcGFnZWZsaXAgdGltZXN0YW1wcyBjYW4gb25seSBi ZSBjb21wdXRlZAphZnRlciB0aGUgZGlzcGxheSBzY2Fub3V0IHBvc2l0aW9uIGhhcyBsZWZ0IGZy b250LXBvcmNoLiBUaGVyZWZvcmUKZGVsYXkgY2FsbHMgdG8gZHJtX2NydGNfaGFuZGxlX3ZibGFu aygpLCBhbmQgdGhlcmVieSBjYWxscyB0bwpkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIGFuZCBw YWdlZmxpcCBldmVudCBkZWxpdmVyeSwgdG8gYWZ0ZXIgdGhlCmVuZCBvZiBmcm9udC1wb3JjaCB3 aGVuIGluIFZSUiBtb2RlLgoKV2UgYWRkIGEgbmV3IHZ1cGRhdGUgaXJxLCB3aGljaCB0cmlnZ2Vy cyBhdCB0aGUgZW5kIG9mIHRoZSB2dXBkYXRlCmludGVydmFsLCBpZS4gYXQgdGhlIGVuZCBvZiB2 YmxhbmssIGFuZCBjYWxscyB0aGUgY29yZSB2YmxhbmsgaGFuZGxlcgpmdW5jdGlvbi4gVGhlIG5l dyBpcnEgaGFuZGxlciBpcyBub3QgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgbm9uLVZSUgptb2RlLCBz byB2YmxhbmsgaGFuZGxpbmcgZm9yIGZpeGVkIHJlZnJlc2ggcmF0ZSBtb2RlIGlzIGlkZW50aWNh bAp0byB0aGUgcGFzdCBpbXBsZW1lbnRhdGlvbi4KCnYyOiBJbXBsZW1lbnQgZmVlZGJhY2sgYnkg TmljaG9sYXMgYW5kIFBhdWwgTWVuemVsLgoKU2lnbmVkLW9mZi1ieTogTWFyaW8gS2xlaW5lciA8 bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBIYXJyeSBXZW50bGFuZCA8aGFy cnkud2VudGxhbmRAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHUuaCAgICAgICAgICAgfCAgIDEgKwogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2Rt L2FtZGdwdV9kbS5jIHwgMTI4ICsrKysrKysrKysrKysrKysrLQogLi4uL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oIHwgICA5ICsrCiAuLi4vZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgfCAgMjIgKysrCiAuLi4vZGMvaXJxL2RjZTExMC9p cnFfc2VydmljZV9kY2UxMTAuYyAgICAgICAgfCAgIDcgKy0KIC4uLi9kYy9pcnEvZGNlMTIwL2ly cV9zZXJ2aWNlX2RjZTEyMC5jICAgICAgICB8ICAgNyArLQogLi4uL2Rpc3BsYXkvZGMvaXJxL2Rj ZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMgIHwgICA2ICstCiAuLi4vZGlzcGxheS9kYy9pcnEvZGNu MTAvaXJxX3NlcnZpY2VfZGNuMTAuYyAgfCAgNDAgKysrKy0tCiA4IGZpbGVzIGNoYW5nZWQsIDIw NCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCmluZGV4IDZlNzE3NDljYjNiYi4uNjI5NDMxNmYyNGM3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaApAQCAtODI3LDYgKzgyNyw3IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNl IHsKIAkvKiBGb3IgcHJlLURDRTExLiBEQ0UxMSBhbmQgbGF0ZXIgYXJlIGluICJzdHJ1Y3QgYW1k Z3B1X2RldmljZS0+ZG0iICovCiAJc3RydWN0IHdvcmtfc3RydWN0CQlob3RwbHVnX3dvcms7CiAJ c3RydWN0IGFtZGdwdV9pcnFfc3JjCQljcnRjX2lycTsKKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJ CXZ1cGRhdGVfaXJxOwogCXN0cnVjdCBhbWRncHVfaXJxX3NyYwkJcGFnZWZsaXBfaXJxOwogCXN0 cnVjdCBhbWRncHVfaXJxX3NyYwkJaHBkX2lycTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKaW5kZXggYWFiZDIzZmEwNzY2Li5mZTIw Nzk4OGQwYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVf ZG0vYW1kZ3B1X2RtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9k bS9hbWRncHVfZG0uYwpAQCAtMzE1LDYgKzMxNSwzMiBAQCBzdGF0aWMgdm9pZCBkbV9wZmxpcF9o aWdoX2lycSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQogCWRybV9jcnRjX3ZibGFua19wdXQoJmFt ZGdwdV9jcnRjLT5iYXNlKTsKIH0KIAorc3RhdGljIHZvaWQgZG1fdnVwZGF0ZV9oaWdoX2lycSh2 b2lkICppbnRlcnJ1cHRfcGFyYW1zKQoreworCXN0cnVjdCBjb21tb25faXJxX3BhcmFtcyAqaXJx X3BhcmFtcyA9IGludGVycnVwdF9wYXJhbXM7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBpcnFfcGFyYW1zLT5hZGV2OworCXN0cnVjdCBhbWRncHVfY3J0YyAqYWNydGM7CisJc3RydWN0 IGRtX2NydGNfc3RhdGUgKmFjcnRjX3N0YXRlOworCisJYWNydGMgPSBnZXRfY3J0Y19ieV9vdGdf aW5zdChhZGV2LCBpcnFfcGFyYW1zLT5pcnFfc3JjIC0gSVJRX1RZUEVfVlVQREFURSk7CisKKwlp ZiAoYWNydGMpIHsKKwkJYWNydGNfc3RhdGUgPSB0b19kbV9jcnRjX3N0YXRlKGFjcnRjLT5iYXNl LnN0YXRlKTsKKworCQlEUk1fREVCVUdfRFJJVkVSKCJjcnRjOiVkLCB2dXBkYXRlLXZycjolZFxu IiwgYWNydGMtPmNydGNfaWQsCisJCQkJIGFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0YXRl KSk7CisKKwkJLyogQ29yZSB2YmxhbmsgaGFuZGxpbmcgaXMgZG9uZSBoZXJlIGFmdGVyIGVuZCBv ZiBmcm9udC1wb3JjaCBpbgorCQkgKiB2cnIgbW9kZSwgYXMgdmJsYW5rIHRpbWVzdGFtcGluZyB3 aWxsIGdpdmUgdmFsaWQgcmVzdWx0cworCQkgKiB3aGlsZSBub3cgZG9uZSBhZnRlciBmcm9udC1w b3JjaC4gVGhpcyB3aWxsIGFsc28gZGVsaXZlcgorCQkgKiBwYWdlLWZsaXAgY29tcGxldGlvbiBl dmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHRvIHVzCisJCSAqIGlmIGEgcGFnZWZsaXAgaGFw cGVuZWQgaW5zaWRlIGZyb250LXBvcmNoLgorCQkgKi8KKwkJaWYgKGFtZGdwdV9kbV92cnJfYWN0 aXZlKGFjcnRjX3N0YXRlKSkKKwkJCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5iYXNl KTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGRtX2NydGNfaGlnaF9pcnEodm9pZCAqaW50ZXJydXB0 X3BhcmFtcykKIHsKIAlzdHJ1Y3QgY29tbW9uX2lycV9wYXJhbXMgKmlycV9wYXJhbXMgPSBpbnRl cnJ1cHRfcGFyYW1zOwpAQCAtMzI1LDExICszNTEsMjQgQEAgc3RhdGljIHZvaWQgZG1fY3J0Y19o aWdoX2lycSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQogCWFjcnRjID0gZ2V0X2NydGNfYnlfb3Rn X2luc3QoYWRldiwgaXJxX3BhcmFtcy0+aXJxX3NyYyAtIElSUV9UWVBFX1ZCTEFOSyk7CiAKIAlp ZiAoYWNydGMpIHsKLQkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmYWNydGMtPmJhc2UpOwotCQlh bWRncHVfZG1fY3J0Y19oYW5kbGVfY3JjX2lycSgmYWNydGMtPmJhc2UpOwotCiAJCWFjcnRjX3N0 YXRlID0gdG9fZG1fY3J0Y19zdGF0ZShhY3J0Yy0+YmFzZS5zdGF0ZSk7CiAKKwkJRFJNX0RFQlVH X0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lkLAorCQkJ CSBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpOworCisJCS8qIENvcmUgdmJsYW5r IGhhbmRsaW5nIGF0IHN0YXJ0IG9mIGZyb250LXBvcmNoIGlzIG9ubHkgcG9zc2libGUKKwkJICog aW4gbm9uLXZyciBtb2RlLCBhcyBvbmx5IHRoZXJlIHZibGFuayB0aW1lc3RhbXBpbmcgd2lsbCBn aXZlCisJCSAqIHZhbGlkIHJlc3VsdHMgd2hpbGUgZG9uZSBpbiBmcm9udC1wb3JjaC4gT3RoZXJ3 aXNlIGRlZmVyIGl0CisJCSAqIHRvIGRtX3Z1cGRhdGVfaGlnaF9pcnEgYWZ0ZXIgZW5kIG9mIGZy b250LXBvcmNoLgorCQkgKi8KKwkJaWYgKCFhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0 ZSkpCisJCQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZhY3J0Yy0+YmFzZSk7CisKKwkJLyogRm9s bG93aW5nIHN0dWZmIG11c3QgaGFwcGVuIGF0IHN0YXJ0IG9mIHZibGFuaywgZm9yIGNyYworCQkg KiBjb21wdXRhdGlvbiBhbmQgYmVsb3ctdGhlLXJhbmdlIGJ0ciBzdXBwb3J0IGluIHZyciBtb2Rl LgorCQkgKi8KKwkJYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFjcnRjLT5iYXNlKTsK KwogCQlpZiAoYWNydGNfc3RhdGUtPnN0cmVhbSAmJgogCQkgICAgYWNydGNfc3RhdGUtPnZycl9w YXJhbXMuc3VwcG9ydGVkICYmCiAJCSAgICBhY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmlnLnN0 YXRlID09IFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEUpIHsKQEAgLTE0NDcsNiArMTQ4NiwyNyBA QCBzdGF0aWMgaW50IGRjZTExMF9yZWdpc3Rlcl9pcnFfaGFuZGxlcnMoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJCQkJZG1fY3J0Y19oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsKIAl9CiAK KwkvKiBVc2UgVlVQREFURSBpbnRlcnJ1cHQgKi8KKwlmb3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NS Q0lEX0QxX1ZfVVBEQVRFX0lOVDsgaSA8PSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0Q2X1ZfVVBEQVRF X0lOVDsgaSArPSAyKSB7CisJCXIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBjbGllbnRfaWQs IGksICZhZGV2LT52dXBkYXRlX2lycSk7CisJCWlmIChyKSB7CisJCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBhZGQgdnVwZGF0ZSBpcnEgaWQhXG4iKTsKKwkJCXJldHVybiByOworCQl9CisKKwkJaW50 X3BhcmFtcy5pbnRfY29udGV4dCA9IElOVEVSUlVQVF9ISUdIX0lSUV9DT05URVhUOworCQlpbnRf cGFyYW1zLmlycV9zb3VyY2UgPQorCQkJZGNfaW50ZXJydXB0X3RvX2lycV9zb3VyY2UoZGMsIGks IDApOworCisJCWNfaXJxX3BhcmFtcyA9ICZhZGV2LT5kbS52dXBkYXRlX3BhcmFtc1tpbnRfcGFy YW1zLmlycV9zb3VyY2UgLSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxXTsKKworCQljX2lycV9wYXJh bXMtPmFkZXYgPSBhZGV2OworCQljX2lycV9wYXJhbXMtPmlycV9zcmMgPSBpbnRfcGFyYW1zLmly cV9zb3VyY2U7CisKKwkJYW1kZ3B1X2RtX2lycV9yZWdpc3Rlcl9pbnRlcnJ1cHQoYWRldiwgJmlu dF9wYXJhbXMsCisJCQkJZG1fdnVwZGF0ZV9oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsKKwl9CisK IAkvKiBVc2UgR1JQSF9QRkxJUCBpbnRlcnJ1cHQgKi8KIAlmb3IgKGkgPSBWSVNMQU5EUzMwX0lW X1NSQ0lEX0QxX0dSUEhfUEZMSVA7CiAJCQlpIDw9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDZfR1JQ SF9QRkxJUDsgaSArPSAyKSB7CkBAIC0xNTMyLDYgKzE1OTIsMzQgQEAgc3RhdGljIGludCBkY24x MF9yZWdpc3Rlcl9pcnFfaGFuZGxlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQkJ ZG1fY3J0Y19oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsKIAl9CiAKKwkvKiBVc2UgVlVQREFURV9O T19MT0NLIGludGVycnVwdCBvbiBEQ04sIHdoaWNoIHNlZW1zIHRvIGNvcnJlc3BvbmQgdG8KKwkg KiB0aGUgcmVndWxhciBWVVBEQVRFIGludGVycnVwdCBvbiBEQ0UuIFdlIHdhbnQgRENfSVJRX1NP VVJDRV9WVVBEQVRFeAorCSAqIHRvIHRyaWdnZXIgYXQgZW5kIG9mIGVhY2ggdmJsYW5rLCByZWdh cmRsZXNzIG9mIHN0YXRlIG9mIHRoZSBsb2NrLAorCSAqIG1hdGNoaW5nIERDRSBiZWhhdmlvdXIu CisJICovCisJZm9yIChpID0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xP Q0tfSU5URVJSVVBUOworCSAgICAgaSA8PSBEQ05fMV8wX19TUkNJRF9fT1RHMF9JSENfVl9VUERB VEVfTk9fTE9DS19JTlRFUlJVUFQgKyBhZGV2LT5tb2RlX2luZm8ubnVtX2NydGMgLSAxOworCSAg ICAgaSsrKSB7CisJCXIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBTT0MxNV9JSF9DTElFTlRJ RF9EQ0UsIGksICZhZGV2LT52dXBkYXRlX2lycSk7CisKKwkJaWYgKHIpIHsKKwkJCURSTV9FUlJP UigiRmFpbGVkIHRvIGFkZCB2dXBkYXRlIGlycSBpZCFcbiIpOworCQkJcmV0dXJuIHI7CisJCX0K KworCQlpbnRfcGFyYW1zLmludF9jb250ZXh0ID0gSU5URVJSVVBUX0hJR0hfSVJRX0NPTlRFWFQ7 CisJCWludF9wYXJhbXMuaXJxX3NvdXJjZSA9CisJCQlkY19pbnRlcnJ1cHRfdG9faXJxX3NvdXJj ZShkYywgaSwgMCk7CisKKwkJY19pcnFfcGFyYW1zID0gJmFkZXYtPmRtLnZ1cGRhdGVfcGFyYW1z W2ludF9wYXJhbXMuaXJxX3NvdXJjZSAtIERDX0lSUV9TT1VSQ0VfVlVQREFURTFdOworCisJCWNf aXJxX3BhcmFtcy0+YWRldiA9IGFkZXY7CisJCWNfaXJxX3BhcmFtcy0+aXJxX3NyYyA9IGludF9w YXJhbXMuaXJxX3NvdXJjZTsKKworCQlhbWRncHVfZG1faXJxX3JlZ2lzdGVyX2ludGVycnVwdChh ZGV2LCAmaW50X3BhcmFtcywKKwkJCQlkbV92dXBkYXRlX2hpZ2hfaXJxLCBjX2lycV9wYXJhbXMp OworCX0KKwogCS8qIFVzZSBHUlBIX1BGTElQIGludGVycnVwdCAqLwogCWZvciAoaSA9IERDTl8x XzBfX1NSQ0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVDsKIAkJCWkgPD0gRENOXzFfMF9fU1JDSURf X0hVQlAwX0ZMSVBfSU5URVJSVVBUICsgYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjIC0gMTsKQEAg LTMyMjMsMTIgKzMzMTEsNDEgQEAgZG1fY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCXJldHVybiAmc3RhdGUtPmJhc2U7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50 IGRtX3NldF92dXBkYXRlX2lycShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQor eworCWVudW0gZGNfaXJxX3NvdXJjZSBpcnFfc291cmNlOworCXN0cnVjdCBhbWRncHVfY3J0YyAq YWNydGMgPSB0b19hbWRncHVfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7CisJaW50IHJjOworCisJaXJxX3NvdXJjZSA9IElS UV9UWVBFX1ZVUERBVEUgKyBhY3J0Yy0+b3RnX2luc3Q7CisKKwlyYyA9IGRjX2ludGVycnVwdF9z ZXQoYWRldi0+ZG0uZGMsIGlycV9zb3VyY2UsIGVuYWJsZSkgPyAwIDogLUVCVVNZOworCisJRFJN X0RFQlVHX0RSSVZFUigiY3J0YyAlZCAtIHZ1cGRhdGUgaXJxICVzYWJsaW5nOiByPSVkXG4iLAor CQkJIGFjcnRjLT5jcnRjX2lkLCBlbmFibGUgPyAiZW4iIDogImRpcyIsIHJjKTsKKwlyZXR1cm4g cmM7Cit9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGRtX3NldF92Ymxhbmsoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIGVuYWJsZSkKIHsKIAllbnVtIGRjX2lycV9zb3VyY2UgaXJxX3NvdXJjZTsK IAlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFjcnRjID0gdG9fYW1kZ3B1X2NydGMoY3J0Yyk7CiAJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVj dCBkbV9jcnRjX3N0YXRlICphY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOworCWludCByYyA9IDA7CisKKwlpZiAoZW5hYmxlKSB7CisJCS8qIHZibGFuayBpcnEgb24g LT4gT25seSBuZWVkIHZ1cGRhdGUgaXJxIGluIHZyciBtb2RlICovCisJCWlmIChhbWRncHVfZG1f dnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpCisJCQlyYyA9IGRtX3NldF92dXBkYXRlX2lycShjcnRj LCB0cnVlKTsKKwl9IGVsc2UgeworCQkvKiB2YmxhbmsgaXJxIG9mZiAtPiB2dXBkYXRlIGlycSBv ZmYgKi8KKwkJcmMgPSBkbV9zZXRfdnVwZGF0ZV9pcnEoY3J0YywgZmFsc2UpOworCX0KKworCWlm IChyYykKKwkJcmV0dXJuIHJjOwogCiAJaXJxX3NvdXJjZSA9IElSUV9UWVBFX1ZCTEFOSyArIGFj cnRjLT5vdGdfaW5zdDsKIAlyZXR1cm4gZGNfaW50ZXJydXB0X3NldChhZGV2LT5kbS5kYywgaXJx X3NvdXJjZSwgZW5hYmxlKSA/IDAgOiAtRUJVU1k7CkBAIC00NzM3LDcgKzQ4NTQsMTEgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X2RtX2hhbmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19z dGF0ZSAqb2xkX3N0YXRlLAogCQkgKiBXaGlsZSBWUlIgaXMgYWN0aXZlLCB3ZSBtdXN0IG5vdCBk aXNhYmxlIHZibGFuayBpcnEsIGFzIGEKIAkJICogcmVlbmFibGUgYWZ0ZXIgZGlzYWJsZSB3b3Vs ZCBjb21wdXRlIGJvZ3VzIHZibGFuay9wZmxpcAogCQkgKiB0aW1lc3RhbXBzIGlmIGl0IGxpa2Vs eSBoYXBwZW5lZCBpbnNpZGUgZGlzcGxheSBmcm9udC1wb3JjaC4KKwkJICoKKwkJICogV2UgYWxz byBuZWVkIHZ1cGRhdGUgaXJxIGZvciB0aGUgYWN0dWFsIGNvcmUgdmJsYW5rIGhhbmRsaW5nCisJ CSAqIGF0IGVuZCBvZiB2YmxhbmsuCiAJCSAqLworCQlkbV9zZXRfdnVwZGF0ZV9pcnEobmV3X3N0 YXRlLT5iYXNlLmNydGMsIHRydWUpOwogCQlkcm1fY3J0Y192YmxhbmtfZ2V0KG5ld19zdGF0ZS0+ YmFzZS5jcnRjKTsKIAkJRFJNX0RFQlVHX0RSSVZFUigiJXM6IGNydGM9JXUgVlJSIG9mZi0+b246 IEdldCB2YmxhbmsgcmVmXG4iLAogCQkJCSBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMt PmJhc2UuaWQpOwpAQCAtNDc0NSw2ICs0ODY2LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RtX2hh bmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAogCQkv KiBUcmFuc2l0aW9uIFZSUiBhY3RpdmUgLT4gaW5hY3RpdmU6CiAJCSAqIEFsbG93IHZibGFuayBp cnEgZGlzYWJsZSBhZ2FpbiBmb3IgZml4ZWQgcmVmcmVzaCByYXRlLgogCQkgKi8KKwkJZG1fc2V0 X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCBmYWxzZSk7CiAJCWRybV9jcnRjX3Zi bGFua19wdXQobmV3X3N0YXRlLT5iYXNlLmNydGMpOwogCQlEUk1fREVCVUdfRFJJVkVSKCIlczog Y3J0Yz0ldSBWUlIgb24tPm9mZjogRHJvcCB2YmxhbmsgcmVmXG4iLAogCQkJCSBfX2Z1bmNfXywg bmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKaW5kZXggNzczZWY1Y2E4NDQxLi4zYTBi NjE2NGM3NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVf ZG0vYW1kZ3B1X2RtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9k bS9hbWRncHVfZG0uaApAQCAtMTgyLDYgKzE4MiwxNSBAQCBzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlf bWFuYWdlciB7CiAJc3RydWN0IGNvbW1vbl9pcnFfcGFyYW1zCiAJdmJsYW5rX3BhcmFtc1tEQ19J UlFfU09VUkNFX1ZCTEFOSzYgLSBEQ19JUlFfU09VUkNFX1ZCTEFOSzEgKyAxXTsKIAorCS8qKgor CSAqIEB2dXBkYXRlX3BhcmFtczoKKwkgKgorCSAqIFZlcnRpY2FsIHVwZGF0ZSBJUlEgcGFyYW1l dGVycywgcGFzc2VkIHRvIHJlZ2lzdGVyZWQgaGFuZGxlcnMgd2hlbgorCSAqIHRyaWdnZXJlZC4K KwkgKi8KKwlzdHJ1Y3QgY29tbW9uX2lycV9wYXJhbXMKKwl2dXBkYXRlX3BhcmFtc1tEQ19JUlFf U09VUkNFX1ZVUERBVEU2IC0gRENfSVJRX1NPVVJDRV9WVVBEQVRFMSArIDFdOworCiAJc3Bpbmxv Y2tfdCBpcnFfaGFuZGxlcl9saXN0X3RhYmxlX2xvY2s7CiAKIAlzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqYmFja2xpZ2h0X2RldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMKaW5kZXggY2QxMGY3N2NkZWIwLi5mZDIyYjQ0 NzRkYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0v YW1kZ3B1X2RtX2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVf ZG0vYW1kZ3B1X2RtX2lycS5jCkBAIC02NzQsMTEgKzY3NCwzMCBAQCBzdGF0aWMgaW50IGFtZGdw dV9kbV9zZXRfY3J0Y19pcnFfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCV9f ZnVuY19fKTsKIH0KIAorc3RhdGljIGludCBhbWRncHVfZG1fc2V0X3Z1cGRhdGVfaXJxX3N0YXRl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X2lycV9z cmMgKnNvdXJjZSwKKwkJCQkJICAgdW5zaWduZWQgaW50IGNydGNfaWQsCisJCQkJCSAgIGVudW0g YW1kZ3B1X2ludGVycnVwdF9zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1cm4gZG1faXJxX3N0YXRlKAor CQlhZGV2LAorCQlzb3VyY2UsCisJCWNydGNfaWQsCisJCXN0YXRlLAorCQlJUlFfVFlQRV9WVVBE QVRFLAorCQlfX2Z1bmNfXyk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9z cmNfZnVuY3MgZG1fY3J0Y19pcnFfZnVuY3MgPSB7CiAJLnNldCA9IGFtZGdwdV9kbV9zZXRfY3J0 Y19pcnFfc3RhdGUsCiAJLnByb2Nlc3MgPSBhbWRncHVfZG1faXJxX2hhbmRsZXIsCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIGRtX3Z1cGRhdGVfaXJxX2Z1 bmNzID0geworCS5zZXQgPSBhbWRncHVfZG1fc2V0X3Z1cGRhdGVfaXJxX3N0YXRlLAorCS5wcm9j ZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLAorfTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBh bWRncHVfaXJxX3NyY19mdW5jcyBkbV9wYWdlZmxpcF9pcnFfZnVuY3MgPSB7CiAJLnNldCA9IGFt ZGdwdV9kbV9zZXRfcGZsaXBfaXJxX3N0YXRlLAogCS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9o YW5kbGVyLApAQCAtNjk1LDYgKzcxNCw5IEBAIHZvaWQgYW1kZ3B1X2RtX3NldF9pcnFfZnVuY3Mo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJYWRldi0+Y3J0Y19pcnEubnVtX3R5cGVzID0g YWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOwogCWFkZXYtPmNydGNfaXJxLmZ1bmNzID0gJmRtX2Ny dGNfaXJxX2Z1bmNzOwogCisJYWRldi0+dnVwZGF0ZV9pcnEubnVtX3R5cGVzID0gYWRldi0+bW9k ZV9pbmZvLm51bV9jcnRjOworCWFkZXYtPnZ1cGRhdGVfaXJxLmZ1bmNzID0gJmRtX3Z1cGRhdGVf aXJxX2Z1bmNzOworCiAJYWRldi0+cGFnZWZsaXBfaXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVf aW5mby5udW1fY3J0YzsKIAlhZGV2LT5wYWdlZmxpcF9pcnEuZnVuY3MgPSAmZG1fcGFnZWZsaXBf aXJxX2Z1bmNzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv aXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jCmluZGV4IGFmZTA4NzZmZTZm OC4uODY5ODdmNWU4YmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYwpAQCAtODEsNiAr ODEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5r X2lycV9pbmZvX2Z1bmNzID0gewogCS5hY2sgPSBOVUxMCiB9OwogCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2dXBkYXRlX2lycV9pbmZvX2Z1bmNzID0geworCS5z ZXQgPSBOVUxMLAorCS5hY2sgPSBOVUxMCit9OworCiAjZGVmaW5lIGhwZF9pbnRfZW50cnkocmVn X251bSlcCiAJW0RDX0lSUV9TT1VSQ0VfSFBEMSArIHJlZ19udW1dID0ge1wKIAkJLmVuYWJsZV9y ZWcgPSBtbUhQRCAjIyByZWdfbnVtICMjIF9EQ19IUERfSU5UX0NPTlRST0wsXApAQCAtMTM3LDcg KzE0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFu a19pcnFfaW5mb19mdW5jcyA9IHsKIAkJQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRDX1Zf VVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwKIAkJLmFja192YWx1ZSA9XAogCQlDUlRDX1ZfVVBEQVRF X0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXAotCQkuZnVuY3MgPSAm dmJsYW5rX2lycV9pbmZvX2Z1bmNzXAorCQkuZnVuY3MgPSAmdnVwZGF0ZV9pcnFfaW5mb19mdW5j c1wKIAl9CiAKICNkZWZpbmUgdmJsYW5rX2ludF9lbnRyeShyZWdfbnVtKVwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2Rj ZTEyMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMjAvaXJxX3Nl cnZpY2VfZGNlMTIwLmMKaW5kZXggMWVhNzI1NmVjODliLi43NTBiYTBhYjQxMDYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNl X2RjZTEyMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIw L2lycV9zZXJ2aWNlX2RjZTEyMC5jCkBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7CiAJLmFj ayA9IE5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNz IHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7CisJLnNldCA9IE5VTEwsCisJLmFjayA9IE5VTEwK K307CisKICNkZWZpbmUgQkFTRV9JTk5FUihzZWcpIFwKIAlEQ0VfQkFTRV9fSU5TVDBfU0VHICMj IHNlZwogCkBAIC0xNDAsNyArMTQ1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNl X2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewogCQlJUlFfUkVHX0VOVFJZKENS VEMsIHJlZ19udW0sXAogCQkJQ1JUQ19JTlRFUlJVUFRfQ09OVFJPTCwgQ1JUQ19WX1VQREFURV9J TlRfTVNLLFwKIAkJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRVUywgQ1JUQ19WX1VQREFURV9JTlRf Q0xFQVIpLFwKLQkJLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wKKwkJLmZ1bmNzID0g JnZ1cGRhdGVfaXJxX2luZm9fZnVuY3NcCiAJfQogCiAjZGVmaW5lIHZibGFua19pbnRfZW50cnko cmVnX251bSlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJx L2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMKaW5kZXggOGEyMDY2YzMxM2ZlLi5kZTIx OGZlODRhNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEv ZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMKQEAgLTg0LDYgKzg0LDEwIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19m dW5jcyA9IHsKIAkuYWNrID0gTlVMTAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291 cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsKKwkuc2V0ID0gTlVMTCwK KwkuYWNrID0gTlVMTAorfTsKIAogI2RlZmluZSBocGRfaW50X2VudHJ5KHJlZ19udW0pXAogCVtE Q19JUlFfU09VUkNFX0lOVkFMSUQgKyByZWdfbnVtXSA9IHtcCkBAIC0xNDIsNyArMTQ2LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZv X2Z1bmNzID0gewogCQlDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5U X0NMRUFSX01BU0ssXAogCQkuYWNrX3ZhbHVlID1cCiAJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRV U19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcCi0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJx X2luZm9fZnVuY3NcCisJCS5mdW5jcyA9ICZ2dXBkYXRlX2lycV9pbmZvX2Z1bmNzXAogCX0KIAog I2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0pXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5j CmluZGV4IGUwNGFlNDkyNDNmNi4uMTBhYzZkZWZmNWZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEwLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24x MC5jCkBAIC01Niw2ICs1NiwxOCBAQCBlbnVtIGRjX2lycV9zb3VyY2UgdG9fZGFsX2lycV9zb3Vy Y2VfZGNuMTAoCiAJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZCTEFOSzU7CiAJY2FzZSBEQ05fMV8w X19TUkNJRF9fRENfRDZfT1RHX1ZTVEFSVFVQOgogCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WQkxB Tks2OworCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5U RVJSVVBUOgorCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRFMTsKKwljYXNlIERDTl8xXzBf X1NSQ0lEX19PVEcxX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoKKwkJcmV0dXJuIERD X0lSUV9TT1VSQ0VfVlVQREFURTI7CisJY2FzZSBEQ05fMV8wX19TUkNJRF9fT1RHMl9JSENfVl9V UERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6CisJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEUz OworCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzNfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJS VVBUOgorCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRFNDsKKwljYXNlIERDTl8xXzBfX1NS Q0lEX19PVEc0X0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoKKwkJcmV0dXJuIERDX0lS UV9TT1VSQ0VfVlVQREFURTU7CisJY2FzZSBEQ05fMV8wX19TUkNJRF9fT1RHNV9JSENfVl9VUERB VEVfTk9fTE9DS19JTlRFUlJVUFQ6CisJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU2Owog CWNhc2UgRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZMSVBfSU5URVJSVVBUOgogCQlyZXR1cm4gRENf SVJRX1NPVVJDRV9QRkxJUDE7CiAJY2FzZSBEQ05fMV8wX19TUkNJRF9fSFVCUDFfRkxJUF9JTlRF UlJVUFQ6CkBAIC0xNTMsNiArMTY1LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJj ZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsKIAkuYWNrID0gTlVMTAogfTsK IAorc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9ub19s b2NrX2lycV9pbmZvX2Z1bmNzID0geworCS5zZXQgPSBOVUxMLAorCS5hY2sgPSBOVUxMCit9Owor CiAjZGVmaW5lIEJBU0VfSU5ORVIoc2VnKSBcCiAJRENFX0JBU0VfX0lOU1QwX1NFRyAjIyBzZWcK IApAQCAtMjAzLDEyICsyMjAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2lu Zm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewogCQkuZnVuY3MgPSAmcGZsaXBfaXJx X2luZm9fZnVuY3NcCiAJfQogCi0jZGVmaW5lIHZ1cGRhdGVfaW50X2VudHJ5KHJlZ19udW0pXAor LyogdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSBtYXBzIHRvIERDX0lSUV9TT1VSQ0VfVlVQREFU RXgsIHRvIG1hdGNoIHNlbWFudGljCisgKiBvZiBEQ0UncyBEQ19JUlFfU09VUkNFX1ZVUERBVEV4 LgorICovCisjZGVmaW5lIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkocmVnX251bSlcCiAJW0RD X0lSUV9TT1VSQ0VfVlVQREFURTEgKyByZWdfbnVtXSA9IHtcCiAJCUlSUV9SRUdfRU5UUlkoT1RH LCByZWdfbnVtLFwKLQkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfSU5UX0VOLFwK LQkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfRVZFTlRfQ0xFQVIpLFwKLQkJLmZ1 bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wKKwkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMs IFZVUERBVEVfTk9fTE9DS19JTlRfRU4sXAorCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQ REFURV9OT19MT0NLX0VWRU5UX0NMRUFSKSxcCisJCS5mdW5jcyA9ICZ2dXBkYXRlX25vX2xvY2tf aXJxX2luZm9fZnVuY3NcCiAJfQogCiAjZGVmaW5lIHZibGFua19pbnRfZW50cnkocmVnX251bSlc CkBAIC0zMTUsMTIgKzMzNSwxMiBAQCBpcnFfc291cmNlX2luZm9fZGNuMTBbREFMX0lSUV9TT1VS Q0VTX05VTUJFUl0gPSB7CiAJZGNfdW5kZXJmbG93X2ludF9lbnRyeSg2KSwKIAlbRENfSVJRX1NP VVJDRV9ETUNVX1NDUF0gPSBkdW1teV9pcnFfZW50cnkoKSwKIAlbRENfSVJRX1NPVVJDRV9WQklP U19TV10gPSBkdW1teV9pcnFfZW50cnkoKSwKLQl2dXBkYXRlX2ludF9lbnRyeSgwKSwKLQl2dXBk YXRlX2ludF9lbnRyeSgxKSwKLQl2dXBkYXRlX2ludF9lbnRyeSgyKSwKLQl2dXBkYXRlX2ludF9l bnRyeSgzKSwKLQl2dXBkYXRlX2ludF9lbnRyeSg0KSwKLQl2dXBkYXRlX2ludF9lbnRyeSg1KSwK Kwl2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDApLAorCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50 cnkoMSksCisJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgyKSwKKwl2dXBkYXRlX25vX2xvY2tf aW50X2VudHJ5KDMpLAorCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoNCksCisJdnVwZGF0ZV9u b19sb2NrX2ludF9lbnRyeSg1KSwKIAl2YmxhbmtfaW50X2VudHJ5KDApLAogCXZibGFua19pbnRf ZW50cnkoMSksCiAJdmJsYW5rX2ludF9lbnRyeSgyKSwKLS0gCjIuMTcuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4