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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4B43C4332F for ; Sun, 26 Sep 2021 16:17:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9CDD260F92 for ; Sun, 26 Sep 2021 16:17:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232077AbhIZQSw (ORCPT ); Sun, 26 Sep 2021 12:18:52 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:20370 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231178AbhIZQSv (ORCPT ); Sun, 26 Sep 2021 12:18:51 -0400 Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4HHW5M23ZhzRPLx; Mon, 27 Sep 2021 00:12:55 +0800 (CST) Received: from kwepemm600007.china.huawei.com (7.193.23.208) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Mon, 27 Sep 2021 00:17:10 +0800 Received: from lhreml710-chm.china.huawei.com (10.201.108.61) by kwepemm600007.china.huawei.com (7.193.23.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.8; Mon, 27 Sep 2021 00:17:09 +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; Sun, 26 Sep 2021 17:17:07 +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///+2wCAACw6gIABM1JQgAMzv4CAAIdJsA== Date: Sun, 26 Sep 2021 16:17:07 +0000 Message-ID: <85743eabdae04d08bb5eba7b6857496e@huawei.com> References: <42729adc4df649f7b3ce5dc95e66e2dc@huawei.com> <60989aa8-4231-0cdf-47bb-1e2026bd1f17@nvidia.com> <164439bb579d41639edf9a01a538a5ef@huawei.com> <078fc846-1f72-adc0-339c-1b638c6c6e33@nvidia.com> In-Reply-To: <078fc846-1f72-adc0-339c-1b638c6c6e33@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.87.241] 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-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4IEd1cnRvdm95IFtt YWlsdG86bWd1cnRvdm95QG52aWRpYS5jb21dDQo+IFNlbnQ6IDI2IFNlcHRlbWJlciAyMDIxIDEw OjEwDQo+IFRvOiBTaGFtZWVyYWxpIEtvbG90aHVtIFRob2RpIDxzaGFtZWVyYWxpLmtvbG90aHVt LnRob2RpQGh1YXdlaS5jb20+Ow0KPiBMZW9uIFJvbWFub3Zza3kgPGxlb25Aa2VybmVsLm9yZz4N Cj4gQ2M6IERvdWcgTGVkZm9yZCA8ZGxlZGZvcmRAcmVkaGF0LmNvbT47IEphc29uIEd1bnRob3Jw ZQ0KPiA8amdnQG52aWRpYS5jb20+OyBZaXNoYWkgSGFkYXMgPHlpc2hhaWhAbnZpZGlhLmNvbT47 IEFsZXggV2lsbGlhbXNvbg0KPiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+OyBCam9ybiBI ZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPjsgRGF2aWQNCj4gUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PjsgSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz47IEtpcnRpDQo+ IFdhbmtoZWRlIDxrd2Fua2hlZGVAbnZpZGlhLmNvbT47IGt2bUB2Z2VyLmtlcm5lbC5vcmc7DQo+ IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7 DQo+IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBT YWVlZCBNYWhhbWVlZA0KPiA8c2FlZWRtQG52aWRpYS5jb20+OyBsaXVsb25nZmFuZyA8bGl1bG9u Z2ZhbmdAaHVhd2VpLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCBtbHg1LW5leHQgMi83XSB2 ZmlvOiBBZGQgYW4gQVBJIHRvIGNoZWNrIG1pZ3JhdGlvbiBzdGF0ZQ0KPiB0cmFuc2l0aW9uIHZh bGlkaXR5DQo+IA0KPiANCj4gT24gOS8yNC8yMDIxIDEwOjQ0IEFNLCBTaGFtZWVyYWxpIEtvbG90 aHVtIFRob2RpIHdyb3RlOg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+IEZyb206IE1heCBHdXJ0b3ZveSBbbWFpbHRvOm1ndXJ0b3ZveUBudmlkaWEuY29tXQ0KPiA+ PiBTZW50OiAyMyBTZXB0ZW1iZXIgMjAyMSAxNDo1Ng0KPiA+PiBUbzogTGVvbiBSb21hbm92c2t5 IDxsZW9uQGtlcm5lbC5vcmc+OyBTaGFtZWVyYWxpIEtvbG90aHVtIFRob2RpDQo+ID4+IDxzaGFt ZWVyYWxpLmtvbG90aHVtLnRob2RpQGh1YXdlaS5jb20+DQo+ID4+IENjOiBEb3VnIExlZGZvcmQg PGRsZWRmb3JkQHJlZGhhdC5jb20+OyBKYXNvbiBHdW50aG9ycGUNCj4gPj4gPGpnZ0BudmlkaWEu Y29tPjsgWWlzaGFpIEhhZGFzIDx5aXNoYWloQG52aWRpYS5jb20+OyBBbGV4IFdpbGxpYW1zb24N Cj4gPj4gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPjsgQmpvcm4gSGVsZ2FhcyA8YmhlbGdh YXNAZ29vZ2xlLmNvbT47DQo+ID4+IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD47IEpha3ViIEtpY2luc2tpDQo+ID4+IDxrdWJhQGtlcm5lbC5vcmc+OyBLaXJ0aSBXYW5raGVk ZSA8a3dhbmtoZWRlQG52aWRpYS5jb20+Ow0KPiA+PiBrdm1Admdlci5rZXJuZWwub3JnOyBsaW51 eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOw0KPiA+PiBsaW51eC1wY2lAdmdlci5rZXJuZWwub3Jn OyBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZzsNCj4gPj4gbmV0ZGV2QHZnZXIua2VybmVsLm9y ZzsgU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBudmlkaWEuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTog W1BBVENIIG1seDUtbmV4dCAyLzddIHZmaW86IEFkZCBhbiBBUEkgdG8gY2hlY2sNCj4gPj4gbWln cmF0aW9uIHN0YXRlIHRyYW5zaXRpb24gdmFsaWRpdHkNCj4gPj4NCj4gPj4NCj4gPj4gT24gOS8y My8yMDIxIDI6MTcgUE0sIExlb24gUm9tYW5vdnNreSB3cm90ZToNCj4gPj4+IE9uIFRodSwgU2Vw IDIzLCAyMDIxIGF0IDEwOjMzOjEwQU0gKzAwMDAsIFNoYW1lZXJhbGkgS29sb3RodW0gVGhvZGkN Cj4gPj4gd3JvdGU6DQo+ID4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+ IEZyb206IExlb24gUm9tYW5vdnNreSBbbWFpbHRvOmxlb25Aa2VybmVsLm9yZ10NCj4gPj4+Pj4g U2VudDogMjIgU2VwdGVtYmVyIDIwMjEgMTE6MzkNCj4gPj4+Pj4gVG86IERvdWcgTGVkZm9yZCA8 ZGxlZGZvcmRAcmVkaGF0LmNvbT47IEphc29uIEd1bnRob3JwZQ0KPiA+PiA8amdnQG52aWRpYS5j b20+DQo+ID4+Pj4+IENjOiBZaXNoYWkgSGFkYXMgPHlpc2hhaWhAbnZpZGlhLmNvbT47IEFsZXgg V2lsbGlhbXNvbg0KPiA+Pj4+PiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+OyBCam9ybiBI ZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPjsNCj4gPj4gRGF2aWQNCj4gPj4+Pj4gUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PjsgSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9y Zz47DQo+ID4+Pj4+IEtpcnRpIFdhbmtoZWRlIDxrd2Fua2hlZGVAbnZpZGlhLmNvbT47IGt2bUB2 Z2VyLmtlcm5lbC5vcmc7DQo+ID4+Pj4+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxp bnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7DQo+ID4+Pj4+IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwu b3JnOyBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBTYWVlZCBNYWhhbWVlZA0KPiA+Pj4+PiA8c2Fl ZWRtQG52aWRpYS5jb20+DQo+ID4+Pj4+IFN1YmplY3Q6IFtQQVRDSCBtbHg1LW5leHQgMi83XSB2 ZmlvOiBBZGQgYW4gQVBJIHRvIGNoZWNrIG1pZ3JhdGlvbg0KPiA+Pj4+PiBzdGF0ZSB0cmFuc2l0 aW9uIHZhbGlkaXR5DQo+ID4+Pj4+DQo+ID4+Pj4+IEZyb206IFlpc2hhaSBIYWRhcyA8eWlzaGFp aEBudmlkaWEuY29tPg0KPiA+Pj4+Pg0KPiA+Pj4+PiBBZGQgYW4gQVBJIGluIHRoZSBjb3JlIGxh eWVyIHRvIGNoZWNrIG1pZ3JhdGlvbiBzdGF0ZSB0cmFuc2l0aW9uDQo+ID4+Pj4+IHZhbGlkaXR5 IGFzIHBhcnQgb2YgYSBtaWdyYXRpb24gZmxvdy4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIHZhbGlk IHRyYW5zaXRpb25zIGZvbGxvdyB0aGUgZXhwZWN0ZWQgdXNhZ2UgYXMgZGVzY3JpYmVkIGluDQo+ ID4+Pj4+IHVhcGkvdmZpby5oIGFuZCB0cmlnZ2VyZWQgYnkgUUVNVS4NCj4gPj4+Pj4NCj4gPj4+ Pj4gVGhpcyBlbnN1cmVzIHRoYXQgYWxsIG1pZ3JhdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9sbG93 IGENCj4gPj4+Pj4gY29uc2lzdGVudCBtaWdyYXRpb24gc3RhdGUgbWFjaGluZS4NCj4gPj4+Pj4N Cj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogWWlzaGFpIEhhZGFzIDx5aXNoYWloQG52aWRpYS5jb20+ DQo+ID4+Pj4+IFJldmlld2VkLWJ5OiBLaXJ0aSBXYW5raGVkZSA8a3dhbmtoZWRlQG52aWRpYS5j b20+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5j b20+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IExlb24gUm9tYW5vdnNreSA8bGVvbnJvQG52aWRp YS5jb20+DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4+PiAgICBkcml2ZXJzL3ZmaW8vdmZpby5jICB8IDQx DQo+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+ ICAgIGluY2x1ZGUvbGludXgvdmZpby5oIHwgIDEgKw0KPiA+Pj4+PiAgICAyIGZpbGVzIGNoYW5n ZWQsIDQyIGluc2VydGlvbnMoKykNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmZpby92ZmlvLmMgYi9kcml2ZXJzL3ZmaW8vdmZpby5jIGluZGV4DQo+ID4+Pj4+IDNjMDM0 ZmUxNGNjYi4uYzNjYTMzZTUxM2M4IDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9kcml2ZXJzL3ZmaW8v dmZpby5jDQo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvdmZpby92ZmlvLmMNCj4gPj4+Pj4gQEAgLTE2 NjQsNiArMTY2NCw0NyBAQCBzdGF0aWMgaW50IHZmaW9fZGV2aWNlX2ZvcHNfcmVsZWFzZShzdHJ1 Y3QNCj4gPj4gaW5vZGUNCj4gPj4+Pj4gKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZXApDQo+ID4+ Pj4+ICAgIAlyZXR1cm4gMDsNCj4gPj4+Pj4gICAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiArLyoqDQo+ ID4+Pj4+ICsgKiB2ZmlvX2NoYW5nZV9taWdyYXRpb25fc3RhdGVfYWxsb3dlZCAtIENoZWNrcyB3 aGV0aGVyIGENCj4gPj4+Pj4gK21pZ3JhdGlvbg0KPiA+PiBzdGF0ZQ0KPiA+Pj4+PiArICogICB0 cmFuc2l0aW9uIGlzIHZhbGlkLg0KPiA+Pj4+PiArICogQG5ld19zdGF0ZTogVGhlIG5ldyBzdGF0 ZSB0byBtb3ZlIHRvLg0KPiA+Pj4+PiArICogQG9sZF9zdGF0ZTogVGhlIG9sZCBzdGF0ZS4NCj4g Pj4+Pj4gKyAqIFJldHVybjogdHJ1ZSBpZiB0aGUgdHJhbnNpdGlvbiBpcyB2YWxpZC4NCj4gPj4+ Pj4gKyAqLw0KPiA+Pj4+PiArYm9vbCB2ZmlvX2NoYW5nZV9taWdyYXRpb25fc3RhdGVfYWxsb3dl ZCh1MzIgbmV3X3N0YXRlLCB1MzINCj4gPj4gb2xkX3N0YXRlKQ0KPiA+Pj4+PiArew0KPiA+Pj4+ PiArCWVudW0geyBNQVhfU1RBVEUgPSBWRklPX0RFVklDRV9TVEFURV9SRVNVTUlORyB9Ow0KPiA+ Pj4+PiArCXN0YXRpYyBjb25zdCB1OCB2ZmlvX2Zyb21fc3RhdGVfdGFibGVbTUFYX1NUQVRFICsg MV1bTUFYX1NUQVRFICsNCj4gPj4gMV0gPSB7DQo+ID4+Pj4+ICsJCVtWRklPX0RFVklDRV9TVEFU RV9TVE9QXSA9IHsNCj4gPj4+Pj4gKwkJCVtWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXSA9IDEs DQo+ID4+Pj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RBVEVfUkVTVU1JTkddID0gMSwNCj4gPj4+Pj4g KwkJfSwNCj4gPj4+Pj4gKwkJW1ZGSU9fREVWSUNFX1NUQVRFX1JVTk5JTkddID0gew0KPiA+Pj4+ PiArCQkJW1ZGSU9fREVWSUNFX1NUQVRFX1NUT1BdID0gMSwNCj4gPj4+Pj4gKwkJCVtWRklPX0RF VklDRV9TVEFURV9TQVZJTkddID0gMSwNCj4gPj4+Pj4gKwkJCVtWRklPX0RFVklDRV9TVEFURV9T QVZJTkcgfA0KPiA+PiBWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXQ0KPiA+Pj4+PiA9IDEsDQo+ ID4+Pj4gRG8gd2UgbmVlZCB0byBhbGxvdyBfUkVTVU1JTkcgc3RhdGUgaGVyZSBvciBub3Q/IEFz IHBlciB0aGUgIlN0YXRlDQo+ID4+IHRyYW5zaXRpb25zIg0KPiA+Pj4+IHNlY3Rpb24gZnJvbSB1 YXBpL2xpbnV4L3ZmaW8uaCwNCj4gPj4+IEl0IGxvb2tzIGxpa2Ugd2UgbWlzc2VkIHRoaXMgc3Rh dGUgdHJhbnNpdGlvbi4NCj4gPj4+DQo+ID4+PiBUaGFua3MNCj4gPj4gSSdtIG5vdCBzdXJlIHRo aXMgc3RhdGUgdHJhbnNpdGlvbiBpcyB2YWxpZC4NCj4gPj4NCj4gPj4gS2lydGksIFdoZW4gd2Ug d291bGQgbGlrZSB0byBtb3ZlIGZyb20gUlVOTklORyB0byBSRVNVTUlORyA/DQo+ID4gSSBndWVz cyBpdCBkZXBlbmRzIG9uIHdoYXQgeW91IHJlcG9ydCBhcyB5b3VyIGRldiBkZWZhdWx0IHN0YXRl Lg0KPiA+DQo+ID4gRm9yIEhpU2lsaWNvbiBBQ0MgbWlncmF0aW9uIGRyaXZlciwgd2Ugc2V0IHRo ZSBkZWZhdWx0IHRvIF9SVU5OSU5HLg0KPiANCj4gV2hlcmUgZG8geW91IHNldCBpdCBhbmQgcmVw b3J0IGl0ID8NCg0KQ3VycmVudGx5LCBpbiBfb3Blbl9kZXZpY2UoKSB3ZSBzZXQgdGhlIGRldmlj ZV9zdGF0ZSB0byBfUlVOTklORy4NCg0KSSB0aGluayBpbiB5b3VyIGNhc2UgdGhlIGRlZmF1bHQg b2Ygdm1pZy0+dmZpb19kZXZfc3RhdGUgPT0gMCAoX1NUT1ApLg0KDQo+IA0KPiA+DQo+ID4gQW5k IHdoZW4gdGhlIG1pZ3JhdGlvbiBzdGFydHMsIHRoZSBkZXN0aW5hdGlvbiBzaWRlIFFlbXUsIHNl dCB0aGUNCj4gPiBkZXZpY2Ugc3RhdGUgdG8gX1JFU1VNSU5HKHZmaW9fbG9hZF9zdGF0ZSgpKS4N Cj4gPg0KPiA+ICBGcm9tIHRoZSBkb2N1bWVudGF0aW9uLCBpdCBsb29rcyBsaWtlIHRoZSBhc3N1 bXB0aW9uIG9uIGRlZmF1bHQgc3RhdGUNCj4gPiBvZiB0aGUgVkZJTyBkZXYgaXMgX1JVTk5JTkcu DQo+ID4NCj4gPiAiDQo+ID4gKiAgMDAxYiA9PiBEZXZpY2UgcnVubmluZywgd2hpY2ggaXMgdGhl IGRlZmF1bHQgc3RhdGUgIg0KPiA+DQo+ID4+IFNhbWVlcmFsaSwgY2FuIHlvdSBwbGVhc2UgcmUt dGVzdCBhbmQgdXBkYXRlIGlmIHlvdSBzZWUgdGhpcyB0cmFuc2l0aW9uID8NCj4gPiBZZXMuIEFu ZCBpZiBJIGNoYW5nZSB0aGUgZGVmYXVsdCBzdGF0ZSB0byBfU1RPUCwgdGhlbiB0aGUgdHJhbnNp dGlvbg0KPiA+IGlzIGZyb20gX1NUT1AgLS0+IF9SRVNVTUlORy4NCj4gPg0KPiA+IEJ1dCB0aGUg ZG9jdW1lbnRhdGlvbiBvbiBTdGF0ZSB0cmFuc2l0aW9ucyBkb2Vzbid0IGhhdmUgX1NUT1AgLS0+ DQo+ID4gX1JFU1VNSU5HIHRyYW5zaXRpb24gYXMgdmFsaWQuDQo+ID4NCj4gPiBUaGFua3MsDQo+ ID4gU2hhbWVlcg0KPiA+DQo+ID4+DQo+ID4+Pj4gIiAqIDQuIFRvIHN0YXJ0IHRoZSByZXN1bWlu ZyBwaGFzZSwgdGhlIGRldmljZSBzdGF0ZSBzaG91bGQgYmUNCj4gPj4+PiB0cmFuc2l0aW9uZWQN Cj4gPj4gZnJvbQ0KPiA+Pj4+ICAgICogICAgdGhlIF9SVU5OSU5HIHRvIHRoZSBfUkVTVU1JTkcg c3RhdGUuIg0KPiA+Pj4+DQo+ID4+Pj4gSUlSQywgSSBoYXZlIHNlZW4gdGhhdCB0cmFuc2l0aW9u IGhhcHBlbmluZyBvbiB0aGUgZGVzdGluYXRpb24gZGV2DQo+ID4+Pj4gd2hpbGUNCj4gPj4gdGVz dGluZyB0aGUNCj4gPj4+PiBIaVNpbGljb24gQUNDIGRldiBtaWdyYXRpb24uDQo+ID4+Pj4NCj4g Pj4+PiBUaGFua3MsDQo+ID4+Pj4gU2hhbWVlcg0KPiA+Pj4+DQo+ID4+Pj4+ICsJCX0sDQo+ID4+ Pj4+ICsJCVtWRklPX0RFVklDRV9TVEFURV9TQVZJTkddID0gew0KPiA+Pj4+PiArCQkJW1ZGSU9f REVWSUNFX1NUQVRFX1NUT1BdID0gMSwNCj4gPj4+Pj4gKwkJCVtWRklPX0RFVklDRV9TVEFURV9S VU5OSU5HXSA9IDEsDQo+ID4+Pj4+ICsJCX0sDQo+ID4+Pj4+ICsJCVtWRklPX0RFVklDRV9TVEFU RV9TQVZJTkcgfCBWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXQ0KPiA+PiA9IHsNCj4gPj4+Pj4g KwkJCVtWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HXSA9IDEsDQo+ID4+Pj4+ICsJCQlbVkZJT19E RVZJQ0VfU1RBVEVfU0FWSU5HXSA9IDEsDQo+ID4+Pj4+ICsJCX0sDQo+ID4+Pj4+ICsJCVtWRklP X0RFVklDRV9TVEFURV9SRVNVTUlOR10gPSB7DQo+ID4+Pj4+ICsJCQlbVkZJT19ERVZJQ0VfU1RB VEVfUlVOTklOR10gPSAxLA0KPiA+Pj4+PiArCQkJW1ZGSU9fREVWSUNFX1NUQVRFX1NUT1BdID0g MSwNCj4gPj4+Pj4gKwkJfSwNCj4gPj4+Pj4gKwl9Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJaWYg KG5ld19zdGF0ZSA+IE1BWF9TVEFURSB8fCBvbGRfc3RhdGUgPiBNQVhfU1RBVEUpDQo+ID4+Pj4+ ICsJCXJldHVybiBmYWxzZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCXJldHVybiB2ZmlvX2Zyb21f c3RhdGVfdGFibGVbb2xkX3N0YXRlXVtuZXdfc3RhdGVdOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiAr RVhQT1JUX1NZTUJPTF9HUEwodmZpb19jaGFuZ2VfbWlncmF0aW9uX3N0YXRlX2FsbG93ZWQpOw0K PiA+Pj4+PiArDQo+ID4+Pj4+ICAgIHN0YXRpYyBsb25nIHZmaW9fZGV2aWNlX2ZvcHNfdW5sX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxlcCwNCj4gPj4+Pj4gICAgCQkJCSAgICAgICB1bnNpZ25lZCBp bnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCj4gPj4+Pj4gICAgew0KPiA+Pj4+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC92ZmlvLmggYi9pbmNsdWRlL2xpbnV4L3ZmaW8uaCBpbmRleA0K PiA+Pj4+PiBiNTNhOTU1Nzg4NGEuLmU2NTEzN2E3MDhmMSAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEv aW5jbHVkZS9saW51eC92ZmlvLmgNCj4gPj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC92ZmlvLmgN Cj4gPj4+Pj4gQEAgLTgzLDYgKzgzLDcgQEAgZXh0ZXJuIHN0cnVjdCB2ZmlvX2RldmljZQ0KPiA+ Pj4+PiAqdmZpb19kZXZpY2VfZ2V0X2Zyb21fZGV2KHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ID4+ Pj4+ICAgIGV4dGVybiB2b2lkIHZmaW9fZGV2aWNlX3B1dChzdHJ1Y3QgdmZpb19kZXZpY2UgKmRl dmljZSk7DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgIGludCB2ZmlvX2Fzc2lnbl9kZXZpY2Vfc2V0KHN0 cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB2b2lkDQo+ID4+Pj4+ICpzZXRfaWQpOw0KPiA+Pj4+ PiArYm9vbCB2ZmlvX2NoYW5nZV9taWdyYXRpb25fc3RhdGVfYWxsb3dlZCh1MzIgbmV3X3N0YXRl LCB1MzINCj4gPj4gb2xkX3N0YXRlKTsNCj4gPj4+Pj4gICAgLyogZXZlbnRzIGZvciB0aGUgYmFj a2VuZCBkcml2ZXIgbm90aWZ5IGNhbGxiYWNrICovDQo+ID4+Pj4+ICAgIGVudW0gdmZpb19pb21t dV9ub3RpZnlfdHlwZSB7DQo+ID4+Pj4+IC0tDQo+ID4+Pj4+IDIuMzEuMQ0K