From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 066/138] drm/amd/powerplay: set defalut dpm table for smu Date: Fri, 25 Jan 2019 18:24:33 +0800 Message-ID: <1548411945-12396-67-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 RnJvbTogTGlrdW4gR2FvIDxMaWt1bi5HYW9AYW1kLmNvbT4KCkFkZCBzbXVfc2V0X2RlZmF1bHRf ZHBtX3RhYmxlIGZ1bmN0aW9uIHRvIHNldCBkcG0gdGFibGUgZm9yIHNtdTExLgpNb2RpZmllZCB0 aGUgc2VxdWVuY2UgdG8gcG9wdWxhdGUgc21jIHBwdGFibGUsIGFzIGl0IHNob3VsZCBiZSBkb25l IGFmdGVyCnJlbGF0ZWQgZHBtIGZlYXR1cmUgaXMgZW5hYmxlZC4KClNpZ25lZC1vZmYtYnk6IExp a3VuIEdhbyA8TGlrdW4uR2FvQGFtZC5jb20+ClJldmlld2VkLWJ5OiBIdWFuZyBSdWkgPHJheS5o dWFuZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9z bXUuYyAgICAgfCAgMTggKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRn cHVfc211LmggfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8w LmMgICAgICB8ICAzOCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBf cHB0LmMgICAgIHwgMjM2ICsrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdl ZCwgMjUxIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYwppbmRleCA0N2I0NjExLi5lMDMxMzJjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRncHVfc211LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jCkBAIC0zNDgsMTUgKzM0OCw2 IEBAIHN0YXRpYyBpbnQgc211X3NtY190YWJsZV9od19pbml0KHN0cnVjdCBzbXVfY29udGV4dCAq c211KQogCQlyZXR1cm4gcmV0OwogCiAJLyoKLQkgKiBTZXQgaW5pdGlhbGl6ZWQgdmFsdWVzIChn ZXQgZnJvbSB2YmlvcykgdG8gZHBtIHRhYmxlcyBjb250ZXh0IHN1Y2ggYXMKLQkgKiBnZnhjbGss IG1lbWNsaywgZGNlZmNsaywgYW5kIGV0Yy4gQW5kIGVuYWJsZSB0aGUgRFBNIGZlYXR1cmUgZm9y IGVhY2gKLQkgKiB0eXBlIG9mIGNsa3MuCi0JICovCi0JcmV0ID0gc211X3BvcHVsYXRlX3NtY19w cHRhYmxlKHNtdSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCS8qCiAJICogU2VuZCBt c2cgR2V0RHJpdmVySWZWZXJzaW9uIHRvIGNoZWNrIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgZXF1 YWwKIAkgKiB3aXRoIERSSVZFUl9JRl9WRVJTSU9OIG9mIHNtYyBoZWFkZXIuCiAJICovCkBAIC0z OTQsNiArMzg1LDE1IEBAIHN0YXRpYyBpbnQgc211X3NtY190YWJsZV9od19pbml0KHN0cnVjdCBz bXVfY29udGV4dCAqc211KQogCQlyZXR1cm4gcmV0OwogCiAJLyoKKwkgKiBTZXQgaW5pdGlhbGl6 ZWQgdmFsdWVzIChnZXQgZnJvbSB2YmlvcykgdG8gZHBtIHRhYmxlcyBjb250ZXh0IHN1Y2ggYXMK KwkgKiBnZnhjbGssIG1lbWNsaywgZGNlZmNsaywgYW5kIGV0Yy4gQW5kIGVuYWJsZSB0aGUgRFBN IGZlYXR1cmUgZm9yIGVhY2gKKwkgKiB0eXBlIG9mIGNsa3MuCisJICovCisJcmV0ID0gc211X3Bv cHVsYXRlX3NtY19wcHRhYmxlKHNtdSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8q CiAJICogU2V0IFBNU1RBVFVTTE9HIHRhYmxlIGJvIGFkZHJlc3Mgd2l0aCBTZXRUb29sc0RyYW1B ZGRyIE1TRyBmb3IgdG9vbHMuCiAJICovCiAJcmV0ID0gc211X3NldF90b29sX3RhYmxlX2xvY2F0 aW9uKHNtdSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMv YW1kZ3B1X3NtdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2FtZGdwdV9z bXUuaAppbmRleCAxNTRmNzRlLi4yNGJhYmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9pbmMvYW1kZ3B1X3NtdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2luYy9hbWRncHVfc211LmgKQEAgLTIwOCw2ICsyMDgsNyBAQCBzdHJ1Y3QgcHB0 YWJsZV9mdW5jcyB7CiAJaW50ICgqZ2V0X3NtdV9tc2dfaW5kZXgpKHN0cnVjdCBzbXVfY29udGV4 dCAqc211LCB1aW50MzJfdCBpbmRleCk7CiAJaW50ICgqcnVuX2FmbGxfYnRjKShzdHJ1Y3Qgc211 X2NvbnRleHQgKnNtdSk7CiAJaW50ICgqZ2V0X3VuYWxsb3dlZF9mZWF0dXJlX21hc2spKHN0cnVj dCBzbXVfY29udGV4dCAqc211LCB1aW50MzJfdCAqZmVhdHVyZV9tYXNrLCB1aW50MzJfdCBudW0p OworCWludCAoKnNldF9kZWZhdWx0X2RwbV90YWJsZSkoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUp OwogfTsKIAogc3RydWN0IHNtdV9mdW5jcwpAQCAtMzEzLDYgKzMxNCw4IEBAIHN0cnVjdCBzbXVf ZnVuY3MKIAkoKHNtdSktPnBwdF9mdW5jcy0+Y2hlY2tfcG93ZXJwbGF5X3RhYmxlID8gKHNtdSkt PnBwdF9mdW5jcy0+Y2hlY2tfcG93ZXJwbGF5X3RhYmxlKChzbXUpKSA6IDApCiAjZGVmaW5lIHNt dV9hcHBlbmRfcG93ZXJwbGF5X3RhYmxlKHNtdSkgXAogCSgoc211KS0+cHB0X2Z1bmNzLT5hcHBl bmRfcG93ZXJwbGF5X3RhYmxlID8gKHNtdSktPnBwdF9mdW5jcy0+YXBwZW5kX3Bvd2VycGxheV90 YWJsZSgoc211KSkgOiAwKQorI2RlZmluZSBzbXVfc2V0X2RlZmF1bHRfZHBtX3RhYmxlKHNtdSkg XAorCSgoc211KS0+cHB0X2Z1bmNzLT5zZXRfZGVmYXVsdF9kcG1fdGFibGUgPyAoc211KS0+cHB0 X2Z1bmNzLT5zZXRfZGVmYXVsdF9kcG1fdGFibGUoKHNtdSkpIDogMCkKIAogI2RlZmluZSBzbXVf bXNnX2dldF9pbmRleChzbXUsIG1zZykgXAogCSgoc211KS0+cHB0X2Z1bmNzPyAoKHNtdSktPnBw dF9mdW5jcy0+Z2V0X3NtdV9tc2dfaW5kZXg/IChzbXUpLT5wcHRfZnVuY3MtPmdldF9zbXVfbXNn X2luZGV4KChzbXUpLCAobXNnKSkgOiAtRUlOVkFMKSA6IC1FSU5WQUwpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVfdjExXzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCmluZGV4IGJmZGE0YTMuLjY2YWYzZTYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCkBAIC01MjUsNDMgKzUyNSwx MSBAQCBzdGF0aWMgaW50IHNtdV92MTFfMF9wYXJzZV9wcHRhYmxlKHN0cnVjdCBzbXVfY29udGV4 dCAqc211KQogCiBzdGF0aWMgaW50IHNtdV92MTFfMF9wb3B1bGF0ZV9zbWNfcHB0YWJsZShzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSkKIHsKLQlzdHJ1Y3Qgc211X2RwbV9jb250ZXh0ICpzbXVfZHBt ID0gJnNtdS0+c211X2RwbTsKLQotCVBQVGFibGVfdCAqZHJpdmVyX3BwdCA9IChQUFRhYmxlX3Qg KikmKHNtdS0+c211X3RhYmxlLnRhYmxlc1tUQUJMRV9QUFRBQkxFXSk7Ci0Jc3RydWN0IHNtdV8x MV8wX2RwbV9jb250ZXh0ICpkcG1fY29udGV4dCA9IChzdHJ1Y3Qgc211XzExXzBfZHBtX2NvbnRl eHQgKilzbXVfZHBtLT5kcG1fY29udGV4dDsKLQotCWlmIChkcG1fY29udGV4dCAmJiBkcml2ZXJf cHB0KSB7Ci0JCWRwbV9jb250ZXh0LT5kcG1fdGFibGVzLnNvY190YWJsZS5taW4gPSBkcml2ZXJf cHB0LT5GcmVxVGFibGVTb2NjbGtbMF07Ci0JCWRwbV9jb250ZXh0LT5kcG1fdGFibGVzLnNvY190 YWJsZS5tYXggPSBkcml2ZXJfcHB0LT5GcmVxVGFibGVTb2NjbGtbTlVNX1NPQ0NMS19EUE1fTEVW RUxTIC0gMV07Ci0KLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMuZ2Z4X3RhYmxlLm1pbiA9IGRy aXZlcl9wcHQtPkZyZXFUYWJsZUdmeFswXTsKLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMuZ2Z4 X3RhYmxlLm1heCA9IGRyaXZlcl9wcHQtPkZyZXFUYWJsZUdmeFtOVU1fR0ZYQ0xLX0RQTV9MRVZF TFMgLSAxXTsKLQotCQlkcG1fY29udGV4dC0+ZHBtX3RhYmxlcy51Y2xrX3RhYmxlLm1pbiA9IGRy aXZlcl9wcHQtPkZyZXFUYWJsZVVjbGtbMF07Ci0JCWRwbV9jb250ZXh0LT5kcG1fdGFibGVzLnVj bGtfdGFibGUubWF4ID0gZHJpdmVyX3BwdC0+RnJlcVRhYmxlVWNsa1tOVU1fVUNMS19EUE1fTEVW RUxTIC0gMV07Ci0KLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMudmNsa190YWJsZS5taW4gPSBk cml2ZXJfcHB0LT5GcmVxVGFibGVWY2xrWzBdOwotCQlkcG1fY29udGV4dC0+ZHBtX3RhYmxlcy52 Y2xrX3RhYmxlLm1heCA9IGRyaXZlcl9wcHQtPkZyZXFUYWJsZVZjbGtbTlVNX1ZDTEtfRFBNX0xF VkVMUyAtIDFdOwotCi0JCWRwbV9jb250ZXh0LT5kcG1fdGFibGVzLmRjbGtfdGFibGUubWluID0g ZHJpdmVyX3BwdC0+RnJlcVRhYmxlRGNsa1swXTsKLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMu ZGNsa190YWJsZS5tYXggPSBkcml2ZXJfcHB0LT5GcmVxVGFibGVEY2xrW05VTV9EQ0xLX0RQTV9M RVZFTFMgLSAxXTsKLQotCQlkcG1fY29udGV4dC0+ZHBtX3RhYmxlcy5kY2VmX3RhYmxlLm1pbiA9 IGRyaXZlcl9wcHQtPkZyZXFUYWJsZURjZWZjbGtbMF07Ci0JCWRwbV9jb250ZXh0LT5kcG1fdGFi bGVzLmRjZWZfdGFibGUubWF4ID0gZHJpdmVyX3BwdC0+RnJlcVRhYmxlRGNlZmNsa1tOVU1fRENF RkNMS19EUE1fTEVWRUxTIC0gMV07Ci0KLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMucGl4ZWxf dGFibGUubWluID0gZHJpdmVyX3BwdC0+RnJlcVRhYmxlUGl4Y2xrWzBdOwotCQlkcG1fY29udGV4 dC0+ZHBtX3RhYmxlcy5waXhlbF90YWJsZS5tYXggPSBkcml2ZXJfcHB0LT5GcmVxVGFibGVQaXhj bGtbTlVNX1BJWENMS19EUE1fTEVWRUxTIC0gMV07Ci0KLQkJZHBtX2NvbnRleHQtPmRwbV90YWJs ZXMuZGlzcGxheV90YWJsZS5taW4gPSBkcml2ZXJfcHB0LT5GcmVxVGFibGVEaXNwY2xrWzBdOwot CQlkcG1fY29udGV4dC0+ZHBtX3RhYmxlcy5kaXNwbGF5X3RhYmxlLm1heCA9IGRyaXZlcl9wcHQt PkZyZXFUYWJsZURpc3BjbGtbTlVNX0RJU1BDTEtfRFBNX0xFVkVMUyAtIDFdOworCWludCByZXQ7 CiAKLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMucGh5X3RhYmxlLm1pbiA9IGRyaXZlcl9wcHQt PkZyZXFUYWJsZVBoeWNsa1swXTsKLQkJZHBtX2NvbnRleHQtPmRwbV90YWJsZXMucGh5X3RhYmxl Lm1heCA9IGRyaXZlcl9wcHQtPkZyZXFUYWJsZVBoeWNsa1tOVU1fUEhZQ0xLX0RQTV9MRVZFTFMg LSAxXTsKKwlyZXQgPSBzbXVfc2V0X2RlZmF1bHRfZHBtX3RhYmxlKHNtdSk7CiAKLQkJcmV0dXJu IDA7Ci0JfQotCi0JcmV0dXJuIC1FSU5WQUw7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlu dCBzbXVfdjExXzBfY29weV90YWJsZV90b19zbWMoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0LmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0LmMKaW5kZXggNGI3NTZlOC4u YmNhNDA4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvdmVnYTIw X3BwdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3ZlZ2EyMF9wcHQuYwpA QCAtMjkxLDYgKzI5MSwyNDEgQEAgdmVnYTIwX2dldF91bmFsbG93ZWRfZmVhdHVyZV9tYXNrKHN0 cnVjdCBzbXVfY29udGV4dCAqc211LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50Cit2ZWdh MjBfc2V0X3NpbmdsZV9kcG1fdGFibGUoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsCisJCQkgICAg c3RydWN0IHZlZ2EyMF9zaW5nbGVfZHBtX3RhYmxlICpzaW5nbGVfZHBtX3RhYmxlLAorCQkJICAg IFBQQ0xLX2UgY2xrX2lkKQoreworCWludCByZXQgPSAwOworCXVpbnQzMl90IGksIG51bV9vZl9s ZXZlbHMsIGNsazsKKworCXJldCA9IHNtdV9zZW5kX3NtY19tc2dfd2l0aF9wYXJhbShzbXUsCisJ CQlTTVVfTVNHX0dldERwbUZyZXFCeUluZGV4LAorCQkJKGNsa19pZCA8PCAxNiB8IDB4RkYpKTsK KwlpZiAocmV0KSB7CisJCXByX2VycigiW0dldE51bU9mRHBtTGV2ZWxdIGZhaWxlZCB0byBnZXQg ZHBtIGxldmVscyEiKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzbXVfcmVhZF9zbWNfYXJnKHNt dSwgJm51bV9vZl9sZXZlbHMpOworCWlmICghbnVtX29mX2xldmVscykgeworCQlwcl9lcnIoIltH ZXROdW1PZkRwbUxldmVsXSBudW1iZXIgb2YgY2xrIGxldmVscyBpcyBpbnZhbGlkISIpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9IG51bV9vZl9s ZXZlbHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX29mX2xldmVsczsgaSsrKSB7CisJCXJldCA9 IHNtdV9zZW5kX3NtY19tc2dfd2l0aF9wYXJhbShzbXUsCisJCQkJU01VX01TR19HZXREcG1GcmVx QnlJbmRleCwKKwkJCQkoY2xrX2lkIDw8IDE2IHwgaSkpOworCQlpZiAocmV0KSB7CisJCQlwcl9l cnIoIltHZXREcG1GcmVxQnlJbmRleF0gZmFpbGVkIHRvIGdldCBkcG0gZnJlcSBieSBpbmRleCEi KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJc211X3JlYWRfc21jX2FyZyhzbXUsICZjbGspOwor CQlpZiAoIWNsaykgeworCQkJcHJfZXJyKCJbR2V0RHBtRnJlcUJ5SW5kZXhdIGNsayB2YWx1ZSBp cyBpbnZhbGlkISIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJc2luZ2xlX2RwbV90YWJs ZS0+ZHBtX2xldmVsc1tpXS52YWx1ZSA9IGNsazsKKwkJc2luZ2xlX2RwbV90YWJsZS0+ZHBtX2xl dmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHZlZ2EyMF9pbml0X3NpbmdsZV9kcG1fc3RhdGUoc3RydWN0IHZlZ2EyMF9kcG1fc3RhdGUgKmRw bV9zdGF0ZSkKK3sKKwlkcG1fc3RhdGUtPnNvZnRfbWluX2xldmVsID0gMHgwOworCWRwbV9zdGF0 ZS0+c29mdF9tYXhfbGV2ZWwgPSAweGZmZmY7CisgICAgICAgIGRwbV9zdGF0ZS0+aGFyZF9taW5f bGV2ZWwgPSAweDA7CisgICAgICAgIGRwbV9zdGF0ZS0+aGFyZF9tYXhfbGV2ZWwgPSAweGZmZmY7 Cit9CisKK3N0YXRpYyBpbnQgdmVnYTIwX3NldF9kZWZhdWx0X2RwbV90YWJsZShzdHJ1Y3Qgc211 X2NvbnRleHQgKnNtdSkKK3sKKwlpbnQgcmV0OworCisJc3RydWN0IHNtdV9kcG1fY29udGV4dCAq c211X2RwbSA9ICZzbXUtPnNtdV9kcG07CisJc3RydWN0IHZlZ2EyMF9kcG1fdGFibGUgKmRwbV90 YWJsZSA9IE5VTEw7CisJc3RydWN0IHZlZ2EyMF9zaW5nbGVfZHBtX3RhYmxlICpzaW5nbGVfZHBt X3RhYmxlOworCisJZHBtX3RhYmxlID0gc211X2RwbS0+ZHBtX2NvbnRleHQ7CisKKwkvKiBzb2Nj bGsgKi8KKwlzaW5nbGVfZHBtX3RhYmxlID0gJihkcG1fdGFibGUtPnNvY190YWJsZSk7CisKKwlp ZiAoc211X2ZlYXR1cmVfaXNfZW5hYmxlZChzbXUsIEZFQVRVUkVfRFBNX1NPQ0NMS19CSVQpKSB7 CisJCXJldCA9IHZlZ2EyMF9zZXRfc2luZ2xlX2RwbV90YWJsZShzbXUsIHNpbmdsZV9kcG1fdGFi bGUsCisJCQkJCQkgIFBQQ0xLX1NPQ0NMSyk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiW1Nl dHVwRGVmYXVsdERwbVRhYmxlXSBmYWlsZWQgdG8gZ2V0IHNvY2NsayBkcG0gbGV2ZWxzISIpOwor CQkJcmV0dXJuIHJldDsKKwkJfQorCX0gZWxzZSB7CisJCXNpbmdsZV9kcG1fdGFibGUtPmNvdW50 ID0gMTsKKwkJc2luZ2xlX2RwbV90YWJsZS0+ZHBtX2xldmVsc1swXS52YWx1ZSA9IHNtdS0+c211 X3RhYmxlLmJvb3RfdmFsdWVzLnNvY2NsayAvIDEwMDsKKwl9CisJdmVnYTIwX2luaXRfc2luZ2xl X2RwbV9zdGF0ZSgmKHNpbmdsZV9kcG1fdGFibGUtPmRwbV9zdGF0ZSkpOworCisJLyogZ2Z4Y2xr ICovCisJc2luZ2xlX2RwbV90YWJsZSA9ICYoZHBtX3RhYmxlLT5nZnhfdGFibGUpOworCisJaWYg KHNtdV9mZWF0dXJlX2lzX2VuYWJsZWQoc211LCBGRUFUVVJFX0RQTV9HRlhDTEtfQklUKSkgewor CQlyZXQgPSB2ZWdhMjBfc2V0X3NpbmdsZV9kcG1fdGFibGUoc211LCBzaW5nbGVfZHBtX3RhYmxl LAorCQkJCQkJICBQUENMS19HRlhDTEspOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIltTZXR1 cERlZmF1bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCBnZnhjbGsgZHBtIGxldmVscyEiKTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwl9IGVsc2UgeworCQlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9 IDE7CisJCXNpbmdsZV9kcG1fdGFibGUtPmRwbV9sZXZlbHNbMF0udmFsdWUgPSBzbXUtPnNtdV90 YWJsZS5ib290X3ZhbHVlcy5nZnhjbGsgLyAxMDA7CisJfQorCXZlZ2EyMF9pbml0X3NpbmdsZV9k cG1fc3RhdGUoJihzaW5nbGVfZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKKworCS8qIG1lbWNsayAq LworCXNpbmdsZV9kcG1fdGFibGUgPSAmKGRwbV90YWJsZS0+bWVtX3RhYmxlKTsKKworCWlmIChz bXVfZmVhdHVyZV9pc19lbmFibGVkKHNtdSwgRkVBVFVSRV9EUE1fVUNMS19CSVQpKSB7CisJCXJl dCA9IHZlZ2EyMF9zZXRfc2luZ2xlX2RwbV90YWJsZShzbXUsIHNpbmdsZV9kcG1fdGFibGUsCisJ CQkJCQkgIFBQQ0xLX1VDTEspOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIltTZXR1cERlZmF1 bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCBtZW1jbGsgZHBtIGxldmVscyEiKTsKKwkJCXJldHVy biByZXQ7CisJCX0KKwl9IGVsc2UgeworCQlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9IDE7CisJ CXNpbmdsZV9kcG1fdGFibGUtPmRwbV9sZXZlbHNbMF0udmFsdWUgPSBzbXUtPnNtdV90YWJsZS5i b290X3ZhbHVlcy51Y2xrIC8gMTAwOworCX0KKwl2ZWdhMjBfaW5pdF9zaW5nbGVfZHBtX3N0YXRl KCYoc2luZ2xlX2RwbV90YWJsZS0+ZHBtX3N0YXRlKSk7CisKKyNpZiAwCisJLyogZWNsayAqLwor CXNpbmdsZV9kcG1fdGFibGUgPSAmKGRwbV90YWJsZS0+ZWNsa190YWJsZSk7CisKKwlpZiAoZmVh dHVyZS0+ZmVhX2VuYWJsZWRbRkVBVFVSRV9EUE1fVkNFX0JJVF0pIHsKKwkJcmV0ID0gdmVnYTIw X3NldF9zaW5nbGVfZHBtX3RhYmxlKHNtdSwgc2luZ2xlX2RwbV90YWJsZSwgUFBDTEtfRUNMSyk7 CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiW1NldHVwRGVmYXVsdERwbVRhYmxlXSBmYWlsZWQg dG8gZ2V0IGVjbGsgZHBtIGxldmVscyEiKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9IGVsc2Ug eworCQlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9IDE7CisJCXNpbmdsZV9kcG1fdGFibGUtPmRw bV9sZXZlbHNbMF0udmFsdWUgPSBzbXUtPnNtdV90YWJsZS5ib290X3ZhbHVlcy5lY2xvY2sgLyAx MDA7CisJfQorCXZlZ2EyMF9pbml0X3NpbmdsZV9kcG1fc3RhdGUoJihzaW5nbGVfZHBtX3RhYmxl LT5kcG1fc3RhdGUpKTsKKworCS8qIHZjbGsgKi8KKwlzaW5nbGVfZHBtX3RhYmxlID0gJihkcG1f dGFibGUtPnZjbGtfdGFibGUpOworCisJaWYgKGZlYXR1cmUtPmZlYV9lbmFibGVkW0ZFQVRVUkVf RFBNX1VWRF9CSVRdKSB7CisJCXJldCA9IHZlZ2EyMF9zZXRfc2luZ2xlX2RwbV90YWJsZShzbXUs IHNpbmdsZV9kcG1fdGFibGUsIFBQQ0xLX1ZDTEspOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIo IltTZXR1cERlZmF1bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCB2Y2xrIGRwbSBsZXZlbHMhIik7 CisJCQlyZXR1cm4gcmV0OworCQl9CisJfSBlbHNlIHsKKwkJc2luZ2xlX2RwbV90YWJsZS0+Y291 bnQgPSAxOworCQlzaW5nbGVfZHBtX3RhYmxlLT5kcG1fbGV2ZWxzWzBdLnZhbHVlID0gc211LT5z bXVfdGFibGUuYm9vdF92YWx1ZXMudmNsb2NrIC8gMTAwOworCX0KKwl2ZWdhMjBfaW5pdF9zaW5n bGVfZHBtX3N0YXRlKCYoc2luZ2xlX2RwbV90YWJsZS0+ZHBtX3N0YXRlKSk7CisKKwkvKiBkY2xr ICovCisJc2luZ2xlX2RwbV90YWJsZSA9ICYoZHBtX3RhYmxlLT5kY2xrX3RhYmxlKTsKKworCWlm IChmZWF0dXJlLT5mZWFfZW5hYmxlZFtGRUFUVVJFX0RQTV9VVkRfQklUXSkgeworCQlyZXQgPSB2 ZWdhMjBfc2V0X3NpbmdsZV9kcG1fdGFibGUoc211LCBzaW5nbGVfZHBtX3RhYmxlLCBQUENMS19E Q0xLKTsKKwkJaWYgKHJldCkgeworCQkJcHJfZXJyKCJbU2V0dXBEZWZhdWx0RHBtVGFibGVdIGZh aWxlZCB0byBnZXQgZGNsayBkcG0gbGV2ZWxzISIpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0g ZWxzZSB7CisJCXNpbmdsZV9kcG1fdGFibGUtPmNvdW50ID0gMTsKKwkJc2luZ2xlX2RwbV90YWJs ZS0+ZHBtX2xldmVsc1swXS52YWx1ZSA9IHNtdS0+c211X3RhYmxlLmJvb3RfdmFsdWVzLmRjbG9j ayAvIDEwMDsKKwl9CisJdmVnYTIwX2luaXRfc2luZ2xlX2RwbV9zdGF0ZSgmKHNpbmdsZV9kcG1f dGFibGUtPmRwbV9zdGF0ZSkpOworI2VuZGlmCisKKwkvKiBkY2VmY2xrICovCisJc2luZ2xlX2Rw bV90YWJsZSA9ICYoZHBtX3RhYmxlLT5kY2VmX3RhYmxlKTsKKworCWlmIChzbXVfZmVhdHVyZV9p c19lbmFibGVkKHNtdSwgRkVBVFVSRV9EUE1fRENFRkNMS19CSVQpKSB7CisJCXJldCA9IHZlZ2Ey MF9zZXRfc2luZ2xlX2RwbV90YWJsZShzbXUsIHNpbmdsZV9kcG1fdGFibGUsCisJCQkJCQkgIFBQ Q0xLX0RDRUZDTEspOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIltTZXR1cERlZmF1bHREcG1U YWJsZV0gZmFpbGVkIHRvIGdldCBkY2VmY2xrIGRwbSBsZXZlbHMhIik7CisJCQlyZXR1cm4gcmV0 OworCQl9CisJfSBlbHNlIHsKKwkJc2luZ2xlX2RwbV90YWJsZS0+Y291bnQgPSAxOworCQlzaW5n bGVfZHBtX3RhYmxlLT5kcG1fbGV2ZWxzWzBdLnZhbHVlID0gc211LT5zbXVfdGFibGUuYm9vdF92 YWx1ZXMuZGNlZmNsayAvIDEwMDsKKwl9CisJdmVnYTIwX2luaXRfc2luZ2xlX2RwbV9zdGF0ZSgm KHNpbmdsZV9kcG1fdGFibGUtPmRwbV9zdGF0ZSkpOworCisJLyogcGl4Y2xrICovCisJc2luZ2xl X2RwbV90YWJsZSA9ICYoZHBtX3RhYmxlLT5waXhlbF90YWJsZSk7CisKKwlpZiAoc211X2ZlYXR1 cmVfaXNfZW5hYmxlZChzbXUsIEZFQVRVUkVfRFBNX0RDRUZDTEtfQklUKSkgeworCQlyZXQgPSB2 ZWdhMjBfc2V0X3NpbmdsZV9kcG1fdGFibGUoc211LCBzaW5nbGVfZHBtX3RhYmxlLAorCQkJCQkJ ICBQUENMS19QSVhDTEspOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIltTZXR1cERlZmF1bHRE cG1UYWJsZV0gZmFpbGVkIHRvIGdldCBwaXhjbGsgZHBtIGxldmVscyEiKTsKKwkJCXJldHVybiBy ZXQ7CisJCX0KKwl9IGVsc2UgeworCQlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9IDA7CisJfQor CXZlZ2EyMF9pbml0X3NpbmdsZV9kcG1fc3RhdGUoJihzaW5nbGVfZHBtX3RhYmxlLT5kcG1fc3Rh dGUpKTsKKworCS8qIGRpc3BjbGsgKi8KKwlzaW5nbGVfZHBtX3RhYmxlID0gJihkcG1fdGFibGUt PmRpc3BsYXlfdGFibGUpOworCisJaWYgKHNtdV9mZWF0dXJlX2lzX2VuYWJsZWQoc211LCBGRUFU VVJFX0RQTV9EQ0VGQ0xLX0JJVCkpIHsKKwkJcmV0ID0gdmVnYTIwX3NldF9zaW5nbGVfZHBtX3Rh YmxlKHNtdSwgc2luZ2xlX2RwbV90YWJsZSwKKwkJCQkJCSAgUFBDTEtfRElTUENMSyk7CisJCWlm IChyZXQpIHsKKwkJCXByX2VycigiW1NldHVwRGVmYXVsdERwbVRhYmxlXSBmYWlsZWQgdG8gZ2V0 IGRpc3BjbGsgZHBtIGxldmVscyEiKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9IGVsc2Ugewor CQlzaW5nbGVfZHBtX3RhYmxlLT5jb3VudCA9IDA7CisJfQorCXZlZ2EyMF9pbml0X3NpbmdsZV9k cG1fc3RhdGUoJihzaW5nbGVfZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKKworCS8qIHBoeWNsayAq LworCXNpbmdsZV9kcG1fdGFibGUgPSAmKGRwbV90YWJsZS0+cGh5X3RhYmxlKTsKKworCWlmIChz bXVfZmVhdHVyZV9pc19lbmFibGVkKHNtdSwgRkVBVFVSRV9EUE1fRENFRkNMS19CSVQpKSB7CisJ CXJldCA9IHZlZ2EyMF9zZXRfc2luZ2xlX2RwbV90YWJsZShzbXUsIHNpbmdsZV9kcG1fdGFibGUs CisJCQkJCQkgIFBQQ0xLX1BIWUNMSyk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiW1NldHVw RGVmYXVsdERwbVRhYmxlXSBmYWlsZWQgdG8gZ2V0IHBoeWNsayBkcG0gbGV2ZWxzISIpOworCQkJ cmV0dXJuIHJldDsKKwkJfQorCX0gZWxzZSB7CisJCXNpbmdsZV9kcG1fdGFibGUtPmNvdW50ID0g MDsKKwl9CisJdmVnYTIwX2luaXRfc2luZ2xlX2RwbV9zdGF0ZSgmKHNpbmdsZV9kcG1fdGFibGUt PmRwbV9zdGF0ZSkpOworCisJLyogZmNsayAqLworCXNpbmdsZV9kcG1fdGFibGUgPSAmKGRwbV90 YWJsZS0+ZmNsa190YWJsZSk7CisKKwlpZiAoc211X2ZlYXR1cmVfaXNfZW5hYmxlZChzbXUsRkVB VFVSRV9EUE1fRkNMS19CSVQpKSB7CisJCXJldCA9IHZlZ2EyMF9zZXRfc2luZ2xlX2RwbV90YWJs ZShzbXUsIHNpbmdsZV9kcG1fdGFibGUsCisJCQkJCQkgIFBQQ0xLX0ZDTEspOworCQlpZiAocmV0 KSB7CisJCQlwcl9lcnIoIltTZXR1cERlZmF1bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCBmY2xr IGRwbSBsZXZlbHMhIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfSBlbHNlIHsKKwkJc2luZ2xl X2RwbV90YWJsZS0+Y291bnQgPSAwOworCX0KKwl2ZWdhMjBfaW5pdF9zaW5nbGVfZHBtX3N0YXRl KCYoc2luZ2xlX2RwbV90YWJsZS0+ZHBtX3N0YXRlKSk7CisKKwlyZXR1cm4gMDsKK30KKwogc3Rh dGljIGNvbnN0IHN0cnVjdCBwcHRhYmxlX2Z1bmNzIHZlZ2EyMF9wcHRfZnVuY3MgPSB7CiAJLmFs bG9jX2RwbV9jb250ZXh0ID0gdmVnYTIwX2FsbG9jYXRlX2RwbV9jb250ZXh0LAogCS5zdG9yZV9w b3dlcnBsYXlfdGFibGUgPSB2ZWdhMjBfc3RvcmVfcG93ZXJwbGF5X3RhYmxlLApAQCAtMjk5LDYg KzUzNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHB0YWJsZV9mdW5jcyB2ZWdhMjBfcHB0X2Z1 bmNzID0gewogCS5nZXRfc211X21zZ19pbmRleCA9IHZlZ2EyMF9nZXRfc211X21zZ19pbmRleCwK IAkucnVuX2FmbGxfYnRjID0gdmVnYTIwX3J1bl9idGNfYWZsbCwKIAkuZ2V0X3VuYWxsb3dlZF9m ZWF0dXJlX21hc2sgPSB2ZWdhMjBfZ2V0X3VuYWxsb3dlZF9mZWF0dXJlX21hc2ssCisJLnNldF9k ZWZhdWx0X2RwbV90YWJsZSA9IHZlZ2EyMF9zZXRfZGVmYXVsdF9kcG1fdGFibGUsCiB9OwogCiB2 b2lkIHZlZ2EyMF9zZXRfcHB0X2Z1bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KQotLSAKMi43 LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1n ZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=