From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v3 07/19] acpi/hvmloader: Translate all addresses when assigning addresses in ACPI tables Date: Wed, 7 Sep 2016 14:59:17 -0400 Message-ID: <1473274769-19129-8-git-send-email-boris.ostrovsky@oracle.com> References: <1473274769-19129-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1473274769-19129-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, boris.ostrovsky@oracle.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Tm9uLWh2bWxvYWRlciB1c2VycyBtYXkgYmUgYnVpbGRpbmcgdGFibGVzIGluIHZpcnR1YWwgYWRk cmVzcyBzcGFjZQphbmQgdGhlcmVmb3JlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdmFsdWVz IHRoYXQgZW5kIHVwIGluIHRhYmxlcwphcmUgcGh5c2ljYWwgYWRkcmVzc2VzLgoKU2lnbmVkLW9m Zi1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KUmV2aWV3 ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB0b29scy9maXJtd2Fy ZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jIHwgNDcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jIGIv dG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvYnVpbGQuYwppbmRleCA5YzRhMGEwLi4yMDk4 OTIwIDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jCisr KyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2J1aWxkLmMKQEAgLTE0NCw3ICsxNDQs NyBAQCBzdGF0aWMgc3RydWN0IGFjcGlfMjBfbWFkdCAqY29uc3RydWN0X21hZHQoc3RydWN0IGFj cGlfY3R4dCAqY3R4dCwKICAgICAgICAgbGFwaWMgPSAoc3RydWN0IGFjcGlfMjBfbWFkdF9sYXBp YyAqKShtYWR0ICsgMSk7CiAKICAgICBpbmZvLT5ucl9jcHVzID0gaHZtaW5mby0+bnJfdmNwdXM7 Ci0gICAgaW5mby0+bWFkdF9sYXBpYzBfYWRkciA9ICh1aW50MzJfdClsYXBpYzsKKyAgICBpbmZv LT5tYWR0X2xhcGljMF9hZGRyID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwgbGFwaWMpOwogICAg IGZvciAoIGkgPSAwOyBpIDwgaHZtaW5mby0+bnJfdmNwdXM7IGkrKyApCiAgICAgewogICAgICAg ICBtZW1zZXQobGFwaWMsIDAsIHNpemVvZigqbGFwaWMpKTsKQEAgLTE2MSw3ICsxNjEsOCBAQCBz dGF0aWMgc3RydWN0IGFjcGlfMjBfbWFkdCAqY29uc3RydWN0X21hZHQoc3RydWN0IGFjcGlfY3R4 dCAqY3R4dCwKICAgICBtYWR0LT5oZWFkZXIubGVuZ3RoID0gKHVuc2lnbmVkIGNoYXIgKilsYXBp YyAtICh1bnNpZ25lZCBjaGFyICopbWFkdDsKICAgICBzZXRfY2hlY2tzdW0obWFkdCwgb2Zmc2V0 b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSksCiAgICAgICAgICAgICAgICAgIG1hZHQt PmhlYWRlci5sZW5ndGgpOwotICAgIGluZm8tPm1hZHRfY3N1bV9hZGRyID0gKHVpbnQzMl90KSZt YWR0LT5oZWFkZXIuY2hlY2tzdW07CisgICAgaW5mby0+bWFkdF9jc3VtX2FkZHIgPQorICAgICAg ICBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCAmbWFkdC0+aGVhZGVyLmNoZWNrc3VtKTsKIAogICAg IHJldHVybiBtYWR0OwogfQpAQCAtMzI3LDcgKzMyOCw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0 X3Bhc3N0aHJvdWdoX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIG1lbWNweShidWZmZXIsIGhlYWRlciwgaGVhZGVyLT5sZW5ndGgpOwog Ci0gICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpYnVmZmVy OworICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0 eHQsIGJ1ZmZlcik7CiAgICAgICAgIHRvdGFsICs9IGhlYWRlci0+bGVuZ3RoOwogICAgICAgICBw dF9hZGRyICs9IGhlYWRlci0+bGVuZ3RoOwogICAgIH0KQEAgLTM1NCw3ICszNTUsNyBAQCBzdGF0 aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQs CiAgICAgewogICAgICAgICBtYWR0ID0gY29uc3RydWN0X21hZHQoY3R4dCwgY29uZmlnLCBpbmZv KTsKICAgICAgICAgaWYgKCFtYWR0KSByZXR1cm4gLTE7Ci0gICAgICAgIHRhYmxlX3B0cnNbbnJf dGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpbWFkdDsKKyAgICAgICAgdGFibGVfcHRyc1tucl90 YWJsZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCBtYWR0KTsKICAgICB9CiAKICAgICAv KiBIUEVULiAqLwpAQCAtMzYyLDcgKzM2Myw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29u ZGFyeV90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKICAgICB7CiAgICAgICAgIGhwZXQg PSBjb25zdHJ1Y3RfaHBldChjdHh0LCBjb25maWcpOwogICAgICAgICBpZiAoIWhwZXQpIHJldHVy biAtMTsKLSAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSAodW5zaWduZWQgbG9uZylo cGV0OworICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJw KGN0eHQsIGhwZXQpOwogICAgIH0KIAogICAgIC8qIFdBRVQuICovCkBAIC0zNzEsNyArMzcyLDcg QEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0 ICpjdHh0LAogICAgICAgICB3YWV0ID0gY29uc3RydWN0X3dhZXQoY3R4dCwgY29uZmlnKTsKICAg ICAgICAgaWYgKCAhd2FldCApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHRhYmxl X3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpd2FldDsKKyAgICAgICAgdGFibGVf cHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCB3YWV0KTsKICAgICB9 CiAKICAgICBpZiAoIGNvbmZpZy0+dGFibGVfZmxhZ3MgJiBBQ1BJX0hBU19TU0RUX1BNICkKQEAg LTM3OSw3ICszODAsNyBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHN0 cnVjdCBhY3BpX2N0eHQgKmN0eHQsCiAgICAgICAgIHNzZHQgPSBjdHh0LT5tZW1fb3BzLmFsbG9j KGN0eHQsIHNpemVvZihzc2R0X3BtKSwgMTYpOwogICAgICAgICBpZiAoIXNzZHQpIHJldHVybiAt MTsKICAgICAgICAgbWVtY3B5KHNzZHQsIHNzZHRfcG0sIHNpemVvZihzc2R0X3BtKSk7Ci0gICAg ICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpc3NkdDsKKyAgICAg ICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCBzc2R0 KTsKICAgICB9CiAKICAgICBpZiAoIGNvbmZpZy0+dGFibGVfZmxhZ3MgJiBBQ1BJX0hBU19TU0RU X1MzICkKQEAgLTM4Nyw3ICszODgsNyBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlf dGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCiAgICAgICAgIHNzZHQgPSBjdHh0LT5tZW1f b3BzLmFsbG9jKGN0eHQsIHNpemVvZihzc2R0X3MzKSwgMTYpOwogICAgICAgICBpZiAoIXNzZHQp IHJldHVybiAtMTsKICAgICAgICAgbWVtY3B5KHNzZHQsIHNzZHRfczMsIHNpemVvZihzc2R0X3Mz KSk7Ci0gICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpc3Nk dDsKKyAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChj dHh0LCBzc2R0KTsKICAgICB9IGVsc2UgewogICAgICAgICBwcmludGYoIlMzIGRpc2FibGVkXG4i KTsKICAgICB9CkBAIC0zOTcsNyArMzk4LDcgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25k YXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgICAgICBzc2R0ID0gY3R4dC0+ bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF9zNCksIDE2KTsKICAgICAgICAgaWYgKCFz c2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3M0LCBzaXplb2Yoc3Nk dF9zNCkpOwotICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25n KXNzZHQ7CisgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gY3R4dC0+bWVtX29wcy52 MnAoY3R4dCwgc3NkdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHJpbnRmKCJTNCBkaXNhYmxl ZFxuIik7CiAgICAgfQpAQCAtNDExLDEyICs0MTIsMTIgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rf c2Vjb25kYXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgICAgICBzc2R0ID0g Y3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF90cG0pLCAxNik7CiAgICAgICAg IGlmICghc3NkdCkgcmV0dXJuIC0xOwogICAgICAgICBtZW1jcHkoc3NkdCwgc3NkdF90cG0sIHNp emVvZihzc2R0X3RwbSkpOwotICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNp Z25lZCBsb25nKXNzZHQ7CisgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gY3R4dC0+ bWVtX29wcy52MnAoY3R4dCwgc3NkdCk7CiAKICAgICAgICAgdGNwYSA9IGN0eHQtPm1lbV9vcHMu YWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3RjcGEpLCAxNik7CiAgICAgICAgIGlm ICghdGNwYSkgcmV0dXJuIC0xOwogICAgICAgICBtZW1zZXQodGNwYSwgMCwgc2l6ZW9mKCp0Y3Bh KSk7Ci0gICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpdGNw YTsKKyAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChj dHh0LCB0Y3BhKTsKIAogICAgICAgICB0Y3BhLT5oZWFkZXIuc2lnbmF0dXJlID0gQUNQSV8yXzBf VENQQV9TSUdOQVRVUkU7CiAgICAgICAgIHRjcGEtPmhlYWRlci5sZW5ndGggICAgPSBzaXplb2Yo KnRjcGEpOwpAQCAtNDQ0LDExICs0NDUsMTEgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25k YXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgICAgICBzdHJ1Y3QgYWNwaV8y MF9zbGl0ICpzbGl0ID0gY29uc3RydWN0X3NsaXQoY3R4dCwgY29uZmlnKTsKIAogICAgICAgICBp ZiAoIHNyYXQgKQotICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSAodW5zaWdu ZWQgbG9uZylzcmF0OworICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0 LT5tZW1fb3BzLnYycChjdHh0LCBzcmF0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJp bnRmKCJGYWlsZWQgdG8gYnVpbGQgU1JBVCwgc2tpcHBpbmcuLi5cbiIpOwogICAgICAgICBpZiAo IHNsaXQgKQotICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSAodW5zaWduZWQg bG9uZylzbGl0OworICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5t ZW1fb3BzLnYycChjdHh0LCBzbGl0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJpbnRm KCJGYWlsZWQgdG8gYnVpbGQgU0xJVCwgc2tpcHBpbmcuLi5cbiIpOwogICAgIH0KQEAgLTU2Miw4 ICs1NjMsOCBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQs IHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIG1lbWNweShmYWR0XzEwLCAmRmFkdCwg c2l6ZW9mKHN0cnVjdCBhY3BpXzEwX2ZhZHQpKTsKICAgICBmYWR0XzEwLT5oZWFkZXIubGVuZ3Ro ID0gc2l6ZW9mKHN0cnVjdCBhY3BpXzEwX2ZhZHQpOwogICAgIGZhZHRfMTAtPmhlYWRlci5yZXZp c2lvbiA9IEFDUElfMV8wX0ZBRFRfUkVWSVNJT047Ci0gICAgZmFkdF8xMC0+ZHNkdCAgICAgICAg ICA9ICh1bnNpZ25lZCBsb25nKWRzZHQ7Ci0gICAgZmFkdF8xMC0+ZmlybXdhcmVfY3RybCA9ICh1 bnNpZ25lZCBsb25nKWZhY3M7CisgICAgZmFkdF8xMC0+ZHNkdCAgICAgICAgICA9IGN0eHQtPm1l bV9vcHMudjJwKGN0eHQsIGRzZHQpOworICAgIGZhZHRfMTAtPmZpcm13YXJlX2N0cmwgPSBjdHh0 LT5tZW1fb3BzLnYycChjdHh0LCBmYWNzKTsKICAgICBzZXRfY2hlY2tzdW0oZmFkdF8xMCwKICAg ICAgICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSksCiAg ICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV8xMF9mYWR0KSk7CkBAIC01NzEsMTAg KzU3MiwxMCBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQs IHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIGZhZHQgPSBjdHh0LT5tZW1fb3BzLmFs bG9jKGN0eHQsIHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9mYWR0KSwgMTYpOwogICAgIGlmICghZmFk dCkgZ290byBvb207CiAgICAgbWVtY3B5KGZhZHQsICZGYWR0LCBzaXplb2Yoc3RydWN0IGFjcGlf MjBfZmFkdCkpOwotICAgIGZhZHQtPmRzZHQgICA9ICh1bnNpZ25lZCBsb25nKWRzZHQ7Ci0gICAg ZmFkdC0+eF9kc2R0ID0gKHVuc2lnbmVkIGxvbmcpZHNkdDsKLSAgICBmYWR0LT5maXJtd2FyZV9j dHJsICAgPSAodW5zaWduZWQgbG9uZylmYWNzOwotICAgIGZhZHQtPnhfZmlybXdhcmVfY3RybCA9 ICh1bnNpZ25lZCBsb25nKWZhY3M7CisgICAgZmFkdC0+ZHNkdCAgID0gY3R4dC0+bWVtX29wcy52 MnAoY3R4dCwgZHNkdCk7CisgICAgZmFkdC0+eF9kc2R0ID0gY3R4dC0+bWVtX29wcy52MnAoY3R4 dCwgZHNkdCk7CisgICAgZmFkdC0+ZmlybXdhcmVfY3RybCAgID0gY3R4dC0+bWVtX29wcy52MnAo Y3R4dCwgZmFjcyk7CisgICAgZmFkdC0+eF9maXJtd2FyZV9jdHJsID0gY3R4dC0+bWVtX29wcy52 MnAoY3R4dCwgZmFjcyk7CiAgICAgc2V0X2NoZWNrc3VtKGZhZHQsCiAgICAgICAgICAgICAgICAg IG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRlciwgY2hlY2tzdW0pLAogICAgICAgICAgICAgICAg ICBzaXplb2Yoc3RydWN0IGFjcGlfMjBfZmFkdCkpOwpAQCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQg YWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgc3RydWN0IGFjcGlfY29u ZmlnICpjb25maWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYpOwogICAgIGlm ICgheHNkdCkgZ290byBvb207CiAgICAgbWVtY3B5KHhzZHQsICZYc2R0LCBzaXplb2Yoc3RydWN0 IGFjcGlfaGVhZGVyKSk7Ci0gICAgeHNkdC0+ZW50cnlbMF0gPSAodW5zaWduZWQgbG9uZylmYWR0 OworICAgIHhzZHQtPmVudHJ5WzBdID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwgZmFkdCk7CiAg ICAgZm9yICggaSA9IDA7IHNlY29uZGFyeV90YWJsZXNbaV07IGkrKyApCiAgICAgICAgIHhzZHQt PmVudHJ5W2krMV0gPSBzZWNvbmRhcnlfdGFibGVzW2ldOwogICAgIHhzZHQtPmhlYWRlci5sZW5n dGggPSBzaXplb2Yoc3RydWN0IGFjcGlfaGVhZGVyKSArIChpKzEpKnNpemVvZih1aW50NjRfdCk7 CkBAIC02MDIsNyArNjAzLDcgQEAgdm9pZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9j dHh0ICpjdHh0LCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxNik7CiAgICAgaWYgKCFyc2R0KSBnb3RvIG9vbTsKICAgICBtZW1jcHko cnNkdCwgJlJzZHQsIHNpemVvZihzdHJ1Y3QgYWNwaV9oZWFkZXIpKTsKLSAgICByc2R0LT5lbnRy eVswXSA9ICh1bnNpZ25lZCBsb25nKWZhZHRfMTA7CisgICAgcnNkdC0+ZW50cnlbMF0gPSBjdHh0 LT5tZW1fb3BzLnYycChjdHh0LCBmYWR0XzEwKTsKICAgICBmb3IgKCBpID0gMDsgc2Vjb25kYXJ5 X3RhYmxlc1tpXTsgaSsrICkKICAgICAgICAgcnNkdC0+ZW50cnlbaSsxXSA9IHNlY29uZGFyeV90 YWJsZXNbaV07CiAgICAgcnNkdC0+aGVhZGVyLmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9o ZWFkZXIpICsgKGkrMSkqc2l6ZW9mKHVpbnQzMl90KTsKQEAgLTYxNiw4ICs2MTcsOCBAQCB2b2lk IGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsIHN0cnVjdCBhY3BpX2Nv bmZpZyAqY29uZmlnKQogICAgIHJzZHAgPSAoc3RydWN0IGFjcGlfMjBfcnNkcCAqKWNvbmZpZy0+ cnNkcDsKIAogICAgIG1lbWNweShyc2RwLCAmUnNkcCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3Jz ZHApKTsKLSAgICByc2RwLT5yc2R0X2FkZHJlc3MgPSAodW5zaWduZWQgbG9uZylyc2R0OwotICAg IHJzZHAtPnhzZHRfYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKXhzZHQ7CisgICAgcnNkcC0+cnNk dF9hZGRyZXNzID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwgcnNkdCk7CisgICAgcnNkcC0+eHNk dF9hZGRyZXNzID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwgeHNkdCk7CiAgICAgc2V0X2NoZWNr c3VtKHJzZHAsCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVjdCBhY3BpXzEwX3JzZHAs IGNoZWNrc3VtKSwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpXzEwX3JzZHAp KTsKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK