From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 09/51] drm/amdgpu: export amd_powerplay_func to amdgpu and other ip block Date: Thu, 12 Nov 2015 01:17:59 -0500 Message-ID: <1447309121-2480-10-git-send-email-alexander.deucher@amd.com> References: <1447309121-2480-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-qk0-f177.google.com (mail-qk0-f177.google.com [209.85.220.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97AC47A082 for ; Wed, 11 Nov 2015 22:19:05 -0800 (PST) Received: by qkas77 with SMTP id s77so20226180qka.0 for ; Wed, 11 Nov 2015 22:19:05 -0800 (PST) In-Reply-To: <1447309121-2480-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: Rex Zhu List-Id: dri-devel@lists.freedesktop.org RnJvbTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgoKVXBkYXRlIGFtZGdwdSB0byBkZWFsIHdp dGggdGhlIG5ldyBwb3dlcnBsYXkgbW9kdWxlIHByb3Blcmx5LgoKdjI6IHNxdWFzaCBpbiBmaXhl cwp2Mzogc3F1YXNoIGluIFJleCdzIHBvd2VyIHN0YXRlIHJlcG9ydGluZyBmaXgKClNpZ25lZC1v ZmYtYnk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4KQWNrZWQtYnk6IEphbW15IFpob3UgPEph bW15Llpob3VAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRl dWNoZXJAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAg ICB8ICA0NiArKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYyB8 IDIxNSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwg MTgwIGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKaW5kZXggZjMyMjNjNS4uN2UzODFjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKQEAgLTIyMTUsMjAgKzIyMTUsNTQgQEAgYW1kZ3B1X2dldF9zZG1hX2luc3RhbmNl KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKICNkZWZpbmUgYW1kZ3B1X2RwbV9zZXRfcG93ZXJf c3RhdGUoYWRldikgKGFkZXYpLT5wbS5mdW5jcy0+c2V0X3Bvd2VyX3N0YXRlKChhZGV2KSkKICNk ZWZpbmUgYW1kZ3B1X2RwbV9wb3N0X3NldF9wb3dlcl9zdGF0ZShhZGV2KSAoYWRldiktPnBtLmZ1 bmNzLT5wb3N0X3NldF9wb3dlcl9zdGF0ZSgoYWRldikpCiAjZGVmaW5lIGFtZGdwdV9kcG1fZGlz cGxheV9jb25maWd1cmF0aW9uX2NoYW5nZWQoYWRldikgKGFkZXYpLT5wbS5mdW5jcy0+ZGlzcGxh eV9jb25maWd1cmF0aW9uX2NoYW5nZWQoKGFkZXYpKQotI2RlZmluZSBhbWRncHVfZHBtX2dldF9z Y2xrKGFkZXYsIGwpIChhZGV2KS0+cG0uZnVuY3MtPmdldF9zY2xrKChhZGV2KSwgKGwpKQotI2Rl ZmluZSBhbWRncHVfZHBtX2dldF9tY2xrKGFkZXYsIGwpIChhZGV2KS0+cG0uZnVuY3MtPmdldF9t Y2xrKChhZGV2KSwgKGwpKQogI2RlZmluZSBhbWRncHVfZHBtX3ByaW50X3Bvd2VyX3N0YXRlKGFk ZXYsIHBzKSAoYWRldiktPnBtLmZ1bmNzLT5wcmludF9wb3dlcl9zdGF0ZSgoYWRldiksIChwcykp Ci0jZGVmaW5lIGFtZGdwdV9kcG1fZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xl dmVsKGFkZXYsIG0pIChhZGV2KS0+cG0uZnVuY3MtPmRlYnVnZnNfcHJpbnRfY3VycmVudF9wZXJm b3JtYW5jZV9sZXZlbCgoYWRldiksIChtKSkKLSNkZWZpbmUgYW1kZ3B1X2RwbV9mb3JjZV9wZXJm b3JtYW5jZV9sZXZlbChhZGV2LCBsKSAoYWRldiktPnBtLmZ1bmNzLT5mb3JjZV9wZXJmb3JtYW5j ZV9sZXZlbCgoYWRldiksIChsKSkKICNkZWZpbmUgYW1kZ3B1X2RwbV92YmxhbmtfdG9vX3Nob3J0 KGFkZXYpIChhZGV2KS0+cG0uZnVuY3MtPnZibGFua190b29fc2hvcnQoKGFkZXYpKQotI2RlZmlu ZSBhbWRncHVfZHBtX3Bvd2VyZ2F0ZV91dmQoYWRldiwgZykgKGFkZXYpLT5wbS5mdW5jcy0+cG93 ZXJnYXRlX3V2ZCgoYWRldiksIChnKSkKLSNkZWZpbmUgYW1kZ3B1X2RwbV9wb3dlcmdhdGVfdmNl KGFkZXYsIGcpIChhZGV2KS0+cG0uZnVuY3MtPnBvd2VyZ2F0ZV92Y2UoKGFkZXYpLCAoZykpCiAj ZGVmaW5lIGFtZGdwdV9kcG1fZW5hYmxlX2JhcG0oYWRldiwgZSkgKGFkZXYpLT5wbS5mdW5jcy0+ ZW5hYmxlX2JhcG0oKGFkZXYpLCAoZSkpCiAjZGVmaW5lIGFtZGdwdV9kcG1fc2V0X2Zhbl9jb250 cm9sX21vZGUoYWRldiwgbSkgKGFkZXYpLT5wbS5mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUo KGFkZXYpLCAobSkpCiAjZGVmaW5lIGFtZGdwdV9kcG1fZ2V0X2Zhbl9jb250cm9sX21vZGUoYWRl dikgKGFkZXYpLT5wbS5mdW5jcy0+Z2V0X2Zhbl9jb250cm9sX21vZGUoKGFkZXYpKQogI2RlZmlu ZSBhbWRncHVfZHBtX3NldF9mYW5fc3BlZWRfcGVyY2VudChhZGV2LCBzKSAoYWRldiktPnBtLmZ1 bmNzLT5zZXRfZmFuX3NwZWVkX3BlcmNlbnQoKGFkZXYpLCAocykpCiAjZGVmaW5lIGFtZGdwdV9k cG1fZ2V0X2Zhbl9zcGVlZF9wZXJjZW50KGFkZXYsIHMpIChhZGV2KS0+cG0uZnVuY3MtPmdldF9m YW5fc3BlZWRfcGVyY2VudCgoYWRldiksIChzKSkKIAorI2RlZmluZSBhbWRncHVfZHBtX2dldF9z Y2xrKGFkZXYsIGwpIFwKKwkJYW1kZ3B1X3Bvd2VycGxheSA/IFwKKwkJKGFkZXYpLT5wb3dlcnBs YXkucHBfZnVuY3MtPmdldF9zY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgKGwpKSA6 IFwKKwkJKGFkZXYpLT5wbS5mdW5jcy0+Z2V0X3NjbGsoKGFkZXYpLCAobCkpCisKKyNkZWZpbmUg YW1kZ3B1X2RwbV9nZXRfbWNsayhhZGV2LCBsKSAgXAorCQlhbWRncHVfcG93ZXJwbGF5ID8gXAor CQkoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0X21jbGsoKGFkZXYpLT5wb3dlcnBsYXku cHBfaGFuZGxlLCAobCkpIDogXAorCQkoYWRldiktPnBtLmZ1bmNzLT5nZXRfbWNsaygoYWRldiks IChsKSkKKworCisjZGVmaW5lIGFtZGdwdV9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwoYWRl diwgbCkgXAorCQlhbWRncHVfcG93ZXJwbGF5ID8gXAorCQkoYWRldiktPnBvd2VycGxheS5wcF9m dW5jcy0+Zm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxl LCAobCkpIDogXAorCQkoYWRldiktPnBtLmZ1bmNzLT5mb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCgo YWRldiksIChsKSkKKworI2RlZmluZSBhbWRncHVfZHBtX3Bvd2VyZ2F0ZV91dmQoYWRldiwgZykg XAorCQlhbWRncHVfcG93ZXJwbGF5ID8gXAorCQkoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+ cG93ZXJnYXRlX3V2ZCgoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsIChnKSkgOiBcCisJCShh ZGV2KS0+cG0uZnVuY3MtPnBvd2VyZ2F0ZV91dmQoKGFkZXYpLCAoZykpCisKKyNkZWZpbmUgYW1k Z3B1X2RwbV9wb3dlcmdhdGVfdmNlKGFkZXYsIGcpIFwKKwkJYW1kZ3B1X3Bvd2VycGxheSA/IFwK KwkJKGFkZXYpLT5wb3dlcnBsYXkucHBfZnVuY3MtPnBvd2VyZ2F0ZV92Y2UoKGFkZXYpLT5wb3dl cnBsYXkucHBfaGFuZGxlLCAoZykpIDogXAorCQkoYWRldiktPnBtLmZ1bmNzLT5wb3dlcmdhdGVf dmNlKChhZGV2KSwgKGcpKQorCisjZGVmaW5lIGFtZGdwdV9kcG1fZGVidWdmc19wcmludF9jdXJy ZW50X3BlcmZvcm1hbmNlX2xldmVsKGFkZXYsIG0pIFwKKwkJYW1kZ3B1X3Bvd2VycGxheSA/IFwK KwkJKGFkZXYpLT5wb3dlcnBsYXkucHBfZnVuY3MtPnByaW50X2N1cnJlbnRfcGVyZm9ybWFuY2Vf bGV2ZWwoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLCAobSkpIDogXAorCQkoYWRldiktPnBt LmZ1bmNzLT5kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwoKGFkZXYpLCAo bSkpCisKKyNkZWZpbmUgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9wb3dlcl9zdGF0ZShhZGV2KSBc CisJCShhZGV2KS0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZXRfY3VycmVudF9wb3dlcl9zdGF0ZSgo YWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUpCisKKyNkZWZpbmUgYW1kZ3B1X2RwbV9nZXRfcGVy Zm9ybWFuY2VfbGV2ZWwoYWRldikgXAorCQkoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0 X3BlcmZvcm1hbmNlX2xldmVsKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSkKKworI2RlZmlu ZSBhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwgZXZlbnRfaWQsIGlucHV0LCBvdXRwdXQp IFwKKwkoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MoKGFkZXYpLT5w b3dlcnBsYXkucHBfaGFuZGxlLCAoZXZlbnRfaWQpLCAoaW5wdXQpLCAob3V0cHV0KSkKKwogI2Rl ZmluZSBhbWRncHVfZ2RzX3N3aXRjaChhZGV2LCByLCB2LCBkLCB3LCBhKSAoYWRldiktPmdkcy5m dW5jcy0+cGF0Y2hfZ2RzX3N3aXRjaCgociksICh2KSwgKGQpLCAodyksIChhKSkKIAogLyogQ29t bW9uIGZ1bmN0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwppbmRl eCBlZWExOTMzLi4yMzVmYWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0u YwpAQCAtMzAsMTAgKzMwLDE2IEBACiAjaW5jbHVkZSA8bGludXgvaHdtb24uaD4KICNpbmNsdWRl IDxsaW51eC9od21vbi1zeXNmcy5oPgogCisjaW5jbHVkZSAiYW1kX3Bvd2VycGxheS5oIgorCiBz dGF0aWMgaW50IGFtZGdwdV9kZWJ1Z2ZzX3BtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOwogCiB2b2lkIGFtZGdwdV9wbV9hY3BpX2V2ZW50X2hhbmRsZXIoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CisJaWYgKGFtZGdwdV9wb3dlcnBsYXkpCisJCS8qIFRPRE8gKi8KKwkJ cmV0dXJuOworCiAJaWYgKGFkZXYtPnBtLmRwbV9lbmFibGVkKSB7CiAJCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKIAkJaWYgKHBvd2VyX3N1cHBseV9pc19zeXN0ZW1fc3VwcGxpZWQoKSA+ IDApCkBAIC01Miw3ICs1OCwxMiBAQCBzdGF0aWMgc3NpemVfdCBhbWRncHVfZ2V0X2RwbV9zdGF0 ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRkZXYtPmRl dl9wcml2YXRlOwotCWVudW0gYW1kX3BtX3N0YXRlX3R5cGUgcG0gPSBhZGV2LT5wbS5kcG0udXNl cl9zdGF0ZTsKKwllbnVtIGFtZF9wbV9zdGF0ZV90eXBlIHBtOworCisJaWYgKGFtZGdwdV9wb3dl cnBsYXkpIHsKKwkJcG0gPSBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKGFkZXYp OworCX0gZWxzZQorCQlwbSA9IGFkZXYtPnBtLmRwbS51c2VyX3N0YXRlOwogCiAJcmV0dXJuIHNu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsCiAJCQkocG0gPT0gUE9XRVJfU1RBVEVfVFlQ RV9CQVRURVJZKSA/ICJiYXR0ZXJ5IiA6CkBAIC02Niw0MCArNzcsNTcgQEAgc3RhdGljIHNzaXpl X3QgYW1kZ3B1X3NldF9kcG1fc3RhdGUoc3RydWN0IGRldmljZSAqZGV2LAogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBkZGV2LT5kZXZfcHJpdmF0ZTsKKwllbnVtIGFtZF9wbV9zdGF0ZV90eXBl ICBzdGF0ZTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKIAlpZiAoc3RybmNtcCgi YmF0dGVyeSIsIGJ1Ziwgc3RybGVuKCJiYXR0ZXJ5IikpID09IDApCi0JCWFkZXYtPnBtLmRwbS51 c2VyX3N0YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9CQVRURVJZOworCQlzdGF0ZSA9IFBPV0VSX1NU QVRFX1RZUEVfQkFUVEVSWTsKIAllbHNlIGlmIChzdHJuY21wKCJiYWxhbmNlZCIsIGJ1Ziwgc3Ry bGVuKCJiYWxhbmNlZCIpKSA9PSAwKQotCQlhZGV2LT5wbS5kcG0udXNlcl9zdGF0ZSA9IFBPV0VS X1NUQVRFX1RZUEVfQkFMQU5DRUQ7CisJCXN0YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9CQUxBTkNF RDsKIAllbHNlIGlmIChzdHJuY21wKCJwZXJmb3JtYW5jZSIsIGJ1Ziwgc3RybGVuKCJwZXJmb3Jt YW5jZSIpKSA9PSAwKQotCQlhZGV2LT5wbS5kcG0udXNlcl9zdGF0ZSA9IFBPV0VSX1NUQVRFX1RZ UEVfUEVSRk9STUFOQ0U7CisJCXN0YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9QRVJGT1JNQU5DRTsK IAllbHNlIHsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJCWNvdW50ID0gLUVJ TlZBTDsKIAkJZ290byBmYWlsOwogCX0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK IAotCS8qIENhbid0IHNldCBkcG0gc3RhdGUgd2hlbiB0aGUgY2FyZCBpcyBvZmYgKi8KLQlpZiAo IShhZGV2LT5mbGFncyAmIEFNRF9JU19QWCkgfHwKLQkgICAgKGRkZXYtPnN3aXRjaF9wb3dlcl9z dGF0ZSA9PSBEUk1fU1dJVENIX1BPV0VSX09OKSkKLQkJYW1kZ3B1X3BtX2NvbXB1dGVfY2xvY2tz KGFkZXYpOworCWlmIChhbWRncHVfcG93ZXJwbGF5KSB7CisJCWFtZGdwdV9kcG1fZGlzcGF0Y2hf dGFzayhhZGV2LCBBTURfUFBfRVZFTlRfRU5BQkxFX1VTRVJfU1RBVEUsICZzdGF0ZSwgTlVMTCk7 CisJfSBlbHNlIHsKKwkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCQlhZGV2LT5wbS5k cG0udXNlcl9zdGF0ZSA9IHN0YXRlOworCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK KworCQkvKiBDYW4ndCBzZXQgZHBtIHN0YXRlIHdoZW4gdGhlIGNhcmQgaXMgb2ZmICovCisJCWlm ICghKGFkZXYtPmZsYWdzICYgQU1EX0lTX1BYKSB8fAorCQkgICAgKGRkZXYtPnN3aXRjaF9wb3dl cl9zdGF0ZSA9PSBEUk1fU1dJVENIX1BPV0VSX09OKSkKKwkJCWFtZGdwdV9wbV9jb21wdXRlX2Ns b2NrcyhhZGV2KTsKKwl9CiBmYWlsOgogCXJldHVybiBjb3VudDsKIH0KIAogc3RhdGljIHNzaXpl X3QgYW1kZ3B1X2dldF9kcG1fZm9yY2VkX3BlcmZvcm1hbmNlX2xldmVsKHN0cnVjdCBkZXZpY2Ug KmRldiwKLQkJCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKLQkJCQkJ CSAgICAgICBjaGFyICpidWYpCisJCQkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwK KwkJCQkJCQkJY2hhciAqYnVmKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZGV2LT5kZXZf cHJpdmF0ZTsKLQllbnVtIGFtZGdwdV9kcG1fZm9yY2VkX2xldmVsIGxldmVsID0gYWRldi0+cG0u ZHBtLmZvcmNlZF9sZXZlbDsKIAotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVz XG4iLAotCQkJKGxldmVsID09IEFNREdQVV9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8pID8gImF1dG8i IDoKLQkJCShsZXZlbCA9PSBBTURHUFVfRFBNX0ZPUkNFRF9MRVZFTF9MT1cpID8gImxvdyIgOiAi aGlnaCIpOworCWlmIChhbWRncHVfcG93ZXJwbGF5KSB7CisJCWVudW0gYW1kX2RwbV9mb3JjZWRf bGV2ZWwgbGV2ZWw7CisKKwkJbGV2ZWwgPSBhbWRncHVfZHBtX2dldF9wZXJmb3JtYW5jZV9sZXZl bChhZGV2KTsKKwkJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsCisJCQkJ KGxldmVsID09IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8pID8gImF1dG8iIDoKKwkJCQkobGV2 ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfTE9XKSA/ICJsb3ciIDogImhpZ2giKTsKKwl9IGVs c2UgeworCQllbnVtIGFtZGdwdV9kcG1fZm9yY2VkX2xldmVsIGxldmVsOworCisJCWxldmVsID0g YWRldi0+cG0uZHBtLmZvcmNlZF9sZXZlbDsKKwkJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9T SVpFLCAiJXNcbiIsCisJCQkJKGxldmVsID09IEFNREdQVV9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8p ID8gImF1dG8iIDoKKwkJCQkobGV2ZWwgPT0gQU1ER1BVX0RQTV9GT1JDRURfTEVWRUxfTE9XKSA/ ICJsb3ciIDogImhpZ2giKTsKKwl9CiB9CiAKIHN0YXRpYyBzc2l6ZV90IGFtZGdwdV9zZXRfZHBt X2ZvcmNlZF9wZXJmb3JtYW5jZV9sZXZlbChzdHJ1Y3QgZGV2aWNlICpkZXYsCkBAIC0xMTIsNyAr MTQwLDYgQEAgc3RhdGljIHNzaXplX3QgYW1kZ3B1X3NldF9kcG1fZm9yY2VkX3BlcmZvcm1hbmNl X2xldmVsKHN0cnVjdCBkZXZpY2UgKmRldiwKIAllbnVtIGFtZGdwdV9kcG1fZm9yY2VkX2xldmVs IGxldmVsOwogCWludCByZXQgPSAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwog CWlmIChzdHJuY21wKCJsb3ciLCBidWYsIHN0cmxlbigibG93IikpID09IDApIHsKIAkJbGV2ZWwg PSBBTURHUFVfRFBNX0ZPUkNFRF9MRVZFTF9MT1c7CiAJfSBlbHNlIGlmIChzdHJuY21wKCJoaWdo IiwgYnVmLCBzdHJsZW4oImhpZ2giKSkgPT0gMCkgewpAQCAtMTIzLDcgKzE1MCwxMSBAQCBzdGF0 aWMgc3NpemVfdCBhbWRncHVfc2V0X2RwbV9mb3JjZWRfcGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0 IGRldmljZSAqZGV2LAogCQljb3VudCA9IC1FSU5WQUw7CiAJCWdvdG8gZmFpbDsKIAl9Ci0JaWYg KGFkZXYtPnBtLmZ1bmNzLT5mb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCkgeworCisJaWYgKGFtZGdw dV9wb3dlcnBsYXkpCisJCWFtZGdwdV9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwoYWRldiwg bGV2ZWwpOworCWVsc2UgeworCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJCWlmIChh ZGV2LT5wbS5kcG0udGhlcm1hbF9hY3RpdmUpIHsKIAkJCWNvdW50ID0gLUVJTlZBTDsKIAkJCWdv dG8gZmFpbDsKQEAgLTEzMSw2ICsxNjIsOSBAQCBzdGF0aWMgc3NpemVfdCBhbWRncHVfc2V0X2Rw bV9mb3JjZWRfcGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0IGRldmljZSAqZGV2LAogCQlyZXQgPSBh bWRncHVfZHBtX2ZvcmNlX3BlcmZvcm1hbmNlX2xldmVsKGFkZXYsIGxldmVsKTsKIAkJaWYgKHJl dCkKIAkJCWNvdW50ID0gLUVJTlZBTDsKKwkJZWxzZQorCQkJYWRldi0+cG0uZHBtLmZvcmNlZF9s ZXZlbCA9IGxldmVsOworCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAl9CiBmYWls OgogCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwpAQCAtMTk3LDcgKzIzMSw3IEBAIHN0 YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9zZXRfcHdtMV9lbmFibGUoc3RydWN0IGRldmljZSAq ZGV2LAogCWludCBlcnI7CiAJaW50IHZhbHVlOwogCi0JaWYoIWFkZXYtPnBtLmZ1bmNzLT5zZXRf ZmFuX2NvbnRyb2xfbW9kZSkKKwlpZiAoIWFkZXYtPnBtLmZ1bmNzLT5zZXRfZmFuX2NvbnRyb2xf bW9kZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAllcnIgPSBrc3RydG9pbnQoYnVmLCAxMCwgJnZh bHVlKTsKQEAgLTI5NCw3ICszMjgsMTAgQEAgc3RhdGljIHVtb2RlX3QgaHdtb25fYXR0cmlidXRl c192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJdW1vZGVfdCBlZmZlY3RpdmVfbW9kZSA9IGF0 dHItPm1vZGU7CiAKLQkvKiBTa2lwIGF0dHJpYnV0ZXMgaWYgRFBNIGlzIG5vdCBlbmFibGVkICov CisJaWYgKGFtZGdwdV9wb3dlcnBsYXkpCisJCXJldHVybiAwOyAgLyogdG8gZG8gKi8KKworCS8q IFNraXAgbGltaXQgYXR0cmlidXRlcyBpZiBEUE0gaXMgbm90IGVuYWJsZWQgKi8KIAlpZiAoIWFk ZXYtPnBtLmRwbV9lbmFibGVkICYmCiAJICAgIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfdGVt cDFfY3JpdC5kZXZfYXR0ci5hdHRyIHx8CiAJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJf dGVtcDFfY3JpdF9oeXN0LmRldl9hdHRyLmF0dHIgfHwKQEAgLTYzNSw0OSArNjcyLDU0IEBAIGRv bmU6CiAKIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdXZkKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBib29sIGVuYWJsZSkKIHsKLQlpZiAoYWRldi0+cG0uZnVuY3MtPnBvd2VyZ2F0ZV91dmQp IHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQkvKiBlbmFibGUvZGlzYWJsZSBV VkQgKi8KKwlpZiAoYW1kZ3B1X3Bvd2VycGxheSkKIAkJYW1kZ3B1X2RwbV9wb3dlcmdhdGVfdXZk KGFkZXYsICFlbmFibGUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9IGVs c2UgewotCQlpZiAoZW5hYmxlKSB7CisJZWxzZSB7CisJCWlmIChhZGV2LT5wbS5mdW5jcy0+cG93 ZXJnYXRlX3V2ZCkgewogCQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQkJYWRldi0+ cG0uZHBtLnV2ZF9hY3RpdmUgPSB0cnVlOwotCQkJYWRldi0+cG0uZHBtLnN0YXRlID0gUE9XRVJf U1RBVEVfVFlQRV9JTlRFUk5BTF9VVkQ7CisJCQkvKiBlbmFibGUvZGlzYWJsZSBVVkQgKi8KKwkJ CWFtZGdwdV9kcG1fcG93ZXJnYXRlX3V2ZChhZGV2LCAhZW5hYmxlKTsKIAkJCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwogCQl9IGVsc2UgewotCQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUgPSBmYWxzZTsKLQkJCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOworCQkJaWYgKGVuYWJsZSkgeworCQkJCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKKwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IHRydWU7CisJ CQkJYWRldi0+cG0uZHBtLnN0YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9JTlRFUk5BTF9VVkQ7CisJ CQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJCQl9IGVsc2UgeworCQkJCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IGZh bHNlOworCQkJCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCQkJfQorCQkJYW1kZ3B1 X3BtX2NvbXB1dGVfY2xvY2tzKGFkZXYpOwogCQl9CiAKLQkJYW1kZ3B1X3BtX2NvbXB1dGVfY2xv Y2tzKGFkZXYpOwogCX0KIH0KIAogdm9pZCBhbWRncHVfZHBtX2VuYWJsZV92Y2Uoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogewotCWlmIChhZGV2LT5wbS5mdW5jcy0+ cG93ZXJnYXRlX3ZjZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCS8qIGVu YWJsZS9kaXNhYmxlIFZDRSAqLworCWlmIChhbWRncHVfcG93ZXJwbGF5KQogCQlhbWRncHVfZHBt X3Bvd2VyZ2F0ZV92Y2UoYWRldiwgIWVuYWJsZSk7Ci0KLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JfSBlbHNlIHsKLQkJaWYgKGVuYWJsZSkgeworCWVsc2UgeworCQlpZiAoYWRl di0+cG0uZnVuY3MtPnBvd2VyZ2F0ZV92Y2UpIHsKIAkJCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQkJCWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKLQkJCS8qIFhYWCBzZWxl Y3QgdmNlIGxldmVsIGJhc2VkIG9uIHJpbmcvdGFzayAqLwotCQkJYWRldi0+cG0uZHBtLnZjZV9s ZXZlbCA9IEFNREdQVV9WQ0VfTEVWRUxfQUNfQUxMOworCQkJYW1kZ3B1X2RwbV9wb3dlcmdhdGVf dmNlKGFkZXYsICFlbmFibGUpOwogCQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJ CX0gZWxzZSB7Ci0JCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCQlhZGV2LT5wbS5k cG0udmNlX2FjdGl2ZSA9IGZhbHNlOwotCQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CisJCQlpZiAoZW5hYmxlKSB7CisJCQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCQkJ CWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKKwkJCQkvKiBYWFggc2VsZWN0IHZjZSBs ZXZlbCBiYXNlZCBvbiByaW5nL3Rhc2sgKi8KKwkJCQlhZGV2LT5wbS5kcG0udmNlX2xldmVsID0g QU1ER1BVX1ZDRV9MRVZFTF9BQ19BTEw7CisJCQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CisJCQl9IGVsc2UgeworCQkJCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwkJCQlh ZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IGZhbHNlOworCQkJCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOworCQkJfQorCQkJYW1kZ3B1X3BtX2NvbXB1dGVfY2xvY2tzKGFkZXYpOwogCQl9 Ci0KLQkJYW1kZ3B1X3BtX2NvbXB1dGVfY2xvY2tzKGFkZXYpOwogCX0KIH0KIApAQCAtNjg1LDEw ICs3MjcsMTMgQEAgdm9pZCBhbWRncHVfcG1fcHJpbnRfcG93ZXJfc3RhdGVzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IGFkZXYtPnBt LmRwbS5udW1fcHM7IGkrKykgewotCQlwcmludGsoIj09IHBvd2VyIHN0YXRlICVkID09XG4iLCBp KTsKKwlpZiAoYW1kZ3B1X3Bvd2VycGxheSkKKwkJLyogVE8gRE8gKi8KKwkJcmV0dXJuOworCisJ Zm9yIChpID0gMDsgaSA8IGFkZXYtPnBtLmRwbS5udW1fcHM7IGkrKykKIAkJYW1kZ3B1X2RwbV9w cmludF9wb3dlcl9zdGF0ZShhZGV2LCAmYWRldi0+cG0uZHBtLnBzW2ldKTsKLQl9CisKIH0KIAog aW50IGFtZGdwdV9wbV9zeXNmc19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAt Njk4LDggKzc0MywxMSBAQCBpbnQgYW1kZ3B1X3BtX3N5c2ZzX2luaXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJaWYgKGFkZXYtPnBtLnN5c2ZzX2luaXRpYWxpemVkKQogCQlyZXR1cm4g MDsKIAotCWlmIChhZGV2LT5wbS5mdW5jcy0+Z2V0X3RlbXBlcmF0dXJlID09IE5VTEwpCi0JCXJl dHVybiAwOworCWlmICghYW1kZ3B1X3Bvd2VycGxheSkgeworCQlpZiAoYWRldi0+cG0uZnVuY3Mt PmdldF90ZW1wZXJhdHVyZSA9PSBOVUxMKQorCQkJcmV0dXJuIDA7CisJfQorCiAJYWRldi0+cG0u aW50X2h3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhhZGV2LT5k ZXYsCiAJCQkJCQkJCSAgIERSSVZFUl9OQU1FLCBhZGV2LAogCQkJCQkJCQkgICBod21vbl9ncm91 cHMpOwpAQCAtNzQ4LDMyICs3OTYsNDMgQEAgdm9pZCBhbWRncHVfcG1fY29tcHV0ZV9jbG9ja3Mo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFhZGV2LT5wbS5kcG1fZW5hYmxlZCkK IAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmIChhbWRncHVf cG93ZXJwbGF5KSB7CisJCWludCBpID0gMDsKKworCQlhbWRncHVfZGlzcGxheV9iYW5kd2lkdGhf dXBkYXRlKGFkZXYpOworCQltdXRleF9sb2NrKCZhZGV2LT5yaW5nX2xvY2spOworCQkJZm9yIChp ID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7IGkrKykgeworCQkJCXN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZyA9IGFkZXYtPnJpbmdzW2ldOworCQkJCWlmIChyaW5nICYmIHJpbmctPnJlYWR5KQor CQkJCQlhbWRncHVfZmVuY2Vfd2FpdF9lbXB0eShyaW5nKTsKKwkJCQl9CisJCW11dGV4X3VubG9j aygmYWRldi0+cmluZ19sb2NrKTsKIAotCS8qIHVwZGF0ZSBhY3RpdmUgY3J0YyBjb3VudHMgKi8K LQlhZGV2LT5wbS5kcG0ubmV3X2FjdGl2ZV9jcnRjcyA9IDA7Ci0JYWRldi0+cG0uZHBtLm5ld19h Y3RpdmVfY3J0Y19jb3VudCA9IDA7Ci0JaWYgKGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YyAmJiBh ZGV2LT5tb2RlX2luZm8ubW9kZV9jb25maWdfaW5pdGlhbGl6ZWQpIHsKLQkJbGlzdF9mb3JfZWFj aF9lbnRyeShjcnRjLAotCQkJCSAgICAmZGRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFk KSB7Ci0JCQlhbWRncHVfY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGNydGMpOwotCQkJaWYgKGNydGMt PmVuYWJsZWQpIHsKLQkJCQlhZGV2LT5wbS5kcG0ubmV3X2FjdGl2ZV9jcnRjcyB8PSAoMSA8PCBh bWRncHVfY3J0Yy0+Y3J0Y19pZCk7Ci0JCQkJYWRldi0+cG0uZHBtLm5ld19hY3RpdmVfY3J0Y19j b3VudCsrOworCQlhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwgQU1EX1BQX0VWRU5UX0RJ U1BMQVlfQ09ORklHX0NIQU5HRSwgTlVMTCwgTlVMTCk7CisJfSBlbHNlIHsKKwkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOworCQlhZGV2LT5wbS5kcG0ubmV3X2FjdGl2ZV9jcnRjcyA9IDA7 CisJCWFkZXYtPnBtLmRwbS5uZXdfYWN0aXZlX2NydGNfY291bnQgPSAwOworCQlpZiAoYWRldi0+ bW9kZV9pbmZvLm51bV9jcnRjICYmIGFkZXYtPm1vZGVfaW5mby5tb2RlX2NvbmZpZ19pbml0aWFs aXplZCkgeworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLAorCQkJCQkgICAgJmRkZXYtPm1v ZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgeworCQkJCWFtZGdwdV9jcnRjID0gdG9fYW1kZ3B1 X2NydGMoY3J0Yyk7CisJCQkJaWYgKGNydGMtPmVuYWJsZWQpIHsKKwkJCQkJYWRldi0+cG0uZHBt Lm5ld19hY3RpdmVfY3J0Y3MgfD0gKDEgPDwgYW1kZ3B1X2NydGMtPmNydGNfaWQpOworCQkJCQlh ZGV2LT5wbS5kcG0ubmV3X2FjdGl2ZV9jcnRjX2NvdW50Kys7CisJCQkJfQogCQkJfQogCQl9Ci0J fQotCi0JLyogdXBkYXRlIGJhdHRlcnkvYWMgc3RhdHVzICovCi0JaWYgKHBvd2VyX3N1cHBseV9p c19zeXN0ZW1fc3VwcGxpZWQoKSA+IDApCi0JCWFkZXYtPnBtLmRwbS5hY19wb3dlciA9IHRydWU7 Ci0JZWxzZQotCQlhZGV2LT5wbS5kcG0uYWNfcG93ZXIgPSBmYWxzZTsKLQotCWFtZGdwdV9kcG1f Y2hhbmdlX3Bvd2VyX3N0YXRlX2xvY2tlZChhZGV2KTsKKwkJLyogdXBkYXRlIGJhdHRlcnkvYWMg c3RhdHVzICovCisJCWlmIChwb3dlcl9zdXBwbHlfaXNfc3lzdGVtX3N1cHBsaWVkKCkgPiAwKQor CQkJYWRldi0+cG0uZHBtLmFjX3Bvd2VyID0gdHJ1ZTsKKwkJZWxzZQorCQkJYWRldi0+cG0uZHBt LmFjX3Bvd2VyID0gZmFsc2U7CiAKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwkJ YW1kZ3B1X2RwbV9jaGFuZ2VfcG93ZXJfc3RhdGVfbG9ja2VkKGFkZXYpOwogCisJCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOworCX0KIH0KIAogLyoKQEAgLTc4Nyw3ICs4NDYsMTMgQEAg c3RhdGljIGludCBhbWRncHVfZGVidWdmc19wbV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKIAlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKLQlpZiAoYWRl di0+cG0uZHBtX2VuYWJsZWQpIHsKKwlpZiAoIWFkZXYtPnBtLmRwbV9lbmFibGVkKSB7CisJCXNl cV9wcmludGYobSwgImRwbSBub3QgZW5hYmxlZFxuIik7CisJCXJldHVybiAwOworCX0KKwlpZiAo YW1kZ3B1X3Bvd2VycGxheSkgeworCQlhbWRncHVfZHBtX2RlYnVnZnNfcHJpbnRfY3VycmVudF9w ZXJmb3JtYW5jZV9sZXZlbChhZGV2LCBtKTsKKwl9IGVsc2UgewogCQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7CiAJCWlmIChhZGV2LT5wbS5mdW5jcy0+ZGVidWdmc19wcmludF9jdXJyZW50 X3BlcmZvcm1hbmNlX2xldmVsKQogCQkJYW1kZ3B1X2RwbV9kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRf cGVyZm9ybWFuY2VfbGV2ZWwoYWRldiwgbSk7Ci0tIAoxLjguMy4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=