From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 05/11] drm/amdgpu: Add Fiji support to SMC and DPM (v2) Date: Mon, 3 Aug 2015 13:58:06 -0400 Message-ID: <1438624692-30932-6-git-send-email-alexander.deucher@amd.com> References: <1438624692-30932-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yk0-f175.google.com (mail-yk0-f175.google.com [209.85.160.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87B0F6E765 for ; Mon, 3 Aug 2015 10:58:30 -0700 (PDT) Received: by ykax123 with SMTP id x123so117296944yka.1 for ; Mon, 03 Aug 2015 10:58:29 -0700 (PDT) In-Reply-To: <1438624692-30932-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: David Zhang List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2aWQgWmhhbmcgPGRhdmlkMS56aGFuZ0BhbWQuY29tPgoKdjI6IGFnZDVmOiBwcmVw YXJlIGZvciByZWxlYXNlCgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBaaGFuZyA8ZGF2aWQxLnpoYW5n QGFtZC5jb20+ClJldmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFt ZC5jb20+ClJldmlld2VkLWJ5OiBKYW1teSBaaG91IDxKYW1teS5aaG91QGFtZC5jb20+ClJldmll d2VkLWJ5OiBDaHJpc3RpYW4gSz9uaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSAgICAgIHwgICAxICsKIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2ZpamlfZHBtLmMgICAgfCAxODEgKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZmlqaV9wcHNtYy5oICB8IDE4MiArKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9maWppX3NtYy5jICAgIHwgODUzICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Zpamlfc211bWdyLmggfCAg NDIgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMgICAgICAgICAgfCAgIDcgKwog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmlfZHBtLmggICAgICB8ICAgMiArLQogNyBmaWxl cyBjaGFuZ2VkLCAxMjY3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9maWppX2RwbS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZmlqaV9wcHNtYy5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZmlqaV9zbWMuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Zpamlfc211bWdyLmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCmluZGV4IGFkNDRlMTEuLjBjMmY5OTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC01NCw2ICs1NCw3IEBAIGFtZGdwdS15ICs9 IFwKIAlhbWRncHVfZHBtLm8gXAogCWN6X3NtYy5vIGN6X2RwbS5vIFwKIAl0b25nYV9zbWMubyB0 b25nYV9kcG0ubyBcCisJZmlqaV9zbWMubyBmaWppX2RwbS5vIFwKIAlpY2VsYW5kX3NtYy5vIGlj ZWxhbmRfZHBtLm8KIAogIyBhZGQgRENFIGJsb2NrCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9maWppX2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZmlq aV9kcG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjk4NDVkCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZmlqaV9kcG0uYwpAQCAt MCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE0IEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Zpcm13 YXJlLmg+CisjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgImFtZGdwdS5oIgorI2luY2x1ZGUg ImZpamlfc211bWdyLmgiCisKK01PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L2Zpamlfc21jLmJpbiIp OworCitzdGF0aWMgdm9pZCBmaWppX2RwbV9zZXRfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpOworCitzdGF0aWMgaW50IGZpamlfZHBtX2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQor eworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICop aGFuZGxlOworCisJZmlqaV9kcG1fc2V0X2Z1bmNzKGFkZXYpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZmlqaV9kcG1faW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCit7CisJY2hhciBmd19uYW1lWzMwXSA9ICJhbWRncHUvZmlqaV9zbWMuYmluIjsKKwlp bnQgZXJyOworCisJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cG0uZncsIGZ3X25hbWUs IGFkZXYtPmRldik7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisJZXJyID0gYW1kZ3B1X3Vjb2Rl X3ZhbGlkYXRlKGFkZXYtPnBtLmZ3KTsKKworb3V0OgorCWlmIChlcnIpIHsKKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCIiLCBmd19uYW1lKTsKKwkJcmVsZWFzZV9m aXJtd2FyZShhZGV2LT5wbS5mdyk7CisJCWFkZXYtPnBtLmZ3ID0gTlVMTDsKKwl9CisJcmV0dXJu IGVycjsKK30KKworc3RhdGljIGludCBmaWppX2RwbV9zd19pbml0KHZvaWQgKmhhbmRsZSkKK3sK KwlpbnQgcmV0OworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVf ZGV2aWNlICopaGFuZGxlOworCisJcmV0ID0gZmlqaV9kcG1faW5pdF9taWNyb2NvZGUoYWRldik7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGZpamlfZHBtX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGZpamlfZHBtX2h3X2luaXQodm9pZCAqaGFuZGxlKQoreworCWludCByZXQ7CisJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 CisKKwltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisKKwlyZXQgPSBmaWppX3NtdV9pbml0 KGFkZXYpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJTTVUgaW5pdGlhbGl6YXRpb24gZmFp bGVkXG4iKTsKKwkJZ290byBmYWlsOworCX0KKworCXJldCA9IGZpamlfc211X3N0YXJ0KGFkZXYp OworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJTTVUgc3RhcnQgZmFpbGVkXG4iKTsKKwkJZ290 byBmYWlsOworCX0KKworCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiAw OworCitmYWlsOgorCWFkZXYtPmZpcm13YXJlLnNtdV9sb2FkID0gZmFsc2U7CisJbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQg ZmlqaV9kcG1faHdfZmluaSh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisJbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOworCWZpamlfc211X2ZpbmkoYWRldik7CisJbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmlqaV9kcG1fc3VzcGVu ZCh2b2lkICpoYW5kbGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlmaWppX2RwbV9od19maW5pKGFkZXYpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmlqaV9kcG1fcmVzdW1lKHZvaWQgKmhhbmRsZSkK K3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKKworCWZpamlfZHBtX2h3X2luaXQoYWRldik7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBmaWppX2RwbV9zZXRfY2xvY2tnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAor CQkJZW51bSBhbWRfY2xvY2tnYXRpbmdfc3RhdGUgc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZmlqaV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwK KwkJCWVudW0gYW1kX3Bvd2VyZ2F0aW5nX3N0YXRlIHN0YXRlKQoreworCXJldHVybiAwOworfQor Citjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGZpamlfZHBtX2lwX2Z1bmNzID0geworCS5lYXJs eV9pbml0ID0gZmlqaV9kcG1fZWFybHlfaW5pdCwKKwkubGF0ZV9pbml0ID0gTlVMTCwKKwkuc3df aW5pdCA9IGZpamlfZHBtX3N3X2luaXQsCisJLnN3X2ZpbmkgPSBmaWppX2RwbV9zd19maW5pLAor CS5od19pbml0ID0gZmlqaV9kcG1faHdfaW5pdCwKKwkuaHdfZmluaSA9IGZpamlfZHBtX2h3X2Zp bmksCisJLnN1c3BlbmQgPSBmaWppX2RwbV9zdXNwZW5kLAorCS5yZXN1bWUgPSBmaWppX2RwbV9y ZXN1bWUsCisJLmlzX2lkbGUgPSBOVUxMLAorCS53YWl0X2Zvcl9pZGxlID0gTlVMTCwKKwkuc29m dF9yZXNldCA9IE5VTEwsCisJLnByaW50X3N0YXR1cyA9IE5VTEwsCisJLnNldF9jbG9ja2dhdGlu Z19zdGF0ZSA9IGZpamlfZHBtX3NldF9jbG9ja2dhdGluZ19zdGF0ZSwKKwkuc2V0X3Bvd2VyZ2F0 aW5nX3N0YXRlID0gZmlqaV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBhbWRncHVfZHBtX2Z1bmNzIGZpamlfZHBtX2Z1bmNzID0geworCS5nZXRf dGVtcGVyYXR1cmUgPSBOVUxMLAorCS5wcmVfc2V0X3Bvd2VyX3N0YXRlID0gTlVMTCwKKwkuc2V0 X3Bvd2VyX3N0YXRlID0gTlVMTCwKKwkucG9zdF9zZXRfcG93ZXJfc3RhdGUgPSBOVUxMLAorCS5k aXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlZCA9IE5VTEwsCisJLmdldF9zY2xrID0gTlVMTCwK KwkuZ2V0X21jbGsgPSBOVUxMLAorCS5wcmludF9wb3dlcl9zdGF0ZSA9IE5VTEwsCisJLmRlYnVn ZnNfcHJpbnRfY3VycmVudF9wZXJmb3JtYW5jZV9sZXZlbCA9IE5VTEwsCisJLmZvcmNlX3BlcmZv cm1hbmNlX2xldmVsID0gTlVMTCwKKwkudmJsYW5rX3Rvb19zaG9ydCA9IE5VTEwsCisJLnBvd2Vy Z2F0ZV91dmQgPSBOVUxMLAorfTsKKworc3RhdGljIHZvaWQgZmlqaV9kcG1fc2V0X2Z1bmNzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWlmIChOVUxMID09IGFkZXYtPnBtLmZ1bmNz KQorCQlhZGV2LT5wbS5mdW5jcyA9ICZmaWppX2RwbV9mdW5jczsKK30KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ZpamlfcHBzbWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2ZpamlfcHBzbWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zYzQ4MjQwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv ZmlqaV9wcHNtYy5oCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTQgQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZu ZGVmIEZJSklfUFBfU01DX0gKKyNkZWZpbmUgRklKSV9QUF9TTUNfSAorCisjcHJhZ21hIHBhY2so cHVzaCwgMSkKKworI2RlZmluZSBQUFNNQ19TV1NUQVRFX0ZMQUdfREMgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAxCisjZGVmaW5lIFBQU01DX1NXU1RBVEVfRkxBR19VVkQgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgUFBTTUNfU1dTVEFURV9GTEFHX1ZDRSAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwNAorCisjZGVmaW5lIFBQU01DX1RIRVJNQUxfUFJPVEVD VF9UWVBFX0lOVEVSTkFMICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgUFBTTUNfVEhFUk1BTF9Q Uk9URUNUX1RZUEVfRVhURVJOQUwgICAgICAgICAgICAgMHgwMQorI2RlZmluZSBQUFNNQ19USEVS TUFMX1BST1RFQ1RfVFlQRV9OT05FICAgICAgICAgICAgICAgICAweGZmCisKKyNkZWZpbmUgUFBT TUNfU1lTVEVNRkxBR19HUElPX0RDICAgICAgICAgICAgICAgICAgICAgICAgMHgwMQorI2RlZmlu ZSBQUFNNQ19TWVNURU1GTEFHX1NURVBWRERDICAgICAgICAgICAgICAgICAgICAgICAweDAyCisj ZGVmaW5lIFBQU01DX1NZU1RFTUZMQUdfR0REUjUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDQKKworI2RlZmluZSBQUFNNQ19TWVNURU1GTEFHX0RJU0FCTEVfQkFCWVNURVAgICAgICAgICAg ICAgICAweDA4CisKKyNkZWZpbmUgUFBTTUNfU1lTVEVNRkxBR19SRUdVTEFUT1JfSE9UICAgICAg ICAgICAgICAgICAgMHgxMAorI2RlZmluZSBQUFNNQ19TWVNURU1GTEFHX1JFR1VMQVRPUl9IT1Rf QU5BTE9HICAgICAgICAgICAweDIwCisKKyNkZWZpbmUgUFBTTUNfRVhUUkFGTEFHU19BQzJEQ19B Q1RJT05fTUFTSyAgICAgICAgICAgICAgMHgwNworI2RlZmluZSBQUFNNQ19FWFRSQUZMQUdTX0FD MkRDX0RPTlRfV0FJVF9GT1JfVkJMQU5LICAgICAweDA4CisKKyNkZWZpbmUgUFBTTUNfRVhUUkFG TEFHU19BQzJEQ19BQ1RJT05fR09UT0RQTUxPV1NUQVRFICAgMHgwMAorI2RlZmluZSBQUFNNQ19F WFRSQUZMQUdTX0FDMkRDX0FDVElPTl9HT1RPSU5JVElBTFNUQVRFICAweDAxCisKKyNkZWZpbmUg UFBTTUNfRFBNMkZMQUdTX1REUENMTVAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMQorI2Rl ZmluZSBQUFNNQ19EUE0yRkxBR1NfUFdSU0hGVCAgICAgICAgICAgICAgICAgICAgICAgICAweDAy CisjZGVmaW5lIFBQU01DX0RQTTJGTEFHU19PQ1AgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDQKKworI2RlZmluZSBQUFNNQ19ESVNQTEFZX1dBVEVSTUFSS19MT1cgICAgICAgICAgICAg ICAgICAgICAwCisjZGVmaW5lIFBQU01DX0RJU1BMQVlfV0FURVJNQVJLX0hJR0ggICAgICAgICAg ICAgICAgICAgIDEKKworI2RlZmluZSBQUFNNQ19TVEFURUZMQUdfQVVUT19QVUxTRV9TS0lQICAg IAkJMHgwMQorI2RlZmluZSBQUFNNQ19TVEFURUZMQUdfUE9XRVJCT09TVCAgICAgICAgIAkJMHgw MgorI2RlZmluZSBQUFNNQ19TVEFURUZMQUdfUFNLSVBfT05fVERQX0ZBVUxUIAkJMHgwNAorI2Rl ZmluZSBQUFNNQ19TVEFURUZMQUdfUE9XRVJTSElGVCAgICAgICAgIAkJMHgwOAorI2RlZmluZSBQ UFNNQ19TVEFURUZMQUdfU0xPV19SRUFEX01BUkdJTiAgIAkJMHgxMAorI2RlZmluZSBQUFNNQ19T VEFURUZMQUdfREVFUFNMRUVQX1RIUk9UVExFIAkJMHgyMAorI2RlZmluZSBQUFNNQ19TVEFURUZM QUdfREVFUFNMRUVQX0JZUEFTUyAgIAkJMHg0MAorCisjZGVmaW5lIEZET19NT0RFX0hBUkRXQVJF IDAKKyNkZWZpbmUgRkRPX01PREVfUElFQ0VfV0lTRV9MSU5FQVIgMQorCitlbnVtIEZBTl9DT05U Uk9MIHsKKwlGQU5fQ09OVFJPTF9GVVpaWSwKKwlGQU5fQ09OVFJPTF9UQUJMRQorfTsKKworLy9H ZW1pbmkgTW9kZXMKKyNkZWZpbmUgUFBTTUNfR2VtaW5pTW9kZU5vbmUgICAwICAvL1NpbmdsZSBH UFUgYm9hcmQKKyNkZWZpbmUgUFBTTUNfR2VtaW5pTW9kZU1hc3RlciAxICAvL01hc3RlciBHUFUg b24gYSBHZW1pbmkgYm9hcmQKKyNkZWZpbmUgUFBTTUNfR2VtaW5pTW9kZVNsYXZlICAyICAvL1Ns YXZlIEdQVSBvbiBhIEdlbWluaSBib2FyZAorCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9PSyAgICAg ICAgICAgICAJCQkoKHVpbnQxNl90KTB4MDEpCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9Ob01vcmUg ICAgICAgICAJCQkoKHVpbnQxNl90KTB4MDIpCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9Ob3ROb3cg ICAgICAgICAJCQkoKHVpbnQxNl90KTB4MDMpCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9GYWlsZWQg ICAgICAgICAJCQkoKHVpbnQxNl90KTB4RkYpCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9Vbmtub3du Q21kICAgICAJCQkoKHVpbnQxNl90KTB4RkUpCisjZGVmaW5lIFBQU01DX1Jlc3VsdF9Vbmtub3du VlQgICAgICAJCQkoKHVpbnQxNl90KTB4RkQpCisKK3R5cGVkZWYgdWludDE2X3QgUFBTTUNfUmVz dWx0OworCisjZGVmaW5lIFBQU01DX2lzRVJST1IoeCkgKCh1aW50MTZfdCkweDgwICYgKHgpKQor CisjZGVmaW5lIFBQU01DX01TR19IYWx0ICAgICAgICAgICAgICAgICAgICAgIAkJKCh1aW50MTZf dCkweDEwKQorI2RlZmluZSBQUFNNQ19NU0dfUmVzdW1lICAgICAgICAgICAgICAgICAgICAJCSgo dWludDE2X3QpMHgxMSkKKyNkZWZpbmUgUFBTTUNfTVNHX0VuYWJsZURQTUxldmVsICAgICAgICAg ICAgCQkoKHVpbnQxNl90KTB4MTIpCisjZGVmaW5lIFBQU01DX01TR19aZXJvTGV2ZWxzRGlzYWJs ZWQgICAgICAgIAkJKCh1aW50MTZfdCkweDEzKQorI2RlZmluZSBQUFNNQ19NU0dfT25lTGV2ZWxz RGlzYWJsZWQgICAgICAgICAJCSgodWludDE2X3QpMHgxNCkKKyNkZWZpbmUgUFBTTUNfTVNHX1R3 b0xldmVsc0Rpc2FibGVkICAgICAgICAgCQkoKHVpbnQxNl90KTB4MTUpCisjZGVmaW5lIFBQU01D X01TR19FbmFibGVUaGVybWFsSW50ZXJydXB0ICAgIAkJKCh1aW50MTZfdCkweDE2KQorI2RlZmlu ZSBQUFNNQ19NU0dfUnVubmluZ09uQUMgICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHgxNykK KyNkZWZpbmUgUFBTTUNfTVNHX0xldmVsVXAgICAgICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90 KTB4MTgpCisjZGVmaW5lIFBQU01DX01TR19MZXZlbERvd24gICAgICAgICAgICAgICAgIAkJKCh1 aW50MTZfdCkweDE5KQorI2RlZmluZSBQUFNNQ19NU0dfUmVzZXREUE1Db3VudGVycyAgICAgICAg ICAJCSgodWludDE2X3QpMHgxYSkKKyNkZWZpbmUgUFBTTUNfTVNHX1N3aXRjaFRvU3dTdGF0ZSAg ICAgICAgICAgCQkoKHVpbnQxNl90KTB4MjApCisjZGVmaW5lIFBQU01DX01TR19Td2l0Y2hUb1N3 U3RhdGVMYXN0ICAgICAgIAkJKCh1aW50MTZfdCkweDNmKQorI2RlZmluZSBQUFNNQ19NU0dfU3dp dGNoVG9Jbml0aWFsU3RhdGUgICAgICAJCSgodWludDE2X3QpMHg0MCkKKyNkZWZpbmUgUFBTTUNf TVNHX05vRm9yY2VkTGV2ZWwgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4NDEpCisjZGVmaW5l IFBQU01DX01TR19Gb3JjZUhpZ2ggICAgICAgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDQyKQor I2RlZmluZSBQUFNNQ19NU0dfRm9yY2VNZWRpdW1PckhpZ2ggICAgICAgICAJCSgodWludDE2X3Qp MHg0MykKKyNkZWZpbmUgUFBTTUNfTVNHX1N3aXRjaFRvTWluaW11bVBvd2VyICAgICAgCQkoKHVp bnQxNl90KTB4NTEpCisjZGVmaW5lIFBQU01DX01TR19SZXN1bWVGcm9tTWluaW11bVBvd2VyICAg IAkJKCh1aW50MTZfdCkweDUyKQorI2RlZmluZSBQUFNNQ19NU0dfRW5hYmxlQ2FjICAgICAgICAg ICAgICAgICAJCSgodWludDE2X3QpMHg1MykKKyNkZWZpbmUgUFBTTUNfTVNHX0Rpc2FibGVDYWMg ICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4NTQpCisjZGVmaW5lIFBQU01DX0RQTVN0YXRl SGlzdG9yeVN0YXJ0ICAgICAgICAgIAkJKCh1aW50MTZfdCkweDU1KQorI2RlZmluZSBQUFNNQ19E UE1TdGF0ZUhpc3RvcnlTdG9wICAgICAgICAgICAJCSgodWludDE2X3QpMHg1NikKKyNkZWZpbmUg UFBTTUNfQ0FDSGlzdG9yeVN0YXJ0ICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4NTcpCisj ZGVmaW5lIFBQU01DX0NBQ0hpc3RvcnlTdG9wICAgICAgICAgICAgICAgIAkJKCh1aW50MTZfdCkw eDU4KQorI2RlZmluZSBQUFNNQ19URFBDbGFtcGluZ0FjdGl2ZSAgICAgICAgICAgICAJCSgodWlu dDE2X3QpMHg1OSkKKyNkZWZpbmUgUFBTTUNfVERQQ2xhbXBpbmdJbmFjdGl2ZSAgICAgICAgICAg CQkoKHVpbnQxNl90KTB4NUEpCisjZGVmaW5lIFBQU01DX1N0YXJ0RmFuQ29udHJvbCAgICAgICAg ICAgICAgIAkJKCh1aW50MTZfdCkweDVCKQorI2RlZmluZSBQUFNNQ19TdG9wRmFuQ29udHJvbCAg ICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHg1QykKKyNkZWZpbmUgUFBTTUNfTm9EaXNwbGF5 ICAgICAgICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4NUQpCisjZGVmaW5lIFBQU01DX0hh c0Rpc3BsYXkgICAgICAgICAgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDVFKQorI2RlZmluZSBQ UFNNQ19NU0dfVVZEUG93ZXJPRkYgICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHg2MCkKKyNk ZWZpbmUgUFBTTUNfTVNHX1VWRFBvd2VyT04gICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4 NjEpCisjZGVmaW5lIFBQU01DX01TR19FbmFibGVVTFYgICAgICAgICAgICAgICAgIAkJKCh1aW50 MTZfdCkweDYyKQorI2RlZmluZSBQUFNNQ19NU0dfRGlzYWJsZVVMViAgICAgICAgICAgICAgICAJ CSgodWludDE2X3QpMHg2MykKKyNkZWZpbmUgUFBTTUNfTVNHX0VudGVyVUxWICAgICAgICAgICAg ICAgICAgCQkoKHVpbnQxNl90KTB4NjQpCisjZGVmaW5lIFBQU01DX01TR19FeGl0VUxWICAgICAg ICAgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDY1KQorI2RlZmluZSBQUFNNQ19Qb3dlclNoaWZ0 QWN0aXZlICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHg2QSkKKyNkZWZpbmUgUFBTTUNfUG93 ZXJTaGlmdEluYWN0aXZlICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4NkIpCisjZGVmaW5lIFBQ U01DX09DUEFjdGl2ZSAgICAgICAgICAgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDZDKQorI2Rl ZmluZSBQUFNNQ19PQ1BJbmFjdGl2ZSAgICAgICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHg2 RCkKKyNkZWZpbmUgUFBTTUNfQ0FDTG9uZ1Rlcm1BdmdFbmFibGUgICAgICAgICAgCQkoKHVpbnQx Nl90KTB4NkUpCisjZGVmaW5lIFBQU01DX0NBQ0xvbmdUZXJtQXZnRGlzYWJsZSAgICAgICAgIAkJ KCh1aW50MTZfdCkweDZGKQorI2RlZmluZSBQUFNNQ19NU0dfSW5mZXJyZWRTdGF0ZVN3ZWVwX1N0 YXJ0ICAJCSgodWludDE2X3QpMHg3MCkKKyNkZWZpbmUgUFBTTUNfTVNHX0luZmVycmVkU3RhdGVT d2VlcF9TdG9wICAgCQkoKHVpbnQxNl90KTB4NzEpCisjZGVmaW5lIFBQU01DX01TR19Td2l0Y2hU b0xvd2VzdEluZlN0YXRlICAgIAkJKCh1aW50MTZfdCkweDcyKQorI2RlZmluZSBQUFNNQ19NU0df U3dpdGNoVG9Ob25JbmZTdGF0ZSAgICAgICAJCSgodWludDE2X3QpMHg3MykKKyNkZWZpbmUgUFBT TUNfTVNHX0FsbFN0YXRlU3dlZXBfU3RhcnQgICAgICAgCQkoKHVpbnQxNl90KTB4NzQpCisjZGVm aW5lIFBQU01DX01TR19BbGxTdGF0ZVN3ZWVwX1N0b3AgICAgICAgIAkJKCh1aW50MTZfdCkweDc1 KQorI2RlZmluZSBQUFNNQ19NU0dfU3dpdGNoTmV4dExvd2VySW5mU3RhdGUgICAJCSgodWludDE2 X3QpMHg3NikKKyNkZWZpbmUgUFBTTUNfTVNHX1N3aXRjaE5leHRIaWdoZXJJbmZTdGF0ZSAgCQko KHVpbnQxNl90KTB4NzcpCisjZGVmaW5lIFBQU01DX01TR19NY2xrUmV0cmFpbmluZ1Rlc3QgICAg ICAgIAkJKCh1aW50MTZfdCkweDc4KQorI2RlZmluZSBQUFNNQ19NU0dfRm9yY2VURFBDbGFtcGlu ZyAgICAgICAgICAJCSgodWludDE2X3QpMHg3OSkKKyNkZWZpbmUgUFBTTUNfTVNHX0NvbGxlY3RD QUNfUG93ZXJDb3JyZWxuICAgCQkoKHVpbnQxNl90KTB4N0EpCisjZGVmaW5lIFBQU01DX01TR19D b2xsZWN0Q0FDX1dlaWdodENhbGliICAgIAkJKCh1aW50MTZfdCkweDdCKQorI2RlZmluZSBQUFNN Q19NU0dfQ29sbGVjdENBQ19TUW9ubHkgICAgICAgICAJCSgodWludDE2X3QpMHg3QykKKyNkZWZp bmUgUFBTTUNfTVNHX0NvbGxlY3RDQUNfVGVtcGVyYXR1cmVQd3IgCQkoKHVpbnQxNl90KTB4N0Qp CisjZGVmaW5lIFBQU01DX01TR19FeHRyZW1pdGllc1Rlc3RfU3RhcnQgICAgIAkJKCh1aW50MTZf dCkweDdFKQorI2RlZmluZSBQUFNNQ19NU0dfRXh0cmVtaXRpZXNUZXN0X1N0b3AgICAgICAJCSgo dWludDE2X3QpMHg3RikKKyNkZWZpbmUgUFBTTUNfRmx1c2hEYXRhQ2FjaGUgICAgICAgICAgICAg ICAgCQkoKHVpbnQxNl90KTB4ODApCisjZGVmaW5lIFBQU01DX0ZsdXNoSW5zdHJDYWNoZSAgICAg ICAgICAgICAgIAkJKCh1aW50MTZfdCkweDgxKQorI2RlZmluZSBQUFNNQ19NU0dfU2V0RW5hYmxl ZExldmVscyAgICAgICAgICAJCSgodWludDE2X3QpMHg4MikKKyNkZWZpbmUgUFBTTUNfTVNHX1Nl dEZvcmNlZExldmVscyAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4ODMpCisjZGVmaW5lIFBQU01D X01TR19SZXNldFRvRGVmYXVsdHMgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDg0KQorI2RlZmlu ZSBQUFNNQ19NU0dfU2V0Rm9yY2VkTGV2ZWxzQW5kSnVtcCAgICAJCSgodWludDE2X3QpMHg4NSkK KyNkZWZpbmUgUFBTTUNfTVNHX1NldENBQ0hpc3RvcnlNb2RlICAgICAgICAgCQkoKHVpbnQxNl90 KTB4ODYpCisjZGVmaW5lIFBQU01DX01TR19FbmFibGVEVEUgICAgICAgICAgICAgICAgIAkJKCh1 aW50MTZfdCkweDg3KQorI2RlZmluZSBQUFNNQ19NU0dfRGlzYWJsZURURSAgICAgICAgICAgICAg ICAJCSgodWludDE2X3QpMHg4OCkKKyNkZWZpbmUgUFBTTUNfTVNHX1NtY1NwYWNlU2V0QWRkcmVz cyAgICAgICAgCQkoKHVpbnQxNl90KTB4ODkpCisjZGVmaW5lIFBQU01DX01TR19TbWNTcGFjZVdy aXRlRFdvcmRJbmMgICAgIAkJKCh1aW50MTZfdCkweDhBKQorI2RlZmluZSBQUFNNQ19NU0dfU21j U3BhY2VXcml0ZVdvcmRJbmMgICAgICAJCSgodWludDE2X3QpMHg4QikKKyNkZWZpbmUgUFBTTUNf TVNHX1NtY1NwYWNlV3JpdGVCeXRlSW5jICAgICAgCQkoKHVpbnQxNl90KTB4OEMpCisKKyNkZWZp bmUgUFBTTUNfTVNHX0JSRUFLICAgICAgICAgICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4Rjgp CisKKyNkZWZpbmUgUFBTTUNfTVNHX1Rlc3QgICAgICAgICAgICAgICAgICAgICAgCQkoKHVpbnQx Nl90KTB4MTAwKQorI2RlZmluZSBQUFNNQ19NU0dfRFJWX0RSQU1fQUREUl9ISSAgICAgICAgICAg IAkJKCh1aW50MTZfdCkweDI1MCkKKyNkZWZpbmUgUFBTTUNfTVNHX0RSVl9EUkFNX0FERFJfTE8g ICAgICAgICAgICAJCSgodWludDE2X3QpMHgyNTEpCisjZGVmaW5lIFBQU01DX01TR19TTVVfRFJB TV9BRERSX0hJICAgICAgICAgICAgCQkoKHVpbnQxNl90KTB4MjUyKQorI2RlZmluZSBQUFNNQ19N U0dfU01VX0RSQU1fQUREUl9MTyAgICAgICAgICAgIAkJKCh1aW50MTZfdCkweDI1MykKKyNkZWZp bmUgUFBTTUNfTVNHX0xvYWRVY29kZXMgICAgICAgICAgICAgICAgICAJCSgodWludDE2X3QpMHgy NTQpCisKK3R5cGVkZWYgdWludDE2X3QgUFBTTUNfTXNnOworCisjZGVmaW5lIFBQU01DX0VWRU5U X1NUQVRVU19USEVSTUFMICAgICAgICAgIAkJMHgwMDAwMDAwMQorI2RlZmluZSBQUFNNQ19FVkVO VF9TVEFUVVNfUkVHVUxBVE9SSE9UICAgICAJCTB4MDAwMDAwMDIKKyNkZWZpbmUgUFBTTUNfRVZF TlRfU1RBVFVTX0RDICAgICAgICAgICAgICAgCQkweDAwMDAwMDA0CisjZGVmaW5lIFBQU01DX0VW RU5UX1NUQVRVU19HUElPMTcgICAgICAgICAgIAkJMHgwMDAwMDAwOAorCisjcHJhZ21hIHBhY2so cG9wKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Zp amlfc21jLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9maWppX3NtYy5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5M2M4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9maWppX3NtYy5jCkBAIC0wLDAgKzEsODUzIEBACisv KgorICogQ29weXJpZ2h0IDIwMTQgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIo UykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBP VEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRl ICJkcm1QLmgiCisjaW5jbHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSAiZmlqaV9wcHNtYy5oIgor I2luY2x1ZGUgImZpamlfc211bWdyLmgiCisjaW5jbHVkZSAic211X3Vjb2RlX3hmZXJfdmkuaCIK KyNpbmNsdWRlICJhbWRncHVfdWNvZGUuaCIKKworI2luY2x1ZGUgInNtdS9zbXVfN18xXzNfZC5o IgorI2luY2x1ZGUgInNtdS9zbXVfN18xXzNfc2hfbWFzay5oIgorCisjZGVmaW5lIEZJSklfU01D X1NJWkUgMHgyMDAwMAorCitzdGF0aWMgaW50IGZpamlfc2V0X3NtY19zcmFtX2FkZHJlc3Moc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNtY19hZGRyZXNzLCB1aW50MzJfdCBs aW1pdCkKK3sKKwl1aW50MzJfdCB2YWw7CisKKwlpZiAoc21jX2FkZHJlc3MgJiAzKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmICgoc21jX2FkZHJlc3MgKyAzKSA+IGxpbWl0KQorCQlyZXR1cm4g LUVJTlZBTDsKKworCVdSRUczMihtbVNNQ19JTkRfSU5ERVhfMCwgc21jX2FkZHJlc3MpOworCisJ dmFsID0gUlJFRzMyKG1tU01DX0lORF9BQ0NFU1NfQ05UTCk7CisJdmFsID0gUkVHX1NFVF9GSUVM RCh2YWwsIFNNQ19JTkRfQUNDRVNTX0NOVEwsIEFVVE9fSU5DUkVNRU5UX0lORF8wLCAwKTsKKwlX UkVHMzIobW1TTUNfSU5EX0FDQ0VTU19DTlRMLCB2YWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgZmlqaV9jb3B5X2J5dGVzX3RvX3NtYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdWludDMyX3Qgc21jX3N0YXJ0X2FkZHJlc3MsIGNvbnN0IHVpbnQ4X3QgKnNyYywgdWludDMy X3QgYnl0ZV9jb3VudCwgdWludDMyX3QgbGltaXQpCit7CisJdWludDMyX3QgYWRkcjsKKwl1aW50 MzJfdCBkYXRhLCBvcmlnX2RhdGE7CisJaW50IHJlc3VsdCA9IDA7CisJdWludDMyX3QgZXh0cmFf c2hpZnQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChzbWNfc3RhcnRfYWRkcmVzcyAm IDMpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKChzbWNfc3RhcnRfYWRkcmVzcyArIGJ5dGVf Y291bnQpID4gbGltaXQpCisJCXJldHVybiAtRUlOVkFMOworCisJYWRkciA9IHNtY19zdGFydF9h ZGRyZXNzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFkZXYtPnNtY19pZHhfbG9jaywgZmxhZ3Mp OworCXdoaWxlIChieXRlX2NvdW50ID49IDQpIHsKKwkJLyogQnl0ZXMgYXJlIHdyaXR0ZW4gaW50 byB0aGUgU01DIGFkZHJlcyBzcGFjZSB3aXRoIHRoZSBNU0IgZmlyc3QgKi8KKwkJZGF0YSA9IChz cmNbMF0gPDwgMjQpICsgKHNyY1sxXSA8PCAxNikgKyAoc3JjWzJdIDw8IDgpICsgc3JjWzNdOwor CisJCXJlc3VsdCA9IGZpamlfc2V0X3NtY19zcmFtX2FkZHJlc3MoYWRldiwgYWRkciwgbGltaXQp OworCisJCWlmIChyZXN1bHQpCisJCQlnb3RvIG91dDsKKworCQlXUkVHMzIobW1TTUNfSU5EX0RB VEFfMCwgZGF0YSk7CisKKwkJc3JjICs9IDQ7CisJCWJ5dGVfY291bnQgLT0gNDsKKwkJYWRkciAr PSA0OworCX0KKworCWlmICgwICE9IGJ5dGVfY291bnQpIHsKKwkJLyogTm93IHdyaXRlIG9kZCBi eXRlcyBsZWZ0LCBkbyBhIHJlYWQgbW9kaWZ5IHdyaXRlIGN5Y2xlICovCisJCWRhdGEgPSAwOwor CisJCXJlc3VsdCA9IGZpamlfc2V0X3NtY19zcmFtX2FkZHJlc3MoYWRldiwgYWRkciwgbGltaXQp OworCQlpZiAocmVzdWx0KQorCQkJZ290byBvdXQ7CisKKwkJb3JpZ19kYXRhID0gUlJFRzMyKG1t U01DX0lORF9EQVRBXzApOworCQlleHRyYV9zaGlmdCA9IDggKiAoNCAtIGJ5dGVfY291bnQpOwor CisJCXdoaWxlIChieXRlX2NvdW50ID4gMCkgeworCQkJZGF0YSA9IChkYXRhIDw8IDgpICsgKnNy YysrOworCQkJYnl0ZV9jb3VudC0tOworCQl9CisKKwkJZGF0YSA8PD0gZXh0cmFfc2hpZnQ7CisJ CWRhdGEgfD0gKG9yaWdfZGF0YSAmIH4oKH4wVUwpIDw8IGV4dHJhX3NoaWZ0KSk7CisKKwkJcmVz dWx0ID0gZmlqaV9zZXRfc21jX3NyYW1fYWRkcmVzcyhhZGV2LCBhZGRyLCBsaW1pdCk7CisJCWlm IChyZXN1bHQpCisJCQlnb3RvIG91dDsKKworCQlXUkVHMzIobW1TTUNfSU5EX0RBVEFfMCwgZGF0 YSk7CisJfQorCitvdXQ6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+c21jX2lkeF9s b2NrLCBmbGFncyk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludCBmaWppX3Byb2dy YW1fanVtcF9vbl9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlzdGF0aWMg dW5zaWduZWQgY2hhciBkYXRhW10gPSB7MHhFMCwgMHgwMCwgMHg4MCwgMHg0MH07CisJZmlqaV9j b3B5X2J5dGVzX3RvX3NtYyhhZGV2LCAweDAsIGRhdGEsIDQsIHNpemVvZihkYXRhKSsxKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgYm9vbCBmaWppX2lzX3NtY19yYW1fcnVubmluZyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwl1aW50MzJfdCB2YWwgPSBSUkVHMzJfU01DKGl4 U01DX1NZU0NPTl9DTE9DS19DTlRMXzApOworCXZhbCA9IFJFR19HRVRfRklFTEQodmFsLCBTTUNf U1lTQ09OX0NMT0NLX0NOVExfMCwgY2tfZGlzYWJsZSk7CisKKwlyZXR1cm4gKCgwID09IHZhbCkg JiYgKDB4MjAxMDAgPD0gUlJFRzMyX1NNQyhpeFNNQ19QQ19DKSkpOworfQorCitzdGF0aWMgaW50 IHdhaXRfc211X3Jlc3BvbnNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWludCBp OworCXVpbnQzMl90IHZhbDsKKworCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51c2VjX3RpbWVvdXQ7 IGkrKykgeworCQl2YWwgPSBSUkVHMzIobW1TTUNfUkVTUF8wKTsKKwkJaWYgKFJFR19HRVRfRklF TEQodmFsLCBTTUNfUkVTUF8wLCBTTUNfUkVTUCkpCisJCQlicmVhazsKKwkJdWRlbGF5KDEpOwor CX0KKworCWlmIChpID09IGFkZXYtPnVzZWNfdGltZW91dCkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmaWppX3NlbmRfbXNnX3RvX3NtY19vZmZzZXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJaWYgKHdhaXRfc211X3Jlc3BvbnNlKGFk ZXYpKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIHNlbmQgcHJldmlvdXMgbWVzc2FnZVxuIik7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCVdSRUczMihtbVNNQ19NU0dfQVJHXzAsIDB4MjAw MDApOworCVdSRUczMihtbVNNQ19NRVNTQUdFXzAsIFBQU01DX01TR19UZXN0KTsKKworCWlmICh3 YWl0X3NtdV9yZXNwb25zZShhZGV2KSkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBzZW5kIG1l c3NhZ2VcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBmaWppX3NlbmRfbXNnX3RvX3NtYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwg UFBTTUNfTXNnIG1zZykKK3sKKwlpZiAoIWZpamlfaXNfc21jX3JhbV9ydW5uaW5nKGFkZXYpKQor CXsKKwkJcmV0dXJuIC1FSU5WQUw7OworCX0KKworCWlmICh3YWl0X3NtdV9yZXNwb25zZShhZGV2 KSkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBzZW5kIHByZXZpb3VzIG1lc3NhZ2VcbiIpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlXUkVHMzIobW1TTUNfTUVTU0FHRV8wLCBtc2cpOwor CisJaWYgKHdhaXRfc211X3Jlc3BvbnNlKGFkZXYpKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRv IHNlbmQgbWVzc2FnZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGZpamlfc2VuZF9tc2dfdG9fc21jX3dpdGhvdXRfd2FpdGluZyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJCVBQU01DX01zZyBtc2cpCit7CisJaWYgKHdh aXRfc211X3Jlc3BvbnNlKGFkZXYpKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIHNlbmQgcHJl dmlvdXMgbWVzc2FnZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCVdSRUczMihtbVNN Q19NRVNTQUdFXzAsIG1zZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmaWppX3Nl bmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK KwkJCQkJCVBQU01DX01zZyBtc2csCisJCQkJCQl1aW50MzJfdCBwYXJhbWV0ZXIpCit7CisJaWYg KCFmaWppX2lzX3NtY19yYW1fcnVubmluZyhhZGV2KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAod2FpdF9zbXVfcmVzcG9uc2UoYWRldikpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gc2Vu ZCBwcmV2aW91cyBtZXNzYWdlXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJV1JFRzMy KG1tU01DX01TR19BUkdfMCwgcGFyYW1ldGVyKTsKKworCXJldHVybiBmaWppX3NlbmRfbXNnX3Rv X3NtYyhhZGV2LCBtc2cpOworfQorCitzdGF0aWMgaW50IGZpamlfc2VuZF9tc2dfdG9fc21jX3dp dGhfcGFyYW1ldGVyX3dpdGhvdXRfd2FpdGluZygKKwkJCQkJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCisJCQkJCVBQU01DX01zZyBtc2csIHVpbnQzMl90IHBhcmFtZXRlcikKK3sKKwlpZiAo d2FpdF9zbXVfcmVzcG9uc2UoYWRldikpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gc2VuZCBw cmV2aW91cyBtZXNzYWdlXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJV1JFRzMyKG1t U01DX01TR19BUkdfMCwgcGFyYW1ldGVyKTsKKworCXJldHVybiBmaWppX3NlbmRfbXNnX3RvX3Nt Y193aXRob3V0X3dhaXRpbmcoYWRldiwgbXNnKTsKK30KKworI2lmIDAgLyogbm90IHVzZWQgeWV0 ICovCitzdGF0aWMgaW50IGZpamlfd2FpdF9mb3Jfc21jX2luYWN0aXZlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQoreworCWludCBpOworCXVpbnQzMl90IHZhbDsKKworCWlmICghZmlqaV9p c19zbWNfcmFtX3J1bm5pbmcoYWRldikpCisJCXJldHVybiAtRUlOVkFMOworCisJZm9yIChpID0g MDsgaSA8IGFkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7CisJCXZhbCA9IFJSRUczMl9TTUMoaXhT TUNfU1lTQ09OX0NMT0NLX0NOVExfMCk7CisJCWlmIChSRUdfR0VUX0ZJRUxEKHZhbCwgU01DX1NZ U0NPTl9DTE9DS19DTlRMXzAsIGNrZW4pID09IDApCisJCQlicmVhazsKKwkJdWRlbGF5KDEpOwor CX0KKworCWlmIChpID09IGFkZXYtPnVzZWNfdGltZW91dCkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IGZpamlfc211X3VwbG9hZF9maXJt d2FyZV9pbWFnZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwljb25zdCBzdHJ1Y3Qg c21jX2Zpcm13YXJlX2hlYWRlcl92MV8wICpoZHI7CisJdWludDMyX3QgdWNvZGVfc2l6ZTsKKwl1 aW50MzJfdCB1Y29kZV9zdGFydF9hZGRyZXNzOworCWNvbnN0IHVpbnQ4X3QgKnNyYzsKKwl1aW50 MzJfdCB2YWw7CisJdWludDMyX3QgYnl0ZV9jb3VudDsKKwl1aW50MzJfdCAqZGF0YTsKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCisJaWYgKCFhZGV2LT5wbS5mdykKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwloZHIgPSAoY29uc3Qgc3RydWN0IHNtY19maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYt PnBtLmZ3LT5kYXRhOworCWFtZGdwdV91Y29kZV9wcmludF9zbWNfaGRyKCZoZHItPmhlYWRlcik7 CisKKwlhZGV2LT5wbS5md192ZXJzaW9uID0gbGUzMl90b19jcHUoaGRyLT5oZWFkZXIudWNvZGVf dmVyc2lvbik7CisJdWNvZGVfc2l6ZSA9IGxlMzJfdG9fY3B1KGhkci0+aGVhZGVyLnVjb2RlX3Np emVfYnl0ZXMpOworCXVjb2RlX3N0YXJ0X2FkZHJlc3MgPSBsZTMyX3RvX2NwdShoZHItPnVjb2Rl X3N0YXJ0X2FkZHIpOworCXNyYyA9IChjb25zdCB1aW50OF90ICopCisJCShhZGV2LT5wbS5mdy0+ ZGF0YSArIGxlMzJfdG9fY3B1KGhkci0+aGVhZGVyLnVjb2RlX2FycmF5X29mZnNldF9ieXRlcykp OworCisJaWYgKHVjb2RlX3NpemUgJiAzKSB7CisJCURSTV9FUlJPUigiU01DIHVjb2RlIGlzIG5v dCA0IGJ5dGVzIGFsaWduZWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAodWNv ZGVfc2l6ZSA+IEZJSklfU01DX1NJWkUpIHsKKwkJRFJNX0VSUk9SKCJTTUMgYWRkcmVzcyBpcyBi ZXlvbmQgdGhlIFNNQyBSQU0gYXJlYVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXNw aW5fbG9ja19pcnFzYXZlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdzKTsKKwlXUkVHMzIobW1T TUNfSU5EX0lOREVYXzAsIHVjb2RlX3N0YXJ0X2FkZHJlc3MpOworCisJdmFsID0gUlJFRzMyKG1t U01DX0lORF9BQ0NFU1NfQ05UTCk7CisJdmFsID0gUkVHX1NFVF9GSUVMRCh2YWwsIFNNQ19JTkRf QUNDRVNTX0NOVEwsIEFVVE9fSU5DUkVNRU5UX0lORF8wLCAxKTsKKwlXUkVHMzIobW1TTUNfSU5E X0FDQ0VTU19DTlRMLCB2YWwpOworCisJYnl0ZV9jb3VudCA9IHVjb2RlX3NpemU7CisJZGF0YSA9 ICh1aW50MzJfdCAqKXNyYzsKKwlmb3IgKDsgYnl0ZV9jb3VudCA+PSA0OyBkYXRhKyssIGJ5dGVf Y291bnQgLT0gNCkKKwkJV1JFRzMyKG1tU01DX0lORF9EQVRBXzAsIGRhdGFbMF0pOworCisJdmFs ID0gUlJFRzMyKG1tU01DX0lORF9BQ0NFU1NfQ05UTCk7CisJdmFsID0gUkVHX1NFVF9GSUVMRCh2 YWwsIFNNQ19JTkRfQUNDRVNTX0NOVEwsIEFVVE9fSU5DUkVNRU5UX0lORF8wLCAwKTsKKwlXUkVH MzIobW1TTUNfSU5EX0FDQ0VTU19DTlRMLCB2YWwpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmFkZXYtPnNtY19pZHhfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZiAwIC8q IG5vdCB1c2VkIHlldCAqLworc3RhdGljIGludCBmaWppX3JlYWRfc21jX3NyYW1fZHdvcmQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJdWludDMyX3Qgc21jX2FkZHJlc3MsCisJCQkJ dWludDMyX3QgKnZhbHVlLAorCQkJCXVpbnQzMl90IGxpbWl0KQoreworCWludCByZXN1bHQ7CisJ dW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZhZGV2LT5zbWNfaWR4 X2xvY2ssIGZsYWdzKTsKKwlyZXN1bHQgPSBmaWppX3NldF9zbWNfc3JhbV9hZGRyZXNzKGFkZXYs IHNtY19hZGRyZXNzLCBsaW1pdCk7CisJaWYgKHJlc3VsdCA9PSAwKQorCQkqdmFsdWUgPSBSUkVH MzIobW1TTUNfSU5EX0RBVEFfMCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRldi0+c21j X2lkeF9sb2NrLCBmbGFncyk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludCBmaWpp X3dyaXRlX3NtY19zcmFtX2R3b3JkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCXVp bnQzMl90IHNtY19hZGRyZXNzLAorCQkJCXVpbnQzMl90IHZhbHVlLAorCQkJCXVpbnQzMl90IGxp bWl0KQoreworCWludCByZXN1bHQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZhZGV2LT5zbWNfaWR4X2xvY2ssIGZsYWdzKTsKKwlyZXN1bHQgPSBmaWppX3Nl dF9zbWNfc3JhbV9hZGRyZXNzKGFkZXYsIHNtY19hZGRyZXNzLCBsaW1pdCk7CisJaWYgKHJlc3Vs dCA9PSAwKQorCQlXUkVHMzIobW1TTUNfSU5EX0RBVEFfMCwgdmFsdWUpOworCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmFkZXYtPnNtY19pZHhfbG9jaywgZmxhZ3MpOworCXJldHVybiByZXN1bHQ7 Cit9CisKK3N0YXRpYyBpbnQgZmlqaV9zbXVfc3RvcF9zbWMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCit7CisJdWludDMyX3QgdmFsID0gUlJFRzMyX1NNQyhpeFNNQ19TWVNDT05fUkVTRVRf Q05UTCk7CisJdmFsID0gUkVHX1NFVF9GSUVMRCh2YWwsIFNNQ19TWVNDT05fUkVTRVRfQ05UTCwg cnN0X3JlZywgMSk7CisJV1JFRzMyX1NNQyhpeFNNQ19TWVNDT05fUkVTRVRfQ05UTCwgdmFsKTsK KworCXZhbCA9IFJSRUczMl9TTUMoaXhTTUNfU1lTQ09OX0NMT0NLX0NOVExfMCk7CisJdmFsID0g UkVHX1NFVF9GSUVMRCh2YWwsIFNNQ19TWVNDT05fQ0xPQ0tfQ05UTF8wLCBja19kaXNhYmxlLCAx KTsKKwlXUkVHMzJfU01DKGl4U01DX1NZU0NPTl9DTE9DS19DTlRMXzAsIHZhbCk7CisKKwlyZXR1 cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgZW51bSBBTURHUFVfVUNPREVfSUQgZmlqaV9jb252 ZXJ0X2Z3X3R5cGUodWludDMyX3QgZndfdHlwZSkKK3sKKwlzd2l0Y2ggKGZ3X3R5cGUpIHsKKwkJ Y2FzZSBVQ09ERV9JRF9TRE1BMDoKKwkJCXJldHVybiBBTURHUFVfVUNPREVfSURfU0RNQTA7CisJ CWNhc2UgVUNPREVfSURfU0RNQTE6CisJCQlyZXR1cm4gQU1ER1BVX1VDT0RFX0lEX1NETUExOwor CQljYXNlIFVDT0RFX0lEX0NQX0NFOgorCQkJcmV0dXJuIEFNREdQVV9VQ09ERV9JRF9DUF9DRTsK KwkJY2FzZSBVQ09ERV9JRF9DUF9QRlA6CisJCQlyZXR1cm4gQU1ER1BVX1VDT0RFX0lEX0NQX1BG UDsKKwkJY2FzZSBVQ09ERV9JRF9DUF9NRToKKwkJCXJldHVybiBBTURHUFVfVUNPREVfSURfQ1Bf TUU7CisJCWNhc2UgVUNPREVfSURfQ1BfTUVDOgorCQljYXNlIFVDT0RFX0lEX0NQX01FQ19KVDE6 CisJCWNhc2UgVUNPREVfSURfQ1BfTUVDX0pUMjoKKwkJCXJldHVybiBBTURHUFVfVUNPREVfSURf Q1BfTUVDMTsKKwkJY2FzZSBVQ09ERV9JRF9STENfRzoKKwkJCXJldHVybiBBTURHUFVfVUNPREVf SURfUkxDX0c7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInVjb2RlIHR5cGUgaXMgb3V0IG9m IHJhbmdlIVxuIik7CisJCQlyZXR1cm4gQU1ER1BVX1VDT0RFX0lEX01BWElNVU07CisJfQorfQor CitzdGF0aWMgaW50IGZpamlfc211X3BvcHVsYXRlX3NpbmdsZV9maXJtd2FyZV9lbnRyeShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJCXVpbnQzMl90IGZ3X3R5cGUsCisJCQkJCQlz dHJ1Y3QgU01VX0VudHJ5ICplbnRyeSkKK3sKKwllbnVtIEFNREdQVV9VQ09ERV9JRCBpZCA9IGZp amlfY29udmVydF9md190eXBlKGZ3X3R5cGUpOworCXN0cnVjdCBhbWRncHVfZmlybXdhcmVfaW5m byAqdWNvZGUgPSAmYWRldi0+ZmlybXdhcmUudWNvZGVbaWRdOworCWNvbnN0IHN0cnVjdCBnZnhf ZmlybXdhcmVfaGVhZGVyX3YxXzAgKmhlYWRlciA9IE5VTEw7CisJdWludDY0X3QgZ3B1X2FkZHI7 CisJdWludDMyX3QgZGF0YV9zaXplOworCisJaWYgKHVjb2RlLT5mdyA9PSBOVUxMKQorCQlyZXR1 cm4gLUVJTlZBTDsKKwlncHVfYWRkciAgPSB1Y29kZS0+bWNfYWRkcjsKKwloZWFkZXIgPSAoY29u c3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKXVjb2RlLT5mdy0+ZGF0YTsKKwlk YXRhX3NpemUgPSBsZTMyX3RvX2NwdShoZWFkZXItPmhlYWRlci51Y29kZV9zaXplX2J5dGVzKTsK KworCWlmICgoZndfdHlwZSA9PSBVQ09ERV9JRF9DUF9NRUNfSlQxKSB8fAorCQkoZndfdHlwZSA9 PSBVQ09ERV9JRF9DUF9NRUNfSlQyKSkgeworCQlncHVfYWRkciArPSBsZTMyX3RvX2NwdShoZWFk ZXItPmp0X29mZnNldCkgPDwgMjsKKwkJZGF0YV9zaXplID0gbGUzMl90b19jcHUoaGVhZGVyLT5q dF9zaXplKSA8PCAyOworCX0KKworCWVudHJ5LT52ZXJzaW9uID0gKHVpbnQxNl90KWxlMzJfdG9f Y3B1KGhlYWRlci0+aGVhZGVyLnVjb2RlX3ZlcnNpb24pOworCWVudHJ5LT5pZCA9ICh1aW50MTZf dClmd190eXBlOworCWVudHJ5LT5pbWFnZV9hZGRyX2hpZ2ggPSB1cHBlcl8zMl9iaXRzKGdwdV9h ZGRyKTsKKwllbnRyeS0+aW1hZ2VfYWRkcl9sb3cgPSBsb3dlcl8zMl9iaXRzKGdwdV9hZGRyKTsK KwllbnRyeS0+bWV0YV9kYXRhX2FkZHJfaGlnaCA9IDA7CisJZW50cnktPm1ldGFfZGF0YV9hZGRy X2xvdyA9IDA7CisJZW50cnktPmRhdGFfc2l6ZV9ieXRlID0gZGF0YV9zaXplOworCWVudHJ5LT5u dW1fcmVnaXN0ZXJfZW50cmllcyA9IDA7CisKKwlpZiAoZndfdHlwZSA9PSBVQ09ERV9JRF9STENf RykKKwkJZW50cnktPmZsYWdzID0gMTsKKwllbHNlCisJCWVudHJ5LT5mbGFncyA9IDA7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmaWppX3NtdV9yZXF1ZXN0X2xvYWRfZncoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJc3RydWN0IGZpamlfc211X3ByaXZhdGVfZGF0YSAq cHJpdmF0ZSA9IChzdHJ1Y3QgZmlqaV9zbXVfcHJpdmF0ZV9kYXRhICopYWRldi0+c211LnByaXY7 CisJc3RydWN0IFNNVV9EUkFNRGF0YV9UT0MgKnRvYzsKKwl1aW50MzJfdCBmd190b19sb2FkOwor CisJV1JFRzMyX1NNQyhpeFNPRlRfUkVHSVNURVJTX1RBQkxFXzI4LCAwKTsKKworCWZpamlfc2Vu ZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGFkZXYsIFBQU01DX01TR19TTVVfRFJBTV9BRERS X0hJLCBwcml2YXRlLT5zbXVfYnVmZmVyX2FkZHJfaGlnaCk7CisJZmlqaV9zZW5kX21zZ190b19z bWNfd2l0aF9wYXJhbWV0ZXIoYWRldiwgUFBTTUNfTVNHX1NNVV9EUkFNX0FERFJfTE8sIHByaXZh dGUtPnNtdV9idWZmZXJfYWRkcl9sb3cpOworCisJdG9jID0gKHN0cnVjdCBTTVVfRFJBTURhdGFf VE9DICopcHJpdmF0ZS0+aGVhZGVyOworCXRvYy0+bnVtX2VudHJpZXMgPSAwOworCXRvYy0+c3Ry dWN0dXJlX3ZlcnNpb24gPSAxOworCisJaWYgKCFhZGV2LT5maXJtd2FyZS5zbXVfbG9hZCkKKwkJ cmV0dXJuIDA7CisKKwlpZiAoZmlqaV9zbXVfcG9wdWxhdGVfc2luZ2xlX2Zpcm13YXJlX2VudHJ5 KGFkZXYsIFVDT0RFX0lEX1JMQ19HLAorCQkJJnRvYy0+ZW50cnlbdG9jLT5udW1fZW50cmllcysr XSkpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpcm13YXJlIGVudHJ5IGZvciBSTENc biIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoZmlqaV9zbXVfcG9wdWxhdGVfc2lu Z2xlX2Zpcm13YXJlX2VudHJ5KGFkZXYsIFVDT0RFX0lEX0NQX0NFLAorCQkJJnRvYy0+ZW50cnlb dG9jLT5udW1fZW50cmllcysrXSkpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpcm13 YXJlIGVudHJ5IGZvciBDRVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChmaWpp X3NtdV9wb3B1bGF0ZV9zaW5nbGVfZmlybXdhcmVfZW50cnkoYWRldiwgVUNPREVfSURfQ1BfUEZQ LAorCQkJJnRvYy0+ZW50cnlbdG9jLT5udW1fZW50cmllcysrXSkpIHsKKwkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gZ2V0IGZpcm13YXJlIGVudHJ5IGZvciBQRlBcbiIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlpZiAoZmlqaV9zbXVfcG9wdWxhdGVfc2luZ2xlX2Zpcm13YXJlX2VudHJ5KGFk ZXYsIFVDT0RFX0lEX0NQX01FLAorCQkJJnRvYy0+ZW50cnlbdG9jLT5udW1fZW50cmllcysrXSkp IHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpcm13YXJlIGVudHJ5IGZvciBNRVxuIik7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChmaWppX3NtdV9wb3B1bGF0ZV9zaW5nbGVf ZmlybXdhcmVfZW50cnkoYWRldiwgVUNPREVfSURfQ1BfTUVDLAorCQkJJnRvYy0+ZW50cnlbdG9j LT5udW1fZW50cmllcysrXSkpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZpcm13YXJl IGVudHJ5IGZvciBNRUNcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoZmlqaV9z bXVfcG9wdWxhdGVfc2luZ2xlX2Zpcm13YXJlX2VudHJ5KGFkZXYsIFVDT0RFX0lEX0NQX01FQ19K VDEsCisJCQkmdG9jLT5lbnRyeVt0b2MtPm51bV9lbnRyaWVzKytdKSkgeworCQlEUk1fRVJST1Io IkZhaWxlZCB0byBnZXQgZmlybXdhcmUgZW50cnkgZm9yIE1FQ19KVDFcbiIpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlpZiAoZmlqaV9zbXVfcG9wdWxhdGVfc2luZ2xlX2Zpcm13YXJlX2Vu dHJ5KGFkZXYsIFVDT0RFX0lEX0NQX01FQ19KVDIsCisJCQkmdG9jLT5lbnRyeVt0b2MtPm51bV9l bnRyaWVzKytdKSkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgZmlybXdhcmUgZW50cnkg Zm9yIE1FQ19KVDJcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoZmlqaV9zbXVf cG9wdWxhdGVfc2luZ2xlX2Zpcm13YXJlX2VudHJ5KGFkZXYsIFVDT0RFX0lEX1NETUEwLAorCQkJ JnRvYy0+ZW50cnlbdG9jLT5udW1fZW50cmllcysrXSkpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gZ2V0IGZpcm13YXJlIGVudHJ5IGZvciBTRE1BMFxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCWlmIChmaWppX3NtdV9wb3B1bGF0ZV9zaW5nbGVfZmlybXdhcmVfZW50cnkoYWRldiwg VUNPREVfSURfU0RNQTEsCisJCQkmdG9jLT5lbnRyeVt0b2MtPm51bV9lbnRyaWVzKytdKSkgewor CQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgZmlybXdhcmUgZW50cnkgZm9yIFNETUExXG4iKTsK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZmlqaV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJh bWV0ZXIoYWRldiwgUFBTTUNfTVNHX0RSVl9EUkFNX0FERFJfSEksIHByaXZhdGUtPmhlYWRlcl9h ZGRyX2hpZ2gpOworCWZpamlfc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGFkZXYsIFBQ U01DX01TR19EUlZfRFJBTV9BRERSX0xPLCBwcml2YXRlLT5oZWFkZXJfYWRkcl9sb3cpOworCisJ ZndfdG9fbG9hZCA9IFVDT0RFX0lEX1JMQ19HX01BU0sgfAorCQkJVUNPREVfSURfU0RNQTBfTUFT SyB8CisJCQlVQ09ERV9JRF9TRE1BMV9NQVNLIHwKKwkJCVVDT0RFX0lEX0NQX0NFX01BU0sgfAor CQkJVUNPREVfSURfQ1BfTUVfTUFTSyB8CisJCQlVQ09ERV9JRF9DUF9QRlBfTUFTSyB8CisJCQlV Q09ERV9JRF9DUF9NRUNfTUFTSzsKKworCWlmIChmaWppX3NlbmRfbXNnX3RvX3NtY193aXRoX3Bh cmFtZXRlcl93aXRob3V0X3dhaXRpbmcoYWRldiwgUFBTTUNfTVNHX0xvYWRVY29kZXMsIGZ3X3Rv X2xvYWQpKSB7CisJCURSTV9FUlJPUigiRmFpbCB0byByZXF1ZXN0IFNNVSBsb2FkIHVjb2RlXG4i KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50 MzJfdCBmaWppX3NtdV9nZXRfbWFza19mb3JfZndfdHlwZSh1aW50MzJfdCBmd190eXBlKQorewor CXN3aXRjaCAoZndfdHlwZSkgeworCQljYXNlIEFNREdQVV9VQ09ERV9JRF9TRE1BMDoKKwkJCXJl dHVybiBVQ09ERV9JRF9TRE1BMF9NQVNLOworCQljYXNlIEFNREdQVV9VQ09ERV9JRF9TRE1BMToK KwkJCXJldHVybiBVQ09ERV9JRF9TRE1BMV9NQVNLOworCQljYXNlIEFNREdQVV9VQ09ERV9JRF9D UF9DRToKKwkJCXJldHVybiBVQ09ERV9JRF9DUF9DRV9NQVNLOworCQljYXNlIEFNREdQVV9VQ09E RV9JRF9DUF9QRlA6CisJCQlyZXR1cm4gVUNPREVfSURfQ1BfUEZQX01BU0s7CisJCWNhc2UgQU1E R1BVX1VDT0RFX0lEX0NQX01FOgorCQkJcmV0dXJuIFVDT0RFX0lEX0NQX01FX01BU0s7CisJCWNh c2UgQU1ER1BVX1VDT0RFX0lEX0NQX01FQzE6CisJCQlyZXR1cm4gVUNPREVfSURfQ1BfTUVDX01B U0s7CisJCWNhc2UgQU1ER1BVX1VDT0RFX0lEX0NQX01FQzI6CisJCQlyZXR1cm4gVUNPREVfSURf Q1BfTUVDX01BU0s7CisJCWNhc2UgQU1ER1BVX1VDT0RFX0lEX1JMQ19HOgorCQkJcmV0dXJuIFVD T0RFX0lEX1JMQ19HX01BU0s7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInVjb2RlIHR5cGUg aXMgb3V0IG9mIHJhbmdlIVxuIik7CisJCQlyZXR1cm4gMDsKKwl9Cit9CisKK3N0YXRpYyBpbnQg ZmlqaV9zbXVfY2hlY2tfZndfbG9hZF9maW5pc2goc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CisJCQkJCXVpbnQzMl90IGZ3X3R5cGUpCit7CisJdWludDMyX3QgZndfbWFzayA9IGZpamlfc211 X2dldF9tYXNrX2Zvcl9md190eXBlKGZ3X3R5cGUpOworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IGFkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7CisJCWlmIChmd19tYXNrID09IChSUkVHMzJf U01DKGl4U09GVF9SRUdJU1RFUlNfVEFCTEVfMjgpICYgZndfbWFzaykpCisJCQlicmVhazsKKwkJ dWRlbGF5KDEpOworCX0KKworCWlmIChpID09IGFkZXYtPnVzZWNfdGltZW91dCkgeworCQlEUk1f RVJST1IoImNoZWNrIGZpcm13YXJlIGxvYWRpbmcgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmlqaV9zbXVfc3RhcnRfaW5f cHJvdGVjdGlvbl9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWludCByZXN1 bHQ7CisJdWludDMyX3QgdmFsOworCWludCBpOworCisJLyogQXNzZXJ0IHJlc2V0ICovCisJdmFs ID0gUlJFRzMyX1NNQyhpeFNNQ19TWVNDT05fUkVTRVRfQ05UTCk7CisJdmFsID0gUkVHX1NFVF9G SUVMRCh2YWwsIFNNQ19TWVNDT05fUkVTRVRfQ05UTCwgcnN0X3JlZywgMSk7CisJV1JFRzMyX1NN QyhpeFNNQ19TWVNDT05fUkVTRVRfQ05UTCwgdmFsKTsKKworCXJlc3VsdCA9IGZpamlfc211X3Vw bG9hZF9maXJtd2FyZV9pbWFnZShhZGV2KTsKKwlpZiAocmVzdWx0KQorCQlyZXR1cm4gcmVzdWx0 OworCisJLyogQ2xlYXIgc3RhdHVzICovCisJV1JFRzMyX1NNQyhpeFNNVV9TVEFUVVMsIDApOwor CisJLyogRW5hYmxlIGNsb2NrICovCisJdmFsID0gUlJFRzMyX1NNQyhpeFNNQ19TWVNDT05fQ0xP Q0tfQ05UTF8wKTsKKwl2YWwgPSBSRUdfU0VUX0ZJRUxEKHZhbCwgU01DX1NZU0NPTl9DTE9DS19D TlRMXzAsIGNrX2Rpc2FibGUsIDApOworCVdSRUczMl9TTUMoaXhTTUNfU1lTQ09OX0NMT0NLX0NO VExfMCwgdmFsKTsKKworCS8qIERlLWFzc2VydCByZXNldCAqLworCXZhbCA9IFJSRUczMl9TTUMo aXhTTUNfU1lTQ09OX1JFU0VUX0NOVEwpOworCXZhbCA9IFJFR19TRVRfRklFTEQodmFsLCBTTUNf U1lTQ09OX1JFU0VUX0NOVEwsIHJzdF9yZWcsIDApOworCVdSRUczMl9TTUMoaXhTTUNfU1lTQ09O X1JFU0VUX0NOVEwsIHZhbCk7CisKKwkvKiBTZXQgU01VIEF1dG8gU3RhcnQgKi8KKwl2YWwgPSBS UkVHMzJfU01DKGl4U01VX0lOUFVUX0RBVEEpOworCXZhbCA9IFJFR19TRVRfRklFTEQodmFsLCBT TVVfSU5QVVRfREFUQSwgQVVUT19TVEFSVCwgMSk7CisJV1JFRzMyX1NNQyhpeFNNVV9JTlBVVF9E QVRBLCB2YWwpOworCisJLyogQ2xlYXIgZmlybXdhcmUgaW50ZXJydXB0IGVuYWJsZSBmbGFnICov CisJV1JFRzMyX1NNQyhpeEZJUk1XQVJFX0ZMQUdTLCAwKTsKKworCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT51c2VjX3RpbWVvdXQ7IGkrKykgeworCQl2YWwgPSBSUkVHMzJfU01DKGl4UkNVX1VDX0VW RU5UUyk7CisJCWlmIChSRUdfR0VUX0ZJRUxEKHZhbCwgUkNVX1VDX0VWRU5UUywgSU5URVJSVVBU U19FTkFCTEVEKSkKKwkJCWJyZWFrOworCQl1ZGVsYXkoMSk7CisJfQorCisJaWYgKGkgPT0gYWRl di0+dXNlY190aW1lb3V0KSB7CisJCURSTV9FUlJPUigiSW50ZXJydXB0IGlzIG5vdCBlbmFibGVk IGJ5IGZpcm13YXJlXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogQ2FsbCBUZXN0 IFNNVSBtZXNzYWdlIHdpdGggMHgyMDAwMCBvZmZzZXQKKwkgKiB0byB0cmlnZ2VyIFNNVSBzdGFy dAorCSAqLworCWZpamlfc2VuZF9tc2dfdG9fc21jX29mZnNldChhZGV2KTsKKwlEUk1fSU5GTygi W0ZNXXRyeSB0cmlnZXIgc211IHN0YXJ0XG4iKTsKKwkvKiBXYWl0IGZvciBkb25lIGJpdCB0byBi ZSBzZXQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dXNlY190aW1lb3V0OyBpKyspIHsKKwkJ dmFsID0gUlJFRzMyX1NNQyhpeFNNVV9TVEFUVVMpOworCQlpZiAoUkVHX0dFVF9GSUVMRCh2YWws IFNNVV9TVEFUVVMsIFNNVV9ET05FKSkKKwkJCWJyZWFrOworCQl1ZGVsYXkoMSk7CisJfQorCisJ aWYgKGkgPT0gYWRldi0+dXNlY190aW1lb3V0KSB7CisJCURSTV9FUlJPUigiVGltZW91dCBmb3Ig U01VIHN0YXJ0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogQ2hlY2sgcGFzcy9m YWlsZWQgaW5kaWNhdG9yICovCisJdmFsID0gUlJFRzMyX1NNQyhpeFNNVV9TVEFUVVMpOworCWlm ICghUkVHX0dFVF9GSUVMRCh2YWwsIFNNVV9TVEFUVVMsIFNNVV9QQVNTKSkgeworCQlEUk1fRVJS T1IoIlNNVSBGaXJtd2FyZSBzdGFydCBmYWlsZWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisJRFJNX0lORk8oIltGTV1zbXUgc3RhcnRlZFxuIik7CisJLyogV2FpdCBmb3IgZmlybXdhcmUg dG8gaW5pdGlhbGl6ZSAqLworCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51c2VjX3RpbWVvdXQ7IGkr KykgeworCQl2YWwgPSBSUkVHMzJfU01DKGl4RklSTVdBUkVfRkxBR1MpOworCQlpZihSRUdfR0VU X0ZJRUxEKHZhbCwgRklSTVdBUkVfRkxBR1MsIElOVEVSUlVQVFNfRU5BQkxFRCkpCisJCQlicmVh azsKKwkJdWRlbGF5KDEpOworCX0KKworCWlmIChpID09IGFkZXYtPnVzZWNfdGltZW91dCkgewor CQlEUk1fRVJST1IoIlNNVSBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisJRFJNX0lORk8oIltGTV1zbXUgaW5pdGlhbGl6ZWRcbiIpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmlqaV9zbXVfc3RhcnRfaW5fbm9uX3Byb3Rl Y3Rpb25fbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlpbnQgaSwgcmVzdWx0 OworCXVpbnQzMl90IHZhbDsKKworCS8qIHdhaXQgZm9yIHNtYyBib290IHVwICovCisJZm9yIChp ID0gMDsgaSA8IGFkZXYtPnVzZWNfdGltZW91dDsgaSsrKSB7CisJCXZhbCA9IFJSRUczMl9TTUMo aXhSQ1VfVUNfRVZFTlRTKTsKKwkJdmFsID0gUkVHX0dFVF9GSUVMRCh2YWwsIFJDVV9VQ19FVkVO VFMsIGJvb3Rfc2VxX2RvbmUpOworCQlpZiAodmFsKQorCQkJYnJlYWs7CisJCXVkZWxheSgxKTsK Kwl9CisKKwlpZiAoaSA9PSBhZGV2LT51c2VjX3RpbWVvdXQpIHsKKwkJRFJNX0VSUk9SKCJTTUMg Ym9vdCBzZXF1ZW5jZSBpcyBub3QgY29tcGxldGVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJLyogQ2xlYXIgZmlybXdhcmUgaW50ZXJydXB0IGVuYWJsZSBmbGFnICovCisJV1JFRzMy X1NNQyhpeEZJUk1XQVJFX0ZMQUdTLCAwKTsKKworCS8qIEFzc2VydCByZXNldCAqLworCXZhbCA9 IFJSRUczMl9TTUMoaXhTTUNfU1lTQ09OX1JFU0VUX0NOVEwpOworCXZhbCA9IFJFR19TRVRfRklF TEQodmFsLCBTTUNfU1lTQ09OX1JFU0VUX0NOVEwsIHJzdF9yZWcsIDEpOworCVdSRUczMl9TTUMo aXhTTUNfU1lTQ09OX1JFU0VUX0NOVEwsIHZhbCk7CisKKwlyZXN1bHQgPSBmaWppX3NtdV91cGxv YWRfZmlybXdhcmVfaW1hZ2UoYWRldik7CisJaWYgKHJlc3VsdCkKKwkJcmV0dXJuIHJlc3VsdDsK KworCS8qIFNldCBzbWMgaW5zdHJ1Y3Qgc3RhcnQgcG9pbnQgYXQgMHgwICovCisJZmlqaV9wcm9n cmFtX2p1bXBfb25fc3RhcnQoYWRldik7CisKKwkvKiBFbmFibGUgY2xvY2sgKi8KKwl2YWwgPSBS UkVHMzJfU01DKGl4U01DX1NZU0NPTl9DTE9DS19DTlRMXzApOworCXZhbCA9IFJFR19TRVRfRklF TEQodmFsLCBTTUNfU1lTQ09OX0NMT0NLX0NOVExfMCwgY2tfZGlzYWJsZSwgMCk7CisJV1JFRzMy X1NNQyhpeFNNQ19TWVNDT05fQ0xPQ0tfQ05UTF8wLCB2YWwpOworCisJLyogRGUtYXNzZXJ0IHJl c2V0ICovCisJdmFsID0gUlJFRzMyX1NNQyhpeFNNQ19TWVNDT05fUkVTRVRfQ05UTCk7CisJdmFs ID0gUkVHX1NFVF9GSUVMRCh2YWwsIFNNQ19TWVNDT05fUkVTRVRfQ05UTCwgcnN0X3JlZywgMCk7 CisJV1JFRzMyX1NNQyhpeFNNQ19TWVNDT05fUkVTRVRfQ05UTCwgdmFsKTsKKworCS8qIFdhaXQg Zm9yIGZpcm13YXJlIHRvIGluaXRpYWxpemUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dXNl Y190aW1lb3V0OyBpKyspIHsKKwkJdmFsID0gUlJFRzMyX1NNQyhpeEZJUk1XQVJFX0ZMQUdTKTsK KwkJaWYgKFJFR19HRVRfRklFTEQodmFsLCBGSVJNV0FSRV9GTEFHUywgSU5URVJSVVBUU19FTkFC TEVEKSkKKwkJCWJyZWFrOworCQl1ZGVsYXkoMSk7CisJfQorCisJaWYgKGkgPT0gYWRldi0+dXNl Y190aW1lb3V0KSB7CisJCURSTV9FUlJPUigiVGltZW91dCBmb3IgU01DIGZpcm13YXJlIGluaXRp YWxpemF0aW9uXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K2ludCBmaWppX3NtdV9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlpbnQg cmVzdWx0OworCXVpbnQzMl90IHZhbDsKKworCWlmICghZmlqaV9pc19zbWNfcmFtX3J1bm5pbmco YWRldikpIHsKKwkJdmFsID0gUlJFRzMyX1NNQyhpeFNNVV9GSVJNV0FSRSk7CisJCWlmICghUkVH X0dFVF9GSUVMRCh2YWwsIFNNVV9GSVJNV0FSRSwgU01VX01PREUpKSB7CisJCQlEUk1fSU5GTygi W0ZNXXN0YXJ0IHNtdSBpbiBub25wcm90ZWN0aW9uIG1vZGVcbiIpOworCQkJcmVzdWx0ID0gZmlq aV9zbXVfc3RhcnRfaW5fbm9uX3Byb3RlY3Rpb25fbW9kZShhZGV2KTsKKwkJCWlmIChyZXN1bHQp CisJCQkJcmV0dXJuIHJlc3VsdDsKKwkJfSBlbHNlIHsKKwkJCURSTV9JTkZPKCJbRk1dc3RhcnQg c211IGluIHByb3RlY3Rpb24gbW9kZVxuIik7CisJCQlyZXN1bHQgPSBmaWppX3NtdV9zdGFydF9p bl9wcm90ZWN0aW9uX21vZGUoYWRldik7CisJCQlpZiAocmVzdWx0KQorCQkJCXJldHVybiByZXN1 bHQ7CisJCX0KKwl9CisKKwlyZXR1cm4gZmlqaV9zbXVfcmVxdWVzdF9sb2FkX2Z3KGFkZXYpOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9zbXVtZ3JfZnVuY3MgZmlqaV9zbXVtZ3Jf ZnVuY3MgPSB7CisJLmNoZWNrX2Z3X2xvYWRfZmluaXNoID0gZmlqaV9zbXVfY2hlY2tfZndfbG9h ZF9maW5pc2gsCisJLnJlcXVlc3Rfc211X2xvYWRfZncgPSBOVUxMLAorCS5yZXF1ZXN0X3NtdV9z cGVjaWZpY19mdyA9IE5VTEwsCit9OworCitpbnQgZmlqaV9zbXVfaW5pdChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKK3sKKwlzdHJ1Y3QgZmlqaV9zbXVfcHJpdmF0ZV9kYXRhICpwcml2YXRl OworCXVpbnQzMl90IGltYWdlX3NpemUgPSAoKHNpemVvZihzdHJ1Y3QgU01VX0RSQU1EYXRhX1RP QykgLyA0MDk2KSArIDEpICogNDA5NjsKKwl1aW50MzJfdCBzbXVfaW50ZXJuYWxfYnVmZmVyX3Np emUgPSAyMDAqNDA5NjsKKwlzdHJ1Y3QgYW1kZ3B1X2JvICoqdG9jX2J1ZiA9ICZhZGV2LT5zbXUu dG9jX2J1ZjsKKwlzdHJ1Y3QgYW1kZ3B1X2JvICoqc211X2J1ZiA9ICZhZGV2LT5zbXUuc211X2J1 ZjsKKwl1aW50NjRfdCBtY19hZGRyOworCXZvaWQgKnRvY19idWZfcHRyOworCXZvaWQgKnNtdV9i dWZfcHRyOworCWludCByZXQ7CisKKwlwcml2YXRlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGZp amlfc211X3ByaXZhdGVfZGF0YSksIEdGUF9LRVJORUwpOworCWlmIChOVUxMID09IHByaXZhdGUp CisJCXJldHVybiAtRU5PTUVNOworCisJLyogYWxsb2NhdGUgZmlybXdhcmUgYnVmZmVycyAqLwor CWlmIChhZGV2LT5maXJtd2FyZS5zbXVfbG9hZCkKKwkJYW1kZ3B1X3Vjb2RlX2luaXRfYm8oYWRl dik7CisKKwlhZGV2LT5zbXUucHJpdiA9IHByaXZhdGU7CisJYWRldi0+c211LmZ3X2ZsYWdzID0g MDsKKworCS8qIEFsbG9jYXRlIEZXIGltYWdlIGRhdGEgc3RydWN0dXJlIGFuZCBoZWFkZXIgYnVm ZmVyICovCisJcmV0ID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCBpbWFnZV9zaXplLCBQQUdFX1NJ WkUsCisJCQkJdHJ1ZSwgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwgMCwgTlVMTCwgdG9jX2J1Zik7 CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y IFRPQyBidWZmZXJcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBi dWZmZXIgZm9yIFNNVSBpbnRlcm5hbCBidWZmZXIgKi8KKwlyZXQgPSBhbWRncHVfYm9fY3JlYXRl KGFkZXYsIHNtdV9pbnRlcm5hbF9idWZmZXJfc2l6ZSwgUEFHRV9TSVpFLAorCQkJCXRydWUsIEFN REdQVV9HRU1fRE9NQUlOX1ZSQU0sIDAsIE5VTEwsIHNtdV9idWYpOworCWlmIChyZXQpIHsKKwkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBTTVUgaW50ZXJuYWwgYnVm ZmVyXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogUmV0cmlldmUgR1BVIGFkZHJl c3MgZm9yIGhlYWRlciBidWZmZXIgYW5kIGludGVybmFsIGJ1ZmZlciAqLworCXJldCA9IGFtZGdw dV9ib19yZXNlcnZlKGFkZXYtPnNtdS50b2NfYnVmLCBmYWxzZSk7CisJaWYgKHJldCkgeworCQlh bWRncHVfYm9fdW5yZWYoJmFkZXYtPnNtdS50b2NfYnVmKTsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gcmVzZXJ2ZSB0aGUgVE9DIGJ1ZmZlclxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXJldCA9IGFtZGdwdV9ib19waW4oYWRldi0+c211LnRvY19idWYsIEFNREdQVV9HRU1fRE9NQUlO X1ZSQU0sICZtY19hZGRyKTsKKwlpZiAocmV0KSB7CisJCWFtZGdwdV9ib191bnJlc2VydmUoYWRl di0+c211LnRvY19idWYpOworCQlhbWRncHVfYm9fdW5yZWYoJmFkZXYtPnNtdS50b2NfYnVmKTsK KwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcGluIHRoZSBUT0MgYnVmZmVyXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJcmV0ID0gYW1kZ3B1X2JvX2ttYXAoKnRvY19idWYsICZ0b2NfYnVm X3B0cik7CisJaWYgKHJldCkgeworCQlhbWRncHVfYm9fdW5yZXNlcnZlKGFkZXYtPnNtdS50b2Nf YnVmKTsKKwkJYW1kZ3B1X2JvX3VucmVmKCZhZGV2LT5zbXUudG9jX2J1Zik7CisJCURSTV9FUlJP UigiRmFpbGVkIHRvIG1hcCB0aGUgVE9DIGJ1ZmZlclxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCWFtZGdwdV9ib191bnJlc2VydmUoYWRldi0+c211LnRvY19idWYpOworCXByaXZhdGUt PmhlYWRlcl9hZGRyX2xvdyA9IGxvd2VyXzMyX2JpdHMobWNfYWRkcik7CisJcHJpdmF0ZS0+aGVh ZGVyX2FkZHJfaGlnaCA9IHVwcGVyXzMyX2JpdHMobWNfYWRkcik7CisJcHJpdmF0ZS0+aGVhZGVy ID0gdG9jX2J1Zl9wdHI7CisKKwlyZXQgPSBhbWRncHVfYm9fcmVzZXJ2ZShhZGV2LT5zbXUuc211 X2J1ZiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJYW1kZ3B1X2JvX3VucmVmKCZhZGV2LT5zbXUu c211X2J1Zik7CisJCWFtZGdwdV9ib191bnJlZigmYWRldi0+c211LnRvY19idWYpOworCQlEUk1f RVJST1IoIkZhaWxlZCB0byByZXNlcnZlIHRoZSBTTVUgaW50ZXJuYWwgYnVmZmVyXG4iKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gYW1kZ3B1X2JvX3BpbihhZGV2LT5zbXUuc211 X2J1ZiwgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwgJm1jX2FkZHIpOworCWlmIChyZXQpIHsKKwkJ YW1kZ3B1X2JvX3VucmVzZXJ2ZShhZGV2LT5zbXUuc211X2J1Zik7CisJCWFtZGdwdV9ib191bnJl ZigmYWRldi0+c211LnNtdV9idWYpOworCQlhbWRncHVfYm9fdW5yZWYoJmFkZXYtPnNtdS50b2Nf YnVmKTsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcGluIHRoZSBTTVUgaW50ZXJuYWwgYnVmZmVy XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gYW1kZ3B1X2JvX2ttYXAoKnNt dV9idWYsICZzbXVfYnVmX3B0cik7CisJaWYgKHJldCkgeworCQlhbWRncHVfYm9fdW5yZXNlcnZl KGFkZXYtPnNtdS5zbXVfYnVmKTsKKwkJYW1kZ3B1X2JvX3VucmVmKCZhZGV2LT5zbXUuc211X2J1 Zik7CisJCWFtZGdwdV9ib191bnJlZigmYWRldi0+c211LnRvY19idWYpOworCQlEUk1fRVJST1Io IkZhaWxlZCB0byBtYXAgdGhlIFNNVSBpbnRlcm5hbCBidWZmZXJcbiIpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlhbWRncHVfYm9fdW5yZXNlcnZlKGFkZXYtPnNtdS5zbXVfYnVmKTsKKwlw cml2YXRlLT5zbXVfYnVmZmVyX2FkZHJfbG93ID0gbG93ZXJfMzJfYml0cyhtY19hZGRyKTsKKwlw cml2YXRlLT5zbXVfYnVmZmVyX2FkZHJfaGlnaCA9IHVwcGVyXzMyX2JpdHMobWNfYWRkcik7CisK KwlhZGV2LT5zbXUuc211bWdyX2Z1bmNzID0gJmZpamlfc211bWdyX2Z1bmNzOworCisJcmV0dXJu IDA7Cit9CisKK2ludCBmaWppX3NtdV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQor eworCWFtZGdwdV9ib191bnJlZigmYWRldi0+c211LnRvY19idWYpOworCWFtZGdwdV9ib191bnJl ZigmYWRldi0+c211LnNtdV9idWYpOworCWtmcmVlKGFkZXYtPnNtdS5wcml2KTsKKwlhZGV2LT5z bXUucHJpdiA9IE5VTEw7CisJaWYgKGFkZXYtPmZpcm13YXJlLmZ3X2J1ZikKKwkJYW1kZ3B1X3Vj b2RlX2ZpbmlfYm8oYWRldik7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2Zpamlfc211bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9maWppX3NtdW1nci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFj ZWYwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9maWpp X3NtdW1nci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNCBBZHZhbmNl ZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S CisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYg RklKSV9TTVVNR1JfSAorI2RlZmluZSBGSUpJX1NNVU1HUl9ICisKKyNpbmNsdWRlICJmaWppX3Bw c21jLmgiCisKK2ludCBmaWppX3NtdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsK K2ludCBmaWppX3NtdV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKK2ludCBmaWpp X3NtdV9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisKK3N0cnVjdCBmaWppX3Nt dV9wcml2YXRlX2RhdGEKK3sKKwl1aW50OF90ICpoZWFkZXI7CisJdWludDMyX3Qgc211X2J1ZmZl cl9hZGRyX2hpZ2g7CisJdWludDMyX3Qgc211X2J1ZmZlcl9hZGRyX2xvdzsKKwl1aW50MzJfdCBo ZWFkZXJfYWRkcl9oaWdoOworCXVpbnQzMl90IGhlYWRlcl9hZGRyX2xvdzsKK307CisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMKaW5kZXggMjY3NzY2Ny4uMDc4OGU1YyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS92aS5jCkBAIC0xMTkyLDYgKzExOTIsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBmaWppX2lwX2Jsb2Nrc1tdID0KIAkJLnJldiA9IDAs CiAJCS5mdW5jcyA9ICZ0b25nYV9paF9pcF9mdW5jcywKIAl9LAorCXsKKwkJLnR5cGUgPSBBTURf SVBfQkxPQ0tfVFlQRV9TTUMsCisJCS5tYWpvciA9IDcsCisJCS5taW5vciA9IDEsCisJCS5yZXYg PSAwLAorCQkuZnVuY3MgPSAmZmlqaV9kcG1faXBfZnVuY3MsCisJfSwKIH07CiAKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gY3pfaXBfYmxvY2tzW10gPQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmlfZHBtLmggYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS92aV9kcG0uaAppbmRleCAzYjQ1MzMyLi5mYzEyMGJhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aV9kcG0uaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS92aV9kcG0uaApAQCAtMzAsNyArMzAsNyBAQCBpbnQgY3pfc211X3N0 YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIGludCBjel9zbXVfZmluaShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldik7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNz IHRvbmdhX2RwbV9pcF9mdW5jczsKLQorZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3Mg ZmlqaV9kcG1faXBfZnVuY3M7CiBleHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBpY2Vs YW5kX2RwbV9pcF9mdW5jczsKIAogI2VuZGlmCi0tIAoxLjguMy4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=