From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Tian, Kevin" Subject: Re: [PATCH v9 4/5] x86/ioreq server: Asynchronously reset outstanding p2m_ioreq_server entries. Date: Wed, 22 Mar 2017 08:10:41 +0000 Message-ID: References: <1490064773-26751-1-git-send-email-yu.c.zhang@linux.intel.com> <1490064773-26751-5-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1490064773-26751-5-git-send-email-yu.c.zhang@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yu Zhang , "xen-devel@lists.xen.org" Cc: "Nakajima, Jun" , George Dunlap , Andrew Cooper , Paul Durrant , "Lv, Zhiyuan" , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiBGcm9tOiBZdSBaaGFuZyBbbWFpbHRvOnl1LmMuemhhbmdAbGludXguaW50ZWwuY29tXQo+IFNl bnQ6IFR1ZXNkYXksIE1hcmNoIDIxLCAyMDE3IDEwOjUzIEFNCj4gCj4gQWZ0ZXIgYW4gaW9yZXEg c2VydmVyIGhhcyB1bm1hcHBlZCwgdGhlIHJlbWFpbmluZyBwMm1faW9yZXFfc2VydmVyCj4gZW50 cmllcyBuZWVkIHRvIGJlIHJlc2V0IGJhY2sgdG8gcDJtX3JhbV9ydy4gVGhpcyBwYXRjaCBkb2Vz IHRoaXMKPiBhc3luY2hyb25vdXNseSB3aXRoIHRoZSBjdXJyZW50IHAybV9jaGFuZ2VfZW50cnlf dHlwZV9nbG9iYWwoKSBpbnRlcmZhY2UuCj4gCj4gVGhpcyBwYXRjaCBhbHNvIGRpc2FsbG93cyBs aXZlIG1pZ3JhdGlvbiwgd2hlbiB0aGVyZSdzIHN0aWxsIGFueSBvdXRzdGFuZGluZwo+IHAybV9p b3JlcV9zZXJ2ZXIgZW50cnkgbGVmdC4gVGhlIGNvcmUgcmVhc29uIGlzIG91ciBjdXJyZW50IGlt cGxlbWVudGF0aW9uCj4gb2YgcDJtX2NoYW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpIGNhbiBub3Qg dGVsbCB0aGUgc3RhdGUgb2YKPiBwMm1faW9yZXFfc2VydmVyIGVudHJpZXMoY2FuIG5vdCBkZWNp ZGUgaWYgYW4gZW50cnkgaXMgdG8gYmUgZW11bGF0ZWQgb3IgdG8KPiBiZSByZXN5bmNlZCkuCgpE b24ndCBxdWl0ZSBnZXQgdGhpcyBwb2ludC4gY2hhbmdlX2dsb2JhbCBpcyB0cmlnZ2VyZWQgb25s eSB1cG9uCnVubWFwLiBBdCB0aGF0IHBvaW50IHRoZXJlIGlzIG5vIGlvcmVxIHNlcnZlciB0byBl bXVsYXRlIHRoZQp3cml0ZSBvcGVyYXRpb25zIG9uIHRob3NlIGVudHJpZXMuIEFsbCB0aGUgdGhp bmdzIHJlcXVpcmVkIGlzCmp1c3QgdG8gY2hhbmdlIHRoZSB0eXBlLiBXaGF0J3MgdGhlIGV4YWN0 IGRlY2lzaW9uIHJlcXVpcmVkIGhlcmU/CgpidHcgZG9lcyBpdCBtZWFuIHRoYXQgbGl2ZSBtaWdy YXRpb24gY2FuIGJlIHN0aWxsIHN1cHBvcnRlZCBhcyBsb25nIGFzCmRldmljZSBtb2RlbCBwcm9h Y3RpdmVseSB1bm1hcHMgd3JpdGUtcHJvdGVjdGVkIHBhZ2VzIGJlZm9yZQpzdGFydGluZyBsaXZl IG1pZ3JhdGlvbj8KCgo+IAo+IE5vdGU6IG5ldyBmaWVsZCBlbnRyeV9jb3VudCBpcyBpbnRyb2R1 Y2VkIGluIHN0cnVjdCBwMm1fZG9tYWluLCB0byByZWNvcmQKPiB0aGUgbnVtYmVyIG9mIHAybV9p b3JlcV9zZXJ2ZXIgcDJtIHBhZ2UgdGFibGUgZW50cmllcy4KPiBPbmUgbmF0dXJlIG9mIHRoZXNl IGVudHJpZXMgaXMgdGhhdCB0aGV5IG9ubHkgcG9pbnQgdG8gNEsgc2l6ZWQgcGFnZSBmcmFtZXMs Cj4gYmVjYXVzZSBhbGwgcDJtX2lvcmVxX3NlcnZlciBlbnRyaWVzIGFyZSBvcmlnaW5hdGVkIGZy b20gcDJtX3JhbV9ydyBvbmVzCj4gaW4gcDJtX2NoYW5nZV90eXBlX29uZSgpLiBXZSBkbyBub3Qg bmVlZCB0byB3b3JyeSBhYm91dCB0aGUgY291bnRpbmcgZm9yCj4gMk0vMUcgc2l6ZWQgcGFnZXMu Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXUgWmhhbmcgPHl1LmMuemhhbmdAbGludXguaW50ZWwuY29t Pgo+IC0tLQo+IENjOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgo+IENj OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5s YXBAZXUuY2l0cml4LmNvbT4KPiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwu Y29tPgo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KPiAKPiBjaGFuZ2Vz IGluIHY0Ogo+ICAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBKYW46IHVzZSBBU1NFUlQo KSBpbnN0ZWFkIG9mICdpZicKPiAgICAgY29uZGl0aW9uIGluIHAybV9jaGFuZ2VfdHlwZV9vbmUo KS4KPiAgIC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gSmFuOiBjb21taXQgbWVzc2FnZSBj aGFuZ2VzIHRvIG1lbnRpb24KPiAgICAgdGhlIHAybV9pb3JlcV9zZXJ2ZXIgYXJlIGFsbCBiYXNl ZCBvbiA0SyBzaXplZCBwYWdlcy4KPiAKPiBjaGFuZ2VzIGluIHYzOgo+ICAgLSBNb3ZlIHRoZSBz eW5jaHJvbm91c2x5IHJlc2V0dGluZyBsb2dpYyBpbnRvIHBhdGNoIDUuCj4gICAtIEFjY29yZGlu ZyB0byBjb21tZW50cyBmcm9tIEphbjogaW50cm9kdWNlIHAybV9jaGVja19jaGFuZ2VhYmxlKCkK PiAgICAgdG8gY2xhcmlmeSB0aGUgcDJtIHR5cGUgY2hhbmdlIGNvZGUuCj4gICAtIEFjY29yZGlu ZyB0byBjb21tZW50cyBmcm9tIEdlb3JnZTogdXNlIGxvY2tzIGluIHRoZSBzYW1lIG9yZGVyCj4g ICAgIHRvIGF2b2lkIGRlYWRsb2NrLCBjYWxsIHAybV9jaGFuZ2VfZW50cnlfdHlwZV9nbG9iYWwo KSBhZnRlciB1bm1hcAo+ICAgICBvZiB0aGUgaW9yZXEgc2VydmVyIGlzIGZpbmlzaGVkLgo+IAo+ IGNoYW5nZXMgaW4gdjI6Cj4gICAtIE1vdmUgdGhlIGNhbGN1bGF0aW9uIG9mIGlvcmVxIHNlcnZl ciBwYWdlIGVudHJ5X2NvdXQgaW50bwo+ICAgICBwMm1fY2hhbmdlX3R5cGVfb25lKCkgc28gdGhh dCB3ZSBkbyBub3QgbmVlZCBhIHNlcGVyYXRlIGxvY2suCj4gICAgIE5vdGU6IGVudHJ5X2NvdW50 IGlzIGFsc28gY2FsY3VsYXRlZCBpbiByZXNvbHZlX21pc2NvbmZpZygpLwo+ICAgICBkb19yZWNh bGMoKSwgZm9ydHVuYXRlbHkgY2FsbGVycyBvZiBib3RoIHJvdXRpbmVzIGhhdmUgcDJtCj4gICAg IGxvY2sgcHJvdGVjdGVkIGFscmVhZHkuCj4gICAtIFNpbXBsaWZ5IGxvZ2ljIGluIGh2bW9wX3Nl dF9tZW1fdHlwZSgpLgo+ICAgLSBJbnRyb2R1Y2Ugcm91dGluZSBwMm1fZmluaXNoX3R5cGVfY2hh bmdlKCkgdG8gd2FsayB0aGUgcDJtCj4gICAgIHRhYmxlIGFuZCBkbyB0aGUgcDJtIHJlc2V0Lgo+ IC0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgIHwgIDggKysrKysrKysgIHhlbi9hcmNo L3g4Ni9tbS9oYXAvaGFwLmMgfCAgOQo+ICsrKysrKysrKyAgeGVuL2FyY2gveDg2L21tL3AybS1l cHQuYyB8ICA4ICsrKysrKystCj4geGVuL2FyY2gveDg2L21tL3AybS1wdC5jICB8IDEzICsrKysr KysrKysrLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS5jICAgICB8IDIwICsrKysrKysrKysrKysr KysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggfCAgOSArKysrKysrKy0KPiAgNiBm aWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVx LmMgaW5kZXgKPiA3NDY3OTlmLi4xMDJjNmMyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+IEBAIC05NDksNiAr OTQ5LDE0IEBAIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QKPiBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4gCj4gICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gCj4gKyAgICBpZiAoIHJj ID09IDAgJiYgZmxhZ3MgPT0gMCApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IHAybV9kb21h aW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKPiArCj4gKyAgICAgICAgaWYgKCByZWFkX2F0 b21pYygmcDJtLT5pb3JlcS5lbnRyeV9jb3VudCkgKQo+ICsgICAgICAgICAgICBwMm1fY2hhbmdl X2VudHJ5X3R5cGVfZ2xvYmFsKGQsIHAybV9pb3JlcV9zZXJ2ZXIsIHAybV9yYW1fcncpOwo+ICsg ICAgfQo+ICsKPiAgICAgIHJldHVybiByYzsKPiAgfQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+IGluZGV4IGE1 N2IzODUuLjZlYzk1MGEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiBAQCAtMTg3LDYgKzE4NywxNSBAQCBv dXQ6Cj4gICAqLwo+ICBzdGF0aWMgaW50IGhhcF9lbmFibGVfbG9nX2RpcnR5KHN0cnVjdCBkb21h aW4gKmQsIGJvb2xfdCBsb2dfZ2xvYmFsKSAgewo+ICsgICAgc3RydWN0IHAybV9kb21haW4gKnAy bSA9IHAybV9nZXRfaG9zdHAybShkKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogUmVmdXNlIHRv IHR1cm4gb24gZ2xvYmFsIGxvZy1kaXJ0eSBtb2RlIGlmCj4gKyAgICAgKiB0aGVyZSdzIG91dHN0 YW5kaW5nIHAybV9pb3JlcV9zZXJ2ZXIgcGFnZXMuCj4gKyAgICAgKi8KPiArICAgIGlmICggbG9n X2dsb2JhbCAmJiByZWFkX2F0b21pYygmcDJtLT5pb3JlcS5lbnRyeV9jb3VudCkgKQo+ICsgICAg ICAgIHJldHVybiAtRUJVU1k7CgpJIGtub3cgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgYmVmb3Jl LCBidXQgZGlkbid0IHJlbWVtYmVyCnRoZSBkZXRhaWwgcmVhc29uIC0gd2h5IGNhbm5vdCBhbGxv dyBsb2ctZGlydHkgbW9kZSB3aGVuIAp0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcgcDJtX2lv cmVxX3NlcnZlciBwYWdlcz8gQ2Fubm90CndlIG1hcmsgcmVsYXRlZCBwYWdlIGFzIGRpcnR5IHdo ZW4gZm9yd2FyZGluZyB3cml0ZSBlbXVsYXRpb24KcmVxdWVzdCB0byBjb3JyZXNwb25kaW5nIGlv cmVxIHNlcnZlcj8KCj4gKwo+ICAgICAgLyogdHVybiBvbiBQR19sb2dfZGlydHkgYml0IGluIHBh Z2luZyBtb2RlICovCj4gICAgICBwYWdpbmdfbG9jayhkKTsKPiAgICAgIGQtPmFyY2gucGFnaW5n Lm1vZGUgfD0gUEdfbG9nX2RpcnR5OyBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS0K PiBlcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgaW5kZXggY2MxZWIyMS4uMWRmM2Qw OSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L21tL3AybS1lcHQuYwo+IEBAIC01NDQsNiArNTQ0LDEyIEBAIHN0YXRpYyBpbnQgcmVz b2x2ZV9taXNjb25maWcoc3RydWN0IHAybV9kb21haW4KPiAqcDJtLCB1bnNpZ25lZCBsb25nIGdm bikKPiAgICAgICAgICAgICAgICAgICAgICBlLmlwYXQgPSBpcGF0Owo+ICAgICAgICAgICAgICAg ICAgICAgIGlmICggZS5yZWNhbGMgJiYgcDJtX2lzX2NoYW5nZWFibGUoZS5zYV9wMm10KSApCj4g ICAgICAgICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBl LnNhX3AybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3Vu dC0tOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwMm0tPmlvcmVxLmVu dHJ5X2NvdW50ID49IDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGUuc2FfcDJtdCA9IHAybV9pc19sb2dkaXJ0eV9yYW5nZShw Mm0sIGdmbiArIGksIGdmbiArIGkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA/IHAybV9yYW1fbG9nZGlydHkgOiBwMm1fcmFtX3J3Owo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXB0X3AybV90eXBlX3RvX2ZsYWdzKHAybSwgJmUsIGUuc2FfcDJtdCwgZS5hY2Nl c3MpOyBAQCAtCj4gOTY1LDcgKzk3MSw3IEBAIHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sCj4gICAgICBpZiAoIGlzX2VwdGVfdmFsaWQoZXB0X2VudHJ5 KSApCj4gICAgICB7Cj4gICAgICAgICAgaWYgKCAocmVjYWxjIHx8IGVwdF9lbnRyeS0+cmVjYWxj KSAmJgo+IC0gICAgICAgICAgICAgcDJtX2lzX2NoYW5nZWFibGUoZXB0X2VudHJ5LT5zYV9wMm10 KSApCj4gKyAgICAgICAgICAgICBwMm1fY2hlY2tfY2hhbmdlYWJsZShlcHRfZW50cnktPnNhX3Ay bXQpICkKPiAgICAgICAgICAgICAgKnQgPSBwMm1faXNfbG9nZGlydHlfcmFuZ2UocDJtLCBnZm4s IGdmbikgPyBwMm1fcmFtX2xvZ2RpcnR5Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogcDJtX3JhbV9ydzsKPiAgICAgICAgICBlbHNlCj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcHQuYyBpbmRleAo+IGY2YzQ1ZWMuLjE2OWRlNzUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21tL3AybS1wdC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCj4gQEAgLTQz NiwxMSArNDM2LDEzIEBAIHN0YXRpYyBpbnQgZG9fcmVjYWxjKHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sCj4gdW5zaWduZWQgbG9uZyBnZm4pCj4gICAgICAgICAgIG5lZWRzX3JlY2FsYyhsMSwgKnBl bnQpICkKPiAgICAgIHsKPiAgICAgICAgICBsMV9wZ2VudHJ5X3QgZSA9ICpwZW50Owo+ICsgICAg ICAgIHAybV90eXBlX3QgcDJtdF9vbGQ7Cj4gCj4gICAgICAgICAgaWYgKCAhdmFsaWRfcmVjYWxj KGwxLCBlKSApCj4gICAgICAgICAgICAgIFAyTV9ERUJVRygiYm9ndXMgcmVjYWxjIGxlYWYgYXQg ZCVkOiVseDoldVxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZG9tYWluLT5kb21h aW5faWQsIGdmbiwgbGV2ZWwpOwo+IC0gICAgICAgIGlmICggcDJtX2lzX2NoYW5nZWFibGUocDJt X2ZsYWdzX3RvX3R5cGUobDFlX2dldF9mbGFncyhlKSkpICkKPiArICAgICAgICBwMm10X29sZCA9 IHAybV9mbGFnc190b190eXBlKGwxZV9nZXRfZmxhZ3MoZSkpOwo+ICsgICAgICAgIGlmICggcDJt X2lzX2NoYW5nZWFibGUocDJtdF9vbGQpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgbWFzayA9IH4wVUwgPDwgKGxldmVsICogUEFHRVRBQkxFX09SREVSKTsKPiAg ICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10ID0gcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwg Z2ZuICYgbWFzaywgZ2ZuIHwKPiB+bWFzaykgQEAgLTQ2MCw2ICs0NjIsMTMgQEAgc3RhdGljIGlu dCBkb19yZWNhbGMoc3RydWN0IHAybV9kb21haW4KPiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbikK PiAgICAgICAgICAgICAgICAgICAgICAgbWZuICY9IH4oX1BBR0VfUFNFX1BBVCA+PiBQQUdFX1NI SUZUKTsKPiAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IF9QQUdFX1BTRTsKPiAgICAgICAgICAg ICAgfQo+ICsKPiArICAgICAgICAgICAgaWYgKCBwMm10X29sZCA9PSBwMm1faW9yZXFfc2VydmVy ICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9j b3VudC0tOwo+ICsgICAgICAgICAgICAgICAgQVNTRVJUKHAybS0+aW9yZXEuZW50cnlfY291bnQg Pj0gMCk7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gICAgICAgICAgICAgIGUgPSBsMWVfZnJvbV9w Zm4obWZuLCBmbGFncyk7Cj4gICAgICAgICAgICAgIHAybV9hZGRfaW9tbXVfZmxhZ3MoJmUsIGxl dmVsLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwMm10ID09IHAybV9yYW1f cncpIEBAIC03MjksNyArNzM4LDcgQEAKPiBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCj4gc3RhdGljIGlubGluZSBw Mm1fdHlwZV90IHJlY2FsY190eXBlKGJvb2xfdCByZWNhbGMsIHAybV90eXBlX3QgdCwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0s IHVuc2lnbmVkIGxvbmcgZ2ZuKSAgewo+IC0gICAgaWYgKCAhcmVjYWxjIHx8ICFwMm1faXNfY2hh bmdlYWJsZSh0KSApCj4gKyAgICBpZiAoICFyZWNhbGMgfHwgIXAybV9jaGVja19jaGFuZ2VhYmxl KHQpICkKPiAgICAgICAgICByZXR1cm4gdDsKPiAgICAgIHJldHVybiBwMm1faXNfbG9nZGlydHlf cmFuZ2UocDJtLCBnZm4sIGdmbikgPyBwMm1fcmFtX2xvZ2RpcnR5Cj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcDJtX3JhbV9ydzsgZGlmZiAtLWdp dAo+IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jIGluZGV4 Cj4gZGQ0ZTQ3Ny4uZTNlNTRmMSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMK PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBAQCAtOTU0LDYgKzk1NCwyNiBAQCBpbnQg cDJtX2NoYW5nZV90eXBlX29uZShzdHJ1Y3QgZG9tYWluICpkLAo+IHVuc2lnbmVkIGxvbmcgZ2Zu LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2VzcykKPiAgICAg ICAgICAgOiAtRUJVU1k7Cj4gCj4gKyAgICBpZiAoICFyYyApCj4gKyAgICB7Cj4gKyAgICAgICAg c3dpdGNoICggbnQgKQo+ICsgICAgICAgIHsKPiArICAgICAgICBjYXNlIHAybV9yYW1fcnc6Cj4g KyAgICAgICAgICAgIGlmICggb3QgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4gKyAgICAgICAgICAg IHsKPiArICAgICAgICAgICAgICAgIHAybS0+aW9yZXEuZW50cnlfY291bnQtLTsKPiArICAgICAg ICAgICAgICAgIEFTU0VSVChwMm0tPmlvcmVxLmVudHJ5X2NvdW50ID49IDApOwo+ICsgICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgcDJtX2lvcmVxX3Nl cnZlcjoKPiArICAgICAgICAgICAgQVNTRVJUKG90ID09IHAybV9yYW1fcncpOwo+ICsgICAgICAg ICAgICBwMm0tPmlvcmVxLmVudHJ5X2NvdW50Kys7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArICAg IH0KPiArCj4gICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAwKTsKPiAKPiAgICAgIHJldHVybiBy YzsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcDJtLmggaW5kZXgKPiAzNzg2NjgwLi4zOTVmMTI1IDEwMDY0NAo+IC0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5o Cj4gQEAgLTEyMCw3ICsxMjAsMTAgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgcDJtX3F1ZXJ5X3Q7 Cj4gCj4gIC8qIFR5cGVzIHRoYXQgY2FuIGJlIHN1YmplY3QgdG8gYnVsayB0cmFuc2l0aW9ucy4g Ki8gICNkZWZpbmUKPiBQMk1fQ0hBTkdFQUJMRV9UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9y dykgXAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9y YW1fbG9nZGlydHkpICkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9f bWFzayhwMm1fcmFtX2xvZ2RpcnR5KSBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcDJtX3RvX21hc2socDJtX2lvcmVxX3NlcnZlcikgKQo+ICsKPiArI2RlZmluZSBQMk1fSU9S RVFfVFlQRVMgKHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQo+IAo+ICAjZGVmaW5lIFAy TV9QT0RfVFlQRVMgKHAybV90b19tYXNrKHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQpKQo+IAo+IEBA IC0xNTcsNiArMTYwLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgcDJtX3F1ZXJ5X3Q7ICAjZGVm aW5lCj4gcDJtX2lzX3JlYWRvbmx5KF90KSAocDJtX3RvX21hc2soX3QpICYgUDJNX1JPX1RZUEVT KSAgI2RlZmluZQo+IHAybV9pc19kaXNjYXJkX3dyaXRlKF90KSAocDJtX3RvX21hc2soX3QpICYg UDJNX0RJU0NBUkRfV1JJVEVfVFlQRVMpCj4gI2RlZmluZSBwMm1faXNfY2hhbmdlYWJsZShfdCkg KHAybV90b19tYXNrKF90KSAmCj4gUDJNX0NIQU5HRUFCTEVfVFlQRVMpCj4gKyNkZWZpbmUgcDJt X2lzX2lvcmVxKF90KSAocDJtX3RvX21hc2soX3QpICYgUDJNX0lPUkVRX1RZUEVTKQo+ICAjZGVm aW5lIHAybV9pc19wb2QoX3QpIChwMm1fdG9fbWFzayhfdCkgJiBQMk1fUE9EX1RZUEVTKSAgI2Rl ZmluZQo+IHAybV9pc19ncmFudChfdCkgKHAybV90b19tYXNrKF90KSAmIFAyTV9HUkFOVF9UWVBF UykKPiAgLyogR3JhbnQgdHlwZXMgYXJlICpub3QqIGNvbnNpZGVyZWQgdmFsaWQsIGJlY2F1c2Ug dGhleSBjYW4gYmUgQEAgLTE3OCw2Cj4gKzE4Miw4IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IHAy bV9xdWVyeV90Owo+IAo+ICAjZGVmaW5lIHAybV9hbGxvd3NfaW52YWxpZF9tZm4odCkgKHAybV90 b19tYXNrKHQpICYKPiBQMk1fSU5WQUxJRF9NRk5fVFlQRVMpCj4gCj4gKyNkZWZpbmUgcDJtX2No ZWNrX2NoYW5nZWFibGUodCkgKHAybV9pc19jaGFuZ2VhYmxlKHQpICYmCj4gKyFwMm1faXNfaW9y ZXEodCkpCj4gKwo+ICB0eXBlZGVmIGVudW0gewo+ICAgICAgcDJtX2hvc3QsCj4gICAgICBwMm1f bmVzdGVkLAo+IEBAIC0zNDksNiArMzU1LDcgQEAgc3RydWN0IHAybV9kb21haW4gewo+ICAgICAg ICAgICAgKiBhcmUgdG8gYmUgZW11bGF0ZWQgYnkgYW4gaW9yZXEgc2VydmVyLgo+ICAgICAgICAg ICAgKi8KPiAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwo+ICsgICAgICAgICBsb25nIGVu dHJ5X2NvdW50Owo+ICAgICAgIH0gaW9yZXE7Cj4gIH07Cj4gCj4gLS0KPiAxLjkuMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=