From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v2 11/15] tools/libacpi: load ACPI built by the device model Date: Mon, 20 Mar 2017 08:09:45 +0800 Message-ID: <20170320000949.24675-12-haozhong.zhang@intel.com> References: <20170320000949.24675-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320000949.24675-1-haozhong.zhang@intel.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: Haozhong Zhang , Wei Liu , Andrew Cooper , Ian Jackson , Jan Beulich , Konrad Rzeszutek Wilk , Dan Williams List-Id: xen-devel@lists.xenproject.org QUNQSSB0YWJsZXMgYnVpbHQgYnkgdGhlIGRldmljZSBtb2RlbCwgd2hvc2Ugc2lnbmF0dXJlcyBk byBub3QKY29uZmxpY3Qgd2l0aCB0YWJsZXMgYnVpbHQgYnkgWGVuIChleGNlcHQgU1NEVCksIGFy ZSBsb2FkZWQgYWZ0ZXIgQUNQSQp0YWJsZXMgYnVpbHQgYnkgWGVuLgoKQUNQSSBuYW1lc3BhY2Ug ZGV2aWNlcyBidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsLCB3aG9zZSBuYW1lcyBkbyBub3QKY29u ZmxpY3Qgd2l0aCBkZXZpY2VzIGJ1aWx0IGJ5IFhlbiwgYXJlIGFzc2VtYmxlZCBhbmQgcGxhY2Vk IGluIFNTRFRzCmFmdGVyIEFDUEkgdGFibGVzIGJ1aWx0IGJ5IFhlbi4KClNpZ25lZC1vZmYtYnk6 IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29t PgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCkNoYW5nZXMgaW4gdjI6CiAqIEFk ZCBkbV9hY3BpX3tzaWduYXR1cmUsIGRldm5hbWV9X2JsYWNrbGlzdF9yZWdpc3RlcigpIHRvIGxl dCBlYWNoIGFjcGkKICAgY29uc3RydWN0IGZ1bmN0aW9uIHJlZ2lzdGVyIHRhYmxlcyBhbmQgbmFt ZXNwYWNlIGRldmljZXMgdGhhdCBzaG91bGQKICAgbm90IGJlIGxvYWRlZCBmcm9tIERNIEFDUEku Ci0tLQogdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYyB8ICAxNSArKwogdG9vbHMvbGli YWNwaS9hY3BpMl8wLmggICAgICAgICB8ICAgMiArCiB0b29scy9saWJhY3BpL2J1aWxkLmMgICAg ICAgICAgIHwgMzExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRv b2xzL2xpYmFjcGkvbGliYWNwaS5oICAgICAgICAgfCAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwg MzM2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIv dXRpbC5jIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYwppbmRleCBlYzBkZTcxMWMy Li4yOTViNzQ4ODI5IDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5j CisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMKQEAgLTEwMDAsNiArMTAwMCwy MSBAQCB2b2lkIGh2bWxvYWRlcl9hY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcg KmNvbmZpZywKICAgICBpZiAoICFzdHJuY21wKHhlbnN0b3JlX3JlYWQoInBsYXRmb3JtL2FjcGlf czQiLCAiMSIpLCAiMSIsIDEpICApCiAgICAgICAgIGNvbmZpZy0+dGFibGVfZmxhZ3MgfD0gQUNQ SV9IQVNfU1NEVF9TNDsKIAorICAgIHMgPSB4ZW5zdG9yZV9yZWFkKEhWTV9YU19ETV9BQ1BJX0FE RFJFU1MsIE5VTEwpOworICAgIGlmICggcyApCisgICAgeworICAgICAgICBjb25maWctPmRtLmFk ZHIgPSBzdHJ0b2xsKHMsIE5VTEwsIDApOworCisgICAgICAgIHMgPSB4ZW5zdG9yZV9yZWFkKEhW TV9YU19ETV9BQ1BJX0xFTkdUSCwgTlVMTCk7CisgICAgICAgIGlmICggcyApCisgICAgICAgIHsK KyAgICAgICAgICAgIGNvbmZpZy0+ZG0ubGVuZ3RoID0gc3RydG9sbChzLCBOVUxMLCAwKTsKKyAg ICAgICAgICAgIGNvbmZpZy0+dGFibGVfZmxhZ3MgfD0gQUNQSV9IQVNfRE07CisgICAgICAgIH0K KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uZmlnLT5kbS5hZGRyID0gMDsKKyAgICB9CisK ICAgICBjb25maWctPnRhYmxlX2ZsYWdzIHw9IChBQ1BJX0hBU19UQ1BBIHwgQUNQSV9IQVNfSU9B UElDIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0hBU19XQUVUIHwgQUNQSV9I QVNfUE1USU1FUiB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9IQVNfQlVUVE9O UyB8IEFDUElfSEFTX1ZHQSB8CmRpZmYgLS1naXQgYS90b29scy9saWJhY3BpL2FjcGkyXzAuaCBi L3Rvb2xzL2xpYmFjcGkvYWNwaTJfMC5oCmluZGV4IDI2MTliYTMyZGIuLjM2NTgyNWU2YmMgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvYWNwaTJfMC5oCisrKyBiL3Rvb2xzL2xpYmFjcGkvYWNw aTJfMC5oCkBAIC00MzUsNiArNDM1LDcgQEAgc3RydWN0IGFjcGlfMjBfc2xpdCB7CiAjZGVmaW5l IEFDUElfMl8wX1dBRVRfU0lHTkFUVVJFIEFTQ0lJMzIoJ1cnLCdBJywnRScsJ1QnKQogI2RlZmlu ZSBBQ1BJXzJfMF9TUkFUX1NJR05BVFVSRSBBU0NJSTMyKCdTJywnUicsJ0EnLCdUJykKICNkZWZp bmUgQUNQSV8yXzBfU0xJVF9TSUdOQVRVUkUgQVNDSUkzMignUycsJ0wnLCdJJywnVCcpCisjZGVm aW5lIEFDUElfMl8wX1NTRFRfU0lHTkFUVVJFIEFTQ0lJMzIoJ1MnLCdTJywnRCcsJ1QnKQogCiAv KgogICogVGFibGUgcmV2aXNpb24gbnVtYmVycy4KQEAgLTQ0OSw2ICs0NTAsNyBAQCBzdHJ1Y3Qg YWNwaV8yMF9zbGl0IHsKICNkZWZpbmUgQUNQSV8xXzBfRkFEVF9SRVZJU0lPTiAweDAxCiAjZGVm aW5lIEFDUElfMl8wX1NSQVRfUkVWSVNJT04gMHgwMQogI2RlZmluZSBBQ1BJXzJfMF9TTElUX1JF VklTSU9OIDB4MDEKKyNkZWZpbmUgQUNQSV8yXzBfU1NEVF9SRVZJU0lPTiAweDAyCiAKICNwcmFn bWEgcGFjayAoKQogCmRpZmYgLS1naXQgYS90b29scy9saWJhY3BpL2J1aWxkLmMgYi90b29scy9s aWJhY3BpL2J1aWxkLmMKaW5kZXggYTAyZmZiZjQzYy4uNjJjMjU3MGI3ZCAxMDA2NDQKLS0tIGEv dG9vbHMvbGliYWNwaS9idWlsZC5jCisrKyBiL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYwpAQCAtMTUs NiArMTUsNyBAQAogCiAjaW5jbHVkZSBMSUJBQ1BJX1NURFVUSUxTCiAjaW5jbHVkZSAiYWNwaTJf MC5oIgorI2luY2x1ZGUgImFtbF9idWlsZC5oIgogI2luY2x1ZGUgImxpYmFjcGkuaCIKICNpbmNs dWRlICJzc2R0X3MzLmgiCiAjaW5jbHVkZSAic3NkdF9zNC5oIgpAQCAtNTUsNiArNTYsMTQgQEAg c3RydWN0IGFjcGlfaW5mbyB7CiAgICAgdWludDY0X3QgcGNpX2hpX21pbiwgcGNpX2hpX2xlbjsg LyogMjQsIDMyIC0gUENJIEkvTyBob2xlIGJvdW5kYXJpZXMgKi8KIH07CiAKKyNkZWZpbmUgRE1f QUNQSV9CTE9CX1RZUEVfVEFCTEUgMCAvKiBBQ1BJIHRhYmxlICovCisjZGVmaW5lIERNX0FDUElf QkxPQl9UWVBFX05TREVWIDEgLyogQU1MIG9mIGFuIEFDUEkgbmFtZXNwYWNlIGRldmljZSAqLwor CisvKiBBQ1BJIHRhYmxlcyBvZiBmb2xsb3dpbmcgc2lnbmF0dXJlcyBzaG91bGQgbm90IGFwcGVh ciBpbiBETSBBQ1BJICovCitzdGF0aWMgdWludDY0X3QgZG1fYWNwaV9zaWduYXR1cmVfYmxhY2ts aXN0WzY0XTsKKy8qIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgb2YgZm9sbG93aW5nIG5hbWVzIHNo b3VsZCBub3QgYXBwZWFyIGluIERNIEFDUEkgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkbV9hY3Bp X2Rldm5hbWVfYmxhY2tsaXN0WzY0XTsKKwogc3RhdGljIHZvaWQgc2V0X2NoZWNrc3VtKAogICAg IHZvaWQgKnRhYmxlLCB1aW50MzJfdCBjaGVja3N1bV9vZmZzZXQsIHVpbnQzMl90IGxlbmd0aCkK IHsKQEAgLTMzOSw2ICszNDgsMjgxIEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3Bhc3N0aHJvdWdo X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgIHJldHVybiBucl9hZGRlZDsKIH0K IAorc3RhdGljIGJvb2wgaGFzX2RtX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykK K3sKKyAgICBjaGFyICoqZGlyOworICAgIHVuc2lnbmVkIGludCBudW07CisKKyAgICBpZiAoICEo Y29uZmlnLT50YWJsZV9mbGFncyAmIEFDUElfSEFTX0RNKSB8fCAhY29uZmlnLT5kbS5hZGRyICkK KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGlyID0gY3R4dC0+eHNfb3BzLmRpcmVjdG9y eShjdHh0LCBIVk1fWFNfRE1fQUNQSV9ST09ULCAmbnVtKTsKKyAgICBpZiAoICFkaXIgfHwgIW51 bSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0 aWMgaW50IGRtX2FjcGlfc2lnbmF0dXJlX2JsYWNrbGlzdF9yZWdpc3Rlcihjb25zdCBzdHJ1Y3Qg YWNwaV9jb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IHNpZykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgbnIgPSBB UlJBWV9TSVpFKGRtX2FjcGlfc2lnbmF0dXJlX2JsYWNrbGlzdCk7CisKKyAgICBpZiAoICEoY29u ZmlnLT50YWJsZV9mbGFncyAmIEFDUElfSEFTX0RNKSApCisgICAgICAgIHJldHVybiAwOworCisg ICAgZm9yICggaSA9IDA7IGkgPCBucjsgaSsrICkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IGVu dHJ5ID0gZG1fYWNwaV9zaWduYXR1cmVfYmxhY2tsaXN0W2ldOworICAgICAgICBpZiAoIGVudHJ5 ID09IHNpZyApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZSBpZiAoIGVudHJ5 ID09IDAgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCBpID49IG5yICkK KyAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisKKyAgICBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xp c3RbaV0gPSBzaWc7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZG1fYWNwaV9kZXZu YW1lX2JsYWNrbGlzdF9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpkZXZuYW1lKQoreworICAgIHVuc2lnbmVkIGludCBpLCBuciA9IEFSUkFZX1NJWkUoZG1fYWNw aV9kZXZuYW1lX2JsYWNrbGlzdCk7CisKKyAgICBpZiAoICEoY29uZmlnLT50YWJsZV9mbGFncyAm IEFDUElfSEFTX0RNKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yICggaSA9IDA7IGkg PCBucjsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKmVudHJ5ID0gZG1fYWNwaV9k ZXZuYW1lX2JsYWNrbGlzdFtpXTsKKyAgICAgICAgaWYgKCAhZW50cnkgKQorICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGlmICggIXN0cm5jbXAoZW50cnksIGRldm5hbWUsIDQpICkKKyAgICAg ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggaSA+IG5yICkKKyAgICAgICAgcmV0 dXJuIC1FTk9TUEM7CisKKyAgICBkbV9hY3BpX2Rldm5hbWVfYmxhY2tsaXN0W2ldID0gZGV2bmFt ZTsKKyAgICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuIHRydWUgaWYgbm8gY29sbGlzaW9uIGlz IGZvdW5kLiAqLworc3RhdGljIGJvb2wgY2hlY2tfc2lnbmF0dXJlX2NvbGxpc2lvbih1aW50NjRf dCBzaWcpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgZm9yICggaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGRtX2FjcGlfc2lnbmF0dXJlX2JsYWNrbGlzdCk7IGkrKyApCisgICAgeworICAgICAg ICBpZiAoIHNpZyA9PSBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xpc3RbaV0gKQorICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyogUmV0dXJu IHRydWUgaWYgbm8gY29sbGlzaW9uIGlzIGZvdW5kLiAqLworc3RhdGljIGludCBjaGVja19kZXZu YW1lX2NvbGxpc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIHVuc2lnbmVkIGludCBpOwor ICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShkbV9hY3BpX2Rldm5hbWVfYmxhY2tsaXN0 KTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggIXN0cm5jbXAobmFtZSwgZG1fYWNwaV9kZXZu YW1lX2JsYWNrbGlzdFtpXSwgNCkgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K KyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnhzX3JlYWRfZG1fYWNw aV9ibG9iX2tleShzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICprZXkp Cit7CisvKgorICogbmFtZSBpcyBzdXBwb3NlZCB0byBiZSA0IGNoYXJhY3RlcnMgYXQgbW9zdCwg YW5kIHRoZSBsb25nZXN0IEBrZXkKKyAqIHNvIGZhciBpcyAnYWRkcmVzcycgKDcpLCBzbyAzMCBj aGFyYWN0ZXJzIGlzIGVub3VnaCB0byBob2xkIHRoZQorICogbG9uZ2VzdCBwYXRoIEhWTV9YU19E TV9BQ1BJX1JPT1QvbmFtZS9rZXkuCisgKi8KKyNkZWZpbmUgRE1fQUNQSV9CTE9CX1BBVEhfTUFY X0xFTkdUSCAgIDMwCisgICAgY2hhciBwYXRoW0RNX0FDUElfQkxPQl9QQVRIX01BWF9MRU5HVEhd OworICAgIHNucHJpbnRmKHBhdGgsIERNX0FDUElfQkxPQl9QQVRIX01BWF9MRU5HVEgsIEhWTV9Y U19ETV9BQ1BJX1JPT1QiLyVzLyVzIiwKKyAgICAgICAgICAgICBuYW1lLCBrZXkpOworICAgIHJl dHVybiBjdHh0LT54c19vcHMucmVhZChjdHh0LCBwYXRoKTsKK30KKworc3RhdGljIGJvb2wgY29u c3RydWN0X2RtX3RhYmxlKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqdGFibGVfcHRycywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfdGFibGVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJsb2IsIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAg ICBjb25zdCBzdHJ1Y3QgYWNwaV9oZWFkZXIgKmhlYWRlciA9IGJsb2I7CisgICAgdWludDhfdCAq YnVmZmVyOworCisgICAgaWYgKCAhY2hlY2tfc2lnbmF0dXJlX2NvbGxpc2lvbihoZWFkZXItPnNp Z25hdHVyZSkgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIGhlYWRlci0+bGVu Z3RoID4gbGVuZ3RoIHx8IGhlYWRlci0+bGVuZ3RoID09IDAgKQorICAgICAgICByZXR1cm4gZmFs c2U7CisKKyAgICBidWZmZXIgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIGhlYWRlci0+bGVu Z3RoLCAxNik7CisgICAgaWYgKCAhYnVmZmVyICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg IG1lbWNweShidWZmZXIsIGhlYWRlciwgaGVhZGVyLT5sZW5ndGgpOworCisgICAgLyogc29tZSBk ZXZpY2UgbW9kZWxzIChlLmcuIFFFTVUpIGRvZXMgbm90IHNldCBjaGVja3N1bSAqLworICAgIHNl dF9jaGVja3N1bShidWZmZXIsIG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRlciwgY2hlY2tzdW0p LAorICAgICAgICAgICAgICAgICBoZWFkZXItPmxlbmd0aCk7CisKKyAgICB0YWJsZV9wdHJzW25y X3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGJ1ZmZlcik7CisKKyAgICByZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3RydWN0X2RtX25zZGV2KHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyAqdGFibGVfcHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbnJfdGFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KmRldl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJs b2IsIHVpbnQzMl90IGJsb2JfbGVuZ3RoKQoreworICAgIHN0cnVjdCBhY3BpX2hlYWRlciBzc2R0 LCAqaGVhZGVyOworICAgIHVpbnQ4X3QgKmJ1ZmZlcjsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAo ICFjaGVja19kZXZuYW1lX2NvbGxpc2lvbihkZXZfbmFtZSkgKQorICAgICAgICByZXR1cm4gZmFs c2U7CisKKyNkZWZpbmUgQU1MX0JVSUxEKFNUTVQpICAgICAgICAgICBcCisgICAgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByYyA9IFNUTVQ7ICAgICAgICAgICAgICAg IFwKKyAgICAgICAgaWYgKCByYyApICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBnb3Rv IG91dDsgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICAvKiBidWlsdCBBQ1BJ IG5hbWVzcGFjZSBkZXZpY2UgZnJvbSBbbmFtZSwgYmxvYl0gKi8KKyAgICBidWZmZXIgPSBhbWxf YnVpbGRfYmVnaW4oY3R4dCk7CisgICAgaWYgKCAhYnVmZmVyICkKKyAgICAgICAgcmV0dXJuIGZh bHNlOworCisgICAgQU1MX0JVSUxEKGFtbF9wcmVwZW5kX2Jsb2IoYnVmZmVyLCBibG9iLCBibG9i X2xlbmd0aCkpOworICAgIEFNTF9CVUlMRChhbWxfcHJlcGVuZF9kZXZpY2UoYnVmZmVyLCBkZXZf bmFtZSkpOworICAgIEFNTF9CVUlMRCgoYW1sX3ByZXBlbmRfc2NvcGUoYnVmZmVyLCAiXFxfU0Ii KSkpOworCisgICAgLyogYnVpbGQgU1NEVCBoZWFkZXIgKi8KKyAgICBzc2R0LnNpZ25hdHVyZSA9 IEFDUElfMl8wX1NTRFRfU0lHTkFUVVJFOworICAgIHNzZHQucmV2aXNpb24gPSBBQ1BJXzJfMF9T U0RUX1JFVklTSU9OOworICAgIGZpeGVkX3N0cmNweShzc2R0Lm9lbV9pZCwgQUNQSV9PRU1fSUQp OworICAgIGZpeGVkX3N0cmNweShzc2R0Lm9lbV90YWJsZV9pZCwgQUNQSV9PRU1fVEFCTEVfSUQp OworICAgIHNzZHQub2VtX3JldmlzaW9uID0gQUNQSV9PRU1fUkVWSVNJT047CisgICAgc3NkdC5j cmVhdG9yX2lkID0gQUNQSV9DUkVBVE9SX0lEOworICAgIHNzZHQuY3JlYXRvcl9yZXZpc2lvbiA9 IEFDUElfQ1JFQVRPUl9SRVZJU0lPTjsKKworICAgIC8qIHByZXBlbmQgU1NEVCBoZWFkZXIgdG8g QUNQSSBuYW1lc3BhY2UgZGV2aWNlICovCisgICAgQU1MX0JVSUxEKGFtbF9wcmVwZW5kX2Jsb2Io YnVmZmVyLCAmc3NkdCwgc2l6ZW9mKHNzZHQpKSk7CisgICAgaGVhZGVyID0gKHN0cnVjdCBhY3Bp X2hlYWRlciAqKSBidWZmZXI7CisKK291dDoKKyAgICBoZWFkZXItPmxlbmd0aCA9IGFtbF9idWls ZF9lbmQoKTsKKworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv KiBjYWxjdWxhdGUgY2hlY2tzdW0gb2YgU1NEVCAqLworICAgIHNldF9jaGVja3N1bShoZWFkZXIs IG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRlciwgY2hlY2tzdW0pLAorICAgICAgICAgICAgICAg ICBoZWFkZXItPmxlbmd0aCk7CisKKyAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQt Pm1lbV9vcHMudjJwKGN0eHQsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIEFsbCBBQ1BJIHN0dWZmcyBidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsIGFyZSBwbGFjZWQg aW4gdGhlIGd1ZXN0CisgKiBidWZmZXIgd2hvc2UgYWRkcmVzcyBhbmQgc2l6ZSBhcmUgc3BlY2lm aWVkIGJ5IGNvbmZpZy0+ZG0ue2FkZHIsIGxlbmd0aH0sCisgKiBvciBYZW5TdG9yZSBrZXlzIEhW TV9YU19ETV9BQ1BJX3tBRERSRVNTLCBMRU5HVEh9LgorICoKKyAqIFRoZSBkYXRhIGxheW91dCB3 aXRoaW4gdGhlIGJ1ZmZlciBpcyBmdXJ0aGVyIHNwZWNpZmllZCBieSBYZW5TdG9yZQorICogZGly ZWN0b3JpZXMgdW5kZXIgSFZNX1hTX0RNX0FDUElfUk9PVC4gRWFjaCBkaXJlY3Rvcnkgc3BlY2lm aWVzIGEKKyAqIGRhdGEgYmxvYiBhbmQgY29udGFpbnMgZm9sbG93aW5nIFhlblN0b3JlIGtleXM6 CisgKgorICogLSAidHlwZSI6CisgKiAgICogRE1fQUNQSV9CTE9CX1RZUEVfVEFCTEUKKyAqICAg ICBUaGUgZGF0YSBibG9iIHNwZWNpZmllZCBieSB0aGlzIGRpcmVjdG9yeSBpcyBhbiBBQ1BJIHRh YmxlLgorICogICAqIERNX0FDUElfQkxPQl9UWVBFX05TREVWCisgKiAgICAgVGhlIGRhdGEgYmxv YiBzcGVjaWZpZWQgYnkgdGhpcyBkaXJlY3RvcnkgaXMgYW4gQUNQSSBuYW1lc3BhY2UgZGV2aWNl LgorICogICAgIEl0cyBuYW1lIGlzIHNwZWNpZmllZCBieSB0aGUgZGlyZWN0b3J5IG5hbWUsIHdo aWxlIHRoZSBBTUwgY29kZSBvZiB0aGUKKyAqICAgICBib2R5IG9mIHRoZSBBTUwgZGV2aWNlIHN0 cnVjdHVyZSBpcyBpbiB0aGUgZGF0YSBibG9iLgorICoKKyAqIC0gImxlbmd0aCI6IHRoZSBudW1i ZXIgb2YgYnl0ZXMgaW4gdGhpcyBkYXRhIGJsb2IuCisgKgorICogLSAib2Zmc2V0IjogdGhlIG9m ZnNldCBpbiBieXRlcyBvZiB0aGlzIGRhdGEgYmxvYiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYnVm ZmVyCisgKi8KK3N0YXRpYyBpbnQgY29uc3RydWN0X2RtX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0 ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnRh YmxlX3B0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5y X3RhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNwaV9jb25m aWcgKmNvbmZpZykKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIGNoYXIgKipkaXI7CisgICAg dWludDhfdCB0eXBlOworICAgIHZvaWQgKmJsb2I7CisgICAgdW5zaWduZWQgaW50IG51bSwgbGVu Z3RoLCBvZmZzZXQsIGksIG5yX2FkZGVkID0gMDsKKworICAgIGlmICggIWNvbmZpZy0+ZG0uYWRk ciApCisgICAgICAgIHJldHVybiAwOworCisgICAgZGlyID0gY3R4dC0+eHNfb3BzLmRpcmVjdG9y eShjdHh0LCBIVk1fWFNfRE1fQUNQSV9ST09ULCAmbnVtKTsKKyAgICBpZiAoICFkaXIgfHwgIW51 bSApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBudW0gPiBBQ1BJX01BWF9TRUNPTkRB UllfVEFCTEVTIC0gbnJfdGFibGVzICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IG51bTsgaSsrLCBkaXIrKyApCisgICAgeworICAgICAgICBpZiAoICpkaXIgPT0g TlVMTCApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzID0geHNfcmVhZF9kbV9h Y3BpX2Jsb2Jfa2V5KGN0eHQsICpkaXIsICJ0eXBlIik7CisgICAgICAgIGlmICggIXMgKQorICAg ICAgICAgICAgY29udGludWU7CisgICAgICAgIHR5cGUgPSAodWludDhfdClzdHJ0b2xsKHMsIE5V TEwsIDApOworCisgICAgICAgIHMgPSB4c19yZWFkX2RtX2FjcGlfYmxvYl9rZXkoY3R4dCwgKmRp ciwgImxlbmd0aCIpOworICAgICAgICBpZiAoICFzICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor ICAgICAgICBsZW5ndGggPSAodWludDMyX3Qpc3RydG9sbChzLCBOVUxMLCAwKTsKKworICAgICAg ICBzID0geHNfcmVhZF9kbV9hY3BpX2Jsb2Jfa2V5KGN0eHQsICpkaXIsICJvZmZzZXQiKTsKKyAg ICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgb2Zmc2V0ID0g KHVpbnQzMl90KXN0cnRvbGwocywgTlVMTCwgMCk7CisKKyAgICAgICAgYmxvYiA9IGN0eHQtPm1l bV9vcHMucDJ2KGN0eHQsIGNvbmZpZy0+ZG0uYWRkciArIG9mZnNldCk7CisKKyAgICAgICAgc3dp dGNoICggdHlwZSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBETV9BQ1BJX0JMT0JfVFlQRV9U QUJMRToKKyAgICAgICAgICAgIG5yX2FkZGVkICs9IGNvbnN0cnVjdF9kbV90YWJsZShjdHh0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX3B0cnMsIG5y X3RhYmxlcyArIG5yX2FkZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJsb2IsIGxlbmd0aCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl IERNX0FDUElfQkxPQl9UWVBFX05TREVWOgorICAgICAgICAgICAgbnJfYWRkZWQgKz0gY29uc3Ry dWN0X2RtX25zZGV2KGN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGVfcHRycywgbnJfdGFibGVzICsgbnJfYWRkZWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRpciwgYmxvYiwgbGVuZ3RoKTsKKyAgICAgICAg ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBza2lwIGJsb2Jz IG9mIHVua25vd24gdHlwZXMgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg ICAgfQorCisgICAgcmV0dXJuIG5yX2FkZGVkOworfQorCiBzdGF0aWMgaW50IGNvbnN0cnVjdF9z ZWNvbmRhcnlfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmln LApAQCAtMzU5LDYgKzY0Myw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJs ZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKICAgICAgICAgbWFkdCA9IGNvbnN0cnVjdF9tYWR0 KGN0eHQsIGNvbmZpZywgaW5mbyk7CiAgICAgICAgIGlmICghbWFkdCkgcmV0dXJuIC0xOwogICAg ICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIG1h ZHQpOworICAgICAgICBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xpc3RfcmVnaXN0ZXIoY29uZmln LCBtYWR0LT5oZWFkZXIuc2lnbmF0dXJlKTsKICAgICB9CiAKICAgICAvKiBIUEVULiAqLwpAQCAt MzY3LDYgKzY1Miw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMoc3Ry dWN0IGFjcGlfY3R4dCAqY3R4dCwKICAgICAgICAgaHBldCA9IGNvbnN0cnVjdF9ocGV0KGN0eHQs IGNvbmZpZyk7CiAgICAgICAgIGlmICghaHBldCkgcmV0dXJuIC0xOwogICAgICAgICB0YWJsZV9w dHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGhwZXQpOworICAgICAg ICBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xpc3RfcmVnaXN0ZXIoY29uZmlnLCBocGV0LT5oZWFk ZXIuc2lnbmF0dXJlKTsKICAgICB9CiAKICAgICAvKiBXQUVULiAqLwpAQCAtMzc2LDYgKzY2Miw3 IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMoc3RydWN0IGFjcGlfY3R4 dCAqY3R4dCwKICAgICAgICAgaWYgKCAhd2FldCApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAg ICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwg d2FldCk7CisgICAgICAgIGRtX2FjcGlfc2lnbmF0dXJlX2JsYWNrbGlzdF9yZWdpc3Rlcihjb25m aWcsIHdhZXQtPmhlYWRlci5zaWduYXR1cmUpOwogICAgIH0KIAogICAgIGlmICggY29uZmlnLT50 YWJsZV9mbGFncyAmIEFDUElfSEFTX1NTRFRfUE0gKQpAQCAtMzg0LDYgKzY3MSw5IEBAIHN0YXRp YyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwK ICAgICAgICAgaWYgKCFzc2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0 X3BtLCBzaXplb2Yoc3NkdF9wbSkpOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9 IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIHNzZHQpOworICAgICAgICBkbV9hY3BpX2Rldm5hbWVf YmxhY2tsaXN0X3JlZ2lzdGVyKGNvbmZpZywgIkFDIik7CisgICAgICAgIGRtX2FjcGlfZGV2bmFt ZV9ibGFja2xpc3RfcmVnaXN0ZXIoY29uZmlnLCAiQkFUMCIpOworICAgICAgICBkbV9hY3BpX2Rl dm5hbWVfYmxhY2tsaXN0X3JlZ2lzdGVyKGNvbmZpZywgIkJBVDEiKTsKICAgICB9CiAKICAgICBp ZiAoIGNvbmZpZy0+dGFibGVfZmxhZ3MgJiBBQ1BJX0hBU19TU0RUX1MzICkKQEAgLTQzOSw2ICs3 MjksOCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFj cGlfaGVhZGVyLCBjaGVja3N1bSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwYS0+aGVh ZGVyLmxlbmd0aCk7CiAgICAgICAgIH0KKyAgICAgICAgZG1fYWNwaV9zaWduYXR1cmVfYmxhY2ts aXN0X3JlZ2lzdGVyKGNvbmZpZywgdGNwYS0+aGVhZGVyLnNpZ25hdHVyZSk7CisgICAgICAgIGRt X2FjcGlfZGV2bmFtZV9ibGFja2xpc3RfcmVnaXN0ZXIoY29uZmlnLCAiVFBNIik7CiAgICAgfQog CiAgICAgLyogU1JBVCBhbmQgU0xJVCAqLwpAQCAtNDQ4LDExICs3NDAsMTcgQEAgc3RhdGljIGlu dCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAg ICAgICBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpzbGl0ID0gY29uc3RydWN0X3NsaXQoY3R4dCwgY29u ZmlnKTsKIAogICAgICAgICBpZiAoIHNyYXQgKQorICAgICAgICB7CiAgICAgICAgICAgICB0YWJs ZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIHNyYXQpOworICAg ICAgICAgICAgZG1fYWNwaV9zaWduYXR1cmVfYmxhY2tsaXN0X3JlZ2lzdGVyKGNvbmZpZywgc3Jh dC0+aGVhZGVyLnNpZ25hdHVyZSk7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAg ICAgcHJpbnRmKCJGYWlsZWQgdG8gYnVpbGQgU1JBVCwgc2tpcHBpbmcuLi5cbiIpOwogICAgICAg ICBpZiAoIHNsaXQgKQorICAgICAgICB7CiAgICAgICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxl cysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIHNsaXQpOworICAgICAgICAgICAgZG1fYWNw aV9zaWduYXR1cmVfYmxhY2tsaXN0X3JlZ2lzdGVyKGNvbmZpZywgc2xpdC0+aGVhZGVyLnNpZ25h dHVyZSk7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJpbnRmKCJGYWls ZWQgdG8gYnVpbGQgU0xJVCwgc2tpcHBpbmcuLi5cbiIpOwogICAgIH0KQEAgLTQ2MSw2ICs3NTks OSBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHN0cnVjdCBhY3BpX2N0 eHQgKmN0eHQsCiAgICAgbnJfdGFibGVzICs9IGNvbnN0cnVjdF9wYXNzdGhyb3VnaF90YWJsZXMo Y3R4dCwgdGFibGVfcHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBucl90YWJsZXMsIGNvbmZpZyk7CiAKKyAgICAvKiBMb2FkIGFueSBhZGRpdGlvbmFs IHRhYmxlcyBwYXNzZWQgZnJvbSBkZXZpY2UgbW9kZWwgKGUuZy4gUUVNVSkuICovCisgICAgbnJf dGFibGVzICs9IGNvbnN0cnVjdF9kbV90YWJsZXMoY3R4dCwgdGFibGVfcHRycywgbnJfdGFibGVz LCBjb25maWcpOworCiAgICAgdGFibGVfcHRyc1tucl90YWJsZXNdID0gMDsKICAgICByZXR1cm4g bnJfdGFibGVzOwogfQpAQCAtNTI1LDYgKzgyNiw5IEBAIGludCBhY3BpX2J1aWxkX3RhYmxlcyhz dHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAg ICAgYWNwaV9pbmZvLT5wY2lfaGlfbGVuID0gY29uZmlnLT5wY2lfaGlfbGVuOwogICAgIH0KIAor ICAgIGlmICggIWhhc19kbV90YWJsZXMoY3R4dCwgY29uZmlnKSApCisgICAgICAgIGNvbmZpZy0+ dGFibGVfZmxhZ3MgJj0gfkFDUElfSEFTX0RNOworCiAgICAgLyoKICAgICAgKiBGaWxsIGluIGhp Z2gtbWVtb3J5IGRhdGEgc3RydWN0dXJlcywgc3RhcnRpbmcgYXQgQGJ1Zi4KICAgICAgKi8KQEAg LTUzMiw2ICs4MzYsNyBAQCBpbnQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAq Y3R4dCwgc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgZmFjcyA9IGN0eHQtPm1lbV9v cHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhY3MpLCAxNik7CiAgICAgaWYg KCFmYWNzKSBnb3RvIG9vbTsKICAgICBtZW1jcHkoZmFjcywgJkZhY3MsIHNpemVvZihzdHJ1Y3Qg YWNwaV8yMF9mYWNzKSk7CisgICAgZG1fYWNwaV9zaWduYXR1cmVfYmxhY2tsaXN0X3JlZ2lzdGVy KGNvbmZpZywgZmFjcy0+c2lnbmF0dXJlKTsKIAogICAgIC8qCiAgICAgICogQWx0ZXJuYXRpdmUg RFNEVHMgd2UgZ2V0IGxpbmtlZCBhZ2FpbnN0LiBBIGNvdmVyLWFsbCBEU0RUIGZvciB1cCB0byB0 aGUKQEAgLTU1Myw2ICs4NTgsOCBAQCBpbnQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlf Y3R4dCAqY3R4dCwgc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAgIGlmICghZHNk dCkgZ290byBvb207CiAgICAgICAgIG1lbWNweShkc2R0LCBjb25maWctPmRzZHRfYW55Y3B1LCBj b25maWctPmRzZHRfYW55Y3B1X2xlbik7CiAgICAgfQorICAgIGRtX2FjcGlfZGV2bmFtZV9ibGFj a2xpc3RfcmVnaXN0ZXIoY29uZmlnLCAiTUVNMCIpOworICAgIGRtX2FjcGlfZGV2bmFtZV9ibGFj a2xpc3RfcmVnaXN0ZXIoY29uZmlnLCAiUENJMCIpOwogCiAgICAgLyoKICAgICAgKiBOLkIuIEFD UEkgMS4wIG9wZXJhdGluZyBzeXN0ZW1zIG1heSBub3QgaGFuZGxlIEZBRFQgd2l0aCByZXZpc2lv biAyCkBAIC02MjMsNiArOTMwLDcgQEAgaW50IGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQsIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgICAgICBmYWR0LT5p YXBjX2Jvb3RfYXJjaCB8PSBBQ1BJX0ZBRFRfTk9fQ01PU19SVEM7CiAgICAgfQogICAgIHNldF9j aGVja3N1bShmYWR0LCBvZmZzZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3VtKSwgZmFk dF9zaXplKTsKKyAgICBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xpc3RfcmVnaXN0ZXIoY29uZmln LCBmYWR0LT5oZWFkZXIuc2lnbmF0dXJlKTsKIAogICAgIG5yX3NlY29uZGFyaWVzID0gY29uc3Ry dWN0X3NlY29uZGFyeV90YWJsZXMoY3R4dCwgc2Vjb25kYXJ5X3RhYmxlcywKICAgICAgICAgICAg ICAgICAgY29uZmlnLCBhY3BpX2luZm8pOwpAQCAtNjQxLDYgKzk0OSw3IEBAIGludCBhY3BpX2J1 aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNv bmZpZykKICAgICBzZXRfY2hlY2tzdW0oeHNkdCwKICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yo c3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSksCiAgICAgICAgICAgICAgICAgIHhzZHQtPmhl YWRlci5sZW5ndGgpOworICAgIGRtX2FjcGlfc2lnbmF0dXJlX2JsYWNrbGlzdF9yZWdpc3Rlcihj b25maWcsIHhzZHQtPmhlYWRlci5zaWduYXR1cmUpOwogCiAgICAgcnNkdCA9IGN0eHQtPm1lbV9v cHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHQpICsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YodWludDMyX3QpICogbnJfc2Vjb25kYXJpZXMsCkBA IC02NTQsNiArOTYzLDcgQEAgaW50IGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQg KmN0eHQsIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIHNldF9jaGVja3N1bShyc2R0 LAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3Vt KSwKICAgICAgICAgICAgICAgICAgcnNkdC0+aGVhZGVyLmxlbmd0aCk7CisgICAgZG1fYWNwaV9z aWduYXR1cmVfYmxhY2tsaXN0X3JlZ2lzdGVyKGNvbmZpZywgcnNkdC0+aGVhZGVyLnNpZ25hdHVy ZSk7CiAKICAgICAvKgogICAgICAqIEZpbGwgaW4gbG93LW1lbW9yeSBkYXRhIHN0cnVjdHVyZXM6 IGFjcGlfaW5mbyBhbmQgUlNEUC4KQEAgLTY2OSw2ICs5NzksNyBAQCBpbnQgYWNwaV9idWlsZF90 YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcp CiAgICAgc2V0X2NoZWNrc3VtKHJzZHAsCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVj dCBhY3BpXzIwX3JzZHAsIGV4dGVuZGVkX2NoZWNrc3VtKSwKICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHApKTsKKyAgICBkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xp c3RfcmVnaXN0ZXIoY29uZmlnLCByc2RwLT5zaWduYXR1cmUpOwogCiAgICAgaWYgKCAhbmV3X3Zt X2dpZChjdHh0LCBjb25maWcsIGFjcGlfaW5mbykgKQogICAgICAgICBnb3RvIG9vbTsKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oIGIvdG9vbHMvbGliYWNwaS9saWJhY3BpLmgK aW5kZXggNjQ1ZTA5MWY2OC4uYjQxMTEzZmYzZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGliYWNwaS9s aWJhY3BpLmgKKysrIGIvdG9vbHMvbGliYWNwaS9saWJhY3BpLmgKQEAgLTIwLDYgKzIwLDggQEAK ICNpZm5kZWYgX19MSUJBQ1BJX0hfXwogI2RlZmluZSBfX0xJQkFDUElfSF9fCiAKKyNkZWZpbmUg QVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pKQorCiAjZGVmaW5lIEFDUElf SEFTX0NPTTEgICAgICAgICgxPDwwKQogI2RlZmluZSBBQ1BJX0hBU19DT00yICAgICAgICAoMTw8 MSkKICNkZWZpbmUgQUNQSV9IQVNfTFBUMSAgICAgICAgKDE8PDIpCkBAIC0zNSw2ICszNyw3IEBA CiAjZGVmaW5lIEFDUElfSEFTX1ZHQSAgICAgICAgICgxPDwxMikKICNkZWZpbmUgQUNQSV9IQVNf ODA0MiAgICAgICAgKDE8PDEzKQogI2RlZmluZSBBQ1BJX0hBU19DTU9TX1JUQyAgICAoMTw8MTQp CisjZGVmaW5lIEFDUElfSEFTX0RNICAgICAgICAgICgxPDwxNSkKIAogc3RydWN0IHhlbl92bWVt cmFuZ2U7CiBzdHJ1Y3QgYWNwaV9udW1hIHsKQEAgLTg3LDYgKzkwLDExIEBAIHN0cnVjdCBhY3Bp X2NvbmZpZyB7CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICB9IHB0OwogCisgICAgc3Ry dWN0IHsKKyAgICAgICAgdWludDMyX3QgYWRkcjsKKyAgICAgICAgdWludDMyX3QgbGVuZ3RoOwor ICAgIH0gZG07CisKICAgICBzdHJ1Y3QgYWNwaV9udW1hIG51bWE7CiAgICAgY29uc3Qgc3RydWN0 IGh2bV9pbmZvX3RhYmxlICpodm1pbmZvOwogCi0tIAoyLjEyLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK