From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7138CC433FE for ; Fri, 24 Sep 2021 07:44:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5969E60E9B for ; Fri, 24 Sep 2021 07:44:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244448AbhIXHqN (ORCPT ); Fri, 24 Sep 2021 03:46:13 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:9919 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235134AbhIXHqM (ORCPT ); Fri, 24 Sep 2021 03:46:12 -0400 Received: from dggemv711-chm.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4HG3pW0xk5z8ymX; Fri, 24 Sep 2021 15:40:03 +0800 (CST) Received: from kwepemm000008.china.huawei.com (7.193.23.125) by dggemv711-chm.china.huawei.com (10.1.198.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Fri, 24 Sep 2021 15:44:37 +0800 Received: from lhreml710-chm.china.huawei.com (10.201.108.61) by kwepemm000008.china.huawei.com (7.193.23.125) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Fri, 24 Sep 2021 15:44:36 +0800 Received: from lhreml710-chm.china.huawei.com ([169.254.81.184]) by lhreml710-chm.china.huawei.com ([169.254.81.184]) with mapi id 15.01.2308.008; Fri, 24 Sep 2021 08:44:34 +0100 From: Shameerali Kolothum Thodi To: Max Gurtovoy , Leon Romanovsky CC: Doug Ledford , Jason Gunthorpe , Yishai Hadas , Alex Williamson , Bjorn Helgaas , "David S. Miller" , Jakub Kicinski , "Kirti Wankhede" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-pci@vger.kernel.org" , "linux-rdma@vger.kernel.org" , "netdev@vger.kernel.org" , Saeed Mahameed , liulongfang Subject: RE: [PATCH mlx5-next 2/7] vfio: Add an API to check migration state transition validity Thread-Topic: [PATCH mlx5-next 2/7] vfio: Add an API to check migration state transition validity Thread-Index: AQHXr54pt96rmXk0YUaXSN2Kf89+2auxakgA///+2wCAACw6gIABM1JQ Date: Fri, 24 Sep 2021 07:44:34 +0000 Message-ID: <164439bb579d41639edf9a01a538a5ef@huawei.com> References: <42729adc4df649f7b3ce5dc95e66e2dc@huawei.com> <60989aa8-4231-0cdf-47bb-1e2026bd1f17@nvidia.com> In-Reply-To: <60989aa8-4231-0cdf-47bb-1e2026bd1f17@nvidia.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.47.91.242] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4IEd1cnRvdm95IFtt YWlsdG86bWd1cnRvdm95QG52aWRpYS5jb21dDQo+IFNlbnQ6IDIzIFNlcHRlbWJlciAyMDIxIDE0 OjU2DQo+IFRvOiBMZW9uIFJvbWFub3Zza3kgPGxlb25Aa2VybmVsLm9yZz47IFNoYW1lZXJhbGkg S29sb3RodW0gVGhvZGkNCj4gPHNoYW1lZXJhbGkua29sb3RodW0udGhvZGlAaHVhd2VpLmNvbT4N Cj4gQ2M6IERvdWcgTGVkZm9yZCA8ZGxlZGZvcmRAcmVkaGF0LmNvbT47IEphc29uIEd1bnRob3Jw ZQ0KPiA8amdnQG52aWRpYS5jb20+OyBZaXNoYWkgSGFkYXMgPHlpc2hhaWhAbnZpZGlhLmNvbT47 IEFsZXggV2lsbGlhbXNvbg0KPiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+OyBCam9ybiBI ZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPjsgRGF2aWQNCj4gUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PjsgSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz47IEtpcnRpDQo+ IFdhbmtoZWRlIDxrd2Fua2hlZGVAbnZpZGlhLmNvbT47IGt2bUB2Z2VyLmtlcm5lbC5vcmc7DQo+ IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7 DQo+IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBT YWVlZCBNYWhhbWVlZA0KPiA8c2FlZWRtQG52aWRpYS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggbWx4NS1uZXh0IDIvN10gdmZpbzogQWRkIGFuIEFQSSB0byBjaGVjayBtaWdyYXRpb24gc3Rh dGUNCj4gdHJhbnNpdGlvbiB2YWxpZGl0eQ0KPiANCj4gDQo+IE9uIDkvMjMvMjAyMSAyOjE3IFBN LCBMZW9uIFJvbWFub3Zza3kgd3JvdGU6DQo+ID4gT24gVGh1LCBTZXAgMjMsIDIwMjEgYXQgMTA6 MzM6MTBBTSArMDAwMCwgU2hhbWVlcmFsaSBLb2xvdGh1bSBUaG9kaQ0KPiB3cm90ZToNCj4gPj4N Cj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+PiBGcm9tOiBMZW9uIFJvbWFu b3Zza3kgW21haWx0bzpsZW9uQGtlcm5lbC5vcmddDQo+ID4+PiBTZW50OiAyMiBTZXB0ZW1iZXIg MjAyMSAxMTozOQ0KPiA+Pj4gVG86IERvdWcgTGVkZm9yZCA8ZGxlZGZvcmRAcmVkaGF0LmNvbT47 IEphc29uIEd1bnRob3JwZQ0KPiA8amdnQG52aWRpYS5jb20+DQo+ID4+PiBDYzogWWlzaGFpIEhh ZGFzIDx5aXNoYWloQG52aWRpYS5jb20+OyBBbGV4IFdpbGxpYW1zb24NCj4gPj4+IDxhbGV4Lndp bGxpYW1zb25AcmVkaGF0LmNvbT47IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+ Ow0KPiBEYXZpZA0KPiA+Pj4gUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PjsgSmFrdWIg S2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz47IEtpcnRpDQo+ID4+PiBXYW5raGVkZSA8a3dhbmto ZWRlQG52aWRpYS5jb20+OyBrdm1Admdlci5rZXJuZWwub3JnOw0KPiA+Pj4gbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZzsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsNCj4gPj4+IGxpbnV4 LXJkbWFAdmdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBTYWVlZCBNYWhh bWVlZA0KPiA+Pj4gPHNhZWVkbUBudmlkaWEuY29tPg0KPiA+Pj4gU3ViamVjdDogW1BBVENIIG1s eDUtbmV4dCAyLzddIHZmaW86IEFkZCBhbiBBUEkgdG8gY2hlY2sgbWlncmF0aW9uIHN0YXRlDQo+ ID4+PiB0cmFuc2l0aW9uIHZhbGlkaXR5DQo+ID4+Pg0KPiA+Pj4gRnJvbTogWWlzaGFpIEhhZGFz IDx5aXNoYWloQG52aWRpYS5jb20+DQo+ID4+Pg0KPiA+Pj4gQWRkIGFuIEFQSSBpbiB0aGUgY29y ZSBsYXllciB0byBjaGVjayBtaWdyYXRpb24gc3RhdGUgdHJhbnNpdGlvbiB2YWxpZGl0eQ0KPiA+ Pj4gYXMgcGFydCBvZiBhIG1pZ3JhdGlvbiBmbG93Lg0KPiA+Pj4NCj4gPj4+IFRoZSB2YWxpZCB0 cmFuc2l0aW9ucyBmb2xsb3cgdGhlIGV4cGVjdGVkIHVzYWdlIGFzIGRlc2NyaWJlZCBpbg0KPiA+ Pj4gdWFwaS92ZmlvLmggYW5kIHRyaWdnZXJlZCBieSBRRU1VLg0KPiA+Pj4NCj4gPj4+IFRoaXMg ZW5zdXJlcyB0aGF0IGFsbCBtaWdyYXRpb24gaW1wbGVtZW50YXRpb25zIGZvbGxvdyBhIGNvbnNp c3RlbnQNCj4gPj4+IG1pZ3JhdGlvbiBzdGF0ZSBtYWNoaW5lLg0KPiA+Pj4NCj4gPj4+IFNpZ25l ZC1vZmYtYnk6IFlpc2hhaSBIYWRhcyA8eWlzaGFpaEBudmlkaWEuY29tPg0KPiA+Pj4gUmV2aWV3 ZWQtYnk6IEtpcnRpIFdhbmtoZWRlIDxrd2Fua2hlZGVAbnZpZGlhLmNvbT4NCj4gPj4+IFNpZ25l ZC1vZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5jb20+DQo+ID4+PiBTaWduZWQt b2ZmLWJ5OiBMZW9uIFJvbWFub3Zza3kgPGxlb25yb0BudmlkaWEuY29tPg0KPiA+Pj4gLS0tDQo+ ID4+PiAgIGRyaXZlcnMvdmZpby92ZmlvLmMgIHwgNDENCj4gKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICAgaW5jbHVkZS9saW51eC92ZmlvLmggfCAgMSAr DQo+ID4+PiAgIDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4NCj4gPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpby5jIGIvZHJpdmVycy92ZmlvL3ZmaW8uYw0K PiA+Pj4gaW5kZXggM2MwMzRmZTE0Y2NiLi5jM2NhMzNlNTEzYzggMTAwNjQ0DQo+ID4+PiAtLS0g YS9kcml2ZXJzL3ZmaW8vdmZpby5jDQo+ID4+PiArKysgYi9kcml2ZXJzL3ZmaW8vdmZpby5jDQo+ ID4+PiBAQCAtMTY2NCw2ICsxNjY0LDQ3IEBAIHN0YXRpYyBpbnQgdmZpb19kZXZpY2VfZm9wc19y ZWxlYXNlKHN0cnVjdA0KPiBpbm9kZQ0KPiA+Pj4gKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZXAp DQo+ID4+PiAgIAlyZXR1cm4gMDsNCj4gPj4+ICAgfQ0KPiA+Pj4NCj4gPj4+ICsvKioNCj4gPj4+ ICsgKiB2ZmlvX2NoYW5nZV9taWdyYXRpb25fc3RhdGVfYWxsb3dlZCAtIENoZWNrcyB3aGV0aGVy IGEgbWlncmF0aW9uDQo+IHN0YXRlDQo+ID4+PiArICogICB0cmFuc2l0aW9uIGlzIHZhbGlkLg0K PiA+Pj4gKyAqIEBuZXdfc3RhdGU6IFRoZSBuZXcgc3RhdGUgdG8gbW92ZSB0by4NCj4gPj4+ICsg KiBAb2xkX3N0YXRlOiBUaGUgb2xkIHN0YXRlLg0KPiA+Pj4gKyAqIFJldHVybjogdHJ1ZSBpZiB0 aGUgdHJhbnNpdGlvbiBpcyB2YWxpZC4NCj4gPj4+ICsgKi8NCj4gPj4+ICtib29sIHZmaW9fY2hh bmdlX21pZ3JhdGlvbl9zdGF0ZV9hbGxvd2VkKHUzMiBuZXdfc3RhdGUsIHUzMg0KPiBvbGRfc3Rh dGUpDQo+ID4+PiArew0KPiA+Pj4gKwllbnVtIHsgTUFYX1NUQVRFID0gVkZJT19ERVZJQ0VfU1RB VEVfUkVTVU1JTkcgfTsNCj4gPj4+ICsJc3RhdGljIGNvbnN0IHU4IHZmaW9fZnJvbV9zdGF0ZV90 YWJsZVtNQVhfU1RBVEUgKyAxXVtNQVhfU1RBVEUgKw0KPiAxXSA9IHsNCj4gPj4+ICsJCVtWRklP X0RFVklDRV9TVEFURV9TVE9QXSA9IHsNCj4gPj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfUlVO TklOR10gPSAxLA0KPiA+Pj4gKwkJCVtWRklPX0RFVklDRV9TVEFURV9SRVNVTUlOR10gPSAxLA0K PiA+Pj4gKwkJfSwNCj4gPj4+ICsJCVtWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXSA9IHsNCj4g Pj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfU1RPUF0gPSAxLA0KPiA+Pj4gKwkJCVtWRklPX0RF VklDRV9TVEFURV9TQVZJTkddID0gMSwNCj4gPj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfU0FW SU5HIHwNCj4gVkZJT19ERVZJQ0VfU1RBVEVfUlVOTklOR10NCj4gPj4+ID0gMSwNCj4gPj4gRG8g d2UgbmVlZCB0byBhbGxvdyBfUkVTVU1JTkcgc3RhdGUgaGVyZSBvciBub3Q/IEFzIHBlciB0aGUg IlN0YXRlDQo+IHRyYW5zaXRpb25zIg0KPiA+PiBzZWN0aW9uIGZyb20gdWFwaS9saW51eC92Zmlv LmgsDQo+ID4gSXQgbG9va3MgbGlrZSB3ZSBtaXNzZWQgdGhpcyBzdGF0ZSB0cmFuc2l0aW9uLg0K PiA+DQo+ID4gVGhhbmtzDQo+IA0KPiBJJ20gbm90IHN1cmUgdGhpcyBzdGF0ZSB0cmFuc2l0aW9u IGlzIHZhbGlkLg0KPiANCj4gS2lydGksIFdoZW4gd2Ugd291bGQgbGlrZSB0byBtb3ZlIGZyb20g UlVOTklORyB0byBSRVNVTUlORyA/DQoNCkkgZ3Vlc3MgaXQgZGVwZW5kcyBvbiB3aGF0IHlvdSBy ZXBvcnQgYXMgeW91ciBkZXYgZGVmYXVsdCBzdGF0ZS4gDQoNCkZvciBIaVNpbGljb24gQUNDIG1p Z3JhdGlvbiBkcml2ZXIsIHdlIHNldCB0aGUgZGVmYXVsdCB0byBfUlVOTklORy4NCg0KQW5kIHdo ZW4gdGhlIG1pZ3JhdGlvbiBzdGFydHMsIHRoZSBkZXN0aW5hdGlvbiBzaWRlIFFlbXUsIHNldCB0 aGUgDQpkZXZpY2Ugc3RhdGUgdG8gX1JFU1VNSU5HKHZmaW9fbG9hZF9zdGF0ZSgpKS4NCg0KRnJv bSB0aGUgZG9jdW1lbnRhdGlvbiwgaXQgbG9va3MgbGlrZSB0aGUgYXNzdW1wdGlvbiBvbiBkZWZh dWx0IHN0YXRlIG9mDQp0aGUgVkZJTyBkZXYgaXMgX1JVTk5JTkcuDQoNCiINCiogIDAwMWIgPT4g RGV2aWNlIHJ1bm5pbmcsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHN0YXRlDQoiDQoNCj4gDQo+IFNh bWVlcmFsaSwgY2FuIHlvdSBwbGVhc2UgcmUtdGVzdCBhbmQgdXBkYXRlIGlmIHlvdSBzZWUgdGhp cyB0cmFuc2l0aW9uID8NCg0KWWVzLiBBbmQgaWYgSSBjaGFuZ2UgdGhlIGRlZmF1bHQgc3RhdGUg dG8gX1NUT1AsIHRoZW4gdGhlIHRyYW5zaXRpb24NCmlzIGZyb20gX1NUT1AgLS0+IF9SRVNVTUlO Ry4NCg0KQnV0IHRoZSBkb2N1bWVudGF0aW9uIG9uIFN0YXRlIHRyYW5zaXRpb25zIGRvZXNuJ3Qg aGF2ZSBfU1RPUCAtLT4gX1JFU1VNSU5HDQp0cmFuc2l0aW9uIGFzIHZhbGlkLg0KDQpUaGFua3Ms DQpTaGFtZWVyIA0KDQo+IA0KPiANCj4gPg0KPiA+PiAiICogNC4gVG8gc3RhcnQgdGhlIHJlc3Vt aW5nIHBoYXNlLCB0aGUgZGV2aWNlIHN0YXRlIHNob3VsZCBiZSB0cmFuc2l0aW9uZWQNCj4gZnJv bQ0KPiA+PiAgICogICAgdGhlIF9SVU5OSU5HIHRvIHRoZSBfUkVTVU1JTkcgc3RhdGUuIg0KPiA+ Pg0KPiA+PiBJSVJDLCBJIGhhdmUgc2VlbiB0aGF0IHRyYW5zaXRpb24gaGFwcGVuaW5nIG9uIHRo ZSBkZXN0aW5hdGlvbiBkZXYgd2hpbGUNCj4gdGVzdGluZyB0aGUNCj4gPj4gSGlTaWxpY29uIEFD QyBkZXYgbWlncmF0aW9uLg0KPiA+Pg0KPiA+PiBUaGFua3MsDQo+ID4+IFNoYW1lZXINCj4gPj4N Cj4gPj4+ICsJCX0sDQo+ID4+PiArCQlbVkZJT19ERVZJQ0VfU1RBVEVfU0FWSU5HXSA9IHsNCj4g Pj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfU1RPUF0gPSAxLA0KPiA+Pj4gKwkJCVtWRklPX0RF VklDRV9TVEFURV9SVU5OSU5HXSA9IDEsDQo+ID4+PiArCQl9LA0KPiA+Pj4gKwkJW1ZGSU9fREVW SUNFX1NUQVRFX1NBVklORyB8IFZGSU9fREVWSUNFX1NUQVRFX1JVTk5JTkddDQo+ID0gew0KPiA+ Pj4gKwkJCVtWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXSA9IDEsDQo+ID4+PiArCQkJW1ZGSU9f REVWSUNFX1NUQVRFX1NBVklOR10gPSAxLA0KPiA+Pj4gKwkJfSwNCj4gPj4+ICsJCVtWRklPX0RF VklDRV9TVEFURV9SRVNVTUlOR10gPSB7DQo+ID4+PiArCQkJW1ZGSU9fREVWSUNFX1NUQVRFX1JV Tk5JTkddID0gMSwNCj4gPj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfU1RPUF0gPSAxLA0KPiA+ Pj4gKwkJfSwNCj4gPj4+ICsJfTsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKG5ld19zdGF0ZSA+IE1B WF9TVEFURSB8fCBvbGRfc3RhdGUgPiBNQVhfU1RBVEUpDQo+ID4+PiArCQlyZXR1cm4gZmFsc2U7 DQo+ID4+PiArDQo+ID4+PiArCXJldHVybiB2ZmlvX2Zyb21fc3RhdGVfdGFibGVbb2xkX3N0YXRl XVtuZXdfc3RhdGVdOw0KPiA+Pj4gK30NCj4gPj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX2No YW5nZV9taWdyYXRpb25fc3RhdGVfYWxsb3dlZCk7DQo+ID4+PiArDQo+ID4+PiAgIHN0YXRpYyBs b25nIHZmaW9fZGV2aWNlX2ZvcHNfdW5sX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlcCwNCj4gPj4+ ICAgCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCj4gPj4+ ICAgew0KPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdmZpby5oIGIvaW5jbHVkZS9s aW51eC92ZmlvLmgNCj4gPj4+IGluZGV4IGI1M2E5NTU3ODg0YS4uZTY1MTM3YTcwOGYxIDEwMDY0 NA0KPiA+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC92ZmlvLmgNCj4gPj4+ICsrKyBiL2luY2x1ZGUv bGludXgvdmZpby5oDQo+ID4+PiBAQCAtODMsNiArODMsNyBAQCBleHRlcm4gc3RydWN0IHZmaW9f ZGV2aWNlDQo+ID4+PiAqdmZpb19kZXZpY2VfZ2V0X2Zyb21fZGV2KHN0cnVjdCBkZXZpY2UgKmRl dik7DQo+ID4+PiAgIGV4dGVybiB2b2lkIHZmaW9fZGV2aWNlX3B1dChzdHJ1Y3QgdmZpb19kZXZp Y2UgKmRldmljZSk7DQo+ID4+Pg0KPiA+Pj4gICBpbnQgdmZpb19hc3NpZ25fZGV2aWNlX3NldChz dHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdm9pZCAqc2V0X2lkKTsNCj4gPj4+ICtib29sIHZm aW9fY2hhbmdlX21pZ3JhdGlvbl9zdGF0ZV9hbGxvd2VkKHUzMiBuZXdfc3RhdGUsIHUzMg0KPiBv bGRfc3RhdGUpOw0KPiA+Pj4NCj4gPj4+ICAgLyogZXZlbnRzIGZvciB0aGUgYmFja2VuZCBkcml2 ZXIgbm90aWZ5IGNhbGxiYWNrICovDQo+ID4+PiAgIGVudW0gdmZpb19pb21tdV9ub3RpZnlfdHlw ZSB7DQo+ID4+PiAtLQ0KPiA+Pj4gMi4zMS4xDQo=