From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id CDB4789ACC for ; Tue, 27 Aug 2019 13:21:20 +0000 (UTC) From: Daniel Mrzyglod Date: Tue, 27 Aug 2019 15:21:10 +0200 Message-Id: <20190827132110.16951-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190827132110.16951-1-daniel.t.mrzyglod@intel.com> References: <20190827132110.16951-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v8 3/3] 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 QGludGVsLmNvbT4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBNcnp5Z2xvZCA8ZGFuaWVsLnQubXJ6 eWdsb2RAaW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyAgICAgIHwgICAz ICstCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgICAgICAgICB8ICAgMyArLQogbGliL2ludGVsX2lv LmggICAgICAgICAgICAgICAgfCAgODEgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogbGliL2lu dGVsX2lvc2YuYyAgICAgICAgICAgICAgfCAgNzQgKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGxp Yi9pbnRlbF9tbWlvLmMgICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIHwgICA0ICstCiB0ZXN0 cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgICB8ICAxMyArKy0tCiB0ZXN0cy9pOTE1L2dlbV93b3Jr YXJvdW5kcy5jICB8ICAgMyArLQogdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyAgICAgfCAgIDYg Ky0KIHRvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyAgICAgIHwgICA2ICstCiB0b29scy9pbnRlbF9i YWNrbGlnaHQuYyAgICAgICB8ICAgMyArLQogdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYyAg fCAgIDUgKy0KIHRvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyAgICAgIHwgIDE1ICsrLS0tCiB0b29s cy9pbnRlbF9ncHVfdGltZS5jICAgICAgICB8ICAgMyArLQogdG9vbHMvaW50ZWxfaW5mb2ZyYW1l cy5jICAgICAgfCAgIDUgKy0KIHRvb2xzL2ludGVsX2wzX3Bhcml0eS5jICAgICAgIHwgIDExICsr LS0KIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAgICAgIHwgICAzICstCiB0b29scy9pbnRlbF9w YW5lbF9maXR0ZXIuYyAgICB8ICAgNSArLQogdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jICAg fCAgMTAgKystLQogdG9vbHMvaW50ZWxfcmVnLmMgICAgICAgICAgICAgfCAgMjMgKysrLS0tLQog dG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyAgICAgfCAgIDMgKy0KIHRvb2xzL2ludGVsX3dhdGVy bWFyay5jICAgICAgIHwgIDQyICsrKysrKystLS0tLS0KIDIyIGZpbGVzIGNoYW5nZWQsIDI0NCBp bnNlcnRpb25zKCspLCAxODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9n ZW1fbGF0ZW5jeS5jIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCmluZGV4IGMzZmM0YmYwLi4w ZmM0YjA1ZSAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCisrKyBiL2JlbmNo bWFya3MvZ2VtX2xhdGVuY3kuYwpAQCAtNTUsNiArNTUsNyBAQAogc3RhdGljIGludCBkb25lOwog c3RhdGljIGludCBmZDsKIHN0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCAqdGltZXN0YW1wX3JlZzsK K3N0YXRpYyBzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogI2RlZmluZSBSRUco eCkgKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlv ICsgeCkKICNkZWZpbmUgUkVHX09GRlNFVCh4KSAoKHZvbGF0aWxlIGNoYXIgKikoeCkgLSAodm9s YXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbykKQEAgLTQ1Niw3ICs0NTcsNyBAQCBzdGF0aWMg aW50IHJ1bihpbnQgc2Vjb25kcywKIAlpZiAoZ2VuIDwgNikKIAkJcmV0dXJuIElHVF9FWElUX1NL SVA7IC8qIE5lZWRzIEJDUyB0aW1lc3RhbXAgKi8KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CisJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZk KTsKIAogCWlmIChnZW4gPT0gNikKIAkJdGltZXN0YW1wX3JlZyA9IFJFRyhSQ1NfVElNRVNUQU1Q KTsKZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYyBiL2JlbmNobWFya3MvZ2VtX3dz aW0uYwppbmRleCBhNzZmZGJmZS4uNDk2NzQ1YmYgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2Vt X3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBz dHJ1Y3Qgd29ya2xvYWQKIAl9IGJ1c3lfYmFsYW5jZXI7CiB9OwogCitzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhIG1taW9fZGF0YTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbm9wX2NhbGlicmF0 aW9uX3VzID0gMTAwMDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG5vcF9jYWxpYnJhdGlvbjsKIApA QCAtMzA3MSw3ICszMDcyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9jbG9ja3Modm9pZCkKIAl1aW50 MzJfdCByY3Nfc3RhcnQsIHJjc19lbmQ7CiAJZG91YmxlIG92ZXJoZWFkLCB0OwogCi0JaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCBmYWxzZSwgZmQpOwogCiAJaWYgKHZlcmJvc2UgPD0gMSkKIAkJcmV0dXJuOwpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCA5OWNiMTgyOS4u ODE1ZDgxOTIgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5o CkBAIC0zMCwxNyArMzAsNDIgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHBj aWFjY2Vzcy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KIAotLyogcmVnaXN0ZXIgYWNjZXNzIGhl bHBlcnMgZnJvbSBpbnRlbF9tbWlvLmMgKi8KIGV4dGVybiB2b2lkICppZ3RfZ2xvYmFsX21taW87 Ci12b2lkIGludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYp Owotdm9pZCBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSk7CiAKLWludCBpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNh ZmUsIGludCBmZCk7Ci12b2lkIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHZvaWQpOwotdWlu dDMyX3QgaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9yZWdp c3Rlcl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOworLyogcmVnaXN0ZXIgYWNjZXNzIGhlbHBl cnMgZnJvbSBpbnRlbF9tbWlvLmMgKi8KK3N0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSB7CisJ dWludDMyX3QgYmFzZTsKKwl1aW50MzJfdCBzaXplOworCXVpbnQzMl90IGZsYWdzOworfTsKKwor c3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCB7CisJc3RydWN0IGludGVsX3JlZ2lzdGVyX3Jhbmdl ICptYXA7CisJdWludDMyX3QgdG9wOworCXVpbnQzMl90IGFsaWdubWVudF9tYXNrOworfTsKKwor c3RydWN0IGludGVsX21taW9fZGF0YSB7CisJdm9pZCAqaWd0X21taW87CisJc3RydWN0IGludGVs X3JlZ2lzdGVyX21hcCBtYXA7CisJdWludDMyX3QgcGNpX2RldmljZV9pZDsKKwlpbnQga2V5Owor CWJvb2wgc2FmZTsKK307CisKK3ZvaWQgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsCisJCQkgICAgc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9k ZXYpOwordm9pZCBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoc3RydWN0IGludGVsX21taW9fZGF0 YSAqbW1pb19kYXRhLCBjaGFyICpmaWxlKTsKKworaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICAgICBzdHJ1Y3Qg cGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCk7Cit2b2lkIGludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSk7Cit1aW50 MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGludGVs X21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsCisJCQkgIHVpbnQzMl90IHZhbCk7 CitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHN0cnVjdCBpbnRlbF9t bWlvX2RhdGEgKm1taW9fZGF0YSk7CiAKIHVpbnQzMl90IElOUkVHKHVpbnQzMl90IHJlZyk7CiB1 aW50MTZfdCBJTlJFRzE2KHVpbnQzMl90IHJlZyk7CkBAIC01NywxNyArODIsMjQgQEAgdm9pZCBP VVRSRUcxNl9ERVYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKTsK IHZvaWQgT1VUUkVHOF9ERVYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDhfdCB2 YWwpOwogCiAvKiBzaWRlYmFuZCBhY2Nlc3MgZnVuY3Rpb25zIGZyb20gaW50ZWxfaW9zZi5jICov Ci11aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSk7Ci12 b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQg cGh5KTsKLXVpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKTsKLXZv aWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwot dWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZyk7 Ci12b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLCB1 aW50MzJfdCB2YWwpOwotCi1pbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCAqdmFsKTsKLWludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJf dCB2YWwpOwotaW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7 Ci1pbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKK3VpbnQz Ml90IGludGVsX2RwaW9fcmVnX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRh LCB1aW50MzJfdCByZWcsCisJCQkgICAgIGludCBwaHkpOwordm9pZCBpbnRlbF9kcGlvX3JlZ193 cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJ CSAgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKK3VpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3Jl YWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9p ZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2Rh dGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgdWludDMyX3QgdmFsKTsKK3VpbnQzMl90IGludGVs X2lvc2Zfc2JfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90 IHBvcnQsCisJCQkgICAgdWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZShz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOworCitpbnQgaW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3Qg aW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgdWludDMy X3QgKnZhbCk7CitpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAq bW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLAorCQkgICAgICB1aW50MzJfdCB2YWwpOworaW50IGlu dGVsX25jX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCAqdmFsKTsKK2ludCBpbnRlbF9uY193cml0ZShzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAKIC8qIHJl Z2lzdGVyIG1hcHMgZnJvbSBpbnRlbF9yZWdfbWFwLmMgKi8KICNpZm5kZWYgX19HVEtfRE9DX0lH Tk9SRV9fCkBAIC03OCwxNyArMTEwLDYgQEAgaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90IHZhbCk7CiAjZGVmaW5lIElOVEVMX1JBTkdFX1JXCQkoSU5URUxfUkFOR0Vf UkVBRCB8IElOVEVMX1JBTkdFX1dSSVRFKQogI2RlZmluZSBJTlRFTF9SQU5HRV9FTkQJCSgxPDwz MSkKIAotc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlIHsKLQl1aW50MzJfdCBiYXNlOwotCXVp bnQzMl90IHNpemU7Ci0JdWludDMyX3QgZmxhZ3M7Ci19OwotCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0 ZXJfbWFwIHsKLQlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1hcDsKLQl1aW50MzJfdCB0 b3A7Ci0JdWludDMyX3QgYWxpZ25tZW50X21hc2s7Ci19Owogc3RydWN0IGludGVsX3JlZ2lzdGVy X21hcCBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKHVpbnQzMl90IGRldmlkKTsKIHN0cnVjdCBpbnRl bF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKHN0cnVjdCBpbnRlbF9y ZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IG1vZGUpOwogI2VuZGlm IC8qIF9fR1RLX0RPQ19JR05PUkVfXyAqLwpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvc2YuYyBi L2xpYi9pbnRlbF9pb3NmLmMKaW5kZXggM2I1YTEzNzAuLjE2ODYyZWY0IDEwMDY0NAotLS0gYS9s aWIvaW50ZWxfaW9zZi5jCisrKyBiL2xpYi9pbnRlbF9pb3NmLmMKQEAgLTE5LDggKzE5LDggQEAK IC8qIFByaXZhdGUgcmVnaXN0ZXIgd3JpdGUsIGRvdWJsZS13b3JkIGFkZHJlc3NpbmcsIG5vbi1w b3N0ZWQgKi8KICNkZWZpbmUgU0JfQ1JXUkRBX05QICAgMHgwNwogCi1zdGF0aWMgaW50IHZsdl9z aWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwK LQkJCSAgIHVpbnQzMl90ICp2YWwpCitzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3Qg aW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgICB1aW50OF90 IG9wY29kZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKIHsKIAlpbnQgdGltZW91dCA9 IDA7CiAJdWludDMyX3QgY21kLCBkZXZmbiwgYmUsIGJhcjsKQEAgLTM0LDIyICszNCwyNCBAQCBz dGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwg dWludDMyX3QgYWRkciwKIAkJKHBvcnQgPDwgSU9TRl9QT1JUX1NISUZUKSB8IChiZSA8PCBJT1NG X0JZVEVfRU5BQkxFU19TSElGVCkgfAogCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZUKTsKIAotCWlm IChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JV U1kpIHsKKwlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JC RUxMX1JFUSkgJgorCSAgICBJT1NGX1NCX0JVU1kpIHsKIAkJaWd0X3dhcm4oIndhcm5pbmc6IHBj b2RlICglcykgbWFpbGJveCBhY2Nlc3MgZmFpbGVkXG4iLCBpc19yZWFkID8gInJlYWQiIDogIndy aXRlIik7CiAJCXJldHVybiAtRUFHQUlOOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZM Vl9JT1NGX0FERFIsIGFkZHIpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxW X0lPU0ZfQUREUiwgYWRkcik7CiAJaWYgKCFpc19yZWFkKQotCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShWTFZfSU9TRl9EQVRBLCAqdmFsKTsKKwkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRh LCBWTFZfSU9TRl9EQVRBLCAqdmFsKTsKIAotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NG X0RPT1JCRUxMX1JFUSwgY21kKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEsIFZM Vl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKIAogCWRvIHsKIAkJdXNsZWVwKDEpOwogCQl0aW1l b3V0Kys7Ci0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9S RVEpICYgSU9TRl9TQl9CVVNZICYmCi0JCSB0aW1lb3V0IDwgVElNRU9VVF9VUyk7CisJfSB3aGls ZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9tbWlvLAorCQkJCSAgICAgVkxW X0lPU0ZfRE9PUkJFTExfUkVRKSAmCisJCUlPU0ZfU0JfQlVTWSAmJiB0aW1lb3V0IDwgVElNRU9V VF9VUyk7CiAKIAlpZiAodGltZW91dCA+PSBUSU1FT1VUX1VTKSB7CiAJCWlndF93YXJuKCJ0aW1l b3V0IHdhaXRpbmcgZm9yIHBjb2RlICVzICglZCkgdG8gZmluaXNoXG4iLCBpc19yZWFkID8gInJl YWQiIDogIndyaXRlIiwgYWRkcik7CkBAIC01Nyw4ICs1OSw4IEBAIHN0YXRpYyBpbnQgdmx2X3Np ZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAog CX0KIAogCWlmIChpc19yZWFkKQotCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9T Rl9EQVRBKTsKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9EQVRBLCAwKTsKKwkJKnZh bCA9IGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19kYXRhLT5pZ3RfbW1pbywgVkxWX0lPU0ZfREFU QSk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRhLT5pZ3RfbW1pbywgVkxWX0lPU0Zf REFUQSwgMCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTczLDkgKzc1LDEwIEBAIHN0YXRpYyBpbnQg dmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBh ZGRyLAogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRl ZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRf cmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQoraW50IGludGVsX3B1bml0X3JlYWQo c3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJf dCAqdmFsKQogewotCXJldHVybiB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX1BVTklULCBTQl9D UlJEREFfTlAsIGFkZHIsIHZhbCk7CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JSRERBX05QLCBhZGRyLAorCQkJICAgICAgIHZhbCk7CiB9 CiAKIC8qKgpAQCAtODgsOSArOTEsMTAgQEAgaW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3Qg YWRkciwgdWludDMyX3QgKnZhbCkKICAqIFJldHVybnM6CiAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVy IGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KICAqLwot aW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKK2ludCBp bnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0Zf UE9SVF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAsIGFkZHIsCisJ CQkgICAgICAgJnZhbCk7CiB9CiAKIC8qKgpAQCAtMTAzLDkgKzEwNywxMCBAQCBpbnQgaW50ZWxf cHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICogUmV0dXJuczoKICAq IDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29k ZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCAqdmFsKQoraW50IGludGVsX25jX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewotCXJldHVybiB2bHZfc2lk ZWJhbmRfcncoSU9TRl9QT1JUX05DLCBTQl9DUlJEREFfTlAsIGFkZHIsIHZhbCk7CisJcmV0dXJu IHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JSRERBX05QLCBh ZGRyLAorCQkJICAgICAgIHZhbCk7CiB9CiAKIC8qKgpAQCAtMTE4LDkgKzEyMywxMCBAQCBpbnQg aW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoK ICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8g Y29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwg dWludDMyX3QgdmFsKQoraW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotCXJldHVybiB2bHZf c2lkZWJhbmRfcncoSU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOworCXJl dHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9O UCwgYWRkciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoqCkBAIC0xMzMsMTQgKzEzOSwxNiBA QCBpbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICogUmV0 dXJuczoKICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50MzJf dCBpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKK3VpbnQzMl90IGlu dGVsX2RwaW9fcmVnX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50 MzJfdCByZWcsIGludCBwaHkpCiB7CiAJdWludDMyX3QgdmFsOwogCiAJaWYgKHBoeSA9PSAwKQot CQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsK KwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwg cmVnLAorCQkJCSZ2YWwpOwogCWVsc2UKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElP XzIsIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwg SU9TRl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJcmV0dXJuIHZh bDsKIH0KIApAQCAtMTUyLDM4ICsxNjAsNDAgQEAgdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVh ZCh1aW50MzJfdCByZWcsIGludCBwaHkpCiAgKgogICogMzItYml0IHdyaXRlIG9mIHRoZSByZWdp c3RlciBhdCBAb2Zmc2V0IHRocm91Z2ggdGhlIERQSU8gc2lkZWJhbmQgcG9ydC4KICAqLwotdm9p ZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBo eSkKK3ZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkKIHsKIAlpZiAocGh5 ID09IDApCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCByZWcs ICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywgU0Jf TVdSX05QLCByZWcsICZ2YWwpOwogCWVsc2UKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9E UElPXzIsIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsCisJCQkJJnZhbCk7CiB9CiAKLXVp bnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKQordWludDMyX3QgaW50 ZWxfZmxpc2RzaV9yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHJlZykKIHsKIAl1aW50MzJfdCB2YWwgPSAwOwogCi0Jdmx2X3NpZGViYW5kX3J3KElP U0ZfUE9SVF9GTElTRFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5k X3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFs KTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCit2b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2 YWwpCiB7Ci0Jdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUldSREFfTlAs IHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZMSVNE U0ksIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKIH0KIAotdWludDMyX3QgaW50ZWxfaW9zZl9z Yl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2lvc2Zf c2JfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQs IHVpbnQzMl90IHJlZykKIHsKIAl1aW50MzJfdCB2YWw7CiAKLQl2bHZfc2lkZWJhbmRfcncocG9y dCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZv aWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCkKK3ZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2 YWwpCiB7Ci0Jdmx2X3NpZGViYW5kX3J3KHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsK Kwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBwb3J0LCBTQl9DUldSREFfTlAsIHJlZywgJnZh bCk7CiB9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfbW1pby5jIGIvbGliL2ludGVsX21taW8uYwpp bmRleCBjMjU3ZjdhMC4uZTk0NWU0ZTUgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9tbWlvLmMKKysr IGIvbGliL2ludGVsX21taW8uYwpAQCAtNzAsNTcgKzcwLDU3IEBACiAgKgogICogUG9pbnRlciB0 byB0aGUgcmVnaXN0ZXIgcmFuZ2UsIGluaXRpYWxpemVkIHVzaW5nIGludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KCkKICAqIG9yIGludGVsX21taW9fdXNlX2R1bXBfZmlsZSgpLiBJdCBpcyBub3Qg cmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZGlyZWN0bHkuCisgKiBUaGlzIHBvaW50ZXIgaXMgdmFs aWQgb25seSBmb3Igb25lIGRybSBkZXZpY2UuCiAgKi8KIHZvaWQgKmlndF9nbG9iYWxfbW1pbzsK IAotc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIHsKLQlpbnQgaW5pdGVkOwotCWJvb2wgc2FmZTsK LQl1aW50MzJfdCBpOTE1X2RldmlkOwotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwOwot CWludCBrZXk7Ci19IG1taW9fZGF0YTsKLQogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9kdW1wX2Zp bGU6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAq IEBmaWxlOiBuYW1lIG9mIHRoZSByZWdpc3RlciBkdW1wIGZpbGUgdG8gb3BlbgogICoKLSAqIFNl dHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBhdCB0aGUgZGF0YSBjb250YWluZWQgaW4g QGZpbGUuIFRoaXMgYWxsb3dzCi0gKiB0aGUgc2FtZSBjb2RlIHRvIGdldCByZXVzZWQgZm9yIGR1 bXBpbmcgYW5kIGRlY29kaW5nIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcwotICogZnJvbSByZWdp c3RlciBkdW1wcy4KKyAqIFNldHMgYWxzbyB1cCBtbWlvX2RhdGEtPmlndF9tbWlvIHRvIHBvaW50 IGF0IHRoZSBkYXRhIGNvbnRhaW5lZAorICogaW4gQGZpbGUuIFRoaXMgYWxsb3dzIHRoZSBzYW1l IGNvZGUgdG8gZ2V0IHJldXNlZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcKKyAqIGZyb20gcnVu bmluZyBoYXJkd2FyZSBhcyBmcm9tIHJlZ2lzdGVyIGR1bXBzLgogICovCiB2b2lkCi1pbnRlbF9t bWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSkKK2ludGVsX21taW9fdXNlX2R1bXBfZmlsZShz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIgKmZpbGUpCiB7CiAJaW50IGZk OwogCXN0cnVjdCBzdGF0IHN0OwogCisJbWVtc2V0KG1taW9fZGF0YSwgMCwgc2l6ZW9mKHN0cnVj dCBpbnRlbF9tbWlvX2RhdGEpKTsKIAlmZCA9IG9wZW4oZmlsZSwgT19SRFdSKTsKIAlpZ3RfZmFp bF9vbl9mKGZkID09IC0xLAogCQkgICAgICAiQ291bGRuJ3Qgb3BlbiAlc1xuIiwgZmlsZSk7CiAK IAlmc3RhdChmZCwgJnN0KTsKLQlpZ3RfZ2xvYmFsX21taW8gPSBtbWFwKE5VTEwsIHN0LnN0X3Np emUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSwgZmQsIDApOwotCWlndF9mYWls X29uX2YoaWd0X2dsb2JhbF9tbWlvID09IE1BUF9GQUlMRUQsCisJbW1pb19kYXRhLT5pZ3RfbW1p byA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklW QVRFLCBmZCwgMCk7CisJaWd0X2ZhaWxfb25fZihtbWlvX2RhdGEtPmlndF9tbWlvID09IE1BUF9G QUlMRUQsCiAJCSAgICAgICJDb3VsZG4ndCBtbWFwICVzXG4iLCBmaWxlKTsKKworCWlndF9nbG9i YWxfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21taW87CisKIAljbG9zZShmZCk7CiB9CiAKIC8qKgog ICogaW50ZWxfbW1pb191c2VfcGNpX2JhcjoKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVy ZSBmb3IgSU8gb3BlcmF0aW9ucwogICogQHBjaV9kZXY6IGludGVsIGdyYWNwaGlzIHBjaSBkZXZp Y2UKICAqCi0gKiBTZXRzIHVwICNpZ3RfZ2xvYmFsX21taW8gdG8gcG9pbnQgYXQgdGhlIG1taW8g YmFyLgorICogRmlsbCBhIG1taW9fZGF0YSBzdHVjdHVyZSB3aXRoIGlndF9tbWlvIHRvIHBvaW50 IGF0IHRoZSBtbWlvIGJhci4KICAqCiAgKiBAcGNpX2RldiBjYW4gYmUgb2J0YWluZWQgZnJvbSBp bnRlbF9nZXRfcGNpX2RldmljZSgpLgogICovCiB2b2lkCi1pbnRlbF9tbWlvX3VzZV9wY2lfYmFy KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQoraW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1 Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2 KQogewogCXVpbnQzMl90IGRldmlkLCBnZW47CiAJaW50IG1taW9fYmFyLCBtbWlvX3NpemU7CiAJ aW50IGVycm9yOwogCisJbWVtc2V0KG1taW9fZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBpbnRlbF9t bWlvX2RhdGEpKTsKIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAlpZiAoSVNfR0VOMihk ZXZpZCkpCiAJCW1taW9fYmFyID0gMTsKQEAgLTEzOSw3ICsxMzksOSBAQCBpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQogCQkJCSAgICAgIHBjaV9kZXYt PnJlZ2lvbnNbbW1pb19iYXJdLmJhc2VfYWRkciwKIAkJCQkgICAgICBtbWlvX3NpemUsCiAJCQkJ ICAgICAgUENJX0RFVl9NQVBfRkxBR19XUklUQUJMRSwKLQkJCQkgICAgICAmaWd0X2dsb2JhbF9t bWlvKTsKKwkJCQkgICAgICAmbW1pb19kYXRhLT5pZ3RfbW1pbyk7CisKKwlpZ3RfZ2xvYmFsX21t aW8gPSBtbWlvX2RhdGEtPmlndF9tbWlvOwogCiAJaWd0X2ZhaWxfb25fZihlcnJvciAhPSAwLAog CQkgICAgICAiQ291bGRuJ3QgbWFwIE1NSU8gcmVnaW9uXG4iKTsKQEAgLTE1Myw2ICsxNTUsNyBA QCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBmZCkKIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdDoKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3Bl cmF0aW9ucwogICogQHBjaV9kZXY6IGludGVsIGdyYXBoaWNzIHBjaSBkZXZpY2UKICAqIEBzYWZl OiB1c2Ugc2FmZSByZWdpc3RlciBhY2Nlc3MgdGFibGVzCiAgKgpAQCAtMTYwLDc2ICsxNjMsNzIg QEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhpbnQgZmQpCiAgKiBoYW5kbGluZyBhbmQgYWxzbyBh bGxvd3MgcmVnaXN0ZXIgYWNjZXNzIHRvIGJlIGNoZWNrZWQgd2l0aCBhbiBleHBsaWNpdAogICog d2hpdGVsaXN0LgogICoKLSAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgI2lndF9nbG9iYWxfbW1pbyBs aWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIoKS4KKyAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgbW1p b19kYXRhLT5pZ3RfbW1pbyBsaWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIoKS4KICAqCiAgKiBA cGNpX2RldiBjYW4gYmUgb2J0YWluZWQgZnJvbSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgogICov CiBpbnQKLWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2LCBpbnQgc2FmZSwgaW50IGZkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0 IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2Rldiwg aW50IHNhZmUsIGludCBmZCkKIHsKIAlpbnQgcmV0OwogCi0JLyogYWZ0ZXIgb2xkIEFQSSBpcyBk ZXByZWNhdGVkLCByZW1vdmUgdGhpcyAqLwotCWlmIChpZ3RfZ2xvYmFsX21taW8gPT0gTlVMTCkK LQkJaW50ZWxfbW1pb191c2VfcGNpX2JhcihwY2lfZGV2KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKG1taW9fZGF0YSwgcGNpX2Rldik7CiAKLQlpZ3RfYXNzZXJ0KGlndF9nbG9iYWxfbW1pbyAh PSBOVUxMKTsKKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aWd0X21taW8gIT0gTlVMTCk7CiAKLQlp ZiAobW1pb19kYXRhLmluaXRlZCkKLQkJcmV0dXJuIC0xOwotCi0JbW1pb19kYXRhLnNhZmUgPSAo c2FmZSAhPSAwICYmCisJbW1pb19kYXRhLT5zYWZlID0gKHNhZmUgIT0gMCAmJgogCQkJaW50ZWxf Z2VuKHBjaV9kZXYtPmRldmljZV9pZCkgPj0gNCkgPyB0cnVlIDogZmFsc2U7Ci0JbW1pb19kYXRh Lmk5MTVfZGV2aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7Ci0JaWYgKG1taW9fZGF0YS5zYWZlKQot CQltbWlvX2RhdGEubWFwID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX21hcChtbWlvX2RhdGEuaTkxNV9k ZXZpZCk7CisJbW1pb19kYXRhLT5wY2lfZGV2aWNlX2lkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwor CWlmIChtbWlvX2RhdGEtPnNhZmUpCisJCW1taW9fZGF0YS0+bWFwID0gaW50ZWxfZ2V0X3JlZ2lz dGVyX21hcChtbWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQpOwogCiAJLyogRmluZCB3aGVyZSB0aGUg Zm9yY2V3YWtlIGxvY2sgaXMuIEZvcmNld2FrZSBkb2Vzbid0IGV4aXN0CiAJICogZ2VuIDwgNiwg YnV0IHRoZSBkZWJ1Z2ZzIHNob3VsZCBkbyB0aGUgcmlnaHQgdGhpbmdzIGZvciB1cy4KIAkgKi8K IAlyZXQgPSBpZ3Rfb3Blbl9mb3JjZXdha2VfaGFuZGxlKGZkKTsKIAlpZiAocmV0ID09IC0xKQot CQltbWlvX2RhdGEua2V5ID0gRkFLRUtFWTsKKwkJbW1pb19kYXRhLT5rZXkgPSBGQUtFS0VZOwog CWVsc2UKLQkJbW1pb19kYXRhLmtleSA9IHJldDsKKwkJbW1pb19kYXRhLT5rZXkgPSByZXQ7CiAK LQltbWlvX2RhdGEuaW5pdGVkKys7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLWludGVs X3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKHZvaWQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf bmVlZHNfd2FrZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEpCiB7Ci0JcmV0dXJu IG1taW9fZGF0YS5rZXkgIT0gRkFLRUtFWTsKKwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgIT0gRkFL RUtFWTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2U6 CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAg KiBSZXR1cm5zOgogICogTm9uLXplcm8gd2hlbiBmb3JjZXdha2UgaW5pdGlhbGl6YXRpb24gZmFp bGVkLgogICovCi1pbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQp CitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHN0cnVjdCBpbnRlbF9t bWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSA9PSBGQUtFS0VZ OworCXJldHVybiBtbWlvX2RhdGEtPmtleSA9PSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZv ciBJTyBvcGVyYXRpb25zCiAgKgogICogQ2xlYW4gdXAgdGhlIHJlZ2lzdGVyIGFjY2VzcyBoZWxw ZXIgaW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAq Lwogdm9pZAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKK2ludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlpZiAo bW1pb19kYXRhLmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZSgpKQotCQly ZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS5rZXkpOwotCW1taW9fZGF0YS5pbml0ZWQt LTsKKwlpZiAobW1pb19kYXRhLT5rZXkgJiYgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dh a2UobW1pb19kYXRhKSkKKwkJcmVsZWFzZV9mb3JjZXdha2VfbG9jayhtbWlvX2RhdGEtPmtleSk7 CiB9CiAKIC8qKgogICogaW50ZWxfcmVnaXN0ZXJfcmVhZDoKKyAqIEBtbWlvX2RhdGE6ICBtbWlv IHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAg KgogICogMzItYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQuIFRoaXMgZnVuY3Rp b24gb25seSB3b3JrcyB3aGVuIHRoZSBuZXcKQEAgLTI0MiwyMCArMjQxLDE4IEBAIGludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKHZvaWQpCiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdp c3Rlci4KICAqLwogdWludDMyX3QKLWludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKQor aW50ZWxfcmVnaXN0ZXJfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHJlZykKIHsKIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwogCXVp bnQzMl90IHJldDsKIAotCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRlZCk7Ci0KLQlpZiAoaW50 ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2RldmlkKSA+PSA2KQotCQlpZ3RfYXNzZXJ0KG1taW9fZGF0 YS5rZXkgIT0gLTEpOworCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLT5wY2lfZGV2aWNlX2lkKSA+ PSA2KQorCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+a2V5ICE9IC0xKTsKIAotCWlmICghbW1pb19k YXRhLnNhZmUpCisJaWYgKCFtbWlvX2RhdGEtPnNhZmUpCiAJCWdvdG8gcmVhZF9vdXQ7CiAKLQly YW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEubWFwLAorCXJhbmdlID0g aW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS0+bWFwLAogCQkJCQkgcmVnLAogCQkJ CQkgSU5URUxfUkFOR0VfUkVBRCk7CiAKQEAgLTI2NiwxMyArMjYzLDE0IEBAIGludGVsX3JlZ2lz dGVyX3JlYWQodWludDMyX3QgcmVnKQogCX0KIAogcmVhZF9vdXQ6Ci0JcmV0ID0gKih2b2xhdGls ZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZyk7CisJ cmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKW1taW9fZGF0YS0+ aWd0X21taW8gKyByZWcpOwogb3V0OgogCXJldHVybiByZXQ7CiB9CiAKIC8qKgogICogaW50ZWxf cmVnaXN0ZXJfd3JpdGU6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9w ZXJhdGlvbnMKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3Jp dGUKICAqCkBAIC0yODMsMTkgKzI4MSwxNyBAQCBvdXQ6CiAgKiB3aGl0ZSBsaXN0cy4KICAqLwog dm9pZAotaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCitp bnRlbF9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5n ZSAqcmFuZ2U7CiAKLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5pbml0ZWQpOworCWlmIChpbnRlbF9n ZW4obW1pb19kYXRhLT5wY2lfZGV2aWNlX2lkKSA+PSA2KQorCQlpZ3RfYXNzZXJ0KG1taW9fZGF0 YS0+a2V5ICE9IC0xKTsKIAotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49 IDYpCi0JCWlndF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7Ci0KLQlpZiAoIW1taW9fZGF0 YS5zYWZlKQorCWlmICghbW1pb19kYXRhLT5zYWZlKQogCQlnb3RvIHdyaXRlX291dDsKIAotCXJh bmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS5tYXAsCisJcmFuZ2UgPSBp bnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAsCiAJCQkJCSByZWcsCiAJCQkJ CSBJTlRFTF9SQU5HRV9XUklURSk7CiAKQEAgLTMwMyw3ICsyOTksNyBAQCBpbnRlbF9yZWdpc3Rl cl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIAkJICAgICAgIlJlZ2lzdGVyIHdy aXRlIGJsb2NrZWQgZm9yIHNhZmV0eSAiIigqMHglMDh4ID0gMHgleClcbiIsIHJlZywgdmFsKTsK IAogd3JpdGVfb3V0OgotCSoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilp Z3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOworCSoodm9sYXRpbGUgdWludDMyX3QgKikoKHZv bGF0aWxlIGNoYXIgKiltbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogCmRp 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=