From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5454A6E4ED for ; Wed, 24 Jul 2019 12:33:09 +0000 (UTC) From: Daniel Mrzyglod Date: Wed, 24 Jul 2019 14:32:56 +0200 Message-Id: <20190724123256.14593-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190724123256.14593-1-daniel.t.mrzyglod@intel.com> References: <20190724123256.14593-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6 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 List-ID: dGhpcyBwYXRjaCBleHRlbmQgaW50ZWxfbW1pbyBsaWJyYXJ5IGJ5IG5ldyBzdHJ1Y3R1cmUgdGhh dCBjYW4ga2VlcApsb2NhbCBpZ3RfbW1pbyBwb2ludGVyLgpUaGUgcmVhc29uIHRoYXQgd2UgZXh0 ZW5kIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIGlkZWEgdG8gc3VwcG9ydCBtdWx0aXBsZQpkZXZpY2Vz IGF0IG9uY2UuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgTXJ6eWdsb2QgPGRhbmllbC50Lm1yenln bG9kQGludGVsLmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6 eW5za2lAaW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyAgICAgIHwgICAz ICstCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgICAgICAgICB8ICAgMyArLQogbGliL2ludGVsX2lv LmggICAgICAgICAgICAgICAgfCAgODIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogbGliL2lu dGVsX2lvc2YuYyAgICAgICAgICAgICAgfCAgNzQgKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGxp Yi9pbnRlbF9tbWlvLmMgICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIHwgICA0ICstCiB0ZXN0 cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgICB8ICAxMyArKy0tCiB0ZXN0cy9pOTE1L2dlbV93b3Jr YXJvdW5kcy5jICB8ICAgMyArLQogdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYyAgICAgfCAgIDYg Ky0KIHRvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYyAgICAgIHwgICA2ICstCiB0b29scy9pbnRlbF9i YWNrbGlnaHQuYyAgICAgICB8ICAgNCArLQogdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYyAg fCAgIDUgKy0KIHRvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyAgICAgIHwgIDE1ICsrLS0tCiB0b29s cy9pbnRlbF9ncHVfdGltZS5jICAgICAgICB8ICAgMyArLQogdG9vbHMvaW50ZWxfaW5mb2ZyYW1l cy5jICAgICAgfCAgIDUgKy0KIHRvb2xzL2ludGVsX2wzX3Bhcml0eS5jICAgICAgIHwgIDExICsr LS0KIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAgICAgIHwgICAzICstCiB0b29scy9pbnRlbF9w YW5lbF9maXR0ZXIuYyAgICB8ICAgNSArLQogdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jICAg fCAgMTAgKystLQogdG9vbHMvaW50ZWxfcmVnLmMgICAgICAgICAgICAgfCAgMjMgKysrLS0tLQog dG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyAgICAgfCAgIDMgKy0KIHRvb2xzL2ludGVsX3dhdGVy bWFyay5jICAgICAgIHwgIDQyICsrKysrKystLS0tLS0KIDIyIGZpbGVzIGNoYW5nZWQsIDI1MCBp bnNlcnRpb25zKCspLCAxODMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9n ZW1fbGF0ZW5jeS5jIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCmluZGV4IGMzZmM0YmYwLi41 NjlmYWE1OCAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCisrKyBiL2JlbmNo bWFya3MvZ2VtX2xhdGVuY3kuYwpAQCAtNTUsNiArNTUsNyBAQAogc3RhdGljIGludCBkb25lOwog c3RhdGljIGludCBmZDsKIHN0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCAqdGltZXN0YW1wX3JlZzsK K3N0YXRpYyBzdHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAogI2RlZmluZSBSRUcoeCkgKHZv bGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgeCkK ICNkZWZpbmUgUkVHX09GRlNFVCh4KSAoKHZvbGF0aWxlIGNoYXIgKikoeCkgLSAodm9sYXRpbGUg Y2hhciAqKWlndF9nbG9iYWxfbW1pbykKQEAgLTQ1Niw3ICs0NTcsNyBAQCBzdGF0aWMgaW50IHJ1 bihpbnQgc2Vjb25kcywKIAlpZiAoZ2VuIDwgNikKIAkJcmV0dXJuIElHVF9FWElUX1NLSVA7IC8q IE5lZWRzIEJDUyB0aW1lc3RhbXAgKi8KIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBmZCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKIAog CWlmIChnZW4gPT0gNikKIAkJdGltZXN0YW1wX3JlZyA9IFJFRyhSQ1NfVElNRVNUQU1QKTsKZGlm ZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwpp bmRleCBhNzZmZGJmZS4uM2M3NDAxZGYgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0u YworKysgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBzdHJ1Y3Qg d29ya2xvYWQKIAl9IGJ1c3lfYmFsYW5jZXI7CiB9OwogCitzdHJ1Y3QgbW1pb19kYXRhIG1taW9f ZGF0YTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbm9wX2NhbGlicmF0aW9uX3VzID0gMTAw MDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG5vcF9jYWxpYnJhdGlvbjsKIApAQCAtMzA3MSw3ICsz MDcyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9jbG9ja3Modm9pZCkKIAl1aW50MzJfdCByY3Nfc3Rh cnQsIHJjc19lbmQ7CiAJZG91YmxlIG92ZXJoZWFkLCB0OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCBmYWxz ZSwgZmQpOwogCiAJaWYgKHZlcmJvc2UgPD0gMSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbGli L2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCA5OWNiMTgyOS4uMzcwYTlhYjEgMTAw NjQ0Ci0tLSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5oCkBAIC0zMCwxNyAr MzAsNDMgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHBjaWFjY2Vzcy5oPgor I2luY2x1ZGUgPHN0ZGJvb2wuaD4KIAotLyogcmVnaXN0ZXIgYWNjZXNzIGhlbHBlcnMgZnJvbSBp bnRlbF9tbWlvLmMgKi8KIGV4dGVybiB2b2lkICppZ3RfZ2xvYmFsX21taW87Ci12b2lkIGludGVs X21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpOwotdm9pZCBpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSk7CiAKLWludCBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCk7 Ci12b2lkIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHZvaWQpOwotdWludDMyX3QgaW50ZWxf cmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0ZSh1 aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25l ZWRzX2Zha2V3YWtlKHZvaWQpOworLyogcmVnaXN0ZXIgYWNjZXNzIGhlbHBlcnMgZnJvbSBpbnRl bF9tbWlvLmMgKi8KK3N0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSB7CisJdWludDMyX3QgYmFz ZTsKKwl1aW50MzJfdCBzaXplOworCXVpbnQzMl90IGZsYWdzOworfTsKKworc3RydWN0IGludGVs X3JlZ2lzdGVyX21hcCB7CisJc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICptYXA7CisJdWlu dDMyX3QgdG9wOworCXVpbnQzMl90IGFsaWdubWVudF9tYXNrOworfTsKKworc3RydWN0IG1taW9f ZGF0YSB7CisJaW50IGluaXRlZDsKKwlib29sIHNhZmU7CisJdWludDMyX3QgaTkxNV9kZXZpZDsK KwlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKKwlpbnQga2V5OworCXZvaWQgKmlndF9t bWlvOworfTsKKwordm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBtbWlvX2RhdGEg Km1taW9fZGF0YSwKKwkJCSAgICBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2Rldik7Cit2b2lkIGlu dGVsX21taW9fdXNlX2R1bXBfZmlsZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIg KmZpbGUpOworCitpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IG1taW9fZGF0 YSAqbW1pb19kYXRhLAorCQkJICAgICAgIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQg c2FmZSwgaW50IGZkKTsKK3ZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IG1t aW9fZGF0YSAqbW1pb19kYXRhKTsKK3VpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQoc3RydWN0 IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9yZWdpc3Rl cl93cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAg dWludDMyX3QgdmFsKTsKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uo c3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhKTsKIAogdWludDMyX3QgSU5SRUcodWludDMyX3Qg cmVnKTsKIHVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKTsKQEAgLTU3LDE3ICs4MywyNCBA QCB2b2lkIE9VVFJFRzE2X0RFVih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZf dCB2YWwpOwogdm9pZCBPVVRSRUc4X0RFVih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1 aW50OF90IHZhbCk7CiAKIC8qIHNpZGViYW5kIGFjY2VzcyBmdW5jdGlvbnMgZnJvbSBpbnRlbF9p b3NmLmMgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQg cGh5KTsKLXZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2 YWwsIGludCBwaHkpOwotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCBy ZWcpOwotdm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCk7Ci11aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMy X3QgcmVnKTsKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbCk7Ci0KLWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1bml0X3dyaXRlKHVpbnQzMl90IGFkZHIs IHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfbmNfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJf dCAqdmFsKTsKLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp OwordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2Rh dGEsIHVpbnQzMl90IHJlZywKKwkJCSAgICAgaW50IHBoeSk7Cit2b2lkIGludGVsX2RwaW9fcmVn X3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICB1 aW50MzJfdCB2YWwsIGludCBwaHkpOwordWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZChz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7Cit2b2lkIGludGVsX2Zs aXNkc2lfcmVnX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVn LAorCQkJICAgICB1aW50MzJfdCB2YWwpOwordWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0 cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJf dCByZWcpOwordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CisK K2ludCBpbnRlbF9wdW5pdF9yZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMy X3QgYWRkciwKKwkJICAgICB1aW50MzJfdCAqdmFsKTsKK2ludCBpbnRlbF9wdW5pdF93cml0ZShz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsCisJCSAgICAgIHVpbnQz Ml90IHZhbCk7CitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dyaXRlKHN0cnVj dCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKTsKIAog LyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAuYyAqLwogI2lmbmRlZiBfX0dUS19E T0NfSUdOT1JFX18KQEAgLTc4LDE3ICsxMTEsNiBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodWludDMy X3QgYWRkciwgdWludDMyX3QgdmFsKTsKICNkZWZpbmUgSU5URUxfUkFOR0VfUlcJCShJTlRFTF9S QU5HRV9SRUFEIHwgSU5URUxfUkFOR0VfV1JJVEUpCiAjZGVmaW5lIElOVEVMX1JBTkdFX0VORAkJ KDE8PDMxKQogCi1zdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgewotCXVpbnQzMl90IGJhc2U7 Ci0JdWludDMyX3Qgc2l6ZTsKLQl1aW50MzJfdCBmbGFnczsKLX07Ci0KLXN0cnVjdCBpbnRlbF9y ZWdpc3Rlcl9tYXAgewotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqbWFwOwotCXVpbnQz Ml90IHRvcDsKLQl1aW50MzJfdCBhbGlnbm1lbnRfbWFzazsKLX07CiBzdHJ1Y3QgaW50ZWxfcmVn aXN0ZXJfbWFwIGludGVsX2dldF9yZWdpc3Rlcl9tYXAodWludDMyX3QgZGV2aWQpOwogc3RydWN0 IGludGVsX3JlZ2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2Uoc3RydWN0IGlu dGVsX3JlZ2lzdGVyX21hcCBtYXAsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbW9kZSk7CiAj ZW5kaWYgLyogX19HVEtfRE9DX0lHTk9SRV9fICovCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW9z Zi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAzYjVhMTM3MC4uZTdhODk5NTMgMTAwNjQ0Ci0t LSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGliL2ludGVsX2lvc2YuYwpAQCAtMTksOCArMTks OCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91YmxlLXdvcmQgYWRkcmVzc2luZywg bm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldSREFfTlAgICAweDA3CiAKLXN0YXRpYyBpbnQg dmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBh ZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0 cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgIHVpbnQ4X3Qg b3Bjb2RlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogewogCWludCB0aW1lb3V0ID0g MDsKIAl1aW50MzJfdCBjbWQsIGRldmZuLCBiZSwgYmFyOwpAQCAtMzQsMjIgKzM0LDI0IEBAIHN0 YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1 aW50MzJfdCBhZGRyLAogCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJRlQpIHwgKGJlIDw8IElPU0Zf QllURV9FTkFCTEVTX1NISUZUKSB8CiAJCShiYXIgPDwgSU9TRl9CQVJfU0hJRlQpOwogCi0JaWYg KGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0ZfU0JfQlVT WSkgeworCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YSwgVkxWX0lPU0ZfRE9PUkJF TExfUkVRKSAmCisJICAgIElPU0ZfU0JfQlVTWSkgewogCQlpZ3Rfd2Fybigid2FybmluZzogcGNv ZGUgKCVzKSBtYWlsYm94IGFjY2VzcyBmYWlsZWRcbiIsIGlzX3JlYWQgPyAicmVhZCIgOiAid3Jp dGUiKTsKIAkJcmV0dXJuIC1FQUdBSU47CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxW X0lPU0ZfQUREUiwgYWRkcik7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRhLCBWTFZf SU9TRl9BRERSLCBhZGRyKTsKIAlpZiAoIWlzX3JlYWQpCi0JCWludGVsX3JlZ2lzdGVyX3dyaXRl KFZMVl9JT1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEs IFZMVl9JT1NGX0RBVEEsICp2YWwpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0Zf RE9PUkJFTExfUkVRLCBjbWQpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxW X0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwogCiAJZG8gewogCQl1c2xlZXAoMSk7CiAJCXRpbWVv dXQrKzsKLQl9IHdoaWxlIChpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NGX0RPT1JCRUxMX1JF USkgJiBJT1NGX1NCX0JVU1kgJiYKLQkJIHRpbWVvdXQgPCBUSU1FT1VUX1VTKTsKKwl9IHdoaWxl IChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21taW8sCisJCQkJICAgICBWTFZf SU9TRl9ET09SQkVMTF9SRVEpICYKKwkJSU9TRl9TQl9CVVNZICYmIHRpbWVvdXQgPCBUSU1FT1VU X1VTKTsKIAogCWlmICh0aW1lb3V0ID49IFRJTUVPVVRfVVMpIHsKIAkJaWd0X3dhcm4oInRpbWVv dXQgd2FpdGluZyBmb3IgcGNvZGUgJXMgKCVkKSB0byBmaW5pc2hcbiIsIGlzX3JlYWQgPyAicmVh ZCIgOiAid3JpdGUiLCBhZGRyKTsKQEAgLTU3LDggKzU5LDggQEAgc3RhdGljIGludCB2bHZfc2lk ZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCiAJ fQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKFZMVl9JT1NG X0RBVEEpOwotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsIDApOworCQkqdmFs ID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEtPmlndF9tbWlvLCBWTFZfSU9TRl9EQVRB KTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0ZShtbWlvX2RhdGEtPmlndF9tbWlvLCBWTFZfSU9TRl9E QVRBLCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzMsOSArNzUsMTAgQEAgc3RhdGljIGludCB2 bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFk ZHIsCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVk LCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9wdW5pdF9y ZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfcHVuaXRfcmVhZChz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwp CiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9O UCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9Q T1JUX1BVTklULCBTQl9DUlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFsKTsKIH0KIAogLyoq CkBAIC04OCw5ICs5MSwxMCBAQCBpbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCAqdmFsKQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNz IHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50 ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQoraW50IGludGVsX3B1 bml0X3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQogewotCXJldHVybiB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX1BVTklULCBT Ql9DUldSREFfTlAsIGFkZHIsICZ2YWwpOworCXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19k YXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSV1JEQV9OUCwgYWRkciwKKwkJCSAgICAgICAmdmFs KTsKIH0KIAogLyoqCkBAIC0xMDMsOSArMTA3LDEwIEBAIGludCBpbnRlbF9wdW5pdF93cml0ZSh1 aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSBy ZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUu CiAgKi8KLWludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitp bnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRf TkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1t aW9fZGF0YSwgSU9TRl9QT1JUX05DLCBTQl9DUlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFs KTsKIH0KIAogLyoqCkBAIC0xMTgsOSArMTIzLDEwIEBAIGludCBpbnRlbF9uY19yZWFkKHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdp c3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAg Ki8KLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCitpbnQg aW50ZWxfbmNfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRy LCB1aW50MzJfdCB2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMs IFNCX0NSV1JEQV9OUCwgYWRkciwgJnZhbCk7CisJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlv X2RhdGEsIElPU0ZfUE9SVF9OQywgU0JfQ1JXUkRBX05QLCBhZGRyLAorCQkJICAgICAgICZ2YWwp OwogfQogCiAvKioKQEAgLTEzMywxNCArMTM5LDE2IEBAIGludCBpbnRlbF9uY193cml0ZSh1aW50 MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQg ZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodWlu dDMyX3QgcmVnLCBpbnQgcGh5KQordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3Qg bW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgaW50IHBoeSkKIHsKIAl1aW50MzJf dCB2YWw7CiAKIAlpZiAocGh5ID09IDApCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJ TywgU0JfTVJEX05QLCByZWcsICZ2YWwpOworCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJ T1NGX1BPUlRfRFBJTywgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7CiAJZWxzZQotCQl2bHZf c2lkZWJhbmRfcncoSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsICZ2YWwpOworCQl2 bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJl ZywKKwkJCQkmdmFsKTsKIAlyZXR1cm4gdmFsOwogfQogCkBAIC0xNTIsMzggKzE2MCw0MCBAQCB1 aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSkKICAqCiAg KiAzMi1iaXQgd3JpdGUgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJ TyBzaWRlYmFuZCBwb3J0LgogICovCi12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KQordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBp bnQgcGh5KQogewogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9E UElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CiAJZWxzZQotCQl2bHZfc2lk ZWJhbmRfcncoSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsICZ2YWwpOworCQl2bHZf c2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywK KwkJCQkmdmFsKTsKIH0KIAotdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJf dCByZWcpCit1aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBtbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZf c2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsK Kwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERB X05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAotdm9pZCBpbnRlbF9mbGlzZHNp X3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfZmxpc2Rz aV9yZWdfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVp bnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ksIFNCX0NS V1JEQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BP UlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQogCi11aW50MzJfdCBpbnRl bF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQordWludDMyX3QgaW50 ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9y dCwgdWludDMyX3QgcmVnKQogewogCXVpbnQzMl90IHZhbDsKIAotCXZsdl9zaWRlYmFuZF9ydyhw b3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgcG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwogCiAJcmV0dXJuIHZhbDsKIH0KIAot dm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZywgdWlu dDMyX3QgdmFsKQordm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkK IHsKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOworCXZs dl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsK IH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9tbWlvLmMgYi9saWIvaW50ZWxfbW1pby5jCmluZGV4 IDAxNDExYzM3Li5kNzdhYWJhOCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX21taW8uYworKysgYi9s aWIvaW50ZWxfbW1pby5jCkBAIC03Myw1NCArNzMsNTMgQEAKICAqLwogdm9pZCAqaWd0X2dsb2Jh bF9tbWlvOwogCi1zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgewotCWludCBpbml0ZWQ7Ci0JYm9v bCBzYWZlOwotCXVpbnQzMl90IGk5MTVfZGV2aWQ7Ci0Jc3RydWN0IGludGVsX3JlZ2lzdGVyX21h cCBtYXA7Ci0JaW50IGtleTsKLX0gbW1pb19kYXRhOwotCiAvKioKICAqIGludGVsX21taW9fdXNl X2R1bXBfZmlsZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0 aW9ucwogICogQGZpbGU6IG5hbWUgb2YgdGhlIHJlZ2lzdGVyIGR1bXAgZmlsZSB0byBvcGVuCiAg KgotICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRvIHBvaW50IGF0IHRoZSBkYXRhIGNvbnRh aW5lZCBpbiBAZmlsZS4gVGhpcyBhbGxvd3MKLSAqIHRoZSBzYW1lIGNvZGUgdG8gZ2V0IHJldXNl ZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcgZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzCi0gKiBm cm9tIHJlZ2lzdGVyIGR1bXBzLgorICogU2V0cyBhbHNvIHVwIG1taW9fZGF0YS0+aWd0X21taW8g dG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkCisgKiBpbiBAZmlsZS4gVGhpcyBhbGxvd3Mg dGhlIHNhbWUgY29kZSB0byBnZXQgcmV1c2VkIGZvciBkdW1waW5nIGFuZCBkZWNvZGluZworICog ZnJvbSBydW5uaW5nIGhhcmR3YXJlIGFzIGZyb20gcmVnaXN0ZXIgZHVtcHMuCiAgKi8KIHZvaWQK LWludGVsX21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQoraW50ZWxfbW1pb191c2VfZHVt cF9maWxlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgY2hhciAqZmlsZSkKIHsKIAlpbnQg ZmQ7CiAJc3RydWN0IHN0YXQgc3Q7CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yoc3Ry dWN0IG1taW9fZGF0YSkpOwogCWZkID0gb3BlbihmaWxlLCBPX1JEV1IpOwogCWlndF9mYWlsX29u X2YoZmQgPT0gLTEsCiAJCSAgICAgICJDb3VsZG4ndCBvcGVuICVzXG4iLCBmaWxlKTsKIAogCWZz dGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwg UFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0JaWd0X2ZhaWxfb25f ZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwltbWlvX2RhdGEtPmlndF9tbWlvID0g bW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEUs IGZkLCAwKTsKKwlpZ3RfZmFpbF9vbl9mKG1taW9fZGF0YS0+aWd0X21taW8gPT0gTUFQX0ZBSUxF RCwKIAkJICAgICAgIkNvdWxkbid0IG1tYXAgJXNcbiIsIGZpbGUpOworCisJaWd0X2dsb2JhbF9t bWlvID0gbW1pb19kYXRhLT5pZ3RfbW1pbzsKKwogCWNsb3NlKGZkKTsKIH0KIAogLyoqCiAgKiBp bnRlbF9tbWlvX3VzZV9wY2lfYmFyOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZv ciBJTyBvcGVyYXRpb25zCiAgKiBAcGNpX2RldjogaW50ZWwgZ3JhY3BoaXMgcGNpIGRldmljZQog ICoKLSAqIFNldHMgdXAgI2lndF9nbG9iYWxfbW1pbyB0byBwb2ludCBhdCB0aGUgbW1pbyBiYXIu CisgKiBGaWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGggaWd0X21taW8gdG8gcG9pbnQgYXQg dGhlIG1taW8gYmFyLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVs X2dldF9wY2lfZGV2aWNlKCkuCiAgKi8KIHZvaWQKLWludGVsX21taW9fdXNlX3BjaV9iYXIoc3Ry dWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCitpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBt bWlvX2RhdGEgKm1taW9fZGF0YSwgc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpCiB7CiAJdWlu dDMyX3QgZGV2aWQsIGdlbjsKIAlpbnQgbW1pb19iYXIsIG1taW9fc2l6ZTsKIAlpbnQgZXJyb3I7 CiAKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yoc3RydWN0IG1taW9fZGF0YSkpOwogCWRl dmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwogCWlmIChJU19HRU4yKGRldmlkKSkKIAkJbW1pb19i YXIgPSAxOwpAQCAtMTM5LDcgKzEzOCw5IEBAIGludGVsX21taW9fdXNlX3BjaV9iYXIoc3RydWN0 IHBjaV9kZXZpY2UgKnBjaV9kZXYpCiAJCQkJICAgICAgcGNpX2Rldi0+cmVnaW9uc1ttbWlvX2Jh cl0uYmFzZV9hZGRyLAogCQkJCSAgICAgIG1taW9fc2l6ZSwKIAkJCQkgICAgICBQQ0lfREVWX01B UF9GTEFHX1dSSVRBQkxFLAotCQkJCSAgICAgICZpZ3RfZ2xvYmFsX21taW8pOworCQkJCSAgICAg ICZtbWlvX2RhdGEtPmlndF9tbWlvKTsKKworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS0+ aWd0X21taW87CiAKIAlpZ3RfZmFpbF9vbl9mKGVycm9yICE9IDAsCiAJCSAgICAgICJDb3VsZG4n dCBtYXAgTU1JTyByZWdpb25cbiIpOwpAQCAtMTUzLDYgKzE1NCw3IEBAIHJlbGVhc2VfZm9yY2V3 YWtlX2xvY2soaW50IGZkKQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0Ogor ICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCiAgKiBAcGNp X2RldjogaW50ZWwgZ3JhcGhpY3MgcGNpIGRldmljZQogICogQHNhZmU6IHVzZSBzYWZlIHJlZ2lz dGVyIGFjY2VzcyB0YWJsZXMKICAqCkBAIC0xNjAsNzYgKzE2Miw3NyBAQCByZWxlYXNlX2ZvcmNl d2FrZV9sb2NrKGludCBmZCkKICAqIGhhbmRsaW5nIGFuZCBhbHNvIGFsbG93cyByZWdpc3RlciBh Y2Nlc3MgdG8gYmUgY2hlY2tlZCB3aXRoIGFuIGV4cGxpY2l0CiAgKiB3aGl0ZWxpc3QuCiAgKgot ICogSXQgYWxzbyBpbml0aWFsaXplcyAjaWd0X2dsb2JhbF9tbWlvIGxpa2UgaW50ZWxfbW1pb191 c2VfcGNpX2JhcigpLgorICogSXQgYWxzbyBpbml0aWFsaXplcyBtbWlvX2RhdGEtPmlndF9tbWlv IGxpa2UgaW50ZWxfbW1pb191c2VfcGNpX2JhcigpLgogICoKICAqIEBwY2lfZGV2IGNhbiBiZSBv YnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCiAgKi8KIGludAotaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBp bnQgZmQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgbW1pb19kYXRhICptbWlv X2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKQogewog CWludCByZXQ7CiAKLQkvKiBhZnRlciBvbGQgQVBJIGlzIGRlcHJlY2F0ZWQsIHJlbW92ZSB0aGlz ICovCi0JaWYgKGlndF9nbG9iYWxfbW1pbyA9PSBOVUxMKQotCQlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKHBjaV9kZXYpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIobW1pb19kYXRhLCBwY2lfZGV2 KTsKIAotCWlndF9hc3NlcnQoaWd0X2dsb2JhbF9tbWlvICE9IE5VTEwpOworCWlndF9hc3NlcnQo bW1pb19kYXRhLT5pZ3RfbW1pbyAhPSBOVUxMKTsKIAotCWlmIChtbWlvX2RhdGEuaW5pdGVkKQor CWlmIChtbWlvX2RhdGEtPmluaXRlZCkKIAkJcmV0dXJuIC0xOwogCi0JbW1pb19kYXRhLnNhZmUg PSAoc2FmZSAhPSAwICYmCisJbW1pb19kYXRhLT5zYWZlID0gKHNhZmUgIT0gMCAmJgogCQkJaW50 ZWxfZ2VuKHBjaV9kZXYtPmRldmljZV9pZCkgPj0gNCkgPyB0cnVlIDogZmFsc2U7Ci0JbW1pb19k YXRhLmk5MTVfZGV2aWQgPSBwY2lfZGV2LT5kZXZpY2VfaWQ7Ci0JaWYgKG1taW9fZGF0YS5zYWZl KQotCQltbWlvX2RhdGEubWFwID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX21hcChtbWlvX2RhdGEuaTkx NV9kZXZpZCk7CisJbW1pb19kYXRhLT5pOTE1X2RldmlkID0gcGNpX2Rldi0+ZGV2aWNlX2lkOwor CWlmIChtbWlvX2RhdGEtPnNhZmUpCisJCW1taW9fZGF0YS0+bWFwID0gaW50ZWxfZ2V0X3JlZ2lz dGVyX21hcChtbWlvX2RhdGEtPmk5MTVfZGV2aWQpOwogCiAJLyogRmluZCB3aGVyZSB0aGUgZm9y Y2V3YWtlIGxvY2sgaXMuIEZvcmNld2FrZSBkb2Vzbid0IGV4aXN0CiAJICogZ2VuIDwgNiwgYnV0 IHRoZSBkZWJ1Z2ZzIHNob3VsZCBkbyB0aGUgcmlnaHQgdGhpbmdzIGZvciB1cy4KIAkgKi8KIAly ZXQgPSBpZ3Rfb3Blbl9mb3JjZXdha2VfaGFuZGxlKGZkKTsKIAlpZiAocmV0ID09IC0xKQotCQlt bWlvX2RhdGEua2V5ID0gRkFLRUtFWTsKKwkJbW1pb19kYXRhLT5rZXkgPSBGQUtFS0VZOwogCWVs c2UKLQkJbW1pb19kYXRhLmtleSA9IHJldDsKKwkJbW1pb19kYXRhLT5rZXkgPSByZXQ7CiAKLQlt bWlvX2RhdGEuaW5pdGVkKys7CisJbW1pb19kYXRhLT5pbml0ZWQrKzsKIAlyZXR1cm4gMDsKIH0K IAogc3RhdGljIGludAotaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2Uodm9pZCkKK2lu dGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0 YSkKIHsKLQlyZXR1cm4gbW1pb19kYXRhLmtleSAhPSBGQUtFS0VZOworCXJldHVybiBtbWlvX2Rh dGEtPmtleSAhPSBGQUtFS0VZOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19u ZWVkc19mYWtld2FrZToKKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3Bl cmF0aW9ucwogICoKICAqIFJldHVybnM6CiAgKiBOb24temVybyB3aGVuIGZvcmNld2FrZSBpbml0 aWFsaXphdGlvbiBmYWlsZWQuCiAgKi8KLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNf ZmFrZXdha2Uodm9pZCkKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uo c3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhKQogewotCXJldHVybiBtbWlvX2RhdGEua2V5ID09 IEZBS0VLRVk7CisJcmV0dXJuIG1taW9fZGF0YS0+a2V5ID09IEZBS0VLRVk7CiB9CiAKIC8qKgog ICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmk6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1 Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAqCiAgKiBDbGVhbiB1cCB0aGUgcmVnaXN0ZXIgYWNj ZXNzIGhlbHBlciBpbml0aWFsaXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dCgpLgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQoraW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2Zpbmkoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhKQogewotCWlm IChtbWlvX2RhdGEua2V5ICYmIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKCkpCi0J CXJlbGVhc2VfZm9yY2V3YWtlX2xvY2sobW1pb19kYXRhLmtleSk7Ci0JbW1pb19kYXRhLmluaXRl ZC0tOworCWlmIChtbWlvX2RhdGEtPmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNf d2FrZShtbWlvX2RhdGEpKQorCQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS0+a2V5 KTsKKwltbWlvX2RhdGEtPmluaXRlZC0tOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3Jl YWQ6CisgKiBAbW1pb19kYXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKICAq IEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdpc3Rl ciBhdCBAb2Zmc2V0LiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUgbmV3CkBAIC0y NDIsMjAgKzI0NSwyMCBAQCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQogICogVGhl IHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KIHVpbnQzMl90Ci1pbnRlbF9yZWdp c3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKK2ludGVsX3JlZ2lzdGVyX3JlYWQoc3RydWN0IG1taW9f ZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCiB7CiAJc3RydWN0IGludGVsX3JlZ2lzdGVy X3JhbmdlICpyYW5nZTsKIAl1aW50MzJfdCByZXQ7CiAKLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5p bml0ZWQpOworCWlndF9hc3NlcnQobW1pb19kYXRhLT5pbml0ZWQpOwogCi0JaWYgKGludGVsX2dl bihtbWlvX2RhdGEuaTkxNV9kZXZpZCkgPj0gNikKLQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5 ICE9IC0xKTsKKwlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS0+aTkxNV9kZXZpZCkgPj0gNikKKwkJ aWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAhPSAtMSk7CiAKLQlpZiAoIW1taW9fZGF0YS5zYWZl KQorCWlmICghbW1pb19kYXRhLT5zYWZlKQogCQlnb3RvIHJlYWRfb3V0OwogCi0JcmFuZ2UgPSBp bnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKKwlyYW5nZSA9IGludGVsX2dl dF9yZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEtPm1hcCwKIAkJCQkJIHJlZywKIAkJCQkJIElOVEVM X1JBTkdFX1JFQUQpOwogCkBAIC0yNjYsMTMgKzI2OSwxNCBAQCBpbnRlbF9yZWdpc3Rlcl9yZWFk KHVpbnQzMl90IHJlZykKIAl9CiAKIHJlYWRfb3V0OgotCXJldCA9ICoodm9sYXRpbGUgdWludDMy X3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOworCXJldCA9ICoo dm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKiltbWlvX2RhdGEtPmlndF9tbWlv ICsgcmVnKTsKIG91dDoKIAlyZXR1cm4gcmV0OwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVy X3dyaXRlOgorICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25z CiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpA QCAtMjgzLDE5ICsyODcsMTkgQEAgb3V0OgogICogd2hpdGUgbGlzdHMuCiAgKi8KIHZvaWQKLWlu dGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQoraW50ZWxfcmVn aXN0ZXJfd3JpdGUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVp bnQzMl90IHZhbCkKIHsKIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwogCi0J aWd0X2Fzc2VydChtbWlvX2RhdGEuaW5pdGVkKTsKKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aW5p dGVkKTsKIAotCWlmIChpbnRlbF9nZW4obW1pb19kYXRhLmk5MTVfZGV2aWQpID49IDYpCi0JCWln dF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7CisJaWYgKGludGVsX2dlbihtbWlvX2RhdGEt Pmk5MTVfZGV2aWQpID49IDYpCisJCWlndF9hc3NlcnQobW1pb19kYXRhLT5rZXkgIT0gLTEpOwog Ci0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKKwlpZiAoIW1taW9fZGF0YS0+c2FmZSkKIAkJZ290byB3 cml0ZV9vdXQ7CiAKLQlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlvX2RhdGEu bWFwLAorCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS0+bWFwLAog CQkJCQkgcmVnLAogCQkJCQkgSU5URUxfUkFOR0VfV1JJVEUpOwogCkBAIC0zMDMsNyArMzA3LDcg QEAgaW50ZWxfcmVnaXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiAJCSAg ICAgICJSZWdpc3RlciB3cml0ZSBibG9ja2VkIGZvciBzYWZldHkgIiIoKjB4JTA4eCA9IDB4JXgp XG4iLCByZWcsIHZhbCk7CiAKIHdyaXRlX291dDoKLQkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2 b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKSA9IHZhbDsKKwkqKHZvbGF0aWxl IHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopbW1pb19kYXRhLT5pZ3RfbW1pbyArIHJlZykg PSB2YWw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMg Yi90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYwppbmRleCBlNTZkNjI3OC4uYjk2YTg0MDkg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCisrKyBiL3Rlc3RzL2k5 MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCkBAIC02MSw2ICs2MSw4IEBACiAKIHN0YXRpYyB1bnNpZ25l ZCBpbnQgcmluZ19zaXplOwogc3RhdGljIGRvdWJsZSByY3NfY2xvY2s7CitzdGF0aWMgc3RydWN0 IG1taW9fZGF0YSBtbWlvX2RhdGE7CisKIAogc3RhdGljIHZvaWQKIHBvbGxfcmluZyhpbnQgZmQs IHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5hbWUpCkBAIC02NjcsNyArNjY5LDcgQEAgaWd0 X21haW4KIAkJaWYgKHJpbmdfc2l6ZSA+IDEwMjQpCiAJCQlyaW5nX3NpemUgPSAxMDI0OwogCi0J CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNl LCBkZXZpY2UpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRl bF9nZXRfcGNpX2RldmljZSgpLCBmYWxzZSwgZGV2aWNlKTsKIAkJcmNzX2Nsb2NrID0gY2xvY2ty YXRlKGRldmljZSwgUkNTX1RJTUVTVEFNUCk7CiAJCWlndF9pbmZvKCJSQ1MgdGltZXN0YW1wIGNs b2NrOiAlLjBmS0h6LCAlLjFmbnNcbiIsCiAJCQkgcmNzX2Nsb2NrIC8gMWUzLCAxZTkgLyByY3Nf Y2xvY2spOwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jIGIvdGVzdHMv aTkxNS9nZW1fZXhlY19wYXJzZS5jCmluZGV4IDYyZThkMGE1Li5lZjk3ZmY0ZiAxMDA2NDQKLS0t IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNf cGFyc2UuYwpAQCAtNTgsNiArNTgsOSBAQAogCiBzdGF0aWMgaW50IHBhcnNlcl92ZXJzaW9uOwog CitzdHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKKworCiBzdGF0aWMgaW50IGNvbW1hbmRfcGFy c2VyX3ZlcnNpb24oaW50IGZkKQogewogCWludCB2ZXJzaW9uID0gLTE7CkBAIC0yODQsOSArMjg3 LDkgQEAgdGVzdF9scmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAq dGVzdCkKIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3RfdmFsLAogCQkgIGV4 cGVjdGVkX2Vycm5vLCBleHBlY3QpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUodGVzdC0+cmVn LCB0ZXN0LT5pbml0X3ZhbCk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgdGVz dC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7CiAKLQlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVn aXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKKwlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVnaXN0 ZXJfcmVhZCgmbW1pb19kYXRhLCB0ZXN0LT5yZWcpICYKIAkJCSAgIHRlc3QtPnJlYWRfbWFzayks CiAJCQkgIHRlc3QtPmluaXRfdmFsKTsKIApAQCAtMjk2LDcgKzI5OSw3IEBAIHRlc3RfbHJpKGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1Y3QgdGVzdF9scmkgKnRlc3QpCiAJCSAgIGV4cGVj dGVkX2Vycm5vKTsKIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsKIAotCWlndF9hc3NlcnRfZXFfdTMy KChpbnRlbF9yZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFfdTMyKChp bnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgogCQkJICAgdGVzdC0+ cmVhZF9tYXNrKSwKIAkJCSAgZXhwZWN0KTsKIH0KQEAgLTUzMCw3ICs1MzMsNyBAQCBpZ3RfbWFp bgogI3VuZGVmIFJFRwogCiAJCWlndF9maXh0dXJlIHsKLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGZkKTsKKwkJCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGZkKTsK IAkJfQogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShscmlzKTsgaSsrKSB7CkBA IC01NDMsNyArNTQ2LDcgQEAgaWd0X21haW4KIAkJfQogCiAJCWlndF9maXh0dXJlIHsKLQkJCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aSgmbW1pb19kYXRhKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fd29y a2Fyb3VuZHMuYyBiL3Rlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMKaW5kZXggODFjMzU2ZjAu LjYzMWZkZjhmIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV93b3JrYXJvdW5kcy5jCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX3dvcmthcm91bmRzLmMKQEAgLTIyNSw2ICsyMjUsNyBAQCBzdGF0aWMg dm9pZCBjaGVja193b3JrYXJvdW5kcyhpbnQgZmQsIGVudW0gb3BlcmF0aW9uIG9wLCB1bnNpZ25l ZCBpbnQgZmxhZ3MpCiAKIGlndF9tYWluCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7 CiAJaW50IGRldmljZSA9IC0xOwogCWNvbnN0IHN0cnVjdCB7CiAJCWNvbnN0IGNoYXIgKm5hbWU7 CkBAIC0yNTYsNyArMjU3LDcgQEAgaWd0X21haW4KIAkJZGV2aWNlID0gZHJtX29wZW5fZHJpdmVy KERSSVZFUl9JTlRFTCk7CiAJCWlndF9yZXF1aXJlX2dlbShkZXZpY2UpOwogCi0JCWludGVsX21t aW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJCWludGVsX21taW9fdXNl X3BjaV9iYXIoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAKIAkJZ2VuID0g aW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZGV2aWNlKSk7CiAKZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvaTkxNV9wbV9scHNwLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCmluZGV4 IGIzMTlkYmU5Li4zYjQ4NmQzMCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3Au YworKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCkBAIC0xODcsNyArMTg3LDcgQEAgaW50 IGRybV9mZDsKIHVpbnQzMl90IGRldmlkOwogZHJtTW9kZVJlc1B0ciBkcm1fcmVzOwogZHJtTW9k ZUNvbm5lY3RvclB0ciBkcm1fY29ubmVjdG9yc1tNQVhfQ09OTkVDVE9SU107Ci0KK3N0cnVjdCBt bWlvX2RhdGEgbW1pb19kYXRhOwogaWd0X21haW4KIHsKIAlpZ3RfZml4dHVyZSB7CkBAIC0yMTAs NyArMjEwLDcgQEAgaWd0X21haW4KIAogCQlpZ3RfcmVxdWlyZShzdXBwb3J0c19scHNwKGRldmlk KSk7CiAKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgMCwgZHJtX2ZkKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwg aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZHJtX2ZkKTsKIAogCQlrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7CiAJfQpAQCAtMjI3LDcgKzIyNyw3IEBAIGlndF9tYWluCiAJaWd0X2Zp eHR1cmUgewogCQlpbnQgaTsKIAotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCQlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAkJZm9yIChpID0gMDsgaSA8 IGRybV9yZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykKIAkJCWRybU1vZGVGcmVlQ29ubmVjdG9y KGRybV9jb25uZWN0b3JzW2ldKTsKIAkJZHJtTW9kZUZyZWVSZXNvdXJjZXMoZHJtX3Jlcyk7CmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMgYi90b29scy9pbnRlbF9hdWRpb19k dW1wLmMKaW5kZXggNzI2YmI0YjYuLjI1YmE5MThmIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9h dWRpb19kdW1wLmMKKysrIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCkBAIC00Miw2ICs0Miw3 IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKIHN0YXRpYyBpbnQgYXVkX3JlZ19iYXNlID0gMDsJ LyogYmFzZSBhZGRyZXNzIG9mIGF1ZGlvIHJlZ2lzdGVycyAqLwogc3RhdGljIGludCBkaXNwX3Jl Z19iYXNlID0gMDsJLyogYmFzZSBhZGRyZXNzIG9mIGRpc3BsYXkgcmVnaXN0ZXJzICovCiAKKwog I2RlZmluZSBJU19IQVNXRUxMX1BMVVMoZGV2aWQpICAoSVNfSEFTV0VMTChkZXZpZCkgfHwgSVNf QlJPQURXRUxMKGRldmlkKSkKIAogI2RlZmluZSBCSVRTVE8obikJCShuID49IHNpemVvZihsb25n KSAqIDggPyB+MCA6ICgxVUwgPDwgKG4pKSAtIDEpCkBAIC0yNDY0LDYgKzI0NjUsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2JyYXN3ZWxsKHZvaWQpCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiB7CiAJc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXY7CisJc3RydWN0IG1taW9fZGF0YSBt bWlvX2RhdGE7CiAKIAlwY2lfZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKIAlkZXZpZCA9 IHBjaV9kZXYtPmRldmljZV9pZDsgLyogWFhYIG5vdCB0cnVlIHdoZW4gbWFwcGluZyEgKi8KQEAg LTI0NzEsOSArMjQ3Myw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlkb19z ZWxmX3Rlc3RzKCk7CiAKIAlpZiAoYXJnYyA9PSAyKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2Zp bGUoYXJndlsxXSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmbW1pb19kYXRhLCBhcmd2 WzFdKTsKIAllbHNlCi0JCWludGVsX21taW9fdXNlX3BjaV9iYXIocGNpX2Rldik7CisJCWludGVs X21taW9fdXNlX3BjaV9iYXIoJm1taW9fZGF0YSwgcGNpX2Rldik7CiAKIAlwcmludGYoIiVzIGF1 ZGlvIHJlZ2lzdGVyczpcblxuIiwgaW50ZWxfZ2V0X2RldmljZV9pbmZvKGRldmlkKS0+Y29kZW5h bWUpOwogCWlmIChJU19WQUxMRVlWSUVXKGRldmlkKSkgewpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50 ZWxfYmFja2xpZ2h0LmMgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwppbmRleCAwNjdmZDQxOC4u MmNkYjUyNzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCisrKyBiL3Rvb2xz L2ludGVsX2JhY2tsaWdodC5jCkBAIC0zOCw5ICszOCwxMSBAQAogCiBpbnQgbWFpbihpbnQgYXJn YywgY2hhcioqIGFyZ3YpCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJdWludDMy X3QgY3VycmVudCwgbWF4OwogCi0JaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNp X2RldmljZSgpKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVsX2dl dF9wY2lfZGV2aWNlKCkpOworCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsK IAogCWN1cnJlbnQgPSBJTlJFRyhCTENfUFdNX0NQVV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lD TEVfTUFTSzsKIAltYXggPSBJTlJFRyhCTENfUFdNX1BDSF9DVEwyKSA+PiAxNjsKZGlmZiAtLWdp dCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgYi90b29scy9pbnRlbF9kaXNwbGF5X3Bv bGxlci5jCmluZGV4IDUxZjViOWE1Li40YWM5Nzc2NiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf ZGlzcGxheV9wb2xsZXIuYworKysgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCkBAIC05 NjIsNiArOTYyLDcgQEAgc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSB1c2Fn ZShjb25zdCBjaGFyICpuYW1lKQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog eworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwogCWludCBwaXBlID0gMCwg Yml0ID0gMCwgdGFyZ2V0X3NjYW5saW5lID0gMCwgdGFyZ2V0X2Z1enogPSAxOwogCWJvb2wgdGVz dF9waXhlbGNvdW50ID0gZmFsc2U7CkBAIC0xMTg3LDcgKzExODgsNyBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQlicmVhazsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoJm1taW9fZGF0YSAsaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwog CiAJcHJpbnRmKCIlcz9cbiIsIHRlc3RfbmFtZSh0ZXN0LCBwaXBlLCBiaXQsIHRlc3RfcGl4ZWxj b3VudCkpOwogCkBAIC0xMjYyLDcgKzEyNjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQlhc3NlcnQoMCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAogCWlmIChxdWl0 KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyBiL3Rv b2xzL2ludGVsX2ZvcmNld2FrZWQuYwppbmRleCAwMmZiZjg4OC4uZjQxMTQ2MTIgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYworKysgYi90b29scy9pbnRlbF9mb3JjZXdha2Vk LmMKQEAgLTU3LDE0ICs1NywxNSBAQCBoZWxwKGNoYXIgKnByb2cpIHsKIH0KIAogc3RhdGljIGlu dAotaXNfYWxpdmUodm9pZCkgeworaXNfYWxpdmUoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRh KSB7CiAJLyogUmVhZCB0aGUgdGltZXN0YW1wLCB3aGljaCBzaG91bGQgKmFsbW9zdCogYWx3YXlz IGJlICEwICovCi0JcmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4MjM1OCkgIT0gMCk7CisJ cmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YSwgMHgyMzU4KSAhPSAwKTsKIH0K IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlpbnQgcmV0OworCXN0cnVj dCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJaWYgKGFyZ2MgPiAyIHx8IChhcmdjID09IDIgJiYg IXN0cm5jbXAoYXJndlsxXSwgIi1oIiwgMikpKSB7CiAJCWhlbHAoYXJndlsxXSk7CkBAIC04MCw3 ICs4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCUlORk9fUFJJTlQo InN0YXJ0ZWQgZGFlbW9uIik7CiAJfQogCi0JcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOworCXJldCA9IGludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsK IAlpZiAocmV0KSB7CiAJCUlORk9fUFJJTlQoIkNvdWxkbid0IGluaXQgcmVnaXN0ZXIgYWNjZXNz XG4iKTsKIAkJZXhpdCgxKTsKQEAgLTg4LDE2ICs4OSwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQlJTkZPX1BSSU5UKCJGb3JjZXdha2UgbG9ja2VkXG4iKTsKIAl9CiAJ d2hpbGUoMSkgewotCQlpZiAoIWlzX2FsaXZlKCkpIHsKKwkJaWYgKCFpc19hbGl2ZSgmbW1pb19k YXRhKSkgewogCQkJSU5GT19QUklOVCgiZ3B1IHJlc2V0PyByZXN0YXJ0aW5nIGRhZW1vblxuIik7 Ci0JCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwotCQkJcmV0ID0gaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOworCQkJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CisJCQlyZXQgPSBpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7 CiAJCQlpZiAocmV0KQogCQkJCUlORk9fUFJJTlQoIlJlZyBhY2Nlc3MgaW5pdCBmYWlsXG4iKTsK IAkJfQogCQlzbGVlcCgxKTsKIAl9Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAlJTkZPX1BSSU5UKCJGb3Jj ZXdha2UgdW5sb2NrXG4iKTsKIAogCWlmIChkYWVtb25pemVkKSB7CmRpZmYgLS1naXQgYS90b29s cy9pbnRlbF9ncHVfdGltZS5jIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwppbmRleCA1NmQ2NWZl MC4uMTVhYTAwNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKKysrIGIvdG9v bHMvaW50ZWxfZ3B1X3RpbWUuYwpAQCAtNjUsOSArNjUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCXVpbnQ2NF90IHJpbmdfaWRsZSA9IDAsIHJpbmdfdGltZSA9IDA7CiAJ c3RydWN0IHRpbWV2YWwgc3RhcnQsIGVuZDsKIAlzdGF0aWMgc3RydWN0IHJ1c2FnZSBydXNhZ2U7 CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IHN0YXR1czsKIAotCWludGVsX21t aW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2Vf cGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCWlmIChhcmdj ID09IDEpIHsKIAkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgY21kIFthcmdzLi4uXVxuIiwg YXJndlswXSk7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgYi90b29scy9p bnRlbF9pbmZvZnJhbWVzLmMKaW5kZXggMmVmNWQ0ZmQuLmZiZjUzYzIzIDEwMDY0NAotLS0gYS90 b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKKysrIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCkBA IC0yNjQsNiArMjY0LDcgQEAgY29uc3QgY2hhciAqZGlwX2ZyZXF1ZW5jeV9uYW1lc1tdID0gewog CiBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKIGludCBnZW4gPSAwOworc3RydWN0IG1taW9f ZGF0YSBtbWlvX2RhdGE7CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzcGRfc291cmNlX3RvX3N0cmlu ZyhTb3VyY2VEZXZpY2Ugc291cmNlKQogewpAQCAtMTEwOCw3ICsxMTA5LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgICAgICAgIiBwZXJmZWN0bHk6IHRoZSBLZXJuZWwg bWlnaHQgdW5kbyBvdXIgY2hhbmdlcy5cbiIpOwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lf ZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOwor CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIHBjaV9kZXYsIDAsIC0xKTsK IAlpbnRlbF9jaGVja19wY2goKTsKIAogCWlmIChJU19HRU40KHBjaV9kZXYtPmRldmljZV9pZCkp CkBAIC0xMjU2LDYgKzEyNTcsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CX0KIAogb3V0OgotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBh L3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKaW5kZXgg NDE3OWM1YWUuLjcxMmRlMjMwIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9sM19wYXJpdHkuYwor KysgYi90b29scy9pbnRlbF9sM19wYXJpdHkuYwpAQCAtMTc2LDYgKzE3Niw3IEBAIHN0YXRpYyB2 b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm5hbWUpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJY29uc3QgY2hhciAqcGF0 aFtSRUFMX01BWF9TTElDRVNdID0geyJsM19wYXJpdHkiLCAibDNfcGFyaXR5X3NsaWNlXzEifTsK IAlpbnQgcm93ID0gMCwgYmFuayA9IDAsIHNiYW5rID0gMDsKIAlpbnQgZmRbUkVBTF9NQVhfU0xJ Q0VTXSA9IHswfSwgcmV0LCBpOwpAQCAtMTg5LDcgKzE5MCw3IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJaWYgKGludGVsX2dlbihkZXZpZCkgPCA3IHx8IElTX1ZBTExFWVZJ RVcoZGV2aWQpKQogCQlleGl0KDc3KTsKIAotCWFzc2VydChpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBkZXZpY2UpID09IDApOworCWFzc2VydChp bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2Rldmlj ZSgpLCAwLCBkZXZpY2UpID09IDApOwogCiAJZGlyID0gaWd0X3N5c2ZzX29wZW4oZGV2aWNlKTsK IApAQCAtMjE3LDcgKzIxOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ ICogbm93LiBKdXN0IGJlIGF3YXJlIG9mIHRoaXMgaWYgZm9yIHNvbWUgcmVhc29uIGEgaGFuZyBp cyByZXBvcnRlZAogCSAqIHdoZW4gdXNpbmcgdGhpcyB0b29sLgogCSAqLwotCWRmdCA9IGludGVs X3JlZ2lzdGVyX3JlYWQoMHhiMDM4KTsKKwlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlv X2RhdGEsIDB4YjAzOCk7CiAKIAl3aGlsZSAoMSkgewogCQlpbnQgYywgb3B0aW9uX2luZGV4ID0g MDsKQEAgLTM2NiwxMCArMzY3LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJCQkJYXNzZXJ0KGkgPCAyKTsKIAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBzbGljZSAqLwogCQkJ CWRmdCB8PSAxIDw8IDA7IC8qIGVuYWJsZSAqLwotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKDB4 YjAzOCwgZGZ0KTsKKwkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19kYXRhLCAweGIwMzgs IGRmdCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICd1JzoKLQkJCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZSgweGIwMzgsIGRmdCAmIH4oMTw8MCkpOworCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlv X2RhdGEgLDB4YjAzOCwgZGZ0ICYgfigxPDwwKSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdMJzoK IAkJCQlicmVhazsKQEAgLTM3OCw3ICszNzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQl9CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKIAlpZiAoYWN0aW9uID09ICdsJykK IAkJZXhpdChFWElUX1NVQ0NFU1MpOwogCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBi L3Rvb2xzL2ludGVsX2xpZC5jCmluZGV4IDM3YzZiYTVlLi41MjE3NjgzMyAxMDA2NDQKLS0tIGEv dG9vbHMvaW50ZWxfbGlkLmMKKysrIGIvdG9vbHMvaW50ZWxfbGlkLmMKQEAgLTExNyw5ICsxMTcs MTAgQEAgb3V0OgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CisJc3RydWN0 IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IHN3ZjE0LCBhY3BpX2xpZDsKIAotCWludGVsX21t aW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CisJaW50ZWxfbW1pb191c2Vf cGNpX2JhcigmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKIAogCXdoaWxlICgx KSB7CiAJCXN3ZjE0ID0gSU5SRUcoU1dGMTQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFu ZWxfZml0dGVyLmMgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwppbmRleCAxMzdlZjYxYS4u MDNiNDI1OTYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCkBAIC0yNzMsNiArMjczLDcgQEAgaW50IG1haW4gKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJYm9vbCBkb19kaXNhYmxlID0gZmFsc2UsIGRvX2R1bXAg PSBmYWxzZSwgZG9fdXNhZ2UgPSBmYWxzZTsKIAlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsK IAl1aW50MzJfdCBkZXZpZDsKKwlzdHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAogCXByaW50 ZigiV0FSTklORzpcbiIKIAkgICAgICAgIlRoaXMgdG9vbCBpcyBhIHdvcmthcm91bmQgZm9yIHBl b3BsZSB0aGF0IGRvbid0IGhhdmUgYSBLZXJuZWwgIgpAQCAtMjgwLDcgKzI4MSw3IEBAIGludCBt YWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAgICAgICAic29sdXRpb24gdGhhdCBtYXkg b3IgbWF5IG5vdCB3b3JrLiBVc2UgaXQgYXQgeW91ciBvd24gcmlzay5cbiIpOwogCiAJcGNpX2Rl diA9IGludGVsX2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo cGNpX2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEs IHBjaV9kZXYsIDAsIC0xKTsKIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICgh SEFTX1BDSF9TUExJVChkZXZpZCkpIHsKQEAgLTM0Miw2ICszNDMsNiBAQCBpbnQgbWFpbiAoaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCXJldHVy biByZXQ7CiB9CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMgYi90b29s cy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKaW5kZXggNTBjNGJjZTYuLmEyOWVmMWIyIDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxfcGVyZl9j b3VudGVycy5jCkBAIC00NDEsNiArNDQxLDcgQEAgZ2VuN19nZXRfY291bnRlcnModm9pZCkKIGlu dAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlv X2RhdGE7CiAJdWludDMyX3QgZGV2aWQ7CiAJaW50IGNvdW50ZXJfZm9ybWF0OwogCWludCBjb3Vu dGVyX2NvdW50OwpAQCAtNDgzLDEwICs0ODQsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAKIAlpZiAob2Fjb250cm9sKSB7CiAJCS8qIEZvcmNld2FrZSAqLwotCQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCBmZCk7CisJCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCks CisJCQkJMCwgZmQpOwogCiAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlp bnRlbF9yZWdpc3Rlcl93cml0ZShPQUNPTlRST0wsCisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZt bWlvX2RhdGEsIE9BQ09OVFJPTCwKIAkJCWNvdW50ZXJfZm9ybWF0IDw8IE9BQ09OVFJPTF9DT1VO VEVSX1NFTEVDVF9TSElGVCB8CiAJCQlQRVJGT1JNQU5DRV9DT1VOVEVSX0VOQUJMRSk7CiAJfQpA QCAtNTIwLDEwICs1MjIsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAo b2Fjb250cm9sKSB7CiAJCS8qIERpc2FibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUoT0FDT05UUk9MLCAwKTsKKwkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUo Jm1taW9fZGF0YSwgT0FDT05UUk9MLCAwKTsKIAogCQkvKiBGb3JjZXdha2UgKi8KLQkJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1t aW9fZGF0YSk7CiAJfQogCiAJZnJlZSh0b3RhbHMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxf cmVnLmMgYi90b29scy9pbnRlbF9yZWcuYwppbmRleCBlNTE3OTU2Yi4uYzhjZGIzNzcgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ludGVsX3JlZy5jCisrKyBiL3Rvb2xzL2ludGVsX3JlZy5jCkBAIC01Nyw2 ICs1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9ub3Rfc3VwcG9ydGVkKHZvaWQpCiAKIHN0cnVj dCBjb25maWcgewogCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2OworCXN0cnVjdCBtbWlvX2Rh dGEgbW1pb19kYXRhOwogCWNoYXIgKm1taW9maWxlOwogCXVpbnQzMl90IGRldmlkOwogCkBAIC0z ODcsNyArMzg4LDcgQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNv bmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJCQlyZWctPnBvcnRfZGVz Yy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQl2YWwgPSBpbnRlbF9pb3NmX3NiX3JlYWQo cmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyKTsKKwkJdmFsID0gaW50ZWxfaW9zZl9zYl9y ZWFkKCZjb25maWctPm1taW9fZGF0YSwgcmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyKTsK IAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBw b3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNjLnBvcnQpOwpAQCAtNDU4LDcgKzQ1OSw3IEBAIHN0YXRp YyBpbnQgd3JpdGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpy ZWcsIHVpbnQzMl90IHZhbCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAt MTsKIAkJfQotCQlpbnRlbF9pb3NmX3NiX3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+ YWRkciwgdmFsKTsKKwkJaW50ZWxfaW9zZl9zYl93cml0ZSgmY29uZmlnLT5tbWlvX2RhdGEsIHJl Zy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkciwgdmFsKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9k ZXNjLnBvcnQpOwpAQCAtNTUyLDkgKzU1Myw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3JlYWQo c3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogCWlm IChjb25maWctPm1taW9maWxlKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmlnLT5t bWlvZmlsZSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlvX2RhdGEs IGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Y29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZj b25maWctPm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkgPSAx OyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0cnVjdCByZWcgcmVnOwpAQCAtNTcwLDcgKzU3MSw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfcmVnX3JlYWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJ cmV0dXJuIEVYSVRfU1VDQ0VTUzsKIH0KQEAgLTU4NCw3ICs1ODUsNyBAQCBzdGF0aWMgaW50IGlu dGVsX3JlZ193cml0ZShzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoJmNvbmZpZy0+bW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKIAogCWZvciAo aSA9IDE7IGkgPCBhcmdjOyBpICs9IDIpIHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC02MDksNyAr NjEwLDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29uZmln LCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl3cml0ZV9yZWdpc3Rlcihjb25maWcsICZyZWcs IHZhbCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgmY29uZmlnLT5tbWlvX2RhdGEpOwogCiAJcmV0dXJuIEVYSVRfU1VD Q0VTUzsKIH0KQEAgLTYyMCw5ICs2MjEsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19kdW1wKHN0 cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbnQgaTsKIAog CWlmIChjb25maWctPm1taW9maWxlKQotCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmln LT5tbWlvZmlsZSk7CisJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmY29uZmlnLT5tbWlvX2Rh dGEsIGNvbmZpZy0+bW1pb2ZpbGUpOwogCWVsc2UKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCZjb25maWctPm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgY29uZmlnLT5yZWdjb3VudDsgaSsrKSB7CiAJCXJlZyA9ICZjb25maWctPnJlZ3Nb aV07CkBAIC02MzQsNyArNjM1LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChzdHJ1Y3Qg Y29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWR1bXBfcmVnaXN0ZXIo Y29uZmlnLCAmY29uZmlnLT5yZWdzW2ldKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZjb25maWctPm1taW9fZGF0YSk7 CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQpAQCAtNjQ4LDcgKzY0OSw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfcmVnX3NuYXBzaG90KHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKIAl9CiAKLQlpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKGNvbmZpZy0+cGNpX2Rldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmY29u ZmlnLT5tbWlvX2RhdGEsIGNvbmZpZy0+cGNpX2Rldik7CiAKIAkvKiBYWFg6IGVycm9yIGhhbmRs aW5nICovCiAJaWYgKHdyaXRlKDEsIGlndF9nbG9iYWxfbW1pbywgY29uZmlnLT5wY2lfZGV2LT5y ZWdpb25zW21taW9fYmFyXS5zaXplKSA9PSAtMSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3Jl Z19jaGVja2VyLmMgYi90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCmluZGV4IDZiZGU2M2VjLi43 MzQwNGQwMiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYworKysgYi90b29s cy9pbnRlbF9yZWdfY2hlY2tlci5jCkBAIC0zNDIsMTAgKzM0MiwxMSBAQCBjaGVja19kcGZjX2Nv bnRyb2xfc2Eodm9pZCkKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKIAlzdHJ1 Y3QgcGNpX2RldmljZSAqZGV2OworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCiAJZGV2 ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKIAlkZXZpZCA9IGRldi0+ZGV2aWNlX2lkOwotCWlu dGVsX21taW9fdXNlX3BjaV9iYXIoZGV2KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlv X2RhdGEsIGRldik7CiAKIAlpZiAoSVNfR0VONyhkZXZpZCkpCiAJCWdlbiA9IDc7CmRpZmYgLS1n aXQgYS90b29scy9pbnRlbF93YXRlcm1hcmsuYyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCmlu ZGV4IGU3MWMzZDljLi4wOWU5YmYzNiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJr LmMKKysrIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKQEAgLTIzNyw2ICsyMzcsNyBAQCBzdGF0 aWMgY29uc3QgY2hhciAqc2tsX252MTJfYnVmX2NmZ19yZWdfbmFtZShpbnQgcGlwZSwgaW50IHBs YW5lKQogCiBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2Rh dGEgbW1pb19kYXRhOwogCWludCBwaXBlLCBwbGFuZSwgbGV2ZWw7CiAJaW50IG51bV9waXBlcyA9 IDM7CiAJaW50IG1heF9wbGFuZXMgPSBza2xfbWF4X3BsYW5lcyhkZXZpZCk7CkBAIC0yNDksNyAr MjUwLDcgQEAgc3RhdGljIHZvaWQgc2tsX3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBwbGFuZV9j dGxbbnVtX3BpcGVzXVttYXhfcGxhbmVzXTsKIAl1aW50MzJfdCB3bV9saW5ldGltZVtudW1fcGlw ZXNdOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWZvciAocGlwZSA9IDA7IHBpcGUgPCBudW1f cGlwZXM7IHBpcGUrKykgewogCQlpbnQgbnVtX3BsYW5lcyA9IHNrbF9udW1fcGxhbmVzKGRldmlk LCBwaXBlKTsKQEAgLTQ1OCw2ICs0NTksNyBAQCBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lk KQogCiBzdGF0aWMgdm9pZCBpbGtfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEg bW1pb19kYXRhOwogCWludCBpOwogCXVpbnQzMl90IGRzcGNudHJbM107CiAJdWludDMyX3Qgc3Bj bnRyWzNdOwpAQCAtNDY5LDcgKzQ3MSw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQp CiAJaW50IG51bV9waXBlcyA9IGludGVsX2dlbihkZXZpZCkgPj0gNyA/IDMgOiAyOwogCXN0cnVj dCBpbGtfd20gd20gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1p b19kYXRhLGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWZvciAoaSA9IDA7IGkg PCBudW1fcGlwZXM7IGkrKykgewogCQlkc3BjbnRyW2ldID0gcmVhZF9yZWcoMHg3MDE4MCArIGkg KiAweDEwMDApOwpAQCAtNTA1LDcgKzUwNyw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZv aWQpCiAJaWYgKElTX0JST0FEV0VMTChkZXZpZCkgfHwgSVNfSEFTV0VMTChkZXZpZCkpCiAJCXdt X21pc2MgPSByZWFkX3JlZygweDQ1MjYwKTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p KCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspCiAJCXByaW50ZigiICAgIFdNX1BJUEVfJWMgPSAweCUw OHhcbiIsIHBpcGVfbmFtZShpKSwgd21fcGlwZVtpXSk7CkBAIC02MTAsNiArNjEyLDcgQEAgc3Rh dGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9p ZCkKIHsKKwlzdHJ1Y3QgbW1pb19kYXRhIG1taW9fZGF0YTsKIAlpbnQgaTsKIAl1bnNpZ25lZCBp bnQgbnVtX3BpcGVzID0gSVNfQ0hFUlJZVklFVyhkZXZpZCkgPyAzIDogMjsKIAl1aW50MzJfdCBk c3BhcmIsIGRzcGFyYjIsIGRzcGFyYjM7CkBAIC02MTksNyArNjIyLDcgQEAgc3RhdGljIHZvaWQg dmx2X3dtX2R1bXAodm9pZCkKIAl1aW50MzJfdCBkc3Bfc3NfcG0sIGRkcl9zZXR1cDI7CiAJc3Ry dWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CiAK IAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlkc3BhcmIyID0gcmVhZF9yZWcoMHg3MDA2 MCk7CkBAIC02NTAsMTMgKzY1MywxMyBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQog CiAJCWRkbDMgPSByZWFkX3JlZygweDcwMDU4KTsKIAotCQlpbnRlbF9wdW5pdF9yZWFkKDB4MzYs ICZkc3Bfc3NfcG0pOwotCQlpbnRlbF9wdW5pdF9yZWFkKDB4MTM5LCAmZGRyX3NldHVwMik7CisJ CWludGVsX3B1bml0X3JlYWQoJm1taW9fZGF0YSwgMHgzNiwgJmRzcF9zc19wbSk7CisJCWludGVs X3B1bml0X3JlYWQoJm1taW9fZGF0YSwgMHgxMzksICZkZHJfc2V0dXAyKTsKIAl9IGVsc2Ugewog CQlmdzcgPSByZWFkX3JlZygweDcwMDdjKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwogCiAJcHJp bnRmKCIgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKIAlwcmludGYoIiAgICAgICAgRlcy ID0gMHglMDh4XG4iLCBmdzIpOwpAQCAtODI3LDYgKzgzMCw3IEBAIHN0YXRpYyB2b2lkIHZsdl93 bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiB7CisJc3RydWN0 IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJdWludDMyX3QgZHNwYWNudHIsIGRzcGJj bnRyOwogCXVpbnQzMl90IGRzcGFyYjsKQEAgLTgzNSw3ICs4MzksNyBAQCBzdGF0aWMgdm9pZCBn NHhfd21fZHVtcCh2b2lkKQogCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKIAlzdHJ1Y3QgZ21jaF93 bSB3bXNbTUFYX1BMQU5FXSA9IHt9OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKIAogCWRzcGFjbnRy ID0gcmVhZF9yZWcoMHg3MDE4MCk7CiAJZHNwYmNudHIgPSByZWFkX3JlZygweDcxMTgwKTsKQEAg LTg0Niw3ICs4NTAsNyBAQCBzdGF0aWMgdm9pZCBnNHhfd21fZHVtcCh2b2lkKQogCW1pX2Rpc3Bs YXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlfYXJiX3N0YXRlID0gcmVhZF9y ZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmludGYoIiAgICAgICAgICAgICBE U1BBQ05UUiA9IDB4JTA4eFxuIiwgZHNwYWNudHIpOwogCXByaW50ZigiICAgICAgICAgICAgIERT UEJDTlRSID0gMHglMDh4XG4iLCBkc3BiY250cik7CkBAIC05MTMsNiArOTE3LDcgQEAgc3RhdGlj IHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKIAogc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZvaWQp CiB7CisJc3RydWN0IG1taW9fZGF0YSBtbWlvX2RhdGE7CiAJaW50IGk7CiAJaW50IHRvdGFsc2l6 ZSA9IElTX0NSRVNUTElORShkZXZpZCkgPyAxMjggOiA5NjsKIAl1aW50MzJfdCBkc3BhcmI7CkBA IC05MjEsNyArOTI2LDcgQEAgc3RhdGljIHZvaWQgZ2VuNF93bV9kdW1wKHZvaWQpCiAJdWludDMy X3QgbWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAK LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7CiAJZncx ID0gcmVhZF9yZWcoMHg3MDAzNCk7CkBAIC05MzAsNyArOTM1LDcgQEAgc3RhdGljIHZvaWQgZ2Vu NF93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUw KTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsK IAogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEpOwogCXBy aW50ZigiICAgICAgICAgICAgICAgICAgRlcyID0gMHglMDh4XG4iLCBmdzIpOwpAQCAtOTgzLDYg Kzk4OCw3IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQogCiBzdGF0aWMgdm9pZCBw bnZfd21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBp OwogCWludCB0b3RhbHNpemUgPSA5NjsgLyogRklYTUU/ICovCiAJdWludDMyX3QgZHNwYXJiOwpA QCAtOTkyLDcgKzk5OCw3IEBAIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiAJdWludDMy X3QgY2JyOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgMCwgLTEpOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7CiAJZncxID0gcmVhZF9y ZWcoMHg3MDAzNCk7CkBAIC0xMDAyLDcgKzEwMDgsNyBAQCBzdGF0aWMgdm9pZCBwbnZfd21fZHVt cCh2b2lkKQogCW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7CiAJbWlf YXJiX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmlu dGYoIiAgICAgICAgICAgICAgIERTUEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKIAlwcmludGYo IiAgICAgICAgICAgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKQEAgLTEwNzMsNiArMTA3 OSw3IEBAIHN0YXRpYyB2b2lkIHBudl93bV9kdW1wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGdlbjNf d21fZHVtcCh2b2lkKQogeworCXN0cnVjdCBtbWlvX2RhdGEgbW1pb19kYXRhOwogCWludCBpOwog CWludCB0b3RhbHNpemUgPSBJU185NDVHTShkZXZpZCkgPyAxMjggOiA5NjsgLyogRklYTUU/ICov CiAJdWludDMyX3QgZHNwYXJiOwpAQCAtMTA4Miw3ICsxMDg5LDcgQEAgc3RhdGljIHZvaWQgZ2Vu M193bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dt IHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZHNwYXJiID0g cmVhZF9yZWcoMHg3MDAzMCk7CiAJaW5zdHBtID0gcmVhZF9yZWcoMHgyMGMwKTsKQEAgLTEwOTAs NyArMTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lkKQogCWZ3X2JsY19zZWxm ID0gcmVhZF9yZWcoMHgyMGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwog Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgmbW1pb19kYXRhKTsKIAogCXByaW50ZigiICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBk c3BhcmIpOwogCXByaW50ZigiICAgICAgRldfQkxDID0gMHglMDE2IiBQUkl4NjQgIlxuIiwgZndf YmxjKTsKQEAgLTExNDIsNiArMTE0OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lk KQogCiBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKIHsKKwlzdHJ1Y3QgbW1pb19kYXRh IG1taW9fZGF0YTsKIAlpbnQgaTsKIAlpbnQgdG90YWxzaXplOwogCXVpbnQzMl90IGRzcGFyYjsK QEAgLTExNTEsNyArMTE1OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjJfd21fZHVtcCh2b2lkKQogCXVp bnQzMl90IG1pX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAK LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgMCwgLTEpOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7CiAJbWVt X21vZGUgPSByZWFkX3JlZygweDIwY2MpOwpAQCAtMTE1OSw3ICsxMTY3LDcgQEAgc3RhdGljIHZv aWQgZ2VuMl93bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIwZTApOwog CW1pX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7CiAKIAlwcmlu dGYoIiAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwogCXByaW50ZigiICAgTUVNX01P REUgPSAweCUwOHhcbiIsIG1lbV9tb2RlKTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2