From mboxrd@z Thu Jan 1 00:00:00 1970 From: Iurii Mykhalskyi Subject: [PATCH RFC 5/6] libxl: implementation of PV DRM device interface Date: Thu, 19 May 2016 17:37:34 +0300 Message-ID: <1463668655-16778-6-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 RnJvbTogUGF2bG8gU3Vpa292IDxwYXZsby5zdWlrb3ZAZ2xvYmFsbG9naWMuY29tPgoKU2lnbmVk LW9mZi1ieTogUGF2bG8gU3Vpa292IDxwYXZsby5zdWlrb3ZAZ2xvYmFsbG9naWMuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBHbGliIEdvbHVieXRza3lpIDxnbGliLmdvbHVieXRza3lpQGdsb2JhbGxvZ2lj LmNvbT4KU2lnbmVkLW9mZi1ieTogSXVyaWkgS29ub3ZhbGVua28gPGl1cmlpLmtvbm92YWxlbmtv QGdsb2JhbGxvZ2ljLmNvbT4KU2lnbmVkLW9mZi1ieTogSXVyaWkgTXlraGFsc2t5aSA8aXVyaWku bXlraGFsc2t5aUBnbG9iYWxsb2dpYy5jb20+Ci0tLQogdG9vbHMvbGlieGwvbGlieGwuYyAgICAg ICAgICAgICAgICAgIHwgMjkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0 b29scy9saWJ4bC9saWJ4bC5oICAgICAgICAgICAgICAgICAgfCAgMTggKysrCiB0b29scy9saWJ4 bC9saWJ4bF9jcmVhdGUuYyAgICAgICAgICAgfCAgNDIgKysrKy0KIHRvb2xzL2xpYnhsL2xpYnhs X2RldmljZS5jICAgICAgICAgICB8ICAgMiArCiB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5o ICAgICAgICAgfCAgMTMgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICB8 ICAyMSArKysKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbCB8ICAgMSArCiB0 b29scy9saWJ4bC9saWJ4bF91dGlscy5oICAgICAgICAgICAgfCAgIDMgKwogdG9vbHMvbGlieGwv eGwuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwu YyAgICAgICAgICAgICB8IDE2NCArKysrKysrKysrKysrKysrKysrLQogdG9vbHMvbGlieGwveGxf Y21kdGFibGUuYyAgICAgICAgICAgIHwgIDE1ICsrCiAxMSBmaWxlcyBjaGFuZ2VkLCA1NjcgaW5z ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bC5jIGIvdG9vbHMvbGlieGwvbGlieGwuYwppbmRleCBiNjQ4MTVlLi5jY2IwNDExIDEwMDY0NAot LS0gYS90b29scy9saWJ4bC9saWJ4bC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKQEAgLTI1 OTUsNiArMjU5NSwyODQgQEAgZXhpdDoKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAoraW50 IGxpYnhsX19kZXZpY2VfdmRybV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2Rldmlj ZV92ZHJtICp2ZHJtKQoreworICAgIGludCByYzsKKworICAgIHJjID0gbGlieGxfX3Jlc29sdmVf ZG9taWQoZ2MsIHZkcm0tPmJhY2tlbmRfZG9tbmFtZSwgJnZkcm0tPmJhY2tlbmRfZG9taWQpOwor CisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfZnJvbV92ZHJt KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybSwg bGlieGxfX2RldmljZSAqZGV2aWNlKQoreworICAgZGV2aWNlLT5iYWNrZW5kX2RldmlkICAgPSB2 ZHJtLT5kZXZpZDsKKyAgIGRldmljZS0+YmFja2VuZF9kb21pZCAgID0gdmRybS0+YmFja2VuZF9k b21pZDsKKyAgIGRldmljZS0+YmFja2VuZF9raW5kICAgID0gTElCWExfX0RFVklDRV9LSU5EX1ZE Uk07CisgICBkZXZpY2UtPmRldmlkICAgICAgICAgICA9IHZkcm0tPmRldmlkOworICAgZGV2aWNl LT5kb21pZCAgICAgICAgICAgPSBkb21pZDsKKyAgIGRldmljZS0+a2luZCAgICAgICAgICAgID0g TElCWExfX0RFVklDRV9LSU5EX1ZEUk07CisKKyAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGxpYnhsX19kZXZpY2VfdmRybV9mcm9tX3hzX2JlKGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRybSAqdmRy bSkKK3sKKyAgICBjb25zdCBjaGFyICp0bXA7CisgICAgaW50IHJjOworCisgICAgbGlieGxfZGV2 aWNlX3Zkcm1faW5pdCh2ZHJtKTsKKworICAgIHRtcCA9IFJFQURfQkFDS0VORChnYywgImRldmlj ZS1pZCIpOworICAgIGlmICh0bXApCisgICAgICAgIHZkcm0tPmRldmlkID0gYXRvaSh0bXApOwor ICAgIGVsc2UKKyAgICAgICAgdmRybS0+ZGV2aWQgPSAwOworCisgICAgcmMgPSAwOworIG91dDoK KyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdmRybShsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgZGV2aWQsIGxpYnhsX2RldmljZV92ZHJtICp2ZHJtKQoreworICAgIEdDX0lOSVQoY3R4 KTsKKyAgICBjaGFyICpkb21wYXRoLCAqcGF0aDsKKyAgICBpbnQgcmMgPSBFUlJPUl9GQUlMOwor CisgICAgbGlieGxfZGV2aWNlX3Zkcm1faW5pdCh2ZHJtKTsKKyAgICBkb21wYXRoID0gbGlieGxf X3hzX2dldF9kb21wYXRoKGdjLCBkb21pZCk7CisgICAgaWYgKCFkb21wYXRoKQorICAgICAgICBn b3RvIG91dDsKKworICAgIHBhdGggPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zcHJpbnRmKGdjLCAiJXMvZGV2aWNlL3Zkcm0v JWQvYmFja2VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv bXBhdGgsIGRldmlkKSk7CisgICAgaWYgKCFwYXRoKQorICAgICAgICBnb3RvIG91dDsKKworICAg IHJjID0gbGlieGxfX2RldmljZV92ZHJtX2Zyb21feHNfYmUoZ2MsIHBhdGgsIHZkcm0pOworICAg IGlmIChyYykgZ290byBvdXQ7CisKKyAgICByYyA9IDA7CitvdXQ6CisgICAgR0NfRlJFRTsKKyAg ICByZXR1cm4gcmM7Cit9CisKK3ZvaWQgbGlieGxfX2RldmljZV92ZHJtX2FkZChsaWJ4bF9fZWdj ICplZ2MsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybSwgbGlieGxfX2Fv X2RldmljZSAqYW9kZXYpCit7CisgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKyAgICBmbGV4 YXJyYXlfdCAqZnJvbnQ7CisgICAgZmxleGFycmF5X3QgKmJhY2s7CisgICAgbGlieGxfX2Rldmlj ZSAqZGV2aWNlOworICAgIGludCByYzsKKyAgICB4c190cmFuc2FjdGlvbl90IHQgPSBYQlRfTlVM TDsKKyAgICBsaWJ4bF9kb21haW5fY29uZmlnIGRfY29uZmlnOworICAgIGxpYnhsX2RldmljZV92 ZHJtIHZkcm1fc2F2ZWQ7CisgICAgbGlieGxfX2RvbWFpbl91c2VyZGF0YV9sb2NrICpsb2NrID0g TlVMTDsKKworICAgIGxpYnhsX2RvbWFpbl9jb25maWdfaW5pdCgmZF9jb25maWcpOworICAgIGxp YnhsX2RldmljZV92ZHJtX2luaXQoJnZkcm1fc2F2ZWQpOworICAgIGxpYnhsX2RldmljZV92ZHJt X2NvcHkoQ1RYLCAmdmRybV9zYXZlZCwgdmRybSk7CisKKyAgICByYyA9IGxpYnhsX19kZXZpY2Vf dmRybV9zZXRkZWZhdWx0KGdjLCB2ZHJtKTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAg ZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOworICAgIGJhY2sgPSBmbGV4YXJyYXlf bWFrZShnYywgMzIsIDEpOworCisgICAgaWYgKCh2ZHJtLT5kZXZpZCA9IGxpYnhsX19kZXZpY2Vf bmV4dGlkKGdjLCBkb21pZCwgInZkcm0iKSkgPCAwKSB7CisgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgR0NORVcoZGV2aWNlKTsKKyAgICBy YyA9IGxpYnhsX19kZXZpY2VfZnJvbV92ZHJtKGdjLCBkb21pZCwgdmRybSwgZGV2aWNlKTsKKyAg ICBpZiAoIHJjICE9IDAgKSBnb3RvIG91dDsKKworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywg ImRldmljZS1pZCIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKCIlZCIs IHZkcm0tPmRldmlkKSk7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiZnJvbnRlbmQtaWQi KTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URigiJWQiLCBkb21pZCkpOwor ICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImRldmljZSIpOworICAgIGZsZXhhcnJheV9hcHBl bmQoYmFjaywgdmRybS0+ZGV2aWNlKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJvbmxp bmUiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICIxIik7CisgICAgZmxleGFycmF5X2Fw cGVuZChiYWNrLCAic3RhdGUiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5U RigiJWQiLCAxKSk7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAibW9kZTAiKTsKKyAgICBm bGV4YXJyYXlfYXBwZW5kKGJhY2ssIHZkcm0tPm1vZGUwKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5k KGJhY2ssICJtb2RlMSIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgdmRybS0+bW9kZTEp OworCisgICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgImRldmljZS1pZCIpOworICAgIGZsZXhh cnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigiJWQiLCB2ZHJtLT5kZXZpZCkpOworICAgIGZs ZXhhcnJheV9hcHBlbmQoZnJvbnQsICJiYWNrZW5kLWlkIik7CisgICAgZmxleGFycmF5X2FwcGVu ZChmcm9udCwgR0NTUFJJTlRGKCIlZCIsIHZkcm0tPmJhY2tlbmRfZG9taWQpKTsKKyAgICBmbGV4 YXJyYXlfYXBwZW5kKGZyb250LCAic3RhdGUiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250 LCBHQ1NQUklOVEYoIiVkIiwgMSkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJtb2Rl MCIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIHZkcm0tPm1vZGUwKTsKKyAgICBmbGV4 YXJyYXlfYXBwZW5kKGZyb250LCAibW9kZTEiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250 LCB2ZHJtLT5tb2RlMSk7CisKKyAgICBpZiAoYW9kZXYtPnVwZGF0ZV9qc29uKSB7CisgICAgICAg IGxvY2sgPSBsaWJ4bF9fbG9ja19kb21haW5fdXNlcmRhdGEoZ2MsIGRvbWlkKTsKKyAgICAgICAg aWYgKCFsb2NrKSB7CisgICAgICAgICAgICByYyA9IEVSUk9SX0xPQ0tfRkFJTDsKKyAgICAgICAg ICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZ2V0X2RvbWFp bl9jb25maWd1cmF0aW9uKGdjLCBkb21pZCwgJmRfY29uZmlnKTsKKyAgICAgICAgTE9HKElORk8s ICJhb2RldiB1cGRhdGVzIEpTT04sIGxpYnhsX19nZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24gcmV0 dXJuZWQgJWQiLCByYyk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgREVW SUNFX0FERCh2ZHJtLCB2ZHJtcywgZG9taWQsICZ2ZHJtX3NhdmVkLCBDT01QQVJFX0RFVklELCAm ZF9jb25maWcpOworICAgIH0KKworICAgIGZvciAoOzspIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9f eHNfdHJhbnNhY3Rpb25fc3RhcnQoZ2MsICZ0KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsK KworICAgICAgICByYyA9IGxpYnhsX19kZXZpY2VfZXhpc3RzKGdjLCB0LCBkZXZpY2UpOworICAg ICAgICBpZiAocmMgPCAwKSBnb3RvIG91dDsKKyAgICAgICAgaWYgKHJjID09IDEpIHsgICAgICAg ICAgICAgIC8qIGFscmVhZHkgZXhpc3RzIGluIHhlbnN0b3JlICovCisgICAgICAgICAgICBMT0co RVJST1IsICJkZXZpY2UgYWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUiKTsKKyAgICAgICAgICAg IGFvZGV2LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBt ZXNzYWdlICovCisgICAgICAgICAgICByYyA9IEVSUk9SX0RFVklDRV9FWElTVFM7CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhb2Rldi0+dXBkYXRlX2pz b24pIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfX3NldF9kb21haW5fY29uZmlndXJhdGlvbihn YywgZG9taWQsICZkX2NvbmZpZyk7CisgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAg ICAgICB9CisKKyAgICAgICAgbGlieGxfX2RldmljZV9nZW5lcmljX2FkZChnYywgdCwgZGV2aWNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19rdnNfb2ZfZmxl eGFycmF5KGdjLCBiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhY2stPmNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgZnJvbnQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJvbnQtPmNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK KworICAgICAgICByYyA9IGxpYnhsX194c190cmFuc2FjdGlvbl9jb21taXQoZ2MsICZ0KTsKKwor ICAgICAgICBpZiAoIXJjKSBicmVhazsKKyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7Cisg ICAgfQorCisgICAgYW9kZXYtPmRldiA9IGRldmljZTsKKyAgICBhb2Rldi0+YWN0aW9uID0gTElC WExfX0RFVklDRV9BQ1RJT05fQUREOworICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9u KGVnYywgYW9kZXYpOworCisgICAgcmMgPSAwOworb3V0OgorICAgIGxpYnhsX194c190cmFuc2Fj dGlvbl9hYm9ydChnYywgJnQpOworICAgIGlmIChsb2NrKSBsaWJ4bF9fdW5sb2NrX2RvbWFpbl91 c2VyZGF0YShsb2NrKTsKKyAgICBsaWJ4bF9kZXZpY2VfdmRybV9kaXNwb3NlKCZ2ZHJtX3NhdmVk KTsKKyAgICBsaWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJmRfY29uZmlnKTsKKyAgICBhb2Rl di0+cmMgPSByYzsKKyAgICBpZihyYykgYW9kZXYtPmNhbGxiYWNrKGVnYywgYW9kZXYpOworICAg IHJldHVybjsKKworfQorCitsaWJ4bF9kZXZpY2VfdmRybSAqbGlieGxfZGV2aWNlX3Zkcm1fbGlz dChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCAqbnVtKQoreworICAgIEdDX0lO SVQoY3R4KTsKKworICAgIGxpYnhsX2RldmljZV92ZHJtKiB2ZHJtcyA9IE5VTEw7CisgICAgY2hh ciogZmVfcGF0aCA9IE5VTEw7CisgICAgY2hhcioqIGRpciA9IE5VTEw7CisgICAgdW5zaWduZWQg aW50IG5kaXJzID0gMDsKKworICAgICpudW0gPSAwOworCisgICAgZmVfcGF0aCA9IGxpYnhsX19z cHJpbnRmKGdjLCAiJXMvZGV2aWNlL3Zkcm0iLCBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIGRv bWlkKSk7CisgICAgZGlyID0gbGlieGxfX3hzX2RpcmVjdG9yeShnYywgWEJUX05VTEwsIGZlX3Bh dGgsICZuZGlycyk7CisgICAgaWYgKGRpciAmJiBuZGlycykgeworICAgICAgIHZkcm1zID0gbWFs bG9jKHNpemVvZigqdmRybXMpICogbmRpcnMpOworICAgICAgIGxpYnhsX2RldmljZV92ZHJtKiB2 ZHJtOworICAgICAgIGxpYnhsX2RldmljZV92ZHJtKiBlbmQgPSB2ZHJtcyArIG5kaXJzOworICAg ICAgIGZvcih2ZHJtID0gdmRybXM7IHZkcm0gPCBlbmQ7ICsrdmRybSwgKytkaXIpIHsKKyAgICAg ICAgICBjaGFyKiB0bXA7CisKKyAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRybV9pbml0KHZkcm0p OworCisgICAgICAgICAgdmRybS0+ZGV2aWQgPSBhdG9pKCpkaXIpOworCisgICAgICAgICAgdG1w ID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgIEdDU1BSSU5U RigiJXMvJXMvYmFja2VuZC1pZCIsCisgICAgICAgICAgICAgICAgICAgZmVfcGF0aCwgKmRpcikp OworICAgICAgICAgIHZkcm0tPmJhY2tlbmRfZG9taWQgPSBhdG9pKHRtcCk7CisgICAgICAgfQor ICAgIH0KKyAgICAqbnVtID0gbmRpcnM7CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiB2ZHJt czsKK30KKworaW50IGxpYnhsX2RldmljZV92ZHJtX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybSwgbGlieGxfdmRybWluZm8gKnZk cm1pbmZvKQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBjaGFyICpkb21wYXRoLCAqdmRybXBh dGg7CisgICAgY2hhciAqdmFsOworICAgIGludCByYyA9IDA7CisKKyAgICBsaWJ4bF92ZHJtaW5m b19pbml0KHZkcm1pbmZvKTsKKyAgICBkb21wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdj LCBkb21pZCk7CisgICAgdmRybWluZm8tPmRldmlkID0gdmRybS0+ZGV2aWQ7CisKKyAgICB2ZHJt cGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3Zkcm0vJWQiLCBkb21wYXRoLCB2ZHJtaW5mby0+ ZGV2aWQpOworICAgIHZkcm1pbmZvLT5iYWNrZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05V TEwsCisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9iYWNrZW5kIiwgdmRybXBhdGgpLCBOVUxMKTsK KworICAgIGlmICghdmRybWluZm8tPmJhY2tlbmQpIHsKKyAgICAgICAgZ290byBlcnI7CisgICAg fQorCisgICAgaWYoIWxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgdmRybWluZm8tPmJhY2tl bmQpKSB7CisgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgdmFsID0gbGlieGxfX3hzX3Jl YWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFja2VuZC1pZCIsIHZk cm1wYXRoKSk7CisgICAgdmRybWluZm8tPmJhY2tlbmRfaWQgPSB2YWwgPyBzdHJ0b3VsKHZhbCwg TlVMTCwgMTApIDogLTE7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEws CisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9zdGF0ZSIsIHZkcm1wYXRoKSk7CisgICAgdmRybWlu Zm8tPnN0YXRlID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdmFs ID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMv ZXZlbnQtY2hhbm5lbCIsIHZkcm1wYXRoKSk7CisgICAgdmRybWluZm8tPmV2dGNoID0gdmFsID8g c3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdmFsID0gbGlieGxfX3hzX3JlYWQo Z2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvcmluZy1yZWYiLCB2ZHJtcGF0 aCkpOworICAgIHZkcm1pbmZvLT5ycmVmID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6 IC0xOworCisgICAgdmRybWluZm8tPmZyb250ZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05V TEwsCisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9mcm9udGVuZCIsIHZkcm1pbmZvLT5iYWNrZW5k KSwgTlVMTCk7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAg ICAgICAgR0NTUFJJTlRGKCIlcy9mcm9udGVuZC1pZCIsIHZkcm1pbmZvLT5iYWNrZW5kKSk7Cisg ICAgdmRybWluZm8tPmZyb250ZW5kX2lkID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6 IC0xOworCisgICAgZ290byBleGl0OworZXJyOgorICAgIHJjID0gRVJST1JfRkFJTDsKK2V4aXQ6 CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKIGludCBsaWJ4bF9fZGV2aWNlX3Z0dHlfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBs aWJ4bF9kZXZpY2VfdnR0eSAqdnR0eSkKIHsKICAgICBpbnQgcmM7CkBAIC01MjkzLDYgKzU1NzEs OCBAQCBleGl0OgogICogbGlieGxfZGV2aWNlX3Z0cG1fZGVzdHJveQogICogbGlieGxfZGV2aWNl X3ZydGNfcmVtb3ZlCiAgKiBsaWJ4bF9kZXZpY2VfdnJ0Y19kZXN0cm95CisgKiBsaWJ4bF9kZXZp Y2VfdmRybV9yZW1vdmUKKyAqIGxpYnhsX2RldmljZV92ZHJtX2Rlc3Ryb3kKICAqIGxpYnhsX2Rl dmljZV92c25kX3JlbW92ZQogICogbGlieGxfZGV2aWNlX3ZzbmRfZGVzdHJveQogICogbGlieGxf ZGV2aWNlX3Z0dHlfcmVtb3ZlCkBAIC01MzUzLDYgKzU2MzMsMTAgQEAgREVGSU5FX0RFVklDRV9S RU1PVkUodnRwbSwgZGVzdHJveSwgMSkKIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZydGMsIHJlbW92 ZSwgMCkKIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZydGMsIGRlc3Ryb3ksIDEpCiAKKy8qIHZkcm0g Ki8KK0RFRklORV9ERVZJQ0VfUkVNT1ZFKHZkcm0sIHJlbW92ZSwgMCkKK0RFRklORV9ERVZJQ0Vf UkVNT1ZFKHZkcm0sIGRlc3Ryb3ksIDEpCisKIC8qIHZzbmQgKi8KIERFRklORV9ERVZJQ0VfUkVN T1ZFKHZzbmQsIHJlbW92ZSwgMCkKIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZzbmQsIGRlc3Ryb3ks IDEpCkBAIC01Mzc5LDYgKzU2NjMsNyBAQCBERUZJTkVfREVWSUNFX1JFTU9WRSh2ZXZlbnQsIGRl c3Ryb3ksIDEpCiAgKiBsaWJ4bF9kZXZpY2VfbmljX2FkZAogICogbGlieGxfZGV2aWNlX3Z0cG1f YWRkCiAgKiBsaWJ4bF9kZXZpY2VfdnJ0Y19hZGQKKyAqIGxpYnhsX2RldmljZV92ZHJtX2FkZAog ICogbGlieGxfZGV2aWNlX3ZzbmRfYWRkCiAgKiBsaWJ4bF9kZXZpY2VfdnR0eV9hZGQKICAqIGxp YnhsX2RldmljZV92ZXZlbnRfYWRkCkBAIC01NDE2LDYgKzU3MDEsOSBAQCBERUZJTkVfREVWSUNF X0FERCh2dHBtKQogLyogdnJ0YyAqLwogREVGSU5FX0RFVklDRV9BREQodnJ0YykKIAorLyogdmRy bSAqLworREVGSU5FX0RFVklDRV9BREQodmRybSkKKwogLyogdnNuZCAqLwogREVGSU5FX0RFVklD RV9BREQodnNuZCkKIApAQCAtNzk0Miw2ICs4MjMwLDggQEAgaW50IGxpYnhsX3JldHJpZXZlX2Rv bWFpbl9jb25maWd1cmF0aW9uKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIAogICAg IE1FUkdFKHZydGMsIHZydGNzLCBDT01QQVJFX0RFVklELCB7fSk7CiAKKyAgICBNRVJHRSh2ZHJt LCB2ZHJtcywgQ09NUEFSRV9ERVZJRCwge30pOworCiAgICAgTUVSR0UodnNuZCwgdnNuZHMsIENP TVBBUkVfREVWSUQsIHt9KTsKIAogICAgIE1FUkdFKHBjaSwgcGNpZGV2cywgQ09NUEFSRV9QQ0ks IHt9KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9saWJ4bC9saWJ4 bC5oCmluZGV4IDc3OTkzNzQuLjU3ZjNlMDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs LmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuaApAQCAtMTQ1MSw2ICsxNDUxLDI0IEBAIGludCBs aWJ4bF9kZXZpY2VfdnJ0Y19kZXN0cm95KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwK IGxpYnhsX2RldmljZV92cnRjICpsaWJ4bF9kZXZpY2VfdnJ0Y19saXN0KGxpYnhsX2N0eCAqY3R4 LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pOwogaW50IGxpYnhsX2RldmljZV92cnRjX2dldGlu Zm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3ZydGMgKnZydGMsIGxpYnhsX3ZydGNpbmZvICp2cnRjaW5m byk7CisKKy8qIERSTSAqLworaW50IGxpYnhsX2RldmljZV92ZHJtX2FkZChsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2RldmljZV92ZHJtICp2ZHJtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAqYW9faG93KQorICAgICAgICAg ICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQgbGlieGxf ZGV2aWNlX3Zkcm1fcmVtb3ZlKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Zkcm0gKnZkcm0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsK K2ludCBsaWJ4bF9kZXZpY2VfdmRybV9kZXN0cm95KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZHJtICp2 ZHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9o b3cgKmFvX2hvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX0VYVEVSTkFM X0NBTExFUlNfT05MWTsKKworbGlieGxfZGV2aWNlX3Zkcm0gKmxpYnhsX2RldmljZV92ZHJtX2xp c3QobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgKm51bSk7CitpbnQgbGlieGxf ZGV2aWNlX3Zkcm1fZ2V0aW5mbyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybSwgbGlieGxf dmRybWluZm8gKnZkcm1pbmZvKTsKKwogLyogQXVkaW8gKi8KIGludCBsaWJ4bF9kZXZpY2VfdnNu ZF9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdnNuZCAq dnNuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cg KmFvX2hvdykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMv bGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXggMTc1MjQ5OS4uNmUxYzBkOCAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRl LmMKQEAgLTczNiw2ICs3MzYsOCBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3Z0cG1z KGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVf YXR0YWNoX3ZydGNzKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7CitzdGF0aWMgdm9p ZCBkb21jcmVhdGVfYXR0YWNoX3Zkcm1zKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2 ICptdWx0aWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7 CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3Z0dHlzKGxpYnhsX19lZ2MgKmVnYywgbGli eGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHJldCk7CiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3ZzbmRzKGxpYnhsX19l Z2MgKmVnYywgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKQEAgLTE0MzMsMTIgKzE0MzUsNDUg QEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0dGFjaF92cnRjcyhsaWJ4bF9fZWdjICplZ2MsCiAg ICBpZiAoZF9jb25maWctPm51bV92cnRjcyA+IDApIHsKICAgICAgICAvKiBBdHRhY2ggdnJ0Y3Mg Ki8KICAgICAgICBsaWJ4bF9fbXVsdGlkZXZfYmVnaW4oYW8sICZkY3MtPm11bHRpZGV2KTsKLSAg ICAgICBkY3MtPm11bHRpZGV2LmNhbGxiYWNrID0gZG9tY3JlYXRlX2F0dGFjaF92dHR5czsKKyAg ICAgICBkY3MtPm11bHRpZGV2LmNhbGxiYWNrID0gZG9tY3JlYXRlX2F0dGFjaF92ZHJtczsKICAg ICAgICBsaWJ4bF9fYWRkX3ZydGNzKGVnYywgYW8sIGRvbWlkLCBkX2NvbmZpZywgJmRjcy0+bXVs dGlkZXYpOwogICAgICAgIGxpYnhsX19tdWx0aWRldl9wcmVwYXJlZChlZ2MsICZkY3MtPm11bHRp ZGV2LCAwKTsKICAgICAgICByZXR1cm47CiAgICB9CiAKKyAgIGRvbWNyZWF0ZV9hdHRhY2hfdmRy bXMoZWdjLCBtdWx0aWRldiwgMCk7CisgICByZXR1cm47CisKK2Vycm9yX291dDoKKyAgIGFzc2Vy dChyZXQpOworICAgZG9tY3JlYXRlX2NvbXBsZXRlKGVnYywgZGNzLCByZXQpOworfQorCitzdGF0 aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3Zkcm1zKGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCkKK3sKKyAgIGxpYnhsX19k b21haW5fY3JlYXRlX3N0YXRlICpkY3MgPSBDT05UQUlORVJfT0YobXVsdGlkZXYsICpkY3MsIG11 bHRpZGV2KTsKKyAgIFNUQVRFX0FPX0dDKGRjcy0+YW8pOworICAgaW50IGRvbWlkID0gZGNzLT5n dWVzdF9kb21pZDsKKworICAgbGlieGxfZG9tYWluX2NvbmZpZyogY29uc3QgZF9jb25maWcgPSBk Y3MtPmd1ZXN0X2NvbmZpZzsKKworICAgaWYocmV0KSB7CisgICAgICAgTE9HKEVSUk9SLCAidW5h YmxlIHRvIGFkZCB2cnRjIGRldmljZXMiKTsKKyAgICAgICBnb3RvIGVycm9yX291dDsKKyAgIH0K KworICAgIC8qIFBsdWcgdmRybSBkZXZpY2VzICovCisgICBpZiAoZF9jb25maWctPm51bV92ZHJt cyA+IDApIHsKKyAgICAgICAvKiBBdHRhY2ggdmRybXMgKi8KKyAgICAgICBsaWJ4bF9fbXVsdGlk ZXZfYmVnaW4oYW8sICZkY3MtPm11bHRpZGV2KTsKKyAgICAgICBkY3MtPm11bHRpZGV2LmNhbGxi YWNrID0gZG9tY3JlYXRlX2F0dGFjaF92dHR5czsKKyAgICAgICBsaWJ4bF9fYWRkX3Zkcm1zKGVn YywgYW8sIGRvbWlkLCBkX2NvbmZpZywgJmRjcy0+bXVsdGlkZXYpOworICAgICAgIGxpYnhsX19t dWx0aWRldl9wcmVwYXJlZChlZ2MsICZkY3MtPm11bHRpZGV2LCAwKTsKKyAgICAgICByZXR1cm47 CisgICB9CisKICAgIGRvbWNyZWF0ZV9hdHRhY2hfdnR0eXMoZWdjLCBtdWx0aWRldiwgMCk7CiAg ICByZXR1cm47CiAKQEAgLTE0NDcsNiArMTQ4Miw3IEBAIGVycm9yX291dDoKICAgIGRvbWNyZWF0 ZV9jb21wbGV0ZShlZ2MsIGRjcywgcmV0KTsKIH0KIAorCiBzdGF0aWMgdm9pZCBkb21jcmVhdGVf YXR0YWNoX3Z0dHlzKGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHJldCkKQEAgLTE0NTgsNyArMTQ5NCw3IEBAIHN0YXRpYyB2b2lk IGRvbWNyZWF0ZV9hdHRhY2hfdnR0eXMobGlieGxfX2VnYyAqZWdjLAogICAgbGlieGxfZG9tYWlu X2NvbmZpZyogY29uc3QgZF9jb25maWcgPSBkY3MtPmd1ZXN0X2NvbmZpZzsKIAogICAgaWYocmV0 KSB7Ci0gICAgICAgTE9HKEVSUk9SLCAidW5hYmxlIHRvIGFkZCB2dHR5IGRldmljZXMiKTsKKyAg ICAgICBMT0coRVJST1IsICJ1bmFibGUgdG8gYWRkIHZkcm0gZGV2aWNlcyIpOwogICAgICAgIGdv dG8gZXJyb3Jfb3V0OwogICAgfQogCkBAIC0xNDkxLDcgKzE1MjcsNyBAQCBzdGF0aWMgdm9pZCBk b21jcmVhdGVfYXR0YWNoX3ZzbmRzKGxpYnhsX19lZ2MgKmVnYywKICAgIGxpYnhsX2RvbWFpbl9j b25maWcqIGNvbnN0IGRfY29uZmlnID0gZGNzLT5ndWVzdF9jb25maWc7CiAKICAgIGlmKHJldCkg ewotICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBhZGQgdnJ0YyBkZXZpY2VzIik7CisgICAg ICAgTE9HKEVSUk9SLCAidW5hYmxlIHRvIGFkZCB2dHR5IGRldmljZXMiKTsKICAgICAgICBnb3Rv IGVycm9yX291dDsKICAgIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNl LmMgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwppbmRleCA2NTU2OWUxLi4xM2M0YTdiIDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYworKysgYi90b29scy9saWJ4bC9s aWJ4bF9kZXZpY2UuYwpAQCAtNTQ1LDYgKzU0NSw3IEBAIHZvaWQgbGlieGxfX211bHRpZGV2X3By ZXBhcmVkKGxpYnhsX19lZ2MgKmVnYywKICAqIGxpYnhsX19hZGRfbmljcwogICogbGlieGxfX2Fk ZF92dHBtcwogICogbGlieGxfX2FkZF92cnRjcworICogbGlieGxfX2FkZF92ZHJtcwogICogbGli eGxfX2FkZF92c25kcwogICogbGlieGxfX2FkZF92dHR5cwogICogbGlieGxfX2FkZF92ZXZlbnRz CkBAIC01NjgsNiArNTY5LDcgQEAgREVGSU5FX0RFVklDRVNfQUREKGRpc2spCiBERUZJTkVfREVW SUNFU19BREQobmljKQogREVGSU5FX0RFVklDRVNfQUREKHZ0cG0pCiBERUZJTkVfREVWSUNFU19B REQodnJ0YykKK0RFRklORV9ERVZJQ0VTX0FERCh2ZHJtKQogREVGSU5FX0RFVklDRVNfQUREKHZz bmQpCiBERUZJTkVfREVWSUNFU19BREQodnR0eSkKIERFRklORV9ERVZJQ0VTX0FERCh2ZXZlbnQp CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwv bGlieGxfaW50ZXJuYWwuaAppbmRleCAzMzBkNTZmLi44MDc1NGRmIDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKQEAgLTQ4MCw3ICs0ODAsOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgKGRldiktPmJhY2tl bmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlJUQyB8fCBcCiAgICAgKGRldiktPmJhY2tl bmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlNORCB8fCBcCiAgICAgKGRldiktPmJhY2tl bmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVlRUWSB8fCBcCi0gICAgKGRldiktPmJhY2tl bmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVkVWRU5UKQorICAgIChkZXYpLT5iYWNrZW5k X2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZFVkVOVCB8fCBcCisgICAgKGRldiktPmJhY2tl bmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVkRSTSkKIAogI2RlZmluZSBYQ19QQ0lfQkRG ICAgICAgICAgICAgICIweCV4LCAweCV4LCAweCV4LCAweCV4IgogI2RlZmluZSBQQ0lfREVWRk4o c2xvdCwgZnVuYykgICAoKCgoc2xvdCkgJiAweDFmKSA8PCAzKSB8ICgoZnVuYykgJiAweDA3KSkK QEAgLTExOTEsNiArMTE5Miw3IEBAIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfbmljX3NldGRl ZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX25pYyAqbmljLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCk7CiBfaGlkZGVuIGlu dCBsaWJ4bF9fZGV2aWNlX3Z0cG1fc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZp Y2VfdnRwbSAqdnRwbSk7CiBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZydGNfc2V0ZGVmYXVs dChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0Yyk7CitfaGlkZGVuIGludCBs aWJ4bF9fZGV2aWNlX3Zkcm1fc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2Vf dmRybSAqdmRybSk7CiBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZzbmRfc2V0ZGVmYXVsdChs aWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCk7CiBfaGlkZGVuIGludCBsaWJ4 bF9fZGV2aWNlX3Z0dHlfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfdnR0 eSAqdnR0eSk7CiBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3ZmYl9zZXRkZWZhdWx0KGxpYnhs X19nYyAqZ2MsIGxpYnhsX2RldmljZV92ZmIgKnZmYik7CkBAIC0yNTc4LDYgKzI1ODAsMTEgQEAg X2hpZGRlbiB2b2lkIGxpYnhsX19kZXZpY2VfdnJ0Y19hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50 MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rl dmljZV92cnRjICp2cnRjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX2FvX2RldmljZSAqYW9kZXYpOwogCisvKiBBTyBvcGVyYXRpb24gdG8gY29ubmVjdCBhIGRy bSBkZXZpY2UgKi8KK19oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX3Zkcm1fYWRkKGxpYnhsX19l Z2MgKmVnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKKwogLyogQU8gb3BlcmF0aW9uIHRv IGNvbm5lY3QgYSBzb3VuZCBkZXZpY2UgKi8KIF9oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX3Zz bmRfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCwKQEAgLTMzMTMsNiAr MzMyMCwxMCBAQCBfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF92cnRjcyhsaWJ4bF9fZWdjICplZ2Ms IGxpYnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldik7CiAKK19oaWRkZW4gdm9pZCBsaWJ4 bF9fYWRkX3Zkcm1zKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpk X2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAq bXVsdGlkZXYpOworCiBfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF92dHR5cyhsaWJ4bF9fZWdjICpl Z2MsIGxpYnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKm11bHRpZGV2KTsKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApp bmRleCAyM2ZjZjUwLi4yNzU4M2NjIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBl cy5pZGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC01NjAsNiArNTYwLDE1 IEBAIGxpYnhsX2RldmljZV92cnRjID0gU3RydWN0KCJkZXZpY2VfdnJ0YyIsIFsKICAgICAoImRl dmljZSIsIHN0cmluZyksCiAgICAgXSkKIAorbGlieGxfZGV2aWNlX3Zkcm0gPSBTdHJ1Y3QoImRl dmljZV92ZHJtIiwgWworICAgICgiYmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKKyAgICAo ImJhY2tlbmRfZG9tbmFtZSIsIHN0cmluZyksCisgICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwK KyAgICAoImRldmljZSIsIHN0cmluZyksCisgICAgKCJtb2RlMCIsIHN0cmluZyksCisgICAgKCJt b2RlMSIsIHN0cmluZyksCisgICAgXSkKKwogbGlieGxfZGV2aWNlX3ZzbmQgPSBTdHJ1Y3QoImRl dmljZV92c25kIiwgWwogICAgICgiYmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKICAgICAo ImJhY2tlbmRfZG9tbmFtZSIsIHN0cmluZyksCkBAIC02NzYsNiArNjg1LDcgQEAgbGlieGxfZG9t YWluX2NvbmZpZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAoInZrYnMiLCBBcnJh eShsaWJ4bF9kZXZpY2VfdmtiLCAibnVtX3ZrYnMiKSksCiAgICAgKCJ2dHBtcyIsIEFycmF5KGxp YnhsX2RldmljZV92dHBtLCAibnVtX3Z0cG1zIikpLAogICAgICgidnJ0Y3MiLCBBcnJheShsaWJ4 bF9kZXZpY2VfdnJ0YywgIm51bV92cnRjcyIpKSwKKyAgICAoInZkcm1zIiwgQXJyYXkobGlieGxf ZGV2aWNlX3Zkcm0sICJudW1fdmRybXMiKSksCiAgICAgKCJ2c25kcyIsIEFycmF5KGxpYnhsX2Rl dmljZV92c25kLCAibnVtX3ZzbmRzIikpLAogICAgICgidnR0eXMiLCBBcnJheShsaWJ4bF9kZXZp Y2VfdnR0eSwgIm51bV92dHR5cyIpKSwKICAgICAjIGEgY2hhbm5lbCBtYW5pZmVzdHMgYXMgYSBj b25zb2xlIHdpdGggYSBuYW1lLApAQCAtNzM0LDYgKzc0NCwxNyBAQCBsaWJ4bF92cnRjaW5mbyA9 IFN0cnVjdCgidnJ0Y2luZm8iLCBbCiAgICAgKCJycmVmIiwgaW50ZWdlciksCiAgICAgXSwgZGly PURJUl9PVVQpCiAKK2xpYnhsX3Zkcm1pbmZvID0gU3RydWN0KCJ2ZHJtaW5mbyIsIFsKKyAgICAo ImJhY2tlbmQiLCBzdHJpbmcpLAorICAgICgiYmFja2VuZF9pZCIsIHVpbnQzMiksCisgICAgKCJm cm9udGVuZCIsIHN0cmluZyksCisgICAgKCJmcm9udGVuZF9pZCIsIHVpbnQzMiksCisgICAgKCJk ZXZpZCIsIGxpYnhsX2RldmlkKSwKKyAgICAoInN0YXRlIiwgaW50ZWdlciksCisgICAgKCJldnRj aCIsIGludGVnZXIpLAorICAgICgicnJlZiIsIGludGVnZXIpLAorICAgIF0sIGRpcj1ESVJfT1VU KQorCiBsaWJ4bF92c25kaW5mbyA9IFN0cnVjdCgidnNuZGluZm8iLCBbCiAgICAgKCJiYWNrZW5k Iiwgc3RyaW5nKSwKICAgICAoImJhY2tlbmRfaWQiLCB1aW50MzIpLApkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlw ZXNfaW50ZXJuYWwuaWRsCmluZGV4IGE4NjMyNWMuLjlhNjg3MDAgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAorKysgYi90b29scy9saWJ4bC9saWJ4bF90 eXBlc19pbnRlcm5hbC5pZGwKQEAgLTI2LDYgKzI2LDcgQEAgbGlieGxfX2RldmljZV9raW5kID0g RW51bWVyYXRpb24oImRldmljZV9raW5kIiwgWwogICAgICgxMCwgIlZTTkQiKSwKICAgICAoMTEs ICJWVFRZIiksCiAgICAgKDEyLCAiVkVWRU5UIiksCisgICAgKDEzLCAiVkRSTSIpLAogICAgIF0p CiAKIGxpYnhsX19jb25zb2xlX2JhY2tlbmQgPSBFbnVtZXJhdGlvbigiY29uc29sZV9iYWNrZW5k IiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuaCBiL3Rvb2xzL2xpYnhs L2xpYnhsX3V0aWxzLmgKaW5kZXggMjRhODIwNS4uZTE1MzJhMiAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfdXRpbHMuaAorKysgYi90b29scy9saWJ4bC9saWJ4bF91dGlscy5oCkBAIC04 MCw2ICs4MCw5IEBAIGludCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdnRwbShsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCiBpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3ZydGMobGlieGxf Y3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3ZydGMgKnZydGMpOwogCitpbnQgbGlieGxfZGV2aWRf dG9fZGV2aWNlX3Zkcm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3Zkcm0gKnZkcm0p OworCiBpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3ZzbmQobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGli eGxfZGV2aWNlX3ZzbmQgKnZzbmQpOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bC5oIGIv dG9vbHMvbGlieGwveGwuaAppbmRleCA5MDUyNzZkLi43YzAwODJjIDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC94bC5oCisrKyBiL3Rvb2xzL2xpYnhsL3hsLmgKQEAgLTg1LDYgKzg1LDkgQEAgaW50 IG1haW5fYmxvY2tkZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3ZydGNh dHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3ZydGNsaXN0KGludCBhcmdj LCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92cnRjZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJn dik7CitpbnQgbWFpbl92ZHJtYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFp bl92ZHJtbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fdmRybWRldGFjaChp bnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdnNuZGF0dGFjaChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpOwogaW50IG1haW5fdnNuZGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGlu dCBtYWluX3ZzbmRkZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwppbmRleCBm OGY5ZWRmLi5kZjllYmQyIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKKysr IGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBzdGF0aWMg dm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgIGxv bmcgbCwgdmNwdXMgPSAwOwogICAgIFhMVV9Db25maWcgKmNvbmZpZzsKICAgICBYTFVfQ29uZmln TGlzdCAqY3B1cywgKmNwdWlkcywgKnZiZHMsICpuaWNzLCAqcGNpczsKLSAgICBYTFVfQ29uZmln TGlzdCAqY3ZmYnMsICp2ZXZlbnRzLCAqdnRwbXMsICp2cnRjcywgKnZ0dHlzLCAqdnNuZHM7Cisg ICAgWExVX0NvbmZpZ0xpc3QgKmN2ZmJzLCAqdmV2ZW50cywgKnZ0cG1zLCAqdnJ0Y3MsICp2dHR5 cywgKnZzbmRzLCAqdmRybXM7CiAgICAgWExVX0NvbmZpZ0xpc3QgKmNoYW5uZWxzLCAqaW9wb3J0 cywgKmlycXMsICppb21lbSwgKnZpcmlkaWFuLCAqZHRkZXZzOwogICAgIGludCBudW1faW9wb3J0 cywgbnVtX2lycXMsIG51bV9pb21lbSwgbnVtX2NwdXMsIG51bV92aXJpZGlhbjsKICAgICBpbnQg cGNpX3Bvd2VyX21nbXQgPSAwOwpAQCAtMTkwMiw2ICsxOTAyLDU4IEBAIHN0YXRpYyB2b2lkIHBh cnNlX2NvbmZpZ19kYXRhKGNvbnN0IGNoYXIgKmNvbmZpZ19zb3VyY2UsCiAgICAgICAgIH0KICAg ICB9CiAKKyAgICBpZiAoIXhsdV9jZmdfZ2V0X2xpc3QoY29uZmlnLCAidmRybSIsICZ2ZHJtcywg MCwgMCkpIHsKKyAgICAgICAgZF9jb25maWctPm51bV92ZHJtcyA9IDA7CisgICAgICAgIGRfY29u ZmlnLT52ZHJtcyA9IE5VTEw7CisgICAgICAgIHdoaWxlICgoYnVmID0geGx1X2NmZ19nZXRfbGlz dGl0ZW0odmRybXMsIGRfY29uZmlnLT5udW1fdmRybXMpKSAhPSBOVUxMKSB7CisgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfdmRybSAqdmRybTsKKyAgICAgICAgICAgIGxpYnhsX3N0cmluZ19saXN0 IHBhaXJzOworICAgICAgICAgICAgY2hhciAqcGF0aCA9IE5VTEw7CisgICAgICAgICAgICBpbnQg bGVuOworCisgICAgICAgICAgICB2ZHJtID0gQVJSQVlfRVhURU5EX0lOSVQoZF9jb25maWctPnZk cm1zLCBkX2NvbmZpZy0+bnVtX3Zkcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX2RldmljZV92ZHJtX2luaXQpOworCisgICAgICAgICAgICBzcGxpdF9zdHJp bmdfaW50b19zdHJpbmdfbGlzdChidWYsICIsIiwgJnBhaXJzKTsKKyAgICAgICAgICAgIGxlbiA9 IGxpYnhsX3N0cmluZ19saXN0X2xlbmd0aCgmcGFpcnMpOworCisgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaGFyICprZXksICprZXlfdW50 cmltbWVkLCAqdmFsdWUsICp2YWx1ZV91bnRyaW1tZWQ7CisgICAgICAgICAgICAgICAgaW50IHJj OworICAgICAgICAgICAgICAgIHJjID0gc3BsaXRfc3RyaW5nX2ludG9fcGFpcihwYWlyc1tpXSwg Ij0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5X3Vu dHJpbW1lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZh bHVlX3VudHJpbW1lZCk7CisgICAgICAgICAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAg ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gcGFyc2UgdmRybSBjb25maWd1 cmF0aW9uOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnNbaV0pOworICAg ICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICB0cmltKGlzc3BhY2UsIGtleV91bnRyaW1tZWQsICZrZXkpOworICAgICAgICAgICAgICAg IHRyaW0oaXNzcGFjZSwgdmFsdWVfdW50cmltbWVkLCAmdmFsdWUpOworCisgICAgICAgICAgICAg ICAgaWYgKCFzdHJjbXAoa2V5LCAiYmFja2VuZGlkIikpIHsKKyAgICAgICAgICAgICAgICAgICAg dmRybS0+YmFja2VuZF9kb21pZCA9IGF0b2kodmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAoIXN0cmNtcChrZXksICJiYWNrZW5kIikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVw bGFjZV9zdHJpbmcoJnZkcm0tPmJhY2tlbmRfZG9tbmFtZSwgdmFsdWUpOworICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJkZXZpZCIpKSB7CisgICAgICAgICAgICAgICAg ICAgIHZkcm0tPmRldmlkID0gYXRvaSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm ICghc3RyY21wKGtleSwgImRldmljZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vf c3RyaW5nKCZ2ZHJtLT5kZXZpY2UsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KCFzdHJjbXAoa2V5LCAibW9kZTAiKSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3N0 cmluZygmdmRybS0+bW9kZTAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFz dHJjbXAoa2V5LCAibW9kZTEiKSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3N0cmlu ZygmdmRybS0+bW9kZTEsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgZnJlZShrZXkpOworICAgICAgICAgICAgICAgIGZyZWUoa2V5X3VudHJpbW1lZCk7CisgICAg ICAgICAgICAgICAgZnJlZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgZnJlZSh2YWx1ZV91bnRy aW1tZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGlieGxfc3RyaW5nX2xpc3RfZGlz cG9zZSgmcGFpcnMpOworICAgICAgICAgICAgZnJlZShwYXRoKTsKKyAgICAgICAgfQorICAgIH0K KwogICAgIGlmICgheGx1X2NmZ19nZXRfbGlzdChjb25maWcsICJ2dHR5IiwgJnZ0dHlzLCAwLCAw KSkgewogICAgICAgICBkX2NvbmZpZy0+bnVtX3Z0dHlzID0gMDsKICAgICAgICAgZF9jb25maWct PnZ0dHlzID0gTlVMTDsKQEAgLTcwODQsNiArNzEzNiwxMTYgQEAgaW50IG1haW5fdnJ0Y2RldGFj aChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQgbWFpbl92 ZHJtYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKworICAgIGludCBvcHQ7CisgICAg dWludDMyX3QgZmVfZG9taWQ7CisgICAgbGlieGxfZGV2aWNlX3Zkcm0gdmRybTsKKyAgICAvKiAg WExVX0NvbmZpZyAqY29uZmlnID0gMDsgKi8KKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQs ICIiLCBOVUxMLCAidmRybS1hdHRhY2giLCAyKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8K KyAgICB9CisKKyAgICBpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChjdHgsIGFy Z3Zbb3B0aW5kXSwgJmZlX2RvbWlkKSA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIl cyBpcyBhbiBpbnZhbGlkIGRvbWFpbiBpZGVudGlmaWVyXG4iLCBhcmd2W29wdGluZF0pOworICAg ICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgb3B0aW5kKys7CisKKyAgICBpZiAob3B0aW5kIDwg YXJnYykgeworICAgICAgICByZXBsYWNlX3N0cmluZygmdmRybS5kZXZpY2UsIGFyZ3Zbb3B0aW5k XSk7CisgICAgfQorICAgIG9wdGluZCsrOworCisvKiBUT0RPOiBmaXggdGhpcyB0ZW1wb3Jhcnkg aGFyZGNvZGUgKi8KKyAgICB2ZHJtLmJhY2tlbmRfZG9tbmFtZSA9ICJEb21haW4tRCI7CisgICAg dmRybS5iYWNrZW5kX2RvbWlkID0gMTsKKworICAgIGlmIChkcnlydW5fb25seSkgeworICAgICAg ICBjaGFyICpqc29uID0gbGlieGxfZGV2aWNlX3Zkcm1fdG9fanNvbihjdHgsICZ2ZHJtKTsKKyAg ICAgICAgcHJpbnRmKCJ2ZHJtOiAlc1xuIiwganNvbik7CisgICAgICAgIGZyZWUoanNvbik7Cisg ICAgICAgIGlmIChmZXJyb3Ioc3Rkb3V0KSB8fCBmZmx1c2goc3Rkb3V0KSkgeyBwZXJyb3IoInN0 ZG91dCIpOyBleGl0KC0xKTsgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAo bGlieGxfZGV2aWNlX3Zkcm1fYWRkKGN0eCwgZmVfZG9taWQsICZ2ZHJtLCAwKSkgeworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92ZHJtX2FkZCBmYWlsZWQuXG4iKTsKKyAg ICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBtYWluX3Zk cm1saXN0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgb3B0OworCWludCBpLCBuYjsK KwlsaWJ4bF9kZXZpY2VfdmRybSAqdmRybXM7CisJbGlieGxfdmRybWluZm8gdmRybWluZm87CisK KwlTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInZkcm0tbGlzdCIsIDEpIHsKKwkJ LyogTm8gb3B0aW9ucyAqLworCX0KKworCS8qIHZkcm1pbmZvLnV1aWQgc2hvdWxkIGJlIG91dHB1 dHRlZCB0b28gKi8KKwlwcmludGYoIiUtNXMgJS0zcyAlLTZzICUtNXMgJS02cyAlLThzICUtNDBz ICUtNDBzXG4iLAorCQkJIlZkZXYiLCAiQkUiLCAiaGFuZGxlIiwgInN0YXRlIiwgImV2dC1jaCIs ICJyaW5nLXJlZiIsICJCRS1wYXRoIiwgIkZFLXBhdGgiKTsKKwlmb3IgKGFyZ3YgKz0gb3B0aW5k LCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7IC0tYXJnYywgKythcmd2KSB7CisJCXVpbnQzMl90 IGRvbWlkOworCQlpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChjdHgsICphcmd2 LCAmZG9taWQpIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyBpcyBhbiBpbnZhbGlkIGRv bWFpbiBpZGVudGlmaWVyXG4iLCAqYXJndik7CisJCQljb250aW51ZTsKKwkJfQorCQl2ZHJtcyA9 IGxpYnhsX2RldmljZV92ZHJtX2xpc3QoY3R4LCBkb21pZCwgJm5iKTsKKwkJaWYgKCF2ZHJtcykg eworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChpPTA7IGk8bmI7IGkrKykgeworCQkJaWYgKCFs aWJ4bF9kZXZpY2VfdmRybV9nZXRpbmZvKGN0eCwgZG9taWQsICZ2ZHJtc1tpXSwgJnZkcm1pbmZv KSkgeworCQkJCS8qICAgICAgVmRldiBCRSAgIGhkbCAgc3QgICBldmNoIHJyZWYgQkUtcGF0aCBG RS1wYXRoIFVVSUQgKi8KKwkJCQlwcmludGYoIiUtNWQgJS0zZCAlLTZkICUtNWQgJS02ZCAlLThk ICUtNDBzICUtNDBzXG4iLAorCQkJCQkJdmRybWluZm8uZGV2aWQsIHZkcm1pbmZvLmJhY2tlbmRf aWQsIHZkcm1pbmZvLmZyb250ZW5kX2lkLAorCQkJCQkJdmRybWluZm8uc3RhdGUsIHZkcm1pbmZv LmV2dGNoLCB2ZHJtaW5mby5ycmVmLCB2ZHJtaW5mby5iYWNrZW5kLAorCQkJCQkJdmRybWluZm8u ZnJvbnRlbmQpOworCQkJCWxpYnhsX3Zkcm1pbmZvX2Rpc3Bvc2UoJnZkcm1pbmZvKTsKKwkJCX0K KwkJCWxpYnhsX2RldmljZV92ZHJtX2Rpc3Bvc2UoJnZkcm1zW2ldKTsKKwkJfQorCQlmcmVlKHZk cm1zKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluX3Zkcm1kZXRhY2goaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQoreworICAgIHVpbnQzMl90IGRvbWlkLCBkZXZpZDsKKyAgICBpbnQgb3B0 LCByYyA9IDA7CisgICAgbGlieGxfZGV2aWNlX3Zkcm0gdmRybTsKKworICAgIFNXSVRDSF9GT1JF QUNIX09QVChvcHQsICIiLCBOVUxMLCAidmRybS1kZXRhY2giLCAyKSB7CisgICAgICAgIC8qIE5v IG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFyZ3Zbb3B0aW5k XSk7CisgICAgZGV2aWQgPSBhdG9pKGFyZ3Zbb3B0aW5kKzFdKTsKKworICAgIGlmIChsaWJ4bF9k ZXZpZF90b19kZXZpY2VfdmRybShjdHgsIGRvbWlkLCBkZXZpZCwgJnZkcm0pKSB7CisgICAgICAg IGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IERldmljZSAlcyBub3QgY29ubmVjdGVkLlxuIiwgYXJn dltvcHRpbmQrMV0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByYyA9IGxpYnhs X2RldmljZV92ZHJtX3JlbW92ZShjdHgsIGRvbWlkLCAmdmRybSwgMCk7CisgICAgaWYgKHJjKSB7 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2aWNlX3Zkcm1fcmVtb3ZlIGZhaWxl ZC5cbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBsaWJ4bF9kZXZpY2VfdmRy bV9kaXNwb3NlKCZ2ZHJtKTsKKyAgICByZXR1cm4gcmM7Cit9CiAKIGludCBtYWluX3ZzbmRhdHRh Y2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxf Y21kdGFibGUuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKaW5kZXggYmI0MTBjYS4uZGFh MDdkNyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYworKysgYi90b29scy9s aWJ4bC94bF9jbWR0YWJsZS5jCkBAIC0zNjYsNiArMzY2LDIxIEBAIHN0cnVjdCBjbWRfc3BlYyBj bWRfdGFibGVbXSA9IHsKICAgICAgICJEZXN0cm95IGEgZG9tYWluJ3MgdmlydHVhbCBydGMgZGV2 aWNlIiwKICAgICAgICI8RG9tYWluPiA8RGV2SWQ+IiwKICAgICB9LAorICAgIHsgInZkcm0tYXR0 YWNoIiwKKyAgICAgICZtYWluX3Zkcm1hdHRhY2gsIDEsIDEsCisgICAgICAiQ3JlYXRlIGEgbmV3 IHZpcnR1YWwgcnRjIGRldmljZSIsCisgICAgICAiPERvbWFpbj4gPERldmljZT4iLAorICAgIH0s CisgICAgeyAidmRybS1saXN0IiwKKyAgICAgICZtYWluX3Zkcm1saXN0LCAwLCAwLAorICAgICAg Ikxpc3QgdmlydHVhbCBydGMgZGV2aWNlcyBmb3IgYSBkb21haW4iLAorICAgICAgIjxEb21haW4o cyk+IiwKKyAgICB9LAorICAgIHsgInZkcm0tZGV0YWNoIiwKKyAgICAgICZtYWluX3Zkcm1kZXRh Y2gsIDAsIDEsCisgICAgICAiRGVzdHJveSBhIGRvbWFpbidzIHZpcnR1YWwgcnRjIGRldmljZSIs CisgICAgICAiPERvbWFpbj4gPERldklkPiIsCisgICAgfSwKICAgICB7ICJ2c25kLWF0dGFjaCIs CiAgICAgICAmbWFpbl92c25kYXR0YWNoLCAxLCAxLAogICAgICAgIkNyZWF0ZSBhIG5ldyB2aXJ0 dWFsIGF1ZGlvIGRldmljZSIsCi0tIAoyLjguMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==