From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 2/4] xen: credit2: allow to set and get utilization cap Date: Wed, 28 Jun 2017 16:19:00 +0100 Message-ID: References: <149692186557.9605.11625777539060264052.stgit@Solace.fritz.box> <149692373432.9605.11077306237899753280.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 1dQEkB-0000Xe-WB for xen-devel@lists.xenproject.org; Wed, 28 Jun 2017 15:19:04 +0000 Received: by mail-qt0-f196.google.com with SMTP id m54so5350990qtb.1 for ; Wed, 28 Jun 2017 08:19:02 -0700 (PDT) In-Reply-To: <149692373432.9605.11077306237899753280.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 Cc: xen-devel , Anshul Makkar List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBKdW4gOCwgMjAxNyBhdCAxOjA4IFBNLCBEYXJpbyBGYWdnaW9saQo8ZGFyaW8uZmFn Z2lvbGlAY2l0cml4LmNvbT4gd3JvdGU6Cj4gQXMgY2FwIGlzIGFscmVhZHkgcHJlc2VudCBpbiBD cmVkaXQxLCBhcyBhIHBhcmFtZXRlciwgYWxsCj4gdGhlIHdpcmluZyBpcyB0aGVyZSBhbHJlYWR5 IGZvciBpdCB0byBiZSBwZXJjb2xhdGUgZG93bgo+IHRvIGNzY2hlZDJfZG9tX2NudGwoKSB0b28u Cj4KPiBJbiB0aGlzIGNvbW1pdCwgd2UgYWN0dWFsbHkgZGVhbCB3aXRoIGl0LCBhbmQgaW1wbGVt ZW50Cj4gc2V0dGluZywgY2hhbmdpbmcgb3IgZGlzYWJsaW5nIHRoZSBjYXAgb2YgYSBkb21haW4u Cj4KPiBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4 LmNvbT4KCkJUVyArMSB0aGUgZGVjaXNpb24gdG8gcHV0IHRoaXMgaW4gYSBzZXBhcmF0ZSBwYXRj aC4gIEkgdGhpbmsgaXQgbWFkZQpyZXZpZXcgZWFzaWVyLgoKPiAtLS0KPiBDYzogR2VvcmdlIER1 bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBBbnNodWwgTWFra2FyIDxh bnNodWwubWFra2FyQGNpdHJpeC5jb20+Cj4gLS0tCj4gIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0 Mi5jICB8ICAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ ICB4ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggfCAgICAxCj4gIDIgZmlsZXMgY2hhbmdlZCwg MTE1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+IGluZGV4 IGJhNGJmNGIuLjNmN2I4ZjAgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQy LmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+IEBAIC0yNDk4LDMwICsyNDk4 LDM1IEBAIGNzY2hlZDJfZG9tX2NudGwoCj4gICAgICBzdHJ1Y3QgY3NjaGVkMl9kb20gKiBjb25z dCBzZG9tID0gY3NjaGVkMl9kb20oZCk7Cj4gICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpw cnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAg ICBzdHJ1Y3QgdmNwdSAqdjsKPiAgICAgIGludCByYyA9IDA7Cj4KPiAgICAgIC8qCj4gICAgICAg KiBMb2NraW5nOgo+ICAgICAgICogIC0gd2UgbXVzdCB0YWtlIHRoZSBwcml2YXRlIGxvY2sgZm9y IGFjY2Vzc2luZyB0aGUgd2VpZ2h0cyBvZiB0aGUKPiAtICAgICAqICAgIHZjcHVzIG9mIGQsCj4g KyAgICAgKiAgICB2Y3B1cyBvZiBkLCBhbmQvb3IgdGhlIGNhcDsKPiAgICAgICAqICAtIGluIHRo ZSBwdXRpbmZvIGNhc2UsIHdlIGFsc28gbmVlZCB0aGUgcnVucXVldWUgbG9jayhzKSwgZm9yCj4g ICAgICAgKiAgICB1cGRhdGluZyB0aGUgbWF4IHdhaWdodCBvZiB0aGUgcnVucXVldWUocykuCj4g KyAgICAgKiAgICBJZiBjaGFuZ2luZyB0aGUgY2FwLCB3ZSBhbHNvIG5lZWQgdGhlIGJ1ZGdldF9s b2NrLCBmb3IgdXBkYXRpbmcKPiArICAgICAqICAgIHRoZSB2YWx1ZSBvZiB0aGUgZG9tYWluIGJ1 ZGdldCBwb29sIChhbmQgdGhlIHJ1bnF1ZXVlIGxvY2ssCj4gKyAgICAgKiAgICBmb3IgYWRqdXN0 aW5nIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXNjaGVkdWxpbmcgYW55IHZDUFUgdGhhdCBpcwo+ICsg ICAgICogICAgcnVubmluZyBhdCB0aGUgdGltZSBvZiB0aGUgY2hhbmdlKS4KPiAgICAgICAqLwo+ ICAgICAgc3dpdGNoICggb3AtPmNtZCApCj4gICAgICB7Cj4gICAgICBjYXNlIFhFTl9ET01DVExf U0NIRURPUF9nZXRpbmZvOgo+ICAgICAgICAgIHJlYWRfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ss IGZsYWdzKTsKPiAgICAgICAgICBvcC0+dS5jcmVkaXQyLndlaWdodCA9IHNkb20tPndlaWdodDsK PiArICAgICAgICBvcC0+dS5jcmVkaXQyLmNhcCA9IHNkb20tPmNhcDsKPiAgICAgICAgICByZWFk X3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPiAgICAgICAgICBicmVhazsK PiAgICAgIGNhc2UgWEVOX0RPTUNUTF9TQ0hFRE9QX3B1dGluZm86Cj4gKyAgICAgICAgd3JpdGVf bG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPiArICAgICAgICAvKiBXZWlnaHQgKi8K PiAgICAgICAgICBpZiAoIG9wLT51LmNyZWRpdDIud2VpZ2h0ICE9IDAgKQo+ICAgICAgICAgIHsK PiAtICAgICAgICAgICAgc3RydWN0IHZjcHUgKnY7Cj4gICAgICAgICAgICAgIGludCBvbGRfd2Vp Z2h0Owo+Cj4gLSAgICAgICAgICAgIHdyaXRlX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFn cyk7Cj4gLQo+ICAgICAgICAgICAgICBvbGRfd2VpZ2h0ID0gc2RvbS0+d2VpZ2h0Owo+Cj4gICAg ICAgICAgICAgIHNkb20tPndlaWdodCA9IG9wLT51LmNyZWRpdDIud2VpZ2h0Owo+IEBAIC0yNTM5 LDkgKzI1NDQsMTEzIEBAIGNzY2hlZDJfZG9tX2NudGwoCj4KPiAgICAgICAgICAgICAgICAgIHZj cHVfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIHN2Yy0+dmNwdSk7Cj4gICAgICAgICAgICAgIH0KPiAr ICAgICAgICB9Cj4gKyAgICAgICAgLyogQ2FwICovCj4gKyAgICAgICAgaWYgKCBvcC0+dS5jcmVk aXQyLmNhcCAhPSAwICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHNwaW5fbG9jaygmc2Rv bS0+YnVkZ2V0X2xvY2spOwo+ICsgICAgICAgICAgICBzZG9tLT50b3RfYnVkZ2V0ID0gKENTQ0hF RDJfQkRHVF9SRVBMX1BFUklPRCAvIDEwMCkgKiBvcC0+dS5jcmVkaXQyLmNhcDsKCldoZW4gZG9p bmcgaW50ZWdlciBhcml0aG1ldGljIGxpa2UgdGhpcywgSSB0aGluayBpdCdzIHVzdWFsbHkgYmV0 dGVyCnRvIGRvIHRoZSBtdWx0aXBseSBmaXJzdCAtLSB1bmxlc3MgeW91J3JlIGFmcmFpZCBvZiBv dmVyZmxvdywgd2hpY2gKc2hvdWxkbid0IChpbiB0aGVvcnkpIGJlIGFuIGlzc3VlIGhlcmUuCgpT cGVha2luZyBvZiB3aGljaCAtLSB3ZSBwcm9iYWJseSB3YW50IHRvIG1ha2Ugc3VyZSAnY2FwJyBp cyA8PSAxMDAgKiBudmNwdXMuIDotKQoKPiArICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNkb20t PmJ1ZGdldF9sb2NrKTsKPiArCj4gKyAgICAgICAgICAgIGlmICggc2RvbS0+Y2FwID09IDAgKQo+ ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAg ICogTGV0J3MgZ2l2ZSB0byB0aGUgZG9tYWluIHRoZSBidWRnZXQgaXQgaXMgZW50aXRsZWQgb2Ys CgoiZW50aXRsZWQgdG8iCgpBbHRob3VnaCBpZiB5b3Ugd2FudCB0byBiZSBzdHJpY3RseSBjb3Jy ZWN0IChpLmUuLCBmb2xsb3dpbmcgdGhlCm9mZmljaWFsIHJ1bGVzIHJhdGhlciB0aGFuIHRoZSB3 YXkgcGVvcGxlIGFjdHVhbGx5IHNwZWFrKSB5b3Ugc2hvdWxkCnNheSAidG8gd2hpY2ggaXQgaXMg ZW50aXRsZWQiIChub3Qgc3VwcG9zZWQgdG8gaGF2ZSBhIGRhbmdsaW5nCnByZXBvc2l0aW9uKS4g IEknbGwgbGVhdmUgaXQgdXAgdG8geW91LiA6LSkKCj4gKyAgICAgICAgICAgICAgICAgKiBhbmQg cXVldWUgaXRzIGZpcnN0IHJlcGxlbmlzaG1lbnQgZXZlbnQuCj4gKyAgICAgICAgICAgICAgICAg Kgo+ICsgICAgICAgICAgICAgICAgICogU2luY2UgY2FwIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBm b3IgdGhpcyBkb21haW4sIHdlCj4gKyAgICAgICAgICAgICAgICAgKiBrbm93IG5vIHZDUFUgaXMg bWVzc2luZyB3aXRoIHRoZSBkb21haW4ncyBidWRnZXQsIGFuZAo+ICsgICAgICAgICAgICAgICAg ICogdGhlIHJlcGxlbmlzaG1lbnQgdGltZXIgaXMgc3RpbGwgb2ZmLgo+ICsgICAgICAgICAgICAg ICAgICogRm9yIHRoZXNlIHJlYXNvbnMsIGl0IGlzIHNhZmUgdG8gZG8gdGhlIGZvbGxvd2luZyB3 aXRob3V0Cj4gKyAgICAgICAgICAgICAgICAgKiB0YWtpbmcgdGhlIGJ1ZGdldF9sb2NrLgo+ICsg ICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgICBzZG9tLT5idWRnZXQgPSBzZG9t LT50b3RfYnVkZ2V0Owo+ICsgICAgICAgICAgICAgICAgc2RvbS0+bmV4dF9yZXBsID0gTk9XKCkg KyBDU0NIRUQyX0JER1RfUkVQTF9QRVJJT0Q7Cj4gKyAgICAgICAgICAgICAgICBzZXRfdGltZXIo JnNkb20tPnJlcGxfdGltZXIsIHNkb20tPm5leHRfcmVwbCk7Cj4gKwo+ICsgICAgICAgICAgICAg ICAgLyoKPiArICAgICAgICAgICAgICAgICAqIE5vdywgbGV0J3MgZW5hYmxlIGJ1ZGdldCBhY2Nv dW50aW5nIGZvciBhbGwgdGhlIHZDUFVzLgo+ICsgICAgICAgICAgICAgICAgICogRm9yIG1ha2lu ZyBzdXJlIHRoYXQgdGhleSB3aWxsIHN0YXJ0IHRvIGhvbm91ciB0aGUgZG9tYWluJ3MKPiArICAg ICAgICAgICAgICAgICAqIGNhcCwgd2Ugc2V0IHRoZWlyIGJ1ZGdldCB0byAwLgo+ICsgICAgICAg ICAgICAgICAgICogVGhpcyB3YXksIGFzIHNvb24gYXMgdGhleSB3aWxsIHRyeSB0byBydW4sIHRo ZXkgd2lsbCBoYXZlCj4gKyAgICAgICAgICAgICAgICAgKiB0byBnZXQgc29tZSBidWRnZXQuCj4g KyAgICAgICAgICAgICAgICAgKgo+ICsgICAgICAgICAgICAgICAgICogRm9yIHRoZSB2Q1BVcyB0 aGF0IGFyZSBhbHJlYWR5IHJ1bm5pbmcsIHdlIHRyaWdnZXIgdGhlCj4gKyAgICAgICAgICAgICAg ICAgKiBzY2hlZHVsZXIgb24gdGhlaXIgcENQVS4gV2hlbiwgYXMgYSBjb25zZXF1ZW5jZSBvZiB0 aGlzLAo+ICsgICAgICAgICAgICAgICAgICogY3NjaGVkMl9zY2hlZHVsZSgpIHdpbGwgcnVuLCBp dCB3aWxsIGZpZ3VyZSBvdXQgdGhlcmUgaXMKPiArICAgICAgICAgICAgICAgICAqIG5vIGJ1ZGdl dCwgYW5kIHRoZSB2Q1BVIHdpbGwgdHJ5IHRvIGdldCBzb21lIChhbmQgYmUgcGFya2VkLAo+ICsg ICAgICAgICAgICAgICAgICogaWYgdGhlcmUncyBub25lLCBhbmQgd2UnbGwgc3dpdGNoIHRvIHNv bWVvbmUgZWxzZSkuCj4gKyAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgIGZv cl9lYWNoX3ZjcHUgKCBkLCB2ICkKPiArICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMgPSBjc2NoZWQyX3ZjcHUodik7Cj4gKyAg ICAgICAgICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9jayhz dmMtPnZjcHUpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICBpZiAoIHYtPmlzX3J1bm5pbmcg KQo+ICsgICAgICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGNwdSA9IHYtPnByb2Nlc3NvcjsKPiArICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkID0gYzJycWQob3BzLCBjcHUpOwo+ICsK PiArICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGN1cnJfb25fY3B1KGNwdSkgPT0gdik7 Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgKiBXZSBhcmUgdHJpZ2dlcmluZyBhIHJlc2NoZWR1bGUgb24gdGhlIHZDUFUncwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgKiBwQ1BVLiBUaGF0IHdpbGwgcnVuIGJ1cm5fY3JlZGl0 cygpIGFuZCwgc2luY2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIHZDUFUgaXMg Y2FwcGVkIG5vdywgaXQgd291bGQgY2hhcmdlIGFsbCB0aGUKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICogZXhlY3V0aW9uIHRpbWUgb2YgdGhpcyBsYXN0IHJvdW5kIGFzIGJ1ZGdldCBhcwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZWxsLiBUaGF0IHdpbGwgbWFrZSB0aGUgdkNQ VSBidWRnZXQgZ28gbmVnYXRpdmUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvdGVu dGlhbGx5IGJ5IGEgbGFyZ2UgYW1vdW50LCBhbmQgaXQncyB1bmZhaXIuCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAqCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIFRvIGF2b2lkIHRo YXQsIGNhbGwgYnVybl9jcmVkaXQoKSBoZXJlLCB0byBkbyB0aGUKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICogYWNjb3VudGluZyBvZiB0aGlzIGN1cnJlbnQgcnVubmluZyBpbnN0YW5jZSBu b3csCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHdpdGggYnVkZ2V0dGluZyBzdGlsbCBk aXNhYmxlZC4gVGhpcyBkb2VzIG5vdAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmV2 ZW50IHNvbWUgc21hbGwgYW1vdW50IG9mIGJ1ZGdldCBiZWluZyBjaGFyZ2VkCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAqIHRvIHRoZSB2Q1BVIChpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWUg aXQgcnVucyBmcm9tCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIG5vdywgdG8gd2hlbiBz Y2hlZHVsaW5nIGhhcHBlbnMpLiBUaGUgYnVkZ2V0IHdpbGwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICogYWxzbyBnbyBiZWxvdyAwLCBidXQgYSBsb3QgbGVzcyB0aGFuIGhvdyBpdCB3b3Vs ZAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZiB3ZSBkb24ndCBkbyB0aGlzLgo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgYnVy bl9jcmVkaXRzKHJxZCwgc3ZjLCBOT1coKSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIF9f Y3B1bWFza19zZXRfY3B1KGNwdSwgJnJxZC0+dGlja2xlZCk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsICZycWQtPnNtdF9pZGxlKSk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgU0NIRURVTEVf U09GVElSUSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg IHN2Yy0+YnVkZ2V0ID0gMDsKPiArICAgICAgICAgICAgICAgICAgICB2Y3B1X3NjaGVkdWxlX3Vu bG9jayhsb2NrLCBzdmMtPnZjcHUpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgIHNkb20tPmNhcCA9IG9wLT51LmNyZWRpdDIuY2FwOwo+ICsgICAg ICAgIH0KPiArICAgICAgICBlbHNlIGlmICggc2RvbS0+Y2FwICE9IDAgKQo+ICsgICAgICAgIHsK PiArICAgICAgICAgICAgc3RvcF90aW1lcigmc2RvbS0+cmVwbF90aW1lcik7Cj4gKwo+ICsgICAg ICAgICAgICAvKiBEaXNhYmxlIGJ1ZGdldCBhY2NvdW50aW5nIGZvciBhbGwgdGhlIHZDUFVzLiAq Lwo+ICsgICAgICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCj4gKyAgICAgICAgICAgIHsK PiArICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YyA9IGNzY2hlZDJfdmNw dSh2KTsKPiArICAgICAgICAgICAgICAgIHNwaW5sb2NrX3QgKmxvY2sgPSB2Y3B1X3NjaGVkdWxl X2xvY2soc3ZjLT52Y3B1KTsKPiArCj4gKyAgICAgICAgICAgICAgICBzdmMtPmJ1ZGdldCA9IFNU SU1FX01BWDsKPgo+IC0gICAgICAgICAgICB3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5s b2NrLCBmbGFncyk7Cj4gKyAgICAgICAgICAgICAgICB2Y3B1X3NjaGVkdWxlX3VubG9jayhsb2Nr LCBzdmMtPnZjcHUpOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIHNkb20tPmNhcCA9 IDA7Cj4gKyAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAqIFdlIGFyZSBkaXNhYmxpbmcg dGhlIGNhcCBmb3IgdGhpcyBkb21haW4sIHdoaWNoIG1heSBoYXZlIHZDUFVzCj4gKyAgICAgICAg ICAgICAqIHdhaXRpbmcgZm9yIGEgcmVwbGVuaXNobWVudCwgYW5kIHdlIG5lZWQgdG8gdW5wYXJr IHRoZW0gYWxsLgo+ICsgICAgICAgICAgICAgKiBQYXJrZWQgdmNwdXMgc2l0IGluIHRoZSBkb21h aW4ncyBwYXJrZWRfdmNwdXMgbGlzdCwgd2hpY2ggd291bGQKPiArICAgICAgICAgICAgICogcmVx dWlyZSBiZWluZyBtYW5pcHVsYXRlZCB3aXRoIHRoZSBidWRnZXRfbG9jayBoZWxkLiBIb3dldmVy LAo+ICsgICAgICAgICAgICAgKiB3ZSBoYXZlIGFscmVhZHkgZGlzYWJsZWQgYnVkZ2V0IGFjY291 bnRpbmcgZm9yIGFsbCB0aGUgdkNQVXMgb2YKPiArICAgICAgICAgICAgICogdGhpcyBkb21haW4g aW4gdGhlIGxvb3AgYWJvdmUsIGFuZCB0aGVyZWZvcmUsIG5vIHZDUFUgd2lsbCBydW4KPiArICAg ICAgICAgICAgICogb3V0IG9mIGJ1ZGdldCBhbmQgbmVlZCBiZWluZyBhZGRlZCB0byB0aGUgbGlz dC4KPiArICAgICAgICAgICAgICoKPiArICAgICAgICAgICAgICogRm9yIHRoaXMgcmVhc29uLCBp dCBpcyBzYWZlLCBpbiB0aGlzIGNhc2UsIHRvIGp1c3QgZ28gYWhlYWQgYW5kCj4gKyAgICAgICAg ICAgICAqIGRyYWluIHRoZSBsaXN0LCB3aXRob3V0IHRoZSBuZWVkIG9mIHRha2luZyB0aGUgYnVk Z2V0X2xvY2suCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICB1bnBhcmtfcGFya2Vk X3ZjcHVzKG9wcywgJnNkb20tPnBhcmtlZF92Y3B1cyk7CgpJIHRoaW5rIGl0IGlzIHNhZmUgY3Vy cmVudGx5LiAgQnV0IGlzIHRoZXJlIGFueSByZWFzb24gbm90IHRvIGp1c3QKZ3JhYiB0aGUgbG9j ayBhbnl3YXk/ICBXZSBkb24ndCBleHBlY3QgY2FwIGFkanVzdG1lbnQgYWN0aW9ucyB0byBiZQp0 aGF0IGNvbW1vbiwgYW5kIGl0IHdvdWxkIG1lYW4gbGVzcyBjaGFuY2Ugb2YgZXJyb3IgaW4gdGhl IGZ1dHVyZS4KCkknbSBub3QgMTAwJSBzZXQgb24gZ3JhYmJpbmcgdGhlIGJ1ZGdldCBsb2NrLCBi dXQgSSBkbyB0aGluayBpdCdzIGEgYmV0dGVyIGlkZWEuCgpPdGhlciB0aGFuIHRoYXQgbG9va3Mg Z29vZCwgdGhhbmtzIQoKIC1HZW9yZ2UKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=