From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 05/24] xen: credit2: make tickling more deterministic Date: Tue, 13 Sep 2016 12:28:41 +0100 Message-ID: <2cf45a94-2e9a-3cbb-4bde-9850dc0af139@citrix.com> References: <147145358844.25877.7490417583264534196.stgit@Solace.fritz.box> <147145428827.25877.8612560340138019986.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bjltv-0003MQ-15 for xen-devel@lists.xenproject.org; Tue, 13 Sep 2016 11:29:19 +0000 In-Reply-To: <147145428827.25877.8612560340138019986.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: Andrew Cooper , Anshul Makkar , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMTcvMDgvMTYgMTg6MTgsIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+IFJpZ2h0IG5vdywgdGhl IGZvbGxvd2luZyBzY2VuYXJpbyBjYW4gb2NjdXJyOgo+ICAtIHVwb24gdmNwdSB2IHdha2V1cCwg diBpdHNlbGYgaXMgcHV0IGluIHRoZSBydW5xdWV1ZSwKPiAgICBhbmQgcGNwdSBYIGlzIHRpY2ts ZWQ7Cj4gIC0gcGNwdSBZIHNjaGVkdWxlcyAoZm9yIHdoYXRldmVyIHJlYXNvbiksIHNlZXMgdiBp bgo+ICAgIHRoZSBydW5xdWV1ZSBhbmQgcGlja3MgaXQgdXAuCj4gCj4gVGhpcyBtYXkgc2VlbSBv ayAob3IgZXZlbiBhIGdvb2QgdGhpbmcpLCBidXQgaXQncyBub3QuCj4gSW4gZmFjdCwgaWYgcnVu cV90aWNrbGUoKSBkZWNpZGVkIFggaXMgd2hlcmUgdiBzaG91bGQKPiBydW4sIGl0IGRpZCBpdCBm b3IgYSByZWFzb24gKGxvYWQgZGlzdHJpYnV0aW9uLCBTTVQKPiBzdXBwb3J0LCBjYWNoZSBob3Ru ZXNzLCBhZmZpbml0eSwgZXRjKSwgYW5kIHdlIHJlYWxseQo+IHNob3VsZCB0cnkgYXMgaGFyZCBh cyBwb3NzaWJsZSB0byBzdGljayB0byB0aGF0Lgo+IAo+IE9mIGNvdXJzZSwgd2UgY2FuJ3QgYmUg dG9vIHN0cmljdCwgb3Igd2UgcmlzayBsZWF2aW5nCj4gdmNwdXMgaW4gdGhlIHJ1bnF1ZXVlIHdo aWxlIHRoZXJlIGlzIGF2YWlsYWJsZSBDUFUKPiBjYXBhY2l0eS4gU28sIHdlIG9ubHkgbGVhdmUg diBpbiBydW5xdWV1ZSAtLWZvciBYIHRvCj4gcGljayBpdCB1cC0tIGlmIHdlIHNlZSB0aGF0IFgg aGFzIGJlZW4gdGlja2xlZCBhbmQKPiBoYXMgbm90IHNjaGVkdWxlZCB5ZXQsIGkuZS4sIGl0IHdp bGwgaGF2ZSBhIHJlYWwgY2hhbmNlCj4gb2YgYWN0dWFsbHkgc2VsZWN0IGFuZCBzY2hlZHVsZSB2 Lgo+IAo+IElmIHRoYXQgaXMgbm90IHRoZSBjYXNlLCB3ZSBzY2hlZHVsZSBpdCBvbiBZIChvciwg YXQKPiBsZWFzdCwgd2UgY29uc2lkZXIgdGhhdCksIGFzIHJ1bm5pbmcgc29tZXdoZXJlIG5vbi1p ZGVhbAo+IGlzIGJldHRlciB0aGFuIG5vdCBydW5uaW5nIGF0IGFsbC4KPiAKPiBUaGUgY29tbWl0 IGFsc28gYWRkcyBwZXJmb3JtYW5jZSBjb3VudGVycyBmb3IgZWFjaCBvZgo+IHRoZSBwb3NzaWJs ZSBzaXR1YXRpb25zLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhcmlvIEZhZ2dpb2xpIDxkYXJpby5m YWdnaW9saUBjaXRyaXguY29tPgo+IC0tLQo+IENjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVu bGFwQGNpdHJpeC5jb20+Cj4gQ2M6IEFuc2h1bCBNYWtrYXIgPGFuc2h1bC5tYWtrYXJAY2l0cml4 LmNvbT4KPiBDYzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgo+IENjOiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IC0tLQo+ICB4ZW4vY29tbW9uL3Nj aGVkX2NyZWRpdDIuYyAgIHwgICA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0KPiAgeGVuL2luY2x1ZGUveGVuL3BlcmZjX2RlZm4uaCB8ICAgIDMgKysKPiAgMiBm aWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21tb24vc2NoZWRfY3Jl ZGl0Mi5jCj4gaW5kZXggMTJkZmQyMC4uYTNkN2JlYiAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9u L3NjaGVkX2NyZWRpdDIuYwo+ICsrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCj4gQEAg LTU0LDYgKzU0LDcgQEAKPiAgI2RlZmluZSBUUkNfQ1NDSEVEMl9MT0FEX0NIRUNLICAgICAgIFRS Q19TQ0hFRF9DTEFTU19FVlQoQ1NDSEVEMiwgMTYpCj4gICNkZWZpbmUgVFJDX0NTQ0hFRDJfTE9B RF9CQUxBTkNFICAgICBUUkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hFRDIsIDE3KQo+ICAjZGVmaW5l IFRSQ19DU0NIRUQyX1BJQ0tFRF9DUFUgICAgICAgVFJDX1NDSEVEX0NMQVNTX0VWVChDU0NIRUQy LCAxOSkKPiArI2RlZmluZSBUUkNfQ1NDSEVEMl9SVU5RX0NBTkRJREFURSAgIFRSQ19TQ0hFRF9D TEFTU19FVlQoQ1NDSEVEMiwgMjApCj4gIAo+ICAvKgo+ICAgKiBXQVJOSU5HOiBUaGlzIGlzIHN0 aWxsIGluIGFuIGV4cGVyaW1lbnRhbCBwaGFzZS4gIFN0YXR1cyBhbmQgd29yayBjYW4gYmUgZm91 bmQgYXQgdGhlCj4gQEAgLTM5OCw2ICszOTksNyBAQCBzdHJ1Y3QgY3NjaGVkMl92Y3B1IHsKPiAg ICAgIGludCBjcmVkaXQ7Cj4gICAgICBzX3RpbWVfdCBzdGFydF90aW1lOyAvKiBXaGVuIHdlIHdl cmUgc2NoZWR1bGVkICh1c2VkIGZvciBjcmVkaXQpICovCj4gICAgICB1bnNpZ25lZCBmbGFnczsg ICAgICAvKiAxNiBiaXRzIGRvZXNuJ3Qgc2VlbSB0byBwbGF5IHdlbGwgd2l0aCBjbGVhcl9iaXQo KSAqLwo+ICsgICAgaW50IHRpY2tsZWRfY3B1OyAgICAgLyogY3B1IHRpY2tsZWQgZm9yIHBpY2tp bmcgdXMgdXAgKC0xIGlmIG5vbmUpICovCj4gIAo+ICAgICAgLyogSW5kaXZpZHVhbCBjb250cmli dXRpb24gdG8gbG9hZCAqLwo+ICAgICAgc190aW1lX3QgbG9hZF9sYXN0X3VwZGF0ZTsgIC8qIExh c3QgdGltZSBhdmVyYWdlIHdhcyB1cGRhdGVkICovCj4gQEAgLTEwNDksNiArMTA1MSwxMCBAQCBy dW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3Zj cHUgKm5ldywgc190aW1lX3Qgbm93KQo+ICAgICAgX19jcHVtYXNrX3NldF9jcHUoaXBpZCwgJnJx ZC0+dGlja2xlZCk7Cj4gICAgICBzbXRfaWRsZV9tYXNrX2NsZWFyKGlwaWQsICZycWQtPnNtdF9p ZGxlKTsKPiAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGlwaWQsIFNDSEVEVUxFX1NPRlRJUlEpOwo+ ICsKPiArICAgIGlmICggdW5saWtlbHkobmV3LT50aWNrbGVkX2NwdSAhPSAtMSkgKQo+ICsgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xlZF9jcHVfb3ZlcndyaXR0ZW4pOwo+ICsgICAgbmV3 LT50aWNrbGVkX2NwdSA9IGlwaWQ7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTEyNjYsNiArMTI3Miw3 IEBAIGNzY2hlZDJfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3QgdmNwdSAqdmMsIHZvaWQgKmRkKQo+ICAgICAgICAgIEFTU0VSVChzdmMtPnNkb20gIT0gTlVM TCk7Cj4gICAgICAgICAgc3ZjLT5jcmVkaXQgPSBDU0NIRUQyX0NSRURJVF9JTklUOwo+ICAgICAg ICAgIHN2Yy0+d2VpZ2h0ID0gc3ZjLT5zZG9tLT53ZWlnaHQ7Cj4gKyAgICAgICAgc3ZjLT50aWNr bGVkX2NwdSA9IC0xOwo+ICAgICAgICAgIC8qIFN0YXJ0aW5nIGxvYWQgb2YgNTAlICovCj4gICAg ICAgICAgc3ZjLT5hdmdsb2FkID0gMVVMTCA8PCAoQ1NDSEVEMl9QUklWKG9wcyktPmxvYWRfcHJl Y2lzaW9uX3NoaWZ0IC0gMSk7Cj4gICAgICAgICAgc3ZjLT5sb2FkX2xhc3RfdXBkYXRlID0gTk9X KCkgPj4gTE9BREFWR19HUkFOVUxBUklUWV9TSElGVDsKPiBAQCAtMTI3Myw2ICsxMjgwLDcgQEAg Y3NjaGVkMl9hbGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2 Y3B1ICp2Yywgdm9pZCAqZGQpCj4gICAgICBlbHNlCj4gICAgICB7Cj4gICAgICAgICAgQVNTRVJU KHN2Yy0+c2RvbSA9PSBOVUxMKTsKPiArICAgICAgICBzdmMtPnRpY2tsZWRfY3B1ID0gc3ZjLT52 Y3B1LT52Y3B1X2lkOwo+ICAgICAgICAgIHN2Yy0+Y3JlZGl0ID0gQ1NDSEVEMl9JRExFX0NSRURJ VDsKPiAgICAgICAgICBzdmMtPndlaWdodCA9IDA7Cj4gICAgICB9Cj4gQEAgLTIyMzMsNyArMjI0 MSw4IEBAIHZvaWQgX19kdW1wX2V4ZWNzdGF0ZSh2b2lkICp1bnVzZWQpOwo+ICBzdGF0aWMgc3Ry dWN0IGNzY2hlZDJfdmNwdSAqCj4gIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1 ZXVlX2RhdGEgKnJxZCwKPiAgICAgICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqc2N1 cnIsCj4gLSAgICAgICAgICAgICAgIGludCBjcHUsIHNfdGltZV90IG5vdykKPiArICAgICAgICAg ICAgICAgaW50IGNwdSwgc190aW1lX3Qgbm93LAo+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgKnBvcykKCkkgdGhpbmsgSSdkIHByZWZlciBpZiB0aGlzIHdlcmUgY2FsbGVkICJza2lwcGVk IiBvciBzb21ldGhpbmcgbGlrZSB0aGF0Ci0tIHRvIGluZGljYXRlIGhvdyBtYW55IHZjcHVzIGlu IHRoZSBydW5xdWV1ZSBoYWQgYmVlbiBza2lwcGVkIGJlZm9yZQpjb21pbmcgdG8gdGhpcyBvbmUu Cgo+ICB7Cj4gICAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwo+ICAgICAgc3RydWN0IGNzY2hl ZDJfdmNwdSAqc25leHQgPSBOVUxMOwo+IEBAIC0yMjYyLDEzICsyMjcxLDI5IEBAIHJ1bnFfY2Fu ZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKPiAgCj4gICAgICAgICAg LyogT25seSBjb25zaWRlciB2Y3B1cyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJ1biBvbiB0aGlzIHBy b2Nlc3Nvci4gKi8KPiAgICAgICAgICBpZiAoICFjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgc3ZjLT52 Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgKCpw b3MpKys7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg ICAgLyoKPiArICAgICAgICAgKiBJZiBhIHZjcHUgaXMgbWVhbnQgdG8gYmUgcGlja2VkIHVwIGJ5 IGFub3RoZXIgcHJvY2Vzc29yLCBhbmQgc3VjaAo+ICsgICAgICAgICAqIHByb2Nlc3NvciBoYXMg bm90IHNjaGVkdWxlZCB5ZXQsIGxlYXZlIGl0IGluIHRoZSBydW5xdWV1ZSBmb3IgaGltLgo+ICsg ICAgICAgICAqLwo+ICsgICAgICAgIGlmICggc3ZjLT50aWNrbGVkX2NwdSAhPSAtMSAmJiBzdmMt PnRpY2tsZWRfY3B1ICE9IGNwdSAmJgo+ICsgICAgICAgICAgICAgY3B1bWFza190ZXN0X2NwdShz dmMtPnRpY2tsZWRfY3B1LCAmcnFkLT50aWNrbGVkKSApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICAoKnBvcykrKzsKPiArICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhkZWZlcnJlZF90 b190aWNrbGVkX2NwdSk7Cj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiAg Cj4gICAgICAgICAgLyogSWYgdGhpcyBpcyBvbiBhIGRpZmZlcmVudCBwcm9jZXNzb3IsIGRvbid0 IHB1bGwgaXQgdW5sZXNzCj4gICAgICAgICAgICogaXRzIGNyZWRpdCBpcyBhdCBsZWFzdCBDU0NI RUQyX01JR1JBVEVfUkVTSVNUIGhpZ2hlci4gKi8KPiAgICAgICAgICBpZiAoIHN2Yy0+dmNwdS0+ cHJvY2Vzc29yICE9IGNwdQo+ICAgICAgICAgICAgICAgJiYgc25leHQtPmNyZWRpdCArIENTQ0hF RDJfTUlHUkFURV9SRVNJU1QgPiBzdmMtPmNyZWRpdCApCj4gICAgICAgICAgewo+ICsgICAgICAg ICAgICAoKnBvcykrKzsKPiAgICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX3Jl c2lzdGVkKTsKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+IEBAIC0yMjgw LDkgKzIzMDUsMjYgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkLAo+ICAKPiAgICAgICAgICAvKiBJbiBhbnkgY2FzZSwgaWYgd2UgZ290IHRoaXMgZmFy LCBicmVhay4gKi8KPiAgICAgICAgICBicmVhazsKPiArICAgIH0KPiAgCj4gKyAgICBpZiAoIHVu bGlrZWx5KHRiX2luaXRfZG9uZSkgKQo+ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCB7Cj4gKyAg ICAgICAgICAgIHVuc2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKPiArICAgICAgICAgICAgdW5zaWdu ZWQgdGlja2xlZF9jcHUsIHBvc2l0aW9uOwo+ICsgICAgICAgIH0gZDsKPiArICAgICAgICBkLmRv bSA9IHNuZXh0LT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKPiArICAgICAgICBkLnZjcHUgPSBz bmV4dC0+dmNwdS0+dmNwdV9pZDsKPiArICAgICAgICBkLnRpY2tsZWRfY3B1ID0gc25leHQtPnRp Y2tsZWRfY3B1Owo+ICsgICAgICAgIGQucG9zaXRpb24gPSAqcG9zOwo+ICsgICAgICAgIF9fdHJh Y2VfdmFyKFRSQ19DU0NIRUQyX1JVTlFfQ0FORElEQVRFLCAxLAo+ICsgICAgICAgICAgICAgICAg ICAgIHNpemVvZihkKSwKPiArICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSZk KTsKPiAgICAgIH0KPiAgCj4gKyAgICBpZiAoIHVubGlrZWx5KHNuZXh0LT50aWNrbGVkX2NwdSAh PSAtMSAmJiBzbmV4dC0+dGlja2xlZF9jcHUgIT0gY3B1KSApCj4gKyAgICAgICAgU0NIRURfU1RB VF9DUkFOSyh0aWNrbGVkX2NwdV9vdmVycmlkZGVuKTsKPiArCj4gICAgICByZXR1cm4gc25leHQ7 Cj4gIH0KPiAgCj4gQEAgLTIyOTgsNiArMjM0MCw3IEBAIGNzY2hlZDJfc2NoZWR1bGUoCj4gICAg ICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7Cj4gICAgICBzdHJ1Y3QgY3NjaGVk Ml92Y3B1ICogY29uc3Qgc2N1cnIgPSBDU0NIRUQyX1ZDUFUoY3VycmVudCk7Cj4gICAgICBzdHJ1 Y3QgY3NjaGVkMl92Y3B1ICpzbmV4dCA9IE5VTEw7Cj4gKyAgICB1bnNpZ25lZCBpbnQgc25leHRf cG9zID0gMDsKPiAgICAgIHN0cnVjdCB0YXNrX3NsaWNlIHJldDsKPiAgCj4gICAgICBTQ0hFRF9T VEFUX0NSQU5LKHNjaGVkdWxlKTsKPiBAQCAtMjM0Nyw3ICsyMzkwLDcgQEAgY3NjaGVkMl9zY2hl ZHVsZSgKPiAgICAgICAgICBzbmV4dCA9IENTQ0hFRDJfVkNQVShpZGxlX3ZjcHVbY3B1XSk7Cj4g ICAgICB9Cj4gICAgICBlbHNlCj4gLSAgICAgICAgc25leHQ9cnVucV9jYW5kaWRhdGUocnFkLCBz Y3VyciwgY3B1LCBub3cpOwo+ICsgICAgICAgIHNuZXh0ID0gcnVucV9jYW5kaWRhdGUocnFkLCBz Y3VyciwgY3B1LCBub3csICZzbmV4dF9wb3MpOwo+ICAKPiAgICAgIC8qIElmIHN3aXRjaGluZyBm cm9tIGEgbm9uLWlkbGUgcnVubmFibGUgdmNwdSwgcHV0IGl0Cj4gICAgICAgKiBiYWNrIG9uIHRo ZSBydW5xdWV1ZS4gKi8KPiBAQCAtMjM3MSw4ICsyNDE0LDIxIEBAIGNzY2hlZDJfc2NoZWR1bGUo Cj4gICAgICAgICAgICAgIF9fc2V0X2JpdChfX0NTRkxBR19zY2hlZHVsZWQsICZzbmV4dC0+Zmxh Z3MpOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgLyogQ2hlY2sgZm9yIHRoZSByZXNldCBj b25kaXRpb24gKi8KPiAtICAgICAgICBpZiAoIHNuZXh0LT5jcmVkaXQgPD0gQ1NDSEVEMl9DUkVE SVRfUkVTRVQgKQo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogVGhlIHJlc2V0IGNvbmRpdGlv biBpcyAiaGFzIGEgc2NoZWR1bGVyIGVwb2NoIGNvbWUgdG8gYW4gZW5kPyIuCj4gKyAgICAgICAg ICogVGhlIHdheSB0aGlzIGlzIGVuZm9yY2VkIGlzIGNoZWNraW5nIHdoZXRoZXIgdGhlIHZjcHUg YXQgdGhlIHRvcAo+ICsgICAgICAgICAqIG9mIHRoZSBydW5xdWV1ZSBoYXMgbmVnYXRpdmUgY3Jl ZGl0cy4gVGhpcyBtZWFucyB0aGUgZXBvY2hzIGhhdmUKPiArICAgICAgICAgKiB2YXJpYWJsZSBs ZW5naHQsIGFzIGluIG9uZSBlcG9jaCBleHBvcmVzIHdoZW46Cj4gKyAgICAgICAgICogIDEpIHRo ZSB2Y3B1IGF0IHRoZSB0b3Agb2YgdGhlIHJ1bnF1ZXVlIGhhcyBleGVjdXRlZCBmb3IKPiArICAg ICAgICAgKiAgICAgYXJvdW5kIDEwIG1zICh3aXRoIGRlZmF1bHQgcGFyYW1ldGVycyk7Cj4gKyAg ICAgICAgICogIDIpIG5vIG90aGVyIHZjcHUgd2l0aCBoaWdoZXIgY3JlZGl0cyB3YW50cyB0byBy dW4uCj4gKyAgICAgICAgICoKPiArICAgICAgICAgKiBIZXJlLCB3aGVyZSB3ZSB3YW50IHRvIGNo ZWNrIGZvciByZXNldCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlCj4gKyAgICAgICAgICogcHJv cGVyIHZjcHUgaXMgYmVpbmcgdXNlZC4gSW4gZmFjdCwgcnVucXVldWVfY2FuZGlkYXRlKCkgbWF5 IGhhdmUKPiArICAgICAgICAgKiBub3QgcmV0dXJuZWQgdGhlIGZpcnN0IHZjcHUgaW4gdGhlIHJ1 bnF1ZXVlLCBmb3IgdmFyaW91cyByZWFzb25zCj4gKyAgICAgICAgICogKGUuZy4sIGFmZmluaXR5 KS4gT25seSB0cmlnZ2VyIGEgcmVzZXQgd2hlbiBpdCBkb2VzLgo+ICsgICAgICAgICAqLwo+ICsg ICAgICAgIGlmICggc25leHRfcG9zID09IDAgJiYgc25leHQtPmNyZWRpdCA8PSBDU0NIRUQyX0NS RURJVF9SRVNFVCApCgpUaGlzIGJpdCB3YXNuJ3QgbWVudGlvbmVkIGluIHRoZSBkZXNjcmlwdGlv bi4gOi0pCgpUaGVyZSdzIGEgY2VydGFpbiBhbW91bnQgb2Ygc2Vuc2UgdG8gdGhlIGlkZWEgaGVy ZSwgYnV0IGl0J3MgdGhlIGtpbmQgb2YKdGhpbmcgdGhhdCBtYXkgaGF2ZSBzdHJhbmdlIHNpZGUg ZWZmZWN0cy4gIERpZCB5b3UgbG9vayBhdCB0cmFjZXMgYmVmb3JlCmFuZCBhZnRlciB0aGlzIGNo YW5nZT8gIEFuZCBkb2VzIHRoZSBiZWhhdmlvciBzZWVtIG1vcmUgcmF0aW9uYWw/CgpJZiBzbywg SSdtIGhhcHB5IHRvIHRydXN0IHlvdXIganVkZ2VtZW50IC0tIGp1c3Qgd2FudCB0byBjaGVjayB0 byBtYWtlCnN1cmUuIDotKQoKRXZlcnl0aGluZyBlbHNlIGxvb2tzIGdvb2QsIHRoYW5rcy4KCiAt R2VvcmdlCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==