From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 6/9] drm/xen-front: Introduce DRM/KMS virtual display driver Date: Wed, 21 Feb 2018 10:03:39 +0200 Message-ID: <1519200222-20623-7-git-send-email-andr2000@gmail.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id DEDCF6E526 for ; Wed, 21 Feb 2018 08:04:03 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id f19so1086204lfg.0 for ; Wed, 21 Feb 2018 00:04:03 -0800 (PST) In-Reply-To: <1519200222-20623-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSW1wbGVtZW50IGVzc2VudGlhbCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGlzcGxh eSBkcml2ZXI6CiAgLSBpbnRyb2R1Y2UgcmVxdWlyZWQgZGF0YSBzdHJ1Y3R1cmVzCiAgLSBoYW5k bGUgRFJNL0tNUyBkcml2ZXIgcmVnaXN0cmF0aW9uCiAgLSBwZXJmb3JtIGJhc2ljIERSTSBkcml2 ZXIgaW5pdGlhbGl6YXRpb24KICAtIHJlZ2lzdGVyIGRyaXZlciBvbiBiYWNrZW5kIGNvbm5lY3Rp b24KICAtIHJlbW92ZSBkcml2ZXIgb24gYmFja2VuZCBkaXNjb25uZWN0CiAgLSBpbnRyb2R1Y2Ug ZXNzZW50aWFsIGNhbGxiYWNrcyByZXF1aXJlZCBieSBEUk0vS01TIGNvcmUKICAtIGludHJvZHVj ZSBlc3NlbnRpYWwgY2FsbGJhY2tzIHJlcXVpcmVkIGZvciBmcm9udGVuZCBvcGVyYXRpb25zCgpT aWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hj aGVua29AZXBhbS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZSAgICAgICAg ICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jICAgICB8IDE2 OSArKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnQuaCAgICAgfCAgMjQgKysrKwogZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250 X2Rydi5jIHwgMjExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2LmggfCAgNjAgKysrKysrKysrCiA1IGZpbGVzIGNo YW5nZWQsIDQ2MiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaAoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0veGVuL01h a2VmaWxlCmluZGV4IGYxODIzY2I1OTZjNS4uZDMwNjgyMDI1OTBmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZp bGUKQEAgLTEsNiArMSw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiAK IGRybV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5fZHJtX2Zyb250Lm8gXAorCQkgICAgICB4ZW5fZHJt X2Zyb250X2Rydi5vIFwKIAkJICAgICAgeGVuX2RybV9mcm9udF9ldnRjaG5sLm8gXAogCQkgICAg ICB4ZW5fZHJtX2Zyb250X3NoYnVmLm8gXAogCQkgICAgICB4ZW5fZHJtX2Zyb250X2NmZy5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYyBiL2RyaXZlcnMv Z3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jCmluZGV4IDBkOTRmZjI3MmRhMy4uOGRlODhlMzU5 ZDVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYwpAQCAtMTgsNiArMTgsOCBAQAog CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KIAorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgor CiAjaW5jbHVkZSA8eGVuL3BsYXRmb3JtX3BjaS5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNp bmNsdWRlIDx4ZW4veGVuYnVzLmg+CkBAIC0yNSwxNSArMjcsMTYxIEBACiAjaW5jbHVkZSA8eGVu L2ludGVyZmFjZS9pby9kaXNwbGlmLmg+CiAKICNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250LmgiCisj aW5jbHVkZSAieGVuX2RybV9mcm9udF9kcnYuaCIKICNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2V2 dGNobmwuaCIKICNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X3NoYnVmLmgiCiAKK3N0YXRpYyBpbnQg YmVfbW9kZV9zZXQoc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSwg dWludDMyX3QgeCwKKwkJdWludDMyX3QgeSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo dCwgdWludDMyX3QgYnBwLAorCQl1aW50NjRfdCBmYl9jb29raWUpCisKK3sKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBiZV9kYnVmX2NyZWF0ZV9pbnQoc3RydWN0IHhlbl9kcm1fZnJvbnRf aW5mbyAqZnJvbnRfaW5mbywKKwkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQzMl90IHdpZHRo LCB1aW50MzJfdCBoZWlnaHQsCisJCXVpbnQzMl90IGJwcCwgdWludDY0X3Qgc2l6ZSwgc3RydWN0 IHBhZ2UgKipwYWdlcywKKwkJc3RydWN0IHNnX3RhYmxlICpzZ3QpCit7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYmVfZGJ1Zl9jcmVhdGVfZnJvbV9zZ3Qoc3RydWN0IHhlbl9kcm1fZnJv bnRfaW5mbyAqZnJvbnRfaW5mbywKKwkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQzMl90IHdp ZHRoLCB1aW50MzJfdCBoZWlnaHQsCisJCXVpbnQzMl90IGJwcCwgdWludDY0X3Qgc2l6ZSwgc3Ry dWN0IHNnX3RhYmxlICpzZ3QpCit7CisJcmV0dXJuIGJlX2RidWZfY3JlYXRlX2ludChmcm9udF9p bmZvLCBkYnVmX2Nvb2tpZSwgd2lkdGgsIGhlaWdodCwKKwkJCWJwcCwgc2l6ZSwgTlVMTCwgc2d0 KTsKK30KKworc3RhdGljIGludCBiZV9kYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzKHN0cnVjdCB4ZW5f ZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCisJCXVpbnQ2NF90IGRidWZfY29va2llLCB1aW50 MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQl1aW50MzJfdCBicHAsIHVpbnQ2NF90IHNp emUsIHN0cnVjdCBwYWdlICoqcGFnZXMpCit7CisJcmV0dXJuIGJlX2RidWZfY3JlYXRlX2ludChm cm9udF9pbmZvLCBkYnVmX2Nvb2tpZSwgd2lkdGgsIGhlaWdodCwKKwkJCWJwcCwgc2l6ZSwgcGFn ZXMsIE5VTEwpOworfQorCitzdGF0aWMgaW50IGJlX2RidWZfZGVzdHJveShzdHJ1Y3QgeGVuX2Ry bV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAorCQl1aW50NjRfdCBkYnVmX2Nvb2tpZSkKK3sKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBiZV9mYl9hdHRhY2goc3RydWN0IHhlbl9kcm1fZnJv bnRfaW5mbyAqZnJvbnRfaW5mbywKKwkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQ2NF90IGZi X2Nvb2tpZSwgdWludDMyX3Qgd2lkdGgsCisJCXVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgcGl4 ZWxfZm9ybWF0KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJlX2ZiX2RldGFjaChz dHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAorCQl1aW50NjRfdCBmYl9jb29r aWUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmVfcGFnZV9mbGlwKHN0cnVjdCB4 ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sIGludCBjb25uX2lkeCwKKwkJdWludDY0X3Qg ZmJfY29va2llKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB4ZW5fZHJtX2Rydl91 bmxvYWQoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKK3sKKwlpZiAoZnJv bnRfaW5mby0+eGJfZGV2LT5zdGF0ZSAhPSBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcpCisJCXJl dHVybjsKKworCURSTV9ERUJVRygiQ2FuIHRyeSByZW1vdmluZyBkcml2ZXIgbm93XG4iKTsKKwl4 ZW5idXNfc3dpdGNoX3N0YXRlKGZyb250X2luZm8tPnhiX2RldiwgWGVuYnVzU3RhdGVJbml0aWFs aXNpbmcpOworfQorCiBzdGF0aWMgc3RydWN0IHhlbl9kcm1fZnJvbnRfb3BzIGZyb250X29wcyA9 IHsKLQkvKiBwbGFjZWhvbGRlciBmb3Igbm93ICovCisJLm1vZGVfc2V0ID0gYmVfbW9kZV9zZXQs CisJLmRidWZfY3JlYXRlX2Zyb21fcGFnZXMgPSBiZV9kYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzLAor CS5kYnVmX2NyZWF0ZV9mcm9tX3NndCA9IGJlX2RidWZfY3JlYXRlX2Zyb21fc2d0LAorCS5kYnVm X2Rlc3Ryb3kgPSBiZV9kYnVmX2Rlc3Ryb3ksCisJLmZiX2F0dGFjaCA9IGJlX2ZiX2F0dGFjaCwK KwkuZmJfZGV0YWNoID0gYmVfZmJfZGV0YWNoLAorCS5wYWdlX2ZsaXAgPSBiZV9wYWdlX2ZsaXAs CisJLmRybV9sYXN0X2Nsb3NlID0geGVuX2RybV9kcnZfdW5sb2FkLAorfTsKKworc3RhdGljIGlu dCB4ZW5fZHJtX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCS8q CisJICogVGhlIGRldmljZSBpcyBub3Qgc3Bhd24gZnJvbSBhIGRldmljZSB0cmVlLCBzbyBhcmNo X3NldHVwX2RtYV9vcHMKKwkgKiBpcyBub3QgY2FsbGVkLCB0aHVzIGxlYXZpbmcgdGhlIGRldmlj ZSB3aXRoIGR1bW15IERNQSBvcHMuCisJICogVGhpcyBtYWtlcyB0aGUgZGV2aWNlIHJldHVybiBl cnJvciBvbiBQUklNRSBidWZmZXIgaW1wb3J0LCB3aGljaAorCSAqIGlzIG5vdCBjb3JyZWN0OiB0 byBmaXggdGhpcyBjYWxsIG9mX2RtYV9jb25maWd1cmUoKSB3aXRoIGEgTlVMTAorCSAqIG5vZGUg dG8gc2V0IGRlZmF1bHQgRE1BIG9wcy4KKwkgKi8KKwlvZl9kbWFfY29uZmlndXJlKCZwZGV2LT5k ZXYsIE5VTEwpOworCXJldHVybiB4ZW5fZHJtX2Zyb250X2Rydl9wcm9iZShwZGV2LCAmZnJvbnRf b3BzKTsKK30KKworc3RhdGljIGludCB4ZW5fZHJtX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKK3sKKwlyZXR1cm4geGVuX2RybV9mcm9udF9kcnZfcmVtb3ZlKHBkZXYp OworfQorCitzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2luZm8geGVuX2RybV9mcm9udF9wbGF0Zm9y bV9pbmZvID0geworCS5uYW1lID0gWEVORElTUExfRFJJVkVSX05BTUUsCisJLmlkID0gMCwKKwku bnVtX3JlcyA9IDAsCisJLmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKSwKIH07CiAKK3N0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhlbl9kcm1fZnJvbnRfZnJvbnRfaW5mbyA9IHsKKwku cHJvYmUJCT0geGVuX2RybV9kcnZfcHJvYmUsCisJLnJlbW92ZQkJPSB4ZW5fZHJtX2Rydl9yZW1v dmUsCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCT0gWEVORElTUExfRFJJVkVSX05BTUUsCisJfSwK K307CisKK3N0YXRpYyB2b2lkIHhlbl9kcm1fZHJ2X2RlaW5pdChzdHJ1Y3QgeGVuX2RybV9mcm9u dF9pbmZvICpmcm9udF9pbmZvKQoreworCWlmICghZnJvbnRfaW5mby0+ZHJtX3BkcnZfcmVnaXN0 ZXJlZCkKKwkJcmV0dXJuOworCisJaWYgKGZyb250X2luZm8tPmRybV9wZGV2KQorCQlwbGF0Zm9y bV9kZXZpY2VfdW5yZWdpc3Rlcihmcm9udF9pbmZvLT5kcm1fcGRldik7CisKKwlwbGF0Zm9ybV9k cml2ZXJfdW5yZWdpc3RlcigmeGVuX2RybV9mcm9udF9mcm9udF9pbmZvKTsKKwlmcm9udF9pbmZv LT5kcm1fcGRydl9yZWdpc3RlcmVkID0gZmFsc2U7CisJZnJvbnRfaW5mby0+ZHJtX3BkZXYgPSBO VUxMOworfQorCitzdGF0aWMgaW50IHhlbl9kcm1fZHJ2X2luaXQoc3RydWN0IHhlbl9kcm1fZnJv bnRfaW5mbyAqZnJvbnRfaW5mbykKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gcGxhdGZvcm1fZHJp dmVyX3JlZ2lzdGVyKCZ4ZW5fZHJtX2Zyb250X2Zyb250X2luZm8pOworCWlmIChyZXQgPCAwKQor CQlyZXR1cm4gcmV0OworCisJZnJvbnRfaW5mby0+ZHJtX3BkcnZfcmVnaXN0ZXJlZCA9IHRydWU7 CisJLyogcGFzcyBjYXJkIGNvbmZpZ3VyYXRpb24gdmlhIHBsYXRmb3JtIGRhdGEgKi8KKwl4ZW5f ZHJtX2Zyb250X3BsYXRmb3JtX2luZm8uZGF0YSA9ICZmcm9udF9pbmZvLT5jZmc7CisJeGVuX2Ry bV9mcm9udF9wbGF0Zm9ybV9pbmZvLnNpemVfZGF0YSA9IHNpemVvZihmcm9udF9pbmZvLT5jZmcp OworCisJZnJvbnRfaW5mby0+ZHJtX3BkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVs bCgKKwkJCSZ4ZW5fZHJtX2Zyb250X3BsYXRmb3JtX2luZm8pOworCWlmIChJU19FUlJfT1JfTlVM TChmcm9udF9pbmZvLT5kcm1fcGRldikpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVnaXN0 ZXIgIiBYRU5ESVNQTF9EUklWRVJfTkFNRSAiIFBWIERSTSBkcml2ZXJcbiIpOworCQlmcm9udF9p bmZvLT5kcm1fcGRldiA9IE5VTEw7CisJCXhlbl9kcm1fZHJ2X2RlaW5pdChmcm9udF9pbmZvKTsK KwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIHhl bl9kcnZfcmVtb3ZlX2ludGVybmFsKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2lu Zm8pCiB7CisJeGVuX2RybV9kcnZfZGVpbml0KGZyb250X2luZm8pOwogCXhlbl9kcm1fZnJvbnRf ZXZ0Y2hubF9mcmVlX2FsbChmcm9udF9pbmZvKTsKIH0KIApAQCAtNTksMTMgKzIwNywyNyBAQCBz dGF0aWMgaW50IGJhY2tlbmRfb25faW5pdHdhaXQoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAq ZnJvbnRfaW5mbykKIHN0YXRpYyBpbnQgYmFja2VuZF9vbl9jb25uZWN0ZWQoc3RydWN0IHhlbl9k cm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKIHsKIAl4ZW5fZHJtX2Zyb250X2V2dGNobmxfc2V0 X3N0YXRlKGZyb250X2luZm8sIEVWVENITkxfU1RBVEVfQ09OTkVDVEVEKTsKLQlyZXR1cm4gMDsK KwlyZXR1cm4geGVuX2RybV9kcnZfaW5pdChmcm9udF9pbmZvKTsKIH0KIAogc3RhdGljIHZvaWQg YmFja2VuZF9vbl9kaXNjb25uZWN0ZWQoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRf aW5mbykKIHsKKwlib29sIHJlbW92ZWQgPSB0cnVlOworCisJaWYgKGZyb250X2luZm8tPmRybV9w ZGV2KSB7CisJCWlmICh4ZW5fZHJtX2Zyb250X2Rydl9pc191c2VkKGZyb250X2luZm8tPmRybV9w ZGV2KSkgeworCQkJRFJNX1dBUk4oIkRSTSBkcml2ZXIgc3RpbGwgaW4gdXNlLCBkZWZlcnJpbmcg cmVtb3ZhbFxuIik7CisJCQlyZW1vdmVkID0gZmFsc2U7CisJCX0gZWxzZQorCQkJeGVuX2Rydl9y ZW1vdmVfaW50ZXJuYWwoZnJvbnRfaW5mbyk7CisJfQorCiAJeGVuX2RybV9mcm9udF9ldnRjaG5s X3NldF9zdGF0ZShmcm9udF9pbmZvLCBFVlRDSE5MX1NUQVRFX0RJU0NPTk5FQ1RFRCk7Ci0JeGVu YnVzX3N3aXRjaF9zdGF0ZShmcm9udF9pbmZvLT54Yl9kZXYsIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nKTsKKworCWlmIChyZW1vdmVkKQorCQl4ZW5idXNfc3dpdGNoX3N0YXRlKGZyb250X2luZm8t PnhiX2RldiwgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcpOworCWVsc2UKKwkJeGVuYnVzX3N3aXRj aF9zdGF0ZShmcm9udF9pbmZvLT54Yl9kZXYsIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyk7CiB9 CiAKIHN0YXRpYyB2b2lkIGJhY2tlbmRfb25fY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAq eGJfZGV2LApAQCAtMTQ4LDYgKzMxMCw3IEBAIHN0YXRpYyBpbnQgeGVuX2Rydl9wcm9iZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2LAogCiAJZnJvbnRfaW5mby0+eGJfZGV2ID0geGJfZGV2 OwogCXNwaW5fbG9ja19pbml0KCZmcm9udF9pbmZvLT5pb19sb2NrKTsKKwlmcm9udF9pbmZvLT5k cm1fcGRydl9yZWdpc3RlcmVkID0gZmFsc2U7CiAJZGV2X3NldF9kcnZkYXRhKCZ4Yl9kZXYtPmRl diwgZnJvbnRfaW5mbyk7CiAJcmV0dXJuIHhlbmJ1c19zd2l0Y2hfc3RhdGUoeGJfZGV2LCBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnQuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5oCmlu ZGV4IDEzZjIyNzM2YWUwMi4uOWVkNWJmYjI0OGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnQuaApAQCAtMTksNiArMTksOCBAQAogI2lmbmRlZiBfX1hFTl9EUk1fRlJPTlRfSF8KICNk ZWZpbmUgX19YRU5fRFJNX0ZST05UX0hfCiAKKyNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5o PgorCiAjaW5jbHVkZSAieGVuX2RybV9mcm9udF9jZmcuaCIKIAogI2lmbmRlZiBHUkFOVF9JTlZB TElEX1JFRgpAQCAtMzAsMTYgKzMyLDM4IEBACiAjZGVmaW5lIEdSQU5UX0lOVkFMSURfUkVGCTAK ICNlbmRpZgogCitzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxpbmU7CisKIHN0cnVjdCB4 ZW5fZHJtX2Zyb250X29wcyB7CisJaW50ICgqbW9kZV9zZXQpKHN0cnVjdCB4ZW5fZHJtX2Zyb250 X2RybV9waXBlbGluZSAqcGlwZWxpbmUsCisJCQl1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50 MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQkJdWludDMyX3QgYnBwLCB1aW50NjRfdCBm Yl9jb29raWUpOworCWludCAoKmRidWZfY3JlYXRlX2Zyb21fcGFnZXMpKHN0cnVjdCB4ZW5fZHJt X2Zyb250X2luZm8gKmZyb250X2luZm8sCisJCQl1aW50NjRfdCBkYnVmX2Nvb2tpZSwgdWludDMy X3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKKwkJCXVpbnQzMl90IGJwcCwgdWludDY0X3Qgc2l6 ZSwgc3RydWN0IHBhZ2UgKipwYWdlcyk7CisJaW50ICgqZGJ1Zl9jcmVhdGVfZnJvbV9zZ3QpKHN0 cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCisJCQl1aW50NjRfdCBkYnVmX2Nv b2tpZSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKKwkJCXVpbnQzMl90IGJwcCwg dWludDY0X3Qgc2l6ZSwgc3RydWN0IHNnX3RhYmxlICpzZ3QpOworCWludCAoKmRidWZfZGVzdHJv eSkoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKKwkJCXVpbnQ2NF90IGRi dWZfY29va2llKTsKKwlpbnQgKCpmYl9hdHRhY2gpKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8g KmZyb250X2luZm8sCisJCQl1aW50NjRfdCBkYnVmX2Nvb2tpZSwgdWludDY0X3QgZmJfY29va2ll LAorCQkJdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgcGl4ZWxfZm9y bWF0KTsKKwlpbnQgKCpmYl9kZXRhY2gpKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250 X2luZm8sCisJCQl1aW50NjRfdCBmYl9jb29raWUpOworCWludCAoKnBhZ2VfZmxpcCkoc3RydWN0 IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKKwkJCWludCBjb25uX2lkeCwgdWludDY0 X3QgZmJfY29va2llKTsKIAkvKiBDQVVUSU9OISB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgc3Bpbl9s b2NrIGhlbGQhICovCiAJdm9pZCAoKm9uX2ZyYW1lX2RvbmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCiAJCQlpbnQgY29ubl9pZHgsIHVpbnQ2NF90IGZiX2Nvb2tpZSk7CisJdm9pZCAo KmRybV9sYXN0X2Nsb3NlKShzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvKTsK IH07CiAKIHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gewogCXN0cnVjdCB4ZW5idXNfZGV2aWNl ICp4Yl9kZXY7CiAJLyogdG8gcHJvdGVjdCBkYXRhIGJldHdlZW4gYmFja2VuZCBJTyBjb2RlIGFu ZCBpbnRlcnJ1cHQgaGFuZGxlciAqLwogCXNwaW5sb2NrX3QgaW9fbG9jazsKKwlib29sIGRybV9w ZHJ2X3JlZ2lzdGVyZWQ7CiAJLyogdmlydHVhbCBEUk0gcGxhdGZvcm0gZGV2aWNlICovCiAJc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqZHJtX3BkZXY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udF9kcnYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIz NzY0ZDVlZDBmNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udF9kcnYuYwpAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAqICBYZW4gcGFyYS12aXJ0dWFs IERSTSBkZXZpY2UKKyAqCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0y MDE4IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogQXV0aG9yOiBPbGVrc2FuZHIgQW5kcnVzaGNo ZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+CisgKi8KKworI2luY2x1ZGUg PGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KKworI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKKyNpbmNsdWRl ICJ4ZW5fZHJtX2Zyb250X2NmZy5oIgorI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfZHJ2LmgiCisK K3N0YXRpYyBpbnQgZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxwLAorCQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCit7CisJ cmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfb2JqZWN0KHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1f aW5mbyA9IG9iai0+ZGV2LT5kZXZfcHJpdmF0ZTsKKworCWRybV9pbmZvLT5mcm9udF9vcHMtPmRi dWZfZGVzdHJveShkcm1faW5mby0+ZnJvbnRfaW5mbywKKwkJCXhlbl9kcm1fZnJvbnRfZGJ1Zl90 b19jb29raWUob2JqKSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uX2ZyYW1lX2RvbmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwKKwkJaW50IGNvbm5faWR4LCB1aW50NjRfdCBmYl9jb29raWUp Cit7Cit9CisKK3N0YXRpYyB2b2lkIGxhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9IGRldi0+ZGV2X3By aXZhdGU7CisKKwlkcm1faW5mby0+ZnJvbnRfb3BzLT5kcm1fbGFzdF9jbG9zZShkcm1faW5mby0+ ZnJvbnRfaW5mbyk7Cit9CisKK3N0YXRpYyBpbnQgZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXJldHVybiAtRUlOVkFMOworfQorCitz dGF0aWMgc3RydWN0IHNnX3RhYmxlICpwcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKnByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVjdCBzZ190YWJsZSAqc2d0 KQoreworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCAqcHJpbWVfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQg cHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKK3sK K30KKworc3RhdGljIGludCBwcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGVuZHJtX2ZvcHMgPSB7CisJLm93bmVy ICAgICAgICAgID0gVEhJU19NT0RVTEUsCisJLm9wZW4gICAgICAgICAgID0gZHJtX29wZW4sCisJ LnJlbGVhc2UgICAgICAgID0gZHJtX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0gZHJtX2lv Y3RsLAorI2lmZGVmIENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsICAgPSBkcm1fY29tcGF0 X2lvY3RsLAorI2VuZGlmCisJLnBvbGwgICAgICAgICAgID0gZHJtX3BvbGwsCisJLnJlYWQgICAg ICAgICAgID0gZHJtX3JlYWQsCisJLmxsc2VlayAgICAgICAgID0gbm9fbGxzZWVrLAorCS5tbWFw ICAgICAgICAgICA9IGdlbV9tbWFwLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVy YXRpb25zX3N0cnVjdCB4ZW5fZHJtX3ZtX29wcyA9IHsKKwkub3BlbiAgICAgICAgICAgPSBkcm1f Z2VtX3ZtX29wZW4sCisJLmNsb3NlICAgICAgICAgID0gZHJtX2dlbV92bV9jbG9zZSwKK307CisK K3N0cnVjdCBkcm1fZHJpdmVyIHhlbl9kcm1fZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMg ICAgICAgICAgID0gRFJJVkVSX0dFTSB8IERSSVZFUl9NT0RFU0VUIHwKKwkJCQkgICAgIERSSVZF Ul9QUklNRSB8IERSSVZFUl9BVE9NSUMsCisJLmxhc3RjbG9zZSAgICAgICAgICAgICAgICAgPSBs YXN0Y2xvc2UsCisJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCAgPSBmcmVlX29iamVjdCwKKwku Z2VtX3ZtX29wcyAgICAgICAgICAgICAgICA9ICZ4ZW5fZHJtX3ZtX29wcywKKwkucHJpbWVfaGFu ZGxlX3RvX2ZkICAgICAgICA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAorCS5wcmltZV9m ZF90b19oYW5kbGUgICAgICAgID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUsCisJLmdlbV9w cmltZV9pbXBvcnQgICAgICAgICAgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1l X2V4cG9ydCAgICAgICAgICA9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJpbWVfZ2V0 X3NnX3RhYmxlICAgID0gcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlID0gcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVfdm1hcCAgICAgICAg ICAgID0gcHJpbWVfdm1hcCwKKwkuZ2VtX3ByaW1lX3Z1bm1hcCAgICAgICAgICA9IHByaW1lX3Z1 bm1hcCwKKwkuZ2VtX3ByaW1lX21tYXAgICAgICAgICAgICA9IHByaW1lX21tYXAsCisJLmR1bWJf Y3JlYXRlICAgICAgICAgICAgICAgPSBkdW1iX2NyZWF0ZSwKKwkuZm9wcyAgICAgICAgICAgICAg ICAgICAgICA9ICZ4ZW5kcm1fZm9wcywKKwkubmFtZSAgICAgICAgICAgICAgICAgICAgICA9ICJ4 ZW5kcm0tZHUiLAorCS5kZXNjICAgICAgICAgICAgICAgICAgICAgID0gIlhlbiBQViBEUk0gRGlz cGxheSBVbml0IiwKKwkuZGF0ZSAgICAgICAgICAgICAgICAgICAgICA9ICIyMDE2MTEwOSIsCisJ Lm1ham9yICAgICAgICAgICAgICAgICAgICAgPSAxLAorCS5taW5vciAgICAgICAgICAgICAgICAg ICAgID0gMCwKK307CisKK2ludCB4ZW5fZHJtX2Zyb250X2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgeGVuX2RybV9mcm9udF9vcHMgKmZyb250X29wcykK K3sKKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9jZmcgKmNmZyA9IGRldl9nZXRfcGxhdGRhdGEoJnBk ZXYtPmRldik7CisJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvOworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXY7CisJaW50IHJldDsKKworCURSTV9JTkZPKCJDcmVhdGluZyAl c1xuIiwgeGVuX2RybV9kcml2ZXIuZGVzYyk7CisKKwlkcm1faW5mbyA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKmRybV9pbmZvKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkcm1faW5m bykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkcm1faW5mby0+ZnJvbnRfb3BzID0gZnJvbnRfb3Bz OworCWRybV9pbmZvLT5mcm9udF9vcHMtPm9uX2ZyYW1lX2RvbmUgPSBvbl9mcmFtZV9kb25lOwor CWRybV9pbmZvLT5mcm9udF9pbmZvID0gY2ZnLT5mcm9udF9pbmZvOworCisJZGV2ID0gZHJtX2Rl dl9hbGxvYygmeGVuX2RybV9kcml2ZXIsICZwZGV2LT5kZXYpOworCWlmICghZGV2KQorCQlyZXR1 cm4gLUVOT01FTTsKKworCWRybV9pbmZvLT5kcm1fZGV2ID0gZGV2OworCisJZHJtX2luZm8tPmNm ZyA9IGNmZzsKKwlkZXYtPmRldl9wcml2YXRlID0gZHJtX2luZm87CisJcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgZHJtX2luZm8pOworCisJcmV0ID0gZHJtX3ZibGFua19pbml0KGRldiwgY2Zn LT5udW1fY29ubmVjdG9ycyk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBp bml0aWFsaXplIHZibGFuaywgcmV0ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwor CWRldi0+aXJxX2VuYWJsZWQgPSAxOworCisJcmV0ID0gZHJtX2Rldl9yZWdpc3RlcihkZXYsIDAp OworCWlmIChyZXQpCisJCWdvdG8gZmFpbF9yZWdpc3RlcjsKKworCURSTV9JTkZPKCJJbml0aWFs aXplZCAlcyAlZC4lZC4lZCAlcyBvbiBtaW5vciAlZFxuIiwKKwkJCXhlbl9kcm1fZHJpdmVyLm5h bWUsIHhlbl9kcm1fZHJpdmVyLm1ham9yLAorCQkJeGVuX2RybV9kcml2ZXIubWlub3IsIHhlbl9k cm1fZHJpdmVyLnBhdGNobGV2ZWwsCisJCQl4ZW5fZHJtX2RyaXZlci5kYXRlLCBkZXYtPnByaW1h cnktPmluZGV4KTsKKworCXJldHVybiAwOworCitmYWlsX3JlZ2lzdGVyOgorCWRybV9kZXZfdW5y ZWdpc3RlcihkZXYpOworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7CisJcmV0dXJuIHJl dDsKK30KKworaW50IHhlbl9kcm1fZnJvbnRfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQoreworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9 IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBk cm1faW5mby0+ZHJtX2RldjsKKworCWlmIChkZXYpIHsKKwkJZHJtX2Rldl91bnJlZ2lzdGVyKGRl dik7CisJCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRldik7CisJCWRybV9tb2RlX2NvbmZp Z19jbGVhbnVwKGRldik7CisJCWRybV9kZXZfdW5yZWYoZGV2KTsKKwl9CisJcmV0dXJuIDA7Cit9 CisKK2Jvb2wgeGVuX2RybV9mcm9udF9kcnZfaXNfdXNlZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQoreworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisKKwlp ZiAoIWRybV9pbmZvKQorCQlyZXR1cm4gZmFsc2U7CisKKwlkZXYgPSBkcm1faW5mby0+ZHJtX2Rl djsKKwlpZiAoIWRldikKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGSVhNRTogdGhlIGNv ZGUgYmVsb3cgbXVzdCBiZSBwcm90ZWN0ZWQgYnkgZHJtX2dsb2JhbF9tdXRleCwKKwkgKiBidXQg aXQgaXMgbm90IGFjY2Vzc2libGUgdG8gdXMuIEFueXdheXMgdGhlcmUgaXMgYSByYWNlIGNvbmRp dGlvbiwKKwkgKiBidXQgd2Ugd2lsbCByZS10cnkuCisJICovCisJcmV0dXJuIGRldi0+b3Blbl9j b3VudCAhPSAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zy b250X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWFhNDc2NTM1YzEzCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCkBAIC0w LDAgKzEsNjAgQEAKKy8qCisgKiAgWGVuIHBhcmEtdmlydHVhbCBEUk0gZGV2aWNlCisgKgorICog ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5j LgorICoKKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRy dXNoY2hlbmtvQGVwYW0uY29tPgorICovCisKKyNpZm5kZWYgX19YRU5fRFJNX0ZST05UX0RSVl9I XworI2RlZmluZSBfX1hFTl9EUk1fRlJPTlRfRFJWX0hfCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5o PgorCisjaW5jbHVkZSAieGVuX2RybV9mcm9udC5oIgorI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRf Y2ZnLmgiCisKK3N0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSB7CisJc3RydWN0IHhl bl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvOworCisJaW50IGluZGV4OworfTsKKworc3Ry dWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8geworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8g KmZyb250X2luZm87CisJc3RydWN0IHhlbl9kcm1fZnJvbnRfb3BzICpmcm9udF9vcHM7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRybV9kZXY7CisJc3RydWN0IHhlbl9kcm1fZnJvbnRfY2ZnICpjZmc7 Cit9OworCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHhlbl9kcm1fZnJvbnRfZmJfdG9fY29va2ll KAorCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKK3sKKwlyZXR1cm4gKHVpbnQ2NF90KWZi OworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHhlbl9kcm1fZnJvbnRfZGJ1Zl90b19jb29r aWUoCisJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKK3sKKwlyZXR1cm4gKHVpbnQ2 NF90KWdlbV9vYmo7Cit9CisKK2ludCB4ZW5fZHJtX2Zyb250X2Rydl9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgeGVuX2RybV9mcm9udF9vcHMgKmZyb250X29w cyk7CisKK2ludCB4ZW5fZHJtX2Zyb250X2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldik7CisKK2Jvb2wgeGVuX2RybV9mcm9udF9kcnZfaXNfdXNlZChzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KTsKKworI2VuZGlmIC8qIF9fWEVOX0RSTV9GUk9OVF9EUlZfSF8gKi8K KwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=