From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kim, Jonathan" Subject: [PATCH] drm/amdgpu: add pmu counters Date: Fri, 24 May 2019 19:12:44 +0000 Message-ID: <20190524191229.84833-1-jonathan.kim@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Language: en-US 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: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Kim, Jonathan" YWRkIHBtdSBjb3VudGVycyB0byBtb25pdG9yIGFtZGdwdSBkZXZpY2UgcGVyZm9ybWFuY2UNCg0K Q2hhbmdlLUlkOiBJODQ0OWY0ZWE4MjRjNDExZWUyNGE1Yjc4M2FjMDY2MTg5YjlkZTA4ZQ0KU2ln bmVkLW9mZi1ieTogSm9uYXRoYW4gS2ltIDxqb25hdGhhbi5raW1AYW1kLmNvbT4NCi0tLQ0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlICAgICAgICB8ICAgMiArLQ0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyB8ICAgNSArDQogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5jICAgIHwgMzcwICsrKysrKysrKysrKysrKysr KysrKw0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbXUuaCAgICB8ICAzNyAr KysNCiA0IGZpbGVzIGNoYW5nZWQsIDQxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbXUu Yw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cG11LmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCmluZGV4IDExYTY1MWZmN2Yw ZC4uOTBkNGM1ZDI5OWRkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv TWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlDQpAQCAt NTQsNyArNTQsNyBAQCBhbWRncHUteSArPSBhbWRncHVfZGV2aWNlLm8gYW1kZ3B1X2ttcy5vIFwN CiAJYW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdw dV9hdG9tZmlybXdhcmUubyBcDQogCWFtZGdwdV92Zl9lcnJvci5vIGFtZGdwdV9zY2hlZC5vIGFt ZGdwdV9kZWJ1Z2ZzLm8gYW1kZ3B1X2lkcy5vIFwNCiAJYW1kZ3B1X2dtYy5vIGFtZGdwdV94Z21p Lm8gYW1kZ3B1X2NzYS5vIGFtZGdwdV9yYXMubyBhbWRncHVfdm1fY3B1Lm8gXA0KLQlhbWRncHVf dm1fc2RtYS5vDQorCWFtZGdwdV92bV9zZG1hLm8gYW1kZ3B1X3BtdS5vDQogDQogIyBhZGQgYXNp YyBzcGVjaWZpYyBibG9jaw0KIGFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX0NJSykrPSBjaWsu byBjaWtfaWgubyBrdl9zbWMubyBrdl9kcG0ubyBcDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jDQppbmRleCA1ODJmNTYzNWZjYjIuLjUxZjQ3OWIzNTdhMSAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQpAQCAtNjEsNiAr NjEsNyBAQA0KIA0KICNpbmNsdWRlICJhbWRncHVfeGdtaS5oIg0KICNpbmNsdWRlICJhbWRncHVf cmFzLmgiDQorI2luY2x1ZGUgImFtZGdwdV9wbXUuaCINCiANCiBNT0RVTEVfRklSTVdBUkUoImFt ZGdwdS92ZWdhMTBfZ3B1X2luZm8uYmluIik7DQogTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUvdmVn YTEyX2dwdV9pbmZvLmJpbiIpOw0KQEAgLTI3NDgsNiArMjc0OSwxMCBAQCBpbnQgYW1kZ3B1X2Rl dmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KIAkJZ290byBmYWlsZWQ7DQog CX0NCiANCisJciA9IGFtZGdwdV9wbXVfaW5pdChhZGV2KTsNCisJaWYgKHIpDQorCQlkZXZfZXJy KGFkZXYtPmRldiwgImFtZGdwdV9wbXVfaW5pdCBmYWlsZWRcbiIpOw0KKw0KIAkvKiBtdXN0IHN1 Y2NlZWQuICovDQogCWFtZGdwdV9yYXNfcmVzdW1lKGFkZXYpOw0KIA0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9wbXUuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwMC4uYjk5MWU5ODhkNmZhDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmMNCkBAIC0wLDAgKzEsMzcwIEBADQorLyoNCisgKiBD b3B5cmlnaHQgMjAxOSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQorICoNCisgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQ0KKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbg0K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLA0KKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQor ICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwNCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwNCisgKiBUSEUgQ09QWVJJR0hU IEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1INCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwNCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1INCisgKiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBBdXRob3I6IEpvbmF0aGFuIEtpbSA8am9uYXRo YW4ua2ltQGFtZC5jb20+DQorICoNCisgKi8NCisNCisjZGVmaW5lIHByX2ZtdChmbXQpCSJwZXJm L2FtZGdwdV9wbXU6ICIgZm10DQorDQorI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4NCisj aW5jbHVkZSA8bGludXgvaW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisjaW5jbHVkZSAiYW1kZ3B1LmgiDQorI2luY2x1ZGUgImFt ZGdwdV9wbXUuaCINCisjaW5jbHVkZSAiZGZfdjNfNi5oIg0KKw0KKyNkZWZpbmUgUE1VX05BTUVf U0laRSAzMg0KKw0KK3N0cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMgew0KKwlzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7DQorCXN0cnVjdCBwbXUgcG11Ow0KKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqZ3B1 Ow0KKwlpbnQgbm9kZV9pZHg7DQorCWNoYXIgbmFtZVtQTVVfTkFNRV9TSVpFXTsNCisJdTggbWF4 X2NvdW50ZXJzOw0KKwl1aW50NjRfdCBjbnRyX2Fzc2lnbl9tYXNrOw0KKwlyYXdfc3BpbmxvY2tf dCBsb2NrOw0KK307DQorDQorc3RhdGljIExJU1RfSEVBRChhbWRncHVfcGVyZl9zdGF0dXNfbGlz dCk7DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCisgKiBzeXNmcyBmb3JtYXQgYXR0cmlidXRlcw0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitQTVVfRk9STUFUX0FUVFIoZGZfZXZlbnQs CQkiY29uZmlnOjAtNyIpOw0KK1BNVV9GT1JNQVRfQVRUUihkZl9pbnN0YW5jZSwJCSJjb25maWc6 OC0xNSIpOw0KK1BNVV9GT1JNQVRfQVRUUihkZl91bml0bWFzaywJCSJjb25maWc6MTYtMjMiKTsN CisNCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYW1kZ3B1X3BtdV9mb3JtYXRfYXR0cnNbXSA9 IHsNCisJJmZvcm1hdF9hdHRyX2RmX2V2ZW50LmF0dHIsDQorCSZmb3JtYXRfYXR0cl9kZl9pbnN0 YW5jZS5hdHRyLA0KKwkmZm9ybWF0X2F0dHJfZGZfdW5pdG1hc2suYXR0ciwNCisJTlVMTCwNCit9 Ow0KKw0KKw0KK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFtZGdwdV9wbXVfZm9ybWF0 X2dyb3VwID0gew0KKwkubmFtZSA9ICJmb3JtYXQiLA0KKwkuYXR0cnMgPSBhbWRncHVfcG11X2Zv cm1hdF9hdHRycywNCit9Ow0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorICogc3lzZnMgZXZlbnRzIGF0dHJpYnV0ZXMNCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorDQorc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgYW1kZ3B1X3BtdV9ldmVudHNfZ3JvdXAgPSB7DQorCS5uYW1l ID0gImV2ZW50cyIsDQorfTsNCisNCitzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVNDIHsNCisJ c3RydWN0IGtvYmpfYXR0cmlidXRlIGF0dHI7DQorCWNvbnN0IGNoYXIgKmV2ZW50Ow0KK307DQor DQorc3RhdGljIHNzaXplX3QgX3BtdV9ldmVudF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLA0K KwkJCSAgICAgICBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikNCit7DQor CXN0cnVjdCBBTURHUFVfUE1VX0VWRU5UX0RFU0MgKmV2ZW50ID0NCisJCWNvbnRhaW5lcl9vZihh dHRyLCBzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVNDLCBhdHRyKTsNCisJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJXNcbiIsIGV2ZW50LT5ldmVudCk7DQorfQ0KKw0KKyNkZWZpbmUgQU1ER1BVX1BN VV9FVkVOVF9ERVNDKF9uYW1lLCBfZXZlbnQpCQkJXA0KK3sJCQkJCQkJCVwNCisJLmF0dHIgID0g X19BVFRSKF9uYW1lLCAwNDQ0LCBfcG11X2V2ZW50X3Nob3csIE5VTEwpLAlcDQorCS5ldmVudCA9 IF9ldmVudCwJCQkJCVwNCit9DQorDQorDQorLyogREYgZXZlbnQgZGVzY3JpcHRvcnMgKi8NCitz dGF0aWMgc3RydWN0IEFNREdQVV9QTVVfRVZFTlRfREVTQyBhbWRncHVfdmVnYTIwX2RmX2V2ZW50 X2Rlc2NzW10gPSB7DQorCUFNREdQVV9QTVVfRVZFTlRfREVTQyhjYWtlMF9wY3NvdXRfdHhkYXRh LA0KKwkJCSJkZl9ldmVudD0weDcsZGZfaW5zdGFuY2U9MHg0NixkZl91bml0bWFzaz0weDIiKSwN CisJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UxX3Bjc291dF90eGRhdGEsDQorCQkJImRmX2V2 ZW50PTB4NyxkZl9pbnN0YW5jZT0weDQ3LGRmX3VuaXRtYXNrPTB4MiIpLA0KKwlBTURHUFVfUE1V X0VWRU5UX0RFU0MoY2FrZTBfcGNzb3V0X3R4bWV0YSwNCisJCQkiZGZfZXZlbnQ9MHg3LGRmX2lu c3RhbmNlPTB4NDYsZGZfdW5pdG1hc2s9MHg0IiksDQorCUFNREdQVV9QTVVfRVZFTlRfREVTQyhj YWtlMV9wY3NvdXRfdHhtZXRhLA0KKwkJCSJkZl9ldmVudD0weDcsZGZfaW5zdGFuY2U9MHg0Nyxk Zl91bml0bWFzaz0weDQiKSwNCisJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UwX2Z0aWluc3Rh dF9yZXFhbGxvYywNCisJCQkiZGZfZXZlbnQ9MHhiLGRmX2luc3RhbmNlPTB4NDYsZGZfdW5pdG1h c2s9MHg0IiksDQorCUFNREdQVV9QTVVfRVZFTlRfREVTQyhjYWtlMV9mdGlpbnN0YXRfcmVxYWxs b2MsDQorCQkJImRmX2V2ZW50PTB4YixkZl9pbnN0YW5jZT0weDQ3LGRmX3VuaXRtYXNrPTB4NCIp LA0KKwlBTURHUFVfUE1VX0VWRU5UX0RFU0MoY2FrZTBfZnRpaW5zdGF0X3JzcGFsbG9jLA0KKwkJ CSJkZl9ldmVudD0weGIsZGZfaW5zdGFuY2U9MHg0NixkZl91bml0bWFzaz0weDgiKSwNCisJQU1E R1BVX1BNVV9FVkVOVF9ERVNDKGNha2UxX2Z0aWluc3RhdF9yc3BhbGxvYywNCisJCQkiZGZfZXZl bnQ9MHhiLGRmX2luc3RhbmNlPTB4NDcsZGZfdW5pdG1hc2s9MHg4IiksDQorCXsgLyogZW5kOiBh bGwgemVyb2VzICovIH0sDQorfTsNCisNCisNCisvKiBJbml0aWFsaXplIFBNVSAqLw0KK3N0YXRp YyBpbnQgYW1kZ3B1X3BlcmZfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpDQor ew0KKwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCisNCisJLyogdGVz dCB0aGUgZXZlbnQgYXR0ciB0eXBlIGNoZWNrIGZvciBQTVUgZW51bWVyYXRpb24gKi8NCisJaWYg KGV2ZW50LT5hdHRyLnR5cGUgIT0gZXZlbnQtPnBtdS0+dHlwZSkNCisJCXJldHVybiAtRU5PRU5U Ow0KKw0KKwkvKiB1cGRhdGUgdGhlIGh3X3BlcmZfZXZlbnQgc3RydWN0IHdpdGggY29uZmlnIGRh dGEgKi8NCisJaHdjLT5jb25mID0gZXZlbnQtPmF0dHIuY29uZmlnOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorLyogU3RhcnQgUE1VICovDQorc3RhdGljIHZvaWQgYW1kZ3B1X3BlcmZfc3RhcnQo c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpDQorew0KKwlzdHJ1Y3QgaHdfcGVy Zl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsNCisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBjb250YWluZXJfb2YoZXZlbnQtPnBtdSwNCisJCQlzdHJ1Y3QgYW1kZ3B1X3BlcmZfc3RhdHVz LCBwbXUpLT5ncHU7DQorDQorCWlmIChXQVJOX09OX09OQ0UoIShod2MtPnN0YXRlICYgUEVSRl9I RVNfU1RPUFBFRCkpKQ0KKwkJcmV0dXJuOw0KKw0KKwlXQVJOX09OX09OQ0UoIShod2MtPnN0YXRl ICYgUEVSRl9IRVNfVVBUT0RBVEUpKTsNCisJaHdjLT5zdGF0ZSA9IDA7DQorDQorCWlmICghKGZs YWdzICYgUEVSRl9FRl9SRUxPQUQpKQ0KKwkJYWRldi0+ZGZfZnVuY3MtPnBtY19zdGFydChhZGV2 LCBod2MtPmNvbmYsIDEpOw0KKw0KKwlhZGV2LT5kZl9mdW5jcy0+cG1jX3N0YXJ0KGFkZXYsIGh3 Yy0+Y29uZiwgMCk7DQorDQorCXBlcmZfZXZlbnRfdXBkYXRlX3VzZXJwYWdlKGV2ZW50KTsNCisN Cit9DQorDQorLyogUmVhZCBQTVUgICovDQorc3RhdGljIHZvaWQgYW1kZ3B1X3BlcmZfcmVhZChz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpDQorew0KKwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdj ID0gJmV2ZW50LT5odzsNCisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjb250YWluZXJf b2YoZXZlbnQtPnBtdSwNCisJCQkJCQkgIHN0cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMsDQorCQkJ CQkJICBwbXUpLT5ncHU7DQorDQorCXU2NCBjb3VudCwgcHJldjsNCisNCisJYWRldi0+ZGZfZnVu Y3MtPnBtY19nZXRfY291bnQoYWRldiwgaHdjLT5jb25mLCAmY291bnQpOw0KKw0KKwlwcmV2ID0g bG9jYWw2NF9yZWFkKCZod2MtPnByZXZfY291bnQpOw0KKwlpZiAobG9jYWw2NF9jbXB4Y2hnKCZo d2MtPnByZXZfY291bnQsIHByZXYsIGNvdW50KSAhPSBwcmV2KQ0KKwkJcmV0dXJuOw0KKw0KKwls b2NhbDY0X2FkZChjb3VudCAtIHByZXYsICZldmVudC0+Y291bnQpOw0KK30NCisNCisvKiBTdG9w IFBNVSAqLw0KK3N0YXRpYyB2b2lkIGFtZGdwdV9wZXJmX3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50LCBpbnQgZmxhZ3MpDQorew0KKwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2 ZW50LT5odzsNCisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjb250YWluZXJfb2YoZXZl bnQtPnBtdSwNCisJCQkJCQkgIHN0cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMsDQorCQkJCQkJICBw bXUpLT5ncHU7DQorDQorCWlmIChod2MtPnN0YXRlICYgUEVSRl9IRVNfVVBUT0RBVEUpDQorCQly ZXR1cm47DQorDQorCWFkZXYtPmRmX2Z1bmNzLT5wbWNfc3RvcChhZGV2LCBod2MtPmNvbmYsIDAp Ow0KKw0KKwlXQVJOX09OX09OQ0UoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1NUT1BQRUQpOw0KKwlo d2MtPnN0YXRlIHw9IFBFUkZfSEVTX1NUT1BQRUQ7DQorDQorCWlmIChod2MtPnN0YXRlICYgUEVS Rl9IRVNfVVBUT0RBVEUpDQorCQlyZXR1cm47DQorDQorCWFtZGdwdV9wZXJmX3JlYWQoZXZlbnQp Ow0KKwlod2MtPnN0YXRlIHw9IFBFUkZfSEVTX1VQVE9EQVRFOw0KK30NCisNCisvKiBBZGQgUE1V ICAqLw0KK3N0YXRpYyBpbnQgYW1kZ3B1X3BlcmZfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwgaW50IGZsYWdzKQ0KK3sNCisNCisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVu dC0+aHc7DQorCWludCByZXR2YWw7DQorDQorCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g Y29udGFpbmVyX29mKGV2ZW50LT5wbXUsDQorCQkJCQkJICBzdHJ1Y3QgYW1kZ3B1X3BlcmZfc3Rh dHVzLA0KKwkJCQkJCSAgcG11KS0+Z3B1Ow0KKw0KKwlldmVudC0+aHcuc3RhdGUgPSBQRVJGX0hF U19VUFRPREFURSB8IFBFUkZfSEVTX1NUT1BQRUQ7DQorDQorCWFkZXYtPmRmX2Z1bmNzLT5wbWNf c3RhcnQoYWRldiwgaHdjLT5jb25mLCAxKTsNCisNCisJaWYgKHJldHZhbCkNCisJCXJldHVybiBy ZXR2YWw7DQorDQorCWlmIChmbGFncyAmIFBFUkZfRUZfU1RBUlQpDQorCQlhbWRncHVfcGVyZl9z dGFydChldmVudCwgUEVSRl9FRl9SRUxPQUQpOw0KKw0KKwlyZXR1cm4gcmV0dmFsOw0KKw0KK30N CisNCisvKiBEZWxldGUgUE1VICAqLw0KK3N0YXRpYyB2b2lkIGFtZGdwdV9wZXJmX2RlbChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykNCit7DQorCXN0cnVjdCBod19wZXJmX2V2 ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0KKw0KKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9 IGNvbnRhaW5lcl9vZihldmVudC0+cG11LA0KKwkJCQkJCSAgc3RydWN0IGFtZGdwdV9wZXJmX3N0 YXR1cywNCisJCQkJCQkgIHBtdSktPmdwdTsNCisNCisJYW1kZ3B1X3BlcmZfc3RvcChldmVudCwg UEVSRl9FRl9VUERBVEUpOw0KKw0KKw0KKwlhZGV2LT5kZl9mdW5jcy0+cG1jX3N0b3AoYWRldiwg aHdjLT5jb25mLCAxKTsNCisNCisJcGVyZl9ldmVudF91cGRhdGVfdXNlcnBhZ2UoZXZlbnQpOw0K K30NCisNCisvKiBJbml0aWFsaXplIFNZU0ZTIGF0dHJpYnV0ZXMgZm9yIEFNREdQVSBQTVUgKi8N CitzdGF0aWMgaW50IGluaXRfZXZlbnRzX2F0dHJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQ0KK3sNCisJc3RydWN0IGF0dHJpYnV0ZSAqKmF0dHJzOw0KKwlpbnQgaSA9IDAsIGo7DQorDQor CXN3aXRjaCAoYWRldi0+YXNpY190eXBlKSB7DQorCWNhc2UgQ0hJUF9WRUdBMjA6DQorCQl3aGls ZSAoYW1kZ3B1X3ZlZ2EyMF9kZl9ldmVudF9kZXNjc1tpXS5hdHRyLmF0dHIubmFtZSkNCisJCQlp Kys7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCWF0dHJzID0g a2NhbGxvYyhpICsgMSwgc2l6ZW9mKHN0cnVjdCBhdHRyaWJ1dGUgKiopLCBHRlBfS0VSTkVMKTsN CisJaWYgKCFhdHRycykNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlzd2l0Y2ggKGFkZXYtPmFz aWNfdHlwZSkgew0KKwljYXNlIENISVBfVkVHQTIwOg0KKwkJZm9yIChqID0gMDsgaiA8IGk7IGor KykNCisJCQlhdHRyc1tqXSA9ICZhbWRncHVfdmVnYTIwX2RmX2V2ZW50X2Rlc2NzW2pdLmF0dHIu YXR0cjsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJYW1kZ3B1 X3BtdV9ldmVudHNfZ3JvdXAuYXR0cnMgPSBhdHRyczsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2Nv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmFtZGdwdV9wbXVfYXR0cl9ncm91cHNbXSA9IHsN CisJJmFtZGdwdV9wbXVfZm9ybWF0X2dyb3VwLA0KKwkmYW1kZ3B1X3BtdV9ldmVudHNfZ3JvdXAs DQorCU5VTEwsDQorfTsNCisNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHBtdSBhbWRncHVfcG11 IF9faW5pdGNvbnN0ID0gew0KKwkuZXZlbnRfaW5pdAk9IGFtZGdwdV9wZXJmX2V2ZW50X2luaXQs DQorCS5hZGQJCT0gYW1kZ3B1X3BlcmZfYWRkLA0KKwkuZGVsCQk9IGFtZGdwdV9wZXJmX2RlbCwN CisJLnN0YXJ0CQk9IGFtZGdwdV9wZXJmX3N0YXJ0LA0KKwkuc3RvcAkJPSBhbWRncHVfcGVyZl9z dG9wLA0KKwkucmVhZAkJPSBhbWRncHVfcGVyZl9yZWFkLA0KKwkudGFza19jdHhfbnIJPSBwZXJm X2ludmFsaWRfY29udGV4dCwNCisJLmF0dHJfZ3JvdXBzCT0gYW1kZ3B1X3BtdV9hdHRyX2dyb3Vw cywNCit9Ow0KKw0KKy8qIEluaXRpYWxpemUgRGF0YSBGYWJyaWMgUE1VICovDQorc3RhdGljIGlu dCBpbml0X2RmX3BtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCit7DQorCXN0cnVjdCBh bWRncHVfcGVyZl9zdGF0dXMgKnBlcmZfc3RhdHVzOw0KKwlzdHJ1Y3QgY250cl9hc3NpZ24gKmNf YXNzaWduOw0KKwlpbnQgcmV0Ow0KKw0KKwlwZXJmX3N0YXR1cyA9IGt6YWxsb2Moc2l6ZW9mKHN0 cnVjdCBhbWRncHVfcGVyZl9zdGF0dXMpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwZXJmX3N0YXR1 cykNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlyYXdfc3Bpbl9sb2NrX2luaXQoJnBlcmZfc3Rh dHVzLT5sb2NrKTsNCisNCisJLyogaW5pdGlhbGl6ZSBwbXUgYW5kIGNvdW50ZXJzIGFzc2lnbm1l bnRzICovDQorCXBlcmZfc3RhdHVzLT5wbXUgPSBhbWRncHVfcG11Ow0KKwlwZXJmX3N0YXR1cy0+ Z3B1ID0gYWRldjsNCisJcGVyZl9zdGF0dXMtPm1heF9jb3VudGVycyA9IEFNREdQVV9ERl9NQVhf Q09VTlRFUlM7DQorCXBlcmZfc3RhdHVzLT5ub2RlX2lkeCA9IGFkZXYtPmRkZXYtPnByaW1hcnkt PmluZGV4Ow0KKw0KKwlzbnByaW50ZihwZXJmX3N0YXR1cy0+bmFtZSwgUE1VX05BTUVfU0laRSwg ImFtZGdwdV9kZl8lZCIsDQorCQkJYWRldi0+ZGRldi0+cHJpbWFyeS0+aW5kZXgpOw0KKw0KKwly ZXQgPSBwZXJmX3BtdV9yZWdpc3RlcigmcGVyZl9zdGF0dXMtPnBtdSwgcGVyZl9zdGF0dXMtPm5h bWUsDQorCQkJLTEpOw0KKw0KKwlpZiAoIXJldCkgew0KKwkJcHJfaW5mbygiRGV0ZWN0ZWQgQU1E R1BVIERGIENvdW50ZXJzLiAjIG9mIENvdW50ZXJzID0gJWQuXG4iLA0KKwkJCQlwZXJmX3N0YXR1 cy0+bWF4X2NvdW50ZXJzKTsNCisJCWxpc3RfYWRkX3RhaWwoJnBlcmZfc3RhdHVzLT5saXN0LCAm YW1kZ3B1X3BlcmZfc3RhdHVzX2xpc3QpOw0KKwl9IGVsc2Ugew0KKwkJcHJfd2FybigiRXJyb3Ig aW5pdGlhbGl6aW5nIEFNREdQVSBERiBQTVVzLlxuIik7DQorCQlrZnJlZShwZXJmX3N0YXR1cyk7 DQorCX0NCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorLyogSW5pdGlhbGl6ZSBhbGwgUE1VIEJs b2NrcyAtIE9ubHkgREYgZm9yIG5vdyAqLw0KK3N0YXRpYyBpbnQgaW5pdF9wbXUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpDQorew0KKwlpbnQgcmV0dmFsID0gMDsNCisNCisJc3dpdGNoIChh ZGV2LT5hc2ljX3R5cGUpIHsNCisJY2FzZSBDSElQX1ZFR0EyMDoNCisJCXJldHZhbCA9IGluaXRf ZGZfcG11KGFkZXYpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6IC8qIGlnbm9yZSBhbGwgb3RoZXIg Y2hpcHMgICovDQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gcmV0dmFsOw0KK30NCisNCisN CisvKiBpbml0aWFsaXplIEFNREdQVSBQTVUgKi8NCitpbnQgYW1kZ3B1X3BtdV9pbml0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQ0KK3sNCisNCisJaW50IHJldDsNCisNCisJcmV0ID0gaW5p dF9ldmVudHNfYXR0cnMoYWRldik7DQorDQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0K KwlyZXQgPSBpbml0X3BtdShhZGV2KTsNCisNCisJaWYgKHJldCkgew0KKwkJa2ZyZWUoYW1kZ3B1 X3BtdV9ldmVudHNfZ3JvdXAuYXR0cnMpOw0KKwkJcmV0dXJuIC1FTk9ERVY7DQorCX0NCisNCisJ cmV0dXJuIHJldDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3BtdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5o DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kMDcwZDllMjUyZmYN Ci0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9w bXUuaA0KQEAgLTAsMCArMSwzNyBAQA0KKy8qDQorICogQ29weXJpZ2h0IDIwMTkgQWR2YW5jZWQg TWljcm8gRGV2aWNlcywgSW5jLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLA0KKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwNCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUNCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg aW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMDQorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMp IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SDQorICogT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQor ICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SDQorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAq DQorICogQXV0aG9yOiBKb25hdGhhbiBLaW0gPGpvbmF0aGFuLmtpbUBhbWQuY29tPg0KKyAqDQor ICovDQorDQorI2lmbmRlZiBfQU1ER1BVX1BNVV9IXw0KKyNkZWZpbmUgX0FNREdQVV9QTVVfSF8N CisNCitlbnVtIGFtZGdwdV9wbXVfcGVyZl90eXBlIHsNCisJUEVSRl9UWVBFX0FNREdQVV9ERiA9 IDAsDQorCVBFUkZfVFlQRV9BTURHUFVfTUFYDQorfTsNCisNCisNCitpbnQgYW1kZ3B1X3BtdV9p bml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsNCisNCisjZW5kaWYgLyogX0FNREdQVV9Q TVVfSF8gKi8NCi0tIA0KMi4xNy4xDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeA==