From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL 03/13] xen: Create a new file xen_pvdev.c Date: Fri, 28 Oct 2016 18:10:03 -0700 Message-ID: <1477703413-18852-3-git-send-email-sstabellini@kernel.org> References: <1477703413-18852-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0IAE-0003vz-9a for xen-devel@lists.xenproject.org; Sat, 29 Oct 2016 01:10:26 +0000 In-Reply-To: <1477703413-18852-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: peter.maydell@linaro.org Cc: Quan Xu , sstabellini@kernel.org, qemu-devel@nongnu.org, Quan Xu , anthony.perard@citrix.com, xen-devel@lists.xenproject.org, Emil Condrea List-Id: xen-devel@lists.xenproject.org RnJvbTogRW1pbCBDb25kcmVhIDxlbWlsY29uZHJlYUBnbWFpbC5jb20+CgpUaGUgcHVycG9zZSBv ZiB0aGUgbmV3IGZpbGUgaXMgdG8gc3RvcmUgZ2VuZXJpYyBmdW5jdGlvbnMgc2hhcmVkIGJ5IGZy b250ZW5kCmFuZCBiYWNrZW5kcyBzdWNoIGFzIHhlbnN0b3JlIG9wZXJhdGlvbnMsIHhlbmRldnMu CgpTaWduZWQtb2ZmLWJ5OiBRdWFuIFh1IDxxdWFuLnh1QGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRW1pbCBDb25kcmVhIDxlbWlsY29uZHJlYUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IFN0 ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTog UXVhbiBYdSA8eHVxdWFuOEBodWF3ZWkuY29tPgpBY2tlZC1ieTogQW50aG9ueSBQRVJBUkQgPGFu dGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Ci0tLQogaHcveGVuL01ha2VmaWxlLm9ianMgICAgICAg ICB8ICAgMiArLQogaHcveGVuL3hlbl9iYWNrZW5kLmMgICAgICAgICB8IDEyNiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGh3L3hlbi94ZW5fcHZkZXYuYyAgICAgICAgICAg fCAxNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS9ody94ZW4veGVuX2JhY2tlbmQuaCB8ICA2NCArLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUv aHcveGVuL3hlbl9wdmRldi5oICAgfCAgNjkgKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMg Y2hhbmdlZCwgMjIyIGluc2VydGlvbnMoKyksIDE4OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBody94ZW4veGVuX3B2ZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3 L3hlbi94ZW5fcHZkZXYuaAoKZGlmZiAtLWdpdCBhL2h3L3hlbi9NYWtlZmlsZS5vYmpzIGIvaHcv eGVuL01ha2VmaWxlLm9ianMKaW5kZXggZDM2NzA5NC4uNTkxY2RjMiAxMDA2NDQKLS0tIGEvaHcv eGVuL01ha2VmaWxlLm9ianMKKysrIGIvaHcveGVuL01ha2VmaWxlLm9ianMKQEAgLTEsNSArMSw1 IEBACiAjIHhlbiBiYWNrZW5kIGRyaXZlciBzdXBwb3J0Ci1jb21tb24tb2JqLSQoQ09ORklHX1hF Tl9CQUNLRU5EKSArPSB4ZW5fYmFja2VuZC5vIHhlbl9kZXZjb25maWcubworY29tbW9uLW9iai0k KENPTkZJR19YRU5fQkFDS0VORCkgKz0geGVuX2JhY2tlbmQubyB4ZW5fZGV2Y29uZmlnLm8geGVu X3B2ZGV2Lm8KIAogb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbi1ob3N0 LXBjaS1kZXZpY2Uubwogb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbl9w dC5vIHhlbl9wdF9jb25maWdfaW5pdC5vIHhlbl9wdF9ncmFwaGljcy5vIHhlbl9wdF9tc2kubwpk aWZmIC0tZ2l0IGEvaHcveGVuL3hlbl9iYWNrZW5kLmMgYi9ody94ZW4veGVuX2JhY2tlbmQuYwpp bmRleCAwZTk1ODgwLi5iMzJiMGRkIDEwMDY0NAotLS0gYS9ody94ZW4veGVuX2JhY2tlbmQuYwor KysgYi9ody94ZW4veGVuX2JhY2tlbmQuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgInN5 c2VtdS9jaGFyLmgiCiAjaW5jbHVkZSAicWVtdS9sb2cuaCIKICNpbmNsdWRlICJody94ZW4veGVu X2JhY2tlbmQuaCIKKyNpbmNsdWRlICJody94ZW4veGVuX3B2ZGV2LmgiCiAKICNpbmNsdWRlIDx4 ZW4vZ3JhbnRfdGFibGUuaD4KIApAQCAtNTcsOCArNTgsNiBAQCBzdGF0aWMgUVRBSUxRX0hFQUQo WGVuRGV2aWNlSGVhZCwgWGVuRGV2aWNlKSB4ZW5kZXZzID0KICAgICBRVEFJTFFfSEVBRF9JTklU SUFMSVpFUih4ZW5kZXZzKTsKIHN0YXRpYyBpbnQgZGVidWc7CiAKLS8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQogc3Rh dGljIHZvaWQgeGVuc3RvcmVfY2xlYW51cF9kaXIoY2hhciAqZGlyKQogewogICAgIHN0cnVjdCB4 c19kaXJzICpkOwpAQCAtNzcsMzQgKzc2LDYgQEAgdm9pZCB4ZW5fY29uZmlnX2NsZWFudXAodm9p ZCkKICAgICB9CiB9CiAKLWludCB4ZW5zdG9yZV93cml0ZV9zdHIoY29uc3QgY2hhciAqYmFzZSwg Y29uc3QgY2hhciAqbm9kZSwgY29uc3QgY2hhciAqdmFsKQotewotICAgIGNoYXIgYWJzcGF0aFtY RU5fQlVGU0laRV07Ci0KLSAgICBzbnByaW50ZihhYnNwYXRoLCBzaXplb2YoYWJzcGF0aCksICIl cy8lcyIsIGJhc2UsIG5vZGUpOwotICAgIGlmICgheHNfd3JpdGUoeGVuc3RvcmUsIDAsIGFic3Bh dGgsIHZhbCwgc3RybGVuKHZhbCkpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAg cmV0dXJuIDA7Ci19Ci0KLWNoYXIgKnhlbnN0b3JlX3JlYWRfc3RyKGNvbnN0IGNoYXIgKmJhc2Us IGNvbnN0IGNoYXIgKm5vZGUpCi17Ci0gICAgY2hhciBhYnNwYXRoW1hFTl9CVUZTSVpFXTsKLSAg ICB1bnNpZ25lZCBpbnQgbGVuOwotICAgIGNoYXIgKnN0ciwgKnJldCA9IE5VTEw7Ci0KLSAgICBz bnByaW50ZihhYnNwYXRoLCBzaXplb2YoYWJzcGF0aCksICIlcy8lcyIsIGJhc2UsIG5vZGUpOwot ICAgIHN0ciA9IHhzX3JlYWQoeGVuc3RvcmUsIDAsIGFic3BhdGgsICZsZW4pOwotICAgIGlmIChz dHIgIT0gTlVMTCkgewotICAgICAgICAvKiBtb3ZlIHRvIHFlbXUtYWxsb2NhdGVkIG1lbW9yeSB0 byBtYWtlIHN1cmUKLSAgICAgICAgICogY2FsbGVycyBjYW4gc2F2ZWx5IGdfZnJlZSgpIHN0dWZm LiAqLwotICAgICAgICByZXQgPSBnX3N0cmR1cChzdHIpOwotICAgICAgICBmcmVlKHN0cik7Ci0g ICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KIGludCB4ZW5zdG9yZV9ta2RpcihjaGFyICpwYXRo LCBpbnQgcCkKIHsKICAgICBzdHJ1Y3QgeHNfcGVybWlzc2lvbnMgcGVybXNbMl0gPSB7CkBAIC0x MjksNDggKzEwMCw2IEBAIGludCB4ZW5zdG9yZV9ta2RpcihjaGFyICpwYXRoLCBpbnQgcCkKICAg ICByZXR1cm4gMDsKIH0KIAotaW50IHhlbnN0b3JlX3dyaXRlX2ludChjb25zdCBjaGFyICpiYXNl LCBjb25zdCBjaGFyICpub2RlLCBpbnQgaXZhbCkKLXsKLSAgICBjaGFyIHZhbFsxMl07Ci0KLSAg ICBzbnByaW50Zih2YWwsIHNpemVvZih2YWwpLCAiJWQiLCBpdmFsKTsKLSAgICByZXR1cm4geGVu c3RvcmVfd3JpdGVfc3RyKGJhc2UsIG5vZGUsIHZhbCk7Ci19Ci0KLWludCB4ZW5zdG9yZV93cml0 ZV9pbnQ2NChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQ2NF90IGl2YWwp Ci17Ci0gICAgY2hhciB2YWxbMjFdOwotCi0gICAgc25wcmludGYodmFsLCBzaXplb2YodmFsKSwg IiUiUFJJZDY0LCBpdmFsKTsKLSAgICByZXR1cm4geGVuc3RvcmVfd3JpdGVfc3RyKGJhc2UsIG5v ZGUsIHZhbCk7Ci19Ci0KLWludCB4ZW5zdG9yZV9yZWFkX2ludChjb25zdCBjaGFyICpiYXNlLCBj b25zdCBjaGFyICpub2RlLCBpbnQgKml2YWwpCi17Ci0gICAgY2hhciAqdmFsOwotICAgIGludCBy YyA9IC0xOwotCi0gICAgdmFsID0geGVuc3RvcmVfcmVhZF9zdHIoYmFzZSwgbm9kZSk7Ci0gICAg aWYgKHZhbCAmJiAxID09IHNzY2FuZih2YWwsICIlZCIsIGl2YWwpKSB7Ci0gICAgICAgIHJjID0g MDsKLSAgICB9Ci0gICAgZ19mcmVlKHZhbCk7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1pbnQgeGVu c3RvcmVfcmVhZF91aW50NjQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgdWlu dDY0X3QgKnV2YWwpCi17Ci0gICAgY2hhciAqdmFsOwotICAgIGludCByYyA9IC0xOwotCi0gICAg dmFsID0geGVuc3RvcmVfcmVhZF9zdHIoYmFzZSwgbm9kZSk7Ci0gICAgaWYgKHZhbCAmJiAxID09 IHNzY2FuZih2YWwsICIlIlNDTnU2NCwgdXZhbCkpIHsKLSAgICAgICAgcmMgPSAwOwotICAgIH0K LSAgICBnX2ZyZWUodmFsKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KIGludCB4ZW5zdG9yZV93cml0 ZV9iZV9zdHIoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBjb25z dCBjaGFyICp2YWwpCiB7CiAgICAgcmV0dXJuIHhlbnN0b3JlX3dyaXRlX3N0cih4ZW5kZXYtPmJl LCBub2RlLCB2YWwpOwpAQCAtMjE0LDIwICsxNDMsNiBAQCBpbnQgeGVuc3RvcmVfcmVhZF9mZV91 aW50NjQoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLAogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCiAKLWNvbnN0IGNoYXIgKnhlbmJ1c19zdHJzdGF0ZShlbnVtIHhlbmJ1c19zdGF0ZSBz dGF0ZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZVtdID0gewotICAgICAg ICBbWGVuYnVzU3RhdGVVbmtub3duXSAgICAgICA9ICJVbmtub3duIiwKLSAgICAgICAgW1hlbmJ1 c1N0YXRlSW5pdGlhbGlzaW5nXSAgPSAiSW5pdGlhbGlzaW5nIiwKLSAgICAgICAgW1hlbmJ1c1N0 YXRlSW5pdFdhaXRdICAgICAgPSAiSW5pdFdhaXQiLAotICAgICAgICBbWGVuYnVzU3RhdGVJbml0 aWFsaXNlZF0gICA9ICJJbml0aWFsaXNlZCIsCi0gICAgICAgIFtYZW5idXNTdGF0ZUNvbm5lY3Rl ZF0gICAgID0gIkNvbm5lY3RlZCIsCi0gICAgICAgIFtYZW5idXNTdGF0ZUNsb3NpbmddICAgICAg ID0gIkNsb3NpbmciLAotICAgICAgICBbWGVuYnVzU3RhdGVDbG9zZWRdICAgICAgICA9ICJDbG9z ZWQiLAotICAgIH07Ci0gICAgcmV0dXJuIChzdGF0ZSA8IEFSUkFZX1NJWkUobmFtZSkpID8gbmFt ZVtzdGF0ZV0gOiAiSU5WQUxJRCI7Ci19Ci0KIGludCB4ZW5fYmVfc2V0X3N0YXRlKHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldiwgZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCiB7CiAgICAgaW50IHJj OwpAQCAtODI3LDQ1ICs3NDIsNiBAQCBpbnQgeGVuX2JlX3NlbmRfbm90aWZ5KHN0cnVjdCBYZW5E ZXZpY2UgKnhlbmRldikKICAgICByZXR1cm4geGVuZXZ0Y2huX25vdGlmeSh4ZW5kZXYtPmV2dGNo bmRldiwgeGVuZGV2LT5sb2NhbF9wb3J0KTsKIH0KIAotLyoKLSAqIG1zZ19sZXZlbDoKLSAqICAw ID09IGVycm9ycyAoc3RkZXJyICsgbG9nZmlsZSkuCi0gKiAgMSA9PSBpbmZvcm1hdGl2ZSBkZWJ1 ZyBtZXNzYWdlcyAobG9nZmlsZSBvbmx5KS4KLSAqICAyID09IG5vaXN5IGRlYnVnIG1lc3NhZ2Vz IChsb2dmaWxlIG9ubHkpLgotICogIDMgPT0gd2lsbCBmbG9vZCB5b3VyIGxvZyAobG9nZmlsZSBv bmx5KS4KLSAqLwotdm9pZCB4ZW5fYmVfcHJpbnRmKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwg aW50IG1zZ19sZXZlbCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikK LXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICBpZiAoeGVuZGV2KSB7Ci0gICAgICAgIGlmICht c2dfbGV2ZWwgPiB4ZW5kZXYtPmRlYnVnKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg IH0KLSAgICAgICAgcWVtdV9sb2coInhlbiBiZTogJXM6ICIsIHhlbmRldi0+bmFtZSk7Ci0gICAg ICAgIGlmIChtc2dfbGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ4 ZW4gYmU6ICVzOiAiLCB4ZW5kZXYtPm5hbWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg ICAgICAgaWYgKG1zZ19sZXZlbCA+IGRlYnVnKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgIH0KLSAgICAgICAgcWVtdV9sb2coInhlbiBiZSBjb3JlOiAiKTsKLSAgICAgICAgaWYgKG1z Z19sZXZlbCA9PSAwKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInhlbiBiZSBjb3Jl OiAiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2YV9zdGFydChhcmdzLCBmbXQpOwotICAgIHFl bXVfbG9nX3ZwcmludGYoZm10LCBhcmdzKTsKLSAgICB2YV9lbmQoYXJncyk7Ci0gICAgaWYgKG1z Z19sZXZlbCA9PSAwKSB7Ci0gICAgICAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0gICAgICAgIHZm cHJpbnRmKHN0ZGVyciwgZm10LCBhcmdzKTsKLSAgICAgICAgdmFfZW5kKGFyZ3MpOwotICAgIH0K LSAgICBxZW11X2xvZ19mbHVzaCgpOwotfQogCiBzdGF0aWMgaW50IHhlbl9zeXNkZXZfaW5pdChT eXNCdXNEZXZpY2UgKmRldikKIHsKZGlmZiAtLWdpdCBhL2h3L3hlbi94ZW5fcHZkZXYuYyBiL2h3 L3hlbi94ZW5fcHZkZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWRj MmJlCi0tLSAvZGV2L251bGwKKysrIGIvaHcveGVuL3hlbl9wdmRldi5jCkBAIC0wLDAgKzEsMTUw IEBACisvKgorICogWGVuIHBhcmEtdmlydHVhbGl6YXRpb24gZGV2aWNlCisgKgorICogIChjKSAy MDA4IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorICoKKyAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgorICovCisKKyNpbmNsdWRlICJxZW11 L29zZGVwLmgiCisKKyNpbmNsdWRlICJody94ZW4veGVuX2JhY2tlbmQuaCIKKyNpbmNsdWRlICJo dy94ZW4veGVuX3B2ZGV2LmgiCisKK3N0YXRpYyBpbnQgZGVidWc7CisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2lu dCB4ZW5zdG9yZV93cml0ZV9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwg Y29uc3QgY2hhciAqdmFsKQoreworICAgIGNoYXIgYWJzcGF0aFtYRU5fQlVGU0laRV07CisKKyAg ICBzbnByaW50ZihhYnNwYXRoLCBzaXplb2YoYWJzcGF0aCksICIlcy8lcyIsIGJhc2UsIG5vZGUp OworICAgIGlmICgheHNfd3JpdGUoeGVuc3RvcmUsIDAsIGFic3BhdGgsIHZhbCwgc3RybGVuKHZh bCkpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2No YXIgKnhlbnN0b3JlX3JlYWRfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUp Cit7CisgICAgY2hhciBhYnNwYXRoW1hFTl9CVUZTSVpFXTsKKyAgICB1bnNpZ25lZCBpbnQgbGVu OworICAgIGNoYXIgKnN0ciwgKnJldCA9IE5VTEw7CisKKyAgICBzbnByaW50ZihhYnNwYXRoLCBz aXplb2YoYWJzcGF0aCksICIlcy8lcyIsIGJhc2UsIG5vZGUpOworICAgIHN0ciA9IHhzX3JlYWQo eGVuc3RvcmUsIDAsIGFic3BhdGgsICZsZW4pOworICAgIGlmIChzdHIgIT0gTlVMTCkgeworICAg ICAgICAvKiBtb3ZlIHRvIHFlbXUtYWxsb2NhdGVkIG1lbW9yeSB0byBtYWtlIHN1cmUKKyAgICAg ICAgICogY2FsbGVycyBjYW4gc2F2ZWx5IGdfZnJlZSgpIHN0dWZmLiAqLworICAgICAgICByZXQg PSBnX3N0cmR1cChzdHIpOworICAgICAgICBmcmVlKHN0cik7CisgICAgfQorICAgIHJldHVybiBy ZXQ7Cit9CisKK2ludCB4ZW5zdG9yZV93cml0ZV9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3Qg Y2hhciAqbm9kZSwgaW50IGl2YWwpCit7CisgICAgY2hhciB2YWxbMTJdOworCisgICAgc25wcmlu dGYodmFsLCBzaXplb2YodmFsKSwgIiVkIiwgaXZhbCk7CisgICAgcmV0dXJuIHhlbnN0b3JlX3dy aXRlX3N0cihiYXNlLCBub2RlLCB2YWwpOworfQorCitpbnQgeGVuc3RvcmVfd3JpdGVfaW50NjQo Y29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgaW50NjRfdCBpdmFsKQoreworICAg IGNoYXIgdmFsWzIxXTsKKworICAgIHNucHJpbnRmKHZhbCwgc2l6ZW9mKHZhbCksICIlIlBSSWQ2 NCwgaXZhbCk7CisgICAgcmV0dXJuIHhlbnN0b3JlX3dyaXRlX3N0cihiYXNlLCBub2RlLCB2YWwp OworfQorCitpbnQgeGVuc3RvcmVfcmVhZF9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hh ciAqbm9kZSwgaW50ICppdmFsKQoreworICAgIGNoYXIgKnZhbDsKKyAgICBpbnQgcmMgPSAtMTsK KworICAgIHZhbCA9IHhlbnN0b3JlX3JlYWRfc3RyKGJhc2UsIG5vZGUpOworICAgIGlmICh2YWwg JiYgMSA9PSBzc2NhbmYodmFsLCAiJWQiLCBpdmFsKSkgeworICAgICAgICByYyA9IDA7CisgICAg fQorICAgIGdfZnJlZSh2YWwpOworICAgIHJldHVybiByYzsKK30KKworaW50IHhlbnN0b3JlX3Jl YWRfdWludDY0KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIHVpbnQ2NF90ICp1 dmFsKQoreworICAgIGNoYXIgKnZhbDsKKyAgICBpbnQgcmMgPSAtMTsKKworICAgIHZhbCA9IHhl bnN0b3JlX3JlYWRfc3RyKGJhc2UsIG5vZGUpOworICAgIGlmICh2YWwgJiYgMSA9PSBzc2NhbmYo dmFsLCAiJSJTQ051NjQsIHV2YWwpKSB7CisgICAgICAgIHJjID0gMDsKKyAgICB9CisgICAgZ19m cmVlKHZhbCk7CisgICAgcmV0dXJuIHJjOworfQorCitjb25zdCBjaGFyICp4ZW5idXNfc3Ryc3Rh dGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IG5hbWVbXSA9IHsKKyAgICAgICAgW1hlbmJ1c1N0YXRlVW5rbm93bl0gICAgICAgPSAiVW5r bm93biIsCisgICAgICAgIFtYZW5idXNTdGF0ZUluaXRpYWxpc2luZ10gID0gIkluaXRpYWxpc2lu ZyIsCisgICAgICAgIFtYZW5idXNTdGF0ZUluaXRXYWl0XSAgICAgID0gIkluaXRXYWl0IiwKKyAg ICAgICAgW1hlbmJ1c1N0YXRlSW5pdGlhbGlzZWRdICAgPSAiSW5pdGlhbGlzZWQiLAorICAgICAg ICBbWGVuYnVzU3RhdGVDb25uZWN0ZWRdICAgICA9ICJDb25uZWN0ZWQiLAorICAgICAgICBbWGVu YnVzU3RhdGVDbG9zaW5nXSAgICAgICA9ICJDbG9zaW5nIiwKKyAgICAgICAgW1hlbmJ1c1N0YXRl Q2xvc2VkXSAgICAgICAgPSAiQ2xvc2VkIiwKKyAgICB9OworICAgIHJldHVybiAoc3RhdGUgPCBB UlJBWV9TSVpFKG5hbWUpKSA/IG5hbWVbc3RhdGVdIDogIklOVkFMSUQiOworfQorCisvKgorICog bXNnX2xldmVsOgorICogIDAgPT0gZXJyb3JzIChzdGRlcnIgKyBsb2dmaWxlKS4KKyAqICAxID09 IGluZm9ybWF0aXZlIGRlYnVnIG1lc3NhZ2VzIChsb2dmaWxlIG9ubHkpLgorICogIDIgPT0gbm9p c3kgZGVidWcgbWVzc2FnZXMgKGxvZ2ZpbGUgb25seSkuCisgKiAgMyA9PSB3aWxsIGZsb29kIHlv dXIgbG9nIChsb2dmaWxlIG9ubHkpLgorICovCit2b2lkIHhlbl9iZV9wcmludGYoc3RydWN0IFhl bkRldmljZSAqeGVuZGV2LCBpbnQgbXNnX2xldmVsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKworICAgIGlmICh4ZW5kZXYp IHsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA+IHhlbmRldi0+ZGVidWcpIHsKKyAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBxZW11X2xvZygieGVuIGJlOiAlczogIiwgeGVu ZGV2LT5uYW1lKTsKKyAgICAgICAgaWYgKG1zZ19sZXZlbCA9PSAwKSB7CisgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgInhlbiBiZTogJXM6ICIsIHhlbmRldi0+bmFtZSk7CisgICAgICAgIH0K KyAgICB9IGVsc2UgeworICAgICAgICBpZiAobXNnX2xldmVsID4gZGVidWcpIHsKKyAgICAgICAg ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBxZW11X2xvZygieGVuIGJlIGNvcmU6ICIp OworICAgICAgICBpZiAobXNnX2xldmVsID09IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAieGVuIGJlIGNvcmU6ICIpOworICAgICAgICB9CisgICAgfQorICAgIHZhX3N0YXJ0KGFy Z3MsIGZtdCk7CisgICAgcWVtdV9sb2dfdnByaW50ZihmbXQsIGFyZ3MpOworICAgIHZhX2VuZChh cmdzKTsKKyAgICBpZiAobXNnX2xldmVsID09IDApIHsKKyAgICAgICAgdmFfc3RhcnQoYXJncywg Zm10KTsKKyAgICAgICAgdmZwcmludGYoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgICAgICB2YV9l bmQoYXJncyk7CisgICAgfQorICAgIHFlbXVfbG9nX2ZsdXNoKCk7Cit9CmRpZmYgLS1naXQgYS9p bmNsdWRlL2h3L3hlbi94ZW5fYmFja2VuZC5oIGIvaW5jbHVkZS9ody94ZW4veGVuX2JhY2tlbmQu aAppbmRleCA1YjAyMzg2Li45NzNjYjRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2h3L3hlbi94ZW5f YmFja2VuZC5oCisrKyBiL2luY2x1ZGUvaHcveGVuL3hlbl9iYWNrZW5kLmgKQEAgLTIsNjAgKzIs MTAgQEAKICNkZWZpbmUgUUVNVV9IV19YRU5fQkFDS0VORF9ICiAKICNpbmNsdWRlICJody94ZW4v eGVuX2NvbW1vbi5oIgorI2luY2x1ZGUgImh3L3hlbi94ZW5fcHZkZXYuaCIKICNpbmNsdWRlICJz eXNlbXUvc3lzZW11LmgiCiAjaW5jbHVkZSAibmV0L25ldC5oIgogCi0vKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNk ZWZpbmUgWEVOX0JVRlNJWkUgMTAyNAotCi1zdHJ1Y3QgWGVuRGV2aWNlOwotCi0vKiBkcml2ZXIg dXNlcyBncmFudCB0YWJsZXMgIC0+ICBvcGVuIGdudGRldiBkZXZpY2UgKHhlbmRldi0+Z250dGFi ZGV2KSAqLwotI2RlZmluZSBERVZPUFNfRkxBR19ORUVEX0dOVERFViAgIDEKLS8qIGRvbid0IGV4 cGVjdCBmcm9udGVuZCBkb2luZyBjb3JyZWN0IHN0YXRlIHRyYW5zaXRpb25zIChha2EgY29uc29s ZSBxdWlyaykgKi8KLSNkZWZpbmUgREVWT1BTX0ZMQUdfSUdOT1JFX1NUQVRFICAyCi0KLXN0cnVj dCBYZW5EZXZPcHMgewotICAgIHNpemVfdCAgICBzaXplOwotICAgIHVpbnQzMl90ICBmbGFnczsK LSAgICB2b2lkICAgICAgKCphbGxvYykoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKLSAgICBp bnQgICAgICAgKCppbml0KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotICAgIGludCAgICAg ICAoKmluaXRpYWxpc2UpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7Ci0gICAgdm9pZCAgICAg ICgqY29ubmVjdGVkKShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotICAgIHZvaWQgICAgICAo KmV2ZW50KShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotICAgIHZvaWQgICAgICAoKmRpc2Nv bm5lY3QpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7Ci0gICAgaW50ICAgICAgICgqZnJlZSko c3RydWN0IFhlbkRldmljZSAqeGVuZGV2KTsKLSAgICB2b2lkICAgICAgKCpiYWNrZW5kX2NoYW5n ZWQpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSk7Ci0gICAgdm9p ZCAgICAgICgqZnJvbnRlbmRfY2hhbmdlZCkoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25z dCBjaGFyICpub2RlKTsKLSAgICBpbnQgICAgICAgKCpiYWNrZW5kX3JlZ2lzdGVyKSh2b2lkKTsK LX07Ci0KLXN0cnVjdCBYZW5EZXZpY2UgewotICAgIGNvbnN0IGNoYXIgICAgICAgICAqdHlwZTsK LSAgICBpbnQgICAgICAgICAgICAgICAgZG9tOwotICAgIGludCAgICAgICAgICAgICAgICBkZXY7 Ci0gICAgY2hhciAgICAgICAgICAgICAgIG5hbWVbNjRdOwotICAgIGludCAgICAgICAgICAgICAg ICBkZWJ1ZzsKLQotICAgIGVudW0geGVuYnVzX3N0YXRlICBiZV9zdGF0ZTsKLSAgICBlbnVtIHhl bmJ1c19zdGF0ZSAgZmVfc3RhdGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIG9ubGluZTsKLSAg ICBjaGFyICAgICAgICAgICAgICAgYmVbWEVOX0JVRlNJWkVdOwotICAgIGNoYXIgICAgICAgICAg ICAgICAqZmU7Ci0gICAgY2hhciAgICAgICAgICAgICAgICpwcm90b2NvbDsKLSAgICBpbnQgICAg ICAgICAgICAgICAgcmVtb3RlX3BvcnQ7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGxvY2FsX3Bv cnQ7Ci0KLSAgICB4ZW5ldnRjaG5faGFuZGxlICAgKmV2dGNobmRldjsKLSAgICB4ZW5nbnR0YWJf aGFuZGxlICAgKmdudHRhYmRldjsKLQotICAgIHN0cnVjdCBYZW5EZXZPcHMgICAqb3BzOwotICAg IFFUQUlMUV9FTlRSWShYZW5EZXZpY2UpIG5leHQ7Ci19OwotCi0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KIC8qIHZh cmlhYmxlcyAqLwogZXh0ZXJuIHhjX2ludGVyZmFjZSAqeGVuX3hjOwogZXh0ZXJuIHhlbmZvcmVp Z25tZW1vcnlfaGFuZGxlICp4ZW5fZm1lbTsKQEAgLTYzLDE0ICsxMyw3IEBAIGV4dGVybiBzdHJ1 Y3QgeHNfaGFuZGxlICp4ZW5zdG9yZTsKIGV4dGVybiBjb25zdCBjaGFyICp4ZW5fcHJvdG9jb2w7 CiBleHRlcm4gRGV2aWNlU3RhdGUgKnhlbl9zeXNkZXY7CiAKLS8qIHhlbnN0b3JlIGhlbHBlciBm dW5jdGlvbnMgKi8KIGludCB4ZW5zdG9yZV9ta2RpcihjaGFyICpwYXRoLCBpbnQgcCk7Ci1pbnQg eGVuc3RvcmVfd3JpdGVfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGNv bnN0IGNoYXIgKnZhbCk7Ci1pbnQgeGVuc3RvcmVfd3JpdGVfaW50KGNvbnN0IGNoYXIgKmJhc2Us IGNvbnN0IGNoYXIgKm5vZGUsIGludCBpdmFsKTsKLWludCB4ZW5zdG9yZV93cml0ZV9pbnQ2NChj b25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQ2NF90IGl2YWwpOwotY2hhciAq eGVuc3RvcmVfcmVhZF9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSk7Ci1p bnQgeGVuc3RvcmVfcmVhZF9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwg aW50ICppdmFsKTsKLQogaW50IHhlbnN0b3JlX3dyaXRlX2JlX3N0cihzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnZhbCk7CiBpbnQgeGVuc3Rv cmVfd3JpdGVfYmVfaW50KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9k ZSwgaW50IGl2YWwpOwogaW50IHhlbnN0b3JlX3dyaXRlX2JlX2ludDY0KHN0cnVjdCBYZW5EZXZp Y2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSwgaW50NjRfdCBpdmFsKTsKQEAgLTc4LDExICsy MSw5IEBAIGNoYXIgKnhlbnN0b3JlX3JlYWRfYmVfc3RyKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl diwgY29uc3QgY2hhciAqbm9kZSk7CiBpbnQgeGVuc3RvcmVfcmVhZF9iZV9pbnQoc3RydWN0IFhl bkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2YWwpOwogY2hhciAqeGVu c3RvcmVfcmVhZF9mZV9zdHIoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpu b2RlKTsKIGludCB4ZW5zdG9yZV9yZWFkX2ZlX2ludChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYs IGNvbnN0IGNoYXIgKm5vZGUsIGludCAqaXZhbCk7Ci1pbnQgeGVuc3RvcmVfcmVhZF91aW50NjQo Y29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbm9kZSwgdWludDY0X3QgKnV2YWwpOwogaW50 IHhlbnN0b3JlX3JlYWRfZmVfdWludDY0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3Qg Y2hhciAqbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqdXZhbCk7 CiAKLWNvbnN0IGNoYXIgKnhlbmJ1c19zdHJzdGF0ZShlbnVtIHhlbmJ1c19zdGF0ZSBzdGF0ZSk7 CiBzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5fYmVfZmluZF94ZW5kZXYoY29uc3QgY2hhciAqdHlwZSwg aW50IGRvbSwgaW50IGRldik7CiB2b2lkIHhlbl9iZV9jaGVja19zdGF0ZShzdHJ1Y3QgWGVuRGV2 aWNlICp4ZW5kZXYpOwogCkBAIC05NCw5ICszNSw2IEBAIGludCB4ZW5fYmVfc2V0X3N0YXRlKHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpOwogaW50IHhl bl9iZV9iaW5kX2V2dGNobihzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwogdm9pZCB4ZW5fYmVf dW5iaW5kX2V2dGNobihzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwogaW50IHhlbl9iZV9zZW5k X25vdGlmeShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOwotdm9pZCB4ZW5fYmVfcHJpbnRmKHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgaW50IG1zZ19sZXZlbCwKLSAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpmbXQsIC4uLikgIEdDQ19GTVRfQVRUUigzLCA0KTsKLQogCiAvKiBhY3R1 YWwgYmFja2VuZCBkcml2ZXJzICovCiBleHRlcm4gc3RydWN0IFhlbkRldk9wcyB4ZW5fY29uc29s ZV9vcHM7ICAgICAgLyogeGVuX2NvbnNvbGUuYyAgICAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUv aHcveGVuL3hlbl9wdmRldi5oIGIvaW5jbHVkZS9ody94ZW4veGVuX3B2ZGV2LmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QzZDZiYwotLS0gL2Rldi9udWxsCisrKyBiL2lu Y2x1ZGUvaHcveGVuL3hlbl9wdmRldi5oCkBAIC0wLDAgKzEsNjkgQEAKKyNpZm5kZWYgUUVNVV9I V19YRU5fUFZERVZfSAorI2RlZmluZSBRRU1VX0hXX1hFTl9QVkRFVl9ICisKKyNpbmNsdWRlICJo dy94ZW4veGVuX2NvbW1vbi5oIgorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIFhFTl9CVUZTSVpFIDEw MjQKKworc3RydWN0IFhlbkRldmljZTsKKworLyogZHJpdmVyIHVzZXMgZ3JhbnQgdGFibGVzICAt PiAgb3BlbiBnbnRkZXYgZGV2aWNlICh4ZW5kZXYtPmdudHRhYmRldikgKi8KKyNkZWZpbmUgREVW T1BTX0ZMQUdfTkVFRF9HTlRERVYgICAxCisvKiBkb24ndCBleHBlY3QgZnJvbnRlbmQgZG9pbmcg Y29ycmVjdCBzdGF0ZSB0cmFuc2l0aW9ucyAoYWthIGNvbnNvbGUgcXVpcmspICovCisjZGVmaW5l IERFVk9QU19GTEFHX0lHTk9SRV9TVEFURSAgMgorCitzdHJ1Y3QgWGVuRGV2T3BzIHsKKyAgICBz aXplX3QgICAgc2l6ZTsKKyAgICB1aW50MzJfdCAgZmxhZ3M7CisgICAgdm9pZCAgICAgICgqYWxs b2MpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CisgICAgaW50ICAgICAgICgqaW5pdCkoc3Ry dWN0IFhlbkRldmljZSAqeGVuZGV2KTsKKyAgICBpbnQgICAgICAgKCppbml0aWFsaXNlKShzdHJ1 Y3QgWGVuRGV2aWNlICp4ZW5kZXYpOworICAgIHZvaWQgICAgICAoKmNvbm5lY3RlZCkoc3RydWN0 IFhlbkRldmljZSAqeGVuZGV2KTsKKyAgICB2b2lkICAgICAgKCpldmVudCkoc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2KTsKKyAgICB2b2lkICAgICAgKCpkaXNjb25uZWN0KShzdHJ1Y3QgWGVuRGV2 aWNlICp4ZW5kZXYpOworICAgIGludCAgICAgICAoKmZyZWUpKHN0cnVjdCBYZW5EZXZpY2UgKnhl bmRldik7CisgICAgdm9pZCAgICAgICgqYmFja2VuZF9jaGFuZ2VkKShzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUpOworICAgIHZvaWQgICAgICAoKmZyb250ZW5kX2No YW5nZWQpKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSk7CisgICAg aW50ICAgICAgICgqYmFja2VuZF9yZWdpc3Rlcikodm9pZCk7Cit9OworCitzdHJ1Y3QgWGVuRGV2 aWNlIHsKKyAgICBjb25zdCBjaGFyICAgICAgICAgKnR5cGU7CisgICAgaW50ICAgICAgICAgICAg ICAgIGRvbTsKKyAgICBpbnQgICAgICAgICAgICAgICAgZGV2OworICAgIGNoYXIgICAgICAgICAg ICAgICBuYW1lWzY0XTsKKyAgICBpbnQgICAgICAgICAgICAgICAgZGVidWc7CisKKyAgICBlbnVt IHhlbmJ1c19zdGF0ZSAgYmVfc3RhdGU7CisgICAgZW51bSB4ZW5idXNfc3RhdGUgIGZlX3N0YXRl OworICAgIGludCAgICAgICAgICAgICAgICBvbmxpbmU7CisgICAgY2hhciAgICAgICAgICAgICAg IGJlW1hFTl9CVUZTSVpFXTsKKyAgICBjaGFyICAgICAgICAgICAgICAgKmZlOworICAgIGNoYXIg ICAgICAgICAgICAgICAqcHJvdG9jb2w7CisgICAgaW50ICAgICAgICAgICAgICAgIHJlbW90ZV9w b3J0OworICAgIGludCAgICAgICAgICAgICAgICBsb2NhbF9wb3J0OworCisgICAgeGVuZXZ0Y2hu X2hhbmRsZSAgICpldnRjaG5kZXY7CisgICAgeGVuZ250dGFiX2hhbmRsZSAgICpnbnR0YWJkZXY7 CisKKyAgICBzdHJ1Y3QgWGVuRGV2T3BzICAgKm9wczsKKyAgICBRVEFJTFFfRU5UUlkoWGVuRGV2 aWNlKSBuZXh0OworfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiB4ZW5zdG9yZSBoZWxwZXIgZnVuY3Rp b25zICovCitpbnQgeGVuc3RvcmVfd3JpdGVfc3RyKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNo YXIgKm5vZGUsIGNvbnN0IGNoYXIgKnZhbCk7CitpbnQgeGVuc3RvcmVfd3JpdGVfaW50KGNvbnN0 IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIGludCBpdmFsKTsKK2ludCB4ZW5zdG9yZV93 cml0ZV9pbnQ2NChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQ2NF90IGl2 YWwpOworY2hhciAqeGVuc3RvcmVfcmVhZF9zdHIoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hh ciAqbm9kZSk7CitpbnQgeGVuc3RvcmVfcmVhZF9pbnQoY29uc3QgY2hhciAqYmFzZSwgY29uc3Qg Y2hhciAqbm9kZSwgaW50ICppdmFsKTsKK2ludCB4ZW5zdG9yZV9yZWFkX3VpbnQ2NChjb25zdCBj aGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCB1aW50NjRfdCAqdXZhbCk7CisKK2NvbnN0IGNo YXIgKnhlbmJ1c19zdHJzdGF0ZShlbnVtIHhlbmJ1c19zdGF0ZSBzdGF0ZSk7CisKK3ZvaWQgeGVu X2JlX3ByaW50ZihzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGludCBtc2dfbGV2ZWwsCisgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pICBHQ0NfRk1UX0FUVFIoMywgNCk7 CisKKyNlbmRpZiAvKiBRRU1VX0hXX1hFTl9QVkRFVl9IICovCi0tIAoxLjkuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=