From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?q?Mathieu_Gagn=E9?= Subject: [PATCH 3 of 4 v3] xl: add support for vif rate limiting Date: Mon, 16 Apr 2012 23:51:25 -0400 Message-ID: <4130bb154f3436a9adf4.1334634685@mgagne.users.dev.iweb.com> 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 bmcgdHJhZmZpYwp3aWxsIGJlIGxpbWl0ZWQgdG8uIFRoZSBkZWZhdWx0IGlmIHRoaXMga2V5d29y ZCBpcyBub3Qgc3BlY2lmaWVkCmlzIHVubGltaXRlZC4KClRoZSBgcmF0ZWAga2V5d29yZCBzdXBw b3J0cyBhbiBvcHRpb25hbCByZXBsZW5pc2htZW50IGludGVydmFsCnBhcmFtZXRlciBmb3Igc3Bl Y2lmeWluZyB0aGUgZ3JhbnVsYXJpdHkgb2YgY3JlZGl0IHJlcGxlbmlzaG1lbnQuCkl0IGRldGVy bWluZXMgdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0aGUgdmlmIHRyYW5zbWlzc2lvbiBjcmVkaXQK aXMgcmVwbGVuaXNoZWQuIFRoZSBkZWZhdWx0IGludGVydmFsIGlzIDUwbXMuCgpGb3IgZXhhbXBs ZToKCiAgICAgICAgJ3JhdGU9MTBNYi9zJwogICAgICAgICdyYXRlPTI1MEtCL3MnCiAgICAgICAg J3JhdGU9MU1CL3NAMjBtcycKClNpZ25lZC1vZmYtYnk6IE1hdGhpZXUgR2FnbsOpIDxtZ2FnbmVA aXdlYi5jb20+CkFja2VkLWJ5OiBJYW4gQ2FtcGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29t PgoKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94bC1uZXR3b3JrLWNvbmZpZ3VyYXRpb24ubWFya2Rv d24gYi9kb2NzL21pc2MveGwtbmV0d29yay1jb25maWd1cmF0aW9uLm1hcmtkb3duCi0tLSBhL2Rv Y3MvbWlzYy94bC1uZXR3b3JrLWNvbmZpZ3VyYXRpb24ubWFya2Rvd24KKysrIGIvZG9jcy9taXNj L3hsLW5ldHdvcmstY29uZmlndXJhdGlvbi5tYXJrZG93bgpAQCAtMTIyLDUgKzEyMiwzNCBAQCBT cGVjaWZpZXMgdGhlIGJhY2tlbmQgZG9tYWluIHdoaWNoIHRoaXMgCiBkZWZhdWx0cyB0byBkb21h aW4gMC4gU3BlY2lmeWluZyBhbm90aGVyIGRvbWFpbiByZXF1aXJlcyBzZXR0aW5nIHVwIGEKIGRy aXZlciBkb21haW4gd2hpY2ggaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC4K IAorIyMjIHJhdGUKKworU3BlY2lmaWVzIHRoZSByYXRlIGF0IHdoaWNoIHRoZSBvdXRnb2luZyB0 cmFmZmljIHdpbGwgYmUgbGltaXRlZCB0by4KK1RoZSBkZWZhdWx0IGlmIHRoaXMga2V5d29yZCBp cyBub3Qgc3BlY2lmaWVkIGlzIHVubGltaXRlZC4KKworVGhlIHJhdGUgbWF5IGJlIHNwZWNpZmll ZCBhcyAiPFJBVEU+L3MiIG9yIG9wdGlvbmFsbHkgIjxSQVRFPi9zQDxJTlRFUlZBTD4iLgorCisg ICogYFJBVEVgIGlzIGluIGJ5dGVzIGFuZCBjYW4gYWNjZXB0IHN1ZmZpeGVzOgorICAgICAgKiBH QiwgTUIsIEtCLCBCIGZvciBieXRlcy4KKyAgICAgICogR2IsIE1iLCBLYiwgYiBmb3IgYml0cy4K KyAgKiBgSU5URVJWQUxgIGlzIGluIG1pY3Jvc2Vjb25kcyBhbmQgY2FuIGFjY2VwdCBzdWZmaXhl czogbXMsIHVzLCBzLgorICAgIEl0IGRldGVybWluZXMgdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0 aGUgdmlmIHRyYW5zbWlzc2lvbiBjcmVkaXQKKyAgICBpcyByZXBsZW5pc2hlZC4gVGhlIGRlZmF1 bHQgaXMgNTBtcy4KKworVmlmIHJhdGUgbGltaXRpbmcgaXMgY3JlZGl0LWJhc2VkLiBJdCBtZWFu cyB0aGF0IGZvciAiMU1CL3NAMjBtcyIsIHRoZQorYXZhaWxhYmxlIGNyZWRpdCB3aWxsIGJlIGVx dWl2YWxlbnQgb2YgdGhlIHRyYWZmaWMgeW91IHdvdWxkIGhhdmUgZG9uZQorYXQgIjFNQi9zIiBk dXJpbmcgMjBtcy4gVGhpcyB3aWxsIHJlc3VsdHMgaW4gYSBjcmVkaXQgb2YgMjAsMDAwIGJ5dGVz CityZXBsZW5pc2hlZCBldmVyeSAyMCwwMDAgdXMuCisKK0ZvciBleGFtcGxlOgorCisgICAgICAg ICdyYXRlPTEwTWIvcycgLS0gbWVhbmluZyB1cCB0byAxMCBtZWdhYml0cyBldmVyeSBzZWNvbmQK KyAgICAgICAgJ3JhdGU9MjUwS0IvcycgLS0gbWVhbmluZyB1cCB0byAyNTAga2lsb2J5dGVzIGV2 ZXJ5IHNlY29uZAorICAgICAgICAncmF0ZT0xTUIvc0AyMG1zJyAtLSBtZWFuaW5nIDIwLDAwMCBi eXRlcyBpbiBldmVyeSAyMCBtaWxsaXNlY29uZCBwZXJpb2QKKworTk9URTogVGhlIGFjdHVhbCB1 bmRlcmx5aW5nIGxpbWl0cyBvZiByYXRlIGxpbWl0aW5nIGFyZSBkZXBlbmRlbnQKK29uIHRoZSB1 bmRlcmx5aW5nIG5ldGJhY2sgaW1wbGVtZW50YXRpb24uCisKKwogW291aV06IGh0dHA6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvT3JnYW5pemF0aW9uYWxseV9VbmlxdWVfSWRlbnRpZmllcgogW25l dF06IGh0dHA6Ly93aWtpLnhlbi5vcmcvd2lraS9Ib3N0Q29uZmlndXJhdGlvbi9OZXR3b3JraW5n CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhsL01ha2VmaWxl Ci0tLSBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCkBA IC02MSw3ICs2MSw3IEBAIExJQlhMX09CSlMgKz0gX2xpYnhsX3R5cGVzLm8gbGlieGxfZmxhc2sK IEFVVE9JTkNTPSBsaWJ4bHVfY2ZnX3kuaCBsaWJ4bHVfY2ZnX2wuaCBfbGlieGxfbGlzdC5oCiBB VVRPU1JDUz0gbGlieGx1X2NmZ195LmMgbGlieGx1X2NmZ19sLmMKIExJQlhMVV9PQkpTID0gbGli eGx1X2NmZ195Lm8gbGlieGx1X2NmZ19sLm8gbGlieGx1X2NmZy5vIFwKLQlsaWJ4bHVfZGlza19s Lm8gbGlieGx1X2Rpc2subyBsaWJ4bHVfcGNpLm8KKwlsaWJ4bHVfZGlza19sLm8gbGlieGx1X2Rp c2subyBsaWJ4bHVfdmlmLm8gbGlieGx1X3BjaS5vCiAkKExJQlhMVV9PQkpTKTogQ0ZMQUdTICs9 ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICMgRm9yIHhlbnRvb2xsb2cuaAogCiBDTElFTlRTID0geGwg dGVzdGlkbApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuYyBiL3Rvb2xzL2xpYnhsL2xp YnhsLmMKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuYworKysgYi90b29scy9saWJ4bC9saWJ4bC5j CkBAIC0xODU0LDYgKzE4NTQsMTMgQEAgaW50IGxpYnhsX2RldmljZV9uaWNfYWRkKGxpYnhsX2N0 eCAqY3R4LAogICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIGxpYnhsX19zdHJkdXAoZ2Ms IG5pYy0+aXApKTsKICAgICB9CiAKKyAgICBpZiAobmljLT5yYXRlX2ludGVydmFsX3VzZWNzID4g MCkgeworICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJyYXRlIik7CisgICAgICAgIGZs ZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3NwcmludGYoZ2MsICIlIlBSSXU2NCIsJSJQUkl1 MzIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWMtPnJhdGVfYnl0ZXNfcGVyX2lu dGVydmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYy0+cmF0ZV9pbnRlcnZhbF91 c2VjcykpOworICAgIH0KKwogICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImJyaWRnZSIpOwog ICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3N0cmR1cChnYywgbmljLT5icmlkZ2Up KTsKICAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJoYW5kbGUiKTsKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAot LS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsCkBAIC0zNDMsNiArMzQzLDggQEAgbGlieGxfZGV2aWNlX25pYyA9IFN0cnVjdCgi ZGV2aWNlX25pYyIsIAogICAgICgiaWZuYW1lIiwgc3RyaW5nKSwKICAgICAoInNjcmlwdCIsIHN0 cmluZyksCiAgICAgKCJuaWN0eXBlIiwgbGlieGxfbmljX3R5cGUpLAorICAgICgicmF0ZV9ieXRl c19wZXJfaW50ZXJ2YWwiLCB1aW50NjQpLAorICAgICgicmF0ZV9pbnRlcnZhbF91c2VjcyIsIHVp bnQzMiksCiAgICAgXSkKIAogbGlieGxfZGV2aWNlX3BjaSA9IFN0cnVjdCgiZGV2aWNlX3BjaSIs IFsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9pbnRlcm5hbC5oIGIvdG9vbHMvbGli eGwvbGlieGx1X2ludGVybmFsLmgKLS0tIGEvdG9vbHMvbGlieGwvbGlieGx1X2ludGVybmFsLmgK KysrIGIvdG9vbHMvbGlieGwvbGlieGx1X2ludGVybmFsLmgKQEAgLTE3LDkgKzE3LDExIEBACiAj ZGVmaW5lIExJQlhMVV9JTlRFUk5BTF9ICiAKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg PHN0ZGxpYi5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5j bHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8cmVnZXguaD4KIAogI2RlZmluZSBYTFVfQ29uZmln TGlzdCBYTFVfQ29uZmlnU2V0dGluZwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bHVf dmlmLmMgYi90b29scy9saWJ4bC9saWJ4bHVfdmlmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy9saWJ4bC9saWJ4bHVfdmlmLmMKQEAgLTAsMCArMSwxNDEg QEAKKyNpbmNsdWRlICJsaWJ4bF9vc2RlcHMuaCIgLyogbXVzdCBjb21lIGJlZm9yZSBhbnkgb3Ro ZXIgaGVhZGVycyAqLworI2luY2x1ZGUgImxpYnhsdV9pbnRlcm5hbC5oIgorCitzdGF0aWMgY29u c3QgY2hhciAqdmlmX2J5dGVzX3Blcl9zZWNfcmUgPSAiXlswLTldK1tHTUtdP1tCYl0vcyQiOwor c3RhdGljIGNvbnN0IGNoYXIgKnZpZl9pbnRlcm5hbF91c2VjX3JlID0gIl5bMC05XStbbXVdP3M/ JCI7CisKK3N0YXRpYyB2b2lkIHhsdV9fdmlmX2VycihYTFVfQ29uZmlnICpjZmcsIGNvbnN0IGNo YXIgKm1zZywgY29uc3QgY2hhciAqcmF0ZSkgeworICAgIGZwcmludGYoY2ZnLT5yZXBvcnQsCisg ICAgICAgICAgICAiJXM6IGNvbmZpZyBwYXJzaW5nIGVycm9yIGluIHZpZjogJXMgaW4gYCVzJ1xu IiwKKyAgICAgICAgICAgIGNmZy0+ZmlsZW5hbWUsIG1zZywgcmF0ZSk7Cit9CisKK3N0YXRpYyBp bnQgdmlmX3BhcnNlX3JhdGVfYnl0ZXNfcGVyX3NlYyhYTFVfQ29uZmlnICpjZmcsIGNvbnN0IGNo YXIgKmJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90ICpieXRlc19wZXJfc2VjKQoreworICAgIHJlZ2V4X3QgcmVjOworICAgIHVpbnQ2NF90IHRt cCA9IDA7CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgcmVnY29t cCgmcmVjLCB2aWZfYnl0ZXNfcGVyX3NlY19yZSwgUkVHX0VYVEVOREVEfFJFR19OT1NVQik7Cisg ICAgaWYgKHJlZ2V4ZWMoJnJlYywgYnl0ZXMsIDAsIE5VTEwsIDApKSB7CisgICAgICAgIHhsdV9f dmlmX2VycihjZmcsICJpbnZhbGlkIHJhdGUiLCBieXRlcyk7CisgICAgICAgIHJjID0gRUlOVkFM OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBwID0gYnl0ZXM7CisgICAgdG1wID0g c3RydG91bGwocCwgKGNoYXIqKikmcCwgMCk7CisgICAgaWYgKHRtcCA9PSAwIHx8IHRtcCA+IFVJ TlQzMl9NQVggfHwgZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIHhsdV9fdmlmX2VycihjZmcs ICJyYXRlIG92ZXJmbG93IiwgYnl0ZXMpOworICAgICAgICByYyA9IEVPVkVSRkxPVzsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKCpwID09ICdHJykKKyAgICAgICB0bXAgKj0g MTAwMCAqIDEwMDAgKiAxMDAwOworICAgIGVsc2UgaWYgKCpwID09ICdNJykKKyAgICAgICB0bXAg Kj0gMTAwMCAqIDEwMDA7CisgICAgZWxzZSBpZiAoKnAgPT0gJ0snKQorICAgICAgIHRtcCAqPSAx MDAwOworICAgIGlmICgqcCA9PSAnYicgfHwgKihwKzEpID09ICdiJykKKyAgICAgICB0bXAgLz0g ODsKKworICAgICpieXRlc19wZXJfc2VjID0gdG1wOworCitvdXQ6CisgICAgcmVnZnJlZSgmcmVj KTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgdmlmX3BhcnNlX3JhdGVfaW50ZXJ2 YWxfdXNlY3MoWExVX0NvbmZpZyAqY2ZnLCBjb25zdCBjaGFyICppbnRlcnZhbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmludGVydmFsX3VzZWNz KQoreworICAgIHJlZ2V4X3QgcmVjOworICAgIHVpbnQ2NF90IHRtcCA9IDA7CisgICAgY29uc3Qg Y2hhciAqcDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgcmVnY29tcCgmcmVjLCB2aWZfaW50ZXJu YWxfdXNlY19yZSwgUkVHX0VYVEVOREVEfFJFR19OT1NVQik7CisgICAgaWYgKHJlZ2V4ZWMoJnJl YywgaW50ZXJ2YWwsIDAsIE5VTEwsIDApKSB7CisgICAgICAgIHhsdV9fdmlmX2VycihjZmcsICJp bnZhbGlkIHJlcGxlbmlzaG1lbnQgaW50ZXJ2YWwiLCBpbnRlcnZhbCk7CisgICAgICAgIHJjID0g RUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBwID0gaW50ZXJ2YWw7Cisg ICAgdG1wID0gc3RydG91bGwocCwgKGNoYXIqKikmcCwgMCk7CisgICAgaWYgKHRtcCA9PSAwIHx8 IHRtcCA+IFVJTlQzMl9NQVggfHwgZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIHhsdV9fdmlm X2VycihjZmcsICJyZXBsZW5pc2htZW50IGludGVydmFsIG92ZXJmbG93IiwgaW50ZXJ2YWwpOwor ICAgICAgICByYyA9IEVPVkVSRkxPVzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAg aWYgKCpwID09ICdzJyB8fCAqcCA9PSAnXDAnKQorICAgICAgICB0bXAgKj0gMTAwMCAqIDEwMDA7 CisgICAgZWxzZSBpZiAoKnAgPT0gJ20nKQorICAgICAgICB0bXAgKj0gMTAwMDsKKworICAgIGlm ICh0bXAgPiBVSU5UMzJfTUFYKSB7CisgICAgICAgIHhsdV9fdmlmX2VycihjZmcsICJyZXBsZW5p c2htZW50IGludGVydmFsIG92ZXJmbG93IiwgaW50ZXJ2YWwpOworICAgICAgICByYyA9IEVPVkVS RkxPVzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgKmludGVydmFsX3VzZWNzID0g KHVpbnQzMl90KSB0bXA7CisKK291dDoKKyAgICByZWdmcmVlKCZyZWMpOworICAgIHJldHVybiBy YzsKK30KKworaW50IHhsdV92aWZfcGFyc2VfcmF0ZShYTFVfQ29uZmlnICpjZmcsIGNvbnN0IGNo YXIgKnJhdGUsIGxpYnhsX2RldmljZV9uaWMgKm5pYykKK3sKKyAgICB1aW50NjRfdCBieXRlc19w ZXJfc2VjID0gMDsKKyAgICB1aW50NjRfdCBieXRlc19wZXJfaW50ZXJ2YWwgPSAwOworICAgIHVp bnQzMl90IGludGVydmFsX3VzZWNzID0gNTAwMDBVTDsgLyogRGVmYXVsdCB0byA1MG1zICovCisg ICAgY2hhciAqcmF0ZXRvaywgKnRtcHJhdGU7CisgICAgaW50IHJjID0gMDsKKworICAgIHRtcHJh dGUgPSBzdHJkdXAocmF0ZSk7CisgICAgaWYgKCFzdHJjbXAodG1wcmF0ZSwiIikpIHsKKyAgICAg ICAgeGx1X192aWZfZXJyKGNmZywgIm5vIHJhdGUgc3BlY2lmaWVkIiwgcmF0ZSk7CisgICAgICAg IHJjID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYXRldG9rID0g c3RydG9rKHRtcHJhdGUsICJAIik7CisgICAgcmMgPSB2aWZfcGFyc2VfcmF0ZV9ieXRlc19wZXJf c2VjKGNmZywgcmF0ZXRvaywgJmJ5dGVzX3Blcl9zZWMpOworICAgIGlmIChyYykgZ290byBvdXQ7 CisKKyAgICByYXRldG9rID0gc3RydG9rKE5VTEwsICJAIik7CisgICAgaWYgKHJhdGV0b2sgIT0g TlVMTCkgeworICAgICAgICByYyA9IHZpZl9wYXJzZV9yYXRlX2ludGVydmFsX3VzZWNzKGNmZywg cmF0ZXRvaywgJmludGVydmFsX3VzZWNzKTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAg ICB9CisKKyAgICBpZiAoaW50ZXJ2YWxfdXNlY3MgIT0gMCAmJiAoYnl0ZXNfcGVyX3NlYyA+IChV SU5UNjRfTUFYIC8gaW50ZXJ2YWxfdXNlY3MpKSkgeworICAgICAgICB4bHVfX3ZpZl9lcnIoY2Zn LCAicmF0ZSBvdmVyZmxvdyIsIHJhdGUpOworICAgICAgICByYyA9IEVPVkVSRkxPVzsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgYnl0ZXNfcGVyX2ludGVydmFsID0KKyAgICAgICAg KCgodWludDY0X3QpIGJ5dGVzX3Blcl9zZWMgKiAodWludDY0X3QpIGludGVydmFsX3VzZWNzKSAv IDEwMDAwMDBVTCk7CisKKyAgICBuaWMtPnJhdGVfaW50ZXJ2YWxfdXNlY3MgPSBpbnRlcnZhbF91 c2VjczsKKyAgICBuaWMtPnJhdGVfYnl0ZXNfcGVyX2ludGVydmFsID0gYnl0ZXNfcGVyX2ludGVy dmFsOworCitvdXQ6CisgICAgZnJlZSh0bXByYXRlKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsdXRpbC5oIGIvdG9vbHMvbGlieGwvbGlieGx1dGlsLmgKLS0tIGEvdG9vbHMv bGlieGwvbGlieGx1dGlsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGx1dGlsLmgKQEAgLTk0LDYg Kzk0LDEzIEBAIGludCB4bHVfZGlza19wYXJzZShYTFVfQ29uZmlnICpjZmcsIGludCAKIGludCB4 bHVfcGNpX3BhcnNlX2JkZihYTFVfQ29uZmlnICpjZmcsIGxpYnhsX2RldmljZV9wY2kgKnBjaWRl diwgY29uc3QgY2hhciAqc3RyKTsKIAogCisvKgorICogVmlmIHJhdGUgcGFyc2luZy4KKyAqLwor CitpbnQgeGx1X3ZpZl9wYXJzZV9yYXRlKFhMVV9Db25maWcgKmNmZywgY29uc3QgY2hhciAqcmF0 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX25pYyAqbmljKTsKKwogI2Vu ZGlmIC8qIExJQlhMVVRJTF9IICovCiAKIC8qCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9j bWRpbXBsLmMgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKLS0tIGEvdG9vbHMvbGlieGwveGxf Y21kaW1wbC5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwpAQCAtNDAzLDYgKzQwMywx OSBAQCBzdGF0aWMgdm9pZCBwYXJzZV9kaXNrX2NvbmZpZyhYTFVfQ29uZmlnCiAgICAgcGFyc2Vf ZGlza19jb25maWdfbXVsdGlzdHJpbmcoY29uZmlnLCAxLCAmc3BlYywgZGlzayk7CiB9CiAKK3N0 YXRpYyB2b2lkIHBhcnNlX3ZpZl9yYXRlKFhMVV9Db25maWcgKipjb25maWcsIGNvbnN0IGNoYXIg KnJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfbmljICpuaWMp Cit7CisgICAgaW50IGU7CisKKyAgICBlID0geGx1X3ZpZl9wYXJzZV9yYXRlKCpjb25maWcsIHJh dGUsIG5pYyk7CisgICAgaWYgKGUgPT0gRUlOVkFMIHx8IGUgPT0gRU9WRVJGTE9XKSBleGl0KC0x KTsKKyAgICBpZiAoZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwieGx1X3ZpZl9wYXJzZV9y YXRlIGZhaWxlZDogJXNcbiIsc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZXhpdCgtMSk7Cisg ICAgfQorfQorCiBzdGF0aWMgdm9pZCBzcGxpdF9zdHJpbmdfaW50b19zdHJpbmdfbGlzdChjb25z dCBjaGFyICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpkZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX3N0cmluZ19saXN0ICpwc2wpCkBAIC05MDYsNyArOTE5LDcgQEAgc3RhdGljIHZv aWQgcGFyc2VfY29uZmlnX2RhdGEoY29uc3QgY2hhcgogICAgICAgICAgICAgICAgICAgICAgICAg bmljLT5iYWNrZW5kX2RvbWlkID0gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChwLCAicmF0ZSIpKSB7Ci0gICAgICAgICAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAidGhlIHJhdGUgcGFyYW1ldGVyIGZvciB2aWZzIGlzIGN1cnJl bnRseSBub3Qgc3VwcG9ydGVkXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VfdmlmX3Jh dGUoJmNvbmZpZywgKHAyICsgMSksIG5pYyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKHAsICJhY2NlbCIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy LCAidGhlIGFjY2VsIHBhcmFtZXRlciBmb3IgdmlmcyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRl ZFxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDg1NSw2ICs0ODY4LDcgQEAgaW50IG1haW5f bmV0d29ya2F0dGFjaChpbnQgYXJnYywgY2hhciAqKgogewogICAgIGludCBvcHQ7CiAgICAgbGli eGxfZGV2aWNlX25pYyBuaWM7CisgICAgWExVX0NvbmZpZyAqY29uZmlnID0gMDsKICAgICBjaGFy ICplbmRwdHIsICpvcGFyZzsKICAgICBjb25zdCBjaGFyICp0b2s7CiAgICAgaW50IGk7CkBAIC00 ODcyLDYgKzQ4ODYsMTMgQEAgaW50IG1haW5fbmV0d29ya2F0dGFjaChpbnQgYXJnYywgY2hhciAq KgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGlzIGFuIGludmFsaWQgZG9tYWluIGlkZW50 aWZpZXJcbiIsIGFyZ3Zbb3B0aW5kXSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KKworICAg IGNvbmZpZz0geGx1X2NmZ19pbml0KHN0ZGVyciwgImNvbW1hbmQgbGluZSIpOworICAgIGlmICgh Y29uZmlnKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGZv ciBjb25maWd1cmF0aW9uXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCiAgICAgbGli eGxfZGV2aWNlX25pY19pbml0KCZuaWMpOwogICAgIGZvciAoYXJndiArPSBvcHRpbmQrMSwgYXJn YyAtPSBvcHRpbmQrMTsgYXJnYyA+IDA7ICsrYXJndiwgLS1hcmdjKSB7CiAgICAgICAgIGlmIChN QVRDSF9PUFRJT04oInR5cGUiLCAqYXJndiwgb3BhcmcpKSB7CkBAIC00OTEwLDYgKzQ5MzEsNyBA QCBpbnQgbWFpbl9uZXR3b3JrYXR0YWNoKGludCBhcmdjLCBjaGFyICoqCiAgICAgICAgIH0gZWxz ZSBpZiAoTUFUQ0hfT1BUSU9OKCJtb2RlbCIsICphcmd2LCBvcGFyZykpIHsKICAgICAgICAgICAg IHJlcGxhY2Vfc3RyaW5nKCZuaWMubW9kZWwsIG9wYXJnKTsKICAgICAgICAgfSBlbHNlIGlmIChN QVRDSF9PUFRJT04oInJhdGUiLCAqYXJndiwgb3BhcmcpKSB7CisgICAgICAgICAgICBwYXJzZV92 aWZfcmF0ZSgmY29uZmlnLCBvcGFyZywgJm5pYyk7CiAgICAgICAgIH0gZWxzZSBpZiAoTUFUQ0hf T1BUSU9OKCJhY2NlbCIsICphcmd2LCBvcGFyZykpIHsKICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5yZWNvZ25pemVkIGFyZ3VtZW50IGAlcydcbiIsICph cmd2KTsKQEAgLTQ5MzEsNiArNDk1Myw3IEBAIGludCBtYWluX25ldHdvcmthdHRhY2goaW50IGFy Z2MsIGNoYXIgKioKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGxpYnhsX2RldmljZV9u aWNfZGlzcG9zZSgmbmljKTsKKyAgICB4bHVfY2ZnX2Rlc3Ryb3koY29uZmlnKTsKICAgICByZXR1 cm4gMDsKIH0KIApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=