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 CD49989DA2 for ; Wed, 28 Aug 2019 16:16:26 +0000 (UTC) From: Daniel Mrzyglod Date: Wed, 28 Aug 2019 18:16:16 +0200 Message-Id: <20190828161616.657-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190828161616.657-1-daniel.t.mrzyglod@intel.com> References: <20190828161616.657-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v10 3/3] lib/intel_mmio: add additional api for multiple devices List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Petri Latvala , Jani Nikula List-ID: TGlicmFyeSAgd2FzIGxpbWl0ZWQgZm9yIHJlYWRpbmcgcmVnaXN0ZXJzIGZvciBvbmx5Cm9uZSBk ZXZpY2UgYXQgYSB0aW1lIGluIGlndCB0ZXN0cy4KQ2hhbmdlcyBpbiB0aGlzIHBhdGNoIGdpdmUg YXMgb3BvcnR1bml0eSB0byB0ZXN0IG11bHRpcGxlIGRldmljZXMgaW4KdGhlIHNhbWUgdGltZS4K CnY4OiBwYWNrIGFuZCByZW5hbWUgc3RydWN0dXJlLCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGQK djc6IHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlCnY2OiBSZXdvcmQgcGF0Y2guIENvc21ldGljIGNo YW5nZXMuCgpDYzogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwu Y29tPgpDYzogRGFuaWVsZSBTcHVyaW8gQ2VyYW9sbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGlu dGVsLmNvbT4KQ2M6IEthdGFyenluYSBEZWMgPGthdGFyenluYS5kZWNAaW50ZWwuY29tPgpDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBQZXRyaSBMYXR2YWxh IDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJp Z25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3 LmtlbXBjenluc2tpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1yenlnbG9kIDxk YW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5j ICAgICAgfCAgIDMgKy0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgICAgICAgIHwgICAzICstCiBs aWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgICB8ICA4MSArKysrKysrKysrKysrKystLS0tLS0t LS0tCiBsaWIvaW50ZWxfaW9zZi5jICAgICAgICAgICAgICB8ICA3NCArKysrKysrKysrKysrLS0t LS0tLS0tLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgfCAg IDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDEzICsrLS0KIHRlc3RzL2k5 MTUvZ2VtX3dvcmthcm91bmRzLmMgIHwgICAzICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5j ICAgICB8ICAgNiArLQogdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jICAgICAgfCAgIDYgKy0KIHRv b2xzL2ludGVsX2JhY2tsaWdodC5jICAgICAgIHwgICAzICstCiB0b29scy9pbnRlbF9kaXNwbGF5 X3BvbGxlci5jICB8ICAgNSArLQogdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jICAgICAgfCAgMTUg KystLS0KIHRvb2xzL2ludGVsX2dwdV90aW1lLmMgICAgICAgIHwgICAzICstCiB0b29scy9pbnRl bF9pbmZvZnJhbWVzLmMgICAgICB8ICAgNSArLQogdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMgICAg ICAgfCAgMTEgKystLQogdG9vbHMvaW50ZWxfbGlkLmMgICAgICAgICAgICAgfCAgIDMgKy0KIHRv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgIHwgICA1ICstCiB0b29scy9pbnRlbF9wZXJmX2Nv dW50ZXJzLmMgICB8ICAxMCArKy0tCiB0b29scy9pbnRlbF9yZWcuYyAgICAgICAgICAgICB8ICAy MyArKystLS0tCiB0b29scy9pbnRlbF9yZWdfY2hlY2tlci5jICAgICB8ICAgMyArLQogdG9vbHMv aW50ZWxfd2F0ZXJtYXJrLmMgICAgICAgfCAgNDIgKysrKysrKy0tLS0tLQogMjIgZmlsZXMgY2hh bmdlZCwgMjQ0IGluc2VydGlvbnMoKyksIDE4NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9i ZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMgYi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKaW5kZXgg YzNmYzRiZjAuLjBmYzRiMDVlIDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMK KysrIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCkBAIC01NSw2ICs1NSw3IEBACiBzdGF0aWMg aW50IGRvbmU7CiBzdGF0aWMgaW50IGZkOwogc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90ICp0aW1l c3RhbXBfcmVnOworc3RhdGljIHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAj ZGVmaW5lIFJFRyh4KSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3Rf Z2xvYmFsX21taW8gKyB4KQogI2RlZmluZSBSRUdfT0ZGU0VUKHgpICgodm9sYXRpbGUgY2hhciAq KSh4KSAtICh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvKQpAQCAtNDU2LDcgKzQ1Nyw3 IEBAIHN0YXRpYyBpbnQgcnVuKGludCBzZWNvbmRzLAogCWlmIChnZW4gPCA2KQogCQlyZXR1cm4g SUdUX0VYSVRfU0tJUDsgLyogTmVlZHMgQkNTIHRpbWVzdGFtcCAqLwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgp LCBmYWxzZSwgZmQpOwogCiAJaWYgKGdlbiA9PSA2KQogCQl0aW1lc3RhbXBfcmVnID0gUkVHKFJD U19USU1FU1RBTVApOwpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2ht YXJrcy9nZW1fd3NpbS5jCmluZGV4IGI4ZTIyYjNmLi44N2Y4NzNiMCAxMDA2NDQKLS0tIGEvYmVu Y2htYXJrcy9nZW1fd3NpbS5jCisrKyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwpAQCAtMjM4LDYg KzIzOCw3IEBAIHN0cnVjdCB3b3JrbG9hZAogCX0gYnVzeV9iYWxhbmNlcjsKIH07CiAKK3N0cnVj dCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBu b3BfY2FsaWJyYXRpb25fdXMgPSAxMDAwOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgbm9wX2NhbGli cmF0aW9uOwogCkBAIC0zMDcxLDcgKzMwNzIsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2Nsb2Nrcyh2 b2lkKQogCXVpbnQzMl90IHJjc19zdGFydCwgcmNzX2VuZDsKIAlkb3VibGUgb3ZlcmhlYWQsIHQ7 CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBm YWxzZSwgZmQpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CiAKIAlpZiAodmVyYm9zZSA8PSAxKQogCQly ZXR1cm47CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW8uaCBiL2xpYi9pbnRlbF9pby5oCmluZGV4 IGE0ZjlmZGY3Li41ZjQwZDVkMSAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2lvLmgKKysrIGIvbGli L2ludGVsX2lvLmgKQEAgLTMwLDE3ICszMCw0MiBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAj aW5jbHVkZSA8cGNpYWNjZXNzLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgogCi0vKiByZWdpc3Rl ciBhY2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21taW8uYyAqLwogZXh0ZXJuIHZvaWQgKmlndF9n bG9iYWxfbW1pbzsKLXZvaWQgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2Rldmlj ZSAqcGNpX2Rldik7Ci12b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKTsK IAotaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKLXZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko dm9pZCk7Ci11aW50MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lk IGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLWludCBp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uodm9pZCk7CisvKiByZWdpc3RlciBh Y2Nlc3MgaGVscGVycyBmcm9tIGludGVsX21taW8uYyAqLworc3RydWN0IGludGVsX3JlZ2lzdGVy X3JhbmdlIHsKKwl1aW50MzJfdCBiYXNlOworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgZmxh Z3M7Cit9OworCitzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKKwlzdHJ1Y3QgaW50ZWxfcmVn aXN0ZXJfcmFuZ2UgKm1hcDsKKwl1aW50MzJfdCB0b3A7CisJdWludDMyX3QgYWxpZ25tZW50X21h c2s7Cit9OworCitzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIHsKKwl2b2lkICppZ3RfbW1pbzsKKwlz dHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKKwl1aW50MzJfdCBwY2lfZGV2aWNlX2lkOwor CWludCBrZXk7CisJYm9vbCBzYWZlOworfTsKKwordm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwKKwkJCSAgICBzdHJ1Y3QgcGNpX2Rl dmljZSAqcGNpX2Rldik7Cit2b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgaW50 ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIgKmZpbGUpOworCitpbnQgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLAorCQkJICAg ICAgIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsKK3ZvaWQg aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19k YXRhKTsKK3VpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0 YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0ZShz dHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWlu dDMyX3QgdmFsKTsKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3Ry dWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhKTsKIAogCiB1aW50MzJfdCBJTlJFR19ERVYo dm9pZCAqbW1pbywgdWludDMyX3QgcmVnKTsKQEAgLTY3LDE3ICs5MiwyNCBAQCB2b2lkIE9VVFJF RzhfREVWKHZvaWQgKm1taW8sIHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwogI2RlZmluZSBP VVRSRUcoLi4uKSBPVVRSRUdYKCxfX1ZBX0FSR1NfXykKIAogLyogc2lkZWJhbmQgYWNjZXNzIGZ1 bmN0aW9ucyBmcm9tIGludGVsX2lvc2YuYyAqLwotdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVh ZCh1aW50MzJfdCByZWcsIGludCBwaHkpOwotdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSk7Ci11aW50MzJfdCBpbnRlbF9mbGlzZHNp X3JlZ19yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXVpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZCh1 aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVp bnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLQotaW50IGludGVsX3B1 bml0X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7Ci1pbnQgaW50ZWxfcHVuaXRf d3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKLWludCBpbnRlbF9uY19yZWFkKHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90IHZhbCk7Cit1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHN0cnVj dCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAgICBpbnQg cGh5KTsKK3ZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAq bW1pb19kYXRhLCB1aW50MzJfdCByZWcsCisJCQkgIHVpbnQzMl90IHZhbCwgaW50IHBoeSk7Cit1 aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnKTsKK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUoc3Ry dWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsCisJCQkgICAgIHVp bnQzMl90IHZhbCk7Cit1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQoc3RydWN0IGludGVsX21t aW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LAorCQkJICAgIHVpbnQzMl90IHJlZyk7 Cit2b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19k YXRhLCB1aW50MzJfdCBwb3J0LAorCQkJIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKKwor aW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCBhZGRyLAorCQkgICAgIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX3B1bml0X3dy aXRlKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKKwkJ ICAgICAgdWludDMyX3QgdmFsKTsKK2ludCBpbnRlbF9uY19yZWFkKHN0cnVjdCBpbnRlbF9tbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7CitpbnQgaW50 ZWxfbmNfd3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCB2YWwpOwogCiAvKiByZWdpc3RlciBtYXBzIGZyb20gaW50ZWxfcmVnX21h cC5jICovCiAjaWZuZGVmIF9fR1RLX0RPQ19JR05PUkVfXwpAQCAtODgsMTcgKzEyMCw2IEBAIGlu dCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOwogI2RlZmluZSBJ TlRFTF9SQU5HRV9SVwkJKElOVEVMX1JBTkdFX1JFQUQgfCBJTlRFTF9SQU5HRV9XUklURSkKICNk ZWZpbmUgSU5URUxfUkFOR0VfRU5ECQkoMTw8MzEpCiAKLXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9y YW5nZSB7Ci0JdWludDMyX3QgYmFzZTsKLQl1aW50MzJfdCBzaXplOwotCXVpbnQzMl90IGZsYWdz OwotfTsKLQotc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcCB7Ci0Jc3RydWN0IGludGVsX3JlZ2lz dGVyX3JhbmdlICptYXA7Ci0JdWludDMyX3QgdG9wOwotCXVpbnQzMl90IGFsaWdubWVudF9tYXNr OwotfTsKIHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgaW50ZWxfZ2V0X3JlZ2lzdGVyX21hcCh1 aW50MzJfdCBkZXZpZCk7CiBzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKmludGVsX2dldF9y ZWdpc3Rlcl9yYW5nZShzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcCwgdWludDMyX3Qgb2Zm c2V0LCB1aW50MzJfdCBtb2RlKTsKICNlbmRpZiAvKiBfX0dUS19ET0NfSUdOT1JFX18gKi8KZGlm ZiAtLWdpdCBhL2xpYi9pbnRlbF9pb3NmLmMgYi9saWIvaW50ZWxfaW9zZi5jCmluZGV4IDNiNWEx MzcwLi4xNjg2MmVmNCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2lvc2YuYworKysgYi9saWIvaW50 ZWxfaW9zZi5jCkBAIC0xOSw4ICsxOSw4IEBACiAvKiBQcml2YXRlIHJlZ2lzdGVyIHdyaXRlLCBk b3VibGUtd29yZCBhZGRyZXNzaW5nLCBub24tcG9zdGVkICovCiAjZGVmaW5lIFNCX0NSV1JEQV9O UCAgIDB4MDcKIAotc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWlu dDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCi0JCQkgICB1aW50MzJfdCAqdmFsKQorc3RhdGlj IGludCB2bHZfc2lkZWJhbmRfcncoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCBwb3J0LAorCQkJICAgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsIHVpbnQz Ml90ICp2YWwpCiB7CiAJaW50IHRpbWVvdXQgPSAwOwogCXVpbnQzMl90IGNtZCwgZGV2Zm4sIGJl LCBiYXI7CkBAIC0zNCwyMiArMzQsMjQgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWlu dDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCiAJCShwb3J0IDw8IElP U0ZfUE9SVF9TSElGVCkgfCAoYmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKIAkJKGJh ciA8PCBJT1NGX0JBUl9TSElGVCk7CiAKLQlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9T Rl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZKSB7CisJaWYgKGludGVsX3JlZ2lzdGVyX3Jl YWQobW1pb19kYXRhLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYKKwkgICAgSU9TRl9TQl9CVVNZ KSB7CiAJCWlndF93YXJuKCJ3YXJuaW5nOiBwY29kZSAoJXMpIG1haWxib3ggYWNjZXNzIGZhaWxl ZFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9 CiAKLQlpbnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9BRERSLCBhZGRyKTsKKwlpbnRlbF9y ZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0FERFIsIGFkZHIpOwogCWlmICghaXNf cmVhZCkKLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7CisJCWlu dGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfREFUQSwgKnZhbCk7CiAKLQlp bnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CisJaW50ZWxf cmVnaXN0ZXJfd3JpdGUobW1pb19kYXRhLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CiAK IAlkbyB7CiAJCXVzbGVlcCgxKTsKIAkJdGltZW91dCsrOwotCX0gd2hpbGUgKGludGVsX3JlZ2lz dGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0ZfU0JfQlVTWSAmJgotCQkgdGlt ZW91dCA8IFRJTUVPVVRfVVMpOworCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19k YXRhLT5pZ3RfbW1pbywKKwkJCQkgICAgIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJgorCQlJT1NG X1NCX0JVU1kgJiYgdGltZW91dCA8IFRJTUVPVVRfVVMpOwogCiAJaWYgKHRpbWVvdXQgPj0gVElN RU9VVF9VUykgewogCQlpZ3Rfd2FybigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSAlcyAoJWQp IHRvIGZpbmlzaFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIsIGFkZHIpOwpAQCAtNTcs OCArNTksOCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0LCB1aW50 OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKIAl9CiAKIAlpZiAoaXNfcmVhZCkKLQkJKnZhbCA9 IGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfREFUQSk7Ci0JaW50ZWxfcmVnaXN0ZXJfd3Jp dGUoVkxWX0lPU0ZfREFUQSwgMCk7CisJCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9f ZGF0YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1t aW9fZGF0YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEsIDApOwogCiAJcmV0dXJuIDA7CiB9CkBA IC03Myw5ICs3NSwxMCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50MzJfdCBwb3J0 LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKICAqIFJldHVybnM6CiAgKiAwIHdoZW4g dGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFp bHVyZS4KICAqLwotaW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3Qg KnZhbCkKK2ludCBpbnRlbF9wdW5pdF9yZWFkKHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGVi YW5kX3J3KElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JSRERBX05QLCBhZGRyLCB2YWwpOworCXJldHVy biB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9O UCwgYWRkciwKKwkJCSAgICAgICB2YWwpOwogfQogCiAvKioKQEAgLTg4LDkgKzkxLDEwIEBAIGlu dCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiAgKiBSZXR1 cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBl cnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJf dCBhZGRyLCB1aW50MzJfdCB2YWwpCitpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IGludGVs X21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0J cmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfUFVOSVQsIFNCX0NSV1JEQV9OUCwgYWRk ciwgJnZhbCk7CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9Q VU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwpOwogfQogCiAvKioKQEAg LTEwMyw5ICsxMDcsMTAgQEAgaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFkZHIsIHVp bnQzMl90IHZhbCkKICAqIFJldHVybnM6CiAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBz dWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50IGludGVs X25jX3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKK2ludCBpbnRlbF9uY19yZWFk KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMy X3QgKnZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0JfQ1JS RERBX05QLCBhZGRyLCB2YWwpOworCXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJ T1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwKKwkJCSAgICAgICB2YWwpOwogfQogCiAv KioKQEAgLTExOCw5ICsxMjMsMTAgQEAgaW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRkciwg dWludDMyX3QgKnZhbCkKICAqIFJldHVybnM6CiAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2Vz cyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50IGlu dGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKK2ludCBpbnRlbF9uY193 cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVp bnQzMl90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0Jf Q1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgSU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsCisJCQkgICAgICAgJnZhbCk7CiB9 CiAKIC8qKgpAQCAtMTMzLDE0ICsxMzksMTYgQEAgaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90IHZhbCkKICAqIFJldHVybnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9t IHRoZSByZWdpc3Rlci4KICAqLwotdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1aW50MzJf dCByZWcsIGludCBwaHkpCit1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHN0cnVjdCBpbnRl bF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCBpbnQgcGh5KQogewogCXVpbnQz Ml90IHZhbDsKIAogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9E UElPLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywKKwkJCQkmdmFsKTsKIAllbHNlCi0JCXZs dl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7CisJ CXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPXzIsIFNCX01SRF9OUCwg cmVnLAorCQkJCSZ2YWwpOwogCXJldHVybiB2YWw7CiB9CiAKQEAgLTE1MiwzOCArMTYwLDQwIEBA IHVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQogICoK ICAqIDMyLWJpdCB3cml0ZSBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNldCB0aHJvdWdoIHRoZSBE UElPIHNpZGViYW5kIHBvcnQuCiAgKi8KLXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWwsIGludCBwaHkpCit2b2lkIGludGVsX2RwaW9fcmVnX3dyaXRl KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwsIGludCBwaHkpCiB7CiAJaWYgKHBoeSA9PSAwKQotCQl2bHZfc2lkZWJhbmRfcncoSU9T Rl9QT1JUX0RQSU8sIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKKwkJdmx2X3NpZGViYW5kX3J3KG1t aW9fZGF0YSwgSU9TRl9QT1JUX0RQSU8sIFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKIAllbHNlCi0J CXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7 CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPXzIsIFNCX01XUl9O UCwgcmVnLAorCQkJCSZ2YWwpOwogfQogCi11aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFk KHVpbnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQoc3RydWN0IGlu dGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCiB7CiAJdWludDMyX3QgdmFs ID0gMDsKIAotCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05Q LCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9GTElT RFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CiAKIAlyZXR1cm4gdmFsOwogfQogCi12b2lk IGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQordm9p ZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2Rh dGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewotCXZsdl9zaWRlYmFuZF9ydyhJT1NG X1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9y dyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7 CiB9CiAKLXVpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZCh1aW50MzJfdCBwb3J0LCB1aW50MzJf dCByZWcpCit1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQoc3RydWN0IGludGVsX21taW9fZGF0 YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcpCiB7CiAJdWludDMyX3Qg dmFsOwogCi0Jdmx2X3NpZGViYW5kX3J3KHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsK Kwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZh bCk7CiAKIAlyZXR1cm4gdmFsOwogfQogCi12b2lkIGludGVsX2lvc2Zfc2Jfd3JpdGUodWludDMy X3QgcG9ydCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCit2b2lkIGludGVsX2lvc2Zfc2Jf d3JpdGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBwb3J0LAor CQkJIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewotCXZsdl9zaWRlYmFuZF9ydyhwb3J0 LCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwg cG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQpkaWZmIC0tZ2l0IGEvbGliL2ludGVs X21taW8uYyBiL2xpYi9pbnRlbF9tbWlvLmMKaW5kZXggMjBlZDhhMDcuLjE2MzJkZGRhIDEwMDY0 NAotLS0gYS9saWIvaW50ZWxfbW1pby5jCisrKyBiL2xpYi9pbnRlbF9tbWlvLmMKQEAgLTcwLDU3 ICs3MCw1NyBAQAogICoKICAqIFBvaW50ZXIgdG8gdGhlIHJlZ2lzdGVyIHJhbmdlLCBpbml0aWFs aXplZCB1c2luZyBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpCiAgKiBvciBpbnRlbF9tbWlv X3VzZV9kdW1wX2ZpbGUoKS4gSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGRpcmVj dGx5LgorICogVGhpcyBwb2ludGVyIGlzIHZhbGlkIG9ubHkgZm9yIG9uZSBkcm0gZGV2aWNlLgog ICovCiB2b2lkICppZ3RfZ2xvYmFsX21taW87CiAKLXN0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSB7 Ci0JaW50IGluaXRlZDsKLQlib29sIHNhZmU7Ci0JdWludDMyX3QgaTkxNV9kZXZpZDsKLQlzdHJ1 Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKLQlpbnQga2V5OwotfSBtbWlvX2RhdGE7Ci0KIC8q KgogICogaW50ZWxfbW1pb191c2VfZHVtcF9maWxlOgorICogQG1taW9fZGF0YTogIG1taW8gc3Ry dWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAZmlsZTogbmFtZSBvZiB0aGUgcmVnaXN0ZXIg ZHVtcCBmaWxlIHRvIG9wZW4KICAqCi0gKiBTZXRzIHVwICNpZ3RfZ2xvYmFsX21taW8gdG8gcG9p bnQgYXQgdGhlIGRhdGEgY29udGFpbmVkIGluIEBmaWxlLiBUaGlzIGFsbG93cwotICogdGhlIHNh bWUgY29kZSB0byBnZXQgcmV1c2VkIGZvciBkdW1waW5nIGFuZCBkZWNvZGluZyBmcm9tIHJ1bm5p bmcgaGFyZHdhcmUgYXMKLSAqIGZyb20gcmVnaXN0ZXIgZHVtcHMuCisgKiBTZXRzIGFsc28gdXAg bW1pb19kYXRhLT5pZ3RfbW1pbyB0byBwb2ludCBhdCB0aGUgZGF0YSBjb250YWluZWQKKyAqIGlu IEBmaWxlLiBUaGlzIGFsbG93cyB0aGUgc2FtZSBjb2RlIHRvIGdldCByZXVzZWQgZm9yIGR1bXBp bmcgYW5kIGRlY29kaW5nCisgKiBmcm9tIHJ1bm5pbmcgaGFyZHdhcmUgYXMgZnJvbSByZWdpc3Rl ciBkdW1wcy4KICAqLwogdm9pZAotaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUp CitpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19k YXRhLCBjaGFyICpmaWxlKQogewogCWludCBmZDsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAorCW1lbXNl dChtbWlvX2RhdGEsIDAsIHNpemVvZihzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhKSk7CiAJZmQgPSBv cGVuKGZpbGUsIE9fUkRXUik7CiAJaWd0X2ZhaWxfb25fZihmZCA9PSAtMSwKIAkJICAgICAgIkNv dWxkbid0IG9wZW4gJXNcbiIsIGZpbGUpOwogCiAJZnN0YXQoZmQsICZzdCk7Ci0JaWd0X2dsb2Jh bF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQ X1BSSVZBVEUsIGZkLCAwKTsKLQlpZ3RfZmFpbF9vbl9mKGlndF9nbG9iYWxfbW1pbyA9PSBNQVBf RkFJTEVELAorCW1taW9fZGF0YS0+aWd0X21taW8gPSBtbWFwKE5VTEwsIHN0LnN0X3NpemUsIFBS T1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSwgZmQsIDApOworCWlndF9mYWlsX29uX2Yo bW1pb19kYXRhLT5pZ3RfbW1pbyA9PSBNQVBfRkFJTEVELAogCQkgICAgICAiQ291bGRuJ3QgbW1h cCAlc1xuIiwgZmlsZSk7CisKKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEtPmlndF9tbWlv OworCiAJY2xvc2UoZmQpOwogfQogCiAvKioKICAqIGludGVsX21taW9fdXNlX3BjaV9iYXI6Cisg KiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqIEBwY2lf ZGV2OiBpbnRlbCBncmFjcGhpcyBwY2kgZGV2aWNlCiAgKgotICogU2V0cyB1cCAjaWd0X2dsb2Jh bF9tbWlvIHRvIHBvaW50IGF0IHRoZSBtbWlvIGJhci4KKyAqIEZpbGwgYSBtbWlvX2RhdGEgc3R1 Y3R1cmUgd2l0aCBpZ3RfbW1pbyB0byBwb2ludCBhdCB0aGUgbW1pbyBiYXIuCiAgKgogICogQHBj aV9kZXYgY2FuIGJlIG9idGFpbmVkIGZyb20gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKS4KICAqLwog dm9pZAotaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldikK K2ludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0IGludGVsX21taW9fZGF0YSAqbW1pb19kYXRh LCBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldikKIHsKIAl1aW50MzJfdCBkZXZpZCwgZ2VuOwog CWludCBtbWlvX2JhciwgbW1pb19zaXplOwogCWludCBlcnJvcjsKIAorCW1lbXNldChtbWlvX2Rh dGEsIDAsIHNpemVvZihzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhKSk7CiAJZGV2aWQgPSBwY2lfZGV2 LT5kZXZpY2VfaWQ7CiAJaWYgKElTX0dFTjIoZGV2aWQpKQogCQltbWlvX2JhciA9IDE7CkBAIC0x MzksNyArMTM5LDkgQEAgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAq cGNpX2RldikKIAkJCQkgICAgICBwY2lfZGV2LT5yZWdpb25zW21taW9fYmFyXS5iYXNlX2FkZHIs CiAJCQkJICAgICAgbW1pb19zaXplLAogCQkJCSAgICAgIFBDSV9ERVZfTUFQX0ZMQUdfV1JJVEFC TEUsCi0JCQkJICAgICAgJmlndF9nbG9iYWxfbW1pbyk7CisJCQkJICAgICAgJm1taW9fZGF0YS0+ aWd0X21taW8pOworCisJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLT5pZ3RfbW1pbzsKIAog CWlndF9mYWlsX29uX2YoZXJyb3IgIT0gMCwKIAkJICAgICAgIkNvdWxkbid0IG1hcCBNTUlPIHJl Z2lvblxuIik7CkBAIC0xNTMsNiArMTU1LDcgQEAgcmVsZWFzZV9mb3JjZXdha2VfbG9jayhpbnQg ZmQpCiAKIC8qKgogICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQ6CisgKiBAbW1pb19kYXRh OiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqIEBwY2lfZGV2OiBpbnRlbCBn cmFwaGljcyBwY2kgZGV2aWNlCiAgKiBAc2FmZTogdXNlIHNhZmUgcmVnaXN0ZXIgYWNjZXNzIHRh YmxlcwogICoKQEAgLTE2MCw3NiArMTYzLDcyIEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50 IGZkKQogICogaGFuZGxpbmcgYW5kIGFsc28gYWxsb3dzIHJlZ2lzdGVyIGFjY2VzcyB0byBiZSBj aGVja2VkIHdpdGggYW4gZXhwbGljaXQKICAqIHdoaXRlbGlzdC4KICAqCi0gKiBJdCBhbHNvIGlu aXRpYWxpemVzICNpZ3RfZ2xvYmFsX21taW8gbGlrZSBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCku CisgKiBJdCBhbHNvIGluaXRpYWxpemVzIG1taW9fZGF0YS0+aWd0X21taW8gbGlrZSBpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKCkuCiAgKgogICogQHBjaV9kZXYgY2FuIGJlIG9idGFpbmVkIGZyb20g aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKS4KICAqLwogaW50Ci1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCkKK2ludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg c3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCiB7CiAJaW50IHJl dDsKIAotCS8qIGFmdGVyIG9sZCBBUEkgaXMgZGVwcmVjYXRlZCwgcmVtb3ZlIHRoaXMgKi8KLQlp ZiAoaWd0X2dsb2JhbF9tbWlvID09IE5VTEwpCi0JCWludGVsX21taW9fdXNlX3BjaV9iYXIocGNp X2Rldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcihtbWlvX2RhdGEsIHBjaV9kZXYpOwogCi0J aWd0X2Fzc2VydChpZ3RfZ2xvYmFsX21taW8gIT0gTlVMTCk7CisJaWd0X2Fzc2VydChtbWlvX2Rh dGEtPmlndF9tbWlvICE9IE5VTEwpOwogCi0JaWYgKG1taW9fZGF0YS5pbml0ZWQpCi0JCXJldHVy biAtMTsKLQotCW1taW9fZGF0YS5zYWZlID0gKHNhZmUgIT0gMCAmJgorCW1taW9fZGF0YS0+c2Fm ZSA9IChzYWZlICE9IDAgJiYKIAkJCWludGVsX2dlbihwY2lfZGV2LT5kZXZpY2VfaWQpID49IDQp ID8gdHJ1ZSA6IGZhbHNlOwotCW1taW9fZGF0YS5pOTE1X2RldmlkID0gcGNpX2Rldi0+ZGV2aWNl X2lkOwotCWlmIChtbWlvX2RhdGEuc2FmZSkKLQkJbW1pb19kYXRhLm1hcCA9IGludGVsX2dldF9y ZWdpc3Rlcl9tYXAobW1pb19kYXRhLmk5MTVfZGV2aWQpOworCW1taW9fZGF0YS0+cGNpX2Rldmlj ZV9pZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKKwlpZiAobW1pb19kYXRhLT5zYWZlKQorCQltbWlv X2RhdGEtPm1hcCA9IGludGVsX2dldF9yZWdpc3Rlcl9tYXAobW1pb19kYXRhLT5wY2lfZGV2aWNl X2lkKTsKIAogCS8qIEZpbmQgd2hlcmUgdGhlIGZvcmNld2FrZSBsb2NrIGlzLiBGb3JjZXdha2Ug ZG9lc24ndCBleGlzdAogCSAqIGdlbiA8IDYsIGJ1dCB0aGUgZGVidWdmcyBzaG91bGQgZG8gdGhl IHJpZ2h0IHRoaW5ncyBmb3IgdXMuCiAJICovCiAJcmV0ID0gaWd0X29wZW5fZm9yY2V3YWtlX2hh bmRsZShmZCk7CiAJaWYgKHJldCA9PSAtMSkKLQkJbW1pb19kYXRhLmtleSA9IEZBS0VLRVk7CisJ CW1taW9fZGF0YS0+a2V5ID0gRkFLRUtFWTsKIAllbHNlCi0JCW1taW9fZGF0YS5rZXkgPSByZXQ7 CisJCW1taW9fZGF0YS0+a2V5ID0gcmV0OwogCi0JbW1pb19kYXRhLmluaXRlZCsrOwogCXJldHVy biAwOwogfQogCiBzdGF0aWMgaW50Ci1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZSh2 b2lkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uoc3RydWN0IGludGVsX21taW9f ZGF0YSAqbW1pb19kYXRhKQogewotCXJldHVybiBtbWlvX2RhdGEua2V5ICE9IEZBS0VLRVk7CisJ cmV0dXJuIG1taW9fZGF0YS0+a2V5ICE9IEZBS0VLRVk7CiB9CiAKIC8qKgogICogaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0 dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKgogICogUmV0dXJuczoKICAqIE5vbi16ZXJvIHdoZW4g Zm9yY2V3YWtlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KICAqLwotaW50IGludGVsX3JlZ2lzdGVy X2FjY2Vzc19uZWVkc19mYWtld2FrZSh2b2lkKQoraW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19u ZWVkc19mYWtld2FrZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEpCiB7Ci0JcmV0 dXJuIG1taW9fZGF0YS5rZXkgPT0gRkFLRUtFWTsKKwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgPT0g RkFLRUtFWTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaToKKyAqIEBt bWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwogICoKICAqIENsZWFu IHVwIHRoZSByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGluaXRpYWxpemVkIHdpdGgKICAqIGludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCiAgKi8KIHZvaWQKLWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKHZvaWQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaShzdHJ1Y3QgaW50ZWxfbW1p b19kYXRhICptbWlvX2RhdGEpCiB7Ci0JaWYgKG1taW9fZGF0YS5rZXkgJiYgaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX25lZWRzX3dha2UoKSkKLQkJcmVsZWFzZV9mb3JjZXdha2VfbG9jayhtbWlvX2Rh dGEua2V5KTsKLQltbWlvX2RhdGEuaW5pdGVkLS07CisJaWYgKG1taW9fZGF0YS0+a2V5ICYmIGlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKG1taW9fZGF0YSkpCisJCXJlbGVhc2VfZm9y Y2V3YWtlX2xvY2sobW1pb19kYXRhLT5rZXkpOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVy X3JlYWQ6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMK ICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdp c3RlciBhdCBAb2Zmc2V0LiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUgbmV3CkBA IC0yNDIsMjAgKzI0MSwxOCBAQCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQogICog VGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KIHVpbnQzMl90Ci1pbnRlbF9y ZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKK2ludGVsX3JlZ2lzdGVyX3JlYWQoc3RydWN0IGlu dGVsX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCiB7CiAJc3RydWN0IGludGVs X3JlZ2lzdGVyX3JhbmdlICpyYW5nZTsKIAl1aW50MzJfdCByZXQ7CiAKLQlpZ3RfYXNzZXJ0KG1t aW9fZGF0YS5pbml0ZWQpOwotCi0JaWYgKGludGVsX2dlbihtbWlvX2RhdGEuaTkxNV9kZXZpZCkg Pj0gNikKLQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5ICE9IC0xKTsKKwlpZiAoaW50ZWxfZ2Vu KG1taW9fZGF0YS0+cGNpX2RldmljZV9pZCkgPj0gNikKKwkJaWd0X2Fzc2VydChtbWlvX2RhdGEt PmtleSAhPSAtMSk7CiAKLQlpZiAoIW1taW9fZGF0YS5zYWZlKQorCWlmICghbW1pb19kYXRhLT5z YWZlKQogCQlnb3RvIHJlYWRfb3V0OwogCi0JcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFu Z2UobW1pb19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlv X2RhdGEtPm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVMX1JBTkdFX1JFQUQpOwogCkBAIC0y NjYsMTMgKzI2MywxNCBAQCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKIAl9CiAK IHJlYWRfb3V0OgotCXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoaWd0X2dsb2JhbF9tbWlv ICsgcmVnKTsKKwlyZXQgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopKG1taW9fZGF0YS0+aWd0X21t aW8gKyByZWcpOwogb3V0OgogCXJldHVybiByZXQ7CiB9CiAKIC8qKgogICogaW50ZWxfcmVnaXN0 ZXJfd3JpdGU6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlv bnMKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAq CkBAIC0yODMsMTkgKzI4MSwxNyBAQCBvdXQ6CiAgKiB3aGl0ZSBsaXN0cy4KICAqLwogdm9pZAot aW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCitpbnRlbF9y ZWdpc3Rlcl93cml0ZShzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFu Z2U7CiAKLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5pbml0ZWQpOwotCi0JaWYgKGludGVsX2dlbiht bWlvX2RhdGEuaTkxNV9kZXZpZCkgPj0gNikKLQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5ICE9 IC0xKTsKKwlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS0+cGNpX2RldmljZV9pZCkgPj0gNikKKwkJ aWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAhPSAtMSk7CiAKLQlpZiAoIW1taW9fZGF0YS5zYWZl KQorCWlmICghbW1pb19kYXRhLT5zYWZlKQogCQlnb3RvIHdyaXRlX291dDsKIAotCXJhbmdlID0g aW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS5tYXAsCisJcmFuZ2UgPSBpbnRlbF9n ZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLT5tYXAsCiAJCQkJCSByZWcsCiAJCQkJCSBJTlRF TF9SQU5HRV9XUklURSk7CiAKQEAgLTMwMyw3ICsyOTksNyBAQCBpbnRlbF9yZWdpc3Rlcl93cml0 ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIAkJICAgICAgIlJlZ2lzdGVyIHdyaXRlIGJs b2NrZWQgZm9yIHNhZmV0eSAiIigqMHglMDh4ID0gMHgleClcbiIsIHJlZywgdmFsKTsKIAogd3Jp dGVfb3V0OgotCSoodm9sYXRpbGUgdWludDMyX3QgKikoaWd0X2dsb2JhbF9tbWlvICsgcmVnKSA9 IHZhbDsKKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKG1taW9fZGF0YS0+aWd0X21taW8gKyByZWcp ID0gdmFsOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5j eS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKaW5kZXggZTU2ZDYyNzguLjlkZGIz NDhjIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYworKysgYi90ZXN0 cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYwpAQCAtNjEsNiArNjEsOCBAQAogCiBzdGF0aWMgdW5z aWduZWQgaW50IHJpbmdfc2l6ZTsKIHN0YXRpYyBkb3VibGUgcmNzX2Nsb2NrOworc3RhdGljIHN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOworCiAKIHN0YXRpYyB2b2lkCiBwb2xsX3Jp bmcoaW50IGZkLCB1bnNpZ25lZCByaW5nLCBjb25zdCBjaGFyICpuYW1lKQpAQCAtNjY3LDcgKzY2 OSw3IEBAIGlndF9tYWluCiAJCWlmIChyaW5nX3NpemUgPiAxMDI0KQogCQkJcmluZ19zaXplID0g MTAyNDsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpLCBmYWxzZSwgZGV2aWNlKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9f ZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGRldmljZSk7CiAJCXJjc19jbG9j ayA9IGNsb2NrcmF0ZShkZXZpY2UsIFJDU19USU1FU1RBTVApOwogCQlpZ3RfaW5mbygiUkNTIHRp bWVzdGFtcCBjbG9jazogJS4wZktIeiwgJS4xZm5zXG4iLAogCQkJIHJjc19jbG9jayAvIDFlMywg MWU5IC8gcmNzX2Nsb2NrKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2Uu YyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwppbmRleCA2MmU4ZDBhNS4uZWI0ZjQ4ZjUg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYworKysgYi90ZXN0cy9pOTE1 L2dlbV9leGVjX3BhcnNlLmMKQEAgLTU4LDYgKzU4LDkgQEAKIAogc3RhdGljIGludCBwYXJzZXJf dmVyc2lvbjsKIAorc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CisKKwogc3RhdGlj 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 CmluZGV4IDgxYzM1NmYwLi5kZDYzMTZlYSAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fd29y a2Fyb3VuZHMuYworKysgYi90ZXN0cy9pOTE1L2dlbV93b3JrYXJvdW5kcy5jCkBAIC0yMjUsNiAr MjI1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfd29ya2Fyb3VuZHMoaW50IGZkLCBlbnVtIG9wZXJh dGlvbiBvcCwgdW5zaWduZWQgaW50IGZsYWdzKQogCiBpZ3RfbWFpbgogeworCXN0cnVjdCBpbnRl bF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBkZXZpY2UgPSAtMTsKIAljb25zdCBzdHJ1Y3Qg ewogCQljb25zdCBjaGFyICpuYW1lOwpAQCAtMjU2LDcgKzI1Nyw3IEBAIGlndF9tYWluCiAJCWRl dmljZSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwogCQlpZ3RfcmVxdWlyZV9nZW0o ZGV2aWNlKTsKIAotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNl KCkpOworCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lf ZGV2aWNlKCkpOwogCiAJCWdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGRldmlj ZSkpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jIGIvdGVzdHMvaTkx NS9pOTE1X3BtX2xwc3AuYwppbmRleCBiMzE5ZGJlOS4uNDI5MzhlMTAgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwpA QCAtMTg3LDcgKzE4Nyw3IEBAIGludCBkcm1fZmQ7CiB1aW50MzJfdCBkZXZpZDsKIGRybU1vZGVS ZXNQdHIgZHJtX3JlczsKIGRybU1vZGVDb25uZWN0b3JQdHIgZHJtX2Nvbm5lY3RvcnNbTUFYX0NP Tk5FQ1RPUlNdOwotCitzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIGlndF9tYWlu CiB7CiAJaWd0X2ZpeHR1cmUgewpAQCAtMjEwLDcgKzIxMCw3IEBAIGlndF9tYWluCiAKIAkJaWd0 X3JlcXVpcmUoc3VwcG9ydHNfbHBzcChkZXZpZCkpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRy bV9mZCk7CiAKIAkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCX0KQEAgLTIyNyw3 ICsyMjcsNyBAQCBpZ3RfbWFpbgogCWlndF9maXh0dXJlIHsKIAkJaW50IGk7CiAKLQkJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7CiAJCWZvciAoaSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBp KyspCiAJCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihkcm1fY29ubmVjdG9yc1tpXSk7CiAJCWRybU1v ZGVGcmVlUmVzb3VyY2VzKGRybV9yZXMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYXVkaW9f ZHVtcC5jIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCmluZGV4IDcyNmJiNGI2Li42ZDExNjU5 ZSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCisrKyBiL3Rvb2xzL2ludGVs X2F1ZGlvX2R1bXAuYwpAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgdWludDMyX3QgZGV2aWQ7CiBz dGF0aWMgaW50IGF1ZF9yZWdfYmFzZSA9IDA7CS8qIGJhc2UgYWRkcmVzcyBvZiBhdWRpbyByZWdp c3RlcnMgKi8KIHN0YXRpYyBpbnQgZGlzcF9yZWdfYmFzZSA9IDA7CS8qIGJhc2UgYWRkcmVzcyBv ZiBkaXNwbGF5IHJlZ2lzdGVycyAqLwogCisKICNkZWZpbmUgSVNfSEFTV0VMTF9QTFVTKGRldmlk KSAgKElTX0hBU1dFTEwoZGV2aWQpIHx8IElTX0JST0FEV0VMTChkZXZpZCkpCiAKICNkZWZpbmUg QklUU1RPKG4pCQkobiA+PSBzaXplb2YobG9uZykgKiA4ID8gfjAgOiAoMVVMIDw8IChuKSkgLSAx KQpAQCAtMjQ2NCw2ICsyNDY1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9icmFzd2VsbCh2b2lkKQog aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0cnVjdCBwY2lfZGV2aWNlICpw Y2lfZGV2OworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJcGNpX2RldiA9 IGludGVsX2dldF9wY2lfZGV2aWNlKCk7CiAJZGV2aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7IC8q IFhYWCBub3QgdHJ1ZSB3aGVuIG1hcHBpbmchICovCkBAIC0yNDcxLDkgKzI0NzMsOSBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZG9fc2VsZl90ZXN0cygpOwogCiAJaWYgKGFy Z2MgPT0gMikKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGFyZ3ZbMV0pOworCQlpbnRlbF9t bWlvX3VzZV9kdW1wX2ZpbGUoJm1taW9fZGF0YSwgYXJndlsxXSk7CiAJZWxzZQotCQlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlv X2RhdGEsIHBjaV9kZXYpOwogCiAJcHJpbnRmKCIlcyBhdWRpbyByZWdpc3RlcnM6XG5cbiIsIGlu dGVsX2dldF9kZXZpY2VfaW5mbyhkZXZpZCktPmNvZGVuYW1lKTsKIAlpZiAoSVNfVkFMTEVZVklF VyhkZXZpZCkpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jIGIvdG9vbHMv aW50ZWxfYmFja2xpZ2h0LmMKaW5kZXggMDY3ZmQ0MTguLmVkZjA2MDIyIDEwMDY0NAotLS0gYS90 b29scy9pbnRlbF9iYWNrbGlnaHQuYworKysgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwpAQCAt MzgsOSArMzgsMTAgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworCXN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCXVpbnQzMl90IGN1cnJlbnQsIG1heDsK IAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJaW50 ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsK IAogCWN1cnJlbnQgPSBJTlJFRyhCTENfUFdNX0NQVV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lD TEVfTUFTSzsKIAltYXggPSBJTlJFRyhCTENfUFdNX1BDSF9DVEwyKSA+PiAxNjsKZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgYi90b29scy9pbnRlbF9kaXNwbGF5X3Bv bGxlci5jCmluZGV4IDUxZjViOWE1Li5mNDc5N2EyMCAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf ZGlzcGxheV9wb2xsZXIuYworKysgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCkBAIC05 NjIsNiArOTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSB1c2Fn ZShjb25zdCBjaGFyICpuYW1lKQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog eworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCWludCBwaXBl ID0gMCwgYml0ID0gMCwgdGFyZ2V0X3NjYW5saW5lID0gMCwgdGFyZ2V0X2Z1enogPSAxOwogCWJv b2wgdGVzdF9waXhlbGNvdW50ID0gZmFsc2U7CkBAIC0xMTg3LDcgKzExODgsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlicmVhazsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSAsaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg LTEpOwogCiAJcHJpbnRmKCIlcz9cbiIsIHRlc3RfbmFtZSh0ZXN0LCBwaXBlLCBiaXQsIHRlc3Rf cGl4ZWxjb3VudCkpOwogCkBAIC0xMjYyLDcgKzEyNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQlhc3NlcnQoMCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWlm IChxdWl0KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQu YyBiL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwppbmRleCAwMmZiZjg4OC4uODdiMjZkNDMgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYworKysgYi90b29scy9pbnRlbF9mb3Jj ZXdha2VkLmMKQEAgLTU3LDE0ICs1NywxNSBAQCBoZWxwKGNoYXIgKnByb2cpIHsKIH0KIAogc3Rh dGljIGludAotaXNfYWxpdmUodm9pZCkgeworaXNfYWxpdmUoc3RydWN0IGludGVsX21taW9fZGF0 YSAqbW1pb19kYXRhKSB7CiAJLyogUmVhZCB0aGUgdGltZXN0YW1wLCB3aGljaCBzaG91bGQgKmFs bW9zdCogYWx3YXlzIGJlICEwICovCi0JcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4MjM1 OCkgIT0gMCk7CisJcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YSwgMHgyMzU4 KSAhPSAwKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlpbnQg cmV0OworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJaWYgKGFyZ2MgPiAy IHx8IChhcmdjID09IDIgJiYgIXN0cm5jbXAoYXJndlsxXSwgIi1oIiwgMikpKSB7CiAJCWhlbHAo YXJndlsxXSk7CkBAIC04MCw3ICs4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCUlORk9fUFJJTlQoInN0YXJ0ZWQgZGFlbW9uIik7CiAJfQogCi0JcmV0ID0gaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOworCXJl dCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDEsIC0xKTsKIAlpZiAocmV0KSB7CiAJCUlORk9fUFJJTlQoIkNvdWxkbid0IGlu aXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKIAkJZXhpdCgxKTsKQEAgLTg4LDE2ICs4OSwxNiBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlJTkZPX1BSSU5UKCJGb3JjZXdha2Ug bG9ja2VkXG4iKTsKIAl9CiAJd2hpbGUoMSkgewotCQlpZiAoIWlzX2FsaXZlKCkpIHsKKwkJaWYg KCFpc19hbGl2ZSgmbW1pb19kYXRhKSkgewogCQkJSU5GT19QUklOVCgiZ3B1IHJlc2V0PyByZXN0 YXJ0aW5nIGRhZW1vblxuIik7Ci0JCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwotCQkJ cmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MSwgLTEpOworCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CisJCQly ZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAxLCAtMSk7CiAJCQlpZiAocmV0KQogCQkJCUlORk9fUFJJTlQoIlJlZyBhY2Nl c3MgaW5pdCBmYWlsXG4iKTsKIAkJfQogCQlzbGVlcCgxKTsKIAl9Ci0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsK IAlJTkZPX1BSSU5UKCJGb3JjZXdha2UgdW5sb2NrXG4iKTsKIAogCWlmIChkYWVtb25pemVkKSB7 CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9ncHVfdGltZS5jIGIvdG9vbHMvaW50ZWxfZ3B1X3Rp bWUuYwppbmRleCA1NmQ2NWZlMC4uMTFiZjczNTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2dw dV90aW1lLmMKKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwpAQCAtNjUsOSArNjUsMTAgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXVpbnQ2NF90IHJpbmdfaWRsZSA9IDAs IHJpbmdfdGltZSA9IDA7CiAJc3RydWN0IHRpbWV2YWwgc3RhcnQsIGVuZDsKIAlzdGF0aWMgc3Ry dWN0IHJ1c2FnZSBydXNhZ2U7CisJc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiAJ aW50IHN0YXR1czsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNp X2RldmljZSgpKTsKIAogCWlmIChhcmdjID09IDEpIHsKIAkJZnByaW50ZihzdGRlcnIsICJ1c2Fn ZTogJXMgY21kIFthcmdzLi4uXVxuIiwgYXJndlswXSk7CmRpZmYgLS1naXQgYS90b29scy9pbnRl bF9pbmZvZnJhbWVzLmMgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKaW5kZXggMmVmNWQ0ZmQu LmQ0YmY1MjhjIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKKysrIGIvdG9v bHMvaW50ZWxfaW5mb2ZyYW1lcy5jCkBAIC0yNjQsNiArMjY0LDcgQEAgY29uc3QgY2hhciAqZGlw X2ZyZXF1ZW5jeV9uYW1lc1tdID0gewogCiBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKIGlu dCBnZW4gPSAwOworc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlvX2RhdGE7CiAKIHN0YXRpYyBj b25zdCBjaGFyICpzcGRfc291cmNlX3RvX3N0cmluZyhTb3VyY2VEZXZpY2Ugc291cmNlKQogewpA QCAtMTEwOCw3ICsxMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkg ICAgICAgIiBwZXJmZWN0bHk6IHRoZSBLZXJuZWwgbWlnaHQgdW5kbyBvdXIgY2hhbmdlcy5cbiIp OwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCZtbWlvX2RhdGEsIHBjaV9kZXYsIDAsIC0xKTsKIAlpbnRlbF9jaGVja19wY2goKTsKIAogCWlm IChJU19HRU40KHBjaV9kZXYtPmRldmljZV9pZCkpCkBAIC0xMjU2LDYgKzEyNTcsNiBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogb3V0OgotCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7 CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jIGIv dG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKaW5kZXggNDE3OWM1YWUuLjA2YTE4NWM5IDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9sM19wYXJpdHkuYworKysgYi90b29scy9pbnRlbF9sM19wYXJpdHku YwpAQCAtMTc2LDYgKzE3Niw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm5hbWUp CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CisJc3RydWN0IGludGVsX21t aW9fZGF0YSBtbWlvX2RhdGE7CiAJY29uc3QgY2hhciAqcGF0aFtSRUFMX01BWF9TTElDRVNdID0g eyJsM19wYXJpdHkiLCAibDNfcGFyaXR5X3NsaWNlXzEifTsKIAlpbnQgcm93ID0gMCwgYmFuayA9 IDAsIHNiYW5rID0gMDsKIAlpbnQgZmRbUkVBTF9NQVhfU0xJQ0VTXSA9IHswfSwgcmV0LCBpOwpA QCAtMTg5LDcgKzE5MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYg KGludGVsX2dlbihkZXZpZCkgPCA3IHx8IElTX1ZBTExFWVZJRVcoZGV2aWQpKQogCQlleGl0KDc3 KTsKIAotCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCBkZXZpY2UpID09IDApOworCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkZXZpY2UpID09IDAp OwogCiAJZGlyID0gaWd0X3N5c2ZzX29wZW4oZGV2aWNlKTsKIApAQCAtMjE3LDcgKzIxOCw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogbm93LiBKdXN0IGJlIGF3YXJl IG9mIHRoaXMgaWYgZm9yIHNvbWUgcmVhc29uIGEgaGFuZyBpcyByZXBvcnRlZAogCSAqIHdoZW4g dXNpbmcgdGhpcyB0b29sLgogCSAqLwotCWRmdCA9IGludGVsX3JlZ2lzdGVyX3JlYWQoMHhiMDM4 KTsKKwlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIDB4YjAzOCk7CiAKIAl3 aGlsZSAoMSkgewogCQlpbnQgYywgb3B0aW9uX2luZGV4ID0gMDsKQEAgLTM2NiwxMCArMzY3LDEw IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYXNzZXJ0KGkgPCAyKTsK IAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBzbGljZSAqLwogCQkJCWRmdCB8PSAxIDw8IDA7IC8qIGVu YWJsZSAqLwotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKDB4YjAzOCwgZGZ0KTsKKwkJCQlpbnRl bF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCAweGIwMzgsIGRmdCk7CiAJCQkJYnJlYWs7CiAJ CQljYXNlICd1JzoKLQkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgweGIwMzgsIGRmdCAmIH4oMTw8 MCkpOworCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEgLDB4YjAzOCwgZGZ0ICYg figxPDwwKSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdMJzoKIAkJCQlicmVhazsKQEAgLTM3OCw3 ICszNzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgmbW1pb19kYXRhKTsKIAlpZiAoYWN0aW9uID09ICdsJykKIAkJZXhpdChFWElUX1NVQ0NFU1Mp OwogCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBiL3Rvb2xzL2ludGVsX2xpZC5jCmlu ZGV4IDM3YzZiYTVlLi4yYTFkOTgwMCAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfbGlkLmMKKysr IGIvdG9vbHMvaW50ZWxfbGlkLmMKQEAgLTExNyw5ICsxMTcsMTAgQEAgb3V0OgogCiBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CisJc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlv X2RhdGE7CiAJaW50IHN3ZjE0LCBhY3BpX2xpZDsKIAotCWludGVsX21taW9fdXNlX3BjaV9iYXIo aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1pb19k YXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCXdoaWxlICgxKSB7CiAJCXN3ZjE0ID0g SU5SRUcoU1dGMTQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90 b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwppbmRleCAxMzdlZjYxYS4uNjQwNzg3MDUgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rvb2xzL2ludGVsX3BhbmVs X2ZpdHRlci5jCkBAIC0yNzMsNiArMjczLDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJYm9vbCBkb19kaXNhYmxlID0gZmFsc2UsIGRvX2R1bXAgPSBmYWxzZSwgZG9fdXNh Z2UgPSBmYWxzZTsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKIAl1aW50MzJfdCBkZXZp ZDsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXByaW50ZigiV0FSTklO RzpcbiIKIAkgICAgICAgIlRoaXMgdG9vbCBpcyBhIHdvcmthcm91bmQgZm9yIHBlb3BsZSB0aGF0 IGRvbid0IGhhdmUgYSBLZXJuZWwgIgpAQCAtMjgwLDcgKzI4MSw3IEBAIGludCBtYWluIChpbnQg YXJnYywgY2hhciAqYXJndltdKQogCSAgICAgICAic29sdXRpb24gdGhhdCBtYXkgb3IgbWF5IG5v dCB3b3JrLiBVc2UgaXQgYXQgeW91ciBvd24gcmlzay5cbiIpOwogCiAJcGNpX2RldiA9IGludGVs X2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2Rldiwg MCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIHBjaV9kZXYs IDAsIC0xKTsKIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICghSEFTX1BDSF9T UExJVChkZXZpZCkpIHsKQEAgLTM0Miw2ICszNDMsNiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVybiByZXQ7CiB9 CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgYi90b29scy9pbnRlbF9w ZXJmX2NvdW50ZXJzLmMKaW5kZXggNTBjNGJjZTYuLjU4MjRkOWMxIDEwMDY0NAotLS0gYS90b29s cy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5j CkBAIC00NDEsNiArNDQxLDcgQEAgZ2VuN19nZXRfY291bnRlcnModm9pZCkKIGludAogbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CisJc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlvX2Rh dGE7CiAJdWludDMyX3QgZGV2aWQ7CiAJaW50IGNvdW50ZXJfZm9ybWF0OwogCWludCBjb3VudGVy X2NvdW50OwpAQCAtNDgzLDEwICs0ODQsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAKIAlpZiAob2Fjb250cm9sKSB7CiAJCS8qIEZvcmNld2FrZSAqLwotCQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBmZCk7CisJCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksCisJ CQkJMCwgZmQpOwogCiAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRl bF9yZWdpc3Rlcl93cml0ZShPQUNPTlRST0wsCisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlv X2RhdGEsIE9BQ09OVFJPTCwKIAkJCWNvdW50ZXJfZm9ybWF0IDw8IE9BQ09OVFJPTF9DT1VOVEVS X1NFTEVDVF9TSElGVCB8CiAJCQlQRVJGT1JNQU5DRV9DT1VOVEVSX0VOQUJMRSk7CiAJfQpAQCAt NTIwLDEwICs1MjIsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAob2Fj b250cm9sKSB7CiAJCS8qIERpc2FibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxf cmVnaXN0ZXJfd3JpdGUoT0FDT05UUk9MLCAwKTsKKwkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1t aW9fZGF0YSwgT0FDT05UUk9MLCAwKTsKIAogCQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9f ZGF0YSk7CiAJfQogCiAJZnJlZSh0b3RhbHMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVn LmMgYi90b29scy9pbnRlbF9yZWcuYwppbmRleCBlNTE3OTU2Yi4uODQ3ZmRiZWQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2ludGVsX3JlZy5jCisrKyBiL3Rvb2xzL2ludGVsX3JlZy5jCkBAIC01Nyw2ICs1 Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9ub3Rfc3VwcG9ydGVkKHZvaWQpCiAKIHN0cnVjdCBj b25maWcgewogCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2OworCXN0cnVjdCBpbnRlbF9tbWlv X2RhdGEgbW1pb19kYXRhOwogCWNoYXIgKm1taW9maWxlOwogCXVpbnQzMl90IGRldmlkOwogCkBA IC0zODcsNyArMzg4LDcgQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcg KmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJCQlyZWctPnBvcnRf ZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQl2YWwgPSBpbnRlbF9pb3NmX3NiX3Jl YWQocmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyKTsKKwkJdmFsID0gaW50ZWxfaW9zZl9z Yl9yZWFkKCZjb25maWctPm1taW9fZGF0YSwgcmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRy KTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBz dXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNjLnBvcnQpOwpAQCAtNDU4LDcgKzQ1OSw3IEBAIHN0 YXRpYyBpbnQgd3JpdGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVn ICpyZWcsIHVpbnQzMl90IHZhbCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVy biAtMTsKIAkJfQotCQlpbnRlbF9pb3NmX3NiX3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJl Zy0+YWRkciwgdmFsKTsKKwkJaW50ZWxfaW9zZl9zYl93cml0ZSgmY29uZmlnLT5tbWlvX2RhdGEs IHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkciwgdmFsKTsKIAkJYnJlYWs7CiAJZGVmYXVs dDoKIAkJZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9y dF9kZXNjLnBvcnQpOwpAQCAtNTUyLDkgKzU1Myw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3Jl YWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAog CWlmIChjb25maWctPm1taW9maWxlKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmln LT5tbWlvZmlsZSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlvX2Rh dGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCZjb25maWctPm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkg PSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0cnVjdCByZWcgcmVnOwpAQCAtNTcwLDcgKzU3MSw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3JlYWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwog CiAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKIH0KQEAgLTU4NCw3ICs1ODUsNyBAQCBzdGF0aWMgaW50 IGludGVsX3JlZ193cml0ZShzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKIAogCWZv ciAoaSA9IDE7IGkgPCBhcmdjOyBpICs9IDIpIHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC02MDks NyArNjEwLDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29u ZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl3cml0ZV9yZWdpc3Rlcihjb25maWcsICZy ZWcsIHZhbCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRf U1VDQ0VTUzsKIH0KQEAgLTYyMCw5ICs2MjEsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19kdW1w KHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbnQgaTsK IAogCWlmIChjb25maWctPm1taW9maWxlKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29u ZmlnLT5tbWlvZmlsZSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlv X2RhdGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KCZjb25maWctPm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgY29uZmlnLT5yZWdjb3VudDsgaSsrKSB7CiAJCXJlZyA9ICZjb25maWctPnJl Z3NbaV07CkBAIC02MzQsNyArNjM1LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1 Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWR1bXBfcmVnaXN0 ZXIoY29uZmlnLCAmY29uZmlnLT5yZWdzW2ldKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZjb25maWctPm1taW9fZGF0 YSk7CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQpAQCAtNjQ4LDcgKzY0OSw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfcmVnX3NuYXBzaG90KHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKIAl9CiAKLQlpbnRlbF9tbWlv X3VzZV9wY2lfYmFyKGNvbmZpZy0+cGNpX2Rldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2Jhcigm Y29uZmlnLT5tbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2Rldik7CiAKIAkvKiBYWFg6IGVycm9yIGhh bmRsaW5nICovCiAJaWYgKHdyaXRlKDEsIGlndF9nbG9iYWxfbW1pbywgY29uZmlnLT5wY2lfZGV2 LT5yZWdpb25zW21taW9fYmFyXS5zaXplKSA9PSAtMSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVs X3JlZ19jaGVja2VyLmMgYi90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCmluZGV4IDZiZGU2M2Vj Li4zZjkwZGU4MiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYworKysgYi90 b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCkBAIC0zNDIsMTAgKzM0MiwxMSBAQCBjaGVja19kcGZj X2NvbnRyb2xfc2Eodm9pZCkKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKIAlz dHJ1Y3QgcGNpX2RldmljZSAqZGV2OworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRh OwogCiAJZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKIAlkZXZpZCA9IGRldi0+ZGV2aWNl X2lkOwotCWludGVsX21taW9fdXNlX3BjaV9iYXIoZGV2KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKCZtbWlvX2RhdGEsIGRldik7CiAKIAlpZiAoSVNfR0VONyhkZXZpZCkpCiAJCWdlbiA9IDc7 CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF93YXRlcm1hcmsuYyBiL3Rvb2xzL2ludGVsX3dhdGVy bWFyay5jCmluZGV4IGU3MWMzZDljLi4xNGQxYWUwZCAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf d2F0ZXJtYXJrLmMKKysrIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKQEAgLTIzNyw2ICsyMzcs NyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2tsX252MTJfYnVmX2NmZ19yZWdfbmFtZShpbnQgcGlw ZSwgaW50IHBsYW5lKQogCiBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lkKQogeworCXN0cnVj dCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBwaXBlLCBwbGFuZSwgbGV2ZWw7CiAJ aW50IG51bV9waXBlcyA9IDM7CiAJaW50IG1heF9wbGFuZXMgPSBza2xfbWF4X3BsYW5lcyhkZXZp ZCk7CkBAIC0yNDksNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIAl1 aW50MzJfdCBwbGFuZV9jdGxbbnVtX3BpcGVzXVttYXhfcGxhbmVzXTsKIAl1aW50MzJfdCB3bV9s aW5ldGltZVtudW1fcGlwZXNdOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZt bWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWZvciAocGlwZSA9 IDA7IHBpcGUgPCBudW1fcGlwZXM7IHBpcGUrKykgewogCQlpbnQgbnVtX3BsYW5lcyA9IHNrbF9u dW1fcGxhbmVzKGRldmlkLCBwaXBlKTsKQEAgLTQ1OCw2ICs0NTksNyBAQCBzdGF0aWMgdm9pZCBz a2xfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogeworCXN0 cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCXVpbnQzMl90IGRzcGNu dHJbM107CiAJdWludDMyX3Qgc3BjbnRyWzNdOwpAQCAtNDY5LDcgKzQ3MSw3IEBAIHN0YXRpYyB2 b2lkIGlsa193bV9kdW1wKHZvaWQpCiAJaW50IG51bV9waXBlcyA9IGludGVsX2dlbihkZXZpZCkg Pj0gNyA/IDMgOiAyOwogCXN0cnVjdCBpbGtfd20gd20gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspIHsKIAkJZHNwY250cltpXSA9 IHJlYWRfcmVnKDB4NzAxODAgKyBpICogMHgxMDAwKTsKQEAgLTUwNSw3ICs1MDcsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogCWlmIChJU19CUk9BRFdFTEwoZGV2aWQpIHx8IElT X0hBU1dFTEwoZGV2aWQpKQogCQl3bV9taXNjID0gcmVhZF9yZWcoMHg0NTI2MCk7CiAKLQlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZt bWlvX2RhdGEpOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9waXBlczsgaSsrKQogCQlwcmludGYo IiAgICBXTV9QSVBFXyVjID0gMHglMDh4XG4iLCBwaXBlX25hbWUoaSksIHdtX3BpcGVbaV0pOwpA QCAtNjEwLDYgKzYxMiw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQpCiAKIHN0YXRp YyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVsX21taW9fZGF0YSBtbWlv X2RhdGE7CiAJaW50IGk7CiAJdW5zaWduZWQgaW50IG51bV9waXBlcyA9IElTX0NIRVJSWVZJRVco ZGV2aWQpID8gMyA6IDI7CiAJdWludDMyX3QgZHNwYXJiLCBkc3BhcmIyLCBkc3BhcmIzOwpAQCAt NjE5LDcgKzYyMiw3IEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCiAJdWludDMyX3Qg ZHNwX3NzX3BtLCBkZHJfc2V0dXAyOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0g e307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7 CiAJZHNwYXJiMiA9IHJlYWRfcmVnKDB4NzAwNjApOwpAQCAtNjUwLDEzICs2NTMsMTMgQEAgc3Rh dGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKIAogCQlkZGwzID0gcmVhZF9yZWcoMHg3MDA1OCk7 CiAKLQkJaW50ZWxfcHVuaXRfcmVhZCgweDM2LCAmZHNwX3NzX3BtKTsKLQkJaW50ZWxfcHVuaXRf cmVhZCgweDEzOSwgJmRkcl9zZXR1cDIpOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlvX2RhdGEs IDB4MzYsICZkc3Bfc3NfcG0pOworCQlpbnRlbF9wdW5pdF9yZWFkKCZtbWlvX2RhdGEsIDB4MTM5 LCAmZGRyX3NldHVwMik7CiAJfSBlbHNlIHsKIAkJZnc3ID0gcmVhZF9yZWcoMHg3MDA3Yyk7CiAJ fQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgICBGVzEgPSAweCUwOHhcbiIs IGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAgLTgyNyw2 ICs4MzAsNyBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBn NHhfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOwog CWludCBpOwogCXVpbnQzMl90IGRzcGFjbnRyLCBkc3BiY250cjsKIAl1aW50MzJfdCBkc3BhcmI7 CkBAIC04MzUsNyArODM5LDcgQEAgc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIAl1aW50 MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsK IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRf cGNpX2RldmljZSgpLCAwLCAtMSk7CiAKIAlkc3BhY250ciA9IHJlYWRfcmVnKDB4NzAxODApOwog CWRzcGJjbnRyID0gcmVhZF9yZWcoMHg3MTE4MCk7CkBAIC04NDYsNyArODUwLDcgQEAgc3RhdGlj IHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bvd2VyX2Rvd24gPSByZWFkX3Jl ZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlv X2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgRFNQQUNOVFIgPSAweCUwOHhcbiIsIGRz cGFjbnRyKTsKIAlwcmludGYoIiAgICAgICAgICAgICBEU1BCQ05UUiA9IDB4JTA4eFxuIiwgZHNw YmNudHIpOwpAQCAtOTEzLDYgKzkxNyw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQp CiAKIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBpbnRlbF9tbWlv X2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCWludCB0b3RhbHNpemUgPSBJU19DUkVTVExJTkUo ZGV2aWQpID8gMTI4IDogOTY7CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtOTIxLDcgKzkyNiw3IEBA IHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsK IAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0x KTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWZ3MSA9IHJlYWRfcmVnKDB4NzAw MzQpOwpAQCAtOTMwLDcgKzkzNSw3IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQog CW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRl ID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJ aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAg ICAgICAgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKIAlwcmludGYoIiAgICAgICAgICAg ICAgICAgIEZXMiA9IDB4JTA4eFxuIiwgZncyKTsKQEAgLTk4Myw2ICs5ODgsNyBAQCBzdGF0aWMg dm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkK IHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgdG90 YWxzaXplID0gOTY7IC8qIEZJWE1FPyAqLwogCXVpbnQzMl90IGRzcGFyYjsKQEAgLTk5Miw3ICs5 OTgsNyBAQCBzdGF0aWMgdm9pZCBwbnZfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IGNicjsKIAlz dHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK IAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQp OwpAQCAtMTAwMiw3ICsxMDA4LDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKIAlt aV9kaXNwbGF5X3Bvd2VyX2Rvd24gPSByZWFkX3JlZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9 IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJpbnRmKCIgICAgICAg ICAgICAgICBEU1BBUkIgPSAweCUwOHhcbiIsIGRzcGFyYik7CiAJcHJpbnRmKCIgICAgICAgICAg ICAgICAgICBGVzEgPSAweCUwOHhcbiIsIGZ3MSk7CkBAIC0xMDczLDYgKzEwNzksNyBAQCBzdGF0 aWMgdm9pZCBwbnZfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9p ZCkKIHsKKwlzdHJ1Y3QgaW50ZWxfbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQg dG90YWxzaXplID0gSVNfOTQ1R00oZGV2aWQpID8gMTI4IDogOTY7IC8qIEZJWE1FPyAqLwogCXVp bnQzMl90IGRzcGFyYjsKQEAgLTEwODIsNyArMTA4OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21f ZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNb TUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0 X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlv X2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWRzcGFyYiA9IHJlYWRf cmVnKDB4NzAwMzApOwogCWluc3RwbSA9IHJlYWRfcmVnKDB4MjBjMCk7CkBAIC0xMDkwLDcgKzEw OTcsNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIAlmd19ibGNfc2VsZiA9IHJl YWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko Jm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgIERTUEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJi KTsKIAlwcmludGYoIiAgICAgIEZXX0JMQyA9IDB4JTAxNiIgUFJJeDY0ICJcbiIsIGZ3X2JsYyk7 CkBAIC0xMTQyLDYgKzExNDksNyBAQCBzdGF0aWMgdm9pZCBnZW4zX3dtX2R1bXAodm9pZCkKIAog c3RhdGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0IGludGVsX21taW9fZGF0 YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6ZTsKIAl1aW50MzJfdCBkc3BhcmI7 CkBAIC0xMTUxLDcgKzExNTksNyBAQCBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKIAl1 aW50MzJfdCBtaV9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owog Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg LTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWRzcGFyYiA9IHJlYWRfcmVnKDB4NzAwMzApOwogCW1l bV9tb2RlID0gcmVhZF9yZWcoMHgyMGNjKTsKQEAgLTExNTksNyArMTE2Nyw3IEBAIHN0YXRpYyB2 b2lkIGdlbjJfd21fZHVtcCh2b2lkKQogCWZ3X2JsY19zZWxmID0gcmVhZF9yZWcoMHgyMGUwKTsK IAltaV9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJp bnRmKCIgICAgIERTUEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKIAlwcmludGYoIiAgIE1FTV9N T0RFID0gMHglMDh4XG4iLCBtZW1fbW9kZSk7Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldg==