From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1FB7C6E0E2 for ; Thu, 29 Aug 2019 13:10:55 +0000 (UTC) From: Daniel Mrzyglod Date: Thu, 29 Aug 2019 15:10:37 +0200 Message-Id: <20190829131037.25967-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190829131037.25967-1-daniel.t.mrzyglod@intel.com> References: <20190829131037.25967-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v12 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 IC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCBmMGFjZTdmNC4u Y2FiMWZmN2YgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5o 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 IHVpbnQzMl90IHJlZyk7CkBAIC03MywxNyArOTgsMjQgQEAgX19PVVRSRUcoOCw4KQogI3VuZGVm IF9fT1VUUkVHCiAKIC8qIHNpZGViYW5kIGFjY2VzcyBmdW5jdGlvbnMgZnJvbSBpbnRlbF9pb3Nm LmMgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5 KTsKLXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWws IGludCBwaHkpOwotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCByZWcp Owotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZh bCk7Ci11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3Qg cmVnKTsKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCBy ZWcsIHVpbnQzMl90IHZhbCk7Ci0KLWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIs IHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFkZHIsIHVp bnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAq dmFsKTsKLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwor dWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgaW50IHBoeSk7Cit2b2lkIGludGVsX2RwaW9f cmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVn LAorCQkJICB1aW50MzJfdCB2YWwsIGludCBwaHkpOwordWludDMyX3QgaW50ZWxfZmxpc2RzaV9y ZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7 Cit2b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAgICB1aW50MzJfdCB2YWwpOwordWludDMyX3Qg aW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWlu dDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9pb3NmX3NiX3dy aXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJ CSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CisKK2ludCBpbnRlbF9wdW5pdF9yZWFkKHN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKKwkJICAgICB1 aW50MzJfdCAqdmFsKTsKK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19k YXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgIHVpbnQzMl90IHZhbCk7Citp bnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBpbnRl bF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKIAog LyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAuYyAqLwogI2lmbmRlZiBfX0dUS19E T0NfSUdOT1JFX18KQEAgLTk0LDE3ICsxMjYsNiBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodWludDMy X3QgYWRkciwgdWludDMyX3QgdmFsKTsKICNkZWZpbmUgSU5URUxfUkFOR0VfUlcJCShJTlRFTF9S QU5HRV9SRUFEIHwgSU5URUxfUkFOR0VfV1JJVEUpCiAjZGVmaW5lIElOVEVMX1JBTkdFX0VORAkJ KDE8PDMxKQogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgewotCXVpbnQzMl90IGJhc2U7 Ci0JdWludDMyX3Qgc2l6ZTsKLQl1aW50MzJfdCBmbGFnczsKLX07Ci0KLXN0cnVjdCBpbnRlbF9y ZWdpc3Rlcl9tYXAgewotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqbWFwOwotCXVpbnQz Ml90IHRvcDsKLQl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKLX07CiBzdHJ1Y3QgaW50ZWxfcmVn aXN0ZXJfbWFwIGludGVsX2dldF9yZWdpc3Rlcl9tYXAodWludDMyX3QgZGV2aWQpOwogc3RydWN0 IGludGVsX3JlZ2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2Uoc3RydWN0IGlu dGVsX3JlZ2lzdGVyX21hcCBtYXAsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbW9kZSk7CiAj ZW5kaWYgLyogX19HVEtfRE9DX0lHTk9SRV9fICovCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW9z Zi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAzYjVhMTM3MC4uMTY4NjJlZjQgMTAwNjQ0Ci0t LSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGliL2ludGVsX2lvc2YuYwpAQCAtMTksOCArMTks OCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91YmxlLXdvcmQgYWRkcmVzc2luZywg bm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldSREFfTlAgICAweDA3CiAKLXN0YXRpYyBpbnQg dmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBh ZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgIHVp bnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewogCWludCB0aW1l b3V0ID0gMDsKIAl1aW50MzJfdCBjbWQsIGRldmZuLCBiZSwgYmFyOwpAQCAtMzQsMjIgKzM0LDI0 IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bj b2RlLCB1aW50MzJfdCBhZGRyLAogCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJRlQpIHwgKGJlIDw8 IElPU0ZfQllURV9FTkFCTEVTX1NISUZUKSB8CiAJCShiYXIgPDwgSU9TRl9CQVJfU0hJRlQpOwog Ci0JaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0Zf U0JfQlVTWSkgeworCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YSwgVkxWX0lPU0Zf RE9PUkJFTExfUkVRKSAmCisJICAgIElPU0ZfU0JfQlVTWSkgewogCQlpZ3Rfd2Fybigid2Fybmlu ZzogcGNvZGUgKCVzKSBtYWlsYm94IGFjY2VzcyBmYWlsZWRcbiIsIGlzX3JlYWQgPyAicmVhZCIg OiAid3JpdGUiKTsKIAkJcmV0dXJuIC1FQUdBSU47CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfd3Jp dGUoVkxWX0lPU0ZfQUREUiwgYWRkcik7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRh LCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKIAlpZiAoIWlzX3JlYWQpCi0JCWludGVsX3JlZ2lzdGVy X3dyaXRlKFZMVl9JT1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlv X2RhdGEsIFZMVl9JT1NGX0RBVEEsICp2YWwpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxW X0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0 YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwogCiAJZG8gewogCQl1c2xlZXAoMSk7CiAJ CXRpbWVvdXQrKzsKLQl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NGX0RPT1JC RUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kgJiYKLQkJIHRpbWVvdXQgPCBUSU1FT1VUX1VTKTsKKwl9 IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21taW8sCisJCQkJICAg ICBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwkJSU9TRl9TQl9CVVNZICYmIHRpbWVvdXQgPCBU SU1FT1VUX1VTKTsKIAogCWlmICh0aW1lb3V0ID49IFRJTUVPVVRfVVMpIHsKIAkJaWd0X3dhcm4o InRpbWVvdXQgd2FpdGluZyBmb3IgcGNvZGUgJXMgKCVkKSB0byBmaW5pc2hcbiIsIGlzX3JlYWQg PyAicmVhZCIgOiAid3JpdGUiLCBhZGRyKTsKQEAgLTU3LDggKzU5LDggQEAgc3RhdGljIGludCB2 bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFk ZHIsCiAJfQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKFZM Vl9JT1NGX0RBVEEpOwotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsIDApOwor CQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9tbWlvLCBWTFZfSU9T Rl9EQVRBKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEtPmlndF9tbWlvLCBWTFZf SU9TRl9EQVRBLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzMsOSArNzUsMTAgQEAgc3RhdGlj IGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQz Ml90IGFkZHIsCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3Vj Y2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9w dW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfcHVuaXRf cmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVp bnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfUFVOSVQs IFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9f ZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFs KTsKIH0KIAogLyoqCkBAIC04OCw5ICs5MSwxMCBAQCBpbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50 MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVn aXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgog ICovCi1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQor aW50IGludGVsX3B1bml0X3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotCXJldHVybiB2bHZfc2lkZWJhbmRfcnco SU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOworCXJldHVybiB2bHZf c2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSV1JEQV9OUCwgYWRk ciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoqCkBAIC0xMDMsOSArMTA3LDEwIEBAIGludCBp bnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBSZXR1cm5z OgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJu byBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIs IHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZs dl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwly ZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX05DLCBTQl9DUlJEREFf TlAsIGFkZHIsCisJCQkgICAgICAgdmFsKTsKIH0KIAogLyoqCkBAIC0xMTgsOSArMTIzLDEwIEBA IGludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiAgKiBSZXR1 cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBl cnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCB2YWwpCitpbnQgaW50ZWxfbmNfd3JpdGUoc3RydWN0IGludGVsX21taW9f ZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0JcmV0dXJu IHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9OUCwgYWRkciwgJnZhbCk7 CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JX UkRBX05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwpOwogfQogCiAvKioKQEAgLTEzMywxNCArMTM5 LDE2IEBAIGludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAg KiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVp bnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQordWludDMy X3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IHJlZywgaW50IHBoeSkKIHsKIAl1aW50MzJfdCB2YWw7CiAKIAlpZiAocGh5ID09 IDApCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVJEX05QLCByZWcsICZ2 YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywgU0JfTVJE X05QLCByZWcsCisJCQkJJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JU X0RQSU9fMiwgU0JfTVJEX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19k YXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywKKwkJCQkmdmFsKTsKIAlyZXR1 cm4gdmFsOwogfQogCkBAIC0xNTIsMzggKzE2MCw0MCBAQCB1aW50MzJfdCBpbnRlbF9kcGlvX3Jl Z19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKICAqCiAgKiAzMi1iaXQgd3JpdGUgb2YgdGhl IHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJTyBzaWRlYmFuZCBwb3J0LgogICov Ci12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBp bnQgcGh5KQordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KQogewogCWlm IChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAs IHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElP LCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lkZWJhbmRfcncoSU9TRl9Q T1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1p b19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywKKwkJCQkmdmFsKTsKIH0K IAotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCByZWcpCit1aW50MzJf dCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZfc2lkZWJhbmRf cncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lk ZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05QLCByZWcs ICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0 ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3Jp dGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JE QV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRf RkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQogCi11aW50MzJfdCBpbnRlbF9p b3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQordWludDMyX3QgaW50ZWxf aW9zZl9zYl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3Qg cG9ydCwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbDsKIAotCXZsdl9zaWRlYmFuZF9y dyhwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9f ZGF0YSwgcG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0K IAotdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZywg dWludDMyX3QgdmFsKQordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBpbnRlbF9tbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2 YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVn LCAmdmFsKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9tbWlvLmMgYi9saWIvaW50ZWxfbW1p by5jCmluZGV4IDgyMDQxYTQyLi40NzU4YjlmMCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX21taW8u YworKysgYi9saWIvaW50ZWxfbW1pby5jCkBAIC03MCw1NyArNzAsNTcgQEAKICAqCiAgKiBQb2lu dGVyIHRvIHRoZSByZWdpc3RlciByYW5nZSwgaW5pdGlhbGl6ZWQgdXNpbmcgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoKQogICogb3IgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCkuIEl0IGlz IG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBkaXJlY3RseS4KKyAqIFRoaXMgcG9pbnRlciBp cyB2YWxpZCBvbmx5IGZvciBvbmUgZHJtIGRldmljZS4KICAqLwogdm9pZCAqaWd0X2dsb2JhbF9t bWlvOwogCi1zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgewotCWludCBpbml0ZWQ7Ci0JYm9vbCBz YWZlOwotCXVpbnQzMl90IGk5MTVfZGV2aWQ7Ci0Jc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBt YXA7Ci0JaW50IGtleTsKLX0gbW1pb19kYXRhOwotCiAvKioKICAqIGludGVsX21taW9fdXNlX2R1 bXBfZmlsZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9u cwogICogQGZpbGU6IG5hbWUgb2YgdGhlIHJlZ2lzdGVyIGR1bXAgZmlsZSB0byBvcGVuCiAgKgot ICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRhaW5l ZCBpbiBAZmlsZS4gVGhpcyBhbGxvd3MKLSAqIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJldXNlZCBm b3IgZHVtcGluZyBhbmQgZGVjb2RpbmcgZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzCi0gKiBmcm9t IHJlZ2lzdGVyIGR1bXBzLgorICogU2V0cyBhbHNvIHVwIG1taW9fZGF0YS0+aWd0X21taW8gdG8g cG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkCisgKiBpbiBAZmlsZS4gVGhpcyBhbGxvd3MgdGhl IHNhbWUgY29kZSB0byBnZXQgcmV1c2VkIGZvciBkdW1waW5nIGFuZCBkZWNvZGluZworICogZnJv bSBydW5uaW5nIGhhcmR3YXJlIGFzIGZyb20gcmVnaXN0ZXIgZHVtcHMuCiAgKi8KIHZvaWQKLWlu dGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQoraW50ZWxfbW1pb191c2VfZHVtcF9m aWxlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgY2hhciAqZmlsZSkKIHsKIAlp bnQgZmQ7CiAJc3RydWN0IHN0YXQgc3Q7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yo c3RydWN0IGludGVsX21taW9fZGF0YSkpOwogCWZkID0gb3BlbihmaWxlLCBPX1JEV1IpOwogCWln dF9mYWlsX29uX2YoZmQgPT0gLTEsCiAJCSAgICAgICJDb3VsZG4ndCBvcGVuICVzXG4iLCBmaWxl KTsKIAogCWZzdGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVMTCwgc3Qu c3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0JaWd0 X2ZhaWxfb25fZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwltbWlvX2RhdGEtPmln dF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQ X1BSSVZBVEUsIGZkLCAwKTsKKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+aWd0X21taW8gPT0g TUFQX0ZBSUxFRCwKIAkJICAgICAgIkNvdWxkbid0IG1tYXAgJXNcbiIsIGZpbGUpOworCisJaWd0 X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLT5pZ3RfbW1pbzsKKwogCWNsb3NlKGZkKTsKIH0KIAog LyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgorICogQG1taW9fZGF0YTogIG1taW8gc3Ry dWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhY3BoaXMgcGNp IGRldmljZQogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBhdCB0aGUg bW1pbyBiYXIuCisgKiBGaWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGggaWd0X21taW8gdG8g cG9pbnQgYXQgdGhlIG1taW8gYmFyLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBm cm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCiAgKi8KIHZvaWQKLWludGVsX21taW9fdXNlX3Bj aV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCitpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgc3RydWN0IHBjaV9kZXZpY2UgKnBj aV9kZXYpCiB7CiAJdWludDMyX3QgZGV2aWQsIGdlbjsKIAlpbnQgbW1pb19iYXIsIG1taW9fc2l6 ZTsKIAlpbnQgZXJyb3I7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yoc3RydWN0IGlu dGVsX21taW9fZGF0YSkpOwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwogCWlmIChJU19H RU4yKGRldmlkKSkKIAkJbW1pb19iYXIgPSAxOwpAQCAtMTM5LDcgKzEzOSw5IEBAIGludGVsX21t aW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCiAJCQkJICAgICAgcGNp X2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0uYmFzZV9hZGRyLAogCQkJCSAgICAgIG1taW9fc2l6ZSwK IAkJCQkgICAgICBQQ0lfREVWX01BUF9GTEFHX1dSSVRBQkxFLAotCQkJCSAgICAgICZpZ3RfZ2xv YmFsX21taW8pOworCQkJCSAgICAgICZtbWlvX2RhdGEtPmlndF9tbWlvKTsKKworCWlndF9nbG9i YWxfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21taW87CiAKIAlpZ3RfZmFpbF9vbl9mKGVycm9yICE9 IDAsCiAJCSAgICAgICJDb3VsZG4ndCBtYXAgTU1JTyByZWdpb25cbiIpOwpAQCAtMTUzLDYgKzE1 NSw3IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQogCiAvKioKICAqIGludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0OgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJ TyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhcGhpY3MgcGNpIGRldmljZQogICog QHNhZmU6IHVzZSBzYWZlIHJlZ2lzdGVyIGFjY2VzcyB0YWJsZXMKICAqCkBAIC0xNjAsNzYgKzE2 Myw3MiBAQCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBmZCkKICAqIGhhbmRsaW5nIGFuZCBh bHNvIGFsbG93cyByZWdpc3RlciBhY2Nlc3MgdG8gYmUgY2hlY2tlZCB3aXRoIGFuIGV4cGxpY2l0 CiAgKiB3aGl0ZWxpc3QuCiAgKgotICogSXQgYWxzbyBpbml0aWFsaXplcyAjaWd0X2dsb2JhbF9t bWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2JhcigpLgorICogSXQgYWxzbyBpbml0aWFsaXpl cyBtbWlvX2RhdGEtPmlndF9tbWlvIGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2JhcigpLgogICoK ICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCku CiAgKi8KIGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2Ug KnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2LCBpbnQgc2FmZSwgaW50IGZkKQogewogCWludCByZXQ7CiAKLQkvKiBhZnRlciBvbGQgQVBJ IGlzIGRlcHJlY2F0ZWQsIHJlbW92ZSB0aGlzICovCi0JaWYgKGlndF9nbG9iYWxfbW1pbyA9PSBO VUxMKQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCWludGVsX21taW9fdXNl X3BjaV9iYXIobW1pb19kYXRhLCBwY2lfZGV2KTsKIAotCWlndF9hc3NlcnQoaWd0X2dsb2JhbF9t bWlvICE9IE5VTEwpOworCWlndF9hc3NlcnQobW1pb19kYXRhLT5pZ3RfbW1pbyAhPSBOVUxMKTsK IAotCWlmIChtbWlvX2RhdGEuaW5pdGVkKQotCQlyZXR1cm4gLTE7Ci0KLQltbWlvX2RhdGEuc2Fm ZSA9IChzYWZlICE9IDAgJiYKKwltbWlvX2RhdGEtPnNhZmUgPSAoc2FmZSAhPSAwICYmCiAJCQlp bnRlbF9nZW4ocGNpX2Rldi0+ZGV2aWNlX2lkKSA+PSA0KSA/IHRydWUgOiBmYWxzZTsKLQltbWlv X2RhdGEuaTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKLQlpZiAobW1pb19kYXRhLnNh ZmUpCi0JCW1taW9fZGF0YS5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS5p OTE1X2RldmlkKTsKKwltbWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQgPSBwY2lfZGV2LT5kZXZpY2Vf aWQ7CisJaWYgKG1taW9fZGF0YS0+c2FmZSkKKwkJbW1pb19kYXRhLT5tYXAgPSBpbnRlbF9nZXRf cmVnaXN0ZXJfbWFwKG1taW9fZGF0YS0+cGNpX2RldmljZV9pZCk7CiAKIAkvKiBGaW5kIHdoZXJl IHRoZSBmb3JjZXdha2UgbG9jayBpcy4gRm9yY2V3YWtlIGRvZXNuJ3QgZXhpc3QKIAkgKiBnZW4g PCA2LCBidXQgdGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdodCB0aGluZ3MgZm9yIHVzLgog CSAqLwogCXJldCA9IGlndF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUoZmQpOwogCWlmIChyZXQgPT0g LTEpCi0JCW1taW9fZGF0YS5rZXkgPSBGQUtFS0VZOworCQltbWlvX2RhdGEtPmtleSA9IEZBS0VL RVk7CiAJZWxzZQotCQltbWlvX2RhdGEua2V5ID0gcmV0OworCQltbWlvX2RhdGEtPmtleSA9IHJl dDsKIAotCW1taW9fZGF0YS5pbml0ZWQrKzsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAot aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uodm9pZCkKK2ludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19uZWVkc193YWtlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQly ZXR1cm4gbW1pb19kYXRhLmtleSAhPSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEtPmtleSAh PSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtl d2FrZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwog ICoKICAqIFJldHVybnM6CiAgKiBOb24temVybyB3aGVuIGZvcmNld2FrZSBpbml0aWFsaXphdGlv biBmYWlsZWQuCiAgKi8KLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uo dm9pZCkKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3RydWN0IGlu dGVsX21taW9fZGF0YSAqbW1pb19kYXRhKQogewotCXJldHVybiBtbWlvX2RhdGEua2V5ID09IEZB S0VLRVk7CisJcmV0dXJuIG1taW9fZGF0YS0+a2V5ID09IEZBS0VLRVk7CiB9CiAKIC8qKgogICog aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmk6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1 cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAgKiBDbGVhbiB1cCB0aGUgcmVnaXN0ZXIgYWNjZXNz IGhlbHBlciBpbml0aWFsaXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgp LgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQoraW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhKQogewot CWlmIChtbWlvX2RhdGEua2V5ICYmIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKCkp Ci0JCXJlbGVhc2VfZm9yY2V3YWtlX2xvY2sobW1pb19kYXRhLmtleSk7Ci0JbW1pb19kYXRhLmlu aXRlZC0tOworCWlmIChtbWlvX2RhdGEtPmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVl ZHNfd2FrZShtbWlvX2RhdGEpKQorCQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS0+ a2V5KTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9yZWFkOgorICogQG1taW9fZGF0YTog IG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdpc3RlciBvZmZz ZXQKICAqCiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4gVGhpcyBm dW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwpAQCAtMjQyLDIwICsyNDEsMTggQEAgaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhl IHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCBy ZWcpCitpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcmVnKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFuZ2U7 CiAJdWludDMyX3QgcmV0OwogCi0JaWd0X2Fzc2VydChtbWlvX2RhdGEuaW5pdGVkKTsKLQotCWlm IChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCi0JCWlndF9hc3NlcnQobW1p b19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbihtbWlvX2RhdGEtPnBjaV9kZXZpY2Vf aWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkgIT0gLTEpOwogCi0JaWYgKCFt bWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2FmZSkKIAkJZ290byByZWFkX291dDsK IAotCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS5tYXAsCisJcmFu Z2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAsCiAJCQkJCSByZWcs CiAJCQkJCSBJTlRFTF9SQU5HRV9SRUFEKTsKIApAQCAtMjY2LDEzICsyNjMsMTQgQEAgaW50ZWxf cmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCiAJfQogCiByZWFkX291dDoKLQlyZXQgPSAqKHZv bGF0aWxlIHVpbnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZyk7CisJcmV0ID0gKih2b2xh dGlsZSB1aW50MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKTsKIG91dDoKIAlyZXR1 cm4gcmV0OwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgorICogQG1taW9fZGF0 YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdpc3RlciBv ZmZzZXQKICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtMjgzLDE5ICsyODEsMTcgQEAg b3V0OgogICogd2hpdGUgbGlzdHMuCiAgKi8KIHZvaWQKLWludGVsX3JlZ2lzdGVyX3dyaXRlKHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKQoraW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGlu dGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsK IAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwogCi0JaWd0X2Fzc2VydChtbWlv X2RhdGEuaW5pdGVkKTsKLQotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49 IDYpCi0JCWlndF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbiht bWlvX2RhdGEtPnBjaV9kZXZpY2VfaWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5r ZXkgIT0gLTEpOwogCi0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2Fm ZSkKIAkJZ290byB3cml0ZV9vdXQ7CiAKLQlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5n ZShtbWlvX2RhdGEubWFwLAorCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9f ZGF0YS0+bWFwLAogCQkJCQkgcmVnLAogCQkJCQkgSU5URUxfUkFOR0VfV1JJVEUpOwogCkBAIC0z MDMsNyArMjk5LDcgQEAgaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwpCiAJCSAgICAgICJSZWdpc3RlciB3cml0ZSBibG9ja2VkIGZvciBzYWZldHkgIiIoKjB4 JTA4eCA9IDB4JXgpXG4iLCByZWcsIHZhbCk7CiAKIHdyaXRlX291dDoKLQkqKHZvbGF0aWxlIHVp bnQzMl90ICopKGlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50 MzJfdCAqKShtbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogLyoqCmRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfbGF0ZW5jeS5jCmluZGV4IGU1NmQ2Mjc4Li45ZGRiMzQ4YyAxMDA2NDQKLS0tIGEvdGVzdHMv aTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5 LmMKQEAgLTYxLDYgKzYxLDggQEAKIAogc3RhdGljIHVuc2lnbmVkIGludCByaW5nX3NpemU7CiBz dGF0aWMgZG91YmxlIHJjc19jbG9jazsKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1t aW9fZGF0YTsKKwogCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmlu ZywgY29uc3QgY2hhciAqbmFtZSkKQEAgLTY2Nyw3ICs2NjksNyBAQCBpZ3RfbWFpbgogCQlpZiAo cmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7CiAKLQkJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGRldmljZSk7CisJ CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIGZhbHNlLCBkZXZpY2UpOwogCQlyY3NfY2xvY2sgPSBjbG9ja3JhdGUoZGV2aWNlLCBS Q1NfVElNRVNUQU1QKTsKIAkJaWd0X2luZm8oIlJDUyB0aW1lc3RhbXAgY2xvY2s6ICUuMGZLSHos ICUuMWZuc1xuIiwKIAkJCSByY3NfY2xvY2sgLyAxZTMsIDFlOSAvIHJjc19jbG9jayk7CmRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVj X3BhcnNlLmMKaW5kZXggNjJlOGQwYTUuLmViNGY0OGY1IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1 L2dlbV9leGVjX3BhcnNlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jCkBAIC01 OCw2ICs1OCw5IEBACiAKIHN0YXRpYyBpbnQgcGFyc2VyX3ZlcnNpb247CiAKK3N0cnVjdCBpbnRl bF9tbWlvX2RhdGEgbW1pb19kYXRhOworCisKIHN0YXRpYyBpbnQgY29tbWFuZF9wYXJzZXJfdmVy c2lvbihpbnQgZmQpCiB7CiAJaW50IHZlcnNpb24gPSAtMTsKQEAgLTI4NCw5ICsyODcsOSBAQCB0 ZXN0X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3RfbHJpICp0ZXN0KQog CQkgIHRlc3QtPm5hbWUsIHRlc3QtPnJlZywgdGVzdC0+dGVzdF92YWwsCiAJCSAgZXhwZWN0ZWRf ZXJybm8sIGV4cGVjdCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZSh0ZXN0LT5yZWcsIHRlc3Qt PmluaXRfdmFsKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCB0ZXN0LT5yZWcs IHRlc3QtPmluaXRfdmFsKTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9y ZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFk KCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgogCQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKIAkJCSAg dGVzdC0+aW5pdF92YWwpOwogCkBAIC0yOTYsNyArMjk5LDcgQEAgdGVzdF9scmkoaW50IGZkLCB1 aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkKIAkJICAgZXhwZWN0ZWRfZXJy bm8pOwogCWdlbV9zeW5jKGZkLCBoYW5kbGUpOwogCi0JaWd0X2Fzc2VydF9lcV91MzIoKGludGVs X3JlZ2lzdGVyX3JlYWQodGVzdC0+cmVnKSAmCisJaWd0X2Fzc2VydF9lcV91MzIoKGludGVsX3Jl Z2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgdGVzdC0+cmVnKSAmCiAJCQkgICB0ZXN0LT5yZWFkX21h c2spLAogCQkJICBleHBlY3QpOwogfQpAQCAtNTMwLDcgKzUzMyw3IEBAIGlndF9tYWluCiAjdW5k ZWYgUkVHCiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOwogCQl9CiAK IAkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxyaXMpOyBpKyspIHsKQEAgLTU0Myw3 ICs1NDYsNyBAQCBpZ3RfbWFpbgogCQl9CiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlv X2RhdGEpOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV93b3JrYXJvdW5k cy5jIGIvdGVzdHMvaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwppbmRleCA4MWMzNTZmMC4uZGQ2MzE2 ZWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMKKysrIGIvdGVzdHMv aTkxNS9nZW1fd29ya2Fyb3VuZHMuYwpAQCAtMjI1LDYgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGNo ZWNrX3dvcmthcm91bmRzKGludCBmZCwgZW51bSBvcGVyYXRpb24gb3AsIHVuc2lnbmVkIGludCBm bGFncykKIAogaWd0X21haW4KIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsK IAlpbnQgZGV2aWNlID0gLTE7CiAJY29uc3Qgc3RydWN0IHsKIAkJY29uc3QgY2hhciAqbmFtZTsK QEAgLTI1Niw3ICsyNTcsNyBAQCBpZ3RfbWFpbgogCQlkZXZpY2UgPSBkcm1fb3Blbl9kcml2ZXIo RFJJVkVSX0lOVEVMKTsKIAkJaWd0X3JlcXVpcmVfZ2VtKGRldmljZSk7CiAKLQkJaW50ZWxfbW1p b191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKKwkJaW50ZWxfbW1pb191c2Vf cGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCQlnZW4gPSBp bnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChkZXZpY2UpKTsKIApkaWZmIC0tZ2l0IGEvdGVz dHMvaTkxNS9pOTE1X3BtX2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKaW5kZXgg YjMxOWRiZTkuLjQyOTM4ZTEwIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5j CisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKQEAgLTE4Nyw3ICsxODcsNyBAQCBpbnQg ZHJtX2ZkOwogdWludDMyX3QgZGV2aWQ7CiBkcm1Nb2RlUmVzUHRyIGRybV9yZXM7CiBkcm1Nb2Rl Q29ubmVjdG9yUHRyIGRybV9jb25uZWN0b3JzW01BWF9DT05ORUNUT1JTXTsKLQorc3RydWN0IGlu dGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiBpZ3RfbWFpbgogewogCWlndF9maXh0dXJlIHsKQEAg LTIxMCw3ICsyMTAsNyBAQCBpZ3RfbWFpbgogCiAJCWlndF9yZXF1aXJlKHN1cHBvcnRzX2xwc3Ao ZGV2aWQpKTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCBkcm1fZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19k YXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkcm1fZmQpOwogCiAJCWttc3Rlc3Rfc2V0 X3Z0X2dyYXBoaWNzX21vZGUoKTsKIAl9CkBAIC0yMjcsNyArMjI3LDcgQEAgaWd0X21haW4KIAlp Z3RfZml4dHVyZSB7CiAJCWludCBpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCQlmb3IgKGkgPSAw OyBpIDwgZHJtX3Jlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKQogCQkJZHJtTW9kZUZyZWVDb25u ZWN0b3IoZHJtX2Nvbm5lY3RvcnNbaV0pOwogCQlkcm1Nb2RlRnJlZVJlc291cmNlcyhkcm1fcmVz KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyBiL3Rvb2xzL2ludGVsX2F1 ZGlvX2R1bXAuYwppbmRleCA3MjZiYjRiNi4uNmQxMTY1OWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2lu dGVsX2F1ZGlvX2R1bXAuYworKysgYi90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKQEAgLTQyLDYg KzQyLDcgQEAgc3RhdGljIHVpbnQzMl90IGRldmlkOwogc3RhdGljIGludCBhdWRfcmVnX2Jhc2Ug PSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYXVkaW8gcmVnaXN0ZXJzICovCiBzdGF0aWMgaW50IGRp c3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8K IAorCiAjZGVmaW5lIElTX0hBU1dFTExfUExVUyhkZXZpZCkgIChJU19IQVNXRUxMKGRldmlkKSB8 fCBJU19CUk9BRFdFTEwoZGV2aWQpKQogCiAjZGVmaW5lIEJJVFNUTyhuKQkJKG4gPj0gc2l6ZW9m KGxvbmcpICogOCA/IH4wIDogKDFVTCA8PCAobikpIC0gMSkKQEAgLTI0NjQsNiArMjQ2NSw3IEBA IHN0YXRpYyB2b2lkIGR1bXBfYnJhc3dlbGwodm9pZCkKIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIHsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKKwlzdHJ1Y3QgaW50ZWxf bW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgp OwogCWRldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOyAvKiBYWFggbm90IHRydWUgd2hlbiBtYXBw aW5nISAqLwpAQCAtMjQ3MSw5ICsyNDczLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWRvX3NlbGZfdGVzdHMoKTsKIAogCWlmIChhcmdjID09IDIpCi0JCWludGVsX21taW9f dXNlX2R1bXBfZmlsZShhcmd2WzFdKTsKKwkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCZtbWlv X2RhdGEsIGFyZ3ZbMV0pOwogCWVsc2UKLQkJaW50ZWxfbW1pb191c2VfcGNpX2JhcihwY2lfZGV2 KTsKKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBwY2lfZGV2KTsKIAogCXBy aW50ZigiJXMgYXVkaW8gcmVnaXN0ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2aWNlX2luZm8oZGV2 aWQpLT5jb2RlbmFtZSk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQpKSB7CmRpZmYgLS1naXQg YS90b29scy9pbnRlbF9iYWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCmluZGV4 IDA2N2ZkNDE4Li5lZGYwNjAyMiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMK KysrIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKQEAgLTM4LDkgKzM4LDEwIEBACiAKIGludCBt YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1t aW9fZGF0YTsKIAl1aW50MzJfdCBjdXJyZW50LCBtYXg7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAljdXJyZW50ID0gSU5SRUcoQkxD X1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7CiAJbWF4ID0gSU5SRUco QkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9kaXNwbGF5 X3BvbGxlci5jIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwppbmRleCA1MWY1YjlhNS4u ZjQ3OTdhMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKKysrIGIv dG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwpAQCAtOTYyLDYgKzk2Miw3IEBAIHN0YXRpYyB2 b2lkIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkgdXNhZ2UoY29uc3QgY2hhciAqbmFtZSkKIAog aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19k YXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgcGlwZSA9IDAsIGJpdCA9IDAsIHRhcmdldF9z Y2FubGluZSA9IDAsIHRhcmdldF9mdXp6ID0gMTsKIAlib29sIHRlc3RfcGl4ZWxjb3VudCA9IGZh bHNlOwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJYnJlYWs7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlv X2RhdGEgLGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCXByaW50ZigiJXM/XG4i LCB0ZXN0X25hbWUodGVzdCwgcGlwZSwgYml0LCB0ZXN0X3BpeGVsY291bnQpKTsKIApAQCAtMTI2 Miw3ICsxMjYzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYXNzZXJ0 KDApOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlpZiAocXVpdCkKIAkJcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9mb3JjZXdha2VkLmMgYi90b29scy9pbnRlbF9mb3JjZXdh a2VkLmMKaW5kZXggMDJmYmY4ODguLjg3YjI2ZDQzIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9m b3JjZXdha2VkLmMKKysrIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCkBAIC01NywxNCArNTcs MTUgQEAgaGVscChjaGFyICpwcm9nKSB7CiB9CiAKIHN0YXRpYyBpbnQKLWlzX2FsaXZlKHZvaWQp IHsKK2lzX2FsaXZlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSkgewogCS8qIFJl YWQgdGhlIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5cyBiZSAhMCAqLwot CXJldHVybiAoaW50ZWxfcmVnaXN0ZXJfcmVhZCgweDIzNTgpICE9IDApOworCXJldHVybiAoaW50 ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIDB4MjM1OCkgIT0gMCk7CiB9CiAKIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhIG1taW9fZGF0YTsKIAogCWlmIChhcmdjID4gMiB8fCAoYXJnYyA9PSAyICYmICFzdHJu Y21wKGFyZ3ZbMV0sICItaCIsIDIpKSkgewogCQloZWxwKGFyZ3ZbMV0pOwpAQCAtODAsNyArODEs NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlJTkZPX1BSSU5UKCJzdGFy dGVkIGRhZW1vbiIpOwogCX0KIAotCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7CiAJaWYg KHJldCkgewogCQlJTkZPX1BSSU5UKCJDb3VsZG4ndCBpbml0IHJlZ2lzdGVyIGFjY2Vzc1xuIik7 CiAJCWV4aXQoMSk7CkBAIC04OCwxNiArODksMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJSU5GT19QUklOVCgiRm9yY2V3YWtlIGxvY2tlZFxuIik7CiAJfQogCXdoaWxl KDEpIHsKLQkJaWYgKCFpc19hbGl2ZSgpKSB7CisJCWlmICghaXNfYWxpdmUoJm1taW9fZGF0YSkp IHsKIAkJCUlORk9fUFJJTlQoImdwdSByZXNldD8gcmVzdGFydGluZyBkYWVtb25cbiIpOwotCQkJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKLQkJCXJldCA9IGludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwkJCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOworCQkJcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOwogCQkJ aWYgKHJldCkKIAkJCQlJTkZPX1BSSU5UKCJSZWcgYWNjZXNzIGluaXQgZmFpbFxuIik7CiAJCX0K IAkJc2xlZXAoMSk7CiAJfQotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJSU5GT19QUklOVCgiRm9yY2V3YWtl IHVubG9ja1xuIik7CiAKIAlpZiAoZGFlbW9uaXplZCkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50 ZWxfZ3B1X3RpbWUuYyBiL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKaW5kZXggNTZkNjVmZTAuLjEx YmY3MzU0IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9ncHVfdGltZS5jCisrKyBiL3Rvb2xzL2lu dGVsX2dwdV90aW1lLmMKQEAgLTY1LDkgKzY1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAl1aW50NjRfdCByaW5nX2lkbGUgPSAwLCByaW5nX3RpbWUgPSAwOwogCXN0cnVj dCB0aW1ldmFsIHN0YXJ0LCBlbmQ7CiAJc3RhdGljIHN0cnVjdCBydXNhZ2UgcnVzYWdlOworCXN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBzdGF0dXM7CiAKLQlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOworCWludGVsX21taW9fdXNl X3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAlpZiAoYXJn YyA9PSAxKSB7CiAJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIGNtZCBbYXJncy4uLl1cbiIs IGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jIGIvdG9vbHMv aW50ZWxfaW5mb2ZyYW1lcy5jCmluZGV4IDJlZjVkNGZkLi5kNGJmNTI4YyAxMDA2NDQKLS0tIGEv dG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCisrKyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwpA QCAtMjY0LDYgKzI2NCw3IEBAIGNvbnN0IGNoYXIgKmRpcF9mcmVxdWVuY3lfbmFtZXNbXSA9IHsK IAogc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXY7CiBpbnQgZ2VuID0gMDsKK3N0cnVjdCBpbnRl bF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiBzdGF0aWMgY29uc3QgY2hhciAqc3BkX3NvdXJjZV90 b19zdHJpbmcoU291cmNlRGV2aWNlIHNvdXJjZSkKIHsKQEAgLTExMDgsNyArMTEwOSw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICAgICAgICIgcGVyZmVjdGx5OiB0aGUg S2VybmVsIG1pZ2h0IHVuZG8gb3VyIGNoYW5nZXMuXG4iKTsKIAogCXBjaV9kZXYgPSBpbnRlbF9n ZXRfcGNpX2RldmljZSgpOwotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2LCAw LCAtMSk7CiAJaW50ZWxfY2hlY2tfcGNoKCk7CiAKIAlpZiAoSVNfR0VONChwY2lfZGV2LT5kZXZp Y2VfaWQpKQpAQCAtMTI1Niw2ICsxMjU3LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9CmRpZmYg LS1naXQgYS90b29scy9pbnRlbF9sM19wYXJpdHkuYyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5j CmluZGV4IDQxNzljNWFlLi4wNmExODVjOSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfbDNfcGFy aXR5LmMKKysrIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKQEAgLTE3Niw2ICsxNzYsNyBAQCBz dGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogCiBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWNv bnN0IGNoYXIgKnBhdGhbUkVBTF9NQVhfU0xJQ0VTXSA9IHsibDNfcGFyaXR5IiwgImwzX3Bhcml0 eV9zbGljZV8xIn07CiAJaW50IHJvdyA9IDAsIGJhbmsgPSAwLCBzYmFuayA9IDA7CiAJaW50IGZk W1JFQUxfTUFYX1NMSUNFU10gPSB7MH0sIHJldCwgaTsKQEAgLTE4OSw3ICsxOTAsNyBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWlmIChpbnRlbF9nZW4oZGV2aWQpIDwgNyB8 fCBJU19WQUxMRVlWSUVXKGRldmlkKSkKIAkJZXhpdCg3Nyk7CiAKLQlhc3NlcnQoaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAw KTsKKwlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKIAogCWRpciA9IGlndF9zeXNmc19v cGVuKGRldmljZSk7CiAKQEAgLTIxNyw3ICsyMTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCSAqIG5vdy4gSnVzdCBiZSBhd2FyZSBvZiB0aGlzIGlmIGZvciBzb21lIHJl YXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKIAkgKiB3aGVuIHVzaW5nIHRoaXMgdG9vbC4KIAkgKi8K LQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4YjAzOCk7CisJZGZ0ID0gaW50ZWxfcmVnaXN0 ZXJfcmVhZCgmbW1pb19kYXRhLCAweGIwMzgpOwogCiAJd2hpbGUgKDEpIHsKIAkJaW50IGMsIG9w dGlvbl9pbmRleCA9IDA7CkBAIC0zNjYsMTAgKzM2NywxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQkJCWFzc2VydChpIDwgMik7CiAJCQkJZGZ0IHw9IGkgPDwgMTsgLyog c2xpY2UgKi8KIAkJCQlkZnQgfD0gMSA8PCAwOyAvKiBlbmFibGUgKi8KLQkJCQlpbnRlbF9yZWdp c3Rlcl93cml0ZSgweGIwMzgsIGRmdCk7CisJCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9f ZGF0YSwgMHhiMDM4LCBkZnQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndSc6Ci0JCQkJaW50ZWxf cmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQgJiB+KDE8PDApKTsKKwkJCQlpbnRlbF9yZWdpc3Rl cl93cml0ZSgmbW1pb19kYXRhICwweGIwMzgsIGRmdCAmIH4oMTw8MCkpOwogCQkJCWJyZWFrOwog CQkJY2FzZSAnTCc6CiAJCQkJYnJlYWs7CkBAIC0zNzgsNyArMzc5LDcgQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJaWYgKGFj dGlvbiA9PSAnbCcpCiAJCWV4aXQoRVhJVF9TVUNDRVNTKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMv aW50ZWxfbGlkLmMgYi90b29scy9pbnRlbF9saWQuYwppbmRleCAzN2M2YmE1ZS4uMmExZDk4MDAg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2xpZC5jCisrKyBiL3Rvb2xzL2ludGVsX2xpZC5jCkBA IC0xMTcsOSArMTE3LDEwIEBAIG91dDoKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBzd2YxNCwgYWNw aV9saWQ7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkp OworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSk7CiAKIAl3aGlsZSAoMSkgewogCQlzd2YxNCA9IElOUkVHKFNXRjE0KTsKZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVy LmMKaW5kZXggMTM3ZWY2MWEuLjY0MDc4NzA1IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wYW5l bF9maXR0ZXIuYworKysgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwpAQCAtMjczLDYgKzI3 Myw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJvb2wgZG9fZGlzYWJs ZSA9IGZhbHNlLCBkb19kdW1wID0gZmFsc2UsIGRvX3VzYWdlID0gZmFsc2U7CiAJc3RydWN0IHBj aV9kZXZpY2UgKnBjaV9kZXY7CiAJdWludDMyX3QgZGV2aWQ7CisJc3RydWN0IGludGVsX21taW9f ZGF0YSBtbWlvX2RhdGE7CiAKIAlwcmludGYoIldBUk5JTkc6XG4iCiAJICAgICAgICJUaGlzIHRv b2wgaXMgYSB3b3JrYXJvdW5kIGZvciBwZW9wbGUgdGhhdCBkb24ndCBoYXZlIGEgS2VybmVsICIK QEAgLTI4MCw3ICsyODEsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkg ICAgICAgInNvbHV0aW9uIHRoYXQgbWF5IG9yIG1heSBub3Qgd29yay4gVXNlIGl0IGF0IHlvdXIg b3duIHJpc2suXG4iKTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2LCAwLCAtMSk7CiAJZGV2aWQgPSBwY2lf ZGV2LT5kZXZpY2VfaWQ7CiAKIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2aWQpKSB7CkBAIC0zNDIs NiArMzQzLDYgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiBvdXQ6 Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgmbW1pb19kYXRhKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50 ZWxfcGVyZl9jb3VudGVycy5jIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCmluZGV4IDUw YzRiY2U2Li41ODI0ZDljMSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5j CisrKyBiL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYwpAQCAtNDQxLDYgKzQ0MSw3IEBAIGdl bjdfZ2V0X2NvdW50ZXJzKHZvaWQpCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog eworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCXVpbnQzMl90IGRldmlkOwog CWludCBjb3VudGVyX2Zvcm1hdDsKIAlpbnQgY291bnRlcl9jb3VudDsKQEAgLTQ4MywxMCArNDg0 LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkgewog CQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMCwgZmQpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1p b19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLAorCQkJCTAsIGZkKTsKIAogCQkvKiBFbmFi bGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoT0FDT05U Uk9MLAorCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCBPQUNPTlRST0wsCiAJCQlj b3VudGVyX2Zvcm1hdCA8PCBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAogCQkJUEVS Rk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwogCX0KQEAgLTUyMCwxMCArNTIyLDEwIEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkgewogCQkvKiBEaXNhYmxl IHBlcmZvcm1hbmNlIGNvdW50ZXJzICovCi0JCWludGVsX3JlZ2lzdGVyX3dyaXRlKE9BQ09OVFJP TCwgMCk7CisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIE9BQ09OVFJPTCwgMCk7 CiAKIAkJLyogRm9yY2V3YWtlICovCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJ CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCX0KIAogCWZyZWUodG90 YWxzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZy5jIGIvdG9vbHMvaW50ZWxfcmVnLmMK aW5kZXggZTUxNzk1NmIuLjg0N2ZkYmVkIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9yZWcuYwor KysgYi90b29scy9pbnRlbF9yZWcuYwpAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCBfbm90X3N1cHBvcnRlZCh2b2lkKQogCiBzdHJ1Y3QgY29uZmlnIHsKIAlzdHJ1Y3QgcGNpX2Rl dmljZSAqcGNpX2RldjsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAljaGFy ICptbWlvZmlsZTsKIAl1aW50MzJfdCBkZXZpZDsKIApAQCAtMzg3LDcgKzM4OCw3IEBAIHN0YXRp YyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcgKnJl ZywgdWludDMyX3QgKnZhbHApCiAJCQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4g LTE7CiAJCX0KLQkJdmFsID0gaW50ZWxfaW9zZl9zYl9yZWFkKHJlZy0+cG9ydF9kZXNjLnBvcnQs IHJlZy0+YWRkcik7CisJCXZhbCA9IGludGVsX2lvc2Zfc2JfcmVhZCgmY29uZmlnLT5tbWlvX2Rh dGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCWZwcmludGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRf ZGVzYy5wb3J0KTsKQEAgLTQ1OCw3ICs0NTksNyBAQCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVy KHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwpCiAJ CQkJcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJaW50ZWxfaW9z Zl9zYl93cml0ZShyZWctPnBvcnRfZGVzYy5wb3J0LCByZWctPmFkZHIsIHZhbCk7CisJCWludGVs X2lvc2Zfc2Jfd3JpdGUoJmNvbmZpZy0+bW1pb19kYXRhLCByZWctPnBvcnRfZGVzYy5wb3J0LCBy ZWctPmFkZHIsIHZhbCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmludGYoc3RkZXJyLCAi cG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0KTsKQEAgLTU1Miw5 ICs1NTMsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZp ZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIAlpZiAoY29uZmlnLT5tbWlvZmlsZSkK LQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOworCQlpbnRlbF9t bWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPm1taW9maWxlKTsK IAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwg LTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmlnLT5tbWlvX2RhdGEsIGNv bmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewog CQlzdHJ1Y3QgcmVnIHJlZzsKQEAgLTU3MCw3ICs1NzEsNyBAQCBzdGF0aWMgaW50IGludGVsX3Jl Z19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ fQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoJmNvbmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7 CiB9CkBAIC01ODQsNyArNTg1LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0 IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlyZXR1cm4gRVhJVF9G QUlMVVJFOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2Rl diwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZjb25maWctPm1taW9fZGF0 YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSAr PSAyKSB7CiAJCXN0cnVjdCByZWcgcmVnOwpAQCAtNjA5LDcgKzYxMCw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkJd3JpdGVfcmVnaXN0ZXIoY29uZmlnLCAmcmVnLCB2YWwpOwogCX0KIAotCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJmNv bmZpZy0+bW1pb19kYXRhKTsKIAogCXJldHVybiBFWElUX1NVQ0NFU1M7CiB9CkBAIC02MjAsOSAr NjIxLDkgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1Y3QgY29uZmlnICpjb25maWcs IGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW50IGk7CiAKIAlpZiAoY29uZmlnLT5tbWlvZmls ZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOworCQlpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPm1taW9maWxl KTsKIAllbHNlCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2Rldiwg MCwgLTEpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmY29uZmlnLT5tbWlvX2RhdGEs IGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+cmVn Y291bnQ7IGkrKykgewogCQlyZWcgPSAmY29uZmlnLT5yZWdzW2ldOwpAQCAtNjM0LDcgKzYzNSw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQlkdW1wX3JlZ2lzdGVyKGNvbmZpZywgJmNvbmZpZy0+cmVn c1tpXSk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRfU1VD Q0VTUzsKIH0KQEAgLTY0OCw3ICs2NDksNyBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19zbmFwc2hv dChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXJldHVy biBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfbW1pb191c2VfcGNpX2Jhcihjb25maWctPnBj aV9kZXYpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25m aWctPnBjaV9kZXYpOwogCiAJLyogWFhYOiBlcnJvciBoYW5kbGluZyAqLwogCWlmICh3cml0ZSgx LCBpZ3RfZ2xvYmFsX21taW8sIGNvbmZpZy0+cGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0uc2l6 ZSkgPT0gLTEpCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jIGIvdG9vbHMv aW50ZWxfcmVnX2NoZWNrZXIuYwppbmRleCA2YmRlNjNlYy4uM2Y5MGRlODIgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIu YwpAQCAtMzQyLDEwICszNDIsMTEgQEAgY2hlY2tfZHBmY19jb250cm9sX3NhKHZvaWQpCiBpbnQg bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAJc3RydWN0IHBjaV9kZXZpY2UgKmRldjsK KwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCWRldiA9IGludGVsX2dldF9w Y2lfZGV2aWNlKCk7CiAJZGV2aWQgPSBkZXYtPmRldmljZV9pZDsKLQlpbnRlbF9tbWlvX3VzZV9w Y2lfYmFyKGRldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBkZXYpOwog CiAJaWYgKElTX0dFTjcoZGV2aWQpKQogCQlnZW4gPSA3OwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50 ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRlbF93YXRlcm1hcmsuYwppbmRleCBlNzFjM2Q5Yy4u MTRkMWFlMGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCisrKyBiL3Rvb2xz L2ludGVsX3dhdGVybWFyay5jCkBAIC0yMzcsNiArMjM3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg KnNrbF9udjEyX2J1Zl9jZmdfcmVnX25hbWUoaW50IHBpcGUsIGludCBwbGFuZSkKIAogc3RhdGlj IHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9f ZGF0YTsKIAlpbnQgcGlwZSwgcGxhbmUsIGxldmVsOwogCWludCBudW1fcGlwZXMgPSAzOwogCWlu dCBtYXhfcGxhbmVzID0gc2tsX21heF9wbGFuZXMoZGV2aWQpOwpAQCAtMjQ5LDcgKzI1MCw3IEBA IHN0YXRpYyB2b2lkIHNrbF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgcGxhbmVfY3RsW251bV9w aXBlc11bbWF4X3BsYW5lc107CiAJdWludDMyX3Qgd21fbGluZXRpbWVbbnVtX3BpcGVzXTsKIAot CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCAtMSk7CiAKIAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgbnVtX3BpcGVzOyBw aXBlKyspIHsKIAkJaW50IG51bV9wbGFuZXMgPSBza2xfbnVtX3BsYW5lcyhkZXZpZCwgcGlwZSk7 CkBAIC00NTgsNiArNDU5LDcgQEAgc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIAogc3Rh dGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1t aW9fZGF0YTsKIAlpbnQgaTsKIAl1aW50MzJfdCBkc3BjbnRyWzNdOwogCXVpbnQzMl90IHNwY250 clszXTsKQEAgLTQ2OSw3ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQog CWludCBudW1fcGlwZXMgPSBpbnRlbF9nZW4oZGV2aWQpID49IDcgPyAzIDogMjsKIAlzdHJ1Y3Qg aWxrX3dtIHdtID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9f ZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZm9yIChpID0gMDsgaSA8 IG51bV9waXBlczsgaSsrKSB7CiAJCWRzcGNudHJbaV0gPSByZWFkX3JlZygweDcwMTgwICsgaSAq IDB4MTAwMCk7CkBAIC01MDUsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9p ZCkKIAlpZiAoSVNfQlJPQURXRUxMKGRldmlkKSB8fCBJU19IQVNXRUxMKGRldmlkKSkKIAkJd21f bWlzYyA9IHJlYWRfcmVnKDB4NDUyNjApOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBudW1fcGlwZXM7IGkrKykKIAkJcHJpbnRmKCIgICAgV01fUElQRV8lYyA9IDB4JTA4 eFxuIiwgcGlwZV9uYW1lKGkpLCB3bV9waXBlW2ldKTsKQEAgLTYxMCw2ICs2MTIsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lk KQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCXVuc2ln bmVkIGludCBudW1fcGlwZXMgPSBJU19DSEVSUllWSUVXKGRldmlkKSA/IDMgOiAyOwogCXVpbnQz Ml90IGRzcGFyYiwgZHNwYXJiMiwgZHNwYXJiMzsKQEAgLTYxOSw3ICs2MjIsNyBAQCBzdGF0aWMg dm9pZCB2bHZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGRzcF9zc19wbSwgZGRyX3NldHVwMjsK IAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWRzcGFyYjIgPSByZWFkX3JlZygw eDcwMDYwKTsKQEAgLTY1MCwxMyArNjUzLDEzIEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZv aWQpCiAKIAkJZGRsMyA9IHJlYWRfcmVnKDB4NzAwNTgpOwogCi0JCWludGVsX3B1bml0X3JlYWQo MHgzNiwgJmRzcF9zc19wbSk7Ci0JCWludGVsX3B1bml0X3JlYWQoMHgxMzksICZkZHJfc2V0dXAy KTsKKwkJaW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDM2LCAmZHNwX3NzX3BtKTsKKwkJ aW50ZWxfcHVuaXRfcmVhZCgmbW1pb19kYXRhLCAweDEzOSwgJmRkcl9zZXR1cDIpOwogCX0gZWxz ZSB7CiAJCWZ3NyA9IHJlYWRfcmVnKDB4NzAwN2MpOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAK IAlwcmludGYoIiAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEpOwogCXByaW50ZigiICAgICAg ICBGVzIgPSAweCUwOHhcbiIsIGZ3Mik7CkBAIC04MjcsNiArODMwLDcgQEAgc3RhdGljIHZvaWQg dmx2X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIHsKKwlz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1aW50MzJfdCBkc3Bh Y250ciwgZHNwYmNudHI7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtODM1LDcgKzgzOSw3IEBAIHN0 YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfYXJiX3N0YXRlOwogCXN0 cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwog CiAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKIAlkc3BiY250ciA9IHJlYWRfcmVnKDB4 NzExODApOwpAQCAtODQ2LDcgKzg1MCw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQp CiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJfc3Rh dGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAg ICAgICAgICAgIERTUEFDTlRSID0gMHglMDh4XG4iLCBkc3BhY250cik7CiAJcHJpbnRmKCIgICAg ICAgICAgICAgRFNQQkNOVFIgPSAweCUwOHhcbiIsIGRzcGJjbnRyKTsKQEAgLTkxMyw2ICs5MTcs NyBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBnZW40X3dt X2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQg aTsKIAlpbnQgdG90YWxzaXplID0gSVNfQ1JFU1RMSU5FKGRldmlkKSA/IDEyOCA6IDk2OwogCXVp bnQzMl90IGRzcGFyYjsKQEAgLTkyMSw3ICs5MjYsNyBAQCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1 bXAodm9pZCkKIAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01B WF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19k YXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3Jl ZygweDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTkzMCw3ICs5MzUsNyBA QCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bvd2VyX2Rvd24g PSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAK LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzEgPSAweCUw OHhcbiIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIgPSAweCUwOHhcbiIs IGZ3Mik7CkBAIC05ODMsNiArOTg4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZvaWQp CiAKIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVsX21taW9f ZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9IDk2OyAvKiBGSVhNRT8g Ki8KIAl1aW50MzJfdCBkc3BhcmI7CkBAIC05OTIsNyArOTk4LDcgQEAgc3RhdGljIHZvaWQgcG52 X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBjYnI7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9Q TEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygw eDcwMDMwKTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTEwMDIsNyArMTAwOCw3IEBA IHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0g cmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICAgICAgICAgRFNQQVJCID0gMHglMDh4 XG4iLCBkc3BhcmIpOwogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0gMHglMDh4XG4i LCBmdzEpOwpAQCAtMTA3Myw2ICsxMDc5LDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9p ZCkKIAogc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVsX21t aW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZSA9IElTXzk0NUdNKGRl dmlkKSA/IDEyOCA6IDk2OyAvKiBGSVhNRT8gKi8KIAl1aW50MzJfdCBkc3BhcmI7CkBAIC0xMDgy LDcgKzEwODksNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBt aV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlpbnN0cG0g PSByZWFkX3JlZygweDIwYzApOwpAQCAtMTA5MCw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQgZ2Vu M193bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIwZTApOwogCW1pX2Fy Yl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRm KCIgICAgICBEU1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICAgICBGV19C TEMgPSAweCUwMTYiIFBSSXg2NCAiXG4iLCBmd19ibGMpOwpAQCAtMTE0Miw2ICsxMTQ5LDcgQEAg c3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGdlbjJfd21fZHVt cCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwog CWludCB0b3RhbHNpemU7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtMTE1MSw3ICsxMTU5LDcgQEAg c3RhdGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfc3RhdGU7CiAJc3Ry dWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAK IAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAltZW1fbW9kZSA9IHJlYWRfcmVnKDB4MjBj Yyk7CkBAIC0xMTU5LDcgKzExNjcsNyBAQCBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkK IAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfc3RhdGUgPSByZWFkX3JlZygw eDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICBEU1BBUkIgPSAweCUw OHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICBNRU1fTU9ERSA9IDB4JTA4eFxuIiwgbWVtX21v ZGUpOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=