From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH 51/72] imx-drm: Move page flip handling to plane driver Date: Fri, 31 Oct 2014 15:54:34 -0700 Message-ID: <1414796095-10107-52-git-send-email-steve_longerbeam@mentor.com> References: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f170.google.com (mail-pd0-f170.google.com [209.85.192.170]) by gabe.freedesktop.org (Postfix) with ESMTP id 4A3F86E850 for ; Fri, 31 Oct 2014 15:57:30 -0700 (PDT) Received: by mail-pd0-f170.google.com with SMTP id z10so8120957pdj.1 for ; Fri, 31 Oct 2014 15:57:30 -0700 (PDT) In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org TW92ZSBwYWdlIGZsaXAgaGFuZGxpbmcgYW5kIGFzc29jaWF0ZWQgdmJsYW5rIGhhbmRsaW5nIHRv IHRoZQpwbGFuZSBkcml2ZXIuIFRoaXMgcGF2ZXMgdGhlIHdheSB0byBhbGxvdyBwYWdlIGZsaXBw aW5nIGluIG5vdApqdXN0IHRoZSBwcmltYXJ5IHBsYW5lIGJ1dCB0aGUgb3ZlcmxheSBwbGFuZSBh cyB3ZWxsLgoKVG8gZG8gdGhpcyB0aGUgcHJpbWFyeSBhbmQgb3ZlcmxheSBwbGFuZXMgYXJlIGFz c2lnbmVkIGEgcGlwZSB2YWx1ZQpzdWl0YWJsZSBmb3IgcGFzc2luZyB0byB0aGUgZHJtIGNvcmUg dmJsYW5rIG1ldGhvZHMgKGRybV92YmxhbmtfZ2V0LApwdXQsaGFuZGxlKS4KCldlIG1vZGlmeSBp bXgtZHJtIGNvcmUgc2xpZ2h0bHkgdG8gbWFrZSByb29tIGZvciBwcmltYXJ5IGFuZCBvdmVybGF5 CnBpcGUgaWQncyB3aGVuIGFzc2lnbmluZyB0aGUgY3J0YyBwaXBlLiBTbyBjcnRjIDAgaGFzIGEg cHJpbWFyeSBwaXBlCnZhbHVlIG9mIDAgYW5kIG92ZXJsYXkgcGlwZSB2YWx1ZSAxLCBjcnRjIDEg aGFzIHByaW1hcnkgcGlwZSB2YWx1ZSAyCmFuZCBvdmVybGF5IHBpcGUgdmFsdWUgMywgZXRjLiBp bXhfZHJtX2NydGNfaWQoKSByZXR1cm5zIHRoZSBwcmltYXJ5CnBpcGUgZGl2aWRlZCBieSAyIGFz IGFuIGlkIHZhbHVlIHRvIGZvcm0gcG9zc2libGUgY3J0YyBtYXNrcy4KClRoZSBkcm0gY29yZSB2 Ymxhbmsgc2VlcyB0aGVzZSBwbGFuZXMgYXMgYWRkaXRpb25hbCBjcnRjcyAocGlwZXMpIGFuZApk b2VzIG5vdCBuZWVkIHNpZ25pZmljYW50IGNoYW5nZXMuCgpUaGUgcGxhbmUgZHJpdmVyIGltcGxl bWVudHMgcGFnZSBmbGlwIHVzaW5nIGlkbWFjIGRvdWJsZS1idWZmZXJpbmcuCldpdGhvdXQgZG91 YmxlLWJ1ZmZlcmluZywgYSBwYWdlIGZsaXAgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIGlkbWFjCmNo YW5uZWwgYnVmZmVyIGJhc2UgYWRkcmVzcyB3aGlsZSB0aGUgYnVmZmVyIGlzIHN0aWxsIGFjdGl2 ZS4gVGhpcwppcyBub3QgcmVjb21tZW5kZWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcmVuY2UgbWFu dWFsLgoKV2l0aCBkb3VibGUtYnVmZmVyaW5nLCBhIHBhZ2UtZmxpcCBjYW4gc2V0IHRoZSBiYXNl IG9mIHRoZSBpbmFjdGl2ZQpidWZmZXIgYmVmb3JlIHN3aXRjaGluZyB0byBpdCB1c2luZyBidWZm ZXItcmVhZHkgY29udHJvbC4KCk5vdGUgdGhhdCBmb3IgdGhlIHN5bmNocm9ub3VzIGRpc3BsYXkg Y2hhbm5lbHMsIHRoZSBidWZmZXIgcmVhZHkgc2lnbmFsIGNhbgpiZSBkcml2ZW4gZWl0aGVyIGJ5 IHRoZSBBUk0gY29yZSB3cml0aW5nIHRvIHRoZSBidWZmZXIgcmVhZHkgcmVnaXN0ZXJzLApvciBi eSB0aGUgREkuCgpXaGVuIHRoZSBBUk0gY29yZSBkb2VzIG5vdCBkcml2ZSBwaW5nLXBvbmcgYnVm ZmVyIHJlYWR5IHNlbGVjdGlvbiBhdApldmVyeSBFT0YsIHRoZSBESSB3aWxsIGRyaXZlIGJ1ZmZl ciByZWFkeSwgdHJpZ2dlcmVkIGJ5IGEgdGltZXIgbG9jYXRlZAppbiB0aGUgREkuIFRoZSBJUFUn cyBGU1UgdW5pdCB3aWxsIHF1aWNrbHkgc2V0dGxlIG9uIGEgc2luZ2xlIGJ1ZmZlciBhbmQKdGhl biByZW1haW4gYXQgdGhhdCBidWZmZXIsIHRoZSBESSBkcml2aW5nIGJ1ZmZlciByZWFkeSBhdCB0 aGF0IGJ1ZmZlci4KCklmIHRoZSBBUk0gY29yZSAodGhlIHBsYW5lIGRyaXZlcikgdGhlbiBzZWxl Y3RzIHRoZSBvdGhlciAoaW5hY3RpdmUpCmJ1ZmZlciwgdGhlIEZTVSBzd2l0Y2hlcyB0byBpdCBh bmQgdGhlbiByZW1haW5zIGF0IHRoaXMgYnVmZmVyLCB0aGUgREkKYWdhaW4gdGFraW5nIG92ZXIg YnVmZmVyIHJlYWR5IHNpZ25hbGxpbmcgYXQgdGhlIG5ldyBidWZmZXIsIHVudGlsIHRoZQpBUk0g Y29yZSBtYWtlcyB0aGUgbmV4dCBidWZmZXIgc2VsZWN0aW9uLgoKU28gd2UgdGFrZSBhZHZhbnRh Z2Ugb2YgdGhpcyBiZWhhdmlvdXIgYW5kIHVzZSBidWZmZXIgc2VsZWN0aW9uIHRvCnN3aXRjaCB0 byB0aGUgb3RoZXIgYnVmZmVyIHdoZW4gd2Ugd2FudCB0byBmbGlwIHRvIGFub3RoZXIgRFJNCmZy YW1lYnVmZmVyIGZvciBwYWdlLWZsaXAuCgpTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBMb25nZXJiZWFt IDxzdGV2ZV9sb25nZXJiZWFtQG1lbnRvci5jb20+Ci0tLQogZHJpdmVycy9zdGFnaW5nL2lteC1k cm0vaW14LWRybS1jb3JlLmMgfCAgIDg2ICsrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL3N0YWdp bmcvaW14LWRybS9pbXgtZHJtLmggICAgICB8ICAgMTAgKy0KIGRyaXZlcnMvc3RhZ2luZy9pbXgt ZHJtL2lwdXYzLWNydGMuYyAgIHwgIDExMSArKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJz L3N0YWdpbmcvaW14LWRybS9pcHV2My1wbGFuZS5jICB8ICAxNTggKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KIGRyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lwdXYzLXBsYW5lLmggIHwg ICAyMSArKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAyNTIgaW5zZXJ0aW9ucygrKSwgMTM0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0tY29y ZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWRybS1jb3JlLmMKaW5kZXggNTkyMDBm Zi4uZTAxNzhkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWRybS1j b3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWRybS1jb3JlLmMKQEAgLTI4 LDYgKzI4LDcgQEAKICNpbmNsdWRlICJpbXgtZHJtLmgiCiAKICNkZWZpbmUgTUFYX0NSVEMJNAor I2RlZmluZSBNQVhfUElQRVMJKDIgKiBNQVhfQ1JUQykKIAogc3RydWN0IGlteF9kcm1fY3J0YzsK IApAQCAtNTMsMTIgKzU0LDI5IEBAIHN0cnVjdCBpbXhfZHJtX2NydGMgewogc3RhdGljIGludCBs ZWdhY3lmYl9kZXB0aCA9IDE2OwogbW9kdWxlX3BhcmFtKGxlZ2FjeWZiX2RlcHRoLCBpbnQsIDA0 NDQpOwogCitzdGF0aWMgaW5saW5lIGludCBwaXBlX3RvX2NydGNfaWQoaW50IHBpcGUpCit7CisJ cmV0dXJuIHBpcGUgPj4gMTsKK30KKwogaW50IGlteF9kcm1fY3J0Y19pZChzdHJ1Y3QgaW14X2Ry bV9jcnRjICpjcnRjKQogewotCXJldHVybiBjcnRjLT5waXBlOworCXJldHVybiBwaXBlX3RvX2Ny dGNfaWQoY3J0Yy0+cGlwZSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpbXhfZHJtX2NydGNfaWQp OwogCitpbnQgaW14X2RybV9wcmltYXJ5X3BsYW5lX3BpcGUoc3RydWN0IGlteF9kcm1fY3J0YyAq Y3J0YykKK3sKKwlyZXR1cm4gY3J0Yy0+cGlwZTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlteF9k cm1fcHJpbWFyeV9wbGFuZV9waXBlKTsKKworaW50IGlteF9kcm1fb3ZlcmxheV9wbGFuZV9waXBl KHN0cnVjdCBpbXhfZHJtX2NydGMgKmNydGMpCit7CisJcmV0dXJuIGNydGMtPnBpcGUgKyAxOwor fQorRVhQT1JUX1NZTUJPTF9HUEwoaW14X2RybV9vdmVybGF5X3BsYW5lX3BpcGUpOworCiBzdGF0 aWMgdm9pZCBpbXhfZHJtX2RyaXZlcl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSkK IHsKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSU1YX0ZCX0hFTFBFUikKQEAgLTEyOSwzMCAr MTQ3LDE2IEBAIGludCBpbXhfZHJtX3BhbmVsX2Zvcm1hdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsIHUzMiBpbnRlcmZhY2VfcGl4X2ZtdCkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlteF9k cm1fcGFuZWxfZm9ybWF0KTsKIAotaW50IGlteF9kcm1fY3J0Y192YmxhbmtfZ2V0KHN0cnVjdCBp bXhfZHJtX2NydGMgKmlteF9kcm1fY3J0YykKLXsKLQlyZXR1cm4gZHJtX3ZibGFua19nZXQoaW14 X2RybV9jcnRjLT5jcnRjLT5kZXYsIGlteF9kcm1fY3J0Yy0+cGlwZSk7Ci19Ci1FWFBPUlRfU1lN Qk9MX0dQTChpbXhfZHJtX2NydGNfdmJsYW5rX2dldCk7Ci0KLXZvaWQgaW14X2RybV9jcnRjX3Zi bGFua19wdXQoc3RydWN0IGlteF9kcm1fY3J0YyAqaW14X2RybV9jcnRjKQotewotCWRybV92Ymxh bmtfcHV0KGlteF9kcm1fY3J0Yy0+Y3J0Yy0+ZGV2LCBpbXhfZHJtX2NydGMtPnBpcGUpOwotfQot RVhQT1JUX1NZTUJPTF9HUEwoaW14X2RybV9jcnRjX3ZibGFua19wdXQpOwotCi12b2lkIGlteF9k cm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2NydGMpCi17Ci0J ZHJtX2hhbmRsZV92YmxhbmsoaW14X2RybV9jcnRjLT5jcnRjLT5kZXYsIGlteF9kcm1fY3J0Yy0+ cGlwZSk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChpbXhfZHJtX2hhbmRsZV92YmxhbmspOwotCi1z dGF0aWMgaW50IGlteF9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBp bnQgY3J0YykKK3N0YXRpYyBpbnQgaW14X2RybV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIGludCBwaXBlKQogewogCXN0cnVjdCBpbXhfZHJtX2RldmljZSAqaW14ZHJtID0g ZHJtLT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2NydGMgPSBp bXhkcm0tPmNydGNbY3J0Y107CisJc3RydWN0IGlteF9kcm1fY3J0YyAqaW14X2RybV9jcnRjOwog CWludCByZXQ7CiAKKwlpZiAocGlwZSA+PSBNQVhfUElQRVMpCisJCXJldHVybiAtRUlOVkFMOwor CisJaW14X2RybV9jcnRjID0gaW14ZHJtLT5jcnRjW3BpcGVfdG9fY3J0Y19pZChwaXBlKV07CiAJ aWYgKCFpbXhfZHJtX2NydGMpCiAJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xNjAsMzUgKzE2NCw0 MCBAQCBzdGF0aWMgaW50IGlteF9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtLCBpbnQgY3J0YykKIAkJcmV0dXJuIC1FTk9TWVM7CiAKIAlyZXQgPSBpbXhfZHJtX2NydGMt PmlteF9kcm1faGVscGVyX2Z1bmNzLmVuYWJsZV92YmxhbmsoCi0JCQlpbXhfZHJtX2NydGMtPmNy dGMpOworCQlpbXhfZHJtX2NydGMtPmNydGMsIHBpcGUpOwogCiAJcmV0dXJuIHJldDsKIH0KIAot c3RhdGljIHZvaWQgaW14X2RybV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZHJt LCBpbnQgY3J0YykKK3N0YXRpYyB2b2lkIGlteF9kcm1fZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRy bV9kZXZpY2UgKmRybSwgaW50IHBpcGUpCiB7CiAJc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhk cm0gPSBkcm0tPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbXhfZHJtX2NydGMgKmlteF9kcm1fY3J0 YyA9IGlteGRybS0+Y3J0Y1tjcnRjXTsKKwlzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2Ny dGM7CiAKKwlpZiAocGlwZSA+PSBNQVhfUElQRVMpCisJCXJldHVybjsKKworCWlteF9kcm1fY3J0 YyA9IGlteGRybS0+Y3J0Y1twaXBlX3RvX2NydGNfaWQocGlwZSldOwogCWlmICghaW14X2RybV9j cnRjKQogCQlyZXR1cm47CiAKIAlpZiAoIWlteF9kcm1fY3J0Yy0+aW14X2RybV9oZWxwZXJfZnVu Y3MuZGlzYWJsZV92YmxhbmspCiAJCXJldHVybjsKIAotCWlteF9kcm1fY3J0Yy0+aW14X2RybV9o ZWxwZXJfZnVuY3MuZGlzYWJsZV92YmxhbmsoaW14X2RybV9jcnRjLT5jcnRjKTsKKwlpbXhfZHJt X2NydGMtPmlteF9kcm1faGVscGVyX2Z1bmNzLmRpc2FibGVfdmJsYW5rKAorCQlpbXhfZHJtX2Ny dGMtPmNydGMsIHBpcGUpOwogfQogCiBzdGF0aWMgdm9pZCBpbXhfZHJtX2RyaXZlcl9wcmVjbG9z ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAogCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7Ci0J aW50IGk7CisJaW50IHBpcGU7CiAKIAlpZiAoIWZpbGUtPmlzX21hc3RlcikKIAkJcmV0dXJuOwog Ci0JZm9yIChpID0gMDsgaSA8IE1BWF9DUlRDOyBpKyspCi0JCWlteF9kcm1fZGlzYWJsZV92Ymxh bmsoZHJtLCBpKTsKKwlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgTUFYX1BJUEVTOyBwaXBlKyspCisJ CWlteF9kcm1fZGlzYWJsZV92YmxhbmsoZHJtLCBwaXBlKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgaW14X2RybV9kcml2ZXJfZm9wcyA9IHsKQEAgLTI3MSw3ICsy ODAsNyBAQCBzdGF0aWMgaW50IGlteF9kcm1fZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2Ug KmRybSwgdW5zaWduZWQgbG9uZyBmbGFncykKIAogCWRybV9tb2RlX2NvbmZpZ19pbml0KGRybSk7 CiAKLQlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZHJtLCBNQVhfQ1JUQyk7CisJcmV0ID0gZHJtX3Zi bGFua19pbml0KGRybSwgTUFYX1BJUEVTKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9rbXM7CiAK QEAgLTM0OSwxMyArMzU4LDEzIEBAIGludCBpbXhfZHJtX2FkZF9jcnRjKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIHsKIAlzdHJ1Y3QgaW14X2RybV9kZXZp Y2UgKmlteGRybSA9IGRybS0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGlteF9kcm1fY3J0YyAqaW14 X2RybV9jcnRjOwotCWludCByZXQ7CisJaW50IGlkLCByZXQ7CiAKIAkvKgotCSAqIFRoZSB2Ymxh bmsgYXJyYXlzIGFyZSBkaW1lbnNpb25lZCBieSBNQVhfQ1JUQyAtIHdlIGNhbid0CisJICogVGhl IHZibGFuayBhcnJheXMgYXJlIGRpbWVuc2lvbmVkIGJ5IE1BWF9QSVBFUyAtIHdlIGNhbid0CiAJ ICogcGFzcyBJRHMgZ3JlYXRlciB0aGFuIHRoaXMgdG8gdGhvc2UgZnVuY3Rpb25zLgogCSAqLwot CWlmIChpbXhkcm0tPnBpcGVzID49IE1BWF9DUlRDKQorCWlmIChpbXhkcm0tPnBpcGVzID49IE1B WF9QSVBFUykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoaW14ZHJtLT5kcm0tPm9wZW5fY291 bnQpCkBAIC0zNjYsMTEgKzM3NSwxNSBAQCBpbnQgaW14X2RybV9hZGRfY3J0YyhzdHJ1Y3QgZHJt X2RldmljZSAqZHJtLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXJldHVybiAtRU5PTUVNOwog CiAJaW14X2RybV9jcnRjLT5pbXhfZHJtX2hlbHBlcl9mdW5jcyA9ICppbXhfZHJtX2hlbHBlcl9m dW5jczsKLQlpbXhfZHJtX2NydGMtPnBpcGUgPSBpbXhkcm0tPnBpcGVzKys7CisJaW14X2RybV9j cnRjLT5waXBlID0gaW14ZHJtLT5waXBlczsKIAlpbXhfZHJtX2NydGMtPnBvcnQgPSBwb3J0Owog CWlteF9kcm1fY3J0Yy0+Y3J0YyA9IGNydGM7CiAKLQlpbXhkcm0tPmNydGNbaW14X2RybV9jcnRj LT5waXBlXSA9IGlteF9kcm1fY3J0YzsKKwlpbXhkcm0tPnBpcGVzICs9IDI7CisKKwlpZCA9IHBp cGVfdG9fY3J0Y19pZChpbXhfZHJtX2NydGMtPnBpcGUpOworCisJaW14ZHJtLT5jcnRjW2lkXSA9 IGlteF9kcm1fY3J0YzsKIAogCSpuZXdfY3J0YyA9IGlteF9kcm1fY3J0YzsKIApAQCAtMzg3LDcg KzQwMCw3IEBAIGludCBpbXhfZHJtX2FkZF9jcnRjKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlyZXR1cm4gMDsKIAogZXJyX3JlZ2lzdGVyOgotCWlteGRy bS0+Y3J0Y1tpbXhfZHJtX2NydGMtPnBpcGVdID0gTlVMTDsKKwlpbXhkcm0tPmNydGNbaWRdID0g TlVMTDsKIAlrZnJlZShpbXhfZHJtX2NydGMpOwogCXJldHVybiByZXQ7CiB9CkBAIC0zOTksMTAg KzQxMiwxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChpbXhfZHJtX2FkZF9jcnRjKTsKIGludCBpbXhf ZHJtX3JlbW92ZV9jcnRjKHN0cnVjdCBpbXhfZHJtX2NydGMgKmlteF9kcm1fY3J0YykKIHsKIAlz dHJ1Y3QgaW14X2RybV9kZXZpY2UgKmlteGRybSA9IGlteF9kcm1fY3J0Yy0+Y3J0Yy0+ZGV2LT5k ZXZfcHJpdmF0ZTsKKwlpbnQgaWQgPSBwaXBlX3RvX2NydGNfaWQoaW14X2RybV9jcnRjLT5waXBl KTsKIAogCWRybV9jcnRjX2NsZWFudXAoaW14X2RybV9jcnRjLT5jcnRjKTsKIAotCWlteGRybS0+ Y3J0Y1tpbXhfZHJtX2NydGMtPnBpcGVdID0gTlVMTDsKKwlpbXhkcm0tPmNydGNbaWRdID0gTlVM TDsKIAogCWtmcmVlKGlteF9kcm1fY3J0Yyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9pbXgtZHJtL2lteC1kcm0uaCBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0uaApp bmRleCAzYTMwZjE2Li5lYzA4NGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pbXgtZHJtLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWRybS5oCkBAIC0x MywxMCArMTMsMTIgQEAgc3RydWN0IGlteF9kcm1fY3J0YzsKIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2U7CiAKIGludCBpbXhfZHJtX2NydGNfaWQoc3RydWN0IGlteF9kcm1fY3J0YyAqY3J0Yyk7Citp bnQgaW14X2RybV9wcmltYXJ5X3BsYW5lX3BpcGUoc3RydWN0IGlteF9kcm1fY3J0YyAqY3J0Yyk7 CitpbnQgaW14X2RybV9vdmVybGF5X3BsYW5lX3BpcGUoc3RydWN0IGlteF9kcm1fY3J0YyAqY3J0 Yyk7CiAKIHN0cnVjdCBpbXhfZHJtX2NydGNfaGVscGVyX2Z1bmNzIHsKLQlpbnQgKCplbmFibGVf dmJsYW5rKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwotCXZvaWQgKCpkaXNhYmxlX3ZibGFuayko c3RydWN0IGRybV9jcnRjICpjcnRjKTsKKwlpbnQgKCplbmFibGVfdmJsYW5rKShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIGludCBwaXBlKTsKKwl2b2lkICgqZGlzYWJsZV92YmxhbmspKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywgaW50IHBpcGUpOwogCWludCAoKnNldF9pbnRlcmZhY2VfcGl4X2ZtdCko c3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgZW5jb2Rlcl90eXBlLAogCQkJdTMyIHBpeF9mbXQs IGludCBoc3luY19waW4sIGludCB2c3luY19waW4pOwogCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19o ZWxwZXJfZnVuY3MgKmNydGNfaGVscGVyX2Z1bmNzOwpAQCAtMzMsMTAgKzM1LDYgQEAgaW50IGlt eF9kcm1faW5pdF9kcm0oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAkJaW50IHByZWZl cnJlZF9icHApOwogaW50IGlteF9kcm1fZXhpdF9kcm0odm9pZCk7CiAKLWludCBpbXhfZHJtX2Ny dGNfdmJsYW5rX2dldChzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2NydGMpOwotdm9pZCBp bXhfZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgaW14X2RybV9jcnRjICppbXhfZHJtX2NydGMp Owotdm9pZCBpbXhfZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGlteF9kcm1fY3J0YyAqaW14X2Ry bV9jcnRjKTsKLQogdm9pZCBpbXhfZHJtX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRybSk7CiAKIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmlteF9kcm1fZmJfZ2V0X29i aihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvaW14LWRybS9pcHV2My1jcnRjLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW14LWRybS9pcHV2My1j cnRjLmMKaW5kZXggNTkzMjYxZi4uNDIzYjAwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5n L2lteC1kcm0vaXB1djMtY3J0Yy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lwdXYz LWNydGMuYwpAQCAtOTAsOSArOTAsNyBAQCBzdHJ1Y3QgaXB1X2NydGMgewogCXN0cnVjdCBpcHVf ZGMJCSpkYzsKIAlzdHJ1Y3QgaXB1X2RpCQkqZGk7CiAJaW50CQkJZW5hYmxlZDsKLQlzdHJ1Y3Qg ZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpwYWdlX2ZsaXBfZXZlbnQ7Ci0Jc3RydWN0IGRybV9m cmFtZWJ1ZmZlcgkqbmV3ZmI7Ci0JaW50CQkJaXJxOworCiAJdTMyCQkJaW50ZXJmYWNlX3BpeF9m bXQ7CiAJdW5zaWduZWQgbG9uZwkJZGlfY2xrZmxhZ3M7CiAJaW50CQkJZGlfaHN5bmNfcGluOwpA QCAtMTAxLDYgKzk5LDIyIEBAIHN0cnVjdCBpcHVfY3J0YyB7CiAKICNkZWZpbmUgdG9faXB1X2Ny dGMoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpcHVfY3J0YywgYmFzZSkKIAorc3RhdGljIHN0 cnVjdCBpcHVfcGxhbmUgKnBpcGVfdG9fcGxhbmUoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywK KwkJCQkgICAgICAgaW50IHBpcGUpCit7CisJc3RydWN0IGlwdV9wbGFuZSAqcGxhbmU7CisKKwlw bGFuZSA9ICZpcHVfY3J0Yy0+cGxhbmVbMF07CisJaWYgKHBpcGUgPT0gcGxhbmUtPnBpcGUpCisJ CXJldHVybiBwbGFuZTsKKworCXBsYW5lID0gJmlwdV9jcnRjLT5wbGFuZVsxXTsKKwlpZiAoaXB1 X2NydGMtPmhhdmVfb3ZlcmxheSAmJiBwaXBlID09IHBsYW5lLT5waXBlKQorCQlyZXR1cm4gcGxh bmU7CisKKwlyZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHZvaWQgaXB1X2ZiX2VuYWJsZShzdHJ1 Y3QgaXB1X2NydGMgKmlwdV9jcnRjKQogewogCWlmIChpcHVfY3J0Yy0+ZW5hYmxlZCkKQEAgLTE0 OSwzNiArMTYzLDE4IEBAIHN0YXRpYyB2b2lkIGlwdV9jcnRjX2RwbXMoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBpbnQgbW9kZSkKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaXB1X3BhZ2VfZmxpcChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCitzdGF0aWMgaW50IGlwdV9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCQlzdHJ1Y3Qg ZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKIAkJdWludDMyX3QgcGFnZV9mbGlwX2Zs YWdzKQogewotCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsK LQlpbnQgcmV0OwotCi0JaWYgKGlwdV9jcnRjLT5uZXdmYikKLQkJcmV0dXJuIC1FQlVTWTsKLQot CXJldCA9IGlteF9kcm1fY3J0Y192YmxhbmtfZ2V0KGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0JaWYg KHJldCkgewotCQlkZXZfZGJnKGlwdV9jcnRjLT5kZXYsICJmYWlsZWQgdG8gYWNxdWlyZSB2Ymxh bmsgY291bnRlclxuIik7Ci0JCWxpc3RfZGVsKCZldmVudC0+YmFzZS5saW5rKTsKLQotCQlyZXR1 cm4gcmV0OwotCX0KLQotCWlwdV9jcnRjLT5uZXdmYiA9IGZiOwotCWlwdV9jcnRjLT5wYWdlX2Zs aXBfZXZlbnQgPSBldmVudDsKLQljcnRjLT5wcmltYXJ5LT5mYiA9IGZiOwotCi0JcmV0dXJuIDA7 CisJcmV0dXJuIGlwdV9wbGFuZV9wYWdlX2ZsaXAoY3J0Yy0+cHJpbWFyeSwgZmIsIGV2ZW50LCBw YWdlX2ZsaXBfZmxhZ3MpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNz IGlwdV9jcnRjX2Z1bmNzID0gewogCS5zZXRfY29uZmlnID0gZHJtX2NydGNfaGVscGVyX3NldF9j b25maWcsCiAJLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVhbnVwLAotCS5wYWdlX2ZsaXAgPSBpcHVf cGFnZV9mbGlwLAorCS5wYWdlX2ZsaXAgPSBpcHVfY3J0Y19wYWdlX2ZsaXAsCiB9OwogCiBzdGF0 aWMgaW50IGlwdV9jcnRjX21vZGVfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKQEAgLTI0OCwz NyArMjQ0LDYgQEAgc3RhdGljIGludCBpcHVfY3J0Y19tb2RlX3NldChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCQkJICB4LCB5LCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwogfQog Ci1zdGF0aWMgdm9pZCBpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoc3RydWN0IGlwdV9jcnRjICpp cHVfY3J0YykKLXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBpcHVfY3J0Yy0+YmFzZS5kZXY7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZHJtLT5ldmVu dF9sb2NrLCBmbGFncyk7Ci0JaWYgKGlwdV9jcnRjLT5wYWdlX2ZsaXBfZXZlbnQpCi0JCWRybV9z ZW5kX3ZibGFua19ldmVudChkcm0sIC0xLCBpcHVfY3J0Yy0+cGFnZV9mbGlwX2V2ZW50KTsKLQlp cHVfY3J0Yy0+cGFnZV9mbGlwX2V2ZW50ID0gTlVMTDsKLQlpbXhfZHJtX2NydGNfdmJsYW5rX3B1 dChpcHVfY3J0Yy0+aW14X2NydGMpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRybS0+ZXZl bnRfbG9jaywgZmxhZ3MpOwotfQotCi1zdGF0aWMgaXJxcmV0dXJuX3QgaXB1X2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKmRldl9pZCkKLXsKLQlzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjID0g ZGV2X2lkOwotCi0JaW14X2RybV9oYW5kbGVfdmJsYW5rKGlwdV9jcnRjLT5pbXhfY3J0Yyk7Ci0K LQlpZiAoaXB1X2NydGMtPm5ld2ZiKSB7Ci0JCXN0cnVjdCBpcHVfcGxhbmUgKnBsYW5lID0gJmlw dV9jcnRjLT5wbGFuZVswXTsKLQotCQlpcHVfY3J0Yy0+bmV3ZmIgPSBOVUxMOwotCQlpcHVfcGxh bmVfc2V0X2Jhc2UocGxhbmUsIGlwdV9jcnRjLT5iYXNlLnByaW1hcnktPmZiLAotCQkJCSAgIHBs YW5lLT54LCBwbGFuZS0+eSk7Ci0JCWlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChpcHVfY3J0Yyk7 Ci0JfQotCi0JcmV0dXJuIElSUV9IQU5ETEVEOwotfQotCiBzdGF0aWMgYm9vbCBpcHVfY3J0Y19t b2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgIGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLAogCQkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUpCkBAIC0zMDgsMTcgKzI3MywyNiBAQCBzdGF0aWMgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcyBpcHVfaGVscGVyX2Z1bmNzID0gewogCS5jb21taXQgPSBpcHVfY3J0Y19jb21t aXQsCiB9OwogCi1zdGF0aWMgaW50IGlwdV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKK3N0YXRpYyBpbnQgaXB1X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRj LCBpbnQgcGlwZSkKIHsKLQlyZXR1cm4gMDsKKwlzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjID0g dG9faXB1X2NydGMoY3J0Yyk7CisJc3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5lID0gcGlwZV90 b19wbGFuZShpcHVfY3J0YywgcGlwZSk7CisKKwlpZiAoIWlwdV9wbGFuZSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXR1cm4gaXB1X3BsYW5lX2VuYWJsZV92YmxhbmsoaXB1X3BsYW5lKTsKIH0K IAotc3RhdGljIHZvaWQgaXB1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK K3N0YXRpYyB2b2lkIGlwdV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGlu dCBwaXBlKQogewogCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRj KTsKKwlzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUgPSBwaXBlX3RvX3BsYW5lKGlwdV9jcnRj LCBwaXBlKTsKKworCWlmICghaXB1X3BsYW5lKQorCQlyZXR1cm47CiAKLQlpcHVfY3J0Yy0+cGFn ZV9mbGlwX2V2ZW50ID0gTlVMTDsKLQlpcHVfY3J0Yy0+bmV3ZmIgPSBOVUxMOworCWlwdV9wbGFu ZV9kaXNhYmxlX3ZibGFuayhpcHVfcGxhbmUpOwogfQogCiBzdGF0aWMgaW50IGlwdV9zZXRfaW50 ZXJmYWNlX3BpeF9mbXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgZW5jb2Rlcl90eXBlLApA QCAtNDY1LDggKzQzOSw4IEBAIHN0YXRpYyBpbnQgaXB1X2NydGNfaW5pdChzdHJ1Y3QgaXB1X2Ny dGMgKmlwdV9jcnRjLAogCQkJIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCiB7CiAJc3RydWN0IGRl dmljZV9ub2RlICpucCA9IGlwdV9jcnRjLT5kZXYtPm9mX25vZGU7CisJaW50IGlkLCBwcmltYXJ5 X3BpcGUsIG92ZXJsYXlfcGlwZTsKIAlpbnQgcmV0OwotCWludCBpZDsKIAogCXJldCA9IGlwdV9n ZXRfcmVzb3VyY2VzKGlwdV9jcnRjLCBucCk7CiAJaWYgKHJldCkgewpAQCAtNDg0LDggKzQ1OCwx MSBAQCBzdGF0aWMgaW50IGlwdV9jcnRjX2luaXQoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywK IAl9CiAKIAlpZCA9IGlteF9kcm1fY3J0Y19pZChpcHVfY3J0Yy0+aW14X2NydGMpOworCXByaW1h cnlfcGlwZSA9IGlteF9kcm1fcHJpbWFyeV9wbGFuZV9waXBlKGlwdV9jcnRjLT5pbXhfY3J0Yyk7 CisKIAlyZXQgPSBpcHVfcGxhbmVfaW5pdCgmaXB1X2NydGMtPnBsYW5lWzBdLCBkcm0sCiAJCQkg ICAgIGlwdV9jcnRjLT5pcHUsCisJCQkgICAgIHByaW1hcnlfcGlwZSwKIAkJCSAgICAgaXB1X2Ny dGMtPmNoLT5kbWFbMF0sCiAJCQkgICAgIGlwdV9jcnRjLT5jaC0+ZHBbMF0sCiAJCQkgICAgIEJJ VChpZCksIHRydWUpOwpAQCAtNTA0LDggKzQ4MSwxMCBAQCBzdGF0aWMgaW50IGlwdV9jcnRjX2lu aXQoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywKIAogCS8qIElmIHRoaXMgY3J0YyBpcyB1c2lu ZyB0aGUgRFAsIGFkZCBhbiBvdmVybGF5IHBsYW5lICovCiAJaWYgKGlwdV9jcnRjLT5jaC0+ZHBb MV0gPj0gMCkgeworCQlvdmVybGF5X3BpcGUgPSBpbXhfZHJtX292ZXJsYXlfcGxhbmVfcGlwZShp cHVfY3J0Yy0+aW14X2NydGMpOwogCQlyZXQgPSBpcHVfcGxhbmVfaW5pdCgmaXB1X2NydGMtPnBs YW5lWzFdLCBkcm0sCiAJCQkJICAgICBpcHVfY3J0Yy0+aXB1LAorCQkJCSAgICAgb3ZlcmxheV9w aXBlLAogCQkJCSAgICAgaXB1X2NydGMtPmNoLT5kbWFbMV0sCiAJCQkJICAgICBpcHVfY3J0Yy0+ Y2gtPmRwWzFdLAogCQkJCSAgICAgQklUKGlkKSwgZmFsc2UpOwpAQCAtNTEzLDE4ICs0OTIsOCBA QCBzdGF0aWMgaW50IGlwdV9jcnRjX2luaXQoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywKIAkJ aXB1X2NydGMtPmhhdmVfb3ZlcmxheSA9IHJldCA/IGZhbHNlIDogdHJ1ZTsKIAl9CiAKLQlpcHVf Y3J0Yy0+aXJxID0gaXB1X3BsYW5lX2lycSgmaXB1X2NydGMtPnBsYW5lWzBdKTsKLQlyZXQgPSBk ZXZtX3JlcXVlc3RfaXJxKGlwdV9jcnRjLT5kZXYsIGlwdV9jcnRjLT5pcnEsIGlwdV9pcnFfaGFu ZGxlciwgMCwKLQkJCSJpbXhfZHJtIiwgaXB1X2NydGMpOwotCWlmIChyZXQgPCAwKSB7Ci0JCWRl dl9lcnIoaXB1X2NydGMtPmRldiwgImlycSByZXF1ZXN0IGZhaWxlZCB3aXRoICVkLlxuIiwgcmV0 KTsKLQkJZ290byBlcnJfcHV0X3BsYW5lX3JlczsKLQl9Ci0KIAlyZXR1cm4gMDsKIAotZXJyX3B1 dF9wbGFuZV9yZXM6Ci0JaXB1X3BsYW5lX3B1dF9yZXNvdXJjZXMoJmlwdV9jcnRjLT5wbGFuZVsw XSk7CiBlcnJfcmVtb3ZlX2NydGM6CiAJaW14X2RybV9yZW1vdmVfY3J0YyhpcHVfY3J0Yy0+aW14 X2NydGMpOwogZXJyX3B1dF9yZXNvdXJjZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv aW14LWRybS9pcHV2My1wbGFuZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaXB1djMtcGxh bmUuYwppbmRleCA1MWEyNTdhLi43NmFjMTc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcv aW14LWRybS9pcHV2My1wbGFuZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lwdXYz LXBsYW5lLmMKQEAgLTQzLDEyICs0Myw2IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBpcHVfcGxh bmVfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfTlYxNiwKIH07CiAKLWludCBpcHVfcGxhbmVf aXJxKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKLXsKLQlyZXR1cm4gaXB1X2lkbWFjX2No YW5uZWxfaXJxKGlwdV9wbGFuZS0+aXB1LCBpcHVfcGxhbmUtPmlwdV9jaCwKLQkJCQkgICAgIElQ VV9JUlFfRU9GKTsKLX0KLQogc3RhdGljIGludCBjYWxjX3ZyZWYoc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUpCiB7CiAJdW5zaWduZWQgbG9uZyBodG90YWwsIHZ0b3RhbDsKQEAgLTY3LDgg KzYxLDggQEAgc3RhdGljIGlubGluZSBpbnQgY2FsY19iYW5kd2lkdGgoaW50IHdpZHRoLCBpbnQg aGVpZ2h0LCB1bnNpZ25lZCBpbnQgdnJlZikKIAlyZXR1cm4gd2lkdGggKiBoZWlnaHQgKiB2cmVm OwogfQogCi1pbnQgaXB1X3BsYW5lX3NldF9iYXNlKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFu ZSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCSAgICAgICBpbnQgeCwgaW50IHkpCitz dGF0aWMgaW50IHNldF9iYXNlKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSwgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsCisJCSAgICBpbnQgYnVmbnVtLCBpbnQgeCwgaW50IHkpCiB7CiAJ c3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iajsKIAl1bnNpZ25lZCBsb25nIGViYTsK QEAgLTc5LDE1ICs3MywxOSBAQCBpbnQgaXB1X3BsYW5lX3NldF9iYXNlKHN0cnVjdCBpcHVfcGxh bmUgKmlwdV9wbGFuZSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCXJldHVybiAtRUZB VUxUOwogCX0KIAotCWRldl9kYmcoaXB1X3BsYW5lLT5iYXNlLmRldi0+ZGV2LCAicGh5cyA9ICVw YWQsIHggPSAlZCwgeSA9ICVkIiwKLQkJJmNtYV9vYmotPnBhZGRyLCB4LCB5KTsKKwlEUk1fREVC VUdfS01TKCJwaHlzID0gJXBhZCwgeCA9ICVkLCB5ID0gJWQiLCAmY21hX29iai0+cGFkZHIsIHgs IHkpOwogCiAJaXB1X2NwbWVtX3NldF9zdHJpZGUoaXB1X3BsYW5lLT5pcHVfY2gsIGZiLT5waXRj aGVzWzBdKTsKIAogCWViYSA9IGNtYV9vYmotPnBhZGRyICsgZmItPm9mZnNldHNbMF0gKwogCSAg ICAgIGZiLT5waXRjaGVzWzBdICogeSArIChmYi0+Yml0c19wZXJfcGl4ZWwgPj4gMykgKiB4Owot CWlwdV9jcG1lbV9zZXRfYnVmZmVyKGlwdV9wbGFuZS0+aXB1X2NoLCAwLCBlYmEpOwotCWlwdV9j cG1lbV9zZXRfYnVmZmVyKGlwdV9wbGFuZS0+aXB1X2NoLCAxLCBlYmEpOworCisJLyogYnVmbnVt IDwgMCBtZWFucyBzZXQgYm90aCBidWZmZXIgYWRkcmVzc2VzICovCisJaWYgKGJ1Zm51bSA8IDAp IHsKKwkJaXB1X2NwbWVtX3NldF9idWZmZXIoaXB1X3BsYW5lLT5pcHVfY2gsIDAsIGViYSk7CisJ CWlwdV9jcG1lbV9zZXRfYnVmZmVyKGlwdV9wbGFuZS0+aXB1X2NoLCAxLCBlYmEpOworCX0gZWxz ZQorCQlpcHVfY3BtZW1fc2V0X2J1ZmZlcihpcHVfcGxhbmUtPmlwdV9jaCwgYnVmbnVtLCBlYmEp OwogCiAJLyogY2FjaGUgb2Zmc2V0cyBmb3Igc3Vic2VxdWVudCBwYWdlZmxpcHMgKi8KIAlpcHVf cGxhbmUtPnggPSB4OwpAQCAtOTYsNiArOTQsNjIgQEAgaW50IGlwdV9wbGFuZV9zZXRfYmFzZShz dHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAog CXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHBhZ2VfZmxpcChzdHJ1Y3QgaXB1X3BsYW5lICpp cHVfcGxhbmUsCisJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCit7CisJaW50IGN1 cmJ1ZiwgcmV0OworCisJY3VyYnVmID0gaXB1X2lkbWFjX2dldF9jdXJyZW50X2J1ZmZlcihpcHVf cGxhbmUtPmlwdV9jaCk7CisJY3VyYnVmIF49IDE7CisKKwlEUk1fREVCVUdfS01TKCJwaXBlICVk OiBwYWdlIGZsaXAgdG8gJWRcbiIsIGlwdV9wbGFuZS0+cGlwZSwgY3VyYnVmKTsKKworCXJldCA9 IHNldF9iYXNlKGlwdV9wbGFuZSwgZmIsIGN1cmJ1ZiwgaXB1X3BsYW5lLT54LCBpcHVfcGxhbmUt PnkpOworCWlmICghcmV0KQorCQlpcHVfaWRtYWNfc2VsZWN0X2J1ZmZlcihpcHVfcGxhbmUtPmlw dV9jaCwgY3VyYnVmKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9w YWdlX2ZsaXBfZXZlbnQoc3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5lKQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSBpcHVfcGxhbmUtPmJhc2UuZGV2OworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7CisJaWYg KGlwdV9wbGFuZS0+cGFnZV9mbGlwX2V2ZW50KQorCQlkcm1fc2VuZF92YmxhbmtfZXZlbnQoZHJt LCAtMSwgaXB1X3BsYW5lLT5wYWdlX2ZsaXBfZXZlbnQpOworCWlwdV9wbGFuZS0+cGFnZV9mbGlw X2V2ZW50ID0gTlVMTDsKKwlkcm1fdmJsYW5rX3B1dChkcm0sIGlwdV9wbGFuZS0+cGlwZSk7CisJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7Cit9CisKK3N0 YXRpYyBpcnFyZXR1cm5fdCBpcHVfcGxhbmVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2 X2lkKQoreworCXN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSA9IGRldl9pZDsKKworCWRybV9o YW5kbGVfdmJsYW5rKGlwdV9wbGFuZS0+YmFzZS5kZXYsIGlwdV9wbGFuZS0+cGlwZSk7CisKKwlp ZiAoaXB1X3BsYW5lLT5uZXdmYikgeworCQlwYWdlX2ZsaXAoaXB1X3BsYW5lLCBpcHVfcGxhbmUt Pm5ld2ZiKTsKKwkJaXB1X3BsYW5lLT5uZXdmYiA9IE5VTEw7CisJCWhhbmRsZV9wYWdlX2ZsaXBf ZXZlbnQoaXB1X3BsYW5lKTsKKwl9CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK2ludCBp cHVfcGxhbmVfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpCit7CisJ cmV0dXJuIDA7Cit9CisKK3ZvaWQgaXB1X3BsYW5lX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBpcHVf cGxhbmUgKmlwdV9wbGFuZSkKK3sKKwlpcHVfcGxhbmUtPnBhZ2VfZmxpcF9ldmVudCA9IE5VTEw7 CisJaXB1X3BsYW5lLT5uZXdmYiA9IE5VTEw7Cit9CisKIGludCBpcHVfcGxhbmVfbW9kZV9zZXQo c3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCSAg ICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJICAgICAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgY3J0Y194LCBpbnQgY3J0Y195LApAQCAtMjA2LDE1ICsyNjAs MzEgQEAgaW50IGlwdV9wbGFuZV9tb2RlX3NldChzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWlwdV9jcG1lbV9zZXRfaGlnaF9wcmlvcml0eShp cHVfcGxhbmUtPmlwdV9jaCk7CiAKLQlyZXQgPSBpcHVfcGxhbmVfc2V0X2Jhc2UoaXB1X3BsYW5l LCBmYiwgc3JjX3gsIHNyY195KTsKKwkvKiBlbmFibGUgZG91YmxlLWJ1ZmZlcmluZyAqLworCWlw dV9pZG1hY19zZXRfZG91YmxlX2J1ZmZlcihpcHVfcGxhbmUtPmlwdV9jaCwgdHJ1ZSk7CisKKwly ZXQgPSBzZXRfYmFzZShpcHVfcGxhbmUsIGZiLCAtMSwgc3JjX3gsIHNyY195KTsKIAlpZiAocmV0 IDwgMCkKIAkJcmV0dXJuIHJldDsKIAorCS8qIGNhY2hlIHdpZHRoL2hlaWdodCBmb3Igc3Vic2Vx dWVudCBwYWdlZmxpcHMgKi8KKwlpcHVfcGxhbmUtPndpZHRoID0gc3JjX3c7CisJaXB1X3BsYW5l LT5oZWlnaHQgPSBzcmNfaDsKKworCS8qIHNldCBidWZmZXJzIHJlYWR5ICovCisJaXB1X2lkbWFj X3NlbGVjdF9idWZmZXIoaXB1X3BsYW5lLT5pcHVfY2gsIDApOworCWlwdV9pZG1hY19zZWxlY3Rf YnVmZmVyKGlwdV9wbGFuZS0+aXB1X2NoLCAxKTsKKwogCXJldHVybiAwOwogfQogCiB2b2lkIGlw dV9wbGFuZV9wdXRfcmVzb3VyY2VzKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKIHsKKwlp ZiAoaXB1X3BsYW5lLT5pcnEpIHsKKwkJZGV2bV9mcmVlX2lycShpcHVfcGxhbmUtPmJhc2UuZGV2 LT5kZXYsCisJCQkgICAgICBpcHVfcGxhbmUtPmlycSwgaXB1X3BsYW5lKTsKKwkJaXB1X3BsYW5l LT5pcnEgPSAwOworCX0KIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGlwdV9wbGFuZS0+ZHApKQogCQlp cHVfZHBfcHV0KGlwdV9wbGFuZS0+ZHApOwogCWlmICghSVNfRVJSX09SX05VTEwoaXB1X3BsYW5l LT5kbWZjKSkKQEAgLTI1MCw2ICszMjAsMTggQEAgaW50IGlwdV9wbGFuZV9nZXRfcmVzb3VyY2Vz KHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKIAkJfQogCX0KIAorCWlwdV9wbGFuZS0+aXJx ID0gaXB1X2lkbWFjX2NoYW5uZWxfaXJxKGlwdV9wbGFuZS0+aXB1LAorCQkJCQkgICAgICAgaXB1 X3BsYW5lLT5pcHVfY2gsCisJCQkJCSAgICAgICBJUFVfSVJRX0VPRik7CisJcmV0ID0gZGV2bV9y ZXF1ZXN0X2lycShpcHVfcGxhbmUtPmJhc2UuZGV2LT5kZXYsCisJCQkgICAgICAgaXB1X3BsYW5l LT5pcnEsIGlwdV9wbGFuZV9pcnFfaGFuZGxlciwgMCwKKwkJCSAgICAgICAiaW14X2RybSIsIGlw dV9wbGFuZSk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0VSUk9SKCJpcnEgcmVxdWVzdCBmYWls ZWQgd2l0aCAlZFxuIiwgcmV0KTsKKwkJaXB1X3BsYW5lLT5pcnEgPSAwOworCQlnb3RvIGVycl9v dXQ7CisJfQorCiAJcmV0dXJuIDA7CiBlcnJfb3V0OgogCWlwdV9wbGFuZV9wdXRfcmVzb3VyY2Vz KGlwdV9wbGFuZSk7CkBAIC0yNjcsNiArMzQ5LDEyIEBAIHZvaWQgaXB1X3BsYW5lX2VuYWJsZShz dHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpCiAJCWlwdV9kcF9lbmFibGVfY2hhbm5lbChpcHVf cGxhbmUtPmRwKTsKIAogCWlwdV9wbGFuZS0+ZW5hYmxlZCA9IHRydWU7CisKKwkvKgorCSAqIHdl IG5lZWQgdG8gd2FpdCB1cCB0byBvbmUgZnJhbWUgdGltZSBhZnRlciBlbmFibGluZworCSAqIHRv IGFsbG93IHRoZSBJUFUncyBGU1UgdG8gc2V0dGxlIG9uIGFuIElETUFDIGJ1ZmZlci4KKwkgKi8K Kwl1c2xlZXBfcmFuZ2UoNTAwMDAsIDUwMDAxKTsKIH0KIAogdm9pZCBpcHVfcGxhbmVfZGlzYWJs ZShzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpCkBAIC00MTYsNiArNTA0LDQzIEBAIHN0YXRp YyBpbnQgaXB1X3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAly ZXR1cm4gcmV0OwogfQogCitpbnQgaXB1X3BsYW5lX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKKwkJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJc3RydWN0IGRybV9w ZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQsCisJCQl1aW50MzJfdCBmbGFncykKK3sKKwlzdHJ1 Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUgPSB0b19pcHVfcGxhbmUocGxhbmUpOworCWludCByZXQ7 CisKKwlEUk1fREVCVUdfS01TKCJbJWRdICVzXG4iLCBfX0xJTkVfXywgX19mdW5jX18pOworCisJ aWYgKGlwdV9wbGFuZS0+bmV3ZmIpCisJCXJldHVybiAtRUJVU1k7CisKKwlpZiAoaXB1X3BsYW5l LT53aWR0aCA+IGZiLT53aWR0aCB8fAorCSAgICBpcHVfcGxhbmUtPmhlaWdodCA+IGZiLT5oZWln aHQgfHwKKwkgICAgaXB1X3BsYW5lLT54ID4gZmItPndpZHRoIC0gaXB1X3BsYW5lLT53aWR0aCB8 fAorCSAgICBpcHVfcGxhbmUtPnkgPiBmYi0+aGVpZ2h0IC0gaXB1X3BsYW5lLT5oZWlnaHQpIHsK KwkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBmYiBzaXplICV1eCV1IGZvciBwbGFuZSAldXgldSsl ZCslZC5cbiIsCisJCQkgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCisJCQkgICAgICBpcHVf cGxhbmUtPndpZHRoLCBpcHVfcGxhbmUtPmhlaWdodCwKKwkJCSAgICAgIGlwdV9wbGFuZS0+eCwg aXB1X3BsYW5lLT55KTsKKwkJcmV0dXJuIC1FTk9TUEM7CisJfQorCisJcmV0ID0gZHJtX3ZibGFu a19nZXQoaXB1X3BsYW5lLT5iYXNlLmRldiwgaXB1X3BsYW5lLT5waXBlKTsKKwlpZiAocmV0KSB7 CisJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhY3F1aXJlIHZibGFuayBjb3VudGVyXG4iKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlpcHVfcGxhbmUtPm5ld2ZiID0gZmI7CisJaXB1X3BsYW5l LT5wYWdlX2ZsaXBfZXZlbnQgPSBldmVudDsKKwlwbGFuZS0+ZmIgPSBmYjsKKworCXJldHVybiAw OworfQorCiBzdGF0aWMgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpcHVfcGxhbmVfZnVuY3MgPSB7 CiAJLnVwZGF0ZV9wbGFuZQk9IGlwdV91cGRhdGVfcGxhbmUsCiAJLmRpc2FibGVfcGxhbmUJPSBp cHVfZGlzYWJsZV9wbGFuZSwKQEAgLTQyNCwxNSArNTQ5LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIGlwdV9wbGFuZV9mdW5jcyA9IHsKIH07CiAKIGludCBpcHVfcGxhbmVfaW5p dChzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUsIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCi0J CSAgIHN0cnVjdCBpcHVfc29jICppcHUsIGludCBkbWEsIGludCBkcCwKKwkJICAgc3RydWN0IGlw dV9zb2MgKmlwdSwgaW50IHBpcGUsIGludCBkbWEsIGludCBkcCwKIAkJICAgdW5zaWduZWQgaW50 IHBvc3NpYmxlX2NydGNzLCBib29sIHByaXYpCiB7CiAJaW50IHJldDsKIAotCURSTV9ERUJVR19L TVMoImNoYW5uZWwgJWQsIGRwIGZsb3cgJWQsIHBvc3NpYmxlX2NydGNzPTB4JXhcbiIsCi0JCSAg ICAgIGRtYSwgZHAsIHBvc3NpYmxlX2NydGNzKTsKKwlEUk1fREVCVUdfS01TKCJjaGFubmVsICVk LCBkcCBmbG93ICVkLCBwaXBlICVkLCBwb3NzaWJsZV9jcnRjcz0weCV4XG4iLAorCQkgICAgICBk bWEsIGRwLCBwaXBlLCBwb3NzaWJsZV9jcnRjcyk7CiAKIAlpcHVfcGxhbmUtPmlwdSA9IGlwdTsK KwlpcHVfcGxhbmUtPnBpcGUgPSBwaXBlOwogCWlwdV9wbGFuZS0+ZG1hID0gZG1hOwogCWlwdV9w bGFuZS0+ZHBfZmxvdyA9IGRwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pcHV2My1wbGFuZS5oIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaXB1djMtcGxhbmUuaApp bmRleCAxNDg3YTA4Li40ZDg1NmU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pcHV2My1wbGFuZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lwdXYzLXBsYW5l LmgKQEAgLTE1LDYgKzE1LDcgQEAgc3RydWN0IGlwdV9kcDsKIAogc3RydWN0IGlwdV9wbGFuZSB7 CiAJc3RydWN0IGRybV9wbGFuZQliYXNlOworCWludAkJCXBpcGU7CiAKIAlzdHJ1Y3QgaXB1X3Nv YwkJKmlwdTsKIAlzdHJ1Y3QgaXB1djNfY2hhbm5lbAkqaXB1X2NoOwpAQCAtMjQsNiArMjUsOCBA QCBzdHJ1Y3QgaXB1X3BsYW5lIHsKIAlpbnQJCQlkbWE7CiAJaW50CQkJZHBfZmxvdzsKIAorCWlu dAkJCXdpZHRoOworCWludAkJCWhlaWdodDsKIAlpbnQJCQl4OwogCWludAkJCXk7CiAKQEAgLTM0 LDExICszNywxNSBAQCBzdHJ1Y3QgaXB1X3BsYW5lIHsKIAlib29sCQkJY29sb3JrZXlfZW47CiAJ dTMyCQkJY29sb3JrZXk7CiAKKwlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpwYWdl X2ZsaXBfZXZlbnQ7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlcgkqbmV3ZmI7CisJaW50CQkJaXJx OworCiAJYm9vbAkJCWVuYWJsZWQ7CiB9OwogCiBpbnQgaXB1X3BsYW5lX2luaXQoc3RydWN0IGlw dV9wbGFuZSAqaXB1X3BsYW5lLCBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAotCQkgICBzdHJ1Y3Qg aXB1X3NvYyAqaXB1LCBpbnQgZG1hLCBpbnQgZHAsCisJCSAgIHN0cnVjdCBpcHVfc29jICppcHUs IGludCBwaXBlLCBpbnQgZG1hLCBpbnQgZHAsCiAJCSAgIHVuc2lnbmVkIGludCBwb3NzaWJsZV9j cnRjcywgYm9vbCBwcml2KTsKIAogLyogSW5pdCBJRE1BQywgRE1GQywgRFAgKi8KQEAgLTQ5LDE0 ICs1NiwxOCBAQCBpbnQgaXB1X3BsYW5lX21vZGVfc2V0KHN0cnVjdCBpcHVfcGxhbmUgKnBsYW5l LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCSAgICAgICB1aW50MzJfdCBzcmNfeCwgdWludDMy X3Qgc3JjX3ksIHVpbnQzMl90IHNyY193LAogCQkgICAgICAgdWludDMyX3Qgc3JjX2gpOwogCitp bnQgaXB1X3BsYW5lX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQsCisJCQl1aW50MzJfdCBmbGFncyk7CisKK2ludCBpcHVfcGxhbmVfZW5hYmxlX3Zi bGFuayhzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpOwordm9pZCBpcHVfcGxhbmVfZGlzYWJs ZV92Ymxhbmsoc3RydWN0IGlwdV9wbGFuZSAqaXB1X3BsYW5lKTsKKwogdm9pZCBpcHVfcGxhbmVf ZW5hYmxlKHN0cnVjdCBpcHVfcGxhbmUgKnBsYW5lKTsKIHZvaWQgaXB1X3BsYW5lX2Rpc2FibGUo c3RydWN0IGlwdV9wbGFuZSAqcGxhbmUpOwotaW50IGlwdV9wbGFuZV9zZXRfYmFzZShzdHJ1Y3Qg aXB1X3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCSAgICAgICBp bnQgeCwgaW50IHkpOwogCiBpbnQgaXB1X3BsYW5lX2dldF9yZXNvdXJjZXMoc3RydWN0IGlwdV9w bGFuZSAqcGxhbmUpOwogdm9pZCBpcHVfcGxhbmVfcHV0X3Jlc291cmNlcyhzdHJ1Y3QgaXB1X3Bs YW5lICpwbGFuZSk7CiAKLWludCBpcHVfcGxhbmVfaXJxKHN0cnVjdCBpcHVfcGxhbmUgKnBsYW5l KTsKLQogI2VuZGlmCi0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=