From mboxrd@z Thu Jan 1 00:00:00 1970 From: Iurii Mykhalskyi Subject: [PATCH RFC 3/6] libxl: implementation of PV tty device interface. Date: Thu, 19 May 2016 17:37:32 +0300 Message-ID: <1463668655-16778-4-git-send-email-iurii.mykhalskyi@globallogic.com> References: <1463668655-16778-1-git-send-email-iurii.mykhalskyi@globallogic.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1463668655-16778-1-git-send-email-iurii.mykhalskyi@globallogic.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: embedded-pv-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, stefano.stabellini@eu.citrix.com, ian.jackson@eu.citrix.com, ian.campbell@citrix.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org UFYgdHR5IGRldmljZSBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgaW4gbGlieGwgYW5kIHhsIHdp dGgKZnVsbCBzdXBwb3J0IGZvciBkZXZpY2UgY29udHJvbC4gTm8gSlNPTiBwYXJzZXIgZm9yIGRv bWFpbgpjb25maWd1cmF0aW9uIHlldC4KClNpZ25lZC1vZmYtYnk6IEl1cmlpIE15a2hhbHNreWkg PGl1cmlpLm15a2hhbHNreWlAZ2xvYmFsbG9naWMuY29tPgpTaWduZWQtb2ZmLWJ5OiBJdXJpaSBL b25vdmFsZW5rbyA8aXVyaWkua29ub3ZhbGVua29AZ2xvYmFsbG9naWMuY29tPgotLS0KIHRvb2xz L2xpYnhsL2xpYnhsLmMgICAgICAgICAgICAgICAgICB8IDI4MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICAgIHwg IDE3ICsrKwogdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMgICAgICAgICAgIHwgIDM3ICsrKyst CiB0b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyAgICAgICAgICAgfCAgIDIgKwogdG9vbHMvbGli eGwvbGlieGxfaW50ZXJuYWwuaCAgICAgICAgIHwgIDEzICstCiB0b29scy9saWJ4bC9saWJ4bF90 eXBlcy5pZGwgICAgICAgICAgfCAgMTkgKysrCiB0b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRl cm5hbC5pZGwgfCAgIDEgKwogdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaCAgICAgICAgICAgIHwg ICAzICsKIHRvb2xzL2xpYnhsL3hsLmggICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiB0b29s cy9saWJ4bC94bF9jbWRpbXBsLmMgICAgICAgICAgICAgfCAxNjAgKysrKysrKysrKysrKysrKysr Ky0KIHRvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgICAgICAgICAgICB8ICAxNSArKwogMTEgZmls ZXMgY2hhbmdlZCwgNTQ5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGwvbGlieGwuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKaW5kZXggZDk2MTcy ZC4uMTQyNmJmNiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuYworKysgYi90b29scy9s aWJ4bC9saWJ4bC5jCkBAIC0yNTk1LDYgKzI1OTUsMjc2IEBAIGV4aXQ6CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCiAKK2ludCBsaWJ4bF9fZGV2aWNlX3Z0dHlfc2V0ZGVmYXVsdChsaWJ4bF9f Z2MgKmdjLCBsaWJ4bF9kZXZpY2VfdnR0eSAqdnR0eSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBy YyA9IGxpYnhsX19yZXNvbHZlX2RvbWlkKGdjLCB2dHR5LT5iYWNrZW5kX2RvbW5hbWUsICZ2dHR5 LT5iYWNrZW5kX2RvbWlkKTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBsaWJ4 bF9fZGV2aWNlX2Zyb21fdnR0eShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwgbGlieGxf ZGV2aWNlX3Z0dHkgKnZ0dHksIGxpYnhsX19kZXZpY2UgKmRldmljZSkKK3sKKyAgIGRldmljZS0+ YmFja2VuZF9kZXZpZCAgID0gdnR0eS0+ZGV2aWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfZG9taWQg ICA9IHZ0dHktPmJhY2tlbmRfZG9taWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfa2luZCAgICA9IExJ QlhMX19ERVZJQ0VfS0lORF9WVFRZOworICAgZGV2aWNlLT5kZXZpZCAgICAgICAgICAgPSB2dHR5 LT5kZXZpZDsKKyAgIGRldmljZS0+ZG9taWQgICAgICAgICAgID0gZG9taWQ7CisgICBkZXZpY2Ut PmtpbmQgICAgICAgICAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WVFRZOworCisgICByZXR1cm4g MDsKK30KKworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3Z0dHlfZnJvbV94c19iZShsaWJ4bF9f Z2MgKmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmJlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfZGV2aWNlX3Z0dHkgKnZ0dHkpCit7CisgICAgY29uc3QgY2hhciAqdG1wOworICAgIGludCBy YzsKKworICAgIGxpYnhsX2RldmljZV92dHR5X2luaXQodnR0eSk7CisKKyAgICB0bXAgPSBSRUFE X0JBQ0tFTkQoZ2MsICJkZXZpY2UtaWQiKTsKKyAgICBpZiAodG1wKQorICAgIAl2dHR5LT5kZXZp ZCA9IGF0b2kodG1wKTsKKyAgICBlbHNlCisgICAgCXZ0dHktPmRldmlkID0gMDsKKworICAgIHJj ID0gMDsKKyBvdXQ6CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgbGlieGxfZGV2aWRfdG9fZGV2 aWNlX3Z0dHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGRldmlkLCBsaWJ4bF9kZXZpY2VfdnR0eSAqdnR0eSkKK3sKKyAg ICBHQ19JTklUKGN0eCk7CisgICAgY2hhciAqZG9tcGF0aCwgKnBhdGg7CisgICAgaW50IHJjID0g RVJST1JfRkFJTDsKKworICAgIGxpYnhsX2RldmljZV92dHR5X2luaXQodnR0eSk7CisgICAgZG9t cGF0aCA9IGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgZG9taWQpOworICAgIGlmICghZG9tcGF0 aCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBwYXRoID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhC VF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fc3ByaW50ZihnYywgIiVz L2RldmljZS92dHR5LyVkL2JhY2tlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb21wYXRoLCBkZXZpZCkpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgZ290 byBvdXQ7CisKKyAgICByYyA9IGxpYnhsX19kZXZpY2VfdnR0eV9mcm9tX3hzX2JlKGdjLCBwYXRo LCB2dHR5KTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgcmMgPSAwOworb3V0OgorICAg IEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCit2b2lkIGxpYnhsX19kZXZpY2VfdnR0eV9h ZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNlX3Z0dHkgKnZ0 dHksIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KQoreworICAgIFNUQVRFX0FPX0dDKGFvZGV2LT5h byk7CisgICAgZmxleGFycmF5X3QgKmZyb250OworICAgIGZsZXhhcnJheV90ICpiYWNrOworICAg IGxpYnhsX19kZXZpY2UgKmRldmljZTsKKyAgICBpbnQgcmM7CisgICAgeHNfdHJhbnNhY3Rpb25f dCB0ID0gWEJUX05VTEw7CisgICAgbGlieGxfZG9tYWluX2NvbmZpZyBkX2NvbmZpZzsKKyAgICBs aWJ4bF9kZXZpY2VfdnR0eSB2dHR5X3NhdmVkOworICAgIGxpYnhsX19kb21haW5fdXNlcmRhdGFf bG9jayAqbG9jayA9IE5VTEw7CisKKyAgICBsaWJ4bF9kb21haW5fY29uZmlnX2luaXQoJmRfY29u ZmlnKTsKKyAgICBsaWJ4bF9kZXZpY2VfdnR0eV9pbml0KCZ2dHR5X3NhdmVkKTsKKyAgICBsaWJ4 bF9kZXZpY2VfdnR0eV9jb3B5KENUWCwgJnZ0dHlfc2F2ZWQsIHZ0dHkpOworCisgICAgcmMgPSBs aWJ4bF9fZGV2aWNlX3Z0dHlfc2V0ZGVmYXVsdChnYywgdnR0eSk7CisgICAgaWYgKHJjKSBnb3Rv IG91dDsKKworICAgIGZyb250ID0gZmxleGFycmF5X21ha2UoZ2MsIDE2LCAxKTsKKyAgICBiYWNr ID0gZmxleGFycmF5X21ha2UoZ2MsIDMyLCAxKTsKKworICAgIGlmICgodnR0eS0+ZGV2aWQgPSBs aWJ4bF9fZGV2aWNlX25leHRpZChnYywgZG9taWQsICJ2dHR5IikpIDwgMCkgeworICAgICAgICBy YyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIEdDTkVXKGRl dmljZSk7CisgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX2Zyb21fdnR0eShnYywgZG9taWQsIHZ0dHks IGRldmljZSk7CisgICAgaWYgKCByYyAhPSAwICkgZ290byBvdXQ7CisKKyAgICBmbGV4YXJyYXlf YXBwZW5kKGJhY2ssICJkZXZpY2UtaWQiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdD U1BSSU5URigiJWQiLCB2dHR5LT5kZXZpZCkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywg ImZyb250ZW5kLWlkIik7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVk IiwgZG9taWQpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJkZXZpY2UiKTsKKyAgICBm bGV4YXJyYXlfYXBwZW5kKGJhY2ssIHZ0dHktPmRldmljZSk7CisgICAgZmxleGFycmF5X2FwcGVu ZChiYWNrLCAib25saW5lIik7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiMSIpOworICAg IGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInN0YXRlIik7CisgICAgZmxleGFycmF5X2FwcGVuZChi YWNrLCBHQ1NQUklOVEYoIiVkIiwgMSkpOworCisgICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwg ImRldmljZS1pZCIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigiJWQi LCB2dHR5LT5kZXZpZCkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJiYWNrZW5kLWlk Iik7CisgICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgR0NTUFJJTlRGKCIlZCIsIHZ0dHktPmJh Y2tlbmRfZG9taWQpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCAic3RhdGUiKTsKKyAg ICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCBHQ1NQUklOVEYoIiVkIiwgMSkpOworCisgICAgaWYg KGFvZGV2LT51cGRhdGVfanNvbikgeworICAgICAgICBsb2NrID0gbGlieGxfX2xvY2tfZG9tYWlu X3VzZXJkYXRhKGdjLCBkb21pZCk7CisgICAgICAgIGlmICghbG9jaykgeworICAgICAgICAgICAg cmMgPSBFUlJPUl9MT0NLX0ZBSUw7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQor CisgICAgICAgIHJjID0gbGlieGxfX2dldF9kb21haW5fY29uZmlndXJhdGlvbihnYywgZG9taWQs ICZkX2NvbmZpZyk7CisgICAgICAgIExPRyhJTkZPLCAiYW9kZXYgdXBkYXRlcyBKU09OLCBsaWJ4 bF9fZ2V0X2RvbWFpbl9jb25maWd1cmF0aW9uIHJldHVybmVkICVkIiwgcmMpOworICAgICAgICBp ZiAocmMpIGdvdG8gb3V0OworCisgICAgICAgIERFVklDRV9BREQodnR0eSwgdnR0eXMsIGRvbWlk LCAmdnR0eV9zYXZlZCwgQ09NUEFSRV9ERVZJRCwgJmRfY29uZmlnKTsKKyAgICB9CisKKyAgICBm b3IgKDs7KSB7CisgICAgICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAm dCk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2 aWNlX2V4aXN0cyhnYywgdCwgZGV2aWNlKTsKKyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7 CisgICAgICAgIGlmIChyYyA9PSAxKSB7ICAgICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0cyBp biB4ZW5zdG9yZSAqLworICAgICAgICAgICAgTE9HKEVSUk9SLCAiZGV2aWNlIGFscmVhZHkgZXhp c3RzIGluIHhlbnN0b3JlIik7CisgICAgICAgICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RF VklDRV9BQ1RJT05fQUREOyAvKiBmb3IgZXJyb3IgbWVzc2FnZSAqLworICAgICAgICAgICAgcmMg PSBFUlJPUl9ERVZJQ0VfRVhJU1RTOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0K KworICAgICAgICBpZiAoYW9kZXYtPnVwZGF0ZV9qc29uKSB7CisgICAgICAgICAgICByYyA9IGxp YnhsX19zZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24oZ2MsIGRvbWlkLCAmZF9jb25maWcpOworICAg ICAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGxpYnhsX19k ZXZpY2VfZ2VuZXJpY19hZGQoZ2MsIHQsIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgYmFjaywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNr LT5jb3VudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2t2 c19vZl9mbGV4YXJyYXkoZ2MsIGZyb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250LT5jb3VudCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9feHNf dHJhbnNhY3Rpb25fY29tbWl0KGdjLCAmdCk7CisKKyAgICAgICAgaWYgKCFyYykgYnJlYWs7Cisg ICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0OworICAgIH0KKworICAgIGFvZGV2LT5kZXYgPSBk ZXZpY2U7CisgICAgYW9kZXYtPmFjdGlvbiA9IExJQlhMX19ERVZJQ0VfQUNUSU9OX0FERDsKKyAg ICBsaWJ4bF9fd2FpdF9kZXZpY2VfY29ubmVjdGlvbihlZ2MsIGFvZGV2KTsKKworICAgIHJjID0g MDsKK291dDoKKyAgICBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fYWJvcnQoZ2MsICZ0KTsKKyAgICBp ZiAobG9jaykgbGlieGxfX3VubG9ja19kb21haW5fdXNlcmRhdGEobG9jayk7CisgICAgbGlieGxf ZGV2aWNlX3Z0dHlfZGlzcG9zZSgmdnR0eV9zYXZlZCk7CisgICAgbGlieGxfZG9tYWluX2NvbmZp Z19kaXNwb3NlKCZkX2NvbmZpZyk7CisgICAgYW9kZXYtPnJjID0gcmM7CisgICAgaWYocmMpIGFv ZGV2LT5jYWxsYmFjayhlZ2MsIGFvZGV2KTsKKyAgICByZXR1cm47CisKK30KKworbGlieGxfZGV2 aWNlX3Z0dHkgKmxpYnhsX2RldmljZV92dHR5X2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLCBpbnQgKm51bSkKK3sKKyAgICBHQ19JTklUKGN0eCk7CisKKyAgICBsaWJ4bF9kZXZp Y2VfdnR0eSogdnR0eXMgPSBOVUxMOworICAgIGNoYXIqIGZlX3BhdGggPSBOVUxMOworICAgIGNo YXIqKiBkaXIgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBuZGlycyA9IDA7CisKKyAgICAqbnVt ID0gMDsKKworICAgIGZlX3BhdGggPSBsaWJ4bF9fc3ByaW50ZihnYywgIiVzL2RldmljZS92dHR5 IiwgbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCkpOworICAgIGRpciA9IGxpYnhsX194 c19kaXJlY3RvcnkoZ2MsIFhCVF9OVUxMLCBmZV9wYXRoLCAmbmRpcnMpOworICAgIGlmIChkaXIg JiYgbmRpcnMpIHsKKyAgICAgICB2dHR5cyA9IG1hbGxvYyhzaXplb2YoKnZ0dHlzKSAqIG5kaXJz KTsKKyAgICAgICBsaWJ4bF9kZXZpY2VfdnR0eSogdnR0eTsKKyAgICAgICBsaWJ4bF9kZXZpY2Vf dnR0eSogZW5kID0gdnR0eXMgKyBuZGlyczsKKyAgICAgICBmb3IodnR0eSA9IHZ0dHlzOyB2dHR5 IDwgZW5kOyArK3Z0dHksICsrZGlyKSB7CisgICAgICAgICAgY2hhciogdG1wOworCisgICAgICAg ICAgbGlieGxfZGV2aWNlX3Z0dHlfaW5pdCh2dHR5KTsKKworICAgICAgICAgIHZ0dHktPmRldmlk ID0gYXRvaSgqZGlyKTsKKworICAgICAgICAgIHRtcCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRf TlVMTCwKKyAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzLyVzL2JhY2tlbmQtaWQiLAorICAg ICAgICAgICAgICAgICAgIGZlX3BhdGgsICpkaXIpKTsKKyAgICAgICAgICB2dHR5LT5iYWNrZW5k X2RvbWlkID0gYXRvaSh0bXApOworICAgICAgIH0KKyAgICB9CisgICAgKm51bSA9IG5kaXJzOwor CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gdnR0eXM7Cit9CisKK2ludCBsaWJ4bF9kZXZpY2Vf dnR0eV9nZXRpbmZvKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNl X3Z0dHkgKnZ0dHksIGxpYnhsX3Z0dHlpbmZvICp2dHR5aW5mbykKK3sKKyAgICBHQ19JTklUKGN0 eCk7CisgICAgY2hhciAqZG9tcGF0aCwgKnZ0dHlwYXRoOworICAgIGNoYXIgKnZhbDsKKyAgICBp bnQgcmMgPSAwOworCisgICAgbGlieGxfdnR0eWluZm9faW5pdCh2dHR5aW5mbyk7CisgICAgZG9t cGF0aCA9IGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgZG9taWQpOworICAgIHZ0dHlpbmZvLT5k ZXZpZCA9IHZ0dHktPmRldmlkOworCisgICAgdnR0eXBhdGggPSBHQ1NQUklOVEYoIiVzL2Rldmlj ZS92dHR5LyVkIiwgZG9tcGF0aCwgdnR0eWluZm8tPmRldmlkKTsKKyAgICB2dHR5aW5mby0+YmFj a2VuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigi JXMvYmFja2VuZCIsIHZ0dHlwYXRoKSwgTlVMTCk7CisKKyAgICBpZiAoIXZ0dHlpbmZvLT5iYWNr ZW5kKSB7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIGlmKCFsaWJ4bF9feHNfcmVh ZChnYywgWEJUX05VTEwsIHZ0dHlpbmZvLT5iYWNrZW5kKSkgeworICAgICAgIGdvdG8gZXJyOwor ICAgIH0KKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAg ICBHQ1NQUklOVEYoIiVzL2JhY2tlbmQtaWQiLCB2dHR5cGF0aCkpOworICAgIHZ0dHlpbmZvLT5i YWNrZW5kX2lkID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdmFs ID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMv c3RhdGUiLCB2dHR5cGF0aCkpOworICAgIHZ0dHlpbmZvLT5zdGF0ZSA9IHZhbCA/IHN0cnRvdWwo dmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRf TlVMTCwKKyAgICAgICAgICBHQ1NQUklOVEYoIiVzL2V2ZW50LWNoYW5uZWwiLCB2dHR5cGF0aCkp OworICAgIHZ0dHlpbmZvLT5ldnRjaCA9IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAt MTsKKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAgICBH Q1NQUklOVEYoIiVzL3JpbmctcmVmIiwgdnR0eXBhdGgpKTsKKyAgICB2dHR5aW5mby0+cnJlZiA9 IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIHZ0dHlpbmZvLT5mcm9u dGVuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigi JXMvZnJvbnRlbmQiLCB2dHR5aW5mby0+YmFja2VuZCksIE5VTEwpOworCisgICAgdmFsID0gbGli eGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRl bmQtaWQiLCB2dHR5aW5mby0+YmFja2VuZCkpOworICAgIHZ0dHlpbmZvLT5mcm9udGVuZF9pZCA9 IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIGdvdG8gZXhpdDsKK2Vy cjoKKyAgICByYyA9IEVSUk9SX0ZBSUw7CitleGl0OgorICAgIEdDX0ZSRUU7CisgICAgcmV0dXJu IHJjOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiBpbnQgbGlieGxfX2RldmljZV92 c25kX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3ZzbmQgKnZzbmQpCiB7 CiAgICAgaW50IHJjOwpAQCAtNDc0OSw2ICs1MDE5LDggQEAgb3V0OgogICogbGlieGxfZGV2aWNl X3ZydGNfZGVzdHJveQogICogbGlieGxfZGV2aWNlX3ZzbmRfcmVtb3ZlCiAgKiBsaWJ4bF9kZXZp Y2VfdnNuZF9kZXN0cm95CisgKiBsaWJ4bF9kZXZpY2VfdnR0eV9yZW1vdmUKKyAqIGxpYnhsX2Rl dmljZV92dHR5X2Rlc3Ryb3kKICAqLwogI2RlZmluZSBERUZJTkVfREVWSUNFX1JFTU9WRSh0eXBl LCByZW1vdmVkZXN0cm95LCBmKSAgICAgICAgICAgICAgICAgICAgXAogICAgIGludCBsaWJ4bF9k ZXZpY2VfIyN0eXBlIyNfIyNyZW1vdmVkZXN0cm95KGxpYnhsX2N0eCAqY3R4LCAgICAgICAgICAg XApAQCAtNDgwOCw2ICs1MDgwLDEwIEBAIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZydGMsIGRlc3Ry b3ksIDEpCiBERUZJTkVfREVWSUNFX1JFTU9WRSh2c25kLCByZW1vdmUsIDApCiBERUZJTkVfREVW SUNFX1JFTU9WRSh2c25kLCBkZXN0cm95LCAxKQogCisvKiB2dHR5ICovCitERUZJTkVfREVWSUNF X1JFTU9WRSh2dHR5LCByZW1vdmUsIDApCitERUZJTkVfREVWSUNFX1JFTU9WRSh2dHR5LCBkZXN0 cm95LCAxKQorCiAvKiBjaGFubmVsL2NvbnNvbGUgaG90dW5wbHVnIGlzIG5vdCBpbXBsZW1lbnRl ZC4gVGhlcmUgYXJlIDIgcG9zc2liaWxpdGllczoKICAqIDEuIGFkZCBzdXBwb3J0IGZvciBzZWNv bmRhcnkgY29uc29sZXMgdG8geGVuY29uc29sZWQKICAqIDIuIGR5bmFtaWNhbGx5IGFkZC9yZW1v dmUgcWVtdSBjaGFyZGV2cyB2aWEgcW1wIG1lc3NhZ2VzLiAqLwpAQCAtNDgyMyw2ICs1MDk5LDcg QEAgREVGSU5FX0RFVklDRV9SRU1PVkUodnNuZCwgZGVzdHJveSwgMSkKICAqIGxpYnhsX2Rldmlj ZV92dHBtX2FkZAogICogbGlieGxfZGV2aWNlX3ZydGNfYWRkCiAgKiBsaWJ4bF9kZXZpY2VfdnNu ZF9hZGQKKyAqIGxpYnhsX2RldmljZV92dHR5X2FkZAogICovCiAKICNkZWZpbmUgREVGSU5FX0RF VklDRV9BREQodHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK QEAgLTQ4NjAsNiArNTEzNyw5IEBAIERFRklORV9ERVZJQ0VfQUREKHZydGMpCiAvKiB2c25kICov CiBERUZJTkVfREVWSUNFX0FERCh2c25kKQogCisvKiB2dHR5ICovCitERUZJTkVfREVWSUNFX0FE RCh2dHR5KQorCiAjdW5kZWYgREVGSU5FX0RFVklDRV9BREQKIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KQEAgLTczODEsNiArNzY2MSw4IEBAIGludCBsaWJ4bF9yZXRyaWV2ZV9kb21haW5fY29u ZmlndXJhdGlvbihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAKICAgICBNRVJHRShw Y2ksIHBjaWRldnMsIENPTVBBUkVfUENJLCB7fSk7CiAKKyAgICBNRVJHRSh2dHR5LCB2dHR5cywg Q09NUEFSRV9ERVZJRCwge30pOworCiAgICAgLyogVGFrZSBjYXJlIG9mIHJlbW92YWJsZSBkZXZp Y2UuIFdlIG1haW50YWluIGludmFyaWFudCBpbiB0aGUKICAgICAgKiBpbnNlcnQgLyByZW1vdmUg b3BlcmF0aW9uIHNvIHRoYXQ6CiAgICAgICogMS4gaWYgeGVuc3RvcmUgaXMgImVtcHR5IiB3aGls ZSBKU09OIGlzIG5vdCwgdGhlIHJlc3VsdApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwu aCBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggM2NiNjdlMi4uNDc4MjlkZCAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0xNDY4 LDYgKzE0NjgsMjMgQEAgbGlieGxfZGV2aWNlX3ZzbmQgKmxpYnhsX2RldmljZV92c25kX2xpc3Qo bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgKm4KIGludCBsaWJ4bF9kZXZpY2Vf dnNuZF9nZXRpbmZvKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92c25kICp2c25kLCBsaWJ4bF92c25kaW5m byAqdnNuZGluZm8pOwogCisvKiBUVFkgKi8KK2ludCBsaWJ4bF9kZXZpY2VfdnR0eV9hZGQobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdnR0eSAqdnR0eSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOwor aW50IGxpYnhsX2RldmljZV92dHR5X3JlbW92ZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHR5ICp2dHR5 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAq YW9faG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxM RVJTX09OTFk7CitpbnQgbGlieGxfZGV2aWNlX3Z0dHlfZGVzdHJveShsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZp Y2VfdnR0eSAqdnR0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhs X2FzeW5jb3BfaG93ICphb19ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJY TF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CisKK2xpYnhsX2RldmljZV92dHR5ICpsaWJ4bF9kZXZp Y2VfdnR0eV9saXN0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pOwor aW50IGxpYnhsX2RldmljZV92dHR5X2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0dHkgKnZ0 dHksIGxpYnhsX3Z0dHlpbmZvICp2dHR5aW5mbyk7CisKIC8qIEtleWJvYXJkICovCiBpbnQgbGli eGxfZGV2aWNlX3ZrYl9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9k ZXZpY2VfdmtiICp2a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5 bmNvcF9ob3cgKmFvX2hvdykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5j IGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXggOGZmNDE3OC4uMzhkOWIxMiAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGli eGxfY3JlYXRlLmMKQEAgLTczNiw2ICs3MzYsOCBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0 YWNoX3Z0cG1zKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7CiBzdGF0aWMgdm9pZCBk b21jcmVhdGVfYXR0YWNoX3ZydGNzKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICpt dWx0aWRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7Citz dGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3Z0dHlzKGxpYnhsX19lZ2MgKmVnYywgbGlieGxf X211bHRpZGV2ICptdWx0aWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHJldCk7CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3ZzbmRzKGxpYnhsX19lZ2Mg KmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHJldCk7CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3BjaShs aWJ4bF9fZWdjICplZ2MsIGxpYnhsX19tdWx0aWRldiAqYW9kZXZzLApAQCAtMTQyOSwxMiArMTQz MSw0NSBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3ZydGNzKGxpYnhsX19lZ2MgKmVn YywKICAgIGlmIChkX2NvbmZpZy0+bnVtX3ZydGNzID4gMCkgewogICAgICAgIC8qIEF0dGFjaCB2 cnRjcyAqLwogICAgICAgIGxpYnhsX19tdWx0aWRldl9iZWdpbihhbywgJmRjcy0+bXVsdGlkZXYp OwotICAgICAgIGRjcy0+bXVsdGlkZXYuY2FsbGJhY2sgPSBkb21jcmVhdGVfYXR0YWNoX3ZzbmRz OworICAgICAgIGRjcy0+bXVsdGlkZXYuY2FsbGJhY2sgPSBkb21jcmVhdGVfYXR0YWNoX3Z0dHlz OwogICAgICAgIGxpYnhsX19hZGRfdnJ0Y3MoZWdjLCBhbywgZG9taWQsIGRfY29uZmlnLCAmZGNz LT5tdWx0aWRldik7CiAgICAgICAgbGlieGxfX211bHRpZGV2X3ByZXBhcmVkKGVnYywgJmRjcy0+ bXVsdGlkZXYsIDApOwogICAgICAgIHJldHVybjsKICAgIH0KIAorICAgZG9tY3JlYXRlX2F0dGFj aF92dHR5cyhlZ2MsIG11bHRpZGV2LCAwKTsKKyAgIHJldHVybjsKKworZXJyb3Jfb3V0OgorICAg YXNzZXJ0KHJldCk7CisgICBkb21jcmVhdGVfY29tcGxldGUoZWdjLCBkY3MsIHJldCk7Cit9CisK K3N0YXRpYyB2b2lkIGRvbWNyZWF0ZV9hdHRhY2hfdnR0eXMobGlieGxfX2VnYyAqZWdjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0KQoreworICAgbGli eGxfX2RvbWFpbl9jcmVhdGVfc3RhdGUgKmRjcyA9IENPTlRBSU5FUl9PRihtdWx0aWRldiwgKmRj cywgbXVsdGlkZXYpOworICAgU1RBVEVfQU9fR0MoZGNzLT5hbyk7CisgICBpbnQgZG9taWQgPSBk Y3MtPmd1ZXN0X2RvbWlkOworCisgICBsaWJ4bF9kb21haW5fY29uZmlnKiBjb25zdCBkX2NvbmZp ZyA9IGRjcy0+Z3Vlc3RfY29uZmlnOworCisgICBpZihyZXQpIHsKKyAgICAgICBMT0coRVJST1Is ICJ1bmFibGUgdG8gYWRkIHZ0dHkgZGV2aWNlcyIpOworICAgICAgIGdvdG8gZXJyb3Jfb3V0Owor ICAgfQorCisgICAgLyogUGx1ZyB2dHR5IGRldmljZXMgKi8KKyAgIGlmIChkX2NvbmZpZy0+bnVt X3Z0dHlzID4gMCkgeworICAgICAgIC8qIEF0dGFjaCB2dHR5cyAqLworICAgICAgIGxpYnhsX19t dWx0aWRldl9iZWdpbihhbywgJmRjcy0+bXVsdGlkZXYpOworICAgICAgIGRjcy0+bXVsdGlkZXYu Y2FsbGJhY2sgPSBkb21jcmVhdGVfYXR0YWNoX3ZzbmRzOworICAgICAgIGxpYnhsX19hZGRfdnR0 eXMoZWdjLCBhbywgZG9taWQsIGRfY29uZmlnLCAmZGNzLT5tdWx0aWRldik7CisgICAgICAgbGli eGxfX211bHRpZGV2X3ByZXBhcmVkKGVnYywgJmRjcy0+bXVsdGlkZXYsIDApOworICAgICAgIHJl dHVybjsKKyAgIH0KKwogICAgZG9tY3JlYXRlX2F0dGFjaF92c25kcyhlZ2MsIG11bHRpZGV2LCAw KTsKICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMg Yi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwppbmRleCA0MTlhZjE2Li5kZjUwZmRiIDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYworKysgYi90b29scy9saWJ4bC9saWJ4 bF9kZXZpY2UuYwpAQCAtNTQ2LDYgKzU0Niw3IEBAIHZvaWQgbGlieGxfX211bHRpZGV2X3ByZXBh cmVkKGxpYnhsX19lZ2MgKmVnYywKICAqIGxpYnhsX19hZGRfdnRwbXMKICAqIGxpYnhsX19hZGRf dnJ0Y3MKICAqIGxpYnhsX19hZGRfdnNuZHMKKyAqIGxpYnhsX19hZGRfdnR0eXMKICAqLwogCiAj ZGVmaW5lIERFRklORV9ERVZJQ0VTX0FERCh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCkBAIC01NjcsNiArNTY4LDcgQEAgREVGSU5FX0RFVklDRVNfQUREKG5p YykKIERFRklORV9ERVZJQ0VTX0FERCh2dHBtKQogREVGSU5FX0RFVklDRVNfQUREKHZydGMpCiBE RUZJTkVfREVWSUNFU19BREQodnNuZCkKK0RFRklORV9ERVZJQ0VTX0FERCh2dHR5KQogCiAjdW5k ZWYgREVGSU5FX0RFVklDRVNfQURECiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2lu dGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCmluZGV4IGQ3OGRkNzkuLjFi YWNjNzMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApAQCAtNDc4LDcgKzQ3OCw4IEBAIHR5cGVkZWYgc3Ry dWN0IHsKICAgICAoZGV2KS0+YmFja2VuZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9WRkIg fHwgXAogICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZLQkQg fHwgXAogICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZSVEMg fHwgXAotICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZTTkQp CisgICAgKGRldiktPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlNORCB8fCBc CisgICAgKGRldiktPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlRUWSkKIAog I2RlZmluZSBYQ19QQ0lfQkRGICAgICAgICAgICAgICIweCV4LCAweCV4LCAweCV4LCAweCV4Igog I2RlZmluZSBQQ0lfREVWRk4oc2xvdCwgZnVuYykgICAoKCgoc2xvdCkgJiAweDFmKSA8PCAzKSB8 ICgoZnVuYykgJiAweDA3KSkKQEAgLTExOTAsNiArMTE5MSw3IEBAIF9oaWRkZW4gaW50IGxpYnhs X19kZXZpY2VfbmljX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX25pYyAq bmljLAogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92dHBtX3NldGRlZmF1bHQobGlieGxfX2dj ICpnYywgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pOwogX2hpZGRlbiBpbnQgbGlieGxfX2Rldmlj ZV92cnRjX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3ZydGMgKnZydGMp OwogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92c25kX3NldGRlZmF1bHQobGlieGxfX2djICpn YywgbGlieGxfZGV2aWNlX3ZzbmQgKnZzbmQpOworX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92 dHR5X3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3Z0dHkgKnZ0dHkpOwog X2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92ZmJfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBs aWJ4bF9kZXZpY2VfdmZiICp2ZmIpOwogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92a2Jfc2V0 ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfdmtiICp2a2IpOwogX2hpZGRlbiBp bnQgbGlieGxfX2RldmljZV9wY2lfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZp Y2VfcGNpICpwY2kpOwpAQCAtMjU3OSw2ICsyNTgxLDExIEBAIF9oaWRkZW4gdm9pZCBsaWJ4bF9f ZGV2aWNlX3ZzbmRfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2 KTsKIAorLyogQU8gb3BlcmF0aW9uIHRvIGNvbm5lY3QgYSB0dHkgZGV2aWNlICovCitfaGlkZGVu IHZvaWQgbGlieGxfX2RldmljZV92dHR5X2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0 dHkgKnZ0dHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9f ZGV2aWNlICphb2Rldik7CisKIC8qIEludGVybmFsIGZ1bmN0aW9uIHRvIGNvbm5lY3QgYSB2a2Ig ZGV2aWNlICovCiBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZrYl9hZGQobGlieGxfX2djICpn YywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfZGV2aWNlX3ZrYiAqdmtiKTsKQEAgLTMyOTksNiArMzMwNiwxMCBAQCBfaGlkZGVuIHZvaWQg bGlieGxfX2FkZF92cnRjcyhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19hbyAqYW8sIHVpbnQzMl90 IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmln ICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2 ICptdWx0aWRldik7CiAKK19oaWRkZW4gdm9pZCBsaWJ4bF9fYWRkX3Z0dHlzKGxpYnhsX19lZ2Mg KmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqbXVsdGlkZXYpOworCiBfaGlkZGVuIHZv aWQgbGlieGxfX2FkZF92c25kcyhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19hbyAqYW8sIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29u ZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRp ZGV2ICptdWx0aWRldik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwg Yi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggOGZhMjliMS4uNDQ3NzI5NyAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbApAQCAtNTcxLDYgKzU3MSwxMyBAQCBsaWJ4bF9kZXZpY2VfdnNuZCA9IFN0 cnVjdCgiZGV2aWNlX3ZzbmQiLCBbCiAgICAgKCJwZXJpb2RfbWF4IiwgaW50ZWdlciksCiAgICAg XSkKIAorbGlieGxfZGV2aWNlX3Z0dHkgPSBTdHJ1Y3QoImRldmljZV92dHR5IiwgWworICAgICgi YmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKKyAgICAoImJhY2tlbmRfZG9tbmFtZSIsIHN0 cmluZyksCisgICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwKKyAgICAoImRldmljZSIsIHN0cmlu ZyksCisgICAgXSkKKwogbGlieGxfZGV2aWNlX2Rpc2sgPSBTdHJ1Y3QoImRldmljZV9kaXNrIiwg WwogICAgICgiYmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKICAgICAoImJhY2tlbmRfZG9t bmFtZSIsIHN0cmluZyksCkBAIC02NjAsNiArNjY3LDcgQEAgbGlieGxfZG9tYWluX2NvbmZpZyA9 IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAoInZ0cG1zIiwgQXJyYXkobGlieGxfZGV2 aWNlX3Z0cG0sICJudW1fdnRwbXMiKSksCiAgICAgKCJ2cnRjcyIsIEFycmF5KGxpYnhsX2Rldmlj ZV92cnRjLCAibnVtX3ZydGNzIikpLAogICAgICgidnNuZHMiLCBBcnJheShsaWJ4bF9kZXZpY2Vf dnNuZCwgIm51bV92c25kcyIpKSwKKyAgICAoInZ0dHlzIiwgQXJyYXkobGlieGxfZGV2aWNlX3Z0 dHksICJudW1fdnR0eXMiKSksCiAgICAgIyBhIGNoYW5uZWwgbWFuaWZlc3RzIGFzIGEgY29uc29s ZSB3aXRoIGEgbmFtZSwKICAgICAjIHNlZSBkb2NzL21pc2MvY2hhbm5lbHMudHh0CiAgICAgKCJj aGFubmVscyIsIEFycmF5KGxpYnhsX2RldmljZV9jaGFubmVsLCAibnVtX2NoYW5uZWxzIikpLApA QCAtNzI3LDYgKzczNSwxNyBAQCBsaWJ4bF92c25kaW5mbyA9IFN0cnVjdCgidnNuZGluZm8iLCBb CiAgICAgKCJycmVmIiwgaW50ZWdlciksCiAgICAgXSwgZGlyPURJUl9PVVQpCiAKK2xpYnhsX3Z0 dHlpbmZvID0gU3RydWN0KCJ2dHR5aW5mbyIsIFsKKyAgICAoImJhY2tlbmQiLCBzdHJpbmcpLAor ICAgICgiYmFja2VuZF9pZCIsIHVpbnQzMiksCisgICAgKCJmcm9udGVuZCIsIHN0cmluZyksCisg ICAgKCJmcm9udGVuZF9pZCIsIHVpbnQzMiksCisgICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwK KyAgICAoInN0YXRlIiwgaW50ZWdlciksCisgICAgKCJldnRjaCIsIGludGVnZXIpLAorICAgICgi cnJlZiIsIGludGVnZXIpLAorICAgIF0sIGRpcj1ESVJfT1VUKQorCiBsaWJ4bF92Y3B1aW5mbyA9 IFN0cnVjdCgidmNwdWluZm8iLCBbCiAgICAgKCJ2Y3B1aWQiLCB1aW50MzIpLAogICAgICgiY3B1 IiwgdWludDMyKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFs LmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAppbmRleCBlYzYzZTIz Li4xODJhZWVlIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRlcm5hbC5p ZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsCkBAIC0yNCw2ICsy NCw3IEBAIGxpYnhsX19kZXZpY2Vfa2luZCA9IEVudW1lcmF0aW9uKCJkZXZpY2Vfa2luZCIsIFsK ICAgICAoOCwgIlZUUE0iKSwKICAgICAoOSwgIlZSVEMiKSwKICAgICAoMTAsICJWU05EIiksCisg ICAgKDExLCAiVlRUWSIpLAogICAgIF0pCiAKIGxpYnhsX19jb25zb2xlX2JhY2tlbmQgPSBFbnVt ZXJhdGlvbigiY29uc29sZV9iYWNrZW5kIiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfdXRpbHMuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKaW5kZXggZjY1MzJjZS4uM2Q0 NzUzNCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaAorKysgYi90b29scy9s aWJ4bC9saWJ4bF91dGlscy5oCkBAIC04Myw2ICs4Myw5IEBAIGludCBsaWJ4bF9kZXZpZF90b19k ZXZpY2VfdnJ0YyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiBpbnQgbGlieGxfZGV2 aWRfdG9fZGV2aWNlX3ZzbmQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3ZzbmQgKnZz bmQpOwogCitpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3Z0dHkobGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwg bGlieGxfZGV2aWNlX3Z0dHkgKnZ0dHkpOworCiBpbnQgbGlieGxfYml0bWFwX2FsbG9jKGxpYnhs X2N0eCAqY3R4LCBsaWJ4bF9iaXRtYXAgKmJpdG1hcCwgaW50IG5fYml0cyk7CiAgICAgLyogQWxs b2NhdGVkIGJpbWFwIGlzIGZyb20gbWFsbG9jLCBsaWJ4bF9iaXRtYXBfZGlzcG9zZSgpIHRvIGJl CiAgICAgICogY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB3aGVuIGRvbmUuICovCmRpZmYgLS1n aXQgYS90b29scy9saWJ4bC94bC5oIGIvdG9vbHMvbGlieGwveGwuaAppbmRleCA4MWE3OGMwLi5j Yzk5MGMxIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94bC5oCisrKyBiL3Rvb2xzL2xpYnhsL3hs LmgKQEAgLTg4LDYgKzg4LDkgQEAgaW50IG1haW5fdnJ0Y2RldGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwogaW50IG1haW5fdnNuZGF0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50 IG1haW5fdnNuZGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3ZzbmRkZXRh Y2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3Z0dHlhdHRhY2goaW50IGFyZ2Ms IGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3Z0dHlsaXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7 CitpbnQgbWFpbl92dHR5ZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92 dHBtYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBtbGlzdChpbnQg YXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdnRwbWRldGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGli eGwveGxfY21kaW1wbC5jCmluZGV4IGNiMmQ4YzYuLjVhYzliODEgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKQEAgLTEy NzEsNyArMTI3MSw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIg KmNvbmZpZ19zb3VyY2UsCiAgICAgY29uc3QgY2hhciAqYnVmOwogICAgIGxvbmcgbCwgdmNwdXMg PSAwOwogICAgIFhMVV9Db25maWcgKmNvbmZpZzsKLSAgICBYTFVfQ29uZmlnTGlzdCAqY3B1cywg KnZiZHMsICpuaWNzLCAqcGNpcywgKmN2ZmJzLCAqY3B1aWRzLCAqdnRwbXMsICp2cnRjcywgKnZz bmRzOworICAgIFhMVV9Db25maWdMaXN0ICpjcHVzLCAqdmJkcywgKm5pY3MsICpwY2lzLCAqY3Zm YnMsICpjcHVpZHMsICp2dHBtcywgKnZydGNzLCAqdnR0eXMsICp2c25kczsKICAgICBYTFVfQ29u ZmlnTGlzdCAqY2hhbm5lbHMsICppb3BvcnRzLCAqaXJxcywgKmlvbWVtLCAqdmlyaWRpYW4sICpk dGRldnM7CiAgICAgaW50IG51bV9pb3BvcnRzLCBudW1faXJxcywgbnVtX2lvbWVtLCBudW1fY3B1 cywgbnVtX3ZpcmlkaWFuOwogICAgIGludCBwY2lfcG93ZXJfbWdtdCA9IDA7CkBAIC0xOTAxLDYg KzE5MDEsNTQgQEAgc3RhdGljIHZvaWQgcGFyc2VfY29uZmlnX2RhdGEoY29uc3QgY2hhciAqY29u ZmlnX3NvdXJjZSwKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICgheGx1X2NmZ19nZXRfbGlz dChjb25maWcsICJ2dHR5IiwgJnZ0dHlzLCAwLCAwKSkgeworICAgICAgICBkX2NvbmZpZy0+bnVt X3Z0dHlzID0gMDsKKyAgICAgICAgZF9jb25maWctPnZ0dHlzID0gTlVMTDsKKyAgICAgICAgd2hp bGUgKChidWYgPSB4bHVfY2ZnX2dldF9saXN0aXRlbSh2dHR5cywgZF9jb25maWctPm51bV92dHR5 cykpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHR5ICp2dHR5OworICAg ICAgICAgICAgbGlieGxfc3RyaW5nX2xpc3QgcGFpcnM7CisgICAgICAgICAgICBjaGFyICpwYXRo ID0gTlVMTDsKKyAgICAgICAgICAgIGludCBsZW47CisKKyAgICAgICAgICAgIHZ0dHkgPSBBUlJB WV9FWFRFTkRfSU5JVChkX2NvbmZpZy0+dnR0eXMsIGRfY29uZmlnLT5udW1fdnR0eXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0dHlfaW5pdCk7 CisKKyAgICAgICAgICAgIHNwbGl0X3N0cmluZ19pbnRvX3N0cmluZ19saXN0KGJ1ZiwgIiwiLCAm cGFpcnMpOworICAgICAgICAgICAgbGVuID0gbGlieGxfc3RyaW5nX2xpc3RfbGVuZ3RoKCZwYWly cyk7CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAg ICAgICAgIGNoYXIgKmtleSwgKmtleV91bnRyaW1tZWQsICp2YWx1ZSwgKnZhbHVlX3VudHJpbW1l ZDsKKyAgICAgICAgICAgICAgICBpbnQgcmM7CisgICAgICAgICAgICAgICAgcmMgPSBzcGxpdF9z dHJpbmdfaW50b19wYWlyKHBhaXJzW2ldLCAiPSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZrZXlfdW50cmltbWVkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVfdW50cmltbWVkKTsKKyAgICAgICAgICAgICAg ICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZh aWxlZCB0byBwYXJzZSB2dHR5IGNvbmZpZ3VyYXRpb246ICVzIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYWlyc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRyaW0oaXNzcGFjZSwga2V5X3VudHJpbW1l ZCwgJmtleSk7CisgICAgICAgICAgICAgICAgdHJpbShpc3NwYWNlLCB2YWx1ZV91bnRyaW1tZWQs ICZ2YWx1ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChrZXksICJiYWNrZW5kaWQi KSkgeworICAgICAgICAgICAgICAgICAgICB2dHR5LT5iYWNrZW5kX2RvbWlkID0gYXRvaSh2YWx1 ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImJhY2tlbmQiKSkg eworICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3N0cmluZygmdnR0eS0+YmFja2VuZF9kb21u YW1lLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImRl dmlkIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdnR0eS0+ZGV2aWQgPSBhdG9pKHZhbHVlKTsK KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiZGV2aWNlIikpIHsKKyAg ICAgICAgICAgICAgICAgICAgcmVwbGFjZV9zdHJpbmcoJnZ0dHktPmRldmljZSwgdmFsdWUpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcmVlKGtleSk7CisgICAgICAgICAg ICAgICAgZnJlZShrZXlfdW50cmltbWVkKTsKKyAgICAgICAgICAgICAgICBmcmVlKHZhbHVlKTsK KyAgICAgICAgICAgICAgICBmcmVlKHZhbHVlX3VudHJpbW1lZCk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBsaWJ4bF9zdHJpbmdfbGlzdF9kaXNwb3NlKCZwYWlycyk7CisgICAgICAgICAg ICBmcmVlKHBhdGgpOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCF4bHVfY2ZnX2dldF9s aXN0KGNvbmZpZywgInZzbmQiLCAmdnNuZHMsIDAsIDApKSB7CiAgICAgICAgIGRfY29uZmlnLT5u dW1fdnNuZHMgPSAwOwogICAgICAgICBkX2NvbmZpZy0+dnNuZHMgPSBOVUxMOwpAQCAtNzEyMSw2 ICs3MTY5LDExNiBAQCBpbnQgbWFpbl92c25kZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndikK ICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBtYWluX3Z0dHlhdHRhY2goaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQoreworCisgICAgaW50IG9wdDsKKyAgICB1aW50MzJfdCBmZV9kb21pZDsKKyAgICBs aWJ4bF9kZXZpY2VfdnR0eSB2dHR5OworICAgIC8qICBYTFVfQ29uZmlnICpjb25maWcgPSAwOyAq LworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2dHR5LWF0dGFjaCIs IDIpIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIH0KKworICAgIGlmIChsaWJ4bF9k b21haW5fcXVhbGlmaWVyX3RvX2RvbWlkKGN0eCwgYXJndltvcHRpbmRdLCAmZmVfZG9taWQpIDwg MCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGlzIGFuIGludmFsaWQgZG9tYWluIGlk ZW50aWZpZXJcbiIsIGFyZ3Zbb3B0aW5kXSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAg ICBvcHRpbmQrKzsKKworCWlmIChvcHRpbmQgPCBhcmdjKSB7CisJCXJlcGxhY2Vfc3RyaW5nKCZ2 dHR5LmRldmljZSwgYXJndltvcHRpbmRdKTsKKwl9CisKKyAgICAvKiBUT0RPOiBmaXggdGhpcyB0 ZW1wb3JhcnkgaGFyZGNvZGUgKi8KKyAgICB2dHR5LmJhY2tlbmRfZG9tbmFtZSA9ICJEb21haW4t RCI7CisgICAgdnR0eS5iYWNrZW5kX2RvbWlkID0gMTsKKworICAgIGlmIChkcnlydW5fb25seSkg eworICAgICAgICBjaGFyICpqc29uID0gbGlieGxfZGV2aWNlX3Z0dHlfdG9fanNvbihjdHgsICZ2 dHR5KTsKKyAgICAgICAgcHJpbnRmKCJ2dHR5OiAlc1xuIiwganNvbik7CisgICAgICAgIGZyZWUo anNvbik7CisgICAgICAgIGlmIChmZXJyb3Ioc3Rkb3V0KSB8fCBmZmx1c2goc3Rkb3V0KSkgeyBw ZXJyb3IoInN0ZG91dCIpOyBleGl0KC0xKTsgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK KyAgICBpZiAobGlieGxfZGV2aWNlX3Z0dHlfYWRkKGN0eCwgZmVfZG9taWQsICZ2dHR5LCAwKSkg eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92dHR5X2FkZCBmYWlsZWQu XG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lu dCBtYWluX3Z0dHlsaXN0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgIGludCBvcHQ7Cisg ICBpbnQgaSwgbmI7CisgICBsaWJ4bF9kZXZpY2VfdnR0eSAqdnR0eXM7CisgICBsaWJ4bF92dHR5 aW5mbyB2dHR5aW5mbzsKKworICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ2 dHR5LWxpc3QiLCAxKSB7CisgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgfQorCisgICAvKiB2 dHR5aW5mby51dWlkIHNob3VsZCBiZSBvdXRwdXR0ZWQgdG9vICovCisgICBwcmludGYoIiUtNXMg JS0zcyAlLTZzICUtNXMgJS02cyAlLThzICUtNDBzICUtNDBzXG4iLAorICAgICAgICAgICAiVmRl diIsICJCRSIsICJoYW5kbGUiLCAic3RhdGUiLCAiZXZ0LWNoIiwgInJpbmctcmVmIiwgIkJFLXBh dGgiLCAiRkUtcGF0aCIpOworICAgZm9yIChhcmd2ICs9IG9wdGluZCwgYXJnYyAtPSBvcHRpbmQ7 IGFyZ2MgPiAwOyAtLWFyZ2MsICsrYXJndikgeworICAgICAgIHVpbnQzMl90IGRvbWlkOworICAg ICAgIGlmIChsaWJ4bF9kb21haW5fcXVhbGlmaWVyX3RvX2RvbWlkKGN0eCwgKmFyZ3YsICZkb21p ZCkgPCAwKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMgYW4gaW52YWxpZCBk b21haW4gaWRlbnRpZmllclxuIiwgKmFyZ3YpOworICAgICAgICAgICBjb250aW51ZTsKKyAgICAg ICB9CisgICAgICAgdnR0eXMgPSBsaWJ4bF9kZXZpY2VfdnR0eV9saXN0KGN0eCwgZG9taWQsICZu Yik7CisgICAgICAgaWYgKCF2dHR5cykgeworICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9 CisgICAgICAgZm9yIChpPTA7IGk8bmI7IGkrKykgeworICAgICAgICAgICBpZiAoIWxpYnhsX2Rl dmljZV92dHR5X2dldGluZm8oY3R4LCBkb21pZCwgJnZ0dHlzW2ldLCAmdnR0eWluZm8pKSB7Cisg ICAgICAgICAgICAgICAvKiAgICAgIFZkZXYgQkUgICBoZGwgIHN0ICAgZXZjaCBycmVmIEJFLXBh dGggRkUtcGF0aCBVVUlEICovCisgICAgICAgICAgICAgICBwcmludGYoIiUtNWQgJS0zZCAlLTZk ICUtNWQgJS02ZCAlLThkICUtNDBzICUtNDBzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICB2 dHR5aW5mby5kZXZpZCwgdnR0eWluZm8uYmFja2VuZF9pZCwgdnR0eWluZm8uZnJvbnRlbmRfaWQs CisgICAgICAgICAgICAgICAgICAgICAgIHZ0dHlpbmZvLnN0YXRlLCB2dHR5aW5mby5ldnRjaCwg dnR0eWluZm8ucnJlZiwgdnR0eWluZm8uYmFja2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg dnR0eWluZm8uZnJvbnRlbmQpOworICAgICAgICAgICAgICAgbGlieGxfdnR0eWluZm9fZGlzcG9z ZSgmdnR0eWluZm8pOworICAgICAgICAgICB9CisgICAgICAgICAgIGxpYnhsX2RldmljZV92dHR5 X2Rpc3Bvc2UoJnZ0dHlzW2ldKTsKKyAgICAgICB9CisgICAgICAgZnJlZSh2dHR5cyk7CisgICB9 CisgICByZXR1cm4gMDsKK30KKworaW50IG1haW5fdnR0eWRldGFjaChpbnQgYXJnYywgY2hhciAq KmFyZ3YpCit7CisgICAgdWludDMyX3QgZG9taWQsIGRldmlkOworICAgIGludCBvcHQsIHJjID0g MDsKKyAgICBsaWJ4bF9kZXZpY2VfdnR0eSB2dHR5OworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BU KG9wdCwgIiIsIE5VTEwsICJ2dHR5LWRldGFjaCIsIDIpIHsKKyAgICAgICAgLyogTm8gb3B0aW9u cyAqLworICAgIH0KKworICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsKKyAg ICBkZXZpZCA9IGF0b2koYXJndltvcHRpbmQrMV0pOworCisgICAgaWYgKGxpYnhsX2RldmlkX3Rv X2RldmljZV92dHR5KGN0eCwgZG9taWQsIGRldmlkLCAmdnR0eSkpIHsKKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJFcnJvcjogRGV2aWNlICVzIG5vdCBjb25uZWN0ZWQuXG4iLCBhcmd2W29wdGlu ZCsxXSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJjID0gbGlieGxfZGV2aWNl X3Z0dHlfcmVtb3ZlKGN0eCwgZG9taWQsICZ2dHR5LCAwKTsKKyAgICBpZiAocmMpIHsKKyAgICAg ICAgZnByaW50ZihzdGRlcnIsICJsaWJ4bF9kZXZpY2VfdnR0eV9yZW1vdmUgZmFpbGVkLlxuIik7 CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGxpYnhsX2RldmljZV92dHR5X2Rpc3Bv c2UoJnZ0dHkpOworICAgIHJldHVybiByYzsKK30KKwogaW50IG1haW5fdnRwbWF0dGFjaChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgaW50IG9wdDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCmluZGV4IDc4ZjA3 MDAuLjdlM2E4ZWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpAQCAtMzg2LDYgKzM4NiwyMSBAQCBzdHJ1Y3QgY21k X3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiRGVzdHJveSBhIGRvbWFpbidzIHZpcnR1YWwg YXVkaW8gZGV2aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWR8dXVpZD4iLAogICAgIH0sCisg ICAgeyAidnR0eS1hdHRhY2giLAorICAgICAgJm1haW5fdnR0eWF0dGFjaCwgMSwgMSwKKyAgICAg ICJDcmVhdGUgYSBuZXcgdmlydHVhbCB0dHkgZGV2aWNlIiwKKyAgICAgICI8RG9tYWluPiA8RGV2 aWNlPiIsCisgICAgfSwKKyAgICB7ICJ2dHR5LWxpc3QiLAorICAgICAgJm1haW5fdnR0eWxpc3Qs IDAsIDAsCisgICAgICAiTGlzdCB2aXJ0dWFsIHR0eSBkZXZpY2VzIGZvciBhIGRvbWFpbiIsCisg ICAgICAiPERvbWFpbihzKT4iLAorICAgIH0sCisgICAgeyAidnR0eS1kZXRhY2giLAorICAgICAg Jm1haW5fdnR0eWRldGFjaCwgMCwgMSwKKyAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVh bCBydGMgZGV2aWNlIiwKKyAgICAgICI8RG9tYWluPiA8RGV2SWQ+IiwKKyAgICB9LAogICAgIHsg InZ0cG0tYXR0YWNoIiwKICAgICAgICZtYWluX3Z0cG1hdHRhY2gsIDEsIDEsCiAgICAgICAiQ3Jl YXRlIGEgbmV3IHZpcnR1YWwgVFBNIGRldmljZSIsCi0tIAoyLjguMgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==