From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v6 for Xen 4.7 3/4] libxl: enable per-VCPU parameter settings for RTDS scheduler Date: Tue, 8 Mar 2016 19:12:53 +0000 Message-ID: <20160308191253.GV31271@citrix.com> References: <1457286958-5427-1-git-send-email-lichong659@gmail.com> <1457286958-5427-4-git-send-email-lichong659@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1457286958-5427-4-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: Chong Li Cc: Chong Li , wei.liu2@citrix.com, Sisu Xi , george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, xen-devel@lists.xen.org, ian.campbell@eu.citrix.com, Meng Xu , dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org T24gU3VuLCBNYXIgMDYsIDIwMTYgYXQgMTE6NTU6NTdBTSAtMDYwMCwgQ2hvbmcgTGkgd3JvdGU6 ClsuLi5dCj4gIHRvb2xzL2xpYnhsL2xpYnhsLmMgICAgICAgICB8IDMyNiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ICB0b29scy9saWJ4bC9saWJ4bC5oICAg ICAgICAgfCAgMzcgKysrKysKPiAgdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsIHwgIDE0ICsr Cj4gIDMgZmlsZXMgY2hhbmdlZCwgMzU0IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5jIGIvdG9vbHMvbGlieGwvbGlieGwu Ywo+IGluZGV4IGJkM2FhYzguLjQ1MzJlODYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGli eGwuYwo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKPiBAQCAtNTc3MCw2ICs1NzcwLDIwNyBA QCBzdGF0aWMgaW50IHNjaGVkX2NyZWRpdDJfZG9tYWluX3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50 MzJfdCBkb21pZCwKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IHNjaGVk X3J0ZHNfdmFsaWRhdGVfcGFyYW1zKGxpYnhsX19nYyAqZ2MsIGludCBwZXJpb2QsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWRnZXQsIHVpbnQzMl90ICpzZG9t X3BlcmlvZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg KnNkb21fYnVkZ2V0KQoKSW5kZW50YXRpb24uCgo+ICt7Cj4gKyAgICBpbnQgcmMgPSAwOwo+ICsg ICAgaWYgKHBlcmlvZCAhPSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fUEVSSU9EX0RFRkFVTFQp IHsKPiArICAgICAgICBpZiAocGVyaW9kIDwgMSkgewo+ICsgICAgICAgICAgICBMT0coRVJST1Is ICJWQ1BVIHBlcmlvZCBpcyBvdXQgb2YgcmFuZ2UsICIKPiArICAgICAgICAgICAgICAgICAgICAg ICAidmFsaWQgdmFsdWVzIGFyZSBsYXJnZXIgdGhhbiBvciBlcXVhbCB0byAxIik7Cj4gKyAgICAg ICAgICAgIHJjID0gRVJST1JfSU5WQUw7IC8qIGVycm9yIHNjaGVkdWxpbmcgcGFyYW1ldGVyICov Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIH0KPiArICAgICAgICAqc2RvbV9w ZXJpb2QgPSBwZXJpb2Q7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGJ1ZGdldCAhPSBMSUJYTF9E T01BSU5fU0NIRURfUEFSQU1fQlVER0VUX0RFRkFVTFQpIHsKPiArICAgICAgICBpZiAoYnVkZ2V0 IDwgMSkgewo+ICsgICAgICAgICAgICBMT0coRVJST1IsICJWQ1BVIGJ1ZGdldCBpcyBub3Qgc2V0 IG9yIG91dCBvZiByYW5nZSwgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICJ2YWxpZCB2YWx1 ZXMgYXJlIGxhcmdlciB0aGFuIG9yIGVxdWFsIHRvIDEiKTsKPiArICAgICAgICAgICAgcmMgPSBF UlJPUl9JTlZBTDsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsgICAg ICAgICpzZG9tX2J1ZGdldCA9IGJ1ZGdldDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoKnNkb21f YnVkZ2V0ID4gKnNkb21fcGVyaW9kKSB7Cj4gKyAgICAgICAgTE9HKEVSUk9SLCAiVkNQVSBidWRn ZXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gIgo+ICsgICAgICAgICAgICAgICAgICAgIm9yIGVxdWFs IHRvIFZDUFUgcGVyaW9kIik7Cj4gKyAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKPiArICAgIH0K ClRoaXMgaXMgYSBzdHJhbmdlIHBhdHRlcm4uIEl0IGRvZXMgbW9yZSB0aGFuIHdoYXQgaXQncyBu YW1lIHN1Z2dlc3RzLgoKSXQgc2VlbXMgdGhpcyBmdW5jdGlvbiBqdXN0IHJldHVybnMgdGhlIHZh bmlsbGEgdmFsdWVzIGluIHBlcmlvZCBhbmQKYnVkZ2V0LiBJdCBjYW4gYmUgc2ltcGxpZmllZCBi eSByZW1vdmluZyBzZG9tX3BlcmlvZCBhbmQgc2RvbV9idWRnZXQgYWxsCnRvZ2V0aGVyLiBEbyB5 b3UgYWdyZWU/CgpUaGVuIGF0IGNhbGxzaXRlcyB5b3Ugc2V0IHRob3NlIHZhbHVlcyB3aXRoIHR3 byBkaXJlY3QgYXNzaWdubWVudDoKCiAgIGlmICh2YWxpZGF0ZShwZXJpb2RfdmFsdWUsIGJ1ZGdl dF92YWx1ZSkgIT0gMCkgewogICAgICAgZXJyb3I7CiAgIH0KICAgcGVyaW9kID0gcGVyaW9kX3Zh bHVlOwogICBidWRnZXQgPSBidWRnZXRfdmFsdWU7Cgo+ICtvdXQ6Cj4gKyAgICByZXR1cm4gcmM7 Cj4gK30KPiArCj4gKy8qIEdldCB0aGUgUlREUyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2YgdmNw dShzKSAqLwo+ICtzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9nZXQobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92 Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQo+ICt7Cj4gKyAgICB1aW50MzJfdCBudW1fdmNwdXM7 Cj4gKyAgICBpbnQgaSwgciwgcmM7Cj4gKyAgICB4Y19kb21pbmZvX3QgaW5mbzsKPiArICAgIHN0 cnVjdCB4ZW5fZG9tY3RsX3NjaGVkcGFyYW1fdmNwdSAqdmNwdXM7Cj4gKwo+ICsgICAgciA9IHhj X2RvbWFpbl9nZXRpbmZvKENUWC0+eGNoLCBkb21pZCwgMSwgJmluZm8pOwo+ICsgICAgaWYgKHIg PCAwKSB7Cj4gKyAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8iKTsKPiAr ICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgbnVtX3ZjcHVzID0gc2NpbmZvLT5udW1fdmNwdXMgPyBzY2luZm8tPm51bV92Y3B1 cyA6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5tYXhfdmNwdV9pZCAr IDE7Cj4gKwo+ICsgICAgR0NORVdfQVJSQVkodmNwdXMsIG51bV92Y3B1cyk7Cj4gKwo+ICsgICAg aWYgKHNjaW5mby0+bnVtX3ZjcHVzID4gMCkgewo+ICsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBu dW1fdmNwdXM7IGkrKykgewo+ICsgICAgICAgICAgICBpZiAoc2NpbmZvLT52Y3B1c1tpXS52Y3B1 aWQgPCAwIHx8Cj4gKyAgICAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLnZjcHVpZCA+IGlu Zm8ubWF4X3ZjcHVfaWQpIHsKPiArICAgICAgICAgICAgICAgIExPRyhFUlJPUiwgIlZDUFUgaW5k ZXggaXMgb3V0IG9mIHJhbmdlLCAiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWxp ZCB2YWx1ZXMgYXJlIHdpdGhpbiByYW5nZSBmcm9tIDAgdG8gJWQiLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmZvLm1heF92Y3B1X2lkKTsKPiArICAgICAgICAgICAgICAgIHJjID0g RVJST1JfSU5WQUw7Cj4gKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgICAgICAg fQo+ICsgICAgICAgICAgICB2Y3B1c1tpXS52Y3B1aWQgPSBzY2luZm8tPnZjcHVzW2ldLnZjcHVp ZDsKPiArICAgICAgICB9Cj4gKyAgICB9IGVsc2UKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwg bnVtX3ZjcHVzOyBpKyspCj4gKyAgICAgICAgICAgIHZjcHVzW2ldLnZjcHVpZCA9IGk7Cj4gKwo+ ICsgICAgciA9IHhjX3NjaGVkX3J0ZHNfdmNwdV9nZXQoQ1RYLT54Y2gsIGRvbWlkLCB2Y3B1cywg bnVtX3ZjcHVzKTsKPiArICAgIGlmIChyICE9IDApIHsKPiArICAgICAgICBMT0dFKEVSUk9SLCAi Z2V0dGluZyB2Y3B1IHNjaGVkIHJ0ZHMiKTsKPiArICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4g KyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4gKyAgICBzY2luZm8tPnNjaGVkID0gTElCWExf U0NIRURVTEVSX1JURFM7Cj4gKyAgICBpZiAoc2NpbmZvLT5udW1fdmNwdXMgPT0gMCkgewo+ICsg ICAgICAgIHNjaW5mby0+bnVtX3ZjcHVzID0gbnVtX3ZjcHVzOwo+ICsgICAgICAgIHNjaW5mby0+ dmNwdXMgPSBsaWJ4bF9fY2FsbG9jKE5PR0MsIG51bV92Y3B1cywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YobGlieGxfc2NoZWRfcGFyYW1zKSk7Cj4gKyAgICB9Cj4g KyAgICBmb3IoaSA9IDA7IGkgPCBudW1fdmNwdXM7IGkrKykgewo+ICsgICAgICAgIHNjaW5mby0+ dmNwdXNbaV0ucGVyaW9kID0gdmNwdXNbaV0ucy5ydGRzLnBlcmlvZDsKPiArICAgICAgICBzY2lu Zm8tPnZjcHVzW2ldLmJ1ZGdldCA9IHZjcHVzW2ldLnMucnRkcy5idWRnZXQ7Cj4gKyAgICAgICAg c2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPSB2Y3B1c1tpXS52Y3B1aWQ7Cj4gKyAgICB9Cj4gK3Jl dHVybiByOwoKSnVzdCBzZXQgcmMgPSAwIGhlcmU/Cgo+ICtvdXQ6Cj4gKyAgICByZXR1cm4gcmM7 Cj4gK30KPiArCj4gKy8qIFNldCB0aGUgUlREUyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2YgdmNw dShzKSAqLwo+ICtzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmNwdXNfcGFyYW1zX3NldChsaWJ4bF9f Z2MgKmdjLCB1aW50MzJfdCBkb21pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCgpJZiB0aGlzIGlzIGluZGVu dGF0aW9uIHRoYXQgeW91J3JlIG5vdCBzdXJlIGFib3V0LiBKdXN0IGxlYXZlIGl0IGxpa2UKdGhp cy4KCj4gK3sKPiArICAgIGludCByLCByYzsKPiArICAgIGludCBpOwo+ICsgICAgdWludDE2X3Qg bWF4X3ZjcHVpZDsKPiArICAgIHhjX2RvbWluZm9fdCBpbmZvOwo+ICsgICAgc3RydWN0IHhlbl9k b21jdGxfc2NoZWRwYXJhbV92Y3B1ICp2Y3B1czsKPiArICAgIHVpbnQzMl90IG51bV92Y3B1czsK PiArCj4gKyAgICByID0geGNfZG9tYWluX2dldGluZm8oQ1RYLT54Y2gsIGRvbWlkLCAxLCAmaW5m byk7Cj4gKyAgICBpZiAociA8IDApIHsKPiArICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBk b21haW4gaW5mbyIpOwo+ICsgICAgICAgIHJjID0gRVJST1JfRkFJTDsKPiArICAgICAgICBnb3Rv IG91dDsKPiArICAgIH0KPiArICAgIG1heF92Y3B1aWQgPSBpbmZvLm1heF92Y3B1X2lkOwo+ICsK PiArICAgIGlmIChzY2luZm8tPm51bV92Y3B1cyA+IDApIHsKPiArICAgICAgICBudW1fdmNwdXMg PSBzY2luZm8tPm51bV92Y3B1czsKPiArICAgICAgICBHQ05FV19BUlJBWSh2Y3B1cywgbnVtX3Zj cHVzKTsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZjcHVzOyBpKyspIHsKPiArICAg ICAgICAgICAgaWYgKHNjaW5mby0+dmNwdXNbaV0udmNwdWlkIDwgMCB8fAo+ICsgICAgICAgICAg ICAgICAgc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPiBtYXhfdmNwdWlkKSB7Cj4gKyAgICAgICAg ICAgICAgICBMT0coRVJST1IsICJWQ1BVIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIgo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJv bSAwIHRvICVkIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3ZjcHVpZCk7Cj4g KyAgICAgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwo+ICsgICAgICAgICAgICAgICAgZ290 byBvdXQ7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgdmNwdXNbaV0udmNwdWlkID0g c2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQ7Cj4gKwoKSSB3b3VsZCBzdWdnZXN0IHlvdSB1c2UgYSBz ZXBhcmF0ZSBsb29wIHRvIHZhbGlkYXRlIHRoZSBpbnB1dCwgb3RoZXJ3aXNlCnlvdSByaXNrIGdl dHRpbmcgaW5wdXQgcGFydGlhbCBzdWNjZXNzLgoKPiArICAgICAgICAgICAgcmMgPSBzY2hlZF9y dGRzX3ZhbGlkYXRlX3BhcmFtcyhnYywKPiArICAgICAgICAgICAgICAgICAgICBzY2luZm8tPnZj cHVzW2ldLnBlcmlvZCwgc2NpbmZvLT52Y3B1c1tpXS5idWRnZXQsCj4gKyAgICAgICAgICAgICAg ICAgICAgJnZjcHVzW2ldLnMucnRkcy5wZXJpb2QsICZ2Y3B1c1tpXS5zLnJ0ZHMuYnVkZ2V0KTsK PiArICAgICAgICAgICAgaWYgKHJjKSB7Cj4gKyAgICAgICAgICAgICAgICByYyA9IEVSUk9SX0lO VkFMOwo+ICsgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgICAgIH0KPiArICAg ICAgICB9Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHJjID0gRVJST1JfSU5WQUw7Cj4gKyAg ICAgICAgZ290byBvdXQ7Cj4gKyAgICB9CgpUaGUgYWJvdmUgaHVuayB3b3VsZCBiZSBiZXR0ZXIg aWYgeW91IHdyaXRlIGl0IGxpa2U6CgogICAgaWYgKHNjaW5mby0+bnVtX3ZjcHVzIDw9IDApIHsK ICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgIGdvdG8gb3V0OwogICAgfQoKICAgIC8q IC4uLiBUaGUgb3RoZXIgYnJhbmNoIGZvbGxvd3MuIE5vIGluZGVudGF0aW9uIG5lZWRlZC4gKi8K ICAgIG51bV92Y3B1cyA9IC4uLgoKPiArCj4gKyAgICByID0geGNfc2NoZWRfcnRkc192Y3B1X3Nl dChDVFgtPnhjaCwgZG9taWQsCj4gKyAgICAgICAgdmNwdXMsIG51bV92Y3B1cyk7CgpJbmRlbnRh dGlvbi4KCj4gKyAgICBpZiAociAhPSAwKSB7Cj4gKyAgICAgICAgTE9HRShFUlJPUiwgInNldHRp bmcgdmNwdSBzY2hlZCBydGRzIik7Cj4gKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwo+ICsgICAg ICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICtyZXR1cm4gcjsKClVzZSByYyA9IDAgaXMgYmV0dGVy LgoKPiArb3V0Ogo+ICsgICAgcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICsvKiBTZXQgdGhlIFJURFMg c2NoZWR1bGluZyBwYXJhbWV0ZXJzIG9mIGFsbCB2Y3B1cyBvZiBhIGRvbWFpbiAqLwo+ICtzdGF0 aWMgaW50IHNjaGVkX3J0ZHNfdmNwdXNfcGFyYW1zX3NldF9hbGwobGlieGxfX2djICpnYywgdWlu dDMyX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4 bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQo+ICt7Cj4gKyAgICBpbnQgciwgcmM7Cj4gKyAg ICBpbnQgaTsKPiArICAgIHVpbnQxNl90IG1heF92Y3B1aWQ7Cj4gKyAgICB4Y19kb21pbmZvX3Qg aW5mbzsKPiArICAgIHN0cnVjdCB4ZW5fZG9tY3RsX3NjaGVkcGFyYW1fdmNwdSAqdmNwdXM7Cj4g KyAgICB1aW50MzJfdCBudW1fdmNwdXM7Cj4gKwo+ICsgICAgciA9IHhjX2RvbWFpbl9nZXRpbmZv KENUWC0+eGNoLCBkb21pZCwgMSwgJmluZm8pOwo+ICsgICAgaWYgKHIgPCAwKSB7Cj4gKyAgICAg ICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8iKTsKPiArICAgICAgICByYyA9IEVS Uk9SX0ZBSUw7Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4gKyAgICBtYXhfdmNwdWlk ID0gaW5mby5tYXhfdmNwdV9pZDsKPiArCj4gKyAgICBpZiAoc2NpbmZvLT5udW1fdmNwdXMgPT0g MSkgewo+ICsgICAgICAgIG51bV92Y3B1cyA9IG1heF92Y3B1aWQgKyAxOwo+ICsgICAgICAgIEdD TkVXX0FSUkFZKHZjcHVzLCBudW1fdmNwdXMpOwo+ICsgICAgICAgIGlmIChzY2hlZF9ydGRzX3Zh bGlkYXRlX3BhcmFtcyhnYywgc2NpbmZvLT52Y3B1c1swXS5wZXJpb2QsCj4gKyAgICAgICAgICAg IHNjaW5mby0+dmNwdXNbMF0uYnVkZ2V0LCAmdmNwdXNbMF0ucy5ydGRzLnBlcmlvZCwKPiArICAg ICAgICAgICAgJnZjcHVzWzBdLnMucnRkcy5idWRnZXQpKSB7Cj4gKyAgICAgICAgICAgIHJjID0g RVJST1JfSU5WQUw7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIH0KPiArICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZjcHVzOyBpKyspIHsKPiArICAgICAgICAgICAgdmNw dXNbaV0udmNwdWlkID0gaTsKPiArICAgICAgICAgICAgdmNwdXNbaV0ucy5ydGRzLnBlcmlvZCA9 IHNjaW5mby0+dmNwdXNbMF0ucGVyaW9kOwo+ICsgICAgICAgICAgICB2Y3B1c1tpXS5zLnJ0ZHMu YnVkZ2V0ID0gc2NpbmZvLT52Y3B1c1swXS5idWRnZXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgfSBl bHNlIHsKPiArICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ ICsgICAgfQo+ICsKClNhbWUgaGVyZSwganVzdCBtb3ZlIHRoZSBlbHNlIGJyYW5jaCB1cC4KCj4g KyAgICByID0geGNfc2NoZWRfcnRkc192Y3B1X3NldChDVFgtPnhjaCwgZG9taWQsCj4gKyAgICAg ICAgdmNwdXMsIG51bV92Y3B1cyk7CgpJbmRlbnRhdGlvbi4KCj4gKyAgICBpZiAociAhPSAwKSB7 Cj4gKyAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcgdmNwdSBzY2hlZCBydGRzIik7Cj4gKyAg ICAgICAgcmMgPSBFUlJPUl9GQUlMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICty ZXR1cm4gcjsKCnJjID0gMDsKCj4gK291dDoKPiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiAg c3RhdGljIGludCBzY2hlZF9ydGRzX2RvbWFpbl9nZXQobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fc2No ZWRfcGFyYW1zICpzY2luZm8pCj4gIHsKPiBAQCAtNTgwMiwzMCArNjAwMyw5IEBAIHN0YXRpYyBp bnQgc2NoZWRfcnRkc19kb21haW5fc2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAo+ ICAgICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRvbWFpbiBzY2hlZCBydGRzIik7Cj4gICAg ICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Cj4gICAgICB9Cj4gLQo+IC0gICAgaWYgKHNjaW5mby0+ cGVyaW9kICE9IExJQlhMX0RPTUFJTl9TQ0hFRF9QQVJBTV9QRVJJT0RfREVGQVVMVCkgewo+IC0g ICAgICAgIGlmIChzY2luZm8tPnBlcmlvZCA8IDEpIHsKPiAtICAgICAgICAgICAgTE9HKEVSUk9S LCAiVkNQVSBwZXJpb2QgaXMgbm90IHNldCBvciBvdXQgb2YgcmFuZ2UsICIKPiAtICAgICAgICAg ICAgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGFyZSBsYXJnZXIgdGhhbiAxIik7Cj4gLSAgICAg ICAgICAgIHJldHVybiBFUlJPUl9JTlZBTDsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgc2RvbS5w ZXJpb2QgPSBzY2luZm8tPnBlcmlvZDsKPiAtICAgIH0KPiAtCj4gLSAgICBpZiAoc2NpbmZvLT5i dWRnZXQgIT0gTElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX0JVREdFVF9ERUZBVUxUKSB7Cj4gLSAg ICAgICAgaWYgKHNjaW5mby0+YnVkZ2V0IDwgMSkgewo+IC0gICAgICAgICAgICBMT0coRVJST1Is ICJWQ1BVIGJ1ZGdldCBpcyBub3Qgc2V0IG9yIG91dCBvZiByYW5nZSwgIgo+IC0gICAgICAgICAg ICAgICAgICAgICAgICJ2YWxpZCB2YWx1ZXMgYXJlIGxhcmdlciB0aGFuIDEiKTsKPiAtICAgICAg ICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBzZG9tLmJ1 ZGdldCA9IHNjaW5mby0+YnVkZ2V0Owo+IC0gICAgfQo+IC0KPiAtICAgIGlmIChzZG9tLmJ1ZGdl dCA+IHNkb20ucGVyaW9kKSB7Cj4gLSAgICAgICAgTE9HKEVSUk9SLCAiVkNQVSBidWRnZXQgaXMg bGFyZ2VyIHRoYW4gVkNQVSBwZXJpb2QsICIKPiAtICAgICAgICAgICAgICAgICAgICJWQ1BVIGJ1 ZGdldCBzaG91bGQgYmUgbm8gbGFyZ2VyIHRoYW4gVkNQVSBwZXJpb2QiKTsKPiArICAgIGlmIChz Y2hlZF9ydGRzX3ZhbGlkYXRlX3BhcmFtcyhnYywgc2NpbmZvLT5wZXJpb2QsIHNjaW5mby0+YnVk Z2V0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZG9tLnBlcmlvZCwgJnNkb20u YnVkZ2V0KSkKPiAgICAgICAgICByZXR1cm4gRVJST1JfSU5WQUw7Cj4gLSAgICB9Cj4gIAo+ICAg ICAgcmMgPSB4Y19zY2hlZF9ydGRzX2RvbWFpbl9zZXQoQ1RYLT54Y2gsIGRvbWlkLCAmc2RvbSk7 Cj4gICAgICBpZiAocmMgPCAwKSB7Cj4gQEAgLTU4NzMsNiArNjA1Myw3NCBAQCBpbnQgbGlieGxf ZG9tYWluX3NjaGVkX3BhcmFtc19zZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAo+ ICAgICAgcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAraW50IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1z X3NldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQoK SW5kZW50YXRpb24uCgo+ICt7Cj4gKyAgICBHQ19JTklUKGN0eCk7Cj4gKyAgICBsaWJ4bF9zY2hl ZHVsZXIgc2NoZWQgPSBzY2luZm8tPnNjaGVkOwo+ICsgICAgaW50IHJjOwo+ICsKPiArICAgIGlm IChzY2hlZCA9PSBMSUJYTF9TQ0hFRFVMRVJfVU5LTk9XTikKPiArICAgICAgICBzY2hlZCA9IGxp YnhsX19kb21haW5fc2NoZWR1bGVyKGdjLCBkb21pZCk7Cj4gKwo+ICsgICAgc3dpdGNoIChzY2hl ZCkgewo+ICsgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfU0VERjoKPiArICAgICAgICBMT0coRVJS T1IsICJTRURGIHNjaGVkdWxlciBubyBsb25nZXIgYXZhaWxhYmxlIik7Cj4gKyAgICAgICAgcmMg PSBFUlJPUl9GRUFUVVJFX1JFTU9WRUQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIExJ QlhMX1NDSEVEVUxFUl9DUkVESVQ6Cj4gKyAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9DUkVESVQy Ogo+ICsgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQVJJTkM2NTM6Cj4gKyAgICAgICAgTE9HKEVS Uk9SLCAicGVyLVZDUFUgcGFyYW1ldGVyIHNldHRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBz Y2hlZHVsZXIiKTsKPiArICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwo+ICsgICAgICAgIGJyZWFr Owo+ICsgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfUlREUzoKPiArICAgICAgICByYyA9IHNjaGVk X3J0ZHNfdmNwdXNfcGFyYW1zX3NldChnYywgZG9taWQsIHNjaW5mbyk7Cj4gKyAgICAgICAgYnJl YWs7Cj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIExPRyhFUlJPUiwgIlVua25vd24gc2NoZWR1 bGVyIik7Cj4gKyAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKPiArICAgICAgICBicmVhazsKPiAr ICAgIH0KPiArCj4gKyAgICBHQ19GUkVFOwo+ICsgICAgcmV0dXJuIHJjOwo+ICt9ClsuLi5dCj4g IHN0YXRpYyBpbnQgbGlieGxfX2RvbWFpbl9zM19yZXN1bWUobGlieGxfX2djICpnYywgaW50IGRv bWlkKQo+ICB7Cj4gICAgICBpbnQgcmMgPSAwOwo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAo+IGluZGV4IDZiNzM4NDguLmYxZDUzZDggMTAw NjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuaAo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs LmgKPiBAQCAtMjA2LDYgKzIwNiwxNyBAQAo+ICAjZGVmaW5lIExJQlhMX0hBVkVfREVWSUNFX01P REVMX1VTRVIgMQo+ICAKPiAgLyoKPiArICogbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgaXMgdXNl ZCB0byBzdG9yZSBwZXItdmNwdSBwYXJhbXMuCj4gKyAqLwo+ICsjZGVmaW5lIExJQlhMX0hBVkVf VkNQVV9TQ0hFRF9QQVJBTVMgMQo+ICsKPiArLyoKPiArICogTElCWExfSEFWRV9TQ0hFRF9SVERT X1ZDUFVfUEFSQU1TIGluZGljYXRlcyBSVERTIHNjaGVkdWxlcgo+ICsgKiBub3cgc3VwcG9ydHMg cGVyLXZjcHUgc2V0dGluZ3MuCj4gKyAqLwo+ICsjZGVmaW5lIExJQlhMX0hBVkVfU0NIRURfUlRE U19WQ1BVX1BBUkFNUyAxCj4gKwo+ICsvKgo+ICAgKiBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyBo YXMgdGhlIGFybS5naWNfdmVyc2lvbiBmaWVsZC4KPiAgICovCj4gICNkZWZpbmUgTElCWExfSEFW RV9CVUlMRElORk9fQVJNX0dJQ19WRVJTSU9OIDEKPiBAQCAtMTY0NywxMSArMTY1OCwzNyBAQCBp bnQgbGlieGxfc2NoZWRfY3JlZGl0X3BhcmFtc19zZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IHBvb2xpZCwKPiAgI2RlZmluZSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fRVhUUkFUSU1FX0RF RkFVTFQgLTEKPiAgI2RlZmluZSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fQlVER0VUX0RFRkFV TFQgICAgLTEKPiAgCj4gKy8qIFBlci1WQ1BVIHBhcmFtZXRlcnMqLwo+ICsjZGVmaW5lIExJQlhM X1NDSEVEX1BBUkFNX1ZDUFVfSU5ERVhfREVGQVVMVCAgIC0xCj4gKwo+ICsvKiBHZXQgdGhlIHBl ci1kb21haW4gc2NoZWR1bGluZyBwYXJhbWV0ZXJzLgo+ICsgKiBGb3Igc2NoZWR1bGVycyB0aGF0 IHN1cHBvcnQgcGVyLXZjcHUgc2V0dGluZ3MgKGUuZy4sIFJURFMpLAo+ICsgKiBjYWxsaW5nICpf ZG9tYWluX2dldCBmdW5jdGlvbnMgd2lsbCBnZXQgZGVmYXVsdCBzY2hlZHVsaW5nCj4gKyAqIHBh cmFtZXRlcnMuCj4gKyAqLwo+ICBpbnQgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19nZXQobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtcyAqcGFyYW1zKTsKPiArCj4gKy8qIFNl dCB0aGUgcGVyLWRvbWFpbiBzY2hlZHVsaW5nIHBhcmFtZXRlcnMuCj4gKyAqIEZvciBzY2hlZHVs ZXJzIHRoYXQgc3VwcG9ydCBwZXItdmNwdSBzZXR0aW5ncyAoZS5nLiwgUlREUyksCj4gKyAqIGNh bGxpbmcgKl9kb21haW5fc2V0IGZ1bmN0aW9ucyB3aWxsIHNldCBhbGwgdmNwdXMgd2l0aCB0aGUg c2FtZQo+ICsgKiBzY2hlZHVsaW5nIHBhcmFtZXRlcnMuCj4gKyAqLwo+ICBpbnQgbGlieGxfZG9t YWluX3NjaGVkX3BhcmFtc19zZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfZG9tYWluX3NjaGVk X3BhcmFtcyAqcGFyYW1zKTsKPiAgCj4gKy8qIEdldCB0aGUgcGVyLXZjcHUgc2NoZWR1bGluZyBw YXJhbWV0ZXJzICovCj4gK2ludCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19nZXQobGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IGRvbWlkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnBhcmFtcyk7Cj4gKwo+ICsvKiBTZXQgdGhlIHBl ci12Y3B1IHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLwo+ICtpbnQgbGlieGxfdmNwdV9zY2hlZF9w YXJhbXNfc2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpwYXJh bXMpOwo+ICsKPiArLyogU2V0IHRoZSBwZXItdmNwdSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2Yg YWxsIHZjcHVzIG9mIGEgZG9tYWluKi8KPiAraW50IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3Nl dF9hbGwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgKnBhcmFtcyk7 Cj4gKwo+ICBpbnQgbGlieGxfc2VuZF90cmlnZ2VyKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF90cmlnZ2VyIHRyaWdnZXIsIHVp bnQzMl90IHZjcHVpZCk7Cj4gIGludCBsaWJ4bF9zZW5kX3N5c3JxKGxpYnhsX2N0eCAqY3R4LCB1 aW50MzJfdCBkb21pZCwgY2hhciBzeXNycSk7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+IGluZGV4IGNmMzcz MGYuLjc0ODdmYzkgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4g KysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4gQEAgLTM3OCw2ICszNzgsMjAgQEAg bGlieGxfZG9tYWluX3Jlc3RvcmVfcGFyYW1zID0gU3RydWN0KCJkb21haW5fcmVzdG9yZV9wYXJh bXMiLCBbCj4gICAgICAoInN0cmVhbV92ZXJzaW9uIiwgdWludDMyLCB7J2luaXRfdmFsJzogJzEn fSksCj4gICAgICBdKQo+ICAKPiArbGlieGxfc2NoZWRfcGFyYW1zID0gU3RydWN0KCJzY2hlZF9w YXJhbXMiLFsKPiArICAgICgidmNwdWlkIiwgICAgICAgaW50ZWdlciwgeydpbml0X3ZhbCc6ICdM SUJYTF9TQ0hFRF9QQVJBTV9WQ1BVX0lOREVYX0RFRkFVTFQnfSksCj4gKyAgICAoIndlaWdodCIs ICAgICAgIGludGVnZXIsIHsnaW5pdF92YWwnOiAnTElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX1dF SUdIVF9ERUZBVUxUJ30pLAo+ICsgICAgKCJjYXAiLCAgICAgICAgICBpbnRlZ2VyLCB7J2luaXRf dmFsJzogJ0xJQlhMX0RPTUFJTl9TQ0hFRF9QQVJBTV9DQVBfREVGQVVMVCd9KSwKPiArICAgICgi cGVyaW9kIiwgICAgICAgaW50ZWdlciwgeydpbml0X3ZhbCc6ICdMSUJYTF9ET01BSU5fU0NIRURf UEFSQU1fUEVSSU9EX0RFRkFVTFQnfSksCj4gKyAgICAoImV4dHJhdGltZSIsICAgIGludGVnZXIs IHsnaW5pdF92YWwnOiAnTElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX0VYVFJBVElNRV9ERUZBVUxU J30pLAo+ICsgICAgKCJidWRnZXQiLCAgICAgICBpbnRlZ2VyLCB7J2luaXRfdmFsJzogJ0xJQlhM X0RPTUFJTl9TQ0hFRF9QQVJBTV9CVURHRVRfREVGQVVMVCd9KSwKPiArICAgIF0pCj4gKwo+ICts aWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyA9IFN0cnVjdCgidmNwdV9zY2hlZF9wYXJhbXMiLFsKPiAr ICAgICgic2NoZWQiLCAgICAgICAgbGlieGxfc2NoZWR1bGVyKSwKPiArICAgICgidmNwdXMiLCAg ICAgICAgQXJyYXkobGlieGxfc2NoZWRfcGFyYW1zLCAibnVtX3ZjcHVzIikpLAo+ICsgICAgXSkK PiArCgpJSVJDIERhcmlvIGFuZCB5b3UgaGF2ZSBjb21lIHRvIGFncmVlbWVudCBvbiB0aGUgZGF0 YSBzdHJ1Y3R1cmUgc28gSQpza2ltIHRoaXMuCgpPdmVyYWxsIEkgdGhpbmsgdGhlIHBhdGNoIGlz IG1vdmluZyB0b3dhcmRzIHRoZSByaWdodCBkaXJlY3Rpb24uICBKdXN0CnRoYXQgdGhlcmUgYXJl IHRvbyBtYW55IHBsYWNlcyB3aGVyZSBpbmRlbnRhdGlvbiBuZWVkIGZpeGluZy4gIFBsZWFzZQpm aXggdGhlbSBpbiB0aGUgbmV4dCBpdGVyYXRpb24uIEkgcmVhbGx5IGRvbid0IGxpa2UgaG9sZGlu ZyBiYWNrIHBhdGNoZXMKanVzdCBiZWNhdXNlIG9mIGluZGVudGF0aW9uIGlzc3Vlcy4gIERlcGVu ZGluZyBvbiB0aGUgZWRpdG9yIHlvdSB1c2UsCnRoZXJlIG1pZ2h0IGJlIHNvbWUgY29tbW9uIHJ1 bmVzIHRoYXQgd2UgY2FuIGdpdmUgeW91LgoKSWYgeW91IGZlZWwgdW5jbGVhciBhYm91dCBteSBj b21tZW50cywganVzdCBhc2sgZm9yIGNsYXJpZmljYXRpb24uCgpXZWkuCgo+ICBsaWJ4bF9kb21h aW5fc2NoZWRfcGFyYW1zID0gU3RydWN0KCJkb21haW5fc2NoZWRfcGFyYW1zIixbCj4gICAgICAo InNjaGVkIiwgICAgICAgIGxpYnhsX3NjaGVkdWxlciksCj4gICAgICAoIndlaWdodCIsICAgICAg IGludGVnZXIsIHsnaW5pdF92YWwnOiAnTElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX1dFSUdIVF9E RUZBVUxUJ30pLAo+IC0tIAo+IDEuOS4xCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=