From mboxrd@z Thu Jan 1 00:00:00 1970 From: Iurii Mykhalskyi Subject: [PATCH RFC 1/6] libxl: implementation of PV rtc device interface Date: Thu, 19 May 2016 17:37:30 +0300 Message-ID: <1463668655-16778-2-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 UFYgcnRjIGRldmljZSBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgaW4gbGlieGwgYW5kIHhsIHdp dGgKZnVsbCBzdXBwb3J0IGZvciBkZXZpY2UgY29udHJvbC4gTm8gSlNPTiBwYXJzZXIgZm9yIGRv bWFpbgpjb25maWd1cmF0aW9uIHlldC4KClNpZ25lZC1vZmYtYnk6IEl1cmlpIE15a2hhbHNreWkg PGl1cmlpLm15a2hhbHNreWlAZ2xvYmFsbG9naWMuY29tPgpTaWduZWQtb2ZmLWJ5OiBHbGliIEdv bHVieXRza3lpIDxnbGliLmdvbHVieXRza3lpQGdsb2JhbGxvZ2ljLmNvbT4KU2lnbmVkLW9mZi1i eTogSXVyaWkgS29ub3ZhbGVua28gPGl1cmlpLmtvbm92YWxlbmtvQGdsb2JhbGxvZ2ljLmNvbT4K LS0tCiB0b29scy9saWJ4bC9saWJ4bC5jICAgICAgICAgICAgICAgICAgfCAyODcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIHRvb2xzL2xpYnhsL2xpYnhsLmggICAgICAgICAg ICAgICAgICB8ICAxNyArKysKIHRvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jICAgICAgICAgICB8 ICAzOSArKysrLQogdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMgICAgICAgICAgIHwgICAyICsK IHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggICAgICAgICB8ICAxOSArKy0KIHRvb2xzL2xp YnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICB8ICAxOSArKysKIHRvb2xzL2xpYnhsL2xpYnhs X3R5cGVzX2ludGVybmFsLmlkbCB8ICAgMSArCiB0b29scy9saWJ4bC9saWJ4bF91dGlscy5oICAg ICAgICAgICAgfCAgIDMgKwogdG9vbHMvbGlieGwveGwuaCAgICAgICAgICAgICAgICAgICAgIHwg ICAzICsKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgICAgICAgICAgICB8IDE2MSArKysrKysr KysrKysrKysrKysrLQogdG9vbHMvbGlieGwveGxfY21kdGFibGUuYyAgICAgICAgICAgIHwgIDE1 ICsrCiAxMSBmaWxlcyBjaGFuZ2VkLCA1NTggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5jIGIvdG9vbHMvbGlieGwvbGlieGwuYwpp bmRleCBhYzUwYmRhLi4wOWM0YmM3IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5jCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKQEAgLTIzMjMsNiArMjMyMywyNzcgQEAgaW50IGxpYnhs X2RldmlkX3RvX2RldmljZV92dHBtKGxpYnhsX2N0eCAqY3R4LAogICAgIHJldHVybiByYzsKIH0K IAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworaW50IGxpYnhsX19kZXZpY2VfdnJ0Y19zZXRk ZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV92cnRjICp2cnRjKQoreworICAgIGlu dCByYzsKKworICAgIHJjID0gbGlieGxfX3Jlc29sdmVfZG9taWQoZ2MsIHZydGMtPmJhY2tlbmRf ZG9tbmFtZSwgJnZydGMtPmJhY2tlbmRfZG9taWQpOworCisgICAgcmV0dXJuIHJjOworfQorCitz dGF0aWMgaW50IGxpYnhsX19kZXZpY2VfZnJvbV92cnRjKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90 IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0YywgbGlieGxfX2RldmljZSAqZGV2aWNlKQor eworICAgZGV2aWNlLT5iYWNrZW5kX2RldmlkICAgPSB2cnRjLT5kZXZpZDsKKyAgIGRldmljZS0+ YmFja2VuZF9kb21pZCAgID0gdnJ0Yy0+YmFja2VuZF9kb21pZDsKKyAgIGRldmljZS0+YmFja2Vu ZF9raW5kICAgID0gTElCWExfX0RFVklDRV9LSU5EX1ZSVEM7CisgICBkZXZpY2UtPmRldmlkICAg ICAgICAgICA9IHZydGMtPmRldmlkOworICAgZGV2aWNlLT5kb21pZCAgICAgICAgICAgPSBkb21p ZDsKKyAgIGRldmljZS0+a2luZCAgICAgICAgICAgID0gTElCWExfX0RFVklDRV9LSU5EX1ZSVEM7 CisKKyAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdnJ0Y19mcm9t X3hzX2JlKGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqYmVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0YykKK3sKKyAgICBjb25zdCBjaGFyICp0 bXA7CisgICAgaW50IHJjOworCisgICAgbGlieGxfZGV2aWNlX3ZydGNfaW5pdCh2cnRjKTsKKwor ICAgIHRtcCA9IFJFQURfQkFDS0VORChnYywgImRldmljZS1pZCIpOworICAgIGlmICh0bXApCisg ICAgICAgIHZydGMtPmRldmlkID0gYXRvaSh0bXApOworICAgIGVsc2UKKyAgICAgICAgdnJ0Yy0+ ZGV2aWQgPSAwOworCisgICAgcmMgPSAwOworIG91dDoKKyAgICByZXR1cm4gcmM7Cit9CisKK2lu dCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdnJ0YyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aWQsIGxpYnhsX2Rldmlj ZV92cnRjICp2cnRjKQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBjaGFyICpkb21wYXRoLCAq cGF0aDsKKyAgICBpbnQgcmMgPSBFUlJPUl9GQUlMOworCisgICAgbGlieGxfZGV2aWNlX3ZydGNf aW5pdCh2cnRjKTsKKyAgICBkb21wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21p ZCk7CisgICAgaWYgKCFkb21wYXRoKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHBhdGggPSBs aWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX19zcHJpbnRmKGdjLCAiJXMvZGV2aWNlL3ZydGMvJWQvYmFja2VuZCIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbXBhdGgsIGRldmlkKSk7CisgICAgaWYg KCFwYXRoKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gbGlieGxfX2RldmljZV92cnRj X2Zyb21feHNfYmUoZ2MsIHBhdGgsIHZydGMpOworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAg ICByYyA9IDA7CitvdXQ6CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3ZvaWQg bGlieGxfX2RldmljZV92cnRjX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLCBs aWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0YywgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7CisgICAg U1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKyAgICBmbGV4YXJyYXlfdCAqZnJvbnQ7CisgICAgZmxl eGFycmF5X3QgKmJhY2s7CisgICAgbGlieGxfX2RldmljZSAqZGV2aWNlOworICAgIGludCByYzsK KyAgICB4c190cmFuc2FjdGlvbl90IHQgPSBYQlRfTlVMTDsKKyAgICBsaWJ4bF9kb21haW5fY29u ZmlnIGRfY29uZmlnOworICAgIGxpYnhsX2RldmljZV92cnRjIHZydGNfc2F2ZWQ7CisgICAgbGli eGxfX2RvbWFpbl91c2VyZGF0YV9sb2NrICpsb2NrID0gTlVMTDsKKworICAgIGxpYnhsX2RvbWFp bl9jb25maWdfaW5pdCgmZF9jb25maWcpOworICAgIGxpYnhsX2RldmljZV92cnRjX2luaXQoJnZy dGNfc2F2ZWQpOworICAgIGxpYnhsX2RldmljZV92cnRjX2NvcHkoQ1RYLCAmdnJ0Y19zYXZlZCwg dnJ0Yyk7CisKKyAgICByYyA9IGxpYnhsX19kZXZpY2VfdnJ0Y19zZXRkZWZhdWx0KGdjLCB2cnRj KTsKKyAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShn YywgMTYsIDEpOworICAgIGJhY2sgPSBmbGV4YXJyYXlfbWFrZShnYywgMzIsIDEpOworCisgICAg aWYgKCh2cnRjLT5kZXZpZCA9IGxpYnhsX19kZXZpY2VfbmV4dGlkKGdjLCBkb21pZCwgInZydGMi KSkgPCAwKSB7CisgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgR0NORVcoZGV2aWNlKTsKKyAgICByYyA9IGxpYnhsX19kZXZpY2VfZnJvbV92 cnRjKGdjLCBkb21pZCwgdnJ0YywgZGV2aWNlKTsKKyAgICBpZiAoIHJjICE9IDAgKSBnb3RvIG91 dDsKKworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImRldmljZS1pZCIpOworICAgIGZsZXhh cnJheV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKCIlZCIsIHZydGMtPmRldmlkKSk7CisgICAgZmxl eGFycmF5X2FwcGVuZChiYWNrLCAiZnJvbnRlbmQtaWQiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5k KGJhY2ssIEdDU1BSSU5URigiJWQiLCBkb21pZCkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFj aywgImRldmljZSIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgdnJ0Yy0+ZGV2aWNlKTsK KyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICJvbmxpbmUiKTsKKyAgICBmbGV4YXJyYXlfYXBw ZW5kKGJhY2ssICIxIik7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAic3RhdGUiKTsKKyAg ICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URigiJWQiLCAxKSk7CisKKyAgICBmbGV4 YXJyYXlfYXBwZW5kKGZyb250LCAiZGV2aWNlLWlkIik7CisgICAgZmxleGFycmF5X2FwcGVuZChm cm9udCwgR0NTUFJJTlRGKCIlZCIsIHZydGMtPmRldmlkKSk7CisgICAgZmxleGFycmF5X2FwcGVu ZChmcm9udCwgImJhY2tlbmQtaWQiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCBHQ1NQ UklOVEYoIiVkIiwgdnJ0Yy0+YmFja2VuZF9kb21pZCkpOworICAgIGZsZXhhcnJheV9hcHBlbmQo ZnJvbnQsICJzdGF0ZSIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigi JWQiLCAxKSk7CisKKyAgICBpZiAoYW9kZXYtPnVwZGF0ZV9qc29uKSB7CisgICAgICAgIGxvY2sg PSBsaWJ4bF9fbG9ja19kb21haW5fdXNlcmRhdGEoZ2MsIGRvbWlkKTsKKyAgICAgICAgaWYgKCFs b2NrKSB7CisgICAgICAgICAgICByYyA9IEVSUk9SX0xPQ0tfRkFJTDsKKyAgICAgICAgICAgIGdv dG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZ2V0X2RvbWFpbl9jb25m aWd1cmF0aW9uKGdjLCBkb21pZCwgJmRfY29uZmlnKTsKKyAgICAgICAgTE9HKElORk8sICJhb2Rl diB1cGRhdGVzIEpTT04sIGxpYnhsX19nZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24gcmV0dXJuZWQg JWQiLCByYyk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICAgICAgREVWSUNFX0FE RCh2cnRjLCB2cnRjcywgZG9taWQsICZ2cnRjX3NhdmVkLCBDT01QQVJFX0RFVklELCAmZF9jb25m aWcpOworICAgIH0KKworICAgIGZvciAoOzspIHsKKyAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJh bnNhY3Rpb25fc3RhcnQoZ2MsICZ0KTsKKyAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAg ICAgICByYyA9IGxpYnhsX19kZXZpY2VfZXhpc3RzKGdjLCB0LCBkZXZpY2UpOworICAgICAgICBp ZiAocmMgPCAwKSBnb3RvIG91dDsKKyAgICAgICAgaWYgKHJjID09IDEpIHsgICAgICAgICAgICAg IC8qIGFscmVhZHkgZXhpc3RzIGluIHhlbnN0b3JlICovCisgICAgICAgICAgICBMT0coRVJST1Is ICJkZXZpY2UgYWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUiKTsKKyAgICAgICAgICAgIGFvZGV2 LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBtZXNzYWdl ICovCisgICAgICAgICAgICByYyA9IEVSUk9SX0RFVklDRV9FWElTVFM7CisgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhb2Rldi0+dXBkYXRlX2pzb24pIHsK KyAgICAgICAgICAgIHJjID0gbGlieGxfX3NldF9kb21haW5fY29uZmlndXJhdGlvbihnYywgZG9t aWQsICZkX2NvbmZpZyk7CisgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworICAgICAgICB9 CisKKyAgICAgICAgbGlieGxfX2RldmljZV9nZW5lcmljX2FkZChnYywgdCwgZGV2aWNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19rdnNfb2ZfZmxleGFycmF5 KGdjLCBiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJhY2stPmNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgZnJvbnQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbnQt PmNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAg ICAgICByYyA9IGxpYnhsX194c190cmFuc2FjdGlvbl9jb21taXQoZ2MsICZ0KTsKKworICAgICAg ICBpZiAoIXJjKSBicmVhazsKKyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7CisgICAgfQor CisgICAgYW9kZXYtPmRldiA9IGRldmljZTsKKyAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RF VklDRV9BQ1RJT05fQUREOworICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9uKGVnYywg YW9kZXYpOworCisgICAgcmMgPSAwOworb3V0OgorICAgIGxpYnhsX194c190cmFuc2FjdGlvbl9h Ym9ydChnYywgJnQpOworICAgIGlmIChsb2NrKSBsaWJ4bF9fdW5sb2NrX2RvbWFpbl91c2VyZGF0 YShsb2NrKTsKKyAgICBsaWJ4bF9kZXZpY2VfdnJ0Y19kaXNwb3NlKCZ2cnRjX3NhdmVkKTsKKyAg ICBsaWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJmRfY29uZmlnKTsKKyAgICBhb2Rldi0+cmMg PSByYzsKKyAgICBpZihyYykgYW9kZXYtPmNhbGxiYWNrKGVnYywgYW9kZXYpOworICAgIHJldHVy bjsKKworfQorCitsaWJ4bF9kZXZpY2VfdnJ0YyAqbGlieGxfZGV2aWNlX3ZydGNfbGlzdChsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCAqbnVtKQoreworICAgIEdDX0lOSVQoY3R4 KTsKKworICAgIGxpYnhsX2RldmljZV92cnRjKiB2cnRjcyA9IE5VTEw7CisgICAgY2hhciogZmVf cGF0aCA9IE5VTEw7CisgICAgY2hhcioqIGRpciA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IG5k aXJzID0gMDsKKworICAgICpudW0gPSAwOworCisgICAgZmVfcGF0aCA9IGxpYnhsX19zcHJpbnRm KGdjLCAiJXMvZGV2aWNlL3ZydGMiLCBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2MsIGRvbWlkKSk7 CisgICAgZGlyID0gbGlieGxfX3hzX2RpcmVjdG9yeShnYywgWEJUX05VTEwsIGZlX3BhdGgsICZu ZGlycyk7CisgICAgaWYgKGRpciAmJiBuZGlycykgeworICAgICAgIHZydGNzID0gbWFsbG9jKHNp emVvZigqdnJ0Y3MpICogbmRpcnMpOworICAgICAgIGxpYnhsX2RldmljZV92cnRjKiB2cnRjOwor ICAgICAgIGxpYnhsX2RldmljZV92cnRjKiBlbmQgPSB2cnRjcyArIG5kaXJzOworICAgICAgIGZv cih2cnRjID0gdnJ0Y3M7IHZydGMgPCBlbmQ7ICsrdnJ0YywgKytkaXIpIHsKKyAgICAgICAgICBj aGFyKiB0bXA7CisKKyAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnJ0Y19pbml0KHZydGMpOworCisg ICAgICAgICAgdnJ0Yy0+ZGV2aWQgPSBhdG9pKCpkaXIpOworCisgICAgICAgICAgdG1wID0gbGli eGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMv JXMvYmFja2VuZC1pZCIsCisgICAgICAgICAgICAgICAgICAgZmVfcGF0aCwgKmRpcikpOworICAg ICAgICAgIHZydGMtPmJhY2tlbmRfZG9taWQgPSBhdG9pKHRtcCk7CisgICAgICAgfQorICAgIH0K KyAgICAqbnVtID0gbmRpcnM7CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiB2cnRjczsKK30K KworaW50IGxpYnhsX2RldmljZV92cnRjX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0YywgbGlieGxfdnJ0Y2luZm8gKnZydGNpbmZv KQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBjaGFyICpkb21wYXRoLCAqdnJ0Y3BhdGg7Cisg ICAgY2hhciAqdmFsOworICAgIGludCByYyA9IDA7CisKKyAgICBsaWJ4bF92cnRjaW5mb19pbml0 KHZydGNpbmZvKTsKKyAgICBkb21wYXRoID0gbGlieGxfX3hzX2dldF9kb21wYXRoKGdjLCBkb21p ZCk7CisgICAgdnJ0Y2luZm8tPmRldmlkID0gdnJ0Yy0+ZGV2aWQ7CisKKyAgICB2cnRjcGF0aCA9 IEdDU1BSSU5URigiJXMvZGV2aWNlL3ZydGMvJWQiLCBkb21wYXRoLCB2cnRjaW5mby0+ZGV2aWQp OworICAgIHZydGNpbmZvLT5iYWNrZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsCisg ICAgICAgICAgR0NTUFJJTlRGKCIlcy9iYWNrZW5kIiwgdnJ0Y3BhdGgpLCBOVUxMKTsKKworICAg IGlmICghdnJ0Y2luZm8tPmJhY2tlbmQpIHsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisg ICAgaWYoIWxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgdnJ0Y2luZm8tPmJhY2tlbmQpKSB7 CisgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgdmFsID0gbGlieGxfX3hzX3JlYWQoZ2Ms IFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFja2VuZC1pZCIsIHZydGNwYXRo KSk7CisgICAgdnJ0Y2luZm8tPmJhY2tlbmRfaWQgPSB2YWwgPyBzdHJ0b3VsKHZhbCwgTlVMTCwg MTApIDogLTE7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAg ICAgICAgR0NTUFJJTlRGKCIlcy9zdGF0ZSIsIHZydGNwYXRoKSk7CisgICAgdnJ0Y2luZm8tPnN0 YXRlID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdmFsID0gbGli eGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvZXZlbnQt Y2hhbm5lbCIsIHZydGNwYXRoKSk7CisgICAgdnJ0Y2luZm8tPmV2dGNoID0gdmFsID8gc3RydG91 bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdmFsID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhC VF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5URigiJXMvcmluZy1yZWYiLCB2cnRjcGF0aCkpOwor ICAgIHZydGNpbmZvLT5ycmVmID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOwor CisgICAgdnJ0Y2luZm8tPmZyb250ZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsCisg ICAgICAgICAgR0NTUFJJTlRGKCIlcy9mcm9udGVuZCIsIHZydGNpbmZvLT5iYWNrZW5kKSwgTlVM TCk7CisKKyAgICB2YWwgPSBsaWJ4bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAgICAgICAg R0NTUFJJTlRGKCIlcy9mcm9udGVuZC1pZCIsIHZydGNpbmZvLT5iYWNrZW5kKSk7CisgICAgdnJ0 Y2luZm8tPmZyb250ZW5kX2lkID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOwor CisgICAgZ290byBleGl0OworZXJyOgorICAgIHJjID0gRVJST1JfRkFJTDsKK2V4aXQ6CisgICAg R0NfRlJFRTsKKyAgICByZXR1cm4gcmM7Cit9CisKKwogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCkBAIC00MTMxLDEyICs0NDAyLDE0IEBAIG91dDoKICAqIGxpYnhsX2RldmljZV9kaXNrX2Rl c3Ryb3kKICAqIGxpYnhsX2RldmljZV9uaWNfcmVtb3ZlCiAgKiBsaWJ4bF9kZXZpY2VfbmljX2Rl c3Ryb3kKLSAqIGxpYnhsX2RldmljZV92dHBtX3JlbW92ZQotICogbGlieGxfZGV2aWNlX3Z0cG1f ZGVzdHJveQogICogbGlieGxfZGV2aWNlX3ZrYl9yZW1vdmUKICAqIGxpYnhsX2RldmljZV92a2Jf ZGVzdHJveQogICogbGlieGxfZGV2aWNlX3ZmYl9yZW1vdmUKICAqIGxpYnhsX2RldmljZV92ZmJf ZGVzdHJveQorICogbGlieGxfZGV2aWNlX3Z0cG1fcmVtb3ZlCisgKiBsaWJ4bF9kZXZpY2VfdnRw bV9kZXN0cm95CisgKiBsaWJ4bF9kZXZpY2VfdnJ0Y19yZW1vdmUKKyAqIGxpYnhsX2RldmljZV92 cnRjX2Rlc3Ryb3kKICAqLwogI2RlZmluZSBERUZJTkVfREVWSUNFX1JFTU9WRSh0eXBlLCByZW1v dmVkZXN0cm95LCBmKSAgICAgICAgICAgICAgICAgICAgXAogICAgIGludCBsaWJ4bF9kZXZpY2Vf IyN0eXBlIyNfIyNyZW1vdmVkZXN0cm95KGxpYnhsX2N0eCAqY3R4LCAgICAgICAgICAgXApAQCAt NDE4OCw2ICs0NDYxLDEwIEBAIERFRklORV9ERVZJQ0VfUkVNT1ZFKHZmYiwgZGVzdHJveSwgMSkK IERFRklORV9ERVZJQ0VfUkVNT1ZFKHZ0cG0sIHJlbW92ZSwgMCkKIERFRklORV9ERVZJQ0VfUkVN T1ZFKHZ0cG0sIGRlc3Ryb3ksIDEpCiAKKy8qIHZydGMgKi8KK0RFRklORV9ERVZJQ0VfUkVNT1ZF KHZydGMsIHJlbW92ZSwgMCkKK0RFRklORV9ERVZJQ0VfUkVNT1ZFKHZydGMsIGRlc3Ryb3ksIDEp CisKIC8qIGNoYW5uZWwvY29uc29sZSBob3R1bnBsdWcgaXMgbm90IGltcGxlbWVudGVkLiBUaGVy ZSBhcmUgMiBwb3NzaWJpbGl0aWVzOgogICogMS4gYWRkIHN1cHBvcnQgZm9yIHNlY29uZGFyeSBj b25zb2xlcyB0byB4ZW5jb25zb2xlZAogICogMi4gZHluYW1pY2FsbHkgYWRkL3JlbW92ZSBxZW11 IGNoYXJkZXZzIHZpYSBxbXAgbWVzc2FnZXMuICovCkBAIC00MjAxLDYgKzQ0NzgsNyBAQCBERUZJ TkVfREVWSUNFX1JFTU9WRSh2dHBtLCBkZXN0cm95LCAxKQogICogbGlieGxfZGV2aWNlX2Rpc2tf YWRkCiAgKiBsaWJ4bF9kZXZpY2VfbmljX2FkZAogICogbGlieGxfZGV2aWNlX3Z0cG1fYWRkCisg KiBsaWJ4bF9kZXZpY2VfdnJ0Y19hZGQKICAqLwogCiAjZGVmaW5lIERFRklORV9ERVZJQ0VfQURE KHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00MjMy LDYgKzQ1MTAsOSBAQCBERUZJTkVfREVWSUNFX0FERChuaWMpCiAvKiB2dHBtICovCiBERUZJTkVf REVWSUNFX0FERCh2dHBtKQogCisvKiB2cnRjICovCitERUZJTkVfREVWSUNFX0FERCh2cnRjKQor CiAjdW5kZWYgREVGSU5FX0RFVklDRV9BREQKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAg LTY3NDcsNiArNzAyOCw4IEBAIGludCBsaWJ4bF9yZXRyaWV2ZV9kb21haW5fY29uZmlndXJhdGlv bihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAKICAgICBNRVJHRSh2dHBtLCB2dHBt cywgQ09NUEFSRV9ERVZJRCwge30pOwogCisgICAgTUVSR0UodnJ0YywgdnJ0Y3MsIENPTVBBUkVf REVWSUQsIHt9KTsKKwogICAgIE1FUkdFKHBjaSwgcGNpZGV2cywgQ09NUEFSRV9QQ0ksIHt9KTsK IAogICAgIC8qIFRha2UgY2FyZSBvZiByZW1vdmFibGUgZGV2aWNlLiBXZSBtYWludGFpbiBpbnZh cmlhbnQgaW4gdGhlCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGli eGwvbGlieGwuaAppbmRleCBmYTVhZWRkLi45MjQzYjg2IDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAgLTE0MzUsNiArMTQzNSwyMyBA QCBsaWJ4bF9kZXZpY2VfdnRwbSAqbGlieGxfZGV2aWNlX3Z0cG1fbGlzdChsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsIGludCAqbgogaW50IGxpYnhsX2RldmljZV92dHBtX2dldGluZm8o bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLCBsaWJ4bF92dHBtaW5mbyAqdnRwbWluZm8p OwogCisvKiBSVEMgKi8KK2ludCBsaWJ4bF9kZXZpY2VfdnJ0Y19hZGQobGlieGxfY3R4ICpjdHgs IHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0YywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZOworaW50IGxpYnhsX2Rl dmljZV92cnRjX3JlbW92ZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92cnRjICp2cnRjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAqYW9faG93KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7Citp bnQgbGlieGxfZGV2aWNlX3ZydGNfZGVzdHJveShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0 YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93 ICphb19ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9D QUxMRVJTX09OTFk7CisKK2xpYnhsX2RldmljZV92cnRjICpsaWJ4bF9kZXZpY2VfdnJ0Y19saXN0 KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pOworaW50IGxpYnhsX2Rl dmljZV92cnRjX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZydGMgKnZydGMsIGxpYnhsX3Zy dGNpbmZvICp2cnRjaW5mbyk7CisKIC8qIEtleWJvYXJkICovCiBpbnQgbGlieGxfZGV2aWNlX3Zr Yl9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmtiICp2 a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFv X2hvdykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGli eGwvbGlieGxfY3JlYXRlLmMKaW5kZXggMWMwNTc5Yy4uMTIwNmMzNCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMK QEAgLTczNCw2ICs3MzQsOCBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfbGF1bmNoX2RtKGxpYnhs X19lZ2MgKmVnYywgbGlieGxfX211bHRpZGV2ICphb2RldnMsCiAKIHN0YXRpYyB2b2lkIGRvbWNy ZWF0ZV9hdHRhY2hfdnRwbXMobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fbXVsdGlkZXYgKm11bHRp ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0KTsKK3N0YXRp YyB2b2lkIGRvbWNyZWF0ZV9hdHRhY2hfdnJ0Y3MobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fbXVs dGlkZXYgKm11bHRpZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg cmV0KTsKIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9hdHRhY2hfcGNpKGxpYnhsX19lZ2MgKmVnYywg bGlieGxfX211bHRpZGV2ICphb2RldnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcmV0KTsKIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9hdHRhY2hfZHRkZXYobGlieGxfX2Vn YyAqZWdjLApAQCAtMTM5MiwxMiArMTM5NCw0NSBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0 YWNoX3Z0cG1zKGxpYnhsX19lZ2MgKmVnYywKICAgIGlmIChkX2NvbmZpZy0+bnVtX3Z0cG1zID4g MCkgewogICAgICAgIC8qIEF0dGFjaCB2dHBtcyAqLwogICAgICAgIGxpYnhsX19tdWx0aWRldl9i ZWdpbihhbywgJmRjcy0+bXVsdGlkZXYpOwotICAgICAgIGRjcy0+bXVsdGlkZXYuY2FsbGJhY2sg PSBkb21jcmVhdGVfYXR0YWNoX3BjaTsKKyAgICAgICBkY3MtPm11bHRpZGV2LmNhbGxiYWNrID0g ZG9tY3JlYXRlX2F0dGFjaF92cnRjczsKICAgICAgICBsaWJ4bF9fYWRkX3Z0cG1zKGVnYywgYW8s IGRvbWlkLCBkX2NvbmZpZywgJmRjcy0+bXVsdGlkZXYpOwogICAgICAgIGxpYnhsX19tdWx0aWRl dl9wcmVwYXJlZChlZ2MsICZkY3MtPm11bHRpZGV2LCAwKTsKICAgICAgICByZXR1cm47CiAgICB9 CiAKKyAgIGRvbWNyZWF0ZV9hdHRhY2hfdnJ0Y3MoZWdjLCBtdWx0aWRldiwgMCk7CisgICByZXR1 cm47CisKK2Vycm9yX291dDoKKyAgIGFzc2VydChyZXQpOworICAgZG9tY3JlYXRlX2NvbXBsZXRl KGVnYywgZGNzLCByZXQpOworfQorCitzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX3ZydGNz KGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX211bHRpZGV2ICptdWx0aWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHJldCkKK3sKKyAgIGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlICpkY3MgPSBDT05U QUlORVJfT0YobXVsdGlkZXYsICpkY3MsIG11bHRpZGV2KTsKKyAgIFNUQVRFX0FPX0dDKGRjcy0+ YW8pOworICAgaW50IGRvbWlkID0gZGNzLT5ndWVzdF9kb21pZDsKKworICAgbGlieGxfZG9tYWlu X2NvbmZpZyogY29uc3QgZF9jb25maWcgPSBkY3MtPmd1ZXN0X2NvbmZpZzsKKworICAgaWYocmV0 KSB7CisgICAgICAgTE9HKEVSUk9SLCAidW5hYmxlIHRvIGFkZCB2dHBtIGRldmljZXMiKTsKKyAg ICAgICBnb3RvIGVycm9yX291dDsKKyAgIH0KKworICAgIC8qIFBsdWcgdnJ0YyBkZXZpY2VzICov CisgICBpZiAoZF9jb25maWctPm51bV92cnRjcyA+IDApIHsKKyAgICAgICAvKiBBdHRhY2ggdnJ0 Y3MgKi8KKyAgICAgICBsaWJ4bF9fbXVsdGlkZXZfYmVnaW4oYW8sICZkY3MtPm11bHRpZGV2KTsK KyAgICAgICBkY3MtPm11bHRpZGV2LmNhbGxiYWNrID0gZG9tY3JlYXRlX2F0dGFjaF9wY2k7Cisg ICAgICAgbGlieGxfX2FkZF92cnRjcyhlZ2MsIGFvLCBkb21pZCwgZF9jb25maWcsICZkY3MtPm11 bHRpZGV2KTsKKyAgICAgICBsaWJ4bF9fbXVsdGlkZXZfcHJlcGFyZWQoZWdjLCAmZGNzLT5tdWx0 aWRldiwgMCk7CisgICAgICAgcmV0dXJuOworICAgfQorCiAgICBkb21jcmVhdGVfYXR0YWNoX3Bj aShlZ2MsIG11bHRpZGV2LCAwKTsKICAgIHJldHVybjsKIApAQCAtMTQxOSw3ICsxNDU0LDcgQEAg c3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0dGFjaF9wY2kobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9f bXVsdGlkZXYgKm11bHRpZGV2LAogICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmNvbnN0IGRfY29u ZmlnID0gZGNzLT5ndWVzdF9jb25maWc7CiAKICAgICBpZiAocmV0KSB7Ci0gICAgICAgIExPRyhF UlJPUiwgInVuYWJsZSB0byBhZGQgdnRwbSBkZXZpY2VzIik7CisgICAgICAgIExPRyhFUlJPUiwg InVuYWJsZSB0byBhZGQgdnJ0YyBkZXZpY2VzIik7CiAgICAgICAgIGdvdG8gZXJyb3Jfb3V0Owog ICAgIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMgYi90b29scy9s aWJ4bC9saWJ4bF9kZXZpY2UuYwppbmRleCA4YmI1ZTkzLi43MmYwOWEwIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2Uu YwpAQCAtNTQ0LDYgKzU0NCw3IEBAIHZvaWQgbGlieGxfX211bHRpZGV2X3ByZXBhcmVkKGxpYnhs X19lZ2MgKmVnYywKICAqIGxpYnhsX19hZGRfZGlza3MKICAqIGxpYnhsX19hZGRfbmljcwogICog bGlieGxfX2FkZF92dHBtcworICogbGlieGxfX2FkZF92cnRjcwogICovCiAKICNkZWZpbmUgREVG SU5FX0RFVklDRVNfQUREKHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKQEAgLTU2Myw2ICs1NjQsNyBAQCB2b2lkIGxpYnhsX19tdWx0aWRldl9wcmVwYXJlZChs aWJ4bF9fZWdjICplZ2MsCiBERUZJTkVfREVWSUNFU19BREQoZGlzaykKIERFRklORV9ERVZJQ0VT X0FERChuaWMpCiBERUZJTkVfREVWSUNFU19BREQodnRwbSkKK0RFRklORV9ERVZJQ0VTX0FERCh2 cnRjKQogCiAjdW5kZWYgREVGSU5FX0RFVklDRVNfQURECiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCmluZGV4 IDViMGI1MGEuLjJhNDIzYjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApAQCAtNDc2LDcgKzQ3Niw4IEBA IHR5cGVkZWYgc3RydWN0IHsKICNkZWZpbmUgUUVNVV9CQUNLRU5EKGRldikgKFwKICAgICAoZGV2 KS0+YmFja2VuZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9RRElTSyB8fCBcCiAgICAgKGRl diktPmJhY2tlbmRfa2luZCA9PSBMSUJYTF9fREVWSUNFX0tJTkRfVkZCIHx8IFwKLSAgICAoZGV2 KS0+YmFja2VuZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9WS0JEKQorICAgIChkZXYpLT5i YWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZLQkQgfHwgXAorICAgIChkZXYpLT5i YWNrZW5kX2tpbmQgPT0gTElCWExfX0RFVklDRV9LSU5EX1ZSVEMpCiAKICNkZWZpbmUgWENfUENJ X0JERiAgICAgICAgICAgICAiMHgleCwgMHgleCwgMHgleCwgMHgleCIKICNkZWZpbmUgUENJX0RF VkZOKHNsb3QsIGZ1bmMpICAgKCgoKHNsb3QpICYgMHgxZikgPDwgMykgfCAoKGZ1bmMpICYgMHgw NykpCkBAIC0xMTg2LDYgKzExODcsNyBAQCBfaGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tf c2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLAogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV9uaWNf c2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfbmljICpuaWMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlkKTsKIF9oaWRk ZW4gaW50IGxpYnhsX19kZXZpY2VfdnRwbV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhs X2RldmljZV92dHBtICp2dHBtKTsKK19oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfdnJ0Y19zZXRk ZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV92cnRjICp2cnRjKTsKIF9oaWRkZW4g aW50IGxpYnhsX19kZXZpY2VfdmZiX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2 aWNlX3ZmYiAqdmZiKTsKIF9oaWRkZW4gaW50IGxpYnhsX19kZXZpY2VfdmtiX3NldGRlZmF1bHQo bGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3ZrYiAqdmtiKTsKIF9oaWRkZW4gaW50IGxpYnhs X19kZXZpY2VfcGNpX3NldGRlZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3BjaSAq cGNpKTsKQEAgLTI1NDksNiArMjU1MSw4IEBAIHN0cnVjdCBsaWJ4bF9fbXVsdGlkZXYgewogICog eGVuc3RvcmUgZW50cnkgYWZ0ZXJ3YXJkcy4gV2UgaGF2ZSBib3RoIEpTT04gYW5kIHhlbnN0b3Jl IGVudHJ5LAogICogaXQncyBhIHZhbGlkIHN0YXRlLgogICovCisKKy8qIEFPIG9wZXJhdGlvbiB0 byBjb25uZWN0IGEgZGlzayBkZXZpY2UgKi8KIF9oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX2Rp c2tfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfZGlzayAqZGlzaywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKQEAgLTI1 NTgsOSArMjU2MiwxNSBAQCBfaGlkZGVuIHZvaWQgbGlieGxfX2RldmljZV9uaWNfYWRkKGxpYnhs X19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX2RldmljZV9uaWMgKm5pYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpOwogCisvKiBBTyBvcGVyYXRpb24gdG8g Y29ubmVjdCBhIHRwbSBkZXZpY2UgKi8KIF9oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNlX3Z0cG1f YWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNlICphb2Rldik7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsK KworLyogQU8gb3BlcmF0aW9uIHRvIGNvbm5lY3QgYW4gcnRjIGRldmljZSAqLworX2hpZGRlbiB2 b2lkIGxpYnhsX19kZXZpY2VfdnJ0Y19hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92cnRj ICp2cnRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2Rl dmljZSAqYW9kZXYpOwogCiAvKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBjb25uZWN0IGEgdmtiIGRl dmljZSAqLwogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92a2JfYWRkKGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLApAQCAtMzI3OCw2ICszMjg4LDkgQEAgX2hpZGRlbiB2b2lkIGxpYnhs X19hZGRfdnRwbXMobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fYW8gKmFvLCB1aW50MzJfdCBkb21p ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9j b25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqbXVs dGlkZXYpOwogCitfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF92cnRjcyhsaWJ4bF9fZWdjICplZ2Ms IGxpYnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0aWRldik7CiAvKi0tLS0tIGRldmljZSBtb2Rl bCBjcmVhdGlvbiAtLS0tLSovCiAKIC8qIEZpcnN0IGxheWVyOyB3cmFwcyBsaWJ4bF9fc3Bhd25f c3Bhd24uICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29s cy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggY2QxMjExNy4uMjdhNzUwYyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5 cGVzLmlkbApAQCAtNTQ0LDYgKzU0NCwxMyBAQCBsaWJ4bF9kZXZpY2VfdmtiID0gU3RydWN0KCJk ZXZpY2VfdmtiIiwgWwogICAgICgiZGV2aWQiLCBsaWJ4bF9kZXZpZCksCiAgICAgXSkKIAorbGli eGxfZGV2aWNlX3ZydGMgPSBTdHJ1Y3QoImRldmljZV92cnRjIiwgWworICAgICgiYmFja2VuZF9k b21pZCIsIGxpYnhsX2RvbWlkKSwKKyAgICAoImJhY2tlbmRfZG9tbmFtZSIsIHN0cmluZyksCisg ICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwKKyAgICAoImRldmljZSIsIHN0cmluZyksCisgICAg XSkKKwogbGlieGxfZGV2aWNlX2Rpc2sgPSBTdHJ1Y3QoImRldmljZV9kaXNrIiwgWwogICAgICgi YmFja2VuZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKICAgICAoImJhY2tlbmRfZG9tbmFtZSIsIHN0 cmluZyksCkBAIC02MzEsNiArNjM4LDcgQEAgbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0cnVjdCgi ZG9tYWluX2NvbmZpZyIsIFsKICAgICAoInZmYnMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdmZiLCAi bnVtX3ZmYnMiKSksCiAgICAgKCJ2a2JzIiwgQXJyYXkobGlieGxfZGV2aWNlX3ZrYiwgIm51bV92 a2JzIikpLAogICAgICgidnRwbXMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdnRwbSwgIm51bV92dHBt cyIpKSwKKyAgICAoInZydGNzIiwgQXJyYXkobGlieGxfZGV2aWNlX3ZydGMsICJudW1fdnJ0Y3Mi KSksCiAgICAgIyBhIGNoYW5uZWwgbWFuaWZlc3RzIGFzIGEgY29uc29sZSB3aXRoIGEgbmFtZSwK ICAgICAjIHNlZSBkb2NzL21pc2MvY2hhbm5lbHMudHh0CiAgICAgKCJjaGFubmVscyIsIEFycmF5 KGxpYnhsX2RldmljZV9jaGFubmVsLCAibnVtX2NoYW5uZWxzIikpLApAQCAtNjc2LDYgKzY4NCwx NyBAQCBsaWJ4bF92dHBtaW5mbyA9IFN0cnVjdCgidnRwbWluZm8iLCBbCiAgICAgKCJ1dWlkIiwg bGlieGxfdXVpZCksCiAgICAgXSwgZGlyPURJUl9PVVQpCiAKK2xpYnhsX3ZydGNpbmZvID0gU3Ry dWN0KCJ2cnRjaW5mbyIsIFsKKyAgICAoImJhY2tlbmQiLCBzdHJpbmcpLAorICAgICgiYmFja2Vu ZF9pZCIsIHVpbnQzMiksCisgICAgKCJmcm9udGVuZCIsIHN0cmluZyksCisgICAgKCJmcm9udGVu ZF9pZCIsIHVpbnQzMiksCisgICAgKCJkZXZpZCIsIGxpYnhsX2RldmlkKSwKKyAgICAoInN0YXRl IiwgaW50ZWdlciksCisgICAgKCJldnRjaCIsIGludGVnZXIpLAorICAgICgicnJlZiIsIGludGVn ZXIpLAorICAgIF0sIGRpcj1ESVJfT1VUKQorCiBsaWJ4bF92Y3B1aW5mbyA9IFN0cnVjdCgidmNw dWluZm8iLCBbCiAgICAgKCJ2Y3B1aWQiLCB1aW50MzIpLAogICAgICgiY3B1IiwgdWludDMyKSwK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbCBiL3Rvb2xz L2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAppbmRleCA1ZTU1Njg1Li43NjRlZmI4IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRlcm5hbC5pZGwKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsCkBAIC0yMiw2ICsyMiw3IEBAIGxpYnhs X19kZXZpY2Vfa2luZCA9IEVudW1lcmF0aW9uKCJkZXZpY2Vfa2luZCIsIFsKICAgICAoNiwgIlZL QkQiKSwKICAgICAoNywgIkNPTlNPTEUiKSwKICAgICAoOCwgIlZUUE0iKSwKKyAgICAoOSwgIlZS VEMiKSwKICAgICBdKQogCiBsaWJ4bF9fY29uc29sZV9iYWNrZW5kID0gRW51bWVyYXRpb24oImNv bnNvbGVfYmFja2VuZCIsIFsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgg Yi90b29scy9saWJ4bC9saWJ4bF91dGlscy5oCmluZGV4IDMzOWViZGYuLmQxYjgyNWMgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf dXRpbHMuaApAQCAtNzcsNiArNzcsOSBAQCBpbnQgbGlieGxfdXVpZF90b19kZXZpY2VfdnRwbShs aWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiBpbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNl X3Z0cG0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pOwogCitpbnQg bGlieGxfZGV2aWRfdG9fZGV2aWNlX3ZydGMobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNl X3ZydGMgKnZydGMpOworCiBpbnQgbGlieGxfYml0bWFwX2FsbG9jKGxpYnhsX2N0eCAqY3R4LCBs aWJ4bF9iaXRtYXAgKmJpdG1hcCwgaW50IG5fYml0cyk7CiAgICAgLyogQWxsb2NhdGVkIGJpbWFw IGlzIGZyb20gbWFsbG9jLCBsaWJ4bF9iaXRtYXBfZGlzcG9zZSgpIHRvIGJlCiAgICAgICogY2Fs bGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB3aGVuIGRvbmUuICovCmRpZmYgLS1naXQgYS90b29scy9s aWJ4bC94bC5oIGIvdG9vbHMvbGlieGwveGwuaAppbmRleCAxM2JjY2JhLi4zZDQ2ZWZiIDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC94bC5oCisrKyBiL3Rvb2xzL2xpYnhsL3hsLmgKQEAgLTgyLDYg KzgyLDkgQEAgaW50IG1haW5fY2hhbm5lbGxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGlu dCBtYWluX2Jsb2NrYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9ibG9j a2xpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX2Jsb2NrZGV0YWNoKGludCBh cmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl92cnRjYXR0YWNoKGludCBhcmdjLCBjaGFyICoq YXJndik7CitpbnQgbWFpbl92cnRjbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1h aW5fdnJ0Y2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdnRwbWF0dGFj aChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fdnRwbWxpc3QoaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKIGludCBtYWluX3Z0cG1kZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2Nt ZGltcGwuYwppbmRleCA2M2E2YjE3Li43NzcwMWUwIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94 bF9jbWRpbXBsLmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCkBAIC0xMjYyLDcgKzEy NjIsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdf c291cmNlLAogICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICBsb25nIGwsIHZjcHVzID0gMDsKICAg ICBYTFVfQ29uZmlnICpjb25maWc7Ci0gICAgWExVX0NvbmZpZ0xpc3QgKmNwdXMsICp2YmRzLCAq bmljcywgKnBjaXMsICpjdmZicywgKmNwdWlkcywgKnZ0cG1zOworICAgIFhMVV9Db25maWdMaXN0 ICpjcHVzLCAqdmJkcywgKm5pY3MsICpwY2lzLCAqY3ZmYnMsICpjcHVpZHMsICp2dHBtcywgKnZy dGNzOwogICAgIFhMVV9Db25maWdMaXN0ICpjaGFubmVscywgKmlvcG9ydHMsICppcnFzLCAqaW9t ZW0sICp2aXJpZGlhbiwgKmR0ZGV2czsKICAgICBpbnQgbnVtX2lvcG9ydHMsIG51bV9pcnFzLCBu dW1faW9tZW0sIG51bV9jcHVzLCBudW1fdmlyaWRpYW47CiAgICAgaW50IHBjaV9wb3dlcl9tZ210 ID0gMDsKQEAgLTE4NDQsNiArMTg0NCw1NCBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdfZGF0 YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg KCF4bHVfY2ZnX2dldF9saXN0KGNvbmZpZywgInZydGMiLCAmdnJ0Y3MsIDAsIDApKSB7CisgICAg ICAgIGRfY29uZmlnLT5udW1fdnJ0Y3MgPSAwOworICAgICAgICBkX2NvbmZpZy0+dnJ0Y3MgPSBO VUxMOworICAgICAgICB3aGlsZSAoKGJ1ZiA9IHhsdV9jZmdfZ2V0X2xpc3RpdGVtKHZydGNzLCBk X2NvbmZpZy0+bnVtX3ZydGNzKSkgIT0gTlVMTCkgeworICAgICAgICAgICAgbGlieGxfZGV2aWNl X3ZydGMgKnZydGM7CisgICAgICAgICAgICBsaWJ4bF9zdHJpbmdfbGlzdCBwYWlyczsKKyAgICAg ICAgICAgIGNoYXIgKnBhdGggPSBOVUxMOworICAgICAgICAgICAgaW50IGxlbjsKKworICAgICAg ICAgICAgdnJ0YyA9IEFSUkFZX0VYVEVORF9JTklUKGRfY29uZmlnLT52cnRjcywgZF9jb25maWct Pm51bV92cnRjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9k ZXZpY2VfdnJ0Y19pbml0KTsKKworICAgICAgICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3RyaW5n X2xpc3QoYnVmLCAiLCIsICZwYWlycyk7CisgICAgICAgICAgICBsZW4gPSBsaWJ4bF9zdHJpbmdf bGlzdF9sZW5ndGgoJnBhaXJzKTsKKworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsg aSsrKSB7CisgICAgICAgICAgICAgICAgY2hhciAqa2V5LCAqa2V5X3VudHJpbW1lZCwgKnZhbHVl LCAqdmFsdWVfdW50cmltbWVkOworICAgICAgICAgICAgICAgIGludCByYzsKKyAgICAgICAgICAg ICAgICByYyA9IHNwbGl0X3N0cmluZ19pbnRvX3BhaXIocGFpcnNbaV0sICI9IiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleV91bnRyaW1tZWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZV91bnRyaW1tZWQp OworICAgICAgICAgICAgICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIHBhcnNlIHZydGMgY29uZmlndXJhdGlvbjogJXMiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzW2ldKTsKKyAgICAgICAgICAgICAgICAg ICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdHJpbShpc3Nw YWNlLCBrZXlfdW50cmltbWVkLCAma2V5KTsKKyAgICAgICAgICAgICAgICB0cmltKGlzc3BhY2Us IHZhbHVlX3VudHJpbW1lZCwgJnZhbHVlKTsKKworICAgICAgICAgICAgICAgIGlmICghc3RyY21w KGtleSwgImJhY2tlbmRpZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHZydGMtPmJhY2tlbmRf ZG9taWQgPSBhdG9pKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAo a2V5LCAiYmFja2VuZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vfc3RyaW5nKCZ2 cnRjLT5iYWNrZW5kX2RvbW5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KCFzdHJjbXAoa2V5LCAiZGV2aWQiKSkgeworICAgICAgICAgICAgICAgICAgICB2cnRjLT5kZXZp ZCA9IGF0b2kodmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXks ICJkZXZpY2UiKSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3N0cmluZygmdnJ0Yy0+ ZGV2aWNlLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZyZWUo a2V5KTsKKyAgICAgICAgICAgICAgICBmcmVlKGtleV91bnRyaW1tZWQpOworICAgICAgICAgICAg ICAgIGZyZWUodmFsdWUpOworICAgICAgICAgICAgICAgIGZyZWUodmFsdWVfdW50cmltbWVkKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpYnhsX3N0cmluZ19saXN0X2Rpc3Bvc2UoJnBh aXJzKTsKKyAgICAgICAgICAgIGZyZWUocGF0aCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBp ZiAoIXhsdV9jZmdfZ2V0X2xpc3QgKGNvbmZpZywgImNoYW5uZWwiLCAmY2hhbm5lbHMsIDAsIDAp KSB7CiAgICAgICAgIGRfY29uZmlnLT5udW1fY2hhbm5lbHMgPSAwOwogICAgICAgICBkX2NvbmZp Zy0+Y2hhbm5lbHMgPSBOVUxMOwpAQCAtNjczNSw2ICs2NzgzLDExNyBAQCBpbnQgbWFpbl9ibG9j a2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQg bWFpbl92cnRjYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKworICAgIGludCBvcHQ7 CisgICAgdWludDMyX3QgZmVfZG9taWQ7CisgICAgbGlieGxfZGV2aWNlX3ZydGMgdnJ0YzsKKyAg ICAvKiAgWExVX0NvbmZpZyAqY29uZmlnID0gMDsgKi8KKworICAgIFNXSVRDSF9GT1JFQUNIX09Q VChvcHQsICIiLCBOVUxMLCAidnJ0Yy1hdHRhY2giLCAyKSB7CisgICAgICAgIC8qIE5vIG9wdGlv bnMgKi8KKyAgICB9CisKKyAgICBpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChj dHgsIGFyZ3Zbb3B0aW5kXSwgJmZlX2RvbWlkKSA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRl cnIsICIlcyBpcyBhbiBpbnZhbGlkIGRvbWFpbiBpZGVudGlmaWVyXG4iLCBhcmd2W29wdGluZF0p OworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgb3B0aW5kKys7CisKKyAgICBpZiAob3B0 aW5kIDwgYXJnYykgeworICAgICAgICByZXBsYWNlX3N0cmluZygmdnJ0Yy5kZXZpY2UsIGFyZ3Zb b3B0aW5kXSk7CisgICAgfQorICAgIG9wdGluZCsrOworCisvKiBUT0RPOiBmaXggdGhpcyB0ZW1w b3JhcnkgaGFyZGNvZGUgKi8KKyAgICB2cnRjLmJhY2tlbmRfZG9tbmFtZSA9ICJEb21haW4tRCI7 CisgICAgdnJ0Yy5iYWNrZW5kX2RvbWlkID0gMTsKKworICAgIGlmIChkcnlydW5fb25seSkgewor ICAgICAgICBjaGFyICpqc29uID0gbGlieGxfZGV2aWNlX3ZydGNfdG9fanNvbihjdHgsICZ2cnRj KTsKKyAgICAgICAgcHJpbnRmKCJ2cnRjOiAlc1xuIiwganNvbik7CisgICAgICAgIGZyZWUoanNv bik7CisgICAgICAgIGlmIChmZXJyb3Ioc3Rkb3V0KSB8fCBmZmx1c2goc3Rkb3V0KSkgeyBwZXJy b3IoInN0ZG91dCIpOyBleGl0KC0xKTsgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg ICBpZiAobGlieGxfZGV2aWNlX3ZydGNfYWRkKGN0eCwgZmVfZG9taWQsICZ2cnRjLCAwKSkgewor ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV92cnRjX2FkZCBmYWlsZWQuXG4i KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBt YWluX3ZydGNsaXN0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgb3B0OworCWludCBp LCBuYjsKKwlsaWJ4bF9kZXZpY2VfdnJ0YyAqdnJ0Y3M7CisJbGlieGxfdnJ0Y2luZm8gdnJ0Y2lu Zm87CisKKwlTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInZydGMtbGlzdCIsIDEp IHsKKwkJLyogTm8gb3B0aW9ucyAqLworCX0KKworCS8qIHZydGNpbmZvLnV1aWQgc2hvdWxkIGJl IG91dHB1dHRlZCB0b28gKi8KKwlwcmludGYoIiUtNXMgJS0zcyAlLTZzICUtNXMgJS02cyAlLThz ICUtNDBzICUtNDBzXG4iLAorCQkJIlZkZXYiLCAiQkUiLCAiaGFuZGxlIiwgInN0YXRlIiwgImV2 dC1jaCIsICJyaW5nLXJlZiIsICJCRS1wYXRoIiwgIkZFLXBhdGgiKTsKKwlmb3IgKGFyZ3YgKz0g b3B0aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7IC0tYXJnYywgKythcmd2KSB7CisJCXVp bnQzMl90IGRvbWlkOworCQlpZiAobGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21pZChjdHgs ICphcmd2LCAmZG9taWQpIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyBpcyBhbiBpbnZh bGlkIGRvbWFpbiBpZGVudGlmaWVyXG4iLCAqYXJndik7CisJCQljb250aW51ZTsKKwkJfQorCQl2 cnRjcyA9IGxpYnhsX2RldmljZV92cnRjX2xpc3QoY3R4LCBkb21pZCwgJm5iKTsKKwkJaWYgKCF2 cnRjcykgeworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChpPTA7IGk8bmI7IGkrKykgeworCQkJ aWYgKCFsaWJ4bF9kZXZpY2VfdnJ0Y19nZXRpbmZvKGN0eCwgZG9taWQsICZ2cnRjc1tpXSwgJnZy dGNpbmZvKSkgeworCQkJCS8qICAgICAgVmRldiBCRSAgIGhkbCAgc3QgICBldmNoIHJyZWYgQkUt cGF0aCBGRS1wYXRoIFVVSUQgKi8KKwkJCQlwcmludGYoIiUtNWQgJS0zZCAlLTZkICUtNWQgJS02 ZCAlLThkICUtNDBzICUtNDBzXG4iLAorCQkJCQkJdnJ0Y2luZm8uZGV2aWQsIHZydGNpbmZvLmJh Y2tlbmRfaWQsIHZydGNpbmZvLmZyb250ZW5kX2lkLAorCQkJCQkJdnJ0Y2luZm8uc3RhdGUsIHZy dGNpbmZvLmV2dGNoLCB2cnRjaW5mby5ycmVmLCB2cnRjaW5mby5iYWNrZW5kLAorCQkJCQkJdnJ0 Y2luZm8uZnJvbnRlbmQpOworCQkJCWxpYnhsX3ZydGNpbmZvX2Rpc3Bvc2UoJnZydGNpbmZvKTsK KwkJCX0KKwkJCWxpYnhsX2RldmljZV92cnRjX2Rpc3Bvc2UoJnZydGNzW2ldKTsKKwkJfQorCQlm cmVlKHZydGNzKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluX3ZydGNkZXRhY2goaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHVpbnQzMl90IGRvbWlkLCBkZXZpZDsKKyAgICBp bnQgb3B0LCByYyA9IDA7CisgICAgbGlieGxfZGV2aWNlX3ZydGMgdnJ0YzsKKworICAgIFNXSVRD SF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAidnJ0Yy1kZXRhY2giLCAyKSB7CisgICAgICAg IC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisKKyAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFyZ3Zb b3B0aW5kXSk7CisgICAgZGV2aWQgPSBhdG9pKGFyZ3Zbb3B0aW5kKzFdKTsKKworICAgIGlmIChs aWJ4bF9kZXZpZF90b19kZXZpY2VfdnJ0YyhjdHgsIGRvbWlkLCBkZXZpZCwgJnZydGMpKSB7Cisg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IERldmljZSAlcyBub3QgY29ubmVjdGVkLlxu IiwgYXJndltvcHRpbmQrMV0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByYyA9 IGxpYnhsX2RldmljZV92cnRjX3JlbW92ZShjdHgsIGRvbWlkLCAmdnJ0YywgMCk7CisgICAgaWYg KHJjKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2aWNlX3ZydGNfcmVtb3Zl IGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBsaWJ4bF9kZXZp Y2VfdnJ0Y19kaXNwb3NlKCZ2cnRjKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBtYWluX3Z0 cG1hdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogICAgIGludCBvcHQ7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUu YwppbmRleCAwMDcxZjEyLi44Yjg5NzFlIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWR0 YWJsZS5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKQEAgLTM1MSw2ICszNTEsMjEg QEAgc3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIkRlc3Ryb3kgYSBkb21h aW4ncyB2aXJ0dWFsIGJsb2NrIGRldmljZSIsCiAgICAgICAiPERvbWFpbj4gPERldklkPiIsCiAg ICAgfSwKKyAgICB7ICJ2cnRjLWF0dGFjaCIsCisgICAgICAmbWFpbl92cnRjYXR0YWNoLCAxLCAx LAorICAgICAgIkNyZWF0ZSBhIG5ldyB2aXJ0dWFsIHJ0YyBkZXZpY2UiLAorICAgICAgIjxEb21h aW4+IDxEZXZpY2U+IiwKKyAgICB9LAorICAgIHsgInZydGMtbGlzdCIsCisgICAgICAmbWFpbl92 cnRjbGlzdCwgMCwgMCwKKyAgICAgICJMaXN0IHZpcnR1YWwgcnRjIGRldmljZXMgZm9yIGEgZG9t YWluIiwKKyAgICAgICI8RG9tYWluKHMpPiIsCisgICAgfSwKKyAgICB7ICJ2cnRjLWRldGFjaCIs CisgICAgICAmbWFpbl92cnRjZGV0YWNoLCAwLCAxLAorICAgICAgIkRlc3Ryb3kgYSBkb21haW4n cyB2aXJ0dWFsIHJ0YyBkZXZpY2UiLAorICAgICAgIjxEb21haW4+IDxEZXZJZD4iLAorICAgIH0s CiAgICAgeyAidnRwbS1hdHRhY2giLAogICAgICAgJm1haW5fdnRwbWF0dGFjaCwgMSwgMSwKICAg ICAgICJDcmVhdGUgYSBuZXcgdmlydHVhbCBUUE0gZGV2aWNlIiwKLS0gCjIuOC4yCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK