From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
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 <dev@dpdk.org>; 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 <konstantin.ananyev@huawei.com>
To: "lihuisong (C)" <lihuisong@huawei.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "mb@smartsharesystems.com" <mb@smartsharesystems.com>,
 "thomas@monjalon.net" <thomas@monjalon.net>, "ferruh.yigit@amd.com"
 <ferruh.yigit@amd.com>, "anatoly.burakov@intel.com"
 <anatoly.burakov@intel.com>, "david.hunt@intel.com" <david.hunt@intel.com>,
 "sivaprasad.tummala@amd.com" <sivaprasad.tummala@amd.com>,
 "stephen@networkplumber.org" <stephen@networkplumber.org>,
 "david.marchand@redhat.com" <david.marchand@redhat.com>, Fengchengwen
 <fengchengwen@huawei.com>, liuyonglong <liuyonglong@huawei.com>
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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=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