From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Condrea Subject: [PATCH 03/15] xen: Create a new file xen_pvdev.c Date: Tue, 4 Oct 2016 09:43:32 +0300 Message-ID: <1475563424-6604-4-git-send-email-emilcondrea@gmail.com> References: <1475563424-6604-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: <1475563424-6604-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: xuquan8@huawei.com, sstabellini@kernel.org, wei.liu2@citrix.com, stefanb@linux.vnet.ibm.com, xen-devel@lists.xen.org, Quan Xu , anthony.perard@citrix.com, dgdegra@tycho.nsa.gov, eblake@redhat.com, Emil Condrea List-Id: xen-devel@lists.xenproject.org VGhlIHB1cnBvc2Ugb2YgdGhlIG5ldyBmaWxlIGlzIHRvIHN0b3JlIGdlbmVyaWMgZnVuY3Rpb25z IHNoYXJlZCBieSBmcm9udGVuZAphbmQgYmFja2VuZHMgc3VjaCBhcyB4ZW5zdG9yZSBvcGVyYXRp b25zLCB4ZW5kZXZzLgoKU2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEVtaWwgQ29uZHJlYSA8ZW1pbGNvbmRyZWFAZ21haWwuY29tPgotLS0K IGh3L3hlbi9NYWtlZmlsZS5vYmpzICAgICAgICAgfCAgIDIgKy0KIGh3L3hlbi94ZW5fYmFja2Vu ZC5jICAgICAgICAgfCAxMjYgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBo dy94ZW4veGVuX3B2ZGV2LmMgICAgICAgICAgIHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvaHcveGVuL3hlbl9iYWNrZW5kLmggfCAgNjQg Ky0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaCAgIHwgIDY5ICsr KysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNlcnRpb25zKCspLCAx ODkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaHcveGVuL3hlbl9wdmRldi5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4veGVuX3B2ZGV2LmgKCmRpZmYgLS1naXQg YS9ody94ZW4vTWFrZWZpbGUub2JqcyBiL2h3L3hlbi9NYWtlZmlsZS5vYmpzCmluZGV4IGQzNjcw OTQuLjU5MWNkYzIgMTAwNjQ0Ci0tLSBhL2h3L3hlbi9NYWtlZmlsZS5vYmpzCisrKyBiL2h3L3hl bi9NYWtlZmlsZS5vYmpzCkBAIC0xLDUgKzEsNSBAQAogIyB4ZW4gYmFja2VuZCBkcml2ZXIgc3Vw cG9ydAotY29tbW9uLW9iai0kKENPTkZJR19YRU5fQkFDS0VORCkgKz0geGVuX2JhY2tlbmQubyB4 ZW5fZGV2Y29uZmlnLm8KK2NvbW1vbi1vYmotJChDT05GSUdfWEVOX0JBQ0tFTkQpICs9IHhlbl9i YWNrZW5kLm8geGVuX2RldmNvbmZpZy5vIHhlbl9wdmRldi5vCiAKIG9iai0kKENPTkZJR19YRU5f UENJX1BBU1NUSFJPVUdIKSArPSB4ZW4taG9zdC1wY2ktZGV2aWNlLm8KIG9iai0kKENPTkZJR19Y RU5fUENJX1BBU1NUSFJPVUdIKSArPSB4ZW5fcHQubyB4ZW5fcHRfY29uZmlnX2luaXQubyB4ZW5f cHRfZ3JhcGhpY3MubyB4ZW5fcHRfbXNpLm8KZGlmZiAtLWdpdCBhL2h3L3hlbi94ZW5fYmFja2Vu ZC5jIGIvaHcveGVuL3hlbl9iYWNrZW5kLmMKaW5kZXggMGFjYTZhZS4uODQxNDJkOCAxMDA2NDQK LS0tIGEvaHcveGVuL3hlbl9iYWNrZW5kLmMKKysrIGIvaHcveGVuL3hlbl9iYWNrZW5kLmMKQEAg LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJzeXNlbXUvY2hhci5oIgogI2luY2x1ZGUgInFlbXUv bG9nLmgiCiAjaW5jbHVkZSAiaHcveGVuL3hlbl9iYWNrZW5kLmgiCisjaW5jbHVkZSAiaHcveGVu L3hlbl9wdmRldi5oIgogCiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+CiAKQEAgLTU3LDgg KzU4LDYgQEAgc3RhdGljIFFUQUlMUV9IRUFEKFhlbkRldmljZUhlYWQsIFhlbkRldmljZSkgeGVu ZGV2cyA9CiAgICAgUVRBSUxRX0hFQURfSU5JVElBTElaRVIoeGVuZGV2cyk7CiBzdGF0aWMgaW50 IGRlYnVnOwogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovCi0KIHN0YXRpYyB2b2lkIHhlbnN0b3JlX2NsZWFudXBfZGly KGNoYXIgKmRpcikKIHsKICAgICBzdHJ1Y3QgeHNfZGlycyAqZDsKQEAgLTc3LDM0ICs3Niw2IEBA IHZvaWQgeGVuX2NvbmZpZ19jbGVhbnVwKHZvaWQpCiAgICAgfQogfQogCi1pbnQgeGVuc3RvcmVf d3JpdGVfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIg KnZhbCkKLXsKLSAgICBjaGFyIGFic3BhdGhbWEVOX0JVRlNJWkVdOwotCi0gICAgc25wcmludGYo YWJzcGF0aCwgc2l6ZW9mKGFic3BhdGgpLCAiJXMvJXMiLCBiYXNlLCBub2RlKTsKLSAgICBpZiAo IXhzX3dyaXRlKHhlbnN0b3JlLCAwLCBhYnNwYXRoLCB2YWwsIHN0cmxlbih2YWwpKSkgewotICAg ICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1jaGFyICp4ZW5zdG9y ZV9yZWFkX3N0cihjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlKQotewotICAgIGNo YXIgYWJzcGF0aFtYRU5fQlVGU0laRV07Ci0gICAgdW5zaWduZWQgaW50IGxlbjsKLSAgICBjaGFy ICpzdHIsICpyZXQgPSBOVUxMOwotCi0gICAgc25wcmludGYoYWJzcGF0aCwgc2l6ZW9mKGFic3Bh dGgpLCAiJXMvJXMiLCBiYXNlLCBub2RlKTsKLSAgICBzdHIgPSB4c19yZWFkKHhlbnN0b3JlLCAw LCBhYnNwYXRoLCAmbGVuKTsKLSAgICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICAgICAgLyogbW92 ZSB0byBxZW11LWFsbG9jYXRlZCBtZW1vcnkgdG8gbWFrZSBzdXJlCi0gICAgICAgICAqIGNhbGxl cnMgY2FuIHNhdmVseSBnX2ZyZWUoKSBzdHVmZi4gKi8KLSAgICAgICAgcmV0ID0gZ19zdHJkdXAo c3RyKTsKLSAgICAgICAgZnJlZShzdHIpOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCiBp bnQgeGVuc3RvcmVfbWtkaXIoY2hhciAqcGF0aCwgaW50IHApCiB7CiAgICAgc3RydWN0IHhzX3Bl cm1pc3Npb25zIHBlcm1zWzJdID0gewpAQCAtMTI5LDQ4ICsxMDAsNiBAQCBpbnQgeGVuc3RvcmVf bWtkaXIoY2hhciAqcGF0aCwgaW50IHApCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCB4ZW5zdG9y ZV93cml0ZV9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgaW50IGl2YWwp Ci17Ci0gICAgY2hhciB2YWxbMTJdOwotCi0gICAgc25wcmludGYodmFsLCBzaXplb2YodmFsKSwg IiVkIiwgaXZhbCk7Ci0gICAgcmV0dXJuIHhlbnN0b3JlX3dyaXRlX3N0cihiYXNlLCBub2RlLCB2 YWwpOwotfQotCi1pbnQgeGVuc3RvcmVfd3JpdGVfaW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29u c3QgY2hhciAqbm9kZSwgaW50NjRfdCBpdmFsKQotewotICAgIGNoYXIgdmFsWzIxXTsKLQotICAg IHNucHJpbnRmKHZhbCwgc2l6ZW9mKHZhbCksICIlIlBSSWQ2NCwgaXZhbCk7Ci0gICAgcmV0dXJu IHhlbnN0b3JlX3dyaXRlX3N0cihiYXNlLCBub2RlLCB2YWwpOwotfQotCi1pbnQgeGVuc3RvcmVf cmVhZF9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgaW50ICppdmFsKQot ewotICAgIGNoYXIgKnZhbDsKLSAgICBpbnQgcmMgPSAtMTsKLQotICAgIHZhbCA9IHhlbnN0b3Jl X3JlYWRfc3RyKGJhc2UsIG5vZGUpOwotICAgIGlmICh2YWwgJiYgMSA9PSBzc2NhbmYodmFsLCAi JWQiLCBpdmFsKSkgewotICAgICAgICByYyA9IDA7Ci0gICAgfQotICAgIGdfZnJlZSh2YWwpOwot ICAgIHJldHVybiByYzsKLX0KLQotaW50IHhlbnN0b3JlX3JlYWRfdWludDY0KGNvbnN0IGNoYXIg KmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIHVpbnQ2NF90ICp1dmFsKQotewotICAgIGNoYXIgKnZh bDsKLSAgICBpbnQgcmMgPSAtMTsKLQotICAgIHZhbCA9IHhlbnN0b3JlX3JlYWRfc3RyKGJhc2Us IG5vZGUpOwotICAgIGlmICh2YWwgJiYgMSA9PSBzc2NhbmYodmFsLCAiJSJTQ051NjQsIHV2YWwp KSB7Ci0gICAgICAgIHJjID0gMDsKLSAgICB9Ci0gICAgZ19mcmVlKHZhbCk7Ci0gICAgcmV0dXJu IHJjOwotfQotCiBpbnQgeGVuc3RvcmVfd3JpdGVfYmVfc3RyKHN0cnVjdCBYZW5EZXZpY2UgKnhl bmRldiwgY29uc3QgY2hhciAqbm9kZSwgY29uc3QgY2hhciAqdmFsKQogewogICAgIHJldHVybiB4 ZW5zdG9yZV93cml0ZV9zdHIoeGVuZGV2LT5iZSwgbm9kZSwgdmFsKTsKQEAgLTIxNCwyMCArMTQz LDYgQEAgaW50IHhlbnN0b3JlX3JlYWRfZmVfdWludDY0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl diwgY29uc3QgY2hhciAqbm9kZSwKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1jb25zdCBjaGFyICp4ZW5idXNf c3Ryc3RhdGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IG5hbWVbXSA9IHsKLSAgICAgICAgW1hlbmJ1c1N0YXRlVW5rbm93bl0gICAgICAg PSAiVW5rbm93biIsCi0gICAgICAgIFtYZW5idXNTdGF0ZUluaXRpYWxpc2luZ10gID0gIkluaXRp YWxpc2luZyIsCi0gICAgICAgIFtYZW5idXNTdGF0ZUluaXRXYWl0XSAgICAgID0gIkluaXRXYWl0 IiwKLSAgICAgICAgW1hlbmJ1c1N0YXRlSW5pdGlhbGlzZWRdICAgPSAiSW5pdGlhbGlzZWQiLAot ICAgICAgICBbWGVuYnVzU3RhdGVDb25uZWN0ZWRdICAgICA9ICJDb25uZWN0ZWQiLAotICAgICAg ICBbWGVuYnVzU3RhdGVDbG9zaW5nXSAgICAgICA9ICJDbG9zaW5nIiwKLSAgICAgICAgW1hlbmJ1 c1N0YXRlQ2xvc2VkXSAgICAgICAgPSAiQ2xvc2VkIiwKLSAgICB9OwotICAgIHJldHVybiAoc3Rh dGUgPCBBUlJBWV9TSVpFKG5hbWUpKSA/IG5hbWVbc3RhdGVdIDogIklOVkFMSUQiOwotfQotCiBp bnQgeGVuX2JlX3NldF9zdGF0ZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGVudW0geGVuYnVz X3N0YXRlIHN0YXRlKQogewogICAgIGludCByYzsKQEAgLTgyNyw0NSArNzQyLDYgQEAgaW50IHhl bl9iZV9zZW5kX25vdGlmeShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgcmV0dXJuIHhl bmV2dGNobl9ub3RpZnkoeGVuZGV2LT5ldnRjaG5kZXYsIHhlbmRldi0+bG9jYWxfcG9ydCk7CiB9 CiAKLS8qCi0gKiBtc2dfbGV2ZWw6Ci0gKiAgMCA9PSBlcnJvcnMgKHN0ZGVyciArIGxvZ2ZpbGUp LgotICogIDEgPT0gaW5mb3JtYXRpdmUgZGVidWcgbWVzc2FnZXMgKGxvZ2ZpbGUgb25seSkuCi0g KiAgMiA9PSBub2lzeSBkZWJ1ZyBtZXNzYWdlcyAobG9nZmlsZSBvbmx5KS4KLSAqICAzID09IHdp bGwgZmxvb2QgeW91ciBsb2cgKGxvZ2ZpbGUgb25seSkuCi0gKi8KLXZvaWQgeGVuX2JlX3ByaW50 ZihzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGludCBtc2dfbGV2ZWwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pCi17Ci0gICAg dmFfbGlzdCBhcmdzOwotCi0gICAgaWYgKHhlbmRldikgewotICAgICAgICBpZiAobXNnX2xldmVs ID4geGVuZGV2LT5kZWJ1ZykgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg ICAgIHFlbXVfbG9nKCJ4ZW4gYmU6ICVzOiAiLCB4ZW5kZXYtPm5hbWUpOwotICAgICAgICBpZiAo bXNnX2xldmVsID09IDApIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAieGVuIGJlOiAl czogIiwgeGVuZGV2LT5uYW1lKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm IChtc2dfbGV2ZWwgPiBkZWJ1ZykgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g ICAgICAgIHFlbXVfbG9nKCJ4ZW4gYmUgY29yZTogIik7Ci0gICAgICAgIGlmIChtc2dfbGV2ZWwg PT0gMCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ4ZW4gYmUgY29yZTogIik7Ci0g ICAgICAgIH0KLSAgICB9Ci0gICAgdmFfc3RhcnQoYXJncywgZm10KTsKLSAgICBxZW11X2xvZ192 cHJpbnRmKGZtdCwgYXJncyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwotICAgIGlmIChtc2dfbGV2ZWwg PT0gMCkgewotICAgICAgICB2YV9zdGFydChhcmdzLCBmbXQpOwotICAgICAgICB2ZnByaW50Zihz dGRlcnIsIGZtdCwgYXJncyk7Ci0gICAgICAgIHZhX2VuZChhcmdzKTsKLSAgICB9Ci0gICAgcWVt dV9sb2dfZmx1c2goKTsKLX0KIAogc3RhdGljIGludCB4ZW5fc3lzZGV2X2luaXQoU3lzQnVzRGV2 aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9ody94ZW4veGVuX3B2ZGV2LmMgYi9ody94ZW4veGVu X3B2ZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg5NjBhOQotLS0g L2Rldi9udWxsCisrKyBiL2h3L3hlbi94ZW5fcHZkZXYuYwpAQCAtMCwwICsxLDE1MCBAQAorLyoK KyAqIFhlbiBwYXJhLXZpcnR1YWxpemF0aW9uIGRldmljZQorICoKKyAqICAoYykgMjAwOCBHZXJk IEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5o IgorCisjaW5jbHVkZSAiaHcveGVuL3hlbl9iYWNrZW5kLmgiCisjaW5jbHVkZSAiaHcveGVuL3hl bl9wdmRldi5oIgorCitzdGF0aWMgaW50IGRlYnVnOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgeGVuc3Rv cmVfd3JpdGVfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNo YXIgKnZhbCkKK3sKKyAgICBjaGFyIGFic3BhdGhbWEVOX0JVRlNJWkVdOworCisgICAgc25wcmlu dGYoYWJzcGF0aCwgc2l6ZW9mKGFic3BhdGgpLCAiJXMvJXMiLCBiYXNlLCBub2RlKTsKKyAgICBp ZiAoIXhzX3dyaXRlKHhlbnN0b3JlLCAwLCBhYnNwYXRoLCB2YWwsIHN0cmxlbih2YWwpKSkgewor ICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitjaGFyICp4ZW5z dG9yZV9yZWFkX3N0cihjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlKQoreworICAg IGNoYXIgYWJzcGF0aFtYRU5fQlVGU0laRV07CisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICBj aGFyICpzdHIsICpyZXQgPSBOVUxMOworCisgICAgc25wcmludGYoYWJzcGF0aCwgc2l6ZW9mKGFi c3BhdGgpLCAiJXMvJXMiLCBiYXNlLCBub2RlKTsKKyAgICBzdHIgPSB4c19yZWFkKHhlbnN0b3Jl LCAwLCBhYnNwYXRoLCAmbGVuKTsKKyAgICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICAgICAgLyog bW92ZSB0byBxZW11LWFsbG9jYXRlZCBtZW1vcnkgdG8gbWFrZSBzdXJlCisgICAgICAgICAqIGNh bGxlcnMgY2FuIHNhdmVseSBnX2ZyZWUoKSBzdHVmZi4gKi8KKyAgICAgICAgcmV0ID0gZ19zdHJk dXAoc3RyKTsKKyAgICAgICAgZnJlZShzdHIpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQor CitpbnQgeGVuc3RvcmVfd3JpdGVfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5v ZGUsIGludCBpdmFsKQoreworICAgIGNoYXIgdmFsWzEyXTsKKworICAgIHNucHJpbnRmKHZhbCwg c2l6ZW9mKHZhbCksICIlZCIsIGl2YWwpOworICAgIHJldHVybiB4ZW5zdG9yZV93cml0ZV9zdHIo YmFzZSwgbm9kZSwgdmFsKTsKK30KKworaW50IHhlbnN0b3JlX3dyaXRlX2ludDY0KGNvbnN0IGNo YXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludDY0X3QgaXZhbCkKK3sKKyAgICBjaGFyIHZh bFsyMV07CisKKyAgICBzbnByaW50Zih2YWwsIHNpemVvZih2YWwpLCAiJSJQUklkNjQsIGl2YWwp OworICAgIHJldHVybiB4ZW5zdG9yZV93cml0ZV9zdHIoYmFzZSwgbm9kZSwgdmFsKTsKK30KKwor aW50IHhlbnN0b3JlX3JlYWRfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUs IGludCAqaXZhbCkKK3sKKyAgICBjaGFyICp2YWw7CisgICAgaW50IHJjID0gLTE7CisKKyAgICB2 YWwgPSB4ZW5zdG9yZV9yZWFkX3N0cihiYXNlLCBub2RlKTsKKyAgICBpZiAodmFsICYmIDEgPT0g c3NjYW5mKHZhbCwgIiVkIiwgaXZhbCkpIHsKKyAgICAgICAgcmMgPSAwOworICAgIH0KKyAgICBn X2ZyZWUodmFsKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB4ZW5zdG9yZV9yZWFkX3VpbnQ2 NChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCB1aW50NjRfdCAqdXZhbCkKK3sK KyAgICBjaGFyICp2YWw7CisgICAgaW50IHJjID0gLTE7CisKKyAgICB2YWwgPSB4ZW5zdG9yZV9y ZWFkX3N0cihiYXNlLCBub2RlKTsKKyAgICBpZiAodmFsICYmIDEgPT0gc3NjYW5mKHZhbCwgIiUi U0NOdTY0LCB1dmFsKSkgeworICAgICAgICByYyA9IDA7CisgICAgfQorICAgIGdfZnJlZSh2YWwp OworICAgIHJldHVybiByYzsKK30KKworY29uc3QgY2hhciAqeGVuYnVzX3N0cnN0YXRlKGVudW0g eGVuYnVzX3N0YXRlIHN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1l W10gPSB7CisgICAgICAgIFtYZW5idXNTdGF0ZVVua25vd25dICAgICAgID0gIlVua25vd24iLAor ICAgICAgICBbWGVuYnVzU3RhdGVJbml0aWFsaXNpbmddICA9ICJJbml0aWFsaXNpbmciLAorICAg ICAgICBbWGVuYnVzU3RhdGVJbml0V2FpdF0gICAgICA9ICJJbml0V2FpdCIsCisgICAgICAgIFtY ZW5idXNTdGF0ZUluaXRpYWxpc2VkXSAgID0gIkluaXRpYWxpc2VkIiwKKyAgICAgICAgW1hlbmJ1 c1N0YXRlQ29ubmVjdGVkXSAgICAgPSAiQ29ubmVjdGVkIiwKKyAgICAgICAgW1hlbmJ1c1N0YXRl Q2xvc2luZ10gICAgICAgPSAiQ2xvc2luZyIsCisgICAgICAgIFtYZW5idXNTdGF0ZUNsb3NlZF0g ICAgICAgID0gIkNsb3NlZCIsCisgICAgfTsKKyAgICByZXR1cm4gKHN0YXRlIDwgQVJSQVlfU0la RShuYW1lKSkgPyBuYW1lW3N0YXRlXSA6ICJJTlZBTElEIjsKK30KKworLyoKKyAqIG1zZ19sZXZl bDoKKyAqICAwID09IGVycm9ycyAoc3RkZXJyICsgbG9nZmlsZSkuCisgKiAgMSA9PSBpbmZvcm1h dGl2ZSBkZWJ1ZyBtZXNzYWdlcyAobG9nZmlsZSBvbmx5KS4KKyAqICAyID09IG5vaXN5IGRlYnVn IG1lc3NhZ2VzIChsb2dmaWxlIG9ubHkpLgorICogIDMgPT0gd2lsbCBmbG9vZCB5b3VyIGxvZyAo bG9nZmlsZSBvbmx5KS4KKyAqLwordm9pZCB4ZW5fYmVfcHJpbnRmKHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiwgaW50IG1zZ19sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisKKyAg ICBpZiAoeGVuZGV2KSB7CisgICAgICAgIGlmIChtc2dfbGV2ZWwgPiB4ZW5kZXYtPmRlYnVnKSB7 CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcWVtdV9sb2coInhlbiBi ZTogJXM6ICIsIHhlbmRldi0+bmFtZSk7CisgICAgICAgIGlmIChtc2dfbGV2ZWwgPT0gMCkgewor ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ4ZW4gYmU6ICVzOiAiLCB4ZW5kZXYtPm5hbWUp OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA+IGRlYnVn KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcWVtdV9sb2coInhl biBiZSBjb3JlOiAiKTsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA9PSAwKSB7CisgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgInhlbiBiZSBjb3JlOiAiKTsKKyAgICAgICAgfQorICAgIH0KKyAg ICB2YV9zdGFydChhcmdzLCBmbXQpOworICAgIHFlbXVfbG9nX3ZwcmludGYoZm10LCBhcmdzKTsK KyAgICB2YV9lbmQoYXJncyk7CisgICAgaWYgKG1zZ19sZXZlbCA9PSAwKSB7CisgICAgICAgIHZh X3N0YXJ0KGFyZ3MsIGZtdCk7CisgICAgICAgIHZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTsK KyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgIH0KKyAgICBxZW11X2xvZ19mbHVzaCgpOworfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2JhY2tlbmQuaCBiL2luY2x1ZGUvaHcveGVu L3hlbl9iYWNrZW5kLmgKaW5kZXggMGNjYmMwZi4uMmI4ZGEzZiAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9ody94ZW4veGVuX2JhY2tlbmQuaAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fYmFja2VuZC5o CkBAIC0yLDYwICsyLDEwIEBACiAjZGVmaW5lIFFFTVVfSFdfWEVOX0JBQ0tFTkRfSAogCiAjaW5j bHVkZSAiaHcveGVuL3hlbl9jb21tb24uaCIKKyNpbmNsdWRlICJody94ZW4veGVuX3B2ZGV2Lmgi CiAjaW5jbHVkZSAic3lzZW11L3N5c2VtdS5oIgogI2luY2x1ZGUgIm5ldC9uZXQuaCIKIAotLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAqLwotCi0jZGVmaW5lIFhFTl9CVUZTSVpFIDEwMjQKLQotc3RydWN0IFhlbkRldmljZTsK LQotLyogZHJpdmVyIHVzZXMgZ3JhbnQgdGFibGVzICAtPiAgb3BlbiBnbnRkZXYgZGV2aWNlICh4 ZW5kZXYtPmdudHRhYmRldikgKi8KLSNkZWZpbmUgREVWT1BTX0ZMQUdfTkVFRF9HTlRERVYgICAx Ci0vKiBkb24ndCBleHBlY3QgZnJvbnRlbmQgZG9pbmcgY29ycmVjdCBzdGF0ZSB0cmFuc2l0aW9u cyAoYWthIGNvbnNvbGUgcXVpcmspICovCi0jZGVmaW5lIERFVk9QU19GTEFHX0lHTk9SRV9TVEFU RSAgMgotCi1zdHJ1Y3QgWGVuRGV2T3BzIHsKLSAgICBzaXplX3QgICAgc2l6ZTsKLSAgICB1aW50 MzJfdCAgZmxhZ3M7Ci0gICAgdm9pZCAgICAgICgqYWxsb2MpKHN0cnVjdCBYZW5EZXZpY2UgKnhl bmRldik7Ci0gICAgaW50ICAgICAgICgqaW5pdCkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsK LSAgICBpbnQgICAgICAgKCppbml0aWFsaXNlKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwot ICAgIHZvaWQgICAgICAoKmNvbm5lY3RlZCkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKLSAg ICB2b2lkICAgICAgKCpldmVudCkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKLSAgICB2b2lk ICAgICAgKCpkaXNjb25uZWN0KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotICAgIGludCAg ICAgICAoKmZyZWUpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7Ci0gICAgdm9pZCAgICAgICgq YmFja2VuZF9jaGFuZ2VkKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5v ZGUpOwotICAgIHZvaWQgICAgICAoKmZyb250ZW5kX2NoYW5nZWQpKHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSk7Ci0gICAgaW50ICAgICAgICgqYmFja2VuZF9yZWdp c3Rlcikodm9pZCk7Ci19OwotCi1zdHJ1Y3QgWGVuRGV2aWNlIHsKLSAgICBjb25zdCBjaGFyICAg ICAgICAgKnR5cGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGRvbTsKLSAgICBpbnQgICAgICAg ICAgICAgICAgZGV2OwotICAgIGNoYXIgICAgICAgICAgICAgICBuYW1lWzY0XTsKLSAgICBpbnQg ICAgICAgICAgICAgICAgZGVidWc7Ci0KLSAgICBlbnVtIHhlbmJ1c19zdGF0ZSAgYmVfc3RhdGU7 Ci0gICAgZW51bSB4ZW5idXNfc3RhdGUgIGZlX3N0YXRlOwotICAgIGludCAgICAgICAgICAgICAg ICBvbmxpbmU7Ci0gICAgY2hhciAgICAgICAgICAgICAgIGJlW1hFTl9CVUZTSVpFXTsKLSAgICBj aGFyICAgICAgICAgICAgICAgKmZlOwotICAgIGNoYXIgICAgICAgICAgICAgICAqcHJvdG9jb2w7 Ci0gICAgaW50ICAgICAgICAgICAgICAgIHJlbW90ZV9wb3J0OwotICAgIGludCAgICAgICAgICAg ICAgICBsb2NhbF9wb3J0OwotCi0gICAgeGVuZXZ0Y2huX2hhbmRsZSAgICpldnRjaG5kZXY7Ci0g ICAgeGVuZ250dGFiX2hhbmRsZSAgICpnbnR0YWJkZXY7Ci0KLSAgICBzdHJ1Y3QgWGVuRGV2T3Bz ICAgKm9wczsKLSAgICBRVEFJTFFfRU5UUlkoWGVuRGV2aWNlKSBuZXh0OwotfTsKLQotLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLwotCiAvKiB2YXJpYWJsZXMgKi8KIGV4dGVybiB4Y19pbnRlcmZhY2UgKnhlbl94YzsKIGV4 dGVybiB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVuX2ZtZW07CkBAIC02MywxNCArMTMsNyBA QCBleHRlcm4gc3RydWN0IHhzX2hhbmRsZSAqeGVuc3RvcmU7CiBleHRlcm4gY29uc3QgY2hhciAq eGVuX3Byb3RvY29sOwogZXh0ZXJuIERldmljZVN0YXRlICp4ZW5fc3lzZGV2OwogCi0vKiB4ZW5z dG9yZSBoZWxwZXIgZnVuY3Rpb25zICovCiBpbnQgeGVuc3RvcmVfbWtkaXIoY2hhciAqcGF0aCwg aW50IHApOwotaW50IHhlbnN0b3JlX3dyaXRlX3N0cihjb25zdCBjaGFyICpiYXNlLCBjb25zdCBj aGFyICpub2RlLCBjb25zdCBjaGFyICp2YWwpOwotaW50IHhlbnN0b3JlX3dyaXRlX2ludChjb25z dCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgaXZhbCk7Ci1pbnQgeGVuc3RvcmVf d3JpdGVfaW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgaW50NjRfdCBp dmFsKTsKLWNoYXIgKnhlbnN0b3JlX3JlYWRfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNo YXIgKm5vZGUpOwotaW50IHhlbnN0b3JlX3JlYWRfaW50KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0 IGNoYXIgKm5vZGUsIGludCAqaXZhbCk7Ci0KIGludCB4ZW5zdG9yZV93cml0ZV9iZV9zdHIoc3Ry dWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBjb25zdCBjaGFyICp2YWwp OwogaW50IHhlbnN0b3JlX3dyaXRlX2JlX2ludChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNv bnN0IGNoYXIgKm5vZGUsIGludCBpdmFsKTsKIGludCB4ZW5zdG9yZV93cml0ZV9iZV9pbnQ2NChz dHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUsIGludDY0X3QgaXZhbCk7 CkBAIC03OCwxMSArMjEsOSBAQCBjaGFyICp4ZW5zdG9yZV9yZWFkX2JlX3N0cihzdHJ1Y3QgWGVu RGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUpOwogaW50IHhlbnN0b3JlX3JlYWRfYmVf aW50KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSwgaW50ICppdmFs KTsKIGNoYXIgKnhlbnN0b3JlX3JlYWRfZmVfc3RyKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwg Y29uc3QgY2hhciAqbm9kZSk7CiBpbnQgeGVuc3RvcmVfcmVhZF9mZV9pbnQoc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2YWwpOwotaW50IHhlbnN0b3Jl X3JlYWRfdWludDY0KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIHVpbnQ2NF90 ICp1dmFsKTsKIGludCB4ZW5zdG9yZV9yZWFkX2ZlX3VpbnQ2NChzdHJ1Y3QgWGVuRGV2aWNlICp4 ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp1dmFsKTsKIAotY29uc3QgY2hhciAq eGVuYnVzX3N0cnN0YXRlKGVudW0geGVuYnVzX3N0YXRlIHN0YXRlKTsKIHN0cnVjdCBYZW5EZXZp Y2UgKnhlbl9iZV9maW5kX3hlbmRldihjb25zdCBjaGFyICp0eXBlLCBpbnQgZG9tLCBpbnQgZGV2 KTsKIHZvaWQgeGVuX2JlX2NoZWNrX3N0YXRlKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CiAK QEAgLTk0LDkgKzM1LDYgQEAgaW50IHhlbl9iZV9zZXRfc3RhdGUoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2LCBlbnVtIHhlbmJ1c19zdGF0ZSBzdGF0ZSk7CiBpbnQgeGVuX2JlX2JpbmRfZXZ0Y2hu KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CiB2b2lkIHhlbl9iZV91bmJpbmRfZXZ0Y2huKHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CiBpbnQgeGVuX2JlX3NlbmRfbm90aWZ5KHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldik7Ci12b2lkIHhlbl9iZV9wcmludGYoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2LCBpbnQgbXNnX2xldmVsLAotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwg Li4uKSAgR0NDX0ZNVF9BVFRSKDMsIDQpOwotCiAKIC8qIGFjdHVhbCBiYWNrZW5kIGRyaXZlcnMg Ki8KIGV4dGVybiBzdHJ1Y3QgWGVuRGV2T3BzIHhlbl9jb25zb2xlX29wczsgICAgICAvKiB4ZW5f Y29uc29sZS5jICAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX3B2ZGV2Lmgg Yi9pbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41YzQ0NWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ody94ZW4veGVuX3B2 ZGV2LmgKQEAgLTAsMCArMSw2OSBAQAorI2lmbmRlZiBRRU1VX0hXX1hFTl9QVkRFVl9ICisjZGVm aW5lIFFFTVVfSFdfWEVOX1BWREVWX0gKKworI2luY2x1ZGUgImh3L3hlbi94ZW5fY29tbW9uLmgi CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCisKKyNkZWZpbmUgWEVOX0JVRlNJWkUgMTAyNAorCitzdHJ1Y3QgWGVuRGV2 aWNlOworCisvKiBkcml2ZXIgdXNlcyBncmFudCB0YWJsZXMgIC0+ICBvcGVuIGdudGRldiBkZXZp Y2UgKHhlbmRldi0+Z250dGFiZGV2KSAqLworI2RlZmluZSBERVZPUFNfRkxBR19ORUVEX0dOVERF ViAgIDEKKy8qIGRvbid0IGV4cGVjdCBmcm9udGVuZCBkb2luZyBjb3JyZWN0IHN0YXRlIHRyYW5z aXRpb25zIChha2EgY29uc29sZSBxdWlyaykgKi8KKyNkZWZpbmUgREVWT1BTX0ZMQUdfSUdOT1JF X1NUQVRFICAyCisKK3N0cnVjdCBYZW5EZXZPcHMgeworICAgIHNpemVfdCAgICBzaXplOworICAg IHVpbnQzMl90ICBmbGFnczsKKyAgICB2b2lkICAgICAgKCphbGxvYykoc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2KTsKKyAgICBpbnQgICAgICAgKCppbml0KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5k ZXYpOworICAgIGludCAgICAgICAoKmluaXRpYWxpc2UpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl dik7CisgICAgdm9pZCAgICAgICgqY29ubmVjdGVkKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYp OworICAgIHZvaWQgICAgICAoKmV2ZW50KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOworICAg IHZvaWQgICAgICAoKmRpc2Nvbm5lY3QpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CisgICAg aW50ICAgICAgICgqZnJlZSkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKKyAgICB2b2lkICAg ICAgKCpiYWNrZW5kX2NoYW5nZWQpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hh ciAqbm9kZSk7CisgICAgdm9pZCAgICAgICgqZnJvbnRlbmRfY2hhbmdlZCkoc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlKTsKKyAgICBpbnQgICAgICAgKCpiYWNrZW5k X3JlZ2lzdGVyKSh2b2lkKTsKK307CisKK3N0cnVjdCBYZW5EZXZpY2UgeworICAgIGNvbnN0IGNo YXIgICAgICAgICAqdHlwZTsKKyAgICBpbnQgICAgICAgICAgICAgICAgZG9tOworICAgIGludCAg ICAgICAgICAgICAgICBkZXY7CisgICAgY2hhciAgICAgICAgICAgICAgIG5hbWVbNjRdOworICAg IGludCAgICAgICAgICAgICAgICBkZWJ1ZzsKKworICAgIGVudW0geGVuYnVzX3N0YXRlICBiZV9z dGF0ZTsKKyAgICBlbnVtIHhlbmJ1c19zdGF0ZSAgZmVfc3RhdGU7CisgICAgaW50ICAgICAgICAg ICAgICAgIG9ubGluZTsKKyAgICBjaGFyICAgICAgICAgICAgICAgYmVbWEVOX0JVRlNJWkVdOwor ICAgIGNoYXIgICAgICAgICAgICAgICAqZmU7CisgICAgY2hhciAgICAgICAgICAgICAgICpwcm90 b2NvbDsKKyAgICBpbnQgICAgICAgICAgICAgICAgcmVtb3RlX3BvcnQ7CisgICAgaW50ICAgICAg ICAgICAgICAgIGxvY2FsX3BvcnQ7CisKKyAgICB4ZW5ldnRjaG5faGFuZGxlICAgKmV2dGNobmRl djsKKyAgICB4ZW5nbnR0YWJfaGFuZGxlICAgKmdudHRhYmRldjsKKworICAgIHN0cnVjdCBYZW5E ZXZPcHMgICAqb3BzOworICAgIFFUQUlMUV9FTlRSWShYZW5EZXZpY2UpIG5leHQ7Cit9OworCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovCisKKy8qIHhlbnN0b3JlIGhlbHBlciBmdW5jdGlvbnMgKi8KK2ludCB4ZW5zdG9y ZV93cml0ZV9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgY29uc3QgY2hh ciAqdmFsKTsKK2ludCB4ZW5zdG9yZV93cml0ZV9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3Qg Y2hhciAqbm9kZSwgaW50IGl2YWwpOworaW50IHhlbnN0b3JlX3dyaXRlX2ludDY0KGNvbnN0IGNo YXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludDY0X3QgaXZhbCk7CitjaGFyICp4ZW5zdG9y ZV9yZWFkX3N0cihjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlKTsKK2ludCB4ZW5z dG9yZV9yZWFkX2ludChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2 YWwpOworaW50IHhlbnN0b3JlX3JlYWRfdWludDY0KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNo YXIgKm5vZGUsIHVpbnQ2NF90ICp1dmFsKTsKKworY29uc3QgY2hhciAqeGVuYnVzX3N0cnN0YXRl KGVudW0geGVuYnVzX3N0YXRlIHN0YXRlKTsKKwordm9pZCB4ZW5fYmVfcHJpbnRmKHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldiwgaW50IG1zZ19sZXZlbCwKKyAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpmbXQsIC4uLikgIEdDQ19GTVRfQVRUUigzLCA0KTsKKworI2VuZGlmIC8qIFFFTVVfSFdf WEVOX1BWREVWX0ggKi8KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==