From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v2 1/6] drm/msm: remove display stream compression(DSC) support for SM845 Date: Thu, 19 Apr 2018 16:51:59 -0700 Message-ID: <1524181924-9123-2-git-send-email-jsanka@codeaurora.org> References: <1524181924-9123-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1524181924-9123-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org VXBzdHJlYW0gRFNJIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgRFNDIHBhbmVscyB5ZXQuIFJlbW92 ZQp0aGUgc3VwcG9ydCBmb3IgY29tcHJlc3Npb24gZnJvbSBEUFUgZm9yIG5vdy4KCmNoYW5nZXMg aW4gdjI6CgktIGluZGVudHMgYW5kIHVucmVsYXRlZCBjaGFuZ2UgY2xlYW4gdXAgKFNlYW4gUGF1 bCkKCS0gZml4IGNvbXBpbGF0aW9uIGRlcGVuZGVuY3kgaW4gZHNpLXN0YWdpbmcKClNpZ25lZC1v ZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jICAgICAgfCAgIDQg LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyAgICAgICAgfCA0 NzYgKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlci5oICAgICAgICB8ICAxNCAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzLmggICB8ICAgNyArLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jICAgfCAgIDEgLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgICAgIHwgIDI1IC0tCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oICAgICB8ICAxNiAtCiBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmMgICAgICAgICB8IDI1MiAtLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5oICAgICAgICAgfCAx MDAgLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmggICAg ICAgIHwgIDE3ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3Bv bmcuYyAgICB8ICA0OCAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19w aW5ncG9uZy5oICAgIHwgIDIyIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d190b3AuYyAgICAgICAgIHwgIDEzIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od190b3AuaCAgICAgICAgIHwgICA3IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5jICAgICAgICAgICAgIHwgIDU1IC0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3JtLmggICAgICAgICAgICAgfCAgIDggLQogZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X3diLmMgICAgICAgICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL21z bS9kc2ktc3RhZ2luZy9kc2lfZHJtLmMgICAgICAgICAgfCAgIDcgLQogZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmggICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLQogMjEgZmlsZXMgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspLCAxMDkzIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuYwogZGVsZXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL01ha2VmaWxlCmluZGV4IDljMjc5OTEuLmIyM2EwMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQpA QCAtNjQsNyArNjQsNiBAQCBtc20teSA6PSBcCiAJZGlzcC9kcHUxL2RwdV9od19jb2xvcl9wcm9j ZXNzaW5nX3YxXzcubyBcCiAJZGlzcC9kcHUxL2RwdV9od19jdGwubyBcCiAJZGlzcC9kcHUxL2Rw dV9od19kcy5vIFwKLQlkaXNwL2RwdTEvZHB1X2h3X2RzYy5vIFwKIAlkaXNwL2RwdTEvZHB1X2h3 X2RzcHAubyBcCiAJZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLm8gXAogCWRpc3AvZHB1MS9k cHVfaHdfaW50Zi5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25u ZWN0b3IuYwppbmRleCAzNjYwN2UzLi4xMjM3ZWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCkBAIC0zOSwxMiArMzksOCBAQAogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgZV90b3BvbG9neV9uYW1lW10gPSB7CiAJe0RQ VV9STV9UT1BPTE9HWV9OT05FLAkiZHB1X25vbmUifSwKIAl7RFBVX1JNX1RPUE9MT0dZX1NJTkdM RVBJUEUsCSJkcHVfc2luZ2xlcGlwZSJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9E U0MsCSJkcHVfc2luZ2xlcGlwZV9kc2MifSwKIAl7RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFLAki ZHB1X2R1YWxwaXBlIn0sCi0Je0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0MsCSJkcHVfZHVh bHBpcGVfZHNjIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFLAkiZHB1X2R1 YWxwaXBlbWVyZ2UifSwKLQl7RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDLAki ZHB1X2R1YWxwaXBlbWVyZ2VfZHNjIn0sCi0Je0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NN RVJHRSwJImRwdV9kdWFscGlwZV9kc2NtZXJnZSJ9LAogCXtEUFVfUk1fVE9QT0xPR1lfUFBTUExJ VCwJImRwdV9wcHNwbGl0In0sCiB9Owogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVt X2xpc3QgZV90b3BvbG9neV9jb250cm9sW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXIuYwppbmRleCAxOThjNjE4Li4xNTE4ODliIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKQEAgLTMyLDcgKzMyLDYgQEAKICNp bmNsdWRlICJkcHVfZm9ybWF0cy5oIgogI2luY2x1ZGUgImRwdV9lbmNvZGVyX3BoeXMuaCIKICNp bmNsdWRlICJkcHVfcG93ZXJfaGFuZGxlLmgiCi0jaW5jbHVkZSAiZHB1X2h3X2RzYy5oIgogI2lu Y2x1ZGUgImRwdV9jcnRjLmgiCiAjaW5jbHVkZSAiZHB1X3RyYWNlLmgiCiAjaW5jbHVkZSAiZHB1 X2NvcmVfaXJxLmgiCkBAIC0xNTIsNyArMTUxLDYgQEAgZW51bSBkcHVfZW5jX3JjX3N0YXRlcyB7 CiAgKgkJCU9ubHkgdmFsaWQgYWZ0ZXIgZW5hYmxlLiBDbGVhcmVkIGFzIGRpc2FibGUuCiAgKiBA aHdfcHAJCUhhbmRsZSB0byB0aGUgcGluZ3BvbmcgYmxvY2tzIHVzZWQgZm9yIHRoZSBkaXNwbGF5 LiBOby4KICAqCQkJcGluZ3BvbmcgYmxvY2tzIGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBudW1fcGh5 c19lbmNzLgotICogQGh3X2RzYzoJCUFycmF5IG9mIERTQyBibG9jayBoYW5kbGVzIHVzZWQgZm9y IHRoZSBkaXNwbGF5LgogICogQGludGZzX3N3YXBwZWQJV2hldGhlciBvciBub3QgdGhlIHBoeXNf ZW5jIGludGVyZmFjZXMgaGF2ZSBiZWVuIHN3YXBwZWQKICAqCQkJZm9yIHBhcnRpYWwgdXBkYXRl IHJpZ2h0LW9ubHkgY2FzZXMsIHN1Y2ggYXMgcGluZ3BvbmcKICAqCQkJc3BsaXQgd2hlcmUgdmly dHVhbCBwaW5ncG9uZyBkb2VzIG5vdCBnZW5lcmF0ZSBJUlFzCkBAIC0xOTksNyArMTk3LDYgQEAg c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgewogCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlz X2VuY3NbTUFYX1BIWVNfRU5DT0RFUlNfUEVSX1ZJUlRVQUxdOwogCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpjdXJfbWFzdGVyOwogCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwW01BWF9D SEFOTkVMU19QRVJfRU5DXTsKLQlzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjW01BWF9DSEFOTkVM U19QRVJfRU5DXTsKIAogCWJvb2wgaW50ZnNfc3dhcHBlZDsKIApAQCAtMjM0LDIxICsyMzEsNiBA QCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCB7CiAKICNkZWZpbmUgdG9fZHB1X2VuY29kZXJfdmly dCh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQsIGJhc2UpCiAKLWJv b2wgZHB1X2VuY29kZXJfaXNfZHNjX2VuYWJsZWQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5j KQotCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Ci0Jc3RydWN0IG1zbV9j b21wcmVzc2lvbl9pbmZvICpjb21wX2luZm87Ci0KLQlpZiAoIWRybV9lbmMpCi0JCXJldHVybiBm YWxzZTsKLQotCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwotCWNvbXBf aW5mbyA9ICZkcHVfZW5jLT5tb2RlX2luZm8uY29tcF9pbmZvOwotCi0JcmV0dXJuIChjb21wX2lu Zm8tPmNvbXBfdHlwZSA9PSBNU01fRElTUExBWV9DT01QUkVTU0lPTl9EU0MpOwotfQotCiB2b2lk IGRwdV9lbmNvZGVyX3NldF9pZGxlX3RpbWVvdXQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5j LCB1MzIgaWRsZV90aW1lb3V0KQogewogCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5j OwpAQCAtMjYwLDMwICsyNDIsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX3NldF9pZGxlX3RpbWVvdXQo c3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLCB1MzIgaWRsZV90aW1lb3V0KQogCWRwdV9lbmMt PmlkbGVfdGltZW91dCA9IGlkbGVfdGltZW91dDsKIH0KIAotYm9vbCBkcHVfZW5jb2Rlcl9pc19k c2NfbWVyZ2Uoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQotewotCWVudW0gZHB1X3JtX3Rv cG9sb2d5X25hbWUgdG9wb2xvZ3k7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7 Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25uOwotCi0JaWYgKCFkcm1fZW5jKQotCQly ZXR1cm4gZmFsc2U7Ci0KLQlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsK LQlpZiAoIWRwdV9lbmMtPmN1cl9tYXN0ZXIpCi0JCXJldHVybiBmYWxzZTsKLQotCWRybV9jb25u ID0gZHB1X2VuYy0+Y3VyX21hc3Rlci0+Y29ubmVjdG9yOwotCWlmICghZHJtX2Nvbm4pCi0JCXJl dHVybiBmYWxzZTsKLQotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFt ZShkcm1fY29ubik7Ci0JaWYgKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9E U0NNRVJHRSkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBp bmxpbmUgaW50IF9kcHVfZW5jb2Rlcl9wb3dlcl9lbmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3Zp cnQgKmRwdV9lbmMsCiAJCQkJCQkJCWJvb2wgZW5hYmxlKQogewpAQCAtNzQ1LDMxMiArNzAzLDYg QEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl92aXJ0X2F0b21pY19jaGVjaygKIAlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9kc2NfdXBkYXRlX3BpY19kaW0oc3RydWN0 IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCWludCBwaWNfd2lkdGgsIGludCBwaWNfaGVp Z2h0KQotewotCWlmICghZHNjIHx8ICFwaWNfd2lkdGggfHwgIXBpY19oZWlnaHQpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIGlucHV0OiBwaWNfd2lkdGg9JWQgcGljX2hlaWdodD0lZFxuIiwKLQkJ CXBpY193aWR0aCwgcGljX2hlaWdodCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWlmICgo cGljX3dpZHRoICUgZHNjLT5zbGljZV93aWR0aCkgfHwKLQkgICAgKHBpY19oZWlnaHQgJSBkc2Mt PnNsaWNlX2hlaWdodCkpIHsKLQkJRFBVX0VSUk9SKCJwaWNfZGltPSVkeCVkIGhhcyB0byBiZSBt dWx0aXBsZSBvZiBzbGljZT0lZHglZFxuIiwKLQkJCXBpY193aWR0aCwgcGljX2hlaWdodCwKLQkJ CWRzYy0+c2xpY2Vfd2lkdGgsIGRzYy0+c2xpY2VfaGVpZ2h0KTsKLQkJcmV0dXJuIC1FSU5WQUw7 Ci0JfQotCi0JZHNjLT5waWNfd2lkdGggPSBwaWNfd2lkdGg7Ci0JZHNjLT5waWNfaGVpZ2h0ID0g cGljX2hlaWdodDsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJf ZHNjX3BjbGtfcGFyYW1fY2FsYyhzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRzYywKLQkJ aW50IGludGZfd2lkdGgpCi17Ci0JaW50IHNsaWNlX3Blcl9wa3QsIHNsaWNlX3Blcl9pbnRmOwot CWludCBieXRlc19pbl9zbGljZSwgdG90YWxfYnl0ZXNfcGVyX2ludGY7Ci0KLQlpZiAoIWRzYyB8 fCAhZHNjLT5zbGljZV93aWR0aCB8fCAhZHNjLT5zbGljZV9wZXJfcGt0IHx8Ci0JICAgIChpbnRm X3dpZHRoIDwgZHNjLT5zbGljZV93aWR0aCkpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGlucHV0 OiBpbnRmX3dpZHRoPSVkIHNsaWNlX3dpZHRoPSVkXG4iLAotCQkJaW50Zl93aWR0aCwgZHNjID8g ZHNjLT5zbGljZV93aWR0aCA6IC0xKTsKLQkJcmV0dXJuOwotCX0KLQotCXNsaWNlX3Blcl9wa3Qg PSBkc2MtPnNsaWNlX3Blcl9wa3Q7Ci0Jc2xpY2VfcGVyX2ludGYgPSBESVZfUk9VTkRfVVAoaW50 Zl93aWR0aCwgZHNjLT5zbGljZV93aWR0aCk7Ci0KLQkvKgotCSAqIElmIHNsaWNlX3Blcl9wa3Qg aXMgZ3JlYXRlciB0aGFuIHNsaWNlX3Blcl9pbnRmIHRoZW4gZGVmYXVsdCB0byAxLgotCSAqIFRo aXMgY2FuIGhhcHBlbiBkdXJpbmcgcGFydGlhbCB1cGRhdGUuCi0JICovCi0JaWYgKHNsaWNlX3Bl cl9wa3QgPiBzbGljZV9wZXJfaW50ZikKLQkJc2xpY2VfcGVyX3BrdCA9IDE7Ci0KLQlieXRlc19p bl9zbGljZSA9IERJVl9ST1VORF9VUChkc2MtPnNsaWNlX3dpZHRoICogZHNjLT5icHAsIDgpOwot CXRvdGFsX2J5dGVzX3Blcl9pbnRmID0gYnl0ZXNfaW5fc2xpY2UgKiBzbGljZV9wZXJfaW50ZjsK LQotCWRzYy0+ZW9sX2J5dGVfbnVtID0gdG90YWxfYnl0ZXNfcGVyX2ludGYgJSAzOwotCWRzYy0+ cGNsa19wZXJfbGluZSA9ICBESVZfUk9VTkRfVVAodG90YWxfYnl0ZXNfcGVyX2ludGYsIDMpOwot CWRzYy0+Ynl0ZXNfaW5fc2xpY2UgPSBieXRlc19pbl9zbGljZTsKLQlkc2MtPmJ5dGVzX3Blcl9w a3QgPSBieXRlc19pbl9zbGljZSAqIHNsaWNlX3Blcl9wa3Q7Ci0JZHNjLT5wa3RfcGVyX2xpbmUg PSBzbGljZV9wZXJfaW50ZiAvIHNsaWNlX3Blcl9wa3Q7Ci19Ci0KLXN0YXRpYyBpbnQgX2RwdV9l bmNvZGVyX2RzY19pbml0aWFsX2xpbmVfY2FsYyhzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8g KmRzYywKLQkJaW50IGVuY19pcF93aWR0aCkKLXsKLQlpbnQgc3NtX2RlbGF5LCB0b3RhbF9waXhl bHMsIHNvZnRfc2xpY2VfcGVyX2VuYzsKLQotCXNvZnRfc2xpY2VfcGVyX2VuYyA9IGVuY19pcF93 aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0KLQkvKgotCSAqIG1pbmltdW0gbnVtYmVyIG9mIGlu aXRpYWwgbGluZSBwaXhlbHMgaXMgYSBzdW0gb2Y6Ci0JICogMS4gc3ViLXN0cmVhbSBtdWx0aXBs ZXhlciBkZWxheSAoODMgZ3JvdXBzIGZvciA4YnBjLAotCSAqICAgIDkxIGZvciAxMCBicGMpICog MwotCSAqIDIuIGZvciB0d28gc29mdCBzbGljZSBjYXNlcywgYWRkIGV4dHJhIHN1Yi1zdHJlYW0g bXVsdGlwbGV4ZXIgKiAzCi0JICogMy4gdGhlIGluaXRpYWwgeG1pdCBkZWxheQotCSAqIDQuIHRv dGFsIHBpcGVsaW5lIGRlbGF5IHRocm91Z2ggdGhlICJsb2NrIHN0ZXAiIG9mIGVuY29kZXIgKDQ3 KQotCSAqIDUuIDYgYWRkaXRpb25hbCBwaXhlbHMgYXMgdGhlIG91dHB1dCBvZiB0aGUgcmF0ZSBi dWZmZXIgaXMKLQkgKiAgICA0OCBiaXRzIHdpZGUKLQkgKi8KLQlzc21fZGVsYXkgPSAoKGRzYy0+ YnBjIDwgMTApID8gODQgOiA5Mik7Ci0JdG90YWxfcGl4ZWxzID0gc3NtX2RlbGF5ICogMyArIGRz Yy0+aW5pdGlhbF94bWl0X2RlbGF5ICsgNDc7Ci0JaWYgKHNvZnRfc2xpY2VfcGVyX2VuYyA+IDEp Ci0JCXRvdGFsX3BpeGVscyArPSAoc3NtX2RlbGF5ICogMyk7Ci0JZHNjLT5pbml0aWFsX2xpbmVz ID0gRElWX1JPVU5EX1VQKHRvdGFsX3BpeGVscywgZHNjLT5zbGljZV93aWR0aCk7Ci0JcmV0dXJu IDA7Ci19Ci0KLXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9kc2NfaWNoX3Jlc2V0X292ZXJyaWRl X25lZWRlZChib29sIHB1X2VuLAotCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRzYykK LXsKLQkvKgotCSAqIEFzIHBlciB0aGUgRFNDIHNwZWMsIElDSF9SRVNFVCBjYW4gYmUgZWl0aGVy IGVuZCBvZiB0aGUgc2xpY2UgbGluZQotCSAqIG9yIGF0IHRoZSBlbmQgb2YgdGhlIHNsaWNlLiBI VyBpbnRlcm5hbGx5IGdlbmVyYXRlcyBpY2hfcmVzZXQgYXQKLQkgKiBlbmQgb2YgdGhlIHNsaWNl IGxpbmUgaWYgRFNDX01FUkdFIGlzIHVzZWQgb3IgZW5jb2RlciBoYXMgdHdvCi0JICogc29mdCBz bGljZXMuIEhvd2V2ZXIsIGlmIGVuY29kZXIgaGFzIG9ubHkgMSBzb2Z0IHNsaWNlIGFuZCBEU0Nf TUVSR0UKLQkgKiBpcyBub3QgdXNlZCB0aGVuIGl0IHdpbGwgZ2VuZXJhdGUgaWNoX3Jlc2V0IGF0 IHRoZSBlbmQgb2Ygc2xpY2UuCi0JICoKLQkgKiBOb3cgYXMgcGVyIHRoZSBzcGVjLCBkdXJpbmcg b25lIFBQUyBzZXNzaW9uLCBwb3NpdGlvbiB3aGVyZQotCSAqIGljaF9yZXNldCBpcyBnZW5lcmF0 ZWQgc2hvdWxkIG5vdCBjaGFuZ2UuIE5vdyBpZiBmdWxsLXNjcmVlbiBmcmFtZQotCSAqIGhhcyBt b3JlIHRoYW4gMSBzb2Z0IHNsaWNlIHRoZW4gSFcgd2lsbCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl Ci0JICogaWNoX3Jlc2V0IGF0IHRoZSBlbmQgb2Ygc2xpY2VfbGluZS4gQnV0IGZvciB0aGUgc2Ft ZSBwYW5lbCwgaWYKLQkgKiBwYXJ0aWFsIGZyYW1lIGlzIGVuYWJsZWQgYW5kIG9ubHkgMSBlbmNv ZGVyIGlzIHVzZWQgd2l0aCAxIHNsaWNlLAotCSAqIHRoZW4gSFcgd2lsbCBnZW5lcmF0ZSBpY2hf cmVzZXQgYXQgZW5kIG9mIHRoZSBzbGljZS4gVGhpcyBpcyBhCi0JICogbWlzbWF0Y2guIFByZXZl bnQgdGhpcyBieSBvdmVycmlkaW5nIEhXJ3MgZGVjaXNpb24uCi0JICovCi0JcmV0dXJuIHB1X2Vu ICYmIGRzYyAmJiAoZHNjLT5mdWxsX2ZyYW1lX3NsaWNlcyA+IDEpICYmCi0JCShkc2MtPnNsaWNl X3dpZHRoID09IGRzYy0+cGljX3dpZHRoKTsKLX0KLQotc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVy X2RzY19waXBlX2NmZyhzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAotCQlzdHJ1Y3QgZHB1X2h3 X3Bpbmdwb25nICpod19wcCwgc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCXUz MiBjb21tb25fbW9kZSwgYm9vbCBpY2hfcmVzZXQpCi17Ci0JaWYgKGh3X2RzYy0+b3BzLmRzY19j b25maWcpCi0JCWh3X2RzYy0+b3BzLmRzY19jb25maWcoaHdfZHNjLCBkc2MsIGNvbW1vbl9tb2Rl LCBpY2hfcmVzZXQpOwotCi0JaWYgKGh3X2RzYy0+b3BzLmRzY19jb25maWdfdGhyZXNoKQotCQlo d19kc2MtPm9wcy5kc2NfY29uZmlnX3RocmVzaChod19kc2MsIGRzYyk7Ci0KLQlpZiAoaHdfcHAt Pm9wcy5zZXR1cF9kc2MpCi0JCWh3X3BwLT5vcHMuc2V0dXBfZHNjKGh3X3BwKTsKLQotCWlmICho d19wcC0+b3BzLmVuYWJsZV9kc2MpCi0JCWh3X3BwLT5vcHMuZW5hYmxlX2RzYyhod19wcCk7Ci19 Ci0KLXN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX2RzY19uX2xtXzFfZW5jXzFfaW50ZihzdHJ1Y3Qg ZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKLXsKLQlpbnQgdGhpc19mcmFtZV9zbGljZXM7Ci0J aW50IGludGZfaXBfdywgZW5jX2lwX3c7Ci0JaW50IGljaF9yZXMsIGRzY19jb21tb25fbW9kZSA9 IDA7Ci0JaW50IHJjID0gMDsKLQotCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwID0gZHB1 X2VuYy0+aHdfcHBbMF07Ci0Jc3RydWN0IGRwdV9od19kc2MgKmh3X2RzYyA9IGRwdV9lbmMtPmh3 X2RzY1swXTsKLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqZW5jX21hc3RlciA9IGRwdV9lbmMt PmN1cl9tYXN0ZXI7Ci0Jc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MgPQotCQkmZHB1 X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mby5kc2NfaW5mbzsKLQotCXJjID0gX2RwdV9lbmNvZGVy X2RzY191cGRhdGVfcGljX2RpbShkc2MsIGRzYy0+cGljX3dpZHRoLAotCQkJZHNjLT5waWNfaGVp Z2h0KTsKLQlpZiAocmMpIHsKLQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAiZmFpbGVkIHRvIHVw ZGF0ZSBEU0MgcGljIGRpbVxuIik7Ci0JCXJldHVybiByYzsKLQl9Ci0KLQl0aGlzX2ZyYW1lX3Ns aWNlcyA9IGRzYy0+cGljX3dpZHRoIC8gZHNjLT5zbGljZV93aWR0aDsKLQlpbnRmX2lwX3cgPSB0 aGlzX2ZyYW1lX3NsaWNlcyAqIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JX2RwdV9lbmNvZGVyX2RzY19w Y2xrX3BhcmFtX2NhbGMoZHNjLCBpbnRmX2lwX3cpOwotCi0JZW5jX2lwX3cgPSBpbnRmX2lwX3c7 Ci0JX2RwdV9lbmNvZGVyX2RzY19pbml0aWFsX2xpbmVfY2FsYyhkc2MsIGVuY19pcF93KTsKLQot CWljaF9yZXMgPSBfZHB1X2VuY29kZXJfZHNjX2ljaF9yZXNldF9vdmVycmlkZV9uZWVkZWQoZmFs c2UsIGRzYyk7Ci0KLQlpZiAoZW5jX21hc3Rlci0+aW50Zl9tb2RlID09IElOVEZfTU9ERV9WSURF TykKLQkJZHNjX2NvbW1vbl9tb2RlID0gRFNDX01PREVfVklERU87Ci0KLQlEUFVfREVCVUdfRU5D KGRwdV9lbmMsICJwaWNfdzogJWQgcGljX2g6ICVkIG1vZGU6JWRcbiIsCi0JCWRzYy0+cGljX3dp ZHRoLCBkc2MtPnBpY19oZWlnaHQsIGRzY19jb21tb25fbW9kZSk7Ci0JRFBVX0VWVDMyKERSTUlE KCZkcHVfZW5jLT5iYXNlKSwgZHNjLT5waWNfd2lkdGgsIGRzYy0+cGljX2hlaWdodCwKLQkJCWRz Y19jb21tb25fbW9kZSk7Ci0KLQlfZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKGh3X2RzYywgaHdf cHAsIGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJaWNoX3Jlcyk7Ci0KLQlyZXR1cm4gMDsKLX0K LXN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX2RzY18yX2xtXzJfZW5jXzJfaW50ZihzdHJ1Y3QgZHB1 X2VuY29kZXJfdmlydCAqZHB1X2VuYykKLXsKLQlpbnQgdGhpc19mcmFtZV9zbGljZXM7Ci0JaW50 IGludGZfaXBfdywgZW5jX2lwX3c7Ci0JaW50IGljaF9yZXMsIGRzY19jb21tb25fbW9kZTsKLQlp bnQgcmMgPSAwOwotCi0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmVuY19tYXN0ZXIgPSBkcHVf ZW5jLT5jdXJfbWFzdGVyOwotCXN0cnVjdCBkcHVfaHdfZHNjICpsX2h3X2RzYyA9IGRwdV9lbmMt Pmh3X2RzY1swXTsKLQlzdHJ1Y3QgZHB1X2h3X2RzYyAqcl9od19kc2MgPSBkcHVfZW5jLT5od19k c2NbMV07Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqbF9od19wcCA9IGRwdV9lbmMtPmh3X3Bw WzBdOwotCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnJfaHdfcHAgPSBkcHVfZW5jLT5od19wcFsx XTsKLQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRzYyA9Ci0JCSZkcHVfZW5jLT5tb2Rl X2luZm8uY29tcF9pbmZvLmRzY19pbmZvOwotCi0JcmMgPSBfZHB1X2VuY29kZXJfZHNjX3VwZGF0 ZV9waWNfZGltKGRzYywKLQkJCWRzYy0+cGljX3dpZHRoICogZHB1X2VuYy0+ZGlzcGxheV9udW1f b2ZfaF90aWxlcywKLQkJCWRzYy0+cGljX2hlaWdodCk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJP Ul9FTkMoZHB1X2VuYywgImZhaWxlZCB0byB1cGRhdGUgRFNDIHBpYyBkaW1cbiIpOwotCQlyZXR1 cm4gcmM7Ci0JfQotCi0KLQl0aGlzX2ZyYW1lX3NsaWNlcyA9IGRzYy0+cGljX3dpZHRoIC8gZHNj LT5zbGljZV93aWR0aDsKLQlpbnRmX2lwX3cgPSB0aGlzX2ZyYW1lX3NsaWNlcyAqIGRzYy0+c2xp Y2Vfd2lkdGg7Ci0KLQlpbnRmX2lwX3cgLz0gMjsKLQlfZHB1X2VuY29kZXJfZHNjX3BjbGtfcGFy YW1fY2FsYyhkc2MsIGludGZfaXBfdyk7Ci0KLQllbmNfaXBfdyA9IGludGZfaXBfdzsKLQlfZHB1 X2VuY29kZXJfZHNjX2luaXRpYWxfbGluZV9jYWxjKGRzYywgZW5jX2lwX3cpOwotCi0JaWNoX3Jl cyA9IF9kcHVfZW5jb2Rlcl9kc2NfaWNoX3Jlc2V0X292ZXJyaWRlX25lZWRlZChmYWxzZSwgZHNj KTsKLQotCWRzY19jb21tb25fbW9kZSA9IERTQ19NT0RFX1NQTElUX1BBTkVMOwotCWlmIChlbmNf bWFzdGVyLT5pbnRmX21vZGUgPT0gSU5URl9NT0RFX1ZJREVPKQotCQlkc2NfY29tbW9uX21vZGUg fD0gRFNDX01PREVfVklERU87Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJwaWNfdzogJWQg cGljX2g6ICVkIG1vZGU6JWRcbiIsCi0JCWRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWlnaHQs IGRzY19jb21tb25fbW9kZSk7Ci0JRFBVX0VWVDMyKERSTUlEKCZkcHVfZW5jLT5iYXNlKSwgZHNj LT5waWNfd2lkdGgsIGRzYy0+cGljX2hlaWdodCwKLQkJCWRzY19jb21tb25fbW9kZSk7Ci0KLQlf ZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKGxfaHdfZHNjLCBsX2h3X3BwLCBkc2MsIGRzY19jb21t b25fbW9kZSwKLQkJCWljaF9yZXMpOwotCV9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9jZmcocl9od19k c2MsIHJfaHdfcHAsIGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJaWNoX3Jlcyk7Ci0KLQlyZXR1 cm4gMDsKLX0KLQotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjXzJfbG1fMl9lbmNfMV9pbnRm KHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQotewotCWludCB0aGlzX2ZyYW1lX3Ns aWNlczsKLQlpbnQgaW50Zl9pcF93LCBlbmNfaXBfdzsKLQlpbnQgaWNoX3JlcywgZHNjX2NvbW1v bl9tb2RlOwotCWludCByYyA9IDA7Ci0KLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqZW5jX21h c3RlciA9IGRwdV9lbmMtPmN1cl9tYXN0ZXI7Ci0Jc3RydWN0IGRwdV9od19kc2MgKmxfaHdfZHNj ID0gZHB1X2VuYy0+aHdfZHNjWzBdOwotCXN0cnVjdCBkcHVfaHdfZHNjICpyX2h3X2RzYyA9IGRw dV9lbmMtPmh3X2RzY1sxXTsKLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpsX2h3X3BwID0gZHB1 X2VuYy0+aHdfcHBbMF07Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqcl9od19wcCA9IGRwdV9l bmMtPmh3X3BwWzFdOwotCXN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjID0KLQkJJmRw dV9lbmMtPm1vZGVfaW5mby5jb21wX2luZm8uZHNjX2luZm87Ci0KLQlyYyA9IF9kcHVfZW5jb2Rl cl9kc2NfdXBkYXRlX3BpY19kaW0oZHNjLCBkc2MtPnBpY193aWR0aCwKLQkJCWRzYy0+cGljX2hl aWdodCk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgImZhaWxlZCB0byB1 cGRhdGUgRFNDIHBpYyBkaW1cbiIpOwotCQlyZXR1cm4gcmM7Ci0JfQotCi0JdGhpc19mcmFtZV9z bGljZXMgPSBkc2MtPnBpY193aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JaW50Zl9pcF93ID0g dGhpc19mcmFtZV9zbGljZXMgKiBkc2MtPnNsaWNlX3dpZHRoOwotCV9kcHVfZW5jb2Rlcl9kc2Nf cGNsa19wYXJhbV9jYWxjKGRzYywgaW50Zl9pcF93KTsKLQotCS8qCi0JICogd2hlbiB1c2luZyAy IGVuY29kZXJzIGZvciB0aGUgc2FtZSBzdHJlYW0sIG5vLiBvZiBzbGljZXMKLQkgKiBuZWVkIHRv IGJlIHNhbWUgb24gYm90aCB0aGUgZW5jb2RlcnMuCi0JICovCi0JZW5jX2lwX3cgPSBpbnRmX2lw X3cgLyAyOwotCV9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlhbF9saW5lX2NhbGMoZHNjLCBlbmNfaXBf dyk7Ci0KLQlpY2hfcmVzID0gX2RwdV9lbmNvZGVyX2RzY19pY2hfcmVzZXRfb3ZlcnJpZGVfbmVl ZGVkKGZhbHNlLCBkc2MpOwotCi0JZHNjX2NvbW1vbl9tb2RlID0gRFNDX01PREVfTVVMVElQTEVY IHwgRFNDX01PREVfU1BMSVRfUEFORUw7Ci0JaWYgKGVuY19tYXN0ZXItPmludGZfbW9kZSA9PSBJ TlRGX01PREVfVklERU8pCi0JCWRzY19jb21tb25fbW9kZSB8PSBEU0NfTU9ERV9WSURFTzsKLQot CURQVV9ERUJVR19FTkMoZHB1X2VuYywgInBpY193OiAlZCBwaWNfaDogJWQgbW9kZTolZFxuIiwK LQkJZHNjLT5waWNfd2lkdGgsIGRzYy0+cGljX2hlaWdodCwgZHNjX2NvbW1vbl9tb2RlKTsKLQlE UFVfRVZUMzIoRFJNSUQoJmRwdV9lbmMtPmJhc2UpLCBkc2MtPnBpY193aWR0aCwgZHNjLT5waWNf aGVpZ2h0LAotCQkJZHNjX2NvbW1vbl9tb2RlKTsKLQotCV9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9j ZmcobF9od19kc2MsIGxfaHdfcHAsIGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJaWNoX3Jlcyk7 Ci0JX2RwdV9lbmNvZGVyX2RzY19waXBlX2NmZyhyX2h3X2RzYywgcl9od19wcCwgZHNjLCBkc2Nf Y29tbW9uX21vZGUsCi0JCQlpY2hfcmVzKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50 IF9kcHVfZW5jb2Rlcl9kc2Nfc2V0dXAoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMp Ci17Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKLQlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqZHJtX2Nvbm47Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAoIWRwdV9lbmMpCi0JCXJl dHVybiAtRUlOVkFMOwotCi0JZHJtX2Nvbm4gPSBkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmNvbm5l Y3RvcjsKLQotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShkcm1f Y29ubik7Ci0JaWYgKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9OT05FKSB7Ci0JCURQVV9F UlJPUl9FTkMoZHB1X2VuYywgInRvcG9sb2d5IG5vdCBzZXQgeWV0XG4iKTsKLQkJcmV0dXJuIC1F SU5WQUw7Ci0JfQotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAidG9wb2xvZ3k6JWRcbiIsIHRv cG9sb2d5KTsKLQlEUFVfRVZUMzIoRFJNSUQoJmRwdV9lbmMtPmJhc2UpKTsKLQotCXN3aXRjaCAo dG9wb2xvZ3kpIHsKLQljYXNlIERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFX0RTQzoKLQljYXNl IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQzoKLQkJcmV0ID0gX2RwdV9lbmNv ZGVyX2RzY19uX2xtXzFfZW5jXzFfaW50ZihkcHVfZW5jKTsKLQkJYnJlYWs7Ci0JY2FzZSBEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0U6Ci0JCXJldCA9IF9kcHVfZW5jb2Rlcl9kc2Nf Ml9sbV8yX2VuY18xX2ludGYoZHB1X2VuYyk7Ci0JCWJyZWFrOwotCWNhc2UgRFBVX1JNX1RPUE9M T0dZX0RVQUxQSVBFX0RTQzoKLQkJcmV0ID0gX2RwdV9lbmNvZGVyX2RzY18yX2xtXzJfZW5jXzJf aW50ZihkcHVfZW5jKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJRFBVX0VSUk9SX0VOQyhkcHVf ZW5jLCAiTm8gRFNDIHN1cHBvcnQgZm9yIHRvcG9sb2d5ICVkIiwKLQkJCQl0b3BvbG9neSk7Ci0J CXJldHVybiAtRUlOVkFMOwotCX07Ci0KLQlyZXR1cm4gcmV0OwotfQotCiBzdGF0aWMgdm9pZCBf ZHB1X2VuY29kZXJfdXBkYXRlX3ZzeW5jX3NvdXJjZShzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAq ZHB1X2VuYywKIAkJCXN0cnVjdCBtc21fZGlzcGxheV9pbmZvICpkaXNwX2luZm8pCiB7CkBAIC0x MTExLDEwMiArNzYzLDYgQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3VwZGF0ZV92c3luY19z b3VyY2Uoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMsCiAJfQogfQogCi1zdGF0aWMg aW50IF9kcHVfZW5jb2Rlcl9kc2NfZGlzYWJsZShzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1 X2VuYykKLXsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCXN0cnVjdCBk cm1fY29ubmVjdG9yICpkcm1fY29ubjsKLQlpbnQgaSwgcmV0ID0gMDsKLQlzdHJ1Y3QgZHB1X2h3 X3Bpbmdwb25nICpod19wcFtNQVhfQ0hBTk5FTFNfUEVSX0VOQ107Ci0Jc3RydWN0IGRwdV9od19k c2MgKmh3X2RzY1tNQVhfQ0hBTk5FTFNfUEVSX0VOQ10gPSB7TlVMTH07Ci0JaW50IHBwX2NvdW50 ID0gMDsKLQlpbnQgZHNjX2NvdW50ID0gMDsKLQotCWlmICghZHB1X2VuYyB8fCAhZHB1X2VuYy0+ cGh5c19lbmNzWzBdIHx8Ci0JCQkhZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5jb25uZWN0b3IpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtcyAlZCAlZFxuIiwKLQkJCSFkcHVfZW5jLCBkcHVf ZW5jID8gIWRwdV9lbmMtPnBoeXNfZW5jc1swXSA6IC0xKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0J fQotCi0JZHJtX2Nvbm4gPSBkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmNvbm5lY3RvcjsKLQotCXRv cG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShkcm1fY29ubik7Ci0JaWYg KHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9OT05FKSB7Ci0JCURQVV9FUlJPUl9FTkMoZHB1 X2VuYywgInRvcG9sb2d5IG5vdCBzZXQgeWV0XG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQot Ci0Jc3dpdGNoICh0b3BvbG9neSkgewotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEU6 Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9EU0M6Ci0JCS8qIHNpbmdsZSBQUCAq LwotCQlod19wcFswXSA9IGRwdV9lbmMtPmh3X3BwWzBdOwotCQlod19kc2NbMF0gPSBkcHVfZW5j LT5od19kc2NbMF07Ci0JCXBwX2NvdW50ID0gMTsKLQkJZHNjX2NvdW50ID0gMTsKLQkJYnJlYWs7 Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDOgotCWNhc2UgRFBVX1JNX1RPUE9M T0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDOgotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBF X0RTQ01FUkdFOgotCQkvKiBkdWFsIGRzYyAqLwotCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NIQU5O RUxTX1BFUl9FTkM7IGkrKykgewotCQkJaHdfZHNjW2ldID0gZHB1X2VuYy0+aHdfZHNjW2ldOwot CQkJaWYgKGh3X2RzY1tpXSkKLQkJCQlkc2NfY291bnQrKzsKLQkJfQotCQkvKiBmYWxsIHRocm91 Z2ggKi8KLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRToKLQljYXNlIERQVV9STV9UT1BP TE9HWV9EVUFMUElQRV8zRE1FUkdFOgotCQkvKiBkdWFsIHBwICovCi0JCWZvciAoaSA9IDA7IGkg PCBNQVhfQ0hBTk5FTFNfUEVSX0VOQzsgaSsrKSB7Ci0JCQlod19wcFtpXSA9IGRwdV9lbmMtPmh3 X3BwW2ldOwotCQkJaWYgKGh3X3BwW2ldKQotCQkJCXBwX2NvdW50Kys7Ci0JCX0KLQkJYnJlYWs7 Ci0JZGVmYXVsdDoKLQkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiVW5leHBlY3RlZCB0b3BvbG9n eTolZFxuIiwgdG9wb2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9OwotCi0JRFBVX0VWVDMy KERSTUlEKCZkcHVfZW5jLT5iYXNlKSwgdG9wb2xvZ3ksIHBwX2NvdW50LCBkc2NfY291bnQpOwot Ci0JaWYgKHBwX2NvdW50ID4gTUFYX0NIQU5ORUxTX1BFUl9FTkMgfHwKLQkJZHNjX2NvdW50ID4g TUFYX0NIQU5ORUxTX1BFUl9FTkMpIHsKLQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAiV3Jvbmcg Y291bnQgcHA6JWQgZHNjOiVkIHRvcDolZFxuIiwKLQkJCQlwcF9jb3VudCwgZHNjX2NvdW50LCB0 b3BvbG9neSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCS8qIERpc2FibGUgRFNDIGZvciBh bGwgdGhlIHBwJ3MgcHJlc2VudCBpbiB0aGlzIHRvcG9sb2d5ICovCi0JZm9yIChpID0gMDsgaSA8 IHBwX2NvdW50OyBpKyspIHsKLQotCQlpZiAoIWh3X3BwW2ldKSB7Ci0JCQlEUFVfRVJST1JfRU5D KGRwdV9lbmMsICJudWxsIHBwOiVkIHRvcDolZCBjbnQ6JWRcbiIsCi0JCQkJCWksIHRvcG9sb2d5 LCBwcF9jb3VudCk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWlmIChod19wcFtpXS0+ b3BzLmRpc2FibGVfZHNjKQotCQkJaHdfcHBbaV0tPm9wcy5kaXNhYmxlX2RzYyhod19wcFtpXSk7 Ci0JfQotCi0JLyogRGlzYWJsZSBEU0MgSFcgKi8KLQlmb3IgKGkgPSAwOyBpIDwgZHNjX2NvdW50 OyBpKyspIHsKLQotCQlpZiAoIWh3X2RzY1tpXSkgewotCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5j LCAibnVsbCBkc2M6JWQgdG9wOiVkIGNudDolZFxuIiwKLQkJCQkJaSwgdG9wb2xvZ3ksIGRzY19j b3VudCk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWlmIChod19kc2NbaV0tPm9wcy5k c2NfZGlzYWJsZSkKLQkJCWh3X2RzY1tpXS0+b3BzLmRzY19kaXNhYmxlKGh3X2RzY1tpXSk7Ci0J fQotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2lycV9jb250 cm9sKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywgYm9vbCBlbmFibGUpCiB7CiAJc3RydWN0 IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7CkBAIC0xNjA3LDcgKzExNjMsNyBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl92aXJ0X21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2Vu YywKIAlzdHJ1Y3QgbGlzdF9oZWFkICpjb25uZWN0b3JfbGlzdDsKIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubiA9IE5VTEwsICpjb25uX2l0ZXI7CiAJc3RydWN0IGRwdV9jb25uZWN0b3IgKmRw dV9jb25uID0gTlVMTDsKLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgZHNjX2l0ZXIsIHBwX2l0ZXI7 CisJc3RydWN0IGRwdV9ybV9od19pdGVyIHBwX2l0ZXI7CiAJaW50IGkgPSAwLCByZXQ7CiAKIAlp ZiAoIWRybV9lbmMpIHsKQEAgLTE2NTgsMTIgKzEyMTQsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl92aXJ0X21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJCQkJcmV0 KTsKIAkJCXJldHVybjsKIAkJfQotCi0JCS8qCi0JCSAqIERpc2FibGUgZHNjIGJlZm9yZSBzd2l0 Y2ggdGhlIG1vZGUgYW5kIGFmdGVyIHByZV9tb2Rlc2V0LAotCQkgKiB0byBndWFyYW50ZWUgdGhh dCBwcmV2aW91cyBraWNrb2ZmIGZpbmlzaGVkLgotCQkgKi8KLQkJX2RwdV9lbmNvZGVyX2RzY19k aXNhYmxlKGRwdV9lbmMpOwogCX0KIAogCS8qIFJlc2VydmUgZHluYW1pYyByZXNvdXJjZXMgbm93 LiBJbmRpY2F0aW5nIG5vbi1BdG9taWNUZXN0IHBoYXNlICovCkBAIC0xNjgzLDE0ICsxMjMzLDYg QEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmRybV9lbmMsCiAJCWRwdV9lbmMtPmh3X3BwW2ldID0gKHN0cnVjdCBkcHVfaHdfcGluZ3Bv bmcgKikgcHBfaXRlci5odzsKIAl9CiAKLQlkcHVfcm1faW5pdF9od19pdGVyKCZkc2NfaXRlciwg ZHJtX2VuYy0+YmFzZS5pZCwgRFBVX0hXX0JMS19EU0MpOwotCWZvciAoaSA9IDA7IGkgPCBNQVhf Q0hBTk5FTFNfUEVSX0VOQzsgaSsrKSB7Ci0JCWRwdV9lbmMtPmh3X2RzY1tpXSA9IE5VTEw7Ci0J CWlmICghZHB1X3JtX2dldF9odygmZHB1X2ttcy0+cm0sICZkc2NfaXRlcikpCi0JCQlicmVhazsK LQkJZHB1X2VuYy0+aHdfZHNjW2ldID0gKHN0cnVjdCBkcHVfaHdfZHNjICopIGRzY19pdGVyLmh3 OwotCX0KLQogCWZvciAoaSA9IDA7IGkgPCBkcHVfZW5jLT5udW1fcGh5c19lbmNzOyBpKyspIHsK IAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMgPSBkcHVfZW5jLT5waHlzX2VuY3NbaV07 CiAKQEAgLTE3ODIsNyArMTMyNCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfZW5h YmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJf dmlydCAqZHB1X2VuYyA9IE5VTEw7CiAJaW50IGksIHJldCA9IDA7Ci0Jc3RydWN0IG1zbV9jb21w cmVzc2lvbl9pbmZvICpjb21wX2luZm8gPSBOVUxMOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpjdXJfbW9kZSA9IE5VTEw7CiAKIAlpZiAoIWRybV9lbmMpIHsKQEAgLTE3OTAsNyArMTMzMSw2 IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYykKIAkJcmV0dXJuOwogCX0KIAlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmly dChkcm1fZW5jKTsKLQljb21wX2luZm8gPSAmZHB1X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mbzsK IAljdXJfbW9kZSA9ICZkcHVfZW5jLT5iYXNlLmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwog CiAJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiXG4iKTsKQEAgLTE4MjUsNyArMTM2NSw2IEBAIHN0 YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJt X2VuYykKIAkJaWYgKCFwaHlzKQogCQkJY29udGludWU7CiAKLQkJcGh5cy0+Y29tcF90eXBlID0g Y29tcF9pbmZvLT5jb21wX3R5cGU7CiAJCWlmIChwaHlzICE9IGRwdV9lbmMtPmN1cl9tYXN0ZXIp IHsKIAkJCS8qKgogCQkJICogb24gRE1TIHJlcXVlc3QsIHRoZSBlbmNvZGVyIHdpbGwgYmUgZW5h YmxlZApAQCAtMTkwMCwxMyArMTQzOSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRf ZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJCQlwaHlzLT5vcHMuZGlzYWJs ZShwaHlzKTsKIAl9CiAKLQkvKgotCSAqIGRpc2FibGUgZHNjIGFmdGVyIHRoZSB0cmFuc2ZlciBp cyBjb21wbGV0ZSAoZm9yIGNvbW1hbmQgbW9kZSkKLQkgKiBhbmQgYWZ0ZXIgcGh5c2ljYWwgZW5j b2RlciBpcyBkaXNhYmxlZCwgdG8gbWFrZSBzdXJlIHRpbWluZwotCSAqIGVuZ2luZSBpcyBhbHJl YWR5IGRpc2FibGVkIChmb3IgdmlkZW8gbW9kZSkuCi0JICovCi0JX2RwdV9lbmNvZGVyX2RzY19k aXNhYmxlKGRwdV9lbmMpOwotCiAJLyogYWZ0ZXIgcGh5cyB3YWl0cyBmb3IgZnJhbWUtZG9uZSwg c2hvdWxkIGJlIG5vIG1vcmUgZnJhbWVzIHBlbmRpbmcgKi8KIAlpZiAoYXRvbWljX3hjaGcoJmRw dV9lbmMtPmZyYW1lX2RvbmVfdGltZW91dCwgMCkpIHsKIAkJRFBVX0VSUk9SKCJlbmMlZCB0aW1l b3V0IHBlbmRpbmdcbiIsIGRybV9lbmMtPmJhc2UuaWQpOwpAQCAtMjc0MiwxMiArMjI3NCw2IEBA IHZvaWQgZHB1X2VuY29kZXJfcHJlcGFyZV9mb3Jfa2lja29mZihzdHJ1Y3QgZHJtX2VuY29kZXIg KmRybV9lbmMsCiAJCQkJCWRwdV9lbmMtPmN1cl9tYXN0ZXItPmNvbm5lY3Rvci0+YmFzZS5pZCwK IAkJCQkJcmMpOwogCX0KLQotCWlmIChkcHVfZW5jb2Rlcl9pc19kc2NfZW5hYmxlZChkcm1fZW5j KSkgewotCQlyYyA9IF9kcHVfZW5jb2Rlcl9kc2Nfc2V0dXAoZHB1X2VuYyk7Ci0JCWlmIChyYykK LQkJCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgImZhaWxlZCB0byBzZXR1cCBEU0M6ICVkXG4iLCBy Yyk7Ci0JfQogfQogCiB2b2lkIGRwdV9lbmNvZGVyX2tpY2tvZmYoc3RydWN0IGRybV9lbmNvZGVy ICpkcm1fZW5jKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgK aW5kZXggZTg1ZTVhNC4uYjI1NjE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5oCkBAIC0xNDUsMjAgKzE0NSw2IEBAIGludCBkcHVfZW5jb2Rlcl93YWl0 X2Zvcl9ldmVudChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmNvZGVyLAogdm9pZCBkcHVfZW5j b2Rlcl92aXJ0X3Jlc3RvcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKIAogLyoqCi0g KiBkcHVfZW5jb2Rlcl9pc19kc2NfZW5hYmxlZCAtIGNoZWNrIGlmIGVuY29kZXIgaXMgaW4gRFND IG1vZGUKLSAqIEBkcm1fZW5jOiBQb2ludGVyIHRvIGRybSBlbmNvZGVyIG9iamVjdAotICogQFJl dHVybjogdHJ1ZSBpZiBlbmNvZGVyIGlzIGluIERTQyBtb2RlCi0gKi8KLWJvb2wgZHB1X2VuY29k ZXJfaXNfZHNjX2VuYWJsZWQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKTsKLQotLyoqCi0g KiBkcHVfZW5jb2Rlcl9pc19kc2NfbWVyZ2UgLSBjaGVjayBpZiBlbmNvZGVyIGlzIGluIERTQyBt ZXJnZSBtb2RlCi0gKiBAZHJtX2VuYzogUG9pbnRlciB0byBkcm0gZW5jb2RlciBvYmplY3QKLSAq IEBSZXR1cm46IHRydWUgaWYgZW5jb2RlciBpcyBpbiBEU0MgbWVyZ2UgbW9kZQotICovCi1ib29s IGRwdV9lbmNvZGVyX2lzX2RzY19tZXJnZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpOwot Ci0vKioKICAqIGRwdV9lbmNvZGVyX2NoZWNrX21vZGUgLSBjaGVjayBpZiBnaXZlbiBtb2RlIGlz IHN1cHBvcnRlZCBvciBub3QKICAqIEBkcm1fZW5jOiBQb2ludGVyIHRvIGRybSBlbmNvZGVyIG9i amVjdAogICogQG1vZGU6IE1vZGUgdG8gYmUgY2hlY2tlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCmluZGV4IDliYmYzMzliLi5iNTdmNjE5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9w aHlzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 cy5oCkBAIC0yMzIsNyArMjMyLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX2lycSB7CiAgKiBAc3Bs aXRfcm9sZToJCVJvbGUgdG8gcGxheSBpbiBhIHNwbGl0LXBhbmVsIGNvbmZpZ3VyYXRpb24KICAq IEBpbnRmX21vZGU6CQlJbnRlcmZhY2UgbW9kZQogICogQGludGZfaWR4OgkJSW50ZXJmYWNlIGlu ZGV4IG9uIGRwdSBoYXJkd2FyZQotICogQGNvbXBfdHlwZTogICAgICBUeXBlIG9mIGNvbXByZXNz aW9uIHN1cHBvcnRlZAogICogQGVuY19zcGlubG9jazoJVmlydHVhbC1FbmNvZGVyLVdpZGUgU3Bp biBMb2NrIGZvciBJUlEgcHVycG9zZXMKICAqIEBlbmFibGVfc3RhdGU6CUVuYWJsZSBzdGF0ZSB0 cmFja2luZwogICogQHZibGFua19yZWZjb3VudDoJUmVmZXJlbmNlIGNvdW50IG9mIHZibGFuayBy ZXF1ZXN0CkBAIC0yNjIsNyArMjYxLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgewogCWVu dW0gZHB1X2VuY19zcGxpdF9yb2xlIHNwbGl0X3JvbGU7CiAJZW51bSBkcHVfaW50Zl9tb2RlIGlu dGZfbW9kZTsKIAllbnVtIGRwdV9pbnRmIGludGZfaWR4OwotCWVudW0gbXNtX2Rpc3BsYXlfY29t cHJlc3Npb25fdHlwZSBjb21wX3R5cGU7CiAJc3BpbmxvY2tfdCAqZW5jX3NwaW5sb2NrOwogCWVu dW0gZHB1X2VuY19lbmFibGVfc3RhdGUgZW5hYmxlX3N0YXRlOwogCWF0b21pY190IHZibGFua19y ZWZjb3VudDsKQEAgLTM4NCw3ICszODIsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c193YiB7 CiAgKiBAc3BsaXRfcm9sZToJCVJvbGUgdG8gcGxheSBpbiBhIHNwbGl0LXBhbmVsIGNvbmZpZ3Vy YXRpb24KICAqIEBpbnRmX2lkeDoJCUludGVyZmFjZSBpbmRleCB0aGlzIHBoeXNfZW5jIHdpbGwg Y29udHJvbAogICogQHdiX2lkeDoJCVdyaXRlYmFjayBpbmRleCB0aGlzIHBoeXNfZW5jIHdpbGwg Y29udHJvbAotICogQGNvbXBfdHlwZTogICAgICBUeXBlIG9mIGNvbXByZXNzaW9uIHN1cHBvcnRl ZAogICogQGVuY19zcGlubG9jazoJVmlydHVhbC1FbmNvZGVyLVdpZGUgU3BpbiBMb2NrIGZvciBJ UlEgcHVycG9zZXMKICAqLwogc3RydWN0IGRwdV9lbmNfcGh5c19pbml0X3BhcmFtcyB7CkBAIC0z OTQsNyArMzkxLDYgQEAgc3RydWN0IGRwdV9lbmNfcGh5c19pbml0X3BhcmFtcyB7CiAJZW51bSBk cHVfZW5jX3NwbGl0X3JvbGUgc3BsaXRfcm9sZTsKIAllbnVtIGRwdV9pbnRmIGludGZfaWR4Owog CWVudW0gZHB1X3diIHdiX2lkeDsKLQllbnVtIG1zbV9kaXNwbGF5X2NvbXByZXNzaW9uX3R5cGUg Y29tcF90eXBlOwogCXNwaW5sb2NrX3QgKmVuY19zcGlubG9jazsKIH07CiAKQEAgLTQ3OSw4ICs0 NzUsNyBAQCBzdGF0aWMgaW5saW5lIGVudW0gZHB1XzNkX2JsZW5kX21vZGUgZHB1X2VuY29kZXJf aGVscGVyX2dldF8zZF9ibGVuZF9tb2RlKAogCiAJdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dl dF90b3BvbG9neV9uYW1lKHBoeXNfZW5jLT5jb25uZWN0b3IpOwogCWlmIChwaHlzX2VuYy0+c3Bs aXRfcm9sZSA9PSBFTkNfUk9MRV9TT0xPICYmCi0JCQkodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9M T0dZX0RVQUxQSVBFXzNETUVSR0UgfHwKLQkJCSB0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lf RFVBTFBJUEVfM0RNRVJHRV9EU0MpKQorCSAgICB0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lf RFVBTFBJUEVfM0RNRVJHRSkKIAkJcmV0dXJuIEJMRU5EXzNEX0hfUk9XX0lOVDsKIAogCXJldHVy biBCTEVORF8zRF9OT05FOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKaW5kZXggNmNjZjM3OC4uNzFlMmU1YSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5j CkBAIC0xMjM3LDcgKzEyMzcsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqZHB1X2VuY29k ZXJfcGh5c19jbWRfaW5pdCgKIAlwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrID0gcC0+ZW5jX3NwaW5s b2NrOwogCWNtZF9lbmMtPnN0cmVhbV9zZWwgPSAwOwogCXBoeXNfZW5jLT5lbmFibGVfc3RhdGUg PSBEUFVfRU5DX0RJU0FCTEVEOwotCXBoeXNfZW5jLT5jb21wX3R5cGUgPSBwLT5jb21wX3R5cGU7 CiAJZm9yIChpID0gMDsgaSA8IElOVFJfSURYX01BWDsgaSsrKSB7CiAJCWlycSA9ICZwaHlzX2Vu Yy0+aXJxW2ldOwogCQlJTklUX0xJU1RfSEVBRCgmaXJxLT5jYi5saXN0KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCmluZGV4 IDI3ZWEyYjEuLmQ2YjcyYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwpAQCAtNzcsOSArNzcsNiBAQCBzdGF0aWMgdm9p ZCBkcm1fbW9kZV90b19pbnRmX3RpbWluZ19wYXJhbXMoCiAJICogPC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gW2h2XXRvdGFsIC0tLS0tLS0tLS0tLS0+CiAJICovCiAJdGltaW5nLT53aWR0 aCA9IG1vZGUtPmhkaXNwbGF5OwkvKiBhY3RpdmUgd2lkdGggKi8KLQlpZiAodmlkX2VuYy0+YmFz ZS5jb21wX3R5cGUgPT0gTVNNX0RJU1BMQVlfQ09NUFJFU1NJT05fRFNDKQotCQl0aW1pbmctPndp ZHRoID0gRElWX1JPVU5EX1VQKHRpbWluZy0+d2lkdGgsIDMpOwotCiAJdGltaW5nLT5oZWlnaHQg PSBtb2RlLT52ZGlzcGxheTsJLyogYWN0aXZlIGhlaWdodCAqLwogCXRpbWluZy0+eHJlcyA9IHRp bWluZy0+d2lkdGg7CiAJdGltaW5nLT55cmVzID0gdGltaW5nLT5oZWlnaHQ7CkBAIC0zNzksOCAr Mzc2LDcgQEAgc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfZHVhbF9jdGwoc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCQlyZXR1cm4gZmFsc2U7CiAKIAl0b3BvbG9n eSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUocGh5c19lbmMtPmNvbm5lY3Rvcik7 Ci0JaWYgKCh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDKSB8fAotCQko dG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFKSkKKwlpZiAodG9wb2xvZ3kgPT0g RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxz ZTsKQEAgLTkxNSw3ICs5MTEsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqZHB1X2VuY29k ZXJfcGh5c192aWRfaW5pdCgKIAlwaHlzX2VuYy0+c3BsaXRfcm9sZSA9IHAtPnNwbGl0X3JvbGU7 CiAJcGh5c19lbmMtPmludGZfbW9kZSA9IElOVEZfTU9ERV9WSURFTzsKIAlwaHlzX2VuYy0+ZW5j X3NwaW5sb2NrID0gcC0+ZW5jX3NwaW5sb2NrOwotCXBoeXNfZW5jLT5jb21wX3R5cGUgPSBwLT5j b21wX3R5cGU7CiAJZm9yIChpID0gMDsgaSA8IElOVFJfSURYX01BWDsgaSsrKSB7CiAJCWlycSA9 ICZwaHlzX2VuYy0+aXJxW2ldOwogCQlJTklUX0xJU1RfSEVBRCgmaXJxLT5jYi5saXN0KTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IGRm NzMxNDguLjE0ZTY2Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuYwpAQCAtMzgwLDI5ICszODAsNiBAQAogfTsKIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIERTQyBz dWIgYmxvY2tzIGNvbmZpZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBzdHJ1Y3QgZHB1X2RzY19jZmcgc2Rt ODQ1X2RzY1tdID0gewotCXsKLQkubmFtZSA9ICJkc2NfMCIsIC5pZCA9IERTQ18wLAotCS5iYXNl ID0gMHg4MTAwMCwgLmxlbiA9IDB4MTQwCi0JfSwKLQl7Ci0JLm5hbWUgPSAiZHNjXzEiLCAuaWQg PSBEU0NfMSwKLQkuYmFzZSA9IDB4ODE0MDAsIC5sZW4gPSAweDE0MAotCX0sCi0JewotCS5uYW1l ID0gImRzY18yIiwgLmlkID0gRFNDXzIsCi0JLmJhc2UgPSAweDgxODAwLCAubGVuID0gMHgxNDAK LQl9LAotCXsKLQkubmFtZSA9ICJkc2NfMyIsIC5pZCA9IERTQ18zLAotCS5iYXNlID0gMHg4MWMw MCwgLmxlbiA9IDB4MTQwCi0JfSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBJTlRGIHN1YiBibG9ja3MgY29u ZmlnCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KICNkZWZpbmUgSU5URl9CTEsoX25hbWUsIF9pZCwgX2Jhc2UsIF90eXBlLCBf Y3RybF9pZCkgXApAQCAtNTkxLDggKzU2OCw2IEBAIHZvaWQgc2RtODQ1X2NmZ19pbml0KHN0cnVj dCBkcHVfbWRzc19jZmcgKmRwdV9jZmcpCiAJCS5kcyA9IHNkbTg0NV9kcywKIAkJLnBpbmdwb25n X2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfcHApLAogCQkucGluZ3BvbmcgPSBzZG04NDVfcHAs Ci0JCS5kc2NfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9kc2MpLAotCQkuZHNjID0gc2RtODQ1 X2RzYywKIAkJLmNkbV9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X2NkbSksCiAJCS5jZG0gPSBz ZG04NDVfY2RtLAogCQkuaW50Zl9jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X2ludGYpLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKaW5kZXggNDBk OTBjMy4uY2VmZjNiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2NhdGFsb2cuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5oCkBAIC0xOTksNyArMTk5LDYgQEAgZW51bSB7CiAgKiBARFBVX1BJTkdQT05H X1RFMiAgICAgICAgQWRkaXRpb25hbCB0ZWFyIGNoZWNrIGJsb2NrIGZvciBzcGxpdCBwaXBlcwog ICogQERQVV9QSU5HUE9OR19TUExJVCAgICAgIFBQIGJsb2NrIHN1cHBvcnRzIHNwbGl0IGZpZm8K ICAqIEBEUFVfUElOR1BPTkdfU0xBVkUgICAgICBQUCBibG9jayBpcyBhIHN1aXRhYmxlIHNsYXZl IGZvciBzcGxpdCBmaWZvCi0gKiBARFBVX1BJTkdQT05HX0RTQywgICAgICAgRGlzcGxheSBzdHJl YW0gY29tcHJlc3Npb24gYmxvY2tzCiAgKiBARFBVX1BJTkdQT05HX0RJVEhFUiwgICAgRGl0aGVy IGJsb2NrcwogICogQERQVV9QSU5HUE9OR19NQVgKICAqLwpAQCAtMjA4LDcgKzIwNyw2IEBAIGVu dW0gewogCURQVV9QSU5HUE9OR19URTIsCiAJRFBVX1BJTkdQT05HX1NQTElULAogCURQVV9QSU5H UE9OR19TTEFWRSwKLQlEUFVfUElOR1BPTkdfRFNDLAogCURQVV9QSU5HUE9OR19ESVRIRVIsCiAJ RFBVX1BJTkdQT05HX01BWAogfTsKQEAgLTQ4OSw3ICs0ODcsNiBAQCBzdHJ1Y3QgZHB1X2RzcHBf c3ViX2Jsa3Mgewogc3RydWN0IGRwdV9waW5ncG9uZ19zdWJfYmxrcyB7CiAJc3RydWN0IGRwdV9w cF9ibGsgdGU7CiAJc3RydWN0IGRwdV9wcF9ibGsgdGUyOwotCXN0cnVjdCBkcHVfcHBfYmxrIGRz YzsKIAlzdHJ1Y3QgZHB1X3BwX2JsayBkaXRoZXI7CiB9OwogCkBAIC02NzEsMTYgKzY2OCw2IEBA IHN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICB7CiB9OwogCiAvKioKLSAqIHN0cnVjdCBkcHVfZHNj X2NmZyAtIGluZm9ybWF0aW9uIG9mIERTQyBibG9ja3MKLSAqIEBpZCAgICAgICAgICAgICAgICAg ZW51bSBpZGVudGlmeWluZyB0aGlzIGJsb2NrCi0gKiBAYmFzZSAgICAgICAgICAgICAgIHJlZ2lz dGVyIG9mZnNldCBvZiB0aGlzIGJsb2NrCi0gKiBAZmVhdHVyZXMgICAgICAgICAgIGJpdCBtYXNr IGlkZW50aWZ5aW5nIHN1Yi1ibG9ja3MvZmVhdHVyZXMKLSAqLwotc3RydWN0IGRwdV9kc2NfY2Zn IHsKLQlEUFVfSFdfQkxLX0lORk87Ci19OwotCi0vKioKICAqIHN0cnVjdCBkcHVfY2RtX2NmZyAt IGluZm9ybWF0aW9uIG9mIGNocm9tYSBkb3duIGJsb2NrcwogICogQGlkICAgICAgICAgICAgICAg ICBlbnVtIGlkZW50aWZ5aW5nIHRoaXMgYmxvY2sKICAqIEBiYXNlICAgICAgICAgICAgICAgcmVn aXN0ZXIgb2Zmc2V0IG9mIHRoaXMgYmxvY2sKQEAgLTkxNiw5ICs5MDMsNiBAQCBzdHJ1Y3QgZHB1 X21kc3NfY2ZnIHsKIAl1MzIgcGluZ3BvbmdfY291bnQ7CiAJc3RydWN0IGRwdV9waW5ncG9uZ19j ZmcgKnBpbmdwb25nOwogCi0JdTMyIGRzY19jb3VudDsKLQlzdHJ1Y3QgZHB1X2RzY19jZmcgKmRz YzsKLQogCXUzMiBjZG1fY291bnQ7CiAJc3RydWN0IGRwdV9jZG1fY2ZnICpjZG07CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuYwpkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZmMzYzMwZS4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfZHNjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotLyog Q29weXJpZ2h0IChjKSAyMDE3LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKLSAqIG9ubHkgdmVy c2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoK LSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8KLQotI2luY2x1ZGUgImRwdV9od19tZHNzLmgiCi0j aW5jbHVkZSAiZHB1X2h3aW8uaCIKLSNpbmNsdWRlICJkcHVfaHdfY2F0YWxvZy5oIgotI2luY2x1 ZGUgImRwdV9od19kc2MuaCIKLSNpbmNsdWRlICJkcHVfaHdfcGluZ3BvbmcuaCIKLSNpbmNsdWRl ICJkcHVfZGJnLmgiCi0jaW5jbHVkZSAiZHB1X2ttcy5oIgotCi0jZGVmaW5lIERTQ19DT01NT05f TU9ERQkgICAgICAgICAgICAgICAgMHgwMDAKLSNkZWZpbmUgRFNDX0VOQyAgICAgICAgICAgICAg ICAgICAgICAgICAwWDAwNAotI2RlZmluZSBEU0NfUElDVFVSRSAgICAgICAgICAgICAgICAgICAg IDB4MDA4Ci0jZGVmaW5lIERTQ19TTElDRSAgICAgICAgICAgICAgICAgICAgICAgMHgwMEMKLSNk ZWZpbmUgRFNDX0NIVU5LX1NJWkUgICAgICAgICAgICAgICAgICAweDAxMAotI2RlZmluZSBEU0Nf REVMQVkgICAgICAgICAgICAgICAgICAgICAgIDB4MDE0Ci0jZGVmaW5lIERTQ19TQ0FMRV9JTklU SUFMICAgICAgICAgICAgICAgMHgwMTgKLSNkZWZpbmUgRFNDX1NDQUxFX0RFQ19JTlRFUlZBTCAg ICAgICAgICAweDAxQwotI2RlZmluZSBEU0NfU0NBTEVfSU5DX0lOVEVSVkFMICAgICAgICAgIDB4 MDIwCi0jZGVmaW5lIERTQ19GSVJTVF9MSU5FX0JQR19PRkZTRVQgICAgICAgMHgwMjQKLSNkZWZp bmUgRFNDX0JQR19PRkZTRVQgICAgICAgICAgICAgICAgICAweDAyOAotI2RlZmluZSBEU0NfRFND X09GRlNFVCAgICAgICAgICAgICAgICAgIDB4MDJDCi0jZGVmaW5lIERTQ19GTEFUTkVTUyAgICAg ICAgICAgICAgICAgICAgMHgwMzAKLSNkZWZpbmUgRFNDX1JDX01PREVMX1NJWkUgICAgICAgICAg ICAgICAweDAzNAotI2RlZmluZSBEU0NfUkMgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDM4 Ci0jZGVmaW5lIERTQ19SQ19CVUZfVEhSRVNIICAgICAgICAgICAgICAgMHgwM0MKLSNkZWZpbmUg RFNDX1JBTkdFX01JTl9RUCAgICAgICAgICAgICAgICAweDA3NAotI2RlZmluZSBEU0NfUkFOR0Vf TUFYX1FQICAgICAgICAgICAgICAgIDB4MEIwCi0jZGVmaW5lIERTQ19SQU5HRV9CUEdfT0ZGU0VU ICAgICAgICAgICAgMHgwRUMKLQotc3RhdGljIHZvaWQgZHB1X2h3X2RzY19kaXNhYmxlKHN0cnVj dCBkcHVfaHdfZHNjICpkc2MpCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqZHNjX2Mg PSAmZHNjLT5odzsKLQotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19DT01NT05fTU9ERSwgMCk7 Ci19Ci0KLXN0YXRpYyB2b2lkIGRwdV9od19kc2NfY29uZmlnKHN0cnVjdCBkcHVfaHdfZHNjICpo d19kc2MsCi0JCXN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjLCB1MzIgbW9kZSwKLQkJ Ym9vbCBpY2hfcmVzZXRfb3ZlcnJpZGUpCi17Ci0JdTMyIGRhdGE7Ci0JaW50IGJwcCwgbHNiOwot CXUzMiBpbml0aWFsX2xpbmVzID0gZHNjLT5pbml0aWFsX2xpbmVzOwotCWJvb2wgaXNfY21kX21v ZGUgPSAhKG1vZGUgJiBCSVQoMikpOwotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmRzY19j ID0gJmh3X2RzYy0+aHc7Ci0KLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfQ09NTU9OX01PREUs IG1vZGUpOwotCi0JZGF0YSA9IDA7Ci0JaWYgKGljaF9yZXNldF9vdmVycmlkZSkKLQkJZGF0YSA9 IDMgPDwgMjg7Ci0KLQlpZiAoaXNfY21kX21vZGUpCi0JCWluaXRpYWxfbGluZXMgKz0gMTsKLQot CWRhdGEgfD0gKGluaXRpYWxfbGluZXMgPDwgMjApOwotCWRhdGEgfD0gKChkc2MtPnNsaWNlX2xh c3RfZ3JvdXBfc2l6ZSAtIDEpIDw8IDE4KTsKLQkvKiBicHAgaXMgNi40IGZvcm1hdCwgNCBMU0Jz IGJpdHMgYXJlIGZvciBmcmFjdGlvbmFsIHBhcnQgKi8KLQlsc2IgPSBkc2MtPmJwcCAlIDQ7Ci0J YnBwID0gZHNjLT5icHAgLyA0OwotCWJwcCAqPSA0OwkvKiBlaXRoZXIgOCBvciAxMiAqLwotCWJw cCA8PD0gNDsKLQlicHAgfD0gbHNiOwotCWRhdGEgfD0gKGJwcCA8PCA4KTsKLQlkYXRhIHw9IChk c2MtPmJsb2NrX3ByZWRfZW5hYmxlIDw8IDcpOwotCWRhdGEgfD0gKGRzYy0+bGluZV9idWZfZGVw dGggPDwgMyk7Ci0JZGF0YSB8PSAoZHNjLT5lbmFibGVfNDIyIDw8IDIpOwotCWRhdGEgfD0gKGRz Yy0+Y29udmVydF9yZ2IgPDwgMSk7Ci0JZGF0YSB8PSBkc2MtPmlucHV0XzEwX2JpdHM7Ci0KLQlE UFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfRU5DLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnBpY193 aWR0aCA8PCAxNjsKLQlkYXRhIHw9IGRzYy0+cGljX2hlaWdodDsKLQlEUFVfUkVHX1dSSVRFKGRz Y19jLCBEU0NfUElDVFVSRSwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5zbGljZV93aWR0aCA8PCAx NjsKLQlkYXRhIHw9IGRzYy0+c2xpY2VfaGVpZ2h0OwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERT Q19TTElDRSwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5jaHVua19zaXplIDw8IDE2OwotCURQVV9S RUdfV1JJVEUoZHNjX2MsIERTQ19DSFVOS19TSVpFLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPmlu aXRpYWxfZGVjX2RlbGF5IDw8IDE2OwotCWRhdGEgfD0gZHNjLT5pbml0aWFsX3htaXRfZGVsYXk7 Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0RFTEFZLCBkYXRhKTsKLQotCWRhdGEgPSBkc2Mt PmluaXRpYWxfc2NhbGVfdmFsdWU7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX1NDQUxFX0lO SVRJQUwsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+c2NhbGVfZGVjcmVtZW50X2ludGVydmFsOwot CURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19TQ0FMRV9ERUNfSU5URVJWQUwsIGRhdGEpOwotCi0J ZGF0YSA9IGRzYy0+c2NhbGVfaW5jcmVtZW50X2ludGVydmFsOwotCURQVV9SRUdfV1JJVEUoZHNj X2MsIERTQ19TQ0FMRV9JTkNfSU5URVJWQUwsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+Zmlyc3Rf bGluZV9icGdfb2Zmc2V0OwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19GSVJTVF9MSU5FX0JQ R19PRkZTRVQsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+bmZsX2JwZ19vZmZzZXQgPDwgMTY7Ci0J ZGF0YSB8PSBkc2MtPnNsaWNlX2JwZ19vZmZzZXQ7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFND X0JQR19PRkZTRVQsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+aW5pdGlhbF9vZmZzZXQgPDwgMTY7 Ci0JZGF0YSB8PSBkc2MtPmZpbmFsX29mZnNldDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0Nf RFNDX09GRlNFVCwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5kZXRfdGhyZXNoX2ZsYXRuZXNzIDw8 IDEwOwotCWRhdGEgfD0gZHNjLT5tYXhfcXBfZmxhdG5lc3MgPDwgNTsKLQlkYXRhIHw9IGRzYy0+ bWluX3FwX2ZsYXRuZXNzOwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19GTEFUTkVTUywgZGF0 YSk7Ci0KLQlkYXRhID0gZHNjLT5yY19tb2RlbF9zaXplOwotCURQVV9SRUdfV1JJVEUoZHNjX2Ms IERTQ19SQ19NT0RFTF9TSVpFLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnRndF9vZmZzZXRfbG8g PDwgMTg7Ci0JZGF0YSB8PSBkc2MtPnRndF9vZmZzZXRfaGkgPDwgMTQ7Ci0JZGF0YSB8PSBkc2Mt PnF1YW50X2luY3JfbGltaXQxIDw8IDk7Ci0JZGF0YSB8PSBkc2MtPnF1YW50X2luY3JfbGltaXQw IDw8IDQ7Ci0JZGF0YSB8PSBkc2MtPmVkZ2VfZmFjdG9yOwotCURQVV9SRUdfV1JJVEUoZHNjX2Ms IERTQ19SQywgZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwdV9od19kc2NfY29uZmlnX3RocmVz aChzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAotCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2lu Zm8gKmRzYykKLXsKLQl1MzIgKmxwOwotCWNoYXIgKmNwOwotCWludCBpOwotCi0Jc3RydWN0IGRw dV9od19ibGtfcmVnX21hcCAqZHNjX2MgPSAmaHdfZHNjLT5odzsKLQl1MzIgb2ZmID0gMHgwOwot Ci0JbHAgPSBkc2MtPmJ1Zl90aHJlc2g7Ci0Jb2ZmID0gRFNDX1JDX0JVRl9USFJFU0g7Ci0JZm9y IChpID0gMDsgaSA8IDE0OyBpKyspIHsKLQkJRFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAqbHAr Kyk7Ci0JCW9mZiArPSA0OwotCX0KLQotCWNwID0gZHNjLT5yYW5nZV9taW5fcXA7Ci0Jb2ZmID0g RFNDX1JBTkdFX01JTl9RUDsKLQlmb3IgKGkgPSAwOyBpIDwgMTU7IGkrKykgewotCQlEUFVfUkVH X1dSSVRFKGRzY19jLCBvZmYsICpjcCsrKTsKLQkJb2ZmICs9IDQ7Ci0JfQotCi0JY3AgPSBkc2Mt PnJhbmdlX21heF9xcDsKLQlvZmYgPSBEU0NfUkFOR0VfTUFYX1FQOwotCWZvciAoaSA9IDA7IGkg PCAxNTsgaSsrKSB7Ci0JCURQVV9SRUdfV1JJVEUoZHNjX2MsIG9mZiwgKmNwKyspOwotCQlvZmYg Kz0gNDsKLQl9Ci0KLQljcCA9IGRzYy0+cmFuZ2VfYnBnX29mZnNldDsKLQlvZmYgPSBEU0NfUkFO R0VfQlBHX09GRlNFVDsKLQlmb3IgKGkgPSAwOyBpIDwgMTU7IGkrKykgewotCQlEUFVfUkVHX1dS SVRFKGRzY19jLCBvZmYsICpjcCsrKTsKLQkJb2ZmICs9IDQ7Ci0JfQotfQotCi1zdGF0aWMgc3Ry dWN0IGRwdV9kc2NfY2ZnICpfZHNjX29mZnNldChlbnVtIGRwdV9kc2MgZHNjLAotCQlzdHJ1Y3Qg ZHB1X21kc3NfY2ZnICptLAotCQl2b2lkIF9faW9tZW0gKmFkZHIsCi0JCXN0cnVjdCBkcHVfaHdf YmxrX3JlZ19tYXAgKmIpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbS0+ZHNjX2Nv dW50OyBpKyspIHsKLQkJaWYgKGRzYyA9PSBtLT5kc2NbaV0uaWQpIHsKLQkJCWItPmJhc2Vfb2Zm ID0gYWRkcjsKLQkJCWItPmJsa19vZmYgPSBtLT5kc2NbaV0uYmFzZTsKLQkJCWItPmxlbmd0aCA9 IG0tPmRzY1tpXS5sZW47Ci0JCQliLT5od3ZlcnNpb24gPSBtLT5od3ZlcnNpb247Ci0JCQliLT5s b2dfbWFzayA9IERQVV9EQkdfTUFTS19EU0M7Ci0JCQlyZXR1cm4gJm0tPmRzY1tpXTsKLQkJfQot CX0KLQotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgdm9pZCBfc2V0dXBfZHNjX29wcyhzdHJ1 Y3QgZHB1X2h3X2RzY19vcHMgKm9wcywKLQkJdW5zaWduZWQgbG9uZyBjYXApCi17Ci0Jb3BzLT5k c2NfZGlzYWJsZSA9IGRwdV9od19kc2NfZGlzYWJsZTsKLQlvcHMtPmRzY19jb25maWcgPSBkcHVf aHdfZHNjX2NvbmZpZzsKLQlvcHMtPmRzY19jb25maWdfdGhyZXNoID0gZHB1X2h3X2RzY19jb25m aWdfdGhyZXNoOwotfTsKLQotc3RhdGljIHN0cnVjdCBkcHVfaHdfYmxrX29wcyBkcHVfaHdfb3Bz ID0gewotCS5zdGFydCA9IE5VTEwsCi0JLnN0b3AgPSBOVUxMLAotfTsKLQotc3RydWN0IGRwdV9o d19kc2MgKmRwdV9od19kc2NfaW5pdChlbnVtIGRwdV9kc2MgaWR4LAotCQl2b2lkIF9faW9tZW0g KmFkZHIsCi0JCXN0cnVjdCBkcHVfbWRzc19jZmcgKm0pCi17Ci0Jc3RydWN0IGRwdV9od19kc2Mg KmM7Ci0Jc3RydWN0IGRwdV9kc2NfY2ZnICpjZmc7Ci0JaW50IHJjOwotCi0JYyA9IGt6YWxsb2Mo c2l6ZW9mKCpjKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFjKQotCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKLQotCWNmZyA9IF9kc2Nfb2Zmc2V0KGlkeCwgbSwgYWRkciwgJmMtPmh3KTsKLQlpZiAo SVNfRVJSX09SX05VTEwoY2ZnKSkgewotCQlrZnJlZShjKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7Ci0JfQotCi0JYy0+aWR4ID0gaWR4OwotCWMtPmNhcHMgPSBjZmc7Ci0JX3NldHVwX2Rz Y19vcHMoJmMtPm9wcywgYy0+Y2Fwcy0+ZmVhdHVyZXMpOwotCi0JcmMgPSBkcHVfaHdfYmxrX2lu aXQoJmMtPmJhc2UsIERQVV9IV19CTEtfRFNDLCBpZHgsICZkcHVfaHdfb3BzKTsKLQlpZiAocmMp IHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBodyBibGsgJWRcbiIsIHJjKTsKLQkJZ290 byBibGtfaW5pdF9lcnJvcjsKLQl9Ci0KLQlkcHVfZGJnX3JlZ19yZWdpc3Rlcl9kdW1wX3Jhbmdl KERQVV9EQkdfTkFNRSwgY2ZnLT5uYW1lLCBjLT5ody5ibGtfb2ZmLAotCQljLT5ody5ibGtfb2Zm ICsgYy0+aHcubGVuZ3RoLCBjLT5ody54aW5faWQpOwotCi0JcmV0dXJuIGM7Ci0KLWJsa19pbml0 X2Vycm9yOgotCWt6ZnJlZShjKTsKLQotCXJldHVybiBFUlJfUFRSKHJjKTsKLX0KLQotdm9pZCBk cHVfaHdfZHNjX2Rlc3Ryb3koc3RydWN0IGRwdV9od19kc2MgKmRzYykKLXsKLQlpZiAoZHNjKQot CQlkcHVfaHdfYmxrX2Rlc3Ryb3koJmRzYy0+YmFzZSk7Ci0Ja2ZyZWUoZHNjKTsKLX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZWJhYjkyMC4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfZHNjLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyog Q29weXJpZ2h0IChjKSAyMDE3LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKLSAqIG9ubHkgdmVy c2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoK LSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8KLQotI2lmbmRlZiBfRFBVX0hXX0RTQ19ICi0jZGVm aW5lIF9EUFVfSFdfRFNDX0gKLQotI2luY2x1ZGUgImRwdV9od19jYXRhbG9nLmgiCi0jaW5jbHVk ZSAiZHB1X2h3X21kc3MuaCIKLSNpbmNsdWRlICJkcHVfaHdfdXRpbC5oIgotI2luY2x1ZGUgImRw dV9od19ibGsuaCIKLQotc3RydWN0IGRwdV9od19kc2M7Ci1zdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNj X2luZm87Ci0KLSNkZWZpbmUgRFNDX01PREVfU1BMSVRfUEFORUwgICAgICAgICAgICBCSVQoMCkK LSNkZWZpbmUgRFNDX01PREVfTVVMVElQTEVYICAgICAgICAgICAgICBCSVQoMSkKLSNkZWZpbmUg RFNDX01PREVfVklERU8gICAgICAgICAgICAgICAgICBCSVQoMikKLQotLyoqCi0gKiBzdHJ1Y3Qg ZHB1X2h3X2RzY19vcHMgLSBpbnRlcmZhY2UgdG8gdGhlIGRzYyBoYXJkd2FyZSBkcml2ZXIgZnVu Y3Rpb25zCi0gKiBBc3N1bXB0aW9uIGlzIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCBh ZnRlciBjbG9ja3MgYXJlIGVuYWJsZWQKLSAqLwotc3RydWN0IGRwdV9od19kc2Nfb3BzIHsKLQkv KioKLQkgKiBkc2NfZGlzYWJsZSAtIGRpc2FibGUgZHNjCi0JICogQGh3X2RzYzogUG9pbnRlciB0 byBkc2MgY29udGV4dAotCSAqLwotCXZvaWQgKCpkc2NfZGlzYWJsZSkoc3RydWN0IGRwdV9od19k c2MgKmh3X2RzYyk7Ci0KLQkvKioKLQkgKiBkc2NfY29uZmlnIC0gY29uZmlndXJlcyBkc2MgZW5j b2RlcgotCSAqIEBod19kc2M6IFBvaW50ZXIgdG8gZHNjIGNvbnRleHQKLQkgKiBAZHNjOiBwYW5l bCBkc2MgcGFyYW1ldGVycwotCSAqIEBtb2RlOiBkc2MgdG9wb2xvZ3kgbW9kZSB0byBiZSBzZXQK LQkgKiBAaWNoX3Jlc2V0X292ZXJyaWRlOiBvcHRpb24gdG8gcmVzZXQgaWNoCi0JICovCi0Jdm9p ZCAoKmRzY19jb25maWcpKHN0cnVjdCBkcHVfaHdfZHNjICpod19kc2MsCi0JCQlzdHJ1Y3QgbXNt X2Rpc3BsYXlfZHNjX2luZm8gKmRzYywKLQkJCXUzMiBtb2RlLCBib29sIGljaF9yZXNldF9vdmVy cmlkZSk7Ci0KLQkvKioKLQkgKiBkc2NfY29uZmlnX3RocmVzaCAtIHByb2dyYW1zIHBhbmVsIHRo cmVzaG9sZHMKLQkgKiBAaHdfZHNjOiBQb2ludGVyIHRvIGRzYyBjb250ZXh0Ci0JICogQGRzYzog cGFuZWwgZHNjIHBhcmFtZXRlcnMKLQkgKi8KLQl2b2lkICgqZHNjX2NvbmZpZ190aHJlc2gpKHN0 cnVjdCBkcHVfaHdfZHNjICpod19kc2MsCi0JCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8g KmRzYyk7Ci19OwotCi1zdHJ1Y3QgZHB1X2h3X2RzYyB7Ci0Jc3RydWN0IGRwdV9od19ibGsgYmFz ZTsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwIGh3OwotCi0JLyogZHNjICovCi0JZW51bSBk cHVfZHNjIGlkeDsKLQljb25zdCBzdHJ1Y3QgZHB1X2RzY19jZmcgKmNhcHM7Ci0KLQkvKiBvcHMg Ki8KLQlzdHJ1Y3QgZHB1X2h3X2RzY19vcHMgb3BzOwotfTsKLQotLyoqCi0gKiBkcHVfaHdfZHNj IC0gY29udmVydCBiYXNlIG9iamVjdCBkcHVfaHdfYmFzZSB0byBjb250YWluZXIKLSAqIEBodzog UG9pbnRlciB0byBiYXNlIGhhcmR3YXJlIGJsb2NrCi0gKiByZXR1cm46IFBvaW50ZXIgdG8gaGFy ZHdhcmUgYmxvY2sgY29udGFpbmVyCi0gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRwdV9od19k c2MgKnRvX2RwdV9od19kc2Moc3RydWN0IGRwdV9od19ibGsgKmh3KQotewotCXJldHVybiBjb250 YWluZXJfb2YoaHcsIHN0cnVjdCBkcHVfaHdfZHNjLCBiYXNlKTsKLX0KLQotLyoqCi0gKiBkcHVf aHdfZHNjX2luaXQgLSBpbml0aWFsaXplcyB0aGUgZHNjIGJsb2NrIGZvciB0aGUgcGFzc2VkCi0g KiAgICAgICAgICAgICAgICAgICBkc2MgaWR4LgotICogQGlkeDogIERTQyBpbmRleCBmb3Igd2hp Y2ggZHJpdmVyIG9iamVjdCBpcyByZXF1aXJlZAotICogQGFkZHI6IE1hcHBlZCByZWdpc3RlciBp byBhZGRyZXNzIG9mIE1EUAotICogQG06ICAgIFBvaW50ZXIgdG8gbWRzcyBjYXRhbG9nIGRhdGEK LSAqIFJldHVybnM6IEVycm9yIGNvZGUgb3IgYWxsb2NhdGVkIGRwdV9od19kc2MgY29udGV4dAot ICovCi1zdHJ1Y3QgZHB1X2h3X2RzYyAqZHB1X2h3X2RzY19pbml0KGVudW0gZHB1X2RzYyBpZHgs Ci0JCXZvaWQgX19pb21lbSAqYWRkciwKLQkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSk7Ci0KLS8q KgotICogZHB1X2h3X2RzY19kZXN0cm95IC0gZGVzdHJveXMgZHNjIGRyaXZlciBjb250ZXh0Ci0g KiAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgY2FsbGVkIHRvIGZyZWUgdGhlIGNvbnRl eHQKLSAqIEBkc2M6ICAgUG9pbnRlciB0byBkc2MgZHJpdmVyIGNvbnRleHQgcmV0dXJuZWQgYnkg ZHB1X2h3X2RzY19pbml0Ci0gKi8KLXZvaWQgZHB1X2h3X2RzY19kZXN0cm95KHN0cnVjdCBkcHVf aHdfZHNjICpkc2MpOwotCi0jZW5kaWYgLypfRFBVX0hXX0RTQ19IICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21kc3MuaAppbmRleCA1ZWRlMmI1Li43MGQ1N2M5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmgKQEAgLTEwNiw3 ICsxMDYsNiBAQCBlbnVtIGRwdV9od19ibGtfdHlwZSB7CiAJRFBVX0hXX0JMS19QSU5HUE9ORywK IAlEUFVfSFdfQkxLX0lOVEYsCiAJRFBVX0hXX0JMS19XQiwKLQlEUFVfSFdfQkxLX0RTQywKIAlE UFVfSFdfQkxLX01BWCwKIH07CiAKQEAgLTIwOCwxNyArMjA3LDYgQEAgZW51bSBkcHVfcGluZ3Bv bmcgewogCVBJTkdQT05HX01BWAogfTsKIAotZW51bSBkcHVfZHNjIHsKLQlEU0NfTk9ORSA9IDAs Ci0JRFNDXzAsCi0JRFNDXzEsCi0JRFNDXzIsCi0JRFNDXzMsCi0JRFNDXzQsCi0JRFNDXzUsCi0J RFNDX01BWAotfTsKLQogZW51bSBkcHVfaW50ZiB7CiAJSU5URl8wID0gMSwKIAlJTlRGXzEsCkBA IC00ODIsOSArNDcwLDggQEAgc3RydWN0IGRwdV9tZHNzX2NvbG9yIHsKICNkZWZpbmUgRFBVX0RC R19NQVNLX1dCICAgICAgICgxIDw8IDgpCiAjZGVmaW5lIERQVV9EQkdfTUFTS19UT1AgICAgICAo MSA8PCA5KQogI2RlZmluZSBEUFVfREJHX01BU0tfVkJJRiAgICAgKDEgPDwgMTApCi0jZGVmaW5l IERQVV9EQkdfTUFTS19EU0MgICAgICAoMSA8PCAxMSkKLSNkZWZpbmUgRFBVX0RCR19NQVNLX1JP VCAgICAgICgxIDw8IDEyKQotI2RlZmluZSBEUFVfREJHX01BU0tfRFMgICAgICAgKDEgPDwgMTMp CisjZGVmaW5lIERQVV9EQkdfTUFTS19ST1QgICAgICAoMSA8PCAxMSkKKyNkZWZpbmUgRFBVX0RC R19NQVNLX0RTICAgICAgICgxIDw8IDEyKQogCiAvKioKICAqIHN0cnVjdCBkcHVfaHdfY3BfY2Zn OiBoYXJkd2FyZSBkc3BwL2xtIGZlYXR1cmUgcGF5bG9hZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKaW5kZXggZTI5M2Q2ZS4uOTMwOGY1YyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25n LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMK QEAgLTM2LDkgKzM2LDYgQEAKICNkZWZpbmUgUFBfRkJDX01PREUgICAgICAgICAgICAgICAgICAg ICAweDAzNAogI2RlZmluZSBQUF9GQkNfQlVER0VUX0NUTCAgICAgICAgICAgICAgIDB4MDM4CiAj ZGVmaW5lIFBQX0ZCQ19MT1NTWV9NT0RFICAgICAgICAgICAgICAgMHgwM0MKLSNkZWZpbmUgUFBf RFNDX01PREUgICAgICAgICAgICAgICAgICAgICAweDBhMAotI2RlZmluZSBQUF9EQ0VfREFUQV9J Tl9TV0FQICAgICAgICAgICAgIDB4MGFjCi0jZGVmaW5lIFBQX0RDRV9EQVRBX09VVF9TV0FQICAg ICAgICAgICAgMHgwYzgKIAogI2RlZmluZSBESVRIRVJfREVQVEhfTUFQX0lOREVYIDkKIHN0YXRp YyB1MzIgZGl0aGVyX2RlcHRoX21hcFtESVRIRVJfREVQVEhfTUFQX0lOREVYXSA9IHsKQEAgLTE1 MSw0OCArMTQ4LDYgQEAgc3RhdGljIGludCBkcHVfaHdfcHBfcG9sbF90aW1lb3V0X3dyX3B0cihz dHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwKIAlyZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyB2b2lk IGRwdV9od19wcF9kc2NfZW5hYmxlKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwKQotewotCXN0 cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmM7Ci0KLQlpZiAoIXBwKQotCQlyZXR1cm47Ci0JYyA9 ICZwcC0+aHc7Ci0KLQlEUFVfUkVHX1dSSVRFKGMsIFBQX0RTQ19NT0RFLCAxKTsKLX0KLQotc3Rh dGljIHZvaWQgZHB1X2h3X3BwX2RzY19kaXNhYmxlKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBw KQotewotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmM7Ci0JdTMyIGRhdGE7Ci0KLQlpZiAo IXBwKQotCQlyZXR1cm47Ci0JYyA9ICZwcC0+aHc7Ci0KLQlkYXRhID0gRFBVX1JFR19SRUFEKGMs IFBQX0RDRV9EQVRBX09VVF9TV0FQKTsKLQlkYXRhICY9IH5CSVQoMTgpOyAvKiBkaXNhYmxlIGVu ZGlhbiBmbGlwICovCi0JRFBVX1JFR19XUklURShjLCBQUF9EQ0VfREFUQV9PVVRfU1dBUCwgZGF0 YSk7Ci0KLQlEUFVfUkVHX1dSSVRFKGMsIFBQX0RTQ19NT0RFLCAwKTsKLX0KLQotc3RhdGljIGlu dCBkcHVfaHdfcHBfc2V0dXBfZHNjKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwKQotewotCXN0 cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmM7Ci0JaW50IGRhdGE7Ci0KLQlpZiAoIXBwKQotCQly ZXR1cm4gLUVJTlZBTDsKLQljID0gJnBwLT5odzsKLQotCWRhdGEgPSBEUFVfUkVHX1JFQUQoYywg UFBfRENFX0RBVEFfT1VUX1NXQVApOwotCWRhdGEgfD0gQklUKDE4KTsgLyogZW5kaWFuIGZsaXAg Ki8KLQlEUFVfUkVHX1dSSVRFKGMsIFBQX0RDRV9EQVRBX09VVF9TV0FQLCBkYXRhKTsKLQlyZXR1 cm4gMDsKLX0KLQogc3RhdGljIGludCBkcHVfaHdfcHBfc2V0dXBfZGl0aGVyX3YxKHN0cnVjdCBk cHVfaHdfcGluZ3BvbmcgKnBwLAogCQkJCQl2b2lkICpjZmcsIHNpemVfdCBsZW4pCiB7CkBAIC0z MzksOSArMjk0LDYgQEAgc3RhdGljIHZvaWQgX3NldHVwX3Bpbmdwb25nX29wcyhzdHJ1Y3QgZHB1 X2h3X3Bpbmdwb25nX29wcyAqb3BzLAogCW9wcy0+Y29ubmVjdF9leHRlcm5hbF90ZSA9IGRwdV9o d19wcF9jb25uZWN0X2V4dGVybmFsX3RlOwogCW9wcy0+Z2V0X3ZzeW5jX2luZm8gPSBkcHVfaHdf cHBfZ2V0X3ZzeW5jX2luZm87CiAJb3BzLT5zZXR1cF9hdXRvcmVmcmVzaCA9IGRwdV9od19wcF9z ZXR1cF9hdXRvcmVmcmVzaF9jb25maWc7Ci0Jb3BzLT5zZXR1cF9kc2MgPSBkcHVfaHdfcHBfc2V0 dXBfZHNjOwotCW9wcy0+ZW5hYmxlX2RzYyA9IGRwdV9od19wcF9kc2NfZW5hYmxlOwotCW9wcy0+ ZGlzYWJsZV9kc2MgPSBkcHVfaHdfcHBfZHNjX2Rpc2FibGU7CiAJb3BzLT5nZXRfYXV0b3JlZnJl c2ggPSBkcHVfaHdfcHBfZ2V0X2F1dG9yZWZyZXNoX2NvbmZpZzsKIAlvcHMtPnBvbGxfdGltZW91 dF93cl9wdHIgPSBkcHVfaHdfcHBfcG9sbF90aW1lb3V0X3dyX3B0cjsKIAlvcHMtPmdldF9saW5l X2NvdW50ID0gZHB1X2h3X3BwX2dldF9saW5lX2NvdW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmggYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuaAppbmRleCA3OTg3ZWU2Li45M2QwM2NjZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25n LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmgK QEAgLTQ4LDEwICs0OCw2IEBAIHN0cnVjdCBkcHVfaHdfcHBfdnN5bmNfaW5mbyB7CiAJdTMyIHdy X3B0cl9saW5lX2NvdW50OwkvKiBjdXJyZW50IGxpbmUgd2l0aGluIHBwIGZpZm8gKHdyIHB0cikg Ki8KIH07CiAKLXN0cnVjdCBkcHVfaHdfZHNjX2NmZyB7Ci0JdTggZW5hYmxlOwotfTsKLQogLyoq CiAgKgogICogc3RydWN0IGRwdV9od19waW5ncG9uZ19vcHMgOiBJbnRlcmZhY2UgdG8gdGhlIHBp bmdwb25nIEh3IGRyaXZlciBmdW5jdGlvbnMKQEAgLTYwLDkgKzU2LDYgQEAgc3RydWN0IGRwdV9o d19kc2NfY2ZnIHsKICAqICBAZW5hYmxlX3RlYXJjaGVjayA6IGVuYWJsZXMgdGVhciBjaGVjawog ICogIEBnZXRfdnN5bmNfaW5mbyA6IHJldHJpZXMgdGltaW5nIGluZm8gb2YgdGhlIHBhbmVsCiAg KiAgQHNldHVwX2F1dG9yZWZyZXNoIDogcHJvZ3JhbSBhdXRvIHJlZnJlc2gKLSAqICBAc2V0dXBf ZHNjIDogcHJvZ3JhbSBEU0MgYmxvY2sgd2l0aCBlbmNvZGluZyBkZXRhaWxzCi0gKiAgQGVuYWJs ZV9kc2MgOiBlbmFibGVzIERTQyBlbmNvZGVyCi0gKiAgQGRpc2FibGVfZHNjIDogZGlzYWJsZXMg RFNDIGVuY29kZXIKICAqICBAc2V0dXBfZGl0aGVyIDogZnVuY3Rpb24gdG8gcHJvZ3JhbSB0aGUg ZGl0aGVyIGh3IGJsb2NrCiAgKiAgQGdldF9saW5lX2NvdW50OiBvYnRhaW4gY3VycmVudCB2ZXJ0 aWNhbCBsaW5lIGNvdW50ZXIKICAqLwpAQCAtMTEzLDIxICsxMDYsNiBAQCBzdHJ1Y3QgZHB1X2h3 X3Bpbmdwb25nX29wcyB7CiAJaW50ICgqcG9sbF90aW1lb3V0X3dyX3B0cikoc3RydWN0IGRwdV9o d19waW5ncG9uZyAqcHAsIHUzMiB0aW1lb3V0X3VzKTsKIAogCS8qKgotCSAqIFByb2dyYW0gdGhl IGRzYyBjb21wcmVzc2lvbiBibG9jawotCSAqLwotCWludCAoKnNldHVwX2RzYykoc3RydWN0IGRw dV9od19waW5ncG9uZyAqcHApOwotCi0JLyoqCi0JICogRW5hYmxlcyBEU0MgZW5jb2RlcgotCSAq LwotCXZvaWQgKCplbmFibGVfZHNjKShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCk7Ci0KLQkv KioKLQkgKiBEaXNhYmxlcyBEU0MgZW5jb2RlcgotCSAqLwotCXZvaWQgKCpkaXNhYmxlX2RzYyko c3RydWN0IGRwdV9od19waW5ncG9uZyAqcHApOwotCi0JLyoqCiAJICogUHJvZ3JhbSB0aGUgZGl0 aGVyIGh3IGJsb2NrCiAJICovCiAJaW50ICgqc2V0dXBfZGl0aGVyKShzdHJ1Y3QgZHB1X2h3X3Bp bmdwb25nICpwcCwgdm9pZCAqY2ZnLCBzaXplX3QgbGVuKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od190b3AuYwppbmRleCA2ODE2M2ExLi42MGU0YmVmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCkBAIC0zMTcsMTggKzMxNyw2IEBA IHN0YXRpYyB2b2lkIGRwdV9od19nZXRfc2FmZV9zdGF0dXMoc3RydWN0IGRwdV9od19tZHAgKm1k cCwKIAlzdGF0dXMtPndiW1dCXzNdID0gMDsKIH0KIAotc3RhdGljIHZvaWQgZHB1X2h3X3NldHVw X2RjZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLCB1MzIgZGNlX3NlbCkKLXsKLQlzdHJ1Y3QgZHB1 X2h3X2Jsa19yZWdfbWFwICpjOwotCi0JaWYgKCFtZHApCi0JCXJldHVybjsKLQotCWMgPSAmbWRw LT5odzsKLQotCURQVV9SRUdfV1JJVEUoYywgRENFX1NFTCwgZGNlX3NlbCk7Ci19Ci0KIHZvaWQg ZHB1X2h3X3Jlc2V0X3Vid2Moc3RydWN0IGRwdV9od19tZHAgKm1kcCwgc3RydWN0IGRwdV9tZHNz X2NmZyAqbSkKIHsKIAlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwIGM7CkBAIC0zNjcsNyArMzU1 LDYgQEAgc3RhdGljIHZvaWQgX3NldHVwX21kcF9vcHMoc3RydWN0IGRwdV9od19tZHBfb3BzICpv cHMsCiAJb3BzLT5nZXRfZGFuZ2VyX3N0YXR1cyA9IGRwdV9od19nZXRfZGFuZ2VyX3N0YXR1czsK IAlvcHMtPnNldHVwX3ZzeW5jX3NvdXJjZSA9IGRwdV9od19zZXR1cF92c3luY19zb3VyY2U7CiAJ b3BzLT5nZXRfc2FmZV9zdGF0dXMgPSBkcHVfaHdfZ2V0X3NhZmVfc3RhdHVzOwotCW9wcy0+c2V0 dXBfZGNlID0gZHB1X2h3X3NldHVwX2RjZTsKIAlvcHMtPnJlc2V0X3Vid2MgPSBkcHVfaHdfcmVz ZXRfdWJ3YzsKIAlvcHMtPmludGZfYXVkaW9fc2VsZWN0ID0gZHB1X2h3X2ludGZfYXVkaW9fc2Vs ZWN0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X3RvcC5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCmluZGV4 IDM3NWNiN2MuLjE0NzBkMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfdG9wLmgKQEAgLTE0MywxMyArMTQzLDYgQEAgc3RydWN0IGRwdV9od19tZHBfb3BzIHsKIAkJ CWVudW0gZHB1X2Nsa19jdHJsX3R5cGUgY2xrX2N0cmwsIGJvb2wgZW5hYmxlKTsKIAogCS8qKgot CSAqIHNldHVwX2RjZSAtIHNldCBEQ0UgbXV4IGZvciBEU0MgY3RybCBwYXRoCi0JICogQG1kcDog bWRwIHRvcCBjb250ZXh0IGRyaXZlcgotCSAqIEBkY2Vfc2VsOiBkY2VfbXV4IHZhbHVlCi0JICov Ci0Jdm9pZCAoKnNldHVwX2RjZSkoc3RydWN0IGRwdV9od19tZHAgKm1kcCwgdTMyIGRjZV9zZWwp OwotCi0JLyoqCiAJICogZ2V0X2Rhbmdlcl9zdGF0dXMgLSBnZXQgZGFuZ2VyIHN0YXR1cwogCSAq IEBtZHA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKIAkgKiBAc3RhdHVzOiBQb2ludGVyIHRvIGRh bmdlciBzYWZlIHN0YXR1cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3JtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwppbmRl eCAxZDgxYjFiLi4xM2VmYmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfcm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u YwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImRwdV9od193Yi5oIgogI2luY2x1ZGUgImRw dV9lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZHB1X2Nvbm5lY3Rvci5oIgotI2luY2x1ZGUgImRwdV9o d19kc2MuaCIKIAogI2RlZmluZSBSRVNFUlZFRF9CWV9PVEhFUihoLCByKSBcCiAJKChoKS0+cnN2 cCAmJiAoKGgpLT5yc3ZwLT5lbmNfaWQgIT0gKHIpLT5lbmNfaWQpKQpAQCAtNDksMTIgKzQ4LDgg QEAgc3RydWN0IGRwdV9ybV90b3BvbG9neV9kZWYgewogc3RhdGljIGNvbnN0IHN0cnVjdCBkcHVf cm1fdG9wb2xvZ3lfZGVmIGdfdG9wX3RhYmxlW10gPSB7CiAJeyAgIERQVV9STV9UT1BPTE9HWV9O T05FLCAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgZmFsc2UgfSwKIAl7ICAgRFBVX1JNX1RP UE9MT0dZX1NJTkdMRVBJUEUsICAgICAgICAgICAxLCAwLCAxLCAxLCBmYWxzZSB9LAotCXsgICBE UFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9EU0MsICAgICAgIDEsIDEsIDEsIDEsIGZhbHNlIH0s CiAJeyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwgICAgICAgICAgICAgMiwgMCwgMiwgMiwg dHJ1ZSAgfSwKLQl7ICAgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQywgICAgICAgICAyLCAy LCAyLCAyLCB0cnVlICB9LAogCXsgICBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwg ICAgIDIsIDAsIDEsIDEsIGZhbHNlIH0sCi0JeyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8z RE1FUkdFX0RTQywgMiwgMSwgMSwgMSwgZmFsc2UgfSwKLQl7ICAgRFBVX1JNX1RPUE9MT0dZX0RV QUxQSVBFX0RTQ01FUkdFLCAgICAyLCAyLCAxLCAxLCBmYWxzZSB9LAogCXsgICBEUFVfUk1fVE9Q T0xPR1lfUFBTUExJVCwgICAgICAgICAgICAgIDEsIDAsIDIsIDEsIHRydWUgIH0sCiB9OwogCkBA IC0yNTMsOSArMjQ4LDYgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9od19kZXN0cm95KGVudW0gZHB1 X2h3X2Jsa190eXBlIHR5cGUsIHZvaWQgKmh3KQogCWNhc2UgRFBVX0hXX0JMS19XQjoKIAkJZHB1 X2h3X3diX2Rlc3Ryb3koaHcpOwogCQlicmVhazsKLQljYXNlIERQVV9IV19CTEtfRFNDOgotCQlk cHVfaHdfZHNjX2Rlc3Ryb3koaHcpOwotCQlicmVhazsKIAljYXNlIERQVV9IV19CTEtfU1NQUDoK IAkJLyogU1NQUHMgYXJlIG5vdCBtYW5hZ2VkIGJ5IHRoZSByZXNvdXJjZSBtYW5hZ2VyICovCiAJ Y2FzZSBEUFVfSFdfQkxLX1RPUDoKQEAgLTM0MSw5ICszMzMsNiBAQCBzdGF0aWMgaW50IF9kcHVf cm1faHdfYmxrX2NyZWF0ZSgKIAljYXNlIERQVV9IV19CTEtfV0I6CiAJCWh3ID0gZHB1X2h3X3di X2luaXQoaWQsIG1taW8sIGNhdCwgaHdfbWRwKTsKIAkJYnJlYWs7Ci0JY2FzZSBEUFVfSFdfQkxL X0RTQzoKLQkJaHcgPSBkcHVfaHdfZHNjX2luaXQoaWQsIG1taW8sIGNhdCk7Ci0JCWJyZWFrOwog CWNhc2UgRFBVX0hXX0JMS19TU1BQOgogCQkvKiBTU1BQcyBhcmUgbm90IG1hbmFnZWQgYnkgdGhl IHJlc291cmNlIG1hbmFnZXIgKi8KIAljYXNlIERQVV9IV19CTEtfVE9QOgpAQCAtNDY1LDE1ICs0 NTQsNiBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRwdV9ybSAqcm0sCiAJCX0KIAl9CiAKLQlm b3IgKGkgPSAwOyBpIDwgY2F0LT5kc2NfY291bnQ7IGkrKykgewotCQlyYyA9IF9kcHVfcm1faHdf YmxrX2NyZWF0ZShybSwgY2F0LCBtbWlvLCBEUFVfSFdfQkxLX0RTQywKLQkJCWNhdC0+ZHNjW2ld LmlkLCAmY2F0LT5kc2NbaV0pOwotCQlpZiAocmMpIHsKLQkJCURQVV9FUlJPUigiZmFpbGVkOiBk c2MgaHcgbm90IGF2YWlsYWJsZVxuIik7Ci0JCQlnb3RvIGZhaWw7Ci0JCX0KLQl9Ci0KIAlmb3Ig KGkgPSAwOyBpIDwgY2F0LT5pbnRmX2NvdW50OyBpKyspIHsKIAkJaWYgKGNhdC0+aW50ZltpXS50 eXBlID09IElOVEZfTk9ORSkgewogCQkJRFBVX0RFQlVHKCJza2lwIGludGYgJWQgd2l0aCB0eXBl IG5vbmVcbiIsIGkpOwpAQCAtODM0LDM3ICs4MTQsNiBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVz ZXJ2ZV9jdGxzKAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9k c2MoCi0JCXN0cnVjdCBkcHVfcm0gKnJtLAotCQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnAsCi0J CWNvbnN0IHN0cnVjdCBkcHVfcm1fdG9wb2xvZ3lfZGVmICp0b3ApCi17Ci0Jc3RydWN0IGRwdV9y bV9od19pdGVyIGl0ZXI7Ci0JaW50IGFsbG9jX2NvdW50ID0gMDsKLQlpbnQgbnVtX2RzY19lbmMg PSB0b3AtPm51bV9sbTsKLQotCWlmICghdG9wLT5udW1fY29tcF9lbmMpCi0JCXJldHVybiAwOwot Ci0JZHB1X3JtX2luaXRfaHdfaXRlcigmaXRlciwgMCwgRFBVX0hXX0JMS19EU0MpOwotCi0Jd2hp bGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tlZChybSwgJml0ZXIpKSB7Ci0JCWlmIChSRVNFUlZFRF9C WV9PVEhFUihpdGVyLmJsaywgcnN2cCkpCi0JCQljb250aW51ZTsKLQotCQlpdGVyLmJsay0+cnN2 cF9ueHQgPSByc3ZwOwotCQlEUFVfRVZUMzIoaXRlci5ibGstPnR5cGUsIHJzdnAtPmVuY19pZCwg aXRlci5ibGstPmlkKTsKLQotCQlpZiAoKythbGxvY19jb3VudCA9PSBudW1fZHNjX2VuYykKLQkJ CXJldHVybiAwOwotCX0KLQotCURQVV9FUlJPUigiY291bGRuJ3QgcmVzZXJ2ZSAlZCBkc2MgYmxv Y2tzIGZvciBlbmMgaWQgJWRcbiIsCi0JCW51bV9kc2NfZW5jLCByc3ZwLT5lbmNfaWQpOwotCi0J cmV0dXJuIC1FTkFWQUlMOwotfQotCiBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jZG0oCiAJ CXN0cnVjdCBkcHVfcm0gKnJtLAogCQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnAsCkBAIC0xMDMy LDEwICs5ODEsNiBAQCBzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9uZXh0X3JzdnAoCiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9kc2Mocm0sIHJzdnAs IHJlcXMtPnRvcG9sb2d5KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJcmV0dXJuIHJl dDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Jt LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaAppbmRleCAyMmE2ODFj Li4zZGI2MWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf cm0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaApAQCAtMjQs MjMgKzI0LDE1IEBACiAgKiBlbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIC0gSFcgcmVzb3VyY2Ug dXNlIGNhc2UgaW4gdXNlIGJ5IGNvbm5lY3RvcgogICogQERQVV9STV9UT1BPTE9HWV9OT05FOiAg ICAgICAgICAgICAgICAgTm8gdG9wb2xvZ3kgaW4gdXNlIGN1cnJlbnRseQogICogQERQVV9STV9U T1BPTE9HWV9TSU5HTEVQSVBFOiAgICAgICAgICAgMSBMTSwgMSBQUCwgMSBJTlRGL1dCCi0gKiBA RFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDOiAgICAgICAxIExNLCAxIERTQywgMSBQUCwg MSBJTlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFOiAgICAgICAgICAgICAyIExN LCAyIFBQLCAyIElOVEYvV0IKLSAqIEBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDOiAgICAg ICAgIDIgTE0sIDIgRFNDLCAyIFBQLCAyIElOVEYvV0IKICAqIEBEUFVfUk1fVE9QT0xPR1lfRFVB TFBJUEVfM0RNRVJHRTogICAgIDIgTE0sIDIgUFAsIDNETXV4LCAxIElOVEYvV0IKLSAqIEBEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRV9EU0M6IDIgTE0sIDIgUFAsIDNETXV4LCAxIERT QywgMSBJTlRGL1dCCi0gKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQ01FUkdFOiAgICAy IExNLCAyIFBQLCAyIERTQyBNZXJnZSwgMSBJTlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX1BQ U1BMSVQ6ICAgICAgICAgICAgICAxIExNLCAyIFBQcywgMiBJTlRGL1dCCiAgKi8KIGVudW0gZHB1 X3JtX3RvcG9sb2d5X25hbWUgewogCURQVV9STV9UT1BPTE9HWV9OT05FID0gMCwKIAlEUFVfUk1f VE9QT0xPR1lfU0lOR0xFUElQRSwKLQlEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9EU0MsCiAJ RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFLAotCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0Ms CiAJRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UsCi0JRFBVX1JNX1RPUE9MT0dZX0RV QUxQSVBFXzNETUVSR0VfRFNDLAotCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRSwK IAlEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCwKIAlEUFVfUk1fVE9QT0xPR1lfTUFYLAogfTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3diLmMKaW5kZXggMGJiMDdlZS4uY2M3ODc4NiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3diLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3diLmMKQEAgLTMwNyw4ICszMDcsNiBA QCBpbnQgZHB1X3diX2dldF9tb2RlX2luZm8oY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmRybV9tb2RlLAogCXRvcG9sb2d5LT5udW1fZW5jID0gbm9fZW5jOwogCXRvcG9sb2d5LT5udW1f aW50ZiA9IHNpbmdsZV9pbnRmOwogCi0JbW9kZV9pbmZvLT5jb21wX2luZm8uY29tcF90eXBlID0g TVNNX0RJU1BMQVlfQ09NUFJFU1NJT05fTk9ORTsKLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS1zdGFnaW5nL2RzaV9kcm0uYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZHNpLXN0YWdpbmcvZHNpX2RybS5jCmluZGV4IDAxN2Y4ODEuLjJlNzQyYTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpLXN0YWdpbmcvZHNpX2RybS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpLXN0YWdpbmcvZHNpX2RybS5jCkBAIC0zMjIsMTMg KzMyMiw2IEBAIGludCBkc2lfY29ubl9nZXRfbW9kZV9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICpkcm1fbW9kZSwKIAltZW1jcHkoJm1vZGVfaW5mby0+dG9wb2xvZ3ksICZkc2lf bW9kZS5wcml2X2luZm8tPnRvcG9sb2d5LAogCQkJc2l6ZW9mKHN0cnVjdCBtc21fZGlzcGxheV90 b3BvbG9neSkpOwogCi0JbW9kZV9pbmZvLT5jb21wX2luZm8uY29tcF90eXBlID0gTVNNX0RJU1BM QVlfQ09NUFJFU1NJT05fTk9ORTsKLQlpZiAoZHNpX21vZGUucHJpdl9pbmZvLT5kc2NfZW5hYmxl ZCkgewotCQltb2RlX2luZm8tPmNvbXBfaW5mby5jb21wX3R5cGUgPSBNU01fRElTUExBWV9DT01Q UkVTU0lPTl9EU0M7Ci0JCW1lbWNweSgmbW9kZV9pbmZvLT5jb21wX2luZm8uZHNjX2luZm8sICZk c2lfbW9kZS5wcml2X2luZm8tPmRzYywKLQkJCXNpemVvZihkc2lfbW9kZS5wcml2X2luZm8tPmRz YykpOwotCX0KLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IDRlZTQw ZjguLmY5OGM0ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0zMTksMjAgKzMxOSw2IEBAIHN0 cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyB7CiB9OwogCiAvKioKLSAqIHN0cnVjdCBtc21fY29t cHJlc3Npb25faW5mbyAtIGRlZmluZWQgcGFuZWwgY29tcHJlc3Npb24KLSAqIEBjb21wX3R5cGU6 ICAgICAgICB0eXBlIG9mIGNvbXByZXNzaW9uIHN1cHBvcnRlZAotICogQGRzY19pbmZvOiAgICAg ICAgIGRzYyBjb25maWd1cmF0aW9uIGlmIHRoZSBjb21wcmVzc2lvbgotICogICAgICAgICAgICAg ICAgICAgIHN1cHBvcnRlZCBpcyBEU0MKLSAqLwotc3RydWN0IG1zbV9jb21wcmVzc2lvbl9pbmZv IHsKLQllbnVtIG1zbV9kaXNwbGF5X2NvbXByZXNzaW9uX3R5cGUgY29tcF90eXBlOwotCi0JdW5p b257Ci0JCXN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyBkc2NfaW5mbzsKLQl9OwotfTsKLQot LyoqCiAgKiBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgLSBkZWZpbmVzIGEgZGlzcGxheSB0 b3BvbG9neSBwaXBlbGluZQogICogQG51bV9sbTogICAgICAgbnVtYmVyIG9mIGxheWVyIG1peGVy cyB1c2VkCiAgKiBAbnVtX2VuYzogICAgICBudW1iZXIgb2YgY29tcHJlc3Npb24gZW5jb2RlciBi bG9ja3MgdXNlZApAQCAtMzUyLDcgKzMzOCw2IEBAIHN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9n eSB7CiAgKiBAaml0dGVyX251bWVyOglkaXNwbGF5IHBhbmVsIGppdHRlciBudW1lcmF0b3IgY29u ZmlndXJhdGlvbgogICogQGppdHRlcl9kZW5vbToJZGlzcGxheSBwYW5lbCBqaXR0ZXIgZGVub21p bmF0b3IgY29uZmlndXJhdGlvbgogICogQHRvcG9sb2d5OiAgICAgICAgc3VwcG9ydGVkIHRvcG9s b2d5IGZvciB0aGUgbW9kZQotICogQGNvbXBfaW5mbzogICAgICAgY29tcHJlc3Npb24gaW5mbyBz dXBwb3J0ZWQKICAqLwogc3RydWN0IG1zbV9tb2RlX2luZm8gewogCXVpbnQzMl90IGZyYW1lX3Jh dGU7CkBAIC0zNjEsNyArMzQ2LDYgQEAgc3RydWN0IG1zbV9tb2RlX2luZm8gewogCXVpbnQzMl90 IGppdHRlcl9udW1lcjsKIAl1aW50MzJfdCBqaXR0ZXJfZGVub207CiAJc3RydWN0IG1zbV9kaXNw bGF5X3RvcG9sb2d5IHRvcG9sb2d5OwotCXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyBjb21w X2luZm87CiB9OwogCiAvKioKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5j LiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlv biBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ZyZWVkcmVubwo=