From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH v3 08/12] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Mon, 4 Sep 2017 14:40:47 +0100 Message-ID: <20170904134047.4eychido47muojyy@MacBook-Pro-de-Roger.local> References: <20170831093605.2757-1-paul.durrant@citrix.com> <20170831093605.2757-9-paul.durrant@citrix.com> 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 1dorcW-0002kw-Sr for xen-devel@lists.xenproject.org; Mon, 04 Sep 2017 13:40:56 +0000 Content-Disposition: inline In-Reply-To: <20170831093605.2757-9-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant Cc: xen-devel@lists.xenproject.org, Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBBdWcgMzEsIDIwMTcgYXQgMTA6MzY6MDFBTSArMDEwMCwgUGF1bCBEdXJyYW50IHdy b3RlOgo+IEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsIHJlbW92ZSB0aGUgY3VycmVudCBpbXBsaWNp dCBsaW1pdGF0aW9uIG9uIGNyZWF0aW9uCj4gb2YgaW9yZXEgc2VydmVycyB3aGljaCBpcyBkdWUg dG8gdGhlIGFsbG9jYXRpb24gb2YgZ2ZucyBmb3IgdGhlIGlvcmVxCj4gc3RydWN0dXJlcyBhbmQg YnVmZmVyZWQgaW9yZXEgcmluZy4KPiAKPiBJdCB3aWxsIHRoZXJlZm9yZSBiZSBuZWNlc3Nhcnkg dG8gaW50cm9kdWNlIGFuIGV4cGxpY2l0IGxpbWl0IGFuZCwgc2luY2UKPiB0aGlzIGxpbWl0IHNo b3VsZCBiZSBzbWFsbCwgaXQgc2ltcGxpZmllcyB0aGUgY29kZSB0byBtYWludGFpbiBhbiBhcnJh eSBvZgo+IHRoYXQgc2l6ZSByYXRoZXIgdGhhbiB1c2luZyBhIGxpc3QuCj4gCj4gQWxzbywgYnkg cmVzZXJ2aW5nIGFuIGFycmF5IHNsb3QgZm9yIHRoZSBkZWZhdWx0IHNlcnZlciBhbmQgcG9wdWxh dGluZwo+IGFycmF5IHNsb3RzIGVhcmx5IGluIGNyZWF0ZSwgdGhlIG5lZWQgdG8gcGFzcyBhbiAn aXNfZGVmYXVsdCcgYm9vbGVhbgo+IHRvIHN1Yi1mdW5jdGlvbnMgY2FuIGJlIGF2b2lkZWQuCj4g Cj4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K PiAtLS0KPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IENjOiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IAo+IHYzOgo+ICAtIE5ldyBwYXRj aCAocmVwbGFjaW5nICJtb3ZlIGlzX2RlZmF1bHQgaW50byBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciIpIGluCj4gICAgcmVzcG9uc2UgdG8gcmV2aWV3IGNvbW1lbnRzLgo+IC0tLQo+ICB4ZW4vYXJj aC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8IDUwNyArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgMTEg Ky0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9ucygrKSwgMjcxIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMKPiBpbmRleCA1ZTAxZTFhNmQyLi4wZTkyNzYzMzg0IDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9y ZXEuYwo+IEBAIC00NiwxNCArNDYsMTggQEAgc3RhdGljIGlvcmVxX3QgKmdldF9pb3JlcShzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgc3RydWN0IHZjcHUgKnYpCj4gIGJvb2wgaHZtX2lvX3Bl bmRpbmcoc3RydWN0IHZjcHUgKnYpCj4gIHsKPiAgICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5k b21haW47Cj4gLSAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKPiArICAgIHVuc2lnbmVk IGludCBpZDsKPiAgCj4gLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQo+ICsgICAgZm9yICggaWQg PSAwOyBpZCA8IE1BWF9OUl9JT1JFUV9TRVJWRVJTOyBpZCsrICkKPiAgICAgIHsKPiArICAgICAg ICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKPiAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVx X3ZjcHUgKnN2Owo+ICAKPiArICAgICAgICBzID0gZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5zZXJ2ZXJbaWRdOwo+ICsKCk5vIG5lZWQgZm9yIHRoZSBleHRyYSBuZXdsaW5lIElNSE8g KGhlcmUgYW5kIGJlbG93KS4gWW91IGNvdWxkIGFsc28KZG8gdGhlIGluaXRpYWxpemF0aW9uIHRv Z2V0aGVyIHdpdGggdGhlIGRlZmluaXRpb24sIGJ1dCBJIGd1ZXNzIHRoYXQncwpnb2luZyB0byBl eGNlZWQgdGhlIGxpbmUgY2hhciBsaW1pdD8KCk9yIGV2ZW4geW91IGNvdWxkIGRvIHNvbWV0aGlu ZyBsaWtlIHRoaXMgQUZBSUNUOgoKZm9yICggaWQgPSAwLCBzID0gZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5zZXJ2ZXJbMF07CiAgICAgIGlkIDwgTUFYX05SX0lPUkVRX1NFUlZFUlM7 CiAgICAgIGlkKyssIHMgPSBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltp ZF0gKQp7CiAgICAgLi4uLgoKSSB3b3VsZCBtYWtlIHRoaXMgYSBtYWNybyAoRk9SRUFDSF9JT1JF UV9TRVJWRVIgb3Igc2ltaWxhciksIHNpbmNlIHRoZQpwYXR0ZXJuIHNlZW1zIHRvIGJlIHJlcGVh dGVkIGluIHF1aXRlIGEgbG90IG9mIHBsYWNlcy4KCj4gKyNkZWZpbmUgSVNfREVGQVVMVChzKSBc Cj4gKyAgICAocyA9PSBzLT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2Vy dmVyW0RFRkFVTFRfSU9TRVJWSURdKQoKUGFyZW50aGVzZXMgYXJvdW5kIHRoZSBpbnN0YW5jZXMg b2YgcyBwbGVhc2UuCgo+ICBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcmFuZ2Vz ZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90IGlkKQoKWW91IGNvdWxkIGdl dCB0aGUgaWQgYnkgZG9pbmcgc29tZSBhcml0aG1ldGljIHdpdGggdGhlIGFycmF5IGFuZCBzLApi dXQgSSBkb24ndCB0aGluayB0aGF0J3Mgd29ydGggaXQuCgo+ICBpbnQgaHZtX2NyZWF0ZV9pb3Jl cV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgZG9taWRfdCBkb21pZCwKPiBAQCAtNjg1LDUyICs2 NjcsNjYgQEAgaW50IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGRv bWlkX3QgZG9taWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90ICpp ZCkKPiAgewo+ICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4gKyAgICB1bnNpZ25l ZCBpbnQgaTsKPiAgICAgIGludCByYzsKPiAgCj4gICAgICBpZiAoIGJ1ZmlvcmVxX2hhbmRsaW5n ID4gSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQyApCj4gICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gIAo+IC0gICAgcmMgPSAtRU5PTUVNOwo+ICAgICAgcyA9IHh6YWxsb2Moc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIpOwo+ICAgICAgaWYgKCAhcyApCj4gLSAgICAgICAgZ290byBmYWlsMTsK PiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAgCj4gICAgICBkb21haW5fcGF1c2UoZCk7Cj4g ICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmxvY2spOwo+ICAKPiAtICAgIHJjID0gLUVFWElTVDsKPiAtICAgIGlmICggaXNfZGVmYXVsdCAm JiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgIT0gTlVMTCApCj4gLSAg ICAgICAgZ290byBmYWlsMjsKPiAtCj4gLSAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfaW5pdChz LCBkLCBkb21pZCwgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZXh0X2lvc2VydmlkKGQpKTsKPiAtICAgIGlmICggcmMgKQo+ IC0gICAgICAgIGdvdG8gZmFpbDM7Cj4gLQo+IC0gICAgbGlzdF9hZGQoJnMtPmxpc3RfZW50cnks Cj4gLSAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsK PiAtCj4gICAgICBpZiAoIGlzX2RlZmF1bHQgKQo+ICAgICAgewo+IC0gICAgICAgIGQtPmFyY2gu aHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciA9IHM7Cj4gLSAgICAgICAgaHZtX2lvcmVx X3NlcnZlcl9lbmFibGUocywgdHJ1ZSk7Cj4gKyAgICAgICAgaSA9IERFRkFVTFRfSU9TRVJWSUQ7 Cj4gKwo+ICsgICAgICAgIHJjID0gLUVFWElTVDsKPiArICAgICAgICBpZiAoIGQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVyW2ldICkKPiArICAgICAgICAgICAgZ290byBmYWls Owo+ICsgICAgfQo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIGZvciAoIGkgPSAwOyBp IDwgTUFYX05SX0lPUkVRX1NFUlZFUlM7IGkrKyApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAg ICBpZiAoIGkgIT0gREVGQVVMVF9JT1NFUlZJRCAmJgo+ICsgICAgICAgICAgICAgICAgICFkLT5h cmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltpXSApCj4gKyAgICAgICAgICAgICAg ICBicmVhazsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHJjID0gLUVOT1NQQzsKPiArICAg ICAgICBpZiAoIGkgPj0gTUFYX05SX0lPUkVRX1NFUlZFUlMgKQo+ICsgICAgICAgICAgICBnb3Rv IGZhaWw7Cj4gICAgICB9Cj4gIAo+ICsgICAgZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZl ci5zZXJ2ZXJbaV0gPSBzOwo+ICsKPiArICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9pbml0KHMs IGQsIGRvbWlkLCBidWZpb3JlcV9oYW5kbGluZywgaSk7Cj4gKyAgICBpZiAoIHJjICkKPiArICAg ICAgICBnb3RvIGZhaWw7Cj4gKwo+ICsgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKPiArICAgICAg ICBodm1faW9yZXFfc2VydmVyX2VuYWJsZShzKTsKPiArCj4gICAgICBpZiAoIGlkICkKPiAtICAg ICAgICAqaWQgPSBzLT5pZDsKPiArICAgICAgICAqaWQgPSBpOwo+ICsKPiArICAgIGQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuY291bnQrKzsKPiAgCj4gICAgICBzcGluX3VubG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gICAgICBk b21haW5fdW5wYXVzZShkKTsKPiAgCj4gICAgICByZXR1cm4gMDsKPiAgCj4gLSBmYWlsMzoKPiAt IGZhaWwyOgo+ICsgZmFpbDoKPiAgICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKPiAgICAgIGRvbWFpbl91bnBhdXNlKGQpOwo+ ICAKPiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVyW2ldID0gTlVM TDsKClNob3VsZG4ndCB0aGlzIGJlIGRvbmUgd2hpbGUgaG9sZGluZyB0aGUgaW9yZXFfc2VydmVy IGxvY2s/Cgo+ICAgICAgeGZyZWUocyk7Cj4gLSBmYWlsMToKPiAgICAgIHJldHVybiByYzsKPiAg fQo+ICAKPiBAQCAtNzQxLDM1ICs3MzcsMzAgQEAgaW50IGh2bV9kZXN0cm95X2lvcmVxX3NlcnZl cihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkKQo+ICAKPiAgICAgIHNwaW5fbG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gIAo+IC0g ICAgcmMgPSAtRU5PRU5UOwo+IC0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlz dCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKPiAtICAgIHsKPiAt ICAgICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVy ICkKPiAtICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICBzID0gZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5zZXJ2ZXJbaWRdOwo+ICAKPiAtICAgICAgICBpZiAoIHMtPmlkICE9IGlk ICkKPiAtICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgIGRvbWFpbl9wYXVzZShk KTsKPiArICAgIHJjID0gLUVOT0VOVDsKPiArICAgIGlmICggaWQgPj0gTUFYX05SX0lPUkVRX1NF UlZFUlMgfHwgIXMgfHwgSVNfREVGQVVMVChzKSApCgpUaGUgaWQgPj0gTUFYX05SX0lPUkVRX1NF UlZFUlMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIGdldHRpbmcgdGhlCmVsZW1lbnQgSU1ITywgZXZl biBiZWZvcmUgZ2V0dGluZyB0aGUgbG9jay4KCkFsc28sIEkgZG9uJ3QgbGlrZSB0aGU6CgpyYyA9 IC4uLgppZiAoIC4uLiApCiAgICBnb3RvIGVycm9yCgpjb25zdHJ1Y3QsIEkgdGhpbmsgaXQncyBl YXN5IHRvIG1ha2UgYSBtaXN0YWtlIGFuZCBlbmQgdXAgcmV0dXJuaW5nIGFuCmVycm9yIGNvZGUg aW4gdGhlIHN1Y2Nlc3NmdWwgcGF0aCAob3IgZm9yZ2V0dGluZyB0byBzZXQgYW4gZXJyb3Igd2hl bgpuZWVkZWQpLiBUaGlzIGlzIGhvd2V2ZXIgd2lkZWx5IHVzZWQgaW4gWGVuLCBzbyBJJ20gbm90 IGdvaW5nIHRvCmNvbXBsYWluIGFueSBtb3JlLgoKPiAgdm9pZCBodm1fZGVzdHJveV9hbGxfaW9y ZXFfc2VydmVycyhzdHJ1Y3QgZG9tYWluICpkKQo+ICB7Cj4gLSAgICBzdHJ1Y3QgaHZtX2lvcmVx X3NlcnZlciAqcywgKm5leHQ7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaWQ7Cj4gIAo+ICAgICAgc3Bp bl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsK PiAgCj4gICAgICAvKiBObyBuZWVkIHRvIGRvbWFpbl9wYXVzZSgpIGFzIHRoZSBkb21haW4gaXMg YmVpbmcgdG9ybiBkb3duICovCj4gIAo+IC0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlICgg cywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0 LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCj4gKyAgICBm b3IgKCBpZCA9IDA7IGlkIDwgTUFYX05SX0lPUkVRX1NFUlZFUlM7IGlkKysgKQo+ICAgICAgewo+ IC0gICAgICAgIGJvb2wgaXNfZGVmYXVsdCA9IChzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZh dWx0X2lvcmVxX3NlcnZlcik7Cj4gKyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7 Cj4gIAo+IC0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCBpc19kZWZhdWx0KTsK PiArICAgICAgICBzID0gZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5zZXJ2ZXJbaWRd Owo+ICAKPiAtICAgICAgICBpZiAoIGlzX2RlZmF1bHQgKQo+IC0gICAgICAgICAgICBkLT5hcmNo Lmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgPSBOVUxMOwo+ICsgICAgICAgIGlmICgg IXMgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiAgCj4gLSAgICAgICAgbGlzdF9kZWwoJnMt Pmxpc3RfZW50cnkpOwo+ICsgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzKTsKPiAr ICAgICAgICBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzKTsKPiAgCj4gLSAgICAgICAgaHZtX2lv cmVxX3NlcnZlcl9kZWluaXQocywgaXNfZGVmYXVsdCk7Cj4gKyAgICAgICAgQVNTRVJUKGQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuY291bnQpOwo+ICsgICAgICAgIC0tZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudDsKCkl0IHNlZW1zIG1vcmUgY29tbW9uIHRvIHVz ZSBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmNvdW50LS0sCnVubGVzcyB0aGVyZScg YSByZWFzb24gZm9yIHByZWZpeGluZyB0aGUgZGVjcmVtZW50LgogIAo+ICsjZGVmaW5lIE1BWF9O Ul9JT1JFUV9TRVJWRVJTIDgKPiArI2RlZmluZSBERUZBVUxUX0lPU0VSVklEIDAKCkkgd291bGQg cmF0aGVyIHdyaXRlIGl0IGFzIERFRkFVTFRfSU9SRVFfSUQgb3IgREVGQVVMVF9JT1NFUlZFUl9J RCBJCmRvbid0IHRoaW5rIHRoZXJlJ3MgYW55IG5lZWQgdG8gc2hvcnRlbiBTRVJWRVIgaGVyZSAo c3BlY2lhbGx5IHdoZW4KaXQncyBub3Qgc2hvcnRlZCBpbiBNQVhfTlJfSU9SRVFfU0VSVkVSUy4K ClRoYW5rcywgUm9nZXIuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK