From mboxrd@z Thu Jan 1 00:00:00 1970 From: Iurii Mykhalskyi Subject: [PATCH RFC 4/6] libxl: implementation of PV event device interface Date: Thu, 19 May 2016 17:37:33 +0300 Message-ID: <1463668655-16778-5-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 RnJvbTogUGF2bG8gU3Vpa292IDxwYXZsby5zdWlrb3ZAZ2xvYmFsbG9naWMuY29tPgoKVG91Y2hz Y3JlZW4gZXZlbnRzIGRldmljZSBjb25maWd1cmF0aW9uIHN1cHBvcnQuIENhbiBiZSBmdXJ0aGVy CmV4dGVuZGVkIHRvIHN1cHBvcnQgYW55IGV2ZW50IGRldmljZSB3aGF0c29ldmVyLgoKU2lnbmVk LW9mZi1ieTogUGF2bG8gU3Vpa292IDxwYXZsby5zdWlrb3ZAZ2xvYmFsbG9naWMuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBJdXJpaSBLb25vdmFsZW5rbyA8aXVyaWkua29ub3ZhbGVua29AZ2xvYmFsbG9n aWMuY29tPgpTaWduZWQtb2ZmLWJ5OiBJdXJpaSBNeWtoYWxza3lpIDxpdXJpaS5teWtoYWxza3lp QGdsb2JhbGxvZ2ljLmNvbT4KLS0tCiB0b29scy9saWJ4bC9saWJ4bC5jICAgICAgICAgICAgICAg ICAgfCAyODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHRvb2xzL2xpYnhs L2xpYnhsLmggICAgICAgICAgICAgICAgICB8ICAxNyArKysKIHRvb2xzL2xpYnhsL2xpYnhsX2Ny ZWF0ZS5jICAgICAgICAgICB8ICAzOSArKysrLQogdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMg ICAgICAgICAgIHwgICAyICsKIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmMgICAgICAgICB8 ICAgNCArCiB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oICAgICAgICAgfCAgMjAgKystCiB0 b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICAgICAgfCAgMjEgKysrCiB0b29scy9saWJ4 bC9saWJ4bF90eXBlc19pbnRlcm5hbC5pZGwgfCAgIDEgKwogdG9vbHMvbGlieGwvbGlieGxfdXRp bHMuaCAgICAgICAgICAgIHwgICA0ICsKIHRvb2xzL2xpYnhsL3hsLmggICAgICAgICAgICAgICAg ICAgICB8ICAgMyArCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICAgICAgICAgICAgfCAxNzAg KysrKysrKysrKysrKysrKysrKystCiB0b29scy9saWJ4bC94bF9jbWR0YWJsZS5jICAgICAgICAg ICAgfCAgMTUgKysKIDEyIGZpbGVzIGNoYW5nZWQsIDU4MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9s aWJ4bC5jCmluZGV4IDE0MjZiZjYuLmI2NDgxNWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuYwpAQCAtNTAwMyw2ICs1MDAzLDI4MiBAQCBv dXQ6CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKK2ludCBsaWJ4bF9fZGV2aWNlX3ZldmVu dF9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV92ZXZlbnQgKnZldmVudCkK K3sKKyAgICBpbnQgcmM7CisgICAgcmMgPSBsaWJ4bF9fcmVzb2x2ZV9kb21pZChnYywgdmV2ZW50 LT5iYWNrZW5kX2RvbW5hbWUsICZ2ZXZlbnQtPmJhY2tlbmRfZG9taWQpOworICAgIHJldHVybiBy YzsKK30KKworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX2Zyb21fdmV2ZW50KGxpYnhsX19nYyAq Z2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX2RldmljZV92ZXZlbnQgKnZldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9fZGV2aWNlICpkZXZpY2UpCit7CisgICAgZGV2aWNlLT5iYWNrZW5k X2RldmlkID0gdmV2ZW50LT5kZXZpZDsKKyAgICBkZXZpY2UtPmJhY2tlbmRfZG9taWQgPSB2ZXZl bnQtPmJhY2tlbmRfZG9taWQ7CisgICAgZGV2aWNlLT5iYWNrZW5kX2tpbmQgPSBMSUJYTF9fREVW SUNFX0tJTkRfVkVWRU5UOworICAgIGRldmljZS0+ZGV2aWQgPSB2ZXZlbnQtPmRldmlkOworICAg IGRldmljZS0+ZG9taWQgPSBkb21pZDsKKyAgICBkZXZpY2UtPmtpbmQgPSBMSUJYTF9fREVWSUNF X0tJTkRfVkVWRU5UOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGlieGxfX2Rl dmljZV92ZXZlbnRfZnJvbV94c19iZShsaWJ4bF9fZ2MgKmdjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2 ZW50KQoreworICAgIGNvbnN0IGNoYXIgKnRtcDsKKyAgICBpbnQgcmM7CisKKyAgICBsaWJ4bF9k ZXZpY2VfdmV2ZW50X2luaXQodmV2ZW50KTsKKworICAgIHRtcCA9IFJFQURfQkFDS0VORChnYywg ImRldmljZS1pZCIpOworICAgIGlmICh0bXApCisgICAgICAgIHZldmVudC0+ZGV2aWQgPSBhdG9p KHRtcCk7CisgICAgZWxzZQorICAgICAgICB2ZXZlbnQtPmRldmlkID0gMDsKKworICAgIHJjID0g MDsKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBsaWJ4bF9kZXZpZF90b19kZXZpY2Vf dmV2ZW50KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2ZW50KQor eworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBjaGFyICpkb21wYXRoLCAqcGF0aDsKKyAgICBpbnQg cmMgPSBFUlJPUl9GQUlMOworCisgICAgbGlieGxfZGV2aWNlX3ZldmVudF9pbml0KHZldmVudCk7 CisgICAgZG9tcGF0aCA9IGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgZG9taWQpOworICAgIGlm ICghZG9tcGF0aCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBwYXRoID0gbGlieGxfX3hzX3Jl YWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fc3ByaW50 ZihnYywgIiVzL2RldmljZS92ZXZlbnQvJWQvYmFja2VuZCIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbXBhdGgsIGRldmlkKSk7CisgICAgaWYgKCFwYXRoKQor ICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gbGlieGxfX2RldmljZV92ZXZlbnRfZnJvbV94 c19iZShnYywgcGF0aCwgdmV2ZW50KTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgcmMg PSAwOworb3V0OgorICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCit2b2lkIGxpYnhs X19kZXZpY2VfdmV2ZW50X2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2ZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7 CisgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKyAgICBmbGV4YXJyYXlfdCAqZnJvbnQ7Cisg ICAgZmxleGFycmF5X3QgKmJhY2s7CisgICAgbGlieGxfX2RldmljZSAqZGV2aWNlOworICAgIGlu dCByYzsKKyAgICB4c190cmFuc2FjdGlvbl90IHQgPSBYQlRfTlVMTDsKKyAgICBsaWJ4bF9kb21h aW5fY29uZmlnIGRfY29uZmlnOworICAgIGxpYnhsX2RldmljZV92ZXZlbnQgdmV2ZW50X3NhdmVk OworICAgIGxpYnhsX19kb21haW5fdXNlcmRhdGFfbG9jayAqbG9jayA9IE5VTEw7CisKKyAgICBs aWJ4bF9kb21haW5fY29uZmlnX2luaXQoJmRfY29uZmlnKTsKKyAgICBsaWJ4bF9kZXZpY2VfdmV2 ZW50X2luaXQoJnZldmVudF9zYXZlZCk7CisgICAgbGlieGxfZGV2aWNlX3ZldmVudF9jb3B5KENU WCwgJnZldmVudF9zYXZlZCwgdmV2ZW50KTsKKworICAgIHJjID0gbGlieGxfX2RldmljZV92ZXZl bnRfc2V0ZGVmYXVsdChnYywgdmV2ZW50KTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAg ZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOworICAgIGJhY2sgPSBmbGV4YXJyYXlf bWFrZShnYywgMTYsIDEpOworICAgIGlmICh2ZXZlbnQtPmRldmlkID09IC0xKSB7CisgICAgICAg IGlmICgodmV2ZW50LT5kZXZpZCA9IGxpYnhsX19kZXZpY2VfbmV4dGlkKGdjLCBkb21pZCwgInZl dmVudCIpKSA8IDApIHsKKyAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgICAg IGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQorCisgICAgbGlieGxfX3VwZGF0ZV9jb25maWdf dmV2ZW50KGdjLCAmdmV2ZW50X3NhdmVkLCB2ZXZlbnQpOworCisgICAgR0NORVcoZGV2aWNlKTsK KyAgICByYyA9IGxpYnhsX19kZXZpY2VfZnJvbV92ZXZlbnQoZ2MsIGRvbWlkLCB2ZXZlbnQsIGRl dmljZSk7CisgICAgaWYgKCByYyAhPSAwICkgZ290byBvdXQ7CisKKyAgICBmbGV4YXJyYXlfYXBw ZW5kKGJhY2ssICJmZWF0dXJlLWFicy1wb2ludGVyIik7CisgICAgZmxleGFycmF5X2FwcGVuZChi YWNrLCBsaWJ4bF9fc3ByaW50ZihnYywgIiVkIiwgdmV2ZW50LT5mZWF0dXJlX2Fic19wb2ludGVy KSk7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiYWJzLXdpZHRoIik7CisgICAgZmxleGFy cmF5X2FwcGVuZChiYWNrLCBsaWJ4bF9fc3ByaW50ZihnYywgIiVkIiwgdmV2ZW50LT5hYnNfd2lk dGgpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJhYnMtaGVpZ2h0Iik7CisgICAgZmxl eGFycmF5X2FwcGVuZChiYWNrLCBsaWJ4bF9fc3ByaW50ZihnYywgIiVkIiwgdmV2ZW50LT5hYnNf aGVpZ2h0KSk7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiZnJvbnRlbmQtaWQiKTsKKyAg ICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIGxpYnhsX19zcHJpbnRmKGdjLCAiJWQiLCBkb21pZCkp OworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgIm9ubGluZSIpOworICAgIGZsZXhhcnJheV9h cHBlbmQoYmFjaywgIjEiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJzdGF0ZSIpOwor ICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgbGlieGxfX3NwcmludGYoZ2MsICIlZCIsIDEpKTsK KworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJkZXZpY2UtaWQiKTsKKyAgICBmbGV4YXJy YXlfYXBwZW5kKGZyb250LCBHQ1NQUklOVEYoIiVkIiwgdmV2ZW50LT5kZXZpZCkpOworICAgIGZs ZXhhcnJheV9hcHBlbmQoZnJvbnQsICJiYWNrZW5kLWlkIik7CisgICAgZmxleGFycmF5X2FwcGVu ZChmcm9udCwgbGlieGxfX3NwcmludGYoZ2MsICIlZCIsIHZldmVudC0+YmFja2VuZF9kb21pZCkp OworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJzdGF0ZSIpOworICAgIGZsZXhhcnJheV9h cHBlbmQoZnJvbnQsIGxpYnhsX19zcHJpbnRmKGdjLCAiJWQiLCAxKSk7CisKKyAgICBpZiAoYW9k ZXYtPnVwZGF0ZV9qc29uKSB7CisgICAgICAgIGxvY2sgPSBsaWJ4bF9fbG9ja19kb21haW5fdXNl cmRhdGEoZ2MsIGRvbWlkKTsKKyAgICAgICAgaWYgKCFsb2NrKSB7CisgICAgICAgICAgICByYyA9 IEVSUk9SX0xPQ0tfRkFJTDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAg ICAgICAgcmMgPSBsaWJ4bF9fZ2V0X2RvbWFpbl9jb25maWd1cmF0aW9uKGdjLCBkb21pZCwgJmRf Y29uZmlnKTsKKyAgICAgICAgTE9HKElORk8sICJhb2RldiB1cGRhdGVzIEpTT04sIGxpYnhsX19n ZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24gcmV0dXJuZWQgJWQiLCByYyk7CisgICAgICAgIGlmIChy YykgZ290byBvdXQ7CisKKyAgICAgICAgREVWSUNFX0FERCh2ZXZlbnQsIHZldmVudHMsIGRvbWlk LCAmdmV2ZW50X3NhdmVkLCBDT01QQVJFX0RFVklELCAmZF9jb25maWcpOworICAgIH0KKworICAg IGZvciAoOzspIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fc3RhcnQoZ2Ms ICZ0KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgICAgICByYyA9IGxpYnhsX19k ZXZpY2VfZXhpc3RzKGdjLCB0LCBkZXZpY2UpOworICAgICAgICBpZiAocmMgPCAwKSBnb3RvIG91 dDsKKyAgICAgICAgaWYgKHJjID09IDEpIHsgICAgICAgICAgICAgIC8qIGFscmVhZHkgZXhpc3Rz IGluIHhlbnN0b3JlICovCisgICAgICAgICAgICBMT0coRVJST1IsICJkZXZpY2UgYWxyZWFkeSBl eGlzdHMgaW4geGVuc3RvcmUiKTsKKyAgICAgICAgICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJYTF9f REVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBtZXNzYWdlICovCisgICAgICAgICAgICBy YyA9IEVSUk9SX0RFVklDRV9FWElTVFM7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAg fQorCisgICAgICAgIGlmIChhb2Rldi0+dXBkYXRlX2pzb24pIHsKKyAgICAgICAgICAgIHJjID0g bGlieGxfX3NldF9kb21haW5fY29uZmlndXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZpZyk7Cisg ICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgbGlieGxf X2RldmljZV9nZW5lcmljX2FkZChnYywgdCwgZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX194c19rdnNfb2ZfZmxleGFycmF5KGdjLCBiYWNrLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh Y2stPmNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNf a3ZzX29mX2ZsZXhhcnJheShnYywgZnJvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbnQtPmNvdW50KSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgICAgICByYyA9IGxpYnhsX194 c190cmFuc2FjdGlvbl9jb21taXQoZ2MsICZ0KTsKKworICAgICAgICBpZiAoIXJjKSBicmVhazsK KyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7CisgICAgfQorCisgICAgYW9kZXYtPmRldiA9 IGRldmljZTsKKyAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fQUREOwor ICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9uKGVnYywgYW9kZXYpOworCisgICAgcmMg PSAwOworb3V0OgorICAgIGxpYnhsX194c190cmFuc2FjdGlvbl9hYm9ydChnYywgJnQpOworICAg IGlmIChsb2NrKSBsaWJ4bF9fdW5sb2NrX2RvbWFpbl91c2VyZGF0YShsb2NrKTsKKyAgICBsaWJ4 bF9kZXZpY2VfdmV2ZW50X2Rpc3Bvc2UoJnZldmVudF9zYXZlZCk7CisgICAgbGlieGxfZG9tYWlu X2NvbmZpZ19kaXNwb3NlKCZkX2NvbmZpZyk7CisgICAgYW9kZXYtPnJjID0gcmM7CisgICAgaWYo cmMpIGFvZGV2LT5jYWxsYmFjayhlZ2MsIGFvZGV2KTsKKyAgICByZXR1cm47Cit9CisKK2xpYnhs X2RldmljZV92ZXZlbnQgKmxpYnhsX2RldmljZV92ZXZlbnRfbGlzdChsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsIGludCAqbnVtKQoreworICAgIEdDX0lOSVQoY3R4KTsKKworICAgIGxp YnhsX2RldmljZV92ZXZlbnQqIHZldmVudHMgPSBOVUxMOworICAgIGNoYXIqIGZlX3BhdGggPSBO VUxMOworICAgIGNoYXIqKiBkaXIgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBuZGlycyA9IDA7 CisKKyAgICAqbnVtID0gMDsKKworICAgIGZlX3BhdGggPSBsaWJ4bF9fc3ByaW50ZihnYywgIiVz L2RldmljZS92ZXZlbnQiLCBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIGRvbWlkKSk7CisgICAg ZGlyID0gbGlieGxfX3hzX2RpcmVjdG9yeShnYywgWEJUX05VTEwsIGZlX3BhdGgsICZuZGlycyk7 CisgICAgaWYgKGRpciAmJiBuZGlycykgeworICAgICAgIHZldmVudHMgPSBtYWxsb2Moc2l6ZW9m KCp2ZXZlbnRzKSAqIG5kaXJzKTsKKyAgICAgICBsaWJ4bF9kZXZpY2VfdmV2ZW50KiB2ZXZlbnQ7 CisgICAgICAgbGlieGxfZGV2aWNlX3ZldmVudCogZW5kID0gdmV2ZW50cyArIG5kaXJzOworICAg ICAgIGZvcih2ZXZlbnQgPSB2ZXZlbnRzOyB2ZXZlbnQgPCBlbmQ7ICsrdmV2ZW50LCArK2Rpcikg eworICAgICAgICAgIGNoYXIqIHRtcDsKKworICAgICAgICAgIGxpYnhsX2RldmljZV92ZXZlbnRf aW5pdCh2ZXZlbnQpOworCisgICAgICAgICAgdmV2ZW50LT5kZXZpZCA9IGF0b2koKmRpcik7CisK KyAgICAgICAgICB0bXAgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAgICAgICAg ICAgICAgR0NTUFJJTlRGKCIlcy8lcy9iYWNrZW5kLWlkIiwKKyAgICAgICAgICAgICAgICAgICBm ZV9wYXRoLCAqZGlyKSk7CisgICAgICAgICAgdmV2ZW50LT5iYWNrZW5kX2RvbWlkID0gYXRvaSh0 bXApOworICAgICAgIH0KKyAgICB9CisgICAgKm51bSA9IG5kaXJzOworCisgICAgR0NfRlJFRTsK KyAgICByZXR1cm4gdmV2ZW50czsKK30KKworaW50IGxpYnhsX2RldmljZV92ZXZlbnRfZ2V0aW5m byhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2RldmljZV92ZXZlbnQgKnZl dmVudCwgbGlieGxfdmV2ZW50aW5mbyAqdmV2ZW50aW5mbykKK3sKKyAgICBHQ19JTklUKGN0eCk7 CisgICAgY2hhciAqZG9tcGF0aCwgKnZldmVudHBhdGg7CisgICAgY2hhciAqdmFsOworICAgIGlu dCByYyA9IDA7CisKKyAgICBsaWJ4bF92ZXZlbnRpbmZvX2luaXQodmV2ZW50aW5mbyk7CisgICAg ZG9tcGF0aCA9IGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgZG9taWQpOworICAgIHZldmVudGlu Zm8tPmRldmlkID0gdmV2ZW50LT5kZXZpZDsKKworICAgIHZldmVudHBhdGggPSBHQ1NQUklOVEYo IiVzL2RldmljZS92ZXZlbnQvJWQiLCBkb21wYXRoLCB2ZXZlbnRpbmZvLT5kZXZpZCk7CisgICAg dmV2ZW50aW5mby0+YmFja2VuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAorICAgICAg ICAgIEdDU1BSSU5URigiJXMvYmFja2VuZCIsIHZldmVudHBhdGgpLCBOVUxMKTsKKworICAgIGlm ICghdmV2ZW50aW5mby0+YmFja2VuZCkgeworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAg ICBpZighbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLCB2ZXZlbnRpbmZvLT5iYWNrZW5kKSkg eworICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdj LCBYQlRfTlVMTCwKKyAgICAgICAgICBHQ1NQUklOVEYoIiVzL2JhY2tlbmQtaWQiLCB2ZXZlbnRw YXRoKSk7CisgICAgdmV2ZW50aW5mby0+YmFja2VuZF9pZCA9IHZhbCA/IHN0cnRvdWwodmFsLCBO VUxMLCAxMCkgOiAtMTsKKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwK KyAgICAgICAgICBHQ1NQUklOVEYoIiVzL3N0YXRlIiwgdmV2ZW50cGF0aCkpOworICAgIHZldmVu dGluZm8tPnN0YXRlID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAg dmFsID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigi JXMvZXZlbnQtY2hhbm5lbCIsIHZldmVudHBhdGgpKTsKKyAgICB2ZXZlbnRpbmZvLT5ldnRjaCA9 IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIHZhbCA9IGxpYnhsX194 c19yZWFkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAgICBHQ1NQUklOVEYoIiVzL3JpbmctcmVmIiwg dmV2ZW50cGF0aCkpOworICAgIHZldmVudGluZm8tPnJyZWYgPSB2YWwgPyBzdHJ0b3VsKHZhbCwg TlVMTCwgMTApIDogLTE7CisKKyAgICB2ZXZlbnRpbmZvLT5mcm9udGVuZCA9IHhzX3JlYWQoY3R4 LT54c2gsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCB2ZXZl bnRpbmZvLT5iYWNrZW5kKSwgTlVMTCk7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywg WEJUX05VTEwsCisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9mcm9udGVuZC1pZCIsIHZldmVudGlu Zm8tPmJhY2tlbmQpKTsKKyAgICB2ZXZlbnRpbmZvLT5mcm9udGVuZF9pZCA9IHZhbCA/IHN0cnRv dWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIGdvdG8gZXhpdDsKK2VycjoKKyAgICByYyA9 IEVSUk9SX0ZBSUw7CitleGl0OgorICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCiAvKiBNYWNybyBmb3IgZGVmaW5pbmcgZGV2aWNlIHJl bW92ZS9kZXN0cm95IGZ1bmN0aW9ucyBpbiBhIGNvbXBhY3Qgd2F5ICovCiAvKiBUaGUgZm9sbG93 aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZDoKICAqIGxpYnhsX2RldmljZV9kaXNrX3JlbW92ZQpA QCAtNTAyMSw2ICs1Mjk3LDggQEAgb3V0OgogICogbGlieGxfZGV2aWNlX3ZzbmRfZGVzdHJveQog ICogbGlieGxfZGV2aWNlX3Z0dHlfcmVtb3ZlCiAgKiBsaWJ4bF9kZXZpY2VfdnR0eV9kZXN0cm95 CisgKiBsaWJ4bF9kZXZpY2VfdmV2ZW50X3JlbW92ZQorICogbGlieGxfZGV2aWNlX3ZldmVudF9k ZXN0cm95CiAgKi8KICNkZWZpbmUgREVGSU5FX0RFVklDRV9SRU1PVkUodHlwZSwgcmVtb3ZlZGVz dHJveSwgZikgICAgICAgICAgICAgICAgICAgIFwKICAgICBpbnQgbGlieGxfZGV2aWNlXyMjdHlw ZSMjXyMjcmVtb3ZlZGVzdHJveShsaWJ4bF9jdHggKmN0eCwgICAgICAgICAgIFwKQEAgLTUwNjQs NyArNTM0Miw2IEBAIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZrYiwgcmVtb3ZlLCAwKQogREVGSU5F X0RFVklDRV9SRU1PVkUodmtiLCBkZXN0cm95LCAxKQogCiAvKiB2ZmIgKi8KLQogREVGSU5FX0RF VklDRV9SRU1PVkUodmZiLCByZW1vdmUsIDApCiBERUZJTkVfREVWSUNFX1JFTU9WRSh2ZmIsIGRl c3Ryb3ksIDEpCiAKQEAgLTUwODQsNiArNTM2MSwxMCBAQCBERUZJTkVfREVWSUNFX1JFTU9WRSh2 c25kLCBkZXN0cm95LCAxKQogREVGSU5FX0RFVklDRV9SRU1PVkUodnR0eSwgcmVtb3ZlLCAwKQog REVGSU5FX0RFVklDRV9SRU1PVkUodnR0eSwgZGVzdHJveSwgMSkKIAorLyogdmV2ZW50ICovCitE RUZJTkVfREVWSUNFX1JFTU9WRSh2ZXZlbnQsIHJlbW92ZSwgMCkKK0RFRklORV9ERVZJQ0VfUkVN T1ZFKHZldmVudCwgZGVzdHJveSwgMSkKKwogLyogY2hhbm5lbC9jb25zb2xlIGhvdHVucGx1ZyBp cyBub3QgaW1wbGVtZW50ZWQuIFRoZXJlIGFyZSAyIHBvc3NpYmlsaXRpZXM6CiAgKiAxLiBhZGQg c3VwcG9ydCBmb3Igc2Vjb25kYXJ5IGNvbnNvbGVzIHRvIHhlbmNvbnNvbGVkCiAgKiAyLiBkeW5h bWljYWxseSBhZGQvcmVtb3ZlIHFlbXUgY2hhcmRldnMgdmlhIHFtcCBtZXNzYWdlcy4gKi8KQEAg LTUxMDAsNiArNTM4MSw3IEBAIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZ0dHksIGRlc3Ryb3ksIDEp CiAgKiBsaWJ4bF9kZXZpY2VfdnJ0Y19hZGQKICAqIGxpYnhsX2RldmljZV92c25kX2FkZAogICog bGlieGxfZGV2aWNlX3Z0dHlfYWRkCisgKiBsaWJ4bF9kZXZpY2VfdmV2ZW50X2FkZAogICovCiAK ICNkZWZpbmUgREVGSU5FX0RFVklDRV9BREQodHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKQEAgLTUxNDAsNiArNTQyMiw5IEBAIERFRklORV9ERVZJQ0VfQURE KHZzbmQpCiAvKiB2dHR5ICovCiBERUZJTkVfREVWSUNFX0FERCh2dHR5KQogCisvKiB2ZXZlbnQg Ki8KK0RFRklORV9ERVZJQ0VfQUREKHZldmVudCkKKwogI3VuZGVmIERFRklORV9ERVZJQ0VfQURE CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC03NjYzLDYgKzc5NDgsOCBAQCBpbnQgbGli eGxfcmV0cmlldmVfZG9tYWluX2NvbmZpZ3VyYXRpb24obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLAogCiAgICAgTUVSR0UodnR0eSwgdnR0eXMsIENPTVBBUkVfREVWSUQsIHt9KTsKIAor ICAgIE1FUkdFKHZldmVudCwgdmV2ZW50cywgQ09NUEFSRV9ERVZJRCwge30pOworCiAgICAgLyog VGFrZSBjYXJlIG9mIHJlbW92YWJsZSBkZXZpY2UuIFdlIG1haW50YWluIGludmFyaWFudCBpbiB0 aGUKICAgICAgKiBpbnNlcnQgLyByZW1vdmUgb3BlcmF0aW9uIHNvIHRoYXQ6CiAgICAgICogMS4g aWYgeGVuc3RvcmUgaXMgImVtcHR5IiB3aGlsZSBKU09OIGlzIG5vdCwgdGhlIHJlc3VsdApkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXgg NDc4MjlkZC4uNzc5OTM3NCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90 b29scy9saWJ4bC9saWJ4bC5oCkBAIC0xNTExLDYgKzE1MTEsMjMgQEAgaW50IGxpYnhsX2Rldmlj ZV92ZmJfZGVzdHJveShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsKIAor LyogRXZlbnQgZGV2aWNlIChlLmcuIHRvdWNoc2NyZWVuKSAqLworaW50IGxpYnhsX2RldmljZV92 ZXZlbnRfYWRkKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNlX3Zl dmVudCAqdmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2Fz eW5jb3BfaG93ICphb19ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhU RVJOQUxfQ0FMTEVSU19PTkxZOworaW50IGxpYnhsX2RldmljZV92ZXZlbnRfcmVtb3ZlKGxpYnhs X2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfdmV2ZW50ICp2ZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQgbGlieGxfZGV2 aWNlX3ZldmVudF9kZXN0cm95KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2ZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAq YW9faG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9D QUxMRVJTX09OTFk7CisKK2xpYnhsX2RldmljZV92ZXZlbnQgKmxpYnhsX2RldmljZV92ZXZlbnRf bGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCAqbnVtKTsKK2ludCBsaWJ4 bF9kZXZpY2VfdmV2ZW50X2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2ZW50 LCBsaWJ4bF92ZXZlbnRpbmZvICp2ZXZlbnRpbmZvKTsKKwogLyogUENJIFBhc3N0aHJvdWdoICov CiBpbnQgbGlieGxfZGV2aWNlX3BjaV9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV9wY2kgKnBjaWRldiwKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxf Y3JlYXRlLmMKaW5kZXggMzhkOWIxMi4uMTc1MjQ5OSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwv bGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKQEAgLTc0MCw2 ICs3NDAsOCBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3Z0dHlzKGxpYnhsX19lZ2Mg KmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHJldCk7CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3ZzbmRz KGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7CitzdGF0aWMgdm9pZCBkb21jcmVhdGVf YXR0YWNoX3ZldmVudHMobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXQpOwogc3RhdGlj IHZvaWQgZG9tY3JlYXRlX2F0dGFjaF9wY2kobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fbXVsdGlk ZXYgKmFvZGV2cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXQpOwog c3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0dGFjaF9kdGRldihsaWJ4bF9fZWdjICplZ2MsCkBAIC0x NDk3LDEyICsxNDk5LDQ1IEBAIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9hdHRhY2hfdnNuZHMobGli eGxfX2VnYyAqZWdjLAogICAgaWYgKGRfY29uZmlnLT5udW1fdnNuZHMgPiAwKSB7CiAgICAgICAg LyogQXR0YWNoIHZzbmRzICovCiAgICAgICAgbGlieGxfX211bHRpZGV2X2JlZ2luKGFvLCAmZGNz LT5tdWx0aWRldik7Ci0gICAgICAgZGNzLT5tdWx0aWRldi5jYWxsYmFjayA9IGRvbWNyZWF0ZV9h dHRhY2hfcGNpOworICAgICAgIGRjcy0+bXVsdGlkZXYuY2FsbGJhY2sgPSBkb21jcmVhdGVfYXR0 YWNoX3ZldmVudHM7CiAgICAgICAgbGlieGxfX2FkZF92c25kcyhlZ2MsIGFvLCBkb21pZCwgZF9j b25maWcsICZkY3MtPm11bHRpZGV2KTsKICAgICAgICBsaWJ4bF9fbXVsdGlkZXZfcHJlcGFyZWQo ZWdjLCAmZGNzLT5tdWx0aWRldiwgMCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogCisgICAgZG9t Y3JlYXRlX2F0dGFjaF92ZXZlbnRzKGVnYywgbXVsdGlkZXYsIDApOworICAgcmV0dXJuOworCitl cnJvcl9vdXQ6CisgICBhc3NlcnQocmV0KTsKKyAgIGRvbWNyZWF0ZV9jb21wbGV0ZShlZ2MsIGRj cywgcmV0KTsKK30KKworc3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0dGFjaF92ZXZlbnRzKGxpYnhs X19lZ2MgKmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9f bXVsdGlkZXYgKm11bHRpZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCByZXQpCit7CisgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSAqZGNzID0gQ09OVEFJ TkVSX09GKG11bHRpZGV2LCAqZGNzLCBtdWx0aWRldik7CisgICBTVEFURV9BT19HQyhkY3MtPmFv KTsKKyAgIGludCBkb21pZCA9IGRjcy0+Z3Vlc3RfZG9taWQ7CisKKyAgIGxpYnhsX2RvbWFpbl9j b25maWcqIGNvbnN0IGRfY29uZmlnID0gZGNzLT5ndWVzdF9jb25maWc7CisKKyAgIGlmKHJldCkg eworICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBhZGQgdnNuZCBkZXZpY2VzIik7CisgICAg ICAgZ290byBlcnJvcl9vdXQ7CisgICB9CisKKyAgICAvKiBQbHVnIHZldmVudCBkZXZpY2VzICov CisgICBpZiAoZF9jb25maWctPm51bV92ZXZlbnRzID4gMCkgeworICAgICAgIC8qIEF0dGFjaCB2 ZXZlbnRzICovCisgICAgICAgbGlieGxfX211bHRpZGV2X2JlZ2luKGFvLCAmZGNzLT5tdWx0aWRl dik7CisgICAgICAgZGNzLT5tdWx0aWRldi5jYWxsYmFjayA9IGRvbWNyZWF0ZV9hdHRhY2hfcGNp OworICAgICAgIGxpYnhsX19hZGRfdmV2ZW50cyhlZ2MsIGFvLCBkb21pZCwgZF9jb25maWcsICZk Y3MtPm11bHRpZGV2KTsKKyAgICAgICBsaWJ4bF9fbXVsdGlkZXZfcHJlcGFyZWQoZWdjLCAmZGNz LT5tdWx0aWRldiwgMCk7CisgICAgICAgcmV0dXJuOworICAgfQorCiAgICBkb21jcmVhdGVfYXR0 YWNoX3BjaShlZ2MsIG11bHRpZGV2LCAwKTsKICAgIHJldHVybjsKIApAQCAtMTUyNCw3ICsxNTU5 LDcgQEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0dGFjaF9wY2kobGlieGxfX2VnYyAqZWdjLCBs aWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2LAogICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmNvbnN0 IGRfY29uZmlnID0gZGNzLT5ndWVzdF9jb25maWc7CiAKICAgICBpZiAocmV0KSB7Ci0gICAgICAg IExPRyhFUlJPUiwgInVuYWJsZSB0byBhZGQgdnNuZCBkZXZpY2VzIik7CisgICAgICAgIExPRyhF UlJPUiwgInVuYWJsZSB0byBhZGQgdmV2ZW50IGRldmljZXMiKTsKICAgICAgICAgZ290byBlcnJv cl9vdXQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCmluZGV4IGRmNTBmZGIuLjY1NTY5ZTEgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2RldmljZS5jCkBAIC01NDcsNiArNTQ3LDcgQEAgdm9pZCBsaWJ4bF9fbXVsdGlkZXZfcHJlcGFy ZWQobGlieGxfX2VnYyAqZWdjLAogICogbGlieGxfX2FkZF92cnRjcwogICogbGlieGxfX2FkZF92 c25kcwogICogbGlieGxfX2FkZF92dHR5cworICogbGlieGxfX2FkZF92ZXZlbnRzCiAgKi8KIAog I2RlZmluZSBERUZJTkVfREVWSUNFU19BREQodHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXApAQCAtNTY5LDYgKzU3MCw3IEBAIERFRklORV9ERVZJQ0VTX0FERCh2 dHBtKQogREVGSU5FX0RFVklDRVNfQUREKHZydGMpCiBERUZJTkVfREVWSUNFU19BREQodnNuZCkK IERFRklORV9ERVZJQ0VTX0FERCh2dHR5KQorREVGSU5FX0RFVklDRVNfQUREKHZldmVudCkKIAog I3VuZGVmIERFRklORV9ERVZJQ0VTX0FERAogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5jIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuYwppbmRleCBmNzU4NDBk Li4zMmNlOGJkIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5jCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmMKQEAgLTU1MSw2ICs1NTEsMTAgQEAgdm9pZCBs aWJ4bF9fdXBkYXRlX2RvbWFpbl9jb25maWd1cmF0aW9uKGxpYnhsX19nYyAqZ2MsCiAgICAgZm9y IChpID0gMDsgaSA8IHNyYy0+bnVtX3ZzbmRzOyBpKyspCiAgICAgICAgIGxpYnhsX191cGRhdGVf Y29uZmlnX3ZzbmQoZ2MsICZkc3QtPnZzbmRzW2ldLCAmc3JjLT52c25kc1tpXSk7CiAKKyAgICAv KiB1cGRhdGUgdmV2ZW50IGluZm9ybWF0aW9uICovCisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+ bnVtX3ZldmVudHM7IGkrKykKKyAgICAgICAgbGlieGxfX3VwZGF0ZV9jb25maWdfdmV2ZW50KGdj LCAmZHN0LT52ZXZlbnRzW2ldLCAmc3JjLT52ZXZlbnRzW2ldKTsKKwogICAgIC8qIHVwZGF0ZSBn dWVzdCBVVUlEICovCiAgICAgbGlieGxfdXVpZF9jb3B5KENUWCwgJmRzdC0+Y19pbmZvLnV1aWQs ICZzcmMtPmNfaW5mby51dWlkKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggMWJhY2M3My4uMzMw ZDU2ZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC00NzksNyArNDc5LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgewogICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZLQkQg fHwgXAogICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZSVEMg fHwgXAogICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZTTkQg fHwgXAotICAgIChkZXYpLT5iYWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZUVFkp CisgICAgKGRldiktPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlRUWSB8fCBc CisgICAgKGRldiktPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVkVWRU5UKQog CiAjZGVmaW5lIFhDX1BDSV9CREYgICAgICAgICAgICAgIjB4JXgsIDB4JXgsIDB4JXgsIDB4JXgi CiAjZGVmaW5lIFBDSV9ERVZGTihzbG90LCBmdW5jKSAgICgoKChzbG90KSAmIDB4MWYpIDw8IDMp IHwgKChmdW5jKSAmIDB4MDcpKQpAQCAtMTE5Myw2ICsxMTk0LDcgQEAgX2hpZGRlbiBpbnQgbGli eGxfX2RldmljZV92cnRjX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3Zy dGMgKnZydGMKIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfdnNuZF9zZXRkZWZhdWx0KGxpYnhs X19nYyAqZ2MsIGxpYnhsX2RldmljZV92c25kICp2c25kKTsKIF9oaWRkZW4gaW50IGxpYnhsX19k ZXZpY2VfdnR0eV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV92dHR5ICp2 dHR5KTsKIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfdmZiX3NldGRlZmF1bHQobGlieGxfX2dj ICpnYywgbGlieGxfZGV2aWNlX3ZmYiAqdmZiKTsKK19oaWRkZW4gaW50IGxpYnhsX19kZXZpY2Vf dmV2ZW50X3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3ZldmVudCAqdmV2 ZW50KTsKIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfdmtiX3NldGRlZmF1bHQobGlieGxfX2dj ICpnYywgbGlieGxfZGV2aWNlX3ZrYiAqdmtiKTsKIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2Vf cGNpX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3BjaSAqcGNpKTsKIF9o aWRkZW4gdm9pZCBsaWJ4bF9fcmRtX3NldGRlZmF1bHQobGlieGxfX2djICpnYywKQEAgLTI1OTQs NiArMjU5NiwxMSBAQCBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZrYl9hZGQobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZmYl9hZGQo bGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3ZmYiAqdmZiKTsKIAorLyogQU8gb3BlcmF0aW9uIHRvIGNv bm5lY3QgYSB2ZXZlbnQgZGV2aWNlICovCitfaGlkZGVuIHZvaWQgbGlieGxfX2RldmljZV92ZXZl bnRfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZXZlbnQgKnZldmVudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYp OworCiAvKiBXYWl0cyBmb3IgdGhlIHBhc3NlZCBkZXZpY2UgdG8gcmVhY2ggc3RhdGUgWGVuYnVz U3RhdGVJbml0V2FpdC4KICAqIFRoaXMgaXMgbm90IHJlYWxseSB1c2VmdWwgYnkgaXRzZWxmLCBi dXQgaXMgaW1wb3J0YW50IHdoZW4gZXhlY3V0aW5nCiAgKiBob3RwbHVnIHNjcmlwdHMsIHNpbmNl IHdlIG5lZWQgdG8gYmUgc3VyZSB0aGUgZGV2aWNlIGlzIGluIHRoZSBjb3JyZWN0CkBAIC0zMzEz LDYgKzMzMjAsMTAgQEAgX2hpZGRlbiB2b2lkIGxpYnhsX19hZGRfdnR0eXMobGlieGxfX2VnYyAq ZWdjLCBsaWJ4bF9fYW8gKmFvLCB1aW50MzJfdCBkb21pZCwKIF9oaWRkZW4gdm9pZCBsaWJ4bF9f YWRkX3ZzbmRzKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9taWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29u ZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRp ZGV2KTsKKworX2hpZGRlbiB2b2lkIGxpYnhsX19hZGRfdmV2ZW50cyhsaWJ4bF9fZWdjICplZ2Ms IGxpYnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldik7CiAvKi0tLS0tIGRldmlj ZSBtb2RlbCBjcmVhdGlvbiAtLS0tLSovCiAKIC8qIEZpcnN0IGxheWVyOyB3cmFwcyBsaWJ4bF9f c3Bhd25fc3Bhd24uICovCkBAIC0zOTgzLDYgKzM5OTQsMTMgQEAgc3RhdGljIGlubGluZSB2b2lk IGxpYnhsX191cGRhdGVfY29uZmlnX3ZzbmQobGlieGxfX2djICpnYywKICAgICBkc3QtPmRldmlk ID0gc3JjLT5kZXZpZDsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGxpYnhsX191cGRhdGVfY29u ZmlnX3ZldmVudChsaWJ4bF9fZ2MgKmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmV2ZW50ICpkc3QsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZXZlbnQgKnNy YykKK3sKKyAgICBkc3QtPmRldmlkID0gc3JjLT5kZXZpZDsKK30KKwogLyogTWFjcm9zIHVzZWQg dG8gY29tcGFyZSBkZXZpY2UgaWRlbnRpZmllci4gUmV0dXJucyB0cnVlIGlmIHRoZSB0d28KICAq IGRldmljZXMgaGF2ZSBzYW1lIGlkZW50aWZpZXIuICovCiAjZGVmaW5lIENPTVBBUkVfREVWSUQo YSwgYikgKChhKS0+ZGV2aWQgPT0gKGIpLT5kZXZpZCkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCA0NDc3 Mjk3Li4yM2ZjZjUwIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysr IGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC01MzgsNiArNTM4LDE1IEBAIGxpYnhs X2RldmljZV92ZmIgPSBTdHJ1Y3QoImRldmljZV92ZmIiLCBbCiAgICAgKCJrZXltYXAiLCAgICAg ICAgc3RyaW5nKSwKICAgICBdKQogCitsaWJ4bF9kZXZpY2VfdmV2ZW50ID0gU3RydWN0KCJkZXZp Y2VfdmV2ZW50IiwgWworICAgICgiYmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKKyAgICAo ImJhY2tlbmRfZG9tbmFtZSIsIHN0cmluZyksCisgICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwK KyAgICAoImZlYXR1cmVfYWJzX3BvaW50ZXIiLCBpbnRlZ2VyKSwKKyAgICAoImFic193aWR0aCIs IGludGVnZXIpLAorICAgICgiYWJzX2hlaWdodCIsIGludGVnZXIpLAorICAgIF0pCisKIGxpYnhs X2RldmljZV92a2IgPSBTdHJ1Y3QoImRldmljZV92a2IiLCBbCiAgICAgKCJiYWNrZW5kX2RvbWlk IiwgbGlieGxfZG9taWQpLAogICAgICgiYmFja2VuZF9kb21uYW1lIiwgc3RyaW5nKSwKQEAgLTY2 Myw2ICs2NzIsNyBAQCBsaWJ4bF9kb21haW5fY29uZmlnID0gU3RydWN0KCJkb21haW5fY29uZmln IiwgWwogICAgICgicmRtcyIsIEFycmF5KGxpYnhsX2RldmljZV9yZG0sICJudW1fcmRtcyIpKSwK ICAgICAoImR0ZGV2cyIsIEFycmF5KGxpYnhsX2RldmljZV9kdGRldiwgIm51bV9kdGRldnMiKSks CiAgICAgKCJ2ZmJzIiwgQXJyYXkobGlieGxfZGV2aWNlX3ZmYiwgIm51bV92ZmJzIikpLAorICAg ICgidmV2ZW50cyIsIEFycmF5KGxpYnhsX2RldmljZV92ZXZlbnQsICJudW1fdmV2ZW50cyIpKSwK ICAgICAoInZrYnMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdmtiLCAibnVtX3ZrYnMiKSksCiAgICAg KCJ2dHBtcyIsIEFycmF5KGxpYnhsX2RldmljZV92dHBtLCAibnVtX3Z0cG1zIikpLAogICAgICgi dnJ0Y3MiLCBBcnJheShsaWJ4bF9kZXZpY2VfdnJ0YywgIm51bV92cnRjcyIpKSwKQEAgLTc0Niw2 ICs3NTYsMTcgQEAgbGlieGxfdnR0eWluZm8gPSBTdHJ1Y3QoInZ0dHlpbmZvIiwgWwogICAgICgi cnJlZiIsIGludGVnZXIpLAogICAgIF0sIGRpcj1ESVJfT1VUKQogCitsaWJ4bF92ZXZlbnRpbmZv ID0gU3RydWN0KCJ2ZXZlbnRpbmZvIiwgWworICAgICgiYmFja2VuZCIsIHN0cmluZyksCisgICAg KCJiYWNrZW5kX2lkIiwgdWludDMyKSwKKyAgICAoImZyb250ZW5kIiwgc3RyaW5nKSwKKyAgICAo ImZyb250ZW5kX2lkIiwgdWludDMyKSwKKyAgICAoImRldmlkIiwgbGlieGxfZGV2aWQpLAorICAg ICgic3RhdGUiLCBpbnRlZ2VyKSwKKyAgICAoImV2dGNoIiwgaW50ZWdlciksCisgICAgKCJycmVm IiwgaW50ZWdlciksCisgICAgXSwgZGlyPURJUl9PVVQpCisKIGxpYnhsX3ZjcHVpbmZvID0gU3Ry dWN0KCJ2Y3B1aW5mbyIsIFsKICAgICAoInZjcHVpZCIsIHVpbnQzMiksCiAgICAgKCJjcHUiLCB1 aW50MzIpLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRs IGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsCmluZGV4IDE4MmFlZWUuLmE4 NjMyNWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAor KysgYi90b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRlcm5hbC5pZGwKQEAgLTI1LDYgKzI1LDcg QEAgbGlieGxfX2RldmljZV9raW5kID0gRW51bWVyYXRpb24oImRldmljZV9raW5kIiwgWwogICAg ICg5LCAiVlJUQyIpLAogICAgICgxMCwgIlZTTkQiKSwKICAgICAoMTEsICJWVFRZIiksCisgICAg KDEyLCAiVkVWRU5UIiksCiAgICAgXSkKIAogbGlieGxfX2NvbnNvbGVfYmFja2VuZCA9IEVudW1l cmF0aW9uKCJjb25zb2xlX2JhY2tlbmQiLCBbCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF91dGlscy5oIGIvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaAppbmRleCAzZDQ3NTM0Li4yNGE4 MjA1IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF91dGlscy5oCisrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsX3V0aWxzLmgKQEAgLTg2LDYgKzg2LDEwIEBAIGludCBsaWJ4bF9kZXZpZF90b19k ZXZpY2VfdnNuZChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiBpbnQgbGlieGxfZGV2 aWRfdG9fZGV2aWNlX3Z0dHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3Z0dHkgKnZ0 dHkpOwogCitpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3ZldmVudChsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2 aWQsIGxpYnhsX2RldmljZV92ZXZlbnQgKnZldmVudCk7CisKKwogaW50IGxpYnhsX2JpdG1hcF9h bGxvYyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfYml0bWFwICpiaXRtYXAsIGludCBuX2JpdHMpOwog ICAgIC8qIEFsbG9jYXRlZCBiaW1hcCBpcyBmcm9tIG1hbGxvYywgbGlieGxfYml0bWFwX2Rpc3Bv c2UoKSB0byBiZQogICAgICAqIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24gd2hlbiBkb25lLiAq LwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGwuaCBiL3Rvb2xzL2xpYnhsL3hsLmgKaW5kZXgg Y2M5OTBjMS4uOTA1Mjc2ZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwveGwuaAorKysgYi90b29s cy9saWJ4bC94bC5oCkBAIC05MSw2ICs5MSw5IEBAIGludCBtYWluX3ZzbmRkZXRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Z0dHlhdHRhY2goaW50IGFyZ2MsIGNoYXIgKiph cmd2KTsKIGludCBtYWluX3Z0dHlsaXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFp bl92dHR5ZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92ZXZlbnRhdHRh Y2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3ZldmVudGxpc3QoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3ZldmVudGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFy Z3YpOwogaW50IG1haW5fdnRwbWF0dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1h aW5fdnRwbWxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Z0cG1kZXRhY2go aW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGlt cGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwppbmRleCA1YWM5YjgxLi5mOGY5ZWRmIDEw MDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKKysrIGIvdG9vbHMvbGlieGwveGxf Y21kaW1wbC5jCkBAIC0xMjcxLDcgKzEyNzEsOCBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdf ZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAg ICBsb25nIGwsIHZjcHVzID0gMDsKICAgICBYTFVfQ29uZmlnICpjb25maWc7Ci0gICAgWExVX0Nv bmZpZ0xpc3QgKmNwdXMsICp2YmRzLCAqbmljcywgKnBjaXMsICpjdmZicywgKmNwdWlkcywgKnZ0 cG1zLCAqdnJ0Y3MsICp2dHR5cywgKnZzbmRzOworICAgIFhMVV9Db25maWdMaXN0ICpjcHVzLCAq Y3B1aWRzLCAqdmJkcywgKm5pY3MsICpwY2lzOworICAgIFhMVV9Db25maWdMaXN0ICpjdmZicywg KnZldmVudHMsICp2dHBtcywgKnZydGNzLCAqdnR0eXMsICp2c25kczsKICAgICBYTFVfQ29uZmln TGlzdCAqY2hhbm5lbHMsICppb3BvcnRzLCAqaXJxcywgKmlvbWVtLCAqdmlyaWRpYW4sICpkdGRl dnM7CiAgICAgaW50IG51bV9pb3BvcnRzLCBudW1faXJxcywgbnVtX2lvbWVtLCBudW1fY3B1cywg bnVtX3ZpcmlkaWFuOwogICAgIGludCBwY2lfcG93ZXJfbWdtdCA9IDA7CkBAIC0yMTk1LDYgKzIx OTYsNjEgQEAgc2tpcF92ZmI6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoIXhsdV9jZmdf Z2V0X2xpc3QoY29uZmlnLCAidmV2ZW50IiwgJnZldmVudHMsIDAsIDApKSB7CisgICAgICAgIGRf Y29uZmlnLT5udW1fdmV2ZW50cyA9IDA7CisgICAgICAgIGRfY29uZmlnLT52ZXZlbnRzID0gTlVM TDsKKyAgICAgICAgd2hpbGUgKChidWYgPSB4bHVfY2ZnX2dldF9saXN0aXRlbSh2ZXZlbnRzLCBk X2NvbmZpZy0+bnVtX3ZldmVudHMpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBsaWJ4bF9kZXZp Y2VfdmV2ZW50ICp2ZXZlbnQ7CisgICAgICAgICAgICBsaWJ4bF9zdHJpbmdfbGlzdCBwYWlyczsK KyAgICAgICAgICAgIGNoYXIgKnBhdGggPSBOVUxMOworICAgICAgICAgICAgaW50IGxlbjsKKwor ICAgICAgICAgICAgdmV2ZW50ID0gQVJSQVlfRVhURU5EX0lOSVQoZF9jb25maWctPnZldmVudHMs IGRfY29uZmlnLT5udW1fdmV2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX2RldmljZV92ZXZlbnRfaW5pdCk7CisKKyAgICAgICAgICAgIHNwbGl0X3N0 cmluZ19pbnRvX3N0cmluZ19saXN0KGJ1ZiwgIiwiLCAmcGFpcnMpOworICAgICAgICAgICAgbGVu ID0gbGlieGxfc3RyaW5nX2xpc3RfbGVuZ3RoKCZwYWlycyk7CisKKyAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgKmtleSwgKmtleV91 bnRyaW1tZWQsICp2YWx1ZSwgKnZhbHVlX3VudHJpbW1lZDsKKyAgICAgICAgICAgICAgICBpbnQg cmM7CisgICAgICAgICAgICAgICAgcmMgPSBzcGxpdF9zdHJpbmdfaW50b19wYWlyKHBhaXJzW2ld LCAiPSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXlf dW50cmltbWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm dmFsdWVfdW50cmltbWVkKTsKKyAgICAgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAg ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCB0byBwYXJzZSB2ZXZlbnQgY29u ZmlndXJhdGlvbjogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzW2ldKTsK KyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgdHJpbShpc3NwYWNlLCBrZXlfdW50cmltbWVkLCAma2V5KTsKKyAgICAgICAgICAg ICAgICB0cmltKGlzc3BhY2UsIHZhbHVlX3VudHJpbW1lZCwgJnZhbHVlKTsKKworICAgICAgICAg ICAgICAgIGlmICghc3RyY21wKGtleSwgImJhY2tlbmRpZCIpKSB7CisgICAgICAgICAgICAgICAg ICAgIHZldmVudC0+YmFja2VuZF9kb21pZCA9IGF0b2kodmFsdWUpOworICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJiYWNrZW5kIikpIHsKKyAgICAgICAgICAgICAgICAg ICAgcmVwbGFjZV9zdHJpbmcoJnZldmVudC0+YmFja2VuZF9kb21uYW1lLCB2YWx1ZSk7CisgICAg ICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImRldmlkIikpIHsKKyAgICAgICAg ICAgICAgICAgICAgdmV2ZW50LT5kZXZpZCA9IGF0b2kodmFsdWUpOworICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJmZWF0dXJlYWJzcHRyIikpIHsKKyAgICAgICAgICAg ICAgICAgICAgdmV2ZW50LT5mZWF0dXJlX2Fic19wb2ludGVyID0gYXRvaSh2YWx1ZSk7CisgICAg ICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImFic3dpZHRoIikpIHsKKyAgICAg ICAgICAgICAgICAgICAgdmV2ZW50LT5hYnNfd2lkdGggPSBhdG9pKHZhbHVlKTsKKyAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiYWJzaGVpZ2h0IikpIHsKKyAgICAgICAg ICAgICAgICAgICAgdmV2ZW50LT5hYnNfaGVpZ2h0ID0gYXRvaSh2YWx1ZSk7CisgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtu b3duIHZldmVudCBwYXJhbWV0ZXIgJyVzJywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiBpZ25vcmluZ1xuIiwga2V5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgZnJlZShrZXkpOworICAgICAgICAgICAgICAgIGZyZWUoa2V5X3VudHJpbW1lZCk7Cisg ICAgICAgICAgICAgICAgZnJlZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgZnJlZSh2YWx1ZV91 bnRyaW1tZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGlieGxfc3RyaW5nX2xpc3Rf ZGlzcG9zZSgmcGFpcnMpOworICAgICAgICAgICAgZnJlZShwYXRoKTsKKyAgICAgICAgfQorICAg IH0KKwogICAgIGlmICgheGx1X2NmZ19nZXRfbG9uZyAoY29uZmlnLCAicGNpX21zaXRyYW5zbGF0 ZSIsICZsLCAwKSkKICAgICAgICAgcGNpX21zaXRyYW5zbGF0ZSA9IGw7CiAKQEAgLTcyNzksNiAr NzMzNSwxMTggQEAgaW50IG1haW5fdnR0eWRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAg ICAgcmV0dXJuIHJjOwogfQogCitpbnQgbWFpbl92ZXZlbnRhdHRhY2goaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQoreworICAgIGludCBvcHQ7CisgICAgdWludDMyX3QgZmVfZG9taWQ7CisgICAgbGli eGxfZGV2aWNlX3ZldmVudCB2ZXZlbnQ7CisgICAgY2hhciAqb3Bhcmc7CisKKyAgICBTV0lUQ0hf Rk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInZldmVudC1hdHRhY2giLCAxKSB7CisgICAgICAg IC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBpZiAobGlieGxfZG9tYWluX3F1YWxpZmll cl90b19kb21pZChjdHgsIGFyZ3Zbb3B0aW5kXSwgJmZlX2RvbWlkKSA8IDApIHsKKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlcyBpcyBhbiBpbnZhbGlkIGRvbWFpbiBpZGVudGlmaWVyXG4iLCBh cmd2W29wdGluZF0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgb3B0aW5kKys7CisK KyAgICBmb3IgKGFyZ3YgKz0gb3B0aW5kKzEsIGFyZ2MgLT0gb3B0aW5kKzE7IGFyZ2MgPiAwOyAr K2FyZ3YsIC0tYXJnYykgeworICAgICAgICBpZiAoTUFUQ0hfT1BUSU9OKCJiYWNrZW5kIiwgKmFy Z3YsIG9wYXJnKSkgeworICAgICAgICAgICAgcmVwbGFjZV9zdHJpbmcoJnZldmVudC5iYWNrZW5k X2RvbW5hbWUsIG9wYXJnKTsKKyAgICAgICAgfSBlbHNlIGlmIChNQVRDSF9PUFRJT04oImRldmlk IiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAgICAgdmV2ZW50LmRldmlkID0gYXRvaShvcGFy Zyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVucmVj b2duaXplZCBhcmd1bWVudCBgJXMnXG4iLCAqYXJndik7CisgICAgICAgICAgICByZXR1cm4gMTsK KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkcnlydW5fb25seSkgeworICAgICAgICBjaGFy ICpqc29uID0gbGlieGxfZGV2aWNlX3ZldmVudF90b19qc29uKGN0eCwgJnZldmVudCk7CisgICAg ICAgIHByaW50ZigidmV2ZW50OiAlc1xuIiwganNvbik7CisgICAgICAgIGZyZWUoanNvbik7Cisg ICAgICAgIGlmIChmZXJyb3Ioc3Rkb3V0KSB8fCBmZmx1c2goc3Rkb3V0KSkgeyBwZXJyb3IoInN0 ZG91dCIpOyBleGl0KC0xKTsgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAo bGlieGxfZGV2aWNlX3ZldmVudF9hZGQoY3R4LCBmZV9kb21pZCwgJnZldmVudCwgMCkpIHsKKyAg ICAgICAgZnByaW50ZihzdGRlcnIsICJsaWJ4bF9kZXZpY2VfdmV2ZW50X2FkZCBmYWlsZWQuXG4i KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBt YWluX3ZldmVudGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCBvcHQ7Cisg ICAgaW50IGksIG5iOworICAgIGxpYnhsX2RldmljZV92ZXZlbnQgKnZldmVudHM7CisgICAgbGli eGxfdmV2ZW50aW5mbyB2ZXZlbnRpbmZvOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwg IiIsIE5VTEwsICJ2ZXZlbnQtbGlzdCIsIDEpIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLwor ICAgIH0KKworICAgIHByaW50ZigiJS01cyAlLTNzICUtNnMgJS01cyAlLTZzICUtOHMgJS00MHMg JS00MHNcbiIsCisgICAgICAgICAgICJWZGV2IiwgIkJFIiwgImhhbmRsZSIsICJzdGF0ZSIsICJl dnQtY2giLAorICAgICAgICAgICAicmluZy1yZWYiLCAiQkUtcGF0aCIsICJGRS1wYXRoIik7Cisg ICAgZm9yIChhcmd2ICs9IG9wdGluZCwgYXJnYyAtPSBvcHRpbmQ7IGFyZ2MgPiAwOyAtLWFyZ2Ms ICsrYXJndikgeworICAgICAgICB1aW50MzJfdCBkb21pZDsKKyAgICAgICAgaWYgKGxpYnhsX2Rv bWFpbl9xdWFsaWZpZXJfdG9fZG9taWQoY3R4LCAqYXJndiwgJmRvbWlkKSA8IDApIHsKKyAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMgYW4gaW52YWxpZCBkb21haW4gaWRlbnRpZmll clxuIiwgKmFyZ3YpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg dmV2ZW50cyA9IGxpYnhsX2RldmljZV92ZXZlbnRfbGlzdChjdHgsIGRvbWlkLCAmbmIpOworICAg ICAgICBpZiAoIXZldmVudHMpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg ICAgICAgIGZvciAoaT0wOyBpPG5iOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghbGlieGxfZGV2 aWNlX3ZldmVudF9nZXRpbmZvKGN0eCwgZG9taWQsICZ2ZXZlbnRzW2ldLCAmdmV2ZW50aW5mbykp IHsKKyAgICAgICAgICAgICAgICAvKiAgICAgIFZkZXYgQkUgICBoZGwgIHN0ICAgZXZjaCBycmVm IEJFLXBhdGggRkUtcGF0aCAqLworICAgICAgICAgICAgICAgIHByaW50ZigiJS01ZCAlLTNkICUt NmQgJS01ZCAlLTZkICUtOGQgJS00MHMgJS00MHNcbiIsCisgICAgICAgICAgICAgICAgICAgICAg IHZldmVudGluZm8uZGV2aWQsIHZldmVudGluZm8uYmFja2VuZF9pZCwgdmV2ZW50aW5mby5mcm9u dGVuZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdmV2ZW50aW5mby5zdGF0ZSwgdmV2ZW50 aW5mby5ldnRjaCwgdmV2ZW50aW5mby5ycmVmLAorICAgICAgICAgICAgICAgICAgICAgICB2ZXZl bnRpbmZvLmJhY2tlbmQsIHZldmVudGluZm8uZnJvbnRlbmQpOworICAgICAgICAgICAgICAgIGxp YnhsX3ZldmVudGluZm9fZGlzcG9zZSgmdmV2ZW50aW5mbyk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBsaWJ4bF9kZXZpY2VfdmV2ZW50X2Rpc3Bvc2UoJnZldmVudHNbaV0pOworICAgICAg ICB9CisgICAgICAgIGZyZWUodmV2ZW50cyk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK K2ludCBtYWluX3ZldmVudGRldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdWlu dDMyX3QgZG9taWQsIGRldmlkOworICAgIGludCBvcHQsIHJjID0gMDsKKyAgICBsaWJ4bF9kZXZp Y2VfdmV2ZW50IHZldmVudDsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxM LCAidmV2ZW50LWRldGFjaCIsIDIpIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIH0K KworICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsKKyAgICBkZXZpZCA9IGF0 b2koYXJndltvcHRpbmQrMV0pOworCisgICAgaWYgKGxpYnhsX2RldmlkX3RvX2RldmljZV92ZXZl bnQoY3R4LCBkb21pZCwgZGV2aWQsICZ2ZXZlbnQpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy LCAiRXJyb3I6IERldmljZSAlcyBub3QgY29ubmVjdGVkLlxuIiwgYXJndltvcHRpbmQrMV0pOwor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX2RldmljZV92ZXZlbnRf cmVtb3ZlKGN0eCwgZG9taWQsICZ2ZXZlbnQsIDApOworICAgIGlmIChyYykgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZXZlbnRfcmVtb3ZlIGZhaWxlZC5cbiIpOwor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbGlieGxfZGV2aWNlX3ZldmVudF9kaXNwb3Nl KCZ2ZXZlbnQpOworICAgIHJldHVybiByYzsKK30KKwogaW50IG1haW5fdnRwbWF0dGFjaChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgaW50IG9wdDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCmluZGV4IDdlM2E4 ZWIuLmJiNDEwY2EgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpAQCAtNDAxLDYgKzQwMSwyMSBAQCBzdHJ1Y3QgY21k X3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiRGVzdHJveSBhIGRvbWFpbidzIHZpcnR1YWwg cnRjIGRldmljZSIsCiAgICAgICAiPERvbWFpbj4gPERldklkPiIsCiAgICAgfSwKKyAgICB7ICJ2 ZXZlbnQtYXR0YWNoIiwKKyAgICAgICZtYWluX3ZldmVudGF0dGFjaCwgMSwgMSwKKyAgICAgICJD cmVhdGUgYSBuZXcgdmlydHVhbCBldmVudCBkZXZpY2UiLAorICAgICAgIjxEb21haW4+IFtiYWNr ZW5kPTxCYWNrRG9tYWluPl0gW2RldmlkPTxEZXZpY2VJZD5dIiwKKyAgICB9LAorICAgIHsgInZl dmVudC1saXN0IiwKKyAgICAgICZtYWluX3ZldmVudGxpc3QsIDAsIDAsCisgICAgICAiTGlzdCB2 aXJ0dWFsIGV2ZW50IGRldmljZXMgZm9yIGEgZG9tYWluIiwKKyAgICAgICI8RG9tYWluKHMpPiIs CisgICAgfSwKKyAgICB7ICJ2ZXZlbnQtZGV0YWNoIiwKKyAgICAgICZtYWluX3ZldmVudGRldGFj aCwgMCwgMSwKKyAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVhbCBldmVudCBkZXZpY2Ui LAorICAgICAgIjxEb21haW4+IDxEZXZJZD4iLAorICAgIH0sCiAgICAgeyAidnRwbS1hdHRhY2gi LAogICAgICAgJm1haW5fdnRwbWF0dGFjaCwgMSwgMSwKICAgICAgICJDcmVhdGUgYSBuZXcgdmly dHVhbCBUUE0gZGV2aWNlIiwKLS0gCjIuOC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK