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 4AB4589309 for ; Mon, 15 Apr 2019 08:59:49 +0000 (UTC) From: Daniel Mrzyglod Date: Mon, 15 Apr 2019 10:59:37 +0200 Message-Id: <20190415085937.5110-6-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> References: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 5/5] lib/intel_mmio: remove igt_global_mmio and move pointer to mmio_data structure List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: dGhpcyBwYXRjaCByZW1vdmUgbmVlZCBmb3IgaWd0X2dsb2JhbF9tbWlvIGZyb20gbGlicmFyeSBz cGFjZS4KVGhlIHJlYXNvbiB0aGF0IGl0IHdhcyBtb3ZlZCBpcyB0aGUgaWRlYSB0byBzdXBwb3J0 IG11bHRpcGxlIGRldmljZSBhdCBvbmNlLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1yenlnbG9k IDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogYmVuY2htYXJrcy9nZW1fbGF0ZW5j eS5jICAgICAgfCAgIDUgKy0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgICAgICAgIHwgICA2ICst CiBsaWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgICB8ICA3OSArKysrKysrKysrKysrLS0tLS0t LS0KIGxpYi9pbnRlbF9pb3NmLmMgICAgICAgICAgICAgIHwgIDY5ICsrKysrKysrKy0tLS0tLS0t LQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAgICAgfCAxMjcgKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgfCAgIDcgKy0K IHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDE0ICsrLS0KIHRlc3RzL2k5MTUvaTkx NV9wbV9scHNwLmMgICAgIHwgICA3ICstCiB0b29scy9pbnRlbF9hdWRpb19kdW1wLmMgICAgICB8 ICAgNyArLQogdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMgICAgICAgfCAgIDUgKy0KIHRvb2xzL2lu dGVsX2Rpc3BsYXlfcG9sbGVyLmMgIHwgICA3ICstCiB0b29scy9pbnRlbF9mb3JjZXdha2VkLmMg ICAgICB8ICAxNCArKy0tCiB0b29scy9pbnRlbF9ncHVfdGltZS5jICAgICAgICB8ICAgNSArLQog dG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jICAgICAgfCAgIDcgKy0KIHRvb2xzL2ludGVsX2wzX3Bh cml0eS5jICAgICAgIHwgIDE2ICsrKy0tCiB0b29scy9pbnRlbF9saWQuYyAgICAgICAgICAgICB8 ICAgNiArLQogdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgICAgfCAgIDcgKy0KIHRvb2xzL2lu dGVsX3BlcmZfY291bnRlcnMuYyAgIHwgIDEyICsrLS0KIHRvb2xzL2ludGVsX3JlZy5jICAgICAg ICAgICAgIHwgIDI3ICsrKysrLS0tCiB0b29scy9pbnRlbF9yZWdfY2hlY2tlci5jICAgICB8ICAg NiArLQogdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgICAgICAgfCAgNDQgKysrKysrKy0tLS0tCiAy MSBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKSwgMTk2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyBiL2JlbmNobWFya3MvZ2VtX2xhdGVu Y3kuYwppbmRleCBjM2ZjNGJmMC4uYmNhYWVjZWYgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2Vt X2xhdGVuY3kuYworKysgYi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKQEAgLTU1LDYgKzU1LDgg QEAKIHN0YXRpYyBpbnQgZG9uZTsKIHN0YXRpYyBpbnQgZmQ7CiBzdGF0aWMgdm9sYXRpbGUgdWlu dDMyX3QgKnRpbWVzdGFtcF9yZWc7Cit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3Ry dWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAjZGVmaW5lIFJFRyh4KSAodm9sYXRpbGUgdWlu dDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyB4KQogI2RlZmluZSBS RUdfT0ZGU0VUKHgpICgodm9sYXRpbGUgY2hhciAqKSh4KSAtICh2b2xhdGlsZSBjaGFyICopaWd0 X2dsb2JhbF9tbWlvKQpAQCAtNDU2LDcgKzQ1OCw4IEBAIHN0YXRpYyBpbnQgcnVuKGludCBzZWNv bmRzLAogCWlmIChnZW4gPCA2KQogCQlyZXR1cm4gSUdUX0VYSVRfU0tJUDsgLyogTmVlZHMgQkNT IHRpbWVzdGFtcCAqLwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1p b19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBmYWxzZSwgZmQpOworCWlndF9nbG9iYWxf bW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWlmIChnZW4gPT0gNikKIAkJdGltZXN0YW1w X3JlZyA9IFJFRyhSQ1NfVElNRVNUQU1QKTsKZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX3dz aW0uYyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwppbmRleCBhZmI5NjQ0ZC4uODZhZjU4Y2IgMTAw NjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2lt LmMKQEAgLTIwNiw2ICsyMDYsOSBAQCBzdHJ1Y3Qgd29ya2xvYWQKIAl9IGJ1c3lfYmFsYW5jZXI7 CiB9OwogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEg bW1pb19kYXRhOworCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5vcF9jYWxpYnJhdGlvbl91 cyA9IDEwMDA7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBub3BfY2FsaWJyYXRpb247CiAKQEAgLTIy MjMsNyArMjIyNiw4IEBAIHN0YXRpYyB2b2lkIGluaXRfY2xvY2tzKHZvaWQpCiAJdWludDMyX3Qg cmNzX3N0YXJ0LCByY3NfZW5kOwogCWRvdWJsZSBvdmVyaGVhZCwgdDsKIAotCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgZmFsc2UsIGZkKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAK IAlpZiAodmVyYm9zZSA8PSAxKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW8u aCBiL2xpYi9pbnRlbF9pby5oCmluZGV4IGZkOTliYmI3Li5kOTgzOTdhZiAxMDA2NDQKLS0tIGEv bGliL2ludGVsX2lvLmgKKysrIGIvbGliL2ludGVsX2lvLmgKQEAgLTMwLDE3ICszMCw0MSBAQAog CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8cGNpYWNjZXNzLmg+CisjaW5jbHVkZSA8 c3RkYm9vbC5oPgogCiAvKiByZWdpc3RlciBhY2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21taW8u YyAqLwotZXh0ZXJuIHZvaWQgKmlndF9nbG9iYWxfbW1pbzsKLXZvaWQgaW50ZWxfbW1pb191c2Vf cGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IGZkKTsKLXZvaWQgaW50ZWxf bW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUpOworc3RydWN0IGludGVsX3JlZ2lzdGVyX3Jh bmdlIHsKKwl1aW50MzJfdCBiYXNlOworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgZmxhZ3M7 Cit9OworCitzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0 ZXJfcmFuZ2UgKm1hcDsKKwl1aW50MzJfdCB0b3A7CisJdWludDMyX3QgYWxpZ25tZW50X21hc2s7 Cit9OworCitzdHJ1Y3QgX21taW9fZGF0YSB7CisJaW50IGluaXRlZDsKKwlib29sIHNhZmU7CisJ dWludDMyX3QgaTkxNV9kZXZpZDsKKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKKwlp bnQga2V5OworCXZvaWQgKmlndF9tbWlvOworfTsKKwordm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsCisJCQkgICAgc3RydWN0IHBjaV9kZXZp Y2UgKnBjaV9kZXYsIGludCBmZCk7Cit2b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1 Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCBjaGFyICpmaWxlKTsKIAotaW50IGludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50 IGZkKTsKLXZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCk7Ci11aW50MzJfdCBp bnRlbF9yZWdpc3Rlcl9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpOwotdm9pZCBp bnRlbF9yZWdpc3Rlcl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwpOwotaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZSh2b2lkKTsK K2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19k YXRhLAorCQkJICAgICAgIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50 IGZkKTsKK3ZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IF9tbWlvX2RhdGEg Km1taW9fZGF0YSk7Cit1aW50MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBfbW1pb19k YXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7Cit2b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRl KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWludDMy X3QgdmFsKTsKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3RydWN0 IF9tbWlvX2RhdGEgKm1taW9fZGF0YSk7CiAKIHVpbnQzMl90IElOUkVHKHZvaWQgKmlndF9tbWlv LCB1aW50MzJfdCByZWcpOwogdWludDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcmVnKTsKQEAgLTUwLDE4ICs3NCwyNCBAQCB2b2lkIE9VVFJFRzE2KHZvaWQgKmlndF9tbWlv LCB1aW50MzJfdCByZWcsIHVpbnQxNl90IHZhbCk7CiB2b2lkIE9VVFJFRzgodm9pZCAqaWd0X21t aW8sIHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwogCiAvKiBzaWRlYmFuZCBhY2Nlc3MgZnVu Y3Rpb25zIGZyb20gaW50ZWxfaW9zZi5jICovCi11aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFk KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIGludCBwaHkpOwotdm9pZCBpbnRlbF9kcGlv X3JlZ193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwsIGlu dCBwaHkpOwotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh2b2lkICppZ3RfbW1pbywg dWludDMyX3QgcmVnKTsKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodm9pZCAqaWd0X21t aW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXVpbnQzMl90IGludGVsX2lvc2Zfc2Jf cmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKTsKLXZvaWQg aW50ZWxfaW9zZl9zYl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcG9ydCwgdWludDMy X3QgcmVnLAotCQkJIHVpbnQzMl90IHZhbCk7Cit1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFk KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgaW50 IHBoeSk7Cit2b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKK3VpbnQz Ml90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUoc3RydWN0IF9tbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAgICB1aW50MzJfdCB2YWwpOwor dWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IHBvcnQsCisJCQkgICAgdWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfaW9zZl9z Yl93cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LAorCQkJ IHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKIAotaW50IGludGVsX3B1bml0X3JlYWQodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1 bml0X3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwot aW50IGludGVsX25jX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90 ICp2YWwpOwotaW50IGludGVsX25jX3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBhZGRy LCB1aW50MzJfdCB2YWwpOworaW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IF9tbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKKwkJICAgICB1aW50MzJfdCAqdmFsKTsKK2ludCBp bnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBh ZGRyLAorCQkgICAgICB1aW50MzJfdCB2YWwpOworaW50IGludGVsX25jX3JlYWQoc3RydWN0IF9t bWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7CitpbnQg aW50ZWxfbmNfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRk ciwgdWludDMyX3QgdmFsKTsKIAogLyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAu YyAqLwogI2lmbmRlZiBfX0dUS19ET0NfSUdOT1JFX18KQEAgLTcyLDE3ICsxMDIsOCBAQCBpbnQg aW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZh bCk7CiAjZGVmaW5lIElOVEVMX1JBTkdFX1JXCQkoSU5URUxfUkFOR0VfUkVBRCB8IElOVEVMX1JB TkdFX1dSSVRFKQogI2RlZmluZSBJTlRFTF9SQU5HRV9FTkQJCSgxPDwzMSkKIAotc3RydWN0IGlu dGVsX3JlZ2lzdGVyX3JhbmdlIHsKLQl1aW50MzJfdCBiYXNlOwotCXVpbnQzMl90IHNpemU7Ci0J dWludDMyX3QgZmxhZ3M7Ci19OwogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKLQlzdHJ1 Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1hcDsKLQl1aW50MzJfdCB0b3A7Ci0JdWludDMyX3Qg YWxpZ25tZW50X21hc2s7Ci19OworLy9zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRh Owogc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKHVpbnQz Ml90IGRldmlkKTsKIHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxfZ2V0X3JlZ2lz dGVyX3JhbmdlKHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJfdCBvZmZzZXQs IHVpbnQzMl90IG1vZGUpOwogI2VuZGlmIC8qIF9fR1RLX0RPQ19JR05PUkVfXyAqLwpkaWZmIC0t Z2l0IGEvbGliL2ludGVsX2lvc2YuYyBiL2xpYi9pbnRlbF9pb3NmLmMKaW5kZXggYjRhNDgzZjIu LmQ1NDFjN2RjIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfaW9zZi5jCisrKyBiL2xpYi9pbnRlbF9p b3NmLmMKQEAgLTE5LDggKzE5LDggQEAKIC8qIFByaXZhdGUgcmVnaXN0ZXIgd3JpdGUsIGRvdWJs ZS13b3JkIGFkZHJlc3NpbmcsIG5vbi1wb3N0ZWQgKi8KICNkZWZpbmUgU0JfQ1JXUkRBX05QICAg MHgwNwogCi1zdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcG9ydCwgdWludDhfdCBvcGNvZGUsCi0JCQkgICB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAq dmFsKQorc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRy LCB1aW50MzJfdCAqdmFsKQogewogCWludCB0aW1lb3V0ID0gMDsKIAl1aW50MzJfdCBjbWQsIGRl dmZuLCBiZSwgYmFyOwpAQCAtMzQsMjMgKzM0LDI0IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5k X3J3KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwKIAkJKHBv cnQgPDwgSU9TRl9QT1JUX1NISUZUKSB8IChiZSA8PCBJT1NGX0JZVEVfRU5BQkxFU19TSElGVCkg fAogCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZUKTsKIAotCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFk KGlndF9tbWlvLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwlpZiAoaW50ZWxfcmVnaXN0ZXJf cmVhZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgogCSAgICBJT1NGX1NCX0JV U1kpIHsKIAkJaWd0X3dhcm4oIndhcm5pbmc6IHBjb2RlICglcykgbWFpbGJveCBhY2Nlc3MgZmFp bGVkXG4iLCBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIik7CiAJCXJldHVybiAtRUFHQUlOOwog CX0KIAotCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9tbWlvLCBWTFZfSU9TRl9BRERSLCBhZGRy KTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0FERFIsIGFkZHIp OwogCWlmICghaXNfcmVhZCkKLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X21taW8sIFZMVl9J T1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEsIFZMVl9J T1NGX0RBVEEsICp2YWwpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X21taW8sIFZMVl9J T1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEs IFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKIAogCWRvIHsKIAkJdXNsZWVwKDEpOwogCQl0 aW1lb3V0Kys7Ci0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfbW1pbywgVkxWX0lP U0ZfRE9PUkJFTExfUkVRKSAmCi0JCSBJT1NGX1NCX0JVU1kgJiYgdGltZW91dCA8IFRJTUVPVVRf VVMpOworCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19kYXRhLT5pZ3RfbW1pbywK KwkJCQkgICAgIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgorCQlJT1NGX1NCX0JVU1kgJiYgdGlt ZW91dCA8IFRJTUVPVVRfVVMpOwogCiAJaWYgKHRpbWVvdXQgPj0gVElNRU9VVF9VUykgewogCQlp Z3Rfd2FybigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSAlcyAoJWQpIHRvIGZpbmlzaFxuIiwg aXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIsIGFkZHIpOwpAQCAtNTgsOCArNTksOCBAQCBzdGF0 aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcG9ydCwgdWlu dDhfdCBvcGNvZGUsCiAJfQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdpc3Rl cl9yZWFkKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBKTsKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZShp Z3RfbW1pbywgVkxWX0lPU0ZfREFUQSwgMCk7CisJCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFk KG1taW9fZGF0YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEpOworCWludGVsX3JlZ2lzdGVyX3dy aXRlKG1taW9fZGF0YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEsIDApOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC03NSw5ICs3Niw5IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHZvaWQgKmln dF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwKICAqIFJldHVybnM6CiAgKiAw IHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUg b24gZmFpbHVyZS4KICAqLwotaW50IGludGVsX3B1bml0X3JlYWQodm9pZCAqaWd0X21taW8sIHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3Qg X21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewot CXJldHVybiB2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JS RERBX05QLCBhZGRyLAorCXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BP UlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwKIAkJCSAgICAgICB2YWwpOwogfQogCkBAIC05 Miw5ICs5Myw5IEBAIGludCBpbnRlbF9wdW5pdF9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJf dCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0 ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICov Ci1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVp bnQzMl90IHZhbCkKK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRl YmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAsIGFkZHIsCisJ cmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JX UkRBX05QLCBhZGRyLAogCQkJICAgICAgICZ2YWwpOwogfQogCkBAIC0xMDksOSArMTEwLDEwIEBA IGludCBpbnRlbF9wdW5pdF93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1 Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxf bmNfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKK2lu dCBpbnRlbF9uY19yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywg SU9TRl9QT1JUX05DLCBTQl9DUlJEREFfTlAsIGFkZHIsIHZhbCk7CisJcmV0dXJuIHZsdl9zaWRl YmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JSRERBX05QLCBhZGRyLAorCQkJ ICAgICAgIHZhbCk7CiB9CiAKIC8qKgpAQCAtMTI1LDkgKzEyNyw5IEBAIGludCBpbnRlbF9uY19y ZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICogUmV0 dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUg ZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKK2ludCBpbnRlbF9uY193cml0ZShz dHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp CiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX05DLCBTQl9D UldSREFfTlAsIGFkZHIsCisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0Zf UE9SVF9OQywgU0JfQ1JXUkRBX05QLCBhZGRyLAogCQkJICAgICAgICZ2YWwpOwogfQogCkBAIC0x NDIsMTQgKzE0NCwxNSBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCkKICAqIFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBm cm9tIHRoZSByZWdpc3Rlci4KICAqLwotdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh2b2lk ICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCBpbnQgcGh5KQordWludDMyX3QgaW50ZWxfZHBpb19y ZWdfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIGludCBw aHkpCiB7CiAJdWludDMyX3QgdmFsOwogCiAJaWYgKHBoeSA9PSAwKQotCQl2bHZfc2lkZWJhbmRf cncoaWd0X21taW8sIElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7CisJCXZs dl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywK KwkJCQkmdmFsKTsKIAllbHNlCi0JCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JU X0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElP U0ZfUE9SVF9EUElPXzIsIFNCX01SRF9OUCwgcmVnLAogCQkJCSZ2YWwpOwogCXJldHVybiB2YWw7 CiB9CkBAIC0xNjMsNDAgKzE2Niw0MCBAQCB1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHZv aWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIGludCBwaHkpCiAgKgogICogMzItYml0IHdyaXRl IG9mIHRoZSByZWdpc3RlciBhdCBAb2Zmc2V0IHRocm91Z2ggdGhlIERQSU8gc2lkZWJhbmQgcG9y dC4KICAqLwotdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBwaHkpCit2b2lkIGludGVsX2RwaW9fcmVnX3dyaXRl KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFs LCBpbnQgcGh5KQogewogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KGlndF9tbWlv LCBJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRf cncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCByZWcsICZ2YWwpOwogCWVs c2UKLQkJdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1Jf TlAsIHJlZywKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0RQSU9fMiwg U0JfTVdSX05QLCByZWcsCiAJCQkJJnZhbCk7CiB9CiAKLXVpbnQzMl90IGludGVsX2ZsaXNkc2lf cmVnX3JlYWQodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2Zs aXNkc2lfcmVnX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVn KQogewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElP U0ZfUE9SVF9GTElTRFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5k X3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFs KTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQordm9pZCBpbnRlbF9mbGlz ZHNpX3JlZ193cml0ZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9G TElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9f ZGF0YSwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKIH0KIAot dWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0 LCB1aW50MzJfdCByZWcpCit1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQoc3RydWN0IF9tbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQogewogCXVpbnQz Ml90IHZhbDsKIAotCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgcG9ydCwgU0JfQ1JSRERBX05Q LCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSUkRE QV9OUCwgcmVnLCAmdmFsKTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZvaWQgaW50ZWxfaW9zZl9z Yl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLAotCQkJ IHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZShzdHJ1Y3QgX21taW9fZGF0 YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LAorCQkJIHVpbnQzMl90IHJlZywgdWludDMyX3Qg dmFsKQogewotCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgcG9ydCwgU0JfQ1JXUkRBX05QLCBy ZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSV1JEQV9O UCwgcmVnLCAmdmFsKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9tbWlvLmMgYi9saWIvaW50 ZWxfbW1pby5jCmluZGV4IDI0NjIzZmM2Li5kZDE1NjZjMCAxMDA2NDQKLS0tIGEvbGliL2ludGVs X21taW8uYworKysgYi9saWIvaW50ZWxfbW1pby5jCkBAIC02NiwzMiArNjYsMTcgQEAKIAogI2Rl ZmluZSBGQUtFS0VZIDB4MjQ2OGFjZTAKIAotLyoqCi0gKiBpZ3RfZ2xvYmFsX21taW86Ci0gKgot ICogUG9pbnRlciB0byB0aGUgcmVnaXN0ZXIgcmFuZ2UsIGluaXRpYWxpemVkIHVzaW5nIGludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkKLSAqIG9yIGludGVsX21taW9fdXNlX2R1bXBfZmlsZSgp LiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZGlyZWN0bHkuCi0gKi8KLXZvaWQg KmlndF9nbG9iYWxfbW1pbzsKLQotc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIHsKLQlpbnQgaW5p dGVkOwotCWJvb2wgc2FmZTsKLQl1aW50MzJfdCBpOTE1X2RldmlkOwotCXN0cnVjdCBpbnRlbF9y ZWdpc3Rlcl9tYXAgbWFwOwotCWludCBrZXk7Ci19IG1taW9fZGF0YTsKLQogLyoqCiAgKiBpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGU6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9y IElPIG9wZXJhdGlvbnMKICAqIEBmaWxlOiBuYW1lIG9mIHRoZSByZWdpc3RlciBkdW1wIGZpbGUg dG8gb3BlbgogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBhdCB0aGUg ZGF0YSBjb250YWluZWQgaW4gQGZpbGUuIFRoaXMgYWxsb3dzCi0gKiB0aGUgc2FtZSBjb2RlIHRv IGdldCByZXVzZWQgZm9yIGR1bXBpbmcgYW5kIGRlY29kaW5nIGZyb20gcnVubmluZyBoYXJkd2Fy ZSBhcwotICogZnJvbSByZWdpc3RlciBkdW1wcy4KKyAqIFNldHMgYWxzbyB1cCBtbWlvX2RhdGEt PmlndF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRhaW5lZAorICogaW4gQGZpbGUuIFRo aXMgYWxsb3dzIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJldXNlZCBmb3IgZHVtcGluZyBhbmQgZGVj b2RpbmcKKyAqIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcyBmcm9tIHJlZ2lzdGVyIGR1bXBzLgog ICovCiB2b2lkCi1pbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSkKK2ludGVsX21t aW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCBjaGFyICpmaWxl KQogewogCWludCBmZDsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTEwMSwyMiArODYsMjMgQEAgaW50 ZWxfbW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUpCiAJCSAgICAgICJDb3VsZG4ndCBvcGVu ICVzXG4iLCBmaWxlKTsKIAogCWZzdGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1t YXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBm ZCwgMCk7Ci0JaWd0X2ZhaWxfb25fZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwlt bWlvX2RhdGEtPmlndF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJP VF9XUklURSwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+ aWd0X21taW8gPT0gTUFQX0ZBSUxFRCwKIAkJICAgICAgIkNvdWxkbid0IG1tYXAgJXNcbiIsIGZp bGUpOwogCWNsb3NlKGZkKTsKIH0KIAogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgor ICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNp X2RldjogaW50ZWwgZ3JhY3BoaXMgcGNpIGRldmljZQogICoKLSAqIFNldHMgdXAgI2lndF9nbG9i YWxfbW1pbyB0byBwb2ludCBhdCB0aGUgbW1pbyBiYXIuCisgKiBGaWxsIGEgbW1pb19kYXRhIHN0 dWN0dXJlIHdpdGggaWd0X21taW8gdG8gcG9pbnQgYXQgdGhlIG1taW8gYmFyLgogICoKICAqIEBw Y2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCiAgKi8K IHZvaWQKLWludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYs IGludCBmZCkKK2ludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9f ZGF0YSAsc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBmZCkKIHsKIAl1aW50MzJfdCBk ZXZpZCwgZ2VuOwogCWludCBtbWlvX2JhciwgbW1pb19zaXplOwpAQCAtMTQ1LDE0ICsxMzEsMTQg QEAgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50 IGZkKQogCQkJCQkgICAgIHBjaV9kZXYtPnJlZ2lvbnNbbW1pb19iYXJdLmJhc2VfYWRkciwKIAkJ CQkJICAgICBtbWlvX3NpemUsCiAJCQkJCSAgICAgUENJX0RFVl9NQVBfRkxBR19XUklUQUJMRSwK LQkJCQkJICAgICAmaWd0X2dsb2JhbF9tbWlvKTsKKwkJCQkJICAgICAmbW1pb19kYXRhLT5pZ3Rf bW1pbyk7CiAKIAkJaWd0X2ZhaWxfb25fZihlcnJvciAhPSAwLCAiQ291bGRuJ3QgbWFwIE1NSU8g cmVnaW9uXG4iKTsKIAl9IGVsc2UgewogCQkvKiBUaGlzIG1ldGhvZCBpcyBtdWNoIG1vcmUgY29u dmVuaWVudCB3aGVuIHdlIGhhdmUgbWFueQogCQkgKiBjb25jdXJyZW50IFBDSSBkZXZpY2VzCiAJ CSAqLwotCQlpZ3RfZ2xvYmFsX21taW8gPSBpZ3RfZGV2aWNlX21hcF9wY2lfYmFyX3JlZ2lvbihm ZCwgbW1pb19iYXIsCisJCW1taW9fZGF0YS0+aWd0X21taW8gPSBpZ3RfZGV2aWNlX21hcF9wY2lf YmFyX3JlZ2lvbihmZCwgbW1pb19iYXIsCiAJCQkJCQkJCW1taW9fc2l6ZSk7CiAJfQogCkBAIC0x NjcsNiArMTUzLDcgQEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhpbnQgZmQpCiAKIC8qKgogICog aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQ6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1 cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqIEBwY2lfZGV2OiBpbnRlbCBncmFwaGljcyBwY2kgZGV2 aWNlCiAgKiBAc2FmZTogdXNlIHNhZmUgcmVnaXN0ZXIgYWNjZXNzIHRhYmxlcwogICoKQEAgLTE3 NCw3NyArMTYxLDc5IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQogICogaGFuZGxp bmcgYW5kIGFsc28gYWxsb3dzIHJlZ2lzdGVyIGFjY2VzcyB0byBiZSBjaGVja2VkIHdpdGggYW4g ZXhwbGljaXQKICAqIHdoaXRlbGlzdC4KICAqCi0gKiBJdCBhbHNvIGluaXRpYWxpemVzICNpZ3Rf Z2xvYmFsX21taW8gbGlrZSBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCkuCisgKiBJdCBhbHNvIGlu aXRpYWxpemVzIG1taW9fZGF0YS0+aWd0X21taW8gbGlrZSBpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KCkuCiAgKgogICogQHBjaV9kZXYgY2FuIGJlIG9idGFpbmVkIGZyb20gaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKS4KICAqLwogaW50Ci1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgcGNp X2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCkKK2ludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpw Y2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQogewogCWludCByZXQ7CiAKIAkvKiBhZnRlciBvbGQg QVBJIGlzIGRlcHJlY2F0ZWQsIHJlbW92ZSB0aGlzICovCi0JaWYgKGlndF9nbG9iYWxfbW1pbyA9 PSBOVUxMKQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYsIGZkKTsKKwlpZiAobW1p b19kYXRhLT5pZ3RfbW1pbyA9PSBOVUxMKQorCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKG1taW9f ZGF0YSwgcGNpX2RldiwgZmQpOwogCi0JaWd0X2Fzc2VydChpZ3RfZ2xvYmFsX21taW8gIT0gTlVM TCk7CisJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmlndF9tbWlvICE9IE5VTEwpOwogCi0JaWYgKG1t aW9fZGF0YS5pbml0ZWQpCisJaWYgKG1taW9fZGF0YS0+aW5pdGVkKQogCQlyZXR1cm4gLTE7CiAK LQltbWlvX2RhdGEuc2FmZSA9IChzYWZlICE9IDAgJiYKKwltbWlvX2RhdGEtPnNhZmUgPSAoc2Fm ZSAhPSAwICYmCiAJCQlpbnRlbF9nZW4ocGNpX2Rldi0+ZGV2aWNlX2lkKSA+PSA0KSA/IHRydWUg OiBmYWxzZTsKLQltbWlvX2RhdGEuaTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKLQlp ZiAobW1pb19kYXRhLnNhZmUpCi0JCW1taW9fZGF0YS5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJf bWFwKG1taW9fZGF0YS5pOTE1X2RldmlkKTsKKwltbWlvX2RhdGEtPmk5MTVfZGV2aWQgPSBwY2lf ZGV2LT5kZXZpY2VfaWQ7CisJaWYgKG1taW9fZGF0YS0+c2FmZSkKKwkJbW1pb19kYXRhLT5tYXAg PSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS0+aTkxNV9kZXZpZCk7CiAKIAkvKiBG aW5kIHdoZXJlIHRoZSBmb3JjZXdha2UgbG9jayBpcy4gRm9yY2V3YWtlIGRvZXNuJ3QgZXhpc3QK IAkgKiBnZW4gPCA2LCBidXQgdGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdodCB0aGluZ3Mg Zm9yIHVzLgogCSAqLwogCXJldCA9IGlndF9vcGVuX2ZvcmNld2FrZV9oYW5kbGUoZmQpOwogCWlm IChyZXQgPT0gLTEpCi0JCW1taW9fZGF0YS5rZXkgPSBGQUtFS0VZOworCQltbWlvX2RhdGEtPmtl eSA9IEZBS0VLRVk7CiAJZWxzZQotCQltbWlvX2RhdGEua2V5ID0gcmV0OworCQltbWlvX2RhdGEt PmtleSA9IHJldDsKIAotCW1taW9fZGF0YS5pbml0ZWQrKzsKKwltbWlvX2RhdGEtPmluaXRlZCsr OwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVl ZHNfd2FrZSh2b2lkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uoc3RydWN0IF9t bWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSAhPSBGQUtFS0VZ OworCXJldHVybiBtbWlvX2RhdGEtPmtleSAhPSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVs X3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0 cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICoKICAqIFJldHVybnM6CiAgKiBOb24temVybyB3 aGVuIGZvcmNld2FrZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuCiAgKi8KLWludCBpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uodm9pZCkKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfbmVlZHNfZmFrZXdha2Uoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlyZXR1 cm4gbW1pb19kYXRhLmtleSA9PSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEtPmtleSA9PSBG QUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pOgorICogQG1t aW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKgogICogQ2xlYW4g dXAgdGhlIHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqLwogdm9pZAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2Zpbmkodm9pZCkKK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHN0cnVjdCBfbW1pb19kYXRh ICptbWlvX2RhdGEpCiB7Ci0JaWYgKG1taW9fZGF0YS5rZXkgJiYgaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX25lZWRzX3dha2UoKSkKLQkJcmVsZWFzZV9mb3JjZXdha2VfbG9jayhtbWlvX2RhdGEua2V5 KTsKLQltbWlvX2RhdGEuaW5pdGVkLS07CisJaWYgKG1taW9fZGF0YS0+a2V5ICYmIGludGVsX3Jl Z2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKG1taW9fZGF0YSkpCisJCXJlbGVhc2VfZm9yY2V3YWtl X2xvY2sobW1pb19kYXRhLT5rZXkpOworCW1taW9fZGF0YS0+aW5pdGVkLS07CiB9CiAKIC8qKgog ICogaW50ZWxfcmVnaXN0ZXJfcmVhZDoKLSAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRl cgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBA cmVnOiByZWdpc3RlciBvZmZzZXQKICAqCiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIg YXQgQG9mZnNldC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwpAQCAtMjU3 LDIwICsyNDYsMjAgQEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKICAqIFRoZSB2 YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50ZWxfcmVnaXN0 ZXJfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQoraW50ZWxfcmVnaXN0ZXJfcmVh ZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCiB7CiAJc3RydWN0 IGludGVsX3JlZ2lzdGVyX3JhbmdlICpyYW5nZTsKIAl1aW50MzJfdCByZXQ7CiAKLQlpZ3RfYXNz ZXJ0KG1taW9fZGF0YS5pbml0ZWQpOworCWlndF9hc3NlcnQobW1pb19kYXRhLT5pbml0ZWQpOwog Ci0JaWYgKGludGVsX2dlbihtbWlvX2RhdGEuaTkxNV9kZXZpZCkgPj0gNikKLQkJaWd0X2Fzc2Vy dChtbWlvX2RhdGEua2V5ICE9IC0xKTsKKwlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS0+aTkxNV9k ZXZpZCkgPj0gNikKKwkJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAhPSAtMSk7CiAKLQlpZiAo IW1taW9fZGF0YS5zYWZlKQorCWlmICghbW1pb19kYXRhLT5zYWZlKQogCQlnb3RvIHJlYWRfb3V0 OwogCi0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKKwly YW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEtPm1hcCwKIAkJCQkJIHJl ZywKIAkJCQkJIElOVEVMX1JBTkdFX1JFQUQpOwogCkBAIC0yODEsMTQgKzI3MCwxNCBAQCBpbnRl bF9yZWdpc3Rlcl9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCiAJfQogCiByZWFk X291dDoKLQlyZXQgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0 X21taW8gKyByZWcpOworCXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNo YXIgKiltbWlvX2RhdGEtPmlndF9tbWlvICsgcmVnKTsKIG91dDoKIAlyZXR1cm4gcmV0OwogfQog CiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgotICogQGlndF9tbWlvIG1hcGVkIG1lbW9y eSBwb2ludGVyCisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlv bnMKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAq CkBAIC0yOTksMTkgKzI4OCwxOSBAQCBvdXQ6CiAgKiB3aGl0ZSBsaXN0cy4KICAqLwogdm9pZAot aW50ZWxfcmVnaXN0ZXJfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsKQoraW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0 YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7CiAJc3RydWN0IGludGVsX3JlZ2lzdGVy X3JhbmdlICpyYW5nZTsKIAotCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRlZCk7CisJaWd0X2Fz c2VydChtbWlvX2RhdGEtPmluaXRlZCk7CiAKLQlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1 X2RldmlkKSA+PSA2KQotCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5rZXkgIT0gLTEpOworCWlmIChp bnRlbF9nZW4obW1pb19kYXRhLT5pOTE1X2RldmlkKSA+PSA2KQorCQlpZ3RfYXNzZXJ0KG1taW9f ZGF0YS0+a2V5ICE9IC0xKTsKIAotCWlmICghbW1pb19kYXRhLnNhZmUpCisJaWYgKCFtbWlvX2Rh dGEtPnNhZmUpCiAJCWdvdG8gd3JpdGVfb3V0OwogCi0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0 ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5n ZShtbWlvX2RhdGEtPm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVMX1JBTkdFX1dSSVRFKTsK IApAQCAtMzE5LDcgKzMwOCw3IEBAIGludGVsX3JlZ2lzdGVyX3dyaXRlKHZvaWQgKmlndF9tbWlv LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIAkJICAgICAgIlJlZ2lzdGVyIHdyaXRlIGJs b2NrZWQgZm9yIHNhZmV0eSAiIigqMHglMDh4ID0gMHgleClcbiIsIHJlZywgdmFsKTsKIAogd3Jp dGVfb3V0OgotCSoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfbW1p byArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAq KW1taW9fZGF0YS0+aWd0X21taW8gKyByZWcpID0gdmFsOwogfQogCiAKQEAgLTMzMSw3ICszMjAs NyBAQCB3cml0ZV9vdXQ6CiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0 IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aGVuIHRoZQogICogbmV3IHJlZ2lzdGVy IGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgpLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3Rf Z2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgorICogVGhpcyBmdW5jdGlvbiBkaXJl Y3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgogICoKICAq IFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KQEAgLTM0OSw3 ICszMzgsNyBAQCB1aW50MzJfdCBJTlJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQog ICogMTYtYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBAcmVnLiBUaGlzIGZ1bmN0 aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKICAqIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGlz IGluaXRpYWxpemVkIHdpdGggaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqCi0gKiBU aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhv dXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhl IGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqCiAgKiBSZXR1cm5zOgogICogVGhl IHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCkBAIC0zNjcsNyArMzU2LDcgQEAgdWludDE2 X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogICogOC1iaXQgcmVhZCBv ZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3 aGVuIHRoZQogICogbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0 aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gZGly ZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tz LgorICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0aG91 dCBzYWZldHkgY2hlY2tzLgogICoKICAqIFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9t IHRoZSByZWdpc3Rlci4KQEAgLTM4Nyw3ICszNzYsNyBAQCB1aW50OF90IElOUkVHOCh2b2lkICpp Z3RfbW1pbywgdWludDMyX3QgcmVnKQogICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBo ZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo KS4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2Jh bF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkg YWNjZXNzZXMgdGhlIGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqLwogdm9pZCBP VVRSRUcodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewpAQCAt NDAzLDcgKzM5Miw3IEBAIHZvaWQgT1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCkKICAqIHdoZW4gdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGlz IGluaXRpYWxpemVkIHdpdGgKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCiAgKgot ICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3 aXRob3V0IHNhZmV0eSBjaGVja3MuCisgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2Vz IHRoZSBpZ3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCiAgKi8KIHZvaWQgT1VUUkVHMTYo dm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQogewpAQCAtNDIwLDcg KzQwOSw3IEBAIHZvaWQgT1VUUkVHMTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWlu dDE2X3QgdmFsKQogICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5p dGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqCi0gKiBU aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhv dXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhl IGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqLwogdm9pZCBPVVRSRUc4KHZvaWQg KmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewpkaWZmIC0tZ2l0IGEvdGVz dHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3ku YwppbmRleCAzOWY0NDFkMi4uZTM2MzYxZDggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfbGF0ZW5jeS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCkBAIC02Miw2 ICs2Miw5IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IHJpbmdfc2l6ZTsKIHN0YXRpYyBkb3VibGUg cmNzX2Nsb2NrOwogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlv X2RhdGEgbW1pb19kYXRhOworCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwgdW5zaWdu ZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTY4MCw3ICs2ODMsOSBAQCBpZ3RfbWFp bgogCQlpZiAocmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7CiAKLQkJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGRl dmljZSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dl dF9wY2lfZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOworCQlpZ3RfZ2xvYmFsX21taW8gPSBtbWlv X2RhdGEuaWd0X21taW87CisKIAkJcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGRldmljZSwgUkNTX1RJ TUVTVEFNUCk7CiAJCWlndF9pbmZvKCJSQ1MgdGltZXN0YW1wIGNsb2NrOiAlLjBmS0h6LCAlLjFm bnNcbiIsCiAJCQkgcmNzX2Nsb2NrIC8gMWUzLCAxZTkgLyByY3NfY2xvY2spOwpkaWZmIC0tZ2l0 IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJz ZS5jCmluZGV4IDQyM2Q2ZWE2Li45OGIwNTI2NyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1f ZXhlY19wYXJzZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwpAQCAtNTgsNiAr NTgsOSBAQAogCiBzdGF0aWMgaW50IHBhcnNlcl92ZXJzaW9uOwogCit2b2lkICppZ3RfZ2xvYmFs X21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOworCiBzdGF0aWMgaW50 IGNvbW1hbmRfcGFyc2VyX3ZlcnNpb24oaW50IGZkKQogewogCWludCB2ZXJzaW9uID0gLTE7CkBA IC0yODQsOSArMjg3LDkgQEAgdGVzdF9scmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVj dCB0ZXN0X2xyaSAqdGVzdCkKIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3Rf dmFsLAogCQkgIGV4cGVjdGVkX2Vycm5vLCBleHBlY3QpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3Jp dGUoaWd0X2dsb2JhbF9tbWlvLCB0ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKKwlpbnRlbF9y ZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCB0ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKIAot CWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywg dGVzdC0+cmVnKSAmCisJaWd0X2Fzc2VydF9lcV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1t aW9fZGF0YSwgdGVzdC0+cmVnKSAmCiAJCQkgICB0ZXN0LT5yZWFkX21hc2spLAogCQkJICB0ZXN0 LT5pbml0X3ZhbCk7CiAKQEAgLTI5Niw3ICsyOTksNyBAQCB0ZXN0X2xyaShpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSwgc3RydWN0IHRlc3RfbHJpICp0ZXN0KQogCQkgICBleHBlY3RlZF9lcnJubyk7 CiAJZ2VtX3N5bmMoZmQsIGhhbmRsZSk7CiAKLQlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVn aXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21taW8sIHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFf dTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgogCQkJICAg dGVzdC0+cmVhZF9tYXNrKSwKIAkJCSAgZXhwZWN0KTsKIH0KQEAgLTUzMCw3ICs1MzMsOCBAQCBp Z3RfbWFpbgogI3VuZGVmIFJFRwogCiAJCWlndF9maXh0dXJlIHsKLQkJCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGZkKTsKKwkJCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IGZkKTsKKwkJCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAkJfQogCiAJ CWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShscmlzKTsgaSsrKSB7CkBAIC01NDMsNyAr NTQ3LDcgQEAgaWd0X21haW4KIAkJfQogCiAJCWlndF9maXh0dXJlIHsKLQkJCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCk7CisJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19k YXRhKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyBi L3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKaW5kZXggZjY5Yzg4ZjYuLmNiYmU2YTRiIDEwMDY0 NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9w bV9scHNwLmMKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUg PHVuaXN0ZC5oPgogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlv X2RhdGEgbW1pb19kYXRhOwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c19scHNwKHVpbnQzMl90IGRl dmlkKQogewpAQCAtMjEwLDcgKzIxMiw4IEBAIGlndF9tYWluCiAKIAkJaWd0X3JlcXVpcmUoc3Vw cG9ydHNfbHBzcChkZXZpZCkpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVs X2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWln dF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCQlrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7CiAJfQpAQCAtMjI3LDcgKzIzMCw3IEBAIGlndF9tYWluCiAJaWd0X2Zp eHR1cmUgewogCQlpbnQgaTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCQlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAkJZm9yIChpID0gMDsgaSA8 IGRybV9yZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykKIAkJCWRybU1vZGVGcmVlQ29ubmVjdG9y KGRybV9jb25uZWN0b3JzW2ldKTsKIAkJZHJtTW9kZUZyZWVSZXNvdXJjZXMoZHJtX3Jlcyk7CmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMgYi90b29scy9pbnRlbF9hdWRpb19k dW1wLmMKaW5kZXggODY2NjQ0NzguLjk4NGM3ZGE0IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9h dWRpb19kdW1wLmMKKysrIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCkBAIC00MSw2ICs0MSw4 IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKIAogc3RhdGljIGludCBhdWRfcmVnX2Jhc2UgPSAw OwkvKiBiYXNlIGFkZHJlc3Mgb2YgYXVkaW8gcmVnaXN0ZXJzICovCiBzdGF0aWMgaW50IGRpc3Bf cmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8KK3Zv aWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7 CiAKICNkZWZpbmUgSVNfSEFTV0VMTF9QTFVTKGRldmlkKSAgKElTX0hBU1dFTEwoZGV2aWQpIHx8 IElTX0JST0FEV0VMTChkZXZpZCkpCiAKQEAgLTI0OTgsOSArMjUwMCwxMCBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZG9fc2VsZl90ZXN0cygpOwogCiAJaWYgKGFyZ2MgPT0g MikKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGFyZ3ZbMV0pOworCQlpbnRlbF9tbWlvX3Vz ZV9kdW1wX2ZpbGUoJm1taW9fZGF0YSwgYXJndlsxXSk7CiAJZWxzZQotCQlpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKHBjaV9kZXYsIC0xKTsKKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19k YXRhLCBwY2lfZGV2LCAtMSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlv OwogCiAJcHJpbnRmKCIlcyBhdWRpbyByZWdpc3RlcnM6XG5cbiIsIGludGVsX2dldF9kZXZpY2Vf aW5mbyhkZXZpZCktPmNvZGVuYW1lKTsKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZpZCkpIHsKZGlm ZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0 LmMKaW5kZXggODVkMDk5ZDcuLjRlNmFkNGJiIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9iYWNr bGlnaHQuYworKysgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwpAQCAtMzUsMTIgKzM1LDE1IEBA CiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCiAKIC8qIFhYWCBQQ0ggb25seSB0b2RheSAqLworc3Rh dGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsK IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogCXVpbnQzMl90IGN1cnJlbnQs IG1heDsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg LTEpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAog CWN1cnJlbnQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCkgJiBCQUNL TElHSFRfRFVUWV9DWUNMRV9NQVNLOwogCW1heCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxD X1BXTV9QQ0hfQ1RMMikgPj4gMTY7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9kaXNwbGF5X3Bv bGxlci5jIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwppbmRleCBlMTA5NGQzOS4uYWY3 ZTQwY2MgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKKysrIGIvdG9v bHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwpAQCAtNTksNiArNTksOCBAQCBlbnVtIHRlc3Qgewog CiBzdGF0aWMgdWludDMyX3Qgdmx2X29mZnNldDsKIHN0YXRpYyB1aW50MTZfdCBwaXBlX29mZnNl dFszXSA9IHsgMCwgMHgxMDAwLCAweDIwMDAsIH07Cit2b2lkICppZ3RfZ2xvYmFsX21taW87Citz dGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAjZGVmaW5lIFBJUEVfUkVHKHBp cGUsIHJlZ19hKSAocGlwZV9vZmZzZXRbKHBpcGUpXSArIChyZWdfYSkpCiAKQEAgLTExODcsNyAr MTE4OSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWJyZWFrOwogCX0K IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9t bWlvOwogCiAJcHJpbnRmKCIlcz9cbiIsIHRlc3RfbmFtZSh0ZXN0LCBwaXBlLCBiaXQsIHRlc3Rf cGl4ZWxjb3VudCkpOwogCkBAIC0xMjYyLDcgKzEyNjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQlhc3NlcnQoMCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWlm IChxdWl0KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQu YyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwppbmRleCBlMDU3ZjVmZS4uZTUyZGI1ZWQgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYworKysgYi90b29scy9pbnRlbF9mb3Jj ZXdha2VkLmMKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAKIGJvb2wg ZGFlbW9uaXplZDsKK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9f ZGF0YSBtbWlvX2RhdGE7CiAKICNkZWZpbmUgSU5GT19QUklOVCguLi4pIFwKIAlkbyB7IFwKQEAg LTU5LDcgKzYxLDcgQEAgaGVscChjaGFyICpwcm9nKSB7CiBzdGF0aWMgaW50CiBpc19hbGl2ZSh2 b2lkKSB7CiAJLyogUmVhZCB0aGUgdGltZXN0YW1wLCB3aGljaCBzaG91bGQgKmFsbW9zdCogYWx3 YXlzIGJlICEwICovCi0JcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1p bywgMHgyMzU4KSAhPSAwKTsKKwlyZXR1cm4gKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0 YSwgMHgyMzU4KSAhPSAwKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK QEAgLTgwLDcgKzgyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJSU5G T19QUklOVCgic3RhcnRlZCBkYWVtb24iKTsKIAl9CiAKLQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7CisJcmV0ID0gaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MSwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAlpZiAocmV0 KSB7CiAJCUlORk9fUFJJTlQoIkNvdWxkbid0IGluaXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKIAkJ ZXhpdCgxKTsKQEAgLTkwLDE0ICs5MywxNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCXdoaWxlKDEpIHsKIAkJaWYgKCFpc19hbGl2ZSgpKSB7CiAJCQlJTkZPX1BSSU5UKCJn cHUgcmVzZXQ/IHJlc3RhcnRpbmcgZGFlbW9uXG4iKTsKLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7Ci0JCQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAxLCAtMSk7CisJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1p b19kYXRhKTsKKwkJCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEs IGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKKwkJCWlndF9nbG9iYWxfbW1pbyA9IG1t aW9fZGF0YS5pZ3RfbW1pbzsKIAkJCWlmIChyZXQpCiAJCQkJSU5GT19QUklOVCgiUmVnIGFjY2Vz cyBpbml0IGZhaWxcbiIpOwogCQl9CiAJCXNsZWVwKDEpOwogCX0KLQlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwog CUlORk9fUFJJTlQoIkZvcmNld2FrZSB1bmxvY2tcbiIpOwogCiAJaWYgKGRhZW1vbml6ZWQpIHsK ZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMgYi90b29scy9pbnRlbF9ncHVfdGlt ZS5jCmluZGV4IGQ5MGI4MTZhLi5kN2FjZmQyYiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZ3B1 X3RpbWUuYworKysgYi90b29scy9pbnRlbF9ncHVfdGltZS5jCkBAIC00MSw2ICs0MSw4IEBACiAj ZGVmaW5lIFNBTVBMRVNfUEVSX1NFQyAgICAgICAgICAgICAxMDAwMAogCiBzdGF0aWMgdm9sYXRp bGUgaW50IGdvZGRvOwordm9pZCAqaWd0X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1p b19kYXRhIG1taW9fZGF0YTsKIAogc3RhdGljIHBpZF90IHNwYXduKGNoYXIgKiphcmd2KQogewpA QCAtNjcsNyArNjksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJc3RhdGlj IHN0cnVjdCBydXNhZ2UgcnVzYWdlOwogCWludCBzdGF0dXM7CiAKLQlpbnRlbF9tbWlvX3VzZV9w Y2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsKKwlpZ3RfZ2xvYmFs X21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlpZiAoYXJnYyA9PSAxKSB7CiAJCWZwcmlu dGYoc3RkZXJyLCAidXNhZ2U6ICVzIGNtZCBbYXJncy4uLl1cbiIsIGFyZ3ZbMF0pOwpkaWZmIC0t Z2l0IGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5j CmluZGV4IDY4OWY1ZmFhLi42MzNhNWUxMCAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfaW5mb2Zy YW1lcy5jCisrKyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwpAQCAtMjYyLDYgKzI2Miw4IEBA IGNvbnN0IGNoYXIgKmRpcF9mcmVxdWVuY3lfbmFtZXNbXSA9IHsKIAkicmVzZXJ2ZWQgKGludmFs aWQpIgogfTsKIAordm9pZCAqaWd0X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19k YXRhIG1taW9fZGF0YTsKIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2OwogaW50IGdlbiA9IDA7 CiAKQEAgLTExMDgsNyArMTExMCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJICAgICAgICIgcGVyZmVjdGx5OiB0aGUgS2VybmVsIG1pZ2h0IHVuZG8gb3VyIGNoYW5nZXMu XG4iKTsKIAogCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwotCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBwY2lfZGV2LCAwLCAtMSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1p b19kYXRhLmlndF9tbWlvOwogCWludGVsX2NoZWNrX3BjaCgpOwogCiAJaWYgKElTX0dFTjQocGNp X2Rldi0+ZGV2aWNlX2lkKSkKQEAgLTEyNTYsNiArMTI1OSw2IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJfQogCiBvdXQ6Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAlyZXR1cm4gcmV0 OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMgYi90b29scy9pbnRlbF9s M19wYXJpdHkuYwppbmRleCAwMTRhYzlmMS4uN2E0NjFhNTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2lu dGVsX2wzX3Bhcml0eS5jCisrKyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jCkBAIC00NCw2ICs0 NCw4IEBACiAjaW5jbHVkZSAiaW50ZWxfbDNfcGFyaXR5LmgiCiAKIHN0YXRpYyB1bnNpZ25lZCBp bnQgZGV2aWQ7Cit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlvX2Rh dGEgbW1pb19kYXRhOwogLyogTDMgc2l6ZSBpcyBhbHdheXMgYSBmdW5jdGlvbiBvZiBiYW5rcy4g VGhlIG51bWJlciBvZiBiYW5rcyBjYW5ub3QgYmUKICAqIGRldGVybWluZWQgYnkgbnVtYmVyIG9m IHNsaWNlcyBob3dldmVyICovCiBzdGF0aWMgaW5saW5lIGludCBudW1fYmFua3Modm9pZCkgewpA QCAtMTg5LDcgKzE5MSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYg KGludGVsX2dlbihkZXZpZCkgPCA3IHx8IElTX1ZBTExFWVZJRVcoZGV2aWQpKQogCQlleGl0KDc3 KTsKIAotCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCBkZXZpY2UpID09IDApOworCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkZXZpY2UpID09IDAp OworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWRpciA9IGlndF9z eXNmc19vcGVuKGRldmljZSk7CiAKQEAgLTIxMSw3ICsyMTQsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCSAqIG5vdy4gSnVzdCBiZSBhd2FyZSBvZiB0aGlzIGlmIGZvciBz b21lIHJlYXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKIAkgKiB3aGVuIHVzaW5nIHRoaXMgdG9vbC4K IAkgKi8KLQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywgMHhiMDM4 KTsKKwlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIDB4YjAzOCk7CiAKIAl3 aGlsZSAoMSkgewogCQlpbnQgYywgb3B0aW9uX2luZGV4ID0gMDsKQEAgLTM1NywxMiArMzYwLDEx IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYXNzZXJ0KGkgPCAyKTsK IAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBzbGljZSAqLwogCQkJCWRmdCB8PSAxIDw8IDA7IC8qIGVu YWJsZSAqLwotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKGlndF9nbG9iYWxfbW1pbywgMHhiMDM4 LAotCQkJCQkJICAgICBkZnQpOworCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEs IDB4YjAzOCwgZGZ0KTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3UnOgotCQkJCWludGVsX3JlZ2lz dGVyX3dyaXRlKGlndF9nbG9iYWxfbW1pbywgMHhiMDM4LAotCQkJCQkJICAgICBkZnQgJiB+KDEg PDwgMCkpOworCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIDB4YjAzOCwgZGZ0 ICYKKwkJCQkJCSAgICAgfigxIDw8IDApKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ0wnOgogCQkJ CWJyZWFrOwpAQCAtMzcxLDcgKzM3Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCX0KIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCWlmIChhY3Rpb24gPT0gJ2wnKQogCQll eGl0KEVYSVRfU1VDQ0VTUyk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2xpZC5jIGIvdG9v bHMvaW50ZWxfbGlkLmMKaW5kZXggYTQxMzJkNTYuLmM1ODk4MjJiIDEwMDY0NAotLS0gYS90b29s cy9pbnRlbF9saWQuYworKysgYi90b29scy9pbnRlbF9saWQuYwpAQCAtNTIsNiArNTIsOSBAQCBl bnVtIGxpZF9zdGF0dXMgewogI2RlZmluZSBBQ1BJX0JVVFRPTiAiL3Byb2MvYWNwaS9idXR0b24v IgogI2RlZmluZSBBQ1BJX0xJRCAiL3Byb2MvYWNwaS9idXR0b24vbGlkLyIKIAordm9pZCAqaWd0 X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKKwogc3Rh dGljIGludCBpODMwX2x2ZHNfYWNwaV9saWRfc3RhdGUodm9pZCkKIHsKIAlpbnQgZmQ7CkBAIC0x MTksNyArMTIyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWludCBz d2YxNCwgYWNwaV9saWQ7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lf ZGV2aWNlKCksIC0xKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0 X21taW87CiAKIAl3aGlsZSAoMSkgewogCQlzd2YxNCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg U1dGMTQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29scy9p bnRlbF9wYW5lbF9maXR0ZXIuYwppbmRleCAyNjg0M2Q3Yy4uOTY2M2QwY2MgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRl ci5jCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCiAjaW5jbHVkZSAi ZHJtdGVzdC5oIgogCit2b2lkICppZ3RfZ2xvYmFsX21taW87CitzdGF0aWMgc3RydWN0IF9tbWlv X2RhdGEgbW1pb19kYXRhOwogaW50IGdlbjsKIAogdWludDMyX3QgSFRPVEFMW10gICAgID0geyAw eDYwMDAwLCAweDYxMDAwLCAweDYyMDAwIH07CkBAIC0yODAsNyArMjgyLDggQEAgaW50IG1haW4g KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICAgICAgICJzb2x1dGlvbiB0aGF0IG1heSBvciBt YXkgbm90IHdvcmsuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrLlxuIik7CiAKIAlwY2lfZGV2ID0g aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lf ZGV2LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgcGNp X2RldiwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAlk ZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICghSEFTX1BDSF9TUExJVChkZXZpZCkp IHsKQEAgLTM0Miw2ICszNDUsNiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQg YS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgYi90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJz LmMKaW5kZXggYmU1NzNiNTUuLjM4ZjcxNDE5IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wZXJm X2NvdW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCkBAIC0zMDAsNiAr MzAwLDggQEAgdWludDMyX3QgKnRvdGFsczsKIHVpbnQzMl90ICpsYXN0X2NvdW50ZXI7CiBzdGF0 aWMgZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwogc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaDsKK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBt bWlvX2RhdGE7CiAKIC8qIERXMCAqLwogI2RlZmluZSBHRU41X01JX1JFUE9SVF9QRVJGX0NPVU5U ICgoMHgyNiA8PCAyMykgfCAoMyAtIDIpKQpAQCAtNDgzLDEwICs0ODUsMTIgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob2Fjb250cm9sKSB7CiAJCS8qIEZvcmNld2FrZSAq LwotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAw LCBmZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dl dF9wY2lfZGV2aWNlKCksCisJCQkJCSAgIDAsIGZkKTsKKwkJaWd0X2dsb2JhbF9tbWlvID0gbW1p b19kYXRhLmlndF9tbWlvOwogCiAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwot CQlpbnRlbF9yZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIE9BQ09OVFJPTCwKKwkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgT0FDT05UUk9MLAogCQkJCSAgICAgY291bnRl cl9mb3JtYXQgPDwKIAkJCQkgICAgIE9BQ09OVFJPTF9DT1VOVEVSX1NFTEVDVF9TSElGVCB8CiAJ CQkJICAgICBQRVJGT1JNQU5DRV9DT1VOVEVSX0VOQUJMRSk7CkBAIC01MjEsMTAgKzUyNSwxMCBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChvYWNvbnRyb2wpIHsKIAkJLyog RGlzYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShp Z3RfZ2xvYmFsX21taW8sIE9BQ09OVFJPTCwgMCk7CisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZt bWlvX2RhdGEsIE9BQ09OVFJPTCwgMCk7CiAKIAkJLyogRm9yY2V3YWtlICovCi0JCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlv X2RhdGEpOwogCX0KIAogCWZyZWUodG90YWxzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3Jl Zy5jIGIvdG9vbHMvaW50ZWxfcmVnLmMKaW5kZXggZGViZDhjOWEuLjNhOTA1ODlmIDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9yZWcuYworKysgYi90b29scy9pbnRlbF9yZWcuYwpAQCAtODQsNiAr ODQsOSBAQCBzdHJ1Y3QgY29uZmlnIHsKIAlpbnQgdmVyYm9zaXR5OwogfTsKIAordm9pZCAqaWd0 X2dsb2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKKwogLyog cG9ydCBkZXNjIG11c3QgaGF2ZSBiZWVuIHNldCAqLwogc3RhdGljIGludCBzZXRfcmVnX2J5X2Fk ZHIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsCiAJCQkgICB1aW50MzJf dCBhZGRyKQpAQCAtMzkwLDcgKzM5Myw3IEBAIHN0YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1 Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcgKnJlZywgdWludDMyX3QgKnZhbHApCiAJCQkJ cmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJdmFsID0gaW50ZWxf aW9zZl9zYl9yZWFkKGlndF9nbG9iYWxfbW1pbywgcmVnLT5wb3J0X2Rlc2MucG9ydCwKKwkJdmFs ID0gaW50ZWxfaW9zZl9zYl9yZWFkKCZtbWlvX2RhdGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsCiAJ CQkJCSByZWctPmFkZHIpOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNTU4LDkgKzU2MSwxMCBA QCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIAlpZiAoY29uZmlnLT5tbWlvZmlsZSkKLQkJaW50ZWxf bW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOworCQlpbnRlbF9tbWlvX3VzZV9k dW1wX2ZpbGUoJm1taW9fZGF0YSwgY29uZmlnLT5tbWlvZmlsZSk7CiAJZWxzZQotCQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdChjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKKwkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJ aWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJZm9yIChpID0gMTsgaSA8 IGFyZ2M7IGkrKykgewogCQlzdHJ1Y3QgcmVnIHJlZzsKQEAgLTU3Niw3ICs1ODAsNyBAQCBzdGF0 aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlyZXR1cm4gRVhJVF9T VUNDRVNTOwogfQpAQCAtNTkwLDcgKzU5NCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3dyaXRl KHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcmV0dXJu IEVYSVRfRkFJTFVSRTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChjb25maWct PnBjaV9kZXYsIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5p Z3RfbW1pbzsKIAogCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpICs9IDIpIHsKIAkJc3RydWN0IHJl ZyByZWc7CkBAIC02MTUsNyArNjIwLDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3Ry dWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl3cml0ZV9yZWdp c3Rlcihjb25maWcsICZyZWcsIHZhbCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXJldHVy biBFWElUX1NVQ0NFU1M7CiB9CkBAIC02MjYsOSArNjMxLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxf cmVnX2R1bXAoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQog CWludCBpOwogCiAJaWYgKGNvbmZpZy0+bW1pb2ZpbGUpCi0JCWludGVsX21taW9fdXNlX2R1bXBf ZmlsZShjb25maWctPm1taW9maWxlKTsKKwkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKCZtbWlv X2RhdGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KCZtbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1p byA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKIAogCWZvciAoaSA9IDA7IGkgPCBjb25maWctPnJlZ2Nv dW50OyBpKyspIHsKIAkJcmVnID0gJmNvbmZpZy0+cmVnc1tpXTsKQEAgLTY0MCw3ICs2NDYsNyBA QCBzdGF0aWMgaW50IGludGVsX3JlZ19kdW1wKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJZHVtcF9yZWdpc3Rlcihjb25maWcsICZjb25maWctPnJlZ3Nb aV0pOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQpA QCAtNjU0LDcgKzY2MCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3NuYXBzaG90KHN0cnVjdCBj b25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcmV0dXJuIEVYSVRfRkFJ TFVSRTsKIAl9CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGNvbmZpZy0+cGNpX2RldiwgLTEp OworCWludGVsX21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAt MSk7CisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwogCiAJLyogWFhYOiBl cnJvciBoYW5kbGluZyAqLwogCWlmICh3cml0ZSgxLCBpZ3RfZ2xvYmFsX21taW8sIGNvbmZpZy0+ cGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jhcl0uc2l6ZSkgPT0gLTEpCmRpZmYgLS1naXQgYS90b29s cy9pbnRlbF9yZWdfY2hlY2tlci5jIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwppbmRleCAx ZDQwY2Q4Mi4uMWNjOWZhNzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMK KysrIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwpAQCAtMzIsNiArMzIsOSBAQAogc3RhdGlj IHVpbnQzMl90IGRldmlkOwogc3RhdGljIGludCBnZW47CiAKK3N0YXRpYyBzdHJ1Y3QgX21taW9f ZGF0YSBtbWlvX2RhdGE7Cit2b2lkICppZ3RfZ2xvYmFsX21taW87CisKIHN0YXRpYyB1aW50MzJf dAogcmVhZF9hbmRfcHJpbnRfcmVnKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHJlZykKIHsK QEAgLTM0NSw3ICszNDgsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKIAlk ZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwogCWRldmlkID0gZGV2LT5kZXZpY2VfaWQ7Ci0J aW50ZWxfbW1pb191c2VfcGNpX2JhcihkZXYsIC0xKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KCZtbWlvX2RhdGEsIGRldiwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3Rf bW1pbzsKIAogCWlmIChJU19HRU43KGRldmlkKSkKIAkJZ2VuID0gNzsKZGlmZiAtLWdpdCBhL3Rv b2xzL2ludGVsX3dhdGVybWFyay5jIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKaW5kZXggMzcy OTQ3ZGUuLjNmMjY3ZmE2IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF93YXRlcm1hcmsuYworKysg Yi90b29scy9pbnRlbF93YXRlcm1hcmsuYwpAQCAtMzUsNiArMzUsOCBAQAogCiBzdGF0aWMgdWlu dDMyX3QgZGlzcGxheV9iYXNlOwogc3RhdGljIHVpbnQzMl90IGRldmlkOwordm9pZCAqaWd0X2ds b2JhbF9tbWlvOworc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogc3RhdGlj IHVpbnQzMl90IHJlYWRfcmVnKHVpbnQzMl90IGFkZHIpCiB7CkBAIC0yNDksNyArMjUxLDggQEAg c3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBwbGFuZV9jdGxbbnVtX3Bp cGVzXVttYXhfcGxhbmVzXTsKIAl1aW50MzJfdCB3bV9saW5ldGltZVtudW1fcGlwZXNdOwogCi0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEp OworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87 CiAKIAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgbnVtX3BpcGVzOyBwaXBlKyspIHsKIAkJaW50IG51 bV9wbGFuZXMgPSBza2xfbnVtX3BsYW5lcyhkZXZpZCwgcGlwZSk7CkBAIC00NjksNyArNDcyLDgg QEAgc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIAlpbnQgbnVtX3BpcGVzID0gaW50ZWxf Z2VuKGRldmlkKSA+PSA3ID8gMyA6IDI7CiAJc3RydWN0IGlsa193bSB3bSA9IHt9OwogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAK IAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspIHsKIAkJZHNwY250cltpXSA9IHJlYWRf cmVnKDB4NzAxODAgKyBpICogMHgxMDAwKTsKQEAgLTUwNSw3ICs1MDksNyBAQCBzdGF0aWMgdm9p ZCBpbGtfd21fZHVtcCh2b2lkKQogCWlmIChJU19CUk9BRFdFTEwoZGV2aWQpIHx8IElTX0hBU1dF TEwoZGV2aWQpKQogCQl3bV9taXNjID0gcmVhZF9yZWcoMHg0NTI2MCk7CiAKLQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2Rh dGEpOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9waXBlczsgaSsrKQogCQlwcmludGYoIiAgICBX TV9QSVBFXyVjID0gMHglMDh4XG4iLCBwaXBlX25hbWUoaSksIHdtX3BpcGVbaV0pOwpAQCAtNjE5 LDcgKzYyMyw4IEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgZHNw X3NzX3BtLCBkZHJfc2V0dXAyOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307 CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAw LCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3Rf bW1pbzsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWRzcGFyYjIgPSByZWFkX3Jl ZygweDcwMDYwKTsKQEAgLTY1MCwxMyArNjU1LDEzIEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1w KHZvaWQpCiAKIAkJZGRsMyA9IHJlYWRfcmVnKDB4NzAwNTgpOwogCi0JCWludGVsX3B1bml0X3Jl YWQoaWd0X2dsb2JhbF9tbWlvLCAweDM2LCAmZHNwX3NzX3BtKTsKLQkJaW50ZWxfcHVuaXRfcmVh ZChpZ3RfZ2xvYmFsX21taW8sIDB4MTM5LCAmZGRyX3NldHVwMik7CisJCWludGVsX3B1bml0X3Jl YWQoJm1taW9fZGF0YSwgMHgzNiwgJmRzcF9zc19wbSk7CisJCWludGVsX3B1bml0X3JlYWQoJm1t aW9fZGF0YSwgMHgxMzksICZkZHJfc2V0dXAyKTsKIAl9IGVsc2UgewogCQlmdzcgPSByZWFkX3Jl ZygweDcwMDdjKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgIEZX MSA9IDB4JTA4eFxuIiwgZncxKTsKIAlwcmludGYoIiAgICAgICAgRlcyID0gMHglMDh4XG4iLCBm dzIpOwpAQCAtODM1LDcgKzg0MCw4IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiAJ dWludDMyX3QgbWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0g e307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5p Z3RfbW1pbzsKIAogCWRzcGFjbnRyID0gcmVhZF9yZWcoMHg3MDE4MCk7CiAJZHNwYmNudHIgPSBy ZWFkX3JlZygweDcxMTgwKTsKQEAgLTg0Niw3ICs4NTIsNyBAQCBzdGF0aWMgdm9pZCBnNHhfd21f ZHVtcCh2b2lkKQogCW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJ bWlfYXJiX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlw cmludGYoIiAgICAgICAgICAgICBEU1BBQ05UUiA9IDB4JTA4eFxuIiwgZHNwYWNudHIpOwogCXBy aW50ZigiICAgICAgICAgICAgIERTUEJDTlRSID0gMHglMDh4XG4iLCBkc3BiY250cik7CkBAIC05 MjEsNyArOTI3LDggQEAgc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3Qg bWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7 CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsK IAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQp OwpAQCAtOTMwLDcgKzkzNyw3IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCW1p X2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRlID0g cmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgICAg ICAgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKIAlwcmludGYoIiAgICAgICAgICAgICAg ICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAgLTk5Miw3ICs5OTksOCBAQCBzdGF0aWMgdm9p ZCBwbnZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGNicjsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNb TUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlv X2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21taW8g PSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlm dzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTEwMDIsNyArMTAxMCw3IEBAIHN0YXRpYyB2b2lk IHBudl93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgy MGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRh KTsKIAogCXByaW50ZigiICAgICAgICAgICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIp OwogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEpOwpAQCAt MTA4Miw3ICsxMDkwLDggQEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAJdWludDMy X3QgbWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAK LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgMCwgLTEpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1p bzsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWluc3RwbSA9IHJlYWRfcmVnKDB4 MjBjMCk7CkBAIC0xMDkwLDcgKzEwOTksNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9p ZCkKIAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRlID0gcmVh ZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgIERTUEFS QiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKIAlwcmludGYoIiAgICAgIEZXX0JMQyA9IDB4JTAxNiIg UFJJeDY0ICJcbiIsIGZ3X2JsYyk7CkBAIC0xMTUxLDcgKzExNjAsOCBAQCBzdGF0aWMgdm9pZCBn ZW4yX3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBtaV9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3 bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZt bWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpZ3RfZ2xvYmFsX21t aW8gPSBtbWlvX2RhdGEuaWd0X21taW87CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsK IAltZW1fbW9kZSA9IHJlYWRfcmVnKDB4MjBjYyk7CkBAIC0xMTU5LDcgKzExNjksNyBAQCBzdGF0 aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKIAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBl MCk7CiAJbWlfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAog CXByaW50ZigiICAgICBEU1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICBN RU1fTU9ERSA9IDB4JTA4eFxuIiwgbWVtX21vZGUpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=