From: Tom St Denis Subject: [PATCH 06/16] drm/amd/powerplay: Port vega10_hwmgr.c over to PP_CAP Date: Fri, 8 Sep 2017 12:01:39 -0400 Message-ID: <20170908160149.9349-7-tom.stdenis@amd.com> References: <20170908160149.9349-1-tom.stdenis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170908160149.9349-1-tom.stdenis-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: Tom St Denis UmVwbGFjZSBhbmQgY2xlYW51cCBsZW5ndGh5IHBobV9jYXBfZW5hYmxlZCgpIHNlcXVlbmNlcwp3 aXRoIFBQX0NBUC4KClNpZ25lZC1vZmYtYnk6IFRvbSBTdCBEZW5pcyA8dG9tLnN0ZGVuaXNAYW1k LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdt Z3IuYyB8IDkxICsrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNl cnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdtZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMF9od21nci5jCmluZGV4IGVlOThhNDE0NmRlOC4uYTdjNWJm NzU0N2E5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92 ZWdhMTBfaHdtZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92 ZWdhMTBfaHdtZ3IuYwpAQCAtMzgwLDEyICszODAsMTAgQEAgc3RhdGljIHZvaWQgdmVnYTEwX2lu aXRfZHBtX2RlZmF1bHRzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJaWYgKCFkYXRhLT5yZWdp c3RyeV9kYXRhLnNvY2Nsa19kcG1fa2V5X2Rpc2FibGVkKQogCQlkYXRhLT5zbXVfZmVhdHVyZXNb R05MRF9EUE1fU09DQ0xLXS5zdXBwb3J0ZWQgPSB0cnVlOwogCi0JaWYgKHBobV9jYXBfZW5hYmxl ZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZv cm1DYXBzX1VWRERQTSkpCisJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX1VWRERQTSkpCiAJ CWRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RQTV9VVkRdLnN1cHBvcnRlZCA9IHRydWU7CiAKLQlp ZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2Fw cywKLQkJCVBITV9QbGF0Zm9ybUNhcHNfVkNFRFBNKSkKKwlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9y bUNhcHNfVkNFRFBNKSkKIAkJZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBNX1ZDRV0uc3VwcG9y dGVkID0gdHJ1ZTsKIAogCWlmICghZGF0YS0+cmVnaXN0cnlfZGF0YS5wY2llX2RwbV9rZXlfZGlz YWJsZWQpCkBAIC0zOTQsOSArMzkyLDggQEAgc3RhdGljIHZvaWQgdmVnYTEwX2luaXRfZHBtX2Rl ZmF1bHRzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJaWYgKCFkYXRhLT5yZWdpc3RyeV9kYXRh LmRjZWZjbGtfZHBtX2tleV9kaXNhYmxlZCkKIAkJZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFBN X0RDRUZDTEtdLnN1cHBvcnRlZCA9IHRydWU7CiAKLQlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdy LT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKLQkJCVBITV9QbGF0Zm9ybUNhcHNf U2Nsa0RlZXBTbGVlcCkgJiYKLQkJCWRhdGEtPnJlZ2lzdHJ5X2RhdGEuc2Nsa19kZWVwX3NsZWVw X3N1cHBvcnQpIHsKKwlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9ybUNhcHNfU2Nsa0RlZXBTbGVlcCkg JiYKKwkgICAgZGF0YS0+cmVnaXN0cnlfZGF0YS5zY2xrX2RlZXBfc2xlZXBfc3VwcG9ydCkgewog CQlkYXRhLT5zbXVfZmVhdHVyZXNbR05MRF9EU19HRlhDTEtdLnN1cHBvcnRlZCA9IHRydWU7CiAJ CWRhdGEtPnNtdV9mZWF0dXJlc1tHTkxEX0RTX1NPQ0NMS10uc3VwcG9ydGVkID0gdHJ1ZTsKIAkJ ZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfRFNfTENMS10uc3VwcG9ydGVkID0gdHJ1ZTsKQEAgLTQ5 Niw4ICs0OTMsNyBAQCBzdGF0aWMgaW50IHZlZ2ExMF9nZXRfZXZ2X3ZvbHRhZ2VzKHN0cnVjdCBw cF9od21nciAqaHdtZ3IpCiAKIAkJaWYgKCF2ZWdhMTBfZ2V0X3NvY2Nsa19mb3Jfdm9sdGFnZV9l dnYoaHdtZ3IsCiAJCQkJdGFibGVfaW5mby0+dmRkY19sb29rdXBfdGFibGUsIHZ2X2lkLCAmc2Ns aykpIHsKLQkJCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3Iu cGxhdGZvcm1DYXBzLAotCQkJCQlQSE1fUGxhdGZvcm1DYXBzX0Nsb2NrU3RyZXRjaGVyKSkgewor CQkJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX0Nsb2NrU3RyZXRjaGVyKSkgewogCQkJCWZv ciAoaiA9IDE7IGogPCBzb2NjbGtfdGFibGUtPmNvdW50OyBqKyspIHsKIAkJCQkJaWYgKHNvY2Ns a190YWJsZS0+ZW50cmllc1tqXS5jbGsgPT0gc2NsayAmJgogCQkJCQkJCXNvY2Nsa190YWJsZS0+ ZW50cmllc1tqXS5ja3NfZW5hYmxlID09IDApIHsKQEAgLTgwOCw4ICs4MDQsNyBAQCBzdGF0aWMg aW50IHZlZ2ExMF9od21ncl9iYWNrZW5kX2luaXQoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAl9 CiAKIAkgLyogVkREQ0lfTUVNICovCi0JaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZv cm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1DYXBzX0NvbnRyb2xW RERDSSkpIHsKKwlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9ybUNhcHNfQ29udHJvbFZERENJKSkgewog CQlpZiAocHBfYXRvbWZ3Y3RybF9pc192b2x0YWdlX2NvbnRyb2xsZWRfYnlfZ3Bpb192NChod21n ciwKIAkJCQlWT0xUQUdFX1RZUEVfVkREQ0ksIFZPTFRBR0VfT0JKX0dQSU9fTFVUKSkKIAkJCWRh dGEtPnZkZGNpX2NvbnRyb2wgPSBWRUdBMTBfVk9MVEFHRV9DT05UUk9MX0JZX0dQSU87CkBAIC0x MzgxLDEwICsxMzc2LDggQEAgc3RhdGljIGludCB2ZWdhMTBfc2V0dXBfZGVmYXVsdF9kcG1fdGFi bGVzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJbWVtY3B5KCYoZGF0YS0+Z29sZGVuX2RwbV90 YWJsZSksICYoZGF0YS0+ZHBtX3RhYmxlKSwKIAkJCXNpemVvZihzdHJ1Y3QgdmVnYTEwX2RwbV90 YWJsZSkpOwogCi0JaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRv ci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1DYXBzX09ETmluQUNTdXBwb3J0KSB8fAot CQlwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBz LAotCQkJUEhNX1BsYXRmb3JtQ2Fwc19PRE5pbkRDU3VwcG9ydCkpIHsKKwlpZiAoUFBfQ0FQKFBI TV9QbGF0Zm9ybUNhcHNfT0ROaW5BQ1N1cHBvcnQpIHx8CisJICAgIFBQX0NBUChQSE1fUGxhdGZv cm1DYXBzX09ETmluRENTdXBwb3J0KSkgewogCQlkYXRhLT5vZG5fZHBtX3RhYmxlLm9kbl9jb3Jl X2Nsb2NrX2RwbV9sZXZlbHMuCiAJCW51bWJlcl9vZl9wZXJmb3JtYW5jZV9sZXZlbHMgPSBkYXRh LT5kcG1fdGFibGUuZ2Z4X3RhYmxlLmNvdW50OwogCQlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+ZHBt X3RhYmxlLmdmeF90YWJsZS5jb3VudDsgaSsrKSB7CkBAIC0yMzMxLDkgKzIzMjQsOCBAQCBzdGF0 aWMgaW50IHZlZ2ExMF9wb3B1bGF0ZV9ncGlvX3BhcmFtZXRlcnMoc3RydWN0IHBwX2h3bWdyICpo d21ncikKIAogCXJlc3VsdCA9IHBwX2F0b21md2N0cmxfZ2V0X2dwaW9faW5mb3JtYXRpb24oaHdt Z3IsICZncGlvX3BhcmFtcyk7CiAJaWYgKCFyZXN1bHQpIHsKLQkJaWYgKHBobV9jYXBfZW5hYmxl ZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQkJUEhNX1BsYXRm b3JtQ2Fwc19SZWd1bGF0b3JIb3QpICYmCi0JCQkJKGRhdGEtPnJlZ2lzdHJ5X2RhdGEucmVndWxh dG9yX2hvdF9ncGlvX3N1cHBvcnQpKSB7CisJCWlmIChQUF9DQVAoUEhNX1BsYXRmb3JtQ2Fwc19S ZWd1bGF0b3JIb3QpICYmCisJCSAgICBkYXRhLT5yZWdpc3RyeV9kYXRhLnJlZ3VsYXRvcl9ob3Rf Z3Bpb19zdXBwb3J0KSB7CiAJCQlwcF90YWJsZS0+VlIwSG90R3BpbyA9IGdwaW9fcGFyYW1zLnVj VlIwSG90R3BpbzsKIAkJCXBwX3RhYmxlLT5WUjBIb3RQb2xhcml0eSA9IGdwaW9fcGFyYW1zLnVj VlIwSG90UG9sYXJpdHk7CiAJCQlwcF90YWJsZS0+VlIxSG90R3BpbyA9IGdwaW9fcGFyYW1zLnVj VlIxSG90R3BpbzsKQEAgLTIzNDUsOSArMjMzNyw4IEBAIHN0YXRpYyBpbnQgdmVnYTEwX3BvcHVs YXRlX2dwaW9fcGFyYW1ldGVycyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCQkJcHBfdGFibGUt PlZSMUhvdFBvbGFyaXR5ID0gMDsKIAkJfQogCi0JCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3It PnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAotCQkJCVBITV9QbGF0Zm9ybUNhcHNf QXV0b21hdGljRENUcmFuc2l0aW9uKSAmJgotCQkJCShkYXRhLT5yZWdpc3RyeV9kYXRhLmFjX2Rj X3N3aXRjaF9ncGlvX3N1cHBvcnQpKSB7CisJCWlmIChQUF9DQVAoUEhNX1BsYXRmb3JtQ2Fwc19B dXRvbWF0aWNEQ1RyYW5zaXRpb24pICYmCisJCSAgICBkYXRhLT5yZWdpc3RyeV9kYXRhLmFjX2Rj X3N3aXRjaF9ncGlvX3N1cHBvcnQpIHsKIAkJCXBwX3RhYmxlLT5BY0RjR3BpbyA9IGdwaW9fcGFy YW1zLnVjQWNEY0dwaW87CiAJCQlwcF90YWJsZS0+QWNEY1BvbGFyaXR5ID0gZ3Bpb19wYXJhbXMu dWNBY0RjUG9sYXJpdHk7CiAJCX0gZWxzZSB7CkBAIC0yNjQ1LDggKzI2MzYsNyBAQCBzdGF0aWMg aW50IHZlZ2ExMF9lbmFibGVfdnJob3RfZmVhdHVyZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQog CXN0cnVjdCB2ZWdhMTBfaHdtZ3IgKmRhdGEgPQogCQkJKHN0cnVjdCB2ZWdhMTBfaHdtZ3IgKiko aHdtZ3ItPmJhY2tlbmQpOwogCi0JaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1f ZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1DYXBzX1JlZ3VsYXRvckhv dCkpIHsKKwlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9ybUNhcHNfUmVndWxhdG9ySG90KSkgewogCQlp ZiAoZGF0YS0+c211X2ZlYXR1cmVzW0dOTERfVlIwSE9UXS5zdXBwb3J0ZWQpIHsKIAkJCVBQX0FT U0VSVF9XSVRIX0NPREUoCiAJCQkJCSF2ZWdhMTBfZW5hYmxlX3NtY19mZWF0dXJlcyhod21nci0+ c211bWdyLApAQCAtMjg2MCw4ICsyODUwLDcgQEAgc3RhdGljIGludCB2ZWdhMTBfc3RhcnRfZHBt KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IGJpdG1hcCkKIAkJZGF0YS0+dmJpb3Nf Ym9vdF9zdGF0ZS5ic29jX3ZkZGNfbG9jayA9IGZhbHNlOwogCX0KIAotCWlmIChwaG1fY2FwX2Vu YWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAotCQkJUEhNX1Bs YXRmb3JtQ2Fwc19GYWxjb25fUXVpY2tUcmFuc2l0aW9uKSkgeworCWlmIChQUF9DQVAoUEhNX1Bs YXRmb3JtQ2Fwc19GYWxjb25fUXVpY2tUcmFuc2l0aW9uKSkgewogCQlpZiAoZGF0YS0+c211X2Zl YXR1cmVzW0dOTERfQUNEQ10uc3VwcG9ydGVkKSB7CiAJCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCF2 ZWdhMTBfZW5hYmxlX3NtY19mZWF0dXJlcyhod21nci0+c211bWdyLAogCQkJCQl0cnVlLCBkYXRh LT5zbXVfZmVhdHVyZXNbR05MRF9BQ0RDXS5zbXVfZmVhdHVyZV9iaXRtYXApLApAQCAtMjkwNCw4 ICsyODkzLDcgQEAgc3RhdGljIGludCB2ZWdhMTBfZW5hYmxlX2RwbV90YXNrcyhzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKQogCQkJIkZhaWxlZCB0byBpbml0aWFsaXplIFNNQyB0YWJsZSEiLAogCQkJ cmVzdWx0ID0gdG1wX3Jlc3VsdCk7CiAKLQlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0 Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKLQkJCVBITV9QbGF0Zm9ybUNhcHNfVGhlcm1h bENvbnRyb2xsZXIpKSB7CisJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX1RoZXJtYWxDb250 cm9sbGVyKSkgewogCQl0bXBfcmVzdWx0ID0gdmVnYTEwX2VuYWJsZV90aGVybWFsX3Byb3RlY3Rp b24oaHdtZ3IpOwogCQlQUF9BU1NFUlRfV0lUSF9DT0RFKCF0bXBfcmVzdWx0LAogCQkJCSJGYWls ZWQgdG8gZW5hYmxlIHRoZXJtYWwgcHJvdGVjdGlvbiEiLApAQCAtMzEzOSw4ICszMTI3LDcgQEAg c3RhdGljIGludCB2ZWdhMTBfYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzKHN0cnVjdCBwcF9od21n ciAqaHdtZ3IsCiAJbWluaW11bV9jbG9ja3MuZW5naW5lQ2xvY2sgPSBod21nci0+ZGlzcGxheV9j b25maWcubWluX2NvcmVfc2V0X2Nsb2NrOwogCW1pbmltdW1fY2xvY2tzLm1lbW9yeUNsb2NrID0g aHdtZ3ItPmRpc3BsYXlfY29uZmlnLm1pbl9tZW1fc2V0X2Nsb2NrOwogCi0JaWYgKHBobV9jYXBf ZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1f UGxhdGZvcm1DYXBzX1N0YWJsZVBTdGF0ZSkpIHsKKwlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9ybUNh cHNfU3RhYmxlUFN0YXRlKSkgewogCQlQUF9BU1NFUlRfV0lUSF9DT0RFKAogCQkJZGF0YS0+cmVn aXN0cnlfZGF0YS5zdGFibGVfcHN0YXRlX3NjbGtfZHBtX3BlcmNlbnRhZ2UgPj0gMSAmJgogCQkJ ZGF0YS0+cmVnaXN0cnlfZGF0YS5zdGFibGVfcHN0YXRlX3NjbGtfZHBtX3BlcmNlbnRhZ2UgPD0g MTAwLApAQCAtMzIwNSwxMCArMzE5Miw4IEBAIHN0YXRpYyBpbnQgdmVnYTEwX2FwcGx5X3N0YXRl X2FkanVzdF9ydWxlcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAogCWRpc2FibGVfbWNsa19zd2l0 Y2hpbmdfZm9yX2ZyYW1lX2xvY2sgPSBwaG1fY2FwX2VuYWJsZWQoCiAJCQkJICAgIGh3bWdyLT5w bGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKIAkJCQkgICAgUEhNX1BsYXRmb3JtQ2Fw c19EaXNhYmxlTWNsa1N3aXRjaGluZ0ZvckZyYW1lTG9jayk7Ci0JZGlzYWJsZV9tY2xrX3N3aXRj aGluZ19mb3JfdnIgPSBwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3Iu cGxhdGZvcm1DYXBzLAotCQkJUEhNX1BsYXRmb3JtQ2Fwc19EaXNhYmxlTWNsa1N3aXRjaEZvclZS KTsKLQlmb3JjZV9tY2xrX2hpZ2ggPSBwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rl c2NyaXB0b3IucGxhdGZvcm1DYXBzLAotCQkJUEhNX1BsYXRmb3JtQ2Fwc19Gb3JjZU1jbGtIaWdo KTsKKwlkaXNhYmxlX21jbGtfc3dpdGNoaW5nX2Zvcl92ciA9IFBQX0NBUChQSE1fUGxhdGZvcm1D YXBzX0Rpc2FibGVNY2xrU3dpdGNoRm9yVlIpOworCWZvcmNlX21jbGtfaGlnaCA9IFBQX0NBUChQ SE1fUGxhdGZvcm1DYXBzX0ZvcmNlTWNsa0hpZ2gpOwogCiAJZGlzYWJsZV9tY2xrX3N3aXRjaGlu ZyA9IChpbmZvLmRpc3BsYXlfY291bnQgPiAxKSB8fAogCQkJCSAgICBkaXNhYmxlX21jbGtfc3dp dGNoaW5nX2Zvcl9mcmFtZV9sb2NrIHx8CkBAIC0zMjU5LDggKzMyNDQsNyBAQCBzdGF0aWMgaW50 IHZlZ2ExMF9hcHBseV9zdGF0ZV9hZGp1c3RfcnVsZXMoc3RydWN0IHBwX2h3bWdyICpod21nciwK IAkJCQkJdmVnYTEwX3BzLT5wZXJmb3JtYW5jZV9sZXZlbHNbMV0ubWVtX2Nsb2NrOwogCX0KIAot CWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1D YXBzLAotCQkJUEhNX1BsYXRmb3JtQ2Fwc19TdGFibGVQU3RhdGUpKSB7CisJaWYgKFBQX0NBUChQ SE1fUGxhdGZvcm1DYXBzX1N0YWJsZVBTdGF0ZSkpIHsKIAkJZm9yIChpID0gMDsgaSA8IHZlZ2Ex MF9wcy0+cGVyZm9ybWFuY2VfbGV2ZWxfY291bnQ7IGkrKykgewogCQkJdmVnYTEwX3BzLT5wZXJm b3JtYW5jZV9sZXZlbHNbaV0uZ2Z4X2Nsb2NrID0gc3RhYmxlX3BzdGF0ZV9zY2xrOwogCQkJdmVn YTEwX3BzLT5wZXJmb3JtYW5jZV9sZXZlbHNbaV0ubWVtX2Nsb2NrID0gc3RhYmxlX3BzdGF0ZV9t Y2xrOwpAQCAtMzI5MiwxMCArMzI3Niw4IEBAIHN0YXRpYyBpbnQgdmVnYTEwX2ZpbmRfZHBtX3N0 YXRlc19jbG9ja3NfaW5fZHBtX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGNvCiAKIAlk YXRhLT5uZWVkX3VwZGF0ZV9kcG1fdGFibGUgPSAwOwogCi0JaWYgKHBobV9jYXBfZW5hYmxlZCho d21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1D YXBzX09ETmluQUNTdXBwb3J0KSB8fAotCQlwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAotCQkJCVBITV9QbGF0Zm9ybUNhcHNfT0ROaW5EQ1N1 cHBvcnQpKSB7CisJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX09ETmluQUNTdXBwb3J0KSB8 fAorCSAgICBQUF9DQVAoUEhNX1BsYXRmb3JtQ2Fwc19PRE5pbkRDU3VwcG9ydCkpIHsKIAkJZm9y IChpID0gMDsgaSA8IHNjbGtfdGFibGUtPmNvdW50OyBpKyspIHsKIAkJCWlmIChzY2xrID09IHNj bGtfdGFibGUtPmRwbV9sZXZlbHNbaV0udmFsdWUpCiAJCQkJYnJlYWs7CkBAIC0zMzc5LDEwICsz MzYxLDggQEAgc3RhdGljIGludCB2ZWdhMTBfcG9wdWxhdGVfYW5kX3VwbG9hZF9zY2xrX21jbGtf ZHBtX2xldmVscygKIAl1aW50MzJfdCBkcG1fY291bnQsIGNsb2NrX3BlcmNlbnQ7CiAJdWludDMy X3QgaTsKIAotCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3Iu cGxhdGZvcm1DYXBzLAotCQkJUEhNX1BsYXRmb3JtQ2Fwc19PRE5pbkFDU3VwcG9ydCkgfHwKLQkJ cGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywK LQkJCVBITV9QbGF0Zm9ybUNhcHNfT0ROaW5EQ1N1cHBvcnQpKSB7CisJaWYgKFBQX0NBUChQSE1f UGxhdGZvcm1DYXBzX09ETmluQUNTdXBwb3J0KSB8fAorCSAgICBQUF9DQVAoUEhNX1BsYXRmb3Jt Q2Fwc19PRE5pbkRDU3VwcG9ydCkpIHsKIAogCQlpZiAoIWRhdGEtPm5lZWRfdXBkYXRlX2RwbV90 YWJsZSAmJgogCQkJIWRhdGEtPmFwcGx5X29wdGltaXplZF9zZXR0aW5ncyAmJgpAQCAtMzQ0Nywx MCArMzQyNyw4IEBAIHN0YXRpYyBpbnQgdmVnYTEwX3BvcHVsYXRlX2FuZF91cGxvYWRfc2Nsa19t Y2xrX2RwbV9sZXZlbHMoCiAJCQkJZHBtX3RhYmxlLT4KIAkJCQlnZnhfdGFibGUuZHBtX2xldmVs c1tkcG1fdGFibGUtPmdmeF90YWJsZS5jb3VudCAtIDFdLgogCQkJCXZhbHVlID0gc2NsazsKLQkJ CQlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3Jt Q2FwcywKLQkJCQkJCVBITV9QbGF0Zm9ybUNhcHNfT0Q2UGx1c2luQUNTdXBwb3J0KSB8fAotCQkJ CQlwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBz LAotCQkJCQkJCVBITV9QbGF0Zm9ybUNhcHNfT0Q2UGx1c2luRENTdXBwb3J0KSkgeworCQkJCWlm IChQUF9DQVAoUEhNX1BsYXRmb3JtQ2Fwc19PRDZQbHVzaW5BQ1N1cHBvcnQpIHx8CisJCQkJICAg IFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX09ENlBsdXNpbkRDU3VwcG9ydCkpIHsKIAkJCQkJLyog TmVlZCB0byBkbyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB0aGUgZ29sZGVuIERQTSB0YWJsZQogCQkJ CQkgKiBhcyB0aGUgSGVhdG1hcCBHUFUgQ2xvY2sgYXhpcyBpcyBhbHNvIGJhc2VkIG9uCiAJCQkJ CSAqIHRoZSBkZWZhdWx0IHZhbHVlcwpAQCAtMzUwNCwxMCArMzQ4Miw4IEBAIHN0YXRpYyBpbnQg dmVnYTEwX3BvcHVsYXRlX2FuZF91cGxvYWRfc2Nsa19tY2xrX2RwbV9sZXZlbHMoCiAJCQltZW1f dGFibGUuZHBtX2xldmVsc1tkcG1fdGFibGUtPm1lbV90YWJsZS5jb3VudCAtIDFdLgogCQkJdmFs dWUgPSBtY2xrOwogCi0JCQlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNj cmlwdG9yLnBsYXRmb3JtQ2FwcywKLQkJCQkJUEhNX1BsYXRmb3JtQ2Fwc19PRDZQbHVzaW5BQ1N1 cHBvcnQpIHx8Ci0JCQkJcGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9y LnBsYXRmb3JtQ2FwcywKLQkJCQkJCVBITV9QbGF0Zm9ybUNhcHNfT0Q2UGx1c2luRENTdXBwb3J0 KSkgeworCQkJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX09ENlBsdXNpbkFDU3VwcG9ydCkg fHwKKwkJCSAgICBQUF9DQVAoUEhNX1BsYXRmb3JtQ2Fwc19PRDZQbHVzaW5EQ1N1cHBvcnQpKSB7 CiAKIAkJCQlQUF9BU1NFUlRfV0lUSF9DT0RFKAogCQkJCQlnb2xkZW5fZHBtX3RhYmxlLT5tZW1f dGFibGUuZHBtX2xldmVscwpAQCAtMzgzOCw5ICszODE0LDggQEAgc3RhdGljIGludCB2ZWdhMTBf dXBkYXRlX3NjbGtfdGhyZXNob2xkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJaW50IHJlc3Vs dCA9IDA7CiAJdWludDMyX3QgbG93X3NjbGtfaW50ZXJydXB0X3RocmVzaG9sZCA9IDA7CiAKLQlp ZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2Fw cywKLQkJCVBITV9QbGF0Zm9ybUNhcHNfU2Nsa1Rocm90dGxlTG93Tm90aWZpY2F0aW9uKQotCQkm JiAoaHdtZ3ItPmdmeF9hcmJpdGVyLnNjbGtfdGhyZXNob2xkICE9CisJaWYgKFBQX0NBUChQSE1f UGxhdGZvcm1DYXBzX1NjbGtUaHJvdHRsZUxvd05vdGlmaWNhdGlvbikgJiYKKwkgICAgKGh3bWdy LT5nZnhfYXJiaXRlci5zY2xrX3RocmVzaG9sZCAhPQogCQkJCWRhdGEtPmxvd19zY2xrX2ludGVy cnVwdF90aHJlc2hvbGQpKSB7CiAJCWRhdGEtPmxvd19zY2xrX2ludGVycnVwdF90aHJlc2hvbGQg PQogCQkJCWh3bWdyLT5nZnhfYXJiaXRlci5zY2xrX3RocmVzaG9sZDsKQEAgLTQyNTEsOCArNDIy Niw3IEBAIHN0YXRpYyBpbnQgdmVnYTEwX3NldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsIHVpbnQzMl90IG1vZGUpCiAJCXJlc3VsdCA9IHZlZ2ExMF9mYW5fY3RybF9z ZXRfZmFuX3NwZWVkX3BlcmNlbnQoaHdtZ3IsIDEwMCk7CiAJCWJyZWFrOwogCWNhc2UgQU1EX0ZB Tl9DVFJMX01BTlVBTDoKLQkJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVz Y3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1DYXBzX01pY3JvY29kZUZhbkNv bnRyb2wpKQorCQlpZiAoUFBfQ0FQKFBITV9QbGF0Zm9ybUNhcHNfTWljcm9jb2RlRmFuQ29udHJv bCkpCiAJCQlyZXN1bHQgPSB2ZWdhMTBfZmFuX2N0cmxfc3RvcF9zbWNfZmFuX2NvbnRyb2woaHdt Z3IpOwogCQlicmVhazsKIAljYXNlIEFNRF9GQU5fQ1RSTF9BVVRPOgpAQCAtNDc5Niw3ICs0Nzcw LDcgQEAgdmVnYTEwX2NoZWNrX3NtY191cGRhdGVfcmVxdWlyZWRfZm9yX2Rpc3BsYXlfY29uZmln dXJhdGlvbihzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWcKIAlpZiAoZGF0YS0+ZGlzcGxheV90aW1pbmcu bnVtX2V4aXN0aW5nX2Rpc3BsYXlzICE9IGluZm8uZGlzcGxheV9jb3VudCkKIAkJaXNfdXBkYXRl X3JlcXVpcmVkID0gdHJ1ZTsKIAotCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX1NjbGtEZWVwU2xlZXAp KSB7CisJaWYgKFBQX0NBUChQSE1fUGxhdGZvcm1DYXBzX1NjbGtEZWVwU2xlZXApKSB7CiAJCWlm IChkYXRhLT5kaXNwbGF5X3RpbWluZy5taW5fY2xvY2tfaW5fc3IgIT0gaHdtZ3ItPmRpc3BsYXlf Y29uZmlnLm1pbl9jb3JlX3NldF9jbG9ja19pbl9zcikKIAkJCWlzX3VwZGF0ZV9yZXF1aXJlZCA9 IHRydWU7CiAJfQpAQCAtNDgxMyw4ICs0Nzg3LDcgQEAgc3RhdGljIGludCB2ZWdhMTBfZGlzYWJs ZV9kcG1fdGFza3Moc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJCSJEUE0gaXMgbm90IHJ1bm5p bmcgcmlnaHQgbm93LCBubyBuZWVkIHRvIGRpc2FibGUgRFBNISIsCiAJCQlyZXR1cm4gMCk7CiAK LQlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3Jt Q2FwcywKLQkJCVBITV9QbGF0Zm9ybUNhcHNfVGhlcm1hbENvbnRyb2xsZXIpKQorCWlmIChQUF9D QVAoUEhNX1BsYXRmb3JtQ2Fwc19UaGVybWFsQ29udHJvbGxlcikpCiAJCXZlZ2ExMF9kaXNhYmxl X3RoZXJtYWxfcHJvdGVjdGlvbihod21ncik7CiAKIAl0bXBfcmVzdWx0ID0gdmVnYTEwX2Rpc2Fi bGVfcG93ZXJfY29udGFpbm1lbnQoaHdtZ3IpOwotLSAKMi4xMi4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK