From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C6F589971 for ; Tue, 27 Aug 2019 15:25:15 +0000 (UTC) From: Daniel Mrzyglod Date: Tue, 27 Aug 2019 17:25:04 +0200 Message-Id: <20190827152504.7491-5-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190827152504.7491-1-daniel.t.mrzyglod@intel.com> References: <20190827152504.7491-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v9 4/4] lib/intel_mmio: add additional api for multiple devices List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Petri Latvala , Jani Nikula List-ID: TGlicmFyeSAgd2FzIGxpbWl0ZWQgZm9yIHJlYWRpbmcgcmVnaXN0ZXJzIGZvciBvbmx5Cm9uZSBk ZXZpY2UgYXQgYSB0aW1lIGluIGlndCB0ZXN0cy4KQ2hhbmdlcyBpbiB0aGlzIHBhdGNoIGdpdmUg YXMgb3BvcnR1bml0eSB0byB0ZXN0IG11bHRpcGxlIGRldmljZXMgaW4KdGhlIHNhbWUgdGltZS4K CnY4OiBwYWNrIGFuZCByZW5hbWUgc3RydWN0dXJlLCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGQK djc6IHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlCnY2OiBSZXdvcmQgcGF0Y2guIENvc21ldGljIGNo YW5nZXMuCgpDYzogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwu Y29tPgpDYzogRGFuaWVsZSBTcHVyaW8gQ2VyYW9sbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGlu dGVsLmNvbT4KQ2M6IEthdGFyenluYSBEZWMgPGthdGFyenluYS5kZWNAaW50ZWwuY29tPgpDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBQZXRyaSBMYXR2YWxh IDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJp Z25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3 LmtlbXBjenluc2tpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1yenlnbG9kIDxk YW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5j ICAgICAgfCAgIDMgKy0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgICAgICAgIHwgICAzICstCiBs aWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgICB8ICA4MSArKysrKysrKysrKysrKystLS0tLS0t LS0tCiBsaWIvaW50ZWxfaW9zZi5jICAgICAgICAgICAgICB8ICA3NCArKysrKysrKysrKysrLS0t LS0tLS0tLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgfCAg IDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDEzICsrLS0KIHRlc3RzL2k5 MTUvZ2VtX3dvcmthcm91bmRzLmMgIHwgICAzICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5j ICAgICB8ICAgNiArLQogdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jICAgICAgfCAgIDYgKy0KIHRv b2xzL2ludGVsX2JhY2tsaWdodC5jICAgICAgIHwgICAzICstCiB0b29scy9pbnRlbF9kaXNwbGF5 X3BvbGxlci5jICB8ICAgNSArLQogdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jICAgICAgfCAgMTUg KystLS0KIHRvb2xzL2ludGVsX2dwdV90aW1lLmMgICAgICAgIHwgICAzICstCiB0b29scy9pbnRl bF9pbmZvZnJhbWVzLmMgICAgICB8ICAgNSArLQogdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMgICAg ICAgfCAgMTEgKystLQogdG9vbHMvaW50ZWxfbGlkLmMgICAgICAgICAgICAgfCAgIDMgKy0KIHRv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgIHwgICA1ICstCiB0b29scy9pbnRlbF9wZXJmX2Nv dW50ZXJzLmMgICB8ICAxMCArKy0tCiB0b29scy9pbnRlbF9yZWcuYyAgICAgICAgICAgICB8ICAy MyArKystLS0tCiB0b29scy9pbnRlbF9yZWdfY2hlY2tlci5jICAgICB8ICAgMyArLQogdG9vbHMv aW50ZWxfd2F0ZXJtYXJrLmMgICAgICAgfCAgNDIgKysrKysrKy0tLS0tLQogMjIgZmlsZXMgY2hh bmdlZCwgMjQ0IGluc2VydGlvbnMoKyksIDE4NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9i ZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMgYi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKaW5kZXgg YzNmYzRiZjAuLjBmYzRiMDVlIDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMK KysrIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCkBAIC01NSw2ICs1NSw3IEBACiBzdGF0aWMg aW50IGRvbmU7CiBzdGF0aWMgaW50IGZkOwogc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90ICp0aW1l c3RhbXBfcmVnOworc3RhdGljIHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAj ZGVmaW5lIFJFRyh4KSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3Rf Z2xvYmFsX21taW8gKyB4KQogI2RlZmluZSBSRUdfT0ZGU0VUKHgpICgodm9sYXRpbGUgY2hhciAq KSh4KSAtICh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvKQpAQCAtNDU2LDcgKzQ1Nyw3 IEBAIHN0YXRpYyBpbnQgcnVuKGludCBzZWNvbmRzLAogCWlmIChnZW4gPCA2KQogCQlyZXR1cm4g SUdUX0VYSVRfU0tJUDsgLyogTmVlZHMgQkNTIHRpbWVzdGFtcCAqLwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgp LCBmYWxzZSwgZmQpOwogCiAJaWYgKGdlbiA9PSA2KQogCQl0aW1lc3RhbXBfcmVnID0gUkVHKFJD U19USU1FU1RBTVApOwpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2ht YXJrcy9nZW1fd3NpbS5jCmluZGV4IGE3NmZkYmZlLi40OTY3NDViZiAxMDA2NDQKLS0tIGEvYmVu Y2htYXJrcy9nZW1fd3NpbS5jCisrKyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwpAQCAtMjM4LDYg KzIzOCw3IEBAIHN0cnVjdCB3b3JrbG9hZAogCX0gYnVzeV9iYWxhbmNlcjsKIH07CiAKK3N0cnVj dCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBu b3BfY2FsaWJyYXRpb25fdXMgPSAxMDAwOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbm9wX2NhbGli cmF0aW9uOwogCkBAIC0zMDcxLDcgKzMwNzIsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2Nsb2Nrcyh2 b2lkKQogCXVpbnQzMl90IHJjc19zdGFydCwgcmNzX2VuZDsKIAlkb3VibGUgb3ZlcmhlYWQsIHQ7 CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBm YWxzZSwgZmQpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CiAKIAlpZiAodmVyYm9zZSA8PSAxKQogCQly ZXR1cm47CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW8uaCBiL2xpYi9pbnRlbF9pby5oCmluZGV4 IDk5Y2IxODI5Li44MTVkODE5MiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2lvLmgKKysrIGIvbGli L2ludGVsX2lvLmgKQEAgLTMwLDE3ICszMCw0MiBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAj aW5jbHVkZSA8cGNpYWNjZXNzLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgogCi0vKiByZWdpc3Rl ciBhY2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21taW8uYyAqLwogZXh0ZXJuIHZvaWQgKmlndF9n bG9iYWxfbW1pbzsKLXZvaWQgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2Rldmlj ZSAqcGNpX2Rldik7Ci12b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKTsK IAotaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKLXZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko dm9pZCk7Ci11aW50MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lk IGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLWludCBp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uodm9pZCk7CisvKiByZWdpc3RlciBh Y2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21taW8uYyAqLworc3RydWN0IGludGVsX3JlZ2lzdGVy X3JhbmdlIHsKKwl1aW50MzJfdCBiYXNlOworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgZmxh Z3M7Cit9OworCitzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKKwlzdHJ1Y3QgaW50ZWxfcmVn aXN0ZXJfcmFuZ2UgKm1hcDsKKwl1aW50MzJfdCB0b3A7CisJdWludDMyX3QgYWxpZ25tZW50X21h c2s7Cit9OworCitzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIHsKKwl2b2lkICppZ3RfbW1pbzsKKwlz dHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKKwl1aW50MzJfdCBwY2lfZGV2aWNlX2lkOwor CWludCBrZXk7CisJYm9vbCBzYWZlOworfTsKKwordm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICBzdHJ1Y3QgcGNpX2Rl dmljZSAqcGNpX2Rldik7Cit2b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIgKmZpbGUpOworCitpbnQgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLAorCQkJICAg ICAgIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKK3ZvaWQg aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19k YXRhKTsKK3VpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0 YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0ZShz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWlu dDMyX3QgdmFsKTsKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3Ry dWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhKTsKIAogdWludDMyX3QgSU5SRUcodWludDMy X3QgcmVnKTsKIHVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKTsKQEAgLTU3LDE3ICs4Miwy NCBAQCB2b2lkIE9VVFJFRzE2X0RFVih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50 MTZfdCB2YWwpOwogdm9pZCBPVVRSRUc4X0RFVih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVn LCB1aW50OF90IHZhbCk7CiAKIC8qIHNpZGViYW5kIGFjY2VzcyBmdW5jdGlvbnMgZnJvbSBpbnRl bF9pb3NmLmMgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBp bnQgcGh5KTsKLXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwsIGludCBwaHkpOwotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJf dCByZWcpOwotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCk7Ci11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWlu dDMyX3QgcmVnKTsKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Ci0KLWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCAqdmFsKTsKLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2 YWwpOwordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgaW50IHBoeSk7Cit2b2lkIGludGVs X2RwaW9fcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMy X3QgcmVnLAorCQkJICB1aW50MzJfdCB2YWwsIGludCBwaHkpOwordWludDMyX3QgaW50ZWxfZmxp c2RzaV9yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90 IHJlZyk7Cit2b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAgICB1aW50MzJfdCB2YWwpOwordWlu dDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9pb3Nm X3NiX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9y dCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CisKK2ludCBpbnRlbF9wdW5pdF9y ZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKKwkJ ICAgICB1aW50MzJfdCAqdmFsKTsKK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgIHVpbnQzMl90IHZh bCk7CitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dyaXRlKHN0cnVj dCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFs KTsKIAogLyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAuYyAqLwogI2lmbmRlZiBf X0dUS19ET0NfSUdOT1JFX18KQEAgLTc4LDE3ICsxMTAsNiBAQCBpbnQgaW50ZWxfbmNfd3JpdGUo dWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKICNkZWZpbmUgSU5URUxfUkFOR0VfUlcJCShJ TlRFTF9SQU5HRV9SRUFEIHwgSU5URUxfUkFOR0VfV1JJVEUpCiAjZGVmaW5lIElOVEVMX1JBTkdF X0VORAkJKDE8PDMxKQogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgewotCXVpbnQzMl90 IGJhc2U7Ci0JdWludDMyX3Qgc2l6ZTsKLQl1aW50MzJfdCBmbGFnczsKLX07Ci0KLXN0cnVjdCBp bnRlbF9yZWdpc3Rlcl9tYXAgewotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqbWFwOwot CXVpbnQzMl90IHRvcDsKLQl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKLX07CiBzdHJ1Y3QgaW50 ZWxfcmVnaXN0ZXJfbWFwIGludGVsX2dldF9yZWdpc3Rlcl9tYXAodWludDMyX3QgZGV2aWQpOwog c3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2Uoc3Ry dWN0IGludGVsX3JlZ2lzdGVyX21hcCBtYXAsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbW9k ZSk7CiAjZW5kaWYgLyogX19HVEtfRE9DX0lHTk9SRV9fICovCmRpZmYgLS1naXQgYS9saWIvaW50 ZWxfaW9zZi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAzYjVhMTM3MC4uMTY4NjJlZjQgMTAw NjQ0Ci0tLSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGliL2ludGVsX2lvc2YuYwpAQCAtMTks OCArMTksOCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91YmxlLXdvcmQgYWRkcmVz c2luZywgbm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldSREFfTlAgICAweDA3CiAKLXN0YXRp YyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50 MzJfdCBhZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0YXRpYyBpbnQgdmx2X3NpZGViYW5k X3J3KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJ CSAgIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewogCWlu dCB0aW1lb3V0ID0gMDsKIAl1aW50MzJfdCBjbWQsIGRldmZuLCBiZSwgYmFyOwpAQCAtMzQsMjIg KzM0LDI0IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4 X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJRlQpIHwg KGJlIDw8IElPU0ZfQllURV9FTkFCTEVTX1NISUZUKSB8CiAJCShiYXIgPDwgSU9TRl9CQVJfU0hJ RlQpOwogCi0JaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAm IElPU0ZfU0JfQlVTWSkgeworCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YSwgVkxW X0lPU0ZfRE9PUkJFTExfUkVRKSAmCisJICAgIElPU0ZfU0JfQlVTWSkgewogCQlpZ3Rfd2Fybigi d2FybmluZzogcGNvZGUgKCVzKSBtYWlsYm94IGFjY2VzcyBmYWlsZWRcbiIsIGlzX3JlYWQgPyAi cmVhZCIgOiAid3JpdGUiKTsKIAkJcmV0dXJuIC1FQUdBSU47CiAJfQogCi0JaW50ZWxfcmVnaXN0 ZXJfd3JpdGUoVkxWX0lPU0ZfQUREUiwgYWRkcik7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1p b19kYXRhLCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKIAlpZiAoIWlzX3JlYWQpCi0JCWludGVsX3Jl Z2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0RBVEEsICp2YWwpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3Jp dGUoVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1t aW9fZGF0YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwogCiAJZG8gewogCQl1c2xlZXAo MSk7CiAJCXRpbWVvdXQrKzsKLQl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NG X0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kgJiYKLQkJIHRpbWVvdXQgPCBUSU1FT1VUX1VT KTsKKwl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21taW8sCisJ CQkJICAgICBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwkJSU9TRl9TQl9CVVNZICYmIHRpbWVv dXQgPCBUSU1FT1VUX1VTKTsKIAogCWlmICh0aW1lb3V0ID49IFRJTUVPVVRfVVMpIHsKIAkJaWd0 X3dhcm4oInRpbWVvdXQgd2FpdGluZyBmb3IgcGNvZGUgJXMgKCVkKSB0byBmaW5pc2hcbiIsIGlz X3JlYWQgPyAicmVhZCIgOiAid3JpdGUiLCBhZGRyKTsKQEAgLTU3LDggKzU5LDggQEAgc3RhdGlj IGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQz Ml90IGFkZHIsCiAJfQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9y ZWFkKFZMVl9JT1NGX0RBVEEpOwotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEs IDApOworCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9tbWlvLCBW TFZfSU9TRl9EQVRBKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEtPmlndF9tbWlv LCBWTFZfSU9TRl9EQVRBLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzMsOSArNzUsMTAgQEAg c3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUs IHVpbnQzMl90IGFkZHIsCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nl c3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBp bnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxf cHVuaXRfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRf UFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3 KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsCisJCQkgICAg ICAgdmFsKTsKIH0KIAogLyoqCkBAIC04OCw5ICs5MSwxMCBAQCBpbnQgaW50ZWxfcHVuaXRfcmVh ZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0 aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWls dXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3Qg dmFsKQoraW50IGludGVsX3B1bml0X3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotCXJldHVybiB2bHZfc2lkZWJh bmRfcncoSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOworCXJldHVy biB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSV1JEQV9O UCwgYWRkciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoqCkBAIC0xMDMsOSArMTA3LDEwIEBA IGludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBS ZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2 ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0 dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFs KTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX05DLCBTQl9D UlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFsKTsKIH0KIAogLyoqCkBAIC0xMTgsOSArMTIz LDEwIEBAIGludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiAg KiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdh dGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY193cml0ZSh1aW50 MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCitpbnQgaW50ZWxfbmNfd3JpdGUoc3RydWN0IGludGVs X21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0J cmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9OUCwgYWRkciwg JnZhbCk7CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywg U0JfQ1JXUkRBX05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwpOwogfQogCiAvKioKQEAgLTEzMywx NCArMTM5LDE2IEBAIGludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2 YWwpCiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAg Ki8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQor dWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZywgaW50IHBoeSkKIHsKIAl1aW50MzJfdCB2YWw7CiAKIAlpZiAo cGh5ID09IDApCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVJEX05QLCBy ZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywg U0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJhbmRfcncoSU9T Rl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcnco bW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywKKwkJCQkmdmFsKTsK IAlyZXR1cm4gdmFsOwogfQogCkBAIC0xNTIsMzggKzE2MCw0MCBAQCB1aW50MzJfdCBpbnRlbF9k cGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKICAqCiAgKiAzMi1iaXQgd3JpdGUg b2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJTyBzaWRlYmFuZCBwb3J0 LgogICovCi12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3Qg dmFsLCBpbnQgcGh5KQordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KQog ewogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPLCBTQl9N V1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9S VF9EUElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJhbmRfcnco SU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRf cncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywKKwkJCQkmdmFs KTsKIH0KIAotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCByZWcpCit1 aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZfc2lk ZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKKwl2 bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05Q LCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAotdm9pZCBpbnRlbF9mbGlzZHNpX3Jl Z193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfZmxpc2RzaV9y ZWdfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNC X0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NG X1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQogCi11aW50MzJfdCBp bnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQordWludDMyX3Qg aW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWlu dDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbDsKIAotCXZsdl9zaWRl YmFuZF9ydyhwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3 KG1taW9fZGF0YSwgcG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZh bDsKIH0KIAotdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKQordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBpbnRl bF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JXUkRBX05QLCBy ZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSV1JEQV9O UCwgcmVnLCAmdmFsKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9tbWlvLmMgYi9saWIvaW50 ZWxfbW1pby5jCmluZGV4IDE3ODgzM2M3Li42Y2VkYzM5YiAxMDA2NDQKLS0tIGEvbGliL2ludGVs X21taW8uYworKysgYi9saWIvaW50ZWxfbW1pby5jCkBAIC03MCw1NyArNzAsNTcgQEAKICAqCiAg KiBQb2ludGVyIHRvIHRoZSByZWdpc3RlciByYW5nZSwgaW5pdGlhbGl6ZWQgdXNpbmcgaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoKQogICogb3IgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCku IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBkaXJlY3RseS4KKyAqIFRoaXMgcG9p bnRlciBpcyB2YWxpZCBvbmx5IGZvciBvbmUgZHJtIGRldmljZS4KICAqLwogdm9pZCAqaWd0X2ds b2JhbF9tbWlvOwogCi1zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgewotCWludCBpbml0ZWQ7Ci0J Ym9vbCBzYWZlOwotCXVpbnQzMl90IGk5MTVfZGV2aWQ7Ci0Jc3RydWN0IGludGVsX3JlZ2lzdGVy X21hcCBtYXA7Ci0JaW50IGtleTsKLX0gbW1pb19kYXRhOwotCiAvKioKICAqIGludGVsX21taW9f dXNlX2R1bXBfZmlsZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3Bl cmF0aW9ucwogICogQGZpbGU6IG5hbWUgb2YgdGhlIHJlZ2lzdGVyIGR1bXAgZmlsZSB0byBvcGVu CiAgKgotICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNv bnRhaW5lZCBpbiBAZmlsZS4gVGhpcyBhbGxvd3MKLSAqIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJl dXNlZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcgZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzCi0g KiBmcm9tIHJlZ2lzdGVyIGR1bXBzLgorICogU2V0cyBhbHNvIHVwIG1taW9fZGF0YS0+aWd0X21t aW8gdG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkCisgKiBpbiBAZmlsZS4gVGhpcyBhbGxv d3MgdGhlIHNhbWUgY29kZSB0byBnZXQgcmV1c2VkIGZvciBkdW1waW5nIGFuZCBkZWNvZGluZwor ICogZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzIGZyb20gcmVnaXN0ZXIgZHVtcHMuCiAgKi8KIHZv aWQKLWludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQoraW50ZWxfbW1pb191c2Vf ZHVtcF9maWxlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgY2hhciAqZmlsZSkK IHsKIAlpbnQgZmQ7CiAJc3RydWN0IHN0YXQgc3Q7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBz aXplb2Yoc3RydWN0IGludGVsX21taW9fZGF0YSkpOwogCWZkID0gb3BlbihmaWxlLCBPX1JEV1Ip OwogCWlndF9mYWlsX29uX2YoZmQgPT0gLTEsCiAJCSAgICAgICJDb3VsZG4ndCBvcGVuICVzXG4i LCBmaWxlKTsKIAogCWZzdGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVM TCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7 Ci0JaWd0X2ZhaWxfb25fZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwltbWlvX2Rh dGEtPmlndF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJPVF9XUklU RSwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+aWd0X21t aW8gPT0gTUFQX0ZBSUxFRCwKIAkJICAgICAgIkNvdWxkbid0IG1tYXAgJXNcbiIsIGZpbGUpOwor CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLT5pZ3RfbW1pbzsKKwogCWNsb3NlKGZkKTsK IH0KIAogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgorICogQG1taW9fZGF0YTogIG1t aW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhY3Bo aXMgcGNpIGRldmljZQogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBh dCB0aGUgbW1pbyBiYXIuCisgKiBGaWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGggaWd0X21t aW8gdG8gcG9pbnQgYXQgdGhlIG1taW8gYmFyLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRh aW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCiAgKi8KIHZvaWQKLWludGVsX21taW9f dXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCitpbnRlbF9tbWlvX3VzZV9w Y2lfYmFyKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgc3RydWN0IHBjaV9kZXZp Y2UgKnBjaV9kZXYpCiB7CiAJdWludDMyX3QgZGV2aWQsIGdlbjsKIAlpbnQgbW1pb19iYXIsIG1t aW9fc2l6ZTsKIAlpbnQgZXJyb3I7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yoc3Ry dWN0IGludGVsX21taW9fZGF0YSkpOwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwogCWlm IChJU19HRU4yKGRldmlkKSkKIAkJbW1pb19iYXIgPSAxOwpAQCAtMTM5LDcgKzEzOSw5IEBAIGlu dGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCiAJCQkJICAg ICAgcGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0uYmFzZV9hZGRyLAogCQkJCSAgICAgIG1taW9f c2l6ZSwKIAkJCQkgICAgICBQQ0lfREVWX01BUF9GTEFHX1dSSVRBQkxFLAotCQkJCSAgICAgICZp Z3RfZ2xvYmFsX21taW8pOworCQkJCSAgICAgICZtbWlvX2RhdGEtPmlndF9tbWlvKTsKKworCWln dF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21taW87CiAKIAlpZ3RfZmFpbF9vbl9mKGVy cm9yICE9IDAsCiAJCSAgICAgICJDb3VsZG4ndCBtYXAgTU1JTyByZWdpb25cbiIpOwpAQCAtMTUz LDYgKzE1NSw3IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQogCiAvKioKICAqIGlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0OgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJl IGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhcGhpY3MgcGNpIGRldmlj ZQogICogQHNhZmU6IHVzZSBzYWZlIHJlZ2lzdGVyIGFjY2VzcyB0YWJsZXMKICAqCkBAIC0xNjAs NzYgKzE2Myw3MiBAQCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBmZCkKICAqIGhhbmRsaW5n IGFuZCBhbHNvIGFsbG93cyByZWdpc3RlciBhY2Nlc3MgdG8gYmUgY2hlY2tlZCB3aXRoIGFuIGV4 cGxpY2l0CiAgKiB3aGl0ZWxpc3QuCiAgKgotICogSXQgYWxzbyBpbml0aWFsaXplcyAjaWd0X2ds b2JhbF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2JhcigpLgorICogSXQgYWxzbyBpbml0 aWFsaXplcyBtbWlvX2RhdGEtPmlndF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2Jhcigp LgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2 aWNlKCkuCiAgKi8KIGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9k ZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNl ICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQogewogCWludCByZXQ7CiAKLQkvKiBhZnRlciBv bGQgQVBJIGlzIGRlcHJlY2F0ZWQsIHJlbW92ZSB0aGlzICovCi0JaWYgKGlndF9nbG9iYWxfbW1p byA9PSBOVUxMKQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCWludGVsX21t aW9fdXNlX3BjaV9iYXIobW1pb19kYXRhLCBwY2lfZGV2KTsKIAotCWlndF9hc3NlcnQoaWd0X2ds b2JhbF9tbWlvICE9IE5VTEwpOworCWlndF9hc3NlcnQobW1pb19kYXRhLT5pZ3RfbW1pbyAhPSBO VUxMKTsKIAotCWlmIChtbWlvX2RhdGEuaW5pdGVkKQotCQlyZXR1cm4gLTE7Ci0KLQltbWlvX2Rh dGEuc2FmZSA9IChzYWZlICE9IDAgJiYKKwltbWlvX2RhdGEtPnNhZmUgPSAoc2FmZSAhPSAwICYm CiAJCQlpbnRlbF9nZW4ocGNpX2Rldi0+ZGV2aWNlX2lkKSA+PSA0KSA/IHRydWUgOiBmYWxzZTsK LQltbWlvX2RhdGEuaTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKLQlpZiAobW1pb19k YXRhLnNhZmUpCi0JCW1taW9fZGF0YS5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9f ZGF0YS5pOTE1X2RldmlkKTsKKwltbWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQgPSBwY2lfZGV2LT5k ZXZpY2VfaWQ7CisJaWYgKG1taW9fZGF0YS0+c2FmZSkKKwkJbW1pb19kYXRhLT5tYXAgPSBpbnRl bF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS0+cGNpX2RldmljZV9pZCk7CiAKIAkvKiBGaW5k IHdoZXJlIHRoZSBmb3JjZXdha2UgbG9jayBpcy4gRm9yY2V3YWtlIGRvZXNuJ3QgZXhpc3QKIAkg KiBnZW4gPCA2LCBidXQgdGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdodCB0aGluZ3MgZm9y IHVzLgogCSAqLwogCXJldCA9IGlndF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUoZmQpOwogCWlmIChy ZXQgPT0gLTEpCi0JCW1taW9fZGF0YS5rZXkgPSBGQUtFS0VZOworCQltbWlvX2RhdGEtPmtleSA9 IEZBS0VLRVk7CiAJZWxzZQotCQltbWlvX2RhdGEua2V5ID0gcmV0OworCQltbWlvX2RhdGEtPmtl eSA9IHJldDsKIAotCW1taW9fZGF0YS5pbml0ZWQrKzsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGlj IGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uodm9pZCkKK2ludGVsX3JlZ2lz dGVyX2FjY2Vzc19uZWVkc193YWtlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSkK IHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSAhPSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEt PmtleSAhPSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVk c19mYWtld2FrZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0 aW9ucwogICoKICAqIFJldHVybnM6CiAgKiBOb24temVybyB3aGVuIGZvcmNld2FrZSBpbml0aWFs aXphdGlvbiBmYWlsZWQuCiAgKi8KLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFr ZXdha2Uodm9pZCkKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3Ry dWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhKQogewotCXJldHVybiBtbWlvX2RhdGEua2V5 ID09IEZBS0VLRVk7CisJcmV0dXJuIG1taW9fZGF0YS0+a2V5ID09IEZBS0VLRVk7CiB9CiAKIC8q KgogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmk6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBz dHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAgKiBDbGVhbiB1cCB0aGUgcmVnaXN0ZXIg YWNjZXNzIGhlbHBlciBpbml0aWFsaXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgpLgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQoraW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRh KQogewotCWlmIChtbWlvX2RhdGEua2V5ICYmIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193 YWtlKCkpCi0JCXJlbGVhc2VfZm9yY2V3YWtlX2xvY2sobW1pb19kYXRhLmtleSk7Ci0JbW1pb19k YXRhLmluaXRlZC0tOworCWlmIChtbWlvX2RhdGEtPmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfbmVlZHNfd2FrZShtbWlvX2RhdGEpKQorCQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9f ZGF0YS0+a2V5KTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9yZWFkOgorICogQG1taW9f ZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdpc3Rl ciBvZmZzZXQKICAqCiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4g VGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwpAQCAtMjQyLDIwICsyNDEsMTgg QEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKICAqIFRoZSB2YWx1ZSByZWFkIGZy b20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50 MzJfdCByZWcpCitpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAq cmFuZ2U7CiAJdWludDMyX3QgcmV0OwogCi0JaWd0X2Fzc2VydChtbWlvX2RhdGEuaW5pdGVkKTsK LQotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCi0JCWlndF9hc3Nl cnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbihtbWlvX2RhdGEtPnBjaV9k ZXZpY2VfaWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkgIT0gLTEpOwogCi0J aWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2FmZSkKIAkJZ290byByZWFk X291dDsKIAotCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS5tYXAs CisJcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAsCiAJCQkJ CSByZWcsCiAJCQkJCSBJTlRFTF9SQU5HRV9SRUFEKTsKIApAQCAtMjY2LDEzICsyNjMsMTQgQEAg aW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCiAJfQogCiByZWFkX291dDoKLQlyZXQg PSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZyk7CisJcmV0ID0g Kih2b2xhdGlsZSB1aW50MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKTsKIG91dDoK IAlyZXR1cm4gcmV0OwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgorICogQG1t aW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdp c3RlciBvZmZzZXQKICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtMjgzLDE5ICsyODEs MTcgQEAgb3V0OgogICogd2hpdGUgbGlzdHMuCiAgKi8KIHZvaWQKLWludGVsX3JlZ2lzdGVyX3dy aXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQoraW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3Ry dWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZh bCkKIHsKIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwogCi0JaWd0X2Fzc2Vy dChtbWlvX2RhdGEuaW5pdGVkKTsKKwlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS0+cGNpX2Rldmlj ZV9pZCkgPj0gNikKKwkJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAhPSAtMSk7CiAKLQlpZiAo aW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2RldmlkKSA+PSA2KQotCQlpZ3RfYXNzZXJ0KG1taW9f ZGF0YS5rZXkgIT0gLTEpOwotCi0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0 YS0+c2FmZSkKIAkJZ290byB3cml0ZV9vdXQ7CiAKLQlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rl cl9yYW5nZShtbWlvX2RhdGEubWFwLAorCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3Jhbmdl KG1taW9fZGF0YS0+bWFwLAogCQkJCQkgcmVnLAogCQkJCQkgSU5URUxfUkFOR0VfV1JJVEUpOwog CkBAIC0zMDMsNyArMjk5LDcgQEAgaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1 aW50MzJfdCB2YWwpCiAJCSAgICAgICJSZWdpc3RlciB3cml0ZSBibG9ja2VkIGZvciBzYWZldHkg IiIoKjB4JTA4eCA9IDB4JXgpXG4iLCByZWcsIHZhbCk7CiAKIHdyaXRlX291dDoKLQkqKHZvbGF0 aWxlIHVpbnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7CisJKih2b2xhdGls ZSB1aW50MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogCmRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYyBiL3Rlc3RzL2k5MTUvZ2Vt X2V4ZWNfbGF0ZW5jeS5jCmluZGV4IGU1NmQ2Mjc4Li45ZGRiMzQ4YyAxMDA2NDQKLS0tIGEvdGVz dHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRl bmN5LmMKQEAgLTYxLDYgKzYxLDggQEAKIAogc3RhdGljIHVuc2lnbmVkIGludCByaW5nX3NpemU7 CiBzdGF0aWMgZG91YmxlIHJjc19jbG9jazsKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh IG1taW9fZGF0YTsKKwogCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwgdW5zaWduZWQg cmluZywgY29uc3QgY2hhciAqbmFtZSkKQEAgLTY2Nyw3ICs2NjksNyBAQCBpZ3RfbWFpbgogCQlp ZiAocmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7CiAKLQkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGRldmljZSk7 CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lf ZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOwogCQlyY3NfY2xvY2sgPSBjbG9ja3JhdGUoZGV2aWNl LCBSQ1NfVElNRVNUQU1QKTsKIAkJaWd0X2luZm8oIlJDUyB0aW1lc3RhbXAgY2xvY2s6ICUuMGZL SHosICUuMWZuc1xuIiwKIAkJCSByY3NfY2xvY2sgLyAxZTMsIDFlOSAvIHJjc19jbG9jayk7CmRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgYi90ZXN0cy9pOTE1L2dlbV9l eGVjX3BhcnNlLmMKaW5kZXggNjJlOGQwYTUuLmViNGY0OGY1IDEwMDY0NAotLS0gYS90ZXN0cy9p OTE1L2dlbV9leGVjX3BhcnNlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jCkBA IC01OCw2ICs1OCw5IEBACiAKIHN0YXRpYyBpbnQgcGFyc2VyX3ZlcnNpb247CiAKK3N0cnVjdCBp bnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOworCisKIHN0YXRpYyBpbnQgY29tbWFuZF9wYXJzZXJf dmVyc2lvbihpbnQgZmQpCiB7CiAJaW50IHZlcnNpb24gPSAtMTsKQEAgLTI4NCw5ICsyODcsOSBA QCB0ZXN0X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3RfbHJpICp0ZXN0 KQogCQkgIHRlc3QtPm5hbWUsIHRlc3QtPnJlZywgdGVzdC0+dGVzdF92YWwsCiAJCSAgZXhwZWN0 ZWRfZXJybm8sIGV4cGVjdCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZSh0ZXN0LT5yZWcsIHRl c3QtPmluaXRfdmFsKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCB0ZXN0LT5y ZWcsIHRlc3QtPmluaXRfdmFsKTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rl cl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9y ZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgogCQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKIAkJ CSAgdGVzdC0+aW5pdF92YWwpOwogCkBAIC0yOTYsNyArMjk5LDcgQEAgdGVzdF9scmkoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkKIAkJICAgZXhwZWN0ZWRf ZXJybm8pOwogCWdlbV9zeW5jKGZkLCBoYW5kbGUpOwogCi0JaWd0X2Fzc2VydF9lcV91MzIoKGlu dGVsX3JlZ2lzdGVyX3JlYWQodGVzdC0+cmVnKSAmCisJaWd0X2Fzc2VydF9lcV91MzIoKGludGVs X3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgdGVzdC0+cmVnKSAmCiAJCQkgICB0ZXN0LT5yZWFk X21hc2spLAogCQkJICBleHBlY3QpOwogfQpAQCAtNTMwLDcgKzUzMyw3IEBAIGlndF9tYWluCiAj dW5kZWYgUkVHCiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQkJaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOwogCQl9 CiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxyaXMpOyBpKyspIHsKQEAgLTU0 Myw3ICs1NDYsNyBAQCBpZ3RfbWFpbgogCQl9CiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZt bWlvX2RhdGEpOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV93b3JrYXJv dW5kcy5jIGIvdGVzdHMvaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwppbmRleCA4MWMzNTZmMC4uZGQ2 MzE2ZWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMKKysrIGIvdGVz dHMvaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwpAQCAtMjI1LDYgKzIyNSw3IEBAIHN0YXRpYyB2b2lk IGNoZWNrX3dvcmthcm91bmRzKGludCBmZCwgZW51bSBvcGVyYXRpb24gb3AsIHVuc2lnbmVkIGlu dCBmbGFncykKIAogaWd0X21haW4KIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0 YTsKIAlpbnQgZGV2aWNlID0gLTE7CiAJY29uc3Qgc3RydWN0IHsKIAkJY29uc3QgY2hhciAqbmFt ZTsKQEAgLTI1Niw3ICsyNTcsNyBAQCBpZ3RfbWFpbgogCQlkZXZpY2UgPSBkcm1fb3Blbl9kcml2 ZXIoRFJJVkVSX0lOVEVMKTsKIAkJaWd0X3JlcXVpcmVfZ2VtKGRldmljZSk7CiAKLQkJaW50ZWxf bW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKKwkJaW50ZWxfbW1pb191 c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCQlnZW4g PSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChkZXZpY2UpKTsKIApkaWZmIC0tZ2l0IGEv dGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKaW5k ZXggYjMxOWRiZTkuLjQyOTM4ZTEwIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBz cC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKQEAgLTE4Nyw3ICsxODcsNyBAQCBp bnQgZHJtX2ZkOwogdWludDMyX3QgZGV2aWQ7CiBkcm1Nb2RlUmVzUHRyIGRybV9yZXM7CiBkcm1N b2RlQ29ubmVjdG9yUHRyIGRybV9jb25uZWN0b3JzW01BWF9DT05ORUNUT1JTXTsKLQorc3RydWN0 IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiBpZ3RfbWFpbgogewogCWlndF9maXh0dXJlIHsK QEAgLTIxMCw3ICsyMTAsNyBAQCBpZ3RfbWFpbgogCiAJCWlndF9yZXF1aXJlKHN1cHBvcnRzX2xw c3AoZGV2aWQpKTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCBkcm1fZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1p b19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkcm1fZmQpOwogCiAJCWttc3Rlc3Rf c2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKIAl9CkBAIC0yMjcsNyArMjI3LDcgQEAgaWd0X21haW4K IAlpZ3RfZml4dHVyZSB7CiAJCWludCBpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p KCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCQlmb3IgKGkg PSAwOyBpIDwgZHJtX3Jlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKQogCQkJZHJtTW9kZUZyZWVD b25uZWN0b3IoZHJtX2Nvbm5lY3RvcnNbaV0pOwogCQlkcm1Nb2RlRnJlZVJlc291cmNlcyhkcm1f cmVzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyBiL3Rvb2xzL2ludGVs X2F1ZGlvX2R1bXAuYwppbmRleCA3MjZiYjRiNi4uNmQxMTY1OWUgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2ludGVsX2F1ZGlvX2R1bXAuYworKysgYi90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKQEAgLTQy LDYgKzQyLDcgQEAgc3RhdGljIHVpbnQzMl90IGRldmlkOwogc3RhdGljIGludCBhdWRfcmVnX2Jh c2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYXVkaW8gcmVnaXN0ZXJzICovCiBzdGF0aWMgaW50 IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMg Ki8KIAorCiAjZGVmaW5lIElTX0hBU1dFTExfUExVUyhkZXZpZCkgIChJU19IQVNXRUxMKGRldmlk KSB8fCBJU19CUk9BRFdFTEwoZGV2aWQpKQogCiAjZGVmaW5lIEJJVFNUTyhuKQkJKG4gPj0gc2l6 ZW9mKGxvbmcpICogOCA/IH4wIDogKDFVTCA8PCAobikpIC0gMSkKQEAgLTI0NjQsNiArMjQ2NSw3 IEBAIHN0YXRpYyB2b2lkIGR1bXBfYnJhc3dlbGwodm9pZCkKIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIHsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKKwlzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpOwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOyAvKiBYWFggbm90IHRydWUgd2hlbiBt YXBwaW5nISAqLwpAQCAtMjQ3MSw5ICsyNDczLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCWRvX3NlbGZfdGVzdHMoKTsKIAogCWlmIChhcmdjID09IDIpCi0JCWludGVsX21t aW9fdXNlX2R1bXBfZmlsZShhcmd2WzFdKTsKKwkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCZt bWlvX2RhdGEsIGFyZ3ZbMV0pOwogCWVsc2UKLQkJaW50ZWxfbW1pb191c2VfcGNpX2JhcihwY2lf ZGV2KTsKKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBwY2lfZGV2KTsKIAog CXByaW50ZigiJXMgYXVkaW8gcmVnaXN0ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2aWNlX2luZm8o ZGV2aWQpLT5jb2RlbmFtZSk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQpKSB7CmRpZmYgLS1n aXQgYS90b29scy9pbnRlbF9iYWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCmlu ZGV4IDA2N2ZkNDE4Li5lZGYwNjAyMiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYmFja2xpZ2h0 LmMKKysrIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKQEAgLTM4LDkgKzM4LDEwIEBACiAKIGlu dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh IG1taW9fZGF0YTsKIAl1aW50MzJfdCBjdXJyZW50LCBtYXg7CiAKLQlpbnRlbF9tbWlvX3VzZV9w Y2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAljdXJyZW50ID0gSU5SRUco QkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7CiAJbWF4ID0gSU5S RUcoQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9kaXNw bGF5X3BvbGxlci5jIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwppbmRleCA1MWY1Yjlh NS4uZjQ3OTdhMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKKysr IGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwpAQCAtOTYyLDYgKzk2Miw3IEBAIHN0YXRp YyB2b2lkIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkgdXNhZ2UoY29uc3QgY2hhciAqbmFtZSkK IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgcGlwZSA9IDAsIGJpdCA9IDAsIHRhcmdl dF9zY2FubGluZSA9IDAsIHRhcmdldF9mdXp6ID0gMTsKIAlib29sIHRlc3RfcGl4ZWxjb3VudCA9 IGZhbHNlOwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkJYnJlYWs7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZt bWlvX2RhdGEgLGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCXByaW50ZigiJXM/ XG4iLCB0ZXN0X25hbWUodGVzdCwgcGlwZSwgYml0LCB0ZXN0X3BpeGVsY291bnQpKTsKIApAQCAt MTI2Miw3ICsxMjYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYXNz ZXJ0KDApOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlpZiAocXVpdCkKIAkJcmV0dXJuIDA7 CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9mb3JjZXdha2VkLmMgYi90b29scy9pbnRlbF9mb3Jj ZXdha2VkLmMKaW5kZXggMDJmYmY4ODguLjg3YjI2ZDQzIDEwMDY0NAotLS0gYS90b29scy9pbnRl bF9mb3JjZXdha2VkLmMKKysrIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCkBAIC01NywxNCAr NTcsMTUgQEAgaGVscChjaGFyICpwcm9nKSB7CiB9CiAKIHN0YXRpYyBpbnQKLWlzX2FsaXZlKHZv aWQpIHsKK2lzX2FsaXZlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSkgewogCS8q IFJlYWQgdGhlIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5cyBiZSAhMCAq LwotCXJldHVybiAoaW50ZWxfcmVnaXN0ZXJfcmVhZCgweDIzNTgpICE9IDApOworCXJldHVybiAo aW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIDB4MjM1OCkgIT0gMCk7CiB9CiAKIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhIG1taW9fZGF0YTsKIAogCWlmIChhcmdjID4gMiB8fCAoYXJnYyA9PSAyICYmICFz dHJuY21wKGFyZ3ZbMV0sICItaCIsIDIpKSkgewogCQloZWxwKGFyZ3ZbMV0pOwpAQCAtODAsNyAr ODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlJTkZPX1BSSU5UKCJz dGFydGVkIGRhZW1vbiIpOwogCX0KIAotCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7CiAJ aWYgKHJldCkgewogCQlJTkZPX1BSSU5UKCJDb3VsZG4ndCBpbml0IHJlZ2lzdGVyIGFjY2Vzc1xu Iik7CiAJCWV4aXQoMSk7CkBAIC04OCwxNiArODksMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJSU5GT19QUklOVCgiRm9yY2V3YWtlIGxvY2tlZFxuIik7CiAJfQogCXdo aWxlKDEpIHsKLQkJaWYgKCFpc19hbGl2ZSgpKSB7CisJCWlmICghaXNfYWxpdmUoJm1taW9fZGF0 YSkpIHsKIAkJCUlORk9fUFJJTlQoImdwdSByZXNldD8gcmVzdGFydGluZyBkYWVtb25cbiIpOwot CQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKLQkJCXJldCA9IGludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwkJCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOworCQkJcmV0ID0gaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOwog CQkJaWYgKHJldCkKIAkJCQlJTkZPX1BSSU5UKCJSZWcgYWNjZXNzIGluaXQgZmFpbFxuIik7CiAJ CX0KIAkJc2xlZXAoMSk7CiAJfQotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJSU5GT19QUklOVCgiRm9yY2V3 YWtlIHVubG9ja1xuIik7CiAKIAlpZiAoZGFlbW9uaXplZCkgewpkaWZmIC0tZ2l0IGEvdG9vbHMv aW50ZWxfZ3B1X3RpbWUuYyBiL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKaW5kZXggNTZkNjVmZTAu LjExYmY3MzU0IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9ncHVfdGltZS5jCisrKyBiL3Rvb2xz L2ludGVsX2dwdV90aW1lLmMKQEAgLTY1LDkgKzY1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAl1aW50NjRfdCByaW5nX2lkbGUgPSAwLCByaW5nX3RpbWUgPSAwOwogCXN0 cnVjdCB0aW1ldmFsIHN0YXJ0LCBlbmQ7CiAJc3RhdGljIHN0cnVjdCBydXNhZ2UgcnVzYWdlOwor CXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBzdGF0dXM7CiAKLQlpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWludGVsX21taW9f dXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAlpZiAo YXJnYyA9PSAxKSB7CiAJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIGNtZCBbYXJncy4uLl1c biIsIGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jIGIvdG9v bHMvaW50ZWxfaW5mb2ZyYW1lcy5jCmluZGV4IDJlZjVkNGZkLi5kNGJmNTI4YyAxMDA2NDQKLS0t IGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCisrKyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMu YwpAQCAtMjY0LDYgKzI2NCw3IEBAIGNvbnN0IGNoYXIgKmRpcF9mcmVxdWVuY3lfbmFtZXNbXSA9 IHsKIAogc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXY7CiBpbnQgZ2VuID0gMDsKK3N0cnVjdCBp bnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiBzdGF0aWMgY29uc3QgY2hhciAqc3BkX3NvdXJj ZV90b19zdHJpbmcoU291cmNlRGV2aWNlIHNvdXJjZSkKIHsKQEAgLTExMDgsNyArMTEwOSw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICAgICAgICIgcGVyZmVjdGx5OiB0 aGUgS2VybmVsIG1pZ2h0IHVuZG8gb3VyIGNoYW5nZXMuXG4iKTsKIAogCXBjaV9kZXYgPSBpbnRl bF9nZXRfcGNpX2RldmljZSgpOwotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYs IDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2 LCAwLCAtMSk7CiAJaW50ZWxfY2hlY2tfcGNoKCk7CiAKIAlpZiAoSVNfR0VONChwY2lfZGV2LT5k ZXZpY2VfaWQpKQpAQCAtMTI1Niw2ICsxMjU3LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9CmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9sM19wYXJpdHkuYyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0 eS5jCmluZGV4IDQxNzljNWFlLi4wNmExODVjOSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfbDNf cGFyaXR5LmMKKysrIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKQEAgLTE3Niw2ICsxNzYsNyBA QCBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogCiBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwog CWNvbnN0IGNoYXIgKnBhdGhbUkVBTF9NQVhfU0xJQ0VTXSA9IHsibDNfcGFyaXR5IiwgImwzX3Bh cml0eV9zbGljZV8xIn07CiAJaW50IHJvdyA9IDAsIGJhbmsgPSAwLCBzYmFuayA9IDA7CiAJaW50 IGZkW1JFQUxfTUFYX1NMSUNFU10gPSB7MH0sIHJldCwgaTsKQEAgLTE4OSw3ICsxOTAsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWlmIChpbnRlbF9nZW4oZGV2aWQpIDwg NyB8fCBJU19WQUxMRVlWSUVXKGRldmlkKSkKIAkJZXhpdCg3Nyk7CiAKLQlhc3NlcnQoaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9 PSAwKTsKKwlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKIAogCWRpciA9IGlndF9zeXNm c19vcGVuKGRldmljZSk7CiAKQEAgLTIxNyw3ICsyMTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCSAqIG5vdy4gSnVzdCBiZSBhd2FyZSBvZiB0aGlzIGlmIGZvciBzb21l IHJlYXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKIAkgKiB3aGVuIHVzaW5nIHRoaXMgdG9vbC4KIAkg Ki8KLQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4YjAzOCk7CisJZGZ0ID0gaW50ZWxfcmVn aXN0ZXJfcmVhZCgmbW1pb19kYXRhLCAweGIwMzgpOwogCiAJd2hpbGUgKDEpIHsKIAkJaW50IGMs IG9wdGlvbl9pbmRleCA9IDA7CkBAIC0zNjYsMTAgKzM2NywxMCBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJCWFzc2VydChpIDwgMik7CiAJCQkJZGZ0IHw9IGkgPDwgMTsg Lyogc2xpY2UgKi8KIAkJCQlkZnQgfD0gMSA8PCAwOyAvKiBlbmFibGUgKi8KLQkJCQlpbnRlbF9y ZWdpc3Rlcl93cml0ZSgweGIwMzgsIGRmdCk7CisJCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1t aW9fZGF0YSwgMHhiMDM4LCBkZnQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndSc6Ci0JCQkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQgJiB+KDE8PDApKTsKKwkJCQlpbnRlbF9yZWdp c3Rlcl93cml0ZSgmbW1pb19kYXRhICwweGIwMzgsIGRmdCAmIH4oMTw8MCkpOwogCQkJCWJyZWFr OwogCQkJY2FzZSAnTCc6CiAJCQkJYnJlYWs7CkBAIC0zNzgsNyArMzc5LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJaWYg KGFjdGlvbiA9PSAnbCcpCiAJCWV4aXQoRVhJVF9TVUNDRVNTKTsKIApkaWZmIC0tZ2l0IGEvdG9v bHMvaW50ZWxfbGlkLmMgYi90b29scy9pbnRlbF9saWQuYwppbmRleCAzN2M2YmE1ZS4uMmExZDk4 MDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2xpZC5jCisrKyBiL3Rvb2xzL2ludGVsX2xpZC5j CkBAIC0xMTcsOSArMTE3LDEwIEBAIG91dDoKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBzd2YxNCwg YWNwaV9saWQ7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNl KCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSk7CiAKIAl3aGlsZSAoMSkgewogCQlzd2YxNCA9IElOUkVHKFNXRjE0KTsKZGlmZiAt LWdpdCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0 dGVyLmMKaW5kZXggMTM3ZWY2MWEuLjY0MDc4NzA1IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9w YW5lbF9maXR0ZXIuYworKysgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwpAQCAtMjczLDYg KzI3Myw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJvb2wgZG9fZGlz YWJsZSA9IGZhbHNlLCBkb19kdW1wID0gZmFsc2UsIGRvX3VzYWdlID0gZmFsc2U7CiAJc3RydWN0 IHBjaV9kZXZpY2UgKnBjaV9kZXY7CiAJdWludDMyX3QgZGV2aWQ7CisJc3RydWN0IGludGVsX21t aW9fZGF0YSBtbWlvX2RhdGE7CiAKIAlwcmludGYoIldBUk5JTkc6XG4iCiAJICAgICAgICJUaGlz IHRvb2wgaXMgYSB3b3JrYXJvdW5kIGZvciBwZW9wbGUgdGhhdCBkb24ndCBoYXZlIGEgS2VybmVs ICIKQEAgLTI4MCw3ICsyODEsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkgICAgICAgInNvbHV0aW9uIHRoYXQgbWF5IG9yIG1heSBub3Qgd29yay4gVXNlIGl0IGF0IHlv dXIgb3duIHJpc2suXG4iKTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwot CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2LCAwLCAtMSk7CiAJZGV2aWQgPSBw Y2lfZGV2LT5kZXZpY2VfaWQ7CiAKIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2aWQpKSB7CkBAIC0z NDIsNiArMzQzLDYgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiBv dXQ6Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmbW1pb19kYXRhKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMv aW50ZWxfcGVyZl9jb3VudGVycy5jIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCmluZGV4 IDUwYzRiY2U2Li41ODI0ZDljMSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVy cy5jCisrKyBiL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYwpAQCAtNDQxLDYgKzQ0MSw3IEBA IGdlbjdfZ2V0X2NvdW50ZXJzKHZvaWQpCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCXVpbnQzMl90IGRldmlk OwogCWludCBjb3VudGVyX2Zvcm1hdDsKIAlpbnQgY291bnRlcl9jb3VudDsKQEAgLTQ4MywxMCAr NDg0LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkg ewogCQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgm bW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLAorCQkJCTAsIGZkKTsKIAogCQkvKiBF bmFibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoT0FD T05UUk9MLAorCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCBPQUNPTlRST0wsCiAJ CQljb3VudGVyX2Zvcm1hdCA8PCBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAogCQkJ UEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwogCX0KQEAgLTUyMCwxMCArNTIyLDEwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkgewogCQkvKiBEaXNh YmxlIHBlcmZvcm1hbmNlIGNvdW50ZXJzICovCi0JCWludGVsX3JlZ2lzdGVyX3dyaXRlKE9BQ09O VFJPTCwgMCk7CisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIE9BQ09OVFJPTCwg MCk7CiAKIAkJLyogRm9yY2V3YWtlICovCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCX0KIAogCWZyZWUo dG90YWxzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZy5jIGIvdG9vbHMvaW50ZWxfcmVn LmMKaW5kZXggZTUxNzk1NmIuLjg0N2ZkYmVkIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9yZWcu YworKysgYi90b29scy9pbnRlbF9yZWcuYwpAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgaW5saW5l IGludCBfbm90X3N1cHBvcnRlZCh2b2lkKQogCiBzdHJ1Y3QgY29uZmlnIHsKIAlzdHJ1Y3QgcGNp X2RldmljZSAqcGNpX2RldjsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlj aGFyICptbWlvZmlsZTsKIAl1aW50MzJfdCBkZXZpZDsKIApAQCAtMzg3LDcgKzM4OCw3IEBAIHN0 YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcg KnJlZywgdWludDMyX3QgKnZhbHApCiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1 cm4gLTE7CiAJCX0KLQkJdmFsID0gaW50ZWxfaW9zZl9zYl9yZWFkKHJlZy0+cG9ydF9kZXNjLnBv cnQsIHJlZy0+YWRkcik7CisJCXZhbCA9IGludGVsX2lvc2Zfc2JfcmVhZCgmY29uZmlnLT5tbWlv X2RhdGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWRlZmF1 bHQ6CiAJCWZwcmludGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBv cnRfZGVzYy5wb3J0KTsKQEAgLTQ1OCw3ICs0NTksNyBAQCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lz dGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwp CiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJaW50ZWxf aW9zZl9zYl93cml0ZShyZWctPnBvcnRfZGVzYy5wb3J0LCByZWctPmFkZHIsIHZhbCk7CisJCWlu dGVsX2lvc2Zfc2Jfd3JpdGUoJmNvbmZpZy0+bW1pb19kYXRhLCByZWctPnBvcnRfZGVzYy5wb3J0 LCByZWctPmFkZHIsIHZhbCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmludGYoc3RkZXJy LCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0KTsKQEAgLTU1 Miw5ICs1NTMsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNv bmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIAlpZiAoY29uZmlnLT5tbWlvZmls ZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOworCQlpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPm1taW9maWxl KTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2Rldiwg MCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmlnLT5tbWlvX2RhdGEs IGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykg ewogCQlzdHJ1Y3QgcmVnIHJlZzsKQEAgLTU3MCw3ICs1NzEsNyBAQCBzdGF0aWMgaW50IGludGVs X3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoJmNvbmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NF U1M7CiB9CkBAIC01ODQsNyArNTg1LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3Ry dWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlyZXR1cm4gRVhJ VF9GQUlMVVJFOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNp X2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZjb25maWctPm1taW9f ZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsg aSArPSAyKSB7CiAJCXN0cnVjdCByZWcgcmVnOwpAQCAtNjA5LDcgKzYxMCw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJd3JpdGVfcmVnaXN0ZXIoY29uZmlnLCAmcmVnLCB2YWwpOwogCX0KIAotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko JmNvbmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9CkBAIC02MjAs OSArNjIxLDkgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1Y3QgY29uZmlnICpjb25m aWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW50IGk7CiAKIAlpZiAoY29uZmlnLT5tbWlv ZmlsZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOworCQlp bnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPm1taW9m aWxlKTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2Rl diwgMCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmlnLT5tbWlvX2Rh dGEsIGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+ cmVnY291bnQ7IGkrKykgewogCQlyZWcgPSAmY29uZmlnLT5yZWdzW2ldOwpAQCAtNjM0LDcgKzYz NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBp bnQgYXJnYywgY2hhciAqYXJndltdKQogCQlkdW1wX3JlZ2lzdGVyKGNvbmZpZywgJmNvbmZpZy0+ cmVnc1tpXSk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRf U1VDQ0VTUzsKIH0KQEAgLTY0OCw3ICs2NDksNyBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19zbmFw c2hvdChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXJl dHVybiBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfbW1pb191c2VfcGNpX2Jhcihjb25maWct PnBjaV9kZXYpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJmNvbmZpZy0+bW1pb19kYXRhLCBj b25maWctPnBjaV9kZXYpOwogCiAJLyogWFhYOiBlcnJvciBoYW5kbGluZyAqLwogCWlmICh3cml0 ZSgxLCBpZ3RfZ2xvYmFsX21taW8sIGNvbmZpZy0+cGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0u c2l6ZSkgPT0gLTEpCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jIGIvdG9v bHMvaW50ZWxfcmVnX2NoZWNrZXIuYwppbmRleCA2YmRlNjNlYy4uM2Y5MGRlODIgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNr ZXIuYwpAQCAtMzQyLDEwICszNDIsMTEgQEAgY2hlY2tfZHBmY19jb250cm9sX3NhKHZvaWQpCiBp bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAJc3RydWN0IHBjaV9kZXZpY2UgKmRl djsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCWRldiA9IGludGVsX2dl dF9wY2lfZGV2aWNlKCk7CiAJZGV2aWQgPSBkZXYtPmRldmljZV9pZDsKLQlpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKGRldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBkZXYp OwogCiAJaWYgKElTX0dFTjcoZGV2aWQpKQogCQlnZW4gPSA3OwpkaWZmIC0tZ2l0IGEvdG9vbHMv aW50ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRlbF93YXRlcm1hcmsuYwppbmRleCBlNzFjM2Q5 Yy4uMTRkMWFlMGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCisrKyBiL3Rv b2xzL2ludGVsX3dhdGVybWFyay5jCkBAIC0yMzcsNiArMjM3LDcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKnNrbF9udjEyX2J1Zl9jZmdfcmVnX25hbWUoaW50IHBpcGUsIGludCBwbGFuZSkKIAogc3Rh dGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1t aW9fZGF0YTsKIAlpbnQgcGlwZSwgcGxhbmUsIGxldmVsOwogCWludCBudW1fcGlwZXMgPSAzOwog CWludCBtYXhfcGxhbmVzID0gc2tsX21heF9wbGFuZXMoZGV2aWQpOwpAQCAtMjQ5LDcgKzI1MCw3 IEBAIHN0YXRpYyB2b2lkIHNrbF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgcGxhbmVfY3RsW251 bV9waXBlc11bbWF4X3BsYW5lc107CiAJdWludDMyX3Qgd21fbGluZXRpbWVbbnVtX3BpcGVzXTsK IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgbnVtX3BpcGVz OyBwaXBlKyspIHsKIAkJaW50IG51bV9wbGFuZXMgPSBza2xfbnVtX3BsYW5lcyhkZXZpZCwgcGlw ZSk7CkBAIC00NTgsNiArNDU5LDcgQEAgc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIAog c3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh IG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1aW50MzJfdCBkc3BjbnRyWzNdOwogCXVpbnQzMl90IHNw Y250clszXTsKQEAgLTQ2OSw3ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lk KQogCWludCBudW1fcGlwZXMgPSBpbnRlbF9nZW4oZGV2aWQpID49IDcgPyAzIDogMjsKIAlzdHJ1 Y3QgaWxrX3dtIHdtID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9n ZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZm9yIChpID0gMDsg aSA8IG51bV9waXBlczsgaSsrKSB7CiAJCWRzcGNudHJbaV0gPSByZWFkX3JlZygweDcwMTgwICsg aSAqIDB4MTAwMCk7CkBAIC01MDUsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAo dm9pZCkKIAlpZiAoSVNfQlJPQURXRUxMKGRldmlkKSB8fCBJU19IQVNXRUxMKGRldmlkKSkKIAkJ d21fbWlzYyA9IHJlYWRfcmVnKDB4NDUyNjApOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWZvciAo aSA9IDA7IGkgPCBudW1fcGlwZXM7IGkrKykKIAkJcHJpbnRmKCIgICAgV01fUElQRV8lYyA9IDB4 JTA4eFxuIiwgcGlwZV9uYW1lKGkpLCB3bV9waXBlW2ldKTsKQEAgLTYxMCw2ICs2MTIsNyBAQCBz dGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2 b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCXVu c2lnbmVkIGludCBudW1fcGlwZXMgPSBJU19DSEVSUllWSUVXKGRldmlkKSA/IDMgOiAyOwogCXVp bnQzMl90IGRzcGFyYiwgZHNwYXJiMiwgZHNwYXJiMzsKQEAgLTYxOSw3ICs2MjIsNyBAQCBzdGF0 aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGRzcF9zc19wbSwgZGRyX3NldHVw MjsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWRzcGFyYjIgPSByZWFkX3Jl ZygweDcwMDYwKTsKQEAgLTY1MCwxMyArNjUzLDEzIEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1w KHZvaWQpCiAKIAkJZGRsMyA9IHJlYWRfcmVnKDB4NzAwNTgpOwogCi0JCWludGVsX3B1bml0X3Jl YWQoMHgzNiwgJmRzcF9zc19wbSk7Ci0JCWludGVsX3B1bml0X3JlYWQoMHgxMzksICZkZHJfc2V0 dXAyKTsKKwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDM2LCAmZHNwX3NzX3BtKTsK KwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDEzOSwgJmRkcl9zZXR1cDIpOwogCX0g ZWxzZSB7CiAJCWZ3NyA9IHJlYWRfcmVnKDB4NzAwN2MpOwogCX0KIAotCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7 CiAKIAlwcmludGYoIiAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEpOwogCXByaW50ZigiICAg ICAgICBGVzIgPSAweCUwOHhcbiIsIGZ3Mik7CkBAIC04MjcsNiArODMwLDcgQEAgc3RhdGljIHZv aWQgdmx2X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIHsK KwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1aW50MzJfdCBk c3BhY250ciwgZHNwYmNudHI7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtODM1LDcgKzgzOSw3IEBA IHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfYXJiX3N0YXRlOwog CXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEp OwogCiAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKIAlkc3BiY250ciA9IHJlYWRfcmVn KDB4NzExODApOwpAQCAtODQ2LDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZv aWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJf c3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50Zigi ICAgICAgICAgICAgIERTUEFDTlRSID0gMHglMDh4XG4iLCBkc3BhY250cik7CiAJcHJpbnRmKCIg ICAgICAgICAgICAgRFNQQkNOVFIgPSAweCUwOHhcbiIsIGRzcGJjbnRyKTsKQEAgLTkxMyw2ICs5 MTcsNyBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBnZW40 X3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlp bnQgaTsKIAlpbnQgdG90YWxzaXplID0gSVNfQ1JFU1RMSU5FKGRldmlkKSA/IDEyOCA6IDk2Owog CXVpbnQzMl90IGRzcGFyYjsKQEAgLTkyMSw3ICs5MjYsNyBAQCBzdGF0aWMgdm9pZCBnZW40X3dt X2R1bXAodm9pZCkKIAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21z W01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1p b19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFk X3JlZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTkzMCw3ICs5MzUs NyBAQCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bvd2VyX2Rv d24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7 CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzEgPSAw eCUwOHhcbiIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIgPSAweCUwOHhc biIsIGZ3Mik7CkBAIC05ODMsNiArOTg4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZv aWQpCiAKIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVsX21t aW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9IDk2OyAvKiBGSVhN RT8gKi8KIAl1aW50MzJfdCBkc3BhcmI7CkBAIC05OTIsNyArOTk4LDcgQEAgc3RhdGljIHZvaWQg cG52X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBjYnI7CiAJc3RydWN0IGdtY2hfd20gd21zW01B WF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19k YXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3Jl ZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTEwMDIsNyArMTAwOCw3 IEBAIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3du ID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwog Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICAgICAgICAgRFNQQVJCID0gMHgl MDh4XG4iLCBkc3BhcmIpOwogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0gMHglMDh4 XG4iLCBmdzEpOwpAQCAtMTA3Myw2ICsxMDc5LDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAo dm9pZCkKIAogc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVs X21taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9IElTXzk0NUdN KGRldmlkKSA/IDEyOCA6IDk2OyAvKiBGSVhNRT8gKi8KIAl1aW50MzJfdCBkc3BhcmI7CkBAIC0x MDgyLDcgKzEwODksNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIAl1aW50MzJf dCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAot CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlpbnN0 cG0gPSByZWFkX3JlZygweDIwYzApOwpAQCAtMTA5MCw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQg Z2VuM193bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIwZTApOwogCW1p X2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJp bnRmKCIgICAgICBEU1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICAgICBG V19CTEMgPSAweCUwMTYiIFBSSXg2NCAiXG4iLCBmd19ibGMpOwpAQCAtMTE0Miw2ICsxMTQ5LDcg QEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGdlbjJfd21f ZHVtcCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBp OwogCWludCB0b3RhbHNpemU7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtMTE1MSw3ICsxMTU5LDcg QEAgc3RhdGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfc3RhdGU7CiAJ c3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7 CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAltZW1fbW9kZSA9IHJlYWRfcmVnKDB4 MjBjYyk7CkBAIC0xMTU5LDcgKzExNjcsNyBAQCBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9p ZCkKIAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfc3RhdGUgPSByZWFkX3Jl ZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICBEU1BBUkIgPSAw eCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICBNRU1fTU9ERSA9IDB4JTA4eFxuIiwgbWVt X21vZGUpOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=