From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: [PATCH 07/14] drm/amdkfd: Add debugfs support to KFD Date: Mon, 27 Nov 2017 18:29:49 -0500 Message-ID: <1511825396-24579-8-git-send-email-Felix.Kuehling@amd.com> References: <1511825396-24579-1-git-send-email-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1511825396-24579-1-git-send-email-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 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, oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: Yong Zhao , Felix Kuehling VGhpcyBjb21taXQgYWRkcyBzZXZlcmFsIGRlYnVnZnMgZW50cmllcyBmb3Iga2ZkOgoKa2ZkL2hx ZHM6IGR1bXBzIGFsbCBIUURzIG9uIGFsbCBHUFVzIGZvciBLRkQtY29udHJvbGxlZCBjb21wdXRl IGFuZAogICAgU0RNQSBSTEMgcXVldWVzCgprZmQvbXFkczogZHVtcHMgYWxsIE1RRHMgb2YgYWxs IEtGRCBwcm9jZXNzZXMgb24gYWxsIEdQVXMKCmtmZC9ybHM6IGR1bXBzIEhXUyBydW5saXN0cyBv biBhbGwgR1BVcwoKU2lnbmVkLW9mZi1ieTogWW9uZyBaaGFvIDx5b25nLnpoYW9AYW1kLmNvbT4K U2lnbmVkLW9mZi1ieTogRmVsaXggS3VlaGxpbmcgPEZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAg MiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGVidWdmcy5jICAgICAgICAgICB8 IDc1ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZV9xdWV1ZV9tYW5hZ2VyLmMgIHwgNzEgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tb2R1bGUuYyAgICAgICAgICAgIHwgIDMgKwogZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmggICAgICAgfCAgNCArKwogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jICAgfCAyNyArKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3ZpLmMgICAg fCAyNSArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3BhY2tldF9tYW5h Z2VyLmMgICAgfCAyNCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJp di5oICAgICAgICAgICAgICB8IDIxICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX3Byb2Nlc3MuYyAgICAgICAgICAgfCAyOSArKysrKysrKysKIC4uLi9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jIHwgNjMgKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYyAgICAgICAgICB8IDU1 ICsrKysrKysrKysrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RlYnVnZnMu YwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKaW5kZXggYjQwMGQ1Ni4uNTI2M2U0ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKQEAgLTE2LDQgKzE2LDYgQEAgYW1ka2Zk LXkJOj0ga2ZkX21vZHVsZS5vIGtmZF9kZXZpY2UubyBrZmRfY2hhcmRldi5vIGtmZF90b3BvbG9n eS5vIFwKIAkJa2ZkX2ludGVycnVwdC5vIGtmZF9ldmVudHMubyBjaWtfZXZlbnRfaW50ZXJydXB0 Lm8gXAogCQlrZmRfZGJnZGV2Lm8ga2ZkX2RiZ21nci5vCiAKK2FtZGtmZC0kKENPTkZJR19ERUJV R19GUykgKz0ga2ZkX2RlYnVnZnMubworCiBvYmotJChDT05GSUdfSFNBX0FNRCkJKz0gYW1ka2Zk Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGVidWdmcy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDZlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGVidWdmcy5jCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisg KiBDb3B5cmlnaHQgMjAxNi0yMDE3IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgorI2luY2x1ZGUgImtm ZF9wcml2LmgiCisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7CisKK3N0YXRp YyBpbnQga2ZkX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAq ZmlsZSkKK3sKKwlpbnQgKCpzaG93KShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgdm9pZCAqKSA9IGlub2Rl LT5pX3ByaXZhdGU7CisKKwlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgc2hvdywgTlVMTCk7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGtmZF9kZWJ1Z2ZzX2ZvcHMg PSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLm9wZW4gPSBrZmRfZGVidWdmc19vcGVuLAor CS5yZWFkID0gc2VxX3JlYWQsCisJLmxsc2VlayA9IHNlcV9sc2VlaywKKwkucmVsZWFzZSA9IHNp bmdsZV9yZWxlYXNlLAorfTsKKwordm9pZCBrZmRfZGVidWdmc19pbml0KHZvaWQpCit7CisJc3Ry dWN0IGRlbnRyeSAqZW50OworCisJZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKCJr ZmQiLCBOVUxMKTsKKwlpZiAoIWRlYnVnZnNfcm9vdCB8fCBkZWJ1Z2ZzX3Jvb3QgPT0gRVJSX1BU UigtRU5PREVWKSkgeworCQlwcl93YXJuKCJGYWlsZWQgdG8gY3JlYXRlIGtmZCBkZWJ1Z2ZzIGRp clxuIik7CisJCXJldHVybjsKKwl9CisKKwllbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJtcWRz IiwgU19JRlJFRyB8IDA0NDQsIGRlYnVnZnNfcm9vdCwKKwkJCQkgIGtmZF9kZWJ1Z2ZzX21xZHNf YnlfcHJvY2VzcywKKwkJCQkgICZrZmRfZGVidWdmc19mb3BzKTsKKwlpZiAoIWVudCkKKwkJcHJf d2FybigiRmFpbGVkIHRvIGNyZWF0ZSBtcWRzIGluIGtmZCBkZWJ1Z2ZzXG4iKTsKKworCWVudCA9 IGRlYnVnZnNfY3JlYXRlX2ZpbGUoImhxZHMiLCBTX0lGUkVHIHwgMDQ0NCwgZGVidWdmc19yb290 LAorCQkJCSAga2ZkX2RlYnVnZnNfaHFkc19ieV9kZXZpY2UsCisJCQkJICAma2ZkX2RlYnVnZnNf Zm9wcyk7CisJaWYgKCFlbnQpCisJCXByX3dhcm4oIkZhaWxlZCB0byBjcmVhdGUgaHFkcyBpbiBr ZmQgZGVidWdmc1xuIik7CisKKwllbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJybHMiLCBTX0lG UkVHIHwgMDQ0NCwgZGVidWdmc19yb290LAorCQkJCSAga2ZkX2RlYnVnZnNfcmxzX2J5X2Rldmlj ZSwKKwkJCQkgICZrZmRfZGVidWdmc19mb3BzKTsKKwlpZiAoIWVudCkKKwkJcHJfd2FybigiRmFp bGVkIHRvIGNyZWF0ZSBybHMgaW4ga2ZkIGRlYnVnZnNcbiIpOworfQorCit2b2lkIGtmZF9kZWJ1 Z2ZzX2Zpbmkodm9pZCkKK3sKKwlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGVidWdmc19yb290 KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2Vf cXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9x dWV1ZV9tYW5hZ2VyLmMKaW5kZXggODQ0NzgxMC4uZWVmOGI5OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKQEAgLTEz MTgsMyArMTMxOCw3NCBAQCB2b2lkIGRldmljZV9xdWV1ZV9tYW5hZ2VyX3VuaW5pdChzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIAlkcW0tPm9wcy51bmluaXRpYWxpemUoZHFtKTsK IAlrZnJlZShkcW0pOwogfQorCisjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCisKK3N0YXRp YyB2b2lkIHNlcV9yZWdfZHVtcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCisJCQkgdWludDMyX3QgKCpk dW1wKVsyXSwgdWludDMyX3Qgbl9yZWdzKQoreworCXVpbnQzMl90IGksIGNvdW50OworCisJZm9y IChpID0gMCwgY291bnQgPSAwOyBpIDwgbl9yZWdzOyBpKyspIHsKKwkJaWYgKGNvdW50ID09IDAg fHwKKwkJICAgIGR1bXBbaS0xXVswXSArIHNpemVvZih1aW50MzJfdCkgIT0gZHVtcFtpXVswXSkg eworCQkJc2VxX3ByaW50ZihtLCAiJXMgICAgJTA4eDogJTA4eCIsCisJCQkJICAgaSA/ICJcbiIg OiAiIiwKKwkJCQkgICBkdW1wW2ldWzBdLCBkdW1wW2ldWzFdKTsKKwkJCWNvdW50ID0gNzsKKwkJ fSBlbHNlIHsKKwkJCXNlcV9wcmludGYobSwgIiAlMDh4IiwgZHVtcFtpXVsxXSk7CisJCQljb3Vu dC0tOworCQl9CisJfQorCisJc2VxX3B1dHMobSwgIlxuIik7Cit9CisKK2ludCBkcW1fZGVidWdm c19ocWRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZGV2aWNl X3F1ZXVlX21hbmFnZXIgKmRxbSA9IGRhdGE7CisJdWludDMyX3QgKCpkdW1wKVsyXSwgbl9yZWdz OworCWludCBwaXBlLCBxdWV1ZTsKKwlpbnQgciA9IDA7CisKKwlmb3IgKHBpcGUgPSAwOyBwaXBl IDwgZ2V0X3BpcGVzX3Blcl9tZWMoZHFtKTsgcGlwZSsrKSB7CisJCWludCBwaXBlX29mZnNldCA9 IHBpcGUgKiBnZXRfcXVldWVzX3Blcl9waXBlKGRxbSk7CisKKwkJZm9yIChxdWV1ZSA9IDA7IHF1 ZXVlIDwgZ2V0X3F1ZXVlc19wZXJfcGlwZShkcW0pOyBxdWV1ZSsrKSB7CisJCQlpZiAoIXRlc3Rf Yml0KHBpcGVfb2Zmc2V0ICsgcXVldWUsCisJCQkJICAgICAgZHFtLT5kZXYtPnNoYXJlZF9yZXNv dXJjZXMucXVldWVfYml0bWFwKSkKKwkJCQljb250aW51ZTsKKworCQkJciA9IGRxbS0+ZGV2LT5r ZmQya2dkLT5ocWRfZHVtcCgKKwkJCQlkcW0tPmRldi0+a2dkLCBwaXBlLCBxdWV1ZSwgJmR1bXAs ICZuX3JlZ3MpOworCQkJaWYgKHIpCisJCQkJYnJlYWs7CisKKwkJCXNlcV9wcmludGYobSwgIiAg Q1AgUGlwZSAlZCwgUXVldWUgJWRcbiIsCisJCQkJICBwaXBlLCBxdWV1ZSk7CisJCQlzZXFfcmVn X2R1bXAobSwgZHVtcCwgbl9yZWdzKTsKKworCQkJa2ZyZWUoZHVtcCk7CisJCX0KKwl9CisKKwlm b3IgKHBpcGUgPSAwOyBwaXBlIDwgQ0lLX1NETUFfRU5HSU5FX05VTTsgcGlwZSsrKSB7CisJCWZv ciAocXVldWUgPSAwOyBxdWV1ZSA8IENJS19TRE1BX1FVRVVFU19QRVJfRU5HSU5FOyBxdWV1ZSsr KSB7CisJCQlyID0gZHFtLT5kZXYtPmtmZDJrZ2QtPmhxZF9zZG1hX2R1bXAoCisJCQkJZHFtLT5k ZXYtPmtnZCwgcGlwZSwgcXVldWUsICZkdW1wLCAmbl9yZWdzKTsKKwkJCWlmIChyKQorCQkJCWJy ZWFrOworCisJCQlzZXFfcHJpbnRmKG0sICIgIFNETUEgRW5naW5lICVkLCBSTEMgJWRcbiIsCisJ CQkJICBwaXBlLCBxdWV1ZSk7CisJCQlzZXFfcmVnX2R1bXAobSwgZHVtcCwgbl9yZWdzKTsKKwor CQkJa2ZyZWUoZHVtcCk7CisJCX0KKwl9CisKKwlyZXR1cm4gcjsKK30KKworI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbW9kdWxlLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbW9kdWxlLmMKaW5kZXggNGUwNjBjOC4uZjUwZTQ5NCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21vZHVsZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tb2R1bGUuYwpAQCAtMTIzLDYgKzEyMyw4 IEBAIHN0YXRpYyBpbnQgX19pbml0IGtmZF9tb2R1bGVfaW5pdCh2b2lkKQogCiAJa2ZkX3Byb2Nl c3NfY3JlYXRlX3dxKCk7CiAKKwlrZmRfZGVidWdmc19pbml0KCk7CisKIAlhbWRrZmRfaW5pdF9j b21wbGV0ZWQgPSAxOwogCiAJZGV2X2luZm8oa2ZkX2RldmljZSwgIkluaXRpYWxpemVkIG1vZHVs ZVxuIik7CkBAIC0xMzksNiArMTQxLDcgQEAgc3RhdGljIHZvaWQgX19leGl0IGtmZF9tb2R1bGVf ZXhpdCh2b2lkKQogewogCWFtZGtmZF9pbml0X2NvbXBsZXRlZCA9IDA7CiAKKwlrZmRfZGVidWdm c19maW5pKCk7CiAJa2ZkX3Byb2Nlc3NfZGVzdHJveV93cSgpOwogCWtmZF90b3BvbG9neV9zaHV0 ZG93bigpOwogCWtmZF9jaGFyZGV2X2V4aXQoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX21xZF9tYW5hZ2VyLmgKaW5kZXggMWYzYTZiYS4uODk3MmJjZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmgKQEAgLTg1LDYgKzg1LDEwIEBA IHN0cnVjdCBtcWRfbWFuYWdlciB7CiAJCQkJdWludDY0X3QgcXVldWVfYWRkcmVzcywJdWludDMy X3QgcGlwZV9pZCwKIAkJCQl1aW50MzJfdCBxdWV1ZV9pZCk7CiAKKyNpZiBkZWZpbmVkKENPTkZJ R19ERUJVR19GUykKKwlpbnQJKCpkZWJ1Z2ZzX3Nob3dfbXFkKShzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpOworI2VuZGlmCisKIAlzdHJ1Y3QgbXV0ZXgJbXFkX211dGV4OwogCXN0cnVj dCBrZmRfZGV2CSpkZXY7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X21xZF9tYW5hZ2VyX2Npay5jCmluZGV4IDdhYTU3YWIuLmY4ZWY0YTAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl9jaWsuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfY2lrLmMKQEAgLTM2NSw2ICsz NjUsMjQgQEAgc3RhdGljIGludCB1cGRhdGVfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICptcWQsCiAJcmV0dXJuIDA7CiB9CiAKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19G UykKKworc3RhdGljIGludCBkZWJ1Z2ZzX3Nob3dfbXFkKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKK3sKKwlzZXFfaGV4X2R1bXAobSwgIiAgICAiLCBEVU1QX1BSRUZJWF9PRkZTRVQs IDMyLCA0LAorCQkgICAgIGRhdGEsIHNpemVvZihzdHJ1Y3QgY2lrX21xZCksIGZhbHNlKTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkZWJ1Z2ZzX3Nob3dfbXFkX3NkbWEoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQoreworCXNlcV9oZXhfZHVtcChtLCAiICAgICIsIERVTVBf UFJFRklYX09GRlNFVCwgMzIsIDQsCisJCSAgICAgZGF0YSwgc2l6ZW9mKHN0cnVjdCBjaWtfc2Rt YV9ybGNfcmVnaXN0ZXJzKSwgZmFsc2UpOworCXJldHVybiAwOworfQorCisjZW5kaWYKKwogCiBz dHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZEX01RRF9UWVBF IHR5cGUsCiAJCXN0cnVjdCBrZmRfZGV2ICpkZXYpCkBAIC0zODksNiArNDA3LDkgQEAgc3RydWN0 IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0eXBl LAogCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkOwogCQltcWQtPmRlc3Ryb3lfbXFkID0g ZGVzdHJveV9tcWQ7CiAJCW1xZC0+aXNfb2NjdXBpZWQgPSBpc19vY2N1cGllZDsKKyNpZiBkZWZp bmVkKENPTkZJR19ERUJVR19GUykKKwkJbXFkLT5kZWJ1Z2ZzX3Nob3dfbXFkID0gZGVidWdmc19z aG93X21xZDsKKyNlbmRpZgogCQlicmVhazsKIAljYXNlIEtGRF9NUURfVFlQRV9ISVE6CiAJCW1x ZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7CkBAIC0zOTcsNiArNDE4LDkgQEAgc3RydWN0IG1x ZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0eXBlLAog CQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkX2hpcTsKIAkJbXFkLT5kZXN0cm95X21xZCA9 IGRlc3Ryb3lfbXFkOwogCQltcWQtPmlzX29jY3VwaWVkID0gaXNfb2NjdXBpZWQ7CisjaWYgZGVm aW5lZChDT05GSUdfREVCVUdfRlMpCisJCW1xZC0+ZGVidWdmc19zaG93X21xZCA9IGRlYnVnZnNf c2hvd19tcWQ7CisjZW5kaWYKIAkJYnJlYWs7CiAJY2FzZSBLRkRfTVFEX1RZUEVfU0RNQToKIAkJ bXFkLT5pbml0X21xZCA9IGluaXRfbXFkX3NkbWE7CkBAIC00MDUsNiArNDI5LDkgQEAgc3RydWN0 IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0eXBl LAogCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkX3NkbWE7CiAJCW1xZC0+ZGVzdHJveV9t cWQgPSBkZXN0cm95X21xZF9zZG1hOwogCQltcWQtPmlzX29jY3VwaWVkID0gaXNfb2NjdXBpZWRf c2RtYTsKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKKwkJbXFkLT5kZWJ1Z2ZzX3Nob3df bXFkID0gZGVidWdmc19zaG93X21xZF9zZG1hOworI2VuZGlmCiAJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCWtmcmVlKG1xZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfbXFkX21hbmFnZXJfdmkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRf bWFuYWdlcl92aS5jCmluZGV4IDAwZTFmMWEuLjk3MWFlYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jCkBAIC0zNTgsNyArMzU4LDIzIEBA IHN0YXRpYyBib29sIGlzX29jY3VwaWVkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqbXFkLAogCXJldHVybiBtbS0+ZGV2LT5rZmQya2dkLT5ocWRfc2RtYV9pc19vY2N1cGllZCht bS0+ZGV2LT5rZ2QsIG1xZCk7CiB9CiAKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKIAor c3RhdGljIGludCBkZWJ1Z2ZzX3Nob3dfbXFkKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKK3sKKwlzZXFfaGV4X2R1bXAobSwgIiAgICAiLCBEVU1QX1BSRUZJWF9PRkZTRVQsIDMyLCA0 LAorCQkgICAgIGRhdGEsIHNpemVvZihzdHJ1Y3QgdmlfbXFkKSwgZmFsc2UpOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGRlYnVnZnNfc2hvd19tcWRfc2RtYShzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCit7CisJc2VxX2hleF9kdW1wKG0sICIgICAgIiwgRFVNUF9QUkVGSVhf T0ZGU0VULCAzMiwgNCwKKwkJICAgICBkYXRhLCBzaXplb2Yoc3RydWN0IHZpX3NkbWFfbXFkKSwg ZmFsc2UpOworCXJldHVybiAwOworfQorCisjZW5kaWYKIAogc3RydWN0IG1xZF9tYW5hZ2VyICpt cWRfbWFuYWdlcl9pbml0X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsCiAJCXN0cnVjdCBrZmRf ZGV2ICpkZXYpCkBAIC0zODMsNiArMzk5LDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFu YWdlcl9pbml0X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsCiAJCW1xZC0+dXBkYXRlX21xZCA9 IHVwZGF0ZV9tcWQ7CiAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21xZDsKIAkJbXFkLT5p c19vY2N1cGllZCA9IGlzX29jY3VwaWVkOworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQor CQltcWQtPmRlYnVnZnNfc2hvd19tcWQgPSBkZWJ1Z2ZzX3Nob3dfbXFkOworI2VuZGlmCiAJCWJy ZWFrOwogCWNhc2UgS0ZEX01RRF9UWVBFX0hJUToKIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFk X2hpcTsKQEAgLTM5MSw2ICs0MTAsOSBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2Vy X2luaXRfdmkoZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwKIAkJbXFkLT51cGRhdGVfbXFkID0gdXBk YXRlX21xZF9oaXE7CiAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21xZDsKIAkJbXFkLT5p c19vY2N1cGllZCA9IGlzX29jY3VwaWVkOworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQor CQltcWQtPmRlYnVnZnNfc2hvd19tcWQgPSBkZWJ1Z2ZzX3Nob3dfbXFkOworI2VuZGlmCiAJCWJy ZWFrOwogCWNhc2UgS0ZEX01RRF9UWVBFX1NETUE6CiAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21x ZF9zZG1hOwpAQCAtMzk5LDYgKzQyMSw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFn ZXJfaW5pdF92aShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLAogCQltcWQtPnVwZGF0ZV9tcWQgPSB1 cGRhdGVfbXFkX3NkbWE7CiAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21xZF9zZG1hOwog CQltcWQtPmlzX29jY3VwaWVkID0gaXNfb2NjdXBpZWRfc2RtYTsKKyNpZiBkZWZpbmVkKENPTkZJ R19ERUJVR19GUykKKwkJbXFkLT5kZWJ1Z2ZzX3Nob3dfbXFkID0gZGVidWdmc19zaG93X21xZF9z ZG1hOworI2VuZGlmCiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWtmcmVlKG1xZCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcGFja2V0X21hbmFnZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jCmluZGV4IGMzMjMw YjkuLjBlY2JkMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9w YWNrZXRfbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNr ZXRfbWFuYWdlci5jCkBAIC0yNzgsNiArMjc4LDcgQEAgc3RhdGljIGludCBwbV9jcmVhdGVfcnVu bGlzdF9pYihzdHJ1Y3QgcGFja2V0X21hbmFnZXIgKnBtLAogCQlyZXR1cm4gcmV0dmFsOwogCiAJ KnJsX3NpemVfYnl0ZXMgPSBhbGxvY19zaXplX2J5dGVzOworCXBtLT5pYl9zaXplX2J5dGVzID0g YWxsb2Nfc2l6ZV9ieXRlczsKIAogCXByX2RlYnVnKCJCdWlsZGluZyBydW5saXN0IGliIHByb2Nl c3MgY291bnQ6ICVkIHF1ZXVlcyBjb3VudCAlZFxuIiwKIAkJcG0tPmRxbS0+cHJvY2Vzc2VzX2Nv dW50LCBwbS0+ZHFtLT5xdWV1ZV9jb3VudCk7CkBAIC01OTEsMyArNTkyLDI2IEBAIHZvaWQgcG1f cmVsZWFzZV9pYihzdHJ1Y3QgcGFja2V0X21hbmFnZXIgKnBtKQogCX0KIAltdXRleF91bmxvY2so JnBtLT5sb2NrKTsKIH0KKworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQorCitpbnQgcG1f ZGVidWdmc19ydW5saXN0KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgcGFja2V0X21hbmFnZXIgKnBtID0gZGF0YTsKKworCW11dGV4X2xvY2soJnBtLT5sb2NrKTsK KworCWlmICghcG0tPmFsbG9jYXRlZCkgeworCQlzZXFfcHV0cyhtLCAiICBObyBhY3RpdmUgcnVu bGlzdFxuIik7CisJCWdvdG8gb3V0OworCX0KKworCXNlcV9oZXhfZHVtcChtLCAiICAiLCBEVU1Q X1BSRUZJWF9PRkZTRVQsIDMyLCA0LAorCQkgICAgIHBtLT5pYl9idWZmZXJfb2JqLT5jcHVfcHRy LCBwbS0+aWJfc2l6ZV9ieXRlcywgZmFsc2UpOworCitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZwbS0+ bG9jayk7CisJcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcml2LmgKaW5kZXggMWVkYWIyMS4uZGNhNDkzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfcHJpdi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8bGludXgva2ZkX2lvY3Rs Lmg+CiAjaW5jbHVkZSA8bGludXgvaWRyLmg+CiAjaW5jbHVkZSA8bGludXgva2ZpZm8uaD4KKyNp bmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgogI2luY2x1ZGUgPGtnZF9rZmRfaW50ZXJmYWNlLmg+ CiAKICNpbmNsdWRlICJhbWRfc2hhcmVkLmgiCkBAIC03MzUsNiArNzM2LDcgQEAgc3RydWN0IHBh Y2tldF9tYW5hZ2VyIHsKIAlzdHJ1Y3QgbXV0ZXggbG9jazsKIAlib29sIGFsbG9jYXRlZDsKIAlz dHJ1Y3Qga2ZkX21lbV9vYmogKmliX2J1ZmZlcl9vYmo7CisJdW5zaWduZWQgaW50IGliX3NpemVf Ynl0ZXM7CiB9OwogCiBpbnQgcG1faW5pdChzdHJ1Y3QgcGFja2V0X21hbmFnZXIgKnBtLCBzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7CkBAIC03ODEsNCArNzgzLDIzIEBAIGludCBr ZmRfZXZlbnRfZGVzdHJveShzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsIHVpbnQzMl90IGV2ZW50X2lk KTsKIAogaW50IGRiZ2Rldl93YXZlX3Jlc2V0X3dhdmVmcm9udHMoc3RydWN0IGtmZF9kZXYgKmRl diwgc3RydWN0IGtmZF9wcm9jZXNzICpwKTsKIAorLyogRGVidWdmcyAqLworI2lmIGRlZmluZWQo Q09ORklHX0RFQlVHX0ZTKQorCit2b2lkIGtmZF9kZWJ1Z2ZzX2luaXQodm9pZCk7Cit2b2lkIGtm ZF9kZWJ1Z2ZzX2Zpbmkodm9pZCk7CitpbnQga2ZkX2RlYnVnZnNfbXFkc19ieV9wcm9jZXNzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSk7CitpbnQgcHFtX2RlYnVnZnNfbXFkcyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpOworaW50IGtmZF9kZWJ1Z2ZzX2hxZHNfYnlfZGV2 aWNlKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSk7CitpbnQgZHFtX2RlYnVnZnNfaHFk cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpOworaW50IGtmZF9kZWJ1Z2ZzX3Jsc19i eV9kZXZpY2Uoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKTsKK2ludCBwbV9kZWJ1Z2Zz X3J1bmxpc3Qoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKTsKKworI2Vsc2UKKworc3Rh dGljIGlubGluZSB2b2lkIGtmZF9kZWJ1Z2ZzX2luaXQodm9pZCkge30KK3N0YXRpYyBpbmxpbmUg dm9pZCBrZmRfZGVidWdmc19maW5pKHZvaWQpIHt9CisKKyNlbmRpZgorCiAjZW5kaWYKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jCmluZGV4IDM5ZjRjMTkuLjk5YzE4ZWUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3MuYwpAQCAtNjIwLDMgKzYy MCwzMiBAQCBpbnQga2ZkX3Jlc2VydmVkX21lbV9tbWFwKHN0cnVjdCBrZmRfcHJvY2VzcyAqcHJv Y2VzcywKIAkJCSAgICAgICBQRk5fRE9XTihfX3BhKHFwZC0+Y3dzcl9rYWRkcikpLAogCQkJICAg ICAgIEtGRF9DV1NSX1RCQV9UTUFfU0laRSwgdm1hLT52bV9wYWdlX3Byb3QpOwogfQorCisjaWYg ZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCisKK2ludCBrZmRfZGVidWdmc19tcWRzX2J5X3Byb2Nl c3Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBrZmRfcHJvY2Vz cyAqcDsKKwl1bnNpZ25lZCBpbnQgdGVtcDsKKwlpbnQgciA9IDA7CisKKwlpbnQgaWR4ID0gc3Jj dV9yZWFkX2xvY2soJmtmZF9wcm9jZXNzZXNfc3JjdSk7CisKKwloYXNoX2Zvcl9lYWNoX3JjdShr ZmRfcHJvY2Vzc2VzX3RhYmxlLCB0ZW1wLCBwLCBrZmRfcHJvY2Vzc2VzKSB7CisJCXNlcV9wcmlu dGYobSwgIlByb2Nlc3MgJWQgUEFTSUQgJWQ6XG4iLAorCQkJICAgcC0+bGVhZF90aHJlYWQtPnRn aWQsIHAtPnBhc2lkKTsKKworCQltdXRleF9sb2NrKCZwLT5tdXRleCk7CisJCXIgPSBwcW1fZGVi dWdmc19tcWRzKG0sICZwLT5wcW0pOworCQltdXRleF91bmxvY2soJnAtPm11dGV4KTsKKworCQlp ZiAocikKKwkJCWJyZWFrOworCX0KKworCXNyY3VfcmVhZF91bmxvY2soJmtmZF9wcm9jZXNzZXNf c3JjdSwgaWR4KTsKKworCXJldHVybiByOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYwppbmRleCAy Yzk4ODU4Li4yNTczNDU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jCkBAIC0zNzAsNCArMzcwLDY3IEBAIHN0cnVj dCBrZXJuZWxfcXVldWUgKnBxbV9nZXRfa2VybmVsX3F1ZXVlKAogCXJldHVybiBOVUxMOwogfQog CisjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCiAKK2ludCBwcW1fZGVidWdmc19tcWRzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9t YW5hZ2VyICpwcW0gPSBkYXRhOworCXN0cnVjdCBwcm9jZXNzX3F1ZXVlX25vZGUgKnBxbjsKKwlz dHJ1Y3QgcXVldWUgKnE7CisJZW51bSBLRkRfTVFEX1RZUEUgbXFkX3R5cGU7CisJc3RydWN0IG1x ZF9tYW5hZ2VyICptcWRfbWFuYWdlcjsKKwlpbnQgciA9IDA7CisKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHBxbiwgJnBxbS0+cXVldWVzLCBwcm9jZXNzX3F1ZXVlX2xpc3QpIHsKKwkJaWYgKHBxbi0+ cSkgeworCQkJcSA9IHBxbi0+cTsKKwkJCXN3aXRjaCAocS0+cHJvcGVydGllcy50eXBlKSB7CisJ CQljYXNlIEtGRF9RVUVVRV9UWVBFX1NETUE6CisJCQkJc2VxX3ByaW50ZihtLCAiICBTRE1BIHF1 ZXVlIG9uIGRldmljZSAleFxuIiwKKwkJCQkJICAgcS0+ZGV2aWNlLT5pZCk7CisJCQkJbXFkX3R5 cGUgPSBLRkRfTVFEX1RZUEVfU0RNQTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0ZEX1FVRVVFX1RZ UEVfQ09NUFVURToKKwkJCQlzZXFfcHJpbnRmKG0sICIgIENvbXB1dGUgcXVldWUgb24gZGV2aWNl ICV4XG4iLAorCQkJCQkgICBxLT5kZXZpY2UtPmlkKTsKKwkJCQltcWRfdHlwZSA9IEtGRF9NUURf VFlQRV9DUDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJc2VxX3ByaW50ZihtLAorCQkJ CSIgIEJhZCB1c2VyIHF1ZXVlIHR5cGUgJWQgb24gZGV2aWNlICV4XG4iLAorCQkJCQkgICBxLT5w cm9wZXJ0aWVzLnR5cGUsIHEtPmRldmljZS0+aWQpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJ bXFkX21hbmFnZXIgPSBxLT5kZXZpY2UtPmRxbS0+b3BzLmdldF9tcWRfbWFuYWdlcigKKwkJCQlx LT5kZXZpY2UtPmRxbSwgbXFkX3R5cGUpOworCQl9IGVsc2UgaWYgKHBxbi0+a3EpIHsKKwkJCXEg PSBwcW4tPmtxLT5xdWV1ZTsKKwkJCW1xZF9tYW5hZ2VyID0gcHFuLT5rcS0+bXFkOworCQkJc3dp dGNoIChxLT5wcm9wZXJ0aWVzLnR5cGUpIHsKKwkJCWNhc2UgS0ZEX1FVRVVFX1RZUEVfRElROgor CQkJCXNlcV9wcmludGYobSwgIiAgRElRIG9uIGRldmljZSAleFxuIiwKKwkJCQkJICAgcHFuLT5r cS0+ZGV2LT5pZCk7CisJCQkJbXFkX3R5cGUgPSBLRkRfTVFEX1RZUEVfSElROworCQkJCWJyZWFr OworCQkJZGVmYXVsdDoKKwkJCQlzZXFfcHJpbnRmKG0sCisJCQkJIiAgQmFkIGtlcm5lbCBxdWV1 ZSB0eXBlICVkIG9uIGRldmljZSAleFxuIiwKKwkJCQkJICAgcS0+cHJvcGVydGllcy50eXBlLAor CQkJCQkgICBwcW4tPmtxLT5kZXYtPmlkKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNl IHsKKwkJCXNlcV9wcmludGYobSwKKwkJIiAgV2VpcmQ6IFF1ZXVlIG5vZGUgd2l0aCBuZWl0aGVy IGtlcm5lbCBub3IgdXNlciBxdWV1ZVxuIik7CisJCQljb250aW51ZTsKKwkJfQorCisJCXIgPSBt cWRfbWFuYWdlci0+ZGVidWdmc19zaG93X21xZChtLCBxLT5tcWQpOworCQlpZiAociAhPSAwKQor CQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3RvcG9sb2d5LmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYwppbmRleCAxOWNlNTkwLi45ZDAzYTU2IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYwpAQCAtMzIsNiArMzIsNyBAQAog I2luY2x1ZGUgImtmZF9wcml2LmgiCiAjaW5jbHVkZSAia2ZkX2NyYXQuaCIKICNpbmNsdWRlICJr ZmRfdG9wb2xvZ3kuaCIKKyNpbmNsdWRlICJrZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCIKIAog c3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgdG9wb2xvZ3lfZGV2aWNlX2xpc3Q7CiBzdGF0aWMgaW50 IHRvcG9sb2d5X2NyYXRfcGFyc2VkOwpAQCAtMTIzMywzICsxMjM0LDU3IEBAIHN0cnVjdCBrZmRf ZGV2ICprZmRfdG9wb2xvZ3lfZW51bV9rZmRfZGV2aWNlcyh1aW50OF90IGlkeCkKIAlyZXR1cm4g ZGV2aWNlOwogCiB9CisKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKKworaW50IGtmZF9k ZWJ1Z2ZzX2hxZHNfYnlfZGV2aWNlKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKK3sK KwlzdHJ1Y3Qga2ZkX3RvcG9sb2d5X2RldmljZSAqZGV2OworCXVuc2lnbmVkIGludCBpID0gMDsK KwlpbnQgciA9IDA7CisKKwlkb3duX3JlYWQoJnRvcG9sb2d5X2xvY2spOworCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeShkZXYsICZ0b3BvbG9neV9kZXZpY2VfbGlzdCwgbGlzdCkgeworCQlpZiAoIWRl di0+Z3B1KSB7CisJCQlpKys7CisJCQljb250aW51ZTsKKwkJfQorCisJCXNlcV9wcmludGYobSwg Ik5vZGUgJXUsIGdwdV9pZCAleDpcbiIsIGkrKywgZGV2LT5ncHUtPmlkKTsKKwkJciA9IGRxbV9k ZWJ1Z2ZzX2hxZHMobSwgZGV2LT5ncHUtPmRxbSk7CisJCWlmIChyKQorCQkJYnJlYWs7CisJfQor CisJdXBfcmVhZCgmdG9wb2xvZ3lfbG9jayk7CisKKwlyZXR1cm4gcjsKK30KKworaW50IGtmZF9k ZWJ1Z2ZzX3Jsc19ieV9kZXZpY2Uoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQorewor CXN0cnVjdCBrZmRfdG9wb2xvZ3lfZGV2aWNlICpkZXY7CisJdW5zaWduZWQgaW50IGkgPSAwOwor CWludCByID0gMDsKKworCWRvd25fcmVhZCgmdG9wb2xvZ3lfbG9jayk7CisKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KGRldiwgJnRvcG9sb2d5X2RldmljZV9saXN0LCBsaXN0KSB7CisJCWlmICghZGV2 LT5ncHUpIHsKKwkJCWkrKzsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc2VxX3ByaW50ZihtLCAi Tm9kZSAldSwgZ3B1X2lkICV4OlxuIiwgaSsrLCBkZXYtPmdwdS0+aWQpOworCQlyID0gcG1fZGVi dWdmc19ydW5saXN0KG0sICZkZXYtPmdwdS0+ZHFtLT5wYWNrZXRzKTsKKwkJaWYgKHIpCisJCQli cmVhazsKKwl9CisKKwl1cF9yZWFkKCZ0b3BvbG9neV9sb2NrKTsKKworCXJldHVybiByOworfQor CisjZW5kaWYKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngK