From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH 4/6] libxl: split libxl vtpm code into one source Date: Tue, 12 Jul 2016 17:30:42 +0200 Message-ID: <1468337444-24108-5-git-send-email-jgross@suse.com> References: <1468337444-24108-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468337444-24108-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Juergen Gross , wei.liu2@citrix.com, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org UHV0IGFsbCB2dHBtIHJlbGF0ZWQgc3R1ZmYgb2YgbGlieGwgaW50byBhIGRlZGljYXRlZCBzb3Vy Y2UgZmlsZS4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4K LS0tCiB0b29scy9saWJ4bC9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHRvb2xzL2xpYnhsL2xp YnhsLmMgICAgICAgICAgfCAzMDIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggfCAgIDEgLQogdG9vbHMvbGlieGwvbGlieGxf dXRpbHMuYyAgICB8ICA0MyAtLS0tLQogdG9vbHMvbGlieGwvbGlieGxfdnRwbS5jICAgICB8IDM2 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNo YW5nZWQsIDM2NyBpbnNlcnRpb25zKCspLCAzNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgdG9vbHMvbGlieGwvbGlieGxfdnRwbS5jCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv TWFrZWZpbGUgYi90b29scy9saWJ4bC9NYWtlZmlsZQppbmRleCA5ZmVlNzUyLi44NmMxMWJmIDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9NYWtlZmlsZQorKysgYi90b29scy9saWJ4bC9NYWtlZmls ZQpAQCAtMTE1LDYgKzExNSw3IEBAIExJQlhMX09CSlMgPSBmbGV4YXJyYXkubyBsaWJ4bC5vIGxp YnhsX2NyZWF0ZS5vIGxpYnhsX2RtLm8gbGlieGxfcGNpLm8gXAogCQkJbGlieGxfc2F2ZV9jYWxs b3V0Lm8gX2xpYnhsX3NhdmVfbXNnc19jYWxsb3V0Lm8gXAogCQkJbGlieGxfcW1wLm8gbGlieGxf ZXZlbnQubyBsaWJ4bF9mb3JrLm8gXAogCQkJbGlieGxfZG9tX3N1c3BlbmQubyBsaWJ4bF9kb21f c2F2ZS5vIGxpYnhsX3B2dXNiLm8gXAorCQkJbGlieGxfdnRwbS5vIFwKICAgICAgICAgICAgICAg ICAgICAgICAgICQoTElCWExfT0JKUy15KQogTElCWExfT0JKUyArPSBsaWJ4bF9nZW5pZC5vCiBM SUJYTF9PQkpTICs9IF9saWJ4bF90eXBlcy5vIGxpYnhsX2ZsYXNrLm8gX2xpYnhsX3R5cGVzX2lu dGVybmFsLm8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9s aWJ4bC5jCmluZGV4IDEyYmMwZTEuLjdhZGE0YTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuYwpAQCAtMjAzMSwyOTIgKzIwMzEsNiBAQCBp bnQgbGlieGxfX3Jlc29sdmVfZG9taWQobGlieGxfX2djICpnYywgY29uc3QgY2hhciAqbmFtZSwg dWludDMyX3QgKmRvbWlkKQogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotaW50IGxpYnhs X19kZXZpY2VfdnRwbV9zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX2RldmljZV92dHBt ICp2dHBtKQotewotICAgIGludCByYzsKLSAgICBpZiAobGlieGxfdXVpZF9pc19uaWwoJnZ0cG0t PnV1aWQpKSB7Ci0gICAgICAgIGxpYnhsX3V1aWRfZ2VuZXJhdGUoJnZ0cG0tPnV1aWQpOwotICAg IH0KLSAgICByYyA9IGxpYnhsX19yZXNvbHZlX2RvbWlkKGdjLCB2dHBtLT5iYWNrZW5kX2RvbW5h bWUsICZ2dHBtLT5iYWNrZW5kX2RvbWlkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBp bnQgbGlieGxfX2RldmljZV9mcm9tX3Z0cG0obGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2 dHBtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZGV2aWNlICpk ZXZpY2UpCi17Ci0gICBkZXZpY2UtPmJhY2tlbmRfZGV2aWQgICA9IHZ0cG0tPmRldmlkOwotICAg ZGV2aWNlLT5iYWNrZW5kX2RvbWlkICAgPSB2dHBtLT5iYWNrZW5kX2RvbWlkOwotICAgZGV2aWNl LT5iYWNrZW5kX2tpbmQgICAgPSBMSUJYTF9fREVWSUNFX0tJTkRfVlRQTTsKLSAgIGRldmljZS0+ ZGV2aWQgICAgICAgICAgID0gdnRwbS0+ZGV2aWQ7Ci0gICBkZXZpY2UtPmRvbWlkICAgICAgICAg ICA9IGRvbWlkOwotICAgZGV2aWNlLT5raW5kICAgICAgICAgICAgPSBMSUJYTF9fREVWSUNFX0tJ TkRfVlRQTTsKLQotICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIGxpYnhsX19kZXZpY2Vf dnRwbV9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KQotewotICAg IFNUQVRFX0FPX0dDKGFvZGV2LT5hbyk7Ci0gICAgZmxleGFycmF5X3QgKmZyb250OwotICAgIGZs ZXhhcnJheV90ICpiYWNrOwotICAgIGxpYnhsX19kZXZpY2UgKmRldmljZTsKLSAgICBpbnQgcmM7 Ci0gICAgeHNfdHJhbnNhY3Rpb25fdCB0ID0gWEJUX05VTEw7Ci0gICAgbGlieGxfZG9tYWluX2Nv bmZpZyBkX2NvbmZpZzsKLSAgICBsaWJ4bF9kZXZpY2VfdnRwbSB2dHBtX3NhdmVkOwotICAgIGxp YnhsX19kb21haW5fdXNlcmRhdGFfbG9jayAqbG9jayA9IE5VTEw7Ci0KLSAgICBsaWJ4bF9kb21h aW5fY29uZmlnX2luaXQoJmRfY29uZmlnKTsKLSAgICBsaWJ4bF9kZXZpY2VfdnRwbV9pbml0KCZ2 dHBtX3NhdmVkKTsKLSAgICBsaWJ4bF9kZXZpY2VfdnRwbV9jb3B5KENUWCwgJnZ0cG1fc2F2ZWQs IHZ0cG0pOwotCi0gICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3Z0cG1fc2V0ZGVmYXVsdChnYywgdnRw bSk7Ci0gICAgaWYgKHJjKSBnb3RvIG91dDsKLQotICAgIGZyb250ID0gZmxleGFycmF5X21ha2Uo Z2MsIDE2LCAxKTsKLSAgICBiYWNrID0gZmxleGFycmF5X21ha2UoZ2MsIDE2LCAxKTsKLQotICAg IGlmICh2dHBtLT5kZXZpZCA9PSAtMSkgewotICAgICAgICBpZiAoKHZ0cG0tPmRldmlkID0gbGli eGxfX2RldmljZV9uZXh0aWQoZ2MsIGRvbWlkLCAidnRwbSIpKSA8IDApIHsKLSAgICAgICAgICAg IHJjID0gRVJST1JfRkFJTDsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9Ci0gICAg fQotCi0gICAgbGlieGxfX3VwZGF0ZV9jb25maWdfdnRwbShnYywgJnZ0cG1fc2F2ZWQsIHZ0cG0p OwotCi0gICAgR0NORVcoZGV2aWNlKTsKLSAgICByYyA9IGxpYnhsX19kZXZpY2VfZnJvbV92dHBt KGdjLCBkb21pZCwgdnRwbSwgZGV2aWNlKTsKLSAgICBpZiAoIHJjICE9IDAgKSBnb3RvIG91dDsK LQotICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImZyb250ZW5kLWlkIik7Ci0gICAgZmxleGFy cmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVkIiwgZG9taWQpKTsKLSAgICBmbGV4YXJyYXlf YXBwZW5kKGJhY2ssICJvbmxpbmUiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssICIxIik7 Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAic3RhdGUiKTsKLSAgICBmbGV4YXJyYXlfYXBw ZW5kKGJhY2ssIEdDU1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykpOwotICAg IGZsZXhhcnJheV9hcHBlbmQoYmFjaywgImhhbmRsZSIpOwotICAgIGZsZXhhcnJheV9hcHBlbmQo YmFjaywgR0NTUFJJTlRGKCIlZCIsIHZ0cG0tPmRldmlkKSk7Ci0KLSAgICBmbGV4YXJyYXlfYXBw ZW5kKGJhY2ssICJ1dWlkIik7Ci0gICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYo TElCWExfVVVJRF9GTVQsIExJQlhMX1VVSURfQllURVModnRwbS0+dXVpZCkpKTsKLSAgICBmbGV4 YXJyYXlfYXBwZW5kKGJhY2ssICJyZXN1bWUiKTsKLSAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ss ICJGYWxzZSIpOwotCi0gICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgImJhY2tlbmQtaWQiKTsK LSAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCBHQ1NQUklOVEYoIiVkIiwgdnRwbS0+YmFja2Vu ZF9kb21pZCkpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJzdGF0ZSIpOwotICAgIGZs ZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxp c2luZykpOwotICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsICJoYW5kbGUiKTsKLSAgICBmbGV4 YXJyYXlfYXBwZW5kKGZyb250LCBHQ1NQUklOVEYoIiVkIiwgdnRwbS0+ZGV2aWQpKTsKLQotICAg IGlmIChhb2Rldi0+dXBkYXRlX2pzb24pIHsKLSAgICAgICAgbG9jayA9IGxpYnhsX19sb2NrX2Rv bWFpbl91c2VyZGF0YShnYywgZG9taWQpOwotICAgICAgICBpZiAoIWxvY2spIHsKLSAgICAgICAg ICAgIHJjID0gRVJST1JfTE9DS19GQUlMOwotICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAg IH0KLQotICAgICAgICByYyA9IGxpYnhsX19nZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24oZ2MsIGRv bWlkLCAmZF9jb25maWcpOwotICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwotCi0gICAgICAgIERF VklDRV9BREQodnRwbSwgdnRwbXMsIGRvbWlkLCAmdnRwbV9zYXZlZCwgQ09NUEFSRV9ERVZJRCwg JmRfY29uZmlnKTsKLQotICAgICAgICByYyA9IGxpYnhsX19kbV9jaGVja19zdGFydChnYywgJmRf Y29uZmlnLCBkb21pZCk7Ci0gICAgICAgIGlmIChyYykgZ290byBvdXQ7Ci0gICAgfQotCi0gICAg Zm9yICg7OykgewotICAgICAgICByYyA9IGxpYnhsX194c190cmFuc2FjdGlvbl9zdGFydChnYywg JnQpOwotICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwotCi0gICAgICAgIHJjID0gbGlieGxfX2Rl dmljZV9leGlzdHMoZ2MsIHQsIGRldmljZSk7Ci0gICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0 OwotICAgICAgICBpZiAocmMgPT0gMSkgeyAgICAgICAgICAgICAgLyogYWxyZWFkeSBleGlzdHMg aW4geGVuc3RvcmUgKi8KLSAgICAgICAgICAgIExPRyhFUlJPUiwgImRldmljZSBhbHJlYWR5IGV4 aXN0cyBpbiB4ZW5zdG9yZSIpOwotICAgICAgICAgICAgYW9kZXYtPmFjdGlvbiA9IExJQlhMX19E RVZJQ0VfQUNUSU9OX0FERDsgLyogZm9yIGVycm9yIG1lc3NhZ2UgKi8KLSAgICAgICAgICAgIHJj ID0gRVJST1JfREVWSUNFX0VYSVNUUzsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9 Ci0KLSAgICAgICAgaWYgKGFvZGV2LT51cGRhdGVfanNvbikgewotICAgICAgICAgICAgcmMgPSBs aWJ4bF9fc2V0X2RvbWFpbl9jb25maWd1cmF0aW9uKGdjLCBkb21pZCwgJmRfY29uZmlnKTsKLSAg ICAgICAgICAgIGlmIChyYykgZ290byBvdXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBsaWJ4bF9f ZGV2aWNlX2dlbmVyaWNfYWRkKGdjLCB0LCBkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXkoZ2MsIGJhY2ssCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFj ay0+Y291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19r dnNfb2ZfZmxleGFycmF5KGdjLCBmcm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udC0+Y291bnQpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgICAgIHJjID0gbGlieGxfX3hz X3RyYW5zYWN0aW9uX2NvbW1pdChnYywgJnQpOwotICAgICAgICBpZiAoIXJjKSBicmVhazsKLSAg ICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7Ci0gICAgfQotCi0gICAgYW9kZXYtPmRldiA9IGRl dmljZTsKLSAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fQUREOwotICAg IGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9uKGVnYywgYW9kZXYpOwotCi0gICAgcmMgPSAw Owotb3V0OgotICAgIGxpYnhsX194c190cmFuc2FjdGlvbl9hYm9ydChnYywgJnQpOwotICAgIGlm IChsb2NrKSBsaWJ4bF9fdW5sb2NrX2RvbWFpbl91c2VyZGF0YShsb2NrKTsKLSAgICBsaWJ4bF9k ZXZpY2VfdnRwbV9kaXNwb3NlKCZ2dHBtX3NhdmVkKTsKLSAgICBsaWJ4bF9kb21haW5fY29uZmln X2Rpc3Bvc2UoJmRfY29uZmlnKTsKLSAgICBhb2Rldi0+cmMgPSByYzsKLSAgICBpZihyYykgYW9k ZXYtPmNhbGxiYWNrKGVnYywgYW9kZXYpOwotICAgIHJldHVybjsKLX0KLQotbGlieGxfZGV2aWNl X3Z0cG0gKmxpYnhsX2RldmljZV92dHBtX2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLCBpbnQgKm51bSkKLXsKLSAgICBHQ19JTklUKGN0eCk7Ci0KLSAgICBsaWJ4bF9kZXZpY2Vf dnRwbSogdnRwbXMgPSBOVUxMOwotICAgIGNoYXIgKmxpYnhsX3BhdGg7Ci0gICAgY2hhcioqIGRp ciA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50IG5kaXJzID0gMDsKLSAgICBpbnQgcmM7Ci0KLSAg ICAqbnVtID0gMDsKLQotICAgIGxpYnhsX3BhdGggPSBHQ1NQUklOVEYoIiVzL2RldmljZS92dHBt IiwgbGlieGxfX3hzX2xpYnhsX3BhdGgoZ2MsIGRvbWlkKSk7Ci0gICAgZGlyID0gbGlieGxfX3hz X2RpcmVjdG9yeShnYywgWEJUX05VTEwsIGxpYnhsX3BhdGgsICZuZGlycyk7Ci0gICAgaWYgKGRp ciAmJiBuZGlycykgewotICAgICAgIHZ0cG1zID0gbWFsbG9jKHNpemVvZigqdnRwbXMpICogbmRp cnMpOwotICAgICAgIGxpYnhsX2RldmljZV92dHBtKiB2dHBtOwotICAgICAgIGxpYnhsX2Rldmlj ZV92dHBtKiBlbmQgPSB2dHBtcyArIG5kaXJzOwotICAgICAgIGZvcih2dHBtID0gdnRwbXM7IHZ0 cG0gPCBlbmQ7ICsrdnRwbSwgKytkaXIpIHsKLSAgICAgICAgICBjaGFyKiB0bXA7Ci0gICAgICAg ICAgY29uc3QgY2hhciogYmVfcGF0aCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwKLSAg ICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzLyVzL2JhY2tlbmQiLAotICAgICAgICAgICAgICAg ICAgIGxpYnhsX3BhdGgsICpkaXIpKTsKLQotICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtX2lu aXQodnRwbSk7Ci0KLSAgICAgICAgICB2dHBtLT5kZXZpZCA9IGF0b2koKmRpcik7Ci0KLSAgICAg ICAgICByYyA9IGxpYnhsX19iYWNrZW5kcGF0aF9wYXJzZV9kb21pZChnYywgYmVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnRwbS0+YmFja2Vu ZF9kb21pZCk7Ci0gICAgICAgICAgaWYgKHJjKSByZXR1cm4gTlVMTDsKLQotICAgICAgICAgIHRt cCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIlcy91dWlkIiwgbGli eGxfcGF0aCkpOwotICAgICAgICAgIGlmICh0bXApIHsKLSAgICAgICAgICAgICAgaWYobGlieGxf dXVpZF9mcm9tX3N0cmluZygmKHZ0cG0tPnV1aWQpLCB0bXApKSB7Ci0gICAgICAgICAgICAgICAg ICBMT0coRVJST1IsICIlcy91dWlkIGlzIGEgbWFsZm9ybWVkIHV1aWQ/PyAoJXMpIFByb2JhYmx5 IGEgYnVnISFcbiIsIGJlX3BhdGgsIHRtcCk7Ci0gICAgICAgICAgICAgICAgICBmcmVlKHZ0cG1z KTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgfQotICAgICAgIH0KLSAgICB9Ci0gICAgKm51bSA9IG5kaXJzOwotCi0gICAgR0NfRlJF RTsKLSAgICByZXR1cm4gdnRwbXM7Ci19Ci0KLWludCBsaWJ4bF9kZXZpY2VfdnRwbV9nZXRpbmZv KGxpYnhsX2N0eCAqY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAq dnRwbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Z0cG1pbmZvICp2dHBt aW5mbykKLXsKLSAgICBHQ19JTklUKGN0eCk7Ci0gICAgY2hhciAqbGlieGxfcGF0aCwgKmRvbXBh dGgsICp2dHBtcGF0aDsKLSAgICBjaGFyICp2YWw7Ci0gICAgaW50IHJjID0gMDsKLQotICAgIGxp YnhsX3Z0cG1pbmZvX2luaXQodnRwbWluZm8pOwotICAgIGRvbXBhdGggPSBsaWJ4bF9feHNfZ2V0 X2RvbXBhdGgoZ2MsIGRvbWlkKTsKLSAgICB2dHBtaW5mby0+ZGV2aWQgPSB2dHBtLT5kZXZpZDsK LQotICAgIHZ0cG1wYXRoID0gR0NTUFJJTlRGKCIlcy9kZXZpY2UvdnRwbS8lZCIsIGRvbXBhdGgs IHZ0cG1pbmZvLT5kZXZpZCk7Ci0gICAgbGlieGxfcGF0aCA9IEdDU1BSSU5URigiJXMvZGV2aWNl L3Z0cG0vJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2xpYnhsX3Bh dGgoZ2MsIGRvbWlkKSwgdnRwbWluZm8tPmRldmlkKTsKLSAgICB2dHBtaW5mby0+YmFja2VuZCA9 IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAotICAgICAgICAgIEdDU1BSSU5URigiJXMvYmFj a2VuZCIsIGxpYnhsX3BhdGgpLCBOVUxMKTsKLSAgICBpZiAoIXZ0cG1pbmZvLT5iYWNrZW5kKSB7 Ci0gICAgICAgIGdvdG8gZXJyOwotICAgIH0KLQotICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRo X3BhcnNlX2RvbWlkKGdjLCB2dHBtaW5mby0+YmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdnRwbWluZm8tPmJhY2tlbmRfaWQpOwotICAgIGlmIChyYykg Z290byBleGl0OwotCi0gICAgdmFsID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAotICAg ICAgICAgIEdDU1BSSU5URigiJXMvc3RhdGUiLCB2dHBtcGF0aCkpOwotICAgIHZ0cG1pbmZvLT5z dGF0ZSA9IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKLQotICAgIHZhbCA9IGxp YnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwKLSAgICAgICAgICBHQ1NQUklOVEYoIiVzL2V2ZW50 LWNoYW5uZWwiLCB2dHBtcGF0aCkpOwotICAgIHZ0cG1pbmZvLT5ldnRjaCA9IHZhbCA/IHN0cnRv dWwodmFsLCBOVUxMLCAxMCkgOiAtMTsKLQotICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBY QlRfTlVMTCwKLSAgICAgICAgICBHQ1NQUklOVEYoIiVzL3JpbmctcmVmIiwgdnRwbXBhdGgpKTsK LSAgICB2dHBtaW5mby0+cnJlZiA9IHZhbCA/IHN0cnRvdWwodmFsLCBOVUxMLCAxMCkgOiAtMTsK LQotICAgIHZ0cG1pbmZvLT5mcm9udGVuZCA9IHhzX3JlYWQoY3R4LT54c2gsIFhCVF9OVUxMLAot ICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSwgTlVMTCk7Ci0g ICAgdnRwbWluZm8tPmZyb250ZW5kX2lkID0gZG9taWQ7Ci0KLSAgICB2YWwgPSBsaWJ4bF9feHNf cmVhZChnYywgWEJUX05VTEwsCi0gICAgICAgICAgR0NTUFJJTlRGKCIlcy91dWlkIiwgbGlieGxf cGF0aCkpOwotICAgIGlmKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgTE9HKEVSUk9SLCAiJXMvdXVp ZCBkb2VzIG5vdCBleGlzdCEiLCB2dHBtaW5mby0+YmFja2VuZCk7Ci0gICAgICAgZ290byBlcnI7 Ci0gICAgfQotICAgIGlmKGxpYnhsX3V1aWRfZnJvbV9zdHJpbmcoJih2dHBtaW5mby0+dXVpZCks IHZhbCkpIHsKLSAgICAgICBMT0coRVJST1IsCi0gICAgICAgICAgICAgIiVzL3V1aWQgaXMgYSBt YWxmb3JtZWQgdXVpZD8/ICglcykgUHJvYmFibHkgYSBidWchXG4iLAotICAgICAgICAgICAgIHZ0 cG1pbmZvLT5iYWNrZW5kLCB2YWwpOwotICAgICAgIGdvdG8gZXJyOwotICAgIH0KLQotICAgIGdv dG8gZXhpdDsKLWVycjoKLSAgICByYyA9IEVSUk9SX0ZBSUw7Ci1leGl0OgotICAgIEdDX0ZSRUU7 Ci0gICAgcmV0dXJuIHJjOwotfQotCi1pbnQgbGlieGxfZGV2aWRfdG9fZGV2aWNlX3Z0cG0obGli eGxfY3R4ICpjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9t aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldmlkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtKQotewotICAgIGxp YnhsX2RldmljZV92dHBtICp2dHBtczsKLSAgICBpbnQgbmIsIGk7Ci0gICAgaW50IHJjOwotCi0g ICAgdnRwbXMgPSBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0KGN0eCwgZG9taWQsICZuYik7Ci0gICAg aWYgKCF2dHBtcykKLSAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Ci0KLSAgICBsaWJ4bF9kZXZp Y2VfdnRwbV9pbml0KHZ0cG0pOwotICAgIHJjID0gMTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmI7 ICsraSkgewotICAgICAgICBpZihkZXZpZCA9PSB2dHBtc1tpXS5kZXZpZCkgewotICAgICAgICAg ICAgdnRwbS0+YmFja2VuZF9kb21pZCA9IHZ0cG1zW2ldLmJhY2tlbmRfZG9taWQ7Ci0gICAgICAg ICAgICB2dHBtLT5kZXZpZCA9IHZ0cG1zW2ldLmRldmlkOwotICAgICAgICAgICAgbGlieGxfdXVp ZF9jb3B5KGN0eCwgJnZ0cG0tPnV1aWQsICZ2dHBtc1tpXS51dWlkKTsKLSAgICAgICAgICAgIHJj ID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGlieGxf ZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKHZ0cG1zLCBuYik7Ci0gICAgcmV0dXJuIHJjOwotfQotCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCiAKIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tfc2V0ZGVm YXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfZGlzayAqZGlzaywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCkKQEAgLTQzMDksMTAgKzQwMjMs NiBAQCBvdXQ6CiAgKiBsaWJ4bF9fYWRkX25pY3MKICAqIGxpYnhsX2RldmljZV9uaWNfcmVtb3Zl CiAgKiBsaWJ4bF9kZXZpY2VfbmljX2Rlc3Ryb3kKLSAqIGxpYnhsX2RldmljZV92dHBtX2FkZAot ICogbGlieGxfX2FkZF92dHBtcwotICogbGlieGxfZGV2aWNlX3Z0cG1fcmVtb3ZlCi0gKiBsaWJ4 bF9kZXZpY2VfdnRwbV9kZXN0cm95CiAgKiBsaWJ4bF9kZXZpY2VfdmtiX3JlbW92ZQogICogbGli eGxfZGV2aWNlX3ZrYl9kZXN0cm95CiAgKiBsaWJ4bF9kZXZpY2VfdmZiX3JlbW92ZQpAQCAtNDMz MywxMSArNDA0Myw2IEBAIExJQlhMX0RFRklORV9ERVZJQ0VfQUREKG5pYykKIExJQlhMX0RFRklO RV9ERVZJQ0VTX0FERChuaWMpCiBMSUJYTF9ERUZJTkVfREVWSUNFX1JFTU9WRShuaWMpCiAKLS8q IHZ0cG0gKi8KLUxJQlhMX0RFRklORV9ERVZJQ0VfQUREKHZ0cG0pCi1zdGF0aWMgTElCWExfREVG SU5FX0RFVklDRVNfQUREKHZ0cG0pCi1MSUJYTF9ERUZJTkVfREVWSUNFX1JFTU9WRSh2dHBtKQot CiAvKiB2a2IgKi8KIExJQlhMX0RFRklORV9ERVZJQ0VfUkVNT1ZFKHZrYikKIApAQCAtNzQ5Miwx OSArNzE5NywxMiBAQCBzdGF0aWMgaW50IGxpYnhsX2RldmljZV9uaWNfY29tcGFyZShsaWJ4bF9k ZXZpY2VfbmljICpkMSwKICAgICByZXR1cm4gQ09NUEFSRV9ERVZJRChkMSwgZDIpOwogfQogCi1z dGF0aWMgaW50IGxpYnhsX2RldmljZV92dHBtX2NvbXBhcmUobGlieGxfZGV2aWNlX3Z0cG0gKmQx LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBt ICpkMikKLXsKLSAgICByZXR1cm4gQ09NUEFSRV9ERVZJRChkMSwgZDIpOwotfQotCiBERUZJTkVf REVWSUNFX1RZUEVfU1RSVUNUKGRpc2ssCiAgICAgLm1lcmdlICAgICAgID0gbGlieGxfZGV2aWNl X2Rpc2tfbWVyZ2UsCiAgICAgLmRtX25lZWRlZCAgID0gbGlieGxfZGV2aWNlX2Rpc2tfZG1fbmVl ZGVkLAogICAgIC5za2lwX2F0dGFjaCA9IDEKICk7CiBERUZJTkVfREVWSUNFX1RZUEVfU1RSVUNU KG5pYyk7Ci1ERUZJTkVfREVWSUNFX1RZUEVfU1RSVUNUKHZ0cG0pOwogCiAvKgogICogTG9jYWwg dmFyaWFibGVzOgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggYWVhMTRlYS4uMzBiNmUxZSAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4 bF9pbnRlcm5hbC5oCkBAIC0xMjIxLDcgKzEyMjEsNiBAQCBfaGlkZGVuIGludCBsaWJ4bF9fZGV2 aWNlX2Rpc2tfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQpOwogX2hpZGRlbiBpbnQgbGlieGxf X2RldmljZV9uaWNfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfbmljICpu aWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRv bWlkLCBib29sIGhvdHBsdWcpOwotX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92dHBtX3NldGRl ZmF1bHQobGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pOwogX2hpZGRlbiBp bnQgbGlieGxfX2RldmljZV92ZmJfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZp Y2VfdmZiICp2ZmIpOwogX2hpZGRlbiBpbnQgbGlieGxfX2RldmljZV92a2Jfc2V0ZGVmYXVsdChs aWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfdmtiICp2a2IpOwogX2hpZGRlbiBpbnQgbGlieGxf X2RldmljZV9wY2lfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZpY2VfcGNpICpw Y2kpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsX3V0aWxzLmMKaW5kZXggYzY5MzNkNi4uYjc0ODU1NSAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfdXRpbHMuYworKysgYi90b29scy9saWJ4bC9saWJ4bF91dGlscy5jCkBAIC01 OTgsMzMgKzU5OCw2IEBAIGludCBsaWJ4bF9waXBlKGxpYnhsX2N0eCAqY3R4LCBpbnQgcGlwZXNb Ml0pCiAgICAgcmV0dXJuIHJldDsKIH0KIAotaW50IGxpYnhsX3V1aWRfdG9fZGV2aWNlX3Z0cG0o bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX3V1aWQqIHV1aWQsIGxpYnhsX2RldmljZV92dHBtICp2dHBtKQotewotICAgIGxp YnhsX2RldmljZV92dHBtICp2dHBtczsKLSAgICBpbnQgbmIsIGk7Ci0gICAgaW50IHJjOwotCi0g ICAgdnRwbXMgPSBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0KGN0eCwgZG9taWQsICZuYik7Ci0gICAg aWYgKCF2dHBtcykKLSAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Ci0KLSAgICBtZW1zZXQodnRw bSwgMCwgc2l6ZW9mIChsaWJ4bF9kZXZpY2VfdnRwbSkpOwotICAgIHJjID0gMTsKLSAgICBmb3Ig KGkgPSAwOyBpIDwgbmI7ICsraSkgewotICAgICAgICBpZighbGlieGxfdXVpZF9jb21wYXJlKHV1 aWQsICZ2dHBtc1tpXS51dWlkKSkgewotICAgICAgICAgICAgdnRwbS0+YmFja2VuZF9kb21pZCA9 IHZ0cG1zW2ldLmJhY2tlbmRfZG9taWQ7Ci0gICAgICAgICAgICB2dHBtLT5kZXZpZCA9IHZ0cG1z W2ldLmRldmlkOwotICAgICAgICAgICAgbGlieGxfdXVpZF9jb3B5KGN0eCwgJnZ0cG0tPnV1aWQs ICZ2dHBtc1tpXS51dWlkKTsKLSAgICAgICAgICAgIHJjID0gMDsKLSAgICAgICAgICAgIGJyZWFr OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKHZ0 cG1zLCBuYik7Ci0gICAgcmV0dXJuIHJjOwotfQotCiBpbnQgbGlieGxfbWFjX3RvX2RldmljZV9u aWMobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKm1hYywgbGlieGxfZGV2aWNlX25pYyAqbmljKQogewpAQCAtMTI0 OCwyMiArMTIyMSw2IEBAIHZvaWQgbGlieGxfY3B1cG9vbGluZm9fbGlzdF9mcmVlKGxpYnhsX2Nw dXBvb2xpbmZvICpsaXN0LCBpbnQgbnIpCiAgICAgZnJlZShsaXN0KTsKIH0KIAotdm9pZCBsaWJ4 bF92dHBtaW5mb19saXN0X2ZyZWUobGlieGxfdnRwbWluZm8qIGxpc3QsIGludCBucikKLXsKLSAg IGludCBpOwotICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspCi0gICAgICBsaWJ4bF92dHBtaW5m b19kaXNwb3NlKCZsaXN0W2ldKTsKLSAgIGZyZWUobGlzdCk7Ci19Ci0KLXZvaWQgbGlieGxfZGV2 aWNlX3Z0cG1fbGlzdF9mcmVlKGxpYnhsX2RldmljZV92dHBtKiBsaXN0LCBpbnQgbnIpCi17Ci0g ICBpbnQgaTsKLSAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQotICAgICAgbGlieGxfZGV2aWNl X3Z0cG1fZGlzcG9zZSgmbGlzdFtpXSk7Ci0gICBmcmVlKGxpc3QpOwotfQotCiBpbnQgbGlieGxf ZG9taWRfdmFsaWRfZ3Vlc3QodWludDMyX3QgZG9taWQpCiB7CiAgICAgLyogcmV0dXJucyAxIGlm IHRoZSB2YWx1ZSBfY291bGRfIGJlIGEgdmFsaWQgZ3Vlc3QgZG9taWQsIDAgb3RoZXJ3aXNlCmRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF92dHBtLmMgYi90b29scy9saWJ4bC9saWJ4bF92 dHBtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JiZWVhNwotLS0gL2Rl di9udWxsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Z0cG0uYwpAQCAtMCwwICsxLDM2NiBAQAor LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiAgICAgIFNVU0UgTGludXggR21iSAorICogQXV0aG9y IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkCisgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJz aW9uIDIuMSBvbmx5LiB3aXRoIHRoZSBzcGVjaWFsCisgKiBleGNlcHRpb24gb24gbGlua2luZyBk ZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICovCisKKyNpbmNsdWRlICJsaWJ4bF9vc2RlcHMuaCIKKworI2luY2x1ZGUgImxpYnhsX2lu dGVybmFsLmgiCisKK3N0YXRpYyBpbnQgbGlieGxfX2RldmljZV92dHBtX3NldGRlZmF1bHQobGli eGxfX2djICpnYywgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0pCit7CisgICAgaW50IHJjOworICAg IGlmIChsaWJ4bF91dWlkX2lzX25pbCgmdnRwbS0+dXVpZCkpIHsKKyAgICAgICAgbGlieGxfdXVp ZF9nZW5lcmF0ZSgmdnRwbS0+dXVpZCk7CisgICAgfQorICAgIHJjID0gbGlieGxfX3Jlc29sdmVf ZG9taWQoZ2MsIHZ0cG0tPmJhY2tlbmRfZG9tbmFtZSwgJnZ0cG0tPmJhY2tlbmRfZG9taWQpOwor ICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX2Zyb21fdnRwbShs aWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX19kZXZpY2UgKmRldmljZSkKK3sKKyAgIGRldmljZS0+YmFja2Vu ZF9kZXZpZCAgID0gdnRwbS0+ZGV2aWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfZG9taWQgICA9IHZ0 cG0tPmJhY2tlbmRfZG9taWQ7CisgICBkZXZpY2UtPmJhY2tlbmRfa2luZCAgICA9IExJQlhMX19E RVZJQ0VfS0lORF9WVFBNOworICAgZGV2aWNlLT5kZXZpZCAgICAgICAgICAgPSB2dHBtLT5kZXZp ZDsKKyAgIGRldmljZS0+ZG9taWQgICAgICAgICAgID0gZG9taWQ7CisgICBkZXZpY2UtPmtpbmQg ICAgICAgICAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WVFBNOworCisgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgbGlieGxfX2RldmljZV92dHBtX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVp bnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9k ZXZpY2VfdnRwbSAqdnRwbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX2FvX2RldmljZSAqYW9kZXYpCit7CisgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKyAg ICBmbGV4YXJyYXlfdCAqZnJvbnQ7CisgICAgZmxleGFycmF5X3QgKmJhY2s7CisgICAgbGlieGxf X2RldmljZSAqZGV2aWNlOworICAgIGludCByYzsKKyAgICB4c190cmFuc2FjdGlvbl90IHQgPSBY QlRfTlVMTDsKKyAgICBsaWJ4bF9kb21haW5fY29uZmlnIGRfY29uZmlnOworICAgIGxpYnhsX2Rl dmljZV92dHBtIHZ0cG1fc2F2ZWQ7CisgICAgbGlieGxfX2RvbWFpbl91c2VyZGF0YV9sb2NrICps b2NrID0gTlVMTDsKKworICAgIGxpYnhsX2RvbWFpbl9jb25maWdfaW5pdCgmZF9jb25maWcpOwor ICAgIGxpYnhsX2RldmljZV92dHBtX2luaXQoJnZ0cG1fc2F2ZWQpOworICAgIGxpYnhsX2Rldmlj ZV92dHBtX2NvcHkoQ1RYLCAmdnRwbV9zYXZlZCwgdnRwbSk7CisKKyAgICByYyA9IGxpYnhsX19k ZXZpY2VfdnRwbV9zZXRkZWZhdWx0KGdjLCB2dHBtKTsKKyAgICBpZiAocmMpIGdvdG8gb3V0Owor CisgICAgZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOworICAgIGJhY2sgPSBmbGV4 YXJyYXlfbWFrZShnYywgMTYsIDEpOworCisgICAgaWYgKHZ0cG0tPmRldmlkID09IC0xKSB7Cisg ICAgICAgIGlmICgodnRwbS0+ZGV2aWQgPSBsaWJ4bF9fZGV2aWNlX25leHRpZChnYywgZG9taWQs ICJ2dHBtIikpIDwgMCkgeworICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICAg ICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsaWJ4bF9fdXBkYXRlX2NvbmZp Z192dHBtKGdjLCAmdnRwbV9zYXZlZCwgdnRwbSk7CisKKyAgICBHQ05FVyhkZXZpY2UpOworICAg IHJjID0gbGlieGxfX2RldmljZV9mcm9tX3Z0cG0oZ2MsIGRvbWlkLCB2dHBtLCBkZXZpY2UpOwor ICAgIGlmICggcmMgIT0gMCApIGdvdG8gb3V0OworCisgICAgZmxleGFycmF5X2FwcGVuZChiYWNr LCAiZnJvbnRlbmQtaWQiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URigi JWQiLCBkb21pZCkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgIm9ubGluZSIpOworICAg IGZsZXhhcnJheV9hcHBlbmQoYmFjaywgIjEiKTsKKyAgICBmbGV4YXJyYXlfYXBwZW5kKGJhY2ss ICJzdGF0ZSIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgR0NTUFJJTlRGKCIlZCIsIFhl bmJ1c1N0YXRlSW5pdGlhbGlzaW5nKSk7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCAiaGFu ZGxlIik7CisgICAgZmxleGFycmF5X2FwcGVuZChiYWNrLCBHQ1NQUklOVEYoIiVkIiwgdnRwbS0+ ZGV2aWQpKTsKKworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInV1aWQiKTsKKyAgICBmbGV4 YXJyYXlfYXBwZW5kKGJhY2ssIEdDU1BSSU5URihMSUJYTF9VVUlEX0ZNVCwgTElCWExfVVVJRF9C WVRFUyh2dHBtLT51dWlkKSkpOworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgInJlc3VtZSIp OworICAgIGZsZXhhcnJheV9hcHBlbmQoYmFjaywgIkZhbHNlIik7CisKKyAgICBmbGV4YXJyYXlf YXBwZW5kKGZyb250LCAiYmFja2VuZC1pZCIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQs IEdDU1BSSU5URigiJWQiLCB2dHBtLT5iYWNrZW5kX2RvbWlkKSk7CisgICAgZmxleGFycmF5X2Fw cGVuZChmcm9udCwgInN0YXRlIik7CisgICAgZmxleGFycmF5X2FwcGVuZChmcm9udCwgR0NTUFJJ TlRGKCIlZCIsIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKSk7CisgICAgZmxleGFycmF5X2FwcGVu ZChmcm9udCwgImhhbmRsZSIpOworICAgIGZsZXhhcnJheV9hcHBlbmQoZnJvbnQsIEdDU1BSSU5U RigiJWQiLCB2dHBtLT5kZXZpZCkpOworCisgICAgaWYgKGFvZGV2LT51cGRhdGVfanNvbikgewor ICAgICAgICBsb2NrID0gbGlieGxfX2xvY2tfZG9tYWluX3VzZXJkYXRhKGdjLCBkb21pZCk7Cisg ICAgICAgIGlmICghbG9jaykgeworICAgICAgICAgICAgcmMgPSBFUlJPUl9MT0NLX0ZBSUw7Cisg ICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbGlieGxfX2dl dF9kb21haW5fY29uZmlndXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZpZyk7CisgICAgICAgIGlm IChyYykgZ290byBvdXQ7CisKKyAgICAgICAgREVWSUNFX0FERCh2dHBtLCB2dHBtcywgZG9taWQs ICZ2dHBtX3NhdmVkLCBDT01QQVJFX0RFVklELCAmZF9jb25maWcpOworCisgICAgICAgIHJjID0g bGlieGxfX2RtX2NoZWNrX3N0YXJ0KGdjLCAmZF9jb25maWcsIGRvbWlkKTsKKyAgICAgICAgaWYg KHJjKSBnb3RvIG91dDsKKyAgICB9CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHJjID0gbGli eGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAmdCk7CisgICAgICAgIGlmIChyYykgZ290byBv dXQ7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX2V4aXN0cyhnYywgdCwgZGV2aWNlKTsK KyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7CisgICAgICAgIGlmIChyYyA9PSAxKSB7ICAg ICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0cyBpbiB4ZW5zdG9yZSAqLworICAgICAgICAgICAg TE9HKEVSUk9SLCAiZGV2aWNlIGFscmVhZHkgZXhpc3RzIGluIHhlbnN0b3JlIik7CisgICAgICAg ICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fQUREOyAvKiBmb3IgZXJy b3IgbWVzc2FnZSAqLworICAgICAgICAgICAgcmMgPSBFUlJPUl9ERVZJQ0VfRVhJU1RTOworICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYW9kZXYtPnVwZGF0 ZV9qc29uKSB7CisgICAgICAgICAgICByYyA9IGxpYnhsX19zZXRfZG9tYWluX2NvbmZpZ3VyYXRp b24oZ2MsIGRvbWlkLCAmZF9jb25maWcpOworICAgICAgICAgICAgaWYgKHJjKSBnb3RvIG91dDsK KyAgICAgICAgfQorCisgICAgICAgIGxpYnhsX19kZXZpY2VfZ2VuZXJpY19hZGQoZ2MsIHQsIGRl dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNfa3ZzX29m X2ZsZXhhcnJheShnYywgYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrLT5jb3VudCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXkoZ2MsIGZyb250LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZyb250LT5jb3VudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCk7CisKKyAgICAgICAgcmMgPSBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fY29tbWl0KGdjLCAmdCk7 CisgICAgICAgIGlmICghcmMpIGJyZWFrOworICAgICAgICBpZiAocmMgPCAwKSBnb3RvIG91dDsK KyAgICB9CisKKyAgICBhb2Rldi0+ZGV2ID0gZGV2aWNlOworICAgIGFvZGV2LT5hY3Rpb24gPSBM SUJYTF9fREVWSUNFX0FDVElPTl9BREQ7CisgICAgbGlieGxfX3dhaXRfZGV2aWNlX2Nvbm5lY3Rp b24oZWdjLCBhb2Rldik7CisKKyAgICByYyA9IDA7CitvdXQ6CisgICAgbGlieGxfX3hzX3RyYW5z YWN0aW9uX2Fib3J0KGdjLCAmdCk7CisgICAgaWYgKGxvY2spIGxpYnhsX191bmxvY2tfZG9tYWlu X3VzZXJkYXRhKGxvY2spOworICAgIGxpYnhsX2RldmljZV92dHBtX2Rpc3Bvc2UoJnZ0cG1fc2F2 ZWQpOworICAgIGxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmZF9jb25maWcpOworICAgIGFv ZGV2LT5yYyA9IHJjOworICAgIGlmKHJjKSBhb2Rldi0+Y2FsbGJhY2soZWdjLCBhb2Rldik7Cisg ICAgcmV0dXJuOworfQorCitsaWJ4bF9kZXZpY2VfdnRwbSAqbGlieGxfZGV2aWNlX3Z0cG1fbGlz dChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCAqbnVtKQoreworICAgIEdDX0lO SVQoY3R4KTsKKworICAgIGxpYnhsX2RldmljZV92dHBtKiB2dHBtcyA9IE5VTEw7CisgICAgY2hh ciAqbGlieGxfcGF0aDsKKyAgICBjaGFyKiogZGlyID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQg bmRpcnMgPSAwOworICAgIGludCByYzsKKworICAgICpudW0gPSAwOworCisgICAgbGlieGxfcGF0 aCA9IEdDU1BSSU5URigiJXMvZGV2aWNlL3Z0cG0iLCBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywg ZG9taWQpKTsKKyAgICBkaXIgPSBsaWJ4bF9feHNfZGlyZWN0b3J5KGdjLCBYQlRfTlVMTCwgbGli eGxfcGF0aCwgJm5kaXJzKTsKKyAgICBpZiAoZGlyICYmIG5kaXJzKSB7CisgICAgICAgdnRwbXMg PSBtYWxsb2Moc2l6ZW9mKCp2dHBtcykgKiBuZGlycyk7CisgICAgICAgbGlieGxfZGV2aWNlX3Z0 cG0qIHZ0cG07CisgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0qIGVuZCA9IHZ0cG1zICsgbmRpcnM7 CisgICAgICAgZm9yKHZ0cG0gPSB2dHBtczsgdnRwbSA8IGVuZDsgKyt2dHBtLCArK2Rpcikgewor ICAgICAgICAgIGNoYXIqIHRtcDsKKyAgICAgICAgICBjb25zdCBjaGFyKiBiZV9wYXRoID0gbGli eGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMv JXMvYmFja2VuZCIsCisgICAgICAgICAgICAgICAgICAgbGlieGxfcGF0aCwgKmRpcikpOworCisg ICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG1faW5pdCh2dHBtKTsKKworICAgICAgICAgIHZ0cG0t PmRldmlkID0gYXRvaSgqZGlyKTsKKworICAgICAgICAgIHJjID0gbGlieGxfX2JhY2tlbmRwYXRo X3BhcnNlX2RvbWlkKGdjLCBiZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZ2dHBtLT5iYWNrZW5kX2RvbWlkKTsKKyAgICAgICAgICBpZiAocmMp IHJldHVybiBOVUxMOworCisgICAgICAgICAgdG1wID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9O VUxMLCBHQ1NQUklOVEYoIiVzL3V1aWQiLCBsaWJ4bF9wYXRoKSk7CisgICAgICAgICAgaWYgKHRt cCkgeworICAgICAgICAgICAgICBpZihsaWJ4bF91dWlkX2Zyb21fc3RyaW5nKCYodnRwbS0+dXVp ZCksIHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgIExPRyhFUlJPUiwgIiVzL3V1aWQgaXMgYSBt YWxmb3JtZWQgdXVpZD8/ICglcykgUHJvYmFibHkgYSBidWchIVxuIiwgYmVfcGF0aCwgdG1wKTsK KyAgICAgICAgICAgICAgICAgIGZyZWUodnRwbXMpOworICAgICAgICAgICAgICAgICAgcmV0dXJu IE5VTEw7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgfQorICAgIH0KKyAg ICAqbnVtID0gbmRpcnM7CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiB2dHBtczsKK30KKwor aW50IGxpYnhsX2RldmljZV92dHBtX2dldGluZm8obGlieGxfY3R4ICpjdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICp2dHBtLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfdnRwbWluZm8gKnZ0cG1pbmZvKQoreworICAgIEdDX0lOSVQoY3R4KTsK KyAgICBjaGFyICpsaWJ4bF9wYXRoLCAqZG9tcGF0aCwgKnZ0cG1wYXRoOworICAgIGNoYXIgKnZh bDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgbGlieGxfdnRwbWluZm9faW5pdCh2dHBtaW5mbyk7 CisgICAgZG9tcGF0aCA9IGxpYnhsX194c19nZXRfZG9tcGF0aChnYywgZG9taWQpOworICAgIHZ0 cG1pbmZvLT5kZXZpZCA9IHZ0cG0tPmRldmlkOworCisgICAgdnRwbXBhdGggPSBHQ1NQUklOVEYo IiVzL2RldmljZS92dHBtLyVkIiwgZG9tcGF0aCwgdnRwbWluZm8tPmRldmlkKTsKKyAgICBsaWJ4 bF9wYXRoID0gR0NTUFJJTlRGKCIlcy9kZXZpY2UvdnRwbS8lZCIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9feHNfbGlieGxfcGF0aChnYywgZG9taWQpLCB2dHBtaW5mby0+ZGV2 aWQpOworICAgIHZ0cG1pbmZvLT5iYWNrZW5kID0geHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEws CisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9iYWNrZW5kIiwgbGlieGxfcGF0aCksIE5VTEwpOwor ICAgIGlmICghdnRwbWluZm8tPmJhY2tlbmQpIHsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQor CisgICAgcmMgPSBsaWJ4bF9fYmFja2VuZHBhdGhfcGFyc2VfZG9taWQoZ2MsIHZ0cG1pbmZvLT5i YWNrZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2dHBtaW5m by0+YmFja2VuZF9pZCk7CisgICAgaWYgKHJjKSBnb3RvIGV4aXQ7CisKKyAgICB2YWwgPSBsaWJ4 bF9feHNfcmVhZChnYywgWEJUX05VTEwsCisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9zdGF0ZSIs IHZ0cG1wYXRoKSk7CisgICAgdnRwbWluZm8tPnN0YXRlID0gdmFsID8gc3RydG91bCh2YWwsIE5V TEwsIDEwKSA6IC0xOworCisgICAgdmFsID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAor ICAgICAgICAgIEdDU1BSSU5URigiJXMvZXZlbnQtY2hhbm5lbCIsIHZ0cG1wYXRoKSk7CisgICAg dnRwbWluZm8tPmV2dGNoID0gdmFsID8gc3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisg ICAgdmFsID0gbGlieGxfX3hzX3JlYWQoZ2MsIFhCVF9OVUxMLAorICAgICAgICAgIEdDU1BSSU5U RigiJXMvcmluZy1yZWYiLCB2dHBtcGF0aCkpOworICAgIHZ0cG1pbmZvLT5ycmVmID0gdmFsID8g c3RydG91bCh2YWwsIE5VTEwsIDEwKSA6IC0xOworCisgICAgdnRwbWluZm8tPmZyb250ZW5kID0g eHNfcmVhZChjdHgtPnhzaCwgWEJUX05VTEwsCisgICAgICAgICAgR0NTUFJJTlRGKCIlcy9mcm9u dGVuZCIsIGxpYnhsX3BhdGgpLCBOVUxMKTsKKyAgICB2dHBtaW5mby0+ZnJvbnRlbmRfaWQgPSBk b21pZDsKKworICAgIHZhbCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAg ICBHQ1NQUklOVEYoIiVzL3V1aWQiLCBsaWJ4bF9wYXRoKSk7CisgICAgaWYodmFsID09IE5VTEwp IHsKKyAgICAgICBMT0coRVJST1IsICIlcy91dWlkIGRvZXMgbm90IGV4aXN0ISIsIHZ0cG1pbmZv LT5iYWNrZW5kKTsKKyAgICAgICBnb3RvIGVycjsKKyAgICB9CisgICAgaWYobGlieGxfdXVpZF9m cm9tX3N0cmluZygmKHZ0cG1pbmZvLT51dWlkKSwgdmFsKSkgeworICAgICAgIExPRyhFUlJPUiwK KyAgICAgICAgICAgICAiJXMvdXVpZCBpcyBhIG1hbGZvcm1lZCB1dWlkPz8gKCVzKSBQcm9iYWJs eSBhIGJ1ZyFcbiIsCisgICAgICAgICAgICAgdnRwbWluZm8tPmJhY2tlbmQsIHZhbCk7CisgICAg ICAgZ290byBlcnI7CisgICAgfQorCisgICAgZ290byBleGl0OworZXJyOgorICAgIHJjID0gRVJS T1JfRkFJTDsKK2V4aXQ6CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBs aWJ4bF9kZXZpZF90b19kZXZpY2VfdnRwbShsaWJ4bF9jdHggKmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgZGV2aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf ZGV2aWNlX3Z0cG0gKnZ0cG0pCit7CisgICAgbGlieGxfZGV2aWNlX3Z0cG0gKnZ0cG1zOworICAg IGludCBuYiwgaTsKKyAgICBpbnQgcmM7CisKKyAgICB2dHBtcyA9IGxpYnhsX2RldmljZV92dHBt X2xpc3QoY3R4LCBkb21pZCwgJm5iKTsKKyAgICBpZiAoIXZ0cG1zKQorICAgICAgICByZXR1cm4g RVJST1JfRkFJTDsKKworICAgIGxpYnhsX2RldmljZV92dHBtX2luaXQodnRwbSk7CisgICAgcmMg PSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBuYjsgKytpKSB7CisgICAgICAgIGlmKGRldmlkID09 IHZ0cG1zW2ldLmRldmlkKSB7CisgICAgICAgICAgICB2dHBtLT5iYWNrZW5kX2RvbWlkID0gdnRw bXNbaV0uYmFja2VuZF9kb21pZDsKKyAgICAgICAgICAgIHZ0cG0tPmRldmlkID0gdnRwbXNbaV0u ZGV2aWQ7CisgICAgICAgICAgICBsaWJ4bF91dWlkX2NvcHkoY3R4LCAmdnRwbS0+dXVpZCwgJnZ0 cG1zW2ldLnV1aWQpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICBsaWJ4bF9kZXZpY2VfdnRwbV9saXN0X2ZyZWUodnRwbXMs IG5iKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgbGlieGxfZGV2aWNlX3Z0cG1f Y29tcGFyZShsaWJ4bF9kZXZpY2VfdnRwbSAqZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Z0cG0gKmQyKQoreworICAgIHJldHVybiBDT01QQVJF X0RFVklEKGQxLCBkMik7Cit9CisKK2ludCBsaWJ4bF91dWlkX3RvX2RldmljZV92dHBtKGxpYnhs X2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF91dWlkKiB1dWlkLCBsaWJ4bF9kZXZpY2VfdnRwbSAqdnRwbSkKK3sKKyAgICBsaWJ4bF9k ZXZpY2VfdnRwbSAqdnRwbXM7CisgICAgaW50IG5iLCBpOworICAgIGludCByYzsKKworICAgIHZ0 cG1zID0gbGlieGxfZGV2aWNlX3Z0cG1fbGlzdChjdHgsIGRvbWlkLCAmbmIpOworICAgIGlmICgh dnRwbXMpCisgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOworCisgICAgbWVtc2V0KHZ0cG0sIDAs IHNpemVvZiAobGlieGxfZGV2aWNlX3Z0cG0pKTsKKyAgICByYyA9IDE7CisgICAgZm9yIChpID0g MDsgaSA8IG5iOyArK2kpIHsKKyAgICAgICAgaWYoIWxpYnhsX3V1aWRfY29tcGFyZSh1dWlkLCAm dnRwbXNbaV0udXVpZCkpIHsKKyAgICAgICAgICAgIHZ0cG0tPmJhY2tlbmRfZG9taWQgPSB2dHBt c1tpXS5iYWNrZW5kX2RvbWlkOworICAgICAgICAgICAgdnRwbS0+ZGV2aWQgPSB2dHBtc1tpXS5k ZXZpZDsKKyAgICAgICAgICAgIGxpYnhsX3V1aWRfY29weShjdHgsICZ2dHBtLT51dWlkLCAmdnRw bXNbaV0udXVpZCk7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgfQorICAgIH0KKworICAgIGxpYnhsX2RldmljZV92dHBtX2xpc3RfZnJlZSh2dHBtcywg bmIpOworICAgIHJldHVybiByYzsKK30KKwordm9pZCBsaWJ4bF92dHBtaW5mb19saXN0X2ZyZWUo bGlieGxfdnRwbWluZm8qIGxpc3QsIGludCBucikKK3sKKyAgIGludCBpOworICAgZm9yIChpID0g MDsgaSA8IG5yOyBpKyspCisgICAgICBsaWJ4bF92dHBtaW5mb19kaXNwb3NlKCZsaXN0W2ldKTsK KyAgIGZyZWUobGlzdCk7Cit9CisKK3ZvaWQgbGlieGxfZGV2aWNlX3Z0cG1fbGlzdF9mcmVlKGxp YnhsX2RldmljZV92dHBtKiBsaXN0LCBpbnQgbnIpCit7CisgICBpbnQgaTsKKyAgIGZvciAoaSA9 IDA7IGkgPCBucjsgaSsrKQorICAgICAgbGlieGxfZGV2aWNlX3Z0cG1fZGlzcG9zZSgmbGlzdFtp XSk7CisgICBmcmVlKGxpc3QpOworfQorCitMSUJYTF9ERUZJTkVfREVWSUNFX0FERCh2dHBtKQor c3RhdGljIExJQlhMX0RFRklORV9ERVZJQ0VTX0FERCh2dHBtKQorTElCWExfREVGSU5FX0RFVklD RV9SRU1PVkUodnRwbSkKKworREVGSU5FX0RFVklDRV9UWVBFX1NUUlVDVCh2dHBtKTsKKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLworCi0tIAoyLjYuNgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=