From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21B7689C14 for ; Thu, 9 May 2019 12:39:30 +0000 (UTC) From: Daniel Mrzyglod Date: Thu, 9 May 2019 14:38:08 +0200 Message-Id: <20190509123809.15507-5-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190509123809.15507-1-daniel.t.mrzyglod@intel.com> References: <20190509123809.15507-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 4/5] lib/intel_mmio: remove igt_global_mmio and move it to mmio_data 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 List-ID: dGhpcyBwYXRjaCByZW1vdmUgbmVlZCBmb3IgaWd0X2dsb2JhbF9tbWlvIGZyb20gbGlicmFyeSBz cGFjZS4KVGhlIHJlYXNvbiB0aGF0IGl0IHdhcyBtb3ZlZCBpcyB0aGUgaWRlYSB0byBzdXBwb3J0 IG11bHRpcGxlCmRldmljZXMgYXQgb25jZS4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBNcnp5Z2xv ZCA8ZGFuaWVsLnQubXJ6eWdsb2RAaW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX2xhdGVu Y3kuYyAgICAgIHwgICA1ICstCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgICAgICAgICB8ICAgNiAr LQogbGliL2ludGVsX2lvLmggICAgICAgICAgICAgICAgfCAgNzggKysrKysrKysrKysrKy0tLS0t LS0tCiBsaWIvaW50ZWxfaW9zZi5jICAgICAgICAgICAgICB8ICA3NCArKysrKysrKysrKy0tLS0t LS0tLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgfCAgIDcg Ky0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDE0ICsrLS0KIHRlc3RzL2k5MTUv aTkxNV9wbV9scHNwLmMgICAgIHwgICA3ICstCiB0b29scy9pbnRlbF9hdWRpb19kdW1wLmMgICAg ICB8ICAgNyArLQogdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMgICAgICAgfCAgIDUgKy0KIHRvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgIHwgICA3ICstCiB0b29scy9pbnRlbF9mb3JjZXdha2Vk LmMgICAgICB8ICAxNCArKy0tCiB0b29scy9pbnRlbF9ncHVfdGltZS5jICAgICAgICB8ICAgNSAr LQogdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jICAgICAgfCAgIDcgKy0KIHRvb2xzL2ludGVsX2wz X3Bhcml0eS5jICAgICAgIHwgIDE0ICsrLS0KIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAgICAg IHwgICA2ICstCiB0b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYyAgICB8ICAgNyArLQogdG9vbHMv aW50ZWxfcGVyZl9jb3VudGVycy5jICAgfCAgMTcgKysrLS0KIHRvb2xzL2ludGVsX3JlZy5jICAg ICAgICAgICAgIHwgIDMxICsrKysrKy0tLQogdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyAgICAg fCAgIDYgKy0KIHRvb2xzL2ludGVsX3dhdGVybWFyay5jICAgICAgIHwgIDQ0ICsrKysrKystLS0t LQogMjEgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDE5MiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMgYi9iZW5jaG1hcmtzL2dlbV9s YXRlbmN5LmMKaW5kZXggYzNmYzRiZjAuLmJjYWFlY2VmIDEwMDY0NAotLS0gYS9iZW5jaG1hcmtz L2dlbV9sYXRlbmN5LmMKKysrIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCkBAIC01NSw2ICs1 NSw4IEBACiBzdGF0aWMgaW50IGRvbmU7CiBzdGF0aWMgaW50IGZkOwogc3RhdGljIHZvbGF0aWxl IHVpbnQzMl90ICp0aW1lc3RhbXBfcmVnOwordm9pZCAqaWd0X2dsb2JhbF9tbWlvOworc3RhdGlj IHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogI2RlZmluZSBSRUcoeCkgKHZvbGF0aWxl IHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgeCkKICNkZWZp bmUgUkVHX09GRlNFVCh4KSAoKHZvbGF0aWxlIGNoYXIgKikoeCkgLSAodm9sYXRpbGUgY2hhciAq KWlndF9nbG9iYWxfbW1pbykKQEAgLTQ1Niw3ICs0NTgsOCBAQCBzdGF0aWMgaW50IHJ1bihpbnQg c2Vjb25kcywKIAlpZiAoZ2VuIDwgNikKIAkJcmV0dXJuIElHVF9FWElUX1NLSVA7IC8qIE5lZWRz IEJDUyB0aW1lc3RhbXAgKi8KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpZ3RfZ2xv YmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlpZiAoZ2VuID09IDYpCiAJCXRpbWVz dGFtcF9yZWcgPSBSRUcoUkNTX1RJTUVTVEFNUCk7CmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dl bV93c2ltLmMgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKaW5kZXggYWZiOTY0NGQuLjg2YWY1OGNi IDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1f d3NpbS5jCkBAIC0yMDYsNiArMjA2LDkgQEAgc3RydWN0IHdvcmtsb2FkCiAJfSBidXN5X2JhbGFu Y2VyOwogfTsKIAordm9pZCAqaWd0X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19k YXRhIG1taW9fZGF0YTsKKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBub3BfY2FsaWJyYXRp b25fdXMgPSAxMDAwOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbm9wX2NhbGlicmF0aW9uOwogCkBA IC0yMjIzLDcgKzIyMjYsOCBAQCBzdGF0aWMgdm9pZCBpbml0X2Nsb2Nrcyh2b2lkKQogCXVpbnQz Ml90IHJjc19zdGFydCwgcmNzX2VuZDsKIAlkb3VibGUgb3ZlcmhlYWQsIHQ7CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBmYWxzZSwgZmQpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIGZhbHNlLCBmZCk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlv OwogCiAJaWYgKHZlcmJvc2UgPD0gMSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbGliL2ludGVs X2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCAwNjc0YjQyYy4uNWY5ZWE3MjQgMTAwNjQ0Ci0t LSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5oCkBAIC0zMCwxNyArMzAsNDEg QEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHBjaWFjY2Vzcy5oPgorI2luY2x1 ZGUgPHN0ZGJvb2wuaD4KIAogLyogcmVnaXN0ZXIgYWNjZXNzIGhlbHBlcnMgZnJvbSBpbnRlbF9t bWlvLmMgKi8KLWV4dGVybiB2b2lkICppZ3RfZ2xvYmFsX21taW87Ci12b2lkIGludGVsX21taW9f dXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpOwotdm9pZCBpbnRlbF9tbWlv X3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSk7CitzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2Ug eworCXVpbnQzMl90IGJhc2U7CisJdWludDMyX3Qgc2l6ZTsKKwl1aW50MzJfdCBmbGFnczsKK307 CisKK3N0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgeworCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9y YW5nZSAqbWFwOworCXVpbnQzMl90IHRvcDsKKwl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKK307 CisKK3N0cnVjdCBfbW1pb19kYXRhIHsKKwlpbnQgaW5pdGVkOworCWJvb2wgc2FmZTsKKwl1aW50 MzJfdCBpOTE1X2RldmlkOworCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwOworCWludCBr ZXk7CisJdm9pZCAqaWd0X21taW87Cit9OworCit2b2lkIGludGVsX21taW9fdXNlX3BjaV9iYXIo c3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICBzdHJ1Y3QgcGNpX2RldmljZSAq cGNpX2Rldik7Cit2b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgX21taW9fZGF0 YSAqbW1pb19kYXRhLCBjaGFyICpmaWxlKTsKIAotaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKLXZvaWQg aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCk7Ci11aW50MzJfdCBpbnRlbF9yZWdpc3Rl cl9yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKTsKLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFr ZXdha2Uodm9pZCk7CitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IF9tbWlv X2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICAgICBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2Rldiwg aW50IHNhZmUsIGludCBmZCk7Cit2b2lkIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHN0cnVj dCBfbW1pb19kYXRhICptbWlvX2RhdGEpOwordWludDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVhZChz dHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9y ZWdpc3Rlcl93cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcs CisJCQkgIHVpbnQzMl90IHZhbCk7CitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zh a2V3YWtlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEpOwogCiB1aW50MzJfdCBJTlJFRyh2 b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKTsKIHVpbnQxNl90IElOUkVHMTYodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IHJlZyk7CkBAIC01MCwxNyArNzQsMjQgQEAgdm9pZCBPVVRSRUcxNih2 b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwogdm9pZCBPVVRSRUc4 KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKTsKIAogLyogc2lkZWJh bmQgYWNjZXNzIGZ1bmN0aW9ucyBmcm9tIGludGVsX2lvc2YuYyAqLwotdWludDMyX3QgaW50ZWxf ZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpOwotdm9pZCBpbnRlbF9kcGlvX3Jl Z193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSk7Ci11aW50MzJfdCBp bnRlbF9mbGlzZHNpX3JlZ19yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX2ZsaXNkc2lf cmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXVpbnQzMl90IGludGVsX2lv c2Zfc2JfcmVhZCh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9pb3Nm X3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKK3Vp bnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgcmVnLAorCQkJICAgICBpbnQgcGh5KTsKK3ZvaWQgaW50ZWxfZHBpb19yZWdfd3Jp dGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICB1aW50 MzJfdCB2YWwsIGludCBwaHkpOwordWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZChzdHJ1 Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9mbGlz ZHNpX3JlZ193cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcs CisJCQkgICAgIHVpbnQzMl90IHZhbCk7Cit1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQoc3Ry dWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJf dCByZWcpOwordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwog Ci1pbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKLWlu dCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwotaW50IGlu dGVsX25jX3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7Ci1pbnQgaW50ZWxfbmNf d3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKK2ludCBpbnRlbF9wdW5pdF9yZWFk KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgdWlu dDMyX3QgKnZhbCk7CitpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgYWRkciwKKwkJICAgICAgdWludDMyX3QgdmFsKTsKK2ludCBpbnRl bF9uY19yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVp bnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAKIC8qIHJlZ2lzdGVyIG1hcHMg ZnJvbSBpbnRlbF9yZWdfbWFwLmMgKi8KICNpZm5kZWYgX19HVEtfRE9DX0lHTk9SRV9fCkBAIC03 MSwxNyArMTAyLDggQEAgaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90 IHZhbCk7CiAjZGVmaW5lIElOVEVMX1JBTkdFX1JXCQkoSU5URUxfUkFOR0VfUkVBRCB8IElOVEVM X1JBTkdFX1dSSVRFKQogI2RlZmluZSBJTlRFTF9SQU5HRV9FTkQJCSgxPDwzMSkKIAotc3RydWN0 IGludGVsX3JlZ2lzdGVyX3JhbmdlIHsKLQl1aW50MzJfdCBiYXNlOwotCXVpbnQzMl90IHNpemU7 Ci0JdWludDMyX3QgZmxhZ3M7Ci19OwogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKLQlz dHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1hcDsKLQl1aW50MzJfdCB0b3A7Ci0JdWludDMy X3QgYWxpZ25tZW50X21hc2s7Ci19OworLy9zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19k YXRhOwogc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKHVp bnQzMl90IGRldmlkKTsKIHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxfZ2V0X3Jl Z2lzdGVyX3JhbmdlKHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJfdCBvZmZz ZXQsIHVpbnQzMl90IG1vZGUpOwogI2VuZGlmIC8qIF9fR1RLX0RPQ19JR05PUkVfXyAqLwpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX2lvc2YuYyBiL2xpYi9pbnRlbF9pb3NmLmMKaW5kZXggM2I1YTEz NzAuLjJlMjNkZDI5IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfaW9zZi5jCisrKyBiL2xpYi9pbnRl bF9pb3NmLmMKQEAgLTE5LDggKzE5LDggQEAKIC8qIFByaXZhdGUgcmVnaXN0ZXIgd3JpdGUsIGRv dWJsZS13b3JkIGFkZHJlc3NpbmcsIG5vbi1wb3N0ZWQgKi8KICNkZWZpbmUgU0JfQ1JXUkRBX05Q ICAgMHgwNwogCi1zdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50 OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKLQkJCSAgIHVpbnQzMl90ICp2YWwpCitzdGF0aWMg aW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJf dCBwb3J0LAorCQkJICAgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2 YWwpCiB7CiAJaW50IHRpbWVvdXQgPSAwOwogCXVpbnQzMl90IGNtZCwgZGV2Zm4sIGJlLCBiYXI7 CkBAIC0zNCwyMiArMzQsMjQgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3Qg cG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCiAJCShwb3J0IDw8IElPU0ZfUE9S VF9TSElGVCkgfCAoYmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKIAkJKGJhciA8PCBJ T1NGX0JBUl9TSElGVCk7CiAKLQlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9ET09S QkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZKSB7CisJaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1p b19kYXRhLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwkgICAgSU9TRl9TQl9CVVNZKSB7CiAJ CWlndF93YXJuKCJ3YXJuaW5nOiBwY29kZSAoJXMpIG1haWxib3ggYWNjZXNzIGZhaWxlZFxuIiwg aXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKLQlp bnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9BRERSLCBhZGRyKTsKKwlpbnRlbF9yZWdpc3Rl cl93cml0ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0FERFIsIGFkZHIpOwogCWlmICghaXNfcmVhZCkK LQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7CisJCWludGVsX3Jl Z2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfREFUQSwgKnZhbCk7CiAKLQlpbnRlbF9y ZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CisJaW50ZWxfcmVnaXN0 ZXJfd3JpdGUobW1pb19kYXRhLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CiAKIAlkbyB7 CiAJCXVzbGVlcCgxKTsKIAkJdGltZW91dCsrOwotCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3Jl YWQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0ZfU0JfQlVTWSAmJgotCQkgdGltZW91dCA8 IFRJTUVPVVRfVVMpOworCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19kYXRhLT5p Z3RfbW1pbywKKwkJCQkgICAgIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgorCQlJT1NGX1NCX0JV U1kgJiYgdGltZW91dCA8IFRJTUVPVVRfVVMpOwogCiAJaWYgKHRpbWVvdXQgPj0gVElNRU9VVF9V UykgewogCQlpZ3Rfd2FybigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSAlcyAoJWQpIHRvIGZp bmlzaFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIsIGFkZHIpOwpAQCAtNTcsOCArNTks OCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50OF90IG9w Y29kZSwgdWludDMyX3QgYWRkciwKIAl9CiAKIAlpZiAoaXNfcmVhZCkKLQkJKnZhbCA9IGludGVs X3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfREFUQSk7Ci0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxW X0lPU0ZfREFUQSwgMCk7CisJCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+ aWd0X21taW8sIFZMVl9JT1NGX0RBVEEpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0 YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEsIDApOwogCiAJcmV0dXJuIDA7CiB9CkBAIC03Myw5 ICs3NSwxMCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50 OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKICAqIFJldHVybnM6CiAgKiAwIHdoZW4gdGhlIHJl Z2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4K ICAqLwotaW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkK K2ludCBpbnRlbF9wdW5pdF9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NG X1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsCisJ CQkgICAgICAgdmFsKTsKIH0KIAogLyoqCkBAIC04OCw5ICs5MSwxMCBAQCBpbnQgaW50ZWxfcHVu aXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAg d2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBv biBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQoraW50IGludGVsX3B1bml0X3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKKwlyZXR1 cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFf TlAsIGFkZHIsCisJCQkgICAgICAgJnZhbCk7CiB9CiAKIC8qKgpAQCAtMTAzLDkgKzEwNywxMCBA QCBpbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICog UmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRp dmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJf dCBhZGRyLCB1aW50MzJfdCAqdmFsKQoraW50IGludGVsX25jX3JlYWQoc3RydWN0IF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKIHsKLQlyZXR1cm4g dmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0JfQ1JSRERBX05QLCBhZGRyLCB2YWwpOwor CXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfTkMsIFNCX0NSUkRE QV9OUCwgYWRkciwKKwkJCSAgICAgICB2YWwpOwogfQogCiAvKioKQEAgLTExOCw5ICsxMjMsMTAg QEAgaW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKICAqIFJl dHVybnM6CiAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZl IGVycm5vIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90IHZhbCkKK2ludCBpbnRlbF9uY193cml0ZShzdHJ1Y3QgX21taW9fZGF0 YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0JcmV0dXJuIHZs dl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9OUCwgYWRkciwgJnZhbCk7CisJ cmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JXUkRB X05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwpOwogfQogCiAvKioKQEAgLTEzMywxNCArMTM5LDE2 IEBAIGludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBS ZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQz Ml90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQordWludDMyX3Qg aW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJf dCByZWcsIGludCBwaHkpCiB7CiAJdWludDMyX3QgdmFsOwogCiAJaWYgKHBoeSA9PSAwKQotCQl2 bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKKwkJ dmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVn LAorCQkJCSZ2YWwpOwogCWVsc2UKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPXzIs IFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9T Rl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJcmV0dXJuIHZhbDsK IH0KIApAQCAtMTUyLDM4ICsxNjAsNDAgQEAgdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1 aW50MzJfdCByZWcsIGludCBwaHkpCiAgKgogICogMzItYml0IHdyaXRlIG9mIHRoZSByZWdpc3Rl ciBhdCBAb2Zmc2V0IHRocm91Z2ggdGhlIERQSU8gc2lkZWJhbmQgcG9ydC4KICAqLwotdm9pZCBp bnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkK K3ZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBwaHkpCiB7CiAJaWYgKHBoeSA9PSAwKQot CQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0RQSU8sIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsK KwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01XUl9OUCwg cmVnLCAmdmFsKTsKIAllbHNlCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBT Ql9NV1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0Zf UE9SVF9EUElPXzIsIFNCX01XUl9OUCwgcmVnLAorCQkJCSZ2YWwpOwogfQogCi11aW50MzJfdCBp bnRlbF9mbGlzZHNpX3JlZ19yZWFkKHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2ZsaXNk c2lfcmVnX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKQog ewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNE U0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRh LCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJu IHZhbDsKIH0KIAotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVp bnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUoc3RydWN0IF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jdmx2X3NpZGVi YW5kX3J3KElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CisJdmx2 X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JEQV9OUCwg cmVnLCAmdmFsKTsKIH0KIAotdWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHVpbnQzMl90IHBv cnQsIHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZChzdHJ1Y3QgX21t aW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcpCiB7CiAJdWlu dDMyX3QgdmFsOwogCi0Jdmx2X3NpZGViYW5kX3J3KHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAm dmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBwb3J0LCBTQl9DUlJEREFfTlAsIHJl ZywgJnZhbCk7CiAKIAlyZXR1cm4gdmFsOwogfQogCi12b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUo dWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCit2b2lkIGludGVsX2lv c2Zfc2Jfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwK KwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncocG9y dCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRl bF9tbWlvLmMgYi9saWIvaW50ZWxfbW1pby5jCmluZGV4IGQ0NzNjZDliLi40MmFmZjJiNyAxMDA2 NDQKLS0tIGEvbGliL2ludGVsX21taW8uYworKysgYi9saWIvaW50ZWxfbW1pby5jCkBAIC02NSwz MiArNjUsMTcgQEAKIAogI2RlZmluZSBGQUtFS0VZIDB4MjQ2OGFjZTAKIAotLyoqCi0gKiBpZ3Rf Z2xvYmFsX21taW86Ci0gKgotICogUG9pbnRlciB0byB0aGUgcmVnaXN0ZXIgcmFuZ2UsIGluaXRp YWxpemVkIHVzaW5nIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkKLSAqIG9yIGludGVsX21t aW9fdXNlX2R1bXBfZmlsZSgpLiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZGly ZWN0bHkuCi0gKi8KLXZvaWQgKmlndF9nbG9iYWxfbW1pbzsKLQotc3RhdGljIHN0cnVjdCBfbW1p b19kYXRhIHsKLQlpbnQgaW5pdGVkOwotCWJvb2wgc2FmZTsKLQl1aW50MzJfdCBpOTE1X2Rldmlk OwotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwOwotCWludCBrZXk7Ci19IG1taW9fZGF0 YTsKLQogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGU6CisgKiBAbW1pb19kYXRhOiAg bW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqIEBmaWxlOiBuYW1lIG9mIHRoZSBy ZWdpc3RlciBkdW1wIGZpbGUgdG8gb3BlbgogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1p byB0byBwb2ludCBhdCB0aGUgZGF0YSBjb250YWluZWQgaW4gQGZpbGUuIFRoaXMgYWxsb3dzCi0g KiB0aGUgc2FtZSBjb2RlIHRvIGdldCByZXVzZWQgZm9yIGR1bXBpbmcgYW5kIGRlY29kaW5nIGZy b20gcnVubmluZyBoYXJkd2FyZSBhcwotICogZnJvbSByZWdpc3RlciBkdW1wcy4KKyAqIFNldHMg YWxzbyB1cCBtbWlvX2RhdGEtPmlndF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRhaW5l ZAorICogaW4gQGZpbGUuIFRoaXMgYWxsb3dzIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJldXNlZCBm b3IgZHVtcGluZyBhbmQgZGVjb2RpbmcKKyAqIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcyBmcm9t IHJlZ2lzdGVyIGR1bXBzLgogICovCiB2b2lkCi1pbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hh ciAqZmlsZSkKK2ludGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1p b19kYXRhLCBjaGFyICpmaWxlKQogewogCWludCBmZDsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTEw MCwyMiArODUsMjMgQEAgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUpCiAJCSAg ICAgICJDb3VsZG4ndCBvcGVuICVzXG4iLCBmaWxlKTsKIAogCWZzdGF0KGZkLCAmc3QpOwotCWln dF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJ VEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0JaWd0X2ZhaWxfb25fZihpZ3RfZ2xvYmFsX21taW8g PT0gTUFQX0ZBSUxFRCwKKwltbWlvX2RhdGEtPmlndF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9z aXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKwlpZ3RfZmFp bF9vbl9mKG1taW9fZGF0YS0+aWd0X21taW8gPT0gTUFQX0ZBSUxFRCwKIAkJICAgICAgIkNvdWxk bid0IG1tYXAgJXNcbiIsIGZpbGUpOwogCWNsb3NlKGZkKTsKIH0KIAogLyoqCiAgKiBpbnRlbF9t bWlvX3VzZV9wY2lfYmFyOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBv cGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhY3BoaXMgcGNpIGRldmljZQogICoKLSAq IFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBhdCB0aGUgbW1pbyBiYXIuCisgKiBG aWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGggaWd0X21taW8gdG8gcG9pbnQgYXQgdGhlIG1t aW8gYmFyLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9w Y2lfZGV2aWNlKCkuCiAgKi8KIHZvaWQKLWludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBj aV9kZXZpY2UgKnBjaV9kZXYpCitpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBfbW1pb19k YXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQogewogCXVpbnQzMl90 IGRldmlkLCBnZW47CiAJaW50IG1taW9fYmFyLCBtbWlvX3NpemU7CkBAIC0xMzksNyArMTI1LDcg QEAgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldikKIAkJ CQkgICAgICBwY2lfZGV2LT5yZWdpb25zW21taW9fYmFyXS5iYXNlX2FkZHIsCiAJCQkJICAgICAg bW1pb19zaXplLAogCQkJCSAgICAgIFBDSV9ERVZfTUFQX0ZMQUdfV1JJVEFCTEUsCi0JCQkJICAg ICAgJmlndF9nbG9iYWxfbW1pbyk7CisJCQkJICAgICAgJm1taW9fZGF0YS0+aWd0X21taW8pOwog CiAJaWd0X2ZhaWxfb25fZihlcnJvciAhPSAwLAogCQkgICAgICAiQ291bGRuJ3QgbWFwIE1NSU8g cmVnaW9uXG4iKTsKQEAgLTE1Myw2ICsxMzksNyBAQCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGlu dCBmZCkKIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdDoKKyAqIEBtbWlvX2Rh dGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICogQHBjaV9kZXY6IGludGVs IGdyYXBoaWNzIHBjaSBkZXZpY2UKICAqIEBzYWZlOiB1c2Ugc2FmZSByZWdpc3RlciBhY2Nlc3Mg dGFibGVzCiAgKgpAQCAtMTYwLDc2ICsxNDcsNzkgQEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhp bnQgZmQpCiAgKiBoYW5kbGluZyBhbmQgYWxzbyBhbGxvd3MgcmVnaXN0ZXIgYWNjZXNzIHRvIGJl IGNoZWNrZWQgd2l0aCBhbiBleHBsaWNpdAogICogd2hpdGVsaXN0LgogICoKLSAqIEl0IGFsc28g aW5pdGlhbGl6ZXMgI2lndF9nbG9iYWxfbW1pbyBsaWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIo KS4KKyAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgbW1pb19kYXRhLT5pZ3RfbW1pbyBsaWtlIGludGVs X21taW9fdXNlX3BjaV9iYXIoKS4KICAqCiAgKiBAcGNpX2RldiBjYW4gYmUgb2J0YWluZWQgZnJv bSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgogICovCiBpbnQKLWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQoraW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgc3Ry dWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCiB7CiAJaW50IHJldDsK IAogCS8qIGFmdGVyIG9sZCBBUEkgaXMgZGVwcmVjYXRlZCwgcmVtb3ZlIHRoaXMgKi8KLQlpZiAo aWd0X2dsb2JhbF9tbWlvID09IE5VTEwpCi0JCWludGVsX21taW9fdXNlX3BjaV9iYXIocGNpX2Rl dik7CisJaWYgKG1taW9fZGF0YS0+aWd0X21taW8gPT0gTlVMTCkKKwkJaW50ZWxfbW1pb191c2Vf cGNpX2JhcihtbWlvX2RhdGEsIHBjaV9kZXYpOwogCi0JaWd0X2Fzc2VydChpZ3RfZ2xvYmFsX21t aW8gIT0gTlVMTCk7CisJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmlndF9tbWlvICE9IE5VTEwpOwog Ci0JaWYgKG1taW9fZGF0YS5pbml0ZWQpCisJaWYgKG1taW9fZGF0YS0+aW5pdGVkKQogCQlyZXR1 cm4gLTE7CiAKLQltbWlvX2RhdGEuc2FmZSA9IChzYWZlICE9IDAgJiYKKwltbWlvX2RhdGEtPnNh ZmUgPSAoc2FmZSAhPSAwICYmCiAJCQlpbnRlbF9nZW4ocGNpX2Rldi0+ZGV2aWNlX2lkKSA+PSA0 KSA/IHRydWUgOiBmYWxzZTsKLQltbWlvX2RhdGEuaTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmlj ZV9pZDsKLQlpZiAobW1pb19kYXRhLnNhZmUpCi0JCW1taW9fZGF0YS5tYXAgPSBpbnRlbF9nZXRf cmVnaXN0ZXJfbWFwKG1taW9fZGF0YS5pOTE1X2RldmlkKTsKKwltbWlvX2RhdGEtPmk5MTVfZGV2 aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7CisJaWYgKG1taW9fZGF0YS0+c2FmZSkKKwkJbW1pb19k YXRhLT5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS0+aTkxNV9kZXZpZCk7 CiAKIAkvKiBGaW5kIHdoZXJlIHRoZSBmb3JjZXdha2UgbG9jayBpcy4gRm9yY2V3YWtlIGRvZXNu J3QgZXhpc3QKIAkgKiBnZW4gPCA2LCBidXQgdGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdo dCB0aGluZ3MgZm9yIHVzLgogCSAqLwogCXJldCA9IGlndF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUo ZmQpOwogCWlmIChyZXQgPT0gLTEpCi0JCW1taW9fZGF0YS5rZXkgPSBGQUtFS0VZOworCQltbWlv X2RhdGEtPmtleSA9IEZBS0VLRVk7CiAJZWxzZQotCQltbWlvX2RhdGEua2V5ID0gcmV0OworCQlt bWlvX2RhdGEtPmtleSA9IHJldDsKIAotCW1taW9fZGF0YS5pbml0ZWQrKzsKKwltbWlvX2RhdGEt PmluaXRlZCsrOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1pbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfbmVlZHNfd2FrZSh2b2lkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uo c3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSAh PSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEtPmtleSAhPSBGQUtFS0VZOwogfQogCiAvKioK ICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZToKKyAqIEBtbWlvX2RhdGE6 ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICoKICAqIFJldHVybnM6CiAgKiBO b24temVybyB3aGVuIGZvcmNld2FrZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuCiAgKi8KLWludCBp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uodm9pZCkKK2ludCBpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSkK IHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSA9PSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEt PmtleSA9PSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p OgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKgog ICogQ2xlYW4gdXAgdGhlIHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaW5pdGlhbGl6ZWQgd2l0aAog ICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqLwogdm9pZAotaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2Zpbmkodm9pZCkKK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHN0cnVjdCBf bW1pb19kYXRhICptbWlvX2RhdGEpCiB7Ci0JaWYgKG1taW9fZGF0YS5rZXkgJiYgaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX25lZWRzX3dha2UoKSkKLQkJcmVsZWFzZV9mb3JjZXdha2VfbG9jayhtbWlv X2RhdGEua2V5KTsKLQltbWlvX2RhdGEuaW5pdGVkLS07CisJaWYgKG1taW9fZGF0YS0+a2V5ICYm IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKG1taW9fZGF0YSkpCisJCXJlbGVhc2Vf Zm9yY2V3YWtlX2xvY2sobW1pb19kYXRhLT5rZXkpOworCW1taW9fZGF0YS0+aW5pdGVkLS07CiB9 CiAKIC8qKgogICogaW50ZWxfcmVnaXN0ZXJfcmVhZDoKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0 cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAgKgog ICogMzItYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQuIFRoaXMgZnVuY3Rpb24g b25seSB3b3JrcyB3aGVuIHRoZSBuZXcKQEAgLTI0MiwyMCArMjMyLDIwIEBAIGludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKHZvaWQpCiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rl ci4KICAqLwogdWludDMyX3QKLWludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKQoraW50 ZWxfcmVnaXN0ZXJfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBy ZWcpCiB7CiAJc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICpyYW5nZTsKIAl1aW50MzJfdCBy ZXQ7CiAKLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5pbml0ZWQpOworCWlndF9hc3NlcnQobW1pb19k YXRhLT5pbml0ZWQpOwogCi0JaWYgKGludGVsX2dlbihtbWlvX2RhdGEuaTkxNV9kZXZpZCkgPj0g NikKLQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5ICE9IC0xKTsKKwlpZiAoaW50ZWxfZ2VuKG1t aW9fZGF0YS0+aTkxNV9kZXZpZCkgPj0gNikKKwkJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAh PSAtMSk7CiAKLQlpZiAoIW1taW9fZGF0YS5zYWZlKQorCWlmICghbW1pb19kYXRhLT5zYWZlKQog CQlnb3RvIHJlYWRfb3V0OwogCi0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1p b19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEt Pm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVMX1JBTkdFX1JFQUQpOwogCkBAIC0yNjYsMTMg KzI1NiwxNCBAQCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKIAl9CiAKIHJlYWRf b3V0OgotCXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3Rf Z2xvYmFsX21taW8gKyByZWcpOworCXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0 aWxlIGNoYXIgKiltbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKTsKIG91dDoKIAlyZXR1cm4gcmV0 OwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgorICogQG1taW9fZGF0YTogIG1t aW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQK ICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtMjgzLDE5ICsyNzQsMTkgQEAgb3V0Ogog ICogd2hpdGUgbGlzdHMuCiAgKi8KIHZvaWQKLWludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKQoraW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0IF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7CiAJc3RydWN0IGlu dGVsX3JlZ2lzdGVyX3JhbmdlICpyYW5nZTsKIAotCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRl ZCk7CisJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmluaXRlZCk7CiAKLQlpZiAoaW50ZWxfZ2VuKG1t aW9fZGF0YS5pOTE1X2RldmlkKSA+PSA2KQotCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5rZXkgIT0g LTEpOworCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLT5pOTE1X2RldmlkKSA+PSA2KQorCQlpZ3Rf YXNzZXJ0KG1taW9fZGF0YS0+a2V5ICE9IC0xKTsKIAotCWlmICghbW1pb19kYXRhLnNhZmUpCisJ aWYgKCFtbWlvX2RhdGEtPnNhZmUpCiAJCWdvdG8gd3JpdGVfb3V0OwogCi0JcmFuZ2UgPSBpbnRl bF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dldF9y ZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEtPm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVMX1JB TkdFX1dSSVRFKTsKIApAQCAtMzAzLDcgKzI5NCw3IEBAIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogCQkgICAgICAiUmVnaXN0ZXIgd3JpdGUgYmxvY2tl ZCBmb3Igc2FmZXR5ICIiKCoweCUwOHggPSAweCV4KVxuIiwgcmVnLCB2YWwpOwogCiB3cml0ZV9v dXQ6Ci0JKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxf bW1pbyArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hh ciAqKW1taW9fZGF0YS0+aWd0X21taW8gKyByZWcpID0gdmFsOwogfQogCiAKQEAgLTMxNSw3ICsz MDYsNyBAQCB3cml0ZV9vdXQ6CiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zm c2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aGVuIHRoZQogICogbmV3IHJlZ2lz dGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdCgpLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNp Z3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgorICogVGhpcyBmdW5jdGlvbiBk aXJlY3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgogICoK ICAqIFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KQEAgLTMz Myw3ICszMjQsNyBAQCB1aW50MzJfdCBJTlJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVn KQogICogMTYtYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBAcmVnLiBUaGlzIGZ1 bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKICAqIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVy IGlzIGluaXRpYWxpemVkIHdpdGggaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqCi0g KiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdp dGhvdXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMg dGhlIGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqCiAgKiBSZXR1cm5zOgogICog VGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCkBAIC0zNTEsNyArMzQyLDcgQEAgdWlu dDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogICogOC1iaXQgcmVh ZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3b3Jr cyB3aGVuIHRoZQogICogbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQg d2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgogICoKLSAqIFRoaXMgZnVuY3Rpb24g ZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hl Y2tzLgorICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0 aG91dCBzYWZldHkgY2hlY2tzLgogICoKICAqIFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBm cm9tIHRoZSByZWdpc3Rlci4KQEAgLTM3MSw3ICszNjIsNyBAQCB1aW50OF90IElOUkVHOCh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2Vz cyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoKS4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2ds b2JhbF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0 bHkgYWNjZXNzZXMgdGhlIGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqLwogdm9p ZCBPVVRSRUcodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewpA QCAtMzg3LDcgKzM3OCw3IEBAIHZvaWQgT1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBy ZWcsIHVpbnQzMl90IHZhbCkKICAqIHdoZW4gdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVy IGlzIGluaXRpYWxpemVkIHdpdGgKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCiAg KgotICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1p byB3aXRob3V0IHNhZmV0eSBjaGVja3MuCisgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vz c2VzIHRoZSBpZ3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCiAgKi8KIHZvaWQgT1VUUkVH MTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQogewpAQCAtNDA0 LDcgKzM5NSw3IEBAIHZvaWQgT1VUUkVHMTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywg dWludDE2X3QgdmFsKQogICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMg aW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqCi0g KiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdp dGhvdXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMg dGhlIGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqLwogdm9pZCBPVVRSRUc4KHZv aWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewpkaWZmIC0tZ2l0IGEv dGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVu Y3kuYwppbmRleCBlNTZkNjI3OC4uNjM3OWVkYWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2Vt X2V4ZWNfbGF0ZW5jeS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCkBAIC02 Miw2ICs2Miw5IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IHJpbmdfc2l6ZTsKIHN0YXRpYyBkb3Vi bGUgcmNzX2Nsb2NrOwogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9t bWlvX2RhdGEgbW1pb19kYXRhOworCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwgdW5z aWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTY2Nyw3ICs2NzAsOSBAQCBpZ3Rf bWFpbgogCQlpZiAocmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7CiAKLQkJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2Us IGRldmljZSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOworCQlpZ3RfZ2xvYmFsX21taW8gPSBt bWlvX2RhdGEuaWd0X21taW87CisKIAkJcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGRldmljZSwgUkNT X1RJTUVTVEFNUCk7CiAJCWlndF9pbmZvKCJSQ1MgdGltZXN0YW1wIGNsb2NrOiAlLjBmS0h6LCAl LjFmbnNcbiIsCiAJCQkgcmNzX2Nsb2NrIC8gMWUzLCAxZTkgLyByY3NfY2xvY2spOwpkaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19w YXJzZS5jCmluZGV4IDYyZThkMGE1Li45OGIwNTI2NyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9n ZW1fZXhlY19wYXJzZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwpAQCAtNTgs NiArNTgsOSBAQAogCiBzdGF0aWMgaW50IHBhcnNlcl92ZXJzaW9uOwogCit2b2lkICppZ3RfZ2xv YmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOworCiBzdGF0aWMg aW50IGNvbW1hbmRfcGFyc2VyX3ZlcnNpb24oaW50IGZkKQogewogCWludCB2ZXJzaW9uID0gLTE7 CkBAIC0yODQsOSArMjg3LDkgQEAgdGVzdF9scmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0 cnVjdCB0ZXN0X2xyaSAqdGVzdCkKIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRl c3RfdmFsLAogCQkgIGV4cGVjdGVkX2Vycm5vLCBleHBlY3QpOwogCi0JaW50ZWxfcmVnaXN0ZXJf d3JpdGUodGVzdC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUo Jm1taW9fZGF0YSwgdGVzdC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7CiAKLQlpZ3RfYXNzZXJ0X2Vx X3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKKwlpZ3RfYXNzZXJ0X2VxX3Uz MigoaW50ZWxfcmVnaXN0ZXJfcmVhZCgmbW1pb19kYXRhLCB0ZXN0LT5yZWcpICYKIAkJCSAgIHRl c3QtPnJlYWRfbWFzayksCiAJCQkgIHRlc3QtPmluaXRfdmFsKTsKIApAQCAtMjk2LDcgKzI5OSw3 IEBAIHRlc3RfbHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1Y3QgdGVzdF9scmkgKnRl c3QpCiAJCSAgIGV4cGVjdGVkX2Vycm5vKTsKIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsKIAotCWln dF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9h c3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykg JgogCQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKIAkJCSAgZXhwZWN0KTsKIH0KQEAgLTUzMCw3ICs1 MzMsOCBAQCBpZ3RfbWFpbgogI3VuZGVmIFJFRwogCiAJCWlndF9maXh0dXJlIHsKLQkJCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGZkKTsKKwkJ CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIGZkKTsKKwkJCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsK IAkJfQogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShscmlzKTsgaSsrKSB7CkBA IC01NDMsNyArNTQ3LDcgQEAgaWd0X21haW4KIAkJfQogCiAJCWlndF9maXh0dXJlIHsKLQkJCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgmbW1pb19kYXRhKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3Bt X2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKaW5kZXggZjY5Yzg4ZjYuLmNiYmU2 YTRiIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCisrKyBiL3Rlc3RzL2k5 MTUvaTkxNV9wbV9scHNwLmMKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlIDxmY250bC5oPgog I2luY2x1ZGUgPHVuaXN0ZC5oPgogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3Ry dWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c19scHNwKHVp bnQzMl90IGRldmlkKQogewpAQCAtMjEwLDcgKzIxMiw4IEBAIGlndF9tYWluCiAKIAkJaWd0X3Jl cXVpcmUoc3VwcG9ydHNfbHBzcChkZXZpZCkpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9m ZCk7CisJCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCQlrbXN0ZXN0 X3NldF92dF9ncmFwaGljc19tb2RlKCk7CiAJfQpAQCAtMjI3LDcgKzIzMCw3IEBAIGlndF9tYWlu CiAJaWd0X2ZpeHR1cmUgewogCQlpbnQgaTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAkJZm9yIChp ID0gMDsgaSA8IGRybV9yZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykKIAkJCWRybU1vZGVGcmVl Q29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsKIAkJZHJtTW9kZUZyZWVSZXNvdXJjZXMoZHJt X3Jlcyk7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMgYi90b29scy9pbnRl bF9hdWRpb19kdW1wLmMKaW5kZXggNjc4ZTFkMDguLjExOWZlY2UxIDEwMDY0NAotLS0gYS90b29s cy9pbnRlbF9hdWRpb19kdW1wLmMKKysrIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCkBAIC00 MSw2ICs0MSw4IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKIAogc3RhdGljIGludCBhdWRfcmVn X2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYXVkaW8gcmVnaXN0ZXJzICovCiBzdGF0aWMg aW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3Rl cnMgKi8KK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBt bWlvX2RhdGE7CiAKICNkZWZpbmUgSVNfSEFTV0VMTF9QTFVTKGRldmlkKSAgKElTX0hBU1dFTEwo ZGV2aWQpIHx8IElTX0JST0FEV0VMTChkZXZpZCkpCiAKQEAgLTI0OTgsOSArMjUwMCwxMCBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZG9fc2VsZl90ZXN0cygpOwogCiAJaWYg KGFyZ2MgPT0gMikKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGFyZ3ZbMV0pOworCQlpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGUoJm1taW9fZGF0YSwgYXJndlsxXSk7CiAJZWxzZQotCQlpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZt bWlvX2RhdGEsIHBjaV9kZXYpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1p bzsKIAogCXByaW50ZigiJXMgYXVkaW8gcmVnaXN0ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2aWNl X2luZm8oZGV2aWQpLT5jb2RlbmFtZSk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQpKSB7CmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9iYWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdo dC5jCmluZGV4IGJkYmY5YWYzLi4xYmQzNWY0MyAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYmFj a2xpZ2h0LmMKKysrIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKQEAgLTM1LDEyICszNSwxNSBA QAogI2luY2x1ZGUgImludGVsX3JlZy5oIgogCiAvKiBYWFggUENIIG9ubHkgdG9kYXkgKi8KK3N0 YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cit2b2lkICppZ3RfZ2xvYmFsX21taW87 CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKIAl1aW50MzJfdCBjdXJyZW50 LCBtYXg7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkp OworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJY3VycmVu dCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9E VVRZX0NZQ0xFX01BU0s7CiAJbWF4ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX1BD SF9DVEwyKSA+PiAxNjsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMg Yi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCmluZGV4IGUxMDk0ZDM5Li5hZjdlNDBjYyAx MDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYworKysgYi90b29scy9pbnRl bF9kaXNwbGF5X3BvbGxlci5jCkBAIC01OSw2ICs1OSw4IEBAIGVudW0gdGVzdCB7CiAKIHN0YXRp YyB1aW50MzJfdCB2bHZfb2Zmc2V0Owogc3RhdGljIHVpbnQxNl90IHBpcGVfb2Zmc2V0WzNdID0g eyAwLCAweDEwMDAsIDB4MjAwMCwgfTsKK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBz dHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7CiAKICNkZWZpbmUgUElQRV9SRUcocGlwZSwgcmVn X2EpIChwaXBlX29mZnNldFsocGlwZSldICsgKHJlZ19hKSkKIApAQCAtMTE4Nyw3ICsxMTg5LDgg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYnJlYWs7CiAJfQogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAK IAlwcmludGYoIiVzP1xuIiwgdGVzdF9uYW1lKHRlc3QsIHBpcGUsIGJpdCwgdGVzdF9waXhlbGNv dW50KSk7CiAKQEAgLTEyNjIsNyArMTI2NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJCWFzc2VydCgwKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgp OworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJaWYgKHF1aXQp CiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jIGIvdG9v bHMvaW50ZWxfZm9yY2V3YWtlZC5jCmluZGV4IDAyZmJmODg4Li5lNTJkYjVlZCAxMDA2NDQKLS0t IGEvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCisrKyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQu YwpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgImRybXRlc3QuaCIKIAogYm9vbCBkYWVtb25p emVkOwordm9pZCAqaWd0X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1t aW9fZGF0YTsKIAogI2RlZmluZSBJTkZPX1BSSU5UKC4uLikgXAogCWRvIHsgXApAQCAtNTksNyAr NjEsNyBAQCBoZWxwKGNoYXIgKnByb2cpIHsKIHN0YXRpYyBpbnQKIGlzX2FsaXZlKHZvaWQpIHsK IAkvKiBSZWFkIHRoZSB0aW1lc3RhbXAsIHdoaWNoIHNob3VsZCAqYWxtb3N0KiBhbHdheXMgYmUg ITAgKi8KLQlyZXR1cm4gKGludGVsX3JlZ2lzdGVyX3JlYWQoMHgyMzU4KSAhPSAwKTsKKwlyZXR1 cm4gKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgMHgyMzU4KSAhPSAwKTsKIH0KIAog aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTgwLDcgKzgyLDggQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJSU5GT19QUklOVCgic3RhcnRlZCBkYWVtb24i KTsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAxLCAtMSk7CisJcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOworCWlndF9nbG9iYWxfbW1p byA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAlpZiAocmV0KSB7CiAJCUlORk9fUFJJTlQoIkNvdWxk bid0IGluaXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKIAkJZXhpdCgxKTsKQEAgLTkwLDE0ICs5Mywx NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXdoaWxlKDEpIHsKIAkJaWYg KCFpc19hbGl2ZSgpKSB7CiAJCQlJTkZPX1BSSU5UKCJncHUgcmVzZXQ/IHJlc3RhcnRpbmcgZGFl bW9uXG4iKTsKLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Ci0JCQlyZXQgPSBpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7CisJ CQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKKwkJCXJldCA9IGludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCks IDEsIC0xKTsKKwkJCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAkJCWlm IChyZXQpCiAJCQkJSU5GT19QUklOVCgiUmVnIGFjY2VzcyBpbml0IGZhaWxcbiIpOwogCQl9CiAJ CXNsZWVwKDEpOwogCX0KLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCUlORk9fUFJJTlQoIkZvcmNld2FrZSB1 bmxvY2tcbiIpOwogCiAJaWYgKGRhZW1vbml6ZWQpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVs X2dwdV90aW1lLmMgYi90b29scy9pbnRlbF9ncHVfdGltZS5jCmluZGV4IDc5MjQwZmQzLi4wY2Zj MTA4YiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYworKysgYi90b29scy9pbnRl bF9ncHVfdGltZS5jCkBAIC00MSw2ICs0MSw4IEBACiAjZGVmaW5lIFNBTVBMRVNfUEVSX1NFQyAg ICAgICAgICAgICAxMDAwMAogCiBzdGF0aWMgdm9sYXRpbGUgaW50IGdvZGRvOwordm9pZCAqaWd0 X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogc3Rh dGljIHBpZF90IHNwYXduKGNoYXIgKiphcmd2KQogewpAQCAtNjcsNyArNjksOCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJc3RhdGljIHN0cnVjdCBydXNhZ2UgcnVzYWdlOwog CWludCBzdGF0dXM7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2 aWNlKCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJ aWYgKGFyZ2MgPT0gMSkgewogCQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBjbWQgW2FyZ3Mu Li5dXG4iLCBhcmd2WzBdKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYyBi L3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwppbmRleCA2ODlmNWZhYS4uNjMzYTVlMTAgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYworKysgYi90b29scy9pbnRlbF9pbmZvZnJh bWVzLmMKQEAgLTI2Miw2ICsyNjIsOCBAQCBjb25zdCBjaGFyICpkaXBfZnJlcXVlbmN5X25hbWVz W10gPSB7CiAJInJlc2VydmVkIChpbnZhbGlkKSIKIH07CiAKK3ZvaWQgKmlndF9nbG9iYWxfbW1p bzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7CiBzdHJ1Y3QgcGNpX2Rldmlj ZSAqcGNpX2RldjsKIGludCBnZW4gPSAwOwogCkBAIC0xMTA4LDcgKzExMTAsOCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAgICAgICAiIHBlcmZlY3RseTogdGhlIEtlcm5l bCBtaWdodCB1bmRvIG91ciBjaGFuZ2VzLlxuIik7CiAKIAlwY2lfZGV2ID0gaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKTsKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lfZGV2LCAwLCAtMSk7 CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgcGNpX2RldiwgMCwgLTEp OworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAlpbnRlbF9jaGVja19w Y2goKTsKIAogCWlmIChJU19HRU40KHBjaV9kZXYtPmRldmljZV9pZCkpCkBAIC0xMjU2LDYgKzEy NTksNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogb3V0OgotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko Jm1taW9fZGF0YSk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2wz X3Bhcml0eS5jIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKaW5kZXggZDhjOTk3YWYuLjdhNDYx YTU0IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9sM19wYXJpdHkuYworKysgYi90b29scy9pbnRl bF9sM19wYXJpdHkuYwpAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgImludGVsX2wzX3Bhcml0 eS5oIgogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRldmlkOwordm9pZCAqaWd0X2dsb2JhbF9tbWlv Oworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKIC8qIEwzIHNpemUgaXMgYWx3 YXlzIGEgZnVuY3Rpb24gb2YgYmFua3MuIFRoZSBudW1iZXIgb2YgYmFua3MgY2Fubm90IGJlCiAg KiBkZXRlcm1pbmVkIGJ5IG51bWJlciBvZiBzbGljZXMgaG93ZXZlciAqLwogc3RhdGljIGlubGlu ZSBpbnQgbnVtX2JhbmtzKHZvaWQpIHsKQEAgLTE4OSw3ICsxOTEsOCBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCWlmIChpbnRlbF9nZW4oZGV2aWQpIDwgNyB8fCBJU19WQUxM RVlWSUVXKGRldmlkKSkKIAkJZXhpdCg3Nyk7CiAKLQlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKKwlhc3Nl cnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEu aWd0X21taW87CiAKIAlkaXIgPSBpZ3Rfc3lzZnNfb3BlbihkZXZpY2UpOwogCkBAIC0yMTEsNyAr MjE0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiBub3cuIEp1c3Qg YmUgYXdhcmUgb2YgdGhpcyBpZiBmb3Igc29tZSByZWFzb24gYSBoYW5nIGlzIHJlcG9ydGVkCiAJ ICogd2hlbiB1c2luZyB0aGlzIHRvb2wuCiAJICovCi0JZGZ0ID0gaW50ZWxfcmVnaXN0ZXJfcmVh ZCgweGIwMzgpOworCWRmdCA9IGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgMHhiMDM4 KTsKIAogCXdoaWxlICgxKSB7CiAJCWludCBjLCBvcHRpb25faW5kZXggPSAwOwpAQCAtMzU3LDEw ICszNjAsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlhc3NlcnQo aSA8IDIpOwogCQkJCWRmdCB8PSBpIDw8IDE7IC8qIHNsaWNlICovCiAJCQkJZGZ0IHw9IDEgPDwg MDsgLyogZW5hYmxlICovCi0JCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQpOwor CQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIDB4YjAzOCwgZGZ0KTsKIAkJCQli cmVhazsKIAkJCWNhc2UgJ3UnOgotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKDB4YjAzOCwgZGZ0 ICYgfigxPDwwKSk7CisJCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgMHhiMDM4 LCBkZnQgJgorCQkJCQkJICAgICB+KDEgPDwgMCkpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAnTCc6 CiAJCQkJYnJlYWs7CkBAIC0zNjksNyArMzczLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJaWYgKGFjdGlvbiA9PSAnbCcp CiAJCWV4aXQoRVhJVF9TVUNDRVNTKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfbGlkLmMg Yi90b29scy9pbnRlbF9saWQuYwppbmRleCAyYjU5N2VmYi4uYjRmMjZiNjAgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2ludGVsX2xpZC5jCisrKyBiL3Rvb2xzL2ludGVsX2xpZC5jCkBAIC01Miw2ICs1Miw5 IEBAIGVudW0gbGlkX3N0YXR1cyB7CiAjZGVmaW5lIEFDUElfQlVUVE9OICIvcHJvYy9hY3BpL2J1 dHRvbi8iCiAjZGVmaW5lIEFDUElfTElEICIvcHJvYy9hY3BpL2J1dHRvbi9saWQvIgogCit2b2lk ICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwor CiBzdGF0aWMgaW50IGk4MzBfbHZkc19hY3BpX2xpZF9zdGF0ZSh2b2lkKQogewogCWludCBmZDsK QEAgLTExOSw3ICsxMjIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJ aW50IHN3ZjE0LCBhY3BpX2xpZDsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21t aW87CiAKIAl3aGlsZSAoMSkgewogCQlzd2YxNCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgU1dG MTQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29scy9pbnRl bF9wYW5lbF9maXR0ZXIuYwppbmRleCAyNjg0M2Q3Yy4uOTY2M2QwY2MgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5j CkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCiAjaW5jbHVkZSAiZHJt dGVzdC5oIgogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2Rh dGEgbW1pb19kYXRhOwogaW50IGdlbjsKIAogdWludDMyX3QgSFRPVEFMW10gICAgID0geyAweDYw MDAwLCAweDYxMDAwLCAweDYyMDAwIH07CkBAIC0yODAsNyArMjgyLDggQEAgaW50IG1haW4gKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJICAgICAgICJzb2x1dGlvbiB0aGF0IG1heSBvciBtYXkg bm90IHdvcmsuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrLlxuIik7CiAKIAlwY2lfZGV2ID0gaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lfZGV2 LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgcGNpX2Rl diwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAlkZXZp ZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICghSEFTX1BDSF9TUExJVChkZXZpZCkpIHsK QEAgLTM0Miw2ICszNDUsNiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9 CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS90 b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgYi90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMK aW5kZXggNTBjNGJjZTYuLjM4ZjcxNDE5IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wZXJmX2Nv dW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCkBAIC0zMDAsNiArMzAw LDggQEAgdWludDMyX3QgKnRvdGFsczsKIHVpbnQzMl90ICpsYXN0X2NvdW50ZXI7CiBzdGF0aWMg ZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwogc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aDsKK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlv X2RhdGE7CiAKIC8qIERXMCAqLwogI2RlZmluZSBHRU41X01JX1JFUE9SVF9QRVJGX0NPVU5UICgo MHgyNiA8PCAyMykgfCAoMyAtIDIpKQpAQCAtNDgzLDEyICs0ODUsMTUgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob2Fjb250cm9sKSB7CiAJCS8qIEZvcmNld2FrZSAqLwot CQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBm ZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9w Y2lfZGV2aWNlKCksCisJCQkJCSAgIDAsIGZkKTsKKwkJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19k YXRhLmlndF9tbWlvOwogCiAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlp bnRlbF9yZWdpc3Rlcl93cml0ZShPQUNPTlRST0wsCi0JCQljb3VudGVyX2Zvcm1hdCA8PCBPQUNP TlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAotCQkJUEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFC TEUpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCBPQUNPTlRST0wsCisJCQkJ ICAgICBjb3VudGVyX2Zvcm1hdCA8PAorCQkJCSAgICAgT0FDT05UUk9MX0NPVU5URVJfU0VMRUNU X1NISUZUIHwKKwkJCQkgICAgIFBFUkZPUk1BTkNFX0NPVU5URVJfRU5BQkxFKTsKIAl9CiAKIAl0 b3RhbHMgPSBjYWxsb2MoY291bnRlcl9jb3VudCwgc2l6ZW9mKHVpbnQzMl90KSk7CkBAIC01MjAs MTAgKzUyNSwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChvYWNvbnRy b2wpIHsKIAkJLyogRGlzYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRlbF9yZWdp c3Rlcl93cml0ZShPQUNPTlRST0wsIDApOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19k YXRhLCBPQUNPTlRST0wsIDApOwogCiAJCS8qIEZvcmNld2FrZSAqLwotCQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRh KTsKIAl9CiAKIAlmcmVlKHRvdGFscyk7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWcuYyBi L3Rvb2xzL2ludGVsX3JlZy5jCmluZGV4IDJlNzRiNjAxLi4xYzc4YWYwYiAxMDA2NDQKLS0tIGEv dG9vbHMvaW50ZWxfcmVnLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnLmMKQEAgLTg0LDYgKzg0LDkg QEAgc3RydWN0IGNvbmZpZyB7CiAJaW50IHZlcmJvc2l0eTsKIH07CiAKK3ZvaWQgKmlndF9nbG9i YWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7CisKIC8qIHBvcnQg ZGVzYyBtdXN0IGhhdmUgYmVlbiBzZXQgKi8KIHN0YXRpYyBpbnQgc2V0X3JlZ19ieV9hZGRyKHN0 cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLAogCQkJICAgdWludDMyX3QgYWRk cikKQEAgLTM5MCw3ICszOTMsOCBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNv bmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQogCQkJCXJlZy0+ cG9ydF9kZXNjLm5hbWUpOwogCQkJcmV0dXJuIC0xOwogCQl9Ci0JCXZhbCA9IGludGVsX2lvc2Zf c2JfcmVhZChyZWctPnBvcnRfZGVzYy5wb3J0LCByZWctPmFkZHIpOworCQl2YWwgPSBpbnRlbF9p b3NmX3NiX3JlYWQoJm1taW9fZGF0YSwgcmVnLT5wb3J0X2Rlc2MucG9ydCwKKwkJCQkJIHJlZy0+ YWRkcik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmludGYoc3RkZXJyLCAicG9ydCAlZCBu b3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0KTsKQEAgLTQ2Miw3ICs0NjYsOCBA QCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0 IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwpCiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQly ZXR1cm4gLTE7CiAJCX0KLQkJaW50ZWxfaW9zZl9zYl93cml0ZShyZWctPnBvcnRfZGVzYy5wb3J0 LCByZWctPmFkZHIsIHZhbCk7CisJCWludGVsX2lvc2Zfc2Jfd3JpdGUoJm1taW9fZGF0YSwgcmVn LT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyLAorCQkJCSAgICB2YWwpOwogCQlicmVhazsKIAlk ZWZhdWx0OgogCQlmcHJpbnRmKHN0ZGVyciwgInBvcnQgJWQgbm90IHN1cHBvcnRlZFxuIiwgcmVn LT5wb3J0X2Rlc2MucG9ydCk7CkBAIC01NTYsOSArNTYxLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxf cmVnX3JlYWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQog CX0KIAogCWlmIChjb25maWctPm1taW9maWxlKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUo Y29uZmlnLT5tbWlvZmlsZSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmbW1pb19kYXRh LCBjb25maWctPm1taW9maWxlKTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgm bW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBt bWlvX2RhdGEuaWd0X21taW87CiAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0 cnVjdCByZWcgcmVnOwpAQCAtNTc0LDcgKzU4MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3Jl YWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJ fQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9CkBAIC01ODgs NyArNTk0LDggQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29u ZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwogCX0K IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2Rldiwg MCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWZvciAo aSA9IDE7IGkgPCBhcmdjOyBpICs9IDIpIHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC02MTMsNyAr NjIwLDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29uZmln LCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl3cml0ZV9yZWdpc3Rlcihjb25maWcsICZyZWcs IHZhbCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9 CkBAIC02MjQsOSArNjMxLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0IGNv bmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWludCBpOwogCiAJaWYgKGNv bmZpZy0+bW1pb2ZpbGUpCi0JCWludGVsX21taW9fdXNlX2R1bXBfZmlsZShjb25maWctPm1taW9m aWxlKTsKKwkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCZtbWlvX2RhdGEsIGNvbmZpZy0+bW1p b2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5wY2lf ZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGNv bmZpZy0+cGNpX2RldiwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3Rf bW1pbzsKIAogCWZvciAoaSA9IDA7IGkgPCBjb25maWctPnJlZ2NvdW50OyBpKyspIHsKIAkJcmVn ID0gJmNvbmZpZy0+cmVnc1tpXTsKQEAgLTYzOCw3ICs2NDYsNyBAQCBzdGF0aWMgaW50IGludGVs X3JlZ19kdW1wKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJZHVtcF9yZWdpc3Rlcihjb25maWcsICZjb25maWctPnJlZ3NbaV0pOwogCX0KIAotCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQpAQCAtNjUyLDcgKzY2MCw4IEBA IHN0YXRpYyBpbnQgaW50ZWxfcmVnX3NuYXBzaG90KHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKIAl9CiAKLQlpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKGNvbmZpZy0+cGNpX2Rldik7CisJaW50ZWxfbW1pb191c2VfcGNp X2JhcigmbW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYpOworCWlndF9nbG9iYWxfbW1pbyA9IG1t aW9fZGF0YS5pZ3RfbW1pbzsKIAogCS8qIFhYWDogZXJyb3IgaGFuZGxpbmcgKi8KIAlpZiAod3Jp dGUoMSwgaWd0X2dsb2JhbF9tbWlvLCBjb25maWctPnBjaV9kZXYtPnJlZ2lvbnNbbW1pb19iYXJd LnNpemUpID09IC0xKQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyBiL3Rv b2xzL2ludGVsX3JlZ19jaGVja2VyLmMKaW5kZXggYjE0YTA2ZWEuLmM4ODMxOTAxIDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCisrKyBiL3Rvb2xzL2ludGVsX3JlZ19jaGVj a2VyLmMKQEAgLTMyLDYgKzMyLDkgQEAKIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKIHN0YXRpYyBp bnQgZ2VuOwogCitzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwordm9pZCAqaWd0 X2dsb2JhbF9tbWlvOworCiBzdGF0aWMgdWludDMyX3QKIHJlYWRfYW5kX3ByaW50X3JlZyhjb25z dCBjaGFyICpuYW1lLCB1aW50MzJfdCByZWcpCiB7CkBAIC0zNDUsNyArMzQ4LDggQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAJZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KTsKIAlkZXZpZCA9IGRldi0+ZGV2aWNlX2lkOwotCWludGVsX21taW9fdXNlX3BjaV9iYXIoZGV2 KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGRldik7CisJaWd0X2dsb2Jh bF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJaWYgKElTX0dFTjcoZGV2aWQpKQogCQln ZW4gPSA3OwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRl bF93YXRlcm1hcmsuYwppbmRleCAwMGJkZDEyMC4uM2YyNjdmYTYgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2ludGVsX3dhdGVybWFyay5jCisrKyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCkBAIC0zNSw2 ICszNSw4IEBACiAKIHN0YXRpYyB1aW50MzJfdCBkaXNwbGF5X2Jhc2U7CiBzdGF0aWMgdWludDMy X3QgZGV2aWQ7Cit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2Rh dGEgbW1pb19kYXRhOwogCiBzdGF0aWMgdWludDMyX3QgcmVhZF9yZWcodWludDMyX3QgYWRkcikK IHsKQEAgLTI0OSw3ICsyNTEsOCBAQCBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lkKQogCXVp bnQzMl90IHBsYW5lX2N0bFtudW1fcGlwZXNdW21heF9wbGFuZXNdOwogCXVpbnQzMl90IHdtX2xp bmV0aW1lW251bV9waXBlc107CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9n ZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1p byA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWZvciAocGlwZSA9IDA7IHBpcGUgPCBudW1fcGlw ZXM7IHBpcGUrKykgewogCQlpbnQgbnVtX3BsYW5lcyA9IHNrbF9udW1fcGxhbmVzKGRldmlkLCBw aXBlKTsKQEAgLTQ2OSw3ICs0NzIsOCBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQog CWludCBudW1fcGlwZXMgPSBpbnRlbF9nZW4oZGV2aWQpID49IDcgPyAzIDogMjsKIAlzdHJ1Y3Qg aWxrX3dtIHdtID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9f ZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9 IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1fcGlwZXM7IGkrKykg ewogCQlkc3BjbnRyW2ldID0gcmVhZF9yZWcoMHg3MDE4MCArIGkgKiAweDEwMDApOwpAQCAtNTA1 LDcgKzUwOSw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQpCiAJaWYgKElTX0JST0FE V0VMTChkZXZpZCkgfHwgSVNfSEFTV0VMTChkZXZpZCkpCiAJCXdtX21pc2MgPSByZWFkX3JlZygw eDQ1MjYwKTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVz OyBpKyspCiAJCXByaW50ZigiICAgIFdNX1BJUEVfJWMgPSAweCUwOHhcbiIsIHBpcGVfbmFtZShp KSwgd21fcGlwZVtpXSk7CkBAIC02MTksNyArNjIzLDggQEAgc3RhdGljIHZvaWQgdmx2X3dtX2R1 bXAodm9pZCkKIAl1aW50MzJfdCBkc3Bfc3NfcG0sIGRkcl9zZXR1cDI7CiAJc3RydWN0IGdtY2hf d20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaWd0X2dsb2Jh bF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAz MCk7CiAJZHNwYXJiMiA9IHJlYWRfcmVnKDB4NzAwNjApOwpAQCAtNjUwLDEzICs2NTUsMTMgQEAg c3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKIAogCQlkZGwzID0gcmVhZF9yZWcoMHg3MDA1 OCk7CiAKLQkJaW50ZWxfcHVuaXRfcmVhZCgweDM2LCAmZHNwX3NzX3BtKTsKLQkJaW50ZWxfcHVu aXRfcmVhZCgweDEzOSwgJmRkcl9zZXR1cDIpOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlvX2Rh dGEsIDB4MzYsICZkc3Bfc3NfcG0pOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlvX2RhdGEsIDB4 MTM5LCAmZGRyX3NldHVwMik7CiAJfSBlbHNlIHsKIAkJZnc3ID0gcmVhZF9yZWcoMHg3MDA3Yyk7 CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICBGVzEgPSAweCUwOHhc biIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAgLTgz NSw3ICs4NDAsOCBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1p X2FyYl9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAK IAlkc3BhY250ciA9IHJlYWRfcmVnKDB4NzAxODApOwogCWRzcGJjbnRyID0gcmVhZF9yZWcoMHg3 MTE4MCk7CkBAIC04NDYsNyArODUyLDcgQEAgc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkK IAltaV9kaXNwbGF5X3Bvd2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0 ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAg ICAgICAgICAgRFNQQUNOVFIgPSAweCUwOHhcbiIsIGRzcGFjbnRyKTsKIAlwcmludGYoIiAgICAg ICAgICAgICBEU1BCQ05UUiA9IDB4JTA4eFxuIiwgZHNwYmNudHIpOwpAQCAtOTIxLDcgKzkyNyw4 IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9zdGF0 ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlkc3BhcmIg PSByZWFkX3JlZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTkzMCw3 ICs5MzcsNyBAQCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bv d2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4 MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBG VzEgPSAweCUwOHhcbiIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIgPSAw eCUwOHhcbiIsIGZ3Mik7CkBAIC05OTIsNyArOTk5LDggQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1 bXAodm9pZCkKIAl1aW50MzJfdCBjYnI7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0g PSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNl KCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRh LmlndF9tbWlvOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7CiAJZncxID0gcmVhZF9y ZWcoMHg3MDAzNCk7CkBAIC0xMDAyLDcgKzEwMTAsNyBAQCBzdGF0aWMgdm9pZCBwbnZfd21fZHVt cCh2b2lkKQogCW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlf YXJiX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmlu dGYoIiAgICAgICAgICAgICAgIERTUEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKIAlwcmludGYo IiAgICAgICAgICAgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKQEAgLTEwODIsNyArMTA5 MCw4IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9z dGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCks IDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlkc3Bh cmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlpbnN0cG0gPSByZWFkX3JlZygweDIwYzApOwpAQCAt MTA5MCw3ICsxMDk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAJZndfYmxj X3NlbGYgPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBl NCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICBEU1BBUkIgPSAweCUwOHhc biIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICAgICBGV19CTEMgPSAweCUwMTYiIFBSSXg2NCAiXG4i LCBmd19ibGMpOwpAQCAtMTE1MSw3ICsxMTYwLDggQEAgc3RhdGljIHZvaWQgZ2VuMl93bV9kdW1w KHZvaWQpCiAJdWludDMyX3QgbWlfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFO RV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBp bnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19k YXRhLmlndF9tbWlvOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7CiAJbWVtX21vZGUg PSByZWFkX3JlZygweDIwY2MpOwpAQCAtMTE1OSw3ICsxMTY5LDcgQEAgc3RhdGljIHZvaWQgZ2Vu Ml93bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIwZTApOwogCW1pX3N0 YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAg ICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwogCXByaW50ZigiICAgTUVNX01PREUgPSAw eCUwOHhcbiIsIG1lbV9tb2RlKTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2