From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 45/60] hyper_dmabuf: adding poll/read for event generation Date: Tue, 19 Dec 2017 11:30:01 -0800 Message-ID: <1513711816-2618-45-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 aHlwZXJfZG1hYnVmIGRyaXZlciBvbiBpbXBvcnRpbmcgZG9tYWluIG5vdyBnZW5lcmF0ZXMgZXZl bnQKZXZlcnkgdGltZSBuZXcgaHlwZXJfZG1hYnVmIGlzIGF2YWlsYWJsZSAodmlzaWJsZSkgdG8g dGhlCmltcG9ydGVyLgoKRWFjaCBldmVudCBjb21lcyB3aXRoIDEyOCBieXRlIHByaXZhdGUgZGF0 YSwgd2hpY2ggY2FuCmNvbnRhaW4gYW55IG1ldGEgZGF0YSBvciB1c2VyIGRhdGEgc3BlY2lmaWMg dG8gdGhlIG9yaWdpbmF0b3IKb2YgRE1BIEJVRi4KClNpZ25lZC1vZmYtYnk6IERvbmd3b24gS2lt IDxkb25nd29uLmtpbUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL0tj b25maWcgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMveGVuL2h5cGVyX2Rt YWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMgICAgICAgIHwgMTIwICsrKysrKysrKysrKysrKysrKyst CiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oICAgICAgICB8ICA0 OCArKysrKystLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9ldmVudC5j ICAgICAgfCAxMjUgKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX2V2ZW50LmggICAgICB8ICAzOCArKysrKysrCiBkcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMgICAgICB8ICAyMyArKy0tCiBkcml2ZXJz L3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2xpc3QuYyAgICAgICB8ICAgMSArCiBkcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jICAgICAgICB8ICA0NCArKysr KysrLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuaCAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3RydWN0Lmgg ICAgIHwgICA0ICstCiAuLi4veGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9j b21tLmMgICB8ICAzNyArKysrKy0KIGluY2x1ZGUvdWFwaS94ZW4vaHlwZXJfZG1hYnVmLmggICAg ICAgICAgICAgICAgICAgIHwgIDEzICsrLQogMTMgZmlsZXMgY2hhbmdlZCwgNDMwIGluc2VydGlv bnMoKyksIDM2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMveGVuL2h5 cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZXZlbnQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZXZlbnQuaAoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9LY29uZmlnIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L0tjb25maWcKaW5kZXggMTg1ZmRmOC4uZWIxYjYzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL0tjb25maWcKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL0tjb25m aWcKQEAgLTE5LDQgKzE5LDE0IEBAIGNvbmZpZyBIWVBFUl9ETUFCVUZfU1lTRlMKIAkgIEV4cG9z ZSBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRlZCBhbmQgZXhwb3J0ZWQgYnVmZmVycyB1c2luZwog CSAgaHlwZXJfZG1hYnVmIGRyaXZlcgogCitjb25maWcgSFlQRVJfRE1BQlVGX0VWRU5UX0dFTgor CWJvb2wgIkVuYWJsZSBldmVudC1nZW5lcmF0aW9uIGFuZCBwb2xsaW5nIG9wZXJhdGlvbiIKKwlk ZWZhdWx0IG4KKwlkZXBlbmRzIG9uIEhZUEVSX0RNQUJVRgorCWhlbHAKKwkgIFdpdGggdGhpcyBj b25maWcgZW5hYmxlZCwgaHlwZXJfZG1hYnVmIGRyaXZlciBvbiB0aGUgaW1wb3J0ZXIgc2lkZQor CSAgZ2VuZXJhdGVzIGV2ZW50cyBhbmQgcXVldWUgdGhvc2UgdXAgaW4gdGhlIGV2ZW50IGxpc3Qg d2hlbmV2ZXIgYSBuZXcKKwkgIHNoYXJlZCBETUEtQlVGIGlzIGF2YWlsYWJsZS4gRXZlbnRzIGlu IHRoZSBsaXN0IGNhbiBiZSByZXRyaWV2ZWQgYnkKKwkgIHJlYWQgb3BlcmF0aW9uLgorCiBlbmRt ZW51CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvTWFrZWZpbGUgYi9kcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvTWFrZWZpbGUKaW5kZXggNTA0MGI5Zi4uMWNkN2E4MSAxMDA2 NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9NYWtlZmlsZQpAQCAtMTMsNiArMTMsNyBAQCBpZm5lcSAoJChLRVJO RUxSRUxFQVNFKSwpCiAJCQkJIGh5cGVyX2RtYWJ1Zl9pZC5vIFwKIAkJCQkgaHlwZXJfZG1hYnVm X3JlbW90ZV9zeW5jLm8gXAogCQkJCSBoeXBlcl9kbWFidWZfcXVlcnkubyBcCisJCQkJIGh5cGVy X2RtYWJ1Zl9ldmVudC5vIFwKIAogaWZlcSAoJChDT05GSUdfWEVOKSwgeSkKIAkkKFRBUkdFVF9N T0RVTEUpLW9ianMgKz0geGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5vIFwKZGlmZiAtLWdpdCBh L2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMgYi9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5jCmluZGV4IDhjNDg4ZDcuLjI4NDUyMjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMK KysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYwpAQCAtMzAs NyArMzAsMTAgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9t aXNjZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Vh Y2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9wb2xsLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1 Zi5oPgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9kcnYuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFi dWZfY29uZi5oIgpAQCAtMzgsNiArNDEsNyBAQAogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9tc2cu aCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbGlzdC5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1 Zl9pZC5oIgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9ldmVudC5oIgogCiAjaWZkZWYgQ09ORklH X0hZUEVSX0RNQUJVRl9YRU4KICNpbmNsdWRlICJ4ZW4vaHlwZXJfZG1hYnVmX3hlbl9kcnYuaCIK QEAgLTY0LDcgKzY4LDcgQEAgaW50IGh5cGVyX2RtYWJ1Zl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmaWxlICpmaWxwKQogCQlyZXR1cm4gLUVCVVNZOwogCiAJLyoKLQkgKiBJbml0 aWFsaXplIGJhY2tlbmQgaWYgbmVlZGVkbSwKKwkgKiBJbml0aWFsaXplIGJhY2tlbmQgaWYgbmVl ZGVkLAogCSAqIHVzZSBtdXRleCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuCiAJICog dHdvIHVzZXJzcGFjZSBhcHBzIHdpbGwgb3BlbiBkZXZpY2UgYXQgdGhlIHNhbWUgdGltZQogCSAq LwpAQCAtOTEsNiArOTUsMTEyIEBAIGludCBoeXBlcl9kbWFidWZfcmVsZWFzZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAloeXBlcl9kbWFidWZfZm9yZWFjaF9l eHBvcnRlZChoeXBlcl9kbWFidWZfZW1lcmdlbmN5X3JlbGVhc2UsIGZpbHApOwogCisJLyogY2xl YW4gdXAgZXZlbnQgcXVldWUgKi8KKwloeXBlcl9kbWFidWZfZXZlbnRzX3JlbGVhc2UoKTsKKwor CXJldHVybiAwOworfQorCit1bnNpZ25lZCBpbnQgaHlwZXJfZG1hYnVmX2V2ZW50X3BvbGwoc3Ry dWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqd2FpdCkKK3sKKwl1bnNp Z25lZCBpbnQgbWFzayA9IDA7CisKKwlwb2xsX3dhaXQoZmlscCwgJmh5cGVyX2RtYWJ1Zl9wcml2 YXRlLmV2ZW50X3dhaXQsIHdhaXQpOworCisJaWYgKCFsaXN0X2VtcHR5KCZoeXBlcl9kbWFidWZf cHJpdmF0ZS5ldmVudF9saXN0KSkKKwkJbWFzayB8PSBQT0xMSU4gfCBQT0xMUkROT1JNOworCisJ cmV0dXJuIG1hc2s7Cit9CisKK3NzaXplX3QgaHlwZXJfZG1hYnVmX2V2ZW50X3JlYWQoc3RydWN0 IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWZmZXIsCisJCXNpemVfdCBjb3VudCwgbG9mZl90 ICpvZmZzZXQpCit7CisJaW50IHJldDsKKworCS8qIG9ubHkgcm9vdCBjYW4gcmVhZCBldmVudHMg Ki8KKwlpZiAoIWNhcGFibGUoQ0FQX0RBQ19PVkVSUklERSkpCisJCXJldHVybiAtRUZBVUxUOwor CisJLyogbWFrZSBzdXJlIHVzZXIgYnVmZmVyIGNhbiBiZSB3cml0dGVuICovCisJaWYgKCFhY2Nl c3Nfb2soVkVSSUZZX1dSSVRFLCBidWZmZXIsIGNvdW50KSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisK KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2 ZW50X3JlYWRfbG9jayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXdoaWxlICgxKSB7 CisJCXN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnQgKmUgPSBOVUxMOworCisJCXNwaW5fbG9ja19p cnEoJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2ZW50X2xvY2spOworCQlpZiAoIWxpc3RfZW1wdHko Jmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2ZW50X2xpc3QpKSB7CisJCQllID0gbGlzdF9maXJzdF9l bnRyeSgmaHlwZXJfZG1hYnVmX3ByaXZhdGUuZXZlbnRfbGlzdCwKKwkJCQkJc3RydWN0IGh5cGVy X2RtYWJ1Zl9ldmVudCwgbGluayk7CisJCQlsaXN0X2RlbCgmZS0+bGluayk7CisJCX0KKwkJc3Bp bl91bmxvY2tfaXJxKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9sb2NrKTsKKworCQlpZiAo IWUpIHsKKwkJCWlmIChyZXQpCisJCQkJYnJlYWs7CisJCQlpZiAoZmlscC0+Zl9mbGFncyAmIE9f Tk9OQkxPQ0spIHsKKwkJCQlyZXQgPSAtRUFHQUlOOworCQkJCWJyZWFrOworCQkJfQorCisJCQlt dXRleF91bmxvY2soJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2ZW50X3JlYWRfbG9jayk7CisJCQly ZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZXZlbnRf d2FpdCwKKwkJCQkJCSAgICAgICAhbGlzdF9lbXB0eSgmaHlwZXJfZG1hYnVmX3ByaXZhdGUuZXZl bnRfbGlzdCkpOworCisJCQlpZiAocmV0ID49IDApCisJCQkJcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9yZWFkX2xvY2spOworCisJCQlp ZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0gZWxzZSB7CisJCQl1bnNpZ25lZCBsZW5ndGgg PSAoc2l6ZW9mKHN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnRfaGRyKSArIGUtPmV2ZW50X2RhdGEu aGRyLnNpemUpOworCisJCQlpZiAobGVuZ3RoID4gY291bnQgLSByZXQpIHsKK3B1dF9iYWNrX2V2 ZW50OgorCQkJCXNwaW5fbG9ja19pcnEoJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2ZW50X2xvY2sp OworCQkJCWxpc3RfYWRkKCZlLT5saW5rLCAmaHlwZXJfZG1hYnVmX3ByaXZhdGUuZXZlbnRfbGlz dCk7CisJCQkJc3Bpbl91bmxvY2tfaXJxKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9sb2Nr KTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKGNvcHlfdG9fdXNlcihidWZmZXIgKyByZXQs ICZlLT5ldmVudF9kYXRhLmhkciwKKwkJCQkJIHNpemVvZihzdHJ1Y3QgaHlwZXJfZG1hYnVmX2V2 ZW50X2hkcikpKSB7CisJCQkJaWYgKHJldCA9PSAwKQorCQkJCQlyZXQgPSAtRUZBVUxUOworCisJ CQkJZ290byBwdXRfYmFja19ldmVudDsKKwkJCX0KKworCQkJcmV0ICs9IHNpemVvZihzdHJ1Y3Qg aHlwZXJfZG1hYnVmX2V2ZW50X2hkcik7CisKKwkJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyICsg cmV0LCBlLT5ldmVudF9kYXRhLmRhdGEsIGUtPmV2ZW50X2RhdGEuaGRyLnNpemUpKSB7CisJCQkJ LyogZXJyb3Igd2hpbGUgY29weWluZyB2b2lkICpkYXRhICovCisKKwkJCQlzdHJ1Y3QgaHlwZXJf ZG1hYnVmX2V2ZW50X2hkciBkdW1teV9oZHIgPSB7MH07CisJCQkJcmV0IC09IHNpemVvZihzdHJ1 Y3QgaHlwZXJfZG1hYnVmX2V2ZW50X2hkcik7CisKKwkJCQkvKiBudWxsaWZ5aW5nIGhkciBvZiB0 aGUgZXZlbnQgaW4gdXNlciBidWZmZXIgKi8KKwkJCQljb3B5X3RvX3VzZXIoYnVmZmVyICsgcmV0 LCAmZHVtbXlfaGRyLAorCQkJCQkgICAgIHNpemVvZihkdW1teV9oZHIpKTsKKworCQkJCXJldCA9 IC1FRkFVTFQ7CisKKwkJCQlnb3RvIHB1dF9iYWNrX2V2ZW50OworCQkJfQorCisJCQlyZXQgKz0g ZS0+ZXZlbnRfZGF0YS5oZHIuc2l6ZTsKKwkJCWtmcmVlKGUpOworCQl9CisJfQorCisJbXV0ZXhf dW5sb2NrKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9yZWFkX2xvY2spOworCiAJcmV0dXJu IDA7CiB9CiAKQEAgLTk5LDYgKzIwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGh5cGVyX2RtYWJ1Zl9kcml2ZXJfZm9wcyA9CiAJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJLm9w ZW4gPSBoeXBlcl9kbWFidWZfb3BlbiwKIAkucmVsZWFzZSA9IGh5cGVyX2RtYWJ1Zl9yZWxlYXNl LAorCS5yZWFkID0gaHlwZXJfZG1hYnVmX2V2ZW50X3JlYWQsCisJLnBvbGwgPSBoeXBlcl9kbWFi dWZfZXZlbnRfcG9sbCwKIAkudW5sb2NrZWRfaW9jdGwgPSBoeXBlcl9kbWFidWZfaW9jdGwsCiB9 OwogCkBAIC0xODQsNiArMjk2LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGh5cGVyX2RtYWJ1Zl9k cnZfaW5pdCh2b2lkKQogCX0KICNlbmRpZgogCisJLyogSW5pdGlhbGl6ZSBldmVudCBxdWV1ZSAq LworCUlOSVRfTElTVF9IRUFEKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9saXN0KTsKKwlp bml0X3dhaXRxdWV1ZV9oZWFkKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF93YWl0KTsKKwor CWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmN1cnJfbnVtX2V2ZW50ID0gMDsKKwogCS8qIGludGVycnVw dCBmb3IgY29tbSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBoZXJlOiAqLwogCXJldHVybiByZXQ7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5o IGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuaAppbmRleCBmZmU0 ZDUzLi4wOGU4ZWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX2Rydi5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZf ZHJ2LmgKQEAgLTMwLDYgKzMwLDQyIEBACiAKIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxOwogCitz dHJ1Y3QgaHlwZXJfZG1hYnVmX2V2ZW50IHsKKwlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2V2ZW50X2Rh dGEgZXZlbnRfZGF0YTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cit9OworCitzdHJ1Y3QgaHlw ZXJfZG1hYnVmX3ByaXZhdGUgeworICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7CisKKwkv KiBWTShkb21haW4pIGlkIG9mIGN1cnJlbnQgVk0gaW5zdGFuY2UgKi8KKwlpbnQgZG9taWQ7CisK KwkvKiB3b3JrcXVldWUgZGVkaWNhdGVkIHRvIGh5cGVyX2RtYWJ1ZiBkcml2ZXIgKi8KKwlzdHJ1 Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya19xdWV1ZTsKKworCS8qIGxpc3Qgb2YgcmV1c2FibGUg aHlwZXJfZG1hYnVmX2lkcyAqLworCXN0cnVjdCBsaXN0X3JldXNhYmxlX2lkICppZF9xdWV1ZTsK KworCS8qIGJhY2tlbmQgb3BzIC0gaHlwZXJ2aXNvciBzcGVjaWZpYyAqLworCXN0cnVjdCBoeXBl cl9kbWFidWZfYmFja2VuZF9vcHMgKmJhY2tlbmRfb3BzOworCisJLyogZGV2aWNlIGdsb2JhbCBs b2NrICovCisJLyogVE9ETzogbWlnaHQgbmVlZCBhIGxvY2sgcGVyIHJlc291cmNlIChlLmcuIEVY UE9SVCBMSVNUKSAqLworCXN0cnVjdCBtdXRleCBsb2NrOworCisJLyogZmxhZyB0aGF0IHNob3dz IHdoZXRoZXIgYmFja2VuZCBpcyBpbml0aWFsaXplZCAqLworCWJvb2wgYmFja2VuZF9pbml0aWFs aXplZDsKKworICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBldmVudF93YWl0OworICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGV2ZW50X2xpc3Q7CisKKwlzcGlubG9ja190IGV2ZW50X2xvY2s7CisJ c3RydWN0IG11dGV4IGV2ZW50X3JlYWRfbG9jazsKKworCWludCBjdXJyX251bV9ldmVudDsKK307 CisKIHN0cnVjdCBsaXN0X3JldXNhYmxlX2lkIHsKIAloeXBlcl9kbWFidWZfaWRfdCBoaWQ7CiAJ c3RydWN0IGxpc3RfaGVhZCBsaXN0OwpAQCAtNjksMTYgKzEwNSw0IEBAIHN0cnVjdCBoeXBlcl9k bWFidWZfYmFja2VuZF9vcHMgewogCWludCAoKnNlbmRfcmVxKShpbnQsIHN0cnVjdCBoeXBlcl9k bWFidWZfcmVxICosIGludCk7CiB9OwogCi1zdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUgewot ICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0JaW50IGRvbWlkOwotCXN0cnVjdCB3b3Jr cXVldWVfc3RydWN0ICp3b3JrX3F1ZXVlOwotCXN0cnVjdCBsaXN0X3JldXNhYmxlX2lkICppZF9x dWV1ZTsKLQotCS8qIGJhY2tlbmQgb3BzIC0gaHlwZXJ2aXNvciBzcGVjaWZpYyAqLwotCXN0cnVj dCBoeXBlcl9kbWFidWZfYmFja2VuZF9vcHMgKmJhY2tlbmRfb3BzOwotCXN0cnVjdCBtdXRleCBs b2NrOwotCWJvb2wgYmFja2VuZF9pbml0aWFsaXplZDsKLX07Ci0KICNlbmRpZiAvKiBfX0xJTlVY X1BVQkxJQ19IWVBFUl9ETUFCVUZfRFJWX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9ldmVudC5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9ldmVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmJlNzBlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYv aHlwZXJfZG1hYnVmX2V2ZW50LmMKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgRG9uZ3dvbiBLaW0gPGRvbmd3 b24ua2ltQGludGVsLmNvbT4KKyAqICAgIE1hdGV1c3ogUG9scm9sYSA8bWF0ZXVzengucG90cm9s YUBpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNs dWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYuaD4KKyNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDxhc20veGVu L3BhZ2UuaD4KKyNpbmNsdWRlICJoeXBlcl9kbWFidWZfZHJ2LmgiCisjaW5jbHVkZSAiaHlwZXJf ZG1hYnVmX3N0cnVjdC5oIgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9saXN0LmgiCisjaW5jbHVk ZSAiaHlwZXJfZG1hYnVmX2V2ZW50LmgiCisKK2V4dGVybiBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3By aXZhdGUgaHlwZXJfZG1hYnVmX3ByaXZhdGU7CisKK3N0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9z ZW5kX2V2ZW50X2xvY2tlZChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2V2ZW50ICplKQoreworCXN0cnVj dCBoeXBlcl9kbWFidWZfZXZlbnQgKm9sZGVzdDsKKworCWFzc2VydF9zcGluX2xvY2tlZCgmaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZXZlbnRfbG9jayk7CisKKwkvKiBjaGVjayBjdXJyZW50IG51bWJl ciBvZiBldmVudCB0aGVuIGlmIGl0IGhpdHMgdGhlIG1heCBudW0gYWxsb3dlZAorCSAqIHRoZW4g cmVtb3ZlIHRoZSBvbGRlc3QgZXZlbnQgaW4gdGhlIGxpc3QgKi8KKwlpZiAoaHlwZXJfZG1hYnVm X3ByaXZhdGUuY3Vycl9udW1fZXZlbnQgPiBNQVhfTlVNQkVSX09GX0VWRU5UIC0gMSkgeworCQlv bGRlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9saXN0 LAorCQkJCXN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnQsIGxpbmspOworCQlsaXN0X2RlbCgmb2xk ZXN0LT5saW5rKTsKKwkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuY3Vycl9udW1fZXZlbnQtLTsKKwl9 CisKKwlsaXN0X2FkZF90YWlsKCZlLT5saW5rLAorCQkgICAgICAmaHlwZXJfZG1hYnVmX3ByaXZh dGUuZXZlbnRfbGlzdCk7CisKKwloeXBlcl9kbWFidWZfcHJpdmF0ZS5jdXJyX251bV9ldmVudCsr OworCisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF93 YWl0KTsKK30KKwordm9pZCBoeXBlcl9kbWFidWZfZXZlbnRzX3JlbGVhc2UoKQoreworCXN0cnVj dCBoeXBlcl9kbWFidWZfZXZlbnQgKmUsICpldDsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwor CisJc3Bpbl9sb2NrX2lycXNhdmUoJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2ZW50X2xvY2ssIGly cWZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBldCwgJmh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmV2ZW50X2xpc3QsCisJCQkJIGxpbmspIHsKKwkJbGlzdF9kZWwoJmUtPmxpbmsp OworCQloeXBlcl9kbWFidWZfcHJpdmF0ZS5jdXJyX251bV9ldmVudC0tOworCX0KKworCWlmICho eXBlcl9kbWFidWZfcHJpdmF0ZS5jdXJyX251bV9ldmVudCkgeworCQlkZXZfZXJyKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJwb3NzaWJsZSBsZWFrIG9uIGV2ZW50X2xpc3RcbiIp OworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV2 ZW50X2xvY2ssIGlycWZsYWdzKTsKK30KKworaW50IGh5cGVyX2RtYWJ1Zl9pbXBvcnRfZXZlbnQo aHlwZXJfZG1hYnVmX2lkX3QgaGlkKQoreworCXN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnQgKmU7 CisJc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqaW1wb3J0ZWRfc2d0X2lu Zm87CisKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCisJaW1wb3J0ZWRfc2d0X2luZm8gPSBo eXBlcl9kbWFidWZfZmluZF9pbXBvcnRlZChoaWQpOworCisJaWYgKCFpbXBvcnRlZF9zZ3RfaW5m bykgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJjYW4ndCBm aW5kIGltcG9ydGVkX3NndF9pbmZvIGluIHRoZSBsaXN0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJZSA9IGt6YWxsb2Moc2l6ZW9mKCplKSwgR0ZQX0tFUk5FTCk7CisKKwllLT5ldmVu dF9kYXRhLmhkci5ldmVudF90eXBlID0gSFlQRVJfRE1BQlVGX05FV19JTVBPUlQ7CisJZS0+ZXZl bnRfZGF0YS5oZHIuaGlkID0gaGlkOworCWUtPmV2ZW50X2RhdGEuZGF0YSA9ICh2b2lkKikmaW1w b3J0ZWRfc2d0X2luZm8tPnByaXZbMF07CisJZS0+ZXZlbnRfZGF0YS5oZHIuc2l6ZSA9IDEyODsK KworCXNwaW5fbG9ja19pcnFzYXZlKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9sb2NrLCBp cnFmbGFncyk7CisKKwloeXBlcl9kbWFidWZfc2VuZF9ldmVudF9sb2NrZWQoZSk7CisKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF9sb2NrLCBpcnFm bGFncyk7CisKKwlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJldmVu dCBudW1iZXIgPSAlZCA6IiwgaHlwZXJfZG1hYnVmX3ByaXZhdGUuY3Vycl9udW1fZXZlbnQpOwor CisJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkiZ2VuZXJhdGluZyBl dmVudHMgZm9yIHslZCwgJWQsICVkLCAlZH1cbiIsCisJCQlpbXBvcnRlZF9zZ3RfaW5mby0+aGlk LmlkLCBpbXBvcnRlZF9zZ3RfaW5mby0+aGlkLnJuZ19rZXlbMF0sCisJCQlpbXBvcnRlZF9zZ3Rf aW5mby0+aGlkLnJuZ19rZXlbMV0sIGltcG9ydGVkX3NndF9pbmZvLT5oaWQucm5nX2tleVsyXSk7 CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfZXZlbnQuaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfZXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM0ODU2Ci0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9l dmVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKi8KKworI2lmbmRlZiBfX0hZUEVSX0RNQUJVRl9FVkVOVF9IX18KKyNkZWZpbmUgX19I WVBFUl9ETUFCVUZfRVZFTlRfSF9fCisKKyNkZWZpbmUgTUFYX05VTUJFUl9PRl9FVkVOVCAxMDI0 CisKK2VudW0gaHlwZXJfZG1hYnVmX2V2ZW50X3R5cGUgeworCUhZUEVSX0RNQUJVRl9ORVdfSU1Q T1JUID0gMHgxMDAwMCwKK307CisKK3ZvaWQgaHlwZXJfZG1hYnVmX2V2ZW50c19yZWxlYXNlKHZv aWQpOworCitpbnQgaHlwZXJfZG1hYnVmX2ltcG9ydF9ldmVudChoeXBlcl9kbWFidWZfaWRfdCBo aWQpOworCisjZW5kaWYgLyogX19IWVBFUl9ETUFCVUZfRVZFTlRfSF9fICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMgYi9kcml2ZXJz L3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMKaW5kZXggZGZkYjg4OS4uODVi NzBkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9p b2N0bC5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW9jdGwu YwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9zZW5kX2V4cG9ydF9t c2coc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAqc2d0X2luZm8sCiB7CiAJc3RydWN0IGh5 cGVyX2RtYWJ1Zl9iYWNrZW5kX29wcyAqb3BzID0gaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2Vu ZF9vcHM7CiAJc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcTsKLQlpbnQgb3BlcmFuZHNbMTJd ID0gezB9OworCWludCBvcGVyYW5kc1s0MF0gPSB7MH07CiAJaW50IHJldCwgaTsKIAogCS8qIG5v dyBjcmVhdGUgcmVxdWVzdCBmb3IgaW1wb3J0ZXIgdmlhIHJpbmcgKi8KQEAgLTEwOSw3ICsxMDks NyBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9zZW5kX2V4cG9ydF9tc2coc3RydWN0IGh5cGVy X2RtYWJ1Zl9zZ3RfaW5mbyAqc2d0X2luZm8sCiAJfQogCiAJLyogZHJpdmVyL2FwcGxpY2F0aW9u IHNwZWNpZmljIHByaXZhdGUgaW5mbywgbWF4IDR4NCBieXRlcyAqLwotCW1lbWNweSgmb3BlcmFu ZHNbOF0sICZzZ3RfaW5mby0+cHJpdlswXSwgc2l6ZW9mKHVuc2lnbmVkIGludCkgKiA0KTsKKwlt ZW1jcHkoJm9wZXJhbmRzWzhdLCAmc2d0X2luZm8tPnByaXZbMF0sIHNpemVvZih1bnNpZ25lZCBp bnQpICogMzIpOwogCiAJcmVxID0ga2NhbGxvYygxLCBzaXplb2YoKnJlcSksIEdGUF9LRVJORUwp OwogCkBAIC0xMjEsMTEgKzEyMSw3IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3NlbmRfZXhw b3J0X21zZyhzdHJ1Y3QgaHlwZXJfZG1hYnVmX3NndF9pbmZvICpzZ3RfaW5mbywKIAkvKiBjb21w b3NpbmcgYSBtZXNzYWdlIHRvIHRoZSBpbXBvcnRlciAqLwogCWh5cGVyX2RtYWJ1Zl9jcmVhdGVf cmVxdWVzdChyZXEsIEhZUEVSX0RNQUJVRl9FWFBPUlQsICZvcGVyYW5kc1swXSk7CiAKLQlyZXQg PSBvcHMtPnNlbmRfcmVxKHNndF9pbmZvLT5oeXBlcl9kbWFidWZfcmRvbWFpbiwgcmVxLCBmYWxz ZSk7Ci0KLQlpZihyZXQpIHsKLQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2Us ICJlcnJvciB3aGlsZSBjb21tdW5pY2F0aW5nXG4iKTsKLQl9CisJcmV0ID0gb3BzLT5zZW5kX3Jl cShzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX3Jkb21haW4sIHJlcSwgdHJ1ZSk7CiAKIAlrZnJlZShy ZXEpOwogCkBAIC0xNDEsNyArMTM3LDYgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0 X3JlbW90ZV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlzdHJ1Y3QgaHlw ZXJfZG1hYnVmX3BhZ2VzX2luZm8gKnBhZ2VfaW5mbzsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX3Nn dF9pbmZvICpzZ3RfaW5mbzsKIAloeXBlcl9kbWFidWZfaWRfdCBoaWQ7Ci0JaW50IGk7CiAJaW50 IHJldCA9IDA7CiAKIAlpZiAoIWRhdGEpIHsKQEAgLTE4NywxMCArMTgyLDE0IEBAIHN0YXRpYyBp bnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHZv aWQgKmRhdGEpCiAJCQkJfQogCiAJCQkJLyogdXBkYXRlIHByaXZhdGUgZGF0YSBpbiBzZ3RfaW5m byB3aXRoIG5ldyBvbmVzICovCi0JCQkJbWVtY3B5KCZzZ3RfaW5mby0+cHJpdlswXSwgJmV4cG9y dF9yZW1vdGVfYXR0ci0+cHJpdlswXSwgc2l6ZW9mKHVuc2lnbmVkIGludCkgKiA0KTsKKwkJCQlt ZW1jcHkoJnNndF9pbmZvLT5wcml2WzBdLCAmZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2WzBdLCBz aXplb2YodW5zaWduZWQgaW50KSAqIDMyKTsKKworCQkJCS8qIHNlbmQgYW4gZXhwb3J0IG1zZyBm b3IgdXBkYXRpbmcgcHJpdiBpbiBpbXBvcnRlciAqLworCQkJCXJldCA9IGh5cGVyX2RtYWJ1Zl9z ZW5kX2V4cG9ydF9tc2coc2d0X2luZm8sIE5VTEwpOwogCi0JCQkJLyogVE9ETzogbmVlZCB0byBz ZW5kIHRoaXMgcHJpdmF0ZSBpbmZvIHRvIHRoZSBpbXBvcnRlciBzbyB0aGF0IHRob3NlCi0JCQkJ ICogb24gaW1wb3J0ZXIncyBzaWRlIGFyZSBhbHNvIHVwZGF0ZWQgKi8KKwkJCQlpZiAocmV0IDwg MCkgeworCQkJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkZhaWxlZCB0 byBzZW5kIGEgbmV3IHByaXZhdGUgZGF0YVxuIik7CisJCQkJfQogCiAJCQkJZG1hX2J1Zl9wdXQo ZG1hX2J1Zik7CiAJCQkJZXhwb3J0X3JlbW90ZV9hdHRyLT5oaWQgPSBoaWQ7CkBAIC0yODAsNyAr Mjc5LDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZV9pb2N0bChzdHJ1 Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlJTklUX0xJU1RfSEVBRCgmc2d0X2luZm8tPnZh X3ZtYXBwZWQtPmxpc3QpOwogCiAJLyogY29weSBwcml2YXRlIGRhdGEgdG8gc2d0X2luZm8gKi8K LQltZW1jcHkoJnNndF9pbmZvLT5wcml2WzBdLCAmZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2WzBd LCBzaXplb2YodW5zaWduZWQgaW50KSAqIDQpOworCW1lbWNweSgmc2d0X2luZm8tPnByaXZbMF0s ICZleHBvcnRfcmVtb3RlX2F0dHItPnByaXZbMF0sIHNpemVvZih1bnNpZ25lZCBpbnQpICogMzIp OwogCiAJcGFnZV9pbmZvID0gaHlwZXJfZG1hYnVmX2V4dF9wZ3Moc2d0KTsKIAlpZiAoIXBhZ2Vf aW5mbykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9saXN0LmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2xpc3QuYwpp bmRleCAyMWZjN2QwLi5lYWVmMmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX2xpc3QuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2xpc3QuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImh5cGVyX2RtYWJ1 Zl9kcnYuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbGlzdC5oIgogI2luY2x1ZGUgImh5cGVy X2RtYWJ1Zl9pZC5oIgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9ldmVudC5oIgogCiBleHRlcm4g c3RydWN0IGh5cGVyX2RtYWJ1Zl9wcml2YXRlIGh5cGVyX2RtYWJ1Zl9wcml2YXRlOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jIGIvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYwppbmRleCA0NmNmOWE0Li4x NTJmOWUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVm X21zZy5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMK QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbXNnLmgiCiAjaW5jbHVk ZSAiaHlwZXJfZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3lu Yy5oIgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9ldmVudC5oIgogI2luY2x1ZGUgImh5cGVyX2Rt YWJ1Zl9saXN0LmgiCiAKIGV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUgaHlwZXJf ZG1hYnVmX3ByaXZhdGU7CkBAIC02NCwxMCArNjUsMTAgQEAgdm9pZCBoeXBlcl9kbWFidWZfY3Jl YXRlX3JlcXVlc3Qoc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwKIAkJICogb3BlcmFuZHM1 IDogb2Zmc2V0IG9mIGRhdGEgaW4gdGhlIGZpcnN0IHBhZ2UKIAkJICogb3BlcmFuZHM2IDogbGVu Z3RoIG9mIGRhdGEgaW4gdGhlIGxhc3QgcGFnZQogCQkgKiBvcGVyYW5kczcgOiB0b3AtbGV2ZWwg cmVmZXJlbmNlIG51bWJlciBmb3Igc2hhcmVkIHBhZ2VzCi0JCSAqIG9wZXJhbmRzOH4xMSA6IERy aXZlci1zcGVjaWZpYyBwcml2YXRlIGRhdGEgKGUuZy4gZ3JhcGhpYyBidWZmZXIncyBtZXRhIGlu Zm8pCisJCSAqIG9wZXJhbmRzOH4zOSA6IERyaXZlci1zcGVjaWZpYyBwcml2YXRlIGRhdGEgKGUu Zy4gZ3JhcGhpYyBidWZmZXIncyBtZXRhIGluZm8pCiAJCSAqLwotCQlmb3IgKGk9MDsgaSA8IDEx OyBpKyspCi0JCQlyZXEtPm9wZXJhbmRzW2ldID0gb3BlcmFuZHNbaV07CisKKwkJbWVtY3B5KCZy ZXEtPm9wZXJhbmRzWzBdLCAmb3BlcmFuZHNbMF0sIDQwICogc2l6ZW9mKGludCkpOwogCQlicmVh azsKIAogCWNhc2UgSFlQRVJfRE1BQlVGX05PVElGWV9VTkVYUE9SVDoKQEAgLTEzNiw2ICsxMzcs MzIgQEAgdm9pZCBjbWRfcHJvY2Vzc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJ ICogb3BlcmFuZHM3IDogdG9wLWxldmVsIHJlZmVyZW5jZSBudW1iZXIgZm9yIHNoYXJlZCBwYWdl cwogCQkgKiBvcGVyYW5kczh+MTEgOiBEcml2ZXItc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIChlLmcu IGdyYXBoaWMgYnVmZmVyJ3MgbWV0YSBpbmZvKQogCQkgKi8KKworCQkvKiBpZiBuZW50cyA9PSAw LCBpdCBtZWFucyBpdCBpcyBhIG1lc3NhZ2Ugb25seSBmb3IgcHJpdiBzeW5jaHJvbml6YXRpb24K KwkJICogZm9yIGV4aXN0aW5nIGltcG9ydGVkX3NndF9pbmZvIHNvIG5vdCBjcmVhdGluZyBhIG5l dyBvbmUgKi8KKwkJaWYgKHJlcS0+b3BlcmFuZHNbNF0gPT0gMCkgeworCQkJaHlwZXJfZG1hYnVm X2lkX3QgZXhpc3QgPSB7cmVxLT5vcGVyYW5kc1swXSwKKwkJCQkJCSAgIHtyZXEtPm9wZXJhbmRz WzFdLCByZXEtPm9wZXJhbmRzWzJdLAorCQkJCQkJICAgIHJlcS0+b3BlcmFuZHNbM119fTsKKwor CQkJaW1wb3J0ZWRfc2d0X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9pbXBvcnRlZChleGlzdCk7 CisKKwkJCWlmICghaW1wb3J0ZWRfc2d0X2luZm8pIHsKKwkJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmRldmljZSwKKwkJCQkJIkNhbid0IGZpbmQgaW1wb3J0ZWQgc2d0X2luZm8gZnJv bSBJTVBPUlRfTElTVFxuIik7CisJCQkJYnJlYWs7CisJCQl9CisJCQkvKiB1cGRhdGluZyBwcmkg ZGF0YSAqLworCQkJbWVtY3B5KCZpbXBvcnRlZF9zZ3RfaW5mby0+cHJpdlswXSwgJnJlcS0+b3Bl cmFuZHNbOF0sIDMyICogc2l6ZW9mKGludCkpOworCisjaWZkZWYgQ09ORklHX0hZUEVSX0RNQUJV Rl9FVkVOVF9HRU4KKwkJCS8qIGdlbmVyYXRpbmcgaW1wb3J0IGV2ZW50ICovCisJCQloeXBlcl9k bWFidWZfaW1wb3J0X2V2ZW50KGltcG9ydGVkX3NndF9pbmZvLT5oaWQpOworI2VuZGlmCisKKwkJ CWJyZWFrOworCQl9CisKIAkJaW1wb3J0ZWRfc2d0X2luZm8gPSBrY2FsbG9jKDEsIHNpemVvZigq aW1wb3J0ZWRfc2d0X2luZm8pLCBHRlBfS0VSTkVMKTsKIAogCQlpZiAoIWltcG9ydGVkX3NndF9p bmZvKSB7CkBAIC0xNjMsMTIgKzE5MCwxNyBAQCB2b2lkIGNtZF9wcm9jZXNzX3dvcmsoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQogCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmlj ZSwgIlx0bGFzdCBsZW4gJWRcbiIsIHJlcS0+b3BlcmFuZHNbNl0pOwogCQlkZXZfZGJnKGh5cGVy X2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIlx0Z3JlZmlkICVkXG4iLCByZXEtPm9wZXJhbmRzWzdd KTsKIAotCQlmb3IgKGk9MDsgaTw0OyBpKyspCi0JCQlpbXBvcnRlZF9zZ3RfaW5mby0+cHJpdmF0 ZVtpXSA9IHJlcS0+b3BlcmFuZHNbOCtpXTsKKwkJbWVtY3B5KCZpbXBvcnRlZF9zZ3RfaW5mby0+ cHJpdlswXSwgJnJlcS0+b3BlcmFuZHNbOF0sIDMyICogc2l6ZW9mKGludCkpOwogCiAJCWltcG9y dGVkX3NndF9pbmZvLT52YWxpZCA9IDE7CiAJCWh5cGVyX2RtYWJ1Zl9yZWdpc3Rlcl9pbXBvcnRl ZChpbXBvcnRlZF9zZ3RfaW5mbyk7Ci0JYnJlYWs7CisKKyNpZmRlZiBDT05GSUdfSFlQRVJfRE1B QlVGX0VWRU5UX0dFTgorCQkvKiBnZW5lcmF0aW5nIGltcG9ydCBldmVudCAqLworCQloeXBlcl9k bWFidWZfaW1wb3J0X2V2ZW50KGltcG9ydGVkX3NndF9pbmZvLT5oaWQpOworI2VuZGlmCisKKwkJ YnJlYWs7CiAKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfVE9fUkVNT1RFOgogCQkvKiBub3RpZnlp bmcgZG1hYnVmIG1hcC91bm1hcCB0byBpbXBvcnRlciAocHJvYmFibHkgbm90IG5lZWRlZCkgKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmgg Yi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5oCmluZGV4IDYzNmQ2 ZjEuLjc0NjQyNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfbXNnLmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9t c2cuaApAQCAtMjUsNyArMjUsNyBAQAogI2lmbmRlZiBfX0hZUEVSX0RNQUJVRl9NU0dfSF9fCiAj ZGVmaW5lIF9fSFlQRVJfRE1BQlVGX01TR19IX18KIAotI2RlZmluZSBNQVhfTlVNQkVSX09GX09Q RVJBTkRTIDEzCisjZGVmaW5lIE1BWF9OVU1CRVJfT0ZfT1BFUkFORFMgNDAKIAogc3RydWN0IGh5 cGVyX2RtYWJ1Zl9yZXEgewogCXVuc2lnbmVkIGludCByZXF1ZXN0X2lkOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zdHJ1Y3QuaCBiL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3RydWN0LmgKaW5kZXggYTFkM2VjNi4uZjAx ZjUzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9z dHJ1Y3QuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3N0cnVj dC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gewogCSAq IHVzZXMgcmVsZWFzZXMgaHlwZXJfZG1hYnVmIGRldmljZQogCSAqLwogCXN0cnVjdCBmaWxlICpm aWxwOwotCWludCBwcml2WzRdOyAvKiBkZXZpY2Ugc3BlY2lmaWMgaW5mbyAoZS5nLiBpbWFnZSdz IG1ldGEgaW5mbz8pICovCisJaW50IHByaXZbMzJdOyAvKiBkZXZpY2Ugc3BlY2lmaWMgaW5mbyAo ZS5nLiBpbWFnZSdzIG1ldGEgaW5mbz8pICovCiB9OwogCiAvKiBJbXBvcnRlciBzdG9yZSByZWZl cmVuY2VzIChiZWZvcmUgbWFwcGluZykgb24gc2hhcmVkIHBhZ2VzCkBAIC0xMTAsNyArMTEwLDcg QEAgc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyB7CiAJdm9pZCAqcmVmc19p bmZvOwogCWJvb2wgdmFsaWQ7CiAJaW50IG51bV9pbXBvcnRlcnM7Ci0JaW50IHByaXZhdGVbNF07 IC8qIGRldmljZSBzcGVjaWZpYyBpbmZvIChlLmcuIGltYWdlJ3MgbWV0YSBpbmZvPykgKi8KKwlp bnQgcHJpdlszMl07IC8qIGRldmljZSBzcGVjaWZpYyBpbmZvIChlLmcuIGltYWdlJ3MgbWV0YSBp bmZvPykgKi8KIH07CiAKICNlbmRpZiAvKiBfX0hZUEVSX0RNQUJVRl9TVFJVQ1RfSF9fICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5f Y29tbS5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2Nv bW0uYwppbmRleCA5Njg5MzQ2Li4zNzBhMDdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5jCisrKyBiL2RyaXZlcnMveGVuL2h5 cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMKQEAgLTMyLDYgKzMyLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiAjaW5jbHVk ZSA8eGVuL2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50cy5oPgogI2luY2x1ZGUg PHhlbi94ZW5idXMuaD4KQEAgLTQ3NCw2ICs0NzUsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9p bml0X3J4X3JidWYoaW50IGRvbWlkKQogCQkJICBiYWNrX3JpbmdfaXNyLCAwLAogCQkJICBOVUxM LCAodm9pZCopcmluZ19pbmZvKTsKIAorCXJldHVybiByZXQ7CisKIGZhaWxfb3RoZXJzOgogCWtm cmVlKG1hcF9vcHMpOwogCkBAIC01NDUsNiArNTQ4LDEwIEBAIGludCBoeXBlcl9kbWFidWZfeGVu X3NlbmRfcmVxKGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwgaW50IHdh aXQpCiAJc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKm5ld19yZXE7CiAJc3RydWN0IHhlbl9jb21t X3R4X3JpbmdfaW5mbyAqcmluZ19pbmZvOwogCWludCBub3RpZnk7CisKKwlzdHJ1Y3QgdGltZXZh bCB0dl9zdGFydCwgdHZfZW5kOworCXN0cnVjdCB0aW1ldmFsIHR2X2RpZmY7CisKIAlpbnQgdGlt ZW91dCA9IDEwMDA7CiAKIAkvKiBmaW5kIGEgcmluZyBpbmZvIGZvciB0aGUgY2hhbm5lbCAqLwpA QCAtNTU5LDcgKzU2NiwxMSBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9zZW5kX3JlcShpbnQgZG9t aWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEsIGludCB3YWl0KQogCiAJcmluZyA9ICZy aW5nX2luZm8tPnJpbmdfZnJvbnQ7CiAKKwlkb19nZXR0aW1lb2ZkYXkoJnR2X3N0YXJ0KTsKKwog CXdoaWxlIChSSU5HX0ZVTEwocmluZykpIHsKKwkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0 ZS5kZXZpY2UsICJSSU5HX0ZVTExcbiIpOworCiAJCWlmICh0aW1lb3V0ID09IDApIHsKIAkJCWRl dl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAogCQkJCSJUaW1lb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFuIGVudHJ5IGluIHRoZSByaW5nXG4iKTsKQEAgLTYwOSw2ICs2MjAsMjEgQEAg aW50IGh5cGVyX2RtYWJ1Zl94ZW5fc2VuZF9yZXEoaW50IGRvbWlkLCBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3JlcSAqcmVxLCBpbnQgd2FpdCkKIAkJfQogCiAJCW11dGV4X3VubG9jaygmcmluZ19pbmZv LT5sb2NrKTsKKwkJZG9fZ2V0dGltZW9mZGF5KCZ0dl9lbmQpOworCisJCS8qIGNoZWNraW5nIHRp bWUgZHVyYXRpb24gZm9yIHJvdW5kLXRyaXAgb2YgYSByZXF1ZXN0IGZvciBkZWJ1Z2dpbmcgKi8K KwkJaWYgKHR2X2VuZC50dl91c2VjID49IHR2X3N0YXJ0LnR2X3VzZWMpIHsKKwkJCXR2X2RpZmYu dHZfc2VjID0gdHZfZW5kLnR2X3NlYy10dl9zdGFydC50dl9zZWM7CisJCQl0dl9kaWZmLnR2X3Vz ZWMgPSB0dl9lbmQudHZfdXNlYy10dl9zdGFydC50dl91c2VjOworCQl9IGVsc2UgeworCQkJdHZf ZGlmZi50dl9zZWMgPSB0dl9lbmQudHZfc2VjLXR2X3N0YXJ0LnR2X3NlYy0xOworCQkJdHZfZGlm Zi50dl91c2VjID0gdHZfZW5kLnR2X3VzZWMrMTAwMDAwMC10dl9zdGFydC50dl91c2VjOworCQl9 CisKKwkJaWYgKHR2X2RpZmYudHZfc2VjICE9IDAgJiYgdHZfZGlmZi50dl91c2VjID4gMTYwMDAp CisJCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInNlbmRfcmVxOnRpbWUg ZGlmZjogJWxkIHNlYywgJWxkIHVzZWNcbiIsCisJCQkJdHZfZGlmZi50dl9zZWMsIHR2X2RpZmYu dHZfdXNlYyk7CisKIAkJcmV0dXJuIHJlcV9wZW5kaW5nLnN0YXR1czsKIAl9CiAKQEAgLTY1Nyw2 ICs2ODMsMTAgQEAgc3RhdGljIGlycXJldHVybl90IGJhY2tfcmluZ19pc3IoaW50IGlycSwgdm9p ZCAqaW5mbykKIAkJCQkJCQlzaXplb2YocmVzcCkpOwogCQkJCXJpbmctPnJzcF9wcm9kX3B2dCsr OwogCisJCQkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJCSJzZW5k aW5nIHJlc3BvbnNlIHRvIGV4cG9ydGVyIGZvciByZXF1ZXN0IGlkOiVkXG4iLAorCQkJCQlyZXNw LnJlc3BvbnNlX2lkKTsKKwogCQkJCVJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElG WShyaW5nLCBub3RpZnkpOwogCiAJCQkJaWYgKG5vdGlmeSkgewpAQCAtNjk2LDggKzcyNiwxMyBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgZnJvbnRfcmluZ19pc3IoaW50IGlycSwgdm9pZCAqaW5mbykK IAkJCS8qIHVwZGF0ZSBwZW5kaW5nIHJlcXVlc3QncyBzdGF0dXMgd2l0aCB3aGF0IGlzCiAJCQkg KiBpbiB0aGUgcmVzcG9uc2UKIAkJCSAqLwotCQkJaWYgKHJlcV9wZW5kaW5nLnJlcXVlc3RfaWQg PT0gcmVzcC0+cmVzcG9uc2VfaWQpCisKKwkJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUu ZGV2aWNlLAorCQkJCSJnZXR0aW5nIHJlc3BvbnNlIGZyb20gaW1wb3J0ZXJcbiIpOworCisJCQlp ZiAocmVxX3BlbmRpbmcucmVxdWVzdF9pZCA9PSByZXNwLT5yZXNwb25zZV9pZCkgewogCQkJCXJl cV9wZW5kaW5nLnN0YXR1cyA9IHJlc3AtPnN0YXR1czsKKwkJCX0KIAogCQkJaWYgKHJlc3AtPnN0 YXR1cyA9PSBIWVBFUl9ETUFCVUZfUkVRX05FRURTX0ZPTExPV19VUCkgewogCQkJCS8qIHBhcnNp bmcgcmVzcG9uc2UgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS94ZW4vaHlwZXJfZG1hYnVm LmggYi9pbmNsdWRlL3VhcGkveGVuL2h5cGVyX2RtYWJ1Zi5oCmluZGV4IGEyZDIyZDAuLjNhNjE3 MmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS94ZW4vaHlwZXJfZG1hYnVmLmgKKysrIGIvaW5j bHVkZS91YXBpL3hlbi9oeXBlcl9kbWFidWYuaApAQCAtMzAsNiArMzAsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgewogICAgICAgICBpbnQgcm5nX2tleVszXTsgLyogMTJieXRlcyBsb25nIHJhbmRvbSBu dW1iZXIgKi8KIH0gaHlwZXJfZG1hYnVmX2lkX3Q7CiAKK3N0cnVjdCBoeXBlcl9kbWFidWZfZXZl bnRfaGRyIHsKKwlpbnQgZXZlbnRfdHlwZTsgLyogb25lIHR5cGUgb25seSBmb3Igbm93IC0gbmV3 IGltcG9ydCAqLworCWh5cGVyX2RtYWJ1Zl9pZF90IGhpZDsgLyogaHlwZXJfZG1hYnVmX2lkIG9m IHNwZWNpZmljIGh5cGVyX2RtYWJ1ZiAqLworCXNpemVfdCBzaXplOyAvKiBzaXplIG9mIGRhdGEg Ki8KK307CisKK3N0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnRfZGF0YSB7CisJc3RydWN0IGh5cGVy X2RtYWJ1Zl9ldmVudF9oZHIgaGRyOworCXZvaWQgKmRhdGE7IC8qIHByaXZhdGUgZGF0YSAqLwor fTsKKwogI2RlZmluZSBJT0NUTF9IWVBFUl9ETUFCVUZfVFhfQ0hfU0VUVVAgXAogX0lPQyhfSU9D X05PTkUsICdHJywgMCwgc2l6ZW9mKHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfdHhfY2hfc2V0 dXApKQogc3RydWN0IGlvY3RsX2h5cGVyX2RtYWJ1Zl90eF9jaF9zZXR1cCB7CkBAIC01Niw3ICs2 Nyw3IEBAIHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZSB7CiAJaW50IHJl bW90ZV9kb21haW47CiAJLyogZXhwb3J0ZWQgZG1hIGJ1ZiBpZCAqLwogCWh5cGVyX2RtYWJ1Zl9p ZF90IGhpZDsKLQlpbnQgcHJpdls0XTsKKwlpbnQgcHJpdlszMl07CiB9OwogCiAjZGVmaW5lIElP Q1RMX0hZUEVSX0RNQUJVRl9FWFBPUlRfRkQgXAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs