From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 063/138] drm/amd/powerplay: implement smu feature functions Date: Fri, 25 Jan 2019 18:24:30 +0800 Message-ID: <1548411945-12396-64-git-send-email-ray.huang@amd.com> References: <1548411945-12396-1-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548411945-12396-1-git-send-email-ray.huang-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 Cc: Likun Gao , Kevin Wang , Chengming Gui RnJvbTogS2V2aW4gV2FuZyA8S2V2aW4xLldhbmdAYW1kLmNvbT4KCmVhY2ggaXAgd2lsbCBzdXBw b3J0IGRpZmZlcmVudCBzbXUgZmVhdHVyZSwKdGhlIGRyaXZlciB1c2UgYml0bWFwIHRvIG1hbmFn ZW1lbnQgdGhpcyBmZWF0dXJlLgoKYml0bWFwOgotYWxsb3dlZDogc3cgZHJpdmVyIHRvIGVuYWJs ZSAmIGRpc2FibGUgc29tZSBmZWF0dXJlIHdoZW4gZHJpdmVyIGluaXQuCi1zdXBwb3JlZDogdGhl IGZlYXR1cmUgaXMgc3VwcHJvZWQuCi1lbmFibGVkOiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgoK U2lnbmVkLW9mZi1ieTogS2V2aW4gV2FuZyA8S2V2aW4xLldhbmdAYW1kLmNvbT4KUmV2aWV3ZWQt Ynk6IEh1YW5nIFJ1aSA8UmF5Lmh1YW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jICAgICB8IDM2ICsrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmggfCAyOCArKysrKysrLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMgICAgICB8IDk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0 LmMgICAgIHwgMTQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2Ft ZGdwdV9zbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYwpp bmRleCAzY2EzZDFjLi5mOWIyNTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9hbWRncHVfc211LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv YW1kZ3B1X3NtdS5jCkBAIC0yOSw2ICsyOSwyNiBAQAogI2luY2x1ZGUgInNtdV92MTFfMC5oIgog I2luY2x1ZGUgImF0b20uaCIKIAoraW50IHNtdV9mZWF0dXJlX2luaXRfZHBtKHN0cnVjdCBzbXVf Y29udGV4dCAqc211KQoreworCXN0cnVjdCBzbXVfZmVhdHVyZSAqZmVhdHVyZSA9ICZzbXUtPnNt dV9mZWF0dXJlOworCWludCByZXQgPSAwOworCXVpbnQzMl90IHVuYWxsb3dlZF9mZWF0dXJlX21h c2tbU01VX0ZFQVRVUkVfTUFYLzMyXTsKKworCWJpdG1hcF9maWxsKGZlYXR1cmUtPmFsbG93ZWQs IFNNVV9GRUFUVVJFX01BWCk7CisKKwlyZXQgPSBzbXVfZ2V0X3VuYWxsb3dlZF9mZWF0dXJlX21h c2soc211LCB1bmFsbG93ZWRfZmVhdHVyZV9tYXNrLAorCQkJCQkgICAgIFNNVV9GRUFUVVJFX01B WC8zMik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWJpdG1hcF9hbmRub3QoZmVhdHVy ZS0+YWxsb3dlZCwgZmVhdHVyZS0+YWxsb3dlZCwKKwkJICAgICAgKHVuc2lnbmVkIGxvbmcgKil1 bmFsbG93ZWRfZmVhdHVyZV9tYXNrLAorCQkgICAgICBmZWF0dXJlLT5mZWF0dXJlX251bSk7CisK KwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IHNtdV9zZXRfZnVuY3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSAmYWRldi0+c211 OwpAQCAtMTMzLDYgKzE1MywxMCBAQCBzdGF0aWMgaW50IHNtdV9zd19pbml0KHZvaWQgKmhhbmRs ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzbXUtPnBvb2xfc2l6ZSA9IGFkZXYtPnBtLnNtdV9w cnZfYnVmZmVyX3NpemU7CisJc211LT5zbXVfZmVhdHVyZS5mZWF0dXJlX251bSA9IFNNVV9GRUFU VVJFX01BWDsKKwliaXRtYXBfemVybyhzbXUtPnNtdV9mZWF0dXJlLnN1cHBvcnRlZCwgU01VX0ZF QVRVUkVfTUFYKTsKKwliaXRtYXBfemVybyhzbXUtPnNtdV9mZWF0dXJlLmVuYWJsZWQsIFNNVV9G RUFUVVJFX01BWCk7CisJYml0bWFwX3plcm8oc211LT5zbXVfZmVhdHVyZS5hbGxvd2VkLCBTTVVf RkVBVFVSRV9NQVgpOwogCiAJcmV0ID0gc211X2luaXRfbWljcm9jb2RlKHNtdSk7CiAJaWYgKHJl dCkgewpAQCAtMjQxLDYgKzI2NSwxMCBAQCBzdGF0aWMgaW50IHNtdV9zbWNfdGFibGVfaHdfaW5p dChzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJ cmV0ID0gc211X2ZlYXR1cmVfc2V0X2FsbG93ZWRfbWFzayhzbXUpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKIAlyZXQgPSBzbXVfcmVhZF9wcHRhYmxlX2Zyb21fdmJpb3Moc211KTsKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMzEyLDYgKzM0MCwxMCBAQCBzdGF0aWMgaW50IHNt dV9zbWNfdGFibGVfaHdfaW5pdChzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCisJcmV0ID0gc211X2ZlYXR1cmVfZW5hYmxlX2FsbChzbXUpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKIAkvKgogCSAqIFNldCBtaW4gZGVlcCBzbGVlcCBkY2Ug ZmNsayB3aXRoIGJvb3R1cCB2YWx1ZSBmcm9tIHZiaW9zIHZpYQogCSAqIFNldE1pbkRlZXBTbGVl cERjZWZjbGsgTVNHLgpAQCAtNDEzLDYgKzQ0NSwxMCBAQCBzdGF0aWMgaW50IHNtdV9od19pbml0 KHZvaWQgKmhhbmRsZSkKIAogCW11dGV4X2xvY2soJnNtdS0+bXV0ZXgpOwogCisJcmV0ID0gc211 X2ZlYXR1cmVfaW5pdF9kcG0oc211KTsKKwlpZiAocmV0KQorCQlnb3RvIGZhaWxlZDsKKwogCXJl dCA9IHNtdV9zbWNfdGFibGVfaHdfaW5pdChzbXUpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbGVk OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2FtZGdwdV9z bXUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmgKaW5k ZXggOTg0ZGJiMi4uNzQwZGFlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaW5jL2FtZGdwdV9zbXUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9pbmMvYW1kZ3B1X3NtdS5oCkBAIC0xNzUsNiArMTc1LDE2IEBAIHN0cnVjdCBzbXVfcG93ZXJf Y29udGV4dCB7CiAJdWludDMyX3QgcG93ZXJfY29udGV4dF9zaXplOwogfTsKIAorCisjZGVmaW5l IFNNVV9GRUFUVVJFX01BWAkoNjQpCitzdHJ1Y3Qgc211X2ZlYXR1cmUKK3sKKwl1aW50MzJfdCBm ZWF0dXJlX251bTsKKwlERUNMQVJFX0JJVE1BUChzdXBwb3J0ZWQsIFNNVV9GRUFUVVJFX01BWCk7 CisJREVDTEFSRV9CSVRNQVAoYWxsb3dlZCwgU01VX0ZFQVRVUkVfTUFYKTsKKwlERUNMQVJFX0JJ VE1BUChlbmFibGVkLCBTTVVfRkVBVFVSRV9NQVgpOworfTsKKwogc3RydWN0IHNtdV9jb250ZXh0 CiB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgICAgICAgICAgICAqYWRldjsKQEAgLTE4Nyw2ICsx OTcsNyBAQCBzdHJ1Y3Qgc211X2NvbnRleHQKIAlzdHJ1Y3Qgc211X3RhYmxlX2NvbnRleHQJc211 X3RhYmxlOwogCXN0cnVjdCBzbXVfZHBtX2NvbnRleHQJCXNtdV9kcG07CiAJc3RydWN0IHNtdV9w b3dlcl9jb250ZXh0CXNtdV9wb3dlcjsKKwlzdHJ1Y3Qgc211X2ZlYXR1cmUJCXNtdV9mZWF0dXJl OwogfTsKIAogc3RydWN0IHBwdGFibGVfZnVuY3MgewpAQCAtMTk2LDYgKzIwNyw3IEBAIHN0cnVj dCBwcHRhYmxlX2Z1bmNzIHsKIAlpbnQgKCphcHBlbmRfcG93ZXJwbGF5X3RhYmxlKShzdHJ1Y3Qg c211X2NvbnRleHQgKnNtdSk7CiAJaW50ICgqZ2V0X3NtdV9tc2dfaW5kZXgpKHN0cnVjdCBzbXVf Y29udGV4dCAqc211LCB1aW50MzJfdCBpbmRleCk7CiAJaW50ICgqcnVuX2FmbGxfYnRjKShzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSk7CisJaW50ICgqZ2V0X3VuYWxsb3dlZF9mZWF0dXJlX21hc2sp KHN0cnVjdCBzbXVfY29udGV4dCAqc211LCB1aW50MzJfdCAqZmVhdHVyZV9tYXNrLCB1aW50MzJf dCBudW0pOwogfTsKIAogc3RydWN0IHNtdV9mdW5jcwpAQCAtMjI1LDYgKzIzNywxMCBAQCBzdHJ1 Y3Qgc211X2Z1bmNzCiAJaW50ICgqc2VuZF9zbWNfbXNnX3dpdGhfcGFyYW0pKHN0cnVjdCBzbXVf Y29udGV4dCAqc211LCB1aW50MTZfdCBtc2csIHVpbnQzMl90IHBhcmFtKTsKIAlpbnQgKCpyZWFk X3NtY19hcmcpKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCB1aW50MzJfdCAqYXJnKTsKIAlpbnQg KCppbml0X2Rpc3BsYXkpKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKKwlpbnQgKCpzZXRfYWxs b3dlZF9tYXNrKShzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSk7CisJaW50ICgqZ2V0X2VuYWJsZWRf bWFzaykoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIHVpbnQzMl90ICpmZWF0dXJlX21hc2ssIHVp bnQzMl90IG51bSk7CisJaW50ICgqZW5hYmxlX2FsbF9tYXNrKShzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSk7CisJaW50ICgqZGlzYWJsZV9hbGxfbWFzaykoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUp OwogCiB9OwogCkBAIC0yODAsNyArMjk2LDE0IEBAIHN0cnVjdCBzbXVfZnVuY3MKIAkoKHNtdSkt PnBwdF9mdW5jcy0+YWxsb2NfZHBtX2NvbnRleHQgPyAoc211KS0+cHB0X2Z1bmNzLT5hbGxvY19k cG1fY29udGV4dCgoc211KSkgOiAwKQogI2RlZmluZSBzbXVfaW5pdF9kaXNwbGF5KHNtdSkgXAog CSgoc211KS0+ZnVuY3MtPmluaXRfZGlzcGxheSA/IChzbXUpLT5mdW5jcy0+aW5pdF9kaXNwbGF5 KChzbXUpKSA6IDApCi0KKyNkZWZpbmUgc211X2ZlYXR1cmVfc2V0X2FsbG93ZWRfbWFzayhzbXUp IFwKKwkoKHNtdSktPmZ1bmNzLT5zZXRfYWxsb3dlZF9tYXNrPyAoc211KS0+ZnVuY3MtPnNldF9h bGxvd2VkX21hc2soKHNtdSkpIDogMCkKKyNkZWZpbmUgc211X2ZlYXR1cmVfZ2V0X2VuYWJsZWRf bWFzayhzbXUsIG1hc2ssIG51bSkgXAorCSgoc211KS0+ZnVuY3MtPmdldF9lbmFibGVkX21hc2s/ IChzbXUpLT5mdW5jcy0+Z2V0X2VuYWJsZWRfbWFzaygoc211KSwgKG1hc2spLCAobnVtKSkgOiAw KQorI2RlZmluZSBzbXVfZmVhdHVyZV9lbmFibGVfYWxsKHNtdSkgXAorCSgoc211KS0+ZnVuY3Mt PmVuYWJsZV9hbGxfbWFzaz8gKHNtdSktPmZ1bmNzLT5lbmFibGVfYWxsX21hc2soKHNtdSkpIDog MCkKKyNkZWZpbmUgc211X2ZlYXR1cmVfZGlzYWJsZV9hbGwoc211KSBcCisJKChzbXUpLT5mdW5j cy0+ZGlzYWJsZV9hbGxfbWFzaz8gKHNtdSktPmZ1bmNzLT5kaXNhYmxlX2FsbF9tYXNrKChzbXUp KSA6IDApCiAjZGVmaW5lIHNtdV9zdG9yZV9wb3dlcnBsYXlfdGFibGUoc211KSBcCiAJKChzbXUp LT5wcHRfZnVuY3MtPnN0b3JlX3Bvd2VycGxheV90YWJsZSA/IChzbXUpLT5wcHRfZnVuY3MtPnN0 b3JlX3Bvd2VycGxheV90YWJsZSgoc211KSkgOiAwKQogI2RlZmluZSBzbXVfY2hlY2tfcG93ZXJw bGF5X3RhYmxlKHNtdSkgXApAQCAtMjkyLDYgKzMxNSw4IEBAIHN0cnVjdCBzbXVfZnVuY3MKIAko KHNtdSktPnBwdF9mdW5jcz8gKChzbXUpLT5wcHRfZnVuY3MtPmdldF9zbXVfbXNnX2luZGV4PyAo c211KS0+cHB0X2Z1bmNzLT5nZXRfc211X21zZ19pbmRleCgoc211KSwgKG1zZykpIDogLUVJTlZB TCkgOiAtRUlOVkFMKQogI2RlZmluZSBzbXVfcnVuX2FmbGxfYnRjKHNtdSkgXAogCSgoc211KS0+ cHB0X2Z1bmNzPyAoKHNtdSktPnBwdF9mdW5jcy0+cnVuX2FmbGxfYnRjPyAoc211KS0+cHB0X2Z1 bmNzLT5ydW5fYWZsbF9idGMoKHNtdSkpIDogMCkgOiAwKQorI2RlZmluZSBzbXVfZ2V0X3VuYWxs b3dlZF9mZWF0dXJlX21hc2soc211LCBmZWF0dXJlX21hc2ssIG51bSkgXAorCSgoc211KS0+cHB0 X2Z1bmNzPyAoKHNtdSktPnBwdF9mdW5jcy0+Z2V0X3VuYWxsb3dlZF9mZWF0dXJlX21hc2s/IChz bXUpLT5wcHRfZnVuY3MtPmdldF91bmFsbG93ZWRfZmVhdHVyZV9tYXNrKChzbXUpLCAoZmVhdHVy ZV9tYXNrKSwgKG51bSkpIDogMCkgOiAwKQogCiBleHRlcm4gaW50IHNtdV9nZXRfYXRvbV9kYXRh X3RhYmxlKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCB1aW50MzJfdCB0YWJsZSwKIAkJCQkgICB1 aW50MTZfdCAqc2l6ZSwgdWludDhfdCAqZnJldiwgdWludDhfdCAqY3JldiwKQEAgLTMwMCw1ICsz MjUsNiBAQCBleHRlcm4gaW50IHNtdV9nZXRfYXRvbV9kYXRhX3RhYmxlKHN0cnVjdCBzbXVfY29u dGV4dCAqc211LCB1aW50MzJfdCB0YWJsZSwKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1 bmNzIHNtdV9pcF9mdW5jczsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tf dmVyc2lvbiBzbXVfdjExXzBfaXBfYmxvY2s7CitleHRlcm4gaW50IHNtdV9mZWF0dXJlX2luaXRf ZHBtKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCmluZGV4IGQwOTMzMDQuLmY3NmI1YWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCkBAIC02NjUsNiArNjY1LDEwMSBA QCBzdGF0aWMgaW50IHNtdV92MTFfMF9pbml0X2Rpc3BsYXkoc3RydWN0IHNtdV9jb250ZXh0ICpz bXUpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBzbXVfdjExXzBfc2V0X2FsbG93ZWRf bWFzayhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKK3sKKwlzdHJ1Y3Qgc211X2ZlYXR1cmUgKmZl YXR1cmUgPSAmc211LT5zbXVfZmVhdHVyZTsKKwlpbnQgcmV0ID0gMDsKKwl1aW50MzJfdCBmZWF0 dXJlX21hc2tbMl07CisKKwlpZiAoYml0bWFwX2VtcHR5KGZlYXR1cmUtPmFsbG93ZWQsIFNNVV9G RUFUVVJFX01BWCkgfHwgZmVhdHVyZS0+ZmVhdHVyZV9udW0gPCA2NCkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwliaXRtYXBfY29weSgodW5zaWduZWQgbG9uZyAqKWZlYXR1cmVfbWFzaywgZmVhdHVy ZS0+YWxsb3dlZCwgNjQpOworCisJcmV0ID0gc211X3NlbmRfc21jX21zZ193aXRoX3BhcmFtKHNt dSwgU01VX01TR19TZXRBbGxvd2VkRmVhdHVyZXNNYXNrSGlnaCwKKwkJCQkJICBmZWF0dXJlX21h c2tbMV0pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzbXVfc2VuZF9zbWNf bXNnX3dpdGhfcGFyYW0oc211LCBTTVVfTVNHX1NldEFsbG93ZWRGZWF0dXJlc01hc2tMb3csCisJ CQkJCSAgZmVhdHVyZV9tYXNrWzBdKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBzbXVfdjExXzBfZ2V0X2VuYWJsZWRfbWFzayhzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSwKKwkJCQkgICAgICB1aW50MzJfdCAqZmVhdHVyZV9tYXNrLCB1 aW50MzJfdCBudW0pCit7CisJdWludDMyX3QgZmVhdHVyZV9tYXNrX2hpZ2ggPSAwLCBmZWF0dXJl X21hc2tfbG93ID0gMDsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghZmVhdHVyZV9tYXNrIHx8IG51 bSA8IDIpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gc211X3NlbmRfc21jX21zZyhzbXUs IFNNVV9NU0dfR2V0RW5hYmxlZFNtdUZlYXR1cmVzSGlnaCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKwlyZXQgPSBzbXVfcmVhZF9zbWNfYXJnKHNtdSwgJmZlYXR1cmVfbWFza19oaWdoKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gc211X3NlbmRfc21jX21zZyhzbXUs IFNNVV9NU0dfR2V0RW5hYmxlZFNtdUZlYXR1cmVzTG93KTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCXJldCA9IHNtdV9yZWFkX3NtY19hcmcoc211LCAmZmVhdHVyZV9tYXNrX2xvdyk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWZlYXR1cmVfbWFza1swXSA9IGZlYXR1cmVfbWFz a19sb3c7CisJZmVhdHVyZV9tYXNrWzFdID0gZmVhdHVyZV9tYXNrX2hpZ2g7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgaW50IHNtdV92MTFfMF9lbmFibGVfYWxsX21hc2soc3RydWN0IHNt dV9jb250ZXh0ICpzbXUpCit7CisJc3RydWN0IHNtdV9mZWF0dXJlICpmZWF0dXJlID0gJnNtdS0+ c211X2ZlYXR1cmU7CisJdWludDMyX3QgZmVhdHVyZV9tYXNrWzJdOworCWludCByZXQgPSAwOwor CisJcmV0ID0gc211X3NlbmRfc21jX21zZyhzbXUsIFNNVV9NU0dfRW5hYmxlQWxsU211RmVhdHVy ZXMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisJcmV0ID0gc211X2ZlYXR1cmVfZ2V0X2Vu YWJsZWRfbWFzayhzbXUsIGZlYXR1cmVfbWFzaywgMik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCWJpdG1hcF9jb3B5KGZlYXR1cmUtPmVuYWJsZWQsICh1bnNpZ25lZCBsb25nICopJmZl YXR1cmVfbWFzaywKKwkJICAgIGZlYXR1cmUtPmZlYXR1cmVfbnVtKTsKKwliaXRtYXBfY29weShm ZWF0dXJlLT5zdXBwb3J0ZWQsICh1bnNpZ25lZCBsb25nICopJmZlYXR1cmVfbWFzaywKKwkJICAg IGZlYXR1cmUtPmZlYXR1cmVfbnVtKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg c211X3YxMV8wX2Rpc2FibGVfYWxsX21hc2soc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCit7CisJ c3RydWN0IHNtdV9mZWF0dXJlICpmZWF0dXJlID0gJnNtdS0+c211X2ZlYXR1cmU7CisJdWludDMy X3QgZmVhdHVyZV9tYXNrWzJdOworCWludCByZXQgPSAwOworCisJcmV0ID0gc211X3NlbmRfc21j X21zZyhzbXUsIFNNVV9NU0dfRGlzYWJsZUFsbFNtdUZlYXR1cmVzKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCXJldCA9IHNtdV9mZWF0dXJlX2dldF9lbmFibGVkX21hc2soc211LCBmZWF0 dXJlX21hc2ssIDIpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwliaXRtYXBfY29weShm ZWF0dXJlLT5lbmFibGVkLCAodW5zaWduZWQgbG9uZyAqKSZmZWF0dXJlX21hc2ssCisJCSAgICBm ZWF0dXJlLT5mZWF0dXJlX251bSk7CisJYml0bWFwX2NvcHkoZmVhdHVyZS0+c3VwcG9ydGVkLCAo dW5zaWduZWQgbG9uZyAqKSZmZWF0dXJlX21hc2ssCisJCSAgICBmZWF0dXJlLT5mZWF0dXJlX251 bSk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNtdV9mdW5jcyBz bXVfdjExXzBfZnVuY3MgPSB7CiAJLmluaXRfbWljcm9jb2RlID0gc211X3YxMV8wX2luaXRfbWlj cm9jb2RlLAogCS5sb2FkX21pY3JvY29kZSA9IHNtdV92MTFfMF9sb2FkX21pY3JvY29kZSwKQEAg LTY4OCw2ICs3ODMsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbXVfZnVuY3Mgc211X3YxMV8w X2Z1bmNzID0gewogCS5zZXRfbWluX2RjZWZfZGVlcF9zbGVlcCA9IHNtdV92MTFfMF9zZXRfbWlu X2RjZWZfZGVlcF9zbGVlcCwKIAkuc2V0X3Rvb2xfdGFibGVfbG9jYXRpb24gPSBzbXVfdjExXzBf c2V0X3Rvb2xfdGFibGVfbG9jYXRpb24sCiAJLmluaXRfZGlzcGxheSA9IHNtdV92MTFfMF9pbml0 X2Rpc3BsYXksCisJLnNldF9hbGxvd2VkX21hc2sgPSBzbXVfdjExXzBfc2V0X2FsbG93ZWRfbWFz aywKKwkuZ2V0X2VuYWJsZWRfbWFzayA9IHNtdV92MTFfMF9nZXRfZW5hYmxlZF9tYXNrLAorCS5l bmFibGVfYWxsX21hc2sgPSBzbXVfdjExXzBfZW5hYmxlX2FsbF9tYXNrLAorCS5kaXNhYmxlX2Fs bF9tYXNrID0gc211X3YxMV8wX2Rpc2FibGVfYWxsX21hc2ssCiB9OwogCiB2b2lkIHNtdV92MTFf MF9zZXRfc211X2Z1bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvdmVnYTIwX3BwdC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvdmVnYTIwX3BwdC5jCmluZGV4IDU3ZDVmMGIuLjRiNzU2ZTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3ZlZ2EyMF9wcHQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0LmMKQEAgLTI3OCw2ICsyNzgs MTkgQEAgc3RhdGljIGludCB2ZWdhMjBfcnVuX2J0Y19hZmxsKHN0cnVjdCBzbXVfY29udGV4dCAq c211KQogCXJldHVybiBzbXVfc2VuZF9zbWNfbXNnKHNtdSwgU01VX01TR19SdW5BZmxsQnRjKTsK IH0KIAorc3RhdGljIGludAordmVnYTIwX2dldF91bmFsbG93ZWRfZmVhdHVyZV9tYXNrKHN0cnVj dCBzbXVfY29udGV4dCAqc211LAorCQkJCSAgdWludDMyX3QgKmZlYXR1cmVfbWFzaywgdWludDMy X3QgbnVtKQoreworCWlmIChudW0gPiAyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWZlYXR1cmVf bWFza1swXSA9IDB4RTAwNDFDMDA7CisJZmVhdHVyZV9tYXNrWzFdID0gMHhGRkZGRkZGRTsgLyog Yml0MzJ+Yml0NjMgaXMgVW5zdXBwb3J0ZWQgKi8KKworCXJldHVybiAwOworfQorCiBzdGF0aWMg Y29uc3Qgc3RydWN0IHBwdGFibGVfZnVuY3MgdmVnYTIwX3BwdF9mdW5jcyA9IHsKIAkuYWxsb2Nf ZHBtX2NvbnRleHQgPSB2ZWdhMjBfYWxsb2NhdGVfZHBtX2NvbnRleHQsCiAJLnN0b3JlX3Bvd2Vy cGxheV90YWJsZSA9IHZlZ2EyMF9zdG9yZV9wb3dlcnBsYXlfdGFibGUsCkBAIC0yODUsNiArMjk4 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwcHRhYmxlX2Z1bmNzIHZlZ2EyMF9wcHRfZnVuY3Mg PSB7CiAJLmFwcGVuZF9wb3dlcnBsYXlfdGFibGUgPSB2ZWdhMjBfYXBwZW5kX3Bvd2VycGxheV90 YWJsZSwKIAkuZ2V0X3NtdV9tc2dfaW5kZXggPSB2ZWdhMjBfZ2V0X3NtdV9tc2dfaW5kZXgsCiAJ LnJ1bl9hZmxsX2J0YyA9IHZlZ2EyMF9ydW5fYnRjX2FmbGwsCisJLmdldF91bmFsbG93ZWRfZmVh dHVyZV9tYXNrID0gdmVnYTIwX2dldF91bmFsbG93ZWRfZmVhdHVyZV9tYXNrLAogfTsKIAogdm9p ZCB2ZWdhMjBfc2V0X3BwdF9mdW5jcyhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKLS0gCjIuNy40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4 IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK