From mboxrd@z Thu Jan 1 00:00:00 1970 From: Evan Quan Subject: [PATCH 06/13] drm/amd/powerplay: revise clock level setup Date: Tue, 19 Jun 2018 15:38:58 +0800 Message-ID: <1529393945-16629-6-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 TWFrZSBzdXJlIHRoZSBjbG9jayBsZXZlbCBzZXQgb25seSBvbiBkcG0gZW5hYmxlZC4gQWxzbyB1 dmQvdmNlL3NvYwpjbG9jayBhbHNvIGNoYW5nZWQgY29ycmVzcG9uZGluZ2x5LgoKQ2hhbmdlLUlk OiBJMWRiMmUyYWMzNTVmZDVhZWExYzBhMjVjMmIxNDBkMDM5YTU5MDA4OQpTaWduZWQtb2ZmLWJ5 OiBFdmFuIFF1YW4gPGV2YW4ucXVhbkBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMl9od21nci5jIHwgMzE4ICsrKysrKysrKysrKysrLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEyX2h3 bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTJfaHdtZ3Iu YwppbmRleCBlYTUzMGFmLi5hMTI0YjgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci92ZWdhMTJfaHdtZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci92ZWdhMTJfaHdtZ3IuYwpAQCAtOTU4LDc2ICs5NTgsMTcyIEBAIHN0 YXRpYyB1aW50MzJfdCB2ZWdhMTJfZmluZF9sb3dlc3RfZHBtX2xldmVsKAogCQkJYnJlYWs7CiAJ fQogCisJaWYgKGkgPj0gdGFibGUtPmNvdW50KSB7CisJCWkgPSAwOworCQl0YWJsZS0+ZHBtX2xl dmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKKwl9CisKIAlyZXR1cm4gaTsKIH0KIAogc3RhdGljIHVp bnQzMl90IHZlZ2ExMl9maW5kX2hpZ2hlc3RfZHBtX2xldmVsKAogCQlzdHJ1Y3QgdmVnYTEyX3Np bmdsZV9kcG1fdGFibGUgKnRhYmxlKQogewotCXVpbnQzMl90IGkgPSAwOworCWludDMyX3QgaSA9 IDA7CisJUFBfQVNTRVJUX1dJVEhfQ09ERSh0YWJsZS0+Y291bnQgPD0gTUFYX1JFR1VMQVJfRFBN X05VTUJFUiwKKwkJCSJbRmluZEhpZ2hlc3REUE1MZXZlbF0gRFBNIFRhYmxlIGhhcyB0b28gbWFu eSBlbnRyaWVzISIsCisJCQlyZXR1cm4gTUFYX1JFR1VMQVJfRFBNX05VTUJFUiAtIDEpOwogCi0J aWYgKHRhYmxlLT5jb3VudCA8PSBNQVhfUkVHVUxBUl9EUE1fTlVNQkVSKSB7Ci0JCWZvciAoaSA9 IHRhYmxlLT5jb3VudDsgaSA+IDA7IGktLSkgewotCQkJaWYgKHRhYmxlLT5kcG1fbGV2ZWxzW2kg LSAxXS5lbmFibGVkKQotCQkJCXJldHVybiBpIC0gMTsKLQkJfQotCX0gZWxzZSB7Ci0JCXByX2lu Zm8oIkRQTSBUYWJsZSBIYXMgVG9vIE1hbnkgRW50cmllcyEiKTsKLQkJcmV0dXJuIE1BWF9SRUdV TEFSX0RQTV9OVU1CRVIgLSAxOworCWZvciAoaSA9IHRhYmxlLT5jb3VudCAtIDE7IGkgPj0gMDsg aS0tKSB7CisJCWlmICh0YWJsZS0+ZHBtX2xldmVsc1tpXS5lbmFibGVkKQorCQkJYnJlYWs7CiAJ fQogCi0JcmV0dXJuIGk7CisJaWYgKGkgPCAwKSB7CisJCWkgPSAwOworCQl0YWJsZS0+ZHBtX2xl dmVsc1tpXS5lbmFibGVkID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gKHVpbnQzMl90KWk7CiB9CiAK IHN0YXRpYyBpbnQgdmVnYTEyX3VwbG9hZF9kcG1fbWluX2xldmVsKHN0cnVjdCBwcF9od21nciAq aHdtZ3IpCiB7CiAJc3RydWN0IHZlZ2ExMl9od21nciAqZGF0YSA9IGh3bWdyLT5iYWNrZW5kOwot CWlmIChkYXRhLT5zbWNfc3RhdGVfdGFibGUuZ2Z4X2Jvb3RfbGV2ZWwgIT0KLQkJCWRhdGEtPmRw bV90YWJsZS5nZnhfdGFibGUuZHBtX3N0YXRlLnNvZnRfbWluX2xldmVsKSB7Ci0JCXNtdW1fc2Vu ZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLAotCQkJUFBTTUNfTVNHX1NldFNvZnRN aW5CeUZyZXEsCi0JCQlQUENMS19HRlhDTEs8PDE2IHwgZGF0YS0+ZHBtX3RhYmxlLmdmeF90YWJs ZS5kcG1fbGV2ZWxzW2RhdGEtPnNtY19zdGF0ZV90YWJsZS5nZnhfYm9vdF9sZXZlbF0udmFsdWUp OwotCQlkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21pbl9sZXZlbCA9 Ci0JCQkJZGF0YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9ib290X2xldmVsOworCXVpbnQzMl90IG1p bl9mcmVxOworCWludCByZXQgPSAwOworCisJaWYgKGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQ TV9HRlhDTEtdLmVuYWJsZWQpIHsKKwkJbWluX2ZyZXEgPSBkYXRhLT5kcG1fdGFibGUuZ2Z4X3Rh YmxlLmRwbV9zdGF0ZS5zb2Z0X21pbl9sZXZlbDsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghKHJl dCA9IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21nciwgUFBT TUNfTVNHX1NldFNvZnRNaW5CeUZyZXEsCisJCQkJCShQUENMS19HRlhDTEsgPDwgMTYpIHwgKG1p bl9mcmVxICYgMHhmZmZmKSkpLAorCQkJCQkiRmFpbGVkIHRvIHNldCBzb2Z0IG1pbiBnZnhjbGsg ISIsCisJCQkJCXJldHVybiByZXQpOwogCX0KIAotCWlmIChkYXRhLT5zbWNfc3RhdGVfdGFibGUu bWVtX2Jvb3RfbGV2ZWwgIT0KLQkJCWRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUuZHBtX3N0YXRl LnNvZnRfbWluX2xldmVsKSB7Ci0JCXNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVy KGh3bWdyLAotCQkJUFBTTUNfTVNHX1NldFNvZnRNaW5CeUZyZXEsCi0JCQlQUENMS19VQ0xLPDwx NiB8IGRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUuZHBtX2xldmVsc1tkYXRhLT5zbWNfc3RhdGVf dGFibGUubWVtX2Jvb3RfbGV2ZWxdLnZhbHVlKTsKLQkJZGF0YS0+ZHBtX3RhYmxlLm1lbV90YWJs ZS5kcG1fc3RhdGUuc29mdF9taW5fbGV2ZWwgPQotCQkJCWRhdGEtPnNtY19zdGF0ZV90YWJsZS5t ZW1fYm9vdF9sZXZlbDsKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX1VDTEtdLmVu YWJsZWQpIHsKKwkJbWluX2ZyZXEgPSBkYXRhLT5kcG1fdGFibGUubWVtX3RhYmxlLmRwbV9zdGF0 ZS5zb2Z0X21pbl9sZXZlbDsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghKHJldCA9IHNtdW1fc2Vu ZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21nciwgUFBTTUNfTVNHX1NldFNv ZnRNaW5CeUZyZXEsCisJCQkJCShQUENMS19VQ0xLIDw8IDE2KSB8IChtaW5fZnJlcSAmIDB4ZmZm ZikpKSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtaW4gbWVtY2xrICEiLAorCQkJCQlyZXR1 cm4gcmV0KTsKKworCQltaW5fZnJlcSA9IGRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUuZHBtX3N0 YXRlLmhhcmRfbWluX2xldmVsOworCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCEocmV0ID0gc211bV9z ZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoCisJCQkJCWh3bWdyLCBQUFNNQ19NU0dfU2V0 SGFyZE1pbkJ5RnJlcSwKKwkJCQkJKFBQQ0xLX1VDTEsgPDwgMTYpIHwgKG1pbl9mcmVxICYgMHhm ZmZmKSkpLAorCQkJCQkiRmFpbGVkIHRvIHNldCBoYXJkIG1pbiBtZW1jbGsgISIsCisJCQkJCXJl dHVybiByZXQpOwogCX0KIAotCXJldHVybiAwOworCWlmIChkYXRhLT5zbXVfZmVhdHVyZXNbR05M RF9EUE1fVVZEXS5lbmFibGVkKSB7CisJCW1pbl9mcmVxID0gZGF0YS0+ZHBtX3RhYmxlLnZjbGtf dGFibGUuZHBtX3N0YXRlLnNvZnRfbWluX2xldmVsOworCisJCVBQX0FTU0VSVF9XSVRIX0NPREUo IShyZXQgPSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcigKKwkJCQkJaHdtZ3Is IFBQU01DX01TR19TZXRTb2Z0TWluQnlGcmVxLAorCQkJCQkoUFBDTEtfVkNMSyA8PCAxNikgfCAo bWluX2ZyZXEgJiAweGZmZmYpKSksCisJCQkJCSJGYWlsZWQgdG8gc2V0IHNvZnQgbWluIHZjbGsh IiwKKwkJCQkJcmV0dXJuIHJldCk7CisKKwkJbWluX2ZyZXEgPSBkYXRhLT5kcG1fdGFibGUuZGNs a190YWJsZS5kcG1fc3RhdGUuc29mdF9taW5fbGV2ZWw7CisKKwkJUFBfQVNTRVJUX1dJVEhfQ09E RSghKHJldCA9IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21n ciwgUFBTTUNfTVNHX1NldFNvZnRNaW5CeUZyZXEsCisJCQkJCShQUENMS19EQ0xLIDw8IDE2KSB8 IChtaW5fZnJlcSAmIDB4ZmZmZikpKSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtaW4gZGNs ayEiLAorCQkJCQlyZXR1cm4gcmV0KTsKKwl9CisKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dO TERfRFBNX1ZDRV0uZW5hYmxlZCkgeworCQltaW5fZnJlcSA9IGRhdGEtPmRwbV90YWJsZS5lY2xr X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21pbl9sZXZlbDsKKworCQlQUF9BU1NFUlRfV0lUSF9DT0RF KCEocmV0ID0gc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoCisJCQkJCWh3bWdy LCBQUFNNQ19NU0dfU2V0U29mdE1pbkJ5RnJlcSwKKwkJCQkJKFBQQ0xLX0VDTEsgPDwgMTYpIHwg KG1pbl9mcmVxICYgMHhmZmZmKSkpLAorCQkJCQkiRmFpbGVkIHRvIHNldCBzb2Z0IG1pbiBlY2xr ISIsCisJCQkJCXJldHVybiByZXQpOworCX0KKworCWlmIChkYXRhLT5zbXVfZmVhdHVyZXNbR05M RF9EUE1fU09DQ0xLXS5lbmFibGVkKSB7CisJCW1pbl9mcmVxID0gZGF0YS0+ZHBtX3RhYmxlLnNv Y190YWJsZS5kcG1fc3RhdGUuc29mdF9taW5fbGV2ZWw7CisKKwkJUFBfQVNTRVJUX1dJVEhfQ09E RSghKHJldCA9IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21n ciwgUFBTTUNfTVNHX1NldFNvZnRNaW5CeUZyZXEsCisJCQkJCShQUENMS19TT0NDTEsgPDwgMTYp IHwgKG1pbl9mcmVxICYgMHhmZmZmKSkpLAorCQkJCQkiRmFpbGVkIHRvIHNldCBzb2Z0IG1pbiBz b2NjbGshIiwKKwkJCQkJcmV0dXJuIHJldCk7CisJfQorCisJcmV0dXJuIHJldDsKIAogfQogCiBz dGF0aWMgaW50IHZlZ2ExMl91cGxvYWRfZHBtX21heF9sZXZlbChzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyKQogewogCXN0cnVjdCB2ZWdhMTJfaHdtZ3IgKmRhdGEgPSBod21nci0+YmFja2VuZDsKLQlp ZiAoZGF0YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9tYXhfbGV2ZWwgIT0KLQkJZGF0YS0+ZHBtX3Rh YmxlLmdmeF90YWJsZS5kcG1fc3RhdGUuc29mdF9tYXhfbGV2ZWwpIHsKLQkJc211bV9zZW5kX21z Z190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3IsCi0JCQlQUFNNQ19NU0dfU2V0U29mdE1heEJ5 RnJlcSwKLQkJCS8qIHBsdXMgdGhlIHZhbGUgYnkgMSB0byBhbGlnbiB0aGUgcmVzb2x1dGlvbiAq LwotCQkJUFBDTEtfR0ZYQ0xLPDwxNiB8IChkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9s ZXZlbHNbZGF0YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9tYXhfbGV2ZWxdLnZhbHVlICsgMSkpOwot CQlkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21heF9sZXZlbCA9Ci0J CQkJZGF0YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9tYXhfbGV2ZWw7CisJdWludDMyX3QgbWF4X2Zy ZXE7CisJaW50IHJldCA9IDA7CisKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX0dG WENMS10uZW5hYmxlZCkgeworCQltYXhfZnJlcSA9IGRhdGEtPmRwbV90YWJsZS5nZnhfdGFibGUu ZHBtX3N0YXRlLnNvZnRfbWF4X2xldmVsOworCisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIShyZXQg PSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcigKKwkJCQkJaHdtZ3IsIFBQU01D X01TR19TZXRTb2Z0TWF4QnlGcmVxLAorCQkJCQkoUFBDTEtfR0ZYQ0xLIDw8IDE2KSB8IChtYXhf ZnJlcSAmIDB4ZmZmZikpKSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtYXggZ2Z4Y2xrISIs CisJCQkJCXJldHVybiByZXQpOwogCX0KIAotCWlmIChkYXRhLT5zbWNfc3RhdGVfdGFibGUubWVt X21heF9sZXZlbCAhPQotCQlkYXRhLT5kcG1fdGFibGUubWVtX3RhYmxlLmRwbV9zdGF0ZS5zb2Z0 X21heF9sZXZlbCkgewotCQlzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21n ciwKLQkJCVBQU01DX01TR19TZXRTb2Z0TWF4QnlGcmVxLAotCQkJLyogcGx1cyB0aGUgdmFsZSBi eSAxIHRvIGFsaWduIHRoZSByZXNvbHV0aW9uICovCi0JCQlQUENMS19VQ0xLPDwxNiB8IChkYXRh LT5kcG1fdGFibGUubWVtX3RhYmxlLmRwbV9sZXZlbHNbZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1l bV9tYXhfbGV2ZWxdLnZhbHVlICsgMSkpOwotCQlkYXRhLT5kcG1fdGFibGUubWVtX3RhYmxlLmRw bV9zdGF0ZS5zb2Z0X21heF9sZXZlbCA9Ci0JCQkJZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1lbV9t YXhfbGV2ZWw7CisJaWYgKGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9VQ0xLXS5lbmFibGVk KSB7CisJCW1heF9mcmVxID0gZGF0YS0+ZHBtX3RhYmxlLm1lbV90YWJsZS5kcG1fc3RhdGUuc29m dF9tYXhfbGV2ZWw7CisKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghKHJldCA9IHNtdW1fc2VuZF9t c2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21nciwgUFBTTUNfTVNHX1NldFNvZnRN YXhCeUZyZXEsCisJCQkJCShQUENMS19VQ0xLIDw8IDE2KSB8IChtYXhfZnJlcSAmIDB4ZmZmZikp KSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtYXggbWVtY2xrISIsCisJCQkJCXJldHVybiBy ZXQpOwogCX0KIAotCXJldHVybiAwOworCWlmIChkYXRhLT5zbXVfZmVhdHVyZXNbR05MRF9EUE1f VVZEXS5lbmFibGVkKSB7CisJCW1heF9mcmVxID0gZGF0YS0+ZHBtX3RhYmxlLnZjbGtfdGFibGUu ZHBtX3N0YXRlLnNvZnRfbWF4X2xldmVsOworCisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIShyZXQg PSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcigKKwkJCQkJaHdtZ3IsIFBQU01D X01TR19TZXRTb2Z0TWF4QnlGcmVxLAorCQkJCQkoUFBDTEtfVkNMSyA8PCAxNikgfCAobWF4X2Zy ZXEgJiAweGZmZmYpKSksCisJCQkJCSJGYWlsZWQgdG8gc2V0IHNvZnQgbWF4IHZjbGshIiwKKwkJ CQkJcmV0dXJuIHJldCk7CisKKwkJbWF4X2ZyZXEgPSBkYXRhLT5kcG1fdGFibGUuZGNsa190YWJs ZS5kcG1fc3RhdGUuc29mdF9tYXhfbGV2ZWw7CisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIShyZXQg PSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcigKKwkJCQkJaHdtZ3IsIFBQU01D X01TR19TZXRTb2Z0TWF4QnlGcmVxLAorCQkJCQkoUFBDTEtfRENMSyA8PCAxNikgfCAobWF4X2Zy ZXEgJiAweGZmZmYpKSksCisJCQkJCSJGYWlsZWQgdG8gc2V0IHNvZnQgbWF4IGRjbGshIiwKKwkJ CQkJcmV0dXJuIHJldCk7CisJfQorCisJaWYgKGRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9W Q0VdLmVuYWJsZWQpIHsKKwkJbWF4X2ZyZXEgPSBkYXRhLT5kcG1fdGFibGUuZWNsa190YWJsZS5k cG1fc3RhdGUuc29mdF9tYXhfbGV2ZWw7CisKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghKHJldCA9 IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKAorCQkJCQlod21nciwgUFBTTUNf TVNHX1NldFNvZnRNYXhCeUZyZXEsCisJCQkJCShQUENMS19FQ0xLIDw8IDE2KSB8IChtYXhfZnJl cSAmIDB4ZmZmZikpKSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtYXggZWNsayEiLAorCQkJ CQlyZXR1cm4gcmV0KTsKKwl9CisKKwlpZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX1NP Q0NMS10uZW5hYmxlZCkgeworCQltYXhfZnJlcSA9IGRhdGEtPmRwbV90YWJsZS5zb2NfdGFibGUu ZHBtX3N0YXRlLnNvZnRfbWF4X2xldmVsOworCisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIShyZXQg PSBzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcigKKwkJCQkJaHdtZ3IsIFBQU01D X01TR19TZXRTb2Z0TWF4QnlGcmVxLAorCQkJCQkoUFBDTEtfU09DQ0xLIDw8IDE2KSB8IChtYXhf ZnJlcSAmIDB4ZmZmZikpKSwKKwkJCQkJIkZhaWxlZCB0byBzZXQgc29mdCBtYXggc29jY2xrISIs CisJCQkJCXJldHVybiByZXQpOworCX0KKworCXJldHVybiByZXQ7CiB9CiAKIGludCB2ZWdhMTJf ZW5hYmxlX2Rpc2FibGVfdmNlX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29sIGVuYWJs ZSkKQEAgLTEzMzAsMTIgKzE0MjYsMTkgQEAgc3RhdGljIGludCB2ZWdhMTJfZm9yY2VfZHBtX2hp Z2hlc3Qoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAlzdHJ1Y3QgdmVnYTEyX2h3bWdyICpkYXRh ID0KIAkJCShzdHJ1Y3QgdmVnYTEyX2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKIAotCWRhdGEt PnNtY19zdGF0ZV90YWJsZS5nZnhfYm9vdF9sZXZlbCA9Ci0JZGF0YS0+c21jX3N0YXRlX3RhYmxl LmdmeF9tYXhfbGV2ZWwgPQotCQkJdmVnYTEyX2ZpbmRfaGlnaGVzdF9kcG1fbGV2ZWwoJihkYXRh LT5kcG1fdGFibGUuZ2Z4X3RhYmxlKSk7Ci0JZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1lbV9ib290 X2xldmVsID0KLQlkYXRhLT5zbWNfc3RhdGVfdGFibGUubWVtX21heF9sZXZlbCA9Ci0JCQl2ZWdh MTJfZmluZF9oaWdoZXN0X2RwbV9sZXZlbCgmKGRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUpKTsK Kwl1aW50MzJfdCBzb2Z0X2xldmVsOworCisJc29mdF9sZXZlbCA9IHZlZ2ExMl9maW5kX2hpZ2hl c3RfZHBtX2xldmVsKCYoZGF0YS0+ZHBtX3RhYmxlLmdmeF90YWJsZSkpOworCisJZGF0YS0+ZHBt X3RhYmxlLmdmeF90YWJsZS5kcG1fc3RhdGUuc29mdF9taW5fbGV2ZWwgPQorCQlkYXRhLT5kcG1f dGFibGUuZ2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21heF9sZXZlbCA9CisJCWRhdGEtPmRwbV90 YWJsZS5nZnhfdGFibGUuZHBtX2xldmVsc1tzb2Z0X2xldmVsXS52YWx1ZTsKKworCXNvZnRfbGV2 ZWwgPSB2ZWdhMTJfZmluZF9oaWdoZXN0X2RwbV9sZXZlbCgmKGRhdGEtPmRwbV90YWJsZS5tZW1f dGFibGUpKTsKKworCWRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUuZHBtX3N0YXRlLnNvZnRfbWlu X2xldmVsID0KKwkJZGF0YS0+ZHBtX3RhYmxlLm1lbV90YWJsZS5kcG1fc3RhdGUuc29mdF9tYXhf bGV2ZWwgPQorCQlkYXRhLT5kcG1fdGFibGUubWVtX3RhYmxlLmRwbV9sZXZlbHNbc29mdF9sZXZl bF0udmFsdWU7CiAKIAlQUF9BU1NFUlRfV0lUSF9DT0RFKCF2ZWdhMTJfdXBsb2FkX2RwbV9taW5f bGV2ZWwoaHdtZ3IpLAogCQkJIkZhaWxlZCB0byB1cGxvYWQgYm9vdCBsZXZlbCB0byBoaWdoZXN0 ISIsCkBAIC0xMzUyLDEzICsxNDU1LDE5IEBAIHN0YXRpYyBpbnQgdmVnYTEyX2ZvcmNlX2RwbV9s b3dlc3Qoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKIAlzdHJ1Y3QgdmVnYTEyX2h3bWdyICpk YXRhID0KIAkJCShzdHJ1Y3QgdmVnYTEyX2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKKwl1aW50 MzJfdCBzb2Z0X2xldmVsOworCisJc29mdF9sZXZlbCA9IHZlZ2ExMl9maW5kX2xvd2VzdF9kcG1f bGV2ZWwoJihkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlKSk7CisKKwlkYXRhLT5kcG1fdGFibGUu Z2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21pbl9sZXZlbCA9CisJCWRhdGEtPmRwbV90YWJsZS5n ZnhfdGFibGUuZHBtX3N0YXRlLnNvZnRfbWF4X2xldmVsID0KKwkJZGF0YS0+ZHBtX3RhYmxlLmdm eF90YWJsZS5kcG1fbGV2ZWxzW3NvZnRfbGV2ZWxdLnZhbHVlOwogCi0JZGF0YS0+c21jX3N0YXRl X3RhYmxlLmdmeF9ib290X2xldmVsID0KLQlkYXRhLT5zbWNfc3RhdGVfdGFibGUuZ2Z4X21heF9s ZXZlbCA9Ci0JCQl2ZWdhMTJfZmluZF9sb3dlc3RfZHBtX2xldmVsKCYoZGF0YS0+ZHBtX3RhYmxl LmdmeF90YWJsZSkpOwotCWRhdGEtPnNtY19zdGF0ZV90YWJsZS5tZW1fYm9vdF9sZXZlbCA9Ci0J ZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1lbV9tYXhfbGV2ZWwgPQotCQkJdmVnYTEyX2ZpbmRfbG93 ZXN0X2RwbV9sZXZlbCgmKGRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUpKTsKKwlzb2Z0X2xldmVs ID0gdmVnYTEyX2ZpbmRfbG93ZXN0X2RwbV9sZXZlbCgmKGRhdGEtPmRwbV90YWJsZS5tZW1fdGFi bGUpKTsKKworCWRhdGEtPmRwbV90YWJsZS5tZW1fdGFibGUuZHBtX3N0YXRlLnNvZnRfbWluX2xl dmVsID0KKwkJZGF0YS0+ZHBtX3RhYmxlLm1lbV90YWJsZS5kcG1fc3RhdGUuc29mdF9tYXhfbGV2 ZWwgPQorCQlkYXRhLT5kcG1fdGFibGUubWVtX3RhYmxlLmRwbV9sZXZlbHNbc29mdF9sZXZlbF0u dmFsdWU7CiAKIAlQUF9BU1NFUlRfV0lUSF9DT0RFKCF2ZWdhMTJfdXBsb2FkX2RwbV9taW5fbGV2 ZWwoaHdtZ3IpLAogCQkJIkZhaWxlZCB0byB1cGxvYWQgYm9vdCBsZXZlbCB0byBoaWdoZXN0ISIs CkBAIC0xMzc0LDE3ICsxNDgzLDYgQEAgc3RhdGljIGludCB2ZWdhMTJfZm9yY2VfZHBtX2xvd2Vz dChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiBzdGF0aWMgaW50IHZlZ2ExMl91bmZvcmNlX2Rw bV9sZXZlbHMoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKLQlzdHJ1Y3QgdmVnYTEyX2h3bWdy ICpkYXRhID0gKHN0cnVjdCB2ZWdhMTJfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOwotCi0JZGF0 YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9ib290X2xldmVsID0KLQkJCXZlZ2ExMl9maW5kX2xvd2Vz dF9kcG1fbGV2ZWwoJihkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlKSk7Ci0JZGF0YS0+c21jX3N0 YXRlX3RhYmxlLmdmeF9tYXhfbGV2ZWwgPQotCQkJdmVnYTEyX2ZpbmRfaGlnaGVzdF9kcG1fbGV2 ZWwoJihkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlKSk7Ci0JZGF0YS0+c21jX3N0YXRlX3RhYmxl Lm1lbV9ib290X2xldmVsID0KLQkJCXZlZ2ExMl9maW5kX2xvd2VzdF9kcG1fbGV2ZWwoJihkYXRh LT5kcG1fdGFibGUubWVtX3RhYmxlKSk7Ci0JZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1lbV9tYXhf bGV2ZWwgPQotCQkJdmVnYTEyX2ZpbmRfaGlnaGVzdF9kcG1fbGV2ZWwoJihkYXRhLT5kcG1fdGFi bGUubWVtX3RhYmxlKSk7Ci0KIAlQUF9BU1NFUlRfV0lUSF9DT0RFKCF2ZWdhMTJfdXBsb2FkX2Rw bV9taW5fbGV2ZWwoaHdtZ3IpLAogCQkJIkZhaWxlZCB0byB1cGxvYWQgRFBNIEJvb3R1cCBMZXZl bHMhIiwKIAkJCXJldHVybiAtMSk7CkBAIC0xMzkyLDIyICsxNDkwLDI4IEBAIHN0YXRpYyBpbnQg dmVnYTEyX3VuZm9yY2VfZHBtX2xldmVscyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCVBQX0FT U0VSVF9XSVRIX0NPREUoIXZlZ2ExMl91cGxvYWRfZHBtX21heF9sZXZlbChod21nciksCiAJCQki RmFpbGVkIHRvIHVwbG9hZCBEUE0gTWF4IExldmVscyEiLAogCQkJcmV0dXJuIC0xKTsKKwogCXJl dHVybiAwOwogfQogCi0jaWYgMAogc3RhdGljIGludCB2ZWdhMTJfZ2V0X3Byb2ZpbGluZ19jbGtf bWFzayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsIGxl dmVsLAogCQkJCXVpbnQzMl90ICpzY2xrX21hc2ssIHVpbnQzMl90ICptY2xrX21hc2ssIHVpbnQz Ml90ICpzb2NfbWFzaykKIHsKLQlzdHJ1Y3QgcGhtX3BwdF92Ml9pbmZvcm1hdGlvbiAqdGFibGVf aW5mbyA9Ci0JCQkoc3RydWN0IHBobV9wcHRfdjJfaW5mb3JtYXRpb24gKikoaHdtZ3ItPnBwdGFi bGUpOworCXN0cnVjdCB2ZWdhMTJfaHdtZ3IgKmRhdGEgPSAoc3RydWN0IHZlZ2ExMl9od21nciAq KShod21nci0+YmFja2VuZCk7CisJc3RydWN0IHZlZ2ExMl9zaW5nbGVfZHBtX3RhYmxlICpnZnhf ZHBtX3RhYmxlID0gJihkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlKTsKKwlzdHJ1Y3QgdmVnYTEy X3NpbmdsZV9kcG1fdGFibGUgKm1lbV9kcG1fdGFibGUgPSAmKGRhdGEtPmRwbV90YWJsZS5tZW1f dGFibGUpOworCXN0cnVjdCB2ZWdhMTJfc2luZ2xlX2RwbV90YWJsZSAqc29jX2RwbV90YWJsZSA9 ICYoZGF0YS0+ZHBtX3RhYmxlLnNvY190YWJsZSk7CisKKwkqc2Nsa19tYXNrID0gMDsKKwkqbWNs a19tYXNrID0gMDsKKwkqc29jX21hc2sgID0gMDsKIAotCWlmICh0YWJsZV9pbmZvLT52ZGRfZGVw X29uX3NjbGstPmNvdW50ID4gVkVHQTEyX1VNRF9QU1RBVEVfR0ZYQ0xLX0xFVkVMICYmCi0JCXRh YmxlX2luZm8tPnZkZF9kZXBfb25fc29jY2xrLT5jb3VudCA+IFZFR0ExMl9VTURfUFNUQVRFX1NP Q0NMS19MRVZFTCAmJgotCQl0YWJsZV9pbmZvLT52ZGRfZGVwX29uX21jbGstPmNvdW50ID4gVkVH QTEyX1VNRF9QU1RBVEVfTUNMS19MRVZFTCkgeworCWlmIChnZnhfZHBtX3RhYmxlLT5jb3VudCA+ IFZFR0ExMl9VTURfUFNUQVRFX0dGWENMS19MRVZFTCAmJgorCSAgICBtZW1fZHBtX3RhYmxlLT5j b3VudCA+IFZFR0ExMl9VTURfUFNUQVRFX01DTEtfTEVWRUwgJiYKKwkgICAgc29jX2RwbV90YWJs ZS0+Y291bnQgPiBWRUdBMTJfVU1EX1BTVEFURV9TT0NDTEtfTEVWRUwpIHsKIAkJKnNjbGtfbWFz ayA9IFZFR0ExMl9VTURfUFNUQVRFX0dGWENMS19MRVZFTDsKLQkJKnNvY19tYXNrID0gVkVHQTEy X1VNRF9QU1RBVEVfU09DQ0xLX0xFVkVMOwogCQkqbWNsa19tYXNrID0gVkVHQTEyX1VNRF9QU1RB VEVfTUNMS19MRVZFTDsKKwkJKnNvY19tYXNrICA9IFZFR0ExMl9VTURfUFNUQVRFX1NPQ0NMS19M RVZFTDsKIAl9CiAKIAlpZiAobGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9N SU5fU0NMSykgewpAQCAtMTQxNSwxMyArMTUxOSwxMyBAQCBzdGF0aWMgaW50IHZlZ2ExMl9nZXRf cHJvZmlsaW5nX2Nsa19tYXNrKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGVudW0gYW1kX2RwbV9m bwogCX0gZWxzZSBpZiAobGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5f TUNMSykgewogCQkqbWNsa19tYXNrID0gMDsKIAl9IGVsc2UgaWYgKGxldmVsID09IEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX1BST0ZJTEVfUEVBSykgewotCQkqc2Nsa19tYXNrID0gdGFibGVfaW5mby0+ dmRkX2RlcF9vbl9zY2xrLT5jb3VudCAtIDE7Ci0JCSpzb2NfbWFzayA9IHRhYmxlX2luZm8tPnZk ZF9kZXBfb25fc29jY2xrLT5jb3VudCAtIDE7Ci0JCSptY2xrX21hc2sgPSB0YWJsZV9pbmZvLT52 ZGRfZGVwX29uX21jbGstPmNvdW50IC0gMTsKKwkJKnNjbGtfbWFzayA9IGdmeF9kcG1fdGFibGUt PmNvdW50IC0gMTsKKwkJKm1jbGtfbWFzayA9IG1lbV9kcG1fdGFibGUtPmNvdW50IC0gMTsKKwkJ KnNvY19tYXNrICA9IHNvY19kcG1fdGFibGUtPmNvdW50IC0gMTsKIAl9CisKIAlyZXR1cm4gMDsK IH0KLSNlbmRpZgogCiBzdGF0aWMgdm9pZCB2ZWdhMTJfc2V0X2Zhbl9jb250cm9sX21vZGUoc3Ry dWN0IHBwX2h3bWdyICpod21nciwgdWludDMyX3QgbW9kZSkKIHsKQEAgLTE0NDUsMTEgKzE1NDks OSBAQCBzdGF0aWMgaW50IHZlZ2ExMl9kcG1fZm9yY2VfZHBtX2xldmVsKHN0cnVjdCBwcF9od21n ciAqaHdtZ3IsCiAJCQkJZW51bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCBsZXZlbCkKIHsKIAlpbnQg cmV0ID0gMDsKLSNpZiAwCiAJdWludDMyX3Qgc2Nsa19tYXNrID0gMDsKIAl1aW50MzJfdCBtY2xr X21hc2sgPSAwOwogCXVpbnQzMl90IHNvY19tYXNrID0gMDsKLSNlbmRpZgogCiAJc3dpdGNoIChs ZXZlbCkgewogCWNhc2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfSElHSDoKQEAgLTE0NjUsMjcgKzE1 NjcsMTggQEAgc3RhdGljIGludCB2ZWdhMTJfZHBtX2ZvcmNlX2RwbV9sZXZlbChzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyLAogCWNhc2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5fU0NM SzoKIAljYXNlIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfTUlOX01DTEs6CiAJY2FzZSBB TURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX1BFQUs6Ci0jaWYgMAogCQlyZXQgPSB2ZWdhMTJf Z2V0X3Byb2ZpbGluZ19jbGtfbWFzayhod21nciwgbGV2ZWwsICZzY2xrX21hc2ssICZtY2xrX21h c2ssICZzb2NfbWFzayk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCQl2ZWdhMTJfZm9y Y2VfY2xvY2tfbGV2ZWwoaHdtZ3IsIFBQX1NDTEssIDE8PHNjbGtfbWFzayk7Ci0JCXZlZ2ExMl9m b3JjZV9jbG9ja19sZXZlbChod21nciwgUFBfTUNMSywgMTw8bWNsa19tYXNrKTsKLSNlbmRpZgor CQl2ZWdhMTJfZm9yY2VfY2xvY2tfbGV2ZWwoaHdtZ3IsIFBQX1NDTEssIDEgPDwgc2Nsa19tYXNr KTsKKwkJdmVnYTEyX2ZvcmNlX2Nsb2NrX2xldmVsKGh3bWdyLCBQUF9NQ0xLLCAxIDw8IG1jbGtf bWFzayk7CiAJCWJyZWFrOwogCWNhc2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfTUFOVUFMOgogCWNh c2UgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9FWElUOgogCWRlZmF1bHQ6CiAJCWJyZWFr OwogCX0KLSNpZiAwCi0JaWYgKCFyZXQpIHsKLQkJaWYgKGxldmVsID09IEFNRF9EUE1fRk9SQ0VE X0xFVkVMX1BST0ZJTEVfUEVBSyAmJiBod21nci0+ZHBtX2xldmVsICE9IEFNRF9EUE1fRk9SQ0VE X0xFVkVMX1BST0ZJTEVfUEVBSykKLQkJCXZlZ2ExMl9zZXRfZmFuX2NvbnRyb2xfbW9kZShod21n ciwgQU1EX0ZBTl9DVFJMX05PTkUpOwotCQllbHNlIGlmIChsZXZlbCAhPSBBTURfRFBNX0ZPUkNF RF9MRVZFTF9QUk9GSUxFX1BFQUsgJiYgaHdtZ3ItPmRwbV9sZXZlbCA9PSBBTURfRFBNX0ZPUkNF RF9MRVZFTF9QUk9GSUxFX1BFQUspCi0JCQl2ZWdhMTJfc2V0X2Zhbl9jb250cm9sX21vZGUoaHdt Z3IsIEFNRF9GQU5fQ1RSTF9BVVRPKTsKLQl9Ci0jZW5kaWYKKwogCXJldHVybiByZXQ7CiB9CiAK QEAgLTE3NDUsMzcgKzE4MzgsNDggQEAgc3RhdGljIGludCB2ZWdhMTJfZm9yY2VfY2xvY2tfbGV2 ZWwoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJZW51bSBwcF9jbG9ja190eXBlIHR5cGUsIHVp bnQzMl90IG1hc2spCiB7CiAJc3RydWN0IHZlZ2ExMl9od21nciAqZGF0YSA9IChzdHJ1Y3QgdmVn YTEyX2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKLQotCWlmIChod21nci0+cmVxdWVzdF9kcG1f bGV2ZWwgJiAoQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVUTyB8Ci0JCQkJQU1EX0RQTV9GT1JDRURf TEVWRUxfTE9XIHwKLQkJCQlBTURfRFBNX0ZPUkNFRF9MRVZFTF9ISUdIKSkKLQkJcmV0dXJuIC1F SU5WQUw7CisJdWludDMyX3Qgc29mdF9taW5fbGV2ZWwsIHNvZnRfbWF4X2xldmVsOworCWludCBy ZXQgPSAwOwogCiAJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBQUF9TQ0xLOgotCQlkYXRhLT5zbWNf c3RhdGVfdGFibGUuZ2Z4X2Jvb3RfbGV2ZWwgPSBtYXNrID8gKGZmcyhtYXNrKSAtIDEpIDogMDsK LQkJZGF0YS0+c21jX3N0YXRlX3RhYmxlLmdmeF9tYXhfbGV2ZWwgPSBtYXNrID8gKGZscyhtYXNr KSAtIDEpIDogMDsKKwkJc29mdF9taW5fbGV2ZWwgPSBtYXNrID8gKGZmcyhtYXNrKSAtIDEpIDog MDsKKwkJc29mdF9tYXhfbGV2ZWwgPSBtYXNrID8gKGZscyhtYXNrKSAtIDEpIDogMDsKKworCQlk YXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21pbl9sZXZlbCA9CisJCQlk YXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9sZXZlbHNbc29mdF9taW5fbGV2ZWxdLnZhbHVl OworCQlkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9zdGF0ZS5zb2Z0X21heF9sZXZlbCA9 CisJCQlkYXRhLT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmRwbV9sZXZlbHNbc29mdF9tYXhfbGV2ZWxd LnZhbHVlOwogCi0JCVBQX0FTU0VSVF9XSVRIX0NPREUoIXZlZ2ExMl91cGxvYWRfZHBtX21pbl9s ZXZlbChod21nciksCisJCXJldCA9IHZlZ2ExMl91cGxvYWRfZHBtX21pbl9sZXZlbChod21ncik7 CisJCVBQX0FTU0VSVF9XSVRIX0NPREUoIXJldCwKIAkJCSJGYWlsZWQgdG8gdXBsb2FkIGJvb3Qg bGV2ZWwgdG8gbG93ZXN0ISIsCi0JCQlyZXR1cm4gLUVJTlZBTCk7CisJCQlyZXR1cm4gcmV0KTsK IAotCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCF2ZWdhMTJfdXBsb2FkX2RwbV9tYXhfbGV2ZWwoaHdt Z3IpLAorCQlyZXQgPSB2ZWdhMTJfdXBsb2FkX2RwbV9tYXhfbGV2ZWwoaHdtZ3IpOworCQlQUF9B U1NFUlRfV0lUSF9DT0RFKCFyZXQsCiAJCQkiRmFpbGVkIHRvIHVwbG9hZCBkcG0gbWF4IGxldmVs IHRvIGhpZ2hlc3QhIiwKLQkJCXJldHVybiAtRUlOVkFMKTsKKwkJCXJldHVybiByZXQpOwogCQli cmVhazsKIAogCWNhc2UgUFBfTUNMSzoKLQkJZGF0YS0+c21jX3N0YXRlX3RhYmxlLm1lbV9ib290 X2xldmVsID0gbWFzayA/IChmZnMobWFzaykgLSAxKSA6IDA7Ci0JCWRhdGEtPnNtY19zdGF0ZV90 YWJsZS5tZW1fbWF4X2xldmVsID0gbWFzayA/IChmbHMobWFzaykgLSAxKSA6IDA7CisJCXNvZnRf bWluX2xldmVsID0gbWFzayA/IChmZnMobWFzaykgLSAxKSA6IDA7CisJCXNvZnRfbWF4X2xldmVs ID0gbWFzayA/IChmbHMobWFzaykgLSAxKSA6IDA7CisKKwkJZGF0YS0+ZHBtX3RhYmxlLm1lbV90 YWJsZS5kcG1fc3RhdGUuc29mdF9taW5fbGV2ZWwgPQorCQkJZGF0YS0+ZHBtX3RhYmxlLm1lbV90 YWJsZS5kcG1fbGV2ZWxzW3NvZnRfbWluX2xldmVsXS52YWx1ZTsKKwkJZGF0YS0+ZHBtX3RhYmxl Lm1lbV90YWJsZS5kcG1fc3RhdGUuc29mdF9tYXhfbGV2ZWwgPQorCQkJZGF0YS0+ZHBtX3RhYmxl Lm1lbV90YWJsZS5kcG1fbGV2ZWxzW3NvZnRfbWF4X2xldmVsXS52YWx1ZTsKIAotCQlQUF9BU1NF UlRfV0lUSF9DT0RFKCF2ZWdhMTJfdXBsb2FkX2RwbV9taW5fbGV2ZWwoaHdtZ3IpLAorCQlyZXQg PSB2ZWdhMTJfdXBsb2FkX2RwbV9taW5fbGV2ZWwoaHdtZ3IpOworCQlQUF9BU1NFUlRfV0lUSF9D T0RFKCFyZXQsCiAJCQkiRmFpbGVkIHRvIHVwbG9hZCBib290IGxldmVsIHRvIGxvd2VzdCEiLAot CQkJcmV0dXJuIC1FSU5WQUwpOworCQkJcmV0dXJuIHJldCk7CiAKLQkJUFBfQVNTRVJUX1dJVEhf Q09ERSghdmVnYTEyX3VwbG9hZF9kcG1fbWF4X2xldmVsKGh3bWdyKSwKKwkJcmV0ID0gdmVnYTEy X3VwbG9hZF9kcG1fbWF4X2xldmVsKGh3bWdyKTsKKwkJUFBfQVNTRVJUX1dJVEhfQ09ERSghcmV0 LAogCQkJIkZhaWxlZCB0byB1cGxvYWQgZHBtIG1heCBsZXZlbCB0byBoaWdoZXN0ISIsCi0JCQly ZXR1cm4gLUVJTlZBTCk7CisJCQlyZXR1cm4gcmV0KTsKIAogCQlicmVhazsKIAotLSAKMi43LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=