From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH v1 1/2] libxl: add PV display device driver interface Date: Wed, 5 Apr 2017 13:03:16 +0300 Message-ID: <1491386597-1103-2-git-send-email-al1img@gmail.com> References: <1491386597-1103-1-git-send-email-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvhmt-0001ei-2a for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 10:03:39 +0000 Received: by mail-lf0-f68.google.com with SMTP id v2so729121lfi.2 for ; Wed, 05 Apr 2017 03:03:37 -0700 (PDT) In-Reply-To: <1491386597-1103-1-git-send-email-al1img@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov , andr2000@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKU2ln bmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29t PgotLS0KIHRvb2xzL2xpYnhsL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogdG9v bHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICAgIHwgIDIxICsrKysKIHRvb2xzL2xpYnhs L2xpYnhsX2NyZWF0ZS5jICAgICAgICAgICB8ICAgMyArCiB0b29scy9saWJ4bC9saWJ4bF9kZXZp Y2UuYyAgICAgICAgICAgfCAyMDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog dG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAgICAgIHwgIDI0ICsrKysKIHRvb2xzL2xp YnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICB8ICAyMiArKystCiB0b29scy9saWJ4bC9saWJ4 bF90eXBlc19pbnRlcm5hbC5pZGwgfCAgIDEgKwogdG9vbHMvbGlieGwvbGlieGxfdXNiLmMgICAg ICAgICAgICAgIHwgICAyICsKIHRvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmggICAgICAgICAgICB8 ICAgNCArCiB0b29scy9saWJ4bC9saWJ4bF92ZGlzcGwuYyAgICAgICAgICAgfCAyMDkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDQ5MSBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhs L2xpYnhsX3ZkaXNwbC5jCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvTWFrZWZpbGUgYi90b29s cy9saWJ4bC9NYWtlZmlsZQppbmRleCA1NjZiNzA2Li4zYTkzMmUxIDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC9NYWtlZmlsZQorKysgYi90b29scy9saWJ4bC9NYWtlZmlsZQpAQCAtMTM4LDcgKzEz OCw3IEBAIExJQlhMX09CSlMgPSBmbGV4YXJyYXkubyBsaWJ4bC5vIGxpYnhsX2NyZWF0ZS5vIGxp YnhsX2RtLm8gbGlieGxfcGNpLm8gXAogCQkJbGlieGxfZG9tX3N1c3BlbmQubyBsaWJ4bF9kb21f c2F2ZS5vIGxpYnhsX3VzYi5vIFwKIAkJCWxpYnhsX3Z0cG0ubyBsaWJ4bF9uaWMubyBsaWJ4bF9k aXNrLm8gbGlieGxfY29uc29sZS5vIFwKIAkJCWxpYnhsX2NwdXBvb2wubyBsaWJ4bF9tZW0ubyBs aWJ4bF9zY2hlZC5vIGxpYnhsX3RtZW0ubyBcCi0JCQlsaWJ4bF9kb21haW4ubyBcCisJCQlsaWJ4 bF9kb21haW4ubyBsaWJ4bF92ZGlzcGwubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAkKExJ QlhMX09CSlMteSkKIExJQlhMX09CSlMgKz0gbGlieGxfZ2VuaWQubwogTElCWExfT0JKUyArPSBf bGlieGxfdHlwZXMubyBsaWJ4bF9mbGFzay5vIF9saWJ4bF90eXBlc19pbnRlcm5hbC5vCmRpZmYg LS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCA3 MmVjMzlkLi40ZWZmMTIxIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rv b2xzL2xpYnhsL2xpYnhsLmgKQEAgLTE4MzMsNiArMTgzMywyNyBAQCBsaWJ4bF9kZXZpY2VfdnRw bSAqbGlieGxfZGV2aWNlX3Z0cG1fbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs IGludCAqbgogaW50IGxpYnhsX2RldmljZV92dHBtX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rldmlj ZV92dHBtICp2dHBtLCBsaWJ4bF92dHBtaW5mbyAqdnRwbWluZm8pOwogCisvKiBWaXJ0dWFsIGRp c3BsYXlzICovCitpbnQgbGlieGxfZGV2aWNlX3ZkaXNwbF9hZGQobGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92 ZGlzcGwgKmRpc3BsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2Fz eW5jb3BfaG93ICphb19ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhU RVJOQUxfQ0FMTEVSU19PTkxZOworaW50IGxpYnhsX2RldmljZV92ZGlzcGxfcmVtb3ZlKGxpYnhs X2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CitpbnQgbGlieGxfZGV2 aWNlX3ZkaXNwbF9kZXN0cm95KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAq YW9faG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9D QUxMRVJTX09OTFk7CisKK2xpYnhsX2RldmljZV92ZGlzcGwgKmxpYnhsX2RldmljZV92ZGlzcGxf bGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpudW0pOwordm9pZCBsaWJ4bF9kZXZpY2Vf dmRpc3BsX2xpc3RfZnJlZShsaWJ4bF9kZXZpY2VfdmRpc3BsKiBsaXN0LCBpbnQgbnVtKTsKK2lu dCBsaWJ4bF9kZXZpY2VfdmRpc3BsX2dldGluZm8obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3Bs ICp2ZGlzcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3ZkaXNwbGlu Zm8gKnZkaXNwbGluZm8pOworCiAvKiBLZXlib2FyZCAqLwogaW50IGxpYnhsX2RldmljZV92a2Jf YWRkKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNlX3ZrYiAqdmti LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19o b3cpCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsX2NyZWF0ZS5jCmluZGV4IDI1Mzg5ZTEuLmIzNjM4M2YgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL2xpYnhsX2NyZWF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCkBA IC0xNDIyLDYgKzE0MjIsOCBAQCBvdXQ6CiAKICNkZWZpbmUgbGlieGxfZGV2aWNlX2R0ZGV2X2xp c3QgTlVMTAogI2RlZmluZSBsaWJ4bF9kZXZpY2VfZHRkZXZfY29tcGFyZSBOVUxMCisjZGVmaW5l IGxpYnhsX19kZXZpY2VfZnJvbV9kdGRldiBOVUxMCisjZGVmaW5lIGxpYnhsX19kZXZpY2VfZHRk ZXZfc2V0ZGVmYXVsdCBOVUxMCiBzdGF0aWMgREVGSU5FX0RFVklDRV9UWVBFX1NUUlVDVChkdGRl dik7CiAKIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZGV2aWNlX3R5cGVfdGJsW10g PSB7CkBAIC0xNDMyLDYgKzE0MzQsNyBAQCBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUg KmRldmljZV90eXBlX3RibFtdID0gewogICAgICZsaWJ4bF9fdXNiZGV2X2RldnR5cGUsCiAgICAg JmxpYnhsX19wY2lkZXZfZGV2dHlwZSwKICAgICAmbGlieGxfX2R0ZGV2X2RldnR5cGUsCisgICAg JmxpYnhsX192ZGlzcGxfZGV2dHlwZSwKICAgICBOVUxMCiB9OwogCmRpZmYgLS1naXQgYS90b29s cy9saWJ4bC9saWJ4bF9kZXZpY2UuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCmluZGV4 IDVlOTY2NzYuLmRlZjE4NTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5j CisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCkBAIC0xNzc2LDYgKzE3NzYsMjEyIEBA IG91dDoKICAgICByZXR1cm4gQU9fQ1JFQVRFX0ZBSUwocmMpOwogfQogCitzdGF0aWMgaW50IGRl dmljZV9hZGRfZG9tYWluX2NvbmZpZyhsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZp Y2VfdHlwZSAqZHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0 eXBlKQoreworICAgIGludCByYzsKKyAgICBsaWJ4bF9kb21haW5fY29uZmlnIGRfY29uZmlnOwor ICAgIGxpYnhsX19kb21haW5fdXNlcmRhdGFfbG9jayAqbG9jayA9IE5VTEw7CisgICAgaW50ICpu dW1fZGV2OworICAgIGludCBpOworICAgIHZvaWQgKml0ZW0gPSBOVUxMOworCisgICAgbGlieGxf ZG9tYWluX2NvbmZpZ19pbml0KCZkX2NvbmZpZyk7CisKKyAgICBsb2NrID0gbGlieGxfX2xvY2tf ZG9tYWluX3VzZXJkYXRhKGdjLCBkb21pZCk7CisgICAgaWYgKCFsb2NrKSB7CisgICAgICAgIHJj ID0gRVJST1JfTE9DS19GQUlMOyBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX19n ZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24oZ2MsIGRvbWlkLCAmZF9jb25maWcpOworICAgIGlmIChy YykgZ290byBvdXQ7CisKKyAgICBudW1fZGV2ID0gbGlieGxfX2RldmljZV90eXBlX2dldF9udW0o ZHQsICZkX2NvbmZpZyk7CisKKyAgICAvKiBDaGVjayBmb3IgZXhpc3RpbmcgZGV2aWNlICovCisg ICAgZm9yIChpID0gMDsgaSA8ICpudW1fZGV2OyBpKyspIHsKKyAgICAgICAgaWYgKGR0LT5jb21w YXJlKGxpYnhsX19kZXZpY2VfdHlwZV9nZXRfZWxlbShkdCwgJmRfY29uZmlnLCBpKSwgdHlwZSkp IHsKKyAgICAgICAgICAgIGl0ZW0gPSBsaWJ4bF9fZGV2aWNlX3R5cGVfZ2V0X2VsZW0oZHQsICZk X2NvbmZpZywgaSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWl0ZW0pIHsKKyAgICAg ICAgdm9pZCAqKmRldnM9IGxpYnhsX19kZXZpY2VfdHlwZV9nZXRfcHRyKGR0LCAmZF9jb25maWcp OworICAgICAgICAqZGV2cyA9IGxpYnhsX19yZWFsbG9jKE5PR0MsICpkZXZzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR0LT5kZXZfZWxlbV9zaXplICogKCpudW1fZGV2ICsgMSkp OworICAgICAgICBpdGVtID0gbGlieGxfX2RldmljZV90eXBlX2dldF9lbGVtKGR0LCAmZF9jb25m aWcsICpudW1fZGV2KTsKKyAgICAgICAgKCpudW1fZGV2KSsrOworICAgIH0gZWxzZSB7CisgICAg ICAgIGR0LT5kaXNwb3NlKGl0ZW0pOworICAgIH0KKworICAgIGR0LT5pbml0KGl0ZW0pOworICAg IGR0LT5jb3B5KENUWCwgaXRlbSwgdHlwZSk7CisKKyAgICByYyA9IGxpYnhsX19kbV9jaGVja19z dGFydChnYywgJmRfY29uZmlnLCBkb21pZCk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAg IHJjID0gbGlieGxfX3NldF9kb21haW5fY29uZmlndXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZp Zyk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgIHJjID0gMDsKKworb3V0OgorICAgIGlm IChsb2NrKSBsaWJ4bF9fdW5sb2NrX2RvbWFpbl91c2VyZGF0YShsb2NrKTsKKyAgICBsaWJ4bF9k b21haW5fY29uZmlnX2Rpc3Bvc2UoJmRfY29uZmlnKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0 YXRpYyBpbnQgZGV2aWNlX2FkZF94ZW5fc3RvcmUobGlieGxfX2djICpnYywgbGlieGxfX2Rldmlj ZSAqZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqYmVudHMs IGNoYXIgKipmZW50cywgY2hhciAqKnJvX2ZlbnRzKQoreworICAgIHhzX3RyYW5zYWN0aW9uX3Qg dCA9IFhCVF9OVUxMOworICAgIGludCByYzsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgcmMg PSBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fc3RhcnQoZ2MsICZ0KTsKKyAgICAgICAgaWYgKHJjKSBn b3RvIG91dDsKKworICAgICAgICBsaWJ4bF9fZGV2aWNlX2dlbmVyaWNfYWRkKGdjLCB0LCBkZXZp Y2UsIGJlbnRzLCBmZW50cywgcm9fZmVudHMpOworCisgICAgICAgIHJjID0gbGlieGxfX3hzX3Ry YW5zYWN0aW9uX2NvbW1pdChnYywgJnQpOworICAgICAgICBpZiAoIXJjKSBicmVhazsKKyAgICAg ICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSAwOworCitvdXQ6Cisg ICAgbGlieGxfX3hzX3RyYW5zYWN0aW9uX2Fib3J0KGdjLCAmdCk7CisgICAgcmV0dXJuIHJjOwor fQorCit2b2lkIGxpYnhsX19kZXZpY2VfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlw ZSAqZHQsIHZvaWQgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZp Y2UgKmFvZGV2KQoreworICAgIFNUQVRFX0FPX0dDKGFvZGV2LT5hbyk7CisgICAgbGlieGxfX2Rl dmljZSAqZGV2aWNlOworICAgIGludCByYzsKKyAgICBmbGV4YXJyYXlfdCAqZnJvbnQgPSBOVUxM OworICAgIGZsZXhhcnJheV90ICpiYWNrID0gTlVMTDsKKworICAgIHJjID0gZHQtPnNldF9kZWZh dWx0KGdjLCBkb21pZCwgdHlwZSk7CisgICAgaWYgKHJjKSBnb3RvIG91dDsKKworICAgIEdDTkVX KGRldmljZSk7CisgICAgcmMgPSBkdC0+dG9fZGV2aWNlKGdjLCBkb21pZCwgdHlwZSwgZGV2aWNl KTsKKyAgICBpZiAoIHJjICE9IDAgKSBnb3RvIG91dDsKKworICAgIHJjID0gbGlieGxfX2Rldmlj ZV9leGlzdHMoZ2MsIFhCVF9OVUxMLCBkZXZpY2UpOworICAgIGlmIChyYyA8IDApIGdvdG8gb3V0 OworICAgIGlmIChyYyA9PSAxKSB7ICAgICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0cyBpbiB4 ZW5zdG9yZSAqLworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgImRldmljZSBhbHJlYWR5IGV4 aXN0cyBpbiB4ZW5zdG9yZSIpOworICAgICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklD RV9BQ1RJT05fQUREOyAvKiBmb3IgZXJyb3IgbWVzc2FnZSAqLworICAgICAgICByYyA9IEVSUk9S X0RFVklDRV9FWElTVFM7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChhb2Rl di0+dXBkYXRlX2pzb24pIHsKKyAgICAgICAgcmMgPSBkZXZpY2VfYWRkX2RvbWFpbl9jb25maWco Z2MsIGRvbWlkLCBkdCwgdHlwZSk7CisgICAgICAgIGlmIChyYykgZ290byBvdXQ7CisgICAgfQor CisgICAgaWYgKGR0LT5zZXRfeGVuc3RvcmVfY29uZmlnKSB7CisgICAgICAgIGR0LT5zZXRfeGVu c3RvcmVfY29uZmlnKGdjLCBkb21pZCwgdHlwZSwgJmZyb250LCAmYmFjayk7CisgICAgICAgIHJj ID0gZGV2aWNlX2FkZF94ZW5fc3RvcmUoZ2MsIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgYmFjayksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXko Z2MsIGZyb250KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAg ICAgICAgaWYgKHJjKSBnb3RvIG91dDsKKyAgICB9CisKKyAgICBhb2Rldi0+ZGV2ID0gZGV2aWNl OworICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7CisgICAgbGli eGxfX3dhaXRfZGV2aWNlX2Nvbm5lY3Rpb24oZWdjLCBhb2Rldik7CisKKyAgICByYyA9IDA7CisK K291dDoKKyAgICBhb2Rldi0+cmMgPSByYzsKKyAgICBpZihyYykgYW9kZXYtPmNhbGxiYWNrKGVn YywgYW9kZXYpOworICAgIHJldHVybjsKK30KKwordm9pZCogbGlieGxfX2RldmljZV9saXN0KGNv bnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgKm51bSkKK3sKKyAgICBHQ19J TklUKGN0eCk7CisKKyAgICB2b2lkICpyID0gTlVMTDsKKyAgICB2b2lkICpsaXN0ID0gTlVMTDsK KyAgICB2b2lkICppdGVtID0gTlVMTDsKKyAgICBjaGFyICpsaWJ4bF9wYXRoOworICAgIGNoYXIg KmJlX3BhdGg7CisgICAgY2hhcioqIGRpciA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IG5kaXJz ID0gMDsKKyAgICBpbnQgcmM7CisKKyAgICAqbnVtID0gMDsKKworICAgIGxpYnhsX3BhdGggPSBH Q1NQUklOVEYoIiVzL2RldmljZS8lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9feHNfbGlieGxfcGF0aChnYywgZG9taWQpLCBkdC0+dHlwZSk7CisKKyAgICBkaXIgPSBsaWJ4 bF9feHNfZGlyZWN0b3J5KGdjLCBYQlRfTlVMTCwgbGlieGxfcGF0aCwgJm5kaXJzKTsKKworICAg IGlmIChkaXIgJiYgbmRpcnMpIHsKKyAgICAgICAgbGlzdCA9IG1hbGxvYyhkdC0+ZGV2X2VsZW1f c2l6ZSAqIG5kaXJzKTsKKyAgICAgICAgdm9pZCAqZW5kID0gKHVpbnQ4X3QqKWxpc3QgKyBuZGly cyAqIGR0LT5kZXZfZWxlbV9zaXplOworICAgICAgICBpdGVtID0gbGlzdDsKKworICAgICAgICB3 aGlsZShpdGVtIDwgZW5kKSB7CisgICAgICAgICAgICBiZV9wYXRoID0gbGlieGxfX3hzX3JlYWQo Z2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BS SU5URigiJXMvJXMvYmFja2VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcGF0aCwgKmRpcikpOworCisgICAgICAgICAgICBkdC0+aW5pdChpdGVtKTsKKwor ICAgICAgICAgICAgcmMgPSBkdC0+ZnJvbV94ZW5zdG9yZShnYywgYmVfcGF0aCwgYXRvaSgqZGly KSwgaXRlbSk7CisgICAgICAgICAgICBpZiAocmMpIGdvdG8gb3V0OworCisgICAgICAgICAgICBp dGVtID0gKHVpbnQ4X3QqKWl0ZW0gKyBkdC0+ZGV2X2VsZW1fc2l6ZTsKKyAgICAgICAgICAgICsr ZGlyOworICAgICAgICB9CisgICAgfQorCisgICAgKm51bSA9IG5kaXJzOworICAgIHIgPSBsaXN0 OworICAgIGxpc3QgPSBOVUxMOworCitvdXQ6CisKKyAgICBpZiAobGlzdCkgeworICAgICAgICAq bnVtID0gMDsKKyAgICAgICAgd2hpbGUoaXRlbSA+PSBsaXN0KSB7CisgICAgICAgICAgICBpdGVt ID0gKHVpbnQ4X3QqKWl0ZW0gLSBkdC0+ZGV2X2VsZW1fc2l6ZTsKKyAgICAgICAgICAgIGR0LT5k aXNwb3NlKGl0ZW0pOworICAgICAgICB9CisgICAgICAgIGZyZWUobGlzdCk7CisgICAgfQorCisg ICAgR0NfRlJFRTsKKworICAgIHJldHVybiByOworfQorCit2b2lkIGxpYnhsX19kZXZpY2VfbGlz dF9mcmVlKGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKmxpc3QsIGludCBudW0pCit7CisgICAgaW50IGk7CisKKyAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKKyAgICAgICAgZHQtPmRpc3Bvc2UoKHVpbnQ4 X3QqKWxpc3QgKyBpICogZHQtPmRldl9lbGVtX3NpemUpOworICAgIH0KKworICAgIGZyZWUobGlz dCk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJu YWwuaAppbmRleCAyNWNiMDhhLi5jMDdlMjgwIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTM0NzMs MTEgKzM0NzMsMTggQEAgc3RydWN0IGxpYnhsX2RldmljZV90eXBlIHsKICAgICB2b2lkICgqYWRk KShsaWJ4bF9fZWdjICosIGxpYnhsX19hbyAqLCB1aW50MzJfdCwgbGlieGxfZG9tYWluX2NvbmZp ZyAqLAogICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqKTsKICAgICB2b2lkICooKmxp c3QpKGxpYnhsX2N0eCAqLCB1aW50MzJfdCwgaW50ICopOworICAgIGludCAoKnNldF9kZWZhdWx0 KShsaWJ4bF9fZ2MgKiwgdWludDMyX3QsIHZvaWQgKik7CisgICAgaW50ICgqdG9fZGV2aWNlKShs aWJ4bF9fZ2MgKiwgdWludDMyX3QsIHZvaWQgKiwgbGlieGxfX2RldmljZSAqKTsKKyAgICB2b2lk ICgqaW5pdCkodm9pZCAqKTsKKyAgICB2b2lkICgqY29weSkobGlieGxfY3R4ICosIHZvaWQgKiwg dm9pZCAqKTsKICAgICB2b2lkICgqZGlzcG9zZSkodm9pZCAqKTsKICAgICBpbnQgKCpjb21wYXJl KSh2b2lkICosIHZvaWQgKik7CiAgICAgdm9pZCAoKm1lcmdlKShsaWJ4bF9jdHggKiwgdm9pZCAq LCB2b2lkICopOwogICAgIGludCAoKmRtX25lZWRlZCkodm9pZCAqLCB1bnNpZ25lZCk7CiAgICAg dm9pZCAoKnVwZGF0ZV9jb25maWcpKGxpYnhsX19nYyAqLCB2b2lkICosIHZvaWQgKik7CisgICAg aW50ICgqZnJvbV94ZW5zdG9yZSkobGlieGxfX2djICosIGNvbnN0IGNoYXIgKiwgdWludDMyX3Qs IHZvaWQgKik7CisgICAgdm9pZCAoKnNldF94ZW5zdG9yZV9jb25maWcpKGxpYnhsX19nYyAqLCB1 aW50MzJfdCwgdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4YXJy YXlfdCAqKiwgZmxleGFycmF5X3QgKiopOwogfTsKIAogI2RlZmluZSBERUZJTkVfREVWSUNFX1RZ UEVfU1RSVUNUX1gobmFtZSwgc25hbWUsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgIFwK QEAgLTM0ODksNiArMzQ5NiwxNCBAQCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgewogICAgICAg ICAuYWRkICAgICAgICAgICA9IGxpYnhsX19hZGRfICMjIG5hbWUgIyMgcywgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgLmxpc3QgICAgICAgICAgPSAodm9pZCAqKCopKGxp YnhsX2N0eCAqLCB1aW50MzJfdCwgaW50ICopKSAgICAgICAgICAgICBcCiAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfZGV2aWNlXyAjIyBzbmFtZSAjIyBfbGlzdCwgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAuc2V0X2RlZmF1bHQgICA9IChpbnQgKCopKGxpYnhsX19nYyAq LCB1aW50MzJfdCwgdm9pZCAqKSkgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9fZGV2aWNlXyAjIyBzbmFtZSAjIyBfc2V0ZGVmYXVsdCwgICAgICAgICAgICAg ICBcCisgICAgICAgIC50b19kZXZpY2UgICAgID0gKGludCAoKikobGlieGxfX2djICosIHVpbnQz Ml90LCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKiwgbGlieGxfX2RldmljZSAqKSkgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZGV2aWNlX2Zyb21fICMjIG5hbWUsICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5pbml0ICAgICAgICAgID0gKHZvaWQgKCop KHZvaWQgKikpbGlieGxfZGV2aWNlXyAjIyBzbmFtZSAjIyBfaW5pdCwgICAgXAorICAgICAgICAu Y29weSAgICAgICAgICA9ICh2b2lkICgqKShsaWJ4bF9jdHggKiwgdm9pZCAqLCB2b2lkICopKSAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfICMj IHNuYW1lICMjIF9jb3B5LCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC5kaXNwb3Nl ICAgICAgID0gKHZvaWQgKCopKHZvaWQgKikpbGlieGxfZGV2aWNlXyAjIyBzbmFtZSAjIyBfZGlz cG9zZSwgXAogICAgICAgICAuY29tcGFyZSAgICAgICA9IChpbnQgKCopKHZvaWQgKiwgdm9pZCAq KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9kZXZpY2VfICMjIHNuYW1lICMjIF9jb21wYXJlLCAgICAgICAgICAgICAgICAgICBc CkBAIC0zNTIzLDYgKzM1MzgsNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90 eXBlIGxpYnhsX192dHBtX2RldnR5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2Rldmlj ZV90eXBlIGxpYnhsX191c2JjdHJsX2RldnR5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhs X2RldmljZV90eXBlIGxpYnhsX191c2JkZXZfZGV2dHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3Qg bGlieGxfZGV2aWNlX3R5cGUgbGlieGxfX3BjaWRldl9kZXZ0eXBlOworZXh0ZXJuIGNvbnN0IHN0 cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4bF9fdmRpc3BsX2RldnR5cGU7CiAKIGV4dGVybiBj b25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgKmRldmljZV90eXBlX3RibFtdOwogCkBAIC00 MzM5LDYgKzQzNTUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGxpYnhsX19hY3BpX2RlZmJvb2xf dmFsKGNvbnN0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8KICAgICByZXR1cm4gbGli eGxfZGVmYm9vbF92YWwoYl9pbmZvLT5hY3BpKSAmJgogICAgICAgICAgICBsaWJ4bF9kZWZib29s X3ZhbChiX2luZm8tPnUuaHZtLmFjcGkpOwogfQorCit2b2lkIGxpYnhsX19kZXZpY2VfYWRkKGxp YnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsIHZvaWQgKnR5cGUsCisgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKK3ZvaWQqIGxpYnhsX19kZXZp Y2VfbGlzdChjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgKmR0LAorICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50ICpudW0pOwor dm9pZCBsaWJ4bF9fZGV2aWNlX2xpc3RfZnJlZShjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5 cGUgKmR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpsaXN0LCBpbnQgbnVt KTsKICNlbmRpZgogCiAvKgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs IGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCmluZGV4IDI0NzVhNGQuLmE0ZmY4MzcgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAorKysgYi90b29scy9saWJ4bC9s aWJ4bF90eXBlcy5pZGwKQEAgLTczOCw3ICs3MzgsMTQgQEAgbGlieGxfZGV2aWNlX3Z0cG0gPSBT dHJ1Y3QoImRldmljZV92dHBtIiwgWwogICAgICgiYmFja2VuZF9kb21uYW1lIiwgIHN0cmluZyks CiAgICAgKCJkZXZpZCIsICAgICAgICAgICAgbGlieGxfZGV2aWQpLAogICAgICgidXVpZCIsICAg ICAgICAgICAgIGxpYnhsX3V1aWQpLAotXSkKKyAgICBdKQorCitsaWJ4bF9kZXZpY2VfdmRpc3Bs ID0gU3RydWN0KCJkZXZpY2VfdmRpc3BsIiwgWworICAgICgiYmFja2VuZF9kb21pZCIsIGxpYnhs X2RvbWlkKSwKKyAgICAoImJhY2tlbmRfZG9tbmFtZSIsIHN0cmluZyksCisgICAgKCJkZXZpZCIs IGxpYnhsX2RldmlkKSwKKyAgICAoImJlX2FsbG9jIiwgYm9vbCksCisgICAgXSkKIAogbGlieGxf ZGV2aWNlX2NoYW5uZWwgPSBTdHJ1Y3QoImRldmljZV9jaGFubmVsIiwgWwogICAgICgiYmFja2Vu ZF9kb21pZCIsIGxpYnhsX2RvbWlkKSwKQEAgLTc1MCw3ICs3NTcsNyBAQCBsaWJ4bF9kZXZpY2Vf Y2hhbm5lbCA9IFN0cnVjdCgiZGV2aWNlX2NoYW5uZWwiLCBbCiAgICAgICAgICAgICAoInB0eSIs IE5vbmUpLAogICAgICAgICAgICAgKCJzb2NrZXQiLCBTdHJ1Y3QoTm9uZSwgWygicGF0aCIsIHN0 cmluZyldKSksCiAgICAgICAgICAgIF0pKSwKLV0pCisgICAgXSkKIAogbGlieGxfZG9tYWluX2Nv bmZpZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAoImNfaW5mbyIsIGxpYnhsX2Rv bWFpbl9jcmVhdGVfaW5mbyksCkBAIC03NjQsNiArNzcxLDcgQEAgbGlieGxfZG9tYWluX2NvbmZp ZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAoInZmYnMiLCBBcnJheShsaWJ4bF9k ZXZpY2VfdmZiLCAibnVtX3ZmYnMiKSksCiAgICAgKCJ2a2JzIiwgQXJyYXkobGlieGxfZGV2aWNl X3ZrYiwgIm51bV92a2JzIikpLAogICAgICgidnRwbXMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdnRw bSwgIm51bV92dHBtcyIpKSwKKyAgICAoInZkaXNwbHMiLCBBcnJheShsaWJ4bF9kZXZpY2VfdmRp c3BsLCAibnVtX3ZkaXNwbHMiKSksCiAgICAgIyBhIGNoYW5uZWwgbWFuaWZlc3RzIGFzIGEgY29u c29sZSB3aXRoIGEgbmFtZSwKICAgICAjIHNlZSBkb2NzL21pc2MvY2hhbm5lbHMudHh0CiAgICAg KCJjaGFubmVscyIsIEFycmF5KGxpYnhsX2RldmljZV9jaGFubmVsLCAibnVtX2NoYW5uZWxzIikp LApAQCAtODYwLDYgKzg2OCwxNiBAQCBsaWJ4bF9waHlzaW5mbyA9IFN0cnVjdCgicGh5c2luZm8i LCBbCiAgICAgKCJjYXBfaHZtX2RpcmVjdGlvIiwgYm9vbCksCiAgICAgXSwgZGlyPURJUl9PVVQp CiAKK2xpYnhsX3ZkaXNwbGluZm8gPSBTdHJ1Y3QoInZkaXNwbGluZm8iLCBbCisgICAgKCJiYWNr ZW5kIiwgc3RyaW5nKSwKKyAgICAoImJhY2tlbmRfaWQiLCB1aW50MzIpLAorICAgICgiZnJvbnRl bmQiLCBzdHJpbmcpLAorICAgICgiZnJvbnRlbmRfaWQiLCB1aW50MzIpLAorICAgICgiZGV2aWQi LCBsaWJ4bF9kZXZpZCksCisgICAgKCJzdGF0ZSIsIGludGVnZXIpLAorICAgICgiYmVfYWxsb2Mi LCBib29sKSwKKyAgICBdLCBkaXI9RElSX09VVCkKKwogIyBOVU1BIG5vZGUgY2hhcmFjdGVyaXN0 aWNzOiBzaXplIGFuZCBmcmVlIGFyZSBob3cgbXVjaCBtZW1vcnkgaXQgaGFzLCBhbmQgaG93CiAj IG11Y2ggb2YgaXQgaXMgZnJlZSwgcmVzcGVjdGl2ZWx5LiBkaXN0cyBpcyBhbiBhcnJheSBvZiBk aXN0YW5jZXMgZnJvbSB0aGlzCiAjIG5vZGUgdG8gZWFjaCBvdGhlciBub2RlLgpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsIGIvdG9vbHMvbGlieGwvbGli eGxfdHlwZXNfaW50ZXJuYWwuaWRsCmluZGV4IDgyZTVjMDcuLmNkZWY0ZDMgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzX2ludGVybmFsLmlkbAorKysgYi90b29scy9saWJ4bC9s aWJ4bF90eXBlc19pbnRlcm5hbC5pZGwKQEAgLTI1LDYgKzI1LDcgQEAgbGlieGxfX2RldmljZV9r aW5kID0gRW51bWVyYXRpb24oImRldmljZV9raW5kIiwgWwogICAgICg4LCAiVlRQTSIpLAogICAg ICg5LCAiVlVTQiIpLAogICAgICgxMCwgIlFVU0IiKSwKKyAgICAoMTEsICJWRElTUEwiKQogICAg IF0pCiAKIGxpYnhsX19jb25zb2xlX2JhY2tlbmQgPSBFbnVtZXJhdGlvbigiY29uc29sZV9iYWNr ZW5kIiwgWwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXNiLmMgYi90b29scy9saWJ4 bC9saWJ4bF91c2IuYwppbmRleCBkODk0OGQ1Li5kMWVjMjhmIDEwMDY0NAotLS0gYS90b29scy9s aWJ4bC9saWJ4bF91c2IuYworKysgYi90b29scy9saWJ4bC9saWJ4bF91c2IuYwpAQCAtMTk2OCw2 ICsxOTY4LDggQEAgdm9pZCBsaWJ4bF9kZXZpY2VfdXNiZGV2X2xpc3RfZnJlZShsaWJ4bF9kZXZp Y2VfdXNiZGV2ICpsaXN0LCBpbnQgbnIpCiBERUZJTkVfREVWSUNFX1RZUEVfU1RSVUNUKHVzYmN0 cmwsCiAgICAgLmRtX25lZWRlZCA9IGxpYnhsX2RldmljZV91c2JjdHJsX2RtX25lZWRlZAogKTsK KworI2RlZmluZSBsaWJ4bF9fZGV2aWNlX2Zyb21fdXNiZGV2IE5VTEwKIERFRklORV9ERVZJQ0Vf VFlQRV9TVFJVQ1QodXNiZGV2KTsKIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs X3V0aWxzLmggYi90b29scy9saWJ4bC9saWJ4bF91dGlscy5oCmluZGV4IDI1NzczZDguLjllNzQz ZGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKKysrIGIvdG9vbHMvbGli eGwvbGlieGxfdXRpbHMuaApAQCAtNzgsNiArNzgsMTAgQEAgaW50IGxpYnhsX2RldmlkX3RvX2Rl dmljZV92dHBtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgZGV2aWQsIGxpYnhsX2RldmljZV92dHBtICp2dHBtKTsKIGlu dCBsaWJ4bF9kZXZpZF90b19kZXZpY2VfdXNiY3RybChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldmlkLCBsaWJ4 bF9kZXZpY2VfdXNiY3RybCAqdXNiY3RybCk7CisKK2ludCBsaWJ4bF9kZXZpZF90b19kZXZpY2Vf dmRpc3BsKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBkZXZpZCwgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsKTsK KwogaW50IGxpYnhsX2N0cmxwb3J0X3RvX2RldmljZV91c2JkZXYobGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGN0 cmwsIGludCBwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf ZGV2aWNlX3VzYmRldiAqdXNiZGV2KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Zk aXNwbC5jIGIvdG9vbHMvbGlieGwvbGlieGxfdmRpc3BsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODViMjBkYgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3ZkaXNwbC5jCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2 IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLjEgb25seS4g d2l0aCB0aGUgc3BlY2lhbAorICogZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZp bGUgTElDRU5TRS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5j bHVkZSAibGlieGxfb3NkZXBzLmgiCisKKyNpbmNsdWRlICJsaWJ4bF9pbnRlcm5hbC5oIgorCitz dGF0aWMgaW50IGxpYnhsX19kZXZpY2VfdmRpc3BsX3NldGRlZmF1bHQobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BsKQoreworICAgIGludCByYzsKKworICAgIHJj ID0gbGlieGxfX3Jlc29sdmVfZG9taWQoZ2MsIHZkaXNwbC0+YmFja2VuZF9kb21uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZkaXNwbC0+YmFja2VuZF9kb21pZCk7CisKKyAg ICBpZiAodmRpc3BsLT5kZXZpZCA9PSAtMSkgeworICAgICAgICB2ZGlzcGwtPmRldmlkID0gbGli eGxfX2RldmljZV9uZXh0aWQoZ2MsIGRvbWlkLCAidmRpc3BsIik7CisgICAgfQorCisgICAgcmV0 dXJuIHJjOworfQorCitzdGF0aWMgaW50IGxpYnhsX19mcm9tX3hlbnN0b3JlX3ZkaXNwbChsaWJ4 bF9fZ2MgKmdjLCBjb25zdCBjaGFyICpiZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgZGV2aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwpCit7CisgICAgdmRpc3Bs LT5kZXZpZCA9IGRldmlkOworCisgICAgcmV0dXJuIGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9k b21pZChnYywgYmVfcGF0aCwgJnZkaXNwbC0+YmFja2VuZF9kb21pZCk7Cit9CisKK3N0YXRpYyBp bnQgbGlieGxfX2RldmljZV9mcm9tX3ZkaXNwbChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRp c3BsICp2ZGlzcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf X2RldmljZSAqZGV2aWNlKQoreworICAgZGV2aWNlLT5iYWNrZW5kX2RldmlkICAgPSB2ZGlzcGwt PmRldmlkOworICAgZGV2aWNlLT5iYWNrZW5kX2RvbWlkICAgPSB2ZGlzcGwtPmJhY2tlbmRfZG9t aWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfa2luZCAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WRElT UEw7CisgICBkZXZpY2UtPmRldmlkICAgICAgICAgICA9IHZkaXNwbC0+ZGV2aWQ7CisgICBkZXZp Y2UtPmRvbWlkICAgICAgICAgICA9IGRvbWlkOworICAgZGV2aWNlLT5raW5kICAgICAgICAgICAg PSBMSUJYTF9fREVWSUNFX0tJTkRfVkRJU1BMOworCisgICByZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgbGlieGxfX3NldF94ZW5zdG9yZV92ZGlzcGwobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZp Y2VfdmRpc3BsICp2ZGlzcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmbGV4YXJyYXlfdCAqKmZyb250LCBmbGV4YXJyYXlfdCAqKmJhY2spCit7CisgICAgKmZyb250 ID0gZmxleGFycmF5X21ha2UoZ2MsIDE2LCAxKTsKKyAgICAqYmFjayA9IGZsZXhhcnJheV9tYWtl KGdjLCAxNiwgMSk7CisKKyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCAiZnJvbnRlbmQtaWQi KTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCBHQ1NQUklOVEYoIiVkIiwgZG9taWQpKTsK KyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCAib25saW5lIik7CisgICAgZmxleGFycmF5X2Fw cGVuZCgqYmFjaywgIjEiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCAic3RhdGUiKTsK KyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCBHQ1NQUklOVEYoIiVkIiwgWGVuYnVzU3RhdGVJ bml0aWFsaXNpbmcpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKCpiYWNrLCAiaGFuZGxlIik7Cisg ICAgZmxleGFycmF5X2FwcGVuZCgqYmFjaywgR0NTUFJJTlRGKCIlZCIsIHZkaXNwbC0+ZGV2aWQp KTsKKworICAgIGZsZXhhcnJheV9hcHBlbmQoKmZyb250LCAiYmFja2VuZC1pZCIpOworICAgIGZs ZXhhcnJheV9hcHBlbmQoKmZyb250LCBHQ1NQUklOVEYoIiVkIiwgdmRpc3BsLT5iYWNrZW5kX2Rv bWlkKSk7CisgICAgZmxleGFycmF5X2FwcGVuZCgqZnJvbnQsICJzdGF0ZSIpOworICAgIGZsZXhh cnJheV9hcHBlbmQoKmZyb250LCBHQ1NQUklOVEYoIiVkIiwgWGVuYnVzU3RhdGVJbml0aWFsaXNp bmcpKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKCpmcm9udCwgImhhbmRsZSIpOworICAgIGZsZXhh cnJheV9hcHBlbmQoKmZyb250LCBHQ1NQUklOVEYoIiVkIiwgdmRpc3BsLT5kZXZpZCkpOworICAg IGZsZXhhcnJheV9hcHBlbmQoKmZyb250LCAiYmVfYWxsb2MiKTsKKyAgICBmbGV4YXJyYXlfYXBw ZW5kKCpmcm9udCwgR0NTUFJJTlRGKCIlZCIsIHZkaXNwbC0+YmVfYWxsb2MpKTsKK30KKworc3Rh dGljIHZvaWQgbGlieGxfX3VwZGF0ZV9jb25maWdfdmRpc3BsKGxpYnhsX19nYyAqZ2MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAq ZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rldmlj ZV92ZGlzcGwgKnNyYykKK3sKKyAgICBkc3QtPmRldmlkID0gc3JjLT5kZXZpZDsKKyAgICBkc3Qt PmJlX2FsbG9jID0gc3JjLT5iZV9hbGxvYzsKK30KKworc3RhdGljIGludCBsaWJ4bF9kZXZpY2Vf dmRpc3BsX2NvbXBhcmUobGlieGxfZGV2aWNlX3ZkaXNwbCAqZDEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICpkMikKK3sKKyAgICBy ZXR1cm4gQ09NUEFSRV9ERVZJRChkMSwgZDIpOworfQorCitzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2 aWNlX3ZkaXNwbF9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAq YW9kZXYpCit7CisgICAgbGlieGxfX2RldmljZV9hZGQoZWdjLCBkb21pZCwgJmxpYnhsX192ZGlz cGxfZGV2dHlwZSwgdmRpc3BsLCBhb2Rldik7Cit9CisKK2xpYnhsX2RldmljZV92ZGlzcGwgKmxp YnhsX2RldmljZV92ZGlzcGxfbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpudW0pCit7 CisgICAgcmV0dXJuIGxpYnhsX19kZXZpY2VfbGlzdCgmbGlieGxfX3ZkaXNwbF9kZXZ0eXBlLCBj dHgsIGRvbWlkLCBudW0pOworfQorCit2b2lkIGxpYnhsX2RldmljZV92ZGlzcGxfbGlzdF9mcmVl KGxpYnhsX2RldmljZV92ZGlzcGwqIGxpc3QsIGludCBudW0pCit7CisgICAgbGlieGxfX2Rldmlj ZV9saXN0X2ZyZWUoJmxpYnhsX192ZGlzcGxfZGV2dHlwZSwgbGlzdCwgbnVtKTsKK30KKworaW50 IGxpYnhsX2RldmljZV92ZGlzcGxfZ2V0aW5mbyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGwg KnZkaXNwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdmRpc3BsaW5m byAqaW5mbykKK3sKKyAgICBHQ19JTklUKGN0eCk7CisgICAgY2hhciAqbGlieGxfcGF0aCwgKmRv bXBhdGgsICpkZXZwYXRoOworICAgIGNoYXIgKnZhbDsKKyAgICBpbnQgcmM7CisKKyAgICBsaWJ4 bF92ZGlzcGxpbmZvX2luaXQoaW5mbyk7CisgICAgZG9tcGF0aCA9IGxpYnhsX194c19nZXRfZG9t cGF0aChnYywgZG9taWQpOworICAgIGluZm8tPmRldmlkID0gdmRpc3BsLT5kZXZpZDsKKworICAg IGRldnBhdGggPSBHQ1NQUklOVEYoIiVzL2RldmljZS92ZGlzcGwvJWQiLCBkb21wYXRoLCBpbmZv LT5kZXZpZCk7CisgICAgbGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3ZkaXNwbC8l ZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywg ZG9taWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+ZGV2aWQpOworICAgIGlu Zm8tPmJhY2tlbmQgPSB4c19yZWFkKGN0eC0+eHNoLCBYQlRfTlVMTCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2JhY2tlbmQiLCBsaWJ4bF9wYXRoKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoIWluZm8tPmJhY2tlbmQpIHsg cmMgPSBFUlJPUl9GQUlMOyBnb3RvIG91dDsgfQorCisgICAgcmMgPSBsaWJ4bF9fYmFja2VuZHBh dGhfcGFyc2VfZG9taWQoZ2MsIGluZm8tPmJhY2tlbmQsICZpbmZvLT5iYWNrZW5kX2lkKTsKKyAg ICBpZiAocmMpIHsgZ290byBvdXQ7IH0KKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBY QlRfTlVMTCwgR0NTUFJJTlRGKCIlcy9zdGF0ZSIsIGRldnBhdGgpKTsKKyAgICBpbmZvLT5zdGF0 ZSA9IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKKworICAgIGluZm8tPmZyb250 ZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaW5mby0+ZnJvbnRlbmRfaWQgPSBkb21pZDsK KworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIlcy9i ZV9hbGxvYyIsIGxpYnhsX3BhdGgpKTsKKyAgICBpbmZvLT5iZV9hbGxvYyA9IHZhbCA/IHN0cnRv dWwodmFsLCBOVUxMLCAxMCkgOiAwOworCisgICAgcmMgPSAwOworCitvdXQ6CisgICAgIEdDX0ZS RUU7CisgICAgIHJldHVybiByYzsKK30KKworaW50IGxpYnhsX2RldmlkX3RvX2RldmljZV92ZGlz cGwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGRldmlkLCBsaWJ4bF9kZXZpY2VfdmRpc3BsICp2ZGlzcGwpCit7Cisg ICAgbGlieGxfZGV2aWNlX3ZkaXNwbCAqdmRpc3BscyA9IE5VTEw7CisgICAgaW50IG4sIGk7Cisg ICAgaW50IHJjOworCisgICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9pbml0KHZkaXNwbCk7CisKKyAg ICB2ZGlzcGxzID0gbGlieGxfZGV2aWNlX3ZkaXNwbF9saXN0KGN0eCwgZG9taWQsICZuKTsKKwor ICAgIGlmICghdmRpc3BscykgeyByYyA9IEVSUk9SX05PVEZPVU5EOyBnb3RvIG91dDsgfQorCisg ICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBpZiAoZGV2aWQgPT0gdmRpc3Bs c1tpXS5kZXZpZCkgeworICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZkaXNwbF9jb3B5KGN0eCwg dmRpc3BsLCAmdmRpc3Bsc1tpXSk7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjID0gRVJST1JfTk9URk9VTkQ7CisK K291dDoKKworICAgIGlmICh2ZGlzcGxzKSB7CisgICAgICAgIGxpYnhsX2RldmljZV92ZGlzcGxf bGlzdF9mcmVlKHZkaXNwbHMsIG4pOworICAgIH0KKyAgICByZXR1cm4gcmM7Cit9CisKK0xJQlhM X0RFRklORV9ERVZJQ0VfQUREKHZkaXNwbCkKK3N0YXRpYyBMSUJYTF9ERUZJTkVfREVWSUNFU19B REQodmRpc3BsKQorTElCWExfREVGSU5FX0RFVklDRV9SRU1PVkUodmRpc3BsKQorCitERUZJTkVf REVWSUNFX1RZUEVfU1RSVUNUKHZkaXNwbCwKKyAgICAudXBkYXRlX2NvbmZpZyA9ICh2b2lkICgq KShsaWJ4bF9fZ2MgKiwgdm9pZCAqLCB2b2lkICopKQorICAgICAgICAgICAgICAgICAgICAgbGli eGxfX3VwZGF0ZV9jb25maWdfdmRpc3BsLAorICAgIC5mcm9tX3hlbnN0b3JlID0gKGludCAoKiko bGlieGxfX2djICosIGNvbnN0IGNoYXIgKiwgdWludDMyX3QsIHZvaWQgKikpCisgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9fZnJvbV94ZW5zdG9yZV92ZGlzcGwsCisgICAgLnNldF94ZW5zdG9y ZV9jb25maWcgPSAodm9pZCAoKikobGlieGxfX2djICosIHVpbnQzMl90LCB2b2lkICosCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBmbGV4YXJyYXlfdCAqKiwgZmxleGFycmF5X3QgKiopKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3NldF94ZW5zdG9yZV92ZGlzcGwKKyk7 CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWJhc2ljLW9mZnNl dDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuNy40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==