From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [PATCH v3 1/2] xen/pt: fix some pass-thru devices don't work across reboot Date: Wed, 19 Dec 2018 09:57:51 +0100 Message-ID: <20181219085751.ljboh5qqzaqh6etb@mac> References: <1545144218-6463-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZXgn-00040P-Rh for xen-devel@lists.xenproject.org; Wed, 19 Dec 2018 08:58:49 +0000 Content-Disposition: inline In-Reply-To: <1545144218-6463-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Chao Gao Cc: xen-devel@lists.xenproject.org, Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBEZWMgMTgsIDIwMTggYXQgMTA6NDM6MzdQTSArMDgwMCwgQ2hhbyBHYW8gd3JvdGU6 Cj4gSSBmaW5kIHNvbWUgcGFzcy10aHJ1IGRldmljZXMgZG9uJ3Qgd29yayBhbnkgbW9yZSBhY3Jv c3MgZ3Vlc3QKPiByZWJvb3QuIEFzc2lnbmluZyBpdCB0byBhbm90aGVyIGRvbWFpbiBhbHNvIG1l ZXRzIHRoZSBzYW1lIGlzc3VlLiBBbmQKPiB0aGUgb25seSB3YXkgdG8gbWFrZSBpdCB3b3JrIGFn YWluIGlzIHVuLWJpbmRpbmcgYW5kIGJpbmRpbmcgaXQgdG8KPiBwY2liYWNrLiBTb21lb25lIHJl cG9ydGVkIHRoaXMgaXNzdWUgb25lIHllYXIgYWdvIFsxXS4KPiAKPiBJZiB0aGUgZGV2aWNlJ3Mg ZHJpdmVyIGRvZXNuJ3QgZGlzYWJsZSBNU0ktWCBkdXJpbmcgc2h1dGRvd24gb3IgcWVtdSBpcwo+ IGtpbGxlZC9jcmFzaGVkIGJlZm9yZSB0aGUgZG9tYWluIHNodXRkb3duLCB0aGlzIGRvbWFpbidz IHBpcnEgd29uJ3QgYmUKPiB1bm1hcHBlZC4gVGhlbiB4ZW4gdGFrZXMgb3ZlciB0aGlzIHdvcmss IHVubWFwcGluZyBhbGwgcGlycS1zLCB3aGVuCj4gZGVzdHJveWluZyBndWVzdC4gQnV0IGFzIHBj aWJhY2sgaGFzIGFscmVhZHkgZGlzYWJsZWQgbWVvcnkgZGVjb2RpbmcgYmVmb3JlCj4geGVuIHVu bWFwcGluZyBwaXJxLCBYZW4gaGFzIHRvIHNldHMgdGhlIGhvc3RfbWFza2FsbCBmbGFnIGFuZCBt YXNrYWxsIGJpdAo+IHRvIG1hc2sgYSBNU0kgcmF0aGVyIHRoYW4gc2V0cyBtYXNrYml0IGluIE1T SS14IHRhYmxlLiBUaGUgY2FsbCB0cmFjZSBvZgo+IHRoaXMgcHJvY2VzcyBpczoKPiAKPiAtPmFy Y2hfZG9tYWluX2Rlc3Ryb3kKPiAgICAgLT5mcmVlX2RvbWFpbl9waXJxcwo+ICAgICAgICAgLT51 bm1hcF9kb21haW5fcGlycSAoaWYgcGlycSBpc24ndCB1bm1hcHBlZCBieSBxZW11KQo+ICAgICAg ICAgICAgIC0+cGlycV9ndWVzdF9mb3JjZV91bmJpbmQKPiAgICAgICAgICAgICAgICAgLT5fX3Bp cnFfZ3Vlc3RfdW5iaW5kCj4gICAgICAgICAgICAgICAgICAgICAtPm1hc2tfbXNpX2lycSg9ZGVz Yy0+aGFuZGxlci0+ZGlzYWJsZSgpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlIHdh cm5pbmcgaW4gbXNpX3NldF9tYXNrX2JpdCgpCj4gCj4gVGhlIGhvc3RfbWFza2FsbCBiaXQgd2ls bCBwcmV2ZW50IGd1ZXN0cyBmcm9tIGNsZWFyaW5nIHRoZSBtYXNrYWxsIGJpdAo+IGV2ZW4gdGhl IGRldmljZSBpcyBhc3NpZ25lZCB0byBhbm90aGVyIGd1ZXN0IGxhdGVyLiBUaGVuIGd1ZXN0cyBj YW5ub3QKPiByZWNlaXZlIE1TSXMgZnJvbSB0aGlzIGRldmljZS4KPiAKPiBUbyBmaXggdGhpcyBp c3N1ZSwgYSBwaXJxIGlzIHVubWFwcGVkIGJlZm9yZSBtZW1vcnkgZGVjb2RpbmcgaXMgZGlzYWJs ZWQgYnkKPiBwY2liYWNrLiBTcGVjaWZpY2FsbHksIHdoZW4gYSBkZXZpY2UgaXMgZGV0YWNoZWQg ZnJvbSBhIGd1ZXN0LCBhbGwgZXN0YWJsaXNoZWQKPiBtYXBwaW5ncyBiZXR3ZWVuIHBpcnEgYW5k IG1zaSBhcmUgZGVzdHJveWluZyBiZWZvcmUgY2hhbmdpbmcgdGhlIG93bmVyc2hpcC4KPiAKPiBb MV06IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwv MjAxNy0wOS9tc2cwMjUyMC5odG1sCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8u Z2FvQGludGVsLmNvbT4KPiAtLS0KPiBBcHBsaWVkIHRoaXMgcGF0Y2gsIHFlbXUgd291bGQgcmVw b3J0IHRoZSBlcnJvciBiZWxvdzoKPiAgICAgWzAwOjA1LjBdIG1zaV9tc2l4X2Rpc2FibGU6IEVy cm9yOiBVbmJpbmRpbmcgb2YgTVNJLVggZmFpbGVkLiAoZXJyOiAxLCBwaXJxOiAzMDIsIGd2ZWM6 IDB4ZDUpCj4gICAgIFswMDowNS4wXSBtc2lfbXNpeF9kaXNhYmxlOiBFcnJvcjogVW5iaW5kaW5n IG9mIE1TSS1YIGZhaWxlZC4gKGVycjogMSwgcGlycTogMzAxLCBndmVjOiAweGU1KQo+ICAgICBb MDA6MDQuMF0gbXNpX21zaXhfZGlzYWJsZTogRXJyb3I6IFVuYmluZGluZyBvZiBNU0ktWCBmYWls ZWQuIChlcnI6IDEsIHBpcnE6IDM1OSwgZ3ZlYzogMHg0MSkKPiAgICAgWzAwOjA0LjBdIG1zaV9t c2l4X2Rpc2FibGU6IEVycm9yOiBVbmJpbmRpbmcgb2YgTVNJLVggZmFpbGVkLiAoZXJyOiAxLCBw aXJxOiAzNTgsIGd2ZWM6IDB4NTEpCj4gCj4gRGVzcGl0ZSBvZiB0aGUgZXJyb3IsIGd1ZXN0IHNo dXRkb3duIG9yIGRldmljZSBob3RwbHVnIGZpbmlzaHMgc21vb3RobHkuCj4gSXQgc2VlbXMgdG8g bWUgdGhhdCBxZW11IHRyaWVzIHRvIHVuYmluZCBhIG1zaSB3aGljaCBpcyBhbHJlYWR5IHVuYm91 bmQgYnkKPiB0aGUgY29kZSBhZGRlZCBieSB0aGlzIHBhdGNoLiBJIGFtIG5vdCBzdXJlIHdoZXRo ZXIgaXQgaXMgYWNjZXB0YWJsZSB0bwo+IGxlYXZlIHRoaXMgZXJyb3IgdGhlcmUuCgpTbyBRRU1V IHdvdWxkIHRyeSB0byB1bm1hcCBJUlFzIGFmdGVyIHVuYmluZGluZyB0aGUgZGV2aWNlPyBJIHRo aW5rClFFTVUgc2hvdWxkIGJlIGZpeGVkIHRvIGZpcnN0IHVubWFwIHRoZSBJUlFzIGFuZCB0aGVu IHVuYmluZCB0aGUKZGV2aWNlLgoKQXMgbG9uZyBhcyB0aGlzIGRvZXNuJ3QgYWZmZWN0IFFFTVUg ZnVuY3Rpb25hbGl0eSBJIGd1ZXNzIHRoZSBYZW4gc2lkZQpjYW4gYmUgY29tbWl0dGVkLCBidXQg aWRlYWxseSBhIFFFTVUgcGF0Y2ggdG8gYXZvaWQgdGhvc2UgZXJyb3IKbWVzc2FnZXMgc2hvdWxk IGJlIGNvbW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lLgoKPiAtLS0KPiAgeGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvaW8uYyAgfCA1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jIHwgNDkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAg ICB8ICAxICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKPiBpbmRleCBhNmViOGE0Li41NmVlMWVmIDEwMDY0 NAo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKPiArKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9pby5jCj4gQEAgLTYxOSw2ICs2MTksNDIgQEAgaW50IHB0X2lycV9jcmVh dGVfYmluZCgKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBwdF9pcnFf ZGVzdHJveV9iaW5kX2NvbW1vbihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcGlycSAqcGlycSkK PiArewo+ICsgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBpcnFfZHBjaShw aXJxKTsKPiArCj4gKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmV2ZW50X2xvY2spKTsK PiArCj4gKyAgICBpZiAoIHBpcnFfZHBjaSAmJiAocGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFf RFBDSV9NQVBQRUQpICYmCj4gKyAgICAgICAgIGxpc3RfZW1wdHkoJnBpcnFfZHBjaS0+ZGlnbF9s aXN0KSApCj4gKyAgICB7Cj4gKyAgICAgICAgcGlycV9ndWVzdF91bmJpbmQoZCwgcGlycSk7Cj4g KyAgICAgICAgbXNpeHRibF9wdF91bnJlZ2lzdGVyKGQsIHBpcnEpOwo+ICsgICAgICAgIGlmICgg cHRfaXJxX25lZWRfdGltZXIocGlycV9kcGNpLT5mbGFncykgKQo+ICsgICAgICAgICAgICBraWxs X3RpbWVyKCZwaXJxX2RwY2ktPnRpbWVyKTsKPiArICAgICAgICBwaXJxX2RwY2ktPmZsYWdzID0g MDsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFNlZSBjb21tZW50IGluIHB0X2lycV9jcmVh dGVfYmluZCdzIFBUX0lSUV9UWVBFX01TSSBiZWZvcmUgdGhlCj4gKyAgICAgICAgICogY2FsbCB0 byBwdF9waXJxX3NvZnRpcnFfcmVzZXQuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgcHRfcGly cV9zb2Z0aXJxX3Jlc2V0KHBpcnFfZHBjaSk7Cj4gKwo+ICsgICAgICAgIHBpcnFfY2xlYW51cF9j aGVjayhwaXJxLCBkKTsKPiArICAgIH0KPiArfQo+ICsKPiArdm9pZCBwdF9pcnFfZGVzdHJveV9i aW5kX21zaShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcGlycSAqcGlycSkKPiArewo+ICsgICAg c3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBpcnFfZHBjaShwaXJxKTsKPiArCj4g KyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmV2ZW50X2xvY2spKTsKPiArCj4gKyAgICBp ZiAoIHBpcnFfZHBjaSAmJiBwaXJxX2RwY2ktPmdtc2kucG9zdGVkICkKPiArICAgICAgICBwaV91 cGRhdGVfaXJ0ZShOVUxMLCBwaXJxLCAwKTsKPiArCj4gKyAgICBwdF9pcnFfZGVzdHJveV9iaW5k X2NvbW1vbihkLCBwaXJxKTsKPiArfQo+ICsKPiAgaW50IHB0X2lycV9kZXN0cm95X2JpbmQoCj4g ICAgICBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgeGVuX2RvbWN0bF9iaW5kX3B0X2ly cSAqcHRfaXJxX2JpbmQpCj4gIHsKPiBAQCAtNzI3LDI2ICs3NjMsMTEgQEAgaW50IHB0X2lycV9k ZXN0cm95X2JpbmQoCj4gICAgICAgICAgfQo+ICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAg d2hhdCA9ICJib2d1cyI7Cj4gLSAgICB9Cj4gLSAgICBlbHNlIGlmICggcGlycV9kcGNpICYmIHBp cnFfZHBjaS0+Z21zaS5wb3N0ZWQgKQo+IC0gICAgICAgIHBpX3VwZGF0ZV9pcnRlKE5VTEwsIHBp cnEsIDApOwo+IC0KPiAtICAgIGlmICggcGlycV9kcGNpICYmIChwaXJxX2RwY2ktPmZsYWdzICYg SFZNX0lSUV9EUENJX01BUFBFRCkgJiYKPiAtICAgICAgICAgbGlzdF9lbXB0eSgmcGlycV9kcGNp LT5kaWdsX2xpc3QpICkKPiAtICAgIHsKPiAtICAgICAgICBwaXJxX2d1ZXN0X3VuYmluZChkLCBw aXJxKTsKPiAtICAgICAgICBtc2l4dGJsX3B0X3VucmVnaXN0ZXIoZCwgcGlycSk7Cj4gLSAgICAg ICAgaWYgKCBwdF9pcnFfbmVlZF90aW1lcihwaXJxX2RwY2ktPmZsYWdzKSApCj4gLSAgICAgICAg ICAgIGtpbGxfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOwo+IC0gICAgICAgIHBpcnFfZHBjaS0+ ZmxhZ3MgPSAwOwo+IC0gICAgICAgIC8qCj4gLSAgICAgICAgICogU2VlIGNvbW1lbnQgaW4gcHRf aXJxX2NyZWF0ZV9iaW5kJ3MgUFRfSVJRX1RZUEVfTVNJIGJlZm9yZSB0aGUKPiAtICAgICAgICAg KiBjYWxsIHRvIHB0X3BpcnFfc29mdGlycV9yZXNldC4KPiAtICAgICAgICAgKi8KPiAtICAgICAg ICBwdF9waXJxX3NvZnRpcnFfcmVzZXQocGlycV9kcGNpKTsKPiAgCj4gLSAgICAgICAgcGlycV9j bGVhbnVwX2NoZWNrKHBpcnEsIGQpOwo+ICsgICAgICAgIHB0X2lycV9kZXN0cm95X2JpbmRfY29t bW9uKGQsIHBpcnEpOwo+ICAgICAgfQo+ICsgICAgZWxzZQo+ICsgICAgICAgIHB0X2lycV9kZXN0 cm95X2JpbmRfbXNpKGQsIHBpcnEpOwo+ICAKPiAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9s b2NrKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMKPiBpbmRleCAxMjc3Y2UyLi44OGE4MDA3IDEw MDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCj4gKysrIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMKPiBAQCAtMzY4LDYgKzM2OCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgcGNpX2RldiAqYWxsb2NfcGRldihzdHJ1Y3QgcGNpX3NlZyAqcHNlZywgdTggYnVzLCB1OCBk ZXZmbikKPiAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gICAgICAgICAgfQo+ICAgICAgICAg IHNwaW5fbG9ja19pbml0KCZtc2l4LT50YWJsZV9sb2NrKTsKPiArICAgICAgICBtc2l4LT53YXJu ZWQgPSBET01JRF9JTlZBTElEOwo+ICAgICAgICAgIHBkZXYtPm1zaXggPSBtc2l4Owo+ICAgICAg fQo+ICAKPiBAQCAtMTUxNCw2ICsxNTE1LDUyIEBAIHN0YXRpYyBpbnQgYXNzaWduX2RldmljZShz dHJ1Y3QgZG9tYWluICpkLCB1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuLCB1MzIgZmxhZykKPiAg ICAgIHJldHVybiByYzsKPiAgfQo+ICAKPiArLyoKPiArICogVW5tYXAgZXN0YWJsaXNoZWQgbWFw cGluZ3MgYmV0d2VlbiBkb21haW4ncyBwaXJxIGFuZCBkZXZpY2UncyBNU0kuCj4gKyAqIFRoZXNl IG1hcHBpbmdzIHdlcmUgc2V0IHVwIGJ5IHFlbXUvZ3Vlc3QgYW5kIGFyZSBleHBlY3RlZCB0byBi ZQo+ICsgKiBkZXN0cm95ZWQgd2hlbiBjaGFuZ2luZyB0aGUgZGV2aWNlJ3Mgb3duZXJzaGlwLgo+ ICsgKi8KPiArc3RhdGljIHZvaWQgcGNpX3VubWFwX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldikK PiArewo+ICsgICAgc3RydWN0IG1zaV9kZXNjICplbnRyeSwgKnRtcDsKPiArCj4gKyAgICBBU1NF UlQocGNpZGV2c19sb2NrZWQoKSk7Cj4gKwo+ICsgICAgaWYgKCAhcGRldi0+ZG9tYWluICkKPiAr ICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgc3Bpbl9sb2NrKCZwZGV2LT5kb21haW4tPmV2ZW50 X2xvY2spOwo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKCBlbnRyeSwgdG1wLCAmcGRl di0+bXNpX2xpc3QsIGxpc3QgKQoKRG8geW91IHJlYWxseSBuZWVkIHRoZSBfc2FmZSB2ZXJzaW9u IGhlcmU/IENvdWxkbid0IHlvdSBldmVuIHVzZToKCndoaWxlICggKGVudHJ5ID0gbGlzdF9maXJz dF9lbnRyeV9vcl9udWxsKC4uLikpICE9IE5VTEwgKQouLi4KCj4gKyAgICB7Cj4gKyAgICAgICAg c3RydWN0IHBpcnEgKmluZm87Cj4gKyAgICAgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFf ZHBjaTsKPiArICAgICAgICBpbnQgcGlycSA9IGRvbWFpbl9pcnFfdG9fcGlycShwZGV2LT5kb21h aW4sIGVudHJ5LT5pcnEpLCBwaXJxX29yaWc7Cj4gKwo+ICsgICAgICAgIHBpcnFfb3JpZyA9IHBp cnE7Cj4gKwo+ICsgICAgICAgIGlmICggIXBpcnEgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsK PiArCj4gKyAgICAgICAgLyogRm9yIGZvcmNpYmx5IHVubWFwcGVkIHBpcnEsIGxvb2t1cCByYWRp eCB0cmVlIHdpdGggYWJzb2x1dGUgdmFsdWUgKi8KPiArICAgICAgICBpZiAoIHBpcnEgPCAwKQo+ ICsgICAgICAgICAgICBwaXJxID0gLXBpcnE7CgpJJ20gbm90IHN1cmUgSSBmb2xsb3csIHRoZSBw aXJxIGhhc24ndCBiZWVuIHVubWFwcGVkIGF0IHRoaXMgcG9pbnQKeWV0PwoKPiArCj4gKyAgICAg ICAgaW5mbyA9IHBpcnFfaW5mbyhwZGV2LT5kb21haW4sIHBpcnEpOwo+ICsgICAgICAgIGlmICgg IWluZm8gKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBwaXJxX2RwY2kgPSBw aXJxX2RwY2koaW5mbyk7Cj4gKwo+ICsgICAgICAgIGlmICggcGlycV9kcGNpICYmCj4gKyAgICAg ICAgICAgICAocGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9NQUNIX01TSSkgJiYKPiAr ICAgICAgICAgICAgIChwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX0dVRVNUX01TSSkg KQo+ICsgICAgICAgICAgICBwdF9pcnFfZGVzdHJveV9iaW5kX21zaShwZGV2LT5kb21haW4sIGlu Zm8pOwoKSSB0aGluayB0aGlzIGlzIG1pc3NpbmcgdW5iaW5kaW5nIGZvciBncm91cCBNU0kgaW50 ZXJydXB0cywgeW91IHNob3VsZApjaGVjayB0aGUgdHlwZSBhbmQgaWYgaXQncyBNU0kgKG5vdCBN U0lYKSBpdGVyYXRlIG92ZXIgdGhlIG51bWJlciBvZgp2ZWN0b3JzIGluIG1zaS5udmVjIGluIG9y ZGVyIHRvIHVuYmluZCB0aGVtPwoKVGhhbmtzLCBSb2dlci4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=