From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: Re: [PATCH v5 1/3] xen/pt: fix some pass-thru devices don't work across reboot Date: Wed, 16 Jan 2019 19:59:44 +0800 Message-ID: <20190116115942.GA25640@gao-cwp> References: <1547626652-23384-1-git-send-email-chao.gao@intel.com> <20190116103823.2h5kjq77y2nmhfn4@mac> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gjjoQ-0004pQ-Qy for xen-devel@lists.xenproject.org; Wed, 16 Jan 2019 11:56:50 +0000 Content-Disposition: inline In-Reply-To: <20190116103823.2h5kjq77y2nmhfn4@mac> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau =?iso-8859-1?Q?Monn=E9?= Cc: xen-devel@lists.xenproject.org, Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBKYW4gMTYsIDIwMTkgYXQgMTE6Mzg6MjNBTSArMDEwMCwgUm9nZXIgUGF1IE1vbm7D qSB3cm90ZToKPk9uIFdlZCwgSmFuIDE2LCAyMDE5IGF0IDA0OjE3OjMwUE0gKzA4MDAsIENoYW8g R2FvIHdyb3RlOgo+PiBJIGZpbmQgc29tZSBwYXNzLXRocnUgZGV2aWNlcyBkb24ndCB3b3JrIGFu eSBtb3JlIGFjcm9zcyBndWVzdAo+PiByZWJvb3QuIEFzc2lnbmluZyBpdCB0byBhbm90aGVyIGRv bWFpbiBhbHNvIG1lZXRzIHRoZSBzYW1lIGlzc3VlLiBBbmQKPj4gdGhlIG9ubHkgd2F5IHRvIG1h a2UgaXQgd29yayBhZ2FpbiBpcyB1bi1iaW5kaW5nIGFuZCBiaW5kaW5nIGl0IHRvCj4+IHBjaWJh Y2suIFNvbWVvbmUgcmVwb3J0ZWQgdGhpcyBpc3N1ZSBvbmUgeWVhciBhZ28gWzFdLgo+PiAKPj4g SWYgdGhlIGRldmljZSdzIGRyaXZlciBkb2Vzbid0IGRpc2FibGUgTVNJLVggZHVyaW5nIHNodXRk b3duIG9yIHFlbXUgaXMKPj4ga2lsbGVkL2NyYXNoZWQgYmVmb3JlIHRoZSBkb21haW4gc2h1dGRv d24sIHRoaXMgZG9tYWluJ3MgcGlycSB3b24ndCBiZQo+PiB1bm1hcHBlZC4gVGhlbiB4ZW4gdGFr ZXMgb3ZlciB0aGlzIHdvcmssIHVubWFwcGluZyBhbGwgcGlycS1zLCB3aGVuCj4+IGRlc3Ryb3lp bmcgZ3Vlc3QuIEJ1dCBhcyBwY2liYWNrIGhhcyBhbHJlYWR5IGRpc2FibGVkIG1lb3J5IGRlY29k aW5nIGJlZm9yZQo+PiB4ZW4gdW5tYXBwaW5nIHBpcnEsIFhlbiBoYXMgdG8gc2V0cyB0aGUgaG9z dF9tYXNrYWxsIGZsYWcgYW5kIG1hc2thbGwgYml0Cj4+IHRvIG1hc2sgYSBNU0kgcmF0aGVyIHRo YW4gc2V0cyBtYXNrYml0IGluIE1TSS14IHRhYmxlLiBUaGUgY2FsbCB0cmFjZSBvZgo+PiB0aGlz IHByb2Nlc3MgaXM6Cj4+IAo+PiAtPmFyY2hfZG9tYWluX2Rlc3Ryb3kKPj4gICAgIC0+ZnJlZV9k b21haW5fcGlycXMKPj4gICAgICAgICAtPnVubWFwX2RvbWFpbl9waXJxIChpZiBwaXJxIGlzbid0 IHVubWFwcGVkIGJ5IHFlbXUpCj4+ICAgICAgICAgICAgIC0+cGlycV9ndWVzdF9mb3JjZV91bmJp bmQKPj4gICAgICAgICAgICAgICAgIC0+X19waXJxX2d1ZXN0X3VuYmluZAo+PiAgICAgICAgICAg ICAgICAgICAgIC0+bWFza19tc2lfaXJxKD1kZXNjLT5oYW5kbGVyLT5kaXNhYmxlKCkpCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIC0+dGhlIHdhcm5pbmcgaW4gbXNpX3NldF9tYXNrX2JpdCgp Cj4+IAo+PiBUaGUgaG9zdF9tYXNrYWxsIGJpdCB3aWxsIHByZXZlbnQgZ3Vlc3RzIGZyb20gY2xl YXJpbmcgdGhlIG1hc2thbGwgYml0Cj4+IGV2ZW4gdGhlIGRldmljZSBpcyBhc3NpZ25lZCB0byBh bm90aGVyIGd1ZXN0IGxhdGVyLiBUaGVuIGd1ZXN0cyBjYW5ub3QKPj4gcmVjZWl2ZSBNU0lzIGZy b20gdGhpcyBkZXZpY2UuCj4+IAo+PiBUbyBmaXggdGhpcyBpc3N1ZSwgYSBwaXJxIGlzIHVubWFw cGVkIGJlZm9yZSBtZW1vcnkgZGVjb2RpbmcgaXMgZGlzYWJsZWQgYnkKPj4gcGNpYmFjay4gU3Bl Y2lmaWNhbGx5LCB3aGVuIGEgZGV2aWNlIGlzIGRldGFjaGVkIGZyb20gYSBndWVzdCwgYWxsIGVz dGFibGlzaGVkCj4+IG1hcHBpbmdzIGJldHdlZW4gcGlycSBhbmQgbXNpIGFyZSBkZXN0cm95aW5n IGJlZm9yZSBjaGFuZ2luZyB0aGUgb3duZXJzaGlwLgo+PiAKPj4gWzFdOiBodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTctMDkvbXNnMDI1MjAu aHRtbAo+Cj5UaGFua3MsIEkgdGhpbmsgdGhlIGFwcHJvYWNoIGlzIGZpbmUsIGp1c3QgYSBjb3Vw bGUgb2YgY29tbWVudHMuCj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGlu dGVsLmNvbT4KPj4gLS0tCj4+IENoYW5nZXMgaW4gdjU6Cj4+ICAtIGZpeCB0aGUgcG90ZW50aWFs IGluZmluaXRlIGxvb3AKPj4gIC0gYXNzZXJ0IHRoYXQgdW5tYXBfZG9tYWluX3BpcnEoKSB3b24n dCBmYWlsCj4+ICAtIGFzc2VydCBtc2lfbGlzdCBpcyBlbXB0eSBhZnRlciB0aGUgbG9vcCBpbiBw Y2lfdW5tYXBfbXNpCj4+ICAtIHByb3ZpZGUgYSBzdHViIGZvciBwdF9pcnFfZGVzdHJveV9iaW5k X21zaSgpIGlmICFDT05GSUdfSFZNIHRvIGZpeCBhCj4+ICAgIGNvbXBpbGF0aW9uIGVycm9yIHdo ZW4gYnVpbGRpbmcgUFZTaGltCj4+IAo+PiBDaGFuZ2VzIGluIHY0Ogo+PiAgLSBzcGxpdCBvdXQg Y2hhbmdlIHRvICdtc2l4LT53YXJuZWQnIGZpZWxkCj4+ICAtIGhhbmRsZSBtdWx0aXBsZSBtc2kg Y2FzZXMKPj4gIC0gdXNlIGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCB0byB0cmF2ZXJzZSAncGRl di0+bXNpX2xpc3QnCj4+IC0tLQo+PiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYyAgfCA1 NyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+PiAgeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvcGNpLmMgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4+ICB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICB8ICA0ICsrKwo+PiAg MyBmaWxlcyBjaGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4+IAo+ PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvLmMKPj4gaW5kZXggYTZlYjhhNC4uNTZlZTFlZiAxMDA2NDQKPj4gLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwo+PiArKysgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9pby5jCj4+IEBAIC02MTksNiArNjE5LDQyIEBAIGludCBwdF9pcnFfY3JlYXRlX2Jp bmQoCj4+ICAgICAgcmV0dXJuIDA7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRpYyB2b2lkIHB0X2lycV9k ZXN0cm95X2JpbmRfY29tbW9uKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwaXJxICpwaXJxKQo+ PiArewo+PiArICAgIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2kgPSBwaXJxX2RwY2ko cGlycSk7Cj4+ICsKPj4gKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmV2ZW50X2xvY2sp KTsKPj4gKwo+PiArICAgIGlmICggcGlycV9kcGNpICYmIChwaXJxX2RwY2ktPmZsYWdzICYgSFZN X0lSUV9EUENJX01BUFBFRCkgJiYKPj4gKyAgICAgICAgIGxpc3RfZW1wdHkoJnBpcnFfZHBjaS0+ ZGlnbF9saXN0KSApCj4+ICsgICAgewo+PiArICAgICAgICBwaXJxX2d1ZXN0X3VuYmluZChkLCBw aXJxKTsKPj4gKyAgICAgICAgbXNpeHRibF9wdF91bnJlZ2lzdGVyKGQsIHBpcnEpOwo+PiArICAg ICAgICBpZiAoIHB0X2lycV9uZWVkX3RpbWVyKHBpcnFfZHBjaS0+ZmxhZ3MpICkKPj4gKyAgICAg ICAgICAgIGtpbGxfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOwo+PiArICAgICAgICBwaXJxX2Rw Y2ktPmZsYWdzID0gMDsKPj4gKyAgICAgICAgLyoKPj4gKyAgICAgICAgICogU2VlIGNvbW1lbnQg aW4gcHRfaXJxX2NyZWF0ZV9iaW5kJ3MgUFRfSVJRX1RZUEVfTVNJIGJlZm9yZSB0aGUKPj4gKyAg ICAgICAgICogY2FsbCB0byBwdF9waXJxX3NvZnRpcnFfcmVzZXQuCj4+ICsgICAgICAgICAqLwo+ PiArICAgICAgICBwdF9waXJxX3NvZnRpcnFfcmVzZXQocGlycV9kcGNpKTsKPj4gKwo+PiArICAg ICAgICBwaXJxX2NsZWFudXBfY2hlY2socGlycSwgZCk7Cj4+ICsgICAgfQo+PiArfQo+PiArCj4+ ICt2b2lkIHB0X2lycV9kZXN0cm95X2JpbmRfbXNpKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBw aXJxICpwaXJxKQo+PiArewo+PiArICAgIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2kg PSBwaXJxX2RwY2kocGlycSk7Cj4KPmNvbnN0Cj4KPj4gKwo+PiArICAgIEFTU0VSVChzcGluX2lz X2xvY2tlZCgmZC0+ZXZlbnRfbG9jaykpOwo+PiArCj4+ICsgICAgaWYgKCBwaXJxX2RwY2kgJiYg cGlycV9kcGNpLT5nbXNpLnBvc3RlZCApCj4+ICsgICAgICAgIHBpX3VwZGF0ZV9pcnRlKE5VTEws IHBpcnEsIDApOwo+PiArCj4+ICsgICAgcHRfaXJxX2Rlc3Ryb3lfYmluZF9jb21tb24oZCwgcGly cSk7Cj4+ICt9Cj4+ICsKPj4gIGludCBwdF9pcnFfZGVzdHJveV9iaW5kKAo+PiAgICAgIHN0cnVj dCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCB4ZW5fZG9tY3RsX2JpbmRfcHRfaXJxICpwdF9pcnFf YmluZCkKPj4gIHsKPj4gQEAgLTcyNywyNiArNzYzLDExIEBAIGludCBwdF9pcnFfZGVzdHJveV9i aW5kKAo+PiAgICAgICAgICB9Cj4+ICAgICAgICAgIGVsc2UKPj4gICAgICAgICAgICAgIHdoYXQg PSAiYm9ndXMiOwo+PiAtICAgIH0KPj4gLSAgICBlbHNlIGlmICggcGlycV9kcGNpICYmIHBpcnFf ZHBjaS0+Z21zaS5wb3N0ZWQgKQo+PiAtICAgICAgICBwaV91cGRhdGVfaXJ0ZShOVUxMLCBwaXJx LCAwKTsKPj4gLQo+PiAtICAgIGlmICggcGlycV9kcGNpICYmIChwaXJxX2RwY2ktPmZsYWdzICYg SFZNX0lSUV9EUENJX01BUFBFRCkgJiYKPj4gLSAgICAgICAgIGxpc3RfZW1wdHkoJnBpcnFfZHBj aS0+ZGlnbF9saXN0KSApCj4+IC0gICAgewo+PiAtICAgICAgICBwaXJxX2d1ZXN0X3VuYmluZChk LCBwaXJxKTsKPj4gLSAgICAgICAgbXNpeHRibF9wdF91bnJlZ2lzdGVyKGQsIHBpcnEpOwo+PiAt ICAgICAgICBpZiAoIHB0X2lycV9uZWVkX3RpbWVyKHBpcnFfZHBjaS0+ZmxhZ3MpICkKPj4gLSAg ICAgICAgICAgIGtpbGxfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOwo+PiAtICAgICAgICBwaXJx X2RwY2ktPmZsYWdzID0gMDsKPj4gLSAgICAgICAgLyoKPj4gLSAgICAgICAgICogU2VlIGNvbW1l bnQgaW4gcHRfaXJxX2NyZWF0ZV9iaW5kJ3MgUFRfSVJRX1RZUEVfTVNJIGJlZm9yZSB0aGUKPj4g LSAgICAgICAgICogY2FsbCB0byBwdF9waXJxX3NvZnRpcnFfcmVzZXQuCj4+IC0gICAgICAgICAq Lwo+PiAtICAgICAgICBwdF9waXJxX3NvZnRpcnFfcmVzZXQocGlycV9kcGNpKTsKPj4gIAo+PiAt ICAgICAgICBwaXJxX2NsZWFudXBfY2hlY2socGlycSwgZCk7Cj4+ICsgICAgICAgIHB0X2lycV9k ZXN0cm95X2JpbmRfY29tbW9uKGQsIHBpcnEpOwo+PiAgICAgIH0KPj4gKyAgICBlbHNlCj4+ICsg ICAgICAgIHB0X2lycV9kZXN0cm95X2JpbmRfbXNpKGQsIHBpcnEpOwo+PiAgCj4+ICAgICAgc3Bp bl91bmxvY2soJmQtPmV2ZW50X2xvY2spOwo+PiAgCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCj4+IGlu ZGV4IDkzYzIwYjkuLjRmMmJlMDIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3BjaS5jCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCj4+IEBAIC0x NTE0LDYgKzE1MTQsNjggQEAgc3RhdGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4g KmQsIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQo+PiAgICAgIHJldHVybiBy YzsKPj4gIH0KPj4gIAo+PiArLyoKPj4gKyAqIFVubWFwIGVzdGFibGlzaGVkIG1hcHBpbmdzIGJl dHdlZW4gZG9tYWluJ3MgcGlycSBhbmQgZGV2aWNlJ3MgTVNJLgo+PiArICogVGhlc2UgbWFwcGlu Z3Mgd2VyZSBzZXQgdXAgYnkgcWVtdS9ndWVzdCBhbmQgYXJlIGV4cGVjdGVkIHRvIGJlCj4+ICsg KiBkZXN0cm95ZWQgd2hlbiBjaGFuZ2luZyB0aGUgZGV2aWNlJ3Mgb3duZXJzaGlwLgo+PiArICov Cj4+ICtzdGF0aWMgdm9pZCBwY2lfdW5tYXBfbXNpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+PiAr ewo+PiArICAgIHN0cnVjdCBtc2lfZGVzYyAqZW50cnksICp0bXA7Cj4+ICsgICAgc3RydWN0IGRv bWFpbiAqZCA9IHBkZXYtPmRvbWFpbjsKPj4gKwo+PiArICAgIEFTU0VSVChwY2lkZXZzX2xvY2tl ZCgpKTsKPj4gKyAgICBBU1NFUlQoZCk7Cj4+ICsKPj4gKyAgICBzcGluX2xvY2soJmQtPmV2ZW50 X2xvY2spOwo+PiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnRyeSwgdG1wLCAmcGRl di0+bXNpX2xpc3QsIGxpc3QpCj4+ICsgICAgewo+PiArICAgICAgICBzdHJ1Y3QgcGlycSAqaW5m bzsKPj4gKyAgICAgICAgaW50IHJldCwgcGlycSA9IDA7Cj4+ICsgICAgICAgIHVuc2lnbmVkIGlu dCBuciA9IGVudHJ5LT5tc2lfYXR0cmliLnR5cGUgIT0gUENJX0NBUF9JRF9NU0lYCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgID8gZW50cnktPm1zaS5udmVjIDogMTsKPgo+SSB0aGluayB5 b3Ugc2hvdWxkIG1hc2sgdGhlIGVudHJ5LCBsaWtlIGl0J3MgZG9uZSBpbgo+cHRfaXJxX2Rlc3Ry b3lfYmluZCwgc2VlIHRoZSBjYWxsIHRvIGd1ZXN0X21hc2tfbXNpX2lycS4gVGhhdCBnaXZlcyBh Cj5jb25zaXN0ZW50IHN0YXRlIGJldHdlZW4gYmluZCBhbmQgdW5iaW5kLgoKSSBkb24ndCB0aGlu ayBpdCBpcyBuZWNlc3NhcnkgY29uc2lkZXJpbmcgdGhhdCB3ZSBhcmUgdG8gdW5tYXAgcGlycS4K VGhlIHJlYXNvbiBvZiBrZWVwaW5nIHN0YXRlIGNvbnNpc3RlbnQgaXMgdGhhdCB3ZSBtaWdodCB0 cnkgdG8gYmluZAp0aGUgc2FtZSBwaXJxIHRvIGFub3RoZXIgZ3Vlc3QgaW50ZXJydXB0LgoKPgo+ PiArCj4+ICsgICAgICAgIHdoaWxlICggbnItLSApCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAg ICAgIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2k7Cj4KPk5pdDogeW91IGNvdWxkIHJl ZHVjZSB0aGUgc2NvcGUgb2YgaW5mbyBieSBkZWNsYXJpbmcgaXQgaGVyZSBBRkFJQ1QuCj4KPj4g Kwo+PiArICAgICAgICAgICAgcGlycSA9IGRvbWFpbl9pcnFfdG9fcGlycShkLCBlbnRyeVtucl0u aXJxKTsKPj4gKyAgICAgICAgICAgIFdBUk5fT04ocGlycSA8IDApOwo+PiArICAgICAgICAgICAg aWYgKCBwaXJxIDw9IDAgKQo+PiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiArCj4+ICsg ICAgICAgICAgICBpbmZvID0gcGlycV9pbmZvKGQsIHBpcnEpOwo+PiArICAgICAgICAgICAgaWYg KCAhaW5mbyApCj4+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4+ICsKPj4gKyAgICAgICAg ICAgIHBpcnFfZHBjaSA9IHBpcnFfZHBjaShpbmZvKTsKPj4gKyAgICAgICAgICAgIGlmICggcGly cV9kcGNpICYmCj4+ICsgICAgICAgICAgICAgICAgIChwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lS UV9EUENJX01BQ0hfTVNJKSAmJgo+PiArICAgICAgICAgICAgICAgICAocGlycV9kcGNpLT5mbGFn cyAmIEhWTV9JUlFfRFBDSV9HVUVTVF9NU0kpICkKPj4gKyAgICAgICAgICAgICAgICBwdF9pcnFf ZGVzdHJveV9iaW5kX21zaShkLCBpbmZvKTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAg IGlmICggcGlycSA+IDAgKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgICAvKgo+PiArICAg ICAgICAgICAgICogVGhlIHBpcnEgaXMgZGVyaXZlZCBmcm9tIGFuIGVudHJ5IGluIG1zaV9saXN0 IHJhdGhlciB0aGFuIGFuCj4+ICsgICAgICAgICAgICAgKiBhcmJpdHJhcnkgdmFsdWUgcGFzc2Vk IGRvd24uIFRoZXJlIHNob3VsZCBiZSBhIGlycSAobXNpKSBtYXBwZWQKPj4gKyAgICAgICAgICAg ICAqIHRvIHRoaXMgcGlycS4gSW4gdGhpcyBjYXNlLCB1bm1hcHBpbmcgdGhpcyBwaXJxIHNob3Vs ZCBzdWNjZWVkLgo+PiArICAgICAgICAgICAgICogT3RoZXJ3aXNlLCBzb21ldGhpbmcgZ29lcyB3 cm9uZy4KPj4gKyAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgcmV0ID0gdW5tYXBfZG9t YWluX3BpcnEoZCwgcGlycSk7Cj4+ICsgICAgICAgICAgICBBU1NFUlQoIXJldCk7Cj4KPnVubWFw X2RvbWFpbl9waXJxIGNhbiBmYWlsLCB3aHkgbm90IG1ha2UgcGNpX3VubWFwX21zaSByZXR1cm4g YW4gaW50Cj5hbmQgcHJvcGFnYXRlIHRoZSBlcnJvciB0byB0aGUgY2FsbGVyPwo+Cj5kZWFzc2ln bl9kZXZpY2UgcmV0dXJuaW5nIGFuIGVycm9yIHNob3VsZCBhbHNvIGJlIGZpbmUuCgpHb29kIHN1 Z2dlc3Rpb24uIDopCgo+Cj4+ICsgICAgICAgIH0KPj4gKyAgICB9Cj4+ICsgICAgLyoKPj4gKyAg ICAgKiBBbGwgcGlycS1zIHNob3VsZCBoYXZlIGJlZW4gdW5tYXBwZWQgYW5kIGNvcnJlc3BvbmRp bmcgbXNpX2Rlc2MKPj4gKyAgICAgKiBlbnRyaWVzIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBp biB0aGUgYWJvdmUgbG9vcC4KPj4gKyAgICAgKi8KPj4gKyAgICBBU1NFUlQobGlzdF9lbXB0eSgm cGRldi0+bXNpX2xpc3QpKTsKPj4gKwo+PiArICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2Nr KTsKPj4gK30KPj4gKwo+PiAgLyogY2FsbGVyIHNob3VsZCBob2xkIHRoZSBwY2lkZXZzX2xvY2sg Ki8KPj4gIGludCBkZWFzc2lnbl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTgg YnVzLCB1OCBkZXZmbikKPj4gIHsKPj4gQEAgLTE1MjksNiArMTU5MSw4IEBAIGludCBkZWFzc2ln bl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbikKPj4g ICAgICBpZiAoICFwZGV2ICkKPj4gICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4+ICAKPj4gKyAg ICBwY2lfdW5tYXBfbXNpKHBkZXYpOwo+Cj5KdXN0IHdhbnQgdG8gbWFrZSBzdXJlLCBzaW5jZSBk ZWFzc2lnbl9kZXZpY2Ugd2lsbCBiZSBjYWxsZWQgZm9yIGJvdGgKPlBWIGFuZCBIVk0gZG9tYWlu cy4gQUZBSUNUIHBjaV91bm1hcF9tc2kgaXMgc2FmZSB0byBjYWxsIHdoZW4gdGhlCj5kZXZpY2Ug aXMgYXNzaWduZWQgdG8gYSBQViBndWVzdCwgYnV0IHdvdWxkIGxpa2UgeW91ciBjb25maXJtYXRp b24uCgpUQkgsIEkgZG9uJ3Qga25vdyBob3cgZGV2aWNlIHBhc3MtdGhydSBpcyBpbXBsZW1lbnRl ZCBmb3IgUFYgZ3Vlc3QuCklmIFBWIGd1ZXN0IGFsc28gdXNlcyB0aGUgc2FtZSBzdHJ1Y3R1cmVz IGFuZCBBUElzIHRvIG1hbmFnZSB0aGUgbWFwcGluZwpiZXR3ZWVuIG1zaSwgcGlycSBhbmQgZ3Vl c3QgaW50ZXJydXB0LCBJIHRoaW5rIHBjaV91bm1hcF9tc2koKSBzaG91bGQgYWxzbwp3b3JrIGZv ciBQViBndWVzdCBjYXNlLgoKVGhhbmtzLgpDaGFvCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v bGlzdGluZm8veGVuLWRldmVs