From mboxrd@z Thu Jan 1 00:00:00 1970 From: Evan Quan Subject: [PATCH 04/13] drm/amd/powerplay: revise default dpm tables setup Date: Tue, 19 Jun 2018 15:38:56 +0800 Message-ID: <1529393945-16629-4-git-send-email-evan.quan@amd.com> References: <1529393945-16629-1-git-send-email-evan.quan@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1529393945-16629-1-git-send-email-evan.quan-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: Evan Quan SW5pdGlhbGl6ZSB0aGUgc29mdC9oYXJkIG1pbi9tYXggbGV2ZWwgY29ycmVjdGx5IGFuZApoYW5k bGUgdGhlIGRwbSBkaXNhYmxlZCBzaXR1YXRpb24uCgpDaGFuZ2UtSWQ6IEk5YTFkMzAzZWU1NGFj NGM5Njg3ZjcyYzg2MDk3YjAwOGFlMzk4YzA1ClNpZ25lZC1vZmYtYnk6IEV2YW4gUXVhbiA8ZXZh bi5xdWFuQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Iv dmVnYTEyX2h3bWdyLmMgfCAzMzQgKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTMyIGluc2VydGlvbnMoKyksIDIwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTJfaHdtZ3IuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMl9od21nci5jCmluZGV4IGU4MTY2MWNj Li5iYzk3NmUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci92ZWdhMTJfaHdtZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci92ZWdhMTJfaHdtZ3IuYwpAQCAtNDUzLDM3ICs0NTMsMzAgQEAgc3RhdGljIGludCB2ZWdhMTJf c2V0dXBfYXNpY190YXNrKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAgKi8KIHN0YXRpYyB2b2lk IHZlZ2ExMl9pbml0X2RwbV9zdGF0ZShzdHJ1Y3QgdmVnYTEyX2RwbV9zdGF0ZSAqZHBtX3N0YXRl KQogewotCWRwbV9zdGF0ZS0+c29mdF9taW5fbGV2ZWwgPSAweGZmOwotCWRwbV9zdGF0ZS0+c29m dF9tYXhfbGV2ZWwgPSAweGZmOwotCWRwbV9zdGF0ZS0+aGFyZF9taW5fbGV2ZWwgPSAweGZmOwot CWRwbV9zdGF0ZS0+aGFyZF9tYXhfbGV2ZWwgPSAweGZmOworCWRwbV9zdGF0ZS0+c29mdF9taW5f bGV2ZWwgPSAweDA7CisJZHBtX3N0YXRlLT5zb2Z0X21heF9sZXZlbCA9IDB4ZmZmZjsKKwlkcG1f c3RhdGUtPmhhcmRfbWluX2xldmVsID0gMHgwOworCWRwbV9zdGF0ZS0+aGFyZF9tYXhfbGV2ZWwg PSAweGZmZmY7CiB9CiAKLXN0YXRpYyBpbnQgdmVnYTEyX2dldF9udW1iZXJfZHBtX2xldmVsKHN0 cnVjdCBwcF9od21nciAqaHdtZ3IsCi0JCVBQQ0xLX2UgY2xrSUQsIHVpbnQzMl90ICpudW1fZHBt X2xldmVsKQorc3RhdGljIGludCB2ZWdhMTJfZ2V0X251bWJlcl9vZl9kcG1fbGV2ZWwoc3RydWN0 IHBwX2h3bWdyICpod21nciwKKwkJUFBDTEtfZSBjbGtfaWQsIHVpbnQzMl90ICpudW1fb2ZfbGV2 ZWxzKQogewotCWludCByZXN1bHQ7Ci0JLyoKLQkgKiBTTVUgZXhwZWN0cyB0aGUgQ2xvY2sgSUQg dG8gYmUgaW4gdGhlIHRvcCAxNiBiaXRzLgotCSAqIExvd2VyIDE2IGJpdHMgc3BlY2lmeSB0aGUg bGV2ZWwgaG93ZXZlciAweEZGIGlzIGEKLQkgKiBzcGVjaWFsIGFyZ3VtZW50IHRoZSByZXR1cm5z IHRoZSB0b3RhbCBudW1iZXIgb2YgbGV2ZWxzCi0JICovCi0JUFBfQVNTRVJUX1dJVEhfQ09ERShz bXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nciwKLQkJUFBTTUNfTVNHX0dl dERwbUZyZXFCeUluZGV4LCAoY2xrSUQgPDwgMTYgfCAweEZGKSkgPT0gMCwKLQkJIltHZXROdW1i ZXJEcG1MZXZlbF0gRmFpbGVkIHRvIGdldCBEUE0gbGV2ZWxzIGZyb20gU01VIGZvciBDTEtJRCEi LAotCQlyZXR1cm4gLUVJTlZBTCk7Ci0KLQlyZXN1bHQgPSB2ZWdhMTJfcmVhZF9hcmdfZnJvbV9z bWMoaHdtZ3IsIG51bV9kcG1fbGV2ZWwpOworCWludCByZXQgPSAwOwogCi0JUFBfQVNTRVJUX1dJ VEhfQ09ERSgqbnVtX2RwbV9sZXZlbCA8IE1BWF9SRUdVTEFSX0RQTV9OVU1CRVIsCi0JCSJbR2V0 TnVtYmVyRFBNTGV2ZWxdIE51bWJlciBvZiBEUE0gbGV2ZWxzIGlzIGdyZWF0ZXIgdGhhbiBsaW1p dCIsCi0JCXJldHVybiAtRUlOVkFMKTsKKwlyZXQgPSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRo X3BhcmFtZXRlcihod21nciwKKwkJCVBQU01DX01TR19HZXREcG1GcmVxQnlJbmRleCwKKwkJCShj bGtfaWQgPDwgMTYgfCAweEZGKSk7CisJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0LAorCQkJIltH ZXROdW1PZkRwbUxldmVsXSBmYWlsZWQgdG8gZ2V0IGRwbSBsZXZlbHMhIiwKKwkJCXJldHVybiBy ZXQpOwogCi0JUFBfQVNTRVJUX1dJVEhfQ09ERSgqbnVtX2RwbV9sZXZlbCAhPSAwLAotCQkiW0dl dE51bWJlckRQTUxldmVsXSBOdW1iZXIgb2YgQ0xLIExldmVscyBpcyB6ZXJvISIsCi0JCXJldHVy biAtRUlOVkFMKTsKKwl2ZWdhMTJfcmVhZF9hcmdfZnJvbV9zbWMoaHdtZ3IsIG51bV9vZl9sZXZl bHMpOworCVBQX0FTU0VSVF9XSVRIX0NPREUoKm51bV9vZl9sZXZlbHMgPiAwLAorCQkJIltHZXRO dW1PZkRwbUxldmVsXSBudW1iZXIgb2YgY2xrIGxldmVscyBpcyBpbnZhbGlkISIsCisJCQlyZXR1 cm4gLUVJTlZBTCk7CiAKLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRp YyBpbnQgdmVnYTEyX2dldF9kcG1fZnJlcXVlbmN5X2J5X2luZGV4KHN0cnVjdCBwcF9od21nciAq aHdtZ3IsCkBAIC01MDksNiArNTAyLDMxIEBAIHN0YXRpYyBpbnQgdmVnYTEyX2dldF9kcG1fZnJl cXVlbmN5X2J5X2luZGV4KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorc3RhdGljIGludCB2ZWdhMTJfc2V0dXBfc2luZ2xlX2RwbV90YWJsZShzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyLAorCQlzdHJ1Y3QgdmVnYTEyX3NpbmdsZV9kcG1fdGFibGUgKmRwbV90YWJs ZSwgUFBDTEtfZSBjbGtfaWQpCit7CisJaW50IHJldCA9IDA7CisJdWludDMyX3QgaSwgbnVtX29m X2xldmVscywgY2xrOworCisJcmV0ID0gdmVnYTEyX2dldF9udW1iZXJfb2ZfZHBtX2xldmVsKGh3 bWdyLCBjbGtfaWQsICZudW1fb2ZfbGV2ZWxzKTsKKwlQUF9BU1NFUlRfV0lUSF9DT0RFKCFyZXQs CisJCQkiW1NldHVwU2luZ2xlRHBtVGFibGVdIGZhaWxlZCB0byBnZXQgY2xrIGxldmVscyEiLAor CQkJcmV0dXJuIHJldCk7CisKKwlkcG1fdGFibGUtPmNvdW50ID0gbnVtX29mX2xldmVsczsKKwor CWZvciAoaSA9IDA7IGkgPCBudW1fb2ZfbGV2ZWxzOyBpKyspIHsKKwkJcmV0ID0gdmVnYTEyX2dl dF9kcG1fZnJlcXVlbmN5X2J5X2luZGV4KGh3bWdyLCBjbGtfaWQsIGksICZjbGspOworCQlQUF9B U1NFUlRfV0lUSF9DT0RFKCFyZXQsCisJCQkiW1NldHVwU2luZ2xlRHBtVGFibGVdIGZhaWxlZCB0 byBnZXQgY2xrIG9mIHNwZWNpZmljIGxldmVsISIsCisJCQlyZXR1cm4gcmV0KTsKKwkJZHBtX3Rh YmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVlID0gY2xrOworCQlkcG1fdGFibGUtPmRwbV9sZXZlbHNb aV0uZW5hYmxlZCA9IHRydWU7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIFRoaXMg ZnVuY3Rpb24gaXMgdG8gaW5pdGlhbGl6ZSBhbGwgRFBNIHN0YXRlIHRhYmxlcwogICogZm9yIFNN VSBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jeSB0YWJsZS4KQEAgLTUxOSwyMjQgKzUzNywxMzYgQEAg c3RhdGljIGludCB2ZWdhMTJfZ2V0X2RwbV9mcmVxdWVuY3lfYnlfaW5kZXgoc3RydWN0IHBwX2h3 bWdyICpod21nciwKICAqLwogc3RhdGljIGludCB2ZWdhMTJfc2V0dXBfZGVmYXVsdF9kcG1fdGFi bGVzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7Ci0JdWludDMyX3QgbnVtX2xldmVscywgaSwg Y2xvY2s7CiAKIAlzdHJ1Y3QgdmVnYTEyX2h3bWdyICpkYXRhID0KIAkJCShzdHJ1Y3QgdmVnYTEy X2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKLQogCXN0cnVjdCB2ZWdhMTJfc2luZ2xlX2RwbV90 YWJsZSAqZHBtX3RhYmxlOworCWludCByZXQgPSAwOwogCiAJbWVtc2V0KCZkYXRhLT5kcG1fdGFi bGUsIDAsIHNpemVvZihkYXRhLT5kcG1fdGFibGUpKTsKIAotCS8qIEluaXRpYWxpemUgU2NsayBE UE0gYW5kIFNPQyBEUE0gdGFibGUgYmFzZWQgb24gYWxsb3cgU2NsayB2YWx1ZXMgKi8KKwkvKiBz b2NjbGsgKi8KIAlkcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJsZS5zb2NfdGFibGUpOwotCi0J UFBfQVNTRVJUX1dJVEhfQ09ERSh2ZWdhMTJfZ2V0X251bWJlcl9kcG1fbGV2ZWwoaHdtZ3IsIFBQ Q0xLX1NPQ0NMSywKLQkJJm51bV9sZXZlbHMpID09IDAsCi0JCSJbU2V0dXBEZWZhdWx0RFBNVGFi bGVzXSBGYWlsZWQgdG8gZ2V0IERQTSBsZXZlbHMgZnJvbSBTTVUgZm9yIFNPQ0NMSyEiLAotCQly ZXR1cm4gLUVJTlZBTCk7Ci0KLQlkcG1fdGFibGUtPmNvdW50ID0gbnVtX2xldmVsczsKLQotCWZv ciAoaSA9IDA7IGkgPCBudW1fbGV2ZWxzOyBpKyspIHsKLQkJUFBfQVNTRVJUX1dJVEhfQ09ERSh2 ZWdhMTJfZ2V0X2RwbV9mcmVxdWVuY3lfYnlfaW5kZXgoaHdtZ3IsCi0JCQlQUENMS19TT0NDTEss IGksICZjbG9jaykgPT0gMCwKLQkJCSJbU2V0dXBEZWZhdWx0RFBNVGFibGVzXSBGYWlsZWQgdG8g Z2V0IERQTSBsZXZlbHMgZnJvbSBTTVUgZm9yIFNPQ0NMSyEiLAotCQkJcmV0dXJuIC1FSU5WQUwp OwotCi0JCWRwbV90YWJsZS0+ZHBtX2xldmVsc1tpXS52YWx1ZSA9IGNsb2NrOwotCQlkcG1fdGFi bGUtPmRwbV9sZXZlbHNbaV0uZW5hYmxlZCA9IHRydWU7CisJaWYgKGRhdGEtPnNtdV9mZWF0dXJl c1tHTkxEX0RQTV9TT0NDTEtdLmVuYWJsZWQpIHsKKwkJcmV0ID0gdmVnYTEyX3NldHVwX3Npbmds ZV9kcG1fdGFibGUoaHdtZ3IsIGRwbV90YWJsZSwgUFBDTEtfU09DQ0xLKTsKKwkJUFBfQVNTRVJU X1dJVEhfQ09ERSghcmV0LAorCQkJCSJbU2V0dXBEZWZhdWx0RHBtVGFibGVdIGZhaWxlZCB0byBn ZXQgc29jY2xrIGRwbSBsZXZlbHMhIiwKKwkJCQlyZXR1cm4gcmV0KTsKKwl9IGVsc2UgeworCQlk cG1fdGFibGUtPmNvdW50ID0gMTsKKwkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzWzBdLnZhbHVlID0g ZGF0YS0+dmJpb3NfYm9vdF9zdGF0ZS5zb2NfY2xvY2sgLyAxMDA7CiAJfQotCiAJdmVnYTEyX2lu aXRfZHBtX3N0YXRlKCYoZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKIAorCS8qIGdmeGNsayAqLwog CWRwbV90YWJsZSA9ICYoZGF0YS0+ZHBtX3RhYmxlLmdmeF90YWJsZSk7Ci0KLQlQUF9BU1NFUlRf V0lUSF9DT0RFKHZlZ2ExMl9nZXRfbnVtYmVyX2RwbV9sZXZlbChod21nciwgUFBDTEtfR0ZYQ0xL LAotCQkmbnVtX2xldmVscykgPT0gMCwKLQkJIltTZXR1cERlZmF1bHREUE1UYWJsZXNdIEZhaWxl ZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgR0ZYQ0xLISIsCi0JCXJldHVybiAtRUlO VkFMKTsKLQotCWRwbV90YWJsZS0+Y291bnQgPSBudW1fbGV2ZWxzOwotCWZvciAoaSA9IDA7IGkg PCBudW1fbGV2ZWxzOyBpKyspIHsKLQkJUFBfQVNTRVJUX1dJVEhfQ09ERSh2ZWdhMTJfZ2V0X2Rw bV9mcmVxdWVuY3lfYnlfaW5kZXgoaHdtZ3IsCi0JCQlQUENMS19HRlhDTEssIGksICZjbG9jaykg PT0gMCwKLQkJCSJbU2V0dXBEZWZhdWx0RFBNVGFibGVzXSBGYWlsZWQgdG8gZ2V0IERQTSBsZXZl bHMgZnJvbSBTTVUgZm9yIEdGWENMSyEiLAotCQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JCWRwbV90 YWJsZS0+ZHBtX2xldmVsc1tpXS52YWx1ZSA9IGNsb2NrOwotCQlkcG1fdGFibGUtPmRwbV9sZXZl bHNbaV0uZW5hYmxlZCA9IHRydWU7CisJaWYgKGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9H RlhDTEtdLmVuYWJsZWQpIHsKKwkJcmV0ID0gdmVnYTEyX3NldHVwX3NpbmdsZV9kcG1fdGFibGUo aHdtZ3IsIGRwbV90YWJsZSwgUFBDTEtfR0ZYQ0xLKTsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSgh cmV0LAorCQkJCSJbU2V0dXBEZWZhdWx0RHBtVGFibGVdIGZhaWxlZCB0byBnZXQgZ2Z4Y2xrIGRw bSBsZXZlbHMhIiwKKwkJCQlyZXR1cm4gcmV0KTsKKwl9IGVsc2UgeworCQlkcG1fdGFibGUtPmNv dW50ID0gMTsKKwkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzWzBdLnZhbHVlID0gZGF0YS0+dmJpb3Nf Ym9vdF9zdGF0ZS5nZnhfY2xvY2sgLyAxMDA7CiAJfQotCiAJdmVnYTEyX2luaXRfZHBtX3N0YXRl KCYoZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKLQkvKiBJbml0aWFsaXplIE1jbGsgRFBNIHRhYmxl IGJhc2VkIG9uIGFsbG93IE1jbGsgdmFsdWVzICovCi0JZHBtX3RhYmxlID0gJihkYXRhLT5kcG1f dGFibGUubWVtX3RhYmxlKTsKIAotCVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9udW1i ZXJfZHBtX2xldmVsKGh3bWdyLCBQUENMS19VQ0xLLAotCQkmbnVtX2xldmVscykgPT0gMCwKLQkJ IltTZXR1cERlZmF1bHREUE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNN VSBmb3IgVUNMSyEiLAotCQlyZXR1cm4gLUVJTlZBTCk7Ci0KLQlkcG1fdGFibGUtPmNvdW50ID0g bnVtX2xldmVsczsKLQotCWZvciAoaSA9IDA7IGkgPCBudW1fbGV2ZWxzOyBpKyspIHsKLQkJUFBf QVNTRVJUX1dJVEhfQ09ERSh2ZWdhMTJfZ2V0X2RwbV9mcmVxdWVuY3lfYnlfaW5kZXgoaHdtZ3Is Ci0JCQlQUENMS19VQ0xLLCBpLCAmY2xvY2spID09IDAsCi0JCQkiW1NldHVwRGVmYXVsdERQTVRh Ymxlc10gRmFpbGVkIHRvIGdldCBEUE0gbGV2ZWxzIGZyb20gU01VIGZvciBVQ0xLISIsCi0JCQly ZXR1cm4gLUVJTlZBTCk7Ci0KLQkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVlID0gY2xv Y2s7Ci0JCWRwbV90YWJsZS0+ZHBtX2xldmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKKwkvKiBtZW1j bGsgKi8KKwlkcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUpOworCWlmIChk YXRhLT5zbXVfZmVhdHVyZXNbR05MRF9EUE1fVUNMS10uZW5hYmxlZCkgeworCQlyZXQgPSB2ZWdh MTJfc2V0dXBfc2luZ2xlX2RwbV90YWJsZShod21nciwgZHBtX3RhYmxlLCBQUENMS19VQ0xLKTsK KwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0LAorCQkJCSJbU2V0dXBEZWZhdWx0RHBtVGFibGVd IGZhaWxlZCB0byBnZXQgbWVtY2xrIGRwbSBsZXZlbHMhIiwKKwkJCQlyZXR1cm4gcmV0KTsKKwl9 IGVsc2UgeworCQlkcG1fdGFibGUtPmNvdW50ID0gMTsKKwkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxz WzBdLnZhbHVlID0gZGF0YS0+dmJpb3NfYm9vdF9zdGF0ZS5tZW1fY2xvY2sgLyAxMDA7CiAJfQot CiAJdmVnYTEyX2luaXRfZHBtX3N0YXRlKCYoZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKIAorCS8q IGVjbGsgKi8KIAlkcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJsZS5lY2xrX3RhYmxlKTsKLQot CVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9udW1iZXJfZHBtX2xldmVsKGh3bWdyLCBQ UENMS19FQ0xLLAotCQkmbnVtX2xldmVscykgPT0gMCwKLQkJIltTZXR1cERlZmF1bHREUE1UYWJs ZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgRUNMSyEiLAotCQlyZXR1 cm4gLUVJTlZBTCk7Ci0KLQlkcG1fdGFibGUtPmNvdW50ID0gbnVtX2xldmVsczsKLQotCWZvciAo aSA9IDA7IGkgPCBudW1fbGV2ZWxzOyBpKyspIHsKLQkJUFBfQVNTRVJUX1dJVEhfQ09ERSh2ZWdh MTJfZ2V0X2RwbV9mcmVxdWVuY3lfYnlfaW5kZXgoaHdtZ3IsCi0JCVBQQ0xLX0VDTEssIGksICZj bG9jaykgPT0gMCwKLQkJIltTZXR1cERlZmF1bHREUE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBN IGxldmVscyBmcm9tIFNNVSBmb3IgRUNMSyEiLAotCQlyZXR1cm4gLUVJTlZBTCk7Ci0KLQkJZHBt X3RhYmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVlID0gY2xvY2s7Ci0JCWRwbV90YWJsZS0+ZHBtX2xl dmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBN X1ZDRV0uZW5hYmxlZCkgeworCQlyZXQgPSB2ZWdhMTJfc2V0dXBfc2luZ2xlX2RwbV90YWJsZSho d21nciwgZHBtX3RhYmxlLCBQUENMS19FQ0xLKTsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0 LAorCQkJCSJbU2V0dXBEZWZhdWx0RHBtVGFibGVdIGZhaWxlZCB0byBnZXQgZWNsayBkcG0gbGV2 ZWxzISIsCisJCQkJcmV0dXJuIHJldCk7CisJfSBlbHNlIHsKKwkJZHBtX3RhYmxlLT5jb3VudCA9 IDE7CisJCWRwbV90YWJsZS0+ZHBtX2xldmVsc1swXS52YWx1ZSA9IGRhdGEtPnZiaW9zX2Jvb3Rf c3RhdGUuZWNsb2NrIC8gMTAwOwogCX0KLQogCXZlZ2ExMl9pbml0X2RwbV9zdGF0ZSgmKGRwbV90 YWJsZS0+ZHBtX3N0YXRlKSk7CiAKKwkvKiB2Y2xrICovCiAJZHBtX3RhYmxlID0gJihkYXRhLT5k cG1fdGFibGUudmNsa190YWJsZSk7Ci0KLQlQUF9BU1NFUlRfV0lUSF9DT0RFKHZlZ2ExMl9nZXRf bnVtYmVyX2RwbV9sZXZlbChod21nciwgUFBDTEtfVkNMSywKLQkJJm51bV9sZXZlbHMpID09IDAs Ci0JCSJbU2V0dXBEZWZhdWx0RFBNVGFibGVzXSBGYWlsZWQgdG8gZ2V0IERQTSBsZXZlbHMgZnJv bSBTTVUgZm9yIFZDTEshIiwKLQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JZHBtX3RhYmxlLT5jb3Vu dCA9IG51bV9sZXZlbHM7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2xldmVsczsgaSsrKSB7Ci0J CVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9kcG1fZnJlcXVlbmN5X2J5X2luZGV4KGh3 bWdyLAotCQkJUFBDTEtfVkNMSywgaSwgJmNsb2NrKSA9PSAwLAotCQkJIltTZXR1cERlZmF1bHRE UE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgVkNMSyEiLAot CQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JCWRwbV90YWJsZS0+ZHBtX2xldmVsc1tpXS52YWx1ZSA9 IGNsb2NrOwotCQlkcG1fdGFibGUtPmRwbV9sZXZlbHNbaV0uZW5hYmxlZCA9IHRydWU7CisJaWYg KGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9VVkRdLmVuYWJsZWQpIHsKKwkJcmV0ID0gdmVn YTEyX3NldHVwX3NpbmdsZV9kcG1fdGFibGUoaHdtZ3IsIGRwbV90YWJsZSwgUFBDTEtfVkNMSyk7 CisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIXJldCwKKwkJCQkiW1NldHVwRGVmYXVsdERwbVRhYmxl XSBmYWlsZWQgdG8gZ2V0IHZjbGsgZHBtIGxldmVscyEiLAorCQkJCXJldHVybiByZXQpOworCX0g ZWxzZSB7CisJCWRwbV90YWJsZS0+Y291bnQgPSAxOworCQlkcG1fdGFibGUtPmRwbV9sZXZlbHNb MF0udmFsdWUgPSBkYXRhLT52Ymlvc19ib290X3N0YXRlLnZjbG9jayAvIDEwMDsKIAl9Ci0KIAl2 ZWdhMTJfaW5pdF9kcG1fc3RhdGUoJihkcG1fdGFibGUtPmRwbV9zdGF0ZSkpOwogCisJLyogZGNs ayAqLwogCWRwbV90YWJsZSA9ICYoZGF0YS0+ZHBtX3RhYmxlLmRjbGtfdGFibGUpOwotCi0JUFBf QVNTRVJUX1dJVEhfQ09ERSh2ZWdhMTJfZ2V0X251bWJlcl9kcG1fbGV2ZWwoaHdtZ3IsIFBQQ0xL X0RDTEssCi0JCSZudW1fbGV2ZWxzKSA9PSAwLAotCQkiW1NldHVwRGVmYXVsdERQTVRhYmxlc10g RmFpbGVkIHRvIGdldCBEUE0gbGV2ZWxzIGZyb20gU01VIGZvciBEQ0xLISIsCi0JCXJldHVybiAt RUlOVkFMKTsKLQotCWRwbV90YWJsZS0+Y291bnQgPSBudW1fbGV2ZWxzOwotCi0JZm9yIChpID0g MDsgaSA8IG51bV9sZXZlbHM7IGkrKykgewotCQlQUF9BU1NFUlRfV0lUSF9DT0RFKHZlZ2ExMl9n ZXRfZHBtX2ZyZXF1ZW5jeV9ieV9pbmRleChod21nciwKLQkJCVBQQ0xLX0RDTEssIGksICZjbG9j aykgPT0gMCwKLQkJIltTZXR1cERlZmF1bHREUE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxl dmVscyBmcm9tIFNNVSBmb3IgRENMSyEiLAotCQlyZXR1cm4gLUVJTlZBTCk7Ci0KLQkJZHBtX3Rh YmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVlID0gY2xvY2s7Ci0JCWRwbV90YWJsZS0+ZHBtX2xldmVs c1tpXS5lbmFibGVkID0gdHJ1ZTsKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX1VW RF0uZW5hYmxlZCkgeworCQlyZXQgPSB2ZWdhMTJfc2V0dXBfc2luZ2xlX2RwbV90YWJsZShod21n ciwgZHBtX3RhYmxlLCBQUENMS19EQ0xLKTsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0LAor CQkJCSJbU2V0dXBEZWZhdWx0RHBtVGFibGVdIGZhaWxlZCB0byBnZXQgZGNsayBkcG0gbGV2ZWxz ISIsCisJCQkJcmV0dXJuIHJldCk7CisJfSBlbHNlIHsKKwkJZHBtX3RhYmxlLT5jb3VudCA9IDE7 CisJCWRwbV90YWJsZS0+ZHBtX2xldmVsc1swXS52YWx1ZSA9IGRhdGEtPnZiaW9zX2Jvb3Rfc3Rh dGUuZGNsb2NrIC8gMTAwOwogCX0KLQogCXZlZ2ExMl9pbml0X2RwbV9zdGF0ZSgmKGRwbV90YWJs ZS0+ZHBtX3N0YXRlKSk7CiAKLQkvKiBBc3N1bWUgdGhlcmUgaXMgbm8gaGVhZGxlc3MgVmVnYTEy IGZvciBub3cgKi8KKwkvKiBkY2VmY2xrICovCiAJZHBtX3RhYmxlID0gJihkYXRhLT5kcG1fdGFi bGUuZGNlZl90YWJsZSk7Ci0KLQlQUF9BU1NFUlRfV0lUSF9DT0RFKHZlZ2ExMl9nZXRfbnVtYmVy X2RwbV9sZXZlbChod21nciwKLQkJUFBDTEtfRENFRkNMSywgJm51bV9sZXZlbHMpID09IDAsCi0J CSJbU2V0dXBEZWZhdWx0RFBNVGFibGVzXSBGYWlsZWQgdG8gZ2V0IERQTSBsZXZlbHMgZnJvbSBT TVUgZm9yIERDRUZDTEshIiwKLQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JZHBtX3RhYmxlLT5jb3Vu dCA9IG51bV9sZXZlbHM7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2xldmVsczsgaSsrKSB7Ci0J CVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9kcG1fZnJlcXVlbmN5X2J5X2luZGV4KGh3 bWdyLAotCQkJUFBDTEtfRENFRkNMSywgaSwgJmNsb2NrKSA9PSAwLAotCQkJIltTZXR1cERlZmF1 bHREUE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgRENFRkNM SyEiLAotCQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JCWRwbV90YWJsZS0+ZHBtX2xldmVsc1tpXS52 YWx1ZSA9IGNsb2NrOwotCQlkcG1fdGFibGUtPmRwbV9sZXZlbHNbaV0uZW5hYmxlZCA9IHRydWU7 CisJaWYgKGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9EQ0VGQ0xLXS5lbmFibGVkKSB7CisJ CXJldCA9IHZlZ2ExMl9zZXR1cF9zaW5nbGVfZHBtX3RhYmxlKGh3bWdyLCBkcG1fdGFibGUsIFBQ Q0xLX0RDRUZDTEspOworCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCFyZXQsCisJCQkJIltTZXR1cERl ZmF1bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCBkY2VmY2xrIGRwbSBsZXZlbHMhIiwKKwkJCQly ZXR1cm4gcmV0KTsKKwl9IGVsc2UgeworCQlkcG1fdGFibGUtPmNvdW50ID0gMTsKKwkJZHBtX3Rh YmxlLT5kcG1fbGV2ZWxzWzBdLnZhbHVlID0gZGF0YS0+dmJpb3NfYm9vdF9zdGF0ZS5kY2VmX2Ns b2NrIC8gMTAwOwogCX0KLQogCXZlZ2ExMl9pbml0X2RwbV9zdGF0ZSgmKGRwbV90YWJsZS0+ZHBt X3N0YXRlKSk7CiAKKwkvKiBwaXhjbGsgKi8KIAlkcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJs ZS5waXhlbF90YWJsZSk7Ci0KLQlQUF9BU1NFUlRfV0lUSF9DT0RFKHZlZ2ExMl9nZXRfbnVtYmVy X2RwbV9sZXZlbChod21nciwKLQkJUFBDTEtfUElYQ0xLLCAmbnVtX2xldmVscykgPT0gMCwKLQkJ IltTZXR1cERlZmF1bHREUE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNN VSBmb3IgUElYQ0xLISIsCi0JCXJldHVybiAtRUlOVkFMKTsKLQotCWRwbV90YWJsZS0+Y291bnQg PSBudW1fbGV2ZWxzOwotCi0JZm9yIChpID0gMDsgaSA8IG51bV9sZXZlbHM7IGkrKykgewotCQlQ UF9BU1NFUlRfV0lUSF9DT0RFKHZlZ2ExMl9nZXRfZHBtX2ZyZXF1ZW5jeV9ieV9pbmRleChod21n ciwKLQkJCVBQQ0xLX1BJWENMSywgaSwgJmNsb2NrKSA9PSAwLAotCQkJIltTZXR1cERlZmF1bHRE UE1UYWJsZXNdIEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgUElYQ0xLISIs Ci0JCQlyZXR1cm4gLUVJTlZBTCk7Ci0KLQkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVl ID0gY2xvY2s7Ci0JCWRwbV90YWJsZS0+ZHBtX2xldmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKLQl9 Ci0KKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX0RDRUZDTEtdLmVuYWJsZWQpIHsK KwkJcmV0ID0gdmVnYTEyX3NldHVwX3NpbmdsZV9kcG1fdGFibGUoaHdtZ3IsIGRwbV90YWJsZSwg UFBDTEtfUElYQ0xLKTsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0LAorCQkJCSJbU2V0dXBE ZWZhdWx0RHBtVGFibGVdIGZhaWxlZCB0byBnZXQgcGl4Y2xrIGRwbSBsZXZlbHMhIiwKKwkJCQly ZXR1cm4gcmV0KTsKKwl9IGVsc2UKKwkJZHBtX3RhYmxlLT5jb3VudCA9IDA7CiAJdmVnYTEyX2lu aXRfZHBtX3N0YXRlKCYoZHBtX3RhYmxlLT5kcG1fc3RhdGUpKTsKIAorCS8qIGRpc3BjbGsgKi8K IAlkcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJsZS5kaXNwbGF5X3RhYmxlKTsKLQotCVBQX0FT U0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9udW1iZXJfZHBtX2xldmVsKGh3bWdyLAotCQlQUENM S19ESVNQQ0xLLCAmbnVtX2xldmVscykgPT0gMCwKLQkJIltTZXR1cERlZmF1bHREUE1UYWJsZXNd IEZhaWxlZCB0byBnZXQgRFBNIGxldmVscyBmcm9tIFNNVSBmb3IgRElTUENMSyEiLAotCQlyZXR1 cm4gLUVJTlZBTCk7Ci0KLQlkcG1fdGFibGUtPmNvdW50ID0gbnVtX2xldmVsczsKLQotCWZvciAo aSA9IDA7IGkgPCBudW1fbGV2ZWxzOyBpKyspIHsKLQkJUFBfQVNTRVJUX1dJVEhfQ09ERSh2ZWdh MTJfZ2V0X2RwbV9mcmVxdWVuY3lfYnlfaW5kZXgoaHdtZ3IsCi0JCQlQUENMS19ESVNQQ0xLLCBp LCAmY2xvY2spID09IDAsCi0JCQkiW1NldHVwRGVmYXVsdERQTVRhYmxlc10gRmFpbGVkIHRvIGdl dCBEUE0gbGV2ZWxzIGZyb20gU01VIGZvciBESVNQQ0xLISIsCi0JCQlyZXR1cm4gLUVJTlZBTCk7 Ci0KLQkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzW2ldLnZhbHVlID0gY2xvY2s7Ci0JCWRwbV90YWJs ZS0+ZHBtX2xldmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKLQl9Ci0KKwlpZiAoZGF0YS0+c211X2Zl YXR1cmVzW0dOTERfRFBNX0RDRUZDTEtdLmVuYWJsZWQpIHsKKwkJcmV0ID0gdmVnYTEyX3NldHVw X3NpbmdsZV9kcG1fdGFibGUoaHdtZ3IsIGRwbV90YWJsZSwgUFBDTEtfRElTUENMSyk7CisJCVBQ X0FTU0VSVF9XSVRIX0NPREUoIXJldCwKKwkJCQkiW1NldHVwRGVmYXVsdERwbVRhYmxlXSBmYWls ZWQgdG8gZ2V0IGRpc3BjbGsgZHBtIGxldmVscyEiLAorCQkJCXJldHVybiByZXQpOworCX0gZWxz ZQorCQlkcG1fdGFibGUtPmNvdW50ID0gMDsKIAl2ZWdhMTJfaW5pdF9kcG1fc3RhdGUoJihkcG1f dGFibGUtPmRwbV9zdGF0ZSkpOwogCisJLyogcGh5Y2xrICovCiAJZHBtX3RhYmxlID0gJihkYXRh LT5kcG1fdGFibGUucGh5X3RhYmxlKTsKLQotCVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dl dF9udW1iZXJfZHBtX2xldmVsKGh3bWdyLAotCQlQUENMS19QSFlDTEssICZudW1fbGV2ZWxzKSA9 PSAwLAotCQkiW1NldHVwRGVmYXVsdERQTVRhYmxlc10gRmFpbGVkIHRvIGdldCBEUE0gbGV2ZWxz IGZyb20gU01VIGZvciBQSFlDTEshIiwKLQkJcmV0dXJuIC1FSU5WQUwpOwotCi0JZHBtX3RhYmxl LT5jb3VudCA9IG51bV9sZXZlbHM7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2xldmVsczsgaSsr KSB7Ci0JCVBQX0FTU0VSVF9XSVRIX0NPREUodmVnYTEyX2dldF9kcG1fZnJlcXVlbmN5X2J5X2lu ZGV4KGh3bWdyLAotCQkJUFBDTEtfUEhZQ0xLLCBpLCAmY2xvY2spID09IDAsCi0JCQkiW1NldHVw RGVmYXVsdERQTVRhYmxlc10gRmFpbGVkIHRvIGdldCBEUE0gbGV2ZWxzIGZyb20gU01VIGZvciBQ SFlDTEshIiwKLQkJCXJldHVybiAtRUlOVkFMKTsKLQotCQlkcG1fdGFibGUtPmRwbV9sZXZlbHNb aV0udmFsdWUgPSBjbG9jazsKLQkJZHBtX3RhYmxlLT5kcG1fbGV2ZWxzW2ldLmVuYWJsZWQgPSB0 cnVlOwotCX0KLQorCWlmIChkYXRhLT5zbXVfZmVhdHVyZXNbR05MRF9EUE1fRENFRkNMS10uZW5h YmxlZCkgeworCQlyZXQgPSB2ZWdhMTJfc2V0dXBfc2luZ2xlX2RwbV90YWJsZShod21nciwgZHBt X3RhYmxlLCBQUENMS19QSFlDTEspOworCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCFyZXQsCisJCQkJ IltTZXR1cERlZmF1bHREcG1UYWJsZV0gZmFpbGVkIHRvIGdldCBwaHljbGsgZHBtIGxldmVscyEi LAorCQkJCXJldHVybiByZXQpOworCX0gZWxzZQorCQlkcG1fdGFibGUtPmNvdW50ID0gMDsKIAl2 ZWdhMTJfaW5pdF9kcG1fc3RhdGUoJihkcG1fdGFibGUtPmRwbV9zdGF0ZSkpOwogCiAJLyogc2F2 ZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgRFBNIHRhYmxlICovCi0tIAoyLjcuNAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==