From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH] drm/amdgpu: add pmu counters Date: Fri, 24 May 2019 19:40:58 +0000 Message-ID: <1b32c8f4-7554-ab9b-d1d1-3d3850d01b59@amd.com> References: <20190524191229.84833-1-jonathan.kim@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190524191229.84833-1-jonathan.kim-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Kim, Jonathan" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" DQpPbiAyMDE5LTA1LTI0IDM6MTIgcC5tLiwgS2ltLCBKb25hdGhhbiB3cm90ZToNCj4gYWRkIHBt dSBjb3VudGVycyB0byBtb25pdG9yIGFtZGdwdSBkZXZpY2UgcGVyZm9ybWFuY2UNCj4NCj4gQ2hh bmdlLUlkOiBJODQ0OWY0ZWE4MjRjNDExZWUyNGE1Yjc4M2FjMDY2MTg5YjlkZTA4ZQ0KPiBTaWdu ZWQtb2ZmLWJ5OiBKb25hdGhhbiBLaW0gPGpvbmF0aGFuLmtpbUBhbWQuY29tPg0KPiAtLS0NCj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSAgICAgICAgfCAgIDIgKy0NCj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCAgIDUgKw0KPiAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbXUuYyAgICB8IDM3MCArKysrKysr KysrKysrKysrKysrKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11 LmggICAgfCAgMzcgKysrDQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA0MTMgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcG11LmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5oDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01h a2VmaWxlDQo+IGluZGV4IDExYTY1MWZmN2YwZC4uOTBkNGM1ZDI5OWRkIDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KPiBAQCAtNTQsNyArNTQsNyBAQCBhbWRncHUteSAr PSBhbWRncHVfZGV2aWNlLm8gYW1kZ3B1X2ttcy5vIFwNCj4gICAJYW1kZ3B1X2d0dF9tZ3IubyBh bWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdwdV9hdG9tZmlybXdhcmUubyBcDQo+ ICAgCWFtZGdwdV92Zl9lcnJvci5vIGFtZGdwdV9zY2hlZC5vIGFtZGdwdV9kZWJ1Z2ZzLm8gYW1k Z3B1X2lkcy5vIFwNCj4gICAJYW1kZ3B1X2dtYy5vIGFtZGdwdV94Z21pLm8gYW1kZ3B1X2NzYS5v IGFtZGdwdV9yYXMubyBhbWRncHVfdm1fY3B1Lm8gXA0KPiAtCWFtZGdwdV92bV9zZG1hLm8NCj4g KwlhbWRncHVfdm1fc2RtYS5vIGFtZGdwdV9wbXUubw0KPiAgIA0KPiAgICMgYWRkIGFzaWMgc3Bl Y2lmaWMgYmxvY2sNCj4gICBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lrLm8g Y2lrX2loLm8ga3Zfc21jLm8ga3ZfZHBtLm8gXA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jDQo+IGluZGV4IDU4MmY1NjM1ZmNiMi4uNTFmNDc5YjM1N2ExIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+IEBA IC02MSw2ICs2MSw3IEBADQo+ICAgDQo+ICAgI2luY2x1ZGUgImFtZGdwdV94Z21pLmgiDQo+ICAg I2luY2x1ZGUgImFtZGdwdV9yYXMuaCINCj4gKyNpbmNsdWRlICJhbWRncHVfcG11LmgiDQo+ICAg DQo+ICAgTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUvdmVnYTEwX2dwdV9pbmZvLmJpbiIpOw0KPiAg IE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMl9ncHVfaW5mby5iaW4iKTsNCj4gQEAgLTI3 NDgsNiArMjc0OSwxMCBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LA0KPiAgIAkJZ290byBmYWlsZWQ7DQo+ICAgCX0NCj4gICANCj4gKwlyID0gYW1k Z3B1X3BtdV9pbml0KGFkZXYpOw0KPiArCWlmIChyKQ0KPiArCQlkZXZfZXJyKGFkZXYtPmRldiwg ImFtZGdwdV9wbXVfaW5pdCBmYWlsZWRcbiIpOw0KPiArDQo+ICAgCS8qIG11c3Qgc3VjY2VlZC4g Ki8NCj4gICAJYW1kZ3B1X3Jhc19yZXN1bWUoYWRldik7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG11LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5iOTkxZTk4OGQ2ZmENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmMNCj4gQEAgLTAsMCArMSwzNzAgQEAN Cj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgMjAxOSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMu DQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwNCj4gKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQ0KPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gKyAqDQo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bg0KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuDQo+ICsgKg0KPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQo+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBP UiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1INCj4gKyAqIE9U SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLA0KPiArICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQo+ICsgKiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuDQo+ICsgKg0KPiArICogQXV0aG9yOiBKb25hdGhhbiBLaW0gPGpvbmF0aGFu LmtpbUBhbWQuY29tPg0KPiArICoNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIHByX2ZtdChmbXQp CSJwZXJmL2FtZGdwdV9wbXU6ICIgZm10DQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2 ZW50Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Nw dW1hc2suaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ICsjaW5jbHVkZSAiYW1kZ3B1 LmgiDQo+ICsjaW5jbHVkZSAiYW1kZ3B1X3BtdS5oIg0KPiArI2luY2x1ZGUgImRmX3YzXzYuaCIN Cj4gKw0KPiArI2RlZmluZSBQTVVfTkFNRV9TSVpFIDMyDQo+ICsNCj4gK3N0cnVjdCBhbWRncHVf cGVyZl9zdGF0dXMgew0KPiArCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsNCj4gKwlzdHJ1Y3QgcG11 IHBtdTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqZ3B1Ow0KPiArCWludCBub2RlX2lkeDsN Cj4gKwljaGFyIG5hbWVbUE1VX05BTUVfU0laRV07DQo+ICsJdTggbWF4X2NvdW50ZXJzOw0KPiAr CXVpbnQ2NF90IGNudHJfYXNzaWduX21hc2s7DQo+ICsJcmF3X3NwaW5sb2NrX3QgbG9jazsNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBMSVNUX0hFQUQoYW1kZ3B1X3BlcmZfc3RhdHVzX2xpc3QpOw0K PiArDQo+ICsNCj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ICsgKiBzeXNmcyBmb3JtYXQgYXR0cmlidXRlcw0KPiArICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KPiArDQo+ICtQTVVfRk9STUFUX0FUVFIo ZGZfZXZlbnQsCQkiY29uZmlnOjAtNyIpOw0KPiArUE1VX0ZPUk1BVF9BVFRSKGRmX2luc3RhbmNl LAkJImNvbmZpZzo4LTE1Iik7DQo+ICtQTVVfRk9STUFUX0FUVFIoZGZfdW5pdG1hc2ssCQkiY29u ZmlnOjE2LTIzIik7DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphbWRncHVfcG11 X2Zvcm1hdF9hdHRyc1tdID0gew0KPiArCSZmb3JtYXRfYXR0cl9kZl9ldmVudC5hdHRyLA0KPiAr CSZmb3JtYXRfYXR0cl9kZl9pbnN0YW5jZS5hdHRyLA0KPiArCSZmb3JtYXRfYXR0cl9kZl91bml0 bWFzay5hdHRyLA0KPiArCU5VTEwsDQo+ICt9Ow0KPiArDQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGFtZGdwdV9wbXVfZm9ybWF0X2dyb3VwID0gew0KPiArCS5uYW1lID0g ImZvcm1hdCIsDQo+ICsJLmF0dHJzID0gYW1kZ3B1X3BtdV9mb3JtYXRfYXR0cnMsDQo+ICt9Ow0K PiArDQo+ICsNCj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ICsgKiBzeXNmcyBldmVudHMgYXR0cmlidXRlcw0KPiArICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KPiArDQo+ICsNCj4gK3N0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGFtZGdwdV9wbXVfZXZlbnRzX2dyb3VwID0gew0KPiArCS5uYW1l ID0gImV2ZW50cyIsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVND IHsNCj4gKwlzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgYXR0cjsNCj4gKwljb25zdCBjaGFyICpldmVu dDsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzc2l6ZV90IF9wbXVfZXZlbnRfc2hvdyhzdHJ1Y3Qg a29iamVjdCAqa29iaiwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikNCj4gK3sNCj4gKwlzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVNDICpldmVu dCA9DQo+ICsJCWNvbnRhaW5lcl9vZihhdHRyLCBzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVND LCBhdHRyKTsNCj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgZXZlbnQtPmV2ZW50KTsN Cj4gK30NCj4gKw0KPiArI2RlZmluZSBBTURHUFVfUE1VX0VWRU5UX0RFU0MoX25hbWUsIF9ldmVu dCkJCQlcDQo+ICt7CQkJCQkJCQlcDQo+ICsJLmF0dHIgID0gX19BVFRSKF9uYW1lLCAwNDQ0LCBf cG11X2V2ZW50X3Nob3csIE5VTEwpLAlcDQo+ICsJLmV2ZW50ID0gX2V2ZW50LAkJCQkJXA0KPiAr fQ0KPiArDQo+ICsNCj4gKy8qIERGIGV2ZW50IGRlc2NyaXB0b3JzICovDQo+ICtzdGF0aWMgc3Ry dWN0IEFNREdQVV9QTVVfRVZFTlRfREVTQyBhbWRncHVfdmVnYTIwX2RmX2V2ZW50X2Rlc2NzW10g PSB7DQo+ICsJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UwX3Bjc291dF90eGRhdGEsDQo+ICsJ CQkiZGZfZXZlbnQ9MHg3LGRmX2luc3RhbmNlPTB4NDYsZGZfdW5pdG1hc2s9MHgyIiksDQo+ICsJ QU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UxX3Bjc291dF90eGRhdGEsDQo+ICsJCQkiZGZfZXZl bnQ9MHg3LGRmX2luc3RhbmNlPTB4NDcsZGZfdW5pdG1hc2s9MHgyIiksDQo+ICsJQU1ER1BVX1BN VV9FVkVOVF9ERVNDKGNha2UwX3Bjc291dF90eG1ldGEsDQo+ICsJCQkiZGZfZXZlbnQ9MHg3LGRm X2luc3RhbmNlPTB4NDYsZGZfdW5pdG1hc2s9MHg0IiksDQo+ICsJQU1ER1BVX1BNVV9FVkVOVF9E RVNDKGNha2UxX3Bjc291dF90eG1ldGEsDQo+ICsJCQkiZGZfZXZlbnQ9MHg3LGRmX2luc3RhbmNl PTB4NDcsZGZfdW5pdG1hc2s9MHg0IiksDQo+ICsJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2Uw X2Z0aWluc3RhdF9yZXFhbGxvYywNCj4gKwkJCSJkZl9ldmVudD0weGIsZGZfaW5zdGFuY2U9MHg0 NixkZl91bml0bWFzaz0weDQiKSwNCj4gKwlBTURHUFVfUE1VX0VWRU5UX0RFU0MoY2FrZTFfZnRp aW5zdGF0X3JlcWFsbG9jLA0KPiArCQkJImRmX2V2ZW50PTB4YixkZl9pbnN0YW5jZT0weDQ3LGRm X3VuaXRtYXNrPTB4NCIpLA0KPiArCUFNREdQVV9QTVVfRVZFTlRfREVTQyhjYWtlMF9mdGlpbnN0 YXRfcnNwYWxsb2MsDQo+ICsJCQkiZGZfZXZlbnQ9MHhiLGRmX2luc3RhbmNlPTB4NDYsZGZfdW5p dG1hc2s9MHg4IiksDQo+ICsJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UxX2Z0aWluc3RhdF9y c3BhbGxvYywNCj4gKwkJCSJkZl9ldmVudD0weGIsZGZfaW5zdGFuY2U9MHg0NyxkZl91bml0bWFz az0weDgiKSwNCj4gKwl7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9LA0KPiArfTsNCj4gKw0KPiAr DQo+ICsvKiBJbml0aWFsaXplIFBNVSAqLw0KPiArc3RhdGljIGludCBhbWRncHVfcGVyZl9ldmVu dF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkNCj4gK3sNCj4gKwlzdHJ1Y3QgaHdfcGVy Zl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gKw0KPiArCS8qIHRlc3QgdGhlIGV2ZW50IGF0 dHIgdHlwZSBjaGVjayBmb3IgUE1VIGVudW1lcmF0aW9uICovDQo+ICsJaWYgKGV2ZW50LT5hdHRy LnR5cGUgIT0gZXZlbnQtPnBtdS0+dHlwZSkNCj4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ICsNCj4g KwkvKiB1cGRhdGUgdGhlIGh3X3BlcmZfZXZlbnQgc3RydWN0IHdpdGggY29uZmlnIGRhdGEgKi8N Cj4gKwlod2MtPmNvbmYgPSBldmVudC0+YXR0ci5jb25maWc7DQo+ICsNCj4gKwlyZXR1cm4gMDsN Cj4gK30NCj4gKw0KPiArLyogU3RhcnQgUE1VICovDQo+ICtzdGF0aWMgdm9pZCBhbWRncHVfcGVy Zl9zdGFydChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykNCj4gK3sNCj4gKwlz dHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IGNvbnRhaW5lcl9vZihldmVudC0+cG11LA0KPiArCQkJc3RydWN0IGFt ZGdwdV9wZXJmX3N0YXR1cywgcG11KS0+Z3B1Ow0KPiArDQo+ICsJaWYgKFdBUk5fT05fT05DRSgh KGh3Yy0+c3RhdGUgJiBQRVJGX0hFU19TVE9QUEVEKSkpDQo+ICsJCXJldHVybjsNCj4gKw0KPiAr CVdBUk5fT05fT05DRSghKGh3Yy0+c3RhdGUgJiBQRVJGX0hFU19VUFRPREFURSkpOw0KPiArCWh3 Yy0+c3RhdGUgPSAwOw0KPiArDQo+ICsJaWYgKCEoZmxhZ3MgJiBQRVJGX0VGX1JFTE9BRCkpDQo+ ICsJCWFkZXYtPmRmX2Z1bmNzLT5wbWNfc3RhcnQoYWRldiwgaHdjLT5jb25mLCAxKTsNCj4gKw0K PiArCWFkZXYtPmRmX2Z1bmNzLT5wbWNfc3RhcnQoYWRldiwgaHdjLT5jb25mLCAwKTsNCj4gKw0K PiArCXBlcmZfZXZlbnRfdXBkYXRlX3VzZXJwYWdlKGV2ZW50KTsNCj4gKw0KPiArfQ0KPiArDQo+ ICsvKiBSZWFkIFBNVSAgKi8NCj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9wZXJmX3JlYWQoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50KQ0KPiArew0KPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2Mg PSAmZXZlbnQtPmh3Ow0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gY29udGFpbmVy X29mKGV2ZW50LT5wbXUsDQo+ICsJCQkJCQkgIHN0cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMsDQo+ ICsJCQkJCQkgIHBtdSktPmdwdTsNCj4gKw0KPiArCXU2NCBjb3VudCwgcHJldjsNCj4gKw0KPiAr CWFkZXYtPmRmX2Z1bmNzLT5wbWNfZ2V0X2NvdW50KGFkZXYsIGh3Yy0+Y29uZiwgJmNvdW50KTsN Cj4gKw0KPiArCXByZXYgPSBsb2NhbDY0X3JlYWQoJmh3Yy0+cHJldl9jb3VudCk7DQo+ICsJaWYg KGxvY2FsNjRfY21weGNoZygmaHdjLT5wcmV2X2NvdW50LCBwcmV2LCBjb3VudCkgIT0gcHJldikN Cj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJbG9jYWw2NF9hZGQoY291bnQgLSBwcmV2LCAmZXZlbnQt PmNvdW50KTsNCj4gK30NCj4gKw0KPiArLyogU3RvcCBQTVUgKi8NCj4gK3N0YXRpYyB2b2lkIGFt ZGdwdV9wZXJmX3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpDQo+ICt7 DQo+ICsJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+ICsJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjb250YWluZXJfb2YoZXZlbnQtPnBtdSwNCj4gKwkJCQkJ CSAgc3RydWN0IGFtZGdwdV9wZXJmX3N0YXR1cywNCj4gKwkJCQkJCSAgcG11KS0+Z3B1Ow0KPiAr DQo+ICsJaWYgKGh3Yy0+c3RhdGUgJiBQRVJGX0hFU19VUFRPREFURSkNCj4gKwkJcmV0dXJuOw0K PiArDQo+ICsJYWRldi0+ZGZfZnVuY3MtPnBtY19zdG9wKGFkZXYsIGh3Yy0+Y29uZiwgMCk7DQo+ ICsNCj4gKwlXQVJOX09OX09OQ0UoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1NUT1BQRUQpOw0KPiAr CWh3Yy0+c3RhdGUgfD0gUEVSRl9IRVNfU1RPUFBFRDsNCj4gKw0KPiArCWlmIChod2MtPnN0YXRl ICYgUEVSRl9IRVNfVVBUT0RBVEUpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWFtZGdwdV9wZXJm X3JlYWQoZXZlbnQpOw0KPiArCWh3Yy0+c3RhdGUgfD0gUEVSRl9IRVNfVVBUT0RBVEU7DQo+ICt9 DQo+ICsNCj4gKy8qIEFkZCBQTVUgICovDQo+ICtzdGF0aWMgaW50IGFtZGdwdV9wZXJmX2FkZChz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykNCj4gK3sNCj4gKw0KPiArCXN0cnVj dCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0KPiArCWludCByZXR2YWw7DQo+ICsN Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGNvbnRhaW5lcl9vZihldmVudC0+cG11 LA0KPiArCQkJCQkJICBzdHJ1Y3QgYW1kZ3B1X3BlcmZfc3RhdHVzLA0KPiArCQkJCQkJICBwbXUp LT5ncHU7DQo+ICsNCj4gKwlldmVudC0+aHcuc3RhdGUgPSBQRVJGX0hFU19VUFRPREFURSB8IFBF UkZfSEVTX1NUT1BQRUQ7DQo+ICsNCj4gKwlhZGV2LT5kZl9mdW5jcy0+cG1jX3N0YXJ0KGFkZXYs IGh3Yy0+Y29uZiwgMSk7DQo+ICsNCj4gKwlpZiAocmV0dmFsKQ0KPiArCQlyZXR1cm4gcmV0dmFs Ow0KPiArDQo+ICsJaWYgKGZsYWdzICYgUEVSRl9FRl9TVEFSVCkNCj4gKwkJYW1kZ3B1X3BlcmZf c3RhcnQoZXZlbnQsIFBFUkZfRUZfUkVMT0FEKTsNCj4gKw0KPiArCXJldHVybiByZXR2YWw7DQo+ ICsNCj4gK30NCj4gKw0KPiArLyogRGVsZXRlIFBNVSAgKi8NCj4gK3N0YXRpYyB2b2lkIGFtZGdw dV9wZXJmX2RlbChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykNCj4gK3sNCj4g KwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCj4gKw0KPiArCXN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gY29udGFpbmVyX29mKGV2ZW50LT5wbXUsDQo+ICsJCQkJ CQkgIHN0cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMsDQo+ICsJCQkJCQkgIHBtdSktPmdwdTsNCj4g Kw0KPiArCWFtZGdwdV9wZXJmX3N0b3AoZXZlbnQsIFBFUkZfRUZfVVBEQVRFKTsNCj4gKw0KPiAr DQo+ICsJYWRldi0+ZGZfZnVuY3MtPnBtY19zdG9wKGFkZXYsIGh3Yy0+Y29uZiwgMSk7DQo+ICsN Cj4gKwlwZXJmX2V2ZW50X3VwZGF0ZV91c2VycGFnZShldmVudCk7DQo+ICt9DQo+ICsNCj4gKy8q IEluaXRpYWxpemUgU1lTRlMgYXR0cmlidXRlcyBmb3IgQU1ER1BVIFBNVSAqLw0KPiArc3RhdGlj IGludCBpbml0X2V2ZW50c19hdHRycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gK3sN Cj4gKwlzdHJ1Y3QgYXR0cmlidXRlICoqYXR0cnM7DQo+ICsJaW50IGkgPSAwLCBqOw0KPiArDQo+ ICsJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsNCj4gKwljYXNlIENISVBfVkVHQTIwOg0KPiAr CQl3aGlsZSAoYW1kZ3B1X3ZlZ2EyMF9kZl9ldmVudF9kZXNjc1tpXS5hdHRyLmF0dHIubmFtZSkN Cj4gKwkJCWkrKzsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJYnJlYWs7DQo+ICsJ fQ0KPiArDQo+ICsJYXR0cnMgPSBrY2FsbG9jKGkgKyAxLCBzaXplb2Yoc3RydWN0IGF0dHJpYnV0 ZSAqKiksIEdGUF9LRVJORUwpOw0KPiArCWlmICghYXR0cnMpDQo+ICsJCXJldHVybiAtRU5PTUVN Ow0KPiArDQo+ICsJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsNCj4gKwljYXNlIENISVBfVkVH QTIwOg0KPiArCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQ0KPiArCQkJYXR0cnNbal0gPSAmYW1k Z3B1X3ZlZ2EyMF9kZl9ldmVudF9kZXNjc1tqXS5hdHRyLmF0dHI7DQo+ICsJCWJyZWFrOw0KPiAr CWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCWFtZGdwdV9wbXVfZXZlbnRz X2dyb3VwLmF0dHJzID0gYXR0cnM7DQoNClRoaXMgaXMgYSBwZXItZGV2aWNlIGZ1bmN0aW9uIG1v ZGlmeWluZyBhIGdsb2JhbCB2YXJpYWJsZS4gVGhhdCdzIA0KcHJvYmFibHkgaW5jb3JyZWN0IGFu ZCBpdCdsbCBicmVhayBvbiBhIG11bHRpLUdQVSBzeXN0ZW0uIFRoZSANCmFtZGdwdV9wbXVfZXZl bnRzX2dyb3VwIHNob3VsZCBiZSBwZXItZGV2aWNlLCBzb21ld2hlcmUgaW4gYWRldi4NCg0KUmVn YXJkcywNCiDCoCBGZWxpeA0KDQoNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArY29uc3Qg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqYW1kZ3B1X3BtdV9hdHRyX2dyb3Vwc1tdID0gew0KPiAr CSZhbWRncHVfcG11X2Zvcm1hdF9ncm91cCwNCj4gKwkmYW1kZ3B1X3BtdV9ldmVudHNfZ3JvdXAs DQo+ICsJTlVMTCwNCj4gK307DQo+ICsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwbXUg YW1kZ3B1X3BtdSBfX2luaXRjb25zdCA9IHsNCj4gKwkuZXZlbnRfaW5pdAk9IGFtZGdwdV9wZXJm X2V2ZW50X2luaXQsDQo+ICsJLmFkZAkJPSBhbWRncHVfcGVyZl9hZGQsDQo+ICsJLmRlbAkJPSBh bWRncHVfcGVyZl9kZWwsDQo+ICsJLnN0YXJ0CQk9IGFtZGdwdV9wZXJmX3N0YXJ0LA0KPiArCS5z dG9wCQk9IGFtZGdwdV9wZXJmX3N0b3AsDQo+ICsJLnJlYWQJCT0gYW1kZ3B1X3BlcmZfcmVhZCwN Cj4gKwkudGFza19jdHhfbnIJPSBwZXJmX2ludmFsaWRfY29udGV4dCwNCj4gKwkuYXR0cl9ncm91 cHMJPSBhbWRncHVfcG11X2F0dHJfZ3JvdXBzLA0KPiArfTsNCj4gKw0KPiArLyogSW5pdGlhbGl6 ZSBEYXRhIEZhYnJpYyBQTVUgKi8NCj4gK3N0YXRpYyBpbnQgaW5pdF9kZl9wbXUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGFtZGdwdV9wZXJmX3N0YXR1cyAq cGVyZl9zdGF0dXM7DQo+ICsJc3RydWN0IGNudHJfYXNzaWduICpjX2Fzc2lnbjsNCj4gKwlpbnQg cmV0Ow0KPiArDQo+ICsJcGVyZl9zdGF0dXMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYW1kZ3B1 X3BlcmZfc3RhdHVzKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFwZXJmX3N0YXR1cykNCj4gKwkJ cmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlyYXdfc3Bpbl9sb2NrX2luaXQoJnBlcmZfc3RhdHVz LT5sb2NrKTsNCj4gKw0KPiArCS8qIGluaXRpYWxpemUgcG11IGFuZCBjb3VudGVycyBhc3NpZ25t ZW50cyAqLw0KPiArCXBlcmZfc3RhdHVzLT5wbXUgPSBhbWRncHVfcG11Ow0KPiArCXBlcmZfc3Rh dHVzLT5ncHUgPSBhZGV2Ow0KPiArCXBlcmZfc3RhdHVzLT5tYXhfY291bnRlcnMgPSBBTURHUFVf REZfTUFYX0NPVU5URVJTOw0KPiArCXBlcmZfc3RhdHVzLT5ub2RlX2lkeCA9IGFkZXYtPmRkZXYt PnByaW1hcnktPmluZGV4Ow0KPiArDQo+ICsJc25wcmludGYocGVyZl9zdGF0dXMtPm5hbWUsIFBN VV9OQU1FX1NJWkUsICJhbWRncHVfZGZfJWQiLA0KPiArCQkJYWRldi0+ZGRldi0+cHJpbWFyeS0+ aW5kZXgpOw0KPiArDQo+ICsJcmV0ID0gcGVyZl9wbXVfcmVnaXN0ZXIoJnBlcmZfc3RhdHVzLT5w bXUsIHBlcmZfc3RhdHVzLT5uYW1lLA0KPiArCQkJLTEpOw0KPiArDQo+ICsJaWYgKCFyZXQpIHsN Cj4gKwkJcHJfaW5mbygiRGV0ZWN0ZWQgQU1ER1BVIERGIENvdW50ZXJzLiAjIG9mIENvdW50ZXJz ID0gJWQuXG4iLA0KPiArCQkJCXBlcmZfc3RhdHVzLT5tYXhfY291bnRlcnMpOw0KPiArCQlsaXN0 X2FkZF90YWlsKCZwZXJmX3N0YXR1cy0+bGlzdCwgJmFtZGdwdV9wZXJmX3N0YXR1c19saXN0KTsN Cj4gKwl9IGVsc2Ugew0KPiArCQlwcl93YXJuKCJFcnJvciBpbml0aWFsaXppbmcgQU1ER1BVIERG IFBNVXMuXG4iKTsNCj4gKwkJa2ZyZWUocGVyZl9zdGF0dXMpOw0KPiArCX0NCj4gKw0KPiArCXJl dHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gKy8qIEluaXRpYWxpemUgYWxsIFBNVSBCbG9ja3MgLSBP bmx5IERGIGZvciBub3cgKi8NCj4gK3N0YXRpYyBpbnQgaW5pdF9wbXUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpDQo+ICt7DQo+ICsJaW50IHJldHZhbCA9IDA7DQo+ICsNCj4gKwlzd2l0Y2gg KGFkZXYtPmFzaWNfdHlwZSkgew0KPiArCWNhc2UgQ0hJUF9WRUdBMjA6DQo+ICsJCXJldHZhbCA9 IGluaXRfZGZfcG11KGFkZXYpOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0OiAvKiBpZ25vcmUg YWxsIG90aGVyIGNoaXBzICAqLw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4g cmV0dmFsOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qIGluaXRpYWxpemUgQU1ER1BVIFBNVSAqLw0K PiAraW50IGFtZGdwdV9wbXVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gK3sN Cj4gKw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBpbml0X2V2ZW50c19hdHRycyhhZGV2 KTsNCj4gKw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBp bml0X3BtdShhZGV2KTsNCj4gKw0KPiArCWlmIChyZXQpIHsNCj4gKwkJa2ZyZWUoYW1kZ3B1X3Bt dV9ldmVudHNfZ3JvdXAuYXR0cnMpOw0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKwl9DQo+ICsN Cj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcG11LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw Li5kMDcwZDllMjUyZmYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG11LmgNCj4gQEAgLTAsMCArMSwzNyBAQA0KPiArLyoNCj4gKyAq IENvcHlyaWdodCAyMDE5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gKyAqDQo+ICsg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQ0KPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24NCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KPiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwNCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiArICogT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+ ICsgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1INCj4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4N Cj4gKyAqDQo+ICsgKiBBdXRob3I6IEpvbmF0aGFuIEtpbSA8am9uYXRoYW4ua2ltQGFtZC5jb20+ DQo+ICsgKg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX0FNREdQVV9QTVVfSF8NCj4gKyNkZWZp bmUgX0FNREdQVV9QTVVfSF8NCj4gKw0KPiArZW51bSBhbWRncHVfcG11X3BlcmZfdHlwZSB7DQo+ ICsJUEVSRl9UWVBFX0FNREdQVV9ERiA9IDAsDQo+ICsJUEVSRl9UWVBFX0FNREdQVV9NQVgNCj4g K307DQo+ICsNCj4gKw0KPiAraW50IGFtZGdwdV9wbXVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldik7DQo+ICsNCj4gKyNlbmRpZiAvKiBfQU1ER1BVX1BNVV9IXyAqLw0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4