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 B2CAE45B9E; Tue, 22 Oct 2024 11:08:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4B2384029A; Tue, 22 Oct 2024 11:08:50 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 0A8604027C for ; Tue, 22 Oct 2024 11:08:47 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.19.88.194]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XXmWn0J91z10NgF; Tue, 22 Oct 2024 17:06:45 +0800 (CST) Received: from dggpeml500023.china.huawei.com (unknown [7.185.36.114]) by mail.maildlp.com (Postfix) with ESMTPS id 952D4140360; Tue, 22 Oct 2024 17:08:45 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by dggpeml500023.china.huawei.com (7.185.36.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 22 Oct 2024 17:08:44 +0800 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Tue, 22 Oct 2024 11:08:42 +0200 From: Konstantin Ananyev To: "lihuisong (C)" , "dev@dpdk.org" CC: "mb@smartsharesystems.com" , "thomas@monjalon.net" , "ferruh.yigit@amd.com" , "anatoly.burakov@intel.com" , "david.hunt@intel.com" , "sivaprasad.tummala@amd.com" , "stephen@networkplumber.org" , "david.marchand@redhat.com" , Fengchengwen , liuyonglong Subject: RE: [PATCH v11 1/2] power: introduce PM QoS API on CPU wide Thread-Topic: [PATCH v11 1/2] power: introduce PM QoS API on CPU wide Thread-Index: AQHbI6/gA36pyAl8A0eNi2MOUJRP6LKSe6Ag Date: Tue, 22 Oct 2024 09:08:42 +0000 Message-ID: <3c3297d000ea40cc8813b156173e1ff4@huawei.com> References: <20240320105529.5626-1-lihuisong@huawei.com> <20241021114253.31216-1-lihuisong@huawei.com> <20241021114253.31216-2-lihuisong@huawei.com> In-Reply-To: <20241021114253.31216-2-lihuisong@huawei.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.175.109] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 DQoNCj4gVGhlIGRlZXBlciB0aGUgaWRsZSBzdGF0ZSwgdGhlIGxvd2VyIHRoZSBwb3dlciBjb25z dW1wdGlvbiwgYnV0IHRoZSBsb25nZXINCj4gdGhlIHJlc3VtZSB0aW1lLiBTb21lIHNlcnZpY2Ug YXJlIGRlbGF5IHNlbnNpdGl2ZSBhbmQgdmVyeSBleGNlcHQgdGhlIGxvdw0KPiByZXN1bWUgdGlt ZSwgbGlrZSBpbnRlcnJ1cHQgcGFja2V0IHJlY2VpdmluZyBtb2RlLg0KPiANCj4gQW5kIHRoZSAi L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9wb3dlci9wbV9xb3NfcmVzdW1lX2xhdGVuY3lf dXMiIHN5c2ZzDQo+IGludGVyZmFjZSBpcyB1c2VkIHRvIHNldCBhbmQgZ2V0IHRoZSByZXN1bWUg bGF0ZW5jeSBsaW1pdCBvbiB0aGUgY3B1WCBmb3INCj4gdXNlcnNwYWNlLiBFYWNoIGNwdWlkbGUg Z292ZXJub3IgaW4gTGludXggc2VsZWN0IHdoaWNoIGlkbGUgc3RhdGUgdG8gZW50ZXINCj4gYmFz ZWQgb24gdGhpcyBDUFUgcmVzdW1lIGxhdGVuY3kgaW4gdGhlaXIgaWRsZSB0YXNrLg0KPiANCj4g VGhlIHBlci1DUFUgUE0gUW9TIEFQSSBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoaXMgQ1BVJ3Mg aWRsZSBzdGF0ZQ0KPiBzZWxlY3Rpb24gYW5kIGxpbWl0IGp1c3QgZW50ZXIgdGhlIHNoYWxsb3dl c3QgaWRsZSBzdGF0ZSB0byBsb3cgdGhlIGRlbGF5DQo+IHdoZW4gd2FrZSB1cCBmcm9tIGJ5IHNl dHRpbmcgc3RyaWN0IHJlc3VtZSBsYXRlbmN5ICh6ZXJvIHZhbHVlKS4NCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IEh1aXNvbmcgTGkgPGxpaHVpc29uZ0BodWF3ZWkuY29tPg0KPiBBY2tlZC1ieTogTW9y dGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCg0KTEdUTSBvdmVyYWxsLCBm ZXcgbml0cywgc2VlIGJlbG93Lg0KQWNrZWQtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3Rh bnRpbi5hbmFueWV2QGh1YXdlaS5jb20+DQoNCj4gLS0tDQo+ICBkb2MvZ3VpZGVzL3Byb2dfZ3Vp ZGUvcG93ZXJfbWFuLnJzdCAgICB8ICAxOSArKysrDQo+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzI0XzExLnJzdCB8ICAgNSArDQo+ICBsaWIvcG93ZXIvbWVzb24uYnVpbGQgICAgICAg ICAgICAgICAgICB8ICAgMiArDQo+ICBsaWIvcG93ZXIvcnRlX3Bvd2VyX3Fvcy5jICAgICAgICAg ICAgICB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBsaWIvcG93ZXIvcnRlX3Bv d2VyX3Fvcy5oICAgICAgICAgICAgICB8ICA3MyArKysrKysrKysrKysrKysNCj4gIGxpYi9wb3dl ci92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgIHwgICA0ICsNCj4gIDYgZmlsZXMgY2hhbmdl ZCwgMjI2IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcG93ZXIvcnRl X3Bvd2VyX3Fvcy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Bvd2VyL3J0ZV9wb3dlcl9x b3MuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9wb3dlcl9tYW4u cnN0IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Bvd2VyX21hbi5yc3QNCj4gaW5kZXggZjY2NzRl ZmUyZC4uOTEzNThiMDRmMyAxMDA2NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Bv d2VyX21hbi5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Bvd2VyX21hbi5yc3QN Cj4gQEAgLTEwNyw2ICsxMDcsMjUgQEAgVXNlciBDYXNlcw0KPiAgVGhlIHBvd2VyIG1hbmFnZW1l bnQgbWVjaGFuaXNtIGlzIHVzZWQgdG8gc2F2ZSBwb3dlciB3aGVuIHBlcmZvcm1pbmcgTDMgZm9y d2FyZGluZy4NCj4gDQo+IA0KPiArUE0gUW9TDQo+ICstLS0tLS0NCj4gKw0KPiArVGhlICIvc3lz L2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3Bvd2VyL3BtX3Fvc19yZXN1bWVfbGF0ZW5jeV91cyIg c3lzZnMNCj4gK2ludGVyZmFjZSBpcyB1c2VkIHRvIHNldCBhbmQgZ2V0IHRoZSByZXN1bWUgbGF0 ZW5jeSBsaW1pdCBvbiB0aGUgY3B1WCBmb3INCj4gK3VzZXJzcGFjZS4gRWFjaCBjcHVpZGxlIGdv dmVybm9yIGluIExpbnV4IHNlbGVjdCB3aGljaCBpZGxlIHN0YXRlIHRvIGVudGVyDQo+ICtiYXNl ZCBvbiB0aGlzIENQVSByZXN1bWUgbGF0ZW5jeSBpbiB0aGVpciBpZGxlIHRhc2suDQo+ICsNCj4g K1RoZSBkZWVwZXIgdGhlIGlkbGUgc3RhdGUsIHRoZSBsb3dlciB0aGUgcG93ZXIgY29uc3VtcHRp b24sIGJ1dCB0aGUgbG9uZ2VyDQo+ICt0aGUgcmVzdW1lIHRpbWUuIFNvbWUgc2VydmljZSBhcmUg bGF0ZW5jeSBzZW5zaXRpdmUgYW5kIHZlcnkgZXhjZXB0IHRoZSBsb3cNCj4gK3Jlc3VtZSB0aW1l LCBsaWtlIGludGVycnVwdCBwYWNrZXQgcmVjZWl2aW5nIG1vZGUuDQo+ICsNCj4gK0FwcGxpY2F0 aW9ucyBjYW4gc2V0IGFuZCBnZXQgdGhlIENQVSByZXN1bWUgbGF0ZW5jeSBieSB0aGUNCj4gK2Bg cnRlX3Bvd2VyX3Fvc19zZXRfY3B1X3Jlc3VtZV9sYXRlbmN5KClgYCBhbmQgYGBydGVfcG93ZXJf cW9zX2dldF9jcHVfcmVzdW1lX2xhdGVuY3koKWBgDQo+ICtyZXNwZWN0aXZlbHkuIEFwcGxpY2F0 aW9ucyBjYW4gc2V0IGEgc3RyaWN0IHJlc3VtZSBsYXRlbmN5ICh6ZXJvIHZhbHVlKSBieQ0KPiAr dGhlIGBgcnRlX3Bvd2VyX3Fvc19zZXRfY3B1X3Jlc3VtZV9sYXRlbmN5KClgYCB0byBsb3cgdGhl IHJlc3VtZSBsYXRlbmN5IGFuZA0KPiArZ2V0IGJldHRlciBwZXJmb3JtYW5jZSAoaW5zdGVhZCwg dGhlIHBvd2VyIGNvbnN1bXB0aW9uIG9mIHBsYXRmb3JtIG1heSBpbmNyZWFzZSkuDQo+ICsNCj4g Kw0KPiAgRXRoZXJuZXQgUE1EIFBvd2VyIE1hbmFnZW1lbnQgQVBJDQo+ICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9u b3Rlcy9yZWxlYXNlXzI0XzExLnJzdCBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRf MTEucnN0DQo+IGluZGV4IGZhNDgyMmQ5MjguLmQ5ZTI2ODI3NGIgMTAwNjQ0DQo+IC0tLSBhL2Rv Yy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRfMTEucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMv cmVsX25vdGVzL3JlbGVhc2VfMjRfMTEucnN0DQo+IEBAIC0yMzcsNiArMjM3LDExIEBAIE5ldyBG ZWF0dXJlcw0KPiAgICBUaGlzIGZpZWxkIGlzIHVzZWQgdG8gcGFzcyBhbiBleHRyYSBjb25maWd1 cmF0aW9uIHNldHRpbmdzIHN1Y2ggYXMgYWJpbGl0eQ0KPiAgICB0byBsb29rdXAgSVB2NCBhZGRy ZXNzZXMgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPiANCj4gKyogKipJbnRyb2R1Y2UgcGVyLUNQ VSBQTSBRb1MgaW50ZXJmYWNlLioqDQo+ICsNCj4gKyAgKiBBZGQgcGVyLUNQVSBQTSBRb1MgaW50 ZXJmYWNlIHRvIGxvdyB0aGUgcmVzdW1lIGxhdGVuY3kgd2hlbiB3YWtlIHVwIGZyb20NCj4gKyAg ICBpZGxlIHN0YXRlLg0KPiArDQo+ICAqICoqQWRkZWQgbmV3IEFQSSB0byByZWdpc3RlciB0ZWxl bWV0cnkgZW5kcG9pbnQgY2FsbGJhY2tzIHdpdGggcHJpdmF0ZSBhcmd1bWVudHMuKioNCj4gDQo+ ICAgIEEgbmV3IGBgcnRlX3RlbGVtZXRyeV9yZWdpc3Rlcl9jbWRfYXJnYGAgZnVuY3Rpb24gaXMg YXZhaWxhYmxlIHRvIHBhc3MgYW4gb3BhcXVlIHZhbHVlIHRvDQo+IGRpZmYgLS1naXQgYS9saWIv cG93ZXIvbWVzb24uYnVpbGQgYi9saWIvcG93ZXIvbWVzb24uYnVpbGQNCj4gaW5kZXggMmYwZjNk MjZlOS4uOWI1ZDNlODMxNSAxMDA2NDQNCj4gLS0tIGEvbGliL3Bvd2VyL21lc29uLmJ1aWxkDQo+ ICsrKyBiL2xpYi9wb3dlci9tZXNvbi5idWlsZA0KPiBAQCAtMjMsMTIgKzIzLDE0IEBAIHNvdXJj ZXMgPSBmaWxlcygNCj4gICAgICAgICAgJ3J0ZV9wb3dlci5jJywNCj4gICAgICAgICAgJ3J0ZV9w b3dlcl91bmNvcmUuYycsDQo+ICAgICAgICAgICdydGVfcG93ZXJfcG1kX21nbXQuYycsDQo+ICsJ J3J0ZV9wb3dlcl9xb3MuYycsDQo+ICApDQo+ICBoZWFkZXJzID0gZmlsZXMoDQo+ICAgICAgICAg ICdydGVfcG93ZXIuaCcsDQo+ICAgICAgICAgICdydGVfcG93ZXJfZ3Vlc3RfY2hhbm5lbC5oJywN Cj4gICAgICAgICAgJ3J0ZV9wb3dlcl9wbWRfbWdtdC5oJywNCj4gICAgICAgICAgJ3J0ZV9wb3dl cl91bmNvcmUuaCcsDQo+ICsJJ3J0ZV9wb3dlcl9xb3MuaCcsDQo+ICApDQo+IA0KPiAgZGVwcyAr PSBbJ3RpbWVyJywgJ2V0aGRldiddDQo+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcnRlX3Bvd2Vy X3Fvcy5jIGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9xb3MuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4wOTY5MmIyMTYxDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9xb3MuYw0KPiBAQCAtMCwwICsxLDEyMyBAQA0KPiArLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMp IDIwMjQgSGlTaWxpY29uIExpbWl0ZWQNCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8ZXJybm8u aD4NCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gKw0K PiArI2luY2x1ZGUgPHJ0ZV9sY29yZS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gKw0K PiArI2luY2x1ZGUgInBvd2VyX2NvbW1vbi5oIg0KPiArI2luY2x1ZGUgInJ0ZV9wb3dlcl9xb3Mu aCINCj4gKw0KPiArI2RlZmluZSBQTV9RT1NfU1lTRklMRV9SRVNVTUVfTEFURU5DWV9VUwlcDQo+ ICsJIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSV1L3Bvd2VyL3BtX3Fvc19yZXN1bWVfbGF0 ZW5jeV91cyINCj4gKw0KPiArI2RlZmluZSBQTV9RT1NfQ1BVX1JFU1VNRV9MQVRFTkNZX0JVRl9M RU4JMzINCj4gKw0KPiAraW50DQo+ICtydGVfcG93ZXJfcW9zX3NldF9jcHVfcmVzdW1lX2xhdGVu Y3kodWludDE2X3QgbGNvcmVfaWQsIGludCBsYXRlbmN5KQ0KPiArew0KPiArCWNoYXIgYnVmW1BN X1FPU19DUFVfUkVTVU1FX0xBVEVOQ1lfQlVGX0xFTl07DQo+ICsJdWludDMyX3QgY3B1X2lkOw0K PiArCUZJTEUgKmY7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmICghcnRlX2xjb3JlX2lzX2Vu YWJsZWQobGNvcmVfaWQpKSB7DQo+ICsJCVBPV0VSX0xPRyhFUlIsICJsY29yZSBpZCAldSBpcyBu b3QgZW5hYmxlZCIsIGxjb3JlX2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiAr CXJldCA9IHBvd2VyX2dldF9sY29yZV9tYXBwZWRfY3B1X2lkKGxjb3JlX2lkLCAmY3B1X2lkKTsN Cj4gKwlpZiAocmV0ICE9IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlpZiAobGF0ZW5j eSA8IDApIHsNCj4gKwkJUE9XRVJfTE9HKEVSUiwgImxhdGVuY3kgc2hvdWxkIGJlIGdyZWF0ZXIg dGhhbiBhbmQgZXF1YWwgdG8gMCIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsN Cj4gKwlyZXQgPSBvcGVuX2NvcmVfc3lzZnNfZmlsZSgmZiwgInciLCBQTV9RT1NfU1lTRklMRV9S RVNVTUVfTEFURU5DWV9VUywgY3B1X2lkKTsNCj4gKwlpZiAocmV0ICE9IDApIHsNCj4gKwkJUE9X RVJfTE9HKEVSUiwgIkZhaWxlZCB0byBvcGVuICJQTV9RT1NfU1lTRklMRV9SRVNVTUVfTEFURU5D WV9VUyIgOiAlcyIsDQo+ICsJCQkgIGNwdV9pZCwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKwkJcmV0 dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwkvKg0KPiArCSAqIEJhc2VkIG9uIHRoZSBzeXNmcyBp bnRlcmZhY2UgcG1fcW9zX3Jlc3VtZV9sYXRlbmN5X3VzIHVuZGVyDQo+ICsJICogQFBNX1FPU19T WVNGSUxFX1JFU1VNRV9MQVRFTkNZX1VTIGRpcmVjdG9yeSBpbiBrZXJuZWwsIHRoZWlyIG1lYW5p bmcNCj4gKwkgKiBpcyBhcyBmb2xsb3dzIGZvciBkaWZmZXJlbnQgaW5wdXQgc3RyaW5nLg0KPiAr CSAqIDE+IHRoZSByZXN1bWUgbGF0ZW5jeSBpcyAwIGlmIHRoZSBpbnB1dCBpcyAibi9hIi4NCj4g KwkgKiAyPiB0aGUgcmVzdW1lIGxhdGVuY3kgaXMgbm8gY29uc3RyYWludCBpZiB0aGUgaW5wdXQg aXMgIjAiLg0KPiArCSAqIDM+IHRoZSByZXN1bWUgbGF0ZW5jeSBpcyB0aGUgYWN0dWFsIHZhbHVl IHRvIGJlIHNldC4NCj4gKwkgKi8NCj4gKwlpZiAobGF0ZW5jeSA9PSAwKQ0KDQoNCldoeSBub3Qg dG8gdXNlIHlvdXIgb3duIG1hY3JvOg0KUlRFX1BPV0VSX1FPU19TVFJJQ1RfTEFURU5DWV9WQUxV RQ0KSW5zdGVhZCBvZiBoYXJkLWNvZGVkIGNvbnN0YW50IGhlcmU/DQoNCj4gKwkJc25wcmludGYo YnVmLCBzaXplb2YoYnVmKSwgIiVzIiwgIm4vYSIpOw0KPiArCWVsc2UgaWYgKGxhdGVuY3kgPT0g UlRFX1BPV0VSX1FPU19SRVNVTUVfTEFURU5DWV9OT19DT05TVFJBSU5UKQ0KPiArCQlzbnByaW50 ZihidWYsIHNpemVvZihidWYpLCAiJXUiLCAwKTsNCj4gKwllbHNlDQo+ICsJCXNucHJpbnRmKGJ1 Ziwgc2l6ZW9mKGJ1ZiksICIldSIsIGxhdGVuY3kpOw0KPiArDQo+ICsJcmV0ID0gd3JpdGVfY29y ZV9zeXNmc19zKGYsIGJ1Zik7DQo+ICsJaWYgKHJldCAhPSAwKQ0KPiArCQlQT1dFUl9MT0coRVJS LCAiRmFpbGVkIHRvIHdyaXRlICJQTV9RT1NfU1lTRklMRV9SRVNVTUVfTEFURU5DWV9VUyIgOiAl cyIsDQo+ICsJCQkgIGNwdV9pZCwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKw0KPiArCWZjbG9zZShm KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArcnRlX3Bvd2Vy X3Fvc19nZXRfY3B1X3Jlc3VtZV9sYXRlbmN5KHVpbnQxNl90IGxjb3JlX2lkKQ0KPiArew0KPiAr CWNoYXIgYnVmW1BNX1FPU19DUFVfUkVTVU1FX0xBVEVOQ1lfQlVGX0xFTl07DQo+ICsJaW50IGxh dGVuY3kgPSAtMTsNCj4gKwl1aW50MzJfdCBjcHVfaWQ7DQo+ICsJRklMRSAqZjsNCj4gKwlpbnQg cmV0Ow0KPiArDQo+ICsJaWYgKCFydGVfbGNvcmVfaXNfZW5hYmxlZChsY29yZV9pZCkpIHsNCj4g KwkJUE9XRVJfTE9HKEVSUiwgImxjb3JlIGlkICV1IGlzIG5vdCBlbmFibGVkIiwgbGNvcmVfaWQp Ow0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsJcmV0ID0gcG93ZXJfZ2V0X2xjb3Jl X21hcHBlZF9jcHVfaWQobGNvcmVfaWQsICZjcHVfaWQpOw0KPiArCWlmIChyZXQgIT0gMCkNCj4g KwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IG9wZW5fY29yZV9zeXNmc19maWxlKCZmLCAi ciIsIFBNX1FPU19TWVNGSUxFX1JFU1VNRV9MQVRFTkNZX1VTLCBjcHVfaWQpOw0KPiArCWlmIChy ZXQgIT0gMCkgew0KPiArCQlQT1dFUl9MT0coRVJSLCAiRmFpbGVkIHRvIG9wZW4gIlBNX1FPU19T WVNGSUxFX1JFU1VNRV9MQVRFTkNZX1VTIiA6ICVzIiwNCj4gKwkJCSAgY3B1X2lkLCBzdHJlcnJv cihlcnJubykpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9IHJlYWRf Y29yZV9zeXNmc19zKGYsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOw0KPiArCWlmIChyZXQgIT0gMCkgew0K PiArCQlQT1dFUl9MT0coRVJSLCAiRmFpbGVkIHRvIHJlYWQgIlBNX1FPU19TWVNGSUxFX1JFU1VN RV9MQVRFTkNZX1VTIiA6ICVzIiwNCj4gKwkJCSAgY3B1X2lkLCBzdHJlcnJvcihlcnJubykpOw0K PiArCQlnb3RvIG91dDsNCj4gKwl9DQo+ICsNCj4gKwkvKg0KPiArCSAqIEJhc2VkIG9uIHRoZSBz eXNmcyBpbnRlcmZhY2UgcG1fcW9zX3Jlc3VtZV9sYXRlbmN5X3VzIHVuZGVyDQo+ICsJICogQFBN X1FPU19TWVNGSUxFX1JFU1VNRV9MQVRFTkNZX1VTIGRpcmVjdG9yeSBpbiBrZXJuZWwsIHRoZWly IG1lYW5pbmcNCj4gKwkgKiBpcyBhcyBmb2xsb3dzIGZvciBkaWZmZXJlbnQgb3V0cHV0IHN0cmlu Zy4NCj4gKwkgKiAxPiB0aGUgcmVzdW1lIGxhdGVuY3kgaXMgMCBpZiB0aGUgb3V0cHV0IGlzICJu L2EiLg0KPiArCSAqIDI+IHRoZSByZXN1bWUgbGF0ZW5jeSBpcyBubyBjb25zdHJhaW50IGlmIHRo ZSBvdXRwdXQgaXMgIjAiLg0KPiArCSAqIDM+IHRoZSByZXN1bWUgbGF0ZW5jeSBpcyB0aGUgYWN0 dWFsIHZhbHVlIGluIHVzZWQgZm9yIG90aGVyIHN0cmluZy4NCj4gKwkgKi8NCj4gKwlpZiAoc3Ry Y21wKGJ1ZiwgIm4vYSIpID09IDApDQo+ICsJCWxhdGVuY3kgPSAwOw0KDQoNClJURV9QT1dFUl9R T1NfU1RSSUNUX0xBVEVOQ1lfVkFMVUUNCj8NCg0KPiArCWVsc2Ugew0KPiArCQlsYXRlbmN5ID0g c3RydG91bChidWYsIE5VTEwsIDEwKTsNCj4gKwkJbGF0ZW5jeSA9IGxhdGVuY3kgPT0gMCA/IFJU RV9QT1dFUl9RT1NfUkVTVU1FX0xBVEVOQ1lfTk9fQ09OU1RSQUlOVCA6IGxhdGVuY3k7DQo+ICsJ fQ0KPiArDQo+ICtvdXQ6DQo+ICsJZmNsb3NlKGYpOw0KPiArDQo+ICsJcmV0dXJuIGxhdGVuY3kg IT0gLTEgPyBsYXRlbmN5IDogcmV0Ow0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL3J0 ZV9wb3dlcl9xb3MuaCBiL2xpYi9wb3dlci9ydGVfcG93ZXJfcW9zLmgNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uOTkwYzQ4ODM3Mw0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2xpYi9wb3dlci9ydGVfcG93ZXJfcW9zLmgNCj4gQEAgLTAsMCArMSw3MyBAQA0K PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJp Z2h0KGMpIDIwMjQgSGlTaWxpY29uIExpbWl0ZWQNCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIFJU RV9QT1dFUl9RT1NfSA0KPiArI2RlZmluZSBSVEVfUE9XRVJfUU9TX0gNCj4gKw0KPiArI2luY2x1 ZGUgPHN0ZGludC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KPiArDQo+ICsj aWZkZWYgX19jcGx1c3BsdXMNCj4gK2V4dGVybiAiQyIgew0KPiArI2VuZGlmDQo+ICsNCj4gKy8q Kg0KPiArICogQGZpbGUgcnRlX3Bvd2VyX3Fvcy5oDQo+ICsgKg0KPiArICogUE0gUW9TIEFQSS4N Cj4gKyAqDQo+ICsgKiBUaGUgQ1BVLXdpZGUgcmVzdW1lIGxhdGVuY3kgbGltaXQgaGFzIGEgcG9z aXRpdmUgaW1wYWN0IG9uIHRoaXMgQ1BVJ3MgaWRsZQ0KPiArICogc3RhdGUgc2VsZWN0aW9uIGlu IGVhY2ggY3B1aWRsZSBnb3Zlcm5vci4NCj4gKyAqIFBsZWFzZSBzZWUgdGhlIFBNIFFvUyBvbiBD UFUgd2lkZSBpbiB0aGUgZm9sbG93aW5nIGxpbms6DQo+ICsgKiBodHRwczovL3d3dy5rZXJuZWwu b3JnL2RvYy9odG1sL2xhdGVzdC9hZG1pbi1ndWlkZS9hYmktdGVzdGluZy5odG1sP2hpZ2hsaWdo dD1wbV9xb3NfcmVzdW1lX2xhdGVuY3lfdXMjYWJpLXN5cy1kZXZpY2VzLQ0KPiBwb3dlci1wbS1x b3MtcmVzdW1lLWxhdGVuY3ktdXMNCj4gKyAqDQo+ICsgKiBUaGUgZGVlcGVyIHRoZSBpZGxlIHN0 YXRlLCB0aGUgbG93ZXIgdGhlIHBvd2VyIGNvbnN1bXB0aW9uLCBidXQgdGhlDQo+ICsgKiBsb25n ZXIgdGhlIHJlc3VtZSB0aW1lLiBTb21lIHNlcnZpY2UgYXJlIGRlbGF5IHNlbnNpdGl2ZSBhbmQg dmVyeSBleGNlcHQgdGhlDQo+ICsgKiBsb3cgcmVzdW1lIHRpbWUsIGxpa2UgaW50ZXJydXB0IHBh Y2tldCByZWNlaXZpbmcgbW9kZS4NCj4gKyAqDQo+ICsgKiBJbiB0aGVzZSBjYXNlLCBwZXItQ1BV IFBNIFFvUyBBUEkgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGlzIENQVSdzIGlkbGUNCj4gKyAq IHN0YXRlIHNlbGVjdGlvbiBhbmQgbGltaXQganVzdCBlbnRlciB0aGUgc2hhbGxvd2VzdCBpZGxl IHN0YXRlIHRvIGxvdyB0aGUNCj4gKyAqIGRlbGF5IGFmdGVyIHNsZWVwIGJ5IHNldHRpbmcgc3Ry aWN0IHJlc3VtZSBsYXRlbmN5ICh6ZXJvIHZhbHVlKS4NCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5l IFJURV9QT1dFUl9RT1NfU1RSSUNUX0xBVEVOQ1lfVkFMVUUgICAgICAgICAgICAgMA0KPiArI2Rl ZmluZSBSVEVfUE9XRVJfUU9TX1JFU1VNRV9MQVRFTkNZX05PX0NPTlNUUkFJTlQgICAgKChpbnQp KFVJTlQzMl9NQVggPj4gMSkpDQoNCklzbid0IGl0IGp1c3QgSU5UMzJfTUFYPw0KDQo+ICsvKioN Cj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFu Z2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGxjb3JlX2lkDQo+ ICsgKiAgIHRhcmdldCBsb2dpY2FsIGNvcmUgaWQNCj4gKyAqDQo+ICsgKiBAcGFyYW0gbGF0ZW5j eQ0KPiArICogICBUaGUgbGF0ZW5jeSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIGFuZCBlcXVhbCB0 byB6ZXJvIGluIG1pY3Jvc2Vjb25kcyB1bml0Lg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAq ICAgMCBvbiBzdWNjZXNzLiBPdGhlcndpc2UgbmVnYXRpdmUgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50IHJ0ZV9wb3dlcl9xb3Nfc2V0X2Nw dV9yZXN1bWVfbGF0ZW5jeSh1aW50MTZfdCBsY29yZV9pZCwgaW50IGxhdGVuY3kpOw0KPiArDQo+ ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1h eSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogR2V0IHRoZSBjdXJy ZW50IHJlc3VtZSBsYXRlbmN5IG9mIHRoaXMgbG9naWNhbCBjb3JlLg0KPiArICogVGhlIGRlZmF1 bHQgdmFsdWUgaW4ga2VybmVsIGlzIEBzZWUgUlRFX1BPV0VSX1FPU19SRVNVTUVfTEFURU5DWV9O T19DT05TVFJBSU5UDQo+ICsgKiBpZiBkb24ndCBzZXQgaXQuDQo+ICsgKg0KPiArICogQHJldHVy bg0KPiArICogICBOZWdhdGl2ZSB2YWx1ZSBvbiBmYWlsdXJlLg0KPiArICogICA+PSAwIG1lYW5z IHRoZSBhY3R1YWwgcmVzdW1lIGxhdGVuY3kgbGltaXQgb24gdGhpcyBjb3JlLg0KPiArICovDQo+ ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK2ludCBydGVfcG93ZXJfcW9zX2dldF9jcHVfcmVzdW1l X2xhdGVuY3kodWludDE2X3QgbGNvcmVfaWQpOw0KPiArDQo+ICsjaWZkZWYgX19jcGx1c3BsdXMN Cj4gK30NCj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYgLyogUlRFX1BPV0VSX1FPU19IICovDQo+ IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvdmVyc2lvbi5tYXAgYi9saWIvcG93ZXIvdmVyc2lvbi5t YXANCj4gaW5kZXggYzlhMjI2NjE0ZS4uMDhmMTc4YTM5ZCAxMDA2NDQNCj4gLS0tIGEvbGliL3Bv d2VyL3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9wb3dlci92ZXJzaW9uLm1hcA0KPiBAQCAtNTEs NCArNTEsOCBAQCBFWFBFUklNRU5UQUwgew0KPiAgCXJ0ZV9wb3dlcl9zZXRfdW5jb3JlX2VudjsN Cj4gIAlydGVfcG93ZXJfdW5jb3JlX2ZyZXFzOw0KPiAgCXJ0ZV9wb3dlcl91bnNldF91bmNvcmVf ZW52Ow0KPiArDQo+ICsJIyBhZGRlZCBpbiAyNC4xMQ0KPiArCXJ0ZV9wb3dlcl9xb3NfZ2V0X2Nw dV9yZXN1bWVfbGF0ZW5jeTsNCj4gKwlydGVfcG93ZXJfcW9zX3NldF9jcHVfcmVzdW1lX2xhdGVu Y3k7DQo+ICB9Ow0KPiAtLQ0KPiAyLjIyLjANCg0K