From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH 2/2] drm/i915: Add short HPD IRQ storm detection for non-MST systems Date: Thu, 25 Oct 2018 18:26:57 -0400 Message-ID: <20181025222657.9241-3-lyude@redhat.com> References: <20181025222657.9241-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181025222657.9241-1-lyude@redhat.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: David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org VW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhhdCB0aGUgSFBEIElSUSBzdG9ybSBwcm9ibGVtIGZy b20gdGhlIGVhcmx5CmRheXMgb2YgSW50ZWwgR1BVcyB3YXMgbmV2ZXIgZW50aXJlbHkgc29sdmVk LCBvbmx5IG1vc3RseS4gV2l0aGluIHRoZQpsYXN0IGNvdXBsZSBvZiBkYXlzLCBJIGdvdCBhIGJ1 ZyByZXBvcnQgZnJvbSBvbmUgb2Ygb3VyIGN1c3RvbWVycyB3aG8KaGFkIGJlZW4gaGF2aW5nIGlz c3VlcyB3aXRoIHRoZWlyIG1hY2hpbmUgc3VkZGVubHkgYm9vdGluZyB1cCB2ZXJ5CnNsb3dseSBh ZnRlciBoYXZpbmcgdXBkYXRlZC4gVGhlIGFtb3VudCBvZiB0aW1lIGl0IHRvb2sgdG8gYm9vdCB3 ZW50CmZyb20gYXJvdW5kIDMwIHNlY29uZHMsIHRvIG92ZXIgNiBtaW51dGVzIGNvbnNpc3RlbnRs eS4KCkFmdGVyIHNvbWUgaW52ZXN0aWdhdGlvbiwgSSBkaXNjb3ZlcmVkIHRoYXQgaTkxNSB3YXMg cmVwb3J0aW5nIG1hc3NpdmUKYW1vdW50cyBvZiBzaG9ydCBIUEQgSVJRIHNwYW0gb24gdGhpcyBz eXN0ZW0gZnJvbSB0aGUgRGlzcGxheVBvcnQgcG9ydCwKZGVzcGl0ZSB0aGVyZSBub3QgYmVpbmcg YW55dGhpbmcgYWN0dWFsbHkgY29ubmVjdGVkLiBUaGUgc3ltcHRvbXMgd291bGQKc3RhcnQgd2l0 aCBvbmUgImxvbmciIEhQRCBJUlEgYmVpbmcgZGV0ZWN0ZWQgYXQgYm9vdDoKClsgICAgMS44OTEz OThdIFtkcm06aW50ZWxfZ2V0X2hwZF9waW5zIFtpOTE1XV0gaG90cGx1ZyBldmVudCByZWNlaXZl ZCwgc3RhdCAweDAwNDQwMDAwLCBkaWcgMHgwMDQ0MDAwMCwgcGlucyAweDAwMDAwMGEwClsgICAg MS44OTE0MzZdIFtkcm06aW50ZWxfaHBkX2lycV9oYW5kbGVyIFtpOTE1XV0gZGlnaXRhbCBocGQg cG9ydCBCIC0gbG9uZwpbICAgIDEuODkxNDcyXSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBb aTkxNV1dIFJlY2VpdmVkIEhQRCBpbnRlcnJ1cHQgb24gUElOIDUgLSBjbnQ6IDAKWyAgICAxLjg5 MTUwOF0gW2RybTppbnRlbF9ocGRfaXJxX2hhbmRsZXIgW2k5MTVdXSBkaWdpdGFsIGhwZCBwb3J0 IEQgLSBsb25nClsgICAgMS44OTE1NDRdIFtkcm06aW50ZWxfaHBkX2lycV9oYW5kbGVyIFtpOTE1 XV0gUmVjZWl2ZWQgSFBEIGludGVycnVwdCBvbiBQSU4gNyAtIGNudDogMApbICAgIDEuODkxNTky XSBbZHJtOmludGVsX2RwX2hwZF9wdWxzZSBbaTkxNV1dIGdvdCBocGQgaXJxIG9uIHBvcnQgQiAt IGxvbmcKWyAgICAxLjg5MTYyOF0gW2RybTppbnRlbF9kcF9ocGRfcHVsc2UgW2k5MTVdXSBnb3Qg aHBkIGlycSBvbiBwb3J0IEQgLSBsb25nCuKApgoKZm9sbG93ZWQgYnkgY29uc3RhbnQgc2hvcnQg SVJRcyBhZnRlcndhcmRzOgoKWyAgICAxLjg5NTA5MV0gW2RybTppbnRlbF9lbmNvZGVyX2hvdHBs dWcgW2k5MTVdXSBbQ09OTkVDVE9SOjY2OkRQLTFdIHN0YXR1cyB1cGRhdGVkIGZyb20gdW5rbm93 biB0byBkaXNjb25uZWN0ZWQKWyAgICAxLjg5NTEyOV0gW2RybTppOTE1X2hvdHBsdWdfd29ya19m dW5jIFtpOTE1XV0gQ29ubmVjdG9yIERQLTMgKHBpbiA3KSByZWNlaXZlZCBob3RwbHVnIGV2ZW50 LgpbICAgIDEuODk1MTY1XSBbZHJtOmludGVsX2RwX2RldGVjdCBbaTkxNV1dIFtDT05ORUNUT1I6 NzI6RFAtM10KWyAgICAxLjg5NTI3NV0gW2RybTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVdXSBo b3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAwLCBw aW5zIDB4MDAwMDAwODAKWyAgICAxLjg5NTMxMl0gW2RybTppbnRlbF9ocGRfaXJxX2hhbmRsZXIg W2k5MTVdXSBkaWdpdGFsIGhwZCBwb3J0IEQgLSBzaG9ydApbICAgIDEuODk1NzYyXSBbZHJtOmlu dGVsX2dldF9ocGRfcGlucyBbaTkxNV1dIGhvdHBsdWcgZXZlbnQgcmVjZWl2ZWQsIHN0YXQgMHgw MDIwMDAwMCwgZGlnIDB4MDAyMDAwMDAsIHBpbnMgMHgwMDAwMDA4MApbICAgIDEuODk1Nzk5XSBb ZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgRCAtIHNo b3J0ClsgICAgMS44OTYyMzldIFtkcm06aW50ZWxfZHBfYXV4X3hmZXIgW2k5MTVdXSBkcF9hdXhf Y2ggdGltZW91dCBzdGF0dXMgMHg3MTQ1MDA4NQpbICAgIDEuODk2MjkzXSBbZHJtOmludGVsX2dl dF9ocGRfcGlucyBbaTkxNV1dIGhvdHBsdWcgZXZlbnQgcmVjZWl2ZWQsIHN0YXQgMHgwMDIwMDAw MCwgZGlnIDB4MDAyMDAwMDAsIHBpbnMgMHgwMDAwMDA4MApbICAgIDEuODk2MzMwXSBbZHJtOmlu dGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgRCAtIHNob3J0Clsg ICAgMS44OTY3ODFdIFtkcm06aW50ZWxfZ2V0X2hwZF9waW5zIFtpOTE1XV0gaG90cGx1ZyBldmVu dCByZWNlaXZlZCwgc3RhdCAweDAwMjAwMDAwLCBkaWcgMHgwMDIwMDAwMCwgcGlucyAweDAwMDAw MDgwClsgICAgMS44OTY4MTddIFtkcm06aW50ZWxfaHBkX2lycV9oYW5kbGVyIFtpOTE1XV0gZGln aXRhbCBocGQgcG9ydCBEIC0gc2hvcnQKWyAgICAxLjg5NzI3NV0gW2RybTppbnRlbF9nZXRfaHBk X3BpbnMgW2k5MTVdXSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0IDB4MDAyMDAwMDAsIGRp ZyAweDAwMjAwMDAwLCBwaW5zIDB4MDAwMDAwODAKClRoZSBjdXN0b21lcidzIHN5c3RlbSBpbiBx dWVzdGlvbiBoYXMgYSBHTTQ1IEdQVSwgd2hpY2ggaXMgYXBwYXJlbnRseQp3ZWxsIGtub3duIGZv ciBob3RwbHVnZ2luZyBzdG9ybXMuCgpTbywgd29ya2Fyb3VuZCB0aGlzIGltcHJlc3NpdmVseSBi cm9rZW4gaGFyZHdhcmUgYnkgZGV0ZWN0aW5nIHNob3J0IElSUQpzdG9ybXMgdXNpbmcgYSBzZXBh cmF0ZSB0aHJlc2hvbGQgYW5kIGNvdW50LCBvbmUgdGhhdCBpcyBtdWNoIGhpZ2hlcgp0aGVuIHRo ZSB0aHJlc2hvbGQgZm9yIGxvbmcgSVJRcy4gV2UgZGVmYXVsdCB0byBhIHRocmVzaG9sZCBvZiA1 MCBzaG9ydApwdWxzZXMgd2l0aGluIHRoZSB0aW1lc3BhbiBvZiBhIHNlY29uZCwgd2hpY2ggc2hv dWxkIGFtb3VudCB0byBhYm91dAoxMDBtcyBvZiBjb25zdGFudCBwdWxzaW5nLiBUaGlzIHNob3Vs ZCBiZSBhIGdvb2QgbWlkZGxlIGdyb3VuZCBiZXR3ZWVuCmF2b2lkaW5nIGRldGVjdGluZyBmYWxz ZSBJUlEgc3Rvcm1zLCB3aGlsZSBzdGlsbCBjYXRjaGluZyBzaG9ydCBJUlEKc3Rvcm1zIHF1aWNr bHkgZW5vdWdoIHRvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgdGltZSB3ZSdsbCBzdHV0dGVyIGV2 ZXJ5CnRpbWUgaG90cGx1Z2dpbmcgZ2V0cyByZS1lbmFibGVkIGFuZCBpbW1lZGlhdGVseSBkaXNh YmxlZCBieSBhbm90aGVyCnNob3J0IElSUSBzdG9ybS4KCkFuZCBqdXN0IHRvIGJlIGV4dHJhIHNh ZmU6IHdlIGRvbid0IGVuYWJsZSB0aGlzIGJ5IGRlZmF1bHQgb24gc3lzdGVtcwp3aXRoIE1TVCBz dXBwb3J0LiBUaGVyZSdzIHRvbyBoaWdoIG9mIGEgY2hhbmNlIG9mIE1TVCBzdXBwb3J0IHRyaWdn ZXJpbmcKc3Rvcm0gZGV0ZWN0aW9uLCBhbmQgc3lzdGVtcyB0aGF0IGFyZSBuZXcgZW5vdWdoIHRv IHN1cHBvcnQgTVNUIGFyZSBhCmxvdCBsZXNzIGxpa2VseSB0byBoYXZlIGlzc3VlcyB3aXRoIElS USBzdG9ybXMgYW55d2F5LgoKQXMgYSBub3RlOiB0aGlzIHBhdGNoIHdhcyB0ZXN0ZWQgdXNpbmcg YSBUaGlua1BhZCBUNDUwcyBhbmQgYSBDaGFtZWxpdW0KdG8gc2ltdWxhdGUgdGhlIHNob3J0IElS USBzdG9ybXMuCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgpD YzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCA4OSArKysrKysrKysrKysrKysr KysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAxNSAr KystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgIHwgMTQgKysrKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYyB8IDg0ICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGI0NzQ0YTY4Y2Q4OC4u ODRlODlmYmQ1NWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNDU2Niwy MSArNDU2NiwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Zv cmNld2FrZV9mb3BzID0gewogCS5yZWxlYXNlID0gaTkxNV9mb3JjZXdha2VfcmVsZWFzZSwKIH07 CiAKLXN0YXRpYyBpbnQgaTkxNV9ocGRfc3Rvcm1fY3RsX3Nob3coc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQorc3RhdGljIGludCBpOTE1X2hwZF9zdG9ybV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgYm9vbCBsb25nX2hwZCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBtLT5wcml2YXRlOwogCXN0cnVjdCBpOTE1X2hvdHBsdWcgKmhvdHBsdWcgPSAmZGV2 X3ByaXYtPmhvdHBsdWc7CisJY29uc3QgdW5zaWduZWQgaW50IHRocmVzaG9sZCA9IGxvbmdfaHBk ID8KKwkJaG90cGx1Zy0+bG9uZ19ocGRfc3Rvcm1fdGhyZXNob2xkIDoKKwkJaG90cGx1Zy0+c2hv cnRfaHBkX3N0b3JtX3RocmVzaG9sZDsKIAotCXNlcV9wcmludGYobSwgIlRocmVzaG9sZDogJWRc biIsIGhvdHBsdWctPmhwZF9zdG9ybV90aHJlc2hvbGQpOworCXNlcV9wcmludGYobSwgIlRocmVz aG9sZDogJWRcbiIsIHRocmVzaG9sZCk7CiAJc2VxX3ByaW50ZihtLCAiRGV0ZWN0ZWQ6ICVzXG4i LAogCQkgICB5ZXNubyhkZWxheWVkX3dvcmtfcGVuZGluZygmaG90cGx1Zy0+cmVlbmFibGVfd29y aykpKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3NpemVfdCBpOTE1X2hwZF9zdG9ybV9j dGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCi0JCQkJCWNvbnN0IGNoYXIgX191c2VyICp1YnVm LCBzaXplX3QgbGVuLAotCQkJCQlsb2ZmX3QgKm9mZnApCitzdGF0aWMgc3NpemVfdCBpOTE1X2hw ZF9zdG9ybV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCQkgICAgY29uc3QgY2hhciBfX3Vz ZXIgKnVidWYsIHNpemVfdCBsZW4sCisJCQkJICAgIGxvZmZfdCAqb2ZmcCwgYm9vbCBsb25nX2hw ZCkKIHsKIAlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKQEAgLTQ1ODksNiArNDU5 Miw3IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwKIAlpbnQgaTsKIAljaGFyICpuZXdsaW5lOwogCWNoYXIgdG1wWzE2XTsKKwljb25z dCBjaGFyICpuYW1lID0gbG9uZ19ocGQgPyAibG9uZyIgOiAic2hvcnQiOwogCiAJaWYgKGxlbiA+ PSBzaXplb2YodG1wKSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC00NjAzLDIyICs0NjA3LDM2IEBA IHN0YXRpYyBzc2l6ZV90IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwKIAlpZiAobmV3bGluZSkKIAkJKm5ld2xpbmUgPSAnXDAnOwogCi0JaWYgKHN0cmNtcCh0bXAs ICJyZXNldCIpID09IDApCi0JCW5ld190aHJlc2hvbGQgPSBIUERfU1RPUk1fREVGQVVMVF9USFJF U0hPTEQ7Ci0JZWxzZSBpZiAoa3N0cnRvdWludCh0bXAsIDEwLCAmbmV3X3RocmVzaG9sZCkgIT0g MCkKKwlpZiAoc3RyY21wKHRtcCwgInJlc2V0IikgPT0gMCkgeworCQlpZiAobG9uZ19ocGQpCisJ CQluZXdfdGhyZXNob2xkID0gSFBEX1NUT1JNX0RFRkFVTFRfVEhSRVNIT0xEX0xPTkc7CisJCWVs c2UgaWYgKCFIQVNfRFBfTVNUKGRldl9wcml2KSkKKwkJCW5ld190aHJlc2hvbGQgPSBIUERfU1RP Uk1fREVGQVVMVF9USFJFU0hPTERfU0hPUlQ7CisJCWVsc2UKKwkJCW5ld190aHJlc2hvbGQgPSAw OworCX0gZWxzZSBpZiAoa3N0cnRvdWludCh0bXAsIDEwLCAmbmV3X3RocmVzaG9sZCkgIT0gMCkg ewogCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAlpZiAobmV3X3RocmVzaG9sZCA+IDApCi0JCURS TV9ERUJVR19LTVMoIlNldHRpbmcgSFBEIHN0b3JtIGRldGVjdGlvbiB0aHJlc2hvbGQgdG8gJWRc biIsCi0JCQkgICAgICBuZXdfdGhyZXNob2xkKTsKKwkJRFJNX0RFQlVHX0tNUygiU2V0dGluZyAl cyBIUEQgc3Rvcm0gZGV0ZWN0aW9uIHRocmVzaG9sZCB0byAlZFxuIiwKKwkJCSAgICAgIG5hbWUs IG5ld190aHJlc2hvbGQpOwogCWVsc2UKLQkJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIEhQRCBz dG9ybSBkZXRlY3Rpb25cbiIpOworCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgJXMgSFBEIHN0 b3JtIGRldGVjdGlvblxuIiwgbmFtZSk7CiAKIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJx X2xvY2spOwotCWhvdHBsdWctPmhwZF9zdG9ybV90aHJlc2hvbGQgPSBuZXdfdGhyZXNob2xkOwor CWlmIChsb25nX2hwZCkKKwkJaG90cGx1Zy0+bG9uZ19ocGRfc3Rvcm1fdGhyZXNob2xkID0gbmV3 X3RocmVzaG9sZDsKKwllbHNlCisJCWhvdHBsdWctPnNob3J0X2hwZF9zdG9ybV90aHJlc2hvbGQg PSBuZXdfdGhyZXNob2xkOworCiAJLyogUmVzZXQgdGhlIEhQRCBzdG9ybSBzdGF0cyBzbyB3ZSBk b24ndCBhY2NpZGVudGFsbHkgdHJpZ2dlciBhIHN0b3JtICovCi0JZm9yX2VhY2hfaHBkX3Bpbihp KQotCQlob3RwbHVnLT5zdGF0c1tpXS5jb3VudCA9IDA7CisJZm9yX2VhY2hfaHBkX3BpbihpKSB7 CisJCWlmIChsb25nX2hwZCkKKwkJCWhvdHBsdWctPnN0YXRzW2ldLmxvbmdfaXJxLmNvdW50ID0g MDsKKwkJZWxzZQorCQkJaG90cGx1Zy0+c3RhdHNbaV0uc2hvcnRfaXJxLmNvdW50ID0gMDsKKwl9 CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJLyogUmUtZW5hYmxl IGhwZCBpbW1lZGlhdGVseSBpZiB3ZSB3ZXJlIGluIGFuIGlycSBzdG9ybSAqLwpAQCAtNDYyNyw2 ICs0NjQ1LDE4IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1 Y3QgZmlsZSAqZmlsZSwKIAlyZXR1cm4gbGVuOwogfQogCitzdGF0aWMgc3NpemVfdAoraTkxNV9o cGRfc3Rvcm1fY3RsX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAq dWJ1ZiwKKwkJCSBzaXplX3QgbGVuLCBsb2ZmX3QgKm9mZnApCit7CisJcmV0dXJuIGk5MTVfaHBk X3N0b3JtX3dyaXRlKGZpbGUsIHVidWYsIGxlbiwgb2ZmcCwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBp bnQgaTkxNV9ocGRfc3Rvcm1fY3RsX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRh KQoreworCXJldHVybiBpOTE1X2hwZF9zdG9ybV9zaG93KG0sIHRydWUpOworfQorCiBzdGF0aWMg aW50IGk5MTVfaHBkX3N0b3JtX2N0bF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm aWxlICpmaWxlKQogewogCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X2hwZF9zdG9ybV9j dGxfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7CkBAIC00NjM4LDcgKzQ2NjgsMzUgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9ocGRfc3Rvcm1fY3RsX2ZvcHMgPSB7 CiAJLnJlYWQgPSBzZXFfcmVhZCwKIAkubGxzZWVrID0gc2VxX2xzZWVrLAogCS5yZWxlYXNlID0g c2luZ2xlX3JlbGVhc2UsCi0JLndyaXRlID0gaTkxNV9ocGRfc3Rvcm1fY3RsX3dyaXRlCisJLndy aXRlID0gaTkxNV9ocGRfc3Rvcm1fY3RsX3dyaXRlLAorfTsKKworc3RhdGljIHNzaXplX3QKK2k5 MTVfc2hvcnRfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hh ciBfX3VzZXIgKnVidWYsCisJCQkgICAgICAgc2l6ZV90IGxlbiwgbG9mZl90ICpvZmZwKQorewor CXJldHVybiBpOTE1X2hwZF9zdG9ybV93cml0ZShmaWxlLCB1YnVmLCBsZW4sIG9mZnAsIGZhbHNl KTsKK30KKworc3RhdGljIGludCBpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCit7CisJcmV0dXJuIGk5MTVfaHBkX3N0b3JtX3Nob3co bSwgZmFsc2UpOworfQorCitzdGF0aWMgaW50CitpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfb3Bl bihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlyZXR1cm4gc2lu Z2xlX29wZW4oZmlsZSwgaTkxNV9zaG9ydF9ocGRfc3Rvcm1fY3RsX3Nob3csCisJCQkgICBpbm9k ZS0+aV9wcml2YXRlKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg aTkxNV9zaG9ydF9ocGRfc3Rvcm1fY3RsX2ZvcHMgPSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUs CisJLm9wZW4gPSBpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfb3BlbiwKKwkucmVhZCA9IHNlcV9y ZWFkLAorCS5sbHNlZWsgPSBzZXFfbHNlZWssCisJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwK Kwkud3JpdGUgPSBpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfd3JpdGUsCiB9OwogCiBzdGF0aWMg aW50IGk5MTVfZHJyc19jdGxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCkBAIC00ODE4LDYgKzQ4 NzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7CiAJeyJpOTE1 X2d1Y19sb2dfbGV2ZWwiLCAmaTkxNV9ndWNfbG9nX2xldmVsX2ZvcHN9LAogCXsiaTkxNV9ndWNf bG9nX3JlbGF5IiwgJmk5MTVfZ3VjX2xvZ19yZWxheV9mb3BzfSwKIAl7Imk5MTVfaHBkX3N0b3Jt X2N0bCIsICZpOTE1X2hwZF9zdG9ybV9jdGxfZm9wc30sCisJeyJpOTE1X3Nob3J0X2hwZF9zdG9y bV9jdGwiLCAmaTkxNV9zaG9ydF9ocGRfc3Rvcm1fY3RsX2ZvcHN9LAogCXsiaTkxNV9pcGNfc3Rh dHVzIiwgJmk5MTVfaXBjX3N0YXR1c19mb3BzfSwKIAl7Imk5MTVfZHJyc19jdGwiLCAmaTkxNV9k cnJzX2N0bF9mb3BzfSwKIAl7Imk5MTVfZWRwX3Bzcl9kZWJ1ZyIsICZpOTE1X2VkcF9wc3JfZGVi dWdfZm9wc30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDgwODIwNGE3Y2E3Yy4uZWYzOGJh ZjUwMjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI4MiwxNCArMjgyLDIwIEBAIGVu dW0gaHBkX3BpbiB7CiAjZGVmaW5lIGZvcl9lYWNoX2hwZF9waW4oX19waW4pIFwKIAlmb3IgKChf X3BpbikgPSAoSFBEX05PTkUgKyAxKTsgKF9fcGluKSA8IEhQRF9OVU1fUElOUzsgKF9fcGluKSsr KQogCi0jZGVmaW5lIEhQRF9TVE9STV9ERUZBVUxUX1RIUkVTSE9MRCA1CisjZGVmaW5lIEhQRF9T VE9STV9ERUZBVUxUX1RIUkVTSE9MRF9MT05HCTUKKyNkZWZpbmUgSFBEX1NUT1JNX0RFRkFVTFRf VEhSRVNIT0xEX1NIT1JUCTUwCisKK3N0cnVjdCBpbnRlbF9ocGRfaXJxX3N0YXRzIHsKKwl1bnNp Z25lZCBsb25nIGxhc3RfamlmZmllczsKKwlpbnQgY291bnQ7Cit9OwogCiBzdHJ1Y3QgaTkxNV9o b3RwbHVnIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaG90cGx1Z193b3JrOwogCiAJc3RydWN0IHsK LQkJdW5zaWduZWQgbG9uZyBsYXN0X2ppZmZpZXM7Ci0JCWludCBjb3VudDsKKwkJc3RydWN0IGlu dGVsX2hwZF9pcnFfc3RhdHMgbG9uZ19pcnE7CisJCXN0cnVjdCBpbnRlbF9ocGRfaXJxX3N0YXRz IHNob3J0X2lycTsKIAkJZW51bSB7CiAJCQlIUERfRU5BQkxFRCA9IDAsCiAJCQlIUERfRElTQUJM RUQgPSAxLApAQCAtMzA2LDcgKzMxMiw4IEBAIHN0cnVjdCBpOTE1X2hvdHBsdWcgewogCXN0cnVj dCB3b3JrX3N0cnVjdCBwb2xsX2luaXRfd29yazsKIAlib29sIHBvbGxfZW5hYmxlZDsKIAotCXVu c2lnbmVkIGludCBocGRfc3Rvcm1fdGhyZXNob2xkOworCXVuc2lnbmVkIGludCBsb25nX2hwZF9z dG9ybV90aHJlc2hvbGQ7CisJdW5zaWduZWQgaW50IHNob3J0X2hwZF9zdG9ybV90aHJlc2hvbGQ7 CiAKIAkvKgogCSAqIGlmIHdlIGdldCBhIEhQRCBpcnEgZnJvbSBEUCBhbmQgYSBIUEQgaXJxIGZy b20gbm9uLURQCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCAxMGYyOGEyZWUyZTYuLjI4YTkz N2YzZThlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC00ODQyLDcgKzQ4NDIsMTkgQEAg dm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQog CQlkZXZfcHJpdi0+ZGlzcGxheV9pcnFzX2VuYWJsZWQgPSBmYWxzZTsKIAotCWRldl9wcml2LT5o b3RwbHVnLmhwZF9zdG9ybV90aHJlc2hvbGQgPSBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hPTEQ7 CisJZGV2X3ByaXYtPmhvdHBsdWcubG9uZ19ocGRfc3Rvcm1fdGhyZXNob2xkID0KKwkJSFBEX1NU T1JNX0RFRkFVTFRfVEhSRVNIT0xEX0xPTkc7CisKKwkvKiBJZiB3ZSBoYXZlIE1TVCBzdXBwb3J0 LCB3ZSB3YW50IHRvIGF2b2lkIGRvaW5nIHNob3J0IEhQRCBJUlEgc3Rvcm0KKwkgKiBkZXRlY3Rp b24sIGFzIHNob3J0IEhQRCBzdG9ybXMgd2lsbCBvY2N1ciBhcyBhIG5hdHVyYWwgcGFydCBvZgor CSAqIHNpZGViYW5kIG1lc3NhZ2luZyB3aXRoIE1TVC4KKwkgKiBPbiBvbGRlciBwbGF0Zm9ybXMg aG93ZXZlciwgSVJRIHN0b3JtcyBjYW4gb2NjdXIgd2l0aCBib3RoIGxvbmcgYW5kCisJICogc2hv cnQgcHVsc2VzLCBhcyBzZWVuIG9uIHNvbWUgRzR4IHN5c3RlbXMuCisJICovCisJaWYgKCFIQVNf RFBfTVNUKGRldl9wcml2KSkgeworCQlkZXZfcHJpdi0+aG90cGx1Zy5zaG9ydF9ocGRfc3Rvcm1f dGhyZXNob2xkID0KKwkJCUhQRF9TVE9STV9ERUZBVUxUX1RIUkVTSE9MRF9TSE9SVDsKKwl9CiAK IAlkZXYtPmRyaXZlci0+Z2V0X3ZibGFua190aW1lc3RhbXAgPSBkcm1fY2FsY192Ymx0aW1lc3Rh bXBfZnJvbV9zY2Fub3V0cG9zOwogCWRldi0+ZHJpdmVyLT5nZXRfc2Nhbm91dF9wb3NpdGlvbiA9 IGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcu YwppbmRleCA3ZDIxYWFjMTBkMTYuLjc0Nzk4YzkyMDkwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hvdHBsdWcuYwpAQCAtMTE4LDQxICsxMTgsNjQgQEAgZW51bSBocGRfcGluIGludGVsX2hw ZF9waW5fZGVmYXVsdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKiBAZGV2 X3ByaXY6IHByaXZhdGUgZHJpdmVyIGRhdGEgcG9pbnRlcgogICogQHBpbjogdGhlIHBpbiB0byBn YXRoZXIgc3RhdHMgb24KICAqCi0gKiBHYXRoZXIgc3RhdHMgYWJvdXQgSFBEIGlycXMgZnJvbSB0 aGUgc3BlY2lmaWVkIEBwaW4sIGFuZCBkZXRlY3QgaXJxCisgKiBHYXRoZXIgc3RhdHMgYWJvdXQg SFBEIElSUXMgZnJvbSB0aGUgc3BlY2lmaWVkIEBwaW4sIGFuZCBkZXRlY3QgSVJRCiAgKiBzdG9y bXMuIE9ubHkgdGhlIHBpbiBzcGVjaWZpYyBzdGF0cyBhbmQgc3RhdGUgYXJlIGNoYW5nZWQsIHRo ZSBjYWxsZXIgaXMKICAqIHJlc3BvbnNpYmxlIGZvciBmdXJ0aGVyIGFjdGlvbi4KICAqCi0gKiBU aGUgbnVtYmVyIG9mIGlycXMgdGhhdCBhcmUgYWxsb3dlZCB3aXRoaW4gQEhQRF9TVE9STV9ERVRF Q1RfUEVSSU9EIGlzCi0gKiBzdG9yZWQgaW4gQGRldl9wcml2LT5ob3RwbHVnLmhwZF9zdG9ybV90 aHJlc2hvbGQgd2hpY2ggZGVmYXVsdHMgdG8KLSAqIEBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hP TEQuIElmIHRoaXMgdGhyZXNob2xkIGlzIGV4Y2VlZGVkLCBpdCdzCi0gKiBjb25zaWRlcmVkIGFu IGlycSBzdG9ybSBhbmQgdGhlIGlycSBzdGF0ZSBpcyBzZXQgdG8gQEhQRF9NQVJLX0RJU0FCTEVE LgorICogSVJRIHN0b3JtIGRldGVjdGlvbiBjYW4gaGFwcGVuIGZvciBib3RoIGxvbmcgYW5kIHNo b3J0IElSUXMuIFRoZSBudW1iZXIgb2YKKyAqIHNob3J0IG9yIGxvbmcgSVJRcyB0aGF0IGFyZSBh bGxvd2VkIHdpdGhpbiBASFBEX1NUT1JNX0RFVEVDVF9QRVJJT0QgYXJlCisgKiBzdG9yZWQgaW4g QGRldl9wcml2LT5ob3RwbHVnLmxvbmdfaHBkX3N0b3JtX3RocmVzaG9sZCBhbmQKKyAqIEBkZXZf cHJpdi0+aG90cGx1Zy5zaG9ydF9ocGRfc3Rvcm1fdGhyZXNob2xkIHJlc3BlY3RpdmVseS4gRm9y IGxvbmcgSVJRcywKKyAqIHRoZSB0aHJlc2hvbGQgZGVmYXVsdHMgdG8gQEhQRF9TVE9STV9ERUZB VUxUX1RIUkVTSE9MRF9MT05HIG9uIGFsbCBzeXN0ZW1zLgorICogRm9yIHNob3J0IElSUXMgaG93 ZXZlciwgdGhlIGRlZmF1bHQgdGhyZXNob2xkIHZhcmllcy4gT24gc3lzdGVtcyB0aGF0IGFyZQor ICogdG9vIG9sZCB0byBzdXBwb3J0IE1TVCwgdGhlIHRocmVzaG9sZCB3aWxsIGRlZmF1bHQgdG8K KyAqIEBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hPTERfU0hPUlQuIFN5c3RlbXMgd2hpY2ggZG8g c3VwcG9ydCBNU1Qgd2lsbCBub3QKKyAqIGhhdmUgc2hvcnQgSVJRIHN0b3JtIGRldGVjdGlvbiBl bmFibGVkIGJ5IGRlZmF1bHQsIGFzIGRvaW5nIHNvIHdvdWxkIGxpa2VseQorICogaW50ZXJmZXJl IHdpdGggdGhlIHNob3J0IElSUSBidXJzdHMgY2F1c2VkIGJ5IHNpZGViYW5kIHRyYW5zYWN0aW9u cy4KKyAqIFRoaXMgaXMgZmluZSwgYXMgc3lzdGVtcyBuZXcgZW5vdWdoIHRvIHN1cHBvcnQgTVNU IGFyZSB1bmxpa2VseSB0byByZWx5IG9uCisgKiBIUEQgc3Rvcm0gcHJvdGVjdGlvbiBhcyBtdWNo IGFzIG9sZGVyIHN5c3RlbXMgbWF5LgogICoKLSAqIFRoZSBIUEQgdGhyZXNob2xkIGNhbiBiZSBj b250cm9sbGVkIHRocm91Z2ggaTkxNV9ocGRfc3Rvcm1fY3RsIGluIGRlYnVnZnMsCi0gKiBhbmQg c2hvdWxkIG9ubHkgYmUgYWRqdXN0ZWQgZm9yIGF1dG9tYXRlZCBob3RwbHVnIHRlc3RpbmcuCisg KiBUaGUgSFBEIHRocmVzaG9sZCBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIGk5MTVfaHBkX3N0 b3JtX2N0bCBpbiBkZWJ1Z2ZzCisgKiBmb3IgbG9uZyBJUlFzLCBhbmQgaTkxNV9zaG9ydF9ocGRf c3Rvcm1fY3RsIGZvciBzaG9ydCBJUlFzLiBUaGlzIHNob3VsZAorICogb25seSBldmVyIGJlIGFk anVzdGVkIGZvciBhdXRvbWF0ZWQgaG90cGx1ZyB0ZXN0aW5nLgogICoKICAqIFJldHVybiB0cnVl IGlmIGFuIGlycSBzdG9ybSB3YXMgZGV0ZWN0ZWQgb24gQHBpbi4KICAqLwogc3RhdGljIGJvb2wg aW50ZWxfaHBkX2lycV9zdG9ybV9kZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAotCQkJCSAgICAgICBlbnVtIGhwZF9waW4gcGluKQorCQkJCSAgICAgICBlbnVtIGhwZF9w aW4gcGluLCBib29sIGxvbmdfaHBkKQogewotCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBkZXZfcHJp di0+aG90cGx1Zy5zdGF0c1twaW5dLmxhc3RfamlmZmllczsKLQl1bnNpZ25lZCBsb25nIGVuZCA9 IHN0YXJ0ICsgbXNlY3NfdG9famlmZmllcyhIUERfU1RPUk1fREVURUNUX1BFUklPRCk7Ci0JY29u c3QgaW50IHRocmVzaG9sZCA9IGRldl9wcml2LT5ob3RwbHVnLmhwZF9zdG9ybV90aHJlc2hvbGQ7 CisJc3RydWN0IGludGVsX2hwZF9pcnFfc3RhdHMgKnN0YXRzOworCWNvbnN0IGNoYXIgKm5hbWU7 CisJdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOworCWludCB0aHJlc2hvbGQ7CiAJYm9vbCBzdG9y bSA9IGZhbHNlOwogCisJaWYgKGxvbmdfaHBkKSB7CisJCXN0YXRzID0gJmRldl9wcml2LT5ob3Rw bHVnLnN0YXRzW3Bpbl0ubG9uZ19pcnE7CisJCXRocmVzaG9sZCA9IGRldl9wcml2LT5ob3RwbHVn LmxvbmdfaHBkX3N0b3JtX3RocmVzaG9sZDsKKwkJbmFtZSA9ICJsb25nIjsKKwl9IGVsc2Ugewor CQlzdGF0cyA9ICZkZXZfcHJpdi0+aG90cGx1Zy5zdGF0c1twaW5dLnNob3J0X2lycTsKKwkJdGhy ZXNob2xkID0gZGV2X3ByaXYtPmhvdHBsdWcuc2hvcnRfaHBkX3N0b3JtX3RocmVzaG9sZDsKKwkJ bmFtZSA9ICJzaG9ydCI7CisJfQorCXN0YXJ0ID0gc3RhdHMtPmxhc3RfamlmZmllczsKKwllbmQg PSBzdGFydCArIG1zZWNzX3RvX2ppZmZpZXMoSFBEX1NUT1JNX0RFVEVDVF9QRVJJT0QpOworCiAJ aWYgKCF0aW1lX2luX3JhbmdlKGppZmZpZXMsIHN0YXJ0LCBlbmQpKSB7Ci0JCWRldl9wcml2LT5o b3RwbHVnLnN0YXRzW3Bpbl0ubGFzdF9qaWZmaWVzID0gamlmZmllczsKLQkJZGV2X3ByaXYtPmhv dHBsdWcuc3RhdHNbcGluXS5jb3VudCA9IDA7Ci0JCURSTV9ERUJVR19LTVMoIlJlY2VpdmVkIEhQ RCBpbnRlcnJ1cHQgb24gUElOICVkIC0gY250OiAwXG4iLCBwaW4pOwotCX0gZWxzZSBpZiAoZGV2 X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGluXS5jb3VudCA+IHRocmVzaG9sZCAmJgotCQkgICB0aHJl c2hvbGQpIHsKKwkJc3RhdHMtPmxhc3RfamlmZmllcyA9IGppZmZpZXM7CisJCXN0YXRzLT5jb3Vu dCA9IDA7CisJCURSTV9ERUJVR19LTVMoIlJlY2VpdmVkICVzIEhQRCBpbnRlcnJ1cHQgb24gUElO ICVkIC0gY250OiAwXG4iLAorCQkJICAgICAgbmFtZSwgcGluKTsKKwl9IGVsc2UgaWYgKHN0YXRz LT5jb3VudCA+IHRocmVzaG9sZCAmJiB0aHJlc2hvbGQpIHsKIAkJZGV2X3ByaXYtPmhvdHBsdWcu c3RhdHNbcGluXS5zdGF0ZSA9IEhQRF9NQVJLX0RJU0FCTEVEOwotCQlEUk1fREVCVUdfS01TKCJI UEQgaW50ZXJydXB0IHN0b3JtIGRldGVjdGVkIG9uIFBJTiAlZFxuIiwgcGluKTsKKwkJRFJNX0RF QlVHX0tNUygiRGV0ZWN0ZWQgJXMgSFBEIGludGVycnVwdCBzdG9ybSBvbiBQSU4gJWRcbiIsCisJ CQkgICAgICBuYW1lLCBwaW4pOwogCQlzdG9ybSA9IHRydWU7CiAJfSBlbHNlIHsKLQkJZGV2X3By aXYtPmhvdHBsdWcuc3RhdHNbcGluXS5jb3VudCsrOwotCQlEUk1fREVCVUdfS01TKCJSZWNlaXZl ZCBIUEQgaW50ZXJydXB0IG9uIFBJTiAlZCAtIGNudDogJWRcbiIsIHBpbiwKLQkJCSAgICAgIGRl dl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uY291bnQpOworCQlzdGF0cy0+Y291bnQrKzsKKwkJ RFJNX0RFQlVHX0tNUygiUmVjZWl2ZWQgJXMgSFBEIGludGVycnVwdCBvbiBQSU4gJWQgLSBjbnQ6 ICVkXG4iLAorCQkJICAgICAgbmFtZSwgcGluLCBzdGF0cy0+Y291bnQpOwogCX0KIAogCXJldHVy biBzdG9ybTsKQEAgLTQwNCwyOCArNDI3LDI0IEBAIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlmb3JfZWFjaF9pbnRlbF9lbmNv ZGVyKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7CiAJCWVudW0gaHBkX3BpbiBwaW4gPSBlbmNv ZGVyLT5ocGRfcGluOwogCQlib29sIGhhc19ocGRfcHVsc2UgPSBpbnRlbF9lbmNvZGVyX2hhc19o cGRfcHVsc2UoZW5jb2Rlcik7CisJCWJvb2wgbG9uZ19ocGQgPSB0cnVlOwogCiAJCWlmICghKEJJ VChwaW4pICYgcGluX21hc2spKQogCQkJY29udGludWU7CiAKIAkJaWYgKGhhc19ocGRfcHVsc2Up IHsKLQkJCWJvb2wgbG9uZ19ocGQgPSBsb25nX21hc2sgJiBCSVQocGluKTsKIAkJCWVudW0gcG9y dCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKIAorCQkJbG9uZ19ocGQgPSAhIShsb25nX21hc2sgJiBC SVQocGluKSk7CisKIAkJCURSTV9ERUJVR19EUklWRVIoImRpZ2l0YWwgaHBkIHBvcnQgJWMgLSAl c1xuIiwgcG9ydF9uYW1lKHBvcnQpLAogCQkJCQkgbG9uZ19ocGQgPyAibG9uZyIgOiAic2hvcnQi KTsKLQkJCS8qCi0JCQkgKiBGb3IgbG9uZyBIUEQgcHVsc2VzIHdlIHdhbnQgdG8gaGF2ZSB0aGUg ZGlnaXRhbCBxdWV1ZSBoYXBwZW4sCi0JCQkgKiBidXQgd2Ugc3RpbGwgd2FudCBIUEQgc3Rvcm0g ZGV0ZWN0aW9uIHRvIGZ1bmN0aW9uLgotCQkJICovCiAJCQlxdWV1ZV9kaWcgPSB0cnVlOwotCQkJ aWYgKGxvbmdfaHBkKSB7CisJCQlpZiAobG9uZ19ocGQpCiAJCQkJZGV2X3ByaXYtPmhvdHBsdWcu bG9uZ19wb3J0X21hc2sgfD0gKDEgPDwgcG9ydCk7Ci0JCQl9IGVsc2UgewotCQkJCS8qIGZvciBz aG9ydCBIUEQganVzdCB0cmlnZ2VyIHRoZSBkaWdpdGFsIHF1ZXVlICovCisJCQllbHNlCiAJCQkJ ZGV2X3ByaXYtPmhvdHBsdWcuc2hvcnRfcG9ydF9tYXNrIHw9ICgxIDw8IHBvcnQpOwotCQkJCWNv bnRpbnVlOwotCQkJfQorCiAJCX0KIAogCQlpZiAoZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGlu XS5zdGF0ZSA9PSBIUERfRElTQUJMRUQpIHsKQEAgLTQ0OCw3ICs0NjcsNyBAQCB2b2lkIGludGVs X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlx dWV1ZV9ocCA9IHRydWU7CiAJCX0KIAotCQlpZiAoaW50ZWxfaHBkX2lycV9zdG9ybV9kZXRlY3Qo ZGV2X3ByaXYsIHBpbikpIHsKKwkJaWYgKGludGVsX2hwZF9pcnFfc3Rvcm1fZGV0ZWN0KGRldl9w cml2LCBwaW4sIGxvbmdfaHBkKSkgewogCQkJZGV2X3ByaXYtPmhvdHBsdWcuZXZlbnRfYml0cyAm PSB+QklUKHBpbik7CiAJCQlzdG9ybV9kZXRlY3RlZCA9IHRydWU7CiAJCX0KQEAgLTQ4OSw3ICs1 MDgsOCBAQCB2b2lkIGludGVsX2hwZF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlpbnQgaTsKIAogCWZvcl9lYWNoX2hwZF9waW4oaSkgewotCQlkZXZfcHJpdi0+aG90 cGx1Zy5zdGF0c1tpXS5jb3VudCA9IDA7CisJCWRldl9wcml2LT5ob3RwbHVnLnN0YXRzW2ldLmxv bmdfaXJxLmNvdW50ID0gMDsKKwkJZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbaV0uc2hvcnRfaXJx LmNvdW50ID0gMDsKIAkJZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbaV0uc3RhdGUgPSBIUERfRU5B QkxFRDsKIAl9CiAKLS0gCjIuMTcuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==