From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kim, Jonathan" Subject: [PATCH] drm/amdgpu: add pmu counters Date: Wed, 29 May 2019 15:02:15 +0000 Message-ID: <20190529150154.17375-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" YWRkIHBtdSBjb3VudGVycyB0byBtb25pdG9yIGFtZGdwdSBkZXZpY2UgcGVyZm9ybWFuY2UuDQpl YWNoIHBtdSByZWdpc3RlcmVkIHJlY29yZGVkIHBlciBwbXUgdHlwZSBwZXIgYXNpYyB0eXBlLg0K DQpDaGFuZ2UtSWQ6IEk4NDQ5ZjRlYTgyNGM0MTFlZTI0YTViNzgzYWMwNjYxODliOWRlMDhlDQpT aWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBLaW0gPGpvbmF0aGFuLmtpbUBhbWQuY29tPg0KLS0tDQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgICAgIHwgICAyICstDQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgICA1ICsNCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmMgICAgfCAzOTQgKysrKysrKysrKysrKysr KysrKysrDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5oICAgIHwgIDM3 ICsrDQogNCBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0K IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11 LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3BtdS5oDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlDQppbmRleCAxMWE2NTFmZjdm MGQuLjkwZDRjNWQyOTlkZCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KQEAg LTU0LDcgKzU0LDcgQEAgYW1kZ3B1LXkgKz0gYW1kZ3B1X2RldmljZS5vIGFtZGdwdV9rbXMubyBc DQogCWFtZGdwdV9ndHRfbWdyLm8gYW1kZ3B1X3ZyYW1fbWdyLm8gYW1kZ3B1X3ZpcnQubyBhbWRn cHVfYXRvbWZpcm13YXJlLm8gXA0KIAlhbWRncHVfdmZfZXJyb3IubyBhbWRncHVfc2NoZWQubyBh bWRncHVfZGVidWdmcy5vIGFtZGdwdV9pZHMubyBcDQogCWFtZGdwdV9nbWMubyBhbWRncHVfeGdt aS5vIGFtZGdwdV9jc2EubyBhbWRncHVfcmFzLm8gYW1kZ3B1X3ZtX2NwdS5vIFwNCi0JYW1kZ3B1 X3ZtX3NkbWEubw0KKwlhbWRncHVfdm1fc2RtYS5vIGFtZGdwdV9wbXUubw0KIA0KICMgYWRkIGFz aWMgc3BlY2lmaWMgYmxvY2sNCiBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lr Lm8gY2lrX2loLm8ga3Zfc21jLm8ga3ZfZHBtLm8gXA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kZXZpY2UuYw0KaW5kZXggNTgyZjU2MzVmY2IyLi41MWY0NzliMzU3YTEgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KQEAgLTYxLDYg KzYxLDcgQEANCiANCiAjaW5jbHVkZSAiYW1kZ3B1X3hnbWkuaCINCiAjaW5jbHVkZSAiYW1kZ3B1 X3Jhcy5oIg0KKyNpbmNsdWRlICJhbWRncHVfcG11LmgiDQogDQogTU9EVUxFX0ZJUk1XQVJFKCJh bWRncHUvdmVnYTEwX2dwdV9pbmZvLmJpbiIpOw0KIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3Zl Z2ExMl9ncHVfaW5mby5iaW4iKTsNCkBAIC0yNzQ4LDYgKzI3NDksMTAgQEAgaW50IGFtZGdwdV9k ZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCiAJCWdvdG8gZmFpbGVkOw0K IAl9DQogDQorCXIgPSBhbWRncHVfcG11X2luaXQoYWRldik7DQorCWlmIChyKQ0KKwkJZGV2X2Vy cihhZGV2LT5kZXYsICJhbWRncHVfcG11X2luaXQgZmFpbGVkXG4iKTsNCisNCiAJLyogbXVzdCBz dWNjZWVkLiAqLw0KIAlhbWRncHVfcmFzX3Jlc3VtZShhZGV2KTsNCiANCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG11LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMDAuLjM5Y2ZmNzcyZGQ5ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5jDQpAQCAtMCwwICsxLDM5NCBAQA0KKy8qDQorICog Q29weXJpZ2h0IDIwMTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KKyAqDQorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGENCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24N CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwNCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0K KyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICogVEhFIENPUFlSSUdI VCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SDQorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsDQorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQorICogT1RIRVIgREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogQXV0aG9yOiBKb25hdGhhbiBLaW0gPGpvbmF0 aGFuLmtpbUBhbWQuY29tPg0KKyAqDQorICovDQorDQorI2RlZmluZSBwcl9mbXQoZm10KQkicGVy Zi9hbWRncHVfcG11OiAiIGZtdA0KKw0KKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQor I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCisjaW5jbHVkZSA8bGludXgvY3B1bWFzay5oPg0KKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2luY2x1ZGUgImFtZGdwdS5oIg0KKyNpbmNsdWRlICJh bWRncHVfcG11LmgiDQorI2luY2x1ZGUgImRmX3YzXzYuaCINCisNCisjZGVmaW5lIFBNVV9OQU1F X1NJWkUgMzINCisNCisvKiByZWNvcmQgdG8ga2VlcCB0cmFjayBvZiBwbXUgZW50cnkgcGVyIHBt dSB0eXBlIHBlciBkZXZpY2UgKi8NCitzdHJ1Y3QgYW1kZ3B1X3BtdV9lbnRyeSB7DQorCXN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2Ow0KKwlzdHJ1Y3QgcG11IHBtdTsNCisJdW5zaWduZWQgaW50 IHBtdV9wZXJmX3R5cGU7DQorfTsNCisNCitQTVVfRk9STUFUX0FUVFIoZGZfZXZlbnQsCQkiY29u ZmlnOjAtNyIpOw0KK1BNVV9GT1JNQVRfQVRUUihkZl9pbnN0YW5jZSwJCSJjb25maWc6OC0xNSIp Ow0KK1BNVV9GT1JNQVRfQVRUUihkZl91bml0bWFzaywJCSJjb25maWc6MTYtMjMiKTsNCisNCisv KiBkZiBmb3JtYXQgYXR0cmlidXRlcyAgKi8NCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYW1k Z3B1X2RmX2Zvcm1hdF9hdHRyc1tdID0gew0KKwkmZm9ybWF0X2F0dHJfZGZfZXZlbnQuYXR0ciwN CisJJmZvcm1hdF9hdHRyX2RmX2luc3RhbmNlLmF0dHIsDQorCSZmb3JtYXRfYXR0cl9kZl91bml0 bWFzay5hdHRyLA0KKwlOVUxMDQorfTsNCisNCisvKiBkZiBmb3JtYXQgYXR0cmlidXRlIGdyb3Vw ICovDQorc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgYW1kZ3B1X2RmX2Zvcm1hdF9hdHRy X2dyb3VwID0gew0KKwkubmFtZSA9ICJmb3JtYXQiLA0KKwkuYXR0cnMgPSBhbWRncHVfZGZfZm9y bWF0X2F0dHJzLA0KK307DQorDQorLyogZGYgZXZlbnQgYXR0cmlidXRlIGdyb3VwICovDQorc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgYW1kZ3B1X2RmX2V2ZW50c19hdHRyX2dyb3VwID0g ew0KKwkubmFtZSA9ICJldmVudHMiLA0KK307DQorDQorc3RydWN0IEFNREdQVV9QTVVfRVZFTlRf REVTQyB7DQorCXN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBhdHRyOw0KKwljb25zdCBjaGFyICpldmVu dDsNCit9Ow0KKw0KK3N0YXRpYyBzc2l6ZV90IF9wbXVfZXZlbnRfc2hvdyhzdHJ1Y3Qga29iamVj dCAqa29iaiwNCisJCQkgICAgICAgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpi dWYpDQorew0KKwlzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVNDICpldmVudCA9DQorCQljb250 YWluZXJfb2YoYXR0ciwgc3RydWN0IEFNREdQVV9QTVVfRVZFTlRfREVTQywgYXR0cik7DQorCXJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBldmVudC0+ZXZlbnQpOw0KK307DQorDQorI2RlZmlu ZSBBTURHUFVfUE1VX0VWRU5UX0RFU0MoX25hbWUsIF9ldmVudCkJCQlcDQorewkJCQkJCQkJXA0K KwkuYXR0ciAgPSBfX0FUVFIoX25hbWUsIDA0NDQsIF9wbXVfZXZlbnRfc2hvdywgTlVMTCksCVwN CisJLmV2ZW50ID0gX2V2ZW50LAkJCQkJXA0KK30NCisNCisvKiB2ZWdhMjAgZGYgZXZlbnRzICAq Lw0KK3N0YXRpYyBzdHJ1Y3QgQU1ER1BVX1BNVV9FVkVOVF9ERVNDIGFtZGdwdV92ZWdhMjBfZGZf ZXZlbnRfZGVzY3NbXSA9IHsNCisJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UwX3Bjc291dF90 eGRhdGEsDQorCQkJImRmX2V2ZW50PTB4NyxkZl9pbnN0YW5jZT0weDQ2LGRmX3VuaXRtYXNrPTB4 MiIpLA0KKwlBTURHUFVfUE1VX0VWRU5UX0RFU0MoY2FrZTFfcGNzb3V0X3R4ZGF0YSwNCisJCQki ZGZfZXZlbnQ9MHg3LGRmX2luc3RhbmNlPTB4NDcsZGZfdW5pdG1hc2s9MHgyIiksDQorCUFNREdQ VV9QTVVfRVZFTlRfREVTQyhjYWtlMF9wY3NvdXRfdHhtZXRhLA0KKwkJCSJkZl9ldmVudD0weDcs ZGZfaW5zdGFuY2U9MHg0NixkZl91bml0bWFzaz0weDQiKSwNCisJQU1ER1BVX1BNVV9FVkVOVF9E RVNDKGNha2UxX3Bjc291dF90eG1ldGEsDQorCQkJImRmX2V2ZW50PTB4NyxkZl9pbnN0YW5jZT0w eDQ3LGRmX3VuaXRtYXNrPTB4NCIpLA0KKwlBTURHUFVfUE1VX0VWRU5UX0RFU0MoY2FrZTBfZnRp aW5zdGF0X3JlcWFsbG9jLA0KKwkJCSJkZl9ldmVudD0weGIsZGZfaW5zdGFuY2U9MHg0NixkZl91 bml0bWFzaz0weDQiKSwNCisJQU1ER1BVX1BNVV9FVkVOVF9ERVNDKGNha2UxX2Z0aWluc3RhdF9y ZXFhbGxvYywNCisJCQkiZGZfZXZlbnQ9MHhiLGRmX2luc3RhbmNlPTB4NDcsZGZfdW5pdG1hc2s9 MHg0IiksDQorCUFNREdQVV9QTVVfRVZFTlRfREVTQyhjYWtlMF9mdGlpbnN0YXRfcnNwYWxsb2Ms DQorCQkJImRmX2V2ZW50PTB4YixkZl9pbnN0YW5jZT0weDQ2LGRmX3VuaXRtYXNrPTB4OCIpLA0K KwlBTURHUFVfUE1VX0VWRU5UX0RFU0MoY2FrZTFfZnRpaW5zdGF0X3JzcGFsbG9jLA0KKwkJCSJk Zl9ldmVudD0weGIsZGZfaW5zdGFuY2U9MHg0NyxkZl91bml0bWFzaz0weDgiKSwNCisJeyAvKiBl bmQgd2l0aCB6ZXJvcyAqLyB9LA0KK307DQorDQorLyogZGYgYXR0ciBncm91cCAgKi8NCitjb25z dCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICphbWRncHVfZGZfYXR0cl9ncm91cHNbXSA9IHsNCisJ JmFtZGdwdV9kZl9mb3JtYXRfYXR0cl9ncm91cCwNCisJJmFtZGdwdV9kZl9ldmVudHNfYXR0cl9n cm91cCwNCisJTlVMTA0KK307DQorDQorDQorLyogaW5pdGlhbGl6ZSBwZXJmIGNvdW50ZXIgKi8N CitzdGF0aWMgaW50IGFtZGdwdV9wZXJmX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2 ZW50KQ0KK3sNCisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQorDQor CS8qIHRlc3QgdGhlIGV2ZW50IGF0dHIgdHlwZSBjaGVjayBmb3IgUE1VIGVudW1lcmF0aW9uICov DQorCWlmIChldmVudC0+YXR0ci50eXBlICE9IGV2ZW50LT5wbXUtPnR5cGUpDQorCQlyZXR1cm4g LUVOT0VOVDsNCisNCisJLyogdXBkYXRlIHRoZSBod19wZXJmX2V2ZW50IHN0cnVjdCB3aXRoIGNv bmZpZyBkYXRhICovDQorCWh3Yy0+Y29uZiA9IGV2ZW50LT5hdHRyLmNvbmZpZzsNCisNCisJcmV0 dXJuIDA7DQorfQ0KKw0KKy8qIHN0YXJ0IHBlcmYgY291bnRlciAqLw0KK3N0YXRpYyB2b2lkIGFt ZGdwdV9wZXJmX3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQ0KK3sN CisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQorCXN0cnVjdCBhbWRn cHVfcG11X2VudHJ5ICpwZSA9IGNvbnRhaW5lcl9vZihldmVudC0+cG11LA0KKwkJCQkJCSAgc3Ry dWN0IGFtZGdwdV9wbXVfZW50cnksDQorCQkJCQkJICBwbXUpOw0KKw0KKwlpZiAoV0FSTl9PTl9P TkNFKCEoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1NUT1BQRUQpKSkNCisJCXJldHVybjsNCisNCisJ V0FSTl9PTl9PTkNFKCEoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1VQVE9EQVRFKSk7DQorCWh3Yy0+ c3RhdGUgPSAwOw0KKw0KKwlpZiAoIShmbGFncyAmIFBFUkZfRUZfUkVMT0FEKSkNCisJCXBlLT5h ZGV2LT5kZl9mdW5jcy0+cG1jX3N0YXJ0KHBlLT5hZGV2LCBod2MtPmNvbmYsIDEpOw0KKw0KKwlw ZS0+YWRldi0+ZGZfZnVuY3MtPnBtY19zdGFydChwZS0+YWRldiwgaHdjLT5jb25mLCAwKTsNCisN CisJcGVyZl9ldmVudF91cGRhdGVfdXNlcnBhZ2UoZXZlbnQpOw0KKw0KK30NCisNCisvKiByZWFk IHBlcmYgY291bnRlciAqLw0KK3N0YXRpYyB2b2lkIGFtZGdwdV9wZXJmX3JlYWQoc3RydWN0IHBl cmZfZXZlbnQgKmV2ZW50KQ0KK3sNCisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVu dC0+aHc7DQorCXN0cnVjdCBhbWRncHVfcG11X2VudHJ5ICpwZSA9IGNvbnRhaW5lcl9vZihldmVu dC0+cG11LA0KKwkJCQkJCSAgc3RydWN0IGFtZGdwdV9wbXVfZW50cnksDQorCQkJCQkJICBwbXUp Ow0KKw0KKwl1NjQgY291bnQsIHByZXY7DQorDQorCXN3aXRjaCAocGUtPnBtdV9wZXJmX3R5cGUp IHsNCisJY2FzZSBQRVJGX1RZUEVfQU1ER1BVX0RGOg0KKwkJcGUtPmFkZXYtPmRmX2Z1bmNzLT5w bWNfZ2V0X2NvdW50KHBlLT5hZGV2LCBod2MtPmNvbmYsICZjb3VudCk7DQorCWRlZmF1bHQ6DQor CQljb3VudCA9IDA7DQorCQlicmVhazsNCisJfTsNCisNCisJcHJldiA9IGxvY2FsNjRfcmVhZCgm aHdjLT5wcmV2X2NvdW50KTsNCisJaWYgKGxvY2FsNjRfY21weGNoZygmaHdjLT5wcmV2X2NvdW50 LCBwcmV2LCBjb3VudCkgIT0gcHJldikNCisJCXJldHVybjsNCisNCisJbG9jYWw2NF9hZGQoY291 bnQgLSBwcmV2LCAmZXZlbnQtPmNvdW50KTsNCit9DQorDQorLyogc3RvcCBwZXJmIGNvdW50ZXIg Ki8NCitzdGF0aWMgdm9pZCBhbWRncHVfcGVyZl9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwgaW50IGZsYWdzKQ0KK3sNCisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+ aHc7DQorCXN0cnVjdCBhbWRncHVfcG11X2VudHJ5ICpwZSA9IGNvbnRhaW5lcl9vZihldmVudC0+ cG11LA0KKwkJCQkJCSAgc3RydWN0IGFtZGdwdV9wbXVfZW50cnksDQorCQkJCQkJICBwbXUpOw0K Kw0KKwlpZiAoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1VQVE9EQVRFKQ0KKwkJcmV0dXJuOw0KKw0K Kwlzd2l0Y2ggKHBlLT5wbXVfcGVyZl90eXBlKSB7DQorCWNhc2UgUEVSRl9UWVBFX0FNREdQVV9E RjoNCisJCXBlLT5hZGV2LT5kZl9mdW5jcy0+cG1jX3N0b3AocGUtPmFkZXYsIGh3Yy0+Y29uZiwg MCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9Ow0KKw0KKwlXQVJOX09O X09OQ0UoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1NUT1BQRUQpOw0KKwlod2MtPnN0YXRlIHw9IFBF UkZfSEVTX1NUT1BQRUQ7DQorDQorCWlmIChod2MtPnN0YXRlICYgUEVSRl9IRVNfVVBUT0RBVEUp DQorCQlyZXR1cm47DQorDQorCWFtZGdwdV9wZXJmX3JlYWQoZXZlbnQpOw0KKwlod2MtPnN0YXRl IHw9IFBFUkZfSEVTX1VQVE9EQVRFOw0KK30NCisNCisvKiBhZGQgcGVyZiBjb3VudGVyICAqLw0K K3N0YXRpYyBpbnQgYW1kZ3B1X3BlcmZfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50 IGZsYWdzKQ0KK3sNCisNCisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7 DQorCWludCByZXR2YWw7DQorDQorCXN0cnVjdCBhbWRncHVfcG11X2VudHJ5ICpwZSA9IGNvbnRh aW5lcl9vZihldmVudC0+cG11LA0KKwkJCQkJCSAgc3RydWN0IGFtZGdwdV9wbXVfZW50cnksDQor CQkJCQkJICBwbXUpOw0KKw0KKwlldmVudC0+aHcuc3RhdGUgPSBQRVJGX0hFU19VUFRPREFURSB8 IFBFUkZfSEVTX1NUT1BQRUQ7DQorDQorCXN3aXRjaCAocGUtPnBtdV9wZXJmX3R5cGUpIHsNCisJ Y2FzZSBQRVJGX1RZUEVfQU1ER1BVX0RGOg0KKwkJcmV0dmFsID0gcGUtPmFkZXYtPmRmX2Z1bmNz LT5wbWNfc3RhcnQocGUtPmFkZXYsIGh3Yy0+Y29uZiwgMSk7DQorCQlicmVhazsNCisJZGVmYXVs dDoNCisJCXJldHVybiAwOw0KKwl9Ow0KKw0KKwlpZiAocmV0dmFsKQ0KKwkJcmV0dXJuIHJldHZh bDsNCisNCisJaWYgKGZsYWdzICYgUEVSRl9FRl9TVEFSVCkNCisJCWFtZGdwdV9wZXJmX3N0YXJ0 KGV2ZW50LCBQRVJGX0VGX1JFTE9BRCk7DQorDQorCXJldHVybiByZXR2YWw7DQorDQorfQ0KKw0K Ky8qIGRlbGV0ZSBwZXJmIGNvdW50ZXIgICovDQorc3RhdGljIHZvaWQgYW1kZ3B1X3BlcmZfZGVs KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQ0KK3sNCisJc3RydWN0IGh3X3Bl cmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQorDQorCXN0cnVjdCBhbWRncHVfcG11X2VudHJ5 ICpwZSA9IGNvbnRhaW5lcl9vZihldmVudC0+cG11LA0KKwkJCQkJCSAgc3RydWN0IGFtZGdwdV9w bXVfZW50cnksDQorCQkJCQkJICBwbXUpOw0KKw0KKwlhbWRncHVfcGVyZl9zdG9wKGV2ZW50LCBQ RVJGX0VGX1VQREFURSk7DQorDQorCXN3aXRjaCAocGUtPnBtdV9wZXJmX3R5cGUpIHsNCisJY2Fz ZSBQRVJGX1RZUEVfQU1ER1BVX0RGOg0KKwkJcGUtPmFkZXYtPmRmX2Z1bmNzLT5wbWNfc3RvcChw ZS0+YWRldiwgaHdjLT5jb25mLCAxKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7 DQorCX07DQorDQorCXBlcmZfZXZlbnRfdXBkYXRlX3VzZXJwYWdlKGV2ZW50KTsNCit9DQorDQor LyogUE1VcyAtIHBtdXMgdG8gcmVnaXN0ZXIgcGVyIHBtdSB0eXBlIHBlciBhc2ljDQorICoNCisg KiBkZl9wbXUgLSBkYXRhIGZhYnJpYw0KKyAqDQorICovDQorc3RhdGljIGNvbnN0IHN0cnVjdCBw bXUgZGZfcG11IF9faW5pdGNvbnN0ID0gew0KKwkuZXZlbnRfaW5pdCA9IGFtZGdwdV9wZXJmX2V2 ZW50X2luaXQsDQorCS5hZGQgPSBhbWRncHVfcGVyZl9hZGQsDQorCS5kZWwgPSBhbWRncHVfcGVy Zl9kZWwsDQorCS5zdGFydCA9IGFtZGdwdV9wZXJmX3N0YXJ0LA0KKwkuc3RvcCA9IGFtZGdwdV9w ZXJmX3N0b3AsDQorCS5yZWFkID0gYW1kZ3B1X3BlcmZfcmVhZCwNCisJLnRhc2tfY3R4X25yID0g cGVyZl9pbnZhbGlkX2NvbnRleHQsDQorCS5hdHRyX2dyb3VwcyA9IGFtZGdwdV9kZl9hdHRyX2dy b3VwcywNCit9Ow0KKw0KKy8qIGluaXRpYWxpemUgZXZlbnQgYXR0cnMgcGVyIHBtdSB0eXBlIHBl ciBhc2ljICovDQorc3RhdGljIGludCBhbWRncHVfcG11X3NldF9hdHRyaWJ1dGVzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LA0KKwkJCQkgICAgIHVuc2lnbmVkIGludCBwZXJmX3R5cGUpDQor ew0KKwlzdHJ1Y3QgYXR0cmlidXRlICoqYXR0cnM7DQorCXN0cnVjdCBBTURHUFVfUE1VX0VWRU5U X0RFU0MgKnBtdV9ldmVudF9kZXNjczsNCisJaW50IGksIGo7DQorDQorCXN3aXRjaCAocGVyZl90 eXBlKSB7DQorCWNhc2UgUEVSRl9UWVBFX0FNREdQVV9ERjoNCisNCisJCXN3aXRjaCAoYWRldi0+ YXNpY190eXBlKSB7DQorCQljYXNlIENISVBfVkVHQTIwOg0KKwkJCXBtdV9ldmVudF9kZXNjcyA9 IGFtZGdwdV92ZWdhMjBfZGZfZXZlbnRfZGVzY3M7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0K KwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfTsNCisNCisJCWkgPSAwOw0KKwkJd2hpbGUgKHBtdV9l dmVudF9kZXNjc1tpXS5hdHRyLmF0dHIubmFtZSkNCisJCQlpKys7DQorDQorCQlhdHRycyA9IGtj YWxsb2MoaSArIDEsIHNpemVvZihzdHJ1Y3QgYXR0cmlidXRlICoqKSwgR0ZQX0tFUk5FTCk7DQor DQorCQlpZiAoIWF0dHJzKQ0KKwkJCXJldHVybiAtRU5PTUVNOw0KKw0KKwkJZm9yIChqID0gMDsg aiA8IGk7IGorKykNCisJCQlhdHRyc1tqXSA9ICZwbXVfZXZlbnRfZGVzY3Nbal0uYXR0ci5hdHRy Ow0KKw0KKwkJYW1kZ3B1X2RmX2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzID0gYXR0cnM7DQorCQli cmVhazsNCisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXJldHVybiAw Ow0KK30NCisNCisvKiBpbml0IHBtdSBieSB0eXBlIGFuZCBrZWVwIHJlY29yZCBvZiBwbXUgZW50 cnkgcGVyIGFzaWMgKi8NCitzdGF0aWMgaW50IGluaXRfcG11X2J5X3R5cGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsDQorCQkJICAgIHVuc2lnbmVkIGludCBwbXVfdHlwZSwNCisJCQkgICAg Y2hhciAqcG11X3R5cGVfbmFtZSwNCisJCQkgICAgY2hhciAqcG11X2ZpbGVfbmFtZSkNCit7DQor CWNoYXIgcG11X25hbWVbUE1VX05BTUVfU0laRV07DQorCXN0cnVjdCBhbWRncHVfcG11X2VudHJ5 ICpwbXVfZW50cnk7DQorCWludCByZXQ7DQorDQorCXBtdV9lbnRyeSA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBhbWRncHVfcG11X2VudHJ5KSwgR0ZQX0tFUk5FTCk7DQorDQorCWlmICghcG11X2Vu dHJ5KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCXJldCA9IGFtZGdwdV9wbXVfc2V0X2F0dHJp YnV0ZXMoYWRldiwgcG11X3R5cGUpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJ c3dpdGNoIChwbXVfdHlwZSkgew0KKwljYXNlIFBFUkZfVFlQRV9BTURHUFVfREY6DQorCQlwbXVf ZW50cnktPnBtdSA9IGRmX3BtdTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJa2ZyZWUocG11 X2VudHJ5KTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9Ow0KKw0KKwlwbXVfZW50cnktPmFkZXYg PSBhZGV2Ow0KKwlwbXVfZW50cnktPnBtdV9wZXJmX3R5cGUgPSBwbXVfdHlwZTsNCisNCisJc25w cmludGYocG11X25hbWUsIFBNVV9OQU1FX1NJWkUsICIlc18lZCIsDQorCQkJcG11X2ZpbGVfbmFt ZSwgYWRldi0+ZGRldi0+cHJpbWFyeS0+aW5kZXgpOw0KKw0KKwlyZXQgPSBwZXJmX3BtdV9yZWdp c3RlcigmcG11X2VudHJ5LT5wbXUsIHBtdV9uYW1lLCAtMSk7DQorDQorCWlmICghcmV0KSB7DQor CQlwcl9pbmZvKCJEZXRlY3RlZCBBTURHUFUgJXMgQ291bnRlcnMuICMgb2YgQ291bnRlcnMgPSAl ZC5cbiIsDQorCQkJCXBtdV90eXBlX25hbWUsIEFNREdQVV9ERl9NQVhfQ09VTlRFUlMpOw0KKwl9 IGVsc2Ugew0KKwkJa2ZyZWUocG11X2VudHJ5KTsNCisJCXByX3dhcm4oIkVycm9yIGluaXRpYWxp emluZyBBTURHUFUgJXMgUE1Vcy5cbiIsIHBtdV90eXBlX25hbWUpOw0KKwl9DQorDQorCXJldHVy biByZXQ7DQorfQ0KKw0KKy8qIGluaXRpYWxpemUgcG11IHBlciBhc2ljIHBlciBwbXUgdHlwZSAq Lw0KK3N0YXRpYyBpbnQgaW5pdF9wbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQorew0K KwlpbnQgcmV0dmFsID0gMDsNCisNCisJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsNCisJY2Fz ZSBDSElQX1ZFR0EyMDoNCisJCXJldHZhbCA9IGluaXRfcG11X2J5X3R5cGUoYWRldiwgUEVSRl9U WVBFX0FNREdQVV9ERiwNCisJCQkJCSAgIkRGIiwgImFtZGdwdV9kZiIpOw0KKwkJYnJlYWs7DQor CWRlZmF1bHQ6IC8qIGlnbm9yZSBhbGwgb3RoZXIgY2hpcHMgICovDQorCQlicmVhazsNCisJfQ0K Kw0KKwlyZXR1cm4gcmV0dmFsOw0KK30NCisNCisNCisvKiBpbml0aWFsaXplIGFtZGdwdSBwbXUg Ki8NCitpbnQgYW1kZ3B1X3BtdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KK3sN CisJaW50IHJldDsNCisNCisJcmV0ID0gaW5pdF9wbXUoYWRldik7DQorDQorCWlmIChyZXQpDQor CQlyZXR1cm4gLUVOT0RFVjsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3BtdS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwMDAwLi5kMDcwZDllMjUyZmYNCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbXUuaA0KQEAgLTAsMCArMSwzNyBAQA0KKy8qDQorICog Q29weXJpZ2h0IDIwMTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KKyAqDQorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGENCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24N CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwNCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0K KyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQorICogVEhFIENPUFlSSUdI VCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SDQorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsDQorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQorICogT1RIRVIgREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogQXV0aG9yOiBKb25hdGhhbiBLaW0gPGpvbmF0 aGFuLmtpbUBhbWQuY29tPg0KKyAqDQorICovDQorDQorI2lmbmRlZiBfQU1ER1BVX1BNVV9IXw0K KyNkZWZpbmUgX0FNREdQVV9QTVVfSF8NCisNCitlbnVtIGFtZGdwdV9wbXVfcGVyZl90eXBlIHsN CisJUEVSRl9UWVBFX0FNREdQVV9ERiA9IDAsDQorCVBFUkZfVFlQRV9BTURHUFVfTUFYDQorfTsN CisNCisNCitpbnQgYW1kZ3B1X3BtdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsN CisNCisjZW5kaWYgLyogX0FNREdQVV9QTVVfSF8gKi8NCi0tIA0KMi4xNy4xDQoNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==