From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: Re: [PATCH v9 for Xen 4.7 4/4] xl: enable per-VCPU parameter for RTDS Date: Fri, 1 Apr 2016 15:15:18 +0200 Message-ID: <1459516518.5082.254.camel@citrix.com> References: <1459486786-3085-1-git-send-email-lichong659@gmail.com> <1459486786-3085-5-git-send-email-lichong659@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0805176569612782426==" Return-path: In-Reply-To: <1459486786-3085-5-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 , xen-devel@lists.xen.org Cc: Chong Li , wei.liu2@citrix.com, Sisu Xi , george.dunlap@eu.citrix.com, Meng Xu , dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org --===============0805176569612782426== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-2E0IVgiUl1QpvUjn95sy" --=-2E0IVgiUl1QpvUjn95sy Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 T24gVGh1LCAyMDE2LTAzLTMxIGF0IDIzOjU5IC0wNTAwLCBDaG9uZyBMaSB3cm90ZToKPiBDaGFu Z2UgbWFpbl9zY2hlZF9ydGRzIGFuZCByZWxhdGVkIG91dHB1dCBmdW5jdGlvbnMgdG8gc3VwcG9y dAo+IHBlci1WQ1BVIHNldHRpbmdzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENob25nIExpIDxjaG9u Zy5saUB3dXN0bC5lZHU+Cj4gU2lnbmVkLW9mZi1ieTogTWVuZyBYdSA8bWVuZ3h1QGNpcy51cGVu bi5lZHU+Cj4gU2lnbmVkLW9mZi1ieTogU2lzdSBYaSA8eGlzaXN1QGdtYWlsLmNvbT4KPiAKPiBB Y2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPgpUaGlzIEFja2VkLWJ5LCBJ J20gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkLiBJbiBmYWN0LCBXZWkgc2FpIGl0IHdhcwpzdWJq ZWN0IHRvIG1lIHNheWluZyBBY2tlZC1ieSBvciBSZXZpZXdlZC1ieSBteXNlbGYgdG8gdjguIEkg ZGlkIG5vdApzYXkgYW55dGhpbmcgbGlrZSB0aGF0LCBhbmQgaW4gZmFjdCBJIGFza2VkIGZvciBj aGFuZ2VzLCBhbmQgV2VpIHNhaWQKaGltc2VsZiB0aGF0LCBhdCBsZWFzdCBzb21lIG9mIHRob3Nl IHdlcmUgbmVjZXNzYXJ5LgoKTm93LCB5b3UndmUgYWRkcmVzc2VkIHRob3NlIGNvbW1lbnRzLCBh bmQgSSdtIGhhcHB5IGFib3V0IGhvdyB0aGUgcGF0Y2gKaXMgbG9va2luZyBub3csIHNvOgoKUmV2 aWV3ZWQtYnk6IERhcmlvIEZhZ2dpb2xpIDxkYXJpby5mYWdnaW9saUBjaXRyaXguY29tPgoKQnV0 IEkgcmVhbGx5IHRoaW5rIFdlaSAob3IgSWFuKSBzaG91bGQgKHJlLSlsb29rIGFuZCAocmUtKUFj ay4KCkkndmUgZm91bmQgb25seSBhIGNvdXBsZSBvZiBzdHlsZSBpc3N1ZXMuIEkgZG9uJ3QgZmVl bCBsaWtlIGJsb2NraW5nCnRoZSBzZXJpZXMgb3IgYXNraW5nIHRvIHJlc2VuZC4uLiBwZXJoYXBz IHRoZXkgY2FuIGJlIGZpeGVkIGR1cmluZwpjb21taXQ/IE9yIEknbSB1cCBmb3Igc2VuZGluZyBh IGNsZWFudXAgcGF0Y2ggbXlzZWxmICh3aGljaCB3b3VsZCBub3QKaW50cm9kdWNlIGFueSBmdW5j dGlvbmFsIGNoYW5nZSksIGFzIHNvb24gYXMgdGhpcyBoaXQgdGhlIHJlcG8uCgpIZXJlIHRoZXkg YXJlOgoKPiBAQCAtNjU1NCw4NCArNjczNSwxOTggQEAgaW50IG1haW5fc2NoZWRfY3JlZGl0Mihp bnQgYXJnYywgY2hhcgo+ICoqYXJndikKPiDCoAo+IMKgLyoKPiDCoCAqIDxub3RoaW5nPsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDogTGlzdCBhbGwgZG9tYWluIHBhcmFtdGVycyBhbmQgc2NoZWQg cGFyYW1zCj4gLSAqIC1kIFtkb21pZF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgOiBMaXN0IGRvbWFp biBwYXJhbXMgZm9yIGRvbWFpbgo+ICsgKiAtZCBbZG9taWRdwqDCoMKgwqDCoMKgwqDCoMKgwqDC oDogTGlzdCBkZWZhdWx0IGRvbWFpbiBwYXJhbXMgZm9yIGRvbWFpbgo+IMKgICogLWQgW2RvbWlk XSBbcGFyYW1zXcKgwqA6IFNldCBkb21haW4gcGFyYW1zIGZvciBkb21haW4KPiArICogLWQgW2Rv bWlkXSAtdiBbdmNwdWlkIDFdIC12IFt2Y3B1aWQgMl0gLi4uwqDCoDoKPiArICogTGlzdCBwZXIt VkNQVSBwYXJhbXMgZm9yIGRvbWFpbgo+ICsgKiAtZCBbZG9taWRdIC12IGFsbMKgwqA6IExpc3Qg YWxsIHBlci1WQ1BVIHBhcmFtcyBmb3IgZG9tYWluCj4gKyAqIC12IGFsbMKgwqA6IExpc3QgYWxs IHBlci1WQ1BVIHBhcmFtcyBmb3IgYWxsIGRvbWFpbnMKPiArICogLWQgW2RvbWlkXSAtdiBbdmNw dWlkIDFdIFtwYXJhbXNdIC12IFt2Y3B1aWQgMl0gW3BhcmFtc10gLi4uwqDCoDoKPiArICogU2V0 IHBlci1WQ1BVIHBhcmFtcyBmb3IgZG9tYWluCj4gKyAqIC1kIFtkb21pZF0gLXYgYWxsIFtwYXJh bXNdwqDCoDogU2V0IGFsbCBwZXItVkNQVSBwYXJhbXMgZm9yIGRvbWFpbgo+IMKgICovCj4gwqBp bnQgbWFpbl9zY2hlZF9ydGRzKGludCBhcmdjLCBjaGFyICoqYXJndikKPiDCoHsKPiDCoMKgwqDC oMKgY29uc3QgY2hhciAqZG9tID0gTlVMTDsKPiDCoMKgwqDCoMKgY29uc3QgY2hhciAqY3B1cG9v bCA9IE5VTEw7Cj4gLcKgwqDCoMKgaW50IHBlcmlvZCA9IDA7IC8qIHBlcmlvZCBpcyBpbiBtaWNy b3NlY29uZCAqLwo+IC3CoMKgwqDCoGludCBidWRnZXQgPSAwOyAvKiBidWRnZXQgaXMgaW4gbWlj cm9zZWNvbmQgKi8KPiArwqDCoMKgwqBpbnQgKnZjcHVzID0gKGludCAqKXhtYWxsb2Moc2l6ZW9m KGludCkpOyAvKiBJRHMgb2YgVkNQVXMgdGhhdAo+IGNoYW5nZSAqLwo+ICvCoMKgwqDCoGludCAq cGVyaW9kcyA9IChpbnQgKil4bWFsbG9jKHNpemVvZihpbnQpKTsgLyogcGVyaW9kIGlzIGluCj4g bWljcm9zZWNvbmQgKi8KPiArwqDCoMKgwqBpbnQgKmJ1ZGdldHMgPSAoaW50ICopeG1hbGxvYyhz aXplb2YoaW50KSk7IC8qIGJ1ZGdldCBpcyBpbgo+IG1pY3Jvc2Vjb25kICovCj4gK8KgwqDCoMKg aW50IHZfc2l6ZSA9IDE7IC8qIHNpemUgb2YgdmNwdXMgYXJyYXkgKi8KPiArwqDCoMKgwqBpbnQg cF9zaXplID0gMTsgLyogc2l6ZSBvZiBwZXJpb2RzIGFycmF5ICovCj4gK8KgwqDCoMKgaW50IGJf c2l6ZSA9IDE7IC8qIHNpemUgb2YgYnVkZ2V0cyBhcnJheSAqLwo+ICvCoMKgwqDCoGludCB2X2lu ZGV4ID0gMDsgLyogaW5kZXggaW4gdmNwdXMgYXJyYXkgKi8KPiArwqDCoMKgwqBpbnQgcF9pbmRl eCA9MDsgLyogaW5kZXggaW4gcGVyaW9kcyBhcnJheSAqLwo+ICvCoMKgwqDCoGludCBiX2luZGV4 ID0wOyAvKiBpbmRleCBmb3IgaW4gYnVkZ2V0cyBhcnJheSAqLwo+IMKgwqDCoMKgwqBib29sIG9w dF9wID0gZmFsc2U7Cj4gwqDCoMKgwqDCoGJvb2wgb3B0X2IgPSBmYWxzZTsKPiAtwqDCoMKgwqBp bnQgb3B0LCByYzsKPiArwqDCoMKgwqBib29sIG9wdF92ID0gZmFsc2U7Cj4gK8KgwqDCoMKgYm9v bCBvcHRfYWxsID0gZmFsc2U7IC8qIG91dHB1dCBwZXItZG9tIHBhcmFtZXRlcnMgKi8KPiArwqDC oMKgwqBpbnQgb3B0LCBpLCByYywgcjsKPiDCoMKgwqDCoMKgc3RhdGljIHN0cnVjdCBvcHRpb24g b3B0c1tdID0gewo+IMKgwqDCoMKgwqDCoMKgwqDCoHsiZG9tYWluIiwgMSwgMCwgJ2QnfSwKPiDC oMKgwqDCoMKgwqDCoMKgwqB7InBlcmlvZCIsIDEsIDAsICdwJ30sCj4gwqDCoMKgwqDCoMKgwqDC oMKgeyJidWRnZXQiLCAxLCAwLCAnYid9LAo+ICvCoMKgwqDCoMKgwqDCoMKgeyJ2Y3B1aWQiLDEs IDAsICd2J30sCj4gwqDCoMKgwqDCoMKgwqDCoMKgeyJjcHVwb29sIiwgMSwgMCwgJ2MnfSwKPiDC oMKgwqDCoMKgwqDCoMKgwqBDT01NT05fTE9OR19PUFRTCj4gwqDCoMKgwqDCoH07Cj4gwqAKPiAt wqDCoMKgwqBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiZDpwOmI6YzoiLCBvcHRzLCAic2NoZWQt cnRkcyIsIDApIHsKPiArwqDCoMKgwqBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiZDpwOmI6djpj Iiwgb3B0cywgInNjaGVkLXJ0ZHMiLCAwKSB7Cj4gwqDCoMKgwqDCoGNhc2UgJ2QnOgo+IMKgwqDC oMKgwqDCoMKgwqDCoGRvbSA9IG9wdGFyZzsKPiDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiDC oMKgwqDCoMKgY2FzZSAncCc6Cj4gLcKgwqDCoMKgwqDCoMKgwqBwZXJpb2QgPSBzdHJ0b2wob3B0 YXJnLCBOVUxMLCAxMCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqBvcHRfcCA9IHRydWU7Cj4gK8KgwqDC oMKgwqDCoMKgwqBpZiAocF9pbmRleCA+PSBwX3NpemUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqIHBlcmlvZHMgYXJyYXkgaXMg ZnVsbAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogZG91YmxlIHRoZSBhcnJheSBzaXpl IGZvciBuZXcgZWxlbWVudHMKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqLwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBwX3NpemUgKj0gMjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcGVyaW9kcyA9IHhyZWFsbG9jKHBlcmlvZHMsIHBfc2l6ZSk7Cj4gK8KgwqDCoMKgwqDCoMKg wqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqBwZXJpb2RzW3BfaW5kZXgrK10gPSBzdHJ0b2wob3B0YXJn LCBOVUxMLCAxMCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqBvcHRfcCA9IDE7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7Cj4gwqDCoMKgwqDCoGNhc2UgJ2InOgo+IC3CoMKgwqDCoMKgwqDCoMKgYnVk Z2V0ID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOwo+IC3CoMKgwqDCoMKgwqDCoMKgb3B0X2Ig PSB0cnVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgaWYgKGJfaW5kZXggPj0gYl9zaXplKSB7IC8qIGJ1 ZGdldHMgYXJyYXkgaXMgZnVsbCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiX3NpemUg Kj0gMjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnVkZ2V0cyA9IHhyZWFsbG9jKGJ1ZGdl dHMsIGJfc2l6ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqBidWRn ZXRzW2JfaW5kZXgrK10gPSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7Cj4gK8KgwqDCoMKgwqDC oMKgwqBvcHRfYiA9IDE7Cj4gK8KgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqBjYXNl ICd2JzoKPiArwqDCoMKgwqDCoMKgwqDCoGlmICghc3RyY21wKG9wdGFyZywgImFsbCIpKSB7IC8q IGdldCBvciBzZXQgYWxsIHZjcHVzIG9mIGEKPiBkb21haW4gKi8KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgb3B0X2FsbCA9IDE7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ ICvCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgaWYgKHZfaW5kZXggPj0gdl9z aXplKSB7IC8qIHZjcHVzIGFycmF5IGlzIGZ1bGwgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdl9zaXplICo9IDI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZjcHVzID0geHJlYWxs b2ModmNwdXMsIHZfc2l6ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKg wqB2Y3B1c1t2X2luZGV4KytdID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOwo+ICvCoMKgwqDC oMKgwqDCoMKgb3B0X3YgPSAxOwo+IMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+IMKgwqDCoMKg wqBjYXNlICdjJzoKPiDCoMKgwqDCoMKgwqDCoMKgwqBjcHVwb29sID0gb3B0YXJnOwo+IMKgwqDC oMKgwqDCoMKgwqDCoGJyZWFrOwo+IMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqBpZiAoY3B1 cG9vbCAmJiAoZG9tIHx8IG9wdF9wIHx8IG9wdF9iKSkgewo+ICvCoMKgwqDCoGlmIChjcHVwb29s ICYmIChkb20gfHwgb3B0X3AgfHwgb3B0X2IgfHwgb3B0X3YgfHwgb3B0X2FsbCkpIHsKPiDCoMKg wqDCoMKgwqDCoMKgwqBmcHJpbnRmKHN0ZGVyciwgIlNwZWNpZnlpbmcgYSBjcHVwb29sIGlzIG5v dCBhbGxvd2VkIHdpdGggIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAib3Ro ZXIgb3B0aW9ucy5cbiIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEVYSVRfRkFJTFVSRTsK PiArwqDCoMKgwqDCoMKgwqDCoHIgPSBFWElUX0ZBSUxVUkU7Cj4gK8KgwqDCoMKgwqDCoMKgwqBn b3RvIG91dDsKPiDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoGlmICghZG9tICYmIChvcHRfcCB8fCBv cHRfYikpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoGZwcmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5 IGEgZG9tYWluLlxuIik7Cj4gLcKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVhJVF9GQUlMVVJFOwo+ ICvCoMKgwqDCoGlmICghZG9tICYmIChvcHRfcCB8fCBvcHRfYiB8fCBvcHRfdikpIHsKPiArwqDC oMKgwqDCoMKgwqDCoGZwcmludGYoc3RkZXJyLCAiTWlzc2luZyBwYXJhbWV0ZXJzLlxuIik7Cj4g K8KgwqDCoMKgwqDCoMKgwqByID0gRVhJVF9GQUlMVVJFOwo+ICvCoMKgwqDCoMKgwqDCoMKgZ290 byBvdXQ7Cj4gwqDCoMKgwqDCoH0KPiAtwqDCoMKgwqBpZiAob3B0X3AgIT0gb3B0X2IpIHsKPiAt wqDCoMKgwqDCoMKgwqDCoGZwcmludGYoc3RkZXJyLCAiTXVzdCBzcGVjaWZ5IHBlcmlvZCBhbmQg YnVkZ2V0XG4iKTsKPiAtwqDCoMKgwqDCoMKgwqDCoHJldHVybiBFWElUX0ZBSUxVUkU7Cj4gK8Kg wqDCoMKgaWYgKGRvbSAmJiAhb3B0X3YgJiYgIW9wdF9hbGwgJiYgKG9wdF9wIHx8IG9wdF9iKSkg ewo+ICvCoMKgwqDCoMKgwqDCoMKgZnByaW50ZihzdGRlcnIsICJNdXN0IHNwZWNpZnkgVkNQVS5c biIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgciA9IEVYSVRfRkFJTFVSRTsKPiArwqDCoMKgwqDCoMKg wqDCoGdvdG8gb3V0Owo+ICvCoMKgwqDCoH0KPiArwqDCoMKgwqBpZiAob3B0X3YgJiYgb3B0X2Fs bCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgZnByaW50ZihzdGRlcnIsICJJbmNvcnJlY3QgVkNQVSBJ RHMuXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoHIgPSBFWElUX0ZBSUxVUkU7Cj4gK8KgwqDCoMKg wqDCoMKgwqBnb3RvIG91dDsKPiArwqDCoMKgwqB9Cj4gK8KgwqDCoMKgaWYgKCgodl9pbmRleCA+ IGJfaW5kZXgpICYmIG9wdF9iKSB8fCAoKHZfaW5kZXggPiBwX2luZGV4KSAmJgo+IG9wdF9wKQo+ ICvCoMKgwqDCoMKgwqDCoMKgfHwgcF9pbmRleCAhPSBiX2luZGV4KSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqBmcHJpbnRmKHN0ZGVyciwgIkluY29ycmVjdCBudW1iZXIgb2YgcGVyaW9kIGFuZCBidWRn ZXRcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgciA9IEVYSVRfRkFJTFVSRTsKPiArwqDCoMKgwqDC oMKgwqDCoGdvdG8gb3V0Owo+IMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqBpZiAoIWRvbSkg eyAvKiBsaXN0IGFsbCBkb21haW4ncyBydCBzY2hlZHVsZXIgaW5mbyAqLwo+IC3CoMKgwqDCoMKg wqDCoMKgaWYgKHNjaGVkX2RvbWFpbl9vdXRwdXQoTElCWExfU0NIRURVTEVSX1JURFMsCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzY2hlZF9ydGRzX2RvbWFpbl9vdXRwdXQsCj4gK8KgwqDCoMKgaWYgKCghZG9tKSAmJiBv cHRfYWxsKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqAvKiBnZXQgYWxsIGRvbWFpbidzIHBlci12Y3B1 IHJ0ZHMgc2NoZWR1bGVyIHBhcmFtZXRlcnMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoHJjID0gLXNj aGVkX3ZjcHVfb3V0cHV0KExJQlhMX1NDSEVEVUxFUl9SVERTLAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2NoZWRfcnRk c192Y3B1X291dHB1dF9hbGwsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2NoZWRfcnRkc19wb29sX291dHB1dCwKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNwdXBvb2wpKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVhJVF9G QUlMVVJFOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY3B1cG9vbCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqBpZiAocmMpIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgciA9IEVYSVRfRkFJTFVSRTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKg fSBlbHNlIGlmICghZG9tICYmICFvcHRfYWxsKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqAvKiBsaXN0 IGFsbCBkb21haW4ncyBkZWZhdWx0IHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLwo+ICvCoMKgwqDC oMKgwqDCoMKgcmMgPSAtc2NoZWRfZG9tYWluX291dHB1dChMSUJYTF9TQ0hFRFVMRVJfUlREUywK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzY2hlZF9ydGRzX2RvbWFpbl9vdXRwdXQsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2No ZWRfcnRkc19wb29sX291dHB1dCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjcHVwb29sKTsKPiArwqDCoMKgwqDC oMKgwqDCoGlmIChyYykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByID0gRVhJVF9GQUlM VVJFOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiArwqDCoMKgwqDCoMKg wqDCoH0KPiDCoMKgwqDCoMKgfSBlbHNlIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBk b21pZCA9IGZpbmRfZG9tYWluKGRvbSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqBpZiAoIW9wdF9wICYm ICFvcHRfYikgeyAvKiBvdXRwdXQgcnQgc2NoZWR1bGVyIGluZm8gKi8KPiArwqDCoMKgwqDCoMKg wqDCoGlmICghb3B0X3YgJiYgIW9wdF9hbGwpIHsgLyogb3V0cHV0IGRlZmF1bHQgc2NoZWR1bGlu Zwo+IHBhcmFtZXRlcnMgKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjaGVkX3J0ZHNf ZG9tYWluX291dHB1dCgtMSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzY2hlZF9y dGRzX2RvbWFpbl9vdXRwdXQoZG9taWQpKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiBFWElUX0ZBSUxVUkU7Cj4gLcKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgeyAvKiBz ZXQgcnQgc2NoZWR1bGVyIHBhcmFtYXRlcnMgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bGlieGxfZG9tYWluX3NjaGVkX3BhcmFtcyBzY2luZm87Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGxpYnhsX2RvbWFpbl9zY2hlZF9wYXJhbXNfaW5pdCgmc2NpbmZvKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmMgPSAtc2NoZWRfcnRkc19kb21haW5fb3V0cHV0KGRvbWlkKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJjKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgciA9IEVYSVRfRkFJTFVSRTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnb3RvIG91dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDC oMKgwqDCoMKgfSBlbHNlIGlmICghb3B0X3AgJiYgIW9wdF9iKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIGdldCBwZXItdmNwdSBydGRzIHNjaGVkdWxpbmcgcGFyYW1ldGVycyAqLwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtcyBzY2luZm87 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2luaXQo JnNjaW5mbyk7ClRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpcyBwbGFjZWQgcHJvcGVybHkgbm93 LCBidXQgdGhlcmUgc2hvdWxkIGJlIGEKYmxhbmsgbGluZSBiZXR3ZWVuIHRoZSBkZWNsYXJhdGlv biBpdHNlbGYsIGFuZCBhY3R1YWwgY29kZS4KClRoZXJlIGlzIGFub3RoZXIgaW5zdGFuY2Ugb2Yg dGhpcyBhdCBbMV0uCgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzY2hlZF9ydGRzX3ZjcHVf b3V0cHV0KC0xLCAmc2NpbmZvKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2NpbmZvLm51 bV92Y3B1cyA9IHZfaW5kZXg7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh2X2luZGV4 ID4gMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjaW5mby52Y3B1cyA9 IChsaWJ4bF9zY2hlZF9wYXJhbXMgKikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4bWFsbG9jKHNpemVvZihsaWJ4bF9zY2hl ZF9wYXJhbXMpICoKPiAodl9pbmRleCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGZvciAoaSA9IDA7IGkgPCB2X2luZGV4OyBpKyspCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzY2luZm8udmNwdXNbaV0udmNwdWlkID0gdmNwdXNbaV07Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmMgPSAtc2NoZWRfcnRkc192Y3B1X291 dHB1dChkb21pZCwgJnNjaW5mbyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSAv KiBnZXQgcGFyYW1zIGZvciBhbGwgdmNwdXMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByYyA9IC1zY2hlZF9ydGRzX3ZjcHVfb3V0cHV0X2FsbChkb21pZCwgJnNjaW5mbyk7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rpc3Bv c2UoJnNjaW5mbyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyYykgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHIgPSBFWElUX0ZBSUxVUkU7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiArwqDCoMKgwqB9IGVsc2UgaWYgKG9wdF92IHx8IG9wdF9hbGwpIHsKPgpUaGUgaW5k ZW50YXRpb24gaXMgd3JvbmcuIFRoZXJlIHNob3VsZCBiZSA0IG1vcmUgc3BhY2VzLgoKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogc2V0IHBlci12Y3B1IHJ0ZHMgc2NoZWR1bGluZyBwYXJh bWV0ZXJzICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpYnhsX3ZjcHVfc2NoZWRfcGFy YW1zIHNjaW5mbzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlieGxfdmNwdV9zY2hlZF9w YXJhbXNfaW5pdCgmc2NpbmZvKTsKPgpbMV0uCgpUaGFua3MgYW5kIFJlZ2FyZHMsCkRhcmlvCi0t IAo8PFRoaXMgaGFwcGVucyBiZWNhdXNlIEkgY2hvb3NlIGl0IHRvIGhhcHBlbiE+PiAoUmFpc3Rs aW4gTWFqZXJlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpEYXJpbyBGYWdnaW9saSwgUGguRCwgaHR0cDovL2Fib3V0Lm1l L2RhcmlvLmZhZ2dpb2xpClNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgQ2l0cml4IFN5c3RlbXMg UiZEIEx0ZC4sIENhbWJyaWRnZSAoVUspCgo= --=-2E0IVgiUl1QpvUjn95sy Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEABECAAYFAlb+dGcACgkQk4XaBE3IOsSFigCeK/DN0G2zrQS2d+nQ+/3SHLt+ v+4AmgONhFFScHZe6BIirDnonCoyeodj =oICk -----END PGP SIGNATURE----- --=-2E0IVgiUl1QpvUjn95sy-- --===============0805176569612782426== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============0805176569612782426==--