From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66380A0C3F; Fri, 16 Apr 2021 04:19:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2A0981617C3; Fri, 16 Apr 2021 04:19:26 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 7793A40140 for ; Fri, 16 Apr 2021 04:19:24 +0200 (CEST) IronPort-SDR: nuzK+OPi5W4EY1OWUFr9+kkujIphiNAyQI+cLnY0533O84cVttaEAHKfNGSWc9sJN/8JSWGLpE qecpJF+UKN7g== X-IronPort-AV: E=McAfee;i="6200,9189,9955"; a="182473349" X-IronPort-AV: E=Sophos;i="5.82,226,1613462400"; d="scan'208";a="182473349" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Apr 2021 19:19:21 -0700 IronPort-SDR: I7TwNL+imUHqoJFikxVOE4Ed5sm5geIfmqZVf54mIFBWoIiX3oTKLL/ldukovtJKomOma8WUzZ vb4T/53thwfg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,226,1613462400"; d="scan'208";a="389913140" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga007.fm.intel.com with ESMTP; 15 Apr 2021 19:19:21 -0700 Received: from shsmsx602.ccr.corp.intel.com (10.109.6.142) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 15 Apr 2021 19:19:20 -0700 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by SHSMSX602.ccr.corp.intel.com (10.109.6.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Fri, 16 Apr 2021 10:19:18 +0800 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.2106.013; Fri, 16 Apr 2021 10:19:18 +0800 From: "Hu, Jiayu" To: Maxime Coquelin , "dev@dpdk.org" CC: "Xia, Chenbo" , "Wang, Yinan" , "Pai G, Sunil" , "Jiang, Cheng1" Thread-Topic: [PATCH v2 3/4] vhost: avoid deadlock on async register Thread-Index: AQHXJ4o3TGFQBWTUf0K5gqJ5ckYjX6qx3F2AgAFn1ECAABLyAIABfNQg///jRICAAJEZwA== Date: Fri, 16 Apr 2021 02:19:18 +0000 Message-ID: References: <1615985773-406787-1-git-send-email-jiayu.hu@intel.com> <1617368642-131298-1-git-send-email-jiayu.hu@intel.com> <1617368642-131298-4-git-send-email-jiayu.hu@intel.com> <0b974e3cd6534947ba6568d93d9431ab@intel.com> <9eb47884f1254cc98b9f1c60dfe9714c@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 3/4] vhost: avoid deadlock on async register X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5 LCBBcHJpbCAxNSwgMjAyMSAzOjA5IFBNDQo+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVs LmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwu Y29tPjsgV2FuZywgWWluYW4NCj4gPHlpbmFuLndhbmdAaW50ZWwuY29tPjsgUGFpIEcsIFN1bmls IDxzdW5pbC5wYWkuZ0BpbnRlbC5jb20+OyBKaWFuZywgQ2hlbmcxDQo+IDxjaGVuZzEuamlhbmdA aW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDMvNF0gdmhvc3Q6IGF2b2lkIGRl YWRsb2NrIG9uIGFzeW5jIHJlZ2lzdGVyDQo+IA0KPiANCj4gDQo+IE9uIDQvMTUvMjEgMzowOCBB TSwgSHUsIEppYXl1IHdyb3RlOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPj4gRnJvbTogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0 LmNvbT4NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCAxNCwgMjAyMSA2OjA5IFBNDQo+ID4+ IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+PiBD YzogWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgV2FuZywgWWluYW4NCj4gPj4g PHlpbmFuLndhbmdAaW50ZWwuY29tPjsgUGFpIEcsIFN1bmlsIDxzdW5pbC5wYWkuZ0BpbnRlbC5j b20+OyBKaWFuZywNCj4gQ2hlbmcxDQo+ID4+IDxjaGVuZzEuamlhbmdAaW50ZWwuY29tPg0KPiA+ PiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDMvNF0gdmhvc3Q6IGF2b2lkIGRlYWRsb2NrIG9uIGFz eW5jIHJlZ2lzdGVyDQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IE9uIDQvMTQvMjEgMzo0MCBBTSwg SHUsIEppYXl1IHdyb3RlOg0KPiA+Pj4gSGkgTWF4aW1lLA0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1l LmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+Pj4gU2VudDogVHVlc2RheSwgQXByaWwgMTMsIDIw MjEgNzozMyBQTQ0KPiA+Pj4+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IGRl dkBkcGRrLm9yZw0KPiA+Pj4+IENjOiBYaWEsIENoZW5ibyA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+ OyBXYW5nLCBZaW5hbg0KPiA+Pj4+IDx5aW5hbi53YW5nQGludGVsLmNvbT47IFBhaSBHLCBTdW5p bCA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4+IENoZW5nMQ0KPiA+Pj4+IDxj aGVuZzEuamlhbmdAaW50ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMy80 XSB2aG9zdDogYXZvaWQgZGVhZGxvY2sgb24gYXN5bmMgcmVnaXN0ZXINCj4gPj4+Pg0KPiA+Pj4+ DQo+ID4+Pj4NCj4gPj4+PiBPbiA0LzIvMjEgMzowNCBQTSwgSmlheXUgSHUgd3JvdGU6DQo+ID4+ Pj4+IFVzZXJzIGNhbiByZWdpc3RlciBhc3luYyBjb3B5IGRldmljZSBpbiB2cmluZ19zdGF0ZV9j aGFuZ2VkKCksDQo+ID4+Pj4+IHdoZW4gdmhvc3QgcXVldWUgaXMgZW5hYmxlZC4gSG93ZXZlciwg YSBkZWFkbG9jayBvY2N1cnMgaW5zaWRlDQo+ID4+Pj4+IHJ0ZV92aG9zdF9hc3luY19jaGFubmVs X3JlZ2lzdGVyKCksIGlmDQo+ID4+Pj4gVkhPU1RfVVNFUl9GX1BST1RPQ09MX0ZFQVRVUkVTDQo+ ID4+Pj4+IGlzIG5vdCBzdXBwb3J0ZWQsIGFzIHZob3N0X3VzZXJfbXNnX2hhbmRsZXIoKSB0YWtl cyB2cS0+YWNjZXNzX2xvY2sNCj4gPj4+Pj4gYmVmb3JlIGNhbGxpbmcgdmhvc3RfdXNlcl9zZXRf dnJpbmdfa2ljaygpLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGlzIHBhdGNoIGF2b2lkcyBhc3luYyBy ZWdpc3RlciBkZWFkbG9jayBieSByZW1vdmluZyBjYWxsaW5nDQo+ID4+Pj4+IHZyaW5nX3N0YXRl X2NoYW5nZWQoKSBpbiB2aG9zdF91c2VyX3NldF92cmluZ19raWNrKCkuIEl0J3Mgc2FmZQ0KPiA+ Pj4+PiBhcyB2aG9zdF91c2VyX21zZ19oYW5kbGVyKCkgd2lsbCBjYWxsIHZyaW5nX3N0YXRlX2No YW5nZWQoKSBhbnl3YXkuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IEppYXl1IEh1 IDxqaWF5dS5odUBpbnRlbC5jb20+DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4+PiAgbGliL2xpYnJ0ZV92 aG9zdC92aG9zdF91c2VyLmMgfCAzIC0tLQ0KPiA+Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDMgZGVs ZXRpb25zKC0pDQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Zob3N0 L3Zob3N0X3VzZXIuYw0KPiBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+Pj4+ IGluZGV4IDQ0YzA0NTIuLjhmMGViYTYgMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL2xpYi9saWJydGVf dmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4+Pj4+ICsrKyBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3Rf dXNlci5jDQo+ID4+Pj4+IEBAIC0xOTE4LDkgKzE5MTgsNiBAQCB2aG9zdF91c2VyX3NldF92cmlu Z19raWNrKHN0cnVjdCB2aXJ0aW9fbmV0DQo+ID4+Pj4gKipwZGV2LCBzdHJ1Y3QgVmhvc3RVc2Vy TXNnICptc2csDQo+ID4+Pj4+ICAJICovDQo+ID4+Pj4+ICAJaWYgKCEoZGV2LT5mZWF0dXJlcyAm ICgxVUxMIDw8DQo+ID4+Pj4gVkhPU1RfVVNFUl9GX1BST1RPQ09MX0ZFQVRVUkVTKSkpIHsNCj4g Pj4+Pj4gIAkJdnEtPmVuYWJsZWQgPSB0cnVlOw0KPiA+Pj4+PiAtCQlpZiAoZGV2LT5ub3RpZnlf b3BzLT52cmluZ19zdGF0ZV9jaGFuZ2VkKQ0KPiA+Pj4+PiAtCQkJZGV2LT5ub3RpZnlfb3BzLT52 cmluZ19zdGF0ZV9jaGFuZ2VkKA0KPiA+Pj4+PiAtCQkJCWRldi0+dmlkLCBmaWxlLmluZGV4LCAx KTsNCj4gPj4+Pj4gIAl9DQo+ID4+Pj4+DQo+ID4+Pj4+ICAJaWYgKHZxLT5yZWFkeSkgew0KPiA+ Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gQXMgcmVwbGllZCBlYXJsaWVyIG9uIHYxLCBJIGFncmVlIHRo ZSBjYWxsIHRvIHZyaW5nX3N0YXRlX2NoYW5nZWQgaGVyZQ0KPiA+Pj4+IGlzIG5vdCBuZWVkZWQu IEJ1dCBpdCBtaWdodCBub3QgYmUgZW5vdWdoLCB0aGVyZSBhcmUgb3RoZXIgY2FzZXMgd2hlcmUN Cj4gPj4+PiB5b3UgY291bGQgaGF2ZSBpc3N1ZXMuDQo+ID4+Pg0KPiA+Pj4gdmhvc3RfdXNlcl9u b3RpZnlfcXVldWVfc3RhdGUoKSBjYW4gYmUgY2FsbGVkIGluIHRocmVlIGNhc2VzOg0KPiA+Pj4g MS4gd2hlbiB2cSByZWFkeSBzdGF0dXMgY2hhbmdlcywgdmhvc3RfdXNlcl9tc2dfaGFuZGxlcigp IGNhbGxzIGl0IHRvDQo+ID4+IG5vdGlmeQ0KPiA+Pj4gYmFja2VuZC4gQnV0IHZob3N0X3VzZXJf bXNnX2hhbmRsZXIoKSBkb2Vzbid0IHRha2UgbG9jayBiZWZvcmUgY2FsbGluZw0KPiBpdC4NCj4g Pj4+IFNvIGluIHRoaXMgY2FzZSwgbm8gZGVhZGxvY2sgb2NjdXJzIGluIGFzeW5jIHJlZ2lzdGVy Lg0KPiA+Pj4NCj4gPj4+IDIuIGlmIHZxLT5yZWFkeSBpcyB0cnVlLCB2aG9zdF91c2VyX3NldF92 cmluZ19jYWxsKCkgY2FsbHMgaXQgdG8gbm90aWZ5DQo+IGJhY2tlbmQNCj4gPj4+IHZxIGlzIG5v dCBlbmFibGVkLiBBbHRob3VnaCB2aG9zdF91c2VyX3NldF92cmluZ19jYWxsKCkgaXMgcHJvdGVj dGVkIGJ5DQo+IGxvY2ssDQo+ID4+PiBhc3luYyByZWdpc3RlciBpcyBjYWxsZWQgb25seSBpZiB2 cSBpcyBlbmFibGVkLCBzbyBhc3luYyByZWdpc3RlciB3aWxsIG5vdCBiZQ0KPiA+PiBjYWxsZWQN Cj4gPj4+IGluIHRoaXMgY2FzZS4NCj4gPj4+DQo+ID4+PiAzLiBJZiB2cS0+cmVhZHkgaXMgdHJ1 ZSwgdmhvc3RfdXNlcl9zZXRfdnJpbmdfa2ljaygpIGNhbGxzIGl0IHRvIG5vdGlmeQ0KPiBiYWNr ZW5kDQo+ID4+PiB2cSBpcyBub3QgZW5hYmxlZC4gU2FtZSBhcyAjMiwgYXN5bmMgcmVnaXN0ZXIg aXMgY2FsbGVkIG9ubHkgd2hlbiB2cSBpcw0KPiA+PiBlbmFibGVkLg0KPiA+Pj4gRXZlbiBpZiB2 aG9zdF91c2VyX3NldF92cmluZ19raWNrKCkgaXMgcHJvdGVjdGVkIGJ5IGxvY2ssIHRoZXJlIGlz IG5vDQo+ID4+IGRlYWRsb2NrIGluDQo+ID4+PiBhc3luYyByZWdpc3RlciwgYXMgaXQgd2lsbCBu b3QgYmUgY2FsbGVkIGluIHRoaXMgY2FzZS4NCj4gPj4+DQo+ID4+PiBJbiBzdW1tYXJ5LCAgSSB0 aGluayB0aGVyZSBpcyBubyBkZWFkbG9jayBpc3N1ZSBpbiBhc3luYyByZWdpc3RlciBpZiB3ZQ0K PiA+Pj4gY2FuIHJlbW92ZSBjYWxsaW5nIHZyaW5nX3N0YXRlX2NoYW5nZSgpIGluIHZob3N0X3Vz ZXJfc2V0X3ZyaW5nX2tpY2soKS4NCj4gPj4NCj4gPj4NCj4gPj4gQnV0IHVucmVnaXN0ZXIgb25l IGNvdWxkIGJlIGNhbGxlZCBpbiB0aGVvcnkgbm8/IE90aGVyd2lzZSBpdCB3b3VsZCBsb29rDQo+ ID4+IHVuYmFsYW5jZWQuIEF0IGxlYXN0IG9uIGRpc2FibGVkIG5vdGlmaWNhdGlvbiwgdGhlIGFw cCBzaG91bGQgbWFrZSBzdXJlDQo+ID4+IHRoZSBETUEgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIHRo ZSB2cmluZyBhcmUgc3RvcHBlZCBiZWZvcmUgaXQgcmV0dXJucw0KPiA+PiBmcm9tIHRoZSBjYWxs YWJjay4gT3RoZXJ3aXNlIGl0IGNvdWxkIGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLg0KPiA+ DQo+ID4gUmlnaHQsIHVzZXJzIG5lZWQgdG8gY2FsbCB1bnJlZ2lzdGVyLCBidXQgd2UgY2Fubm90 IHJlbW92ZSBjYWxsaW5nDQo+ID4gdmhvc3RfdXNlcl9ub3RpZnlfcXVldWVfc3RhdGUoKSBpbiBj YXNlICMyIGFuZCAjMywgSU1ITy4gU28gdG8NCj4gPiBhdm9pZCBkZWFkbG9jaywgd2UgcmVjb21t ZW5kZWQgdXNlcnMgdG8gY2FsbCBhc3luYyB1bnJlZ2lzdGVyIGluDQo+ID4gZGVzdHJveV9kZXZp Y2UoKSwgaW5zdGVhZCBvZiBvbiB2cmluZyBkaXNhYmxlZCBub3RpZmljYXRpb24uIERvZXMgaXQN Cj4gPiBtYWtlIHNlbnNlIHRvIHlvdT8NCj4gDQo+IENhbGxpbmcgYXN5bmMgdW5yZWdpc3RlciBp biBkZXN0cm95IGRldmljZSBpcyBmaW5lIGJ5IG1lLiBCdXQgSSdtIG1vcmUNCj4gY29uY2VybmVk IGFib3V0IERNQSB0cmFuc2F0aW9ucyBub3QgYmVpbmcgc3RvcHBlZCB3aGVuIHRoZSByaW5nIGJl Y29tZXMNCj4gZGlzYWJsZWQuDQpJZiByaW5nIGJlY29tZXMgZGlzYWJsZWQsIG5vIG1vcmUgbmV3 IHBrdHMgZ28gaW50byBhc3luYyBkYXRhIHBhdGgsIGFzDQp2aXJ0aW9fZGV2X3J4X2FzeW5jX3N1 Ym1pdCgpIHJldHVybnMgaWYgdnEtPmVuYWJsZWQgaXMgZmFsc2UuDQoNCj4gDQo+IEkgY2Fubm90 IHNheSBpZiB5b3UgYXJlIGRvaW5nIGl0IHJpZ2h0LCBiZWNhdXNlIHRoZSB2aG9zdCBleGFtcGxl IGRvZXMNCj4gbm90IGltcGxlbWVudCB0aGUgdnJpbmdfc3RhdGVfY2hhbmdlZCBjYWxsYmFjay4N Cj4gSXQgaXMgbm90IGEgcHJvYmxlbSB3aXRoIHRoZSBzeW5jIGRhdGFwYXRoIGFzIHdlIGhhdmUg dGhlIGxvY2sNCj4gcHJvdGVjdGlvbiArIGVuYWJsZWQgdmFyaWFibGUgdGhhdCBwcmV2ZW50cyB0 byBwcm9jZXNzIHRoZSByaW5ncyB3aGVuIGl0DQo+IGdldHMgc3RvcHBlZC4NCj4gQnV0IGZvciB0 aGUgYXN5bmMgcGF0aCwgaWYgeW91IGhhdmUgcHJvZ3JhbW1lZCBETUEgdHJhbnNmZXJzLCB5b3Ug bmVlZA0KPiB0byByZWx5IG9uIHRoZSB2cmluZ19zdGF0ZV9jaGFuZ2UgdG8gYmxvY2sgdGhlIGNv bnRyb2wgcGF0aCB3aGlsZSB0aGUNCj4gdHJhbnNmZXJzIGFyZSBjYW5jZWxsZWQgb3IgZG9uZS4N Cg0KSSBhbSBub3Qgc3VyZSBpZiBJIHVuZGVyc3RhbmQgeW91ciBjb25jZXJuIGNvcnJlY3RseSwg YnV0IGZvciBhc3luYyBkYXRhIHBhdGgsDQplbmFibGUgdmFyaWFibGUgY2FuIHByZXZlbnQgaXQg ZnJvbSBlbnF1ZXVlIG5ldyBwa3RzIHdoZW4gcmluZyBpcyBkaXNhYmxlZCwgYXMNCnZpcnRpb19k ZXZfcnhfYXN5bmNfc3VibWl0KCkgY2hlY2sgZW5hYmxlIHZhcmlhYmxlIGJlZm9yZSBwcm9jZXNz aW5nIHJpbmc7DQppbiBhZGRpdGlvbiwgbG9jayBwcm90ZWN0aW9uIGNhbiBzdG9wIGFzeW5jIGRh dGEgcGF0aCBhcyB2aXJ0aW9fZGV2X3J4X2FzeW5jX3N1Ym1pdCgpDQphY3F1aXJlcyBsb2NrIHRv by4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIHRoYXQgZnJvbnQtZW5kIHVwZGF0ZXMga2lja2Zk LA0Kc2V0X3ZyaW5nX2tpY2soKSB3aWxsIG5vdGlmeSBiYWNrZW5kIHRoYXQgdnJpbmcgaXMgc3Rv cHBlZCBieSBjYWxsaW5nDQp2aG9zdF91c2VyX25vdGlmeV9xdWV1ZV9zdGF0ZSgpLiBJbiB0aGlz IGNhc2UsIHN5bmMgZGF0YSBwYXRoIHdpbGwgc3RvcCBhcyBhIHJlc3VsdCBvZg0KbG9jayBwcm90 ZWN0aW9uLCBhbmQgSSB0aGluayBpdCdzIHRoZSBzYW1lIGZvciBhc3luYyBkYXRhIHBhdGgsIGFz IGl0IGFjcXVpcmVzIGxvY2sgYmVmb3JlDQpwcm9jZXNzaW5nIHJpbmcuDQoNClRoYW5rcywNCkpp YXl1DQoNCj4gDQo+ID4+DQo+ID4+Pj4NCj4gPj4+PiBQbGVhc2UgYWRkIHN0YWJsZSBhbmQgRml4 ZXMgdGFnLg0KPiA+Pj4NCj4gPj4+IERvIHlvdSBzdWdnZXN0IHRvIG1ha2UgdGhlIHBhdGNoIGFz IGEgZml4IGZvciA4NjM5ZDU0NTYzYQ0KPiA+Pj4gKCJ2aG9zdDogaW50cm9kdWNlIGFzeW5jIGVu cXVldWUgcmVnaXN0cmF0aW9uIEFQSSIpPyBCdXQgdGhlDQo+ID4+PiB0aGluZyBpcyB0aGF0IGNv ZGUgcmVtb3ZlZCBpbiB0aGlzIHBhdGNoIGlzIG5vdCBpbnRyb2R1Y2VkDQo+ID4+PiBieSB0aGlz IGNvbW1pdC4NCj4gPj4NCj4gPj4gVGhlIGNvbW1pdCB5b3UgbmVlZCB0byBwb2ludCB0byBpcyB0 aGUgb25lIGludHJvZHVjaW5nIHRoZQ0KPiA+PiAudnJpbmdfc3RhdGVfY2hhbmdlZCgpIGNhbGwu DQo+ID4NCj4gPiBTbyB0aGlzIHBhdGNoIGlzIHN0aWxsIGEgZml4IGZvciBkZWFkbG9jayBvbiBh c3luYyByZWdpc3Rlcj8gT3IgaXQgaXMNCj4gPiBhIGZpeCBmb3IgdW5uZWNlc3NhcnkgLnZyaW5n X3N0YXRlX2NoYW5nZWQoKSBjYWxsPw0KPiANCj4gWW91IG1hZGUgdGhlIHBvaW50IHRoYXQgdGhl IHZyaW5nX3N0YXRlX2NoYW5nZWQoKSBjYWxsIHdhcyBub3QgbmVjZXNzYXJ5DQo+IGluIGFueSBj YXNlLiBTbyBpdCBjYW4gZml4IHRoZSBjb21taXQgaW50cm9kdWNpbmcgaXQuDQo+IA0KPiA+IFRo YW5rcywNCj4gPiBKaWF5dQ0KPiA+DQo+ID4+DQo+ID4+PiBUaGFua3MsDQo+ID4+PiBKaWF5dQ0K PiA+Pj4+DQo+ID4+Pj4gVGhhbmtzLA0KPiA+Pj4+IE1heGltZQ0KPiA+Pj4NCj4gPg0KDQo=