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 90B3445B36; Mon, 14 Oct 2024 10:30:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 65D4B4027F; Mon, 14 Oct 2024 10:30:03 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 714BF40273 for ; Mon, 14 Oct 2024 10:30:01 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.19.162.254]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XRr2x1z74z10N4F; Mon, 14 Oct 2024 16:28:09 +0800 (CST) Received: from dggpeml500022.china.huawei.com (unknown [7.185.36.66]) by mail.maildlp.com (Postfix) with ESMTPS id 4F5CC1800DE; Mon, 14 Oct 2024 16:29:59 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by dggpeml500022.china.huawei.com (7.185.36.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Mon, 14 Oct 2024 16:29:58 +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; Mon, 14 Oct 2024 10:29:56 +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 , "lihuisong (C)" Subject: RE: [PATCH v10 1/2] power: introduce PM QoS API on CPU wide Thread-Topic: [PATCH v10 1/2] power: introduce PM QoS API on CPU wide Thread-Index: AQHbBL5ZsCIz42nz/UuE9tzRzh7dMrKGG6XQ Date: Mon, 14 Oct 2024 08:29:56 +0000 Message-ID: <773b9cf3df354a168e42aecb627b0b2c@huawei.com> References: <20240320105529.5626-1-lihuisong@huawei.com> <20240912023812.30885-1-lihuisong@huawei.com> <20240912023812.30885-2-lihuisong@huawei.com> In-Reply-To: <20240912023812.30885-2-lihuisong@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.147.19] 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 DQo+IFRoZSBkZWVwZXIgdGhlIGlkbGUgc3RhdGUsIHRoZSBsb3dlciB0aGUgcG93ZXIgY29uc3Vt cHRpb24sIGJ1dCB0aGUgbG9uZ2VyDQo+IHRoZSByZXN1bWUgdGltZS4gU29tZSBzZXJ2aWNlIGFy ZSBkZWxheSBzZW5zaXRpdmUgYW5kIHZlcnkgZXhjZXB0IHRoZSBsb3cNCj4gcmVzdW1lIHRpbWUs IGxpa2UgaW50ZXJydXB0IHBhY2tldCByZWNlaXZpbmcgbW9kZS4NCj4gDQo+IEFuZCB0aGUgIi9z eXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvcG93ZXIvcG1fcW9zX3Jlc3VtZV9sYXRlbmN5X3Vz IiBzeXNmcw0KPiBpbnRlcmZhY2UgaXMgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUgcmVzdW1lIGxh dGVuY3kgbGltaXQgb24gdGhlIGNwdVggZm9yDQo+IHVzZXJzcGFjZS4gRWFjaCBjcHVpZGxlIGdv dmVybm9yIGluIExpbnV4IHNlbGVjdCB3aGljaCBpZGxlIHN0YXRlIHRvIGVudGVyDQo+IGJhc2Vk IG9uIHRoaXMgQ1BVIHJlc3VtZSBsYXRlbmN5IGluIHRoZWlyIGlkbGUgdGFzay4NCj4gDQo+IFRo ZSBwZXItQ1BVIFBNIFFvUyBBUEkgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGlzIENQVSdzIGlk bGUgc3RhdGUNCj4gc2VsZWN0aW9uIGFuZCBsaW1pdCBqdXN0IGVudGVyIHRoZSBzaGFsbG93ZXN0 IGlkbGUgc3RhdGUgdG8gbG93IHRoZSBkZWxheQ0KPiBhZnRlciBzbGVlcCBieSBzZXR0aW5nIHN0 cmljdCByZXN1bWUgbGF0ZW5jeSAoemVybyB2YWx1ZSkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBI dWlzb25nIExpIDxsaWh1aXNvbmdAaHVhd2VpLmNvbT4NCj4gQWNrZWQtYnk6IE1vcnRlbiBCcsO4 cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+IC0tLQ0KPiAgZG9jL2d1aWRlcy9wcm9n X2d1aWRlL3Bvd2VyX21hbi5yc3QgICAgfCAgMjQgKysrKysrDQo+ICBkb2MvZ3VpZGVzL3JlbF9u b3Rlcy9yZWxlYXNlXzI0XzExLnJzdCB8ICAgNSArKw0KPiAgbGliL3Bvd2VyL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiAgbGliL3Bvd2VyL3J0ZV9wb3dlcl9xb3MuYyAg ICAgICAgICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgbGliL3Bvd2Vy L3J0ZV9wb3dlcl9xb3MuaCAgICAgICAgICAgICAgfCAgNzMgKysrKysrKysrKysrKysrKw0KPiAg bGliL3Bvd2VyL3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KPiAgNiBmaWxl cyBjaGFuZ2VkLCAyMTkgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9w b3dlci9ydGVfcG93ZXJfcW9zLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcG93ZXIvcnRl X3Bvd2VyX3Fvcy5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Bv d2VyX21hbi5yc3QgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcG93ZXJfbWFuLnJzdA0KPiBpbmRl eCBmNjY3NGVmZTJkLi5mYWEzMmI0MzIwIDEwMDY0NA0KPiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2df Z3VpZGUvcG93ZXJfbWFuLnJzdA0KPiArKysgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcG93ZXJf bWFuLnJzdA0KPiBAQCAtMjQ5LDYgKzI0OSwzMCBAQCBHZXQgTnVtIFBrZ3MNCj4gIEdldCBOdW0g RGllcw0KPiAgICBHZXQgdGhlIG51bWJlciBvZiBkaWUncyBvbiBhIGdpdmVuIHBhY2thZ2UuDQo+ IA0KPiArDQo+ICtQTSBRb1MNCj4gKy0tLS0tLQ0KPiArDQo+ICtUaGUgZGVlcGVyIHRoZSBpZGxl IHN0YXRlLCB0aGUgbG93ZXIgdGhlIHBvd2VyIGNvbnN1bXB0aW9uLCBidXQgdGhlIGxvbmdlcg0K PiArdGhlIHJlc3VtZSB0aW1lLiBTb21lIHNlcnZpY2UgYXJlIGRlbGF5IHNlbnNpdGl2ZSBhbmQg dmVyeSBleGNlcHQgdGhlIGxvdw0KPiArcmVzdW1lIHRpbWUsIGxpa2UgaW50ZXJydXB0IHBhY2tl dCByZWNlaXZpbmcgbW9kZS4NCj4gKw0KPiArQW5kIHRoZSAiL3N5cy9kZXZpY2VzL3N5c3RlbS9j cHUvY3B1WC9wb3dlci9wbV9xb3NfcmVzdW1lX2xhdGVuY3lfdXMiIHN5c2ZzDQo+ICtpbnRlcmZh Y2UgaXMgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUgcmVzdW1lIGxhdGVuY3kgbGltaXQgb24gdGhl IGNwdVggZm9yDQo+ICt1c2Vyc3BhY2UuIEVhY2ggY3B1aWRsZSBnb3Zlcm5vciBpbiBMaW51eCBz ZWxlY3Qgd2hpY2ggaWRsZSBzdGF0ZSB0byBlbnRlcg0KPiArYmFzZWQgb24gdGhpcyBDUFUgcmVz dW1lIGxhdGVuY3kgaW4gdGhlaXIgaWRsZSB0YXNrLg0KPiArDQo+ICtUaGUgcGVyLUNQVSBQTSBR b1MgQVBJIGNhbiBiZSB1c2VkIHRvIHNldCBhbmQgZ2V0IHRoZSBDUFUgcmVzdW1lIGxhdGVuY3kg YmFzZWQNCj4gK29uIHRoaXMgc3lzZnMuDQo+ICsNCj4gK1RoZSBgYHJ0ZV9wb3dlcl9xb3Nfc2V0 X2NwdV9yZXN1bWVfbGF0ZW5jeSgpYGAgZnVuY3Rpb24gY2FuIGNvbnRyb2wgdGhlIENQVSdzDQo+ ICtpZGxlIHN0YXRlIHNlbGVjdGlvbiBpbiBMaW51eCBhbmQgbGltaXQganVzdCB0byBlbnRlciB0 aGUgc2hhbGxvd2VzdCBpZGxlIHN0YXRlDQo+ICt0byBsb3cgdGhlIGRlbGF5IG9mIHJlc3VtaW5n IHNlcnZpY2UgYWZ0ZXIgc2xlZXBpbmcgYnkgc2V0dGluZyBzdHJpY3QgcmVzdW1lDQo+ICtsYXRl bmN5ICh6ZXJvIHZhbHVlKS4NCj4gKw0KPiArVGhlIGBgcnRlX3Bvd2VyX3Fvc19nZXRfY3B1X3Jl c3VtZV9sYXRlbmN5KClgYCBmdW5jdGlvbiBjYW4gZ2V0IHRoZSByZXN1bWUNCj4gK2xhdGVuY3kg b24gc3BlY2lmaWVkIENQVS4NCj4gKw0KPiAgUmVmZXJlbmNlcw0KPiAgLS0tLS0tLS0tLQ0KPiAN Cj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRfMTEucnN0IGIv ZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yNF8xMS5yc3QNCj4gaW5kZXggMGZmNzBkOTA1 Ny4uYmQ3MmQwYTU5NSAxMDA2NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFz ZV8yNF8xMS5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yNF8xMS5y c3QNCj4gQEAgLTU1LDYgKzU1LDExIEBAIE5ldyBGZWF0dXJlcw0KPiAgICAgICBBbHNvLCBtYWtl IHN1cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0ZXh0IGF0IHRoZSBtYXJnaW4uDQo+ICAgICAgID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g DQo+ICsqICoqSW50cm9kdWNlIHBlci1DUFUgUE0gUW9TIGludGVyZmFjZS4qKg0KPiArDQo+ICsg ICogQWRkIHBlci1DUFUgUE0gUW9TIGludGVyZmFjZSB0byBsb3cgdGhlIGRlbGF5IGFmdGVyIHNs ZWVwIGJ5IGNvbnRyb2xsaW5nDQo+ICsgICAgQ1BVIGlkbGUgc3RhdGUgc2VsZWN0aW9uLg0KPiAr DQo+IA0KPiAgUmVtb3ZlZCBJdGVtcw0KPiAgLS0tLS0tLS0tLS0tLQ0KPiBkaWZmIC0tZ2l0IGEv bGliL3Bvd2VyL21lc29uLmJ1aWxkIGIvbGliL3Bvd2VyL21lc29uLmJ1aWxkDQo+IGluZGV4IGI4 NDI2NTg5YjIuLjgyMjJlMTc4YjAgMTAwNjQ0DQo+IC0tLSBhL2xpYi9wb3dlci9tZXNvbi5idWls ZA0KPiArKysgYi9saWIvcG93ZXIvbWVzb24uYnVpbGQNCj4gQEAgLTIzLDEyICsyMywxNCBAQCBz b3VyY2VzID0gZmlsZXMoDQo+ICAgICAgICAgICdydGVfcG93ZXIuYycsDQo+ICAgICAgICAgICdy dGVfcG93ZXJfdW5jb3JlLmMnLA0KPiAgICAgICAgICAncnRlX3Bvd2VyX3BtZF9tZ210LmMnLA0K PiArICAgICAgICAncnRlX3Bvd2VyX3Fvcy5jJywNCj4gICkNCj4gIGhlYWRlcnMgPSBmaWxlcygN Cj4gICAgICAgICAgJ3J0ZV9wb3dlci5oJywNCj4gICAgICAgICAgJ3J0ZV9wb3dlcl9ndWVzdF9j aGFubmVsLmgnLA0KPiAgICAgICAgICAncnRlX3Bvd2VyX3BtZF9tZ210LmgnLA0KPiAgICAgICAg ICAncnRlX3Bvd2VyX3VuY29yZS5oJywNCj4gKyAgICAgICAgJ3J0ZV9wb3dlcl9xb3MuaCcsDQo+ ICApDQo+ICBpZiBjYy5oYXNfYXJndW1lbnQoJy1Xbm8tY2FzdC1xdWFsJykNCj4gICAgICBjZmxh Z3MgKz0gJy1Xbm8tY2FzdC1xdWFsJw0KPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL3J0ZV9wb3dl cl9xb3MuYyBiL2xpYi9wb3dlci9ydGVfcG93ZXJfcW9zLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uOGViMjZjZDQxYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL2xpYi9wb3dlci9ydGVfcG93ZXJfcW9zLmMNCj4gQEAgLTAsMCArMSwxMTEgQEANCj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChj KSAyMDI0IEhpU2lsaWNvbiBMaW1pdGVkDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGVycm5v Lmg+DQo+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsN Cj4gKyNpbmNsdWRlIDxydGVfbGNvcmUuaD4NCj4gKyNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ICsN Cj4gKyNpbmNsdWRlICJwb3dlcl9jb21tb24uaCINCj4gKyNpbmNsdWRlICJydGVfcG93ZXJfcW9z LmgiDQo+ICsNCj4gKyNkZWZpbmUgUE1fUU9TX1NZU0ZJTEVfUkVTVU1FX0xBVEVOQ1lfVVMJXA0K PiArCSIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUldS9wb3dlci9wbV9xb3NfcmVzdW1lX2xh dGVuY3lfdXMiDQo+ICsNCj4gKyNkZWZpbmUgUE1fUU9TX0NQVV9SRVNVTUVfTEFURU5DWV9CVUZf TEVOCTMyDQo+ICsNCj4gK2ludA0KPiArcnRlX3Bvd2VyX3Fvc19zZXRfY3B1X3Jlc3VtZV9sYXRl bmN5KHVpbnQxNl90IGxjb3JlX2lkLCBpbnQgbGF0ZW5jeSkNCj4gK3sNCj4gKwljaGFyIGJ1ZltQ TV9RT1NfQ1BVX1JFU1VNRV9MQVRFTkNZX0JVRl9MRU5dOw0KPiArCUZJTEUgKmY7DQo+ICsJaW50 IHJldDsNCj4gKw0KPiArCWlmICghcnRlX2xjb3JlX2lzX2VuYWJsZWQobGNvcmVfaWQpKSB7DQo+ ICsJCVBPV0VSX0xPRyhFUlIsICJsY29yZSBpZCAldSBpcyBub3QgZW5hYmxlZCIsIGxjb3JlX2lk KTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGxhdGVuY3kgPCAw KSB7DQo+ICsJCVBPV0VSX0xPRyhFUlIsICJsYXRlbmN5IHNob3VsZCBiZSBncmVhdGVyIHRoYW4g YW5kIGVxdWFsIHRvIDAiKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJ cmV0ID0gb3Blbl9jb3JlX3N5c2ZzX2ZpbGUoJmYsICJ3IiwgUE1fUU9TX1NZU0ZJTEVfUkVTVU1F X0xBVEVOQ1lfVVMsIGxjb3JlX2lkKTsNCg0KVGhhdCB3YXMgYWxyZWFkeSBicm91Z2h0IGJ5IE1v cnRlbjoNCmxjb3JlX2lkIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gY3B1X2NvcmVfaWQgKGNwdSBh ZmZpbml0eSkuDQpMb29raW5nIHRocm91Z2ggcG93ZXIgbGlicmFyeSBpdCBpcyBub3Qgc3BlY2lm aWMgdG8gdGhhdCBwYXJ0aWN1bGFyIHBhdGNoLA0KYnV0IHNvcnQgb2YgY29tbW9uIGxpbWl0YXRp b24gKGJ1Zz8pIGluIHJ0ZV9wb3dlciBsaWIuICANCiANCg0KPiArCWlmIChyZXQgIT0gMCkgew0K PiArCQlQT1dFUl9MT0coRVJSLCAiRmFpbGVkIHRvIG9wZW4gIlBNX1FPU19TWVNGSUxFX1JFU1VN RV9MQVRFTkNZX1VTLCBsY29yZV9pZCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ ICsJLyoNCj4gKwkgKiBCYXNlZCBvbiB0aGUgc3lzZnMgaW50ZXJmYWNlIHBtX3Fvc19yZXN1bWVf bGF0ZW5jeV91cyB1bmRlcg0KPiArCSAqIEBQTV9RT1NfU1lTRklMRV9SRVNVTUVfTEFURU5DWV9V UyBkaXJlY3RvcnkgaW4ga2VybmVsLCB0aGVpciBtZWFuaW5nDQo+ICsJICogaXMgYXMgZm9sbG93 cyBmb3IgZGlmZmVyZW50IGlucHV0IHN0cmluZy4NCj4gKwkgKiAxPiB0aGUgcmVzdW1lIGxhdGVu Y3kgaXMgMCBpZiB0aGUgaW5wdXQgaXMgIm4vYSIuDQo+ICsJICogMj4gdGhlIHJlc3VtZSBsYXRl bmN5IGlzIG5vIGNvbnN0cmFpbnQgaWYgdGhlIGlucHV0IGlzICIwIi4NCj4gKwkgKiAzPiB0aGUg cmVzdW1lIGxhdGVuY3kgaXMgdGhlIGFjdHVhbCB2YWx1ZSB0byBiZSBzZXQuDQo+ICsJICovDQo+ ICsJaWYgKGxhdGVuY3kgPT0gMCkNCj4gKwkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVz IiwgIm4vYSIpOw0KPiArCWVsc2UgaWYgKGxhdGVuY3kgPT0gUlRFX1BPV0VSX1FPU19SRVNVTUVf TEFURU5DWV9OT19DT05TVFJBSU5UKQ0KPiArCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAi JXUiLCAwKTsNCj4gKwllbHNlDQo+ICsJCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIldSIs IGxhdGVuY3kpOw0KPiArDQo+ICsJcmV0ID0gd3JpdGVfY29yZV9zeXNmc19zKGYsIGJ1Zik7DQo+ ICsJaWYgKHJldCAhPSAwKQ0KPiArCQlQT1dFUl9MT0coRVJSLCAiRmFpbGVkIHRvIHdyaXRlICJQ TV9RT1NfU1lTRklMRV9SRVNVTUVfTEFURU5DWV9VUywgbGNvcmVfaWQpOw0KPiArDQo+ICsJZmNs b3NlKGYpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiAraW50DQo+ICtydGVf cG93ZXJfcW9zX2dldF9jcHVfcmVzdW1lX2xhdGVuY3kodWludDE2X3QgbGNvcmVfaWQpDQo+ICt7 DQo+ICsJY2hhciBidWZbUE1fUU9TX0NQVV9SRVNVTUVfTEFURU5DWV9CVUZfTEVOXTsNCj4gKwlp bnQgbGF0ZW5jeSA9IC0xOw0KPiArCUZJTEUgKmY7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlm ICghcnRlX2xjb3JlX2lzX2VuYWJsZWQobGNvcmVfaWQpKSB7DQo+ICsJCVBPV0VSX0xPRyhFUlIs ICJsY29yZSBpZCAldSBpcyBub3QgZW5hYmxlZCIsIGxjb3JlX2lkKTsNCj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0ID0gb3Blbl9jb3JlX3N5c2ZzX2ZpbGUoJmYsICJy IiwgUE1fUU9TX1NZU0ZJTEVfUkVTVU1FX0xBVEVOQ1lfVVMsIGxjb3JlX2lkKTsNCj4gKwlpZiAo cmV0ICE9IDApIHsNCj4gKwkJUE9XRVJfTE9HKEVSUiwgIkZhaWxlZCB0byBvcGVuICJQTV9RT1Nf U1lTRklMRV9SRVNVTUVfTEFURU5DWV9VUywgbGNvcmVfaWQpOw0KPiArCQlyZXR1cm4gcmV0Ow0K PiArCX0NCj4gKw0KPiArCXJldCA9IHJlYWRfY29yZV9zeXNmc19zKGYsIGJ1Ziwgc2l6ZW9mKGJ1 ZikpOw0KPiArCWlmIChyZXQgIT0gMCkgew0KPiArCQlQT1dFUl9MT0coRVJSLCAiRmFpbGVkIHRv IHJlYWQgIlBNX1FPU19TWVNGSUxFX1JFU1VNRV9MQVRFTkNZX1VTLCBsY29yZV9pZCk7DQo+ICsJ CWdvdG8gb3V0Ow0KPiArCX0NCj4gKw0KPiArCS8qDQo+ICsJICogQmFzZWQgb24gdGhlIHN5c2Zz IGludGVyZmFjZSBwbV9xb3NfcmVzdW1lX2xhdGVuY3lfdXMgdW5kZXINCj4gKwkgKiBAUE1fUU9T X1NZU0ZJTEVfUkVTVU1FX0xBVEVOQ1lfVVMgZGlyZWN0b3J5IGluIGtlcm5lbCwgdGhlaXIgbWVh bmluZw0KPiArCSAqIGlzIGFzIGZvbGxvd3MgZm9yIGRpZmZlcmVudCBvdXRwdXQgc3RyaW5nLg0K PiArCSAqIDE+IHRoZSByZXN1bWUgbGF0ZW5jeSBpcyAwIGlmIHRoZSBvdXRwdXQgaXMgIm4vYSIu DQo+ICsJICogMj4gdGhlIHJlc3VtZSBsYXRlbmN5IGlzIG5vIGNvbnN0cmFpbnQgaWYgdGhlIG91 dHB1dCBpcyAiMCIuDQo+ICsJICogMz4gdGhlIHJlc3VtZSBsYXRlbmN5IGlzIHRoZSBhY3R1YWwg dmFsdWUgaW4gdXNlZCBmb3Igb3RoZXIgc3RyaW5nLg0KPiArCSAqLw0KPiArCWlmIChzdHJjbXAo YnVmLCAibi9hIikgPT0gMCkNCj4gKwkJbGF0ZW5jeSA9IDA7DQo+ICsJZWxzZSB7DQo+ICsJCWxh dGVuY3kgPSBzdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOw0KPiArCQlsYXRlbmN5ID0gbGF0ZW5jeSA9 PSAwID8gUlRFX1BPV0VSX1FPU19SRVNVTUVfTEFURU5DWV9OT19DT05TVFJBSU5UIDogbGF0ZW5j eTsNCj4gKwl9DQo+ICsNCj4gK291dDoNCj4gKwlmY2xvc2UoZik7DQo+ICsNCj4gKwlyZXR1cm4g bGF0ZW5jeSAhPSAtMSA/IGxhdGVuY3kgOiByZXQ7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9saWIv cG93ZXIvcnRlX3Bvd2VyX3Fvcy5oIGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9xb3MuaA0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi45OTBjNDg4MzczDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9xb3MuaA0KPiBAQCAtMCwwICsx LDczIEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsg KiBDb3B5cmlnaHQoYykgMjAyNCBIaVNpbGljb24gTGltaXRlZA0KPiArICovDQo+ICsNCj4gKyNp Zm5kZWYgUlRFX1BPV0VSX1FPU19IDQo+ICsjZGVmaW5lIFJURV9QT1dFUl9RT1NfSA0KPiArDQo+ ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxydGVfY29tcGF0Lmg+DQo+ ICsNCj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiArZXh0ZXJuICJDIiB7DQo+ICsjZW5kaWYNCj4g Kw0KPiArLyoqDQo+ICsgKiBAZmlsZSBydGVfcG93ZXJfcW9zLmgNCj4gKyAqDQo+ICsgKiBQTSBR b1MgQVBJLg0KPiArICoNCj4gKyAqIFRoZSBDUFUtd2lkZSByZXN1bWUgbGF0ZW5jeSBsaW1pdCBo YXMgYSBwb3NpdGl2ZSBpbXBhY3Qgb24gdGhpcyBDUFUncyBpZGxlDQo+ICsgKiBzdGF0ZSBzZWxl Y3Rpb24gaW4gZWFjaCBjcHVpZGxlIGdvdmVybm9yLg0KPiArICogUGxlYXNlIHNlZSB0aGUgUE0g UW9TIG9uIENQVSB3aWRlIGluIHRoZSBmb2xsb3dpbmcgbGluazoNCj4gKyAqIGh0dHBzOi8vd3d3 Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L2FkbWluLWd1aWRlL2FiaS10ZXN0aW5nLmh0bWw/ aGlnaGxpZ2h0PXBtX3Fvc19yZXN1bWVfbGF0ZW5jeV91cyNhYmktc3lzLWRldmljZXMtDQo+IHBv d2VyLXBtLXFvcy1yZXN1bWUtbGF0ZW5jeS11cw0KPiArICoNCj4gKyAqIFRoZSBkZWVwZXIgdGhl IGlkbGUgc3RhdGUsIHRoZSBsb3dlciB0aGUgcG93ZXIgY29uc3VtcHRpb24sIGJ1dCB0aGUNCj4g KyAqIGxvbmdlciB0aGUgcmVzdW1lIHRpbWUuIFNvbWUgc2VydmljZSBhcmUgZGVsYXkgc2Vuc2l0 aXZlIGFuZCB2ZXJ5IGV4Y2VwdCB0aGUNCj4gKyAqIGxvdyByZXN1bWUgdGltZSwgbGlrZSBpbnRl cnJ1cHQgcGFja2V0IHJlY2VpdmluZyBtb2RlLg0KPiArICoNCj4gKyAqIEluIHRoZXNlIGNhc2Us IHBlci1DUFUgUE0gUW9TIEFQSSBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoaXMgQ1BVJ3MgaWRs ZQ0KPiArICogc3RhdGUgc2VsZWN0aW9uIGFuZCBsaW1pdCBqdXN0IGVudGVyIHRoZSBzaGFsbG93 ZXN0IGlkbGUgc3RhdGUgdG8gbG93IHRoZQ0KPiArICogZGVsYXkgYWZ0ZXIgc2xlZXAgYnkgc2V0 dGluZyBzdHJpY3QgcmVzdW1lIGxhdGVuY3kgKHplcm8gdmFsdWUpLg0KPiArICovDQo+ICsNCj4g KyNkZWZpbmUgUlRFX1BPV0VSX1FPU19TVFJJQ1RfTEFURU5DWV9WQUxVRSAgICAgICAgICAgICAw DQo+ICsjZGVmaW5lIFJURV9QT1dFUl9RT1NfUkVTVU1FX0xBVEVOQ1lfTk9fQ09OU1RSQUlOVCAg ICAoKGludCkoVUlOVDMyX01BWCA+PiAxKSkNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0K PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBsY29yZV9pZA0KPiArICogICB0YXJnZXQgbG9n aWNhbCBjb3JlIGlkDQo+ICsgKg0KPiArICogQHBhcmFtIGxhdGVuY3kNCj4gKyAqICAgVGhlIGxh dGVuY3kgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBhbmQgZXF1YWwgdG8gemVybyBpbiBtaWNyb3Nl Y29uZHMgdW5pdC4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIDAgb24gc3VjY2Vzcy4g T3RoZXJ3aXNlIG5lZ2F0aXZlIHZhbHVlIGlzIHJldHVybmVkLg0KPiArICovDQo+ICtfX3J0ZV9l eHBlcmltZW50YWwNCj4gK2ludCBydGVfcG93ZXJfcW9zX3NldF9jcHVfcmVzdW1lX2xhdGVuY3ko dWludDE2X3QgbGNvcmVfaWQsIGludCBsYXRlbmN5KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2Fy bmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQg cHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIEdldCB0aGUgY3VycmVudCByZXN1bWUgbGF0ZW5j eSBvZiB0aGlzIGxvZ2ljYWwgY29yZS4NCj4gKyAqIFRoZSBkZWZhdWx0IHZhbHVlIGluIGtlcm5l bCBpcyBAc2VlIFJURV9QT1dFUl9RT1NfUkVTVU1FX0xBVEVOQ1lfTk9fQ09OU1RSQUlOVA0KPiAr ICogaWYgZG9uJ3Qgc2V0IGl0Lg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgTmVnYXRp dmUgdmFsdWUgb24gZmFpbHVyZS4NCj4gKyAqICAgPj0gMCBtZWFucyB0aGUgYWN0dWFsIHJlc3Vt ZSBsYXRlbmN5IGxpbWl0IG9uIHRoaXMgY29yZS4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVu dGFsDQo+ICtpbnQgcnRlX3Bvd2VyX3Fvc19nZXRfY3B1X3Jlc3VtZV9sYXRlbmN5KHVpbnQxNl90 IGxjb3JlX2lkKTsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ICsjZW5kaWYN Cj4gKw0KPiArI2VuZGlmIC8qIFJURV9QT1dFUl9RT1NfSCAqLw0KPiBkaWZmIC0tZ2l0IGEvbGli L3Bvd2VyL3ZlcnNpb24ubWFwIGIvbGliL3Bvd2VyL3ZlcnNpb24ubWFwDQo+IGluZGV4IGM5YTIy NjYxNGUuLjA4ZjE3OGEzOWQgMTAwNjQ0DQo+IC0tLSBhL2xpYi9wb3dlci92ZXJzaW9uLm1hcA0K PiArKysgYi9saWIvcG93ZXIvdmVyc2lvbi5tYXANCj4gQEAgLTUxLDQgKzUxLDggQEAgRVhQRVJJ TUVOVEFMIHsNCj4gIAlydGVfcG93ZXJfc2V0X3VuY29yZV9lbnY7DQo+ICAJcnRlX3Bvd2VyX3Vu Y29yZV9mcmVxczsNCj4gIAlydGVfcG93ZXJfdW5zZXRfdW5jb3JlX2VudjsNCj4gKw0KPiArCSMg YWRkZWQgaW4gMjQuMTENCj4gKwlydGVfcG93ZXJfcW9zX2dldF9jcHVfcmVzdW1lX2xhdGVuY3k7 DQo+ICsJcnRlX3Bvd2VyX3Fvc19zZXRfY3B1X3Jlc3VtZV9sYXRlbmN5Ow0KPiAgfTsNCj4gLS0N Cj4gMi4yMi4wDQoNCg==