From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH 11/16] tools/libacpi: load ACPI built by the device model Date: Mon, 10 Oct 2016 08:32:30 +0800 Message-ID: <20161010003235.4213-12-haozhong.zhang@intel.com> References: <20161010003235.4213-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: <20161010003235.4213-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 , Xiao Guangrong , Andrew Cooper , Ian Jackson , Jan Beulich , Wei Liu List-Id: xen-devel@lists.xenproject.org QUNQSSB0YWJsZXMgYnVpbHQgYnkgdGhlIGRldmljZSBtb2RlbCwgd2hvc2Ugc2lnbmF0dXJlcyBk byBub3QKY29uZmxpY3Qgd2l0aCB0YWJsZXMgYnVpbHQgYnkgWGVuIChleGNlcHQgU1NEVCksIGFy ZSBsb2FkZWQgYWZ0ZXIgQUNQSQp0YWJsZXMgYnVpbHQgYnkgWGVuLgoKQUNQSSBuYW1lc3BhY2Ug ZGV2aWNlcyBidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsLCB3aG9zZSBuYW1lcyBkbyBub3QKY29u ZmxpY3Qgd2l0aCBkZXZpY2VzIGJ1aWx0IGJ5IFhlbiwgYXJlIGFzc2VtYmxlZCBhbmQgcGxhY2Vk IGluIFNTRFRzCmFmdGVyIEFDUEkgdGFibGVzIGJ1aWx0IGJ5IFhlbi4KClNpZ25lZC1vZmYtYnk6 IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29t PgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy9maXJtd2FyZS9o dm1sb2FkZXIvdXRpbC5jIHwgIDEyICsrKwogdG9vbHMvbGliYWNwaS9hY3BpMl8wLmggICAgICAg ICB8ICAgMiArCiB0b29scy9saWJhY3BpL2J1aWxkLmMgICAgICAgICAgIHwgMjE2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2xpYmFjcGkvbGliYWNwaS5o ICAgICAgICAgfCAgIDUgKwogNCBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMgYi90b29scy9maXJtd2Fy ZS9odm1sb2FkZXIvdXRpbC5jCmluZGV4IGRiYTk1NGEuLmU2NTMwY2QgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9h ZGVyL3V0aWwuYwpAQCAtOTk4LDYgKzk5OCwxOCBAQCB2b2lkIGh2bWxvYWRlcl9hY3BpX2J1aWxk X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywKICAgICBpZiAoICFzdHJuY21wKHhl bnN0b3JlX3JlYWQoInBsYXRmb3JtL2FjcGlfczQiLCAiMSIpLCAiMSIsIDEpICApCiAgICAgICAg IGNvbmZpZy0+dGFibGVfZmxhZ3MgfD0gQUNQSV9IQVNfU1NEVF9TNDsKIAorICAgIHMgPSB4ZW5z dG9yZV9yZWFkKEhWTV9YU19ETV9BQ1BJX0FERFJFU1MsIE5VTEwpOworICAgIGlmICggcyApCisg ICAgeworICAgICAgICBjb25maWctPmRtLmFkZHIgPSBzdHJ0b2xsKHMsIE5VTEwsIDApOworCisg ICAgICAgIHMgPSB4ZW5zdG9yZV9yZWFkKEhWTV9YU19ETV9BQ1BJX0xFTkdUSCwgTlVMTCk7Cisg ICAgICAgIGlmICggcyApCisgICAgICAgICAgICBjb25maWctPmRtLmxlbmd0aCA9IHN0cnRvbGwo cywgTlVMTCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZy0+ZG0uYWRkciA9 IDA7CisgICAgfQorCiAgICAgY29uZmlnLT50YWJsZV9mbGFncyB8PSAoQUNQSV9IQVNfVENQQSB8 IEFDUElfSEFTX0lPQVBJQyB8IEFDUElfSEFTX1dBRVQpOwogCiAgICAgY29uZmlnLT50aXNfaGRy ID0gKHVpbnQxNl90ICopQUNQSV9USVNfSERSX0FERFJFU1M7CmRpZmYgLS1naXQgYS90b29scy9s aWJhY3BpL2FjcGkyXzAuaCBiL3Rvb2xzL2xpYmFjcGkvYWNwaTJfMC5oCmluZGV4IDc3NWViN2Eu Ljc0MTQ0NzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvYWNwaTJfMC5oCisrKyBiL3Rvb2xz L2xpYmFjcGkvYWNwaTJfMC5oCkBAIC00MzAsNiArNDMwLDcgQEAgc3RydWN0IGFjcGlfMjBfc2xp dCB7CiAjZGVmaW5lIEFDUElfMl8wX1dBRVRfU0lHTkFUVVJFIEFTQ0lJMzIoJ1cnLCdBJywnRScs J1QnKQogI2RlZmluZSBBQ1BJXzJfMF9TUkFUX1NJR05BVFVSRSBBU0NJSTMyKCdTJywnUicsJ0En LCdUJykKICNkZWZpbmUgQUNQSV8yXzBfU0xJVF9TSUdOQVRVUkUgQVNDSUkzMignUycsJ0wnLCdJ JywnVCcpCisjZGVmaW5lIEFDUElfMl8wX1NTRFRfU0lHTkFUVVJFIEFTQ0lJMzIoJ1MnLCdTJywn RCcsJ1QnKQogCiAvKgogICogVGFibGUgcmV2aXNpb24gbnVtYmVycy4KQEAgLTQ0NSw2ICs0NDYs NyBAQCBzdHJ1Y3QgYWNwaV8yMF9zbGl0IHsKICNkZWZpbmUgQUNQSV8xXzBfRkFEVF9SRVZJU0lP TiAweDAxCiAjZGVmaW5lIEFDUElfMl8wX1NSQVRfUkVWSVNJT04gMHgwMQogI2RlZmluZSBBQ1BJ XzJfMF9TTElUX1JFVklTSU9OIDB4MDEKKyNkZWZpbmUgQUNQSV8yXzBfU1NEVF9SRVZJU0lPTiAw eDAyCiAKICNwcmFnbWEgcGFjayAoKQogCmRpZmYgLS1naXQgYS90b29scy9saWJhY3BpL2J1aWxk LmMgYi90b29scy9saWJhY3BpL2J1aWxkLmMKaW5kZXggNDdkYWUwMS4uODI5YTM2NSAxMDA2NDQK LS0tIGEvdG9vbHMvbGliYWNwaS9idWlsZC5jCisrKyBiL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYwpA QCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInNzZHRfczQuaCIKICNpbmNsdWRlICJzc2R0X3Rw bS5oIgogI2luY2x1ZGUgInNzZHRfcG0uaCIKKyNpbmNsdWRlICJhbWxfYnVpbGQuaCIKICNpbmNs dWRlIDx4ZW4vaHZtL2h2bV9pbmZvX3RhYmxlLmg+CiAjaW5jbHVkZSA8eGVuL2h2bS9odm1feHNf c3RyaW5ncy5oPgogI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+CkBAIC01NSw2ICs1NiwzNCBA QCBzdHJ1Y3QgYWNwaV9pbmZvIHsKICAgICB1aW50NjRfdCBwY2lfaGlfbWluLCBwY2lfaGlfbGVu OyAvKiAyNCwgMzIgLSBQQ0kgSS9PIGhvbGUgYm91bmRhcmllcyAqLwogfTsKIAorI2RlZmluZSBE TV9BQ1BJX0JMT0JfVFlQRV9UQUJMRSAwIC8qIEFDUEkgdGFibGUgKi8KKyNkZWZpbmUgRE1fQUNQ SV9CTE9CX1RZUEVfTlNERVYgMSAvKiBBTUwgZGVmaW5pdGlvbiBvZiBhbiBBQ1BJIG5hbWVzcGFj ZSBkZXZpY2UgKi8KKworLyogQUNQSSB0YWJsZXMgb2YgZm9sbG93aW5nIHNpZ25hdHVyZXMgc2hv dWxkIG5vdCBhcHBlYXIgaW4gRE0gQUNQSSAqLworc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRtX2Fj cGlfc2lnbmF0dXJlX2JsYWNrbGlzdFtdID0geworICAgIEFDUElfMl8wX1JTRFBfU0lHTkFUVVJF LAorICAgIEFDUElfMl8wX0ZBQ1NfU0lHTkFUVVJFLAorICAgIEFDUElfMl8wX0ZBRFRfU0lHTkFU VVJFLAorICAgIEFDUElfMl8wX01BRFRfU0lHTkFUVVJFLAorICAgIEFDUElfMl8wX1JTRFRfU0lH TkFUVVJFLAorICAgIEFDUElfMl8wX1hTRFRfU0lHTkFUVVJFLAorICAgIEFDUElfMl8wX1RDUEFf U0lHTkFUVVJFLAorICAgIEFDUElfMl8wX0hQRVRfU0lHTkFUVVJFLAorICAgIEFDUElfMl8wX1dB RVRfU0lHTkFUVVJFLAorICAgIEFDUElfMl8wX1NSQVRfU0lHTkFUVVJFLAorICAgIEFDUElfMl8w X1NMSVRfU0lHTkFUVVJFLAorfTsKKworLyogQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBvZiBmb2xs b3dpbmcgbmFtZXMgc2hvdWxkIG5vdCBhcHBlYXIgaW4gRE0gQUNQSSAqLworc3RhdGljIGNvbnN0 IGNoYXIgKmRtX2FjcGlfZGV2bmFtZV9ibGFja2xpc3RbXSA9IHsKKyAgICAiTUVNMCIsCisgICAg IlBDSTAiLAorICAgICJBQyIsCisgICAgIkJBVDAiLAorICAgICJCQVQxIiwKKyAgICAiVFBNIiwK K307CisKIHN0YXRpYyB2b2lkIHNldF9jaGVja3N1bSgKICAgICB2b2lkICp0YWJsZSwgdWludDMy X3QgY2hlY2tzdW1fb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpCiB7CkBAIC0zMzksNiArMzY4LDE5 MCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9wYXNzdGhyb3VnaF90YWJsZXMoc3RydWN0IGFjcGlf Y3R4dCAqY3R4dCwKICAgICByZXR1cm4gbnJfYWRkZWQ7CiB9CiAKKyNkZWZpbmUgQVJSQVlfU0la RShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pKQorCitzdGF0aWMgaW50IGNoZWNrX3NpZ25h dHVyZV9jb2xsaXNpb24odWludDY0X3Qgc2lnKQoreworICAgIGludCBpOworICAgIGZvciAoIGkg PSAwOyBpIDwgQVJSQVlfU0laRShkbV9hY3BpX3NpZ25hdHVyZV9ibGFja2xpc3QpOyBpKysgKQor ICAgIHsKKyAgICAgICAgaWYgKCBzaWcgPT0gZG1fYWNwaV9zaWduYXR1cmVfYmxhY2tsaXN0W2ld ICkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBjaGVja19kZXZuYW1lX2NvbGxpc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAg IGludCBpOworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShkbV9hY3BpX2Rldm5hbWVf YmxhY2tsaXN0KTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggIXN0cm5jbXAobmFtZSwgZG1f YWNwaV9kZXZuYW1lX2JsYWNrbGlzdFtpXSwgNCkgKQorICAgICAgICAgICAgcmV0dXJuIDE7Cisg ICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqeHNfcmVhZF9kbV9h Y3BpX2Jsb2Jfa2V5KHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmtl eSkKK3sKKyNkZWZpbmUgRE1fQUNQSV9CTE9CX1BBVEhfTUFYX0xFTkdUSCAzMAorICAgIGNoYXIg cGF0aFtETV9BQ1BJX0JMT0JfUEFUSF9NQVhfTEVOR1RIXTsKKyAgICBzbnByaW50ZihwYXRoLCBE TV9BQ1BJX0JMT0JfUEFUSF9NQVhfTEVOR1RILCBIVk1fWFNfRE1fQUNQSV9ST09UIi8lcy8lcyIs CisgICAgICAgICAgICAgbmFtZSwga2V5KTsKKyAgICByZXR1cm4gY3R4dC0+eHNfb3BzLnJlYWQo Y3R4dCwgcGF0aCk7Cit9CisKK3N0YXRpYyBpbnQgY29uc3RydWN0X2RtX3RhYmxlKHN0cnVjdCBh Y3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nICp0YWJsZV9wdHJzLCBpbnQgbnJfdGFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgdm9pZCAqYmxvYiwgdWludDMyX3QgbGVuZ3RoKQoreworICAgIGNvbnN0IHN0 cnVjdCBhY3BpX2hlYWRlciAqaGVhZGVyID0gYmxvYjsKKyAgICB1aW50OF90ICpidWZmZXI7CisK KyAgICBpZiAoIGNoZWNrX3NpZ25hdHVyZV9jb2xsaXNpb24oaGVhZGVyLT5zaWduYXR1cmUpICkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIGhlYWRlci0+bGVuZ3RoID4gbGVuZ3RoIHx8 IGhlYWRlci0+bGVuZ3RoID09IDAgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJ1ZmZlciA9 IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgaGVhZGVyLT5sZW5ndGgsIDE2KTsKKyAgICBpZiAo ICFidWZmZXIgKQorICAgICAgICByZXR1cm4gMDsKKyAgICBtZW1jcHkoYnVmZmVyLCBoZWFkZXIs IGhlYWRlci0+bGVuZ3RoKTsKKworICAgIC8qIHNvbWUgZGV2aWNlIG1vZGVscyAoZS5nLiBRRU1V KSBkb2VzIG5vdCBzZXQgY2hlY2tzdW0gKi8KKyAgICBzZXRfY2hlY2tzdW0oYnVmZmVyLCBvZmZz ZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3VtKSwKKyAgICAgICAgICAgICAgICAgaGVh ZGVyLT5sZW5ndGgpOworCisgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjdHh0LT5tZW1f b3BzLnYycChjdHh0LCBidWZmZXIpOworCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQg Y29uc3RydWN0X2RtX25zZGV2KHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLCBpbnQgbnJfdGFibGVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGV2X25hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpibG9iLCB1aW50MzJfdCBi bG9iX2xlbmd0aCkKK3sKKyAgICBzdHJ1Y3QgYWNwaV9oZWFkZXIgc3NkdCwgKmhlYWRlcjsKKyAg ICB1aW50OF90ICpidWZmZXI7CisKKyAgICBpZiAoIGNoZWNrX2Rldm5hbWVfY29sbGlzaW9uKGRl dl9uYW1lKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogYnVpbHQgQUNQSSBuYW1lc3Bh Y2UgZGV2aWNlIGZyb20gW25hbWUsIGJsb2JdICovCisgICAgYnVmZmVyID0gYW1sX2J1aWxkX2Jl Z2luKGN0eHQpOworICAgIGFtbF9wcmVwZW5kX2Jsb2IoYnVmZmVyLCBibG9iLCBibG9iX2xlbmd0 aCk7CisgICAgYW1sX3ByZXBlbmRfZGV2aWNlKGJ1ZmZlciwgZGV2X25hbWUpOworICAgIGFtbF9w cmVwZW5kX3Njb3BlKGJ1ZmZlciwgIlxcX1NCIik7CisKKyAgICAvKiBidWlsZCBTU0RUIGhlYWRl ciAqLworICAgIHNzZHQuc2lnbmF0dXJlID0gQUNQSV8yXzBfU1NEVF9TSUdOQVRVUkU7CisgICAg c3NkdC5yZXZpc2lvbiA9IEFDUElfMl8wX1NTRFRfUkVWSVNJT047CisgICAgZml4ZWRfc3RyY3B5 KHNzZHQub2VtX2lkLCBBQ1BJX09FTV9JRCk7CisgICAgZml4ZWRfc3RyY3B5KHNzZHQub2VtX3Rh YmxlX2lkLCBBQ1BJX09FTV9UQUJMRV9JRCk7CisgICAgc3NkdC5vZW1fcmV2aXNpb24gPSBBQ1BJ X09FTV9SRVZJU0lPTjsKKyAgICBzc2R0LmNyZWF0b3JfaWQgPSBBQ1BJX0NSRUFUT1JfSUQ7Cisg ICAgc3NkdC5jcmVhdG9yX3JldmlzaW9uID0gQUNQSV9DUkVBVE9SX1JFVklTSU9OOworCisgICAg LyogcHJlcGVuZCBTU0RUIGhlYWRlciB0byBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UgKi8KKyAgICBh bWxfcHJlcGVuZF9ibG9iKGJ1ZmZlciwgJnNzZHQsIHNpemVvZihzc2R0KSk7CisgICAgaGVhZGVy ID0gKHN0cnVjdCBhY3BpX2hlYWRlciAqKSBidWZmZXI7CisgICAgaGVhZGVyLT5sZW5ndGggPSBh bWxfYnVpbGRfZW5kKCk7CisKKyAgICAvKiBjYWxjdWxhdGUgY2hlY2tzdW0gb2YgU1NEVCAqLwor ICAgIHNldF9jaGVja3N1bShoZWFkZXIsIG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRlciwgY2hl Y2tzdW0pLAorICAgICAgICAgICAgICAgICBoZWFkZXItPmxlbmd0aCk7CisKKyAgICB0YWJsZV9w dHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGJ1ZmZlcik7CisKKyAg ICByZXR1cm4gMTsKK30KKworLyoKKyAqIEFsbCBBQ1BJIHN0dWZmcyBidWlsdCBieSB0aGUgZGV2 aWNlIG1vZGVsIGFyZSBwbGFjZWQgaW4gdGhlIGd1ZXN0CisgKiBidWZmZXIgd2hvc2UgYWRkcmVz cyBhbmQgc2l6ZSBhcmUgc3BlY2lmaWVkIGJ5IGNvbmZpZy0+ZG0ue2FkZHIsIGxlbmd0aH0sCisg KiBvciBYZW5TdG9yZSBrZXlzIEhWTV9YU19ETV9BQ1BJX3tBRERSRVNTLCBMRU5HVEh9LgorICoK KyAqIFRoZSBkYXRhIGxheW91dCB3aXRoaW4gdGhlIGJ1ZmZlciBpcyBmdXJ0aGVyIHNwZWNpZmll ZCBieSBYZW5TdG9yZQorICogZGlyZWN0b3JpZXMgdW5kZXIgSFZNX1hTX0RNX0FDUElfUk9PVC4g RWFjaCBkaXJlY3Rvcnkgc3BlY2lmaWVzIGEKKyAqIGRhdGEgYmxvYiBhbmQgY29udGFpbnMgZm9s bG93aW5nIFhlblN0b3JlIGtleXM6CisgKgorICogLSAidHlwZSI6CisgKiAgICogRE1fQUNQSV9C TE9CX1RZUEVfVEFCTEUKKyAqICAgICBUaGUgZGF0YSBibG9iIHNwZWNpZmllZCBieSB0aGlzIGRp cmVjdG9yeSBpcyBhbiBBQ1BJIHRhYmxlLgorICogICAqIERNX0FDUElfQkxPQl9UWVBFX05TREVW CisgKiAgICAgVGhlIGRhdGEgYmxvYiBzcGVjaWZpZWQgYnkgdGhpcyBkaXJlY3RvcnkgaXMgYW4g QUNQSSBuYW1lc3BhY2UgZGV2aWNlLgorICogICAgIEl0cyBuYW1lIGlzIHNwZWNpZmllZCBieSB0 aGUgZGlyZWN0b3J5IG5hbWUsIHdoaWxlIHRoZSBBTUwgY29kZSBvZiB0aGUKKyAqICAgICBib2R5 IG9mIHRoZSBBTUwgZGV2aWNlIHN0cnVjdHVyZSBpcyBpbiB0aGUgZGF0YSBibG9iLgorICoKKyAq IC0gImxlbmd0aCI6IHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhpcyBkYXRhIGJsb2IuCisgKgor ICogLSAib2Zmc2V0IjogdGhlIG9mZnNldCBpbiBieXRlcyBvZiB0aGlzIGRhdGEgYmxvYiBmcm9t IHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyCisgKi8KK3N0YXRpYyBpbnQgY29uc3RydWN0X2RtX3Rh YmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IG5yX3RhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIGNoYXIg KipkaXI7CisgICAgdWludDhfdCB0eXBlOworICAgIHZvaWQgKmJsb2I7CisgICAgdW5zaWduZWQg aW50IG51bSwgbGVuZ3RoLCBvZmZzZXQsIGk7CisgICAgaW50IG5yX2FkZGVkID0gMDsKKworICAg IGlmICggIWNvbmZpZy0+ZG0uYWRkciApCisgICAgICAgIHJldHVybiAwOworCisgICAgZGlyID0g Y3R4dC0+eHNfb3BzLmRpcmVjdG9yeShjdHh0LCBIVk1fWFNfRE1fQUNQSV9ST09ULCAmbnVtKTsK KyAgICBpZiAoICFkaXIgfHwgIW51bSApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBu dW0gPiBBQ1BJX01BWF9TRUNPTkRBUllfVEFCTEVTIC0gbnJfdGFibGVzICkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG51bTsgaSsrLCBkaXIrKyApCisgICAgewor ICAgICAgICBzID0geHNfcmVhZF9kbV9hY3BpX2Jsb2Jfa2V5KGN0eHQsICpkaXIsICJ0eXBlIik7 CisgICAgICAgIGlmICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHR5cGUg PSAodWludDhfdClzdHJ0b2xsKHMsIE5VTEwsIDApOworCisgICAgICAgIHMgPSB4c19yZWFkX2Rt X2FjcGlfYmxvYl9rZXkoY3R4dCwgKmRpciwgImxlbmd0aCIpOworICAgICAgICBpZiAoICFzICkK KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsZW5ndGggPSAodWludDMyX3Qpc3RydG9s bChzLCBOVUxMLCAwKTsKKworICAgICAgICBzID0geHNfcmVhZF9kbV9hY3BpX2Jsb2Jfa2V5KGN0 eHQsICpkaXIsICJvZmZzZXQiKTsKKyAgICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgb2Zmc2V0ID0gKHVpbnQzMl90KXN0cnRvbGwocywgTlVMTCwgMCk7CisK KyAgICAgICAgYmxvYiA9IGN0eHQtPm1lbV9vcHMucDJ2KGN0eHQsIGNvbmZpZy0+ZG0uYWRkciAr IG9mZnNldCk7CisKKyAgICAgICAgc3dpdGNoICggdHlwZSApCisgICAgICAgIHsKKyAgICAgICAg Y2FzZSBETV9BQ1BJX0JMT0JfVFlQRV9UQUJMRToKKyAgICAgICAgICAgIG5yX2FkZGVkICs9IGNv bnN0cnVjdF9kbV90YWJsZShjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlX3B0cnMsIG5yX3RhYmxlcyArIG5yX2FkZGVkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IsIGxlbmd0aCk7CisgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgY2FzZSBETV9BQ1BJX0JMT0JfVFlQRV9OU0RFVjoKKyAgICAgICAg ICAgIG5yX2FkZGVkICs9IGNvbnN0cnVjdF9kbV9uc2RldihjdHh0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX3B0cnMsIG5yX3RhYmxlcyArIG5yX2Fk ZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkaXIsIGJs b2IsIGxlbmd0aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgIC8qIHNraXAgYmxvYnMgb2YgdW5rbm93biB0eXBlcyAqLworICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnJfYWRkZWQ7Cit9CisKIHN0 YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4 dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAq dGFibGVfcHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcsCkBAIC00NjEsNiArNjc0LDkgQEAgc3RhdGljIGludCBjb25z dHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAogICAgIG5yX3Rh YmxlcyArPSBjb25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKGN0eHQsIHRhYmxlX3B0cnMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJfdGFibGVzLCBj b25maWcpOwogCisgICAgLyogTG9hZCBhbnkgYWRkaXRpb25hbCB0YWJsZXMgcGFzc2VkIGZyb20g ZGV2aWNlIG1vZGVsIChlLmcuIFFFTVUpICovCisgICAgbnJfdGFibGVzICs9IGNvbnN0cnVjdF9k bV90YWJsZXMoY3R4dCwgdGFibGVfcHRycywgbnJfdGFibGVzLCBjb25maWcpOworCiAgICAgdGFi bGVfcHRyc1tucl90YWJsZXNdID0gMDsKICAgICByZXR1cm4gbnJfdGFibGVzOwogfQpkaWZmIC0t Z2l0IGEvdG9vbHMvbGliYWNwaS9saWJhY3BpLmggYi90b29scy9saWJhY3BpL2xpYmFjcGkuaApp bmRleCAxMmNhZmQ4Li42ODQ1MDJkIDEwMDY0NAotLS0gYS90b29scy9saWJhY3BpL2xpYmFjcGku aAorKysgYi90b29scy9saWJhY3BpL2xpYmFjcGkuaApAQCAtODIsNiArODIsMTEgQEAgc3RydWN0 IGFjcGlfY29uZmlnIHsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoOwogICAgIH0gcHQ7CiAKKyAg ICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBhZGRyOworICAgICAgICB1aW50MzJfdCBsZW5n dGg7CisgICAgfSBkbTsKKwogICAgIHN0cnVjdCBhY3BpX251bWEgbnVtYTsKICAgICBjb25zdCBz dHJ1Y3QgaHZtX2luZm9fdGFibGUgKmh2bWluZm87CiAKLS0gCjIuMTAuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=