From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: Re: [PATCH v2 5/7] xen: credit1: increase efficiency and scalability of load balancing. Date: Fri, 7 Apr 2017 18:25:23 +0200 Message-ID: <1491582323.3287.22.camel@citrix.com> References: <149146456487.21348.8554211499146017782.stgit@Solace.fritz.box> <149146660655.21348.13071925386790562321.stgit@Solace.fritz.box> <1568f464-29a4-6330-3902-a36f3eb62775@citrix.com> <1491576546.3287.16.camel@citrix.com> <6f4e282c-ee7d-0715-5177-999da533ae46@citrix.com> <1491578776.3287.18.camel@citrix.com> <1491580142.3287.20.camel@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2186145587739259355==" Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cwWiM-0007nu-JU for xen-devel@lists.xenproject.org; Fri, 07 Apr 2017 16:26:22 +0000 In-Reply-To: <1491580142.3287.20.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: George Dunlap , xen-devel@lists.xenproject.org Cc: George Dunlap , Andrew Cooper , Anshul Makkar List-Id: xen-devel@lists.xenproject.org --===============2186145587739259355== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="=-Lw7yT/rEM5iBAyWxjqhJ" --=-Lw7yT/rEM5iBAyWxjqhJ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 T24gRnJpLCAyMDE3LTA0LTA3IGF0IDE3OjQ5ICswMjAwLCBEYXJpbyBGYWdnaW9saSB3cm90ZToK PiBPbiBGcmksIDIwMTctMDQtMDcgYXQgMTc6MjYgKzAyMDAsIERhcmlvIEZhZ2dpb2xpIHdyb3Rl Ogo+ID4gT24gRnJpLCAyMDE3LTA0LTA3IGF0IDE2OjE3ICswMTAwLCBHZW9yZ2UgRHVubGFwIHdy b3RlOgo+ID4gPiBJdCBzZWVtcyBsaWtlIHRyeWluZyB0byBzb3J0IG91dCBtb3N0IG9mIHRoZSBy ZWZjb3VudGluZwo+ID4gPiBpbnNpZGUgZm8gdGhvc2UgdHdvIGZ1bmN0aW9ucyAocGVyaGFwcyB3 aXRoIHJ1bnFfaW5zZXJ0KCkgd2hpY2gKPiA+ID4gZGlkCj4gPiA+IHJlZmVyZW5jZSBjb3VudGlu ZywgYW5kIF9fcnVucV9pbnNlcnQoKSB0aGF0IGRpZG4ndCwgb3IKPiA+ID4gc29tZXRoaW5nwqDC oGxpa2UKPiA+ID4gdGhhdCkgd291bGQgYmUgYSBiZXR0ZXIgYXBwcm9hY2guCj4gPiA+IAo+ID4g Cj4gPiBSaWdodC4gSSd2ZSB0cmllZCBhbHJlYWR5LCBidXQgd2l0aG91dCBzdWNjZXNzLCBhbmQg SSBoYWQgdG8gc3RvcAo+ID4gYW4KPiA+IHJlc29ydCB0byB3aGF0J3MgaW4gdGhpcyBwYXRjaC4K PiA+IAo+ID4gQXMgSSBzYWlkLCBJIGFtIG9rIHdpdGggdGhpcyBhcHByb2FjaCwgc28gSSBqdXN0 IHdlbnQgZm9yIGl0LiBJIGNhbgo+ID4gdHJ5Cj4gPiB0byB0aGluayBoYXJkZXIgYXQgd2hldGhl ciBpdCBpcyByZWFsbHkgcG9zc2libGUgdG8gZG8gc29tZXRoaW5nCj4gPiBsaWtlCj4gPiB5b3Ug c3VnZ2VzdCBhYm92ZS4uLiBsZW1tZSB0cnkuCj4gPiAKPiAKPiBTbywgaG93IGFib3V0IHNvbWV0 aGluZyBsaWtlIHRoZSBiZWxvdz8KPiAKQW5kLCBnaXZlbiB0aGUgdGlnaHQgdGltaW5nLCBJJ20g c2VuZGluZyBvdXQgdjMsIHdpdGggdGhlIHBhdGNoCnByb3Bvc2VkIGhlcmUgaW5zaWRlIGl0LgoK QXMgc2FpZCBvbiBJUkMsIGFib3V0IHJlb3JkZXJpbmcgdGhlIHNlcmllcywgcHV0dGluZyAidHJl YXQgcENQVXMgbW9yZQpldmVubHkgZHVyaW5nIGJhbGFuY2luZyIgYmVmb3JlICJpbmNyZWFzZSBl ZmZpY2llbmN5IGFuZCBzY2FsYWJpbGl0eSBvZgpsb2FkIGJhbGFuY2luZyIgZG9lcyBub3QgbWFr ZSBtdWNoIHNlbnNlLCBhbmQgaXMgbm90IHdvcnRoIHRoZSBlZmZvcnQuCgpJIHRoaW5rIHRoZSBt b2RpZmljYXRpb25zIEkndmUgZG9uZSBnbyBpbiB0aGUgZGlyZWN0aW9uIHlvdSB3ZXJlCnBvaW50 aW5nIGF0Li4uIGlmIHlvdSBsaWtlIHRoZSByZXN1bHQsIHRoZW4gam9sbHkgZ29vZC4gSWYgbm90 LCBhbmQgd2UKZG9uJ3QgZmluZCBhbiBhbHRlcm5hdGl2ZSBpbiB0aW1lLCBJJ20gZmluZSBsZWF2 aW5nIG91dCBib3RoIHRoZSBsYXN0CnR3byBwYXRjaGVzIG9mIHRoZSBzZXJpZXMgKEkgbWVhbiwg dGhlIGxhc3QgdHdvIHBhdGNoZXMgaW4gdjMgdGhhdCBJJ20KYWJvdXQgdG8gc2VuZCBvdXQpLgoK VGhhbmtzIGFuZCBSZWdhcmRzLApEYXJpbwo+IC0tLQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9u L3NjaGVkX2NyZWRpdC5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYwo+IGluZGV4IDU5Yjg3 ZjcuLmEwYWQxNjcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYwo+ICsr KyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKPiBAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVj dCBjc2NoZWRfcGNwdSB7Cj4gwqDCoMKgwqDCoHN0cnVjdCB0aW1lciB0aWNrZXI7Cj4gwqDCoMKg wqDCoHVuc2lnbmVkIGludCB0aWNrOwo+IMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgaWRsZV9iaWFz Owo+ICvCoMKgwqDCoHVuc2lnbmVkIGludCBucl9ydW5uYWJsZTsKPiDCoH07Cj4gwqAKPiDCoC8q Cj4gQEAgLTI2Miw5ICsyNjMsMjYgQEAgc3RhdGljIGlubGluZSBib29sX3QgaXNfcnVucV9pZGxl KHVuc2lnbmVkIGludAo+IGNwdSkKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlubGluZSB2b2lkCj4g K2luY19ucl9ydW5uYWJsZSh1bnNpZ25lZCBpbnQgY3B1KQo+ICt7Cj4gK8KgwqDCoMKgQVNTRVJU KHNwaW5faXNfbG9ja2VkKHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwKPiBjcHUpLnNjaGVkdWxlX2xv Y2spKTsKPiArwqDCoMKgwqBDU0NIRURfUENQVShjcHUpLT5ucl9ydW5uYWJsZSsrOwo+ICsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK2RlY19ucl9ydW5uYWJsZSh1bnNpZ25lZCBp bnQgY3B1KQo+ICt7Cj4gK8KgwqDCoMKgQVNTRVJUKHNwaW5faXNfbG9ja2VkKHBlcl9jcHUoc2No ZWR1bGVfZGF0YSwKPiBjcHUpLnNjaGVkdWxlX2xvY2spKTsKPiArwqDCoMKgwqBDU0NIRURfUENQ VShjcHUpLT5ucl9ydW5uYWJsZS0tOwo+ICvCoMKgwqDCoEFTU0VSVChDU0NIRURfUENQVShjcHUp LT5ucl9ydW5uYWJsZSA+PSAwKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gwqBf X3J1bnFfaW5zZXJ0KHN0cnVjdCBjc2NoZWRfdmNwdSAqc3ZjKQo+IMKgewo+IC3CoMKgwqDCoGNv bnN0IHN0cnVjdCBsaXN0X2hlYWQgKiBjb25zdCBydW5xID0gUlVOUShzdmMtPnZjcHUtCj4gPnBy b2Nlc3Nvcik7Cj4gK8KgwqDCoMKgdW5zaWduZWQgaW50IGNwdSA9IHN2Yy0+dmNwdS0+cHJvY2Vz c29yOwo+ICvCoMKgwqDCoGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKiBjb25zdCBydW5xID0gUlVO UShjcHUpOwo+IMKgwqDCoMKgwqBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwo+IMKgCj4gwqDCoMKg wqDCoEJVR19PTiggX192Y3B1X29uX3J1bnEoc3ZjKSApOwo+IEBAIC0yOTIsMTIgKzMxMCwyNSBA QCBfX3J1bnFfaW5zZXJ0KHN0cnVjdCBjc2NoZWRfdmNwdSAqc3ZjKQo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgaW5saW5lIHZvaWQKPiArcnVucV9pbnNlcnQoc3RydWN0IGNzY2hlZF92Y3B1ICpzdmMp Cj4gK3sKPiArwqDCoMKgwqBfX3J1bnFfaW5zZXJ0KHN2Yyk7Cj4gK8KgwqDCoMKgaW5jX25yX3J1 bm5hYmxlKHN2Yy0+dmNwdS0+cHJvY2Vzc29yKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2 b2lkCj4gwqBfX3J1bnFfcmVtb3ZlKHN0cnVjdCBjc2NoZWRfdmNwdSAqc3ZjKQo+IMKgewo+IMKg wqDCoMKgwqBCVUdfT04oICFfX3ZjcHVfb25fcnVucShzdmMpICk7Cj4gwqDCoMKgwqDCoGxpc3Rf ZGVsX2luaXQoJnN2Yy0+cnVucV9lbGVtKTsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgaW5saW5lIHZv aWQKPiArcnVucV9yZW1vdmUoc3RydWN0IGNzY2hlZF92Y3B1ICpzdmMpCj4gK3sKPiArwqDCoMKg wqBkZWNfbnJfcnVubmFibGUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IpOwo+ICvCoMKgwqDCoF9fcnVu cV9yZW1vdmUoc3ZjKTsKPiArfQo+IMKgCj4gwqAjZGVmaW5lIGZvcl9lYWNoX2NzY2hlZF9iYWxh bmNlX3N0ZXAoc3RlcCkgXAo+IMKgwqDCoMKgwqBmb3IgKCAoc3RlcCkgPSAwOyAoc3RlcCkgPD0g Q1NDSEVEX0JBTEFOQ0VfSEFSRF9BRkZJTklUWTsKPiAoc3RlcCkrKyApCj4gQEAgLTYwMSw2ICs2 MzIsNyBAQCBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2LCBzdHJ1Y3QKPiBj c2NoZWRfcGNwdSAqc3BjLCBpbnQgY3B1KQo+IMKgwqDCoMKgwqAvKiBTdGFydCBvZmYgaWRsaW5n Li4uICovCj4gwqDCoMKgwqDCoEJVR19PTighaXNfaWRsZV92Y3B1KGN1cnJfb25fY3B1KGNwdSkp KTsKPiDCoMKgwqDCoMKgY3B1bWFza19zZXRfY3B1KGNwdSwgcHJ2LT5pZGxlcnMpOwo+ICvCoMKg wqDCoHNwYy0+bnJfcnVubmFibGUgPSAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZAo+IEBA IC0xMDUyLDcgKzEwODQsNyBAQCBjc2NoZWRfdmNwdV9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLAo+IHN0cnVjdCB2Y3B1ICp2YykKPiDCoMKgwqDCoMKgbG9jayA9IHZjcHVfc2No ZWR1bGVfbG9ja19pcnEodmMpOwo+IMKgCj4gwqDCoMKgwqDCoGlmICggIV9fdmNwdV9vbl9ydW5x KHN2YykgJiYgdmNwdV9ydW5uYWJsZSh2YykgJiYgIXZjLQo+ID5pc19ydW5uaW5nICkKPiAtwqDC oMKgwqDCoMKgwqDCoF9fcnVucV9pbnNlcnQoc3ZjKTsKPiArwqDCoMKgwqDCoMKgwqDCoHJ1bnFf aW5zZXJ0KHN2Yyk7Cj4gwqAKPiDCoMKgwqDCoMKgdmNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKGxv Y2ssIHZjKTsKPiDCoAo+IEBAIC0xMTE3LDcgKzExNDksNyBAQCBjc2NoZWRfdmNwdV9zbGVlcChj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCj4gc3RydWN0IHZjcHUgKnZjKQo+IMKgwqDCoMKg wqDCoMKgwqDCoGNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgU0NIRURVTEVfU09GVElSUSk7Cj4gwqDC oMKgwqDCoH0KPiDCoMKgwqDCoMKgZWxzZSBpZiAoIF9fdmNwdV9vbl9ydW5xKHN2YykgKQo+IC3C oMKgwqDCoMKgwqDCoMKgX19ydW5xX3JlbW92ZShzdmMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgcnVu cV9yZW1vdmUoc3ZjKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQKPiBAQCAtMTE3Nyw3ICsx MjA5LDcgQEAgY3NjaGVkX3ZjcHVfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCj4g c3RydWN0IHZjcHUgKnZjKQo+IMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgLyogUHV0IHRo ZSBWQ1BVIG9uIHRoZSBydW5xIGFuZCB0aWNrbGUgQ1BVcyAqLwo+IC3CoMKgwqDCoF9fcnVucV9p bnNlcnQoc3ZjKTsKPiArwqDCoMKgwqBydW5xX2luc2VydChzdmMpOwo+IMKgwqDCoMKgwqBfX3J1 bnFfdGlja2xlKHN2Yyk7Cj4gwqB9Cj4gwqAKPiBAQCAtMTY3OSw4ICsxNzExLDE0IEBAIGNzY2hl ZF9ydW5xX3N0ZWFsKGludCBwZWVyX2NwdSwgaW50IGNwdSwgaW50Cj4gcHJpLCBpbnQgYmFsYW5j ZV9zdGVwKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgU0NIRURfVkNQVV9TVEFUX0NSQU5L KHNwZWVyLCBtaWdyYXRlX3EpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgU0NIRURfU1RB VF9DUkFOSyhtaWdyYXRlX3F1ZXVlZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBXQVJO X09OKHZjLT5pc191cmdlbnQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBfX3J1bnFfcmVt b3ZlKHNwZWVyKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVucV9yZW1vdmUoc3BlZXIp Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmMtPnByb2Nlc3NvciA9IGNwdTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqIHNw ZWVyIHdpbGwgc3RhcnQgZXhlY3V0aW5nIGRpcmVjdGx5IG9uIGNwdSwgd2l0aG91dAo+IGhhdmlu ZyB0bwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogZ28gdGhyb3VnaCBydW5xX2luc2Vy dCgpLiBTbyB3ZSBtdXN0IHVwZGF0ZSB0aGUKPiBydW5uYWJsZSBjb3VudAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCogZm9yIGNwdSBoZXJlLgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGluY19ucl9ydW5uYWJsZShjcHUpOwo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNwZWVyOwo+IMKgwqDCoMKgwqDCoMKg wqDCoH0KPiDCoMKgwqDCoMKgfQo+IEBAIC0xNzM2LDcgKzE3NzQsNyBAQCBjc2NoZWRfbG9hZF9i YWxhbmNlKHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2LAo+IGludCBjcHUsCj4gwqDCoMKgwqDC oMKgwqDCoMKgcGVlcl9ub2RlID0gbm9kZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqBkbwo+IMKgwqDC oMKgwqDCoMKgwqDCoHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogRmluZCBvdXQgd2hh dCB0aGUgIWlkbGUgYXJlIGluIHRoaXMgbm9kZSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBTZWxlY3QgdGhlIHBDUFVzIGluIHRoaXMgbm9kZSB0aGF0IGhhdmUgd29yayB3ZSBjYW4K PiBzdGVhbC4gKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNwdW1hc2tfYW5kbm90KCZ3 b3JrZXJzLCBvbmxpbmUsIHBydi0+aWRsZXJzKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNwdW1hc2tfYW5kKCZ3b3JrZXJzLCAmd29ya2VycywKPiAmbm9kZV90b19jcHVtYXNrKHBlZXJf bm9kZSkpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgX19jcHVtYXNrX2NsZWFyX2NwdShj cHUsICZ3b3JrZXJzKTsKPiBAQCAtMTc0Niw2ICsxNzg0LDQwIEBAIGNzY2hlZF9sb2FkX2JhbGFu Y2Uoc3RydWN0IGNzY2hlZF9wcml2YXRlCj4gKnBydiwgaW50IGNwdSwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBuZXh0X25vZGU7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkbwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5sb2NrX3QgKmxvY2s7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHJ1bm5hYmxlIHZDUFUgb24gcGVlcl9jcHUsCj4gaXQg bWVhbnMKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogdGhlcmUncyBubyBv bmUgdG8gYmUgc3RvbGVuIGluIGl0cyBydW5xdWV1ZSwgc28KPiBza2lwIGl0Lgo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKiBDaGVja2luZyB0aGlzIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jayBpcyByYWN5 Li4uCj4gQnV0IHRoYXQncwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKiB0 aGUgd2hvbGUgcG9pbnQgb2YgdGhpcyBvcHRpbWl6YXRpb24hCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAqCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAq IEluIG1vcmUgZGV0YWlsczoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCog LSBpZiB3ZSByYWNlIHdpdGggZGVjX25yX3J1bm5hYmxlKCksIHdlIG1heSB0cnkKPiB0byB0YWtl IHRoZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKsKgwqDCoGxvY2sgYW5k IGNhbGwgY3NjaGVkX3J1bnFfc3RlYWwoKSBmb3Igbm8KPiByZWFzb24uIFRoaXMgaXMKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCrCoMKgwqBub3QgYSBmdW5jdGlvbmFsIGlz c3VlLCBhbmQgc2hvdWxkIGJlCj4gaW5mcmVxdWVudCBlbm91Z2guCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAqwqDCoMKgQW5kIHdlIGNhbiBhdm9pZCB0aGF0IGJ5IHJlLWNo ZWNraW5nCj4gbnJfcnVubmFibGUgYWZ0ZXIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCrCoMKgwqBoYXZpbmcgZ3JhYmJlZCB0aGUgbG9jaywgaWYgd2Ugd2FudDsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogLSBpZiB3ZSByYWNlIHdpdGggaW5jX25y X3J1bm5hYmxlKCksIHdlIHNraXAgYQo+IHBDUFUgdGhhdCBtYXkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCrCoMKgwqBoYXZlIHJ1bm5hYmxlIHZDUFVzIGluIGl0cyBydW5x dWV1ZSwgYnV0IHRoYXQncwo+IG5vdCBhCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAqwqDCoMKgcHJvYmxlbSBiZWNhdXNlOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKsKgwqDCoCsgaWYgcmFjaW5nIHdpdGggY3NjaGVkX3ZjcHVfaW5zZXJ0KCkgb3IK PiBjc2NoZWRfdmNwdV93YWtlKCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAqwqDCoMKgwqDCoF9fcnVucV90aWNrbGUoKSB3aWxsIGJlIGNhbGxlZCBhZnRlcndvcmRzLCBz bwo+IHRoZSB2Q1BVCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqwqDCoMKg wqDCoHdvbid0IGdldCBzdHVjayBpbiB0aGUgcnVucXVldWUgZm9yIHRvbyBsb25nOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKsKgwqDCoCsgaWYgcmFjaW5nIHdpdGggY3Nj aGVkX3J1bnFfc3RlYWwoKSwgaXQgbWF5IGJlCj4gdGhhdCBhCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAqwqDCoMKgwqDCoHZDUFUgdGhhdCB3ZSBjb3VsZCBoYXZlIHBpY2tl ZCB1cCwgc3RheXMgaW4gYQo+IHJ1bnF1ZXVlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAqwqDCoMKgwqDCoHVudGlsIHNvbWVvbmUgZWxzZSB0cmllcyB0byBzdGVhbCBpdCBh Z2Fpbi4KPiBCdXQgdGhpcyBpcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KsKgwqDCoMKgwqBubyB3b3JzZSB0aGFuIHdoYXQgY2FuIGhhcHBlbiBhbHJlYWR5Cj4gKHdpdGhv dXQgdGhpcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKsKgwqDCoMKgwqBv cHRpbWl6YXRpb24pLCBpdCB0aGUgcENQVSB3b3VsZCBzY2hlZHVsZQo+IHJpZ2h0IGFmdGVyIHdl Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqwqDCoMKgwqDCoGhhdmUgdGFr ZW4gdGhlIGxvY2ssIGFuZCBoZW5jZSBibG9jayBvbiBpdC4KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KCBDU0NIRURfUENQVShwZWVyX2NwdSktPm5yX3J1bm5hYmxlIDw9IDEgKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFRSQUNFXzJEKFRSQ19DU0NIRURfU1RFQUxfQ0hFQ0ssIHBlZXJfY3B1LCAvKgo+ IHNraXBwJ24gKi8gMCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIG5leHRfY3B1Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAr Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgKiBHZXQgYWhvbGQgb2YgdGhlIHNjaGVkdWxlciBsb2NrIGZv ciB0aGlzIHBlZXIKPiBDUFUuCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Kgo+IEBAIC0xNzUzLDE0ICsxODI1LDEzIEBAIGNzY2hlZF9sb2FkX2JhbGFuY2Uoc3RydWN0IGNz Y2hlZF9wcml2YXRlCj4gKnBydiwgaW50IGNwdSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAqIGNvdWxkIGNhdXNlIGEgZGVhZGxvY2sgaWYgdGhlIHBlZXIgQ1BVIGlzIGFs c28KPiBsb2FkCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKiBiYWxhbmNp bmcgYW5kIHRyeWluZyB0byBsb2NrIHRoaXMgQ1BVLgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbmxv Y2tfdCAqbG9jayA9IHBjcHVfc2NoZWR1bGVfdHJ5bG9jayhwZWVyX2NwdSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbG9jayA9IHBjcHVfc2NoZWR1bGVfdHJ5bG9jayhwZWVy X2NwdSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFNDSEVEX1NUQVRfQ1JB Tksoc3RlYWxfdHJ5bG9jayk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICggIWxvY2sgKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgU0NIRURfU1RBVF9DUkFOSyhzdGVh bF90cnlsb2NrX2ZhaWxlZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgVFJBQ0VfMkQoVFJDX0NTQ0hFRF9TVEVBTF9DSEVDSywgcGVlcl9jcHUsIC8qCj4gc2tp cCAqLyAwKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBlZXJf Y3B1ID0gY3B1bWFza19jeWNsZShwZWVyX2NwdSwgJndvcmtlcnMpOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG5leHRfY3B1Owo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgVFJBQ0VfMkQoVFJDX0NTQ0hFRF9TVEVBTF9DSEVDSywgcGVlcl9jcHUsIC8qCj4gY2hlY2tl ZCAqLyAxKTsKPiBAQCAtMTc3Nyw2ICsxODQ4LDcgQEAgY3NjaGVkX2xvYWRfYmFsYW5jZShzdHJ1 Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwKPiBpbnQgY3B1LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBzcGVlcjsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gKyBuZXh0X2NwdToKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcGVlcl9jcHUgPSBjcHVtYXNrX2N5Y2xlKHBlZXJfY3B1LCAmd29ya2Vy cyk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gd2hpbGUoIHBlZXJfY3B1ICE9 IGNwdW1hc2tfZmlyc3QoJndvcmtlcnMpICk7Cj4gQEAgLTE5MDcsNyArMTk3OSwxMSBAQCBjc2No ZWRfc2NoZWR1bGUoCj4gwqDCoMKgwqDCoGlmICggdmNwdV9ydW5uYWJsZShjdXJyZW50KSApCj4g wqDCoMKgwqDCoMKgwqDCoMKgX19ydW5xX2luc2VydChzY3Vycik7Cj4gwqDCoMKgwqDCoGVsc2UK PiArwqDCoMKgwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKCBpc19pZGxlX3ZjcHUoY3Vy cmVudCkgfHwgbGlzdF9lbXB0eShydW5xKSApOwo+ICvCoMKgwqDCoMKgwqDCoMKgLyogQ3VycmVu dCBoYXMgYmxvY2tlZC4gVXBkYXRlIHRoZSBydW5uYWJsZSBjb3VudGVyIGZvciB0aGlzCj4gY3B1 LiAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgZGVjX25yX3J1bm5hYmxlKGNwdSk7Cj4gK8KgwqDCoMKg fQo+IMKgCj4gwqDCoMKgwqDCoHNuZXh0ID0gX19ydW5xX2VsZW0ocnVucS0+bmV4dCk7Cj4gwqDC oMKgwqDCoHJldC5taWdyYXRlZCA9IDA7Cj4gQEAgLTIwMjQsNyArMjEwMCw4IEBAIGNzY2hlZF9k dW1wX3BjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAo+IGludCBjcHUpCj4gwqDCoMKg wqDCoHJ1bnEgPSAmc3BjLT5ydW5xOwo+IMKgCj4gwqDCoMKgwqDCoGNwdW1hc2tfc2NucHJpbnRm KGNwdXN0ciwgc2l6ZW9mKGNwdXN0ciksCj4gcGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUp KTsKPiAtwqDCoMKgwqBwcmludGsoIkNQVVslMDJkXSBzb3J0PSVkLCBzaWJsaW5nPSVzLCAiLCBj cHUsIHNwYy0KPiA+cnVucV9zb3J0X2xhc3QsIGNwdXN0cik7Cj4gK8KgwqDCoMKgcHJpbnRrKCJD UFVbJTAyZF0gbnJfcnVuPSVkLCBzb3J0PSVkLCBzaWJsaW5nPSVzLCAiLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY3B1LCBzcGMtPm5yX3J1bm5hYmxlLCBzcGMtPnJ1bnFfc29ydF9sYXN0LCBj cHVzdHIpOwo+IMKgwqDCoMKgwqBjcHVtYXNrX3NjbnByaW50ZihjcHVzdHIsIHNpemVvZihjcHVz dHIpLCBwZXJfY3B1KGNwdV9jb3JlX21hc2ssCj4gY3B1KSk7Cj4gwqDCoMKgwqDCoHByaW50aygi Y29yZT0lc1xuIiwgY3B1c3RyKTsKPiDCoAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAotLSAKPDxUaGlz IGhhcHBlbnMgYmVjYXVzZSBJIGNob29zZSBpdCB0byBoYXBwZW4hPj4gKFJhaXN0bGluIE1hamVy ZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KRGFyaW8gRmFnZ2lvbGksIFBoLkQsIGh0dHA6Ly9hYm91dC5tZS9kYXJpby5m YWdnaW9saQpTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIENpdHJpeCBTeXN0ZW1zIFImRCBMdGQu LCBDYW1icmlkZ2UgKFVLKW== --=-Lw7yT/rEM5iBAyWxjqhJ 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 iQIcBAABCAAGBQJY571zAAoJEBZCeImluHPuin4P/3xeJHsgqvxspK52IPimH8Ae tiWk8zYM01hdroPbCQjRXDPF9w2W1qhzAK8G98QC8DuY28TVndOUPo1T0SZoT6OR nyQyEiisdF5dKKi7BCRwlCf38CkWQouoOsjE7LV0+qcqYBSeE2T6OooY3RzUZ3zv c69gToS6Hb9OhR81ViVK5+S9awPa4O8LEIoIzvwHyEtpEcW9CjtW6MArY7d3n1R2 Psj4xDrxvJ2glarxMBAUMbRYkntPQWkia+Egtkxf/SRHoenrS+bk+Mt5XyRgGEyk HEmkKYjiOGVeWkVGs2wSxmjRUQwzLxosqfpDv7jvoc9ibxlHds/kyRaAHMpzZbV1 23vMFR04Qz8xb/FryGAAWNK2qGX6hKNoBhLvNNb81baa1Win4e71a8bH05kLit1f 5BX+9Xx6dfZVpExxz2Pji0pxk10NOnsLnFpN3An6N8pOMxm7NBr5JCf/MlBULpkL KCDzNMy66SmkGXOt7f9sKLsIASneEdCffW3UzGbjUzxcKcLmP2y9jE8/ylr/5pBA XOQItMj7fKOJuijpuRschKVQiTeEt53uPQ5y3Lz6aYxzzqAR0ND0/AVxJVjHgAxC 2LngaF4lbHh2RD2A1pz6Hmv/EWkPclv5Xdow7pT4stMvRkzWhCtUZKhw9P5pwSvM V3y/pX746/UYaTV3bFR5 =TIVc -----END PGP SIGNATURE----- --=-Lw7yT/rEM5iBAyWxjqhJ-- --===============2186145587739259355== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --===============2186145587739259355==--