From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v6 for Xen 4.7 4/4] xl: enable per-VCPU parameter settings for RTDS scheduler Date: Sun, 6 Mar 2016 11:55:58 -0600 Message-ID: <1457286958-5427-5-git-send-email-lichong659@gmail.com> References: <1457286958-5427-1-git-send-email-lichong659@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457286958-5427-1-git-send-email-lichong659@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Chong Li , wei.liu2@citrix.com, Sisu Xi , george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, Meng Xu , lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org Q2hhbmdlIG1haW5fc2NoZWRfcnRkcyBhbmQgcmVsYXRlZCBvdXRwdXQgZnVuY3Rpb25zIHRvIHN1 cHBvcnQKcGVyLVZDUFUgc2V0dGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBDaG9uZyBMaSA8Y2hvbmcu bGlAd3VzdGwuZWR1PgpTaWduZWQtb2ZmLWJ5OiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5uLmVk dT4KU2lnbmVkLW9mZi1ieTogU2lzdSBYaSA8eGlzaXN1QGdtYWlsLmNvbT4KCi0tLQpDaGFuZ2Vz IG9uIFBBVENIIHY1OgoxKSBBZGQgc2NoZWRfdmNwdV9zZXRfYWxsKCkgZm9yIHRoZSBjYXNlcyB0 aGF0IGFsbCB2Y3B1cyBvZiBhCmRvbWFpbiBuZWVkIHRvIGJlIGNoYW5nZWQgdG9nZXRoZXIuCgpD aGFuZ2VzIG9uIFBBVENIIHY0OgoxKSBDb2Rpbmcgc3R5bGUgY2hhbmdlcwoKQ2hhbmdlcyBvbiBQ QVRDSCB2MzoKMSkgU3VwcG9ydCBjb21tYW5kcywgZS5nLiwgInhsIHNjaGVkLXJ0ZHMgLWQgdm0x IiB0byBvdXRwdXQgdGhlCmRlZmF1bHQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzCgpDaGFuZ2VzIG9u IFBBVENIIHYyOgoxKSBSZW1vdmUgcGVyLWRvbWFpbiBvdXRwdXQgZnVuY3Rpb25zIGZvciBSVERT IHNjaGVkdWxlci4KCjIpIFVzZXJzIG5vdyB1c2UgJy12IGFsbCcgdG8gc3BlY2lmeSBhbGwgVkNQ VXMuCgozKSBTdXBwb3J0IG91dHB1dHRpbmcgYSBzdWJzZXQgb2YgdGhlIHBhcmFtZXRlcnMgb2Yg dGhlIFZDUFVzCm9mIGEgc3BlY2lmaWMgZG9tYWluLgoKNCkgV2hlbiBzZXR0aW5nIGFsbCBWQ1BV cyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgKGJ5IG9ubHkgb25lCmNvbW1hbmQpLCBubyBwZXIt ZG9tYWluIGZ1bmN0aW9uIGlzIGludm9rZWQuCgpDQzogPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5j b20+CkNDOiA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgpDQzogPGRnb2xvbWJAc2Vhcy51 cGVubi5lZHU+CkNDOiA8bWVuZ3h1QGNpcy51cGVubi5lZHU+CkNDOiA8d2VpLmxpdTJAY2l0cml4 LmNvbT4KQ0M6IDxsaWNob25nNjU5QGdtYWlsLmNvbT4KLS0tCiBkb2NzL21hbi94bC5wb2QuMSAg ICAgICAgIHwgICA0ICsKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgfCAyOTIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogdG9vbHMvbGlieGwveGxfY21k dGFibGUuYyB8ICAxMCArLQogMyBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9ucygrKSwgMzcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwucG9kLjEgYi9kb2NzL21hbi94 bC5wb2QuMQppbmRleCA0Mjc5YzdjLi5mOWZmOTE3IDEwMDY0NAotLS0gYS9kb2NzL21hbi94bC5w b2QuMQorKysgYi9kb2NzL21hbi94bC5wb2QuMQpAQCAtMTA1MSw2ICsxMDUxLDEwIEBAIEI8T1BU SU9OUz4KIFNwZWNpZnkgZG9tYWluIGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVycyBhcmUg dG8gYmUgbW9kaWZpZWQgb3IgcmV0cmlldmVkLgogTWFuZGF0b3J5IGZvciBtb2RpZnlpbmcgc2No ZWR1bGVyIHBhcmFtZXRlcnMuCiAKKz1pdGVtIEI8LXYgVkNQVUlEL2FsbD4sIEI8LS12Y3B1aWQ9 VkNQVUlEL2FsbD4KKworU3BlY2lmeSB2Y3B1IGZvciB3aGljaCBzY2hlZHVsZXIgcGFyYW1ldGVy cyBhcmUgdG8gYmUgbW9kaWZpZWQgb3IgcmV0cmlldmVkLgorCiA9aXRlbSBCPC1wIFBFUklPRD4s IEI8LS1wZXJpb2Q9UEVSSU9EPgogCiBQZXJpb2Qgb2YgdGltZSwgaW4gbWljcm9zZWNvbmRzLCBv dmVyIHdoaWNoIHRvIHJlcGxlbmlzaCB0aGUgYnVkZ2V0LgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCmluZGV4IDJiNjM3MWQu LjdkNTYyMGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29s cy9saWJ4bC94bF9jbWRpbXBsLmMKQEAgLTU4MjMsNiArNTgyMyw1MiBAQCBzdGF0aWMgaW50IHNj aGVkX2RvbWFpbl9zZXQoaW50IGRvbWlkLCBjb25zdCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1z ICpzY2luZm8pCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc2NoZWRfdmNwdV9nZXQo bGlieGxfc2NoZWR1bGVyIHNjaGVkLCBpbnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykKK3sKKyAgICBpbnQg cmM7CisKKyAgICByYyA9IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldChjdHgsIGRvbWlkLCBz Y2luZm8pOworICAgIGlmIChyYykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX3Zj cHVfc2NoZWRfcGFyYW1zX2dldCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZXhpdCgtMSk7CisgICAg fQorICAgIGlmIChzY2luZm8tPnNjaGVkICE9IHNjaGVkKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAibGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZ2V0IHJldHVybmVkICVzIG5vdCAlcy5cbiIs CisgICAgICAgICAgICAgICAgbGlieGxfc2NoZWR1bGVyX3RvX3N0cmluZyhzY2luZm8tPnNjaGVk KSwKKyAgICAgICAgICAgICAgICBsaWJ4bF9zY2hlZHVsZXJfdG9fc3RyaW5nKHNjaGVkKSk7Cisg ICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHNjaGVkX3ZjcHVfc2V0KGludCBkb21pZCwgY29uc3QgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMg KnNjaW5mbykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3ZjcHVfc2NoZWRfcGFy YW1zX3NldChjdHgsIGRvbWlkLCBzY2luZm8pOworICAgIGlmIChyYykgeworICAgICAgICBmcHJp bnRmKHN0ZGVyciwgImxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3NldCBmYWlsZWQuXG4iKTsKKyAg ICAgICAgZXhpdCgtMSk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50 IHNjaGVkX3ZjcHVfc2V0X2FsbChpbnQgZG9taWQsIGNvbnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFy YW1zICpzY2luZm8pCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBsaWJ4bF92Y3B1X3NjaGVk X3BhcmFtc19zZXRfYWxsKGN0eCwgZG9taWQsIHNjaW5mbyk7CisgICAgaWYgKHJjKSB7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfc2V0IGZhaWxlZC5c biIpOworICAgICAgICBleGl0KC0xKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0 YXRpYyBpbnQgc2NoZWRfY3JlZGl0X3BhcmFtc19zZXQoaW50IHBvb2xpZCwgbGlieGxfc2NoZWRf Y3JlZGl0X3BhcmFtcyAqc2NpbmZvKQogewogICAgIGlmIChsaWJ4bF9zY2hlZF9jcmVkaXRfcGFy YW1zX3NldChjdHgsIHBvb2xpZCwgc2NpbmZvKSkgewpAQCAtNTk0Miw2ICs1OTg4LDM4IEBAIHN0 YXRpYyBpbnQgc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KAogICAgIHJldHVybiAwOwogfQogCitz dGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9vdXRwdXQoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGRvbWlkLCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQor eworICAgIGNoYXIgKmRvbW5hbWU7CisgICAgaW50IHJjID0gMDsKKyAgICBpbnQgaTsKKworICAg IGlmIChkb21pZCA8IDApIHsKKyAgICAgICAgcHJpbnRmKCIlLTMzcyAlNHMgJTRzICU5cyAlOXNc biIsICJOYW1lIiwgIklEIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJWQ1BVIiwgIlBlcmlv ZCIsICJCdWRnZXQiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmMgPSBzY2hl ZF92Y3B1X2dldChMSUJYTF9TQ0hFRFVMRVJfUlREUywgZG9taWQsIHNjaW5mbyk7CisgICAgaWYg KHJjKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGRvbW5hbWUgPSBsaWJ4bF9kb21pZF90b19u YW1lKGN0eCwgZG9taWQpOworICAgIGZvciggaSA9IDA7IGkgPCBzY2luZm8tPm51bV92Y3B1czsg aSsrICkgeworICAgICAgICBwcmludGYoIiUtMzNzICU0ZCAlNGQgJTkiUFJJdTMyIiAlOSJQUkl1 MzIiXG4iLAorICAgICAgICAgICAgZG9tbmFtZSwKKyAgICAgICAgICAgIGRvbWlkLAorICAgICAg ICAgICAgc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQsCisgICAgICAgICAgICBzY2luZm8tPnZjcHVz W2ldLnBlcmlvZCwKKyAgICAgICAgICAgIHNjaW5mby0+dmNwdXNbaV0uYnVkZ2V0KTsKKyAgICB9 CisgICAgZnJlZShkb21uYW1lKTsKKworb3V0OgorICAgIHJldHVybiByYzsKK30KKwogc3RhdGlj IGludCBzY2hlZF9ydGRzX3Bvb2xfb3V0cHV0KHVpbnQzMl90IHBvb2xpZCkKIHsKICAgICBjaGFy ICpwb29sbmFtZTsKQEAgLTYwMTUsNiArNjA5Myw2NSBAQCBzdGF0aWMgaW50IHNjaGVkX2RvbWFp bl9vdXRwdXQobGlieGxfc2NoZWR1bGVyIHNjaGVkLCBpbnQgKCpvdXRwdXQpKGludCksCiAgICAg cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc2NoZWRfdmNwdV9vdXRwdXQobGlieGxfc2NoZWR1 bGVyIHNjaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKm91dHB1 dCkoaW50LCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKCpwb29sb3V0cHV0KSh1aW50MzJfdCksIGNvbnN0IGNoYXIgKmNw dXBvb2wpCit7CisgICAgbGlieGxfZG9taW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9jcHVwb29saW5m byAqcG9vbGluZm8gPSBOVUxMOworICAgIHVpbnQzMl90IHBvb2xpZDsKKyAgICBpbnQgbmJfZG9t YWluLCBuX3Bvb2xzID0gMCwgaSwgcDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKGNwdXBv b2wpIHsKKyAgICAgICAgaWYgKGxpYnhsX2NwdXBvb2xfcXVhbGlmaWVyX3RvX2NwdXBvb2xpZChj dHgsIGNwdXBvb2wsICZwb29saWQsIE5VTEwpCisgICAgICAgICAgICB8fCAhbGlieGxfY3B1cG9v bGlkX2lzX3ZhbGlkKGN0eCwgcG9vbGlkKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICJ1bmtub3duIGNwdXBvb2wgXCclc1wnXG4iLCBjcHVwb29sKTsKKyAgICAgICAgICAgIHJldHVy biAtRVJST1JfRkFJTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGluZm8gPSBsaWJ4bF9saXN0 X2RvbWFpbihjdHgsICZuYl9kb21haW4pOworICAgIGlmICghaW5mbykgeworICAgICAgICBmcHJp bnRmKHN0ZGVyciwgImxpYnhsX2xpc3RfZG9tYWluIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1 cm4gMTsKKyAgICB9CisgICAgcG9vbGluZm8gPSBsaWJ4bF9saXN0X2NwdXBvb2woY3R4LCAmbl9w b29scyk7CisgICAgaWYgKCFwb29saW5mbykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVy cm9yIGdldHRpbmcgY3B1cG9vbCBpbmZvXG4iKTsKKyAgICAgICAgbGlieGxfZG9taW5mb19saXN0 X2ZyZWUoaW5mbywgbmJfZG9tYWluKTsKKyAgICAgICAgcmV0dXJuIC1FUlJPUl9OT01FTTsKKyAg ICB9CisKKyAgICBmb3IgKHAgPSAwOyAhcmMgJiYgKHAgPCBuX3Bvb2xzKTsgcCsrKSB7CisgICAg ICAgIGlmICgocG9vbGluZm9bcF0uc2NoZWQgIT0gc2NoZWQpIHx8CisgICAgICAgICAgICAoY3B1 cG9vbCAmJiAocG9vbGlkICE9IHBvb2xpbmZvW3BdLnBvb2xpZCkpKQorICAgICAgICAgICAgY29u dGludWU7CisKKyAgICAgICAgcG9vbG91dHB1dChwb29saW5mb1twXS5wb29saWQpOworCisgICAg ICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zIHNjaW5mb19vdXQ7CisgICAgICAgIGxpYnhsX3Zj cHVfc2NoZWRfcGFyYW1zX2luaXQoJnNjaW5mb19vdXQpOworICAgICAgICBvdXRwdXQoLTEsICZz Y2luZm9fb3V0KTsKKyAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2Np bmZvX291dCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9kb21haW47IGkrKykgeworICAg ICAgICAgICAgaWYgKGluZm9baV0uY3B1cG9vbCAhPSBwb29saW5mb1twXS5wb29saWQpCisgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFt cyBzY2luZm87CisgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19pbml0KCZzY2lu Zm8pOworICAgICAgICAgICAgc2NpbmZvLm51bV92Y3B1cyA9IDA7CisgICAgICAgICAgICByYyA9 IG91dHB1dChpbmZvW2ldLmRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIGxpYnhsX3ZjcHVf c2NoZWRfcGFyYW1zX2Rpc3Bvc2UoJnNjaW5mbyk7CisgICAgICAgICAgICBpZiAocmMpCisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsaWJ4bF9jcHVwb29s aW5mb19saXN0X2ZyZWUocG9vbGluZm8sIG5fcG9vbHMpOworICAgIGxpYnhsX2RvbWluZm9fbGlz dF9mcmVlKGluZm8sIG5iX2RvbWFpbik7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIAogICogPG5v dGhpbmc+ICAgICAgICAgICAgIDogTGlzdCBhbGwgZG9tYWluIHBhcmFtcyBhbmQgc2NoZWQgcGFy YW1zIGZyb20gYWxsIHBvb2xzCiAgKiAtZCBbZG9taWRdICAgICAgICAgICAgOiBMaXN0IGRvbWFp biBwYXJhbXMgZm9yIGRvbWFpbgpAQCAtNjIyMiw3NyArNjM1OSwxNjYgQEAgaW50IG1haW5fc2No ZWRfcnRkcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgY29uc3QgY2hhciAqZG9tID0g TlVMTDsKICAgICBjb25zdCBjaGFyICpjcHVwb29sID0gTlVMTDsKLSAgICBpbnQgcGVyaW9kID0g MDsgLyogcGVyaW9kIGlzIGluIG1pY3Jvc2Vjb25kICovCi0gICAgaW50IGJ1ZGdldCA9IDA7IC8q IGJ1ZGdldCBpcyBpbiBtaWNyb3NlY29uZCAqLworICAgIGludCAqdmNwdXMgPSAoaW50ICopeG1h bGxvYyhzaXplb2YoaW50KSk7IC8qIElEcyBvZiBWQ1BVcyB0aGF0IGNoYW5nZSAqLworICAgIGlu dCAqcGVyaW9kcyA9IChpbnQgKil4bWFsbG9jKHNpemVvZihpbnQpKTsgLyogcGVyaW9kIGlzIGlu IG1pY3Jvc2Vjb25kICovCisgICAgaW50ICpidWRnZXRzID0gKGludCAqKXhtYWxsb2Moc2l6ZW9m KGludCkpOyAvKiBidWRnZXQgaXMgaW4gbWljcm9zZWNvbmQgKi8KKyAgICBpbnQgdl9zaXplID0g MTsgLyogc2l6ZSBvZiB2Y3B1cyBhcnJheSAqLworICAgIGludCBwX3NpemUgPSAxOyAvKiBzaXpl IG9mIHBlcmlvZHMgYXJyYXkgKi8KKyAgICBpbnQgYl9zaXplID0gMTsgLyogc2l6ZSBvZiBidWRn ZXRzIGFycmF5ICovCisgICAgaW50IHZfaW5kZXggPSAwOyAvKiBpbmRleCBpbiB2Y3B1cyBhcnJh eSAqLworICAgIGludCBwX2luZGV4ID0wOyAvKiBpbmRleCBpbiBwZXJpb2RzIGFycmF5ICovCisg ICAgaW50IGJfaW5kZXggPTA7IC8qIGluZGV4IGZvciBpbiBidWRnZXRzIGFycmF5ICovCiAgICAg Ym9vbCBvcHRfcCA9IGZhbHNlOwogICAgIGJvb2wgb3B0X2IgPSBmYWxzZTsKLSAgICBpbnQgb3B0 LCByYzsKKyAgICBib29sIG9wdF92ID0gZmFsc2U7CisgICAgYm9vbCBvcHRfYWxsID0gZmFsc2U7 IC8qIG91dHB1dCBwZXItZG9tIHBhcmFtZXRlcnMgKi8KKyAgICBpbnQgb3B0LCBpOworICAgIGlu dCByYyA9IDA7CiAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0gewogICAgICAgICB7 ImRvbWFpbiIsIDEsIDAsICdkJ30sCiAgICAgICAgIHsicGVyaW9kIiwgMSwgMCwgJ3AnfSwKICAg ICAgICAgeyJidWRnZXQiLCAxLCAwLCAnYid9LAorICAgICAgICB7InZjcHVpZCIsMSwgMCwgJ3Yn fSwKICAgICAgICAgeyJjcHVwb29sIiwgMSwgMCwgJ2MnfSwKICAgICAgICAgQ09NTU9OX0xPTkdf T1BUUwogICAgIH07CiAKLSAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiZDpwOmI6YzoiLCBv cHRzLCAic2NoZWQtcnRkcyIsIDApIHsKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiZDpw OmI6djpjIiwgb3B0cywgInNjaGVkLXJ0ZHMiLCAwKSB7CiAgICAgY2FzZSAnZCc6CiAgICAgICAg IGRvbSA9IG9wdGFyZzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAncCc6Ci0gICAgICAgIHBl cmlvZCA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEwKTsKKyAgICAgICAgaWYgKHBfaW5kZXggPj0g cF9zaXplKSB7IC8qIHBlcmlvZHMgYXJyYXkgaXMgZnVsbCAqLworICAgICAgICAgICAgcF9zaXpl ICo9IDI7CisgICAgICAgICAgICBwZXJpb2RzID0geHJlYWxsb2MocGVyaW9kcywgcF9zaXplKTsK KyAgICAgICAgfQorICAgICAgICBwZXJpb2RzW3BfaW5kZXgrK10gPSBzdHJ0b2wob3B0YXJnLCBO VUxMLCAxMCk7CiAgICAgICAgIG9wdF9wID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAn Yic6Ci0gICAgICAgIGJ1ZGdldCA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEwKTsKKyAgICAgICAg aWYgKGJfaW5kZXggPj0gYl9zaXplKSB7IC8qIGJ1ZGdldHMgYXJyYXkgaXMgZnVsbCAqLworICAg ICAgICAgICAgYl9zaXplICo9IDI7CisgICAgICAgICAgICBidWRnZXRzID0geHJlYWxsb2MoYnVk Z2V0cywgYl9zaXplKTsKKyAgICAgICAgfQorICAgICAgICBidWRnZXRzW2JfaW5kZXgrK10gPSBz dHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7CiAgICAgICAgIG9wdF9iID0gMTsKICAgICAgICAgYnJl YWs7CisgICAgY2FzZSAndic6CisgICAgICAgIGlmICghc3RyY21wKG9wdGFyZywgImFsbCIpKSB7 IC8qIGdldCBvciBzZXQgYWxsIHZjcHVzIG9mIGEgZG9tYWluICovCisgICAgICAgICAgICBvcHRf YWxsID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICh2X2lu ZGV4ID49IHZfc2l6ZSkgeyAvKiB2Y3B1cyBhcnJheSBpcyBmdWxsICovCisgICAgICAgICAgICB2 X3NpemUgKj0gMjsKKyAgICAgICAgICAgIHZjcHVzID0geHJlYWxsb2ModmNwdXMsIHZfc2l6ZSk7 CisgICAgICAgIH0KKyAgICAgICAgdmNwdXNbdl9pbmRleCsrXSA9IHN0cnRvbChvcHRhcmcsIE5V TEwsIDEwKTsKKyAgICAgICAgb3B0X3YgPSAxOworICAgICAgICBicmVhazsKICAgICBjYXNlICdj JzoKICAgICAgICAgY3B1cG9vbCA9IG9wdGFyZzsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g ICAgaWYgKGNwdXBvb2wgJiYgKGRvbSB8fCBvcHRfcCB8fCBvcHRfYikpIHsKKyAgICBpZiAoY3B1 cG9vbCAmJiAoZG9tIHx8IG9wdF9wIHx8IG9wdF9iIHx8IG9wdF92IHx8IG9wdF9hbGwpKSB7CiAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY2lmeWluZyBhIGNwdXBvb2wgaXMgbm90IGFsbG93 ZWQgd2l0aCAiCiAgICAgICAgICAgICAgICAgIm90aGVyIG9wdGlvbnMuXG4iKTsKLSAgICAgICAg cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgcmMgPSAxOworICAgICAgICBnb3RvIG91dDsK ICAgICB9Ci0gICAgaWYgKCFkb20gJiYgKG9wdF9wIHx8IG9wdF9iKSkgewotICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIk11c3Qgc3BlY2lmeSBhIGRvbWFpbi5cbiIpOwotICAgICAgICByZXR1cm4g RVhJVF9GQUlMVVJFOworICAgIGlmICghZG9tICYmIChvcHRfcCB8fCBvcHRfYiB8fCBvcHRfdikp IHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJNaXNzaW5nIHBhcmFtZXRlcnMuXG4iKTsKKyAg ICAgICAgcmMgPSAxOworICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgaWYgKG9wdF9wICE9 IG9wdF9iKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5IHBlcmlvZCBh bmQgYnVkZ2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBpZiAoZG9t ICYmICFvcHRfdiAmJiAhb3B0X2FsbCAmJiAob3B0X3AgfHwgb3B0X2IpKSB7CisgICAgICAgIGZw cmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5IFZDUFUuXG4iKTsKKyAgICAgICAgcmMgPSAxOwor ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKG9wdF92ICYmIG9wdF9hbGwpIHsKKyAg ICAgICAgZnByaW50ZihzdGRlcnIsICJJbmNvcnJlY3QgVkNQVSBJRHMuXG4iKTsKKyAgICAgICAg cmMgPSAxOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKCgodl9pbmRleCA+IGJf aW5kZXgpICYmIG9wdF9iKSB8fCAoKHZfaW5kZXggPiBwX2luZGV4KSAmJiBvcHRfcCkKKyAgICAg ICAgICAgIHx8IHBfaW5kZXggIT0gYl9pbmRleCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkluY29ycmVjdCBudW1iZXIgb2YgcGVyaW9kIGFuZCBidWRnZXRcbiIpOworICAgICAgICByYyA9 IDE7CisgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGlmICghZG9tKSB7IC8qIGxpc3Qg YWxsIGRvbWFpbidzIHJ0IHNjaGVkdWxlciBpbmZvICovCi0gICAgICAgIGlmIChzY2hlZF9kb21h aW5fb3V0cHV0KExJQlhMX1NDSEVEVUxFUl9SVERTLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2hlZF9ydGRzX2RvbWFpbl9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaGVkX3J0ZHNfcG9vbF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNwdXBvb2wpKQotICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAg ICBpZiAoKCFkb20pICYmIG9wdF9hbGwpIHsKKyAgICAgICAgLyogZ2V0IGFsbCBkb21haW4ncyBw ZXItdmNwdSBydGRzIHNjaGVkdWxlciBwYXJhbWV0ZXJzICovCisgICAgICAgIHJjID0gLXNjaGVk X3ZjcHVfb3V0cHV0KExJQlhMX1NDSEVEVUxFUl9SVERTLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NoZWRfcnRkc192Y3B1X291dHB1dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjaGVkX3J0ZHNfcG9vbF9vdXRwdXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjcHVwb29sKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAg fSBlbHNlIGlmICghZG9tICYmICFvcHRfYWxsKSB7CisgICAgICAgIC8qIGxpc3QgYWxsIGRvbWFp bidzIGRlZmF1bHQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzICovCisgICAgICAgIHJjID0gLXNjaGVk X2RvbWFpbl9vdXRwdXQoTElCWExfU0NIRURVTEVSX1JURFMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2hlZF9ydGRzX2RvbWFpbl9vdXRwdXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2hlZF9ydGRzX3Bvb2xfb3V0cHV0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1cG9vbCk7CisgICAgICAgIGdvdG8gb3V0Owog ICAgIH0gZWxzZSB7CiAgICAgICAgIHVpbnQzMl90IGRvbWlkID0gZmluZF9kb21haW4oZG9tKTsK LSAgICAgICAgaWYgKCFvcHRfcCAmJiAhb3B0X2IpIHsgLyogb3V0cHV0IHJ0IHNjaGVkdWxlciBp bmZvICovCisgICAgICAgIGlmICghb3B0X3YgJiYgIW9wdF9hbGwpIHsgLyogb3V0cHV0IGRlZmF1 bHQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzICovCiAgICAgICAgICAgICBzY2hlZF9ydGRzX2RvbWFp bl9vdXRwdXQoLTEpOwotICAgICAgICAgICAgaWYgKHNjaGVkX3J0ZHNfZG9tYWluX291dHB1dChk b21pZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICAgICAgfSBl bHNlIHsgLyogc2V0IHJ0IHNjaGVkdWxlciBwYXJhbWF0ZXJzICovCi0gICAgICAgICAgICBsaWJ4 bF9kb21haW5fc2NoZWRfcGFyYW1zIHNjaW5mbzsKLSAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9z Y2hlZF9wYXJhbXNfaW5pdCgmc2NpbmZvKTsKKyAgICAgICAgICAgIHJjID0gLXNjaGVkX3J0ZHNf ZG9tYWluX291dHB1dChkb21pZCk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfSBl bHNlIGlmICghb3B0X3AgJiYgIW9wdF9iKSB7CisgICAgICAgICAgICAvKiBnZXQgcGVyLXZjcHUg cnRkcyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2No ZWRfcGFyYW1zIHNjaW5mbzsKKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2lu aXQoJnNjaW5mbyk7CisgICAgICAgICAgICBzY2hlZF9ydGRzX3ZjcHVfb3V0cHV0KC0xLCAmc2Np bmZvKTsKKyAgICAgICAgICAgIHNjaW5mby5udW1fdmNwdXMgPSB2X2luZGV4OworICAgICAgICAg ICAgaWYgKHZfaW5kZXggPiAwKQorICAgICAgICAgICAgICAgIHNjaW5mby52Y3B1cyA9IChsaWJ4 bF9zY2hlZF9wYXJhbXMgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtYWxsb2Moc2l6ZW9m KGxpYnhsX3NjaGVkX3BhcmFtcykgKiAodl9pbmRleCkpOworICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHZfaW5kZXg7IGkrKykKKyAgICAgICAgICAgICAgICBzY2luZm8udmNwdXNbaV0udmNw dWlkID0gdmNwdXNbaV07CisgICAgICAgICAgICByYyA9IC1zY2hlZF9ydGRzX3ZjcHVfb3V0cHV0 KGRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rp c3Bvc2UoJnNjaW5mbyk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICB9IGVsc2UgaWYgKG9w dF92IHx8IG9wdF9hbGwpIHsKKyAgICAgICAgICAgIC8qIHNldCBwZXItdmNwdSBydGRzIHNjaGVk dWxpbmcgcGFyYW1ldGVycyAqLworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMg c2NpbmZvOworICAgICAgICAgICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfaW5pdCgmc2NpbmZv KTsKICAgICAgICAgICAgIHNjaW5mby5zY2hlZCA9IExJQlhMX1NDSEVEVUxFUl9SVERTOwotICAg ICAgICAgICAgc2NpbmZvLnBlcmlvZCA9IHBlcmlvZDsKLSAgICAgICAgICAgIHNjaW5mby5idWRn ZXQgPSBidWRnZXQ7CisgICAgICAgICAgICBpZiAodl9pbmRleCA+IDApIHsKKyAgICAgICAgICAg ICAgICBzY2luZm8ubnVtX3ZjcHVzID0gdl9pbmRleDsKKyAgICAgICAgICAgICAgICBzY2luZm8u dmNwdXMgPSAobGlieGxfc2NoZWRfcGFyYW1zICopCisgICAgICAgICAgICAgICAgICAgICAgICB4 bWFsbG9jKHNpemVvZihsaWJ4bF9zY2hlZF9wYXJhbXMpICogKHZfaW5kZXgpKTsKKyAgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdl9pbmRleDsgaSsrKSB7CisgICAgICAgICAgICAgICAg ICAgIHNjaW5mby52Y3B1c1tpXS52Y3B1aWQgPSB2Y3B1c1tpXTsKKyAgICAgICAgICAgICAgICAg ICAgc2NpbmZvLnZjcHVzW2ldLnBlcmlvZCA9IHBlcmlvZHNbaV07CisgICAgICAgICAgICAgICAg ICAgIHNjaW5mby52Y3B1c1tpXS5idWRnZXQgPSBidWRnZXRzW2ldOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICByYyA9IHNjaGVkX3ZjcHVfc2V0KGRvbWlkLCAmc2NpbmZvKTsK KyAgICAgICAgICAgIH0gZWxzZSB7IC8qIHNldCBwYXJhbXMgZm9yIGFsbCB2Y3B1cyAqLworICAg ICAgICAgICAgICAgIHNjaW5mby5udW1fdmNwdXMgPSAxOworICAgICAgICAgICAgICAgIHNjaW5m by52Y3B1cyA9IChsaWJ4bF9zY2hlZF9wYXJhbXMgKikKKyAgICAgICAgICAgICAgICAgICAgICAg IHhtYWxsb2Moc2l6ZW9mKGxpYnhsX3NjaGVkX3BhcmFtcykpOworICAgICAgICAgICAgICAgIHNj aW5mby52Y3B1c1swXS5wZXJpb2QgPSBwZXJpb2RzWzBdOworICAgICAgICAgICAgICAgIHNjaW5m by52Y3B1c1swXS5idWRnZXQgPSBidWRnZXRzWzBdOworICAgICAgICAgICAgICAgIHJjID0gc2No ZWRfdmNwdV9zZXRfYWxsKGRvbWlkLCAmc2NpbmZvKTsKKyAgICAgICAgICAgIH0KIAotICAgICAg ICAgICAgcmMgPSBzY2hlZF9kb21haW5fc2V0KGRvbWlkLCAmc2NpbmZvKTsKLSAgICAgICAgICAg IGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvKTsKLSAgICAgICAgICAg IGlmIChyYykKLSAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICAg ICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfZGlzcG9zZSgmc2NpbmZvKTsKKyAgICAgICAgICAg IGlmIChyYykgeworICAgICAgICAgICAgICAgIHJjID0gLXJjOworICAgICAgICAgICAgICAgIGdv dG8gb3V0OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEVY SVRfU1VDQ0VTUzsKK291dDoKKyAgICBmcmVlKHZjcHVzKTsKKyAgICBmcmVlKHBlcmlvZHMpOwor ICAgIGZyZWUoYnVkZ2V0cyk7CisgICAgcmV0dXJuIHJjOwogfQogCiBpbnQgbWFpbl9kb21pZChp bnQgYXJnYywgY2hhciAqKmFyZ3YpCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWR0YWJs ZS5jIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwppbmRleCBmZGMxYWM2Li5jNjhiNjU2IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCisrKyBiL3Rvb2xzL2xpYnhsL3hs X2NtZHRhYmxlLmMKQEAgLTI2OCwxMCArMjY4LDEyIEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFi bGVbXSA9IHsKICAgICB7ICJzY2hlZC1ydGRzIiwKICAgICAgICZtYWluX3NjaGVkX3J0ZHMsIDAs IDEsCiAgICAgICAiR2V0L3NldCBydGRzIHNjaGVkdWxlciBwYXJhbWV0ZXJzIiwKLSAgICAgICJb LWQgPERvbWFpbj4gWy1wWz1QRVJJT0RdXSBbLWJbPUJVREdFVF1dXSIsCi0gICAgICAiLWQgRE9N QUlOLCAtLWRvbWFpbj1ET01BSU4gICAgIERvbWFpbiB0byBtb2RpZnlcbiIKLSAgICAgICItcCBQ RVJJT0QsIC0tcGVyaW9kPVBFUklPRCAgICAgUGVyaW9kICh1cylcbiIKLSAgICAgICItYiBCVURH RVQsIC0tYnVkZ2V0PUJVREdFVCAgICAgQnVkZ2V0ICh1cylcbiIKKyAgICAgICJbLWQgPERvbWFp bj4gWy12Wz1WQ1BVSURdXSBbLXBbPVBFUklPRF1dIFstYls9QlVER0VUXV1dIiwKKyAgICAgICIt ZCBET01BSU4sIC0tZG9tYWluPURPTUFJTiAJRG9tYWluIHRvIG1vZGlmeVxuIgorICAgICAgIi12 IFZDUFVJRC9hbGwsIC0tdmNwdWlkPVZDUFVJRC9hbGwgICAgVkNQVSB0byBtb2RpZnkgb3Igb3V0 cHV0O1xuIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyAnLXYg YWxsJyB0byBtb2RpZnkvb3V0cHV0IGFsbCB2Y3B1c1xuIgorICAgICAgIi1wIFBFUklPRCwgLS1w ZXJpb2Q9UEVSSU9EIAlQZXJpb2QgKHVzKVxuIgorICAgICAgIi1iIEJVREdFVCwgLS1idWRnZXQ9 QlVER0VUIAlCdWRnZXQgKHVzKVxuIgogICAgIH0sCiAgICAgeyAiZG9taWQiLAogICAgICAgJm1h aW5fZG9taWQsIDAsIDAsCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==