From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6B9E6E343 for ; Fri, 16 Aug 2019 14:53:33 +0000 (UTC) From: Daniel Mrzyglod Date: Fri, 16 Aug 2019 16:53:17 +0200 Message-Id: <20190816145317.4227-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190816145317.4227-1-daniel.t.mrzyglod@intel.com> References: <20190816145317.4227-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v7 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 List-ID: TGlicmFyeSAgd2FzIGxpbWl0ZWQgZm9yIHJlYWRpbmcgcmVnaXN0ZXJzIGZvciBvbmx5Cm9uZSBk ZXZpY2UgYXQgYSB0aW1lIGluIGlndCB0ZXN0cy4KQ2hhbmdlcyBpbiB0aGlzIHBhdGNoIGdpdmUg YXMgb3BvcnR1bml0eSB0byB0ZXN0IG11bHRpcGxlIGRldmljZXMgaW4KdGhlIHNhbWUgdGltZS4K CnY3OiByZW1vdmUgdW5uZWNlc3NhcnkgY29kZQp2NjogUmV3b3JkIHBhdGNoLiBDb3NtZXRpYyBj aGFuZ2VzLgoKQ2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVs LmNvbT4KQ2M6IERhbmllbGUgU3B1cmlvIENlcmFvbG8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0Bp bnRlbC5jb20+CkNjOiBLYXRhcnp5bmEgRGVjIDxrYXRhcnp5bmEuZGVjQGludGVsLmNvbT4KQ2M6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogUGV0cmkgTGF0dmFs YSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+CkNjOiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpi aWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBaYmlnbmlldyBLZW1w Y3p5xYRza2kgPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog RGFuaWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogYmVuY2ht YXJrcy9nZW1fbGF0ZW5jeS5jICAgICAgfCAgIDMgKy0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAg ICAgICAgIHwgICAzICstCiBsaWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgICB8ICA4MiArKysr KysrKysrKysrKysrLS0tLS0tLS0tCiBsaWIvaW50ZWxfaW9zZi5jICAgICAgICAgICAgICB8ICA3 NCArKysrKysrKysrKysrLS0tLS0tLS0tLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAgICAg fCAxMTEgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1f ZXhlY19sYXRlbmN5LmMgfCAgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwg IDEzICsrLS0KIHRlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMgIHwgICAzICstCiB0ZXN0cy9p OTE1L2k5MTVfcG1fbHBzcC5jICAgICB8ICAgNiArLQogdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5j ICAgICAgfCAgIDYgKy0KIHRvb2xzL2ludGVsX2JhY2tsaWdodC5jICAgICAgIHwgICAzICstCiB0 b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jICB8ICAgNSArLQogdG9vbHMvaW50ZWxfZm9yY2V3 YWtlZC5jICAgICAgfCAgMTUgKystLS0KIHRvb2xzL2ludGVsX2dwdV90aW1lLmMgICAgICAgIHwg ICAzICstCiB0b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgICAgICB8ICAgNSArLQogdG9vbHMvaW50 ZWxfbDNfcGFyaXR5LmMgICAgICAgfCAgMTEgKystLQogdG9vbHMvaW50ZWxfbGlkLmMgICAgICAg ICAgICAgfCAgIDMgKy0KIHRvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgIHwgICA1ICstCiB0 b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgICB8ICAxMCArLS0KIHRvb2xzL2ludGVsX3JlZy5j ICAgICAgICAgICAgIHwgIDIzICsrKy0tLS0KIHRvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgICAg IHwgICAzICstCiB0b29scy9pbnRlbF93YXRlcm1hcmsuYyAgICAgICB8ICA0MiArKysrKysrLS0t LS0tCiAyMiBmaWxlcyBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9ucygrKSwgMTgzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyBiL2JlbmNobWFya3MvZ2Vt X2xhdGVuY3kuYwppbmRleCBjM2ZjNGJmMC4uNTY5ZmFhNTggMTAwNjQ0Ci0tLSBhL2JlbmNobWFy a3MvZ2VtX2xhdGVuY3kuYworKysgYi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKQEAgLTU1LDYg KzU1LDcgQEAKIHN0YXRpYyBpbnQgZG9uZTsKIHN0YXRpYyBpbnQgZmQ7CiBzdGF0aWMgdm9sYXRp bGUgdWludDMyX3QgKnRpbWVzdGFtcF9yZWc7CitzdGF0aWMgc3RydWN0IG1taW9fZGF0YSBtbWlv X2RhdGE7CiAKICNkZWZpbmUgUkVHKHgpICh2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUg Y2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHgpCiAjZGVmaW5lIFJFR19PRkZTRVQoeCkgKCh2b2xh dGlsZSBjaGFyICopKHgpIC0gKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8pCkBAIC00 NTYsNyArNDU3LDcgQEAgc3RhdGljIGludCBydW4oaW50IHNlY29uZHMsCiAJaWYgKGdlbiA8IDYp CiAJCXJldHVybiBJR1RfRVhJVF9TS0lQOyAvKiBOZWVkcyBCQ1MgdGltZXN0YW1wICovCiAKLQlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBmYWxzZSwg ZmQpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9w Y2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CiAKIAlpZiAoZ2VuID09IDYpCiAJCXRpbWVzdGFtcF9y ZWcgPSBSRUcoUkNTX1RJTUVTVEFNUCk7CmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2lt LmMgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKaW5kZXggYTc2ZmRiZmUuLjNjNzQwMWRmIDEwMDY0 NAotLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5j CkBAIC0yMzgsNiArMjM4LDcgQEAgc3RydWN0IHdvcmtsb2FkCiAJfSBidXN5X2JhbGFuY2VyOwog fTsKIAorc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQg aW50IG5vcF9jYWxpYnJhdGlvbl91cyA9IDEwMDA7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBub3Bf Y2FsaWJyYXRpb247CiAKQEAgLTMwNzEsNyArMzA3Miw3IEBAIHN0YXRpYyB2b2lkIGluaXRfY2xv Y2tzKHZvaWQpCiAJdWludDMyX3QgcmNzX3N0YXJ0LCByY3NfZW5kOwogCWRvdWJsZSBvdmVyaGVh ZCwgdDsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNl KCksIGZhbHNlLCBmZCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwg aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKIAogCWlmICh2ZXJib3NlIDw9IDEp CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9pby5oIGIvbGliL2ludGVsX2lvLmgK aW5kZXggOTljYjE4MjkuLjM3MGE5YWIxIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfaW8uaAorKysg Yi9saWIvaW50ZWxfaW8uaApAQCAtMzAsMTcgKzMwLDQzIEBACiAKICNpbmNsdWRlIDxzdGRpbnQu aD4KICNpbmNsdWRlIDxwY2lhY2Nlc3MuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CiAKLS8qIHJl Z2lzdGVyIGFjY2VzcyBoZWxwZXJzIGZyb20gaW50ZWxfbW1pby5jICovCiBleHRlcm4gdm9pZCAq aWd0X2dsb2JhbF9tbWlvOwotdm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBwY2lf ZGV2aWNlICpwY2lfZGV2KTsKLXZvaWQgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZp bGUpOwogCi1pbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2Ug KnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpOwotdm9pZCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSh2b2lkKTsKLXVpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKTsK LXZvaWQgaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwot aW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZSh2b2lkKTsKKy8qIHJlZ2lz dGVyIGFjY2VzcyBoZWxwZXJzIGZyb20gaW50ZWxfbW1pby5jICovCitzdHJ1Y3QgaW50ZWxfcmVn aXN0ZXJfcmFuZ2UgeworCXVpbnQzMl90IGJhc2U7CisJdWludDMyX3Qgc2l6ZTsKKwl1aW50MzJf dCBmbGFnczsKK307CisKK3N0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgeworCXN0cnVjdCBpbnRl bF9yZWdpc3Rlcl9yYW5nZSAqbWFwOworCXVpbnQzMl90IHRvcDsKKwl1aW50MzJfdCBhbGlnbm1l bnRfbWFzazsKK307CisKK3N0cnVjdCBtbWlvX2RhdGEgeworCWludCBpbml0ZWQ7CisJYm9vbCBz YWZlOworCXVpbnQzMl90IGk5MTVfZGV2aWQ7CisJc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBt YXA7CisJaW50IGtleTsKKwl2b2lkICppZ3RfbW1pbzsKK307CisKK3ZvaWQgaW50ZWxfbW1pb191 c2VfcGNpX2JhcihzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsCisJCQkgICAgc3RydWN0IHBj aV9kZXZpY2UgKnBjaV9kZXYpOwordm9pZCBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoc3RydWN0 IG1taW9fZGF0YSAqbW1pb19kYXRhLCBjaGFyICpmaWxlKTsKKworaW50IGludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICAgICBzdHJ1 Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCk7Cit2b2lkIGludGVsX3Jl Z2lzdGVyX2FjY2Vzc19maW5pKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSk7Cit1aW50MzJf dCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMy X3QgcmVnKTsKK3ZvaWQgaW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCByZWcsCisJCQkgIHVpbnQzMl90IHZhbCk7CitpbnQgaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSk7 CiAKIHVpbnQzMl90IElOUkVHKHVpbnQzMl90IHJlZyk7CiB1aW50MTZfdCBJTlJFRzE2KHVpbnQz Ml90IHJlZyk7CkBAIC01NywxNyArODMsMjQgQEAgdm9pZCBPVVRSRUcxNl9ERVYodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKTsKIHZvaWQgT1VUUkVHOF9ERVYodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwogCiAvKiBzaWRlYmFuZCBh Y2Nlc3MgZnVuY3Rpb25zIGZyb20gaW50ZWxfaW9zZi5jICovCi11aW50MzJfdCBpbnRlbF9kcGlv X3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSk7Ci12b2lkIGludGVsX2RwaW9fcmVnX3dy aXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKLXVpbnQzMl90IGludGVs X2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKTsKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdf d3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwotdWludDMyX3QgaW50ZWxfaW9zZl9z Yl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX2lvc2Zfc2Jf d3JpdGUodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwotCi1pbnQg aW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKLWludCBpbnRl bF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwotaW50IGludGVsX25j X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7Ci1pbnQgaW50ZWxfbmNfd3JpdGUo dWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKK3VpbnQzMl90IGludGVsX2RwaW9fcmVnX3Jl YWQoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsCisJCQkgICAgIGlu dCBwaHkpOwordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKK3VpbnQz Ml90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZShzdHJ1Y3QgbW1pb19k YXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgdWludDMyX3QgdmFsKTsKK3Vp bnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHBvcnQsCisJCQkgICAgdWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfaW9zZl9zYl93 cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOworCitpbnQgaW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3Qg bW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgdWludDMyX3QgKnZh bCk7CitpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCBhZGRyLAorCQkgICAgICB1aW50MzJfdCB2YWwpOworaW50IGludGVsX25jX3JlYWQo c3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFs KTsKK2ludCBpbnRlbF9uY193cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAKIC8qIHJlZ2lzdGVyIG1hcHMgZnJvbSBpbnRlbF9y ZWdfbWFwLmMgKi8KICNpZm5kZWYgX19HVEtfRE9DX0lHTk9SRV9fCkBAIC03OCwxNyArMTExLDYg QEAgaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAjZGVm aW5lIElOVEVMX1JBTkdFX1JXCQkoSU5URUxfUkFOR0VfUkVBRCB8IElOVEVMX1JBTkdFX1dSSVRF KQogI2RlZmluZSBJTlRFTF9SQU5HRV9FTkQJCSgxPDwzMSkKIAotc3RydWN0IGludGVsX3JlZ2lz dGVyX3JhbmdlIHsKLQl1aW50MzJfdCBiYXNlOwotCXVpbnQzMl90IHNpemU7Ci0JdWludDMyX3Qg ZmxhZ3M7Ci19OwotCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKLQlzdHJ1Y3QgaW50ZWxf cmVnaXN0ZXJfcmFuZ2UgKm1hcDsKLQl1aW50MzJfdCB0b3A7Ci0JdWludDMyX3QgYWxpZ25tZW50 X21hc2s7Ci19Owogc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCBpbnRlbF9nZXRfcmVnaXN0ZXJf bWFwKHVpbnQzMl90IGRldmlkKTsKIHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxf Z2V0X3JlZ2lzdGVyX3JhbmdlKHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJf dCBvZmZzZXQsIHVpbnQzMl90IG1vZGUpOwogI2VuZGlmIC8qIF9fR1RLX0RPQ19JR05PUkVfXyAq LwpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvc2YuYyBiL2xpYi9pbnRlbF9pb3NmLmMKaW5kZXgg M2I1YTEzNzAuLmU3YTg5OTUzIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfaW9zZi5jCisrKyBiL2xp Yi9pbnRlbF9pb3NmLmMKQEAgLTE5LDggKzE5LDggQEAKIC8qIFByaXZhdGUgcmVnaXN0ZXIgd3Jp dGUsIGRvdWJsZS13b3JkIGFkZHJlc3NpbmcsIG5vbi1wb3N0ZWQgKi8KICNkZWZpbmUgU0JfQ1JX UkRBX05QICAgMHgwNwogCi1zdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0 LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKLQkJCSAgIHVpbnQzMl90ICp2YWwpCitz dGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHBvcnQsCisJCQkgICB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwgdWludDMy X3QgKnZhbCkKIHsKIAlpbnQgdGltZW91dCA9IDA7CiAJdWludDMyX3QgY21kLCBkZXZmbiwgYmUs IGJhcjsKQEAgLTM0LDIyICszNCwyNCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50 MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKIAkJKHBvcnQgPDwgSU9T Rl9QT1JUX1NISUZUKSB8IChiZSA8PCBJT1NGX0JZVEVfRU5BQkxFU19TSElGVCkgfAogCQkoYmFy IDw8IElPU0ZfQkFSX1NISUZUKTsKIAotCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NG X0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kpIHsKKwlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVh ZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgorCSAgICBJT1NGX1NCX0JVU1kp IHsKIAkJaWd0X3dhcm4oIndhcm5pbmc6IHBjb2RlICglcykgbWFpbGJveCBhY2Nlc3MgZmFpbGVk XG4iLCBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIik7CiAJCXJldHVybiAtRUFHQUlOOwogCX0K IAotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0FERFIsIGFkZHIpOworCWludGVsX3Jl Z2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfQUREUiwgYWRkcik7CiAJaWYgKCFpc19y ZWFkKQotCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9EQVRBLCAqdmFsKTsKKwkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRhLCBWTFZfSU9TRl9EQVRBLCAqdmFsKTsKIAotCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKKwlpbnRlbF9y ZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKIAog CWRvIHsKIAkJdXNsZWVwKDEpOwogCQl0aW1lb3V0Kys7Ci0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0 ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZICYmCi0JCSB0aW1l b3V0IDwgVElNRU9VVF9VUyk7CisJfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2Rh dGEtPmlndF9tbWlvLAorCQkJCSAgICAgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCisJCUlPU0Zf U0JfQlVTWSAmJiB0aW1lb3V0IDwgVElNRU9VVF9VUyk7CiAKIAlpZiAodGltZW91dCA+PSBUSU1F T1VUX1VTKSB7CiAJCWlndF93YXJuKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIHBjb2RlICVzICglZCkg dG8gZmluaXNoXG4iLCBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIiwgYWRkcik7CkBAIC01Nyw4 ICs1OSw4IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4 X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogCX0KIAogCWlmIChpc19yZWFkKQotCQkqdmFsID0g aW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9EQVRBKTsKLQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShWTFZfSU9TRl9EQVRBLCAwKTsKKwkJKnZhbCA9IGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19k YXRhLT5pZ3RfbW1pbywgVkxWX0lPU0ZfREFUQSk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1p b19kYXRhLT5pZ3RfbW1pbywgVkxWX0lPU0ZfREFUQSwgMCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTczLDkgKzc1LDEwIEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQs IHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogICogUmV0dXJuczoKICAqIDAgd2hlbiB0 aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWls dXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAq dmFsKQoraW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewotCXJldHVybiB2bHZfc2lkZWJhbmRfcnco SU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsIHZhbCk7CisJcmV0dXJuIHZsdl9z aWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JSRERBX05QLCBhZGRy LAorCQkJICAgICAgIHZhbCk7CiB9CiAKIC8qKgpAQCAtODgsOSArOTEsMTAgQEAgaW50IGludGVs X3B1bml0X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKICAqIFJldHVybnM6CiAg KiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNv ZGUgb24gZmFpbHVyZS4KICAqLwotaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFkZHIs IHVpbnQzMl90IHZhbCkKK2ludCBpbnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgbW1pb19kYXRhICpt bWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3Np ZGViYW5kX3J3KElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKKwly ZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUldS REFfTlAsIGFkZHIsCisJCQkgICAgICAgJnZhbCk7CiB9CiAKIC8qKgpAQCAtMTAzLDkgKzEwNywx MCBAQCBpbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQog ICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVn YXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfcmVhZCh1aW50 MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQoraW50IGludGVsX25jX3JlYWQoc3RydWN0IG1taW9f ZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewotCXJldHVy biB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX05DLCBTQl9DUlJEREFfTlAsIGFkZHIsIHZhbCk7 CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JS RERBX05QLCBhZGRyLAorCQkJICAgICAgIHZhbCk7CiB9CiAKIC8qKgpAQCAtMTE4LDkgKzEyMywx MCBAQCBpbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICog UmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRp dmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfbmNfd3JpdGUodWludDMy X3QgYWRkciwgdWludDMyX3QgdmFsKQoraW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBtbWlvX2Rh dGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotCXJldHVybiB2 bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOwor CXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfTkMsIFNCX0NSV1JE QV9OUCwgYWRkciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoqCkBAIC0xMzMsMTQgKzEzOSwx NiBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICog UmV0dXJuczoKICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50 MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKK3VpbnQzMl90 IGludGVsX2RwaW9fcmVnX3JlYWQoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJf dCByZWcsIGludCBwaHkpCiB7CiAJdWludDMyX3QgdmFsOwogCiAJaWYgKHBoeSA9PSAwKQotCQl2 bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKKwkJ dmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01SRF9OUCwgcmVn LAorCQkJCSZ2YWwpOwogCWVsc2UKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPXzIs IFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9T Rl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJcmV0dXJuIHZhbDsK IH0KIApAQCAtMTUyLDM4ICsxNjAsNDAgQEAgdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1 aW50MzJfdCByZWcsIGludCBwaHkpCiAgKgogICogMzItYml0IHdyaXRlIG9mIHRoZSByZWdpc3Rl ciBhdCBAb2Zmc2V0IHRocm91Z2ggdGhlIERQSU8gc2lkZWJhbmQgcG9ydC4KICAqLwotdm9pZCBp bnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkK K3ZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkKIHsKIAlpZiAocGh5ID09IDApCi0J CXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCByZWcsICZ2YWwpOwor CQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJTywgU0JfTVdSX05QLCBy ZWcsICZ2YWwpOwogCWVsc2UKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPXzIsIFNC X01XUl9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9Q T1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsCisJCQkJJnZhbCk7CiB9CiAKLXVpbnQzMl90IGlu dGVsX2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKQordWludDMyX3QgaW50ZWxfZmxpc2Rz aV9yZWdfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZykKIHsK IAl1aW50MzJfdCB2YWwgPSAwOwogCi0Jdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9GTElTRFNJ LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwg SU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKIAogCXJldHVybiB2 YWw7CiB9CiAKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50 MzJfdCB2YWwpCit2b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jdmx2X3NpZGViYW5k X3J3KElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3Np ZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JEQV9OUCwgcmVn LCAmdmFsKTsKIH0KIAotdWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHVpbnQzMl90IHBvcnQs IHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZChzdHJ1Y3QgbW1pb19k YXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZykKIHsKIAl1aW50MzJf dCB2YWw7CiAKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwp OworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAm dmFsKTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50 MzJfdCBwb3J0LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfaW9zZl9z Yl93cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkg dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jdmx2X3NpZGViYW5kX3J3KHBvcnQsIFNC X0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBwb3J0 LCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CiB9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfbW1p by5jIGIvbGliL2ludGVsX21taW8uYwppbmRleCAwMTQxMWMzNy4uN2RjZWZiZjcgMTAwNjQ0Ci0t LSBhL2xpYi9pbnRlbF9tbWlvLmMKKysrIGIvbGliL2ludGVsX21taW8uYwpAQCAtNzAsNTcgKzcw LDU3IEBACiAgKgogICogUG9pbnRlciB0byB0aGUgcmVnaXN0ZXIgcmFuZ2UsIGluaXRpYWxpemVk IHVzaW5nIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkKICAqIG9yIGludGVsX21taW9fdXNl X2R1bXBfZmlsZSgpLiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZGlyZWN0bHku CisgKiBUaGlzIHBvaW50ZXIgaXMgdmFsaWQgb25seSBmb3Igb25lIGRybSBkZXZpY2UuCiAgKi8K IHZvaWQgKmlndF9nbG9iYWxfbW1pbzsKIAotc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIHsKLQlp bnQgaW5pdGVkOwotCWJvb2wgc2FmZTsKLQl1aW50MzJfdCBpOTE1X2RldmlkOwotCXN0cnVjdCBp bnRlbF9yZWdpc3Rlcl9tYXAgbWFwOwotCWludCBrZXk7Ci19IG1taW9fZGF0YTsKLQogLyoqCiAg KiBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGU6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1 cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqIEBmaWxlOiBuYW1lIG9mIHRoZSByZWdpc3RlciBkdW1w IGZpbGUgdG8gb3BlbgogICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBh dCB0aGUgZGF0YSBjb250YWluZWQgaW4gQGZpbGUuIFRoaXMgYWxsb3dzCi0gKiB0aGUgc2FtZSBj b2RlIHRvIGdldCByZXVzZWQgZm9yIGR1bXBpbmcgYW5kIGRlY29kaW5nIGZyb20gcnVubmluZyBo YXJkd2FyZSBhcwotICogZnJvbSByZWdpc3RlciBkdW1wcy4KKyAqIFNldHMgYWxzbyB1cCBtbWlv X2RhdGEtPmlndF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRhaW5lZAorICogaW4gQGZp bGUuIFRoaXMgYWxsb3dzIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJldXNlZCBmb3IgZHVtcGluZyBh bmQgZGVjb2RpbmcKKyAqIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcyBmcm9tIHJlZ2lzdGVyIGR1 bXBzLgogICovCiB2b2lkCi1pbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSkKK2lu dGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIg KmZpbGUpCiB7CiAJaW50IGZkOwogCXN0cnVjdCBzdGF0IHN0OwogCisJbWVtc2V0KG1taW9fZGF0 YSwgMCwgc2l6ZW9mKHN0cnVjdCBtbWlvX2RhdGEpKTsKIAlmZCA9IG9wZW4oZmlsZSwgT19SRFdS KTsKIAlpZ3RfZmFpbF9vbl9mKGZkID09IC0xLAogCQkgICAgICAiQ291bGRuJ3Qgb3BlbiAlc1xu IiwgZmlsZSk7CiAKIAlmc3RhdChmZCwgJnN0KTsKLQlpZ3RfZ2xvYmFsX21taW8gPSBtbWFwKE5V TEwsIHN0LnN0X3NpemUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSwgZmQsIDAp OwotCWlndF9mYWlsX29uX2YoaWd0X2dsb2JhbF9tbWlvID09IE1BUF9GQUlMRUQsCisJbW1pb19k YXRhLT5pZ3RfbW1pbyA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJ VEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisJaWd0X2ZhaWxfb25fZihtbWlvX2RhdGEtPmlndF9t bWlvID09IE1BUF9GQUlMRUQsCiAJCSAgICAgICJDb3VsZG4ndCBtbWFwICVzXG4iLCBmaWxlKTsK KworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21taW87CisKIAljbG9zZShmZCk7 CiB9CiAKIC8qKgogICogaW50ZWxfbW1pb191c2VfcGNpX2JhcjoKKyAqIEBtbWlvX2RhdGE6ICBt bWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICogQHBjaV9kZXY6IGludGVsIGdyYWNw aGlzIHBjaSBkZXZpY2UKICAqCi0gKiBTZXRzIHVwICNpZ3RfZ2xvYmFsX21taW8gdG8gcG9pbnQg YXQgdGhlIG1taW8gYmFyLgorICogRmlsbCBhIG1taW9fZGF0YSBzdHVjdHVyZSB3aXRoIGlndF9t bWlvIHRvIHBvaW50IGF0IHRoZSBtbWlvIGJhci4KICAqCiAgKiBAcGNpX2RldiBjYW4gYmUgb2J0 YWluZWQgZnJvbSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgogICovCiB2b2lkCi1pbnRlbF9tbWlv X3VzZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQoraW50ZWxfbW1pb191c2Vf cGNpX2JhcihzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpw Y2lfZGV2KQogewogCXVpbnQzMl90IGRldmlkLCBnZW47CiAJaW50IG1taW9fYmFyLCBtbWlvX3Np emU7CiAJaW50IGVycm9yOwogCisJbWVtc2V0KG1taW9fZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBt bWlvX2RhdGEpKTsKIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAlpZiAoSVNfR0VOMihk ZXZpZCkpCiAJCW1taW9fYmFyID0gMTsKQEAgLTEzOSw3ICsxMzksOSBAQCBpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQogCQkJCSAgICAgIHBjaV9kZXYt PnJlZ2lvbnNbbW1pb19iYXJdLmJhc2VfYWRkciwKIAkJCQkgICAgICBtbWlvX3NpemUsCiAJCQkJ ICAgICAgUENJX0RFVl9NQVBfRkxBR19XUklUQUJMRSwKLQkJCQkgICAgICAmaWd0X2dsb2JhbF9t bWlvKTsKKwkJCQkgICAgICAmbW1pb19kYXRhLT5pZ3RfbW1pbyk7CisKKwlpZ3RfZ2xvYmFsX21t aW8gPSBtbWlvX2RhdGEtPmlndF9tbWlvOwogCiAJaWd0X2ZhaWxfb25fZihlcnJvciAhPSAwLAog CQkgICAgICAiQ291bGRuJ3QgbWFwIE1NSU8gcmVnaW9uXG4iKTsKQEAgLTE1Myw2ICsxNTUsNyBA QCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBmZCkKIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdDoKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3Bl cmF0aW9ucwogICogQHBjaV9kZXY6IGludGVsIGdyYXBoaWNzIHBjaSBkZXZpY2UKICAqIEBzYWZl OiB1c2Ugc2FmZSByZWdpc3RlciBhY2Nlc3MgdGFibGVzCiAgKgpAQCAtMTYwLDc2ICsxNjMsNzcg QEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhpbnQgZmQpCiAgKiBoYW5kbGluZyBhbmQgYWxzbyBh bGxvd3MgcmVnaXN0ZXIgYWNjZXNzIHRvIGJlIGNoZWNrZWQgd2l0aCBhbiBleHBsaWNpdAogICog d2hpdGVsaXN0LgogICoKLSAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgI2lndF9nbG9iYWxfbW1pbyBs aWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIoKS4KKyAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgbW1p b19kYXRhLT5pZ3RfbW1pbyBsaWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIoKS4KICAqCiAgKiBA cGNpX2RldiBjYW4gYmUgb2J0YWluZWQgZnJvbSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgogICov CiBpbnQKLWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2LCBpbnQgc2FmZSwgaW50IGZkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0 IG1taW9fZGF0YSAqbW1pb19kYXRhLCBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNh ZmUsIGludCBmZCkKIHsKIAlpbnQgcmV0OwogCi0JLyogYWZ0ZXIgb2xkIEFQSSBpcyBkZXByZWNh dGVkLCByZW1vdmUgdGhpcyAqLwotCWlmIChpZ3RfZ2xvYmFsX21taW8gPT0gTlVMTCkKLQkJaW50 ZWxfbW1pb191c2VfcGNpX2JhcihwY2lfZGV2KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKG1t aW9fZGF0YSwgcGNpX2Rldik7CiAKLQlpZ3RfYXNzZXJ0KGlndF9nbG9iYWxfbW1pbyAhPSBOVUxM KTsKKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aWd0X21taW8gIT0gTlVMTCk7CiAKLQlpZiAobW1p b19kYXRhLmluaXRlZCkKKwlpZiAobW1pb19kYXRhLT5pbml0ZWQpCiAJCXJldHVybiAtMTsKIAot CW1taW9fZGF0YS5zYWZlID0gKHNhZmUgIT0gMCAmJgorCW1taW9fZGF0YS0+c2FmZSA9IChzYWZl ICE9IDAgJiYKIAkJCWludGVsX2dlbihwY2lfZGV2LT5kZXZpY2VfaWQpID49IDQpID8gdHJ1ZSA6 IGZhbHNlOwotCW1taW9fZGF0YS5pOTE1X2RldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwotCWlm IChtbWlvX2RhdGEuc2FmZSkKLQkJbW1pb19kYXRhLm1hcCA9IGludGVsX2dldF9yZWdpc3Rlcl9t YXAobW1pb19kYXRhLmk5MTVfZGV2aWQpOworCW1taW9fZGF0YS0+aTkxNV9kZXZpZCA9IHBjaV9k ZXYtPmRldmljZV9pZDsKKwlpZiAobW1pb19kYXRhLT5zYWZlKQorCQltbWlvX2RhdGEtPm1hcCA9 IGludGVsX2dldF9yZWdpc3Rlcl9tYXAobW1pb19kYXRhLT5pOTE1X2RldmlkKTsKIAogCS8qIEZp bmQgd2hlcmUgdGhlIGZvcmNld2FrZSBsb2NrIGlzLiBGb3JjZXdha2UgZG9lc24ndCBleGlzdAog CSAqIGdlbiA8IDYsIGJ1dCB0aGUgZGVidWdmcyBzaG91bGQgZG8gdGhlIHJpZ2h0IHRoaW5ncyBm b3IgdXMuCiAJICovCiAJcmV0ID0gaWd0X29wZW5fZm9yY2V3YWtlX2hhbmRsZShmZCk7CiAJaWYg KHJldCA9PSAtMSkKLQkJbW1pb19kYXRhLmtleSA9IEZBS0VLRVk7CisJCW1taW9fZGF0YS0+a2V5 ID0gRkFLRUtFWTsKIAllbHNlCi0JCW1taW9fZGF0YS5rZXkgPSByZXQ7CisJCW1taW9fZGF0YS0+ a2V5ID0gcmV0OwogCi0JbW1pb19kYXRhLmluaXRlZCsrOworCW1taW9fZGF0YS0+aW5pdGVkKys7 CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLWludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVk c193YWtlKHZvaWQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZShzdHJ1Y3QgbW1p b19kYXRhICptbWlvX2RhdGEpCiB7Ci0JcmV0dXJuIG1taW9fZGF0YS5rZXkgIT0gRkFLRUtFWTsK KwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgIT0gRkFLRUtFWTsKIH0KIAogLyoqCiAgKiBpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2U6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1 Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAgKiBSZXR1cm5zOgogICogTm9uLXplcm8gd2hl biBmb3JjZXdha2UgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgogICovCi1pbnQgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpCitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X25lZWRzX2Zha2V3YWtlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKLQlyZXR1cm4g bW1pb19kYXRhLmtleSA9PSBGQUtFS0VZOworCXJldHVybiBtbWlvX2RhdGEtPmtleSA9PSBGQUtF S0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pOgorICogQG1taW9f ZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKgogICogQ2xlYW4gdXAg dGhlIHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaW5pdGlhbGl6ZWQgd2l0aAogICogaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqLwogdm9pZAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkodm9pZCkKK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHN0cnVjdCBtbWlvX2RhdGEgKm1t aW9fZGF0YSkKIHsKLQlpZiAobW1pb19kYXRhLmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf bmVlZHNfd2FrZSgpKQotCQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS5rZXkpOwot CW1taW9fZGF0YS5pbml0ZWQtLTsKKwlpZiAobW1pb19kYXRhLT5rZXkgJiYgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX25lZWRzX3dha2UobW1pb19kYXRhKSkKKwkJcmVsZWFzZV9mb3JjZXdha2VfbG9j ayhtbWlvX2RhdGEtPmtleSk7CisJbW1pb19kYXRhLT5pbml0ZWQtLTsKIH0KIAogLyoqCiAgKiBp bnRlbF9yZWdpc3Rlcl9yZWFkOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJ TyBvcGVyYXRpb25zCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqCiAgKiAzMi1iaXQgcmVh ZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdo ZW4gdGhlIG5ldwpAQCAtMjQyLDIwICsyNDYsMjAgQEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkodm9pZCkKICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50 MzJfdAotaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCitpbnRlbF9yZWdpc3Rlcl9y ZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXN0cnVj dCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFuZ2U7CiAJdWludDMyX3QgcmV0OwogCi0JaWd0X2Fz c2VydChtbWlvX2RhdGEuaW5pdGVkKTsKKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aW5pdGVkKTsK IAotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCi0JCWlndF9hc3Nl cnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbihtbWlvX2RhdGEtPmk5MTVf ZGV2aWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkgIT0gLTEpOwogCi0JaWYg KCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2FmZSkKIAkJZ290byByZWFkX291 dDsKIAotCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS5tYXAsCisJ cmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAsCiAJCQkJCSBy ZWcsCiAJCQkJCSBJTlRFTF9SQU5HRV9SRUFEKTsKIApAQCAtMjY2LDEzICsyNzAsMTQgQEAgaW50 ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCiAJfQogCiByZWFkX291dDoKLQlyZXQgPSAq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsg cmVnKTsKKwlyZXQgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopbW1p b19kYXRhLT5pZ3RfbW1pbyArIHJlZyk7CiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAogLyoqCiAg KiBpbnRlbF9yZWdpc3Rlcl93cml0ZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBm b3IgSU8gb3BlcmF0aW9ucwogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAgKiBAdmFsOiB2YWx1 ZSB0byB3cml0ZQogICoKQEAgLTI4MywxOSArMjg4LDE5IEBAIG91dDoKICAqIHdoaXRlIGxpc3Rz LgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCkKK2ludGVsX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7CiAJc3RydWN0IGludGVsX3JlZ2lzdGVyX3Jh bmdlICpyYW5nZTsKIAotCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRlZCk7CisJaWd0X2Fzc2Vy dChtbWlvX2RhdGEtPmluaXRlZCk7CiAKLQlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2Rl dmlkKSA+PSA2KQotCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5rZXkgIT0gLTEpOworCWlmIChpbnRl bF9nZW4obW1pb19kYXRhLT5pOTE1X2RldmlkKSA+PSA2KQorCQlpZ3RfYXNzZXJ0KG1taW9fZGF0 YS0+a2V5ICE9IC0xKTsKIAotCWlmICghbW1pb19kYXRhLnNhZmUpCisJaWYgKCFtbWlvX2RhdGEt PnNhZmUpCiAJCWdvdG8gd3JpdGVfb3V0OwogCi0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJf cmFuZ2UobW1pb19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZSht bWlvX2RhdGEtPm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVMX1JBTkdFX1dSSVRFKTsKIApA QCAtMzAzLDcgKzMwOCw3IEBAIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWlu dDMyX3QgdmFsKQogCQkgICAgICAiUmVnaXN0ZXIgd3JpdGUgYmxvY2tlZCBmb3Igc2FmZXR5ICIi KCoweCUwOHggPSAweCV4KVxuIiwgcmVnLCB2YWwpOwogCiB3cml0ZV9vdXQ6Ci0JKih2b2xhdGls ZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2 YWw7CisJKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKW1taW9fZGF0YS0+ aWd0X21taW8gKyByZWcpID0gdmFsOwogfQogCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2Vt X2V4ZWNfbGF0ZW5jeS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKaW5kZXggZTU2 ZDYyNzguLmI5NmE4NDA5IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3ku YworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYwpAQCAtNjEsNiArNjEsOCBAQAog CiBzdGF0aWMgdW5zaWduZWQgaW50IHJpbmdfc2l6ZTsKIHN0YXRpYyBkb3VibGUgcmNzX2Nsb2Nr Oworc3RhdGljIHN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOworCiAKIHN0YXRpYyB2b2lkCiBw b2xsX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBjb25zdCBjaGFyICpuYW1lKQpAQCAtNjY3 LDcgKzY2OSw3IEBAIGlndF9tYWluCiAJCWlmIChyaW5nX3NpemUgPiAxMDI0KQogCQkJcmluZ19z aXplID0gMTAyNDsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCBmYWxzZSwgZGV2aWNlKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGRldmljZSk7CiAJCXJj c19jbG9jayA9IGNsb2NrcmF0ZShkZXZpY2UsIFJDU19USU1FU1RBTVApOwogCQlpZ3RfaW5mbygi UkNTIHRpbWVzdGFtcCBjbG9jazogJS4wZktIeiwgJS4xZm5zXG4iLAogCQkJIHJjc19jbG9jayAv IDFlMywgMWU5IC8gcmNzX2Nsb2NrKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNf cGFyc2UuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwppbmRleCA2MmU4ZDBhNS4uZWY5 N2ZmNGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYworKysgYi90ZXN0 cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMKQEAgLTU4LDYgKzU4LDkgQEAKIAogc3RhdGljIGludCBw YXJzZXJfdmVyc2lvbjsKIAorc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CisKKwogc3RhdGlj IGludCBjb21tYW5kX3BhcnNlcl92ZXJzaW9uKGludCBmZCkKIHsKIAlpbnQgdmVyc2lvbiA9IC0x OwpAQCAtMjg0LDkgKzI4Nyw5IEBAIHRlc3RfbHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBz dHJ1Y3QgdGVzdF9scmkgKnRlc3QpCiAJCSAgdGVzdC0+bmFtZSwgdGVzdC0+cmVnLCB0ZXN0LT50 ZXN0X3ZhbCwKIAkJICBleHBlY3RlZF9lcnJubywgZXhwZWN0KTsKIAotCWludGVsX3JlZ2lzdGVy X3dyaXRlKHRlc3QtPnJlZywgdGVzdC0+aW5pdF92YWwpOworCWludGVsX3JlZ2lzdGVyX3dyaXRl KCZtbWlvX2RhdGEsIHRlc3QtPnJlZywgdGVzdC0+aW5pdF92YWwpOwogCi0JaWd0X2Fzc2VydF9l cV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQodGVzdC0+cmVnKSAmCisJaWd0X2Fzc2VydF9lcV91 MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9fZGF0YSwgdGVzdC0+cmVnKSAmCiAJCQkgICB0 ZXN0LT5yZWFkX21hc2spLAogCQkJICB0ZXN0LT5pbml0X3ZhbCk7CiAKQEAgLTI5Niw3ICsyOTks NyBAQCB0ZXN0X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3RfbHJpICp0 ZXN0KQogCQkgICBleHBlY3RlZF9lcnJubyk7CiAJZ2VtX3N5bmMoZmQsIGhhbmRsZSk7CiAKLQlp Z3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKKwlpZ3Rf YXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZCgmbW1pb19kYXRhLCB0ZXN0LT5yZWcp ICYKIAkJCSAgIHRlc3QtPnJlYWRfbWFzayksCiAJCQkgIGV4cGVjdCk7CiB9CkBAIC01MzAsNyAr NTMzLDcgQEAgaWd0X21haW4KICN1bmRlZiBSRUcKIAogCQlpZ3RfZml4dHVyZSB7Ci0JCQlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBmZCk7CisJ CQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCBmZCk7CiAJCX0KIAogCQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo bHJpcyk7IGkrKykgewpAQCAtNTQzLDcgKzU0Niw3IEBAIGlndF9tYWluCiAJCX0KIAogCQlpZ3Rf Zml4dHVyZSB7Ci0JCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCQkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMgYi90ZXN0cy9pOTE1L2dlbV93b3JrYXJvdW5kcy5j CmluZGV4IDgxYzM1NmYwLi42MzFmZGY4ZiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fd29y a2Fyb3VuZHMuYworKysgYi90ZXN0cy9pOTE1L2dlbV93b3JrYXJvdW5kcy5jCkBAIC0yMjUsNiAr MjI1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfd29ya2Fyb3VuZHMoaW50IGZkLCBlbnVtIG9wZXJh dGlvbiBvcCwgdW5zaWduZWQgaW50IGZsYWdzKQogCiBpZ3RfbWFpbgogeworCXN0cnVjdCBtbWlv X2RhdGEgbW1pb19kYXRhOwogCWludCBkZXZpY2UgPSAtMTsKIAljb25zdCBzdHJ1Y3QgewogCQlj b25zdCBjaGFyICpuYW1lOwpAQCAtMjU2LDcgKzI1Nyw3IEBAIGlndF9tYWluCiAJCWRldmljZSA9 IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwogCQlpZ3RfcmVxdWlyZV9nZW0oZGV2aWNl KTsKIAotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCkpOwor CQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNl KCkpOwogCiAJCWdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGRldmljZSkpOwog CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jIGIvdGVzdHMvaTkxNS9pOTE1 X3BtX2xwc3AuYwppbmRleCBiMzE5ZGJlOS4uM2I0ODZkMzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5 MTUvaTkxNV9wbV9scHNwLmMKKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwpAQCAtMTg3 LDcgKzE4Nyw3IEBAIGludCBkcm1fZmQ7CiB1aW50MzJfdCBkZXZpZDsKIGRybU1vZGVSZXNQdHIg ZHJtX3JlczsKIGRybU1vZGVDb25uZWN0b3JQdHIgZHJtX2Nvbm5lY3RvcnNbTUFYX0NPTk5FQ1RP UlNdOwotCitzdHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIGlndF9tYWluCiB7CiAJaWd0X2Zp eHR1cmUgewpAQCAtMjEwLDcgKzIxMCw3IEBAIGlndF9tYWluCiAKIAkJaWd0X3JlcXVpcmUoc3Vw cG9ydHNfbHBzcChkZXZpZCkpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVs X2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CiAKIAkJ a21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCX0KQEAgLTIyNyw3ICsyMjcsNyBAQCBp Z3RfbWFpbgogCWlndF9maXh0dXJlIHsKIAkJaW50IGk7CiAKLQkJaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJ CWZvciAoaSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspCiAJCQlkcm1N b2RlRnJlZUNvbm5lY3Rvcihkcm1fY29ubmVjdG9yc1tpXSk7CiAJCWRybU1vZGVGcmVlUmVzb3Vy Y2VzKGRybV9yZXMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jIGIvdG9v bHMvaW50ZWxfYXVkaW9fZHVtcC5jCmluZGV4IDcyNmJiNGI2Li4yNWJhOTE4ZiAxMDA2NDQKLS0t IGEvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCisrKyBiL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAu YwpAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgdWludDMyX3QgZGV2aWQ7CiBzdGF0aWMgaW50IGF1 ZF9yZWdfYmFzZSA9IDA7CS8qIGJhc2UgYWRkcmVzcyBvZiBhdWRpbyByZWdpc3RlcnMgKi8KIHN0 YXRpYyBpbnQgZGlzcF9yZWdfYmFzZSA9IDA7CS8qIGJhc2UgYWRkcmVzcyBvZiBkaXNwbGF5IHJl Z2lzdGVycyAqLwogCisKICNkZWZpbmUgSVNfSEFTV0VMTF9QTFVTKGRldmlkKSAgKElTX0hBU1dF TEwoZGV2aWQpIHx8IElTX0JST0FEV0VMTChkZXZpZCkpCiAKICNkZWZpbmUgQklUU1RPKG4pCQko biA+PSBzaXplb2YobG9uZykgKiA4ID8gfjAgOiAoMVVMIDw8IChuKSkgLSAxKQpAQCAtMjQ2NCw2 ICsyNDY1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9icmFzd2VsbCh2b2lkKQogaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2OworCXN0 cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lfZGV2 aWNlKCk7CiAJZGV2aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7IC8qIFhYWCBub3QgdHJ1ZSB3aGVu IG1hcHBpbmchICovCkBAIC0yNDcxLDkgKzI0NzMsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJZG9fc2VsZl90ZXN0cygpOwogCiAJaWYgKGFyZ2MgPT0gMikKLQkJaW50ZWxf bW1pb191c2VfZHVtcF9maWxlKGFyZ3ZbMV0pOworCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUo Jm1taW9fZGF0YSwgYXJndlsxXSk7CiAJZWxzZQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBj aV9kZXYpOworCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIHBjaV9kZXYpOwog CiAJcHJpbnRmKCIlcyBhdWRpbyByZWdpc3RlcnM6XG5cbiIsIGludGVsX2dldF9kZXZpY2VfaW5m byhkZXZpZCktPmNvZGVuYW1lKTsKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZpZCkpIHsKZGlmZiAt LWdpdCBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jIGIvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMK aW5kZXggMDY3ZmQ0MTguLjkwZDhjOWEwIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9iYWNrbGln aHQuYworKysgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwpAQCAtMzgsOSArMzgsMTAgQEAKIAog aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1p b19kYXRhOwogCXVpbnQzMl90IGN1cnJlbnQsIG1heDsKIAotCWludGVsX21taW9fdXNlX3BjaV9i YXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1p b19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCWN1cnJlbnQgPSBJTlJFRyhCTENf UFdNX0NQVV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKIAltYXggPSBJTlJFRyhC TENfUFdNX1BDSF9DVEwyKSA+PiAxNjsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlf cG9sbGVyLmMgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCmluZGV4IDUxZjViOWE1Li40 YWM5Nzc2NiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYworKysgYi90 b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCkBAIC05NjIsNiArOTYyLDcgQEAgc3RhdGljIHZv aWQgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogCiBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1p b19kYXRhOwogCWludCBpOwogCWludCBwaXBlID0gMCwgYml0ID0gMCwgdGFyZ2V0X3NjYW5saW5l ID0gMCwgdGFyZ2V0X2Z1enogPSAxOwogCWJvb2wgdGVzdF9waXhlbGNvdW50ID0gZmFsc2U7CkBA IC0xMTg3LDcgKzExODgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQli cmVhazsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSAs aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJcHJpbnRmKCIlcz9cbiIsIHRlc3Rf bmFtZSh0ZXN0LCBwaXBlLCBiaXQsIHRlc3RfcGl4ZWxjb3VudCkpOwogCkBAIC0xMjYyLDcgKzEy NjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlhc3NlcnQoMCk7CiAJ fQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWlmIChxdWl0KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwpp bmRleCAwMmZiZjg4OC4uZjQxMTQ2MTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2ZvcmNld2Fr ZWQuYworKysgYi90b29scy9pbnRlbF9mb3JjZXdha2VkLmMKQEAgLTU3LDE0ICs1NywxNSBAQCBo ZWxwKGNoYXIgKnByb2cpIHsKIH0KIAogc3RhdGljIGludAotaXNfYWxpdmUodm9pZCkgeworaXNf YWxpdmUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhKSB7CiAJLyogUmVhZCB0aGUgdGltZXN0 YW1wLCB3aGljaCBzaG91bGQgKmFsbW9zdCogYWx3YXlzIGJlICEwICovCi0JcmV0dXJuIChpbnRl bF9yZWdpc3Rlcl9yZWFkKDB4MjM1OCkgIT0gMCk7CisJcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9y ZWFkKG1taW9fZGF0YSwgMHgyMzU4KSAhPSAwKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIHsKIAlpbnQgcmV0OworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwog CiAJaWYgKGFyZ2MgPiAyIHx8IChhcmdjID09IDIgJiYgIXN0cm5jbXAoYXJndlsxXSwgIi1oIiwg MikpKSB7CiAJCWhlbHAoYXJndlsxXSk7CkBAIC04MCw3ICs4MSw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCUlORk9fUFJJTlQoInN0YXJ0ZWQgZGFlbW9uIik7CiAJfQog Ci0JcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgMSwgLTEpOworCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEs IGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKIAlpZiAocmV0KSB7CiAJCUlORk9fUFJJ TlQoIkNvdWxkbid0IGluaXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKIAkJZXhpdCgxKTsKQEAgLTg4 LDE2ICs4OSwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlJTkZPX1BS SU5UKCJGb3JjZXdha2UgbG9ja2VkXG4iKTsKIAl9CiAJd2hpbGUoMSkgewotCQlpZiAoIWlzX2Fs aXZlKCkpIHsKKwkJaWYgKCFpc19hbGl2ZSgmbW1pb19kYXRhKSkgewogCQkJSU5GT19QUklOVCgi Z3B1IHJlc2V0PyByZXN0YXJ0aW5nIGRhZW1vblxuIik7Ci0JCQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgpOwotCQkJcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMSwgLTEpOworCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7CisJCQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7CiAJCQlpZiAocmV0KQogCQkJCUlORk9f UFJJTlQoIlJlZyBhY2Nlc3MgaW5pdCBmYWlsXG4iKTsKIAkJfQogCQlzbGVlcCgxKTsKIAl9Ci0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgmbW1pb19kYXRhKTsKIAlJTkZPX1BSSU5UKCJGb3JjZXdha2UgdW5sb2NrXG4iKTsKIAogCWlm IChkYWVtb25pemVkKSB7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9ncHVfdGltZS5jIGIvdG9v bHMvaW50ZWxfZ3B1X3RpbWUuYwppbmRleCA1NmQ2NWZlMC4uMTVhYTAwNDEgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwpAQCAt NjUsOSArNjUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXVpbnQ2NF90 IHJpbmdfaWRsZSA9IDAsIHJpbmdfdGltZSA9IDA7CiAJc3RydWN0IHRpbWV2YWwgc3RhcnQsIGVu ZDsKIAlzdGF0aWMgc3RydWN0IHJ1c2FnZSBydXNhZ2U7CisJc3RydWN0IG1taW9fZGF0YSBtbWlv X2RhdGE7CiAJaW50IHN0YXR1czsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpKTsKIAogCWlmIChhcmdjID09IDEpIHsKIAkJZnByaW50ZihzdGRl cnIsICJ1c2FnZTogJXMgY21kIFthcmdzLi4uXVxuIiwgYXJndlswXSk7CmRpZmYgLS1naXQgYS90 b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKaW5kZXgg MmVmNWQ0ZmQuLmZiZjUzYzIzIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMK KysrIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCkBAIC0yNjQsNiArMjY0LDcgQEAgY29uc3Qg Y2hhciAqZGlwX2ZyZXF1ZW5jeV9uYW1lc1tdID0gewogCiBzdHJ1Y3QgcGNpX2RldmljZSAqcGNp X2RldjsKIGludCBnZW4gPSAwOworc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAKIHN0YXRp YyBjb25zdCBjaGFyICpzcGRfc291cmNlX3RvX3N0cmluZyhTb3VyY2VEZXZpY2Ugc291cmNlKQog ewpAQCAtMTEwOCw3ICsxMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkgICAgICAgIiBwZXJmZWN0bHk6IHRoZSBLZXJuZWwgbWlnaHQgdW5kbyBvdXIgY2hhbmdlcy5c biIpOwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KCZtbWlvX2RhdGEsIHBjaV9kZXYsIDAsIC0xKTsKIAlpbnRlbF9jaGVja19wY2goKTsKIAog CWlmIChJU19HRU40KHBjaV9kZXYtPmRldmljZV9pZCkpCkBAIC0xMjU2LDYgKzEyNTcsNiBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogb3V0OgotCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0 YSk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5j IGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKaW5kZXggNDE3OWM1YWUuLjcxMmRlMjMwIDEwMDY0 NAotLS0gYS90b29scy9pbnRlbF9sM19wYXJpdHkuYworKysgYi90b29scy9pbnRlbF9sM19wYXJp dHkuYwpAQCAtMTc2LDYgKzE3Niw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm5h bWUpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CisJc3RydWN0IG1taW9f ZGF0YSBtbWlvX2RhdGE7CiAJY29uc3QgY2hhciAqcGF0aFtSRUFMX01BWF9TTElDRVNdID0geyJs M19wYXJpdHkiLCAibDNfcGFyaXR5X3NsaWNlXzEifTsKIAlpbnQgcm93ID0gMCwgYmFuayA9IDAs IHNiYW5rID0gMDsKIAlpbnQgZmRbUkVBTF9NQVhfU0xJQ0VTXSA9IHswfSwgcmV0LCBpOwpAQCAt MTg5LDcgKzE5MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYgKGlu dGVsX2dlbihkZXZpZCkgPCA3IHx8IElTX1ZBTExFWVZJRVcoZGV2aWQpKQogCQlleGl0KDc3KTsK IAotCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpLCAwLCBkZXZpY2UpID09IDApOworCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkZXZpY2UpID09IDApOwog CiAJZGlyID0gaWd0X3N5c2ZzX29wZW4oZGV2aWNlKTsKIApAQCAtMjE3LDcgKzIxOCw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogbm93LiBKdXN0IGJlIGF3YXJlIG9m IHRoaXMgaWYgZm9yIHNvbWUgcmVhc29uIGEgaGFuZyBpcyByZXBvcnRlZAogCSAqIHdoZW4gdXNp bmcgdGhpcyB0b29sLgogCSAqLwotCWRmdCA9IGludGVsX3JlZ2lzdGVyX3JlYWQoMHhiMDM4KTsK KwlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIDB4YjAzOCk7CiAKIAl3aGls ZSAoMSkgewogCQlpbnQgYywgb3B0aW9uX2luZGV4ID0gMDsKQEAgLTM2NiwxMCArMzY3LDEwIEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYXNzZXJ0KGkgPCAyKTsKIAkJ CQlkZnQgfD0gaSA8PCAxOyAvKiBzbGljZSAqLwogCQkJCWRmdCB8PSAxIDw8IDA7IC8qIGVuYWJs ZSAqLwotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKDB4YjAzOCwgZGZ0KTsKKwkJCQlpbnRlbF9y ZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCAweGIwMzgsIGRmdCk7CiAJCQkJYnJlYWs7CiAJCQlj YXNlICd1JzoKLQkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgweGIwMzgsIGRmdCAmIH4oMTw8MCkp OworCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEgLDB4YjAzOCwgZGZ0ICYgfigx PDwwKSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdMJzoKIAkJCQlicmVhazsKQEAgLTM3OCw3ICsz NzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgm bW1pb19kYXRhKTsKIAlpZiAoYWN0aW9uID09ICdsJykKIAkJZXhpdChFWElUX1NVQ0NFU1MpOwog CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBiL3Rvb2xzL2ludGVsX2xpZC5jCmluZGV4 IDM3YzZiYTVlLi41MjE3NjgzMyAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfbGlkLmMKKysrIGIv dG9vbHMvaW50ZWxfbGlkLmMKQEAgLTExNyw5ICsxMTcsMTAgQEAgb3V0OgogCiBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJ aW50IHN3ZjE0LCBhY3BpX2xpZDsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpKTsKIAogCXdoaWxlICgxKSB7CiAJCXN3ZjE0ID0gSU5SRUcoU1dG MTQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29scy9pbnRl bF9wYW5lbF9maXR0ZXIuYwppbmRleCAxMzdlZjYxYS4uMDNiNDI1OTYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5j CkBAIC0yNzMsNiArMjczLDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ Ym9vbCBkb19kaXNhYmxlID0gZmFsc2UsIGRvX2R1bXAgPSBmYWxzZSwgZG9fdXNhZ2UgPSBmYWxz ZTsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKIAl1aW50MzJfdCBkZXZpZDsKKwlzdHJ1 Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXByaW50ZigiV0FSTklORzpcbiIKIAkgICAgICAg IlRoaXMgdG9vbCBpcyBhIHdvcmthcm91bmQgZm9yIHBlb3BsZSB0aGF0IGRvbid0IGhhdmUgYSBL ZXJuZWwgIgpAQCAtMjgwLDcgKzI4MSw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCSAgICAgICAic29sdXRpb24gdGhhdCBtYXkgb3IgbWF5IG5vdCB3b3JrLiBVc2UgaXQg YXQgeW91ciBvd24gcmlzay5cbiIpOwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lfZGV2aWNl KCk7Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOworCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIHBjaV9kZXYsIDAsIC0xKTsKIAlkZXZp ZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICghSEFTX1BDSF9TUExJVChkZXZpZCkpIHsK QEAgLTM0Miw2ICszNDMsNiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9 CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS90 b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgYi90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMK aW5kZXggNTBjNGJjZTYuLmEyOWVmMWIyIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wZXJmX2Nv dW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCkBAIC00NDEsNiArNDQx LDcgQEAgZ2VuN19nZXRfY291bnRlcnModm9pZCkKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJdWludDMyX3QgZGV2aWQ7 CiAJaW50IGNvdW50ZXJfZm9ybWF0OwogCWludCBjb3VudGVyX2NvdW50OwpAQCAtNDgzLDEwICs0 ODQsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob2Fjb250cm9sKSB7 CiAJCS8qIEZvcmNld2FrZSAqLwotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9n ZXRfcGNpX2RldmljZSgpLCAwLCBmZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZt bWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksCisJCQkJMCwgZmQpOwogCiAJCS8qIEVu YWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShPQUNP TlRST0wsCisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIE9BQ09OVFJPTCwKIAkJ CWNvdW50ZXJfZm9ybWF0IDw8IE9BQ09OVFJPTF9DT1VOVEVSX1NFTEVDVF9TSElGVCB8CiAJCQlQ RVJGT1JNQU5DRV9DT1VOVEVSX0VOQUJMRSk7CiAJfQpAQCAtNTIwLDEwICs1MjIsMTAgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob2Fjb250cm9sKSB7CiAJCS8qIERpc2Fi bGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoT0FDT05U Uk9MLCAwKTsKKwkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgT0FDT05UUk9MLCAw KTsKIAogCQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsK KwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJfQogCiAJZnJlZSh0 b3RhbHMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVnLmMgYi90b29scy9pbnRlbF9yZWcu YwppbmRleCBlNTE3OTU2Yi4uYzhjZGIzNzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3JlZy5j CisrKyBiL3Rvb2xzL2ludGVsX3JlZy5jCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyBpbmxpbmUg aW50IF9ub3Rfc3VwcG9ydGVkKHZvaWQpCiAKIHN0cnVjdCBjb25maWcgewogCXN0cnVjdCBwY2lf ZGV2aWNlICpwY2lfZGV2OworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWNoYXIgKm1t aW9maWxlOwogCXVpbnQzMl90IGRldmlkOwogCkBAIC0zODcsNyArMzg4LDcgQEAgc3RhdGljIGlu dCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1 aW50MzJfdCAqdmFscCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsK IAkJfQotCQl2YWwgPSBpbnRlbF9pb3NmX3NiX3JlYWQocmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVn LT5hZGRyKTsKKwkJdmFsID0gaW50ZWxfaW9zZl9zYl9yZWFkKCZjb25maWctPm1taW9fZGF0YSwg cmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ ZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNj LnBvcnQpOwpAQCAtNDU4LDcgKzQ1OSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfcmVnaXN0ZXIoc3Ry dWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90IHZhbCkKIAkJCQly ZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQlpbnRlbF9pb3NmX3Ni X3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkciwgdmFsKTsKKwkJaW50ZWxfaW9z Zl9zYl93cml0ZSgmY29uZmlnLT5tbWlvX2RhdGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+ YWRkciwgdmFsKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZnByaW50ZihzdGRlcnIsICJwb3J0 ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNjLnBvcnQpOwpAQCAtNTUyLDkgKzU1 Myw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3JlYWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBp bnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogCWlmIChjb25maWctPm1taW9maWxlKQotCQlp bnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmlnLT5tbWlvZmlsZSk7CisJCWludGVsX21taW9f dXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlvX2RhdGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVs c2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7 CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZjb25maWctPm1taW9fZGF0YSwgY29uZmln LT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0 cnVjdCByZWcgcmVnOwpAQCAtNTcwLDcgKzU3MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3Jl YWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJ fQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKIH0K QEAgLTU4NCw3ICs1ODUsNyBAQCBzdGF0aWMgaW50IGludGVsX3JlZ193cml0ZShzdHJ1Y3QgY29u ZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXJldHVybiBFWElUX0ZBSUxV UkU7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5wY2lfZGV2LCAw LCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJmNvbmZpZy0+bW1pb19kYXRhLCBj b25maWctPnBjaV9kZXYsIDAsIC0xKTsKIAogCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpICs9IDIp IHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC02MDksNyArNjEwLDcgQEAgc3RhdGljIGludCBpbnRl bF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltd KQogCQl3cml0ZV9yZWdpc3Rlcihjb25maWcsICZyZWcsIHZhbCk7CiAJfQogCi0JaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmln LT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKIH0KQEAgLTYyMCw5ICs2MjEs OSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19kdW1wKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbnQgaTsKIAogCWlmIChjb25maWctPm1taW9maWxlKQot CQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmlnLT5tbWlvZmlsZSk7CisJCWludGVsX21t aW9fdXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlvX2RhdGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwog CWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAt MSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZjb25maWctPm1taW9fZGF0YSwgY29u ZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5yZWdjb3Vu dDsgaSsrKSB7CiAJCXJlZyA9ICZjb25maWctPnJlZ3NbaV07CkBAIC02MzQsNyArNjM1LDcgQEAg c3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCWR1bXBfcmVnaXN0ZXIoY29uZmlnLCAmY29uZmlnLT5yZWdzW2ld KTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZjb25maWctPm1taW9fZGF0YSk7CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNT OwogfQpAQCAtNjQ4LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3NuYXBzaG90KHN0 cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcmV0dXJuIEVY SVRfRkFJTFVSRTsKIAl9CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGNvbmZpZy0+cGNpX2Rl dik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmY29uZmlnLT5tbWlvX2RhdGEsIGNvbmZpZy0+ cGNpX2Rldik7CiAKIAkvKiBYWFg6IGVycm9yIGhhbmRsaW5nICovCiAJaWYgKHdyaXRlKDEsIGln dF9nbG9iYWxfbW1pbywgY29uZmlnLT5wY2lfZGV2LT5yZWdpb25zW21taW9fYmFyXS5zaXplKSA9 PSAtMSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgYi90b29scy9pbnRl bF9yZWdfY2hlY2tlci5jCmluZGV4IDZiZGU2M2VjLi43MzQwNGQwMiAxMDA2NDQKLS0tIGEvdG9v bHMvaW50ZWxfcmVnX2NoZWNrZXIuYworKysgYi90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCkBA IC0zNDIsMTAgKzM0MiwxMSBAQCBjaGVja19kcGZjX2NvbnRyb2xfc2Eodm9pZCkKIGludCBtYWlu KGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqZGV2OworCXN0 cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KTsKIAlkZXZpZCA9IGRldi0+ZGV2aWNlX2lkOwotCWludGVsX21taW9fdXNlX3BjaV9iYXIoZGV2 KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGRldik7CiAKIAlpZiAoSVNf R0VONyhkZXZpZCkpCiAJCWdlbiA9IDc7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF93YXRlcm1h cmsuYyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCmluZGV4IGU3MWMzZDljLi41MDI3ODkwMyAx MDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKKysrIGIvdG9vbHMvaW50ZWxfd2F0 ZXJtYXJrLmMKQEAgLTIzNyw2ICsyMzcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2tsX252MTJf YnVmX2NmZ19yZWdfbmFtZShpbnQgcGlwZSwgaW50IHBsYW5lKQogCiBzdGF0aWMgdm9pZCBza2xf d21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBwaXBl LCBwbGFuZSwgbGV2ZWw7CiAJaW50IG51bV9waXBlcyA9IDM7CiAJaW50IG1heF9wbGFuZXMgPSBz a2xfbWF4X3BsYW5lcyhkZXZpZCk7CkBAIC0yNDksNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgc2ts X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBwbGFuZV9jdGxbbnVtX3BpcGVzXVttYXhfcGxhbmVz XTsKIAl1aW50MzJfdCB3bV9saW5ldGltZVtudW1fcGlwZXNdOwogCi0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKIAogCWZvciAocGlwZSA9IDA7IHBpcGUgPCBudW1fcGlwZXM7IHBpcGUrKykgewogCQlpbnQg bnVtX3BsYW5lcyA9IHNrbF9udW1fcGxhbmVzKGRldmlkLCBwaXBlKTsKQEAgLTQ1OCw2ICs0NTks NyBAQCBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBpbGtfd21f ZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCXVp bnQzMl90IGRzcGNudHJbM107CiAJdWludDMyX3Qgc3BjbnRyWzNdOwpAQCAtNDY5LDcgKzQ3MSw3 IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQpCiAJaW50IG51bV9waXBlcyA9IGludGVs X2dlbihkZXZpZCkgPj0gNyA/IDMgOiAyOwogCXN0cnVjdCBpbGtfd20gd20gPSB7fTsKIAotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspIHsKIAkJ ZHNwY250cltpXSA9IHJlYWRfcmVnKDB4NzAxODAgKyBpICogMHgxMDAwKTsKQEAgLTUwNSw3ICs1 MDcsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogCWlmIChJU19CUk9BRFdFTEwo ZGV2aWQpIHx8IElTX0hBU1dFTEwoZGV2aWQpKQogCQl3bV9taXNjID0gcmVhZF9yZWcoMHg0NTI2 MCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9waXBlczsgaSsr KQogCQlwcmludGYoIiAgICBXTV9QSVBFXyVjID0gMHglMDh4XG4iLCBwaXBlX25hbWUoaSksIHdt X3BpcGVbaV0pOwpAQCAtNjEwLDYgKzYxMiw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZv aWQpCiAKIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IG1taW9fZGF0 YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJdW5zaWduZWQgaW50IG51bV9waXBlcyA9IElTX0NIRVJS WVZJRVcoZGV2aWQpID8gMyA6IDI7CiAJdWludDMyX3QgZHNwYXJiLCBkc3BhcmIyLCBkc3BhcmIz OwpAQCAtNjE5LDcgKzYyMiw3IEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCiAJdWlu dDMyX3QgZHNwX3NzX3BtLCBkZHJfc2V0dXAyOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExB TkVdID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwg aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3 MDAzMCk7CiAJZHNwYXJiMiA9IHJlYWRfcmVnKDB4NzAwNjApOwpAQCAtNjUwLDEzICs2NTMsMTMg QEAgc3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKIAogCQlkZGwzID0gcmVhZF9yZWcoMHg3 MDA1OCk7CiAKLQkJaW50ZWxfcHVuaXRfcmVhZCgweDM2LCAmZHNwX3NzX3BtKTsKLQkJaW50ZWxf cHVuaXRfcmVhZCgweDEzOSwgJmRkcl9zZXR1cDIpOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlv X2RhdGEsIDB4MzYsICZkc3Bfc3NfcG0pOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlvX2RhdGEs IDB4MTM5LCAmZGRyX3NldHVwMik7CiAJfSBlbHNlIHsKIAkJZnc3ID0gcmVhZF9yZWcoMHg3MDA3 Yyk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICBGVzEgPSAweCUw OHhcbiIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAg LTgyNyw2ICs4MzAsNyBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMg dm9pZCBnNHhfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwog CWludCBpOwogCXVpbnQzMl90IGRzcGFjbnRyLCBkc3BiY250cjsKIAl1aW50MzJfdCBkc3BhcmI7 CkBAIC04MzUsNyArODM5LDcgQEAgc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIAl1aW50 MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsK IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhY250ciA9IHJlYWRfcmVnKDB4NzAxODApOwog CWRzcGJjbnRyID0gcmVhZF9yZWcoMHg3MTE4MCk7CkBAIC04NDYsNyArODUwLDcgQEAgc3RhdGlj IHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bvd2VyX2Rvd24gPSByZWFkX3Jl ZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlv X2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgRFNQQUNOVFIgPSAweCUwOHhcbiIsIGRz cGFjbnRyKTsKIAlwcmludGYoIiAgICAgICAgICAgICBEU1BCQ05UUiA9IDB4JTA4eFxuIiwgZHNw YmNudHIpOwpAQCAtOTEzLDYgKzkxNyw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQp CiAKIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEg bW1pb19kYXRhOwogCWludCBpOwogCWludCB0b3RhbHNpemUgPSBJU19DUkVTVExJTkUoZGV2aWQp ID8gMTI4IDogOTY7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtOTIxLDcgKzkyNiw3IEBAIHN0YXRp YyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKIAlzdHJ1 Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAog CWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQpOwpA QCAtOTMwLDcgKzkzNSw3IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCW1pX2Rp c3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRlID0gcmVh ZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgICAgICAg ICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKIAlwcmludGYoIiAgICAgICAgICAgICAgICAg IEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAgLTk4Myw2ICs5ODgsNyBAQCBzdGF0aWMgdm9pZCBn ZW40X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKIHsKKwlz dHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgdG90YWxzaXplID0gOTY7 IC8qIEZJWE1FPyAqLwogCXVpbnQzMl90IGRzcGFyYjsKQEAgLTk5Miw3ICs5OTgsNyBAQCBzdGF0 aWMgdm9pZCBwbnZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGNicjsKIAlzdHJ1Y3QgZ21jaF93 bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWRzcGFyYiA9 IHJlYWRfcmVnKDB4NzAwMzApOwogCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQpOwpAQCAtMTAwMiw3 ICsxMDA4LDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bv d2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4 MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICBEU1BB UkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzEg PSAweCUwOHhcbiIsIGZ3MSk7CkBAIC0xMDczLDYgKzEwNzksNyBAQCBzdGF0aWMgdm9pZCBwbnZf d21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1 Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgdG90YWxzaXplID0gSVNfOTQ1 R00oZGV2aWQpID8gMTI4IDogOTY7IC8qIEZJWE1FPyAqLwogCXVpbnQzMl90IGRzcGFyYjsKQEAg LTEwODIsNyArMTA4OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lkKQogCXVpbnQz Ml90IG1pX2FyYl9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owog Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg LTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWlu c3RwbSA9IHJlYWRfcmVnKDB4MjBjMCk7CkBAIC0xMDkwLDcgKzEwOTcsNyBAQCBzdGF0aWMgdm9p ZCBnZW4zX3dtX2R1bXAodm9pZCkKIAlmd19ibGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJ bWlfYXJiX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlw cmludGYoIiAgICAgIERTUEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKIAlwcmludGYoIiAgICAg IEZXX0JMQyA9IDB4JTAxNiIgUFJJeDY0ICJcbiIsIGZ3X2JsYyk7CkBAIC0xMTQyLDYgKzExNDks NyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZ2VuMl93 bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJ aW50IHRvdGFsc2l6ZTsKIAl1aW50MzJfdCBkc3BhcmI7CkBAIC0xMTUxLDcgKzExNTksNyBAQCBz dGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBtaV9zdGF0ZTsKIAlzdHJ1 Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAog CWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCW1lbV9tb2RlID0gcmVhZF9yZWcoMHgyMGNj KTsKQEAgLTExNTksNyArMTE2Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjJfd21fZHVtcCh2b2lkKQog CWZ3X2JsY19zZWxmID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9zdGF0ZSA9IHJlYWRfcmVnKDB4 MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgIERTUEFSQiA9IDB4JTA4 eFxuIiwgZHNwYXJiKTsKIAlwcmludGYoIiAgIE1FTV9NT0RFID0gMHglMDh4XG4iLCBtZW1fbW9k ZSk7Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==