From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v8 for Xen 4.7 3/4] libxl: enable per-VCPU parameter for RTDS Date: Fri, 18 Mar 2016 16:26:24 -0500 Message-ID: <1458336385-2606-4-git-send-email-lichong659@gmail.com> References: <1458336385-2606-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: <1458336385-2606-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, ian.jackson@eu.citrix.com, ian.campbell@eu.citrix.com, Meng Xu , lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org QWRkIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldC9zZXQgYW5kIHNjaGVkX3J0ZHNfdmNwdV9n ZXQvc2V0CmZ1bmN0aW9ucyB0byBzdXBwb3J0IHBlci1WQ1BVIHNldHRpbmdzLgoKU2lnbmVkLW9m Zi1ieTogQ2hvbmcgTGkgPGNob25nLmxpQHd1c3RsLmVkdT4KU2lnbmVkLW9mZi1ieTogTWVuZyBY dSA8bWVuZ3h1QGNpcy51cGVubi5lZHU+ClNpZ25lZC1vZmYtYnk6IFNpc3UgWGkgPHhpc2lzdUBn bWFpbC5jb20+CgotLS0KQ2hhbmdlcyBvbiBQQVRDSCB2NzoKMSkgRml4IGEgbWlzdGFrZSBpbiBz Y2hlZF9ydGRzX2RvbWFpbl9zZXQoKQoKQ2hhbmdlcyBvbiBQQVRDSCB2NjoKMSkgUmVzb2x2ZSBz b21lIGNvZGluZyBzdHlsZSBpc3N1ZXMKMikgQ2hhbmdlIHNjaGVkX3J0ZHNfdmFsaWRhdGVfcGFy YW1zKCkKMykgU21hbGwgY2hhbmdlcyBmb3Igc2NoZWRfcnRkc192Y3B1c19wYXJhbXNfc2V0KGFs bCkgZnVuY3Rpb25zCgpDaGFuZ2VzIG9uIFBBVENIIHY1OgoxKSBBZGQgYSBzZXBlcmF0ZSBmdW5j dGlvbiwgc2NoZWRfcnRkc192Y3B1c19wYXJhbXNfc2V0X2FsbCgpLCB0byBzZXQKdGhlIHBhcmFt ZXRlcnMgb2YgYWxsIHZjcHVzIG9mIGEgZG9tYWluLgoKMikgQWRkIGxpYnhsX3ZjcHVfc2NoZWRf cGFyYW1zX3NldF9hbGwoKSB0byBpbnZva2UgdGhlIGFib3ZlIGZ1bmN0aW9uLgoKMykgQ29kaW5n IHN0eWxlIGNoYW5nZXMuIChJIGRpZG4ndCBmaW5kIHRoZSBpbmRlbnRhdGlvbiBydWxlcyBmb3Ig ZnVuY3Rpb24KY2FsbHMgd2l0aCBsb25nIHBhcmFtZXRlcnMgKHN0aWxsIDQgc3BhY2VzPyksIHNv IEkganVzdCBpbWl0YXRlZCB0aGUKaW5kZW50YXRpb24gc3R5bGUgb2Ygc29tZSBleGlzdGluZyBm dW5jdGlvbnMpCgpDaGFuZ2VzIG9uIFBBVENIIHY0OgoxKSBDb2Rpbmcgc3R5bGUgY2hhbmdlcwoK Q2hhbmdlcyBvbiBQQVRDSCB2MzoKMSkgQWRkIHNhbml0eSBjaGVjayBvbiB2Y3B1aWQKCjIpIEFk ZCBjb21tZW50cyBvbiBwZXItZG9tYWluIGFuZCBwZXItdmNwdSBmdW5jdGlvbnMgZm9yIGxpYnhs CnVzZXJzCgpDaGFuZ2VzIG9uIFBBVENIIHYyOgoxKSBOZXcgZGF0YSBzdHJ1Y3R1cmUgKGxpYnhs X3ZjcHVfc2NoZWRfcGFyYW1zIGFuZCBsaWJ4bF9zY2hlZF9wYXJhbXMpCnRvIGhlbHAgcGVyLVZD UFUgc2V0dGluZ3MuCgoyKSBzY2hlZF9ydGRzX3ZjcHVfZ2V0IG5vdyBjYW4gcmV0dXJuIGEgcmFu ZG9tIHN1YnNldCBvZiB0aGUgcGFyYW1ldGVycwpvZiB0aGUgVkNQVXMgb2YgYSBzcGVjaWZpYyBk b21haW4uCgoKQ0M6IDxkYXJpby5mYWdnaW9saUBjaXRyaXguY29tPgpDQzogPGdlb3JnZS5kdW5s YXBAZXUuY2l0cml4LmNvbT4KQ0M6IDxkZ29sb21iQHNlYXMudXBlbm4uZWR1PgpDQzogPG1lbmd4 dUBjaXMudXBlbm4uZWR1PgpDQzogPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiA8bGljaG9uZzY1 OUBnbWFpbC5jb20+CkNDOiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ0M6IDxpYW4uY2Ft cGJlbGxAZXUuY2l0cml4LmNvbT4KLS0tCiB0b29scy9saWJ4bC9saWJ4bC5jICAgICAgICAgfCAz MTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHRvb2xzL2xp YnhsL2xpYnhsLmggICAgICAgICB8ICAzNyArKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVz LmlkbCB8ICAxNCArKwogMyBmaWxlcyBjaGFuZ2VkLCAzNDQgaW5zZXJ0aW9ucygrKSwgMjEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsLmMKaW5kZXggYmQzYWFjOC4uYjhkN2YwNyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwv bGlieGwuYworKysgYi90b29scy9saWJ4bC9saWJ4bC5jCkBAIC01NzcwLDYgKzU3NzAsMTk2IEBA IHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0Ml9kb21haW5fc2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQz Ml90IGRvbWlkLAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNjaGVkX3J0ZHNfdmFs aWRhdGVfcGFyYW1zKGxpYnhsX19nYyAqZ2MsIGludCBwZXJpb2QsIGludCBidWRnZXQpCit7Cisg ICAgaW50IHJjOworCisgICAgaWYgKHBlcmlvZCA8IDEpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAi SW52YWxpZCBWQ1BVIHBlcmlvZCBvZiAlZCAoaXQgc2hvdWxkIGJlID49IDEpIiwgcGVyaW9kKTsK KyAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisg ICAgaWYgKGJ1ZGdldCA8IDEpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAiSW52YWxpZCBWQ1BVIGJ1 ZGdldCBvZiAlZCAoaXQgc2hvdWxkIGJlID49IDEpIiwgYnVkZ2V0KTsKKyAgICAgICAgcmMgPSBF UlJPUl9JTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKGJ1ZGdldCA+ IHBlcmlvZCkgeworICAgICAgICBMT0coRVJST1IsICJWQ1BVIGJ1ZGdldCBtdXN0IGJlIHNtYWxs ZXIgdGhhbiBvciBlcXVhbCB0byBwZXJpb2QsICIKKyAgICAgICAgICAgICAgICAgICAiYnV0ICVk ID4gJWQiLCBidWRnZXQsIHBlcmlvZCk7CisgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAg ICAgIGdvdG8gb3V0OworICAgIH0KKyAgICByYyA9IDA7CitvdXQ6CisgICAgcmV0dXJuIHJjOwor fQorCisvKiBHZXQgdGhlIFJURFMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIG9mIHZjcHUocykgKi8K K3N0YXRpYyBpbnQgc2NoZWRfcnRkc192Y3B1X2dldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBk b21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3Bh cmFtcyAqc2NpbmZvKQoreworICAgIHVpbnQzMl90IG51bV92Y3B1czsKKyAgICBpbnQgaSwgciwg cmM7CisgICAgeGNfZG9taW5mb190IGluZm87CisgICAgc3RydWN0IHhlbl9kb21jdGxfc2NoZWRw YXJhbV92Y3B1ICp2Y3B1czsKKworICAgIHIgPSB4Y19kb21haW5fZ2V0aW5mbyhDVFgtPnhjaCwg ZG9taWQsIDEsICZpbmZvKTsKKyAgICBpZiAociA8IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwg ImdldHRpbmcgZG9tYWluIGluZm8iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAg ICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBudW1fdmNwdXMgPSBzY2luZm8tPm51bV92Y3B1cyA/ IHNjaW5mby0+bnVtX3ZjcHVzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m by5tYXhfdmNwdV9pZCArIDE7CisKKyAgICBHQ05FV19BUlJBWSh2Y3B1cywgbnVtX3ZjcHVzKTsK KworICAgIGlmIChzY2luZm8tPm51bV92Y3B1cyA+IDApIHsKKyAgICAgICAgZm9yIChpID0gMDsg aSA8IG51bV92Y3B1czsgaSsrKSB7CisgICAgICAgICAgICBpZiAoc2NpbmZvLT52Y3B1c1tpXS52 Y3B1aWQgPCAwIHx8CisgICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPiBp bmZvLm1heF92Y3B1X2lkKSB7CisgICAgICAgICAgICAgICAgTE9HKEVSUk9SLCAiVkNQVSBpbmRl eCBpcyBvdXQgb2YgcmFuZ2UsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWxpZCB2 YWx1ZXMgYXJlIHdpdGhpbiByYW5nZSBmcm9tIDAgdG8gJWQiLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5mby5tYXhfdmNwdV9pZCk7CisgICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9J TlZBTDsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHZjcHVzW2ldLnZjcHVpZCA9IHNjaW5mby0+dmNwdXNbaV0udmNwdWlkOworICAgICAgICB9 CisgICAgfSBlbHNlCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fdmNwdXM7IGkrKykKKyAg ICAgICAgICAgIHZjcHVzW2ldLnZjcHVpZCA9IGk7CisKKyAgICByID0geGNfc2NoZWRfcnRkc192 Y3B1X2dldChDVFgtPnhjaCwgZG9taWQsIHZjcHVzLCBudW1fdmNwdXMpOworICAgIGlmIChyICE9 IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgdmNwdSBzY2hlZCBydGRzIik7Cisg ICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIHNj aW5mby0+c2NoZWQgPSBMSUJYTF9TQ0hFRFVMRVJfUlREUzsKKyAgICBpZiAoc2NpbmZvLT5udW1f dmNwdXMgPT0gMCkgeworICAgICAgICBzY2luZm8tPm51bV92Y3B1cyA9IG51bV92Y3B1czsKKyAg ICAgICAgc2NpbmZvLT52Y3B1cyA9IGxpYnhsX19jYWxsb2MoTk9HQywgbnVtX3ZjcHVzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobGlieGxfc2NoZWRfcGFy YW1zKSk7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBudW1fdmNwdXM7IGkrKykgeworICAg ICAgICBzY2luZm8tPnZjcHVzW2ldLnBlcmlvZCA9IHZjcHVzW2ldLnUucnRkcy5wZXJpb2Q7Cisg ICAgICAgIHNjaW5mby0+dmNwdXNbaV0uYnVkZ2V0ID0gdmNwdXNbaV0udS5ydGRzLmJ1ZGdldDsK KyAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPSB2Y3B1c1tpXS52Y3B1aWQ7CisgICAg fQorICAgIHJjID0gMDsKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qIFNldCB0aGUgUlRE UyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2YgdmNwdShzKSAqLworc3RhdGljIGludCBzY2hlZF9y dGRzX3ZjcHVfc2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8p Cit7CisgICAgaW50IHIsIHJjOworICAgIGludCBpOworICAgIHVpbnQxNl90IG1heF92Y3B1aWQ7 CisgICAgeGNfZG9taW5mb190IGluZm87CisgICAgc3RydWN0IHhlbl9kb21jdGxfc2NoZWRwYXJh bV92Y3B1ICp2Y3B1czsKKworICAgIHIgPSB4Y19kb21haW5fZ2V0aW5mbyhDVFgtPnhjaCwgZG9t aWQsIDEsICZpbmZvKTsKKyAgICBpZiAociA8IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgImdl dHRpbmcgZG9tYWluIGluZm8iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBn b3RvIG91dDsKKyAgICB9CisgICAgbWF4X3ZjcHVpZCA9IGluZm8ubWF4X3ZjcHVfaWQ7CisKKyAg ICBpZiAoc2NpbmZvLT5udW1fdmNwdXMgPD0gMCkgeworICAgICAgICByYyA9IEVSUk9SX0lOVkFM OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNjaW5mby0+ bnVtX3ZjcHVzOyBpKyspIHsKKyAgICAgICAgaWYgKHNjaW5mby0+dmNwdXNbaV0udmNwdWlkIDwg MCB8fAorICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS52Y3B1aWQgPiBtYXhfdmNwdWlkKSB7 CisgICAgICAgICAgICBMT0coRVJST1IsICJJbnZhbGlkIFZDUFUgJWQ6IHZhbGlkIHJhbmdlIGlz IFswLCAlZF0iLAorICAgICAgICAgICAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLnZjcHVp ZCwgbWF4X3ZjcHVpZCk7CisgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOworICAgICAgICAg ICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgcmMgPSBzY2hlZF9ydGRzX3ZhbGlkYXRl X3BhcmFtcyhnYywgc2NpbmZvLT52Y3B1c1tpXS5wZXJpb2QsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1tpXS5idWRnZXQpOworICAgICAgICBp ZiAocmMpIHsKKyAgICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgICAgICBnb3Rv IG91dDsKKyAgICAgICAgfQorICAgIH0KKyAgICBHQ05FV19BUlJBWSh2Y3B1cywgc2NpbmZvLT5u dW1fdmNwdXMpOworICAgIGZvciAoaSA9IDA7IGkgPCBzY2luZm8tPm51bV92Y3B1czsgaSsrKSB7 CisgICAgICAgIHZjcHVzW2ldLnZjcHVpZCA9IHNjaW5mby0+dmNwdXNbaV0udmNwdWlkOworICAg ICAgICB2Y3B1c1tpXS51LnJ0ZHMucGVyaW9kID0gc2NpbmZvLT52Y3B1c1tpXS5wZXJpb2Q7Cisg ICAgICAgIHZjcHVzW2ldLnUucnRkcy5idWRnZXQgPSBzY2luZm8tPnZjcHVzW2ldLmJ1ZGdldDsK KyAgICB9CisKKyAgICByID0geGNfc2NoZWRfcnRkc192Y3B1X3NldChDVFgtPnhjaCwgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNwdXMsIHNjaW5mby0+bnVtX3ZjcHVz KTsKKyAgICBpZiAociAhPSAwKSB7CisgICAgICAgIExPR0UoRVJST1IsICJzZXR0aW5nIHZjcHUg c2NoZWQgcnRkcyIpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KKyAgICByYyA9IDA7CitvdXQ6CisgICAgcmV0dXJuIHJjOworfQorCisvKiBTZXQg dGhlIFJURFMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIG9mIGFsbCB2Y3B1cyBvZiBhIGRvbWFpbiAq Lworc3RhdGljIGludCBzY2hlZF9ydGRzX3ZjcHVfc2V0X2FsbChsaWJ4bF9fZ2MgKmdjLCB1aW50 MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGli eGxfdmNwdV9zY2hlZF9wYXJhbXMgKnNjaW5mbykKK3sKKyAgICBpbnQgciwgcmM7CisgICAgaW50 IGk7CisgICAgdWludDE2X3QgbWF4X3ZjcHVpZDsKKyAgICB4Y19kb21pbmZvX3QgaW5mbzsKKyAg ICBzdHJ1Y3QgeGVuX2RvbWN0bF9zY2hlZHBhcmFtX3ZjcHUgKnZjcHVzOworICAgIHVpbnQzMl90 IG51bV92Y3B1czsKKworICAgIHIgPSB4Y19kb21haW5fZ2V0aW5mbyhDVFgtPnhjaCwgZG9taWQs IDEsICZpbmZvKTsKKyAgICBpZiAociA8IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgImdldHRp bmcgZG9tYWluIGluZm8iKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3Rv IG91dDsKKyAgICB9CisgICAgbWF4X3ZjcHVpZCA9IGluZm8ubWF4X3ZjcHVfaWQ7CisKKyAgICBp ZiAoc2NpbmZvLT5udW1fdmNwdXMgIT0gMSkgeworICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwor ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKHNjaGVkX3J0ZHNfdmFsaWRhdGVfcGFy YW1zKGdjLCBzY2luZm8tPnZjcHVzWzBdLnBlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NpbmZvLT52Y3B1c1swXS5idWRnZXQpKSB7CisgICAgICAgIHJjID0gRVJS T1JfSU5WQUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBudW1fdmNwdXMgPSBtYXhf dmNwdWlkICsgMTsKKyAgICBHQ05FV19BUlJBWSh2Y3B1cywgbnVtX3ZjcHVzKTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgbnVtX3ZjcHVzOyBpKyspIHsKKyAgICAgICAgdmNwdXNbaV0udmNwdWlkID0g aTsKKyAgICAgICAgdmNwdXNbaV0udS5ydGRzLnBlcmlvZCA9IHNjaW5mby0+dmNwdXNbMF0ucGVy aW9kOworICAgICAgICB2Y3B1c1tpXS51LnJ0ZHMuYnVkZ2V0ID0gc2NpbmZvLT52Y3B1c1swXS5i dWRnZXQ7CisgICAgfQorCisgICAgciA9IHhjX3NjaGVkX3J0ZHNfdmNwdV9zZXQoQ1RYLT54Y2gs IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjcHVzLCBudW1fdmNwdXMp OworICAgIGlmIChyICE9IDApIHsKKyAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcgdmNwdSBz Y2hlZCBydGRzIik7CisgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorICAgIHJjID0gMDsKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBp bnQgc2NoZWRfcnRkc19kb21haW5fZ2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXMg KnNjaW5mbykKIHsKQEAgLTU4MDIsMzAgKzU5OTIsMTIgQEAgc3RhdGljIGludCBzY2hlZF9ydGRz X2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIExPR0Uo RVJST1IsICJnZXR0aW5nIGRvbWFpbiBzY2hlZCBydGRzIik7CiAgICAgICAgIHJldHVybiBFUlJP Ul9GQUlMOwogICAgIH0KLQotICAgIGlmIChzY2luZm8tPnBlcmlvZCAhPSBMSUJYTF9ET01BSU5f U0NIRURfUEFSQU1fUEVSSU9EX0RFRkFVTFQpIHsKLSAgICAgICAgaWYgKHNjaW5mby0+cGVyaW9k IDwgMSkgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiVkNQVSBwZXJpb2QgaXMgbm90IHNldCBv ciBvdXQgb2YgcmFuZ2UsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBh cmUgbGFyZ2VyIHRoYW4gMSIpOwotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwotICAg ICAgICB9CisgICAgaWYgKHNjaW5mby0+cGVyaW9kICE9IExJQlhMX0RPTUFJTl9TQ0hFRF9QQVJB TV9QRVJJT0RfREVGQVVMVCkKICAgICAgICAgc2RvbS5wZXJpb2QgPSBzY2luZm8tPnBlcmlvZDsK LSAgICB9Ci0KLSAgICBpZiAoc2NpbmZvLT5idWRnZXQgIT0gTElCWExfRE9NQUlOX1NDSEVEX1BB UkFNX0JVREdFVF9ERUZBVUxUKSB7Ci0gICAgICAgIGlmIChzY2luZm8tPmJ1ZGdldCA8IDEpIHsK LSAgICAgICAgICAgIExPRyhFUlJPUiwgIlZDUFUgYnVkZ2V0IGlzIG5vdCBzZXQgb3Igb3V0IG9m IHJhbmdlLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJ2YWxpZCB2YWx1ZXMgYXJlIGxhcmdl ciB0aGFuIDEiKTsKLSAgICAgICAgICAgIHJldHVybiBFUlJPUl9JTlZBTDsKLSAgICAgICAgfQor ICAgIGlmIChzY2luZm8tPmJ1ZGdldCAhPSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fQlVER0VU X0RFRkFVTFQpCiAgICAgICAgIHNkb20uYnVkZ2V0ID0gc2NpbmZvLT5idWRnZXQ7Ci0gICAgfQot Ci0gICAgaWYgKHNkb20uYnVkZ2V0ID4gc2RvbS5wZXJpb2QpIHsKLSAgICAgICAgTE9HKEVSUk9S LCAiVkNQVSBidWRnZXQgaXMgbGFyZ2VyIHRoYW4gVkNQVSBwZXJpb2QsICIKLSAgICAgICAgICAg ICAgICAgICAiVkNQVSBidWRnZXQgc2hvdWxkIGJlIG5vIGxhcmdlciB0aGFuIFZDUFUgcGVyaW9k Iik7CisgICAgaWYgKHNjaGVkX3J0ZHNfdmFsaWRhdGVfcGFyYW1zKGdjLCBzZG9tLnBlcmlvZCwg c2RvbS5idWRnZXQpKQogICAgICAgICByZXR1cm4gRVJST1JfSU5WQUw7Ci0gICAgfQogCiAgICAg cmMgPSB4Y19zY2hlZF9ydGRzX2RvbWFpbl9zZXQoQ1RYLT54Y2gsIGRvbWlkLCAmc2RvbSk7CiAg ICAgaWYgKHJjIDwgMCkgewpAQCAtNTg3Myw2ICs2MDQ1LDc0IEBAIGludCBsaWJ4bF9kb21haW5f c2NoZWRfcGFyYW1zX3NldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgcmV0 dXJuIHJldDsKIH0KIAoraW50IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX3NldChsaWJ4bF9jdHgg KmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCit7CisgICAgR0NfSU5JVChjdHgp OworICAgIGxpYnhsX3NjaGVkdWxlciBzY2hlZCA9IHNjaW5mby0+c2NoZWQ7CisgICAgaW50IHJj OworCisgICAgaWYgKHNjaGVkID09IExJQlhMX1NDSEVEVUxFUl9VTktOT1dOKQorICAgICAgICBz Y2hlZCA9IGxpYnhsX19kb21haW5fc2NoZWR1bGVyKGdjLCBkb21pZCk7CisKKyAgICBzd2l0Y2gg KHNjaGVkKSB7CisgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfU0VERjoKKyAgICAgICAgTE9HKEVS Uk9SLCAiU0VERiBzY2hlZHVsZXIgbm8gbG9uZ2VyIGF2YWlsYWJsZSIpOworICAgICAgICByYyA9 IEVSUk9SX0ZFQVRVUkVfUkVNT1ZFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9T Q0hFRFVMRVJfQ1JFRElUOgorICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDI6CisgICAg Y2FzZSBMSUJYTF9TQ0hFRFVMRVJfQVJJTkM2NTM6CisgICAgICAgIExPRyhFUlJPUiwgInBlci1W Q1BVIHBhcmFtZXRlciBzZXR0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7 CisgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElC WExfU0NIRURVTEVSX1JURFM6CisgICAgICAgIHJjID0gc2NoZWRfcnRkc192Y3B1X3NldChnYywg ZG9taWQsIHNjaW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIExP RyhFUlJPUiwgIlVua25vd24gc2NoZWR1bGVyIik7CisgICAgICAgIHJjID0gRVJST1JfSU5WQUw7 CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOwor fQorCitpbnQgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfc2V0X2FsbChsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqc2NpbmZvKQoreworICAgIEdDX0lOSVQoY3R4KTsK KyAgICBsaWJ4bF9zY2hlZHVsZXIgc2NoZWQgPSBzY2luZm8tPnNjaGVkOworICAgIGludCByYzsK KworICAgIGlmIChzY2hlZCA9PSBMSUJYTF9TQ0hFRFVMRVJfVU5LTk9XTikKKyAgICAgICAgc2No ZWQgPSBsaWJ4bF9fZG9tYWluX3NjaGVkdWxlcihnYywgZG9taWQpOworCisgICAgc3dpdGNoIChz Y2hlZCkgeworICAgIGNhc2UgTElCWExfU0NIRURVTEVSX1NFREY6CisgICAgICAgIExPRyhFUlJP UiwgIlNFREYgc2NoZWR1bGVyIG5vIGxvbmdlciBhdmFpbGFibGUiKTsKKyAgICAgICAgcmMgPSBF UlJPUl9GRUFUVVJFX1JFTU9WRUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfU0NI RURVTEVSX0NSRURJVDoKKyAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9DUkVESVQyOgorICAgIGNh c2UgTElCWExfU0NIRURVTEVSX0FSSU5DNjUzOgorICAgICAgICBMT0coRVJST1IsICJwZXItVkNQ VSBwYXJhbWV0ZXIgc2V0dGluZyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIHNjaGVkdWxlciIpOwor ICAgICAgICByYyA9IEVSUk9SX0lOVkFMOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExJQlhM X1NDSEVEVUxFUl9SVERTOgorICAgICAgICByYyA9IHNjaGVkX3J0ZHNfdmNwdV9zZXRfYWxsKGdj LCBkb21pZCwgc2NpbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg TE9HKEVSUk9SLCAiVW5rbm93biBzY2hlZHVsZXIiKTsKKyAgICAgICAgcmMgPSBFUlJPUl9JTlZB TDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7 Cit9CisKIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX2dldChsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf ZG9tYWluX3NjaGVkX3BhcmFtcyAqc2NpbmZvKQogewpAQCAtNTkwNyw2ICs2MTQ3LDM4IEBAIGlu dCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX2dldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQsCiAgICAgcmV0dXJuIHJldDsKIH0KIAoraW50IGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1z X2dldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zICpzY2luZm8pCit7CisgICAgR0Nf SU5JVChjdHgpOworICAgIGludCByYzsKKworICAgIHNjaW5mby0+c2NoZWQgPSBsaWJ4bF9fZG9t YWluX3NjaGVkdWxlcihnYywgZG9taWQpOworCisgICAgc3dpdGNoIChzY2luZm8tPnNjaGVkKSB7 CisgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfU0VERjoKKyAgICAgICAgTE9HKEVSUk9SLCAiU0VE RiBzY2hlZHVsZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSIpOworICAgICAgICByYyA9IEVSUk9S X0ZFQVRVUkVfUkVNT1ZFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9TQ0hFRFVM RVJfQ1JFRElUOgorICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDI6CisgICAgY2FzZSBM SUJYTF9TQ0hFRFVMRVJfQVJJTkM2NTM6CisgICAgICAgIExPRyhFUlJPUiwgInBlci1WQ1BVIHBh cmFtZXRlciBnZXR0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7CisgICAg ICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfU0NI RURVTEVSX1JURFM6CisgICAgICAgIHJjID0gc2NoZWRfcnRkc192Y3B1X2dldChnYywgZG9taWQs IHNjaW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIExPRyhFUlJP UiwgIlVua25vd24gc2NoZWR1bGVyIik7CisgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CisgICAg ICAgIGJyZWFrOworICAgIH0KKworICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCiBz dGF0aWMgaW50IGxpYnhsX19kb21haW5fczNfcmVzdW1lKGxpYnhsX19nYyAqZ2MsIGludCBkb21p ZCkKIHsKICAgICBpbnQgcmMgPSAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBi L3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggNmI3Mzg0OC4uZGYzNWQwOSAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0yMDYsNiAr MjA2LDE3IEBACiAjZGVmaW5lIExJQlhMX0hBVkVfREVWSUNFX01PREVMX1VTRVIgMQogCiAvKgor ICogbGlieGxfdmNwdV9zY2hlZF9wYXJhbXMgaXMgdXNlZCB0byBzdG9yZSBwZXItdmNwdSBwYXJh bXMuCisgKi8KKyNkZWZpbmUgTElCWExfSEFWRV9WQ1BVX1NDSEVEX1BBUkFNUyAxCisKKy8qCisg KiBMSUJYTF9IQVZFX1NDSEVEX1JURFNfVkNQVV9QQVJBTVMgaW5kaWNhdGVzIFJURFMgc2NoZWR1 bGVyCisgKiBub3cgc3VwcG9ydHMgcGVyLXZjcHUgc2V0dGluZ3MuCisgKi8KKyNkZWZpbmUgTElC WExfSEFWRV9TQ0hFRF9SVERTX1ZDUFVfUEFSQU1TIDEKKworLyoKICAqIGxpYnhsX2RvbWFpbl9i dWlsZF9pbmZvIGhhcyB0aGUgYXJtLmdpY192ZXJzaW9uIGZpZWxkLgogICovCiAjZGVmaW5lIExJ QlhMX0hBVkVfQlVJTERJTkZPX0FSTV9HSUNfVkVSU0lPTiAxCkBAIC0xNjQ3LDExICsxNjU4LDM3 IEBAIGludCBsaWJ4bF9zY2hlZF9jcmVkaXRfcGFyYW1zX3NldChsaWJ4bF9jdHggKmN0eCwgdWlu dDMyX3QgcG9vbGlkLAogI2RlZmluZSBMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1fRVhUUkFUSU1F X0RFRkFVTFQgLTEKICNkZWZpbmUgTElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX0JVREdFVF9ERUZB VUxUICAgIC0xCiAKKy8qIFBlci1WQ1BVIHBhcmFtZXRlcnMgKi8KKyNkZWZpbmUgTElCWExfU0NI RURfUEFSQU1fVkNQVV9JTkRFWF9ERUZBVUxUICAgLTEKKworLyogR2V0IHRoZSBwZXItZG9tYWlu IHNjaGVkdWxpbmcgcGFyYW1ldGVycy4KKyAqIEZvciBzY2hlZHVsZXJzIHRoYXQgc3VwcG9ydCBw ZXItdmNwdSBzZXR0aW5ncyAoZS5nLiwgUlREUyksCisgKiBjYWxsaW5nICpfZG9tYWluX2dldCBm dW5jdGlvbnMgd2lsbCBnZXQgZGVmYXVsdCBzY2hlZHVsaW5nCisgKiBwYXJhbWV0ZXJzLgorICov CiBpbnQgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtc19nZXQobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFp bl9zY2hlZF9wYXJhbXMgKnBhcmFtcyk7CisKKy8qIFNldCB0aGUgcGVyLWRvbWFpbiBzY2hlZHVs aW5nIHBhcmFtZXRlcnMuCisgKiBGb3Igc2NoZWR1bGVycyB0aGF0IHN1cHBvcnQgcGVyLXZjcHUg c2V0dGluZ3MgKGUuZy4sIFJURFMpLAorICogY2FsbGluZyAqX2RvbWFpbl9zZXQgZnVuY3Rpb25z IHdpbGwgc2V0IGFsbCB2Y3B1cyB3aXRoIHRoZSBzYW1lCisgKiBzY2hlZHVsaW5nIHBhcmFtZXRl cnMuCisgKi8KIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX3NldChsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtcyAqcGFyYW1zKTsKIAorLyogR2V0IHRoZSBwZXIt dmNwdSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KK2ludCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFt c19nZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqcGFyYW1zKTsKKworLyogU2V0 IHRoZSBwZXItdmNwdSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8KK2ludCBsaWJ4bF92Y3B1X3Nj aGVkX3BhcmFtc19zZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqcGFy YW1zKTsKKworLyogU2V0IHRoZSBwZXItdmNwdSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2YgYWxs IHZjcHVzIG9mIGEgZG9tYWluICovCitpbnQgbGlieGxfdmNwdV9zY2hlZF9wYXJhbXNfc2V0X2Fs bChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyAqcGFyYW1zKTsKKwog aW50IGxpYnhsX3NlbmRfdHJpZ2dlcihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3RyaWdnZXIgdHJpZ2dlciwgdWludDMyX3QgdmNw dWlkKTsKIGludCBsaWJ4bF9zZW5kX3N5c3JxKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21p ZCwgY2hhciBzeXNycSk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwg Yi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggY2YzNzMwZi4uNzQ4N2ZjOSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbApAQCAtMzc4LDYgKzM3OCwyMCBAQCBsaWJ4bF9kb21haW5fcmVzdG9yZV9w YXJhbXMgPSBTdHJ1Y3QoImRvbWFpbl9yZXN0b3JlX3BhcmFtcyIsIFsKICAgICAoInN0cmVhbV92 ZXJzaW9uIiwgdWludDMyLCB7J2luaXRfdmFsJzogJzEnfSksCiAgICAgXSkKIAorbGlieGxfc2No ZWRfcGFyYW1zID0gU3RydWN0KCJzY2hlZF9wYXJhbXMiLFsKKyAgICAoInZjcHVpZCIsICAgICAg IGludGVnZXIsIHsnaW5pdF92YWwnOiAnTElCWExfU0NIRURfUEFSQU1fVkNQVV9JTkRFWF9ERUZB VUxUJ30pLAorICAgICgid2VpZ2h0IiwgICAgICAgaW50ZWdlciwgeydpbml0X3ZhbCc6ICdMSUJY TF9ET01BSU5fU0NIRURfUEFSQU1fV0VJR0hUX0RFRkFVTFQnfSksCisgICAgKCJjYXAiLCAgICAg ICAgICBpbnRlZ2VyLCB7J2luaXRfdmFsJzogJ0xJQlhMX0RPTUFJTl9TQ0hFRF9QQVJBTV9DQVBf REVGQVVMVCd9KSwKKyAgICAoInBlcmlvZCIsICAgICAgIGludGVnZXIsIHsnaW5pdF92YWwnOiAn TElCWExfRE9NQUlOX1NDSEVEX1BBUkFNX1BFUklPRF9ERUZBVUxUJ30pLAorICAgICgiZXh0cmF0 aW1lIiwgICAgaW50ZWdlciwgeydpbml0X3ZhbCc6ICdMSUJYTF9ET01BSU5fU0NIRURfUEFSQU1f RVhUUkFUSU1FX0RFRkFVTFQnfSksCisgICAgKCJidWRnZXQiLCAgICAgICBpbnRlZ2VyLCB7J2lu aXRfdmFsJzogJ0xJQlhMX0RPTUFJTl9TQ0hFRF9QQVJBTV9CVURHRVRfREVGQVVMVCd9KSwKKyAg ICBdKQorCitsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyA9IFN0cnVjdCgidmNwdV9zY2hlZF9wYXJh bXMiLFsKKyAgICAoInNjaGVkIiwgICAgICAgIGxpYnhsX3NjaGVkdWxlciksCisgICAgKCJ2Y3B1 cyIsICAgICAgICBBcnJheShsaWJ4bF9zY2hlZF9wYXJhbXMsICJudW1fdmNwdXMiKSksCisgICAg XSkKKwogbGlieGxfZG9tYWluX3NjaGVkX3BhcmFtcyA9IFN0cnVjdCgiZG9tYWluX3NjaGVkX3Bh cmFtcyIsWwogICAgICgic2NoZWQiLCAgICAgICAgbGlieGxfc2NoZWR1bGVyKSwKICAgICAoIndl aWdodCIsICAgICAgIGludGVnZXIsIHsnaW5pdF92YWwnOiAnTElCWExfRE9NQUlOX1NDSEVEX1BB UkFNX1dFSUdIVF9ERUZBVUxUJ30pLAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=