From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?q?Mathieu_Gagn=E9?= Subject: [PATCH 3 of 4 v2] xl: add support for vif rate limiting Date: Mon, 16 Apr 2012 21:58:25 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org VGhlIGByYXRlYCBrZXl3b3JkIHNwZWNpZmllcyB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgb3V0Z29p bmcgdHJhZmZpYyB3aWxsIGJlIGxpbWl0ZWQgdG8uClRoZSBkZWZhdWx0IGlmIHRoaXMga2V5d29y ZCBpcyBub3Qgc3BlY2lmaWVkIGlzIHVubGltaXRlZC4KClRoZSBgcmF0ZWAga2V5d29yZCBzdXBw b3J0cyBhbiBvcHRpb25hbCByZXBsZW5pc2htZW50IGludGVydmFsIHBhcmFtZXRlciBmb3Igc3Bl Y2lmeWluZwp0aGUgZ3JhbnVsYXJpdHkgb2YgY3JlZGl0IHJlcGxlbmlzaG1lbnQuIEl0IGRldGVy bWluZXMgdGhlIGZyZXF1ZW5jeSBhdCB3aGljaAp0aGUgdmlmIHRyYW5zbWlzc2lvbiBjcmVkaXQg aXMgcmVwbGVuaXNoZWQuIFRoZSBkZWZhdWx0IGludGVydmFsIGlzIDUwbXMuCgpGb3IgZXhhbXBs ZToKCiAgICAgICAgJ3JhdGU9MTBNYi9zJwogICAgICAgICdyYXRlPTI1MEtCL3MnCiAgICAgICAg J3JhdGU9MU1CL3NAMjBtcycKClNpZ25lZC1vZmYtYnk6IE1hdGhpZXUgR2FnbsOpIDxtZ2FnbmVA aXdlYi5jb20+CgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hsLW5ldHdvcmstY29uZmlndXJhdGlv bi5tYXJrZG93biBiL2RvY3MvbWlzYy94bC1uZXR3b3JrLWNvbmZpZ3VyYXRpb24ubWFya2Rvd24K LS0tIGEvZG9jcy9taXNjL3hsLW5ldHdvcmstY29uZmlndXJhdGlvbi5tYXJrZG93bgorKysgYi9k b2NzL21pc2MveGwtbmV0d29yay1jb25maWd1cmF0aW9uLm1hcmtkb3duCkBAIC0xMjIsNSArMTIy LDM0IEBAIFNwZWNpZmllcyB0aGUgYmFja2VuZCBkb21haW4gd2hpY2ggdGhpcyAKIGRlZmF1bHRz IHRvIGRvbWFpbiAwLiBTcGVjaWZ5aW5nIGFub3RoZXIgZG9tYWluIHJlcXVpcmVzIHNldHRpbmcg dXAgYQogZHJpdmVyIGRvbWFpbiB3aGljaCBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIGRv Y3VtZW50LgogCisjIyMgcmF0ZQorCitTcGVjaWZpZXMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIG91 dGdvaW5nIHRyYWZmaWMgd2lsbCBiZSBsaW1pdGVkIHRvLgorVGhlIGRlZmF1bHQgaWYgdGhpcyBr ZXl3b3JkIGlzIG5vdCBzcGVjaWZpZWQgaXMgdW5saW1pdGVkLgorCitUaGUgcmF0ZSBtYXkgYmUg c3BlY2lmaWVkIGFzICI8UkFURT4vcyIgb3Igb3B0aW9uYWxseSAiPFJBVEU+L3NAPElOVEVSVkFM PiIuCisKKyAgKiBgUkFURWAgaXMgaW4gYnl0ZXMgYW5kIGNhbiBhY2NlcHQgc3VmZml4ZXM6Cisg ICAgICAqIEdCLCBNQiwgS0IsIEIgZm9yIGJ5dGVzLgorICAgICAgKiBHYiwgTWIsIEtiLCBiIGZv ciBiaXRzLgorICAqIGBJTlRFUlZBTGAgaXMgaW4gbWljcm9zZWNvbmRzIGFuZCBjYW4gYWNjZXB0 IHN1ZmZpeGVzOiBtcywgdXMsIHMuCisgICAgSXQgZGV0ZXJtaW5lcyB0aGUgZnJlcXVlbmN5IGF0 IHdoaWNoIHRoZSB2aWYgdHJhbnNtaXNzaW9uIGNyZWRpdAorICAgIGlzIHJlcGxlbmlzaGVkLiBU aGUgZGVmYXVsdCBpcyA1MG1zLgorCitWaWYgcmF0ZSBsaW1pdGluZyBpcyBjcmVkaXQtYmFzZWQu IEl0IG1lYW5zIHRoYXQgZm9yICIxTUIvc0AyMG1zIiwgdGhlCithdmFpbGFibGUgY3JlZGl0IHdp bGwgYmUgZXF1aXZhbGVudCBvZiB0aGUgdHJhZmZpYyB5b3Ugd291bGQgaGF2ZSBkb25lCithdCAi MU1CL3MiIGR1cmluZyAyMG1zLiBUaGlzIHdpbGwgcmVzdWx0cyBpbiBhIGNyZWRpdCBvZiAyMCww MDAgYnl0ZXMKK3JlcGxlbmlzaGVkIGV2ZXJ5IDIwLDAwMCB1cy4KKworRm9yIGV4YW1wbGU6CisK KyAgICAgICAgJ3JhdGU9MTBNYi9zJyAtLSBtZWFuaW5nIHVwIHRvIDEwIG1lZ2FiaXRzIGV2ZXJ5 IHNlY29uZAorICAgICAgICAncmF0ZT0yNTBLQi9zJyAtLSBtZWFuaW5nIHVwIHRvIDI1MCBraWxv Ynl0ZXMgZXZlcnkgc2Vjb25kCisgICAgICAgICdyYXRlPTFNQi9zQDIwbXMnIC0tIG1lYW5pbmcg MjAsMDAwIGJ5dGVzIGluIGV2ZXJ5IDIwIG1pbGxpc2Vjb25kIHBlcmlvZAorCitOT1RFOiBUaGUg YWN0dWFsIHVuZGVybHlpbmcgbGltaXRzIG9mIHJhdGUgbGltaXRpbmcgYXJlIGRlcGVuZGVudAor b24gdGhlIHVuZGVybHlpbmcgbmV0YmFjayBpbXBsZW1lbnRhdGlvbi4KKworCiBbb3VpXTogaHR0 cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Pcmdhbml6YXRpb25hbGx5X1VuaXF1ZV9JZGVudGlm aWVyCiBbbmV0XTogaHR0cDovL3dpa2kueGVuLm9yZy93aWtpL0hvc3RDb25maWd1cmF0aW9uL05l dHdvcmtpbmcKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlIGIvdG9vbHMvbGlieGwv TWFrZWZpbGUKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlieGwvTWFr ZWZpbGUKQEAgLTYxLDcgKzYxLDcgQEAgTElCWExfT0JKUyArPSBfbGlieGxfdHlwZXMubyBsaWJ4 bF9mbGFzawogQVVUT0lOQ1M9IGxpYnhsdV9jZmdfeS5oIGxpYnhsdV9jZmdfbC5oIF9saWJ4bF9s aXN0LmgKIEFVVE9TUkNTPSBsaWJ4bHVfY2ZnX3kuYyBsaWJ4bHVfY2ZnX2wuYwogTElCWExVX09C SlMgPSBsaWJ4bHVfY2ZnX3kubyBsaWJ4bHVfY2ZnX2wubyBsaWJ4bHVfY2ZnLm8gXAotCWxpYnhs dV9kaXNrX2wubyBsaWJ4bHVfZGlzay5vIGxpYnhsdV9wY2kubworCWxpYnhsdV9kaXNrX2wubyBs aWJ4bHVfZGlzay5vIGxpYnhsdV92aWYubyBsaWJ4bHVfcGNpLm8KICQoTElCWExVX09CSlMpOiBD RkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgIyBGb3IgeGVudG9vbGxvZy5oCiAKIENMSUVO VFMgPSB4bCB0ZXN0aWRsCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5jIGIvdG9vbHMv bGlieGwvbGlieGwuYwotLS0gYS90b29scy9saWJ4bC9saWJ4bC5jCisrKyBiL3Rvb2xzL2xpYnhs L2xpYnhsLmMKQEAgLTE4NTQsNiArMTg1NCwxMyBAQCBpbnQgbGlieGxfZGV2aWNlX25pY19hZGQo bGlieGxfY3R4ICpjdHgsCiAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3N0 cmR1cChnYywgbmljLT5pcCkpOwogICAgIH0KIAorICAgIGlmIChuaWMtPnJhdGVfaW50ZXJ2YWxf dXNlY3MgPiAwKSB7CisgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInJhdGUiKTsKKyAg ICAgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBsaWJ4bF9fc3ByaW50ZihnYywgIiVsbHUsJWx1 IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSBuaWMt PnJhdGVfYnl0ZXNfcGVyX2ludGVydmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1 bnNpZ25lZCBsb25nKSBuaWMtPnJhdGVfaW50ZXJ2YWxfdXNlY3MpKTsKKyAgICB9CisKICAgICBm bGV4YXJyYXlfYXBwZW5kKGJhY2ssICJicmlkZ2UiKTsKICAgICBmbGV4YXJyYXlfYXBwZW5kKGJh Y2ssIGxpYnhsX19zdHJkdXAoZ2MsIG5pYy0+YnJpZGdlKSk7CiAgICAgZmxleGFycmF5X2FwcGVu ZChiYWNrLCAiaGFuZGxlIik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5p ZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtMzQzLDYgKzM0 Myw4IEBAIGxpYnhsX2RldmljZV9uaWMgPSBTdHJ1Y3QoImRldmljZV9uaWMiLCAKICAgICAoImlm bmFtZSIsIHN0cmluZyksCiAgICAgKCJzY3JpcHQiLCBzdHJpbmcpLAogICAgICgibmljdHlwZSIs IGxpYnhsX25pY190eXBlKSwKKyAgICAoInJhdGVfYnl0ZXNfcGVyX2ludGVydmFsIiwgdWludDY0 KSwKKyAgICAoInJhdGVfaW50ZXJ2YWxfdXNlY3MiLCB1aW50MzIpLAogICAgIF0pCiAKIGxpYnhs X2RldmljZV9wY2kgPSBTdHJ1Y3QoImRldmljZV9wY2kiLCBbCmRpZmYgLS1naXQgYS90b29scy9s aWJ4bC9saWJ4bHVfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsdV9pbnRlcm5hbC5oCi0t LSBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs dV9pbnRlcm5hbC5oCkBAIC0xNyw5ICsxNywxMSBAQAogI2RlZmluZSBMSUJYTFVfSU5URVJOQUxf SAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxl cnJuby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1 ZGUgPHJlZ2V4Lmg+CiAKICNkZWZpbmUgWExVX0NvbmZpZ0xpc3QgWExVX0NvbmZpZ1NldHRpbmcK IApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGx1X3ZpZi5jIGIvdG9vbHMvbGlieGwvbGli eGx1X3ZpZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMv bGlieGwvbGlieGx1X3ZpZi5jCkBAIC0wLDAgKzEsMTQxIEBACisjaW5jbHVkZSAibGlieGxfb3Nk ZXBzLmgiIC8qIG11c3QgY29tZSBiZWZvcmUgYW55IG90aGVyIGhlYWRlcnMgKi8KKyNpbmNsdWRl ICJsaWJ4bHVfaW50ZXJuYWwuaCIKKworc3RhdGljIGNvbnN0IGNoYXIgKnZpZl9ieXRlc19wZXJf c2VjX3JlID0gIl5bMC05XStbR01LXT9bQmJdL3MkIjsKK3N0YXRpYyBjb25zdCBjaGFyICp2aWZf aW50ZXJuYWxfdXNlY19yZSA9ICJeWzAtOV0rW211XT9zPyQiOworCitzdGF0aWMgdm9pZCB4bHVf X3ZpZl9lcnIoWExVX0NvbmZpZyAqY2ZnLCBjb25zdCBjaGFyICptc2csIGNvbnN0IGNoYXIgKnJh dGUpIHsKKyAgICBmcHJpbnRmKGNmZy0+cmVwb3J0LAorICAgICAgICAgICAgIiVzOiBjb25maWcg cGFyc2luZyBlcnJvciBpbiB2aWY6ICVzIGluIGAlcydcbiIsCisgICAgICAgICAgICBjZmctPmZp bGVuYW1lLCBtc2csIHJhdGUpOworfQorCitzdGF0aWMgaW50IHZpZl9wYXJzZV9yYXRlX2J5dGVz X3Blcl9zZWMoWExVX0NvbmZpZyAqY2ZnLCBjb25zdCBjaGFyICpieXRlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqYnl0ZXNfcGVyX3NlYykKK3sK KyAgICByZWdleF90IHJlYzsKKyAgICB1aW50NjRfdCB0bXAgPSAwOworICAgIGNvbnN0IGNoYXIg KnA7CisgICAgaW50IHJjID0gMDsKKworICAgIHJlZ2NvbXAoJnJlYywgdmlmX2J5dGVzX3Blcl9z ZWNfcmUsIFJFR19FWFRFTkRFRHxSRUdfTk9TVUIpOworICAgIGlmIChyZWdleGVjKCZyZWMsIGJ5 dGVzLCAwLCBOVUxMLCAwKSkgeworICAgICAgICB4bHVfX3ZpZl9lcnIoY2ZnLCAiaW52YWxpZCBy YXRlIiwgYnl0ZXMpOworICAgICAgICByYyA9IEVJTlZBTDsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgcCA9IGJ5dGVzOworICAgIHRtcCA9IHN0cnRvdWxsKHAsIChjaGFyKiopJnAs IDApOworICAgIGlmICh0bXAgPT0gMCB8fCB0bXAgPiBVSU5UMzJfTUFYIHx8IGVycm5vID09IEVS QU5HRSkgeworICAgICAgICB4bHVfX3ZpZl9lcnIoY2ZnLCAicmF0ZSBvdmVyZmxvdyIsIGJ5dGVz KTsKKyAgICAgICAgcmMgPSBFT1ZFUkZMT1c7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwor ICAgIGlmICgqcCA9PSAnRycpCisgICAgICAgdG1wICo9IDEwMDAgKiAxMDAwICogMTAwMDsKKyAg ICBlbHNlIGlmICgqcCA9PSAnTScpCisgICAgICAgdG1wICo9IDEwMDAgKiAxMDAwOworICAgIGVs c2UgaWYgKCpwID09ICdLJykKKyAgICAgICB0bXAgKj0gMTAwMDsKKyAgICBpZiAoKnAgPT0gJ2In IHx8ICoocCsxKSA9PSAnYicpCisgICAgICAgdG1wIC89IDg7CisKKyAgICAqYnl0ZXNfcGVyX3Nl YyA9IHRtcDsKKworb3V0OgorICAgIHJlZ2ZyZWUoJnJlYyk7CisgICAgcmV0dXJuIHJjOworfQor CitzdGF0aWMgaW50IHZpZl9wYXJzZV9yYXRlX2ludGVydmFsX3VzZWNzKFhMVV9Db25maWcgKmNm ZywgY29uc3QgY2hhciAqaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90ICppbnRlcnZhbF91c2VjcykKK3sKKyAgICByZWdleF90IHJlYzsK KyAgICB1aW50NjRfdCB0bXAgPSAwOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgaW50IHJjID0g MDsKKworICAgIHJlZ2NvbXAoJnJlYywgdmlmX2ludGVybmFsX3VzZWNfcmUsIFJFR19FWFRFTkRF RHxSRUdfTk9TVUIpOworICAgIGlmIChyZWdleGVjKCZyZWMsIGludGVydmFsLCAwLCBOVUxMLCAw KSkgeworICAgICAgICB4bHVfX3ZpZl9lcnIoY2ZnLCAiaW52YWxpZCByZXBsZW5pc2htZW50IGlu dGVydmFsIiwgaW50ZXJ2YWwpOworICAgICAgICByYyA9IEVJTlZBTDsKKyAgICAgICAgZ290byBv dXQ7CisgICAgfQorCisgICAgcCA9IGludGVydmFsOworICAgIHRtcCA9IHN0cnRvdWxsKHAsIChj aGFyKiopJnAsIDApOworICAgIGlmICh0bXAgPT0gMCB8fCB0bXAgPiBVSU5UMzJfTUFYIHx8IGVy cm5vID09IEVSQU5HRSkgeworICAgICAgICB4bHVfX3ZpZl9lcnIoY2ZnLCAicmVwbGVuaXNobWVu dCBpbnRlcnZhbCBvdmVyZmxvdyIsIGludGVydmFsKTsKKyAgICAgICAgcmMgPSBFT1ZFUkZMT1c7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICgqcCA9PSAncycgfHwgKnAgPT0g J1wwJykKKyAgICAgICAgdG1wICo9IDEwMDAgKiAxMDAwOworICAgIGVsc2UgaWYgKCpwID09ICdt JykKKyAgICAgICAgdG1wICo9IDEwMDA7CisKKyAgICBpZiAodG1wID4gVUlOVDMyX01BWCkgewor ICAgICAgICB4bHVfX3ZpZl9lcnIoY2ZnLCAicmVwbGVuaXNobWVudCBpbnRlcnZhbCBvdmVyZmxv dyIsIGludGVydmFsKTsKKyAgICAgICAgcmMgPSBFT1ZFUkZMT1c7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KKworICAgICppbnRlcnZhbF91c2VjcyA9ICh1aW50MzJfdCkgdG1wOworCitvdXQ6 CisgICAgcmVnZnJlZSgmcmVjKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB4bHVfdmlmX3Bh cnNlX3JhdGUoWExVX0NvbmZpZyAqY2ZnLCBjb25zdCBjaGFyICpyYXRlLCBsaWJ4bF9kZXZpY2Vf bmljICpuaWMpCit7CisgICAgdWludDY0X3QgYnl0ZXNfcGVyX3NlYyA9IDA7CisgICAgdWludDY0 X3QgYnl0ZXNfcGVyX2ludGVydmFsID0gMDsKKyAgICB1aW50MzJfdCBpbnRlcnZhbF91c2VjcyA9 IDUwMDAwVUw7IC8qIERlZmF1bHQgdG8gNTBtcyAqLworICAgIGNoYXIgKnJhdGV0b2ssICp0bXBy YXRlOworICAgIGludCByYyA9IDA7CisKKyAgICB0bXByYXRlID0gc3RyZHVwKHJhdGUpOworICAg IGlmICghc3RyY21wKHRtcHJhdGUsIiIpKSB7CisgICAgICAgIHhsdV9fdmlmX2VycihjZmcsICJu byByYXRlIHNwZWNpZmllZCIsIHJhdGUpOworICAgICAgICByYyA9IEVJTlZBTDsKKyAgICAgICAg Z290byBvdXQ7CisgICAgfQorCisgICAgcmF0ZXRvayA9IHN0cnRvayh0bXByYXRlLCAiQCIpOwor ICAgIHJjID0gdmlmX3BhcnNlX3JhdGVfYnl0ZXNfcGVyX3NlYyhjZmcsIHJhdGV0b2ssICZieXRl c19wZXJfc2VjKTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgcmF0ZXRvayA9IHN0cnRv ayhOVUxMLCAiQCIpOworICAgIGlmIChyYXRldG9rICE9IE5VTEwpIHsKKyAgICAgICAgcmMgPSB2 aWZfcGFyc2VfcmF0ZV9pbnRlcnZhbF91c2VjcyhjZmcsIHJhdGV0b2ssICZpbnRlcnZhbF91c2Vj cyk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKGludGVydmFs X3VzZWNzICE9IDAgJiYgKGJ5dGVzX3Blcl9zZWMgPiAoVUlOVDY0X01BWCAvIGludGVydmFsX3Vz ZWNzKSkpIHsKKyAgICAgICAgeGx1X192aWZfZXJyKGNmZywgInJhdGUgb3ZlcmZsb3ciLCByYXRl KTsKKyAgICAgICAgcmMgPSBFT1ZFUkZMT1c7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwor ICAgIGJ5dGVzX3Blcl9pbnRlcnZhbCA9CisgICAgICAgICgoKHVpbnQ2NF90KSBieXRlc19wZXJf c2VjICogKHVpbnQ2NF90KSBpbnRlcnZhbF91c2VjcykgLyAxMDAwMDAwVUwpOworCisgICAgbmlj LT5yYXRlX2ludGVydmFsX3VzZWNzID0gaW50ZXJ2YWxfdXNlY3M7CisgICAgbmljLT5yYXRlX2J5 dGVzX3Blcl9pbnRlcnZhbCA9IGJ5dGVzX3Blcl9pbnRlcnZhbDsKKworb3V0OgorICAgIGZyZWUo dG1wcmF0ZSk7CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgor ICogbW9kZTogQworICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bHV0aWwuaCBiL3Rv b2xzL2xpYnhsL2xpYnhsdXRpbC5oCi0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsdXRpbC5oCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsdXRpbC5oCkBAIC05NCw2ICs5NCwxMyBAQCBpbnQgeGx1X2Rpc2tf cGFyc2UoWExVX0NvbmZpZyAqY2ZnLCBpbnQgCiBpbnQgeGx1X3BjaV9wYXJzZV9iZGYoWExVX0Nv bmZpZyAqY2ZnLCBsaWJ4bF9kZXZpY2VfcGNpICpwY2lkZXYsIGNvbnN0IGNoYXIgKnN0cik7CiAK IAorLyoKKyAqIFZpZiByYXRlIHBhcnNpbmcuCisgKi8KKworaW50IHhsdV92aWZfcGFyc2VfcmF0 ZShYTFVfQ29uZmlnICpjZmcsIGNvbnN0IGNoYXIgKnJhdGUsCisgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX2RldmljZV9uaWMgKm5pYyk7CisKICNlbmRpZiAvKiBMSUJYTFVUSUxfSCAqLwog CiAvKgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwv eGxfY21kaW1wbC5jCi0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29scy9s aWJ4bC94bF9jbWRpbXBsLmMKQEAgLTQwMyw2ICs0MDMsMjQgQEAgc3RhdGljIHZvaWQgcGFyc2Vf ZGlza19jb25maWcoWExVX0NvbmZpZwogICAgIHBhcnNlX2Rpc2tfY29uZmlnX211bHRpc3RyaW5n KGNvbmZpZywgMSwgJnNwZWMsIGRpc2spOwogfQogCitzdGF0aWMgdm9pZCBwYXJzZV92aWZfcmF0 ZShYTFVfQ29uZmlnICoqY29uZmlnLCBjb25zdCBjaGFyICpyYXRlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfZGV2aWNlX25pYyAqbmljKQoreworICAgIGludCBlOworCisgICAg aWYgKCEqY29uZmlnKSB7CisgICAgICAgICpjb25maWcgPSB4bHVfY2ZnX2luaXQoc3RkZXJyLCAi Y29tbWFuZCBsaW5lIik7CisgICAgICAgIGlmICghKmNvbmZpZykgeyBwZXJyb3IoInhsdV9jZmdf aW5pdCIpOyBleGl0KC0xKTsgfQorICAgIH0KKworICAgIGUgPSB4bHVfdmlmX3BhcnNlX3JhdGUo KmNvbmZpZywgcmF0ZSwgbmljKTsKKyAgICBpZiAoZSA9PSBFSU5WQUwgfHwgZSA9PSBFT1ZFUkZM T1cpIGV4aXQoLTEpOworICAgIGlmIChlKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCJ4bHVf dmlmX3BhcnNlX3JhdGUgZmFpbGVkOiAlc1xuIixzdHJlcnJvcihlcnJubykpOworICAgICAgICBl eGl0KC0xKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHNwbGl0X3N0cmluZ19pbnRvX3N0cmlu Z19saXN0KGNvbnN0IGNoYXIgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmRlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfc3RyaW5nX2xpc3QgKnBzbCkKQEAgLTkwNiw3ICs5MjQsNyBA QCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyCiAgICAgICAgICAgICAg ICAgICAgICAgICBuaWMtPmJhY2tlbmRfZG9taWQgPSAwOwogICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHAsICJyYXRlIikpIHsKLSAgICAg ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ0aGUgcmF0ZSBwYXJhbWV0ZXIgZm9yIHZp ZnMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcbiIpOworICAgICAgICAgICAgICAgICAgICBw YXJzZV92aWZfcmF0ZSgmY29uZmlnLCAocDIgKyAxKSwgbmljKTsKICAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKCFzdHJjbXAocCwgImFjY2VsIikpIHsKICAgICAgICAgICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJ0aGUgYWNjZWwgcGFyYW1ldGVyIGZvciB2aWZzIGlzIGN1cnJlbnRseSBu b3Qgc3VwcG9ydGVkXG4iKTsKICAgICAgICAgICAgICAgICB9CkBAIC00ODU1LDYgKzQ4NzMsNyBA QCBpbnQgbWFpbl9uZXR3b3JrYXR0YWNoKGludCBhcmdjLCBjaGFyICoqCiB7CiAgICAgaW50IG9w dDsKICAgICBsaWJ4bF9kZXZpY2VfbmljIG5pYzsKKyAgICBYTFVfQ29uZmlnICpjb25maWcgPSAw OwogICAgIGNoYXIgKmVuZHB0ciwgKm9wYXJnOwogICAgIGNvbnN0IGNoYXIgKnRvazsKICAgICBp bnQgaTsKQEAgLTQ5MTAsNiArNDkyOSw3IEBAIGludCBtYWluX25ldHdvcmthdHRhY2goaW50IGFy Z2MsIGNoYXIgKioKICAgICAgICAgfSBlbHNlIGlmIChNQVRDSF9PUFRJT04oIm1vZGVsIiwgKmFy Z3YsIG9wYXJnKSkgewogICAgICAgICAgICAgcmVwbGFjZV9zdHJpbmcoJm5pYy5tb2RlbCwgb3Bh cmcpOwogICAgICAgICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigicmF0ZSIsICphcmd2LCBvcGFy ZykpIHsKKyAgICAgICAgICAgIHBhcnNlX3ZpZl9yYXRlKCZjb25maWcsIG9wYXJnLCAmbmljKTsK ICAgICAgICAgfSBlbHNlIGlmIChNQVRDSF9PUFRJT04oImFjY2VsIiwgKmFyZ3YsIG9wYXJnKSkg ewogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnJlY29n bml6ZWQgYXJndW1lbnQgYCVzJ1xuIiwgKmFyZ3YpOwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=