From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Condrea Subject: [PATCH 01/19] xen: Create a new file xen_pvdev.c Date: Sun, 10 Jul 2016 14:47:32 +0300 Message-ID: <1468151270-12984-2-git-send-email-emilcondrea__46249.4909101681$1468151402$gmane$org@gmail.com> References: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: wei.liu2@citrix.com, stefanb@linux.vnet.ibm.com, stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org, quan.xu@intel.com, dgdegra@tycho.nsa.gov, eblake@redhat.com, emilcondrea@gmail.com List-Id: xen-devel@lists.xenproject.org VGhlIHB1cnBvc2Ugb2YgdGhlIG5ldyBmaWxlIGlzIHRvIHN0b3JlIGdlbmVyaWMgZnVuY3Rpb25z IHNoYXJlZCBieSBmcm9udGVuZAphbmQgYmFja2VuZHMgc3VjaCBhcyB4ZW5zdG9yZSBvcGVyYXRp b25zLCB4ZW5kZXZzLgoKU2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEVtaWwgQ29uZHJlYSA8ZW1pbGNvbmRyZWFAZ21haWwuY29tPgotLS0K IGh3L3hlbi9NYWtlZmlsZS5vYmpzICAgICAgICAgfCAgIDIgKy0KIGh3L3hlbi94ZW5fYmFja2Vu ZC5jICAgICAgICAgfCAxMjUgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBo dy94ZW4veGVuX3B2ZGV2LmMgICAgICAgICAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvaHcveGVuL3hlbl9iYWNrZW5kLmggfCAgNjMg Ky0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaCAgIHwgIDcxICsr KysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwg MTg3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3hlbi94ZW5fcHZkZXYuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaHcveGVuL3hlbl9wdmRldi5oCgpkaWZmIC0tZ2l0 IGEvaHcveGVuL01ha2VmaWxlLm9ianMgYi9ody94ZW4vTWFrZWZpbGUub2JqcwppbmRleCBkMzY3 MDk0Li41OTFjZGMyIDEwMDY0NAotLS0gYS9ody94ZW4vTWFrZWZpbGUub2JqcworKysgYi9ody94 ZW4vTWFrZWZpbGUub2JqcwpAQCAtMSw1ICsxLDUgQEAKICMgeGVuIGJhY2tlbmQgZHJpdmVyIHN1 cHBvcnQKLWNvbW1vbi1vYmotJChDT05GSUdfWEVOX0JBQ0tFTkQpICs9IHhlbl9iYWNrZW5kLm8g eGVuX2RldmNvbmZpZy5vCitjb21tb24tb2JqLSQoQ09ORklHX1hFTl9CQUNLRU5EKSArPSB4ZW5f YmFja2VuZC5vIHhlbl9kZXZjb25maWcubyB4ZW5fcHZkZXYubwogCiBvYmotJChDT05GSUdfWEVO X1BDSV9QQVNTVEhST1VHSCkgKz0geGVuLWhvc3QtcGNpLWRldmljZS5vCiBvYmotJChDT05GSUdf WEVOX1BDSV9QQVNTVEhST1VHSCkgKz0geGVuX3B0Lm8geGVuX3B0X2NvbmZpZ19pbml0Lm8geGVu X3B0X2dyYXBoaWNzLm8geGVuX3B0X21zaS5vCmRpZmYgLS1naXQgYS9ody94ZW4veGVuX2JhY2tl bmQuYyBiL2h3L3hlbi94ZW5fYmFja2VuZC5jCmluZGV4IGJhYjc5YjEuLmEyNTFhNGEgMTAwNjQ0 Ci0tLSBhL2h3L3hlbi94ZW5fYmFja2VuZC5jCisrKyBiL2h3L3hlbi94ZW5fYmFja2VuZC5jCkBA IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAic3lzZW11L2NoYXIuaCIKICNpbmNsdWRlICJxZW11 L2xvZy5oIgogI2luY2x1ZGUgImh3L3hlbi94ZW5fYmFja2VuZC5oIgorI2luY2x1ZGUgImh3L3hl bi94ZW5fcHZkZXYuaCIKIAogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCkBAIC01Niw4 ICs1Nyw2IEBAIHN0YXRpYyBRVEFJTFFfSEVBRCh4c19kaXJzX2hlYWQsIHhzX2RpcnMpIHhzX2Ns ZWFudXAgPQogc3RhdGljIFFUQUlMUV9IRUFEKFhlbkRldmljZUhlYWQsIFhlbkRldmljZSkgeGVu ZGV2cyA9IFFUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKHhlbmRldnMpOwogc3RhdGljIGludCBkZWJ1 ZyA9IDA7CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8KLQogc3RhdGljIHZvaWQgeGVuc3RvcmVfY2xlYW51cF9kaXIo Y2hhciAqZGlyKQogewogICAgIHN0cnVjdCB4c19kaXJzICpkOwpAQCAtNzYsMzQgKzc1LDYgQEAg dm9pZCB4ZW5fY29uZmlnX2NsZWFudXAodm9pZCkKICAgICB9CiB9CiAKLWludCB4ZW5zdG9yZV93 cml0ZV9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgY29uc3QgY2hhciAq dmFsKQotewotICAgIGNoYXIgYWJzcGF0aFtYRU5fQlVGU0laRV07Ci0KLSAgICBzbnByaW50Zihh YnNwYXRoLCBzaXplb2YoYWJzcGF0aCksICIlcy8lcyIsIGJhc2UsIG5vZGUpOwotICAgIGlmICgh eHNfd3JpdGUoeGVuc3RvcmUsIDAsIGFic3BhdGgsIHZhbCwgc3RybGVuKHZhbCkpKSB7Ci0gICAg ICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWNoYXIgKnhlbnN0b3Jl X3JlYWRfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUpCi17Ci0gICAgY2hh ciBhYnNwYXRoW1hFTl9CVUZTSVpFXTsKLSAgICB1bnNpZ25lZCBpbnQgbGVuOwotICAgIGNoYXIg KnN0ciwgKnJldCA9IE5VTEw7Ci0KLSAgICBzbnByaW50ZihhYnNwYXRoLCBzaXplb2YoYWJzcGF0 aCksICIlcy8lcyIsIGJhc2UsIG5vZGUpOwotICAgIHN0ciA9IHhzX3JlYWQoeGVuc3RvcmUsIDAs IGFic3BhdGgsICZsZW4pOwotICAgIGlmIChzdHIgIT0gTlVMTCkgewotICAgICAgICAvKiBtb3Zl IHRvIHFlbXUtYWxsb2NhdGVkIG1lbW9yeSB0byBtYWtlIHN1cmUKLSAgICAgICAgICogY2FsbGVy cyBjYW4gc2F2ZWx5IGdfZnJlZSgpIHN0dWZmLiAqLwotICAgICAgICByZXQgPSBnX3N0cmR1cChz dHIpOwotICAgICAgICBmcmVlKHN0cik7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KIGlu dCB4ZW5zdG9yZV9ta2RpcihjaGFyICpwYXRoLCBpbnQgcCkKIHsKICAgICBzdHJ1Y3QgeHNfcGVy bWlzc2lvbnMgcGVybXNbMl0gPSB7CkBAIC0xMjgsNDggKzk5LDYgQEAgaW50IHhlbnN0b3JlX21r ZGlyKGNoYXIgKnBhdGgsIGludCBwKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgeGVuc3RvcmVf d3JpdGVfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludCBpdmFsKQot ewotICAgIGNoYXIgdmFsWzEyXTsKLQotICAgIHNucHJpbnRmKHZhbCwgc2l6ZW9mKHZhbCksICIl ZCIsIGl2YWwpOwotICAgIHJldHVybiB4ZW5zdG9yZV93cml0ZV9zdHIoYmFzZSwgbm9kZSwgdmFs KTsKLX0KLQotaW50IHhlbnN0b3JlX3dyaXRlX2ludDY0KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0 IGNoYXIgKm5vZGUsIGludDY0X3QgaXZhbCkKLXsKLSAgICBjaGFyIHZhbFsyMV07Ci0KLSAgICBz bnByaW50Zih2YWwsIHNpemVvZih2YWwpLCAiJSJQUklkNjQsIGl2YWwpOwotICAgIHJldHVybiB4 ZW5zdG9yZV93cml0ZV9zdHIoYmFzZSwgbm9kZSwgdmFsKTsKLX0KLQotaW50IHhlbnN0b3JlX3Jl YWRfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludCAqaXZhbCkKLXsK LSAgICBjaGFyICp2YWw7Ci0gICAgaW50IHJjID0gLTE7Ci0KLSAgICB2YWwgPSB4ZW5zdG9yZV9y ZWFkX3N0cihiYXNlLCBub2RlKTsKLSAgICBpZiAodmFsICYmIDEgPT0gc3NjYW5mKHZhbCwgIiVk IiwgaXZhbCkpIHsKLSAgICAgICAgcmMgPSAwOwotICAgIH0KLSAgICBnX2ZyZWUodmFsKTsKLSAg ICByZXR1cm4gcmM7Ci19Ci0KLWludCB4ZW5zdG9yZV9yZWFkX3VpbnQ2NChjb25zdCBjaGFyICpi YXNlLCBjb25zdCBjaGFyICpub2RlLCB1aW50NjRfdCAqdXZhbCkKLXsKLSAgICBjaGFyICp2YWw7 Ci0gICAgaW50IHJjID0gLTE7Ci0KLSAgICB2YWwgPSB4ZW5zdG9yZV9yZWFkX3N0cihiYXNlLCBu b2RlKTsKLSAgICBpZiAodmFsICYmIDEgPT0gc3NjYW5mKHZhbCwgIiUiU0NOdTY0LCB1dmFsKSkg ewotICAgICAgICByYyA9IDA7Ci0gICAgfQotICAgIGdfZnJlZSh2YWwpOwotICAgIHJldHVybiBy YzsKLX0KLQogaW50IHhlbnN0b3JlX3dyaXRlX2JlX3N0cihzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5k ZXYsIGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnZhbCkKIHsKICAgICByZXR1cm4geGVu c3RvcmVfd3JpdGVfc3RyKHhlbmRldi0+YmUsIG5vZGUsIHZhbCk7CkBAIC0yMTIsMjAgKzE0MSw2 IEBAIGludCB4ZW5zdG9yZV9yZWFkX2ZlX3VpbnQ2NChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYs IGNvbnN0IGNoYXIgKm5vZGUsIHVpbnQ2NF90CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotY29uc3QgY2hhciAq eGVuYnVzX3N0cnN0YXRlKGVudW0geGVuYnVzX3N0YXRlIHN0YXRlKQotewotICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBuYW1lW10gPSB7Ci0gICAgICAgIFsgWGVuYnVzU3RhdGVVbmtub3du ICAgICAgXSA9ICJVbmtub3duIiwKLSAgICAgICAgWyBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBd ID0gIkluaXRpYWxpc2luZyIsCi0gICAgICAgIFsgWGVuYnVzU3RhdGVJbml0V2FpdCAgICAgXSA9 ICJJbml0V2FpdCIsCi0gICAgICAgIFsgWGVuYnVzU3RhdGVJbml0aWFsaXNlZCAgXSA9ICJJbml0 aWFsaXNlZCIsCi0gICAgICAgIFsgWGVuYnVzU3RhdGVDb25uZWN0ZWQgICAgXSA9ICJDb25uZWN0 ZWQiLAotICAgICAgICBbIFhlbmJ1c1N0YXRlQ2xvc2luZyAgICAgIF0gPSAiQ2xvc2luZyIsCi0g ICAgICAgIFsgWGVuYnVzU3RhdGVDbG9zZWQgICAgICAgXSA9ICJDbG9zZWQiLAotICAgIH07Ci0g ICAgcmV0dXJuIChzdGF0ZSA8IEFSUkFZX1NJWkUobmFtZSkpID8gbmFtZVtzdGF0ZV0gOiAiSU5W QUxJRCI7Ci19Ci0KIGludCB4ZW5fYmVfc2V0X3N0YXRlKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl diwgZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCiB7CiAgICAgaW50IHJjOwpAQCAtODMzLDQ0ICs3 NDgsNiBAQCBpbnQgeGVuX2JlX3NlbmRfbm90aWZ5KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikK ICAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeSh4ZW5kZXYtPmV2dGNobmRldiwgeGVuZGV2LT5s b2NhbF9wb3J0KTsKIH0KIAotLyoKLSAqIG1zZ19sZXZlbDoKLSAqICAwID09IGVycm9ycyAoc3Rk ZXJyICsgbG9nZmlsZSkuCi0gKiAgMSA9PSBpbmZvcm1hdGl2ZSBkZWJ1ZyBtZXNzYWdlcyAobG9n ZmlsZSBvbmx5KS4KLSAqICAyID09IG5vaXN5IGRlYnVnIG1lc3NhZ2VzIChsb2dmaWxlIG9ubHkp LgotICogIDMgPT0gd2lsbCBmbG9vZCB5b3VyIGxvZyAobG9nZmlsZSBvbmx5KS4KLSAqLwotdm9p ZCB4ZW5fYmVfcHJpbnRmKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgaW50IG1zZ19sZXZlbCwg Y29uc3QgY2hhciAqZm10LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotCi0gICAgaWYgKHhl bmRldikgewotICAgICAgICBpZiAobXNnX2xldmVsID4geGVuZGV2LT5kZWJ1ZykgewotICAgICAg ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHFlbXVfbG9nKCJ4ZW4gYmU6ICVzOiAi LCB4ZW5kZXYtPm5hbWUpOwotICAgICAgICBpZiAobXNnX2xldmVsID09IDApIHsKLSAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAieGVuIGJlOiAlczogIiwgeGVuZGV2LT5uYW1lKTsKLSAgICAg ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtc2dfbGV2ZWwgPiBkZWJ1ZykgewotICAg ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHFlbXVfbG9nKCJ4ZW4gYmUgY29y ZTogIik7Ci0gICAgICAgIGlmIChtc2dfbGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJ4ZW4gYmUgY29yZTogIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdmFfc3Rh cnQoYXJncywgZm10KTsKLSAgICBxZW11X2xvZ192cHJpbnRmKGZtdCwgYXJncyk7Ci0gICAgdmFf ZW5kKGFyZ3MpOwotICAgIGlmIChtc2dfbGV2ZWwgPT0gMCkgewotICAgICAgICB2YV9zdGFydChh cmdzLCBmbXQpOwotICAgICAgICB2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXJncyk7Ci0gICAgICAg IHZhX2VuZChhcmdzKTsKLSAgICB9Ci0gICAgcWVtdV9sb2dfZmx1c2goKTsKLX0KIAogc3RhdGlj IGludCB4ZW5fc3lzZGV2X2luaXQoU3lzQnVzRGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9o dy94ZW4veGVuX3B2ZGV2LmMgYi9ody94ZW4veGVuX3B2ZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYTQ0NDg1NQotLS0gL2Rldi9udWxsCisrKyBiL2h3L3hlbi94ZW5f cHZkZXYuYwpAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIFhlbiBwYXJhLXZpcnR1YWxpemF0aW9u IGRldmljZQorICoKKyAqICAoYykgMjAwOCBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNv bT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4K KyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorCisjaW5jbHVkZSAiaHcveGVuL3hlbl9i YWNrZW5kLmgiCisjaW5jbHVkZSAiaHcveGVuL3hlbl9wdmRldi5oIgorCitzdGF0aWMgaW50IGRl YnVnID0gMDsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IHhlbnN0b3JlX3dyaXRlX3N0cihjb25zdCBjaGFy ICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBjb25zdCBjaGFyICp2YWwpCit7CisgICAgY2hhciBh YnNwYXRoW1hFTl9CVUZTSVpFXTsKKworICAgIHNucHJpbnRmKGFic3BhdGgsIHNpemVvZihhYnNw YXRoKSwgIiVzLyVzIiwgYmFzZSwgbm9kZSk7CisgICAgaWYgKCF4c193cml0ZSh4ZW5zdG9yZSwg MCwgYWJzcGF0aCwgdmFsLCBzdHJsZW4odmFsKSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAg IH0KKyAgICByZXR1cm4gMDsKK30KKworY2hhciAqeGVuc3RvcmVfcmVhZF9zdHIoY29uc3QgY2hh ciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSkKK3sKKyAgICBjaGFyIGFic3BhdGhbWEVOX0JVRlNJ WkVdOworICAgIHVuc2lnbmVkIGludCBsZW47CisgICAgY2hhciAqc3RyLCAqcmV0ID0gTlVMTDsK KworICAgIHNucHJpbnRmKGFic3BhdGgsIHNpemVvZihhYnNwYXRoKSwgIiVzLyVzIiwgYmFzZSwg bm9kZSk7CisgICAgc3RyID0geHNfcmVhZCh4ZW5zdG9yZSwgMCwgYWJzcGF0aCwgJmxlbik7Cisg ICAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgICAgIC8qIG1vdmUgdG8gcWVtdS1hbGxvY2F0ZWQg bWVtb3J5IHRvIG1ha2Ugc3VyZQorICAgICAgICAgKiBjYWxsZXJzIGNhbiBzYXZlbHkgZ19mcmVl KCkgc3R1ZmYuICovCisgICAgICAgIHJldCA9IGdfc3RyZHVwKHN0cik7CisgICAgICAgIGZyZWUo c3RyKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IHhlbnN0b3JlX3dyaXRlX2lu dChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgaXZhbCkKK3sKKyAgICBj aGFyIHZhbFsxMl07CisKKyAgICBzbnByaW50Zih2YWwsIHNpemVvZih2YWwpLCAiJWQiLCBpdmFs KTsKKyAgICByZXR1cm4geGVuc3RvcmVfd3JpdGVfc3RyKGJhc2UsIG5vZGUsIHZhbCk7Cit9CisK K2ludCB4ZW5zdG9yZV93cml0ZV9pbnQ2NChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpu b2RlLCBpbnQ2NF90IGl2YWwpCit7CisgICAgY2hhciB2YWxbMjFdOworCisgICAgc25wcmludGYo dmFsLCBzaXplb2YodmFsKSwgIiUiUFJJZDY0LCBpdmFsKTsKKyAgICByZXR1cm4geGVuc3RvcmVf d3JpdGVfc3RyKGJhc2UsIG5vZGUsIHZhbCk7Cit9CisKK2ludCB4ZW5zdG9yZV9yZWFkX2ludChj b25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2YWwpCit7CisgICAgY2hh ciAqdmFsOworICAgIGludCByYyA9IC0xOworCisgICAgdmFsID0geGVuc3RvcmVfcmVhZF9zdHIo YmFzZSwgbm9kZSk7CisgICAgaWYgKHZhbCAmJiAxID09IHNzY2FuZih2YWwsICIlZCIsIGl2YWwp KSB7CisgICAgICAgIHJjID0gMDsKKyAgICB9CisgICAgZ19mcmVlKHZhbCk7CisgICAgcmV0dXJu IHJjOworfQorCitpbnQgeGVuc3RvcmVfcmVhZF91aW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29u c3QgY2hhciAqbm9kZSwgdWludDY0X3QgKnV2YWwpCit7CisgICAgY2hhciAqdmFsOworICAgIGlu dCByYyA9IC0xOworCisgICAgdmFsID0geGVuc3RvcmVfcmVhZF9zdHIoYmFzZSwgbm9kZSk7Cisg ICAgaWYgKHZhbCAmJiAxID09IHNzY2FuZih2YWwsICIlIlNDTnU2NCwgdXZhbCkpIHsKKyAgICAg ICAgcmMgPSAwOworICAgIH0KKyAgICBnX2ZyZWUodmFsKTsKKyAgICByZXR1cm4gcmM7Cit9CisK K2NvbnN0IGNoYXIgKnhlbmJ1c19zdHJzdGF0ZShlbnVtIHhlbmJ1c19zdGF0ZSBzdGF0ZSkKK3sK KyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZVtdID0geworICAgICAgICBbIFhlbmJ1 c1N0YXRlVW5rbm93biAgICAgIF0gPSAiVW5rbm93biIsCisgICAgICAgIFsgWGVuYnVzU3RhdGVJ bml0aWFsaXNpbmcgXSA9ICJJbml0aWFsaXNpbmciLAorICAgICAgICBbIFhlbmJ1c1N0YXRlSW5p dFdhaXQgICAgIF0gPSAiSW5pdFdhaXQiLAorICAgICAgICBbIFhlbmJ1c1N0YXRlSW5pdGlhbGlz ZWQgIF0gPSAiSW5pdGlhbGlzZWQiLAorICAgICAgICBbIFhlbmJ1c1N0YXRlQ29ubmVjdGVkICAg IF0gPSAiQ29ubmVjdGVkIiwKKyAgICAgICAgWyBYZW5idXNTdGF0ZUNsb3NpbmcgICAgICBdID0g IkNsb3NpbmciLAorICAgICAgICBbIFhlbmJ1c1N0YXRlQ2xvc2VkICAgICAgIF0gPSAiQ2xvc2Vk IiwKKyAgICB9OworICAgIHJldHVybiAoc3RhdGUgPCBBUlJBWV9TSVpFKG5hbWUpKSA/IG5hbWVb c3RhdGVdIDogIklOVkFMSUQiOworfQorCisvKgorICogbXNnX2xldmVsOgorICogIDAgPT0gZXJy b3JzIChzdGRlcnIgKyBsb2dmaWxlKS4KKyAqICAxID09IGluZm9ybWF0aXZlIGRlYnVnIG1lc3Nh Z2VzIChsb2dmaWxlIG9ubHkpLgorICogIDIgPT0gbm9pc3kgZGVidWcgbWVzc2FnZXMgKGxvZ2Zp bGUgb25seSkuCisgKiAgMyA9PSB3aWxsIGZsb29kIHlvdXIgbG9nIChsb2dmaWxlIG9ubHkpLgor ICovCit2b2lkIHhlbl9iZV9wcmludGYoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBpbnQgbXNn X2xldmVsLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisKKyAg ICBpZiAoeGVuZGV2KSB7CisgICAgICAgIGlmIChtc2dfbGV2ZWwgPiB4ZW5kZXYtPmRlYnVnKSB7 CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcWVtdV9sb2coInhlbiBi ZTogJXM6ICIsIHhlbmRldi0+bmFtZSk7CisgICAgICAgIGlmIChtc2dfbGV2ZWwgPT0gMCkgewor ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ4ZW4gYmU6ICVzOiAiLCB4ZW5kZXYtPm5hbWUp OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA+IGRlYnVn KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcWVtdV9sb2coInhl biBiZSBjb3JlOiAiKTsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA9PSAwKSB7CisgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgInhlbiBiZSBjb3JlOiAiKTsKKyAgICAgICAgfQorICAgIH0KKyAg ICB2YV9zdGFydChhcmdzLCBmbXQpOworICAgIHFlbXVfbG9nX3ZwcmludGYoZm10LCBhcmdzKTsK KyAgICB2YV9lbmQoYXJncyk7CisgICAgaWYgKG1zZ19sZXZlbCA9PSAwKSB7CisgICAgICAgIHZh X3N0YXJ0KGFyZ3MsIGZtdCk7CisgICAgICAgIHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTsK KyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgIH0KKyAgICBxZW11X2xvZ19mbHVzaCgpOworfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2JhY2tlbmQuaCBiL2luY2x1ZGUvaHcveGVu L3hlbl9iYWNrZW5kLmgKaW5kZXggNmUxOGE0Ni4uMGYwMDllMyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9ody94ZW4veGVuX2JhY2tlbmQuaAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fYmFja2VuZC5o CkBAIC0yLDYwICsyLDEwIEBACiAjZGVmaW5lIFFFTVVfSFdfWEVOX0JBQ0tFTkRfSCAxCiAKICNp bmNsdWRlICJody94ZW4veGVuX2NvbW1vbi5oIgorI2luY2x1ZGUgImh3L3hlbi94ZW5fcHZkZXYu aCIKICNpbmNsdWRlICJzeXNlbXUvc3lzZW11LmgiCiAjaW5jbHVkZSAibmV0L25ldC5oIgogCi0v KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovCi0KLSNkZWZpbmUgWEVOX0JVRlNJWkUgMTAyNAotCi1zdHJ1Y3QgWGVuRGV2aWNl OwotCi0vKiBkcml2ZXIgdXNlcyBncmFudCB0YWJsZXMgIC0+ICBvcGVuIGdudGRldiBkZXZpY2Ug KHhlbmRldi0+Z250dGFiZGV2KSAqLwotI2RlZmluZSBERVZPUFNfRkxBR19ORUVEX0dOVERFViAg IDEKLS8qIGRvbid0IGV4cGVjdCBmcm9udGVuZCBkb2luZyBjb3JyZWN0IHN0YXRlIHRyYW5zaXRp b25zIChha2EgY29uc29sZSBxdWlyaykgKi8KLSNkZWZpbmUgREVWT1BTX0ZMQUdfSUdOT1JFX1NU QVRFICAyCi0KLXN0cnVjdCBYZW5EZXZPcHMgewotICAgIHNpemVfdCAgICBzaXplOwotICAgIHVp bnQzMl90ICBmbGFnczsKLSAgICB2b2lkICAgICAgKCphbGxvYykoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2KTsKLSAgICBpbnQgICAgICAgKCppbml0KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYp OwotICAgIGludCAgICAgICAoKmluaXRpYWxpc2UpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7 Ci0gICAgdm9pZCAgICAgICgqY29ubmVjdGVkKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwot ICAgIHZvaWQgICAgICAoKmV2ZW50KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotICAgIHZv aWQgICAgICAoKmRpc2Nvbm5lY3QpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7Ci0gICAgaW50 ICAgICAgICgqZnJlZSkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKLSAgICB2b2lkICAgICAg KCpiYWNrZW5kX2NoYW5nZWQpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAq bm9kZSk7Ci0gICAgdm9pZCAgICAgICgqZnJvbnRlbmRfY2hhbmdlZCkoc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlKTsKLSAgICBpbnQgICAgICAgKCpiYWNrZW5kX3Jl Z2lzdGVyKSh2b2lkKTsKLX07Ci0KLXN0cnVjdCBYZW5EZXZpY2UgewotICAgIGNvbnN0IGNoYXIg ICAgICAgICAqdHlwZTsKLSAgICBpbnQgICAgICAgICAgICAgICAgZG9tOwotICAgIGludCAgICAg ICAgICAgICAgICBkZXY7Ci0gICAgY2hhciAgICAgICAgICAgICAgIG5hbWVbNjRdOwotICAgIGlu dCAgICAgICAgICAgICAgICBkZWJ1ZzsKLQotICAgIGVudW0geGVuYnVzX3N0YXRlICBiZV9zdGF0 ZTsKLSAgICBlbnVtIHhlbmJ1c19zdGF0ZSAgZmVfc3RhdGU7Ci0gICAgaW50ICAgICAgICAgICAg ICAgIG9ubGluZTsKLSAgICBjaGFyICAgICAgICAgICAgICAgYmVbWEVOX0JVRlNJWkVdOwotICAg IGNoYXIgICAgICAgICAgICAgICAqZmU7Ci0gICAgY2hhciAgICAgICAgICAgICAgICpwcm90b2Nv bDsKLSAgICBpbnQgICAgICAgICAgICAgICAgcmVtb3RlX3BvcnQ7Ci0gICAgaW50ICAgICAgICAg ICAgICAgIGxvY2FsX3BvcnQ7Ci0KLSAgICB4ZW5ldnRjaG5faGFuZGxlICAgKmV2dGNobmRldjsK LSAgICB4ZW5nbnR0YWJfaGFuZGxlICAgKmdudHRhYmRldjsKLQotICAgIHN0cnVjdCBYZW5EZXZP cHMgICAqb3BzOwotICAgIFFUQUlMUV9FTlRSWShYZW5EZXZpY2UpIG5leHQ7Ci19OwotCi0vKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCi0KIC8qIHZhcmlhYmxlcyAqLwogZXh0ZXJuIHhjX2ludGVyZmFjZSAqeGVuX3hjOwog ZXh0ZXJuIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICp4ZW5fZm1lbTsKQEAgLTYzLDE0ICsxMyw3 IEBAIGV4dGVybiBzdHJ1Y3QgeHNfaGFuZGxlICp4ZW5zdG9yZTsKIGV4dGVybiBjb25zdCBjaGFy ICp4ZW5fcHJvdG9jb2w7CiBleHRlcm4gRGV2aWNlU3RhdGUgKnhlbl9zeXNkZXY7CiAKLS8qIHhl bnN0b3JlIGhlbHBlciBmdW5jdGlvbnMgKi8KIGludCB4ZW5zdG9yZV9ta2RpcihjaGFyICpwYXRo LCBpbnQgcCk7Ci1pbnQgeGVuc3RvcmVfd3JpdGVfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0 IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnZhbCk7Ci1pbnQgeGVuc3RvcmVfd3JpdGVfaW50KGNv bnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludCBpdmFsKTsKLWludCB4ZW5zdG9y ZV93cml0ZV9pbnQ2NChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQ2NF90 IGl2YWwpOwotY2hhciAqeGVuc3RvcmVfcmVhZF9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3Qg Y2hhciAqbm9kZSk7Ci1pbnQgeGVuc3RvcmVfcmVhZF9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29u c3QgY2hhciAqbm9kZSwgaW50ICppdmFsKTsKLQogaW50IHhlbnN0b3JlX3dyaXRlX2JlX3N0cihz dHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnZh bCk7CiBpbnQgeGVuc3RvcmVfd3JpdGVfYmVfaW50KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwg Y29uc3QgY2hhciAqbm9kZSwgaW50IGl2YWwpOwogaW50IHhlbnN0b3JlX3dyaXRlX2JlX2ludDY0 KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSwgaW50NjRfdCBpdmFs KTsKQEAgLTc4LDEwICsyMSw4IEBAIGNoYXIgKnhlbnN0b3JlX3JlYWRfYmVfc3RyKHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSk7CiBpbnQgeGVuc3RvcmVfcmVhZF9i ZV9pbnQoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2 YWwpOwogY2hhciAqeGVuc3RvcmVfcmVhZF9mZV9zdHIoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2 LCBjb25zdCBjaGFyICpub2RlKTsKIGludCB4ZW5zdG9yZV9yZWFkX2ZlX2ludChzdHJ1Y3QgWGVu RGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUsIGludCAqaXZhbCk7Ci1pbnQgeGVuc3Rv cmVfcmVhZF91aW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgdWludDY0 X3QgKnV2YWwpOwogaW50IHhlbnN0b3JlX3JlYWRfZmVfdWludDY0KHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSwgdWludDY0X3QgKnV2YWwpOwogCi1jb25zdCBjaGFy ICp4ZW5idXNfc3Ryc3RhdGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpOwogc3RydWN0IFhlbkRl dmljZSAqeGVuX2JlX2ZpbmRfeGVuZGV2KGNvbnN0IGNoYXIgKnR5cGUsIGludCBkb20sIGludCBk ZXYpOwogdm9pZCB4ZW5fYmVfY2hlY2tfc3RhdGUoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsK IApAQCAtOTIsOCArMzMsNiBAQCBpbnQgeGVuX2JlX3NldF9zdGF0ZShzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYsIGVudW0geGVuYnVzX3N0YXRlIHN0YXRlKTsKIGludCB4ZW5fYmVfYmluZF9ldnRj aG4oc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKIHZvaWQgeGVuX2JlX3VuYmluZF9ldnRjaG4o c3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKIGludCB4ZW5fYmVfc2VuZF9ub3RpZnkoc3RydWN0 IFhlbkRldmljZSAqeGVuZGV2KTsKLXZvaWQgeGVuX2JlX3ByaW50ZihzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYsIGludCBtc2dfbGV2ZWwsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotICAgIEdDQ19G TVRfQVRUUigzLCA0KTsKIAogLyogYWN0dWFsIGJhY2tlbmQgZHJpdmVycyAqLwogZXh0ZXJuIHN0 cnVjdCBYZW5EZXZPcHMgeGVuX2NvbnNvbGVfb3BzOyAgICAgIC8qIHhlbl9jb25zb2xlLmMgICAg ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaCBiL2luY2x1ZGUvaHcv eGVuL3hlbl9wdmRldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MGJm YWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaApAQCAtMCww ICsxLDcxIEBACisjaWZuZGVmIFFFTVVfSFdfWEVOX1BWREVWX0gKKyNkZWZpbmUgUUVNVV9IV19Y RU5fUFZERVZfSCAxCisKKyNpbmNsdWRlICJody94ZW4veGVuX2NvbW1vbi5oIgorI2luY2x1ZGUg PGludHR5cGVzLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBYRU5fQlVGU0laRSAxMDI0CisK K3N0cnVjdCBYZW5EZXZpY2U7CisKKy8qIGRyaXZlciB1c2VzIGdyYW50IHRhYmxlcyAgLT4gIG9w ZW4gZ250ZGV2IGRldmljZSAoeGVuZGV2LT5nbnR0YWJkZXYpICovCisjZGVmaW5lIERFVk9QU19G TEFHX05FRURfR05UREVWICAgMQorLyogZG9uJ3QgZXhwZWN0IGZyb250ZW5kIGRvaW5nIGNvcnJl Y3Qgc3RhdGUgdHJhbnNpdGlvbnMgKGFrYSBjb25zb2xlIHF1aXJrKSAqLworI2RlZmluZSBERVZP UFNfRkxBR19JR05PUkVfU1RBVEUgIDIKKworc3RydWN0IFhlbkRldk9wcyB7CisgICAgc2l6ZV90 ICAgIHNpemU7CisgICAgdWludDMyX3QgIGZsYWdzOworICAgIHZvaWQgICAgICAoKmFsbG9jKShz dHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOworICAgIGludCAgICAgICAoKmluaXQpKHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldik7CisgICAgaW50ICAgICAgICgqaW5pdGlhbGlzZSkoc3RydWN0IFhl bkRldmljZSAqeGVuZGV2KTsKKyAgICB2b2lkICAgICAgKCpjb25uZWN0ZWQpKHN0cnVjdCBYZW5E ZXZpY2UgKnhlbmRldik7CisgICAgdm9pZCAgICAgICgqZXZlbnQpKHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldik7CisgICAgdm9pZCAgICAgICgqZGlzY29ubmVjdCkoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2KTsKKyAgICBpbnQgICAgICAgKCpmcmVlKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYp OworICAgIHZvaWQgICAgICAoKmJhY2tlbmRfY2hhbmdlZCkoc3RydWN0IFhlbkRldmljZSAqeGVu ZGV2LCBjb25zdCBjaGFyICpub2RlKTsKKyAgICB2b2lkICAgICAgKCpmcm9udGVuZF9jaGFuZ2Vk KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUpOworICAgIGludCAg ICAgICAoKmJhY2tlbmRfcmVnaXN0ZXIpKHZvaWQpOworfTsKKworc3RydWN0IFhlbkRldmljZSB7 CisgICAgY29uc3QgY2hhciAgICAgICAgICp0eXBlOworICAgIGludCAgICAgICAgICAgICAgICBk b207CisgICAgaW50ICAgICAgICAgICAgICAgIGRldjsKKyAgICBjaGFyICAgICAgICAgICAgICAg bmFtZVs2NF07CisgICAgaW50ICAgICAgICAgICAgICAgIGRlYnVnOworCisgICAgZW51bSB4ZW5i dXNfc3RhdGUgIGJlX3N0YXRlOworICAgIGVudW0geGVuYnVzX3N0YXRlICBmZV9zdGF0ZTsKKyAg ICBpbnQgICAgICAgICAgICAgICAgb25saW5lOworICAgIGNoYXIgICAgICAgICAgICAgICBiZVtY RU5fQlVGU0laRV07CisgICAgY2hhciAgICAgICAgICAgICAgICpmZTsKKyAgICBjaGFyICAgICAg ICAgICAgICAgKnByb3RvY29sOworICAgIGludCAgICAgICAgICAgICAgICByZW1vdGVfcG9ydDsK KyAgICBpbnQgICAgICAgICAgICAgICAgbG9jYWxfcG9ydDsKKworICAgIHhlbmV2dGNobl9oYW5k bGUgICAqZXZ0Y2huZGV2OworICAgIHhlbmdudHRhYl9oYW5kbGUgICAqZ250dGFiZGV2OworCisg ICAgc3RydWN0IFhlbkRldk9wcyAgICpvcHM7CisgICAgUVRBSUxRX0VOVFJZKFhlbkRldmljZSkg bmV4dDsKK307CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogeGVuc3RvcmUgaGVscGVyIGZ1bmN0aW9ucyAq LworaW50IHhlbnN0b3JlX3dyaXRlX3N0cihjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpu b2RlLCBjb25zdCBjaGFyICp2YWwpOworaW50IHhlbnN0b3JlX3dyaXRlX2ludChjb25zdCBjaGFy ICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgaXZhbCk7CitpbnQgeGVuc3RvcmVfd3JpdGVf aW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgaW50NjRfdCBpdmFsKTsK K2NoYXIgKnhlbnN0b3JlX3JlYWRfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5v ZGUpOworaW50IHhlbnN0b3JlX3JlYWRfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIg Km5vZGUsIGludCAqaXZhbCk7CitpbnQgeGVuc3RvcmVfcmVhZF91aW50NjQoY29uc3QgY2hhciAq YmFzZSwgY29uc3QgY2hhciAqbm9kZSwgdWludDY0X3QgKnV2YWwpOworCitjb25zdCBjaGFyICp4 ZW5idXNfc3Ryc3RhdGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpOworCit2b2lkIHhlbl9iZV9w cmludGYoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBpbnQgbXNnX2xldmVsLCBjb25zdCBjaGFy ICpmbXQsIC4uLikKKyAgICBHQ0NfRk1UX0FUVFIoMywgNCk7CisKKyNlbmRpZiAvKiBRRU1VX0hX X1hFTl9QVkRFVl9IICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=