From mboxrd@z Thu Jan 1 00:00:00 1970 From: Venu Busireddy Subject: Containing unrecoverable AER errors... Date: Wed, 7 Jun 2017 14:24:32 -0500 Message-ID: <20170607192432.20500-1-venu.busireddy@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: venu.busireddy@oracle.com, Ian Jackson , Wei Liu Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org CkhpLAoKSSBhbSB3b3JraW5nIG9uIGNyZWF0aW5nIGEgcGF0Y2ggdG8gYWlkIGluIGNvbnRhaW5p bmcgdGhlIHVucmVjb3ZlcmFibGUKQUVSIGVycm9ycyBnZW5lcmF0ZWQgYnkgUENJIGRldmljZXMg YXNzaWduZWQgdG8gZ3Vlc3RzIGluIHBhc3N0aHJvdWdoCm1vZGUuCgpUaGUgb3ZlcmFsbCBhcHBy b2FjaCBpcyBhcyBmb2xsb3dzOgoKMS4gQ2hhbmdlIHRoZSBCSU9TIHNldHRpbmdzIHN1Y2ggdGhh dCB0aGUgQUVSIGVycm9yIGhhbmRsaW5nIGlzIGRlbGVnYXRlZAogICB0byB0aGUgaG9zdC4KCjIu IENoYW5nZSB0aGUgeGVuX3BjaWJhY2sgZHJpdmVyIHRvIHN0b3JlIHRoZSBuYW1lIChTQkRGKSBv ZiB0aGUgZXJyaW5nCiAgIGRldmljZSBpbiB4ZW5zdG9yZS4KCjMuIEF0IHRoZSB0aW1lIG9mIGNy ZWF0aW5nIHRoZSBndWVzdCwgc2V0dXAgYSB3YXRjaGVyIGZvciBzdWNoIHdyaXRlcyB0bwogICB0 aGUgeGVuc3RvcmUuCgo0LiBXaGVuIHRoZSB3YXRjaGVyIGlzIGtpY2tlZCBvZmYgZHVlIHRvIGVy cm9ycywgKnNodXRkb3duKiB0aGUgZ3Vlc3QgYW5kCiAgIG1hcmsgdGhlIGVycmluZyBkZXZpY2Ug dW5hc3NpZ25hYmxlIHVudGlsIGFkbWluaXN0cmF0aXZlIGludGVydmVudGlvbi4KCkkgZ290IGFs bCBvZiB0aGlzIHdvcmtpbmcsIGJ1dCBJIHdhcyBhZHZpc2VkIHRoYXQgc2h1dHRpbmcgZG93biB0 aGUKZ3Vlc3QgaXMgbm90IHRoZSBjb3JyZWN0IGFwcHJvYWNoLCBiZWNhdXNlIHRoZSBndWVzdCBt YXkgb3IgbWF5IG5vdApyZXNwb25kIHRvIHRoZSBzaHV0ZG93bi4gVGhlIHN1Z2dlc3Rpb24gd2Fz IHRvIGRlc3Ryb3kgdGhlIGd1ZXN0LgoKSSByYW4gaW50byBhIHByb2JsZW0gd2l0aCB0aGF0LiBs aWJ4bF9kb21haW5fZGVzdHJveSgpIGlzIG5vdApjYWxsYWJsZSBmcm9tIHdpdGhpbiBsaWJ4bC4g SSB0cmllZCB0byBjcmVhdGUgYSBuZXcgd3JhcHBlciB0byBjYWxsCmxpYnhsX19kb21haW5fZGVz dHJveSgpLCBidXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG5ldmVyIGdldHMgY2FsbGVkIQpOb3Qg c3VycHJpc2luZ2x5LCBiZWNhdXNlIHRoZSBkZXNjcmlwdGlvbiBpbiBsaWJ4bC9saWJ4bF9pbnRl cm5hbC5oCmFib3V0IGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIGRvZXMgcHJvaGliaXQgdGhpcyEK CldoYXQgaXMgdGhlIGJlc3Qgd2F5IHRvIGtpbGwvZGVzdHJveSBhIGd1ZXN0IGZyb20gd2l0aGlu IGxpYnhsPyBDb3VsZCB5b3UKcGxlYXNlIGFkdmlzZT8gSSBhbSBpbmNsdWRpbmcgdGhlIHBhdGNo ZXMgYmVsb3cgZm9yIHJlZmVyZW5jZSAocGxlYXNlCmlnbm9yZSB0aGUgZmV3IGRlYnVnIHN0YXRl bWVudHMpLiBUaGUgcHJvYmxlbSBwYXJ0IGlzIHRoZSBmdW5jdGlvbgphZXJfYmFja2VuZF93YXRj aF9jYWxsYmFjaygpIGluIHRvb2xzL2xpYnhsL2xpYnhsX3BjaS5jLgoKCmRpZmYgLS1naXQgYS9k cml2ZXJzL3hlbi94ZW4tcGNpYmFjay9wY2lfc3R1Yi5jIGIvZHJpdmVycy94ZW4veGVuLXBjaWJh Y2svcGNpX3N0dWIuYwppbmRleCA2MzMxYTk1Li41YTRiYWU1IDEwMDY0NAotLS0gYS9kcml2ZXJz L3hlbi94ZW4tcGNpYmFjay9wY2lfc3R1Yi5jCisrKyBiL2RyaXZlcnMveGVuL3hlbi1wY2liYWNr L3BjaV9zdHViLmMKQEAgLTY1NiwxMSArNjU2LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNp X2RldmljZV9pZCBwY2lzdHViX2lkc1tdID0gewogfTsKIAogI2RlZmluZSBQQ0lfTk9ERU5BTUVf TUFYIDQwCisjZGVmaW5lIFBDSV9ERVZJQ0VOQU1FX01BWCAxNAogc3RhdGljIHZvaWQga2lsbF9k b21haW5fYnlfZGV2aWNlKHN0cnVjdCBwY2lzdHViX2RldmljZSAqcHNkZXYpCiB7CiAJc3RydWN0 IHhlbmJ1c190cmFuc2FjdGlvbiB4YnQ7CiAJaW50IGVycjsKIAljaGFyIG5vZGVuYW1lW1BDSV9O T0RFTkFNRV9NQVhdOworCWNoYXIgZGV2aWNlbmFtZVtQQ0lfREVWSUNFTkFNRV9NQVhdOwogCiAJ QlVHX09OKCFwc2Rldik7CiAJc25wcmludGYobm9kZW5hbWUsIFBDSV9OT0RFTkFNRV9NQVgsICIv bG9jYWwvZG9tYWluLzAvYmFja2VuZC9wY2kvJWQvMCIsCkBAIC02NzUsNiArNjc3LDE4IEBAIHN0 YXRpYyB2b2lkIGtpbGxfZG9tYWluX2J5X2RldmljZShzdHJ1Y3QgcGNpc3R1Yl9kZXZpY2UgKnBz ZGV2KQogCX0KIAkvKlBWIEFFUiBoYW5kbGVycyB3aWxsIHNldCB0aGlzIGZsYWcqLwogCXhlbmJ1 c19wcmludGYoeGJ0LCBub2RlbmFtZSwgImFlclN0YXRlIiAsICJhZXJmYWlsIik7CisKKwkvKgor CSAqIFhlbmQgdmVyc2lvbnMgPD0gNC40IGRlcGVuZCBvbiAiYWVyU3RhdGUiIGFuZCBleHBlY3Qg aXRzIHZhbHVlCisJICogdG8gYmUgc2V0IHRvICJhZXJmYWlsIi4gVGhlcmVmb3JlLCBhZGQgYSBu ZXcgbm9kZSAiYWVyRmFpbGVkU0JERiIKKwkgKiB0byBzZXQgdGhlIGRldmljZSBuYW1lLgorCSAq LworCXNucHJpbnRmKGRldmljZW5hbWUsIFBDSV9ERVZJQ0VOQU1FX01BWCwgIiUwNHg6JTAyeDol MDJ4LiV4IiwKKwkJIHBjaV9kb21haW5fbnIocHNkZXYtPmRldi0+YnVzKSwKKwkJIHBzZGV2LT5k ZXYtPmJ1cy0+bnVtYmVyLAorCQkgUENJX1NMT1QocHNkZXYtPmRldi0+ZGV2Zm4pLCBQQ0lfRlVO Qyhwc2Rldi0+ZGV2LT5kZXZmbikpOworCXhlbmJ1c19wcmludGYoeGJ0LCBub2RlbmFtZSwgImFl ckZhaWxlZFNCREYiICwgZGV2aWNlbmFtZSk7CisKIAllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25f ZW5kKHhidCwgMCk7CiAJaWYgKGVycikgewogCQlpZiAoZXJyID09IC1FQUdBSU4pCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL2RvbWN0bC5jIGIveGVuL2NvbW1vbi9kb21jdGwuYwppbmRleCA5NTFh NWRjLi41ZTBmMTIzIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2RvbWN0bC5jCisrKyBiL3hlbi9j b21tb24vZG9tY3RsLmMKQEAgLTM5Myw5ICszOTMsMTUgQEAgbG9uZyBkb19kb21jdGwoWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAgIHsKICAgICBjYXNl IFhFTl9ET01DVExfY3JlYXRlZG9tYWluOgogICAgIGNhc2UgWEVOX0RPTUNUTF90ZXN0X2Fzc2ln bl9kZXZpY2U6CisgICAgY2FzZSBYRU5fRE9NQ1RMX3Rlc3RfaGlkZGVuX2RldmljZToKICAgICBj YXNlIFhFTl9ET01DVExfZ2Ric3hfZ3Vlc3RtZW1pbzoKICAgICAgICAgZCA9IE5VTEw7CiAgICAg ICAgIGJyZWFrOworICAgIGNhc2UgWEVOX0RPTUNUTF9oaWRlX2RldmljZToKKyAgICBjYXNlIFhF Tl9ET01DVExfdW5oaWRlX2RldmljZToKKyAgICAgICAgcmN1X2xvY2tfZG9tYWluKGRvbV94ZW4p OworICAgICAgICBkID0gZG9tX3hlbjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg ICAgICAgZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9pZChvcC0+ZG9tYWluKTsKICAgICAgICAgaWYg KCAhZCAmJiBvcC0+Y21kICE9IFhFTl9ET01DVExfZ2V0ZG9tYWluaW5mbyApCmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3BjaS5jCmluZGV4IGM4ZTJkMmQuLmViOGZkOTkgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3BjaS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCkBAIC0z MSw2ICszMSw3IEBACiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vdGFz a2xldC5oPgogI2luY2x1ZGUgPHhzbS94c20uaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KICNpbmNs dWRlIDxhc20vbXNpLmg+CiAjaW5jbHVkZSAiYXRzLmgiCiAKQEAgLTEzMzMsMTkgKzEzMzQsMzEg QEAgaW50IGlvbW11X3JlbW92ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAgICAgcmV0 dXJuIGhkLT5wbGF0Zm9ybV9vcHMtPnJlbW92ZV9kZXZpY2UocGRldi0+ZGV2Zm4sIHBjaV90b19k ZXYocGRldikpOwogfQogCitzdGF0aWMgYm9vbCBkZXZpY2VfYXNzaWduZWRfdG9fZG9tYWluKHN0 cnVjdCBkb21haW4gKmQsIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCit7CisgICAgYm9vbCBy YyA9IGZhbHNlOworCisgICAgcGNpZGV2c19sb2NrKCk7CisKKyAgICBpZiAoIHBjaV9nZXRfcGRl dl9ieV9kb21haW4oZCwgc2VnLCBidXMsIGRldmZuKSApCisgICAgICAgIHJjID0gdHJ1ZTsKKwor ICAgIHBjaWRldnNfdW5sb2NrKCk7CisgICAgcmV0dXJuIHJjOworfQorCiAvKgogICogSWYgdGhl IGRldmljZSBpc24ndCBvd25lZCBieSB0aGUgaGFyZHdhcmUgZG9tYWluLCBpdCBtZWFucyBpdCBh bHJlYWR5CiAgKiBoYXMgYmVlbiBhc3NpZ25lZCB0byBvdGhlciBkb21haW4sIG9yIGl0IGRvZXNu J3QgZXhpc3QuCiAgKi8KIHN0YXRpYyBpbnQgZGV2aWNlX2Fzc2lnbmVkKHUxNiBzZWcsIHU4IGJ1 cywgdTggZGV2Zm4pCiB7Ci0gICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7Ci0KLSAgICBwY2lkZXZz X2xvY2soKTsKLSAgICBwZGV2ID0gcGNpX2dldF9wZGV2X2J5X2RvbWFpbihoYXJkd2FyZV9kb21h aW4sIHNlZywgYnVzLCBkZXZmbik7Ci0gICAgcGNpZGV2c191bmxvY2soKTsKKyAgICByZXR1cm4g ZGV2aWNlX2Fzc2lnbmVkX3RvX2RvbWFpbihoYXJkd2FyZV9kb21haW4sIHNlZywgYnVzLCBkZXZm bikgPyAwIDogLUVCVVNZOworfQogCi0gICAgcmV0dXJuIHBkZXYgPyAwIDogLUVCVVNZOworc3Rh dGljIGludCBkZXZpY2VfaGlkZGVuKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCit7CisgICAg cmV0dXJuIGRldmljZV9hc3NpZ25lZF90b19kb21haW4oZG9tX3hlbiwgc2VnLCBidXMsIGRldmZu KSA/IC1FQlVTWSA6IDA7CiB9CiAKIHN0YXRpYyBpbnQgYXNzaWduX2RldmljZShzdHJ1Y3QgZG9t YWluICpkLCB1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuLCB1MzIgZmxhZykKQEAgLTEzNTQsNiAr MTM2NywyMiBAQCBzdGF0aWMgaW50IGFzc2lnbl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2 IHNlZywgdTggYnVzLCB1OCBkZXZmbiwgdTMyIGZsYWcpCiAgICAgc3RydWN0IHBjaV9kZXYgKnBk ZXY7CiAgICAgaW50IHJjID0gMDsKIAorICAgIGlmICggZGV2aWNlX2hpZGRlbihzZWcsIGJ1cywg ZGV2Zm4pICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIGQgPT0gZG9tX3hl biApCisgICAgeworICAgICAgICBwZGV2ID0gcGNpX2dldF9wZGV2KHNlZywgYnVzLCBkZXZmbik7 CisgICAgICAgIGlmICggcGRldiApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBkZXYtPmRvbWFp biA9IGRvbV94ZW47CisgICAgICAgICAgICBsaXN0X2FkZCgmcGRldi0+ZG9tYWluX2xpc3QsICZk b21feGVuLT5hcmNoLnBkZXZfbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAg IH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCiAg ICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyApCiAgICAgICAgIHJl dHVybiAwOwogCkBAIC0xNDE3LDEwICsxNDQ2LDIzIEBAIGludCBkZWFzc2lnbl9kZXZpY2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbikKICAgICBzdHJ1Y3QgcGNp X2RldiAqcGRldiA9IE5VTEw7CiAgICAgaW50IHJldCA9IDA7CiAKKyAgICBBU1NFUlQocGNpZGV2 c19sb2NrZWQoKSk7CisKKyAgICBpZiAoIGQgPT0gZG9tX3hlbiApCisgICAgeworICAgICAgICBw ZGV2ID0gcGNpX2dldF9wZGV2KHNlZywgYnVzLCBkZXZmbik7CisgICAgICAgIGlmICggcGRldiAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHBkZXYtPmRvbWFpbiA9IGhhcmR3YXJlX2RvbWFpbjsK KyAgICAgICAgICAgIGxpc3RfYWRkKCZwZGV2LT5kb21haW5fbGlzdCwgJmRvbV94ZW4tPmFyY2gu cGRldl9saXN0KTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICAgICAg ZWxzZSByZXR1cm4gLUVOT0RFVjsKKyAgICB9CisKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8 ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBBU1NF UlQocGNpZGV2c19sb2NrZWQoKSk7CiAgICAgcGRldiA9IHBjaV9nZXRfcGRldl9ieV9kb21haW4o ZCwgc2VnLCBidXMsIGRldmZuKTsKICAgICBpZiAoICFwZGV2ICkKICAgICAgICAgcmV0dXJuIC1F Tk9ERVY7CkBAIC0xNjAwLDYgKzE2NDIsMTUgQEAgaW50IGlvbW11X2RvX3BjaV9kb21jdGwoCiAg ICAgICAgICAgICAgICAgICAgc2VnLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2 Zm4pKTsKICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CiAgICAgICAgIH0KKworICAgICAgICBp ZiAoIGRldmljZV9oaWRkZW4oc2VnLCBidXMsIGRldmZuKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHByaW50ayhYRU5MT0dfR19JTkZPCisgICAgICAgICAgICAgICAgICAgIiUwNHg6JTAyeDol MDJ4LiV1IGRldmljZSBpcyBoaWRkZW5cbiIsCisgICAgICAgICAgICAgICAgICAgc2VnLCBidXMs IFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pKTsKKyAgICAgICAgICAgIHJldCA9IC1F SU5WQUw7CisgICAgICAgIH0KKwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWEVOX0RPTUNU TF9hc3NpZ25fZGV2aWNlOgpAQCAtMTYzNiw4ICsxNjg3LDE1IEBAIGludCBpb21tdV9kb19wY2lf ZG9tY3RsKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXQgPSBk ZXZpY2VfYXNzaWduZWQoc2VnLCBidXMsIGRldmZuKSA/OgotICAgICAgICAgICAgICBhc3NpZ25f ZGV2aWNlKGQsIHNlZywgYnVzLCBkZXZmbiwgZmxhZyk7CisgICAgICAgIGlmICggZGV2aWNlX2hp ZGRlbihzZWcsIGJ1cywgZGV2Zm4pICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gLUVJ TlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhZGV2 aWNlX2Fzc2lnbmVkKHNlZywgYnVzLCBkZXZmbikgKQorICAgICAgICAgICAgcmV0ID0gYXNzaWdu X2RldmljZShkLCBzZWcsIGJ1cywgZGV2Zm4sIGZsYWcpOworCiAgICAgICAgIGlmICggcmV0ID09 IC1FUkVTVEFSVCApCiAgICAgICAgICAgICByZXQgPSBoeXBlcmNhbGxfY3JlYXRlX2NvbnRpbnVh dGlvbihfX0hZUEVSVklTT1JfZG9tY3RsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImgiLCB1X2RvbWN0bCk7CkBAIC0xNjcxLDYgKzE3MjksMTIgQEAg aW50IGlvbW11X2RvX3BjaV9kb21jdGwoCiAgICAgICAgIGJ1cyA9IFBDSV9CVVMobWFjaGluZV9z YmRmKTsKICAgICAgICAgZGV2Zm4gPSBQQ0lfREVWRk4yKG1hY2hpbmVfc2JkZik7CiAKKyAgICAg ICAgaWYgKCBkZXZpY2VfaGlkZGVuKHNlZywgYnVzLCBkZXZmbikgKQorICAgICAgICB7CisgICAg ICAgICAgICByZXQgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog ICAgICAgICBwY2lkZXZzX2xvY2soKTsKICAgICAgICAgcmV0ID0gZGVhc3NpZ25fZGV2aWNlKGQs IHNlZywgYnVzLCBkZXZmbik7CiAgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7CkBAIC0xNjc5LDcg KzE3NDMsODYgQEAgaW50IGlvbW11X2RvX3BjaV9kb21jdGwoCiAgICAgICAgICAgICAgICAgICAg ImRlYXNzaWduICUwNHg6JTAyeDolMDJ4LiV1IGZyb20gZG9tJWQgZmFpbGVkICglZClcbiIsCiAg ICAgICAgICAgICAgICAgICAgc2VnLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2 Zm4pLAogICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmV0KTsKKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFhFTl9ET01DVExfaGlkZV9kZXZpY2U6CisgICAgICAgIG1hY2hpbmVf c2JkZiA9IGRvbWN0bC0+dS5hc3NpZ25fZGV2aWNlLnUucGNpLm1hY2hpbmVfc2JkZjsKKyAgICAg ICAgcmV0ID0geHNtX2hpZGVfZGV2aWNlKFhTTV9IT09LLCBkLCBtYWNoaW5lX3NiZGYpOworICAg ICAgICBpZiAoIHJldCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIHVubGlr ZWx5KGQtPmlzX2R5aW5nKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IC1FQUdBSU47 CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNlZyA9IG1hY2hpbmVf c2JkZiA+PiAxNjsKKyAgICAgICAgYnVzID0gUENJX0JVUyhtYWNoaW5lX3NiZGYpOworICAgICAg ICBkZXZmbiA9IFBDSV9ERVZGTjIobWFjaGluZV9zYmRmKTsKKyAgICAgICAgZmxhZyA9IGRvbWN0 bC0+dS5hc3NpZ25fZGV2aWNlLmZsYWc7CisKKyAgICAgICAgaWYgKCBkZXZpY2VfaGlkZGVuKHNl ZywgYnVzLCBkZXZmbikgKQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSAtRUlOVkFMOwor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBwY2lkZXZzX2xvY2soKTsK KyAgICAgICAgcmV0ID0gYXNzaWduX2RldmljZShkb21feGVuLCBzZWcsIGJ1cywgZGV2Zm4sIGZs YWcpOworICAgICAgICBwY2lkZXZzX3VubG9jaygpOworICAgICAgICBpZiAoIHJldCA9PSAtRVJF U1RBUlQgKQorICAgICAgICAgICAgcmV0ID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24o X19IWVBFUlZJU09SX2RvbWN0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJoIiwgdV9kb21jdGwpOworICAgICAgICBlbHNlIGlmICggcmV0ICkKKyAg ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIlhFTl9ET01DVExfaGlkZV9kZXZpY2U6ICIK KyAgICAgICAgICAgICAgICAgICAiaGlkZSAlMDR4OiUwMng6JTAyeC4ldSBmYWlsZWQgKCVkKVxu IiwKKyAgICAgICAgICAgICAgICAgICBzZWcsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVO QyhkZXZmbiksIHJldCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fRE9NQ1RMX3Vu aGlkZV9kZXZpY2U6CisgICAgICAgIG1hY2hpbmVfc2JkZiA9IGRvbWN0bC0+dS5hc3NpZ25fZGV2 aWNlLnUucGNpLm1hY2hpbmVfc2JkZjsKKyAgICAgICAgcmV0ID0geHNtX3VuaGlkZV9kZXZpY2Uo WFNNX0hPT0ssIGQsIG1hY2hpbmVfc2JkZik7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAg ICAgIGJyZWFrOworCisgICAgICAgIGlmICggdW5saWtlbHkoZC0+aXNfZHlpbmcpICkKKyAgICAg ICAgeworICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisKKyAgICAgICAgc2VnID0gbWFjaGluZV9zYmRmID4+IDE2OworICAgICAgICBidXMg PSBQQ0lfQlVTKG1hY2hpbmVfc2JkZik7CisgICAgICAgIGRldmZuID0gUENJX0RFVkZOMihtYWNo aW5lX3NiZGYpOworCisgICAgICAgIGlmICggIWRldmljZV9oaWRkZW4oc2VnLCBidXMsIGRldmZu KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHBjaWRldnNfbG9jaygpOworICAgICAgICByZXQg PSBkZWFzc2lnbl9kZXZpY2UoZG9tX3hlbiwgc2VnLCBidXMsIGRldmZuKTsKKyAgICAgICAgcGNp ZGV2c191bmxvY2soKTsKKworICAgICAgICBpZiAoIHJldCA9PSAtRVJFU1RBUlQgKQorICAgICAg ICAgICAgcmV0ID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24oX19IWVBFUlZJU09SX2Rv bWN0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo IiwgdV9kb21jdGwpOworICAgICAgICBlbHNlIGlmICggcmV0ICkKKyAgICAgICAgICAgIHByaW50 ayhYRU5MT0dfR19FUlIgIlhFTl9ET01DVExfdW5oaWRlX2RldmljZTogIgorICAgICAgICAgICAg ICAgICAgICJhc3NpZ24gJTA0eDolMDJ4OiUwMnguJXUgdG8gZG9tJWQgZmFpbGVkICglZClcbiIs CisgICAgICAgICAgICAgICAgICAgc2VnLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMo ZGV2Zm4pLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmV0KTsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFhFTl9ET01DVExfdGVzdF9oaWRkZW5fZGV2aWNlOgorICAgICAg ICBtYWNoaW5lX3NiZGYgPSBkb21jdGwtPnUuYXNzaWduX2RldmljZS51LnBjaS5tYWNoaW5lX3Ni ZGY7CisgICAgICAgIHNlZyA9IG1hY2hpbmVfc2JkZiA+PiAxNjsKKyAgICAgICAgYnVzID0gUENJ X0JVUyhtYWNoaW5lX3NiZGYpOworICAgICAgICBkZXZmbiA9IFBDSV9ERVZGTjIobWFjaGluZV9z YmRmKTsKIAorICAgICAgICByZXQgPSBkZXZpY2VfaGlkZGVuKHNlZywgYnVzLCBkZXZmbik7CiAg ICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9kb21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAppbmRleCBlNmNmMjEx Li4xYjA0M2VhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCkBAIC0xMjIyLDYgKzEyMjIsOSBAQCBzdHJ1Y3Qg eGVuX2RvbWN0bCB7CiAjZGVmaW5lIFhFTl9ET01DVExfZ2Ric3hfcGF1c2V2Y3B1ICAgICAgICAg ICAgIDEwMDEKICNkZWZpbmUgWEVOX0RPTUNUTF9nZGJzeF91bnBhdXNldmNwdSAgICAgICAgICAg MTAwMgogI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X2RvbXN0YXR1cyAgICAgICAgICAgICAxMDAz CisjZGVmaW5lIFhFTl9ET01DVExfaGlkZV9kZXZpY2UgICAgICAgICAgICAgICAgIDIwMDEKKyNk ZWZpbmUgWEVOX0RPTUNUTF91bmhpZGVfZGV2aWNlICAgICAgICAgICAgICAgMjAwMgorI2RlZmlu ZSBYRU5fRE9NQ1RMX3Rlc3RfaGlkZGVuX2RldmljZSAgICAgICAgICAyMDAzCiAgICAgdWludDMy X3QgaW50ZXJmYWNlX3ZlcnNpb247IC8qIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gKi8K ICAgICBkb21pZF90ICBkb21haW47CiAgICAgdW5pb24gewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCA2MmZjZWE2Li4w YjgyMGUxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAorKysgYi94ZW4vaW5j bHVkZS94c20vZHVtbXkuaApAQCAtMzU1LDYgKzM1NSwyNCBAQCBzdGF0aWMgWFNNX0lOTElORSBp bnQgeHNtX2RlYXNzaWduX2RldmljZShYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwg dWludAogICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21h aW4sIGQpOwogfQogCitzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2hpZGVfZGV2aWNlKFhTTV9E RUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBtYWNoaW5lX2JkZikKK3sKKyAg ICBYU01fQVNTRVJUX0FDVElPTihYU01fSE9PSyk7CisgICAgcmV0dXJuIHhzbV9kZWZhdWx0X2Fj dGlvbihhY3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwgZCk7Cit9CisKK3N0YXRpYyBYU01fSU5MSU5F IGludCB4c21fdW5oaWRlX2RldmljZShYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwg dWludDMyX3QgbWFjaGluZV9iZGYpCit7CisgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0hPT0sp OworICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4s IGQpOworfQorCitzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX3Rlc3RfaGlkZGVuX2RldmljZShY U01fREVGQVVMVF9BUkcgdWludDMyX3QgbWFjaGluZV9iZGYpCit7CisgICAgWFNNX0FTU0VSVF9B Q1RJT04oWFNNX0hPT0spOworICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBj dXJyZW50LT5kb21haW4sIE5VTEwpOworfQorCiAjZW5kaWYgLyogSEFTX1BBU1NUSFJPVUdIICYm IEhBU19QQ0kgKi8KIAogI2lmIGRlZmluZWQoQ09ORklHX0hBU19QQVNTVEhST1VHSCkgJiYgZGVm aW5lZChDT05GSUdfSEFTX0RFVklDRV9UUkVFKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNt L3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCmluZGV4IDYwYzBmZDYuLjAzZGJlZmYgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94c20uaAorKysgYi94ZW4vaW5jbHVkZS94c20veHNt LmgKQEAgLTQ3OSw2ICs0NzksMjIgQEAgc3RhdGljIGlubGluZSBpbnQgeHNtX2RlYXNzaWduX2Rl dmljZSh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAqZCwgdWludDMKIHsKICAgICBy ZXR1cm4geHNtX29wcy0+ZGVhc3NpZ25fZGV2aWNlKGQsIG1hY2hpbmVfYmRmKTsKIH0KKworc3Rh dGljIGlubGluZSBpbnQgeHNtX2hpZGVfZGV2aWNlKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3Qg ZG9tYWluICpkLCB1aW50MzJfdCBtYWNoaW5lX2JkZikKK3sKKyAgICByZXR1cm4geHNtX29wcy0+ aGlkZV9kZXZpY2UoZCwgbWFjaGluZV9iZGYpOworfQorCitzdGF0aWMgaW5saW5lIGludCB4c21f dW5oaWRlX2RldmljZSh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAqZCwgdWludDMy X3QgbWFjaGluZV9iZGYpCit7CisgICAgcmV0dXJuIHhzbV9vcHMtPnVuaGlkZV9kZXZpY2UoZCwg bWFjaGluZV9iZGYpOworfQorCitzdGF0aWMgaW5saW5lIGludCB4c21fdGVzdF9oaWRkZW5fZGV2 aWNlKHhzbV9kZWZhdWx0X3QgZGVmLCB1aW50MzJfdCBtYWNoaW5lX2JkZikKK3sKKyAgICByZXR1 cm4geHNtX29wcy0+dGVzdF9oaWRkZW5fZGV2aWNlKG1hY2hpbmVfYmRmKTsKK30KKwogI2VuZGlm IC8qIEhBU19QQVNTVEhST1VHSCAmJiBIQVNfUENJKSAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdf SEFTX1BBU1NUSFJPVUdIKSAmJiBkZWZpbmVkKENPTkZJR19IQVNfREVWSUNFX1RSRUUpCmRpZmYg LS1naXQgYS94ZW4veHNtL2R1bW15LmMgYi94ZW4veHNtL2R1bW15LmMKaW5kZXggM2NiNTQ5Mi4u NzgxMTFiYiAxMDA2NDQKLS0tIGEveGVuL3hzbS9kdW1teS5jCisrKyBiL3hlbi94c20vZHVtbXku YwpAQCAtOTQsNiArOTQsOSBAQCB2b2lkIF9faW5pdCB4c21fZml4dXBfb3BzIChzdHJ1Y3QgeHNt X29wZXJhdGlvbnMgKm9wcykKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRlc3RfYXNz aWduX2RldmljZSk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBhc3NpZ25fZGV2aWNl KTsKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGRlYXNzaWduX2RldmljZSk7CisgICAg c2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBoaWRlX2RldmljZSk7CisgICAgc2V0X3RvX2R1bW15 X2lmX251bGwob3BzLCB1bmhpZGVfZGV2aWNlKTsKKyAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChv cHMsIHRlc3RfaGlkZGVuX2RldmljZSk7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQ09ORklHX0hB U19QQVNTVEhST1VHSCkgJiYgZGVmaW5lZChDT05GSUdfSEFTX0RFVklDRV9UUkVFKQpkaWZmIC0t Z2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4 IGZkODRhYzAuLjM2OTU3NjggMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysg Yi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAgLTEzMTEsNiArMTMxMSwyMiBAQCBzdGF0aWMgaW50 IGZsYXNrX2RlYXNzaWduX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBtYWNoaW5l X2JkZikKIAogICAgIHJldHVybiBhdmNfY3VycmVudF9oYXNfcGVybShyc2lkLCBTRUNDTEFTU19S RVNPVVJDRSwgUkVTT1VSQ0VfX1JFTU9WRV9ERVZJQ0UsIE5VTEwpOwogfQorCitzdGF0aWMgaW50 IGZsYXNrX3VuaGlkZV9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgbWFjaGluZV9i ZGYpCit7CisgICAgcmV0dXJuIGZsYXNrX2RlYXNzaWduX2RldmljZShkLCBtYWNoaW5lX2JkZik7 Cit9CisKK3N0YXRpYyBpbnQgZmxhc2tfaGlkZV9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdWlu dDMyX3QgbWFjaGluZV9iZGYpCit7CisgICAgcmV0dXJuIGZsYXNrX2Fzc2lnbl9kZXZpY2UoZCwg bWFjaGluZV9iZGYpOworfQorCitzdGF0aWMgaW50IGZsYXNrX3Rlc3RfaGlkZGVuX2RldmljZShz dHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBtYWNoaW5lX2JkZikKK3sKKyAgICByZXR1cm4gZmxh c2tfdGVzdF9hc3NpZ25fZGV2aWNlKGQsIG1hY2hpbmVfYmRmKTsKK30KKwogI2VuZGlmIC8qIEhB U19QQVNTVEhST1VHSCAmJiBIQVNfUENJICovCiAKICNpZiBkZWZpbmVkKENPTkZJR19IQVNfUEFT U1RIUk9VR0gpICYmIGRlZmluZWQoQ09ORklHX0hBU19ERVZJQ0VfVFJFRSkKQEAgLTE3ODMsNiAr MTc5OSw5IEBAIHN0YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxhc2tfb3BzID0gewogICAg IC50ZXN0X2Fzc2lnbl9kZXZpY2UgPSBmbGFza190ZXN0X2Fzc2lnbl9kZXZpY2UsCiAgICAgLmFz c2lnbl9kZXZpY2UgPSBmbGFza19hc3NpZ25fZGV2aWNlLAogICAgIC5kZWFzc2lnbl9kZXZpY2Ug PSBmbGFza19kZWFzc2lnbl9kZXZpY2UsCisgICAgLmhpZGVfZGV2aWNlID0gZmxhc2tfaGlkZV9k ZXZpY2UsCisgICAgLnVuaGlkZV9kZXZpY2UgPSBmbGFza191bmhpZGVfZGV2aWNlLAorICAgIC50 ZXN0X2hpZGRlbl9kZXZpY2UgPSBmbGFza190ZXN0X2hpZGRlbl9kZXZpY2UsCiAjZW5kaWYKIAog I2lmIGRlZmluZWQoQ09ORklHX0hBU19QQVNTVEhST1VHSCkgJiYgZGVmaW5lZChDT05GSUdfSEFT X0RFVklDRV9UUkVFKQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3Zl Y3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwppbmRleCAxZjdlYjM1 Li44NzNkZjU5IDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9y cworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwpAQCAtNDM3LDEzICs0 MzcsMTMgQEAgY2xhc3MgcmVzb3VyY2UKICMgWEVOX0RPTUNUTF9pb21lbV9wZXJtaXNzaW9uLCBY RU5fRE9NQ1RMX21lbW9yeV9tYXBwaW5nCiAgICAgYWRkX2lvbWVtCiAgICAgcmVtb3ZlX2lvbWVt Ci0jIFhFTl9ET01DVExfZ2V0X2RldmljZV9ncm91cCwgWEVOX0RPTUNUTF90ZXN0X2Fzc2lnbl9k ZXZpY2U6CisjIFhFTl9ET01DVExfZ2V0X2RldmljZV9ncm91cCwgWEVOX0RPTUNUTF90ZXN0X2Fz c2lnbl9kZXZpY2UsIFhFTl9ET01DVExfdGVzdF9oaWRkZW5fZGV2aWNlOgogIyAgc291cmNlID0g ZG9tYWluIG1ha2luZyB0aGUgaHlwZXJjYWxsCiAjICB0YXJnZXQgPSBkZXZpY2UgYmVpbmcgcXVl cmllZAogICAgIHN0YXRfZGV2aWNlCi0jIFhFTl9ET01DVExfYXNzaWduX2RldmljZQorIyBYRU5f RE9NQ1RMX2Fzc2lnbl9kZXZpY2UsIFhFTl9ET01DVExfaGlkZV9kZXZpY2UKICAgICBhZGRfZGV2 aWNlCi0jIFhFTl9ET01DVExfZGVhc3NpZ25fZGV2aWNlCisjIFhFTl9ET01DVExfZGVhc3NpZ25f ZGV2aWNlLCBYRU5fRE9NQ1RMX3VuaGlkZV9kZXZpY2UKICAgICByZW1vdmVfZGV2aWNlCiAjIGNo ZWNrZWQgZm9yIFBDSSBob3QgYW5kIGNvbGQtcGx1ZyBoeXBlcmNhbGxzLCB3aXRoIHRhcmdldCBh cyB0aGUgUENJIGRldmljZQogIyBjaGVja2VkIGZvciBDUFUgYW5kIG1lbW9yeSBob3RwbHVnIHdp dGggeGVuX3QgYXMgdGhlIHRhcmdldApkaWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwucG9kLjEuaW4g Yi9kb2NzL21hbi94bC5wb2QuMS5pbgppbmRleCA3OGJmODg0Li44NmY3MDg5IDEwMDY0NAotLS0g YS9kb2NzL21hbi94bC5wb2QuMS5pbgorKysgYi9kb2NzL21hbi94bC5wb2QuMS5pbgpAQCAtMTQ2 Miw2ICsxNDYyLDEzIEBAIFRoZXNlIGFyZSBkZXZpY2VzIGluIHRoZSBzeXN0ZW0gd2hpY2ggYXJl IGNvbmZpZ3VyZWQgdG8gYmUKIGF2YWlsYWJsZSBmb3IgcGFzc3Rocm91Z2ggYW5kIGFyZSBib3Vu ZCB0byBhIHN1aXRhYmxlIFBDSQogYmFja2VuZCBkcml2ZXIgaW4gZG9tYWluIDAgcmF0aGVyIHRo YW4gYSByZWFsIGRyaXZlci4KIAorPWl0ZW0gQjxwY2ktYXNzaWduYWJsZS1saXN0LWhpZGRlbj4K KworTGlzdCBhbGwgdGhlIGFzc2lnbmFibGUgUENJIGRldmljZXMgdGhhdCBhcmUgaGlkZGVuLgor V2hlbiBhIFBDSSBkZXZpY2UgYXNzaWduZWQgdG8gYSBndWVzdCBpbiBwYXNzdGhyb3VnaCBtb2Rl IGNhdXNlcwordW5yZWNvdmVyYWJsZSBBRVIgZXJyb3JzLCB0aGUgaHlwZXJ2aXNvciBzaHV0cyBk b3duIHRoZSBndWVzdCBhbmQgaGlkZXMKK3RoZSBkZXZpY2UgZnJvbSBiZWluZyBhc3NpZ25hYmxl IHRvIHRoZSBndWVzdHMuCisKID1pdGVtIEI8cGNpLWFzc2lnbmFibGUtYWRkPiBJPEJERj4KIAog TWFrZSB0aGUgZGV2aWNlIGF0IFBDSSBCdXMvRGV2aWNlL0Z1bmN0aW9uIEJERiBhc3NpZ25hYmxl IHRvIGd1ZXN0cy4KQEAgLTE0ODQsNiArMTQ5MSwyMyBAQCBpdCB3aWxsIGFsc28gYXR0ZW1wdCB0 byByZS1iaW5kIHRoZSBkZXZpY2UgdG8gaXRzIG9yaWdpbmFsIGRyaXZlciwgbWFraW5nIGl0CiB1 c2FibGUgYnkgRG9tYWluIDAgYWdhaW4uICBJZiB0aGUgZGV2aWNlIGlzIG5vdCBib3VuZCB0byBw Y2liYWNrLCBpdCB3aWxsCiByZXR1cm4gc3VjY2Vzcy4KIAorPWl0ZW0gQjxwY2ktYXNzaWduYWJs ZS1oaWRlPiBJPEJERj4KKworSGlkZSB0aGUgZGV2aWNlIGF0IFBDSSBCdXMvRGV2aWNlL0Z1bmN0 aW9uIEJERiBmcm9tIGJlaW5nIGFzc2lnbmFibGUKK3RvIGd1ZXN0cywgc2ltaWxhciB0byB0aGUg d2F5IHRoZSBoeXBlcnZpc29yIHdvdWxkIGhpZGUgdGhlIGRldmljZSB0aGF0CitjYXVzZWQgdW5y ZWNvdmVyYWJsZSBBRVIgZXJyb3JzLgorV2hlbiBhIFBDSSBkZXZpY2UgYXNzaWduZWQgdG8gYSBn dWVzdCBpbiBwYXNzdGhyb3VnaCBtb2RlIGNhdXNlcwordW5yZWNvdmVyYWJsZSBBRVIgZXJyb3Jz LCB0aGUgaHlwZXJ2aXNvciBzaHV0cyBkb3duIHRoZSBndWVzdCBhbmQgaGlkZXMKK3RoZSBkZXZp Y2UgZnJvbSBiZWluZyBhc3NpZ25hYmxlIHRvIHRoZSBndWVzdHMuCisKKz1pdGVtIEI8cGNpLWFz c2lnbmFibGUtdW5oaWRlPiBJPEJERj4KKworVW5oaWRlIHRoZSBkZXZpY2UgYXQgUENJIEJ1cy9E ZXZpY2UvRnVuY3Rpb24gQkRGIHRoYXQgd2FzIHByZXZpb3VzbHkKK2hpZGRlbiBieSB0aGUgaHlw ZXJ2aXNvciBkdWUgdG8gdW5yZWNvdmVyYWJsZSBBRVIgZXJyb3JzLgorV2hlbiBhIFBDSSBkZXZp Y2UgYXNzaWduZWQgdG8gYSBndWVzdCBpbiBwYXNzdGhyb3VnaCBtb2RlIGNhdXNlcwordW5yZWNv dmVyYWJsZSBBRVIgZXJyb3JzLCB0aGUgaHlwZXJ2aXNvciBzaHV0cyBkb3duIHRoZSBndWVzdCBh bmQgaGlkZXMKK3RoZSBkZXZpY2UgZnJvbSBiZWluZyBhc3NpZ25hYmxlIHRvIHRoZSBndWVzdHMu CisKID1pdGVtIEI8cGNpLWF0dGFjaD4gSTxkb21haW4taWQ+IEk8QkRGPgogCiBIb3QtcGx1ZyBh IG5ldyBwYXNzLXRocm91Z2ggcGNpIGRldmljZSB0byB0aGUgc3BlY2lmaWVkIGRvbWFpbi4KZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmgKaW5kZXggMTYyOWY0MS4uOTczMDI4NSAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJs LmgKQEAgLTE2NzAsNiArMTY3MCwxMCBAQCBpbnQgeGNfYXNzaWduX2RldmljZSh4Y19pbnRlcmZh Y2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hY2hpbmVfc2JkZiwKICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWcpOwogCitpbnQgeGNfaGlkZV9kZXZpY2Uo eGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IG1hY2hpbmVfYmRmKTsKK2ludCB4Y191bmhpZGVf ZGV2aWNlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBtYWNoaW5lX2JkZik7CitpbnQgeGNf dGVzdF9oaWRkZW5fZGV2aWNlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBtYWNoaW5lX2Jk Zik7CisKIGludCB4Y19nZXRfZGV2aWNlX2dyb3VwKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBtYWNoaW5lX3NiZGYsCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21haW4uYyBi L3Rvb2xzL2xpYnhjL3hjX2RvbWFpbi5jCmluZGV4IDAwOTA5YWQ0Li43MTRkNjMyIDEwMDY0NAot LS0gYS90b29scy9saWJ4Yy94Y19kb21haW4uYworKysgYi90b29scy9saWJ4Yy94Y19kb21haW4u YwpAQCAtMTUwMSw2ICsxNTAxLDQ0IEBAIGludCB4Y19hc3NpZ25fZGV2aWNlKAogICAgIHJldHVy biBkb19kb21jdGwoeGNoLCAmZG9tY3RsKTsKIH0KIAoraW50IHhjX2hpZGVfZGV2aWNlKAorICAg IHhjX2ludGVyZmFjZSAqeGNoLAorICAgIHVpbnQzMl90IG1hY2hpbmVfc2JkZikKK3sKKyAgICBE RUNMQVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX2hpZGVfZGV2aWNl OworICAgIGRvbWN0bC5kb21haW4gPSBET01JRF9YRU47CisgICAgZG9tY3RsLnUuYXNzaWduX2Rl dmljZS51LnBjaS5tYWNoaW5lX3NiZGYgPSBtYWNoaW5lX3NiZGY7CisKKyAgICByZXR1cm4gZG9f ZG9tY3RsKHhjaCwgJmRvbWN0bCk7Cit9CisKK2ludCB4Y191bmhpZGVfZGV2aWNlKAorICAgIHhj X2ludGVyZmFjZSAqeGNoLAorICAgIHVpbnQzMl90IG1hY2hpbmVfc2JkZikKK3sKKyAgICBERUNM QVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3VuaGlkZV9kZXZpY2U7 CisgICAgZG9tY3RsLmRvbWFpbiA9IERPTUlEX1hFTjsKKyAgICBkb21jdGwudS5hc3NpZ25fZGV2 aWNlLnUucGNpLm1hY2hpbmVfc2JkZiA9IG1hY2hpbmVfc2JkZjsKKworICAgIHJldHVybiBkb19k b21jdGwoeGNoLCAmZG9tY3RsKTsKK30KKworaW50IHhjX3Rlc3RfaGlkZGVuX2RldmljZSgKKyAg ICB4Y19pbnRlcmZhY2UgKnhjaCwKKyAgICB1aW50MzJfdCBtYWNoaW5lX3NiZGYpCit7CisgICAg REVDTEFSRV9ET01DVEw7CisKKyAgICBkb21jdGwuY21kID0gWEVOX0RPTUNUTF90ZXN0X2hpZGRl bl9kZXZpY2U7CisgICAgZG9tY3RsLnUuYXNzaWduX2RldmljZS51LnBjaS5tYWNoaW5lX3NiZGYg PSBtYWNoaW5lX3NiZGY7CisKKyAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7Cit9 CisKIGludCB4Y19nZXRfZGV2aWNlX2dyb3VwKAogICAgIHhjX2ludGVyZmFjZSAqeGNoLAogICAg IHVpbnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xz L2xpYnhsL2xpYnhsLmgKaW5kZXggY2Y4Njg3YS4uNWE1YmQxNCAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0xOTQ0LDYgKzE5NDQs OSBAQCBpbnQgbGlieGxfZGV2aWNlX2V2ZW50c19oYW5kbGVyKGxpYnhsX2N0eCAqY3R4LAogaW50 IGxpYnhsX2RldmljZV9wY2lfYXNzaWduYWJsZV9hZGQobGlieGxfY3R4ICpjdHgsIGxpYnhsX2Rl dmljZV9wY2kgKnBjaWRldiwgaW50IHJlYmluZCk7CiBpbnQgbGlieGxfZGV2aWNlX3BjaV9hc3Np Z25hYmxlX3JlbW92ZShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2LCBp bnQgcmViaW5kKTsKIGxpYnhsX2RldmljZV9wY2kgKmxpYnhsX2RldmljZV9wY2lfYXNzaWduYWJs ZV9saXN0KGxpYnhsX2N0eCAqY3R4LCBpbnQgKm51bSk7CitpbnQgbGlieGxfZGV2aWNlX3BjaV9h c3NpZ25hYmxlX2hpZGUobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RldmljZV9wY2kgKnBjaWRldik7 CitpbnQgbGlieGxfZGV2aWNlX3BjaV9hc3NpZ25hYmxlX3VuaGlkZShsaWJ4bF9jdHggKmN0eCwg bGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2KTsKK2ludCBsaWJ4bF9kZXZpY2VfcGNpX2Fzc2lnbmFi bGVfaXNfaGlkZGVuKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kZXZpY2VfcGNpICpwY2lkZXYpOwog CiAvKiBDUFVJRCBoYW5kbGluZyAqLwogaW50IGxpYnhsX2NwdWlkX3BhcnNlX2NvbmZpZyhsaWJ4 bF9jcHVpZF9wb2xpY3lfbGlzdCAqY3B1aWQsIGNvbnN0IGNoYXIqIHN0cik7CmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF9ldmVudC5oIGIvdG9vbHMvbGlieGwvbGlieGxfZXZlbnQuaApp bmRleCAxZWE3ODllLi40Yzc4Nzk4IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9ldmVu dC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50LmgKQEAgLTE3OCw2ICsxNzgsOCBAQCB2 b2lkIGxpYnhsX2V2ZW50X3JlZ2lzdGVyX2NhbGxiYWNrcyhsaWJ4bF9jdHggKmN0eCwKIHR5cGVk ZWYgc3RydWN0IGxpYnhsX19ldmdlbl9kb21haW5fZGVhdGggbGlieGxfZXZnZW5fZG9tYWluX2Rl YXRoOwogaW50IGxpYnhsX2V2ZW5hYmxlX2RvbWFpbl9kZWF0aChsaWJ4bF9jdHggKmN0eCwgdWlu dDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZXZfdXNlciwgbGli eGxfZXZnZW5fZG9tYWluX2RlYXRoICoqZXZnZW5fb3V0KTsKK2ludCBsaWJ4bF9yZWdfYWVyX2V2 ZW50c19oYW5kbGVyKGxpYnhsX2N0eCAqLCB1aW50MzJfdCkgTElCWExfRVhURVJOQUxfQ0FMTEVS U19PTkxZOwordm9pZCBsaWJ4bF91bnJlZ19hZXJfZXZlbnRzX2hhbmRsZXIobGlieGxfY3R4ICos IHVpbnQzMl90KTsKIHZvaWQgbGlieGxfZXZkaXNhYmxlX2RvbWFpbl9kZWF0aChsaWJ4bF9jdHgg KmN0eCwgbGlieGxfZXZnZW5fZG9tYWluX2RlYXRoKik7CiAgIC8qIEFycmFuZ2VzIGZvciB0aGUg Z2VuZXJhdGlvbiBvZiBET01BSU5fU0hVVERPV04gYW5kIERPTUFJTl9ERUFUSAogICAgKiBldmVu dHMuICBBIGRvbWFpbiB3aGljaCBpcyBkZXN0cm95ZWQgYmVmb3JlIGl0IHNodXRzIGRvd24KZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3BjaS5jIGIvdG9vbHMvbGlieGwvbGlieGxfcGNp LmMKaW5kZXggYjE0ZGYxNi4uYWQ3ZmIyNyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxf cGNpLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcGNpLmMKQEAgLTg3NCw2ICs4NzQsNDIgQEAg aW50IGxpYnhsX2RldmljZV9wY2lfYXNzaWduYWJsZV9hZGQobGlieGxfY3R4ICpjdHgsIGxpYnhs X2RldmljZV9wY2kgKnBjaWRldiwKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBsaWJ4bF9kZXZp Y2VfcGNpX2Fzc2lnbmFibGVfaGlkZShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZGV2aWNlX3BjaSAq cGNpZGV2KQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHhj X2hpZGVfZGV2aWNlKGN0eC0+eGNoLCBwY2lkZXZfZW5jb2RlX2JkZihwY2lkZXYpKTsKKyAgICBp ZiAocmMgPCAwKQorICAgICAgICBMT0dEKEVSUk9SLCAwLCAieGNfaGlkZV9kZXZpY2UgZmFpbGVk Iik7CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiByYzsKK30KKworaW50IGxpYnhsX2Rldmlj ZV9wY2lfYXNzaWduYWJsZV91bmhpZGUobGlieGxfY3R4ICpjdHgsIGxpYnhsX2RldmljZV9wY2kg KnBjaWRldikKK3sKKyAgICBHQ19JTklUKGN0eCk7CisgICAgaW50IHJjOworCisgICAgcmMgPSB4 Y191bmhpZGVfZGV2aWNlKGN0eC0+eGNoLCBwY2lkZXZfZW5jb2RlX2JkZihwY2lkZXYpKTsKKyAg ICBpZiAocmMgPCAwKQorICAgICAgICBMT0dEKEVSUk9SLCAwLCAieGNfdW5oaWRlX2RldmljZSBm YWlsZWQiKTsKKworICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgbGlieGxf ZGV2aWNlX3BjaV9hc3NpZ25hYmxlX2lzX2hpZGRlbihsaWJ4bF9jdHggKmN0eCwgbGlieGxfZGV2 aWNlX3BjaSAqcGNpZGV2KQoreworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBpbnQgcmM7CisKKyAg ICByYyA9IHhjX3Rlc3RfaGlkZGVuX2RldmljZShjdHgtPnhjaCwgcGNpZGV2X2VuY29kZV9iZGYo cGNpZGV2KSk7CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiByYzsKK30KIAogaW50IGxpYnhs X2RldmljZV9wY2lfYXNzaWduYWJsZV9yZW1vdmUobGlieGxfY3R4ICpjdHgsIGxpYnhsX2Rldmlj ZV9wY2kgKnBjaWRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByZWJpbmQpCkBAIC0xMjkyLDYgKzEzMjgsMTM4IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9 CiAKK3N0YXRpYyB2b2lkIGRvbWFpbl9kZXN0cm95X2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kb21haW5fZGVzdHJv eV9zdGF0ZSAqZGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJj KQoreworICAgIFNUQVRFX0FPX0dDKGRkcy0+YW8pOworCisgICAgTE9HRChFUlJPUiwgZGRzLT5k b21pZCwgImRvbWFpbl9kZXN0cm95X2NhbGxiYWNrKCk6IEVudGVyZWQiKTsKKyAgICBpZiAocmMp CisgICAgICAgIExPR0QoRVJST1IsIGRkcy0+ZG9taWQsICJEZXN0cnVjdGlvbiBvZiBkb21haW4g ZmFpbGVkLCByYyA9ICVkIiwgcmMpOworCisgICAgbGlieGxfX2FvX2NvbXBsZXRlKGVnYywgYW8s IHJjKTsKKyAgICBMT0dEKEVSUk9SLCBkZHMtPmRvbWlkLCAiZG9tYWluX2Rlc3Ryb3lfY2FsbGJh Y2soKTogRXhpdGluZyIpOworfQorCisKK3N0YXRpYyBpbnQgZG9tYWluX2Rlc3Ryb3kobGlieGxf Y3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkKQoreworICAgIEFPX0NSRUFURShjdHgsIGRvbWlkLCAo Y29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKikwKTsKKyAgICBsaWJ4bF9fZG9tYWluX2Rlc3Ryb3lf c3RhdGUgKmRkczsKKworICAgIExPR0QoRVJST1IsIGRvbWlkLCAiZG9tYWluX2Rlc3Ryb3koKTog RW50ZXJlZCIpOworICAgIEdDTkVXKGRkcyk7CisgICAgZGRzLT5hbyA9IGFvOworICAgIGRkcy0+ ZG9taWQgPSBkb21pZDsKKyAgICBkZHMtPmNhbGxiYWNrID0gZG9tYWluX2Rlc3Ryb3lfY2FsbGJh Y2s7CisgICAgbGlieGxfX2RvbWFpbl9kZXN0cm95KGVnYywgZGRzKTsKKworICAgIExPR0QoRVJS T1IsIGRvbWlkLCAiZG9tYWluX2Rlc3Ryb3koKTogYW8tPmNvbXBsZXRlID0gJWQiLCBhby0+Y29t cGxldGUpOworICAgIHdoaWxlICghYW8tPmNvbXBsZXRlKSB7CisgICAgICAgIExPR0QoRVJST1Is IGRvbWlkLCAiZG9tYWluX2Rlc3Ryb3koKTogYW8tPmNvbXBsZXRlID0gJWQiLCBhby0+Y29tcGxl dGUpOworICAgICAgICBzbGVlcCg1KTsKKyAgICB9CisKKyAgICBMT0dEKEVSUk9SLCBkb21pZCwg ImRvbWFpbl9kZXN0cm95KCk6IEV4aXRpbmcsIHJjID0gMHglMDh4IiwgYW8tPnJjKTsKKyAgICBy ZXR1cm4gYW8tPnJjOworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdWludDMyX3QgZG9taWQ7 CisgICAgbGlieGxfX2V2X3hzd2F0Y2ggd2F0Y2g7Cit9IGxpYnhsX2Flcl93YXRjaDsKK3N0YXRp YyBsaWJ4bF9hZXJfd2F0Y2ggYWVyX3dhdGNoOworCitzdGF0aWMgdm9pZCBhZXJfYmFja2VuZF93 YXRjaF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9fZXZfeHN3YXRjaCAqd2F0Y2gsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3YXRjaF9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXZlbnRfcGF0aCkKK3sK KyAgICBFR0NfR0M7CisgICAgbGlieGxfYWVyX3dhdGNoICpsX2Flcl93YXRjaCA9IENPTlRBSU5F Ul9PRih3YXRjaCwgKmxfYWVyX3dhdGNoLCB3YXRjaCk7CisgICAgbGlieGxfY3R4ICpjdHggPSBs aWJ4bF9fZ2Nfb3duZXIoZ2MpOworICAgIHVpbnQzMl90IGRvbWlkID0gbF9hZXJfd2F0Y2gtPmRv bWlkOworICAgIHVpbnQzMl90IHNlZywgYnVzLCBkZXYsIGZuOworICAgIGludCByYzsKKyAgICBj aGFyICpwLCAqcGF0aCwgKmRzdF9wYXRoOworICAgIGNvbnN0IGNoYXIgKmFlckZhaWxlZFNCREY7 CisgICAgc3RydWN0IHhzX3Blcm1pc3Npb25zIHJ3cGVybVsxXTsKKworICAgIExPR0QoRVJST1Is IGRvbWlkLCAiIEVudGVyZWQsIGN0eCA9ICVwIiwgY3R4KTsKKyAgICBpZiAoc3RybGVuKHdhdGNo X3BhdGgpID4gMCkgTE9HRChFUlJPUiwgZG9taWQsICIgd2F0Y2hfcGF0aCA9ICVzIiwgd2F0Y2hf cGF0aCk7CisgICAgaWYgKHN0cmxlbihldmVudF9wYXRoKSA+IDApIExPR0QoRVJST1IsIGRvbWlk LCAiIGV2ZW50X3BhdGggPSAlcyIsIGV2ZW50X3BhdGgpOworICAgIExPR0QoRVJST1IsIGRvbWlk LCAiIGRvbWlkID0gJWQiLCBkb21pZCk7CisKKyAgICAvKiBFeHRyYWN0IHRoZSBiYWNrZW5kIGRp cmVjdG9yeS4gKi8KKyAgICBwYXRoID0gbGlieGxfX3N0cmR1cChnYywgZXZlbnRfcGF0aCk7Cisg ICAgcCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBn b3RvIHNraXA7CisgICAgaWYgKHN0cmNtcChwLCAiL2FlckZhaWxlZFNCREYiKSAhPSAwKQorICAg ICAgICBnb3RvIHNraXA7CisgICAgLyogVHJ1bmNhdGUgdGhlIHN0cmluZyBzbyBpdCBwb2ludHMg dG8gdGhlIGJhY2tlbmQgZGlyZWN0b3J5LiAqLworICAgICpwID0gJ1wwJzsKKworICAgIC8qIEZl dGNoIHRoZSB2YWx1ZSBvZiB0aGUgZmFpbGVkIFBDSSBkZXZpY2UuICovCisgICAgcmMgPSBsaWJ4 bF9feHNfcmVhZF9jaGVja2VkKGdjLCBYQlRfTlVMTCwKKyAgICAgICAgICAgIEdDU1BSSU5URigi JXMvYWVyRmFpbGVkU0JERiIsIHBhdGgpLCAmYWVyRmFpbGVkU0JERik7CisgICAgaWYgKHJjIHx8 ICFhZXJGYWlsZWRTQkRGKQorICAgICAgICBnb3RvIHNraXA7CisKKyAgICBsaWJ4bF91bnJlZ19h ZXJfZXZlbnRzX2hhbmRsZXIoY3R4LCBkb21pZCk7CisKKyAgICByYyA9IGRvbWFpbl9kZXN0cm95 KGN0eCwgZG9taWQpOworCisgICAgc3NjYW5mKGFlckZhaWxlZFNCREYsICIleDoleDoleC4leCIs ICZzZWcsICZidXMsICZkZXYsICZmbik7CisgICAgcmMgPSB4Y19oaWRlX2RldmljZShjdHgtPnhj aCwgc2VnIDw8IDE2IHwgYnVzIDw8IDggfCBkZXYgPDwgMyB8IGZuKTsKKyAgICBpZiAocmMpCisg ICAgICAgIExPR0QoRVJST1IsIGRvbWlkLCAiIHhjX2hpZGVfZGV2aWNlKCkgZmFpbGVkLCByYyA9 ICVkIiwgcmMpOworCisgICAgcndwZXJtWzBdLmlkID0gMDsKKyAgICByd3Blcm1bMF0ucGVybXMg PSBYU19QRVJNX1JFQUQgfCBYU19QRVJNX1dSSVRFOworICAgIGRzdF9wYXRoID0gR0NTUFJJTlRG KCIvbG9jYWwvZG9tYWluLzAvYmFja2VuZC9wY2kvMC8wLyVzIiwgImFlckZhaWxlZFBDSXMiKTsK KyAgICByYyA9IGxpYnhsX194c19ta25vZChnYywgWEJUX05VTEwsIGRzdF9wYXRoLCByd3Blcm0s IDEpOworICAgIGlmIChyYykgeworICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIiBsaWJ4bF9f eHNfbWtub2QoKSBmYWlsZWQsIHJjID0gJWQiLCByYyk7CisgICAgICAgIGdvdG8gc2tpcDsKKyAg ICB9CisKKyAgICByYyA9IGxpYnhsX194c193cml0ZV9jaGVja2VkKGdjLCBYQlRfTlVMTCwgZHN0 X3BhdGgsIGFlckZhaWxlZFNCREYpOworICAgIGlmIChyYykKKyAgICAgICAgTE9HRChFUlJPUiwg ZG9taWQsICIgbGlieGxfX3hzX3dyaXRlX2NoZWNrZWQoKSBmYWlsZWQsIHJjID0gJWQiLCByYyk7 CisKK3NraXA6CisgICAgcmV0dXJuOworfQorCisvKiBIYW5kbGVyIG9mIGV2ZW50cyBmb3IgZGV2 aWNlIGRyaXZlciBkb21haW5zICovCitpbnQgbGlieGxfcmVnX2Flcl9ldmVudHNfaGFuZGxlcihs aWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpCit7CisgICAgaW50IHJjOworICAgIGNoYXIg KmJlX3BhdGg7CisgICAgR0NfSU5JVChjdHgpOworCisgICAgLyoKKyAgICAgKiBXZSB1c2UgYWJz b2x1dGUgcGF0aHMgYmVjYXVzZSB3ZSB3YW50IHhzd2F0Y2ggdG8gYWxzbyByZXR1cm4KKyAgICAg KiBhYnNvbHV0ZSBwYXRocyB0aGF0IGNhbiBiZSBwYXJzZWQgYnkgbGlieGxfX3BhcnNlX2JhY2tl bmRfcGF0aC4KKyAgICAgKi8KKyAgICBhZXJfd2F0Y2guZG9taWQgPSBkb21pZDsKKyAgICBiZV9w YXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWluLzAvYmFja2VuZC9wY2kvJXUvMC9hZXJGYWls ZWRTQkRGIiwgZG9taWQpOworICAgIHJjID0gbGlieGxfX2V2X3hzd2F0Y2hfcmVnaXN0ZXIoZ2Ms ICZhZXJfd2F0Y2gud2F0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh ZXJfYmFja2VuZF93YXRjaF9jYWxsYmFjaywgYmVfcGF0aCk7CisgICAgcmV0dXJuIHJjOworfQor CisvKiBIYW5kbGVyIG9mIGV2ZW50cyBmb3IgZGV2aWNlIGRyaXZlciBkb21haW5zICovCit2b2lk IGxpYnhsX3VucmVnX2Flcl9ldmVudHNfaGFuZGxlcihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQpCit7CisgICAgR0NfSU5JVChjdHgpOworCisgICAgbGlieGxfX2V2X3hzd2F0Y2hfZGVy ZWdpc3RlcihnYywgJmFlcl93YXRjaC53YXRjaCk7CisgICAgcmV0dXJuOworfQorCiBzdGF0aWMg dm9pZCBsaWJ4bF9fYWRkX3BjaWRldnMobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fYW8gKmFvLCB1 aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21h aW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9fbXVsdGlkZXYgKm11bHRpZGV2KQpkaWZmIC0tZ2l0IGEvdG9vbHMvcHl0aG9uL3hlbi9sb3ds ZXZlbC94Yy94Yy5jIGIvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jCmluZGV4IDVk MTEyYWYuLmFkODIyZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3B5dGhvbi94ZW4vbG93bGV2ZWwveGMv eGMuYworKysgYi90b29scy9weXRob24veGVuL2xvd2xldmVsL3hjL3hjLmMKQEAgLTYwOSw2ICs2 MDksNzYgQEAgc3RhdGljIFB5T2JqZWN0ICpweXhjX2RlYXNzaWduX2RldmljZShYY09iamVjdCAq c2VsZiwKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNiZGYpOwogfQogCitzdGF0aWMg UHlPYmplY3QgKnB5eGNfaGlkZV9kZXZpY2UoWGNPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgdWludDMyX3Qgc2JkZiA9IDA7 CisgICAgY2hhciAqcGNpX3N0cjsKKyAgICBpbnQgc2VnLCBidXMsIGRldiwgZnVuYzsKKyAgICBz dGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsgInBjaSIsIE5VTEwgfTsKKworICAgIGlmICggIVB5 QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiaXMiLCBrd2RfbGlzdCwgJnBj aV9zdHIpICkKKyAgICB7CisgICAgICAgIHNiZGYgPSAtMTsKKyAgICAgICAgZ290byBlbmRfaGlk ZTsKKyAgICB9CisKKyAgICB3aGlsZSAoIG5leHRfYmRmKCZwY2lfc3RyLCAmc2VnLCAmYnVzLCAm ZGV2LCAmZnVuYykgKQorICAgIHsKKyAgICAgICAgc2JkZiA9IHNlZyA8PCAxNjsKKyAgICAgICAg c2JkZiB8PSAoYnVzICYgMHhmZikgPDwgODsKKyAgICAgICAgc2JkZiB8PSAoZGV2ICYgMHgxZikg PDwgMzsKKyAgICAgICAgc2JkZiB8PSAoZnVuYyAmIDB4Nyk7CisKKyAgICAgICAgaWYgKCB4Y19o aWRlX2RldmljZShzZWxmLT54Y19oYW5kbGUsIHNiZGYpICE9IDAgKQorICAgICAgICB7CisgICAg ICAgICAgICBpZiAoIGVycm5vID09IEVOT1NZUyApCisgICAgICAgICAgICAgICAgc2JkZiA9IC0x OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2JkZiA9IDA7CisgICAg fQorCitlbmRfaGlkZToKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNiZGYpOworfQor CitzdGF0aWMgUHlPYmplY3QgKnB5eGNfdW5oaWRlX2RldmljZShYY09iamVjdCAqc2VsZiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgdWlu dDMyX3Qgc2JkZiA9IDA7CisgICAgY2hhciAqcGNpX3N0cjsKKyAgICBpbnQgc2VnLCBidXMsIGRl diwgZnVuYzsKKyAgICBzdGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsgInBjaSIsIE5VTEwgfTsK KworICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiaXMi LCBrd2RfbGlzdCwgJnBjaV9zdHIpICkKKyAgICB7CisgICAgICAgIHNiZGYgPSAtMTsKKyAgICAg ICAgZ290byBlbmRfdW5oaWRlOworICAgIH0KKworICAgIHdoaWxlICggbmV4dF9iZGYoJnBjaV9z dHIsICZzZWcsICZidXMsICZkZXYsICZmdW5jKSApCisgICAgeworICAgICAgICBzYmRmID0gc2Vn IDw8IDE2OworICAgICAgICBzYmRmIHw9IChidXMgJiAweGZmKSA8PCA4OworICAgICAgICBzYmRm IHw9IChkZXYgJiAweDFmKSA8PCAzOworICAgICAgICBzYmRmIHw9IChmdW5jICYgMHg3KTsKKwor ICAgICAgICBpZiAoIHhjX3VuaGlkZV9kZXZpY2Uoc2VsZi0+eGNfaGFuZGxlLCBzYmRmKSAhPSAw ICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBlcnJubyA9PSBFTk9TWVMgKQorICAgICAg ICAgICAgICAgIHNiZGYgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg ICAgIHNiZGYgPSAwOworICAgIH0KKworZW5kX3VuaGlkZToKKyAgICByZXR1cm4gUHlfQnVpbGRW YWx1ZSgiaSIsIHNiZGYpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKnB5eGNfZ2V0X2RldmljZV9n cm91cChYY09iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMjMzLDcgKzIzMDMsMjEgQEAgc3RhdGljIFB5 TWV0aG9kRGVmIHB5eGNfbWV0aG9kc1tdID0gewogICAgICAgICIgZG9tICAgICBbaW50XTogICAg ICBEb21haW4gdG8gZGVhc3NpZ24gZGV2aWNlIGZyb20uXG4iCiAgICAgICAgIiBwY2lfc3RyIFtz dHJdOiAgICAgIFBDSSBkZXZpY2VzLlxuIgogICAgICAgICJSZXR1cm5zOiBbaW50XSAwIG9uIHN1 Y2Nlc3MsIG9yIGRldmljZSBiZGYgdGhhdCBjYW4ndCBiZSBkZWFzc2lnbmVkLlxuIiB9LAorCisg ICAgIHsgImhpZGVfZGV2aWNlIiwKKyAgICAgICAoUHlDRnVuY3Rpb24pcHl4Y19oaWRlX2Rldmlj ZSwKKyAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiXG4iCisgICAgICAgIkhp ZGUgZGV2aWNlIGFmdGVyIEFFUiBmYXRhbCBlcnJvciB0cmlnZ2VyLlxuIgorICAgICAgICIgcGNp X3N0ciBbc3RyXTogICAgICBQQ0kgZGV2aWNlcy5cbiIKKyAgICAgICAiUmV0dXJuczogW2ludF0g ZGV2aWNlIGJkZiBvbiBzdWNjZXNzIG9yIC0xIGlmIGl0IGNhbnQgYmUgaGlkZGVuLlxuIiB9LAog ICAKKyAgICAgeyAidW5oaWRlX2RldmljZSIsCisgICAgICAgKFB5Q0Z1bmN0aW9uKXB5eGNfdW5o aWRlX2RldmljZSwKKyAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiXG4iCisg ICAgICAgIlVuaGlkZSBoaWRkZW4gZGV2aWNlIGFmdGVyIEFFUiBmYXRhbCBlcnJvciB0cmlnZ2Vy LlxuIgorICAgICAgICIgcGNpX3N0ciBbc3RyXTogICAgICBQQ0kgZGV2aWNlcy5cbiIKKyAgICAg ICAiUmV0dXJuczogW2ludF0gZGV2aWNlIGJkZiBvbiBzdWNjZXNzIG9yIC0xIGlmIGl0IGNhbnQg YmUgdW5oaWRkZW4uXG4iIH0sCisKICAgICB7ICJzY2hlZF9pZF9nZXQiLAogICAgICAgKFB5Q0Z1 bmN0aW9uKXB5eGNfc2NoZWRfaWRfZ2V0LAogICAgICAgTUVUSF9OT0FSR1MsICJcbiIKZGlmZiAt LWdpdCBhL3Rvb2xzL3hsL3hsLmggYi90b29scy94bC94bC5oCmluZGV4IGFhOTViNzcuLjkxNWZl ODYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsLmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMTIx LDkgKzEyMSwxMiBAQCBpbnQgbWFpbl92bmN2aWV3ZXIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK IGludCBtYWluX3BjaWxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3BjaWRl dGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcGNpYXR0YWNoKGludCBhcmdj LCBjaGFyICoqYXJndik7CitpbnQgbWFpbl9wY2lhc3NpZ25hYmxlX2hpZGUoaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKK2ludCBtYWluX3BjaWFzc2lnbmFibGVfdW5oaWRlKGludCBhcmdjLCBjaGFy ICoqYXJndik7CiBpbnQgbWFpbl9wY2lhc3NpZ25hYmxlX2FkZChpbnQgYXJnYywgY2hhciAqKmFy Z3YpOwogaW50IG1haW5fcGNpYXNzaWduYWJsZV9yZW1vdmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KTsKIGludCBtYWluX3BjaWFzc2lnbmFibGVfbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwor aW50IG1haW5fcGNpYXNzaWduYWJsZV9saXN0X2hpZGRlbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OwogI2lmbmRlZiBMSUJYTF9IQVZFX05PX1NVU1BFTkRfUkVTVU1FCiBpbnQgbWFpbl9yZXN0b3Jl KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9taWdyYXRlX3JlY2VpdmUoaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMgYi90 b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDMwZWI5M2MuLmUyM2JkMTUgMTAwNjQ0Ci0tLSBh L3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAt MTE5LDYgKzExOSwyMyBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAi TGlzdCBhbGwgdGhlIGFzc2lnbmFibGUgcGNpIGRldmljZXMiLAogICAgICAgIiIsCiAgICAgfSwK KyAgICB7ICJwY2ktYXNzaWduYWJsZS1saXN0LWhpZGRlbiIsCisgICAgICAmbWFpbl9wY2lhc3Np Z25hYmxlX2xpc3RfaGlkZGVuLCAwLCAwLAorICAgICAgIkxpc3QgYWxsIHRoZSBwY2kgZGV2aWNl cyBoaWRkZW4gZHVlIHRvIEFFUiBlcnJvcnMiLAorICAgICAgIiIsCisgICAgfSwKKyAgICB7ICJw Y2ktYXNzaWduYWJsZS1oaWRlIiwKKyAgICAgICZtYWluX3BjaWFzc2lnbmFibGVfaGlkZSwgMCwg MSwKKyAgICAgICJIaWRlIGEgUENJIGRldmljZSIsCisgICAgICAiPEJERj4iLAorICAgICAgIi1o ICAgICAgICAgICAgICAgICAgICAgIFByaW50IHRoaXMgaGVscC5cbiIKKyAgICB9LAorICAgIHsg InBjaS1hc3NpZ25hYmxlLXVuaGlkZSIsCisgICAgICAmbWFpbl9wY2lhc3NpZ25hYmxlX3VuaGlk ZSwgMCwgMSwKKyAgICAgICJVbmhpZGUgYSBQQ0kgZGV2aWNlIiwKKyAgICAgICI8QkRGPiIsCisg ICAgICAiLWggICAgICAgICAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwLlxuIgorICAgIH0s CiAgICAgeyAicGF1c2UiLAogICAgICAgJm1haW5fcGF1c2UsIDAsIDEsCiAgICAgICAiUGF1c2Ug ZXhlY3V0aW9uIG9mIGEgZG9tYWluIiwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BjaS5jIGIv dG9vbHMveGwveGxfcGNpLmMKaW5kZXggNTgzNDViZC4uZjQ4YzQ2OSAxMDA2NDQKLS0tIGEvdG9v bHMveGwveGxfcGNpLmMKKysrIGIvdG9vbHMveGwveGxfcGNpLmMKQEAgLTE2Myw4ICsxNjMsOSBA QCBzdGF0aWMgdm9pZCBwY2lhc3NpZ25hYmxlX2xpc3Qodm9pZCkKICAgICBpZiAoIHBjaWRldnMg PT0gTlVMTCApCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKysp IHsKLSAgICAgICAgcHJpbnRmKCIlMDR4OiUwMng6JTAyeC4lMDF4XG4iLAotICAgICAgICAgICAg ICAgcGNpZGV2c1tpXS5kb21haW4sIHBjaWRldnNbaV0uYnVzLCBwY2lkZXZzW2ldLmRldiwgcGNp ZGV2c1tpXS5mdW5jKTsKKyAgICAgICAgaWYgKCFsaWJ4bF9kZXZpY2VfcGNpX2Fzc2lnbmFibGVf aXNfaGlkZGVuKGN0eCwgJnBjaWRldnNbaV0pKQorICAgICAgICAgICAgcHJpbnRmKCIlMDR4OiUw Mng6JTAyeC4lMDF4XG4iLAorICAgICAgICAgICAgICAgICAgIHBjaWRldnNbaV0uZG9tYWluLCBw Y2lkZXZzW2ldLmJ1cywgcGNpZGV2c1tpXS5kZXYsIHBjaWRldnNbaV0uZnVuYyk7CiAgICAgICAg IGxpYnhsX2RldmljZV9wY2lfZGlzcG9zZSgmcGNpZGV2c1tpXSk7CiAgICAgfQogICAgIGZyZWUo cGNpZGV2cyk7CkBAIC0xODIsNiArMTgzLDEyNiBAQCBpbnQgbWFpbl9wY2lhc3NpZ25hYmxlX2xp c3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9p ZCBwY2lhc3NpZ25hYmxlX2xpc3RfaGlkZGVuKHZvaWQpCit7CisgICAgbGlieGxfZGV2aWNlX3Bj aSAqcGNpZGV2czsKKyAgICBpbnQgbnVtLCBpOworCisgICAgcGNpZGV2cyA9IGxpYnhsX2Rldmlj ZV9wY2lfYXNzaWduYWJsZV9saXN0KGN0eCwgJm51bSk7CisKKyAgICBpZiAoIHBjaWRldnMgPT0g TlVMTCApCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsK KyAgICAgICAgaWYgKGxpYnhsX2RldmljZV9wY2lfYXNzaWduYWJsZV9pc19oaWRkZW4oY3R4LCAm cGNpZGV2c1tpXSkpCisgICAgICAgICAgICBwcmludGYoIiUwNHg6JTAyeDolMDJ4LiUwMXhcbiIs CisgICAgICAgICAgICAgICAgICAgcGNpZGV2c1tpXS5kb21haW4sIHBjaWRldnNbaV0uYnVzLCBw Y2lkZXZzW2ldLmRldiwgcGNpZGV2c1tpXS5mdW5jKTsKKyAgICAgICAgbGlieGxfZGV2aWNlX3Bj aV9kaXNwb3NlKCZwY2lkZXZzW2ldKTsKKyAgICB9CisgICAgZnJlZShwY2lkZXZzKTsKK30KKwor aW50IG1haW5fcGNpYXNzaWduYWJsZV9saXN0X2hpZGRlbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Cit7CisgICAgaW50IG9wdDsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxM LCAicGNpLWFzc2lnbmFibGUtbGlzdC1oaWRkZW4iLCAwKSB7CisgICAgICAgIC8qIE5vIG9wdGlv bnMgKi8KKyAgICB9CisKKyAgICBwY2lhc3NpZ25hYmxlX2xpc3RfaGlkZGVuKCk7CisgICAgcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcGNpYXNzaWduYWJsZV9oaWRlKGNvbnN0IGNoYXIgKmJk ZikKK3sKKyAgICBsaWJ4bF9kZXZpY2VfcGNpIHBjaWRldjsKKyAgICBYTFVfQ29uZmlnICpjb25m aWc7CisgICAgaW50IHIgPSBFWElUX1NVQ0NFU1M7CisKKyAgICBsaWJ4bF9kZXZpY2VfcGNpX2lu aXQoJnBjaWRldik7CisKKyAgICBjb25maWcgPSB4bHVfY2ZnX2luaXQoc3RkZXJyLCAiY29tbWFu ZCBsaW5lIik7CisgICAgaWYgKCFjb25maWcpIHsKKyAgICAgICAgcGVycm9yKCJ4bHVfY2ZnX2lu aXQiKTsKKyAgICAgICAgZXhpdCgtMSk7CisgICAgfQorCisgICAgaWYgKHhsdV9wY2lfcGFyc2Vf YmRmKGNvbmZpZywgJnBjaWRldiwgYmRmKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInBj aS1hc3NpZ25hYmxlLWhpZGU6IG1hbGZvcm1lZCBCREYgc3BlY2lmaWNhdGlvbiBcIiVzXCJcbiIs IGJkZik7CisgICAgICAgIGV4aXQoMik7CisgICAgfQorCisgICAgaWYgKGxpYnhsX2RldmljZV9w Y2lfYXNzaWduYWJsZV9oaWRlKGN0eCwgJnBjaWRldikpCisgICAgICAgIHIgPSBFWElUX0ZBSUxV UkU7CisKKyAgICBsaWJ4bF9kZXZpY2VfcGNpX2Rpc3Bvc2UoJnBjaWRldik7CisgICAgeGx1X2Nm Z19kZXN0cm95KGNvbmZpZyk7CisKKyAgICByZXR1cm4gcjsKK30KKworaW50IG1haW5fcGNpYXNz aWduYWJsZV9oaWRlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgb3B0OworICAg IGNvbnN0IGNoYXIgKmJkZiA9IE5VTEw7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAi IiwgTlVMTCwgIm1haW5fcGNpYXNzaWduYWJsZV9oaWRlIiwgMSkgeworICAgICAgICAvKiBObyBv cHRpb25zICovCisgICAgfQorCisgICAgYmRmID0gYXJndltvcHRpbmRdOworCisgICAgaWYgKHBj aWFzc2lnbmFibGVfaGlkZShiZGYpKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisg ICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKK30KKworc3RhdGljIGludCBwY2lhc3NpZ25hYmxlX3Vu aGlkZShjb25zdCBjaGFyICpiZGYpCit7CisgICAgbGlieGxfZGV2aWNlX3BjaSBwY2lkZXY7Cisg ICAgWExVX0NvbmZpZyAqY29uZmlnOworICAgIGludCByID0gRVhJVF9TVUNDRVNTOworCisgICAg bGlieGxfZGV2aWNlX3BjaV9pbml0KCZwY2lkZXYpOworCisgICAgY29uZmlnID0geGx1X2NmZ19p bml0KHN0ZGVyciwgImNvbW1hbmQgbGluZSIpOworICAgIGlmICghY29uZmlnKSB7CisgICAgICAg IHBlcnJvcigieGx1X2NmZ19pbml0Iik7CisgICAgICAgIGV4aXQoLTEpOworICAgIH0KKworICAg IGlmICh4bHVfcGNpX3BhcnNlX2JkZihjb25maWcsICZwY2lkZXYsIGJkZikpIHsKKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICJwY2ktYXNzaWduYWJsZS11bmhpZGU6IG1hbGZvcm1lZCBCREYgc3Bl Y2lmaWNhdGlvbiBcIiVzXCJcbiIsIGJkZik7CisgICAgICAgIGV4aXQoMik7CisgICAgfQorCisg ICAgaWYgKGxpYnhsX2RldmljZV9wY2lfYXNzaWduYWJsZV91bmhpZGUoY3R4LCAmcGNpZGV2KSkK KyAgICAgICAgciA9IEVYSVRfRkFJTFVSRTsKKworICAgIGxpYnhsX2RldmljZV9wY2lfZGlzcG9z ZSgmcGNpZGV2KTsKKyAgICB4bHVfY2ZnX2Rlc3Ryb3koY29uZmlnKTsKKworICAgIHJldHVybiBy OworfQorCitpbnQgbWFpbl9wY2lhc3NpZ25hYmxlX3VuaGlkZShpbnQgYXJnYywgY2hhciAqKmFy Z3YpCit7CisgICAgaW50IG9wdDsKKyAgICBjb25zdCBjaGFyICpiZGYgPSBOVUxMOworCisgICAg U1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJtYWluX3BjaWFzc2lnbmFibGVfdW5o aWRlIiwgMSkgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisgICAgYmRmID0g YXJndltvcHRpbmRdOworCisgICAgaWYgKHBjaWFzc2lnbmFibGVfdW5oaWRlKGJkZikpCisgICAg ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQor CiBzdGF0aWMgaW50IHBjaWFzc2lnbmFibGVfYWRkKGNvbnN0IGNoYXIgKmJkZiwgaW50IHJlYmlu ZCkKIHsKICAgICBsaWJ4bF9kZXZpY2VfcGNpIHBjaWRldjsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hs L3hsX3ZtY29udHJvbC5jIGIvdG9vbHMveGwveGxfdm1jb250cm9sLmMKaW5kZXggODljMmIyNS4u MTBhNDhhOSAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfdm1jb250cm9sLmMKKysrIGIvdG9vbHMv eGwveGxfdm1jb250cm9sLmMKQEAgLTk2Niw2ICs5NjYsMTUgQEAgc3RhcnQ6CiAgICAgTE9HKCJX YWl0aW5nIGZvciBkb21haW4gJXMgKGRvbWlkICV1KSB0byBkaWUgW3BpZCAlbGRdIiwKICAgICAg ICAgZF9jb25maWcuY19pbmZvLm5hbWUsIGRvbWlkLCAobG9uZylnZXRwaWQoKSk7CiAKKyAgICBy ZXQgPSBsaWJ4bF9yZWdfYWVyX2V2ZW50c19oYW5kbGVyKGN0eCwgZG9taWQpOworICAgIGlmIChy ZXQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBlcnJvciBtYXkgbm90IGJlIHNldmVy ZSBlbm91Z2ggdG8gZmFpbCB0aGUgY3JlYXRpb24gb2YgdGhlIFZNLgorICAgICAgICAgKiBMb2cg dGhlIGVycm9yLCBhbmQgY29udGludWUgd2l0aCB0aGUgY3JlYXRpb24uCisgICAgICAgICAqLwor ICAgICAgICBMT0coImxpYnhsX3JlZ19hZXJfZXZlbnRzX2hhbmRsZXIoKSBmYWlsZWQsIHJldCA9 IDB4JTA4eCIsIHJldCk7CisgICAgfQorCiAgICAgcmV0ID0gbGlieGxfZXZlbmFibGVfZG9tYWlu X2RlYXRoKGN0eCwgZG9taWQsIDAsICZkZWF0aHcpOwogICAgIGlmIChyZXQpIGdvdG8gb3V0Owog CkBAIC05OTMsNiArMTAwMiw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgTE9HKCJEb21haW4gJXUg aGFzIHNodXQgZG93biwgcmVhc29uIGNvZGUgJWQgMHgleCIsIGRvbWlkLAogICAgICAgICAgICAg ICAgIGV2ZW50LT51LmRvbWFpbl9zaHV0ZG93bi5zaHV0ZG93bl9yZWFzb24sCiAgICAgICAgICAg ICAgICAgZXZlbnQtPnUuZG9tYWluX3NodXRkb3duLnNodXRkb3duX3JlYXNvbik7CisgICAgICAg ICAgICBsaWJ4bF91bnJlZ19hZXJfZXZlbnRzX2hhbmRsZXIoY3R4LCBkb21pZCk7CiAgICAgICAg ICAgICBzd2l0Y2ggKGhhbmRsZV9kb21haW5fZGVhdGgoJmRvbWlkLCBldmVudCwgJmRfY29uZmln KSkgewogICAgICAgICAgICAgY2FzZSBET01BSU5fUkVTVEFSVF9TT0ZUX1JFU0VUOgogICAgICAg ICAgICAgICAgIGRvbWlkX3NvZnRfcmVzZXQgPSBkb21pZDsKQEAgLTEwNTksNiArMTA2OSw3IEBA IHN0YXJ0OgogCiAgICAgICAgIGNhc2UgTElCWExfRVZFTlRfVFlQRV9ET01BSU5fREVBVEg6CiAg ICAgICAgICAgICBMT0coIkRvbWFpbiAldSBoYXMgYmVlbiBkZXN0cm95ZWQuIiwgZG9taWQpOwor ICAgICAgICAgICAgbGlieGxfdW5yZWdfYWVyX2V2ZW50c19oYW5kbGVyKGN0eCwgZG9taWQpOwog ICAgICAgICAgICAgbGlieGxfZXZlbnRfZnJlZShjdHgsIGV2ZW50KTsKICAgICAgICAgICAgIHJl dCA9IDA7CiAgICAgICAgICAgICBnb3RvIG91dDsKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=