From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 17/60] hyper_dmabuf: use dynamic debug macros for logging Date: Tue, 19 Dec 2017 11:29:33 -0800 Message-ID: <1513711816-2618-17-git-send-email-dongwon.kim@intel.com> References: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogTWF0ZXVzeiBQb2xyb2xhIDxtYXRldXN6eC5wb3Ryb2xhQGludGVsLmNvbT4KClJlcGxh Y2VzIHByaW50ayB0byBkZWJ1ZyBtYWNyb3MKClNpZ25lZC1vZmYtYnk6IERvbmd3b24gS2ltIDxk b25nd29uLmtpbUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVy X2RtYWJ1Zl9kcnYuYyAgICAgICAgfCAgNCArLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5 cGVyX2RtYWJ1Zl9kcnYuaCAgICAgICAgfCAgNCArKwogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L2h5cGVyX2RtYWJ1Zl9pbXAuYyAgICAgICAgfCA0NiArKysrKysrKystLS0tLQogZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5jICAgICAgfCA1MCArKysrKysrKyst LS0tLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMgICAgICAg IHwgMjYgKysrKystLS0KIC4uLi94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVf c3luYy5jICAgIHwgNjAgKysrKysrKysrKysrLS0tLS0tCiAuLi4veGVuL2h5cGVyX2RtYWJ1Zi94 ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMgICB8IDczICsrKysrKysrKysrKysrKy0tLS0tLS0K IC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jICAgIHwgNTAg KysrKysrKysrLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCAxMDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVy X2RtYWJ1Zl9kcnYuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2 LmMKaW5kZXggZGRjYzk1NS4uOWQ5OTc2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJf ZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYv aHlwZXJfZG1hYnVmX2Rydi5jCkBAIC0xLDYgKzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUu aD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KICNpbmNsdWRlICJoeXBlcl9kbWFidWZfY29u Zi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9tc2cuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFi dWZfZHJ2LmgiCkBAIC0zNiw3ICszNyw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2Rydl9p bml0KHZvaWQpCiAJaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9vcHMgPSAmeGVuX2JhY2tl bmRfb3BzOwogI2VuZGlmCiAKLQlwcmludGsoIEtFUk5fTk9USUNFICJpbml0aWFsaXppbmcgZGF0 YWJhc2UgZm9yIGltcG9ydGVkL2V4cG9ydGVkIGRtYWJ1ZnNcbiIpOworCWRldl9pbmZvKGh5cGVy X2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJICJpbml0aWFsaXppbmcgZGF0YWJhc2UgZm9yIGlt cG9ydGVkL2V4cG9ydGVkIGRtYWJ1ZnNcbiIpOwogCiAJLyogZGV2aWNlIHN0cnVjdHVyZSBpbml0 aWFsaXphdGlvbiAqLwogCS8qIGN1cnJlbnRseSBvbmx5IGRvZXMgd29yay1xdWV1ZSBpbml0aWFs aXphdGlvbiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9kcnYuaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmgK aW5kZXggMDNkNzdkNy4uYzE2ZThkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9kcnYuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2Rydi5oCkBAIC0xLDYgKzEsMTAgQEAKICNpZm5kZWYgX19MSU5VWF9QVUJMSUNf SFlQRVJfRE1BQlVGX0RSVl9IX18KICNkZWZpbmUgX19MSU5VWF9QVUJMSUNfSFlQRVJfRE1BQlVG X0RSVl9IX18KIAorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorCitzdHJ1Y3QgaHlwZXJfZG1h YnVmX3JlcTsKKwogc3RydWN0IGxpc3RfcmV1c2FibGVfaWQgewogCWludCBpZDsKIAlzdHJ1Y3Qg bGlzdF9oZWFkIGxpc3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2ltcC5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9p bXAuYwppbmRleCAwZjEwNGI5Li5iNjFkMjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYvaHlwZXJfZG1hYnVmX2ltcC5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi9oeXBlcl9kbWFidWZfaW1wLmMKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbnQgaHlwZXJfZG1hYnVm X2NsZWFudXBfc2d0X2luZm8oc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAqc2d0X2luZm8s IGludCBmbwogCXN0cnVjdCBoeXBlcl9kbWFidWZfYmFja2VuZF9vcHMgKm9wcyA9IGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmJhY2tlbmRfb3BzOwogCiAJaWYgKCFzZ3RfaW5mbykgewotCQlwcmludGso ImludmFsaWQgaHlwZXJfZG1hYnVmX2lkXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJp dmF0ZS5kZXZpY2UsICJpbnZhbGlkIGh5cGVyX2RtYWJ1Zl9pZFxuIik7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KIApAQCAtMTY4LDcgKzE2OCw3IEBAIGludCBoeXBlcl9kbWFidWZfY2xlYW51cF9z Z3RfaW5mbyhzdHJ1Y3QgaHlwZXJfZG1hYnVmX3NndF9pbmZvICpzZ3RfaW5mbywgaW50IGZvCiAJ ICAgICFsaXN0X2VtcHR5KCZzZ3RfaW5mby0+dmFfdm1hcHBlZC0+bGlzdCkgfHwKIAkgICAgIWxp c3RfZW1wdHkoJnNndF9pbmZvLT5hY3RpdmVfc2d0cy0+bGlzdCkgfHwKIAkgICAgIWxpc3RfZW1w dHkoJnNndF9pbmZvLT5hY3RpdmVfYXR0YWNoZWQtPmxpc3QpKSkgewotCQlwcmludGsoImRtYS1i dWYgaXMgdXNlZCBieSBpbXBvcnRlclxuIik7CisJCWRldl93YXJuKGh5cGVyX2RtYWJ1Zl9wcml2 YXRlLmRldmljZSwgImRtYS1idWYgaXMgdXNlZCBieSBpbXBvcnRlclxuIik7CiAJCXJldHVybiAt RVBFUk07CiAJfQogCkBAIC0yNzMsNyArMjczLDggQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZf b3BzX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiogZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlKiBkZXYsCiAJ CQkJCQkgSFlQRVJfRE1BQlVGX09QU19BVFRBQ0gpOwogCiAJaWYgKHJldCA8IDApIHsKLQkJcHJp bnRrKCJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWls ZWRcbiIsIF9fZnVuY19fKTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2Us CisJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFp bGVkXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC0yOTQsNyArMjk1LDgg QEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19kZXRhY2goc3RydWN0IGRtYV9idWYqIGRt YWJ1Ziwgc3RydWN0IGRtYV9idWZfYXR0YWMKIAkJCQkJCSBIWVBFUl9ETUFCVUZfT1BTX0RFVEFD SCk7CiAKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6 c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlkZXZfZXJy KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9y OnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAl9CiB9CiAK QEAgLTMzMSw3ICszMzMsOCBAQCBzdGF0aWMgc3RydWN0IHNnX3RhYmxlKiBoeXBlcl9kbWFidWZf b3BzX21hcChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZQogCWtmcmVlKHBhZ2Vf aW5mbyk7CiAKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5cGVyX2RtYWJ1Zjo6JXMgRXJy b3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlkZXZf ZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJoeXBlcl9kbWFidWY6OiVzIEVy cm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAl9CiAK IAlyZXR1cm4gc3Q7CkBAIC0zNjMsNyArMzY2LDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVm X29wc191bm1hcChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LAogCQkJCQkJ SFlQRVJfRE1BQlVGX09QU19VTk1BUCk7CiAKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5 cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwg X19mdW5jX18pOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJo eXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIs IF9fZnVuY19fKTsKIAl9CiB9CiAKQEAgLTQwMyw3ICs0MDcsOCBAQCBzdGF0aWMgdm9pZCBoeXBl cl9kbWFidWZfb3BzX3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCiAJfQogCiAJaWYg KHJldCA8IDApIHsKLQkJcHJpbnRrKCJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVm IHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1 ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJfQogCiAJLyoKQEAgLTQyOSw3 ICs0MzQsOCBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9vcHNfYmVnaW5fY3B1X2FjY2Vzcyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBlbnVtIGRtYV9kYQogCXJldCA9IGh5cGVyX2RtYWJ1Zl9z eW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKIAkJCQkJCUhZ UEVSX0RNQUJVRl9PUFNfQkVHSU5fQ1BVX0FDQ0VTUyk7CiAJaWYgKHJldCA8IDApIHsKLQkJcHJp bnRrKCJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWls ZWRcbiIsIF9fZnVuY19fKTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2Us CisJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFp bGVkXG4iLCBfX2Z1bmNfXyk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTQ0OCw3ICs0NTQsOCBA QCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9vcHNfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZiwgZW51bSBkbWFfZGF0YQogCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVl c3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKIAkJCQkJCUhZUEVSX0RNQUJV Rl9PUFNfRU5EX0NQVV9BQ0NFU1MpOwogCWlmIChyZXQgPCAwKSB7Ci0JCXByaW50aygiaHlwZXJf ZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1 bmNfXyk7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJImh5cGVy X2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19m dW5jX18pOwogCX0KIAogCXJldHVybiAwOwpAQCAtNDY3LDcgKzQ3NCw4IEBAIHN0YXRpYyB2b2lk ICpoeXBlcl9kbWFidWZfb3BzX2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHVu c2lnbmVkIGxvbmcKIAlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KHNn dF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCiAJCQkJCQlIWVBFUl9ETUFCVUZfT1BTX0tNQVBfQVRP TUlDKTsKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6 c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlkZXZfZXJy KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9y OnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAl9CiAKIAly ZXR1cm4gTlVMTDsgLyogZm9yIG5vdyBOVUxMLi4gbmVlZCB0byByZXR1cm4gdGhlIGFkZHJlc3Mg b2YgbWFwcGVkIHJlZ2lvbiAqLwpAQCAtNDg2LDcgKzQ5NCw4IEBAIHN0YXRpYyB2b2lkIGh5cGVy X2RtYWJ1Zl9vcHNfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCB1bnNpZ25l ZCBsb25nCiAJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3RfaW5m by0+aHlwZXJfZG1hYnVmX2lkLAogCQkJCQkJSFlQRVJfRE1BQlVGX09QU19LVU5NQVBfQVRPTUlD KTsKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2Vu ZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlkZXZfZXJyKGh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNl bmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAl9CiB9CiAKQEAg LTUwMyw3ICs1MTIsOCBAQCBzdGF0aWMgdm9pZCAqaHlwZXJfZG1hYnVmX29wc19rbWFwKHN0cnVj dCBkbWFfYnVmICpkbWFidWYsIHVuc2lnbmVkIGxvbmcgcGdudW0pCiAJcmV0ID0gaHlwZXJfZG1h YnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAogCQkJ CQkJSFlQRVJfRE1BQlVGX09QU19LTUFQKTsKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoImh5 cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwg X19mdW5jX18pOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJo eXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIs IF9fZnVuY19fKTsKIAl9CiAKIAlyZXR1cm4gTlVMTDsgLyogZm9yIG5vdyBOVUxMLi4gbmVlZCB0 byByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgbWFwcGVkIHJlZ2lvbiAqLwpAQCAtNTIyLDcgKzUzMiw4 IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfa3VubWFwKHN0cnVjdCBkbWFfYnVmICpk bWFidWYsIHVuc2lnbmVkIGxvbmcgcGdudW0sCiAJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVx dWVzdF9hbmRfd2FpdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAogCQkJCQkJSFlQRVJfRE1B QlVGX09QU19LVU5NQVApOwogCWlmIChyZXQgPCAwKSB7Ci0JCXByaW50aygiaHlwZXJfZG1hYnVm OjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7 CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJImh5cGVyX2RtYWJ1 Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18p OwogCX0KIH0KIApAQCAtNTM5LDcgKzU1MCw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX29w c19tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqCiAJ cmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3RfaW5mby0+aHlwZXJf ZG1hYnVmX2lkLAogCQkJCQkJSFlQRVJfRE1BQlVGX09QU19NTUFQKTsKIAlpZiAocmV0IDwgMCkg ewotCQlwcmludGsoImh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1 ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRl LmRldmljZSwKKwkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVx dWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtNTU4LDcg KzU3MCw4IEBAIHN0YXRpYyB2b2lkICpoeXBlcl9kbWFidWZfb3BzX3ZtYXAoc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZikKIAlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KHNn dF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCiAJCQkJCQlIWVBFUl9ETUFCVUZfT1BTX1ZNQVApOwog CWlmIChyZXQgPCAwKSB7Ci0JCXByaW50aygiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRt YWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCWRldl9lcnIoaHlwZXJf ZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJImh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBk bWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOwogCX0KIAogCXJldHVybiBO VUxMOwpAQCAtNTc3LDcgKzU5MCw4IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfdnVu bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHZvaWQgKnZhZGRyKQogCXJldCA9IGh5cGVyX2Rt YWJ1Zl9zeW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKIAkJ CQkJCUhZUEVSX0RNQUJVRl9PUFNfVlVOTUFQKTsKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGso Imh5cGVyX2RtYWJ1Zjo6JXMgRXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxu IiwgX19mdW5jX18pOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJ CSJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRc biIsIF9fZnVuY19fKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2Rt YWJ1Zi9oeXBlcl9kbWFidWZfaW9jdGwuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBl cl9kbWFidWZfaW9jdGwuYwppbmRleCA3MDEwN2JiLi5iMWUwYmRiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMKKysrIGIvZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5jCkBAIC0yNSw3ICsyNSw3IEBAIHN0 YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3R4X2NoX3NldHVwKHZvaWQgKmRhdGEpCiAJaW50IHJldCA9 IDA7CiAKIAlpZiAoIWRhdGEpIHsKLQkJcHJpbnRrKCJ1c2VyIGRhdGEgaXMgTlVMTFxuIik7CisJ CWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAidXNlciBkYXRhIGlzIE5VTExc biIpOwogCQlyZXR1cm4gLTE7CiAJfQogCXR4X2NoX2F0dHIgPSAoc3RydWN0IGlvY3RsX2h5cGVy X2RtYWJ1Zl90eF9jaF9zZXR1cCAqKWRhdGE7CkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBpbnQg aHlwZXJfZG1hYnVmX3J4X2NoX3NldHVwKHZvaWQgKmRhdGEpCiAJaW50IHJldCA9IDA7CiAKIAlp ZiAoIWRhdGEpIHsKLQkJcHJpbnRrKCJ1c2VyIGRhdGEgaXMgTlVMTFxuIik7CisJCWRldl9lcnIo aHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAidXNlciBkYXRhIGlzIE5VTExcbiIpOwogCQly ZXR1cm4gLTE7CiAJfQogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVm X2V4cG9ydF9yZW1vdGUodm9pZCAqZGF0YSkKIAlpbnQgcmV0ID0gMDsKIAogCWlmICghZGF0YSkg ewotCQlwcmludGsoInVzZXIgZGF0YSBpcyBOVUxMXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJ1c2VyIGRhdGEgaXMgTlVMTFxuIik7CiAJCXJldHVybiAtMTsK IAl9CiAKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3Jl bW90ZSh2b2lkICpkYXRhKQogCWRtYV9idWYgPSBkbWFfYnVmX2dldChleHBvcnRfcmVtb3RlX2F0 dHItPmRtYWJ1Zl9mZCk7CiAKIAlpZiAoIWRtYV9idWYpIHsKLQkJcHJpbnRrKCJDYW5ub3QgZ2V0 IGRtYSBidWZcbiIpOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgICJD YW5ub3QgZ2V0IGRtYSBidWZcbiIpOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC05NCw3ICs5NCw3 IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGUodm9pZCAqZGF0YSkKIAog CWF0dGFjaG1lbnQgPSBkbWFfYnVmX2F0dGFjaChkbWFfYnVmLCBoeXBlcl9kbWFidWZfcHJpdmF0 ZS5kZXZpY2UpOwogCWlmICghYXR0YWNobWVudCkgewotCQlwcmludGsoIkNhbm5vdCBnZXQgYXR0 YWNobWVudFxuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiQ2Fu bm90IGdldCBhdHRhY2htZW50XG4iKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjA2LDggKzIw NiwxMCBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9leHBvcnRfZmRfaW9jdGwodm9pZCAqZGF0 YSkKIAlpbnQgb3BlcmFuZDsKIAlpbnQgcmV0ID0gMDsKIAorCWRldl9kYmcoaHlwZXJfZG1hYnVm X3ByaXZhdGUuZGV2aWNlLCAiJXMgZW50cnlcbiIsIF9fZnVuY19fKTsKKwogCWlmICghZGF0YSkg ewotCQlwcmludGsoInVzZXIgZGF0YSBpcyBOVUxMXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJ1c2VyIGRhdGEgaXMgTlVMTFxuIik7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KIApAQCAtMjE4LDEyICsyMjAsMTUgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZf ZXhwb3J0X2ZkX2lvY3RsKHZvaWQgKmRhdGEpCiAJaWYgKHNndF9pbmZvID09IE5VTEwpIC8qIGNh bid0IGZpbmQgc2d0IGZyb20gdGhlIHRhYmxlICovCiAJCXJldHVybiAtMTsKIAotCXByaW50aygi JXMgRm91bmQgYnVmZmVyIGdyZWYgJWQgIG9mZiAlZCBsYXN0IGxlbiAlZCBuZW50cyAlZCBkb21h aW4gJWRcbiIsIF9fZnVuY19fLAotCQlzZ3RfaW5mby0+cmVmX2hhbmRsZSwgc2d0X2luZm8tPmZy c3Rfb2ZzdCwKLQkJc2d0X2luZm8tPmxhc3RfbGVuLCBzZ3RfaW5mby0+bmVudHMsCi0JCUhZUEVS X0RNQUJVRl9ET01fSUQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCkpOworCWRldl9kYmcoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkgICIlcyBGb3VuZCBidWZmZXIgZ3JlZiAlZCAg b2ZmICVkIGxhc3QgbGVuICVkIG5lbnRzICVkIGRvbWFpbiAlZFxuIiwgX19mdW5jX18sCisJCSAg c2d0X2luZm8tPnJlZl9oYW5kbGUsIHNndF9pbmZvLT5mcnN0X29mc3QsCisJCSAgc2d0X2luZm8t Pmxhc3RfbGVuLCBzZ3RfaW5mby0+bmVudHMsCisJCSAgSFlQRVJfRE1BQlVGX0RPTV9JRChzZ3Rf aW5mby0+aHlwZXJfZG1hYnVmX2lkKSk7CiAKIAlpZiAoIXNndF9pbmZvLT5zZ3QpIHsKKwkJZGV2 X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkiJXMgYnVmZmVyICVkIHBhZ2Vz IG5vdCBtYXBwZWQgeWV0XG4iLCBfX2Z1bmNfXyxzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkKTsK IAkJZGF0YV9wYWdlcyA9IG9wcy0+bWFwX3NoYXJlZF9wYWdlcyhzZ3RfaW5mby0+cmVmX2hhbmRs ZSwKIAkJCQkJCSAgIEhZUEVSX0RNQUJVRl9ET01fSUQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9p ZCksCiAJCQkJCQkgICBzZ3RfaW5mby0+bmVudHMsCkBAIC0yNDQsNyArMjQ5LDcgQEAgc3RhdGlj IGludCBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lvY3RsKHZvaWQgKmRhdGEpCiAKIAlpZiAoIXNn dF9pbmZvLT5zZ3QgfHwgcmV0KSB7CiAJCWtmcmVlKHJlcSk7Ci0JCXByaW50aygiRmFpbGVkIHRv IGNyZWF0ZSBzZ3Qgb3Igbm90aWZ5IGV4cG9ydGVyXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJGYWlsZWQgdG8gY3JlYXRlIHNndCBvciBub3RpZnkgZXhwb3J0 ZXJcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJa2ZyZWUocmVxKTsKQEAgLTI1OCw2ICsy NjMsNyBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9leHBvcnRfZmRfaW9jdGwodm9pZCAqZGF0 YSkKIAkJc2d0X2luZm8tPm51bV9pbXBvcnRlcnMrKzsKIAl9CiAKKwlkZXZfZGJnKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwgIiVzIGVudHJ5XG4iLCBfX2Z1bmNfXyk7CiAJcmV0dXJuIHJl dDsKIH0KIApAQCAtMjcyLDggKzI3OCwxMCBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl91bmV4 cG9ydCh2b2lkICpkYXRhKQogCXN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXE7CiAJaW50IHJl dDsKIAorCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiJXMgZW50cnlcbiIs IF9fZnVuY19fKTsKKwogCWlmICghZGF0YSkgewotCQlwcmludGsoInVzZXIgZGF0YSBpcyBOVUxM XG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJ1c2VyIGRhdGEg aXMgTlVMTFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMzAyLDYgKzMxMCw4IEBA IHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3VuZXhwb3J0KHZvaWQgKmRhdGEpCiAJLyogZnJlZSBt c2cgKi8KIAlrZnJlZShyZXEpOwogCisJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZp Y2UsCisJCSJNYXJraW5nIGJ1ZmZlciAlZCBhcyBpbnZhbGlkXG4iLCB1bmV4cG9ydF9hdHRyLT5o eXBlcl9kbWFidWZfaWQpOwogCS8qIG5vIGxvbmdlciB2YWxpZCAqLwogCXNndF9pbmZvLT52YWxp ZCA9IDA7CiAKQEAgLTMxMiw4ICszMjIsOSBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl91bmV4 cG9ydCh2b2lkICpkYXRhKQogCSAqIGlzIGNhbGxlZCAoaW1wb3J0ZXIgZG9lcyB0aGlzIG9ubHkg d2hlbiB0aGVyZSdzIG5vCiAJICogbm8gY29uc3VtZXIgb2YgbG9jYWxseSBleHBvcnRlZCBGRHMp CiAJICovCi0JcHJpbnRrKCJiZWZvcmUgY2xhbmluZyB1cCBidWZmZXIgY29tcGxldGx5XG4iKTsK IAlpZiAoIXNndF9pbmZvLT5pbXBvcnRlcl9leHBvcnRlZCkgeworCQlkZXZfZGJnKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJjbGFuaW5nIHVwIGJ1ZmZlciAlZCBjb21wbGV0bHlc biIsIHVuZXhwb3J0X2F0dHItPmh5cGVyX2RtYWJ1Zl9pZCk7CiAJCWh5cGVyX2RtYWJ1Zl9jbGVh bnVwX3NndF9pbmZvKHNndF9pbmZvLCBmYWxzZSk7CiAJCWh5cGVyX2RtYWJ1Zl9yZW1vdmVfZXhw b3J0ZWQodW5leHBvcnRfYXR0ci0+aHlwZXJfZG1hYnVmX2lkKTsKIAkJa2ZyZWUoc2d0X2luZm8p OwpAQCAtMzIxLDYgKzMzMiw3IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3VuZXhwb3J0KHZv aWQgKmRhdGEpCiAJCXN0b3JlX3JldXNhYmxlX2lkKHVuZXhwb3J0X2F0dHItPmh5cGVyX2RtYWJ1 Zl9pZCk7CiAJfQogCisJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICIlcyBl bnRyeVxuIiwgX19mdW5jX18pOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTMzMiw3ICszNDQsNyBA QCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9xdWVyeSh2b2lkICpkYXRhKQogCWludCByZXQgPSAw OwogCiAJaWYgKCFkYXRhKSB7Ci0JCXByaW50aygidXNlciBkYXRhIGlzIE5VTExcbiIpOworCQlk ZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInVzZXIgZGF0YSBpcyBOVUxMXG4i KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0zNDMsNyArMzU1LDcgQEAgc3RhdGljIGlu dCBoeXBlcl9kbWFidWZfcXVlcnkodm9pZCAqZGF0YSkKIAogCS8qIGlmIGRtYWJ1ZiBjYW4ndCBi ZSBmb3VuZCBpbiBib3RoIGxpc3RzLCByZXR1cm4gKi8KIAlpZiAoIShzZ3RfaW5mbyAmJiBpbXBv cnRlZF9zZ3RfaW5mbykpIHsKLQkJcHJpbnRrKCJjYW4ndCBmaW5kIGVudHJ5IGFueXdoZXJlXG4i KTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJjYW4ndCBmaW5kIGVu dHJ5IGFueXdoZXJlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC00MTksMjUgKzQz MSwyNSBAQCBzdGF0aWMgbG9uZyBoeXBlcl9kbWFidWZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAs CiAJZnVuYyA9IGlvY3RsLT5mdW5jOwogCiAJaWYgKHVubGlrZWx5KCFmdW5jKSkgewotCQlwcmlu dGsoIm5vIGZ1bmN0aW9uXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZp Y2UsICJubyBmdW5jdGlvblxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWtkYXRhID0g a21hbGxvYyhfSU9DX1NJWkUoY21kKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFrZGF0YSkgewotCQlw cmludGsoIm5vIG1lbW9yeVxuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLCAibm8gbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCiAJaWYgKGNvcHlf ZnJvbV91c2VyKGtkYXRhLCAodm9pZCBfX3VzZXIgKilwYXJhbSwgX0lPQ19TSVpFKGNtZCkpICE9 IDApIHsKLQkJcHJpbnRrKCJmYWlsZWQgdG8gY29weSBmcm9tIHVzZXIgYXJndW1lbnRzXG4iKTsK KwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJmYWlsZWQgdG8gY29weSBm cm9tIHVzZXIgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCiAJcmV0ID0g ZnVuYyhrZGF0YSk7CiAKIAlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKXBhcmFtLCBr ZGF0YSwgX0lPQ19TSVpFKGNtZCkpICE9IDApIHsKLQkJcHJpbnRrKCJmYWlsZWQgdG8gY29weSB0 byB1c2VyIGFyZ3VtZW50c1xuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLCAiZmFpbGVkIHRvIGNvcHkgdG8gdXNlciBhcmd1bWVudHNcbiIpOwogCQlyZXR1cm4gLUVG QVVMVDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfbXNnLmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5j CmluZGV4IDQ2NDcxMTUuLjljMzg5MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2Rt YWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5 cGVyX2RtYWJ1Zl9tc2cuYwpAQCAtMTE0LDEyICsxMTQsMTIgQEAgdm9pZCBjbWRfcHJvY2Vzc193 b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJaW1wb3J0ZWRfc2d0X2luZm8tPm5lbnRz ID0gcmVxLT5vcGVyYW5kc1sxXTsKIAkJaW1wb3J0ZWRfc2d0X2luZm8tPnJlZl9oYW5kbGUgPSBy ZXEtPm9wZXJhbmRzWzRdOwogCi0JCXByaW50aygiRE1BQlVGIHdhcyBleHBvcnRlZFxuIik7Ci0J CXByaW50aygiXHRoeXBlcl9kbWFidWZfaWQgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMF0pOwotCQlw cmludGsoIlx0bmVudHMgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMV0pOwotCQlwcmludGsoIlx0Zmly c3Qgb2Zmc2V0ICVkXG4iLCByZXEtPm9wZXJhbmRzWzJdKTsKLQkJcHJpbnRrKCJcdGxhc3QgbGVu ICVkXG4iLCByZXEtPm9wZXJhbmRzWzNdKTsKLQkJcHJpbnRrKCJcdGdyZWZpZCAlZFxuIiwgcmVx LT5vcGVyYW5kc1s0XSk7CisJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAi RE1BQlVGIHdhcyBleHBvcnRlZFxuIik7CisJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUu ZGV2aWNlLCAiXHRoeXBlcl9kbWFidWZfaWQgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMF0pOworCQlk ZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIlx0bmVudHMgJWRcbiIsIHJlcS0+ b3BlcmFuZHNbMV0pOworCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIlx0 Zmlyc3Qgb2Zmc2V0ICVkXG4iLCByZXEtPm9wZXJhbmRzWzJdKTsKKwkJZGV2X2RiZyhoeXBlcl9k bWFidWZfcHJpdmF0ZS5kZXZpY2UsICJcdGxhc3QgbGVuICVkXG4iLCByZXEtPm9wZXJhbmRzWzNd KTsKKwkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJcdGdyZWZpZCAlZFxu IiwgcmVxLT5vcGVyYW5kc1s0XSk7CiAKIAkJZm9yIChpPTA7IGk8NDsgaSsrKQogCQkJaW1wb3J0 ZWRfc2d0X2luZm8tPnByaXZhdGVbaV0gPSByZXEtPm9wZXJhbmRzWzUraV07CkBAIC0xMzMsNyAr MTMzLDggQEAgdm9pZCBjbWRfcHJvY2Vzc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK IAkJc2d0X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChyZXEtPm9wZXJhbmRzWzBd KTsKIAogCQlpZiAoIXNndF9pbmZvKSB7Ci0JCQlwcmludGsoImNyaXRpY2FsIGVycjogcmVxdWVz dGVkIHNndF9pbmZvIGNhbid0IGJlIGZvdW5kICVkXG4iLCByZXEtPm9wZXJhbmRzWzBdKTsKKwkJ CWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJjcml0aWNhbCBlcnI6 IHJlcXVlc3RlZCBzZ3RfaW5mbyBjYW4ndCBiZSBmb3VuZCAlZFxuIiwgcmVxLT5vcGVyYW5kc1sw XSk7CiAJCQlicmVhazsKIAkJfQogCkBAIC0xNjMsMTMgKzE2NCwxMyBAQCBpbnQgaHlwZXJfZG1h YnVmX21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEpCiAJ aW50IHJldDsKIAogCWlmICghcmVxKSB7Ci0JCXByaW50aygicmVxdWVzdCBpcyBOVUxMXG4iKTsK KwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJyZXF1ZXN0IGlzIE5VTExc biIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoKHJlcS0+Y29tbWFuZCA8IEhZUEVS X0RNQUJVRl9FWFBPUlQpIHx8CiAJCShyZXEtPmNvbW1hbmQgPiBIWVBFUl9ETUFCVUZfT1BTX1RP X1NPVVJDRSkpIHsKLQkJcHJpbnRrKCJpbnZhbGlkIGNvbW1hbmRcbiIpOworCQlkZXZfZXJyKGh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgImludmFsaWQgY29tbWFuZFxuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KIApAQCAtMTgzLDcgKzE4NCw4IEBAIGludCBoeXBlcl9kbWFidWZfbXNn X3BhcnNlKGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSkKIAkJLyogY29t bWFuZCA6IEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQsCiAJCSAqIG9wZXJhbmRzMCA6IGh5 cGVyX2RtYWJ1Zl9pZAogCQkgKi8KLQorCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRl dmljZSwKKwkJCSIlczogcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfTk9USUZZX1VORVhQT1JUXG4i LCBfX2Z1bmNfXyk7CiAJCXNndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQocmVx LT5vcGVyYW5kc1swXSk7CiAKIAkJaWYgKHNndF9pbmZvKSB7CkBAIC0yMTYsNiArMjE4LDggQEAg aW50IGh5cGVyX2RtYWJ1Zl9tc2dfcGFyc2UoaW50IGRvbWlkLCBzdHJ1Y3QgaHlwZXJfZG1hYnVm X3JlcSAqcmVxKQogCQkgKiBvcGVyYW5kczAgOiBoeXBlcl9kbWFidWZfaWQKIAkJICogb3BlcmFu ZHMxIDogZW51bSBoeXBlcl9kbWFidWZfb3BzIHsuLi4ufQogCQkgKi8KKwkJZGV2X2RiZyhoeXBl cl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkiJXM6IEhZUEVSX0RNQUJVRl9PUFNfVE9fU09V UkNFXG4iLCBfX2Z1bmNfXyk7CiAJCXJldCA9IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhyZXEt Pm9wZXJhbmRzWzBdLCByZXEtPm9wZXJhbmRzWzFdKTsKIAkJaWYgKHJldCkKIAkJCXJlcS0+c3Rh dHVzID0gSFlQRVJfRE1BQlVGX1JFUV9FUlJPUjsKQEAgLTIyNSw2ICsyMjksOCBAQCBpbnQgaHlw ZXJfZG1hYnVmX21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpy ZXEpCiAJCXJldHVybiByZXEtPmNvbW1hbmQ7CiAJfQogCisJZGV2X2RiZyhoeXBlcl9kbWFidWZf cHJpdmF0ZS5kZXZpY2UsCisJCSIlczogcHV0dGluZyByZXF1ZXN0IHRvIHdvcmtxdWV1ZVxuIiwg X19mdW5jX18pOwogCXRlbXBfcmVxID0ga21hbGxvYyhzaXplb2YoKnRlbXBfcmVxKSwgR0ZQX0tF Uk5FTCk7CiAKIAltZW1jcHkodGVtcF9yZXEsIHJlcSwgc2l6ZW9mKCp0ZW1wX3JlcSkpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3lu Yy5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5j CmluZGV4IDBmNDczNWMuLjI3NTg5MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2Rt YWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jLmMKQEAgLTQxLDcgKzQxLDggQEAgaW50IGh5 cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAJc2d0X2luZm8gPSBoeXBl cl9kbWFidWZfZmluZF9leHBvcnRlZChpZCk7CiAKIAlpZiAoIXNndF9pbmZvKSB7Ci0JCXByaW50 aygiZG1hYnVmIHJlbW90ZSBzeW5jOjpjYW4ndCBmaW5kIGV4cG9ydGVkIGxpc3RcbiIpOworCQlk ZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJkbWFidWYgcmVtb3RlIHN5 bmM6OmNhbid0IGZpbmQgZXhwb3J0ZWQgbGlzdFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K IApAQCAtNTQsNyArNTUsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBpZCwg aW50IG9wcykKIAogCQlpZiAoIWF0dGFjaGwtPmF0dGFjaCkgewogCQkJa2ZyZWUoYXR0YWNobCk7 Ci0JCQlwcmludGsoImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBI WVBFUl9ETUFCVUZfT1BTX0FUVEFDSFxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2 YXRlLmRldmljZSwKKwkJCQkiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNz aW5nIEhZUEVSX0RNQUJVRl9PUFNfQVRUQUNIXG4iKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9 CiAKQEAgLTYzLDggKzY1LDEwIEBAIGludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlk LCBpbnQgb3BzKQogCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0RFVEFDSDoKIAkJaWYgKGxpc3Rf ZW1wdHkoJnNndF9pbmZvLT5hY3RpdmVfYXR0YWNoZWQtPmxpc3QpKSB7Ci0JCQlwcmludGsoImRt YWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BT X0RFVEFDSFxuIik7Ci0JCQlwcmludGsoIm5vIG1vcmUgZG1hYnVmIGF0dGFjaG1lbnQgbGVmdCB0 byBiZSBkZXRhY2hlZFxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmlj ZSwKKwkJCQkiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVS X0RNQUJVRl9PUFNfREVUQUNIXG4iKTsKKwkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUu ZGV2aWNlLAorCQkJCSJubyBtb3JlIGRtYWJ1ZiBhdHRhY2htZW50IGxlZnQgdG8gYmUgZGV0YWNo ZWRcbiIpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIApAQCAtNzgsOCArODIsMTAgQEAgaW50 IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAKIAljYXNlIEhZUEVS X0RNQUJVRl9PUFNfTUFQOgogCQlpZiAobGlzdF9lbXB0eSgmc2d0X2luZm8tPmFjdGl2ZV9hdHRh Y2hlZC0+bGlzdCkpIHsKLQkJCXByaW50aygiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGls ZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfTUFQXG4iKTsKLQkJCXByaW50aygibm8gbW9y ZSBkbWFidWYgYXR0YWNobWVudCBsZWZ0IHRvIGJlIGRldGFjaGVkXG4iKTsKKwkJCWRldl9lcnIo aHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJkbWFidWYgcmVtb3RlIHN5bmM6OmVy cm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19NQVBcbiIpOworCQkJZGV2X2Vy cihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJIm5vIG1vcmUgZG1hYnVmIGF0dGFj aG1lbnQgbGVmdCB0byBiZSBkZXRhY2hlZFxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQog CkBAIC05MCw3ICs5Niw4IEBAIGludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBp bnQgb3BzKQogCQlzZ3RsLT5zZ3QgPSBkbWFfYnVmX21hcF9hdHRhY2htZW50KGF0dGFjaGwtPmF0 dGFjaCwgRE1BX0JJRElSRUNUSU9OQUwpOwogCQlpZiAoIXNndGwtPnNndCkgewogCQkJa2ZyZWUo c2d0bCk7Ci0JCQlwcmludGsoImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vz c2luZyBIWVBFUl9ETUFCVUZfT1BTX01BUFxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9w cml2YXRlLmRldmljZSwKKwkJCQkiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9j ZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfTUFQXG4iKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9 CiAJCWxpc3RfYWRkKCZzZ3RsLT5saXN0LCAmc2d0X2luZm8tPmFjdGl2ZV9zZ3RzLT5saXN0KTsK QEAgLTk5LDggKzEwNiwxMCBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBpZCwg aW50IG9wcykKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfVU5NQVA6CiAJCWlmIChsaXN0X2VtcHR5 KCZzZ3RfaW5mby0+YWN0aXZlX3NndHMtPmxpc3QpIHx8CiAJCSAgICBsaXN0X2VtcHR5KCZzZ3Rf aW5mby0+YWN0aXZlX2F0dGFjaGVkLT5saXN0KSkgewotCQkJcHJpbnRrKCJkbWFidWYgcmVtb3Rl IHN5bmM6OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19VTk1BUFxuIik7 Ci0JCQlwcmludGsoIm5vIG1vcmUgU0dUIG9yIGF0dGFjaG1lbnQgbGVmdCB0byBiZSBmcmVlZFxu Iik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkiZG1hYnVm IHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfVU5N QVBcbiIpOworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJIm5v IG1vcmUgU0dUIG9yIGF0dGFjaG1lbnQgbGVmdCB0byBiZSBmcmVlZFxuIik7CiAJCQlyZXR1cm4g LUVJTlZBTDsKIAkJfQogCkBAIC0xNDAsNyArMTQ5LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1v dGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0JFR0lOX0NQ VV9BQ0NFU1M6CiAJCXJldCA9IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzZ3RfaW5mby0+ZG1h X2J1ZiwgRE1BX0JJRElSRUNUSU9OQUwpOwogCQlpZiAoIXJldCkgewotCQkJcHJpbnRrKCJkbWFi dWYgcmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19C RUdJTl9DUFVfQUNDRVNTXG4iKTsKKwkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLAorCQkJCSJkbWFidWYgcmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQ RVJfRE1BQlVGX09QU19CRUdJTl9DUFVfQUNDRVNTXG4iKTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJ CX0KIAkJYnJlYWs7CkBAIC0xNDgsNyArMTU4LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVf c3luYyhpbnQgaWQsIGludCBvcHMpCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0VORF9DUFVfQUND RVNTOgogCQlyZXQgPSBkbWFfYnVmX2VuZF9jcHVfYWNjZXNzKHNndF9pbmZvLT5kbWFfYnVmLCBE TUFfQklESVJFQ1RJT05BTCk7CiAJCWlmICghcmV0KSB7Ci0JCQlwcmludGsoImRtYWJ1ZiByZW1v dGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX0VORF9DUFVf QUNDRVNTXG4iKTsKKwkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJ CSJkbWFidWYgcmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVG X09QU19FTkRfQ1BVX0FDQ0VTU1xuIik7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQl9CiAJCWJyZWFr OwpAQCAtMTY1LDcgKzE3Niw4IEBAIGludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlk LCBpbnQgb3BzKQogCiAJCWlmICghdmFfa21hcGwtPnZhZGRyKSB7CiAJCQlrZnJlZSh2YV9rbWFw bCk7Ci0JCQlwcmludGsoImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2lu ZyBIWVBFUl9ETUFCVUZfT1BTX0tNQVAoX0FUT01JQylcbiIpOworCQkJZGV2X2VycihoeXBlcl9k bWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hp bGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX0tNQVAoX0FUT01JQylcbiIpOwogCQkJcmV0 dXJuIC1FSU5WQUw7CiAJCX0KIAkJbGlzdF9hZGQoJnZhX2ttYXBsLT5saXN0LCAmc2d0X2luZm8t PnZhX2ttYXBwZWQtPmxpc3QpOwpAQCAtMTc0LDE1ICsxODYsMTggQEAgaW50IGh5cGVyX2RtYWJ1 Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0tV Tk1BUF9BVE9NSUM6CiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0tVTk1BUDoKIAkJaWYgKGxpc3Rf ZW1wdHkoJnNndF9pbmZvLT52YV9rbWFwcGVkLT5saXN0KSkgewotCQkJcHJpbnRrKCJkbWFidWYg cmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19LVU5N QVAoX0FUT01JQylcbiIpOwotCQkJcHJpbnRrKCJubyBtb3JlIGRtYWJ1ZiBWQSB0byBiZSBmcmVl ZFxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkiZG1h YnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNf S1VOTUFQKF9BVE9NSUMpXG4iKTsKKwkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLAorCQkJCSJubyBtb3JlIGRtYWJ1ZiBWQSB0byBiZSBmcmVlZFxuIik7CiAJCQlyZXR1cm4g LUVJTlZBTDsKIAkJfQogCiAJCXZhX2ttYXBsID0gbGlzdF9maXJzdF9lbnRyeSgmc2d0X2luZm8t PnZhX2ttYXBwZWQtPmxpc3QsCiAJCQkJCSAgICBzdHJ1Y3Qga21hcF92YWRkcl9saXN0LCBsaXN0 KTsKIAkJaWYgKHZhX2ttYXBsLT52YWRkciA9PSBOVUxMKSB7Ci0JCQlwcmludGsoImRtYWJ1ZiBy ZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX0tVTk1B UChfQVRPTUlDKVxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwK KwkJCQkiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RN QUJVRl9PUFNfS1VOTUFQKF9BVE9NSUMpXG4iKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAK QEAgLTE5OSw3ICsyMTQsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBpZCwg aW50IG9wcykKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfTU1BUDoKIAkJLyogY3VycmVudGx5IG5v dCBzdXBwb3J0ZWQ6IGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNyZWF0ZQogCQkgKiBhIGR1bW15IHZt YSAqLwotCQlwcmludGsoImRtYWJ1ZiByZW1vdGUgc3luYzo6c3ljaHJvbml6ZWQgbW1hcCBpcyBu b3Qgc3VwcG9ydGVkXG4iKTsKKwkJZGV2X3dhcm4oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNl LAorCQkJICJkbWFidWYgcmVtb3RlIHN5bmM6OnN5Y2hyb25pemVkIG1tYXAgaXMgbm90IHN1cHBv cnRlZFxuIik7CiAJCWJyZWFrOwogCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX1ZNQVA6CkBAIC0y MTAsNyArMjI2LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBv cHMpCiAKIAkJaWYgKCF2YV92bWFwbC0+dmFkZHIpIHsKIAkJCWtmcmVlKHZhX3ZtYXBsKTsKLQkJ CXByaW50aygiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVS X0RNQUJVRl9PUFNfVk1BUFxuIik7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRl dmljZSwKKwkJCQkiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZ UEVSX0RNQUJVRl9PUFNfVk1BUFxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCQlsaXN0 X2FkZCgmdmFfdm1hcGwtPmxpc3QsICZzZ3RfaW5mby0+dmFfdm1hcHBlZC0+bGlzdCk7CkBAIC0y MTgsMTQgKzIzNSwxNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBpZCwgaW50 IG9wcykKIAogCWNhc2UgSFlQRVJfRE1BQlVGX09QU19WVU5NQVA6CiAJCWlmIChsaXN0X2VtcHR5 KCZzZ3RfaW5mby0+dmFfdm1hcHBlZC0+bGlzdCkpIHsKLQkJCXByaW50aygiZG1hYnVmIHJlbW90 ZSBzeW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfVlVOTUFQXG4i KTsKLQkJCXByaW50aygibm8gbW9yZSBkbWFidWYgVkEgdG8gYmUgZnJlZWRcbiIpOworCQkJZGV2 X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJImRtYWJ1ZiByZW1vdGUgc3lu Yzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX1ZVTk1BUFxuIik7CisJ CQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkibm8gbW9yZSBkbWFi dWYgVkEgdG8gYmUgZnJlZWRcbiIpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAkJdmFfdm1h cGwgPSBsaXN0X2ZpcnN0X2VudHJ5KCZzZ3RfaW5mby0+dmFfdm1hcHBlZC0+bGlzdCwKIAkJCQkJ c3RydWN0IHZtYXBfdmFkZHJfbGlzdCwgbGlzdCk7CiAJCWlmICghdmFfdm1hcGwgfHwgdmFfdm1h cGwtPnZhZGRyID09IE5VTEwpIHsKLQkJCXByaW50aygiZG1hYnVmIHJlbW90ZSBzeW5jOjplcnJv ciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfVlVOTUFQXG4iKTsKKwkJCWRldl9l cnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJkbWFidWYgcmVtb3RlIHN5bmM6 OmVycm9yIHdoaWxlIHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19WVU5NQVBcbiIpOwogCQkJ cmV0dXJuIC1FSU5WQUw7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMKaW5kZXggYmQzN2VjMi4uNWU3YTI1MCAxMDA2 NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2Nv bW0uYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5f Y29tbS5jCkBAIC0xMCwxMSArMTAsMTQgQEAKICNpbmNsdWRlIDxhc20veGVuL3BhZ2UuaD4KICNp bmNsdWRlICJoeXBlcl9kbWFidWZfeGVuX2NvbW0uaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZf eGVuX2NvbW1fbGlzdC5oIgorI2luY2x1ZGUgIi4uL2h5cGVyX2RtYWJ1Zl9kcnYuaCIKIAogc3Rh dGljIGludCBleHBvcnRfcmVxX2lkID0gMDsKIAogc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgcmVx X3BlbmRpbmcgPSB7MH07CiAKK2V4dGVybiBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUgaHlw ZXJfZG1hYnVmX3ByaXZhdGU7CisKIC8qIENyZWF0ZXMgZW50cnkgaW4geGVuIHN0b3JlIHRoYXQg d2lsbCBrZWVwIGRldGFpbHMgb2YgYWxsCiAgKiBleHBvcnRlciByaW5ncyBjcmVhdGVkIGJ5IHRo aXMgZG9tYWluCiAgKi8KQEAgLTU1LDE0ICs1OCwxNiBAQCBzdGF0aWMgaW50IHhlbl9jb21tX2V4 cG9zZV9yaW5nX2RldGFpbHMoaW50IGRvbWlkLCBpbnQgcmRvbWlkLAogCXJldCA9IHhlbmJ1c19w cmludGYoWEJUX05JTCwgYnVmLCAiZ3JlZmlkIiwgIiVkIiwgZ3JlZik7CiAKIAlpZiAocmV0KSB7 Ci0JCXByaW50aygiRmFpbGVkIHRvIHdyaXRlIHhlbmJ1cyBlbnRyeSAlczogJWRcbiIsIGJ1Ziwg cmV0KTsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkiRmFpbGVk IHRvIHdyaXRlIHhlbmJ1cyBlbnRyeSAlczogJWRcbiIsIGJ1ZiwgcmV0KTsKIAkJcmV0dXJuIHJl dDsKIAl9CiAKIAlyZXQgPSB4ZW5idXNfcHJpbnRmKFhCVF9OSUwsIGJ1ZiwgInBvcnQiLCAiJWQi LCBwb3J0KTsKIAogCWlmIChyZXQpIHsKLQkJcHJpbnRrKCJGYWlsZWQgdG8gd3JpdGUgeGVuYnVz IGVudHJ5ICVzOiAlZFxuIiwgYnVmLCByZXQpOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2 YXRlLmRldmljZSwKKwkJCSJGYWlsZWQgdG8gd3JpdGUgeGVuYnVzIGVudHJ5ICVzOiAlZFxuIiwg YnVmLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtODEsMTQgKzg2LDE2IEBAIHN0YXRp YyBpbnQgeGVuX2NvbW1fZ2V0X3JpbmdfZGV0YWlscyhpbnQgZG9taWQsIGludCByZG9taWQsIGlu dCAqZ3JlZmlkLCBpbnQgKnBvCiAJcmV0ID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGJ1ZiwgImdy ZWZpZCIsICIlZCIsIGdyZWZpZCk7CiAKIAlpZiAocmV0IDw9IDApIHsKLQkJcHJpbnRrKCJGYWls ZWQgdG8gcmVhZCB4ZW5idXMgZW50cnkgJXM6ICVkXG4iLCBidWYsIHJldCk7CisJCWRldl9lcnIo aHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIkZhaWxlZCB0byByZWFkIHhlbmJ1cyBl bnRyeSAlczogJWRcbiIsIGJ1ZiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXQgPSB4 ZW5idXNfc2NhbmYoWEJUX05JTCwgYnVmLCAicG9ydCIsICIlZCIsIHBvcnQpOwogCiAJaWYgKHJl dCA8PSAwKSB7Ci0JCXByaW50aygiRmFpbGVkIHRvIHJlYWQgeGVuYnVzIGVudHJ5ICVzOiAlZFxu IiwgYnVmLCByZXQpOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJ CSJGYWlsZWQgdG8gcmVhZCB4ZW5idXMgZW50cnkgJXM6ICVkXG4iLCBidWYsIHJldCk7CiAJCXJl dHVybiByZXQ7CiAJfQogCkBAIC0xNjEsMTAgKzE2OCwxMiBAQCBzdGF0aWMgdm9pZCByZW1vdGVf ZG9tX2V4cG9ydGVyX3dhdGNoX2NiKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAogCQkJCQkm Z3JlZmlkLCAmcG9ydCk7CiAKIAlpZiAocmluZ19pbmZvICYmIHJldCAhPSAwKSB7Ci0JCXByaW50 aygiUmVtb3RlIGV4cG9ydGVyIGNsb3NlZCwgY2xlYW5pbnVwIGltcG9ydGVyXG4iKTsKKwkJZGV2 X2luZm8oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJICJSZW1vdGUgZXhwb3J0ZXIg Y2xvc2VkLCBjbGVhbmludXAgaW1wb3J0ZXJcbiIpOwogCQloeXBlcl9kbWFidWZfeGVuX2NsZWFu dXBfcnhfcmJ1ZihyZG9tKTsKIAl9IGVsc2UgaWYgKCFyaW5nX2luZm8gJiYgcmV0ID09IDApIHsK LQkJcHJpbnRrKCJSZWdpc3RlcmluZyBpbXBvcnRlclxuIik7CisJCWRldl9pbmZvKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSAiUmVnaXN0ZXJpbmcgaW1wb3J0ZXJcbiIpOwogCQlo eXBlcl9kbWFidWZfeGVuX2luaXRfcnhfcmJ1ZihyZG9tKTsKIAl9CiB9CkBAIC0xODQsNyArMTkz LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl94ZW5faW5pdF90eF9yYnVmKGludCBkb21pZCkKIAlyaW5n X2luZm8gPSB4ZW5fY29tbV9maW5kX3R4X3JpbmcoZG9taWQpOwogCiAJaWYgKHJpbmdfaW5mbykg ewotCQlwcmludGsoInR4IHJpbmcgY2ggdG8gZG9taWQgPSAlZCBhbHJlYWR5IGV4aXN0XG5ncmVm ID0gJWQsIHBvcnQgPSAlZFxuIiwKKwkJZGV2X2luZm8oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLAorCQkJICJ0eCByaW5nIGNoIHRvIGRvbWlkID0gJWQgYWxyZWFkeSBleGlzdFxuZ3JlZiA9 ICVkLCBwb3J0ID0gJWRcbiIsCiAJCXJpbmdfaW5mby0+cmRvbWFpbiwgcmluZ19pbmZvLT5ncmVm X3JpbmcsIHJpbmdfaW5mby0+cG9ydCk7CiAJCXJldHVybiAwOwogCX0KQEAgLTIxNiw3ICsyMjYs OCBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3R4X3JidWYoaW50IGRvbWlkKQogCXJldCA9 IEhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9hbGxvY191bmJvdW5kLAogCQkJ CQkmYWxsb2NfdW5ib3VuZCk7CiAJaWYgKHJldCAhPSAwKSB7Ci0JCXByaW50aygiQ2Fubm90IGFs bG9jYXRlIGV2ZW50IGNoYW5uZWxcbiIpOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRl LmRldmljZSwKKwkJCSJDYW5ub3QgYWxsb2NhdGUgZXZlbnQgY2hhbm5lbFxuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KIApAQCAtMjI2LDcgKzIzNyw4IEBAIGludCBoeXBlcl9kbWFidWZfeGVu X2luaXRfdHhfcmJ1ZihpbnQgZG9taWQpCiAJCQkJCU5VTEwsICh2b2lkKikgcmluZ19pbmZvKTsK IAogCWlmIChyZXQgPCAwKSB7Ci0JCXByaW50aygiRmFpbGVkIHRvIHNldHVwIGV2ZW50IGNoYW5u ZWxcbiIpOworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJGYWls ZWQgdG8gc2V0dXAgZXZlbnQgY2hhbm5lbFxuIik7CiAJCWNsb3NlLnBvcnQgPSBhbGxvY191bmJv dW5kLnBvcnQ7CiAJCUhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9jbG9zZSwg JmNsb3NlKTsKIAkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhyaW5nX2luZm8tPmdyZWZfcmlu ZywgMCwKQEAgLTIzOCw3ICsyNTAsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3R4X3Ji dWYoaW50IGRvbWlkKQogCXJpbmdfaW5mby0+aXJxID0gcmV0OwogCXJpbmdfaW5mby0+cG9ydCA9 IGFsbG9jX3VuYm91bmQucG9ydDsKIAotCXByaW50aygiJXM6IGFsbG9jYXRlZCBldmVudGNoYW5u ZWwgZ3JlZiAlZCAgcG9ydDogJWQgIGlycTogJWRcbiIsCisJZGV2X2RiZyhoeXBlcl9kbWFidWZf cHJpdmF0ZS5kZXZpY2UsCisJCSIlczogYWxsb2NhdGVkIGV2ZW50Y2hhbm5lbCBncmVmICVkICBw b3J0OiAlZCAgaXJxOiAlZFxuIiwKIAkJX19mdW5jX18sCiAJCXJpbmdfaW5mby0+Z3JlZl9yaW5n LAogCQlyaW5nX2luZm8tPnBvcnQsCkBAIC0zMTUsNyArMzI4LDggQEAgaW50IGh5cGVyX2RtYWJ1 Zl94ZW5faW5pdF9yeF9yYnVmKGludCBkb21pZCkKIAlyaW5nX2luZm8gPSB4ZW5fY29tbV9maW5k X3J4X3JpbmcoZG9taWQpOwogCiAJaWYgKHJpbmdfaW5mbykgewotCQlwcmludGsoInJ4IHJpbmcg Y2ggZnJvbSBkb21pZCA9ICVkIGFscmVhZHkgZXhpc3RcbiIsIHJpbmdfaW5mby0+c2RvbWFpbik7 CisJCWRldl9pbmZvKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSAicnggcmluZyBj aCBmcm9tIGRvbWlkID0gJWQgYWxyZWFkeSBleGlzdFxuIiwgcmluZ19pbmZvLT5zZG9tYWluKTsK IAkJcmV0dXJuIDA7CiAJfQogCkBAIC0zMjMsNyArMzM3LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl94 ZW5faW5pdF9yeF9yYnVmKGludCBkb21pZCkKIAkJCQkJJnJ4X2dyZWYsICZyeF9wb3J0KTsKIAog CWlmIChyZXQpIHsKLQkJcHJpbnRrKCJEb21haW4gJWQgaGFzIG5vdCBjcmVhdGVkIGV4cG9ydGVy IHJpbmcgZm9yIGN1cnJlbnQgZG9tYWluXG4iLCBkb21pZCk7CisJCWRldl9lcnIoaHlwZXJfZG1h YnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIkRvbWFpbiAlZCBoYXMgbm90IGNyZWF0ZWQgZXhwb3J0 ZXIgcmluZyBmb3IgY3VycmVudCBkb21haW5cbiIsIGRvbWlkKTsKIAkJcmV0dXJuIHJldDsKIAl9 CiAKQEAgLTM0NiwxMiArMzYxLDEyIEBAIGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfcnhfcmJ1 ZihpbnQgZG9taWQpCiAKIAlyZXQgPSBnbnR0YWJfbWFwX3JlZnMobWFwX29wcywgTlVMTCwgJnNo YXJlZF9yaW5nLCAxKTsKIAlpZiAocmV0IDwgMCkgewotCQlwcmludGsoIkNhbm5vdCBtYXAgcmlu Z1xuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiQ2Fubm90IG1h cCByaW5nXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKG1hcF9vcHNbMF0uc3Rh dHVzKSB7Ci0JCXByaW50aygiUmluZyBtYXBwaW5nIGZhaWxlZFxuIik7CisJCWRldl9lcnIoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiUmluZyBtYXBwaW5nIGZhaWxlZFxuIik7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0gZWxzZSB7CiAJCXJpbmdfaW5mby0+dW5tYXBfb3AuaGFuZGxlID0g bWFwX29wc1swXS5oYW5kbGU7CkBAIC0zNzIsNyArMzg3LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl94 ZW5faW5pdF9yeF9yYnVmKGludCBkb21pZCkKIAogCXJpbmdfaW5mby0+aXJxID0gcmV0OwogCi0J cHJpbnRrKCIlczogYm91bmQgdG8gZXZlbnRjaGFubmVsIHBvcnQ6ICVkICBpcnE6ICVkXG4iLCBf X2Z1bmNfXywKKwlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJIiVzOiBi b3VuZCB0byBldmVudGNoYW5uZWwgcG9ydDogJWQgIGlycTogJWRcbiIsIF9fZnVuY19fLAogCQly eF9wb3J0LAogCQlyaW5nX2luZm8tPmlycSk7CiAKQEAgLTQ0NSw3ICs0NjEsOCBAQCBpbnQgaHlw ZXJfZG1hYnVmX3hlbl9zZW5kX3JlcShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVx ICpyZXEsIGludCB3YWl0KQogCS8qIGZpbmQgYSByaW5nIGluZm8gZm9yIHRoZSBjaGFubmVsICov CiAJcmluZ19pbmZvID0geGVuX2NvbW1fZmluZF90eF9yaW5nKGRvbWlkKTsKIAlpZiAoIXJpbmdf aW5mbykgewotCQlwcmludGsoIkNhbid0IGZpbmQgcmluZyBpbmZvIGZvciB0aGUgY2hhbm5lbFxu Iik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIkNhbid0IGZp bmQgcmluZyBpbmZvIGZvciB0aGUgY2hhbm5lbFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K IApAQCAtNDU2LDcgKzQ3Myw4IEBAIGludCBoeXBlcl9kbWFidWZfeGVuX3NlbmRfcmVxKGludCBk b21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwgaW50IHdhaXQpCiAKIAluZXdfcmVx ID0gUklOR19HRVRfUkVRVUVTVChyaW5nLCByaW5nLT5yZXFfcHJvZF9wdnQpOwogCWlmICghbmV3 X3JlcSkgewotCQlwcmludGsoIk5VTEwgUkVRVUVTVFxuIik7CisJCWRldl9lcnIoaHlwZXJfZG1h YnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIk5VTEwgUkVRVUVTVFxuIik7CiAJCXJldHVybiAtRUlP OwogCX0KIApAQCAtNDg0LDcgKzUwMiw3IEBAIGludCBoeXBlcl9kbWFidWZfeGVuX3NlbmRfcmVx KGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwgaW50IHdhaXQpCiAJCX0K IAogCQlpZiAodGltZW91dCA8IDApIHsKLQkJCXByaW50aygicmVxdWVzdCB0aW1lZC1vdXRcbiIp OworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJyZXF1ZXN0IHRpbWVk LW91dFxuIik7CiAJCQlyZXR1cm4gLUVCVVNZOwogCQl9CiAJfQpAQCAtNTA4LDYgKzUyNiw4IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCBiYWNrX3JpbmdfaXNyKGludCBpcnEsIHZvaWQgKmluZm8pCiAJ cmluZ19pbmZvID0gKHN0cnVjdCB4ZW5fY29tbV9yeF9yaW5nX2luZm8gKilpbmZvOwogCXJpbmcg PSAmcmluZ19pbmZvLT5yaW5nX2JhY2s7CiAKKwlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRl LmRldmljZSwgIiVzXG4iLCBfX2Z1bmNfXyk7CisKIAlkbyB7CiAJCXJjID0gcmluZy0+cmVxX2Nv bnM7CiAJCXJwID0gcmluZy0+c3JpbmctPnJlcV9wcm9kOwpAQCAtNTU4LDYgKzU3OCw4IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCBmcm9udF9yaW5nX2lzcihpbnQgaXJxLCB2b2lkICppbmZvKQogCXJp bmdfaW5mbyA9IChzdHJ1Y3QgeGVuX2NvbW1fdHhfcmluZ19pbmZvICopaW5mbzsKIAlyaW5nID0g JnJpbmdfaW5mby0+cmluZ19mcm9udDsKIAorCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUu ZGV2aWNlLCAiJXNcbiIsIF9fZnVuY19fKTsKKwogCWRvIHsKIAkJbW9yZV90b19kbyA9IDA7CiAJ CXJwID0gcmluZy0+c3JpbmctPnJzcF9wcm9kOwpAQCAtNTc2LDE2ICs1OTgsMjEgQEAgc3RhdGlj IGlycXJldHVybl90IGZyb250X3JpbmdfaXNyKGludCBpcnEsIHZvaWQgKmluZm8pCiAJCQkJCQkJ KHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICopcmVzcCk7CiAKIAkJCQlpZiAocmV0IDwgMCkgewot CQkJCQlwcmludGsoImdldHRpbmcgZXJyb3Igd2hpbGUgcGFyc2luZyByZXNwb25zZVxuIik7CisJ CQkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCQkJImdldHRpbmcg ZXJyb3Igd2hpbGUgcGFyc2luZyByZXNwb25zZVxuIik7CiAJCQkJfQogCQkJfSBlbHNlIGlmIChy ZXNwLT5zdGF0dXMgPT0gSFlQRVJfRE1BQlVGX1JFUV9QUk9DRVNTRUQpIHsKIAkJCQkvKiBmb3Ig ZGVidWdnaW5nIGRtYV9idWYgcmVtb3RlIHN5bmNocm9uaXphdGlvbiAqLwotCQkJCXByaW50aygi b3JpZ2luYWwgcmVxdWVzdCA9IDB4JXhcbiIsIHJlc3AtPmNvbW1hbmQpOwotCQkJCXByaW50aygi SnVzdCBnb3QgSFlQRVJfRE1BQlVGX1JFUV9QUk9DRVNTRURcbiIpOworCQkJCWRldl9kYmcoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCQkib3JpZ2luYWwgcmVxdWVzdCA9IDB4JXhc biIsIHJlc3AtPmNvbW1hbmQpOworCQkJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLAorCQkJCQkiSnVzdCBnb3QgSFlQRVJfRE1BQlVGX1JFUV9QUk9DRVNTRURcbiIpOwogCQkJ fSBlbHNlIGlmIChyZXNwLT5zdGF0dXMgPT0gSFlQRVJfRE1BQlVGX1JFUV9FUlJPUikgewogCQkJ CS8qIGZvciBkZWJ1Z2dpbmcgZG1hX2J1ZiByZW1vdGUgc3luY2hyb25pemF0aW9uICovCi0JCQkJ cHJpbnRrKCJvcmlnaW5hbCByZXF1ZXN0ID0gMHgleFxuIiwgcmVzcC0+Y29tbWFuZCk7Ci0JCQkJ cHJpbnRrKCJKdXN0IGdvdCBIWVBFUl9ETUFCVUZfUkVRX0VSUk9SXG4iKTsKKwkJCQlkZXZfZGJn KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkJIm9yaWdpbmFsIHJlcXVlc3QgPSAw eCV4XG4iLCByZXNwLT5jb21tYW5kKTsKKwkJCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRl LmRldmljZSwKKwkJCQkJIkp1c3QgZ290IEhZUEVSX0RNQUJVRl9SRVFfRVJST1JcbiIpOwogCQkJ fQogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJf ZG1hYnVmX3hlbl9zaG0uYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9zaG0uYwppbmRleCBjMDA0NWQ0Li5jYzk4NjBiIDEwMDY0NAotLS0gYS9kcml2ZXJz L3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fc2htLmMKKysrIGIvZHJpdmVy cy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jCkBAIC00LDkgKzQs MTIgQEAKICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KICNpbmNsdWRlIDxhc20veGVuL3Bh Z2UuaD4KICNpbmNsdWRlICJoeXBlcl9kbWFidWZfeGVuX2Rydi5oIgorI2luY2x1ZGUgIi4uL2h5 cGVyX2RtYWJ1Zl9kcnYuaCIKIAogI2RlZmluZSBSRUZTX1BFUl9QQUdFIChQQUdFX1NJWkUvc2l6 ZW9mKGdyYW50X3JlZl90KSkKIAorZXh0ZXJuIHN0cnVjdCBoeXBlcl9kbWFidWZfcHJpdmF0ZSBo eXBlcl9kbWFidWZfcHJpdmF0ZTsKKwogLyoKICAqIENyZWF0ZXMgMiBsZXZlbCBwYWdlIGRpcmVj dG9yeSBzdHJ1Y3R1cmUgZm9yIHJlZmVyZW5jaW5nIHNoYXJlZCBwYWdlcy4KICAqIFRvcCBsZXZl bCBwYWdlIGlzIGEgc2luZ2xlIHBhZ2UgdGhhdCBjb250YWlucyB1cCB0byAxMDI0IHJlZmlkcyB0 aGF0CkBAIC05Myw5ICs5NiwxMSBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9zaGFyZV9wYWdlcyhz dHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgZG9taWQsIGludCBuZW50cywKIAkvKiBTdG9yZSBsdmwy X3RhYmxlIHBhZ2VzIHRvIGJlIGZyZWVkIGxhdGVyICovCiAJc2hfcGFnZXNfaW5mby0+bHZsMl90 YWJsZSA9IGx2bDJfdGFibGU7CiAKKwogCS8qIFN0b3JlIGV4cG9ydGVkIHBhZ2VzIHJlZmlkIHRv IGJlIHVuc2hhcmVkIGxhdGVyICovCiAJc2hfcGFnZXNfaW5mby0+bHZsM19ncmVmID0gbHZsM19n cmVmOwogCisJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICIlcyBleGl0XG4i LCBfX2Z1bmNfXyk7CiAJcmV0dXJuIGx2bDNfZ3JlZjsKIH0KIApAQCAtMTA0LDE5ICsxMDksMjEg QEAgaW50IGh5cGVyX2RtYWJ1Zl94ZW5fdW5zaGFyZV9wYWdlcyh2b2lkICoqcmVmc19pbmZvLCBp bnQgbmVudHMpIHsKIAlpbnQgbl9sdmwyX2dyZWZzID0gKG5lbnRzL1JFRlNfUEVSX1BBR0UgKyAo KG5lbnRzICUgUkVGU19QRVJfUEFHRSkgPyAxOiAwKSk7CiAJaW50IGk7CiAKKwlkZXZfZGJnKGh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIiVzIGVudHJ5XG4iLCBfX2Z1bmNfXyk7CiAJc2hf cGFnZXNfaW5mbyA9IChzdHJ1Y3QgeGVuX3NoYXJlZF9wYWdlc19pbmZvICopKCpyZWZzX2luZm8p OwogCiAJaWYgKHNoX3BhZ2VzX2luZm8tPmx2bDNfdGFibGUgPT0gTlVMTCB8fAogCSAgICBzaF9w YWdlc19pbmZvLT5sdmwyX3RhYmxlID09ICBOVUxMIHx8CiAJICAgIHNoX3BhZ2VzX2luZm8tPmx2 bDNfZ3JlZiA9PSAtMSkgewotCQlwcmludGsoImdyZWYgdGFibGUgZm9yIGh5cGVyX2RtYWJ1ZiBh bHJlYWR5IGNsZWFuZWQgdXBcbiIpOworCQlkZXZfd2FybihoeXBlcl9kbWFidWZfcHJpdmF0ZS5k ZXZpY2UsCisJCQkgImdyZWYgdGFibGUgZm9yIGh5cGVyX2RtYWJ1ZiBhbHJlYWR5IGNsZWFuZWQg dXBcbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKIAkvKiBFbmQgZm9yZWlnbiBhY2Nlc3MgZm9yIGRh dGEgcGFnZXMsIGJ1dCBkbyBub3QgZnJlZSB0aGVtICovCiAJZm9yIChpID0gMDsgaSA8IG5lbnRz OyBpKyspIHsKIAkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWduX2FjY2VzcyhzaF9wYWdlc19pbmZv LT5sdmwyX3RhYmxlW2ldKSkgewotCQkJcHJpbnRrKCJyZWZpZCBub3Qgc2hhcmVkICEhXG4iKTsK KwkJCWRldl93YXJuKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInJlZmlkIG5vdCBzaGFy ZWQgISFcbiIpOwogCQl9CiAJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKHNoX3BhZ2Vz X2luZm8tPmx2bDJfdGFibGVbaV0sIDApOwogCQlnbnR0YWJfZnJlZV9ncmFudF9yZWZlcmVuY2Uo c2hfcGFnZXNfaW5mby0+bHZsMl90YWJsZVtpXSk7CkBAIC0xMjUsMTcgKzEzMiwxNyBAQCBpbnQg aHlwZXJfZG1hYnVmX3hlbl91bnNoYXJlX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50 cykgewogCS8qIEVuZCBmb3JlaWduIGFjY2VzcyBmb3IgMm5kIGxldmVsIGFkZHJlc3NpbmcgcGFn ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbl9sdmwyX2dyZWZzOyBpKyspIHsKIAkJaWYgKGdudHRh Yl9xdWVyeV9mb3JlaWduX2FjY2VzcyhzaF9wYWdlc19pbmZvLT5sdmwzX3RhYmxlW2ldKSkgewot CQkJcHJpbnRrKCJyZWZpZCBub3Qgc2hhcmVkICEhXG4iKTsKKwkJCWRldl93YXJuKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwgInJlZmlkIG5vdCBzaGFyZWQgISFcbiIpOwogCQl9CiAJCWlm ICghZ250dGFiX2VuZF9mb3JlaWduX2FjY2Vzc19yZWYoc2hfcGFnZXNfaW5mby0+bHZsM190YWJs ZVtpXSwgMSkpIHsKLQkJCXByaW50aygicmVmaWQgc3RpbGwgaW4gdXNlISEhXG4iKTsKKwkJCWRl dl93YXJuKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInJlZmlkIHN0aWxsIGluIHVzZSEh IVxuIik7CiAJCX0KIAkJZ250dGFiX2ZyZWVfZ3JhbnRfcmVmZXJlbmNlKHNoX3BhZ2VzX2luZm8t Pmx2bDNfdGFibGVbaV0pOwogCX0KIAogCS8qIEVuZCBmb3JlaWduIGFjY2VzcyBmb3IgdG9wIGxl dmVsIGFkZHJlc3NpbmcgcGFnZSAqLwogCWlmIChnbnR0YWJfcXVlcnlfZm9yZWlnbl9hY2Nlc3Mo c2hfcGFnZXNfaW5mby0+bHZsM19ncmVmKSkgewotCQlwcmludGsoImdyZWYgbm90IHNoYXJlZCAh IVxuIik7CisJCWRldl93YXJuKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgImdyZWYgbm90 IHNoYXJlZCAhIVxuIik7CiAJfQogCiAJZ250dGFiX2VuZF9mb3JlaWduX2FjY2Vzc19yZWYoc2hf cGFnZXNfaW5mby0+bHZsM19ncmVmLCAxKTsKQEAgLTE1MSw2ICsxNTgsNyBAQCBpbnQgaHlwZXJf ZG1hYnVmX3hlbl91bnNoYXJlX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50cykgewog CWtmcmVlKHNoX3BhZ2VzX2luZm8pOwogCXNoX3BhZ2VzX2luZm8gPSBOVUxMOwogCisJZGV2X2Ri ZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICIlcyBleGl0XG4iLCBfX2Z1bmNfXyk7CiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTE4MCw2ICsxODgsOCBAQCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9k bWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQg bgogCWludCBuX2x2bDJfZ3JlZnMgPSAobmVudHMgLyBSRUZTX1BFUl9QQUdFKSArICgobmVudHNf bGFzdCA+IDApID8gMSA6IDApOwogCWludCBpLCBqLCBrOwogCisJZGV2X2RiZyhoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICIlcyBlbnRyeVxuIiwgX19mdW5jX18pOworCiAJc2hfcGFnZXNf aW5mbyA9IGttYWxsb2Moc2l6ZW9mKCpzaF9wYWdlc19pbmZvKSwgR0ZQX0tFUk5FTCk7CiAJKnJl ZnNfaW5mbyA9ICh2b2lkICopIHNoX3BhZ2VzX2luZm87CiAKQEAgLTE5NCw3ICsyMDQsNyBAQCBz dHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNf Z3JlZiwgaW50IGRvbWlkLCBpbnQgbgogCiAJLyogTWFwIHRvcCBsZXZlbCBhZGRyZXNzaW5nIHBh Z2UgKi8KIAlpZiAoZ250dGFiX2FsbG9jX3BhZ2VzKDEsICZsdmwzX3RhYmxlX3BhZ2UpKSB7Ci0J CXByaW50aygiQ2Fubm90IGFsbG9jYXRlIHBhZ2VzXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJDYW5ub3QgYWxsb2NhdGUgcGFnZXNcbiIpOwogCQlyZXR1cm4g TlVMTDsKIAl9CiAKQEAgLTIwNiwxMiArMjE2LDEyIEBAIHN0cnVjdCBwYWdlICoqIGh5cGVyX2Rt YWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcyhpbnQgbHZsM19ncmVmLCBpbnQgZG9taWQsIGludCBu CiAJZ250dGFiX3NldF91bm1hcF9vcCgmbHZsM191bm1hcF9vcHMsICh1bnNpZ25lZCBsb25nKWx2 bDNfdGFibGUsIEdOVE1BUF9ob3N0X21hcCB8IEdOVE1BUF9yZWFkb25seSwgLTEpOwogCiAJaWYg KGdudHRhYl9tYXBfcmVmcygmbHZsM19tYXBfb3BzLCBOVUxMLCAmbHZsM190YWJsZV9wYWdlLCAx KSkgewotCQlwcmludGsoIlxueGVuOiBkb20wOiBIWVBFUlZJU09SIG1hcCBncmFudCByZWYgZmFp bGVkIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiSFlQRVJWSVNP UiBtYXAgZ3JhbnQgcmVmIGZhaWxlZCIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlpZiAobHZs M19tYXBfb3BzLnN0YXR1cykgewotCQlwcmludGsoIlxueGVuOiBkb20wOiBIWVBFUlZJU09SIG1h cCBncmFudCByZWYgZmFpbGVkIHN0YXR1cyA9ICVkIiwKKwkJZGV2X2VycihoeXBlcl9kbWFidWZf cHJpdmF0ZS5kZXZpY2UsICJIWVBFUlZJU09SIG1hcCBncmFudCByZWYgZmFpbGVkIHN0YXR1cyA9 ICVkIiwKIAkJCWx2bDNfbWFwX29wcy5zdGF0dXMpOwogCQlyZXR1cm4gTlVMTDsKIAl9IGVsc2Ug ewpAQCAtMjIwLDcgKzIzMCw3IEBAIHN0cnVjdCBwYWdlICoqIGh5cGVyX2RtYWJ1Zl94ZW5fbWFw X3NoYXJlZF9wYWdlcyhpbnQgbHZsM19ncmVmLCBpbnQgZG9taWQsIGludCBuCiAKIAkvKiBNYXAg YWxsIHNlY29uZCBsZXZlbCBwYWdlcyAqLwogCWlmIChnbnR0YWJfYWxsb2NfcGFnZXMobl9sdmwy X2dyZWZzLCBsdmwyX3RhYmxlX3BhZ2VzKSkgewotCQlwcmludGsoIkNhbm5vdCBhbGxvY2F0ZSBw YWdlc1xuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiQ2Fubm90 IGFsbG9jYXRlIHBhZ2VzXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yMzMsMTkgKzI0 MywxOSBAQCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMo aW50IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQgbgogCiAJLyogVW5tYXAgdG9wIGxldmVsIHBh Z2UsIGFzIGl0IHdvbid0IGJlIG5lZWRlZCBhbnkgbG9uZ2VyICovCiAJaWYgKGdudHRhYl91bm1h cF9yZWZzKCZsdmwzX3VubWFwX29wcywgTlVMTCwgJmx2bDNfdGFibGVfcGFnZSwgMSkpIHsKLQkJ cHJpbnRrKCJceGVuOiBjYW5ub3QgdW5tYXAgdG9wIGxldmVsIHBhZ2VcbiIpOworCQlkZXZfZXJy KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInhlbjogY2Fubm90IHVubWFwIHRvcCBsZXZl bCBwYWdlXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaWYgKGdudHRhYl9tYXBfcmVmcyhs dmwyX21hcF9vcHMsIE5VTEwsIGx2bDJfdGFibGVfcGFnZXMsIG5fbHZsMl9ncmVmcykpIHsKLQkJ cHJpbnRrKCJcbnhlbjogZG9tMDogSFlQRVJWSVNPUiBtYXAgZ3JhbnQgcmVmIGZhaWxlZCIpOwor CQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkhZUEVSVklTT1IgbWFwIGdy YW50IHJlZiBmYWlsZWQiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJLyogQ2hlY2tzIGlmIHBh Z2VzIHdlcmUgbWFwcGVkIGNvcnJlY3RseSAqLwogCWZvciAoaSA9IDA7IGkgPCBuX2x2bDJfZ3Jl ZnM7IGkrKykgewogCQlpZiAobHZsMl9tYXBfb3BzW2ldLnN0YXR1cykgewotCQkJcHJpbnRrKCJc bnhlbjogZG9tMDogSFlQRVJWSVNPUiBtYXAgZ3JhbnQgcmVmIGZhaWxlZCBzdGF0dXMgPSAlZCIs CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkhZUEVSVklTT1IgbWFw IGdyYW50IHJlZiBmYWlsZWQgc3RhdHVzID0gJWQiLAogCQkJICAgICAgIGx2bDJfbWFwX29wc1tp XS5zdGF0dXMpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0gZWxzZSB7CkBAIC0yNTQsNyArMjY0LDcg QEAgc3RydWN0IHBhZ2UgKiogaHlwZXJfZG1hYnVmX3hlbl9tYXBfc2hhcmVkX3BhZ2VzKGludCBs dmwzX2dyZWYsIGludCBkb21pZCwgaW50IG4KIAl9CiAKIAlpZiAoZ250dGFiX2FsbG9jX3BhZ2Vz KG5lbnRzLCBkYXRhX3BhZ2VzKSkgewotCQlwcmludGsoIkNhbm5vdCBhbGxvY2F0ZSBwYWdlc1xu Iik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiQ2Fubm90IGFsbG9j YXRlIHBhZ2VzXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yOTEsMjAgKzMwMSwyMCBA QCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2 bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQgbgogCX0KIAogCWlmIChnbnR0YWJfbWFwX3JlZnMoZGF0 YV9tYXBfb3BzLCBOVUxMLCBkYXRhX3BhZ2VzLCBuZW50cykpIHsKLQkJcHJpbnRrKCJcbnhlbjog ZG9tMDogSFlQRVJWSVNPUiBtYXAgZ3JhbnQgcmVmIGZhaWxlZFxuIik7CisJCWRldl9lcnIoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiSFlQRVJWSVNPUiBtYXAgZ3JhbnQgcmVmIGZhaWxl ZFxuIik7CiAJCXJldHVybiBOVUxMOwogCX0KIAogCS8qIHVubWFwcGluZyBsdmwyIHRhYmxlIHBh Z2VzICovCiAJaWYgKGdudHRhYl91bm1hcF9yZWZzKGx2bDJfdW5tYXBfb3BzLCBOVUxMLCBsdmwy X3RhYmxlX3BhZ2VzLAogCQkJICAgICAgbl9sdmwyX2dyZWZzKSkgewotCQlwcmludGsoIkNhbm5v dCB1bm1hcCAybmQgbGV2ZWwgcmVmc1xuIik7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZh dGUuZGV2aWNlLCAiQ2Fubm90IHVubWFwIDJuZCBsZXZlbCByZWZzXG4iKTsKIAkJcmV0dXJuIE5V TEw7CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKyspIHsKIAkJaWYgKGRhdGFfbWFw X29wc1tpXS5zdGF0dXMpIHsKLQkJCXByaW50aygiXG54ZW46IGRvbTA6IEhZUEVSVklTT1IgbWFw IGdyYW50IHJlZiBmYWlsZWQgc3RhdHVzID0gJWRcbiIsCisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmRldmljZSwgIkhZUEVSVklTT1IgbWFwIGdyYW50IHJlZiBmYWlsZWQgc3RhdHVz ID0gJWRcbiIsCiAJCQkJZGF0YV9tYXBfb3BzW2ldLnN0YXR1cyk7CiAJCQlyZXR1cm4gTlVMTDsK IAkJfSBlbHNlIHsKQEAgLTMyMywyMyArMzMzLDI2IEBAIHN0cnVjdCBwYWdlICoqIGh5cGVyX2Rt YWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcyhpbnQgbHZsM19ncmVmLCBpbnQgZG9taWQsIGludCBu CiAJa2ZyZWUobHZsMl91bm1hcF9vcHMpOwogCWtmcmVlKGRhdGFfbWFwX29wcyk7CiAKKwlkZXZf ZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIiVzIGV4aXRcbiIsIF9fZnVuY19fKTsK IAlyZXR1cm4gZGF0YV9wYWdlczsKIH0KIAogaW50IGh5cGVyX2RtYWJ1Zl94ZW5fdW5tYXBfc2hh cmVkX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50cykgewogCXN0cnVjdCB4ZW5fc2hh cmVkX3BhZ2VzX2luZm8gKnNoX3BhZ2VzX2luZm87CiAKKwlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9w cml2YXRlLmRldmljZSwgIiVzIGVudHJ5XG4iLCBfX2Z1bmNfXyk7CisKIAlzaF9wYWdlc19pbmZv ID0gKHN0cnVjdCB4ZW5fc2hhcmVkX3BhZ2VzX2luZm8gKikoKnJlZnNfaW5mbyk7CiAKIAlpZiAo c2hfcGFnZXNfaW5mby0+dW5tYXBfb3BzID09IE5VTEwgfHwKIAkgICAgc2hfcGFnZXNfaW5mby0+ ZGF0YV9wYWdlcyA9PSBOVUxMKSB7Ci0JCXByaW50aygiSW1wb3J0ZWQgcGFnZXMgYWxyZWFkeSBj bGVhbmVkIHVwIG9yIGJ1ZmZlciB3YXMgbm90IGltcG9ydGVkIHlldFxuIik7CisJCWRldl93YXJu KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkltcG9ydGVkIHBhZ2VzIGFscmVhZHkgY2xl YW5lZCB1cCBvciBidWZmZXIgd2FzIG5vdCBpbXBvcnRlZCB5ZXRcbiIpOwogCQlyZXR1cm4gMDsK IAl9CiAKIAlpZiAoZ250dGFiX3VubWFwX3JlZnMoc2hfcGFnZXNfaW5mby0+dW5tYXBfb3BzLCBO VUxMLAogCQkJICAgICAgc2hfcGFnZXNfaW5mby0+ZGF0YV9wYWdlcywgbmVudHMpICkgewotCQlw cmludGsoIkNhbm5vdCB1bm1hcCBkYXRhIHBhZ2VzXG4iKTsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJDYW5ub3QgdW5tYXAgZGF0YSBwYWdlc1xuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KIApAQCAtMzUyLDUgKzM2NSw2IEBAIGludCBoeXBlcl9kbWFidWZfeGVu X3VubWFwX3NoYXJlZF9wYWdlcyh2b2lkICoqcmVmc19pbmZvLCBpbnQgbmVudHMpIHsKIAlrZnJl ZShzaF9wYWdlc19pbmZvKTsKIAlzaF9wYWdlc19pbmZvID0gTlVMTDsKIAorCWRldl9kYmcoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiJXMgZXhpdFxuIiwgX19mdW5jX18pOwogCXJldHVy biAwOwogfQotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVu LWRldmVs