From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL 19/21] move xen-common.c to hw/xen/ Date: Fri, 21 Apr 2017 13:15:00 -0700 Message-ID: <1492805702-19690-19-git-send-email-sstabellini@kernel.org> References: <1492805702-19690-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d1exy-0000QB-4Q for xen-devel@lists.xenproject.org; Fri, 21 Apr 2017 20:15:42 +0000 In-Reply-To: <1492805702-19690-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: peter.maydell@linaro.org Cc: sstabellini@kernel.org, stefanha@gmail.com, qemu-devel@nongnu.org, Anthony Xu , stefanha@redhat.com, anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org RnJvbTogQW50aG9ueSBYdSA8YW50aG9ueS54dUBpbnRlbC5jb20+Cgptb3ZlIHhlbi1jb21tb24u YyB0byBody94ZW4vCgpTaWduZWQtb2ZmIC1ieTogQW50aG9ueSBYdSA8YW50aG9ueS54dUBpbnRl bC5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+Ci0tLQogTWFrZWZpbGUudGFyZ2V0ICAgICAgfCAgIDIgLQogaHcveGVuL01ha2VmaWxl Lm9ianMgfCAgIDIgKy0KIGh3L3hlbi94ZW4tY29tbW9uLmMgIHwgMTY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3R1YnMvTWFrZWZpbGUub2Jq cyAgfCAgIDEgKwogc3R1YnMveGVuLWNvbW1vbi5jICAgfCAgMTQgKysrKysKIHhlbi1jb21tb24t c3R1Yi5jICAgIHwgIDE0IC0tLS0tCiB4ZW4tY29tbW9uLmMgICAgICAgICB8IDE2OSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDcgZmlsZXMgY2hh bmdlZCwgMTg1IGluc2VydGlvbnMoKyksIDE4NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBody94ZW4veGVuLWNvbW1vbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3R1YnMveGVuLWNv bW1vbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgeGVuLWNvbW1vbi1zdHViLmMKIGRlbGV0ZSBtb2Rl IDEwMDY0NCB4ZW4tY29tbW9uLmMKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50YXJnZXQgYi9NYWtl ZmlsZS50YXJnZXQKaW5kZXggN2RmMmI4Yy4uNDhjMDI3ZiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUu dGFyZ2V0CisrKyBiL01ha2VmaWxlLnRhcmdldApAQCAtMTUwLDkgKzE1MCw3IEBAIG9iai15ICs9 IG1pZ3JhdGlvbi9yYW0ubyBtaWdyYXRpb24vc2F2ZXZtLm8KIExJQlMgOj0gJChsaWJzX3NvZnRt bXUpICQoTElCUykKIAogIyB4ZW4gc3VwcG9ydAotb2JqLSQoQ09ORklHX1hFTikgKz0geGVuLWNv bW1vbi5vCiBvYmotJChDT05GSUdfWEVOX0kzODYpICs9IHhlbi1odm0ubyB4ZW4tbWFwY2FjaGUu bwotb2JqLSQoY2FsbCBsbm90LCQoQ09ORklHX1hFTikpICs9IHhlbi1jb21tb24tc3R1Yi5vCiBv YmotJChjYWxsIGxub3QsJChDT05GSUdfWEVOX0kzODYpKSArPSB4ZW4taHZtLXN0dWIubwogCiAj IEhhcmR3YXJlIHN1cHBvcnQKZGlmZiAtLWdpdCBhL2h3L3hlbi9NYWtlZmlsZS5vYmpzIGIvaHcv eGVuL01ha2VmaWxlLm9ianMKaW5kZXggNGJlM2VjOS4uNjRhNzBiYyAxMDA2NDQKLS0tIGEvaHcv eGVuL01ha2VmaWxlLm9ianMKKysrIGIvaHcveGVuL01ha2VmaWxlLm9ianMKQEAgLTEsNSArMSw1 IEBACiAjIHhlbiBiYWNrZW5kIGRyaXZlciBzdXBwb3J0Ci1jb21tb24tb2JqLSQoQ09ORklHX1hF TikgKz0geGVuX2JhY2tlbmQubyB4ZW5fZGV2Y29uZmlnLm8geGVuX3B2ZGV2Lm8KK2NvbW1vbi1v YmotJChDT05GSUdfWEVOKSArPSB4ZW5fYmFja2VuZC5vIHhlbl9kZXZjb25maWcubyB4ZW5fcHZk ZXYubyB4ZW4tY29tbW9uLm8KIAogb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9 IHhlbi1ob3N0LXBjaS1kZXZpY2Uubwogb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gp ICs9IHhlbl9wdC5vIHhlbl9wdF9jb25maWdfaW5pdC5vIHhlbl9wdF9ncmFwaGljcy5vIHhlbl9w dF9tc2kubwpkaWZmIC0tZ2l0IGEvaHcveGVuL3hlbi1jb21tb24uYyBiL2h3L3hlbi94ZW4tY29t bW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NjE1MAotLS0gL2Rl di9udWxsCisrKyBiL2h3L3hlbi94ZW4tY29tbW9uLmMKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisg KiBDb3B5cmlnaHQgKEMpIDIwMTQgICAgICAgQ2l0cml4IFN5c3RlbXMgVUsgTHRkLgorICoKKyAq IFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwsIHZl cnNpb24gMi4gIFNlZQorICogdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVj dG9yeS4KKyAqCisgKiBDb250cmlidXRpb25zIGFmdGVyIDIwMTItMDEtMTMgYXJlIGxpY2Vuc2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHUEwsIHZlcnNpb24gMiBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVw LmgiCisjaW5jbHVkZSAiaHcveGVuL3hlbl9iYWNrZW5kLmgiCisjaW5jbHVkZSAicW1wLWNvbW1h bmRzLmgiCisjaW5jbHVkZSAic3lzZW11L2NoYXIuaCIKKyNpbmNsdWRlICJzeXNlbXUvYWNjZWwu aCIKKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCisKKy8vI2RlZmluZSBERUJVR19Y RU4KKworI2lmZGVmIERFQlVHX1hFTgorI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBcCisgICAg ZG8geyBmcHJpbnRmKHN0ZGVyciwgInhlbjogIiBmbXQsICMjIF9fVkFfQVJHU19fKTsgfSB3aGls ZSAoMCkKKyNlbHNlCisjZGVmaW5lIERQUklOVEYoZm10LCAuLi4pIFwKKyAgICBkbyB7IH0gd2hp bGUgKDApCisjZW5kaWYKKworeGNfaW50ZXJmYWNlICp4ZW5feGM7Cit4ZW5mb3JlaWdubWVtb3J5 X2hhbmRsZSAqeGVuX2ZtZW07Cit4ZW5kZXZpY2Vtb2RlbF9oYW5kbGUgKnhlbl9kbW9kOworCitz dGF0aWMgaW50IHN0b3JlX2Rldl9pbmZvKGludCBkb21pZCwgQ2hhcmRldiAqY3MsIGNvbnN0IGNo YXIgKnN0cmluZykKK3sKKyAgICBzdHJ1Y3QgeHNfaGFuZGxlICp4cyA9IE5VTEw7CisgICAgY2hh ciAqcGF0aCA9IE5VTEw7CisgICAgY2hhciAqbmV3cGF0aCA9IE5VTEw7CisgICAgY2hhciAqcHRz ID0gTlVMTDsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICAvKiBPbmx5IGNvbnRpbnVlIGlmIHdl J3JlIHRhbGtpbmcgdG8gYSBwdHkuICovCisgICAgaWYgKHN0cm5jbXAoY3MtPmZpbGVuYW1lLCAi cHR5OiIsIDQpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBwdHMgPSBjcy0+Zmls ZW5hbWUgKyA0OworCisgICAgLyogV2Ugbm93IGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIHNl dCB0aGUgeGVuc3RvcmUgZW50cnkuICovCisgICAgeHMgPSB4c19vcGVuKDApOworICAgIGlmICh4 cyA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGNvbnRhY3Qg WGVuU3RvcmVcbiIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBwYXRoID0geHNf Z2V0X2RvbWFpbl9wYXRoKHhzLCBkb21pZCk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgInhzX2dldF9kb21haW5fcGF0aCgpIGVycm9yXG4iKTsKKyAg ICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIG5ld3BhdGggPSByZWFsbG9jKHBhdGgsIChzdHJs ZW4ocGF0aCkgKyBzdHJsZW4oc3RyaW5nKSArCisgICAgICAgICAgICAgICAgc3RybGVuKCIvdHR5 IikgKyAxKSk7CisgICAgaWYgKG5ld3BhdGggPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgInJlYWxsb2MgZXJyb3JcbiIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAg cGF0aCA9IG5ld3BhdGg7CisKKyAgICBzdHJjYXQocGF0aCwgc3RyaW5nKTsKKyAgICBzdHJjYXQo cGF0aCwgIi90dHkiKTsKKyAgICBpZiAoIXhzX3dyaXRlKHhzLCBYQlRfTlVMTCwgcGF0aCwgcHRz LCBzdHJsZW4ocHRzKSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJ4c193cml0ZSBmb3Ig JyVzJyBmYWlsIiwgc3RyaW5nKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIHJldCA9 IDA7CisKK291dDoKKyAgICBmcmVlKHBhdGgpOworICAgIHhzX2Nsb3NlKHhzKTsKKworICAgIHJl dHVybiByZXQ7Cit9CisKK3ZvaWQgeGVuc3RvcmVfc3RvcmVfcHZfY29uc29sZV9pbmZvKGludCBp LCBDaGFyZGV2ICpjaHIpCit7CisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBzdG9yZV9kZXZf aW5mbyh4ZW5fZG9taWQsIGNociwgIi9jb25zb2xlIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg Y2hhciBidWZbMzJdOworICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiL2Rldmlj ZS9jb25zb2xlLyVkIiwgaSk7CisgICAgICAgIHN0b3JlX2Rldl9pbmZvKHhlbl9kb21pZCwgY2hy LCBidWYpOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB4ZW5zdG9yZV9yZWNvcmRfZG1fc3Rh dGUoc3RydWN0IHhzX2hhbmRsZSAqeHMsIGNvbnN0IGNoYXIgKnN0YXRlKQoreworICAgIGNoYXIg cGF0aFs1MF07CisKKyAgICBpZiAoeHMgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgInhlbnN0b3JlIGNvbm5lY3Rpb24gbm90IGluaXRpYWxpemVkXG4iKTsKKyAgICAgICAgZXhp dCgxKTsKKyAgICB9CisKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YgKHBhdGgpLCAiZGV2aWNl LW1vZGVsLyV1L3N0YXRlIiwgeGVuX2RvbWlkKTsKKyAgICBpZiAoIXhzX3dyaXRlKHhzLCBYQlRf TlVMTCwgcGF0aCwgc3RhdGUsIHN0cmxlbihzdGF0ZSkpKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiZXJyb3IgcmVjb3JkaW5nIGRtIHN0YXRlXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAg ICB9Cit9CisKKworc3RhdGljIHZvaWQgeGVuX2NoYW5nZV9zdGF0ZV9oYW5kbGVyKHZvaWQgKm9w YXF1ZSwgaW50IHJ1bm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UnVuU3RhdGUgc3RhdGUpCit7CisgICAgaWYgKHJ1bm5pbmcpIHsKKyAgICAgICAgLyogcmVjb3Jk IHN0YXRlIHJ1bm5pbmcgKi8KKyAgICAgICAgeGVuc3RvcmVfcmVjb3JkX2RtX3N0YXRlKHhlbnN0 b3JlLCAicnVubmluZyIpOworICAgIH0KK30KKworc3RhdGljIGludCB4ZW5faW5pdChNYWNoaW5l U3RhdGUgKm1zKQoreworICAgIHhlbl94YyA9IHhjX2ludGVyZmFjZV9vcGVuKDAsIDAsIDApOwor ICAgIGlmICh4ZW5feGMgPT0gTlVMTCkgeworICAgICAgICB4ZW5fcHZfcHJpbnRmKE5VTEwsIDAs ICJjYW4ndCBvcGVuIHhlbiBpbnRlcmZhY2VcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAg fQorICAgIHhlbl9mbWVtID0geGVuZm9yZWlnbm1lbW9yeV9vcGVuKDAsIDApOworICAgIGlmICh4 ZW5fZm1lbSA9PSBOVUxMKSB7CisgICAgICAgIHhlbl9wdl9wcmludGYoTlVMTCwgMCwgImNhbid0 IG9wZW4geGVuIGZtZW0gaW50ZXJmYWNlXG4iKTsKKyAgICAgICAgeGNfaW50ZXJmYWNlX2Nsb3Nl KHhlbl94Yyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgeGVuX2Rtb2QgPSB4ZW5k ZXZpY2Vtb2RlbF9vcGVuKDAsIDApOworICAgIGlmICh4ZW5fZG1vZCA9PSBOVUxMKSB7CisgICAg ICAgIHhlbl9wdl9wcmludGYoTlVMTCwgMCwgImNhbid0IG9wZW4geGVuIGRldmljZW1vZGVsIGlu dGVyZmFjZVxuIik7CisgICAgICAgIHhlbmZvcmVpZ25tZW1vcnlfY2xvc2UoeGVuX2ZtZW0pOwor ICAgICAgICB4Y19pbnRlcmZhY2VfY2xvc2UoeGVuX3hjKTsKKyAgICAgICAgcmV0dXJuIC0xOwor ICAgIH0KKyAgICBxZW11X2FkZF92bV9jaGFuZ2Vfc3RhdGVfaGFuZGxlcih4ZW5fY2hhbmdlX3N0 YXRlX2hhbmRsZXIsIE5VTEwpOworCisgICAgZ2xvYmFsX3N0YXRlX3NldF9vcHRpb25hbCgpOwor ICAgIHNhdmV2bV9za2lwX2NvbmZpZ3VyYXRpb24oKTsKKyAgICBzYXZldm1fc2tpcF9zZWN0aW9u X2Zvb3RlcnMoKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB4ZW5fYWNjZWxf Y2xhc3NfaW5pdChPYmplY3RDbGFzcyAqb2MsIHZvaWQgKmRhdGEpCit7CisgICAgQWNjZWxDbGFz cyAqYWMgPSBBQ0NFTF9DTEFTUyhvYyk7CisgICAgYWMtPm5hbWUgPSAiWGVuIjsKKyAgICBhYy0+ aW5pdF9tYWNoaW5lID0geGVuX2luaXQ7CisgICAgYWMtPmFsbG93ZWQgPSAmeGVuX2FsbG93ZWQ7 Cit9CisKKyNkZWZpbmUgVFlQRV9YRU5fQUNDRUwgQUNDRUxfQ0xBU1NfTkFNRSgieGVuIikKKwor c3RhdGljIGNvbnN0IFR5cGVJbmZvIHhlbl9hY2NlbF90eXBlID0geworICAgIC5uYW1lID0gVFlQ RV9YRU5fQUNDRUwsCisgICAgLnBhcmVudCA9IFRZUEVfQUNDRUwsCisgICAgLmNsYXNzX2luaXQg PSB4ZW5fYWNjZWxfY2xhc3NfaW5pdCwKK307CisKK3N0YXRpYyB2b2lkIHhlbl90eXBlX2luaXQo dm9pZCkKK3sKKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmeGVuX2FjY2VsX3R5cGUpOworfQor Cit0eXBlX2luaXQoeGVuX3R5cGVfaW5pdCk7CmRpZmYgLS1naXQgYS9zdHVicy9NYWtlZmlsZS5v YmpzIGIvc3R1YnMvTWFrZWZpbGUub2JqcwppbmRleCAyMjRmMDRiLi42YzgwNjEzIDEwMDY0NAot LS0gYS9zdHVicy9NYWtlZmlsZS5vYmpzCisrKyBiL3N0dWJzL01ha2VmaWxlLm9ianMKQEAgLTM3 LDMgKzM3LDQgQEAgc3R1Yi1vYmoteSArPSB0YXJnZXQtbW9uaXRvci1kZWZzLm8KIHN0dWItb2Jq LXkgKz0gdGFyZ2V0LWdldC1tb25pdG9yLWRlZi5vCiBzdHViLW9iai15ICs9IHBjX21hZHRfY3B1 X2VudHJ5Lm8KIHN0dWItb2JqLXkgKz0gdm1nZW5pZC5vCitzdHViLW9iai15ICs9IHhlbi1jb21t b24ubwpkaWZmIC0tZ2l0IGEvc3R1YnMveGVuLWNvbW1vbi5jIGIvc3R1YnMveGVuLWNvbW1vbi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmNlMmQKLS0tIC9kZXYvbnVs bAorKysgYi9zdHVicy94ZW4tY29tbW9uLmMKQEAgLTAsMCArMSwxNCBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxNCAgICAgICBDaXRyaXggU3lzdGVtcyBVSyBMdGQuCisgKgorICogVGhpcyB3 b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAy IG9yIGxhdGVyLgorICogU2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJl Y3RvcnkuCisgKi8KKworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11LWNv bW1vbi5oIgorI2luY2x1ZGUgImh3L3hlbi94ZW4uaCIKKwordm9pZCB4ZW5zdG9yZV9zdG9yZV9w dl9jb25zb2xlX2luZm8oaW50IGksIENoYXJkZXYgKmNocikKK3sKK30KZGlmZiAtLWdpdCBhL3hl bi1jb21tb24tc3R1Yi5jIGIveGVuLWNvbW1vbi1zdHViLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDA5ZmNlMmQuLjAwMDAwMDAKLS0tIGEveGVuLWNvbW1vbi1zdHViLmMKKysrIC9k ZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0ICAgICAg IENpdHJpeCBTeXN0ZW1zIFVLIEx0ZC4KLSAqCi0gKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCi0gKiBTZWUg dGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KLSAqLwotCi0jaW5j bHVkZSAicWVtdS9vc2RlcC5oIgotI2luY2x1ZGUgInFlbXUtY29tbW9uLmgiCi0jaW5jbHVkZSAi aHcveGVuL3hlbi5oIgotCi12b2lkIHhlbnN0b3JlX3N0b3JlX3B2X2NvbnNvbGVfaW5mbyhpbnQg aSwgQ2hhcmRldiAqY2hyKQotewotfQpkaWZmIC0tZ2l0IGEveGVuLWNvbW1vbi5jIGIveGVuLWNv bW1vbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTc2MTUwLi4wMDAwMDAwCi0t LSBhL3hlbi1jb21tb24uYworKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0vKgotICog Q29weXJpZ2h0IChDKSAyMDE0ICAgICAgIENpdHJpeCBTeXN0ZW1zIFVLIEx0ZC4KLSAqCi0gKiBU aGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BMLCB2ZXJz aW9uIDIuICBTZWUKLSAqIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rv cnkuCi0gKgotICogQ29udHJpYnV0aW9ucyBhZnRlciAyMDEyLTAxLTEzIGFyZSBsaWNlbnNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqLwotCi0jaW5jbHVkZSAicWVtdS9vc2RlcC5o IgotI2luY2x1ZGUgImh3L3hlbi94ZW5fYmFja2VuZC5oIgotI2luY2x1ZGUgInFtcC1jb21tYW5k cy5oIgotI2luY2x1ZGUgInN5c2VtdS9jaGFyLmgiCi0jaW5jbHVkZSAic3lzZW11L2FjY2VsLmgi Ci0jaW5jbHVkZSAibWlncmF0aW9uL21pZ3JhdGlvbi5oIgotCi0vLyNkZWZpbmUgREVCVUdfWEVO Ci0KLSNpZmRlZiBERUJVR19YRU4KLSNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgXAotICAgIGRv IHsgZnByaW50ZihzdGRlcnIsICJ4ZW46ICIgZm10LCAjIyBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUg KDApCi0jZWxzZQotI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBcCi0gICAgZG8geyB9IHdoaWxl ICgwKQotI2VuZGlmCi0KLXhjX2ludGVyZmFjZSAqeGVuX3hjOwoteGVuZm9yZWlnbm1lbW9yeV9o YW5kbGUgKnhlbl9mbWVtOwoteGVuZGV2aWNlbW9kZWxfaGFuZGxlICp4ZW5fZG1vZDsKLQotc3Rh dGljIGludCBzdG9yZV9kZXZfaW5mbyhpbnQgZG9taWQsIENoYXJkZXYgKmNzLCBjb25zdCBjaGFy ICpzdHJpbmcpCi17Ci0gICAgc3RydWN0IHhzX2hhbmRsZSAqeHMgPSBOVUxMOwotICAgIGNoYXIg KnBhdGggPSBOVUxMOwotICAgIGNoYXIgKm5ld3BhdGggPSBOVUxMOwotICAgIGNoYXIgKnB0cyA9 IE5VTEw7Ci0gICAgaW50IHJldCA9IC0xOwotCi0gICAgLyogT25seSBjb250aW51ZSBpZiB3ZSdy ZSB0YWxraW5nIHRvIGEgcHR5LiAqLwotICAgIGlmIChzdHJuY21wKGNzLT5maWxlbmFtZSwgInB0 eToiLCA0KSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcHRzID0gY3MtPmZpbGVu YW1lICsgNDsKLQotICAgIC8qIFdlIG5vdyBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBzZXQg dGhlIHhlbnN0b3JlIGVudHJ5LiAqLwotICAgIHhzID0geHNfb3BlbigwKTsKLSAgICBpZiAoeHMg PT0gTlVMTCkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBjb250YWN0IFhl blN0b3JlXG4iKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotCi0gICAgcGF0aCA9IHhzX2dl dF9kb21haW5fcGF0aCh4cywgZG9taWQpOwotICAgIGlmIChwYXRoID09IE5VTEwpIHsKLSAgICAg ICAgZnByaW50ZihzdGRlcnIsICJ4c19nZXRfZG9tYWluX3BhdGgoKSBlcnJvclxuIik7Ci0gICAg ICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBuZXdwYXRoID0gcmVhbGxvYyhwYXRoLCAoc3RybGVu KHBhdGgpICsgc3RybGVuKHN0cmluZykgKwotICAgICAgICAgICAgICAgIHN0cmxlbigiL3R0eSIp ICsgMSkpOwotICAgIGlmIChuZXdwYXRoID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRl cnIsICJyZWFsbG9jIGVycm9yXG4iKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIHBh dGggPSBuZXdwYXRoOwotCi0gICAgc3RyY2F0KHBhdGgsIHN0cmluZyk7Ci0gICAgc3RyY2F0KHBh dGgsICIvdHR5Iik7Ci0gICAgaWYgKCF4c193cml0ZSh4cywgWEJUX05VTEwsIHBhdGgsIHB0cywg c3RybGVuKHB0cykpKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAieHNfd3JpdGUgZm9yICcl cycgZmFpbCIsIHN0cmluZyk7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICByZXQgPSAw OwotCi1vdXQ6Ci0gICAgZnJlZShwYXRoKTsKLSAgICB4c19jbG9zZSh4cyk7Ci0KLSAgICByZXR1 cm4gcmV0OwotfQotCi12b2lkIHhlbnN0b3JlX3N0b3JlX3B2X2NvbnNvbGVfaW5mbyhpbnQgaSwg Q2hhcmRldiAqY2hyKQotewotICAgIGlmIChpID09IDApIHsKLSAgICAgICAgc3RvcmVfZGV2X2lu Zm8oeGVuX2RvbWlkLCBjaHIsICIvY29uc29sZSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNo YXIgYnVmWzMyXTsKLSAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIi9kZXZpY2Uv Y29uc29sZS8lZCIsIGkpOwotICAgICAgICBzdG9yZV9kZXZfaW5mbyh4ZW5fZG9taWQsIGNociwg YnVmKTsKLSAgICB9Ci19Ci0KLQotc3RhdGljIHZvaWQgeGVuc3RvcmVfcmVjb3JkX2RtX3N0YXRl KHN0cnVjdCB4c19oYW5kbGUgKnhzLCBjb25zdCBjaGFyICpzdGF0ZSkKLXsKLSAgICBjaGFyIHBh dGhbNTBdOwotCi0gICAgaWYgKHhzID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIs ICJ4ZW5zdG9yZSBjb25uZWN0aW9uIG5vdCBpbml0aWFsaXplZFxuIik7Ci0gICAgICAgIGV4aXQo MSk7Ci0gICAgfQotCi0gICAgc25wcmludGYocGF0aCwgc2l6ZW9mIChwYXRoKSwgImRldmljZS1t b2RlbC8ldS9zdGF0ZSIsIHhlbl9kb21pZCk7Ci0gICAgaWYgKCF4c193cml0ZSh4cywgWEJUX05V TEwsIHBhdGgsIHN0YXRlLCBzdHJsZW4oc3RhdGUpKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgImVycm9yIHJlY29yZGluZyBkbSBzdGF0ZVxuIik7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAg fQotfQotCi0KLXN0YXRpYyB2b2lkIHhlbl9jaGFuZ2Vfc3RhdGVfaGFuZGxlcih2b2lkICpvcGFx dWUsIGludCBydW5uaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1 blN0YXRlIHN0YXRlKQotewotICAgIGlmIChydW5uaW5nKSB7Ci0gICAgICAgIC8qIHJlY29yZCBz dGF0ZSBydW5uaW5nICovCi0gICAgICAgIHhlbnN0b3JlX3JlY29yZF9kbV9zdGF0ZSh4ZW5zdG9y ZSwgInJ1bm5pbmciKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQgeGVuX2luaXQoTWFjaGluZVN0 YXRlICptcykKLXsKLSAgICB4ZW5feGMgPSB4Y19pbnRlcmZhY2Vfb3BlbigwLCAwLCAwKTsKLSAg ICBpZiAoeGVuX3hjID09IE5VTEwpIHsKLSAgICAgICAgeGVuX3B2X3ByaW50ZihOVUxMLCAwLCAi Y2FuJ3Qgb3BlbiB4ZW4gaW50ZXJmYWNlXG4iKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0K LSAgICB4ZW5fZm1lbSA9IHhlbmZvcmVpZ25tZW1vcnlfb3BlbigwLCAwKTsKLSAgICBpZiAoeGVu X2ZtZW0gPT0gTlVMTCkgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKE5VTEwsIDAsICJjYW4ndCBv cGVuIHhlbiBmbWVtIGludGVyZmFjZVxuIik7Ci0gICAgICAgIHhjX2ludGVyZmFjZV9jbG9zZSh4 ZW5feGMpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHhlbl9kbW9kID0geGVuZGV2 aWNlbW9kZWxfb3BlbigwLCAwKTsKLSAgICBpZiAoeGVuX2Rtb2QgPT0gTlVMTCkgewotICAgICAg ICB4ZW5fcHZfcHJpbnRmKE5VTEwsIDAsICJjYW4ndCBvcGVuIHhlbiBkZXZpY2Vtb2RlbCBpbnRl cmZhY2VcbiIpOwotICAgICAgICB4ZW5mb3JlaWdubWVtb3J5X2Nsb3NlKHhlbl9mbWVtKTsKLSAg ICAgICAgeGNfaW50ZXJmYWNlX2Nsb3NlKHhlbl94Yyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAg ICB9Ci0gICAgcWVtdV9hZGRfdm1fY2hhbmdlX3N0YXRlX2hhbmRsZXIoeGVuX2NoYW5nZV9zdGF0 ZV9oYW5kbGVyLCBOVUxMKTsKLQotICAgIGdsb2JhbF9zdGF0ZV9zZXRfb3B0aW9uYWwoKTsKLSAg ICBzYXZldm1fc2tpcF9jb25maWd1cmF0aW9uKCk7Ci0gICAgc2F2ZXZtX3NraXBfc2VjdGlvbl9m b290ZXJzKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgeGVuX2FjY2VsX2Ns YXNzX2luaXQoT2JqZWN0Q2xhc3MgKm9jLCB2b2lkICpkYXRhKQotewotICAgIEFjY2VsQ2xhc3Mg KmFjID0gQUNDRUxfQ0xBU1Mob2MpOwotICAgIGFjLT5uYW1lID0gIlhlbiI7Ci0gICAgYWMtPmlu aXRfbWFjaGluZSA9IHhlbl9pbml0OwotICAgIGFjLT5hbGxvd2VkID0gJnhlbl9hbGxvd2VkOwot fQotCi0jZGVmaW5lIFRZUEVfWEVOX0FDQ0VMIEFDQ0VMX0NMQVNTX05BTUUoInhlbiIpCi0KLXN0 YXRpYyBjb25zdCBUeXBlSW5mbyB4ZW5fYWNjZWxfdHlwZSA9IHsKLSAgICAubmFtZSA9IFRZUEVf WEVOX0FDQ0VMLAotICAgIC5wYXJlbnQgPSBUWVBFX0FDQ0VMLAotICAgIC5jbGFzc19pbml0ID0g eGVuX2FjY2VsX2NsYXNzX2luaXQsCi19OwotCi1zdGF0aWMgdm9pZCB4ZW5fdHlwZV9pbml0KHZv aWQpCi17Ci0gICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJnhlbl9hY2NlbF90eXBlKTsKLX0KLQot dHlwZV9pbml0KHhlbl90eXBlX2luaXQpOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK