From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 31EB289E14 for ; Wed, 28 Aug 2019 18:12:41 +0000 (UTC) From: Daniel Mrzyglod Date: Wed, 28 Aug 2019 20:12:33 +0200 Message-Id: <20190828181233.20487-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190828181233.20487-1-daniel.t.mrzyglod@intel.com> References: <20190828181233.20487-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v11 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 aW0uYwppbmRleCBiOGUyMmIzZi4uODdmODczYjAgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2Vt X3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBz dHJ1Y3Qgd29ya2xvYWQKIAl9IGJ1c3lfYmFsYW5jZXI7CiB9OwogCitzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhIG1taW9fZGF0YTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbm9wX2NhbGlicmF0 aW9uX3VzID0gMTAwMDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG5vcF9jYWxpYnJhdGlvbjsKIApA QCAtMzA3MSw3ICszMDcyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9jbG9ja3Modm9pZCkKIAl1aW50 MzJfdCByY3Nfc3RhcnQsIHJjc19lbmQ7CiAJZG91YmxlIG92ZXJoZWFkLCB0OwogCi0JaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCBmYWxzZSwgZmQpOwogCiAJaWYgKHZlcmJvc2UgPD0gMSkKIAkJcmV0dXJuOwpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCBhNGY5ZmRmNy4u NWY0MGQ1ZDEgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5o 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 bWlvX2RhdGEgKm1taW9fZGF0YSk7CiAKIAogdWludDMyX3QgSU5SRUdfREVWKHZvaWQgKm1taW8s IHVpbnQzMl90IHJlZyk7CkBAIC02NywxNyArOTIsMjQgQEAgdm9pZCBPVVRSRUc4X0RFVih2b2lk ICptbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKTsKICNkZWZpbmUgT1VUUkVHKC4uLikg T1VUUkVHWCgsX19WQV9BUkdTX18pCiAKIC8qIHNpZGViYW5kIGFjY2VzcyBmdW5jdGlvbnMgZnJv bSBpbnRlbF9pb3NmLmMgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3Qg cmVnLCBpbnQgcGh5KTsKLXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1 aW50MzJfdCB2YWwsIGludCBwaHkpOwotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1 aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCk7Ci11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9y dCwgdWludDMyX3QgcmVnKTsKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0 LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Ci0KLWludCBpbnRlbF9wdW5pdF9yZWFkKHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRy LCB1aW50MzJfdCAqdmFsKTsKLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCB2YWwpOwordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgaW50IHBoeSk7Cit2b2lk IGludGVsX2RwaW9fcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgcmVnLAorCQkJICB1aW50MzJfdCB2YWwsIGludCBwaHkpOwordWludDMyX3QgaW50 ZWxfZmxpc2RzaV9yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHJlZyk7Cit2b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9t bWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAgICB1aW50MzJfdCB2YWwp OwordWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJfdCByZWcpOwordm9pZCBpbnRl bF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMy X3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CisKK2ludCBpbnRlbF9w dW5pdF9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRk ciwKKwkJICAgICB1aW50MzJfdCAqdmFsKTsKK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3Qg aW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgIHVpbnQz Ml90IHZhbCk7CitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dyaXRl KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMy X3QgdmFsKTsKIAogLyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAuYyAqLwogI2lm bmRlZiBfX0dUS19ET0NfSUdOT1JFX18KQEAgLTg4LDE3ICsxMjAsNiBAQCBpbnQgaW50ZWxfbmNf d3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKICNkZWZpbmUgSU5URUxfUkFOR0Vf UlcJCShJTlRFTF9SQU5HRV9SRUFEIHwgSU5URUxfUkFOR0VfV1JJVEUpCiAjZGVmaW5lIElOVEVM X1JBTkdFX0VORAkJKDE8PDMxKQogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgewotCXVp bnQzMl90IGJhc2U7Ci0JdWludDMyX3Qgc2l6ZTsKLQl1aW50MzJfdCBmbGFnczsKLX07Ci0KLXN0 cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgewotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAq bWFwOwotCXVpbnQzMl90IHRvcDsKLQl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKLX07CiBzdHJ1 Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIGludGVsX2dldF9yZWdpc3Rlcl9tYXAodWludDMyX3QgZGV2 aWQpOwogc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJfcmFu Z2Uoc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBtYXAsIHVpbnQzMl90IG9mZnNldCwgdWludDMy X3QgbW9kZSk7CiAjZW5kaWYgLyogX19HVEtfRE9DX0lHTk9SRV9fICovCmRpZmYgLS1naXQgYS9s aWIvaW50ZWxfaW9zZi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAzYjVhMTM3MC4uMTY4NjJl ZjQgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGliL2ludGVsX2lvc2YuYwpA QCAtMTksOCArMTksOCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91YmxlLXdvcmQg YWRkcmVzc2luZywgbm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldSREFfTlAgICAweDA3CiAK LXN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2Rl LCB1aW50MzJfdCBhZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0YXRpYyBpbnQgdmx2X3Np ZGViYW5kX3J3KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9y dCwKKwkJCSAgIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQog ewogCWludCB0aW1lb3V0ID0gMDsKIAl1aW50MzJfdCBjbWQsIGRldmZuLCBiZSwgYmFyOwpAQCAt MzQsMjIgKzM0LDI0IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQs IHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJ RlQpIHwgKGJlIDw8IElPU0ZfQllURV9FTkFCTEVTX1NISUZUKSB8CiAJCShiYXIgPDwgSU9TRl9C QVJfU0hJRlQpOwogCi0JaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExf UkVRKSAmIElPU0ZfU0JfQlVTWSkgeworCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0 YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCisJICAgIElPU0ZfU0JfQlVTWSkgewogCQlpZ3Rf d2Fybigid2FybmluZzogcGNvZGUgKCVzKSBtYWlsYm94IGFjY2VzcyBmYWlsZWRcbiIsIGlzX3Jl YWQgPyAicmVhZCIgOiAid3JpdGUiKTsKIAkJcmV0dXJuIC1FQUdBSU47CiAJfQogCi0JaW50ZWxf cmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfQUREUiwgYWRkcik7CisJaW50ZWxfcmVnaXN0ZXJfd3Jp dGUobW1pb19kYXRhLCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKIAlpZiAoIWlzX3JlYWQpCi0JCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rl cl93cml0ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0RBVEEsICp2YWwpOwogCi0JaW50ZWxfcmVnaXN0 ZXJfd3JpdGUoVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOworCWludGVsX3JlZ2lzdGVyX3dy aXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwogCiAJZG8gewogCQl1 c2xlZXAoMSk7CiAJCXRpbWVvdXQrKzsKLQl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZM Vl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kgJiYKLQkJIHRpbWVvdXQgPCBUSU1F T1VUX1VTKTsKKwl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21t aW8sCisJCQkJICAgICBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwkJSU9TRl9TQl9CVVNZICYm IHRpbWVvdXQgPCBUSU1FT1VUX1VTKTsKIAogCWlmICh0aW1lb3V0ID49IFRJTUVPVVRfVVMpIHsK IAkJaWd0X3dhcm4oInRpbWVvdXQgd2FpdGluZyBmb3IgcGNvZGUgJXMgKCVkKSB0byBmaW5pc2hc biIsIGlzX3JlYWQgPyAicmVhZCIgOiAid3JpdGUiLCBhZGRyKTsKQEAgLTU3LDggKzU5LDggQEAg c3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUs IHVpbnQzMl90IGFkZHIsCiAJfQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdp c3Rlcl9yZWFkKFZMVl9JT1NGX0RBVEEpOwotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NG X0RBVEEsIDApOworCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9t bWlvLCBWTFZfSU9TRl9EQVRBKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEtPmln dF9tbWlvLCBWTFZfSU9TRl9EQVRBLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzMsOSArNzUs MTAgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBv cGNvZGUsIHVpbnQzMl90IGFkZHIsCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3Rl ciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8K LWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQg aW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NG X1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsCisJ CQkgICAgICAgdmFsKTsKIH0KIAogLyoqCkBAIC04OCw5ICs5MSwxMCBAQCBpbnQgaW50ZWxfcHVu aXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAg d2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBv biBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQoraW50IGludGVsX3B1bml0X3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotCXJldHVybiB2bHZf c2lkZWJhbmRfcncoSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOwor CXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NS V1JEQV9OUCwgYWRkciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoqCkBAIC0xMDMsOSArMTA3 LDEwIEBAIGludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp CiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBu ZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY19yZWFkKHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7 Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRk ciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX05D LCBTQl9DUlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFsKTsKIH0KIAogLyoqCkBAIC0xMTgs OSArMTIzLDEwIEBAIGludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2 YWwpCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVk LCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY193cml0 ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCitpbnQgaW50ZWxfbmNfd3JpdGUoc3RydWN0 IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp CiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9OUCwg YWRkciwgJnZhbCk7CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9S VF9OQywgU0JfQ1JXUkRBX05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwpOwogfQogCiAvKioKQEAg LTEzMywxNCArMTM5LDE2IEBAIGludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50 MzJfdCB2YWwpCiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0 ZXIuCiAgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQg cGh5KQordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgaW50IHBoeSkKIHsKIAl1aW50MzJfdCB2YWw7CiAK IAlpZiAocGh5ID09IDApCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVJE X05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRf RFBJTywgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJhbmRf cncoSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJh bmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywKKwkJCQkm dmFsKTsKIAlyZXR1cm4gdmFsOwogfQogCkBAIC0xNTIsMzggKzE2MCw0MCBAQCB1aW50MzJfdCBp bnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKICAqCiAgKiAzMi1iaXQg d3JpdGUgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJTyBzaWRlYmFu ZCBwb3J0LgogICovCi12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWlu dDMyX3QgdmFsLCBpbnQgcGh5KQordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQg cGh5KQogewogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElP LCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElP U0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJh bmRfcncoSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lk ZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywKKwkJ CQkmdmFsKTsKIH0KIAotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCBy ZWcpCit1aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2 bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFs KTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JS RERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAotdm9pZCBpbnRlbF9mbGlz ZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfZmxp c2RzaV9yZWdfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNE U0ksIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRh LCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQogCi11aW50 MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQordWlu dDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbDsKIAotCXZs dl9zaWRlYmFuZF9ydyhwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGVi YW5kX3J3KG1taW9fZGF0YSwgcG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0 dXJuIHZhbDsKIH0KIAotdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKQordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVj dCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JXUkRB X05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NS V1JEQV9OUCwgcmVnLCAmdmFsKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9tbWlvLmMgYi9s aWIvaW50ZWxfbW1pby5jCmluZGV4IDgyMDQxYTQyLi40NzU4YjlmMCAxMDA2NDQKLS0tIGEvbGli L2ludGVsX21taW8uYworKysgYi9saWIvaW50ZWxfbW1pby5jCkBAIC03MCw1NyArNzAsNTcgQEAK ICAqCiAgKiBQb2ludGVyIHRvIHRoZSByZWdpc3RlciByYW5nZSwgaW5pdGlhbGl6ZWQgdXNpbmcg aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKQogICogb3IgaW50ZWxfbW1pb191c2VfZHVtcF9m aWxlKCkuIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBkaXJlY3RseS4KKyAqIFRo aXMgcG9pbnRlciBpcyB2YWxpZCBvbmx5IGZvciBvbmUgZHJtIGRldmljZS4KICAqLwogdm9pZCAq aWd0X2dsb2JhbF9tbWlvOwogCi1zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgewotCWludCBpbml0 ZWQ7Ci0JYm9vbCBzYWZlOwotCXVpbnQzMl90IGk5MTVfZGV2aWQ7Ci0Jc3RydWN0IGludGVsX3Jl Z2lzdGVyX21hcCBtYXA7Ci0JaW50IGtleTsKLX0gbW1pb19kYXRhOwotCiAvKioKICAqIGludGVs X21taW9fdXNlX2R1bXBfZmlsZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3Ig SU8gb3BlcmF0aW9ucwogICogQGZpbGU6IG5hbWUgb2YgdGhlIHJlZ2lzdGVyIGR1bXAgZmlsZSB0 byBvcGVuCiAgKgotICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRvIHBvaW50IGF0IHRoZSBk YXRhIGNvbnRhaW5lZCBpbiBAZmlsZS4gVGhpcyBhbGxvd3MKLSAqIHRoZSBzYW1lIGNvZGUgdG8g Z2V0IHJldXNlZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcgZnJvbSBydW5uaW5nIGhhcmR3YXJl IGFzCi0gKiBmcm9tIHJlZ2lzdGVyIGR1bXBzLgorICogU2V0cyBhbHNvIHVwIG1taW9fZGF0YS0+ aWd0X21taW8gdG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkCisgKiBpbiBAZmlsZS4gVGhp cyBhbGxvd3MgdGhlIHNhbWUgY29kZSB0byBnZXQgcmV1c2VkIGZvciBkdW1waW5nIGFuZCBkZWNv ZGluZworICogZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzIGZyb20gcmVnaXN0ZXIgZHVtcHMuCiAg Ki8KIHZvaWQKLWludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQoraW50ZWxfbW1p b191c2VfZHVtcF9maWxlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgY2hhciAq ZmlsZSkKIHsKIAlpbnQgZmQ7CiAJc3RydWN0IHN0YXQgc3Q7CiAKKwltZW1zZXQobW1pb19kYXRh LCAwLCBzaXplb2Yoc3RydWN0IGludGVsX21taW9fZGF0YSkpOwogCWZkID0gb3BlbihmaWxlLCBP X1JEV1IpOwogCWlndF9mYWlsX29uX2YoZmQgPT0gLTEsCiAJCSAgICAgICJDb3VsZG4ndCBvcGVu ICVzXG4iLCBmaWxlKTsKIAogCWZzdGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1t YXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBm ZCwgMCk7Ci0JaWd0X2ZhaWxfb25fZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwlt bWlvX2RhdGEtPmlndF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJP VF9XUklURSwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+ aWd0X21taW8gPT0gTUFQX0ZBSUxFRCwKIAkJICAgICAgIkNvdWxkbid0IG1tYXAgJXNcbiIsIGZp bGUpOworCisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLT5pZ3RfbW1pbzsKKwogCWNsb3Nl KGZkKTsKIH0KIAogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgorICogQG1taW9fZGF0 YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwg Z3JhY3BoaXMgcGNpIGRldmljZQogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBw b2ludCBhdCB0aGUgbW1pbyBiYXIuCisgKiBGaWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGgg aWd0X21taW8gdG8gcG9pbnQgYXQgdGhlIG1taW8gYmFyLgogICoKICAqIEBwY2lfZGV2IGNhbiBi ZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCiAgKi8KIHZvaWQKLWludGVs X21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCitpbnRlbF9tbWlv X3VzZV9wY2lfYmFyKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgc3RydWN0IHBj aV9kZXZpY2UgKnBjaV9kZXYpCiB7CiAJdWludDMyX3QgZGV2aWQsIGdlbjsKIAlpbnQgbW1pb19i YXIsIG1taW9fc2l6ZTsKIAlpbnQgZXJyb3I7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXpl b2Yoc3RydWN0IGludGVsX21taW9fZGF0YSkpOwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lk OwogCWlmIChJU19HRU4yKGRldmlkKSkKIAkJbW1pb19iYXIgPSAxOwpAQCAtMTM5LDcgKzEzOSw5 IEBAIGludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCiAJ CQkJICAgICAgcGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0uYmFzZV9hZGRyLAogCQkJCSAgICAg IG1taW9fc2l6ZSwKIAkJCQkgICAgICBQQ0lfREVWX01BUF9GTEFHX1dSSVRBQkxFLAotCQkJCSAg ICAgICZpZ3RfZ2xvYmFsX21taW8pOworCQkJCSAgICAgICZtbWlvX2RhdGEtPmlndF9tbWlvKTsK KworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21taW87CiAKIAlpZ3RfZmFpbF9v bl9mKGVycm9yICE9IDAsCiAJCSAgICAgICJDb3VsZG4ndCBtYXAgTU1JTyByZWdpb25cbiIpOwpA QCAtMTUzLDYgKzE1NSw3IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQogCiAvKioK ICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0OgorICogQG1taW9fZGF0YTogIG1taW8gc3Ry dWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhcGhpY3MgcGNp IGRldmljZQogICogQHNhZmU6IHVzZSBzYWZlIHJlZ2lzdGVyIGFjY2VzcyB0YWJsZXMKICAqCkBA IC0xNjAsNzYgKzE2Myw3MiBAQCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBmZCkKICAqIGhh bmRsaW5nIGFuZCBhbHNvIGFsbG93cyByZWdpc3RlciBhY2Nlc3MgdG8gYmUgY2hlY2tlZCB3aXRo IGFuIGV4cGxpY2l0CiAgKiB3aGl0ZWxpc3QuCiAgKgotICogSXQgYWxzbyBpbml0aWFsaXplcyAj aWd0X2dsb2JhbF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2JhcigpLgorICogSXQgYWxz byBpbml0aWFsaXplcyBtbWlvX2RhdGEtPmlndF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNp X2JhcigpLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9w Y2lfZGV2aWNlKCkuCiAgKi8KIGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0 IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCitpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lf ZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQogewogCWludCByZXQ7CiAKLQkvKiBh ZnRlciBvbGQgQVBJIGlzIGRlcHJlY2F0ZWQsIHJlbW92ZSB0aGlzICovCi0JaWYgKGlndF9nbG9i YWxfbW1pbyA9PSBOVUxMKQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCWlu dGVsX21taW9fdXNlX3BjaV9iYXIobW1pb19kYXRhLCBwY2lfZGV2KTsKIAotCWlndF9hc3NlcnQo aWd0X2dsb2JhbF9tbWlvICE9IE5VTEwpOworCWlndF9hc3NlcnQobW1pb19kYXRhLT5pZ3RfbW1p byAhPSBOVUxMKTsKIAotCWlmIChtbWlvX2RhdGEuaW5pdGVkKQotCQlyZXR1cm4gLTE7Ci0KLQlt bWlvX2RhdGEuc2FmZSA9IChzYWZlICE9IDAgJiYKKwltbWlvX2RhdGEtPnNhZmUgPSAoc2FmZSAh PSAwICYmCiAJCQlpbnRlbF9nZW4ocGNpX2Rldi0+ZGV2aWNlX2lkKSA+PSA0KSA/IHRydWUgOiBm YWxzZTsKLQltbWlvX2RhdGEuaTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKLQlpZiAo bW1pb19kYXRhLnNhZmUpCi0JCW1taW9fZGF0YS5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFw KG1taW9fZGF0YS5pOTE1X2RldmlkKTsKKwltbWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQgPSBwY2lf ZGV2LT5kZXZpY2VfaWQ7CisJaWYgKG1taW9fZGF0YS0+c2FmZSkKKwkJbW1pb19kYXRhLT5tYXAg PSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS0+cGNpX2RldmljZV9pZCk7CiAKIAkv KiBGaW5kIHdoZXJlIHRoZSBmb3JjZXdha2UgbG9jayBpcy4gRm9yY2V3YWtlIGRvZXNuJ3QgZXhp c3QKIAkgKiBnZW4gPCA2LCBidXQgdGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdodCB0aGlu Z3MgZm9yIHVzLgogCSAqLwogCXJldCA9IGlndF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUoZmQpOwog CWlmIChyZXQgPT0gLTEpCi0JCW1taW9fZGF0YS5rZXkgPSBGQUtFS0VZOworCQltbWlvX2RhdGEt PmtleSA9IEZBS0VLRVk7CiAJZWxzZQotCQltbWlvX2RhdGEua2V5ID0gcmV0OworCQltbWlvX2Rh dGEtPmtleSA9IHJldDsKIAotCW1taW9fZGF0YS5pbml0ZWQrKzsKIAlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uodm9pZCkKK2ludGVs X3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9f ZGF0YSkKIHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSAhPSBGQUtFS0VZOworCXJldHVybiBtbWlv X2RhdGEtPmtleSAhPSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vz c19uZWVkc19mYWtld2FrZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8g b3BlcmF0aW9ucwogICoKICAqIFJldHVybnM6CiAgKiBOb24temVybyB3aGVuIGZvcmNld2FrZSBp bml0aWFsaXphdGlvbiBmYWlsZWQuCiAgKi8KLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVl ZHNfZmFrZXdha2Uodm9pZCkKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdh a2Uoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhKQogewotCXJldHVybiBtbWlvX2Rh dGEua2V5ID09IEZBS0VLRVk7CisJcmV0dXJuIG1taW9fZGF0YS0+a2V5ID09IEZBS0VLRVk7CiB9 CiAKIC8qKgogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmk6CisgKiBAbW1pb19kYXRhOiAg bW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAgKiBDbGVhbiB1cCB0aGUgcmVn aXN0ZXIgYWNjZXNzIGhlbHBlciBpbml0aWFsaXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdCgpLgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lk KQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1p b19kYXRhKQogewotCWlmIChtbWlvX2RhdGEua2V5ICYmIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19u ZWVkc193YWtlKCkpCi0JCXJlbGVhc2VfZm9yY2V3YWtlX2xvY2sobW1pb19kYXRhLmtleSk7Ci0J bW1pb19kYXRhLmluaXRlZC0tOworCWlmIChtbWlvX2RhdGEtPmtleSAmJiBpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfbmVlZHNfd2FrZShtbWlvX2RhdGEpKQorCQlyZWxlYXNlX2ZvcmNld2FrZV9sb2Nr KG1taW9fZGF0YS0+a2V5KTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9yZWFkOgorICog QG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiBy ZWdpc3RlciBvZmZzZXQKICAqCiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9m ZnNldC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwpAQCAtMjQyLDIwICsy NDEsMTggQEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKICAqIFRoZSB2YWx1ZSBy ZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50ZWxfcmVnaXN0ZXJfcmVh ZCh1aW50MzJfdCByZWcpCitpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9y YW5nZSAqcmFuZ2U7CiAJdWludDMyX3QgcmV0OwogCi0JaWd0X2Fzc2VydChtbWlvX2RhdGEuaW5p dGVkKTsKLQotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCi0JCWln dF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbihtbWlvX2RhdGEt PnBjaV9kZXZpY2VfaWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkgIT0gLTEp OwogCi0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2FmZSkKIAkJZ290 byByZWFkX291dDsKIAotCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0 YS5tYXAsCisJcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAs CiAJCQkJCSByZWcsCiAJCQkJCSBJTlRFTF9SQU5HRV9SRUFEKTsKIApAQCAtMjY2LDEzICsyNjMs MTQgQEAgaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCiAJfQogCiByZWFkX291dDoK LQlyZXQgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZyk7CisJ cmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKTsK IG91dDoKIAlyZXR1cm4gcmV0OwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgor ICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVn OiByZWdpc3RlciBvZmZzZXQKICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtMjgzLDE5 ICsyODEsMTcgQEAgb3V0OgogICogd2hpdGUgbGlzdHMuCiAgKi8KIHZvaWQKLWludGVsX3JlZ2lz dGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQoraW50ZWxfcmVnaXN0ZXJfd3Jp dGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCkKIHsKIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwogCi0JaWd0 X2Fzc2VydChtbWlvX2RhdGEuaW5pdGVkKTsKLQotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5 MTVfZGV2aWQpID49IDYpCi0JCWlndF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYg KGludGVsX2dlbihtbWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQpID49IDYpCisJCWlndF9hc3NlcnQo bW1pb19kYXRhLT5rZXkgIT0gLTEpOwogCi0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1t aW9fZGF0YS0+c2FmZSkKIAkJZ290byB3cml0ZV9vdXQ7CiAKLQlyYW5nZSA9IGludGVsX2dldF9y ZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEubWFwLAorCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVy X3JhbmdlKG1taW9fZGF0YS0+bWFwLAogCQkJCQkgcmVnLAogCQkJCQkgSU5URUxfUkFOR0VfV1JJ VEUpOwogCkBAIC0zMDMsNyArMjk5LDcgQEAgaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3Qg cmVnLCB1aW50MzJfdCB2YWwpCiAJCSAgICAgICJSZWdpc3RlciB3cml0ZSBibG9ja2VkIGZvciBz YWZldHkgIiIoKjB4JTA4eCA9IDB4JXgpXG4iLCByZWcsIHZhbCk7CiAKIHdyaXRlX291dDoKLQkq KHZvbGF0aWxlIHVpbnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7CisJKih2 b2xhdGlsZSB1aW50MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0K IAogLyoqCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYyBiL3Rlc3Rz L2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCmluZGV4IGU1NmQ2Mjc4Li45ZGRiMzQ4YyAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1f ZXhlY19sYXRlbmN5LmMKQEAgLTYxLDYgKzYxLDggQEAKIAogc3RhdGljIHVuc2lnbmVkIGludCBy aW5nX3NpemU7CiBzdGF0aWMgZG91YmxlIHJjc19jbG9jazsKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhIG1taW9fZGF0YTsKKwogCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwg dW5zaWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSkKQEAgLTY2Nyw3ICs2NjksNyBAQCBpZ3Rf bWFpbgogCQlpZiAocmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7CiAKLQkJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2Us IGRldmljZSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOwogCQlyY3NfY2xvY2sgPSBjbG9ja3Jh dGUoZGV2aWNlLCBSQ1NfVElNRVNUQU1QKTsKIAkJaWd0X2luZm8oIlJDUyB0aW1lc3RhbXAgY2xv Y2s6ICUuMGZLSHosICUuMWZuc1xuIiwKIAkJCSByY3NfY2xvY2sgLyAxZTMsIDFlOSAvIHJjc19j bG9jayk7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgYi90ZXN0cy9p OTE1L2dlbV9leGVjX3BhcnNlLmMKaW5kZXggNjJlOGQwYTUuLmViNGY0OGY1IDEwMDY0NAotLS0g YS90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19w YXJzZS5jCkBAIC01OCw2ICs1OCw5IEBACiAKIHN0YXRpYyBpbnQgcGFyc2VyX3ZlcnNpb247CiAK K3N0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOworCisKIHN0YXRpYyBpbnQgY29tbWFu ZF9wYXJzZXJfdmVyc2lvbihpbnQgZmQpCiB7CiAJaW50IHZlcnNpb24gPSAtMTsKQEAgLTI4NCw5 ICsyODcsOSBAQCB0ZXN0X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3Rf bHJpICp0ZXN0KQogCQkgIHRlc3QtPm5hbWUsIHRlc3QtPnJlZywgdGVzdC0+dGVzdF92YWwsCiAJ CSAgZXhwZWN0ZWRfZXJybm8sIGV4cGVjdCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZSh0ZXN0 LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRh LCB0ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKChpbnRl bF9yZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9y ZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgogCQkJICAgdGVzdC0+cmVhZF9t YXNrKSwKIAkJCSAgdGVzdC0+aW5pdF92YWwpOwogCkBAIC0yOTYsNyArMjk5LDcgQEAgdGVzdF9s cmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkKIAkJICAg ZXhwZWN0ZWRfZXJybm8pOwogCWdlbV9zeW5jKGZkLCBoYW5kbGUpOwogCi0JaWd0X2Fzc2VydF9l cV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQodGVzdC0+cmVnKSAmCisJaWd0X2Fzc2VydF9lcV91 MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgdGVzdC0+cmVnKSAmCiAJCQkgICB0 ZXN0LT5yZWFkX21hc2spLAogCQkJICBleHBlY3QpOwogfQpAQCAtNTMwLDcgKzUzMyw3IEBAIGln dF9tYWluCiAjdW5kZWYgUkVHCiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg ZmQpOwogCQl9CiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxyaXMpOyBpKysp IHsKQEAgLTU0Myw3ICs1NDYsNyBAQCBpZ3RfbWFpbgogCQl9CiAKIAkJaWd0X2ZpeHR1cmUgewot CQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCZtbWlvX2RhdGEpOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dl bV93b3JrYXJvdW5kcy5jIGIvdGVzdHMvaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwppbmRleCA4MWMz NTZmMC4uZGQ2MzE2ZWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMK KysrIGIvdGVzdHMvaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwpAQCAtMjI1LDYgKzIyNSw3IEBAIHN0 YXRpYyB2b2lkIGNoZWNrX3dvcmthcm91bmRzKGludCBmZCwgZW51bSBvcGVyYXRpb24gb3AsIHVu c2lnbmVkIGludCBmbGFncykKIAogaWd0X21haW4KIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh IG1taW9fZGF0YTsKIAlpbnQgZGV2aWNlID0gLTE7CiAJY29uc3Qgc3RydWN0IHsKIAkJY29uc3Qg Y2hhciAqbmFtZTsKQEAgLTI1Niw3ICsyNTcsNyBAQCBpZ3RfbWFpbgogCQlkZXZpY2UgPSBkcm1f b3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKIAkJaWd0X3JlcXVpcmVfZ2VtKGRldmljZSk7CiAK LQkJaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKKwkJaW50 ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsK IAogCQlnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChkZXZpY2UpKTsKIApkaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9s cHNwLmMKaW5kZXggYjMxOWRiZTkuLjQyOTM4ZTEwIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5 MTVfcG1fbHBzcC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKQEAgLTE4Nyw3ICsx ODcsNyBAQCBpbnQgZHJtX2ZkOwogdWludDMyX3QgZGV2aWQ7CiBkcm1Nb2RlUmVzUHRyIGRybV9y ZXM7CiBkcm1Nb2RlQ29ubmVjdG9yUHRyIGRybV9jb25uZWN0b3JzW01BWF9DT05ORUNUT1JTXTsK LQorc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiBpZ3RfbWFpbgogewogCWlndF9m aXh0dXJlIHsKQEAgLTIxMCw3ICsyMTAsNyBAQCBpZ3RfbWFpbgogCiAJCWlndF9yZXF1aXJlKHN1 cHBvcnRzX2xwc3AoZGV2aWQpKTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCBkcm1fZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkcm1fZmQpOwogCiAJ CWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKIAl9CkBAIC0yMjcsNyArMjI3LDcgQEAg aWd0X21haW4KIAlpZ3RfZml4dHVyZSB7CiAJCWludCBpOwogCi0JCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwog CQlmb3IgKGkgPSAwOyBpIDwgZHJtX3Jlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKQogCQkJZHJt TW9kZUZyZWVDb25uZWN0b3IoZHJtX2Nvbm5lY3RvcnNbaV0pOwogCQlkcm1Nb2RlRnJlZVJlc291 cmNlcyhkcm1fcmVzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyBiL3Rv b2xzL2ludGVsX2F1ZGlvX2R1bXAuYwppbmRleCA3MjZiYjRiNi4uNmQxMTY1OWUgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYworKysgYi90b29scy9pbnRlbF9hdWRpb19kdW1w LmMKQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIHVpbnQzMl90IGRldmlkOwogc3RhdGljIGludCBh dWRfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYXVkaW8gcmVnaXN0ZXJzICovCiBz dGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSBy ZWdpc3RlcnMgKi8KIAorCiAjZGVmaW5lIElTX0hBU1dFTExfUExVUyhkZXZpZCkgIChJU19IQVNX RUxMKGRldmlkKSB8fCBJU19CUk9BRFdFTEwoZGV2aWQpKQogCiAjZGVmaW5lIEJJVFNUTyhuKQkJ KG4gPj0gc2l6ZW9mKGxvbmcpICogOCA/IH4wIDogKDFVTCA8PCAobikpIC0gMSkKQEAgLTI0NjQs NiArMjQ2NSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYnJhc3dlbGwodm9pZCkKIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKKwlz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRf cGNpX2RldmljZSgpOwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOyAvKiBYWFggbm90IHRy dWUgd2hlbiBtYXBwaW5nISAqLwpAQCAtMjQ3MSw5ICsyNDczLDkgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCWRvX3NlbGZfdGVzdHMoKTsKIAogCWlmIChhcmdjID09IDIpCi0J CWludGVsX21taW9fdXNlX2R1bXBfZmlsZShhcmd2WzFdKTsKKwkJaW50ZWxfbW1pb191c2VfZHVt cF9maWxlKCZtbWlvX2RhdGEsIGFyZ3ZbMV0pOwogCWVsc2UKLQkJaW50ZWxfbW1pb191c2VfcGNp X2JhcihwY2lfZGV2KTsKKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBwY2lf ZGV2KTsKIAogCXByaW50ZigiJXMgYXVkaW8gcmVnaXN0ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2 aWNlX2luZm8oZGV2aWQpLT5jb2RlbmFtZSk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQpKSB7 CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9iYWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2ts aWdodC5jCmluZGV4IDA2N2ZkNDE4Li5lZGYwNjAyMiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf YmFja2xpZ2h0LmMKKysrIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKQEAgLTM4LDkgKzM4LDEw IEBACiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKKwlzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhIG1taW9fZGF0YTsKIAl1aW50MzJfdCBjdXJyZW50LCBtYXg7CiAKLQlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWludGVsX21taW9fdXNl X3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAljdXJyZW50 ID0gSU5SRUcoQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7CiAJ bWF4ID0gSU5SRUcoQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CmRpZmYgLS1naXQgYS90b29scy9p bnRlbF9kaXNwbGF5X3BvbGxlci5jIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwppbmRl eCA1MWY1YjlhNS4uZjQ3OTdhMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9s bGVyLmMKKysrIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwpAQCAtOTYyLDYgKzk2Miw3 IEBAIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkgdXNhZ2UoY29uc3QgY2hh ciAqbmFtZSkKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKKwlzdHJ1Y3Qg aW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgcGlwZSA9IDAsIGJpdCA9 IDAsIHRhcmdldF9zY2FubGluZSA9IDAsIHRhcmdldF9mdXp6ID0gMTsKIAlib29sIHRlc3RfcGl4 ZWxjb3VudCA9IGZhbHNlOwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJYnJlYWs7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KCZtbWlvX2RhdGEgLGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCXBy aW50ZigiJXM/XG4iLCB0ZXN0X25hbWUodGVzdCwgcGlwZSwgYml0LCB0ZXN0X3BpeGVsY291bnQp KTsKIApAQCAtMTI2Miw3ICsxMjYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJYXNzZXJ0KDApOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlpZiAocXVpdCkKIAkJ cmV0dXJuIDA7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9mb3JjZXdha2VkLmMgYi90b29scy9p bnRlbF9mb3JjZXdha2VkLmMKaW5kZXggMDJmYmY4ODguLjg3YjI2ZDQzIDEwMDY0NAotLS0gYS90 b29scy9pbnRlbF9mb3JjZXdha2VkLmMKKysrIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCkBA IC01NywxNCArNTcsMTUgQEAgaGVscChjaGFyICpwcm9nKSB7CiB9CiAKIHN0YXRpYyBpbnQKLWlz X2FsaXZlKHZvaWQpIHsKK2lzX2FsaXZlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSkgewogCS8qIFJlYWQgdGhlIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5 cyBiZSAhMCAqLwotCXJldHVybiAoaW50ZWxfcmVnaXN0ZXJfcmVhZCgweDIzNTgpICE9IDApOwor CXJldHVybiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIDB4MjM1OCkgIT0gMCk7CiB9 CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJaW50IHJldDsKKwlzdHJ1 Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCWlmIChhcmdjID4gMiB8fCAoYXJnYyA9 PSAyICYmICFzdHJuY21wKGFyZ3ZbMV0sICItaCIsIDIpKSkgewogCQloZWxwKGFyZ3ZbMV0pOwpA QCAtODAsNyArODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlJTkZP X1BSSU5UKCJzdGFydGVkIGRhZW1vbiIpOwogCX0KIAotCXJldCA9IGludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwlyZXQgPSBpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAx LCAtMSk7CiAJaWYgKHJldCkgewogCQlJTkZPX1BSSU5UKCJDb3VsZG4ndCBpbml0IHJlZ2lzdGVy IGFjY2Vzc1xuIik7CiAJCWV4aXQoMSk7CkBAIC04OCwxNiArODksMTYgQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJSU5GT19QUklOVCgiRm9yY2V3YWtlIGxvY2tlZFxuIik7 CiAJfQogCXdoaWxlKDEpIHsKLQkJaWYgKCFpc19hbGl2ZSgpKSB7CisJCWlmICghaXNfYWxpdmUo Jm1taW9fZGF0YSkpIHsKIAkJCUlORk9fUFJJTlQoImdwdSByZXNldD8gcmVzdGFydGluZyBkYWVt b25cbiIpOwotCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKLQkJCXJldCA9IGludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwkJ CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOworCQkJcmV0ID0gaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MSwgLTEpOwogCQkJaWYgKHJldCkKIAkJCQlJTkZPX1BSSU5UKCJSZWcgYWNjZXNzIGluaXQgZmFp bFxuIik7CiAJCX0KIAkJc2xlZXAoMSk7CiAJfQotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p KCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJSU5GT19QUklO VCgiRm9yY2V3YWtlIHVubG9ja1xuIik7CiAKIAlpZiAoZGFlbW9uaXplZCkgewpkaWZmIC0tZ2l0 IGEvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYyBiL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKaW5kZXgg NTZkNjVmZTAuLjExYmY3MzU0IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9ncHVfdGltZS5jCisr KyBiL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKQEAgLTY1LDkgKzY1LDEwIEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAl1aW50NjRfdCByaW5nX2lkbGUgPSAwLCByaW5nX3RpbWUg PSAwOwogCXN0cnVjdCB0aW1ldmFsIHN0YXJ0LCBlbmQ7CiAJc3RhdGljIHN0cnVjdCBydXNhZ2Ug cnVzYWdlOworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBzdGF0dXM7 CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWlu dGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7 CiAKIAlpZiAoYXJnYyA9PSAxKSB7CiAJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIGNtZCBb YXJncy4uLl1cbiIsIGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1l cy5jIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCmluZGV4IDJlZjVkNGZkLi5kNGJmNTI4YyAx MDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCisrKyBiL3Rvb2xzL2ludGVsX2lu Zm9mcmFtZXMuYwpAQCAtMjY0LDYgKzI2NCw3IEBAIGNvbnN0IGNoYXIgKmRpcF9mcmVxdWVuY3lf bmFtZXNbXSA9IHsKIAogc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXY7CiBpbnQgZ2VuID0gMDsK K3N0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiBzdGF0aWMgY29uc3QgY2hhciAq c3BkX3NvdXJjZV90b19zdHJpbmcoU291cmNlRGV2aWNlIHNvdXJjZSkKIHsKQEAgLTExMDgsNyAr MTEwOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICAgICAgICIgcGVy ZmVjdGx5OiB0aGUgS2VybmVsIG1pZ2h0IHVuZG8gb3VyIGNoYW5nZXMuXG4iKTsKIAogCXBjaV9k ZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KHBjaV9kZXYsIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LCBwY2lfZGV2LCAwLCAtMSk7CiAJaW50ZWxfY2hlY2tfcGNoKCk7CiAKIAlpZiAoSVNfR0VONChw Y2lfZGV2LT5kZXZpY2VfaWQpKQpAQCAtMTI1Niw2ICsxMjU3LDYgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiBy ZXQ7CiB9CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9sM19wYXJpdHkuYyBiL3Rvb2xzL2ludGVs X2wzX3Bhcml0eS5jCmluZGV4IDQxNzljNWFlLi4wNmExODVjOSAxMDA2NDQKLS0tIGEvdG9vbHMv aW50ZWxfbDNfcGFyaXR5LmMKKysrIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKQEAgLTE3Niw2 ICsxNzYsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogCiBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1p b19kYXRhOwogCWNvbnN0IGNoYXIgKnBhdGhbUkVBTF9NQVhfU0xJQ0VTXSA9IHsibDNfcGFyaXR5 IiwgImwzX3Bhcml0eV9zbGljZV8xIn07CiAJaW50IHJvdyA9IDAsIGJhbmsgPSAwLCBzYmFuayA9 IDA7CiAJaW50IGZkW1JFQUxfTUFYX1NMSUNFU10gPSB7MH0sIHJldCwgaTsKQEAgLTE4OSw3ICsx OTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWlmIChpbnRlbF9nZW4o ZGV2aWQpIDwgNyB8fCBJU19WQUxMRVlWSUVXKGRldmlkKSkKIAkJZXhpdCg3Nyk7CiAKLQlhc3Nl cnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg ZGV2aWNlKSA9PSAwKTsKKwlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9f ZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKIAogCWRpciA9 IGlndF9zeXNmc19vcGVuKGRldmljZSk7CiAKQEAgLTIxNyw3ICsyMTgsNyBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqIG5vdy4gSnVzdCBiZSBhd2FyZSBvZiB0aGlzIGlm IGZvciBzb21lIHJlYXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKIAkgKiB3aGVuIHVzaW5nIHRoaXMg dG9vbC4KIAkgKi8KLQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4YjAzOCk7CisJZGZ0ID0g aW50ZWxfcmVnaXN0ZXJfcmVhZCgmbW1pb19kYXRhLCAweGIwMzgpOwogCiAJd2hpbGUgKDEpIHsK IAkJaW50IGMsIG9wdGlvbl9pbmRleCA9IDA7CkBAIC0zNjYsMTAgKzM2NywxMCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCWFzc2VydChpIDwgMik7CiAJCQkJZGZ0IHw9 IGkgPDwgMTsgLyogc2xpY2UgKi8KIAkJCQlkZnQgfD0gMSA8PCAwOyAvKiBlbmFibGUgKi8KLQkJ CQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgweGIwMzgsIGRmdCk7CisJCQkJaW50ZWxfcmVnaXN0ZXJf d3JpdGUoJm1taW9fZGF0YSwgMHhiMDM4LCBkZnQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndSc6 Ci0JCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQgJiB+KDE8PDApKTsKKwkJCQlp bnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhICwweGIwMzgsIGRmdCAmIH4oMTw8MCkpOwog CQkJCWJyZWFrOwogCQkJY2FzZSAnTCc6CiAJCQkJYnJlYWs7CkBAIC0zNzgsNyArMzc5LDcgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0 YSk7CiAJaWYgKGFjdGlvbiA9PSAnbCcpCiAJCWV4aXQoRVhJVF9TVUNDRVNTKTsKIApkaWZmIC0t Z2l0IGEvdG9vbHMvaW50ZWxfbGlkLmMgYi90b29scy9pbnRlbF9saWQuYwppbmRleCAzN2M2YmE1 ZS4uMmExZDk4MDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2xpZC5jCisrKyBiL3Rvb2xzL2lu dGVsX2xpZC5jCkBAIC0xMTcsOSArMTE3LDEwIEBAIG91dDoKIAogaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWlu dCBzd2YxNCwgYWNwaV9saWQ7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9w Y2lfZGV2aWNlKCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSk7CiAKIAl3aGlsZSAoMSkgewogCQlzd2YxNCA9IElOUkVHKFNXRjE0 KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9vbHMvaW50ZWxf cGFuZWxfZml0dGVyLmMKaW5kZXggMTM3ZWY2MWEuLjY0MDc4NzA1IDEwMDY0NAotLS0gYS90b29s cy9pbnRlbF9wYW5lbF9maXR0ZXIuYworKysgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwpA QCAtMjczLDYgKzI3Myw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJv b2wgZG9fZGlzYWJsZSA9IGZhbHNlLCBkb19kdW1wID0gZmFsc2UsIGRvX3VzYWdlID0gZmFsc2U7 CiAJc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXY7CiAJdWludDMyX3QgZGV2aWQ7CisJc3RydWN0 IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiAKIAlwcmludGYoIldBUk5JTkc6XG4iCiAJICAg ICAgICJUaGlzIHRvb2wgaXMgYSB3b3JrYXJvdW5kIGZvciBwZW9wbGUgdGhhdCBkb24ndCBoYXZl IGEgS2VybmVsICIKQEAgLTI4MCw3ICsyODEsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgICAgICAgInNvbHV0aW9uIHRoYXQgbWF5IG9yIG1heSBub3Qgd29yay4gVXNl IGl0IGF0IHlvdXIgb3duIHJpc2suXG4iKTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpOwotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xKTsKKwlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2LCAwLCAtMSk7CiAJ ZGV2aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7CiAKIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2aWQp KSB7CkBAIC0zNDIsNiArMzQzLDYgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJfQogCiBvdXQ6Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0 IGEvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVy cy5jCmluZGV4IDUwYzRiY2U2Li41ODI0ZDljMSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcGVy Zl9jb3VudGVycy5jCisrKyBiL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYwpAQCAtNDQxLDYg KzQ0MSw3IEBAIGdlbjdfZ2V0X2NvdW50ZXJzKHZvaWQpCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCXVpbnQz Ml90IGRldmlkOwogCWludCBjb3VudGVyX2Zvcm1hdDsKIAlpbnQgY291bnRlcl9jb3VudDsKQEAg LTQ4MywxMCArNDg0LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9h Y29udHJvbCkgewogCQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLAorCQkJCTAsIGZkKTsK IAogCQkvKiBFbmFibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxfcmVnaXN0ZXJf d3JpdGUoT0FDT05UUk9MLAorCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCBPQUNP TlRST0wsCiAJCQljb3VudGVyX2Zvcm1hdCA8PCBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJ RlQgfAogCQkJUEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwogCX0KQEAgLTUyMCwxMCArNTIy LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkgewog CQkvKiBEaXNhYmxlIHBlcmZvcm1hbmNlIGNvdW50ZXJzICovCi0JCWludGVsX3JlZ2lzdGVyX3dy aXRlKE9BQ09OVFJPTCwgMCk7CisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIE9B Q09OVFJPTCwgMCk7CiAKIAkJLyogRm9yY2V3YWtlICovCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCX0K IAogCWZyZWUodG90YWxzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZy5jIGIvdG9vbHMv aW50ZWxfcmVnLmMKaW5kZXggZTUxNzk1NmIuLjg0N2ZkYmVkIDEwMDY0NAotLS0gYS90b29scy9p bnRlbF9yZWcuYworKysgYi90b29scy9pbnRlbF9yZWcuYwpAQCAtNTcsNiArNTcsNyBAQCBzdGF0 aWMgaW5saW5lIGludCBfbm90X3N1cHBvcnRlZCh2b2lkKQogCiBzdHJ1Y3QgY29uZmlnIHsKIAlz dHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9f ZGF0YTsKIAljaGFyICptbWlvZmlsZTsKIAl1aW50MzJfdCBkZXZpZDsKIApAQCAtMzg3LDcgKzM4 OCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0 cnVjdCByZWcgKnJlZywgdWludDMyX3QgKnZhbHApCiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7 CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJdmFsID0gaW50ZWxfaW9zZl9zYl9yZWFkKHJlZy0+cG9y dF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7CisJCXZhbCA9IGludGVsX2lvc2Zfc2JfcmVhZCgmY29u ZmlnLT5tbWlvX2RhdGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7CiAJCWJyZWFr OwogCWRlZmF1bHQ6CiAJCWZwcmludGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4i LCByZWctPnBvcnRfZGVzYy5wb3J0KTsKQEAgLTQ1OCw3ICs0NTksNyBAQCBzdGF0aWMgaW50IHdy aXRlX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50 MzJfdCB2YWwpCiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0K LQkJaW50ZWxfaW9zZl9zYl93cml0ZShyZWctPnBvcnRfZGVzYy5wb3J0LCByZWctPmFkZHIsIHZh bCk7CisJCWludGVsX2lvc2Zfc2Jfd3JpdGUoJmNvbmZpZy0+bW1pb19kYXRhLCByZWctPnBvcnRf ZGVzYy5wb3J0LCByZWctPmFkZHIsIHZhbCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmlu dGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0 KTsKQEAgLTU1Miw5ICs1NTMsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBj b25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIAlpZiAoY29uZmln LT5tbWlvZmlsZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUp OworCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWct Pm1taW9maWxlKTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+ cGNpX2RldiwgMCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmlnLT5t bWlvX2RhdGEsIGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMTsgaSA8IGFy Z2M7IGkrKykgewogCQlzdHJ1Y3QgcmVnIHJlZzsKQEAgLTU3MCw3ICs1NzEsNyBAQCBzdGF0aWMg aW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJmNvbmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBF WElUX1NVQ0NFU1M7CiB9CkBAIC01ODQsNyArNTg1LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdf d3JpdGUoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQly ZXR1cm4gRVhJVF9GQUlMVVJFOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNv bmZpZy0+cGNpX2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZjb25m aWctPm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAxOyBp IDwgYXJnYzsgaSArPSAyKSB7CiAJCXN0cnVjdCByZWcgcmVnOwpAQCAtNjA5LDcgKzYxMCw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJd3JpdGVfcmVnaXN0ZXIoY29uZmlnLCAmcmVnLCB2YWwpOwog CX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoJmNvbmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9 CkBAIC02MjAsOSArNjIxLDkgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1Y3QgY29u ZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW50IGk7CiAKIAlpZiAoY29u ZmlnLT5tbWlvZmlsZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2Zp bGUpOworCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25m aWctPm1taW9maWxlKTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZp Zy0+cGNpX2RldiwgMCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmln LT5tbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMDsgaSA8 IGNvbmZpZy0+cmVnY291bnQ7IGkrKykgewogCQlyZWcgPSAmY29uZmlnLT5yZWdzW2ldOwpAQCAt NjM0LDcgKzYzNSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0IGNvbmZpZyAq Y29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlkdW1wX3JlZ2lzdGVyKGNvbmZpZywg JmNvbmZpZy0+cmVnc1tpXSk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0 dXJuIEVYSVRfU1VDQ0VTUzsKIH0KQEAgLTY0OCw3ICs2NDksNyBAQCBzdGF0aWMgaW50IGludGVs X3JlZ19zbmFwc2hvdChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfbW1pb191c2VfcGNpX2Jh cihjb25maWctPnBjaV9kZXYpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJmNvbmZpZy0+bW1p b19kYXRhLCBjb25maWctPnBjaV9kZXYpOwogCiAJLyogWFhYOiBlcnJvciBoYW5kbGluZyAqLwog CWlmICh3cml0ZSgxLCBpZ3RfZ2xvYmFsX21taW8sIGNvbmZpZy0+cGNpX2Rldi0+cmVnaW9uc1tt bWlvX2Jhcl0uc2l6ZSkgPT0gLTEpCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hlY2tl ci5jIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwppbmRleCA2YmRlNjNlYy4uM2Y5MGRlODIg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMKKysrIGIvdG9vbHMvaW50ZWxf cmVnX2NoZWNrZXIuYwpAQCAtMzQyLDEwICszNDIsMTEgQEAgY2hlY2tfZHBmY19jb250cm9sX3Nh KHZvaWQpCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAJc3RydWN0IHBjaV9k ZXZpY2UgKmRldjsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCWRldiA9 IGludGVsX2dldF9wY2lfZGV2aWNlKCk7CiAJZGV2aWQgPSBkZXYtPmRldmljZV9pZDsKLQlpbnRl bF9tbWlvX3VzZV9wY2lfYmFyKGRldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19k YXRhLCBkZXYpOwogCiAJaWYgKElTX0dFTjcoZGV2aWQpKQogCQlnZW4gPSA3OwpkaWZmIC0tZ2l0 IGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRlbF93YXRlcm1hcmsuYwppbmRl eCBlNzFjM2Q5Yy4uMTRkMWFlMGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3dhdGVybWFyay5j CisrKyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCkBAIC0yMzcsNiArMjM3LDcgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKnNrbF9udjEyX2J1Zl9jZmdfcmVnX25hbWUoaW50IHBpcGUsIGludCBwbGFu ZSkKIAogc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhIG1taW9fZGF0YTsKIAlpbnQgcGlwZSwgcGxhbmUsIGxldmVsOwogCWludCBudW1fcGlw ZXMgPSAzOwogCWludCBtYXhfcGxhbmVzID0gc2tsX21heF9wbGFuZXMoZGV2aWQpOwpAQCAtMjQ5 LDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHNrbF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgcGxh bmVfY3RsW251bV9waXBlc11bbWF4X3BsYW5lc107CiAJdWludDMyX3Qgd21fbGluZXRpbWVbbnVt X3BpcGVzXTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBp bnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwg bnVtX3BpcGVzOyBwaXBlKyspIHsKIAkJaW50IG51bV9wbGFuZXMgPSBza2xfbnVtX3BsYW5lcyhk ZXZpZCwgcGlwZSk7CkBAIC00NTgsNiArNDU5LDcgQEAgc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAo dm9pZCkKIAogc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1aW50MzJfdCBkc3BjbnRyWzNdOwogCXVp bnQzMl90IHNwY250clszXTsKQEAgLTQ2OSw3ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21f ZHVtcCh2b2lkKQogCWludCBudW1fcGlwZXMgPSBpbnRlbF9nZW4oZGV2aWQpID49IDcgPyAzIDog MjsKIAlzdHJ1Y3QgaWxrX3dtIHdtID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZm9y IChpID0gMDsgaSA8IG51bV9waXBlczsgaSsrKSB7CiAJCWRzcGNudHJbaV0gPSByZWFkX3JlZygw eDcwMTgwICsgaSAqIDB4MTAwMCk7CkBAIC01MDUsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaWxr X3dtX2R1bXAodm9pZCkKIAlpZiAoSVNfQlJPQURXRUxMKGRldmlkKSB8fCBJU19IQVNXRUxMKGRl dmlkKSkKIAkJd21fbWlzYyA9IHJlYWRfcmVnKDB4NDUyNjApOwogCi0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsK IAogCWZvciAoaSA9IDA7IGkgPCBudW1fcGlwZXM7IGkrKykKIAkJcHJpbnRmKCIgICAgV01fUElQ RV8lYyA9IDB4JTA4eFxuIiwgcGlwZV9uYW1lKGkpLCB3bV9waXBlW2ldKTsKQEAgLTYxMCw2ICs2 MTIsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCB2bHZf d21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWlu dCBpOwogCXVuc2lnbmVkIGludCBudW1fcGlwZXMgPSBJU19DSEVSUllWSUVXKGRldmlkKSA/IDMg OiAyOwogCXVpbnQzMl90IGRzcGFyYiwgZHNwYXJiMiwgZHNwYXJiMzsKQEAgLTYxOSw3ICs2MjIs NyBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGRzcF9zc19wbSwg ZGRyX3NldHVwMjsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWRzcGFyYjIg PSByZWFkX3JlZygweDcwMDYwKTsKQEAgLTY1MCwxMyArNjUzLDEzIEBAIHN0YXRpYyB2b2lkIHZs dl93bV9kdW1wKHZvaWQpCiAKIAkJZGRsMyA9IHJlYWRfcmVnKDB4NzAwNTgpOwogCi0JCWludGVs X3B1bml0X3JlYWQoMHgzNiwgJmRzcF9zc19wbSk7Ci0JCWludGVsX3B1bml0X3JlYWQoMHgxMzks ICZkZHJfc2V0dXAyKTsKKwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDM2LCAmZHNw X3NzX3BtKTsKKwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDEzOSwgJmRkcl9zZXR1 cDIpOwogCX0gZWxzZSB7CiAJCWZ3NyA9IHJlYWRfcmVnKDB4NzAwN2MpOwogCX0KIAotCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEpOwogCXBy aW50ZigiICAgICAgICBGVzIgPSAweCUwOHhcbiIsIGZ3Mik7CkBAIC04MjcsNiArODMwLDcgQEAg c3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAo dm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1 aW50MzJfdCBkc3BhY250ciwgZHNwYmNudHI7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtODM1LDcg KzgzOSw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfYXJi X3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgMCwgLTEpOwogCiAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKIAlkc3BiY250ciA9 IHJlYWRfcmVnKDB4NzExODApOwpAQCAtODQ2LDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIGc0eF93 bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsK IAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAog CXByaW50ZigiICAgICAgICAgICAgIERTUEFDTlRSID0gMHglMDh4XG4iLCBkc3BhY250cik7CiAJ cHJpbnRmKCIgICAgICAgICAgICAgRFNQQkNOVFIgPSAweCUwOHhcbiIsIGRzcGJjbnRyKTsKQEAg LTkxMyw2ICs5MTcsNyBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMg dm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9f ZGF0YTsKIAlpbnQgaTsKIAlpbnQgdG90YWxzaXplID0gSVNfQ1JFU1RMSU5FKGRldmlkKSA/IDEy OCA6IDk2OwogCXVpbnQzMl90IGRzcGFyYjsKQEAgLTkyMSw3ICs5MjYsNyBAQCBzdGF0aWMgdm9p ZCBnZW40X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdt Y2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3Bh cmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTkz MCw3ICs5MzUsNyBAQCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5 X3Bvd2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVn KDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICAg ICBGVzEgPSAweCUwOHhcbiIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIg PSAweCUwOHhcbiIsIGZ3Mik7CkBAIC05ODMsNiArOTg4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNF93 bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0 IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9IDk2 OyAvKiBGSVhNRT8gKi8KIAl1aW50MzJfdCBkc3BhcmI7CkBAIC05OTIsNyArOTk4LDcgQEAgc3Rh dGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBjYnI7CiAJc3RydWN0IGdtY2hf d20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIg PSByZWFkX3JlZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTEwMDIs NyArMTAwOCw3IEBAIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9w b3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygw eDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICAgICAgICAgRFNQ QVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcx ID0gMHglMDh4XG4iLCBmdzEpOwpAQCAtMTA3Myw2ICsxMDc5LDcgQEAgc3RhdGljIHZvaWQgcG52 X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiB7CisJc3Ry dWN0IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9 IElTXzk0NUdNKGRldmlkKSA/IDEyOCA6IDk2OyAvKiBGSVhNRT8gKi8KIAl1aW50MzJfdCBkc3Bh cmI7CkBAIC0xMDgyLDcgKzEwODksNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkK IAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0g PSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNl KCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMw KTsKIAlpbnN0cG0gPSByZWFkX3JlZygweDIwYzApOwpAQCAtMTA5MCw3ICsxMDk3LDcgQEAgc3Rh dGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIw ZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEp OwogCiAJcHJpbnRmKCIgICAgICBEU1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRm KCIgICAgICBGV19CTEMgPSAweCUwMTYiIFBSSXg2NCAiXG4iLCBmd19ibGMpOwpAQCAtMTE0Miw2 ICsxMTQ5LDcgQEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lk IGdlbjJfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRh OwogCWludCBpOwogCWludCB0b3RhbHNpemU7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtMTE1MSw3 ICsxMTU5LDcgQEAgc3RhdGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlf c3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAltZW1fbW9kZSA9IHJl YWRfcmVnKDB4MjBjYyk7CkBAIC0xMTU5LDcgKzExNjcsNyBAQCBzdGF0aWMgdm9pZCBnZW4yX3dt X2R1bXAodm9pZCkKIAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfc3RhdGUg PSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICBE U1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICBNRU1fTU9ERSA9IDB4JTA4 eFxuIiwgbWVtX21vZGUpOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=