From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from inx.pm.waw.pl ([195.116.170.130]) by canuck.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1PVCzP-00046q-Dl for barebox@lists.infradead.org; Wed, 22 Dec 2010 00:55:44 +0000 From: Krzysztof Halasa In-Reply-To: (Krzysztof Halasa's message of "Mon, 20 Dec 2010 23:30:03 +0100") References: Date: Wed, 22 Dec 2010 01:55:23 +0100 Message-ID: MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: barebox-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 10a] ARM: Add support for IXP4xx CPU and for Goramo Multilink router platform. To: barebox@lists.infradead.org U2lnbmVkLW9mZi1ieTogS3J6eXN6dG9mIEhhxYJhc2EgPGtoY0BwbS53YXcucGw+CgpkaWZmIC0t Z2l0IGEvRG9jdW1lbnRhdGlvbi9ib2FyZHMuZG94IGIvRG9jdW1lbnRhdGlvbi9ib2FyZHMuZG94 CmluZGV4IDgwODdmMDEuLjhkODcwMWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYm9hcmRz LmRveAorKysgYi9Eb2N1bWVudGF0aW9uL2JvYXJkcy5kb3gKQEAgLTIwLDYgKzIwLDcgQEAgQVJN IHR5cGU6CiBAbGkgQHN1YnBhZ2UgYm9hcmRfYmFiYWdlCiBAbGkgQHN1YnBhZ2UgY2h1bWJ5b25l CiBAbGkgQHN1YnBhZ2Ugc2NiOTMyOAorQGxpIEBzdWJwYWdlIG11bHRpbGluawogQGxpIEBzdWJw YWdlIG5ldHgKIEBsaSBAc3VicGFnZSBkZXZfb21hcF9hcmNoCiBAbGkgQHN1YnBhZ2UgYTltMjQ0 MApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gvYXJtL0tjb25maWcKaW5kZXgg YzA5ZDIxYi4uMmIzM2EwNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNo L2FybS9LY29uZmlnCkBAIC0zOSw2ICszOSwxMyBAQCBjb25maWcgQVJDSF9JTVgKIAlib29sICJG cmVlc2NhbGUgaU1YLWJhc2VkIgogCXNlbGVjdCBHRU5FUklDX0dQSU8KIAorY29uZmlnIEFSQ0hf SVhQNFhYCisJYm9vbCAiSW50ZWwgSVhQNHh4LWJhc2VkIgorCXNlbGVjdCBDUFVfMzJ2NQorCXNl bGVjdCBBUkNIX1NVUFBPUlRTX0JJR19FTkRJQU4KKwlzZWxlY3QgQ1BVX0JJR19FTkRJQU4KKwlz ZWxlY3QgQVJDSF9IQVNfTE9XTEVWRUxfSU5JVAorCiBjb25maWcgQVJDSF9TVE0KIAlib29sICJT aWdtYVRlbC9GU0wgaU1YLWJhc2VkIgogCkBAIC03MCw2ICs3Nyw3IEBAIHNvdXJjZSBhcmNoL2Fy bS9jcHUvS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnCiBzb3VyY2Ug YXJjaC9hcm0vbWFjaC1lcDkzeHgvS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtaW14L0tj b25maWcKK3NvdXJjZSBhcmNoL2FybS9tYWNoLWl4cDR4eC9LY29uZmlnCiBzb3VyY2UgYXJjaC9h cm0vbWFjaC1zdG0vS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gtbmV0eC9LY29uZmlnCiBz b3VyY2UgYXJjaC9hcm0vbWFjaC1ub21hZGlrL0tjb25maWcKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggYzkwOTYwZS4uNGNjMGMwYyAxMDA2 NDQKLS0tIGEvYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTQx LDYgKzQxLDcgQEAgQ1BQRkxBR1MgKz0gJChDRkxBR1NfQUJJKSAkKGFyY2gteSkgJCh0dW5lLXkp CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQVQ5MSkJCTo9IGF0OTEKIG1hY2hpbmUtJChDT05GSUdf QVJDSF9FUDkzWFgpCQk6PSBlcDkzeHgKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9JTVgpCQk6PSBp bXgKK21hY2hpbmUtJChDT05GSUdfQVJDSF9JWFA0WFgpCQk6PSBpeHA0eHgKIG1hY2hpbmUtJChD T05GSUdfQVJDSF9TVE0pCQk6PSBzdG0KIG1hY2hpbmUtJChDT05GSUdfQVJDSF9OT01BRElLKQkJ Oj0gbm9tYWRpawogbWFjaGluZS0kKENPTkZJR19BUkNIX05FVFgpCQk6PSBuZXR4CkBAIC03NCw2 ICs3NSw3IEBAIGJvYXJkLSQoQ09ORklHX01BQ0hfRlJFRVNDQUxFX01YMzVfM1NUQUNLKQk6PSBm cmVlc2NhbGUtbXgzNS0zLXN0YWNrCiBib2FyZC0kKENPTkZJR19NQUNIX0lNWDIxQURTKQkJCTo9 IGlteDIxYWRzCiBib2FyZC0kKENPTkZJR19NQUNIX0lNWDI3QURTKQkJCTo9IGlteDI3YWRzCiBi b2FyZC0kKENPTkZJR19NQUNIX01NQ0NQVSkJCQk6PSBtbWNjcHUKK2JvYXJkLSQoQ09ORklHX01B Q0hfTVVMVElMSU5LKQkJCTo9IG11bHRpbGluawogYm9hcmQtJChDT05GSUdfTUFDSF9NWDFBRFMp CQkJOj0gbXgxYWRzCiBib2FyZC0kKENPTkZJR19NQUNIX05PTUFESUtfODgxNU5ISykJCTo9IG5o azg4MTUKIGJvYXJkLSQoQ09ORklHX01BQ0hfTlhEQjUwMCkJCQk6PSBuZXR4CmRpZmYgLS1naXQg YS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL01ha2VmaWxlIGIvYXJjaC9hcm0vYm9hcmRzL211 bHRpbGluay9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE4 YmJjCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9NYWtlZmls ZQpAQCAtMCwwICsxIEBACitvYmoteSArPSBsb3dsZXZlbF9pbml0Lm8gbXVsdGlsaW5rLm8KZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvY29uZmlnLmggYi9hcmNoL2FybS9i b2FyZHMvbXVsdGlsaW5rL2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbG93bGV2 ZWxfaW5pdC5TIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9sb3dsZXZlbF9pbml0LlMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcwZWY3MgotLS0gL2Rldi9udWxsCisr KyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbG93bGV2ZWxfaW5pdC5TCkBAIC0wLDAgKzEs NjQgQEAKKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+CisKKwkuc2VjdGlvbiAiLnRleHRf YmFyZV9pbml0IiwgImF4IgorCS5iYWxpZ24gMHg0MAorCS5zcGFjZSAweDQwIC8qIGNvbmZpZ3Vy YXRpb24gYmxvY2sgYXQgMHg0MCAqLworCisJLm1hY3JvIERFTEFZX0ZPUiBjeWNsZXMsIHJlZzAK KwlsZHIgXHJlZzAsID1cY3ljbGVzCisJc3VicyBccmVnMCwgXHJlZzAsICMxCisJc3VibmUgcGMs IHBjLCAjMHhjCisJLmVuZG0KKworI2RlZmluZSBDRkdfU0RSQU1fU0laRSAgICAweDUwIC8qIHUz MiAqLworI2RlZmluZSBDRkdfU0RSQU1fQ09ORiAgICAweDU0IC8qIHUzMiAqLworI2RlZmluZSBD RkdfU0RSQU1fTU9ERSAgICAweDU4IC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fUkVGUkVT SCAweDVDIC8qIHUzMiAqLworCisuZ2xvYmwgYm9hcmRfaW5pdF9sb3dsZXZlbAorYm9hcmRfaW5p dF9sb3dsZXZlbDoKKwltb3YgcjgsICNJWFA0WFhfRVhQX0JBU0UoMCkKKwlsZHIgcjEsIFtyOCwg I0NGR19TRFJBTV9DT05GXQorCWxkciByMiwgPUlYUDRYWF9TRFJBTV9DT05GSUcKKwlzdHIgcjEs IFtyMl0KKworCS8qIGRpc2FibGUgcmVmcmVzaCBjeWNsZXMgKi8KKwltb3YgcjEsICMwCisJYWRk IHIyLCByMiwgIzQgLyogcjIgPSBJWFA0WFhfU0RSQU1fUkVGUkVTSCAqLworCXN0ciByMSwgW3Iy XQorCisJLyogc2VuZCBOT1AgY29tbWFuZCAqLworCW1vdiByMSwgIzMKKwlhZGQgcjMsIHIyLCAj NCAvKiByMyA9IElYUDRYWF9TRFJBTV9JUiAqLworCXN0ciByMSwgW3IzXQorCURFTEFZX0ZPUiAw eDQwMDAsIHIwCisKKwkvKiBzZXQgU0RSQU0gaW50ZXJuYWwgcmVmcmVzaCAqLworCWxkciByMSwg W3I4LCAjQ0ZHX1NEUkFNX1JFRlJFU0hdCisJc3RyIHIxLCBbcjJdCisJREVMQVlfRk9SIDB4NDAw MCwgcjAKKworCS8qIHNlbmQgcHJlY2hhcmdlLWFsbCBjb21tYW5kIHRvIGNsb3NlIGFsbCBvcGVu IGJhbmtzICovCisJbW92IHIxLCAjMgorCXN0ciByMSwgW3IzXQorCURFTEFZX0ZPUiAweDQwMDAs IHIwCisKKwkvKiBwcm92aWRlIDggYXV0by1yZWZyZXNoIGN5Y2xlcyAqLworCW1vdiByMSwgIzQK Kwltb3YgcjQsICM4CisxOglzdHIgcjEsIFtyM10KKwlERUxBWV9GT1IgMHgxMDAsIHIwCisJc3Vi cyByNCwgcjQsICMxCisJYm5lIDFiCisKKwkvKiBzZXQgbW9kZSByZWdpc3RlciBpbiBTRFJBTSAq LworCWxkciByMSwgW3I4LCAjQ0ZHX1NEUkFNX01PREVdCisJc3RyIHIxLCBbcjNdCisJREVMQVlf Rk9SIDB4NDAwMCwgcjAKKworCS8qIHNlbmQgbm9ybWFsIG9wZXJhdGlvbiBjb21tYW5kICovCisJ bW92IHIxLCAjNgorCXN0ciByMSwgW3IzXQorCURFTEFZX0ZPUiAweDQwMDAsIHIwCisKKwltb3Yg cGMsIGxyCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5j IGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9tdWx0aWxpbmsuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mMmZiOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0v Ym9hcmRzL211bHRpbGluay9tdWx0aWxpbmsuYwpAQCAtMCwwICsxLDE0NCBAQAorLy8jZGVmaW5l IERFQlVHCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl IDxpbml0Lmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGlu dXguaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxnZW5lcmF0ZWQvbWFjaC10eXBl cy5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxtYWNoL3BsYXRm b3JtLmg+CisKKy8qIG9mZnNldHMgZnJvbSBzdGFydCBvZiBmbGFzaCBST00gPSAweDUwMDAwMDAw ICovCisjZGVmaW5lIENGR19FVEgwX0FERFJFU1MgICAgIDB4NDAgLyogNiBieXRlcyAqLworI2Rl ZmluZSBDRkdfRVRIMV9BRERSRVNTICAgICAweDQ2IC8qIDYgYnl0ZXMgKi8KKyNkZWZpbmUgQ0ZH X1JFViAgICAgICAgICAgICAgMHg0QyAvKiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX1NJWkUg ICAgICAgMHg1MCAvKiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX0NPTkYgICAgICAgMHg1NCAv KiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX01PREUgICAgICAgMHg1OCAvKiB1MzIgKi8KKyNk ZWZpbmUgQ0ZHX1NEUkFNX1JFRlJFU0ggICAgMHg1QyAvKiB1MzIgKi8KKworI2RlZmluZSBDRkdf SFdfQklUUyAgICAgICAgICAweDYwIC8qIHUzMiAqLworI2RlZmluZSAgQ0ZHX0hXX1VTQl9QT1JU UyAgICAweDAwMDAwMDA3IC8qIDAgPSBubyBORUMgY2hpcCwgMS01ID0gcG9ydHMgIyAqLworI2Rl ZmluZSAgQ0ZHX0hXX0hBU19QQ0lfU0xPVCAweDAwMDAwMDA4CisjZGVmaW5lICBDRkdfSFdfSEFT X0VUSDAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgIENGR19IV19IQVNfRVRIMSAgICAgMHgwMDAw MDAyMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19IU1MwICAgICAweDAwMDAwMDQwCisjZGVmaW5lICBD RkdfSFdfSEFTX0hTUzEgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgIENGR19IV19IQVNfVUFSVDAg ICAgMHgwMDAwMDEwMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19VQVJUMSAgICAweDAwMDAwMjAwCisj ZGVmaW5lICBDRkdfSFdfSEFTX0VFUFJPTSAgIDB4MDAwMDA0MDAKKworI2RlZmluZSBFVEhfQUxF TiAgICAgICAgICAgICA2CisKKyNkZWZpbmUgQkFSRUJPWF9TVEFSVCAgICAgICAgMHgwMDAwMAor I2RlZmluZSBCQVJFQk9YX0xFTkdUSCAgICAgICAweDM0MDAwCisjZGVmaW5lIE5QRV9BX1NUQVJU ICAgICAgICAgIChCQVJFQk9YX1NUQVJUICsgQkFSRUJPWF9MRU5HVEgpCisjZGVmaW5lIE5QRV9B X0xFTkdUSCAgICAgICAgIDB4MDUwMDAKKyNkZWZpbmUgTlBFX0JfU1RBUlQgICAgICAgICAgKE5Q RV9BX1NUQVJUICsgTlBFX0FfTEVOR1RIKQorI2RlZmluZSBOUEVfQl9MRU5HVEggICAgICAgICAw eDAzMDAwCisjZGVmaW5lIE5QRV9DX1NUQVJUICAgICAgICAgIChOUEVfQl9TVEFSVCArIE5QRV9C X0xFTkdUSCkKKyNkZWZpbmUgTlBFX0NfTEVOR1RIICAgICAgICAgMHgwNDAwMAorI2RlZmluZSBO UEVfRU5WMF9TVEFSVCAgICAgICAoTlBFX0NfU1RBUlQgKyBOUEVfQ19MRU5HVEgpCisjZGVmaW5l IE5QRV9FTlYwX0xFTkdUSCAgICAgIDB4MjAwMDAKKworc3RhdGljIHN0cnVjdCBkZXZpY2VfZCBj ZmlfZGV2ID0geworCS5uYW1lICAgICA9ICJjZmlfZmxhc2giLAorCS5tYXBfYmFzZSA9IElYUDRY WF9FWFBfQkFTRSgwKSwKKwkuc2l6ZSAgICAgPSAxNiAqIDEwMjQgKiAxMDI0LAorfTsKKworc3Rh dGljIHN0cnVjdCBldGhfcGxhdF9pbmZvIGV0aF9waW5mb1syXSA9IHsKKwl7CisJCS5yZWdzICAg ICA9IElYUDRYWF9FdGhCX0JBU0UsCisJCS5ucGUgICAgICA9IDEsCisJCS5waHkgICAgICA9IDAs CisJCS5yeHEgICAgICA9IDIwLAorCQkudHhyZWFkeXEgPSAyOSwKKwl9LCB7CisJCS5yZWdzICAg ICA9IElYUDRYWF9FdGhDX0JBU0UsCisJCS5ucGUgICAgICA9IDIsCisJCS5waHkgICAgICA9IDEs CisJCS5yeHEgICAgICA9IDIxLAorCQkudHhyZWFkeXEgPSAzMCwKKwl9Cit9OworCitzdGF0aWMg c3RydWN0IGRldmljZV9kIGV0aF9kZXZbMl0gPSB7CisJeworCQkubmFtZSAgICAgICAgICAgPSAi aXhwNHh4X2V0aCIsCisJCS5wbGF0Zm9ybV9kYXRhICA9ICZldGhfcGluZm9bMF0sCisJfSwgewor CQkuaWQgICAgICAgICAgICAgPSAxLAorCQkubmFtZSAgICAgICAgICAgPSAiaXhwNHh4X2V0aCIs CisJCS5wbGF0Zm9ybV9kYXRhICA9ICZldGhfcGluZm9bMV0sCisJfQorfTsKKworc3RhdGljIHN0 cnVjdCBtZW1vcnlfcGxhdGZvcm1fZGF0YSByYW1fcGRhdGEgPSB7CisJLm5hbWUgICAgICAgICAg ID0gInJhbTAiLAorCS5mbGFncyAgICAgICAgICA9IERFVkZTX1JEV1IsCit9OworCitzdHJ1Y3Qg ZGV2aWNlX2Qgc2RyYW1fZGV2ID0geworCS5pZCAgICAgICAgICAgICA9IC0xLAorCS5uYW1lICAg ICAgICAgICA9ICJtZW0iLAorCS5tYXBfYmFzZSAgICAgICA9IDB4MDAwMDAwMDAsCisJLnNpemUg ICAgICAgICAgID0gMzIgKiAxMDI0ICogMTAyNCwKKwkucGxhdGZvcm1fZGF0YSAgPSAmcmFtX3Bk YXRhLAorfTsKKworc3RhdGljIGlubGluZSB1OCBfX2luaXQgZmxhc2hfcmVhZGIodTMyIGFkZHIp Cit7CisJcmV0dXJuIF9fcmF3X3JlYWRiKElYUDRYWF9FWFBfQkFTRSgwKSArIGFkZHIpOworfQor CitzdGF0aWMgaW50IF9faW5pdCBnbWxfZGV2aWNlc19pbml0KHZvaWQpCit7CisJdTMyIGh3X2Jp dHM7CisJaW50IGk7CisKKwlJWFA0WFhfRVhQX0NTMCA9IElYUDRYWF9FWFBfRU4gfCBJWFA0WFhf RVhQX0lOVEVMIHwKKwkJSVhQNFhYX0VYUF9CSVRTKDI0KSB8IElYUDRYWF9FWFBfV1JfRU4gfCBJ WFA0WFhfRVhQX0JZVEVfUkQxNjsKKwlpID0gcmVnaXN0ZXJfZGV2aWNlKCZjZmlfZGV2KTsKKwlp ZiAoaSkKKwkJZ290byBvdXQ7CisKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgQkFSRUJP WF9TVEFSVCwgQkFSRUJPWF9MRU5HVEgsCisJCQkgICAgREVWRlNfUEFSVElUSU9OX0ZJWEVEIHwg REVWRlNfUEFSVElUSU9OX1JFQURPTkxZLCAiYmFyZWJveCIpOworCWRldmZzX2FkZF9wYXJ0aXRp b24oIm5vcjAiLCBOUEVfQV9TVEFSVCwgTlBFX0FfTEVOR1RILAorCQkJICAgIERFVkZTX1BBUlRJ VElPTl9GSVhFRCB8IERFVkZTX1BBUlRJVElPTl9SRUFET05MWSwgIk5QRS1BIik7CisJZGV2ZnNf YWRkX3BhcnRpdGlvbigibm9yMCIsIE5QRV9CX1NUQVJULCBOUEVfQl9MRU5HVEgsCisJCQkgICAg REVWRlNfUEFSVElUSU9OX0ZJWEVEIHwgREVWRlNfUEFSVElUSU9OX1JFQURPTkxZLCAiTlBFLUIi KTsKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgTlBFX0NfU1RBUlQsIE5QRV9DX0xFTkdU SCwKKwkJCSAgICBERVZGU19QQVJUSVRJT05fRklYRUQgfCBERVZGU19QQVJUSVRJT05fUkVBRE9O TFksICJOUEUtQyIpOworCWRldmZzX2FkZF9wYXJ0aXRpb24oIm5vcjAiLCBOUEVfRU5WMF9TVEFS VCwgTlBFX0VOVjBfTEVOR1RILAorCQkJICAgIERFVkZTX1BBUlRJVElPTl9GSVhFRCwgImVudjAi KTsKKworCWh3X2JpdHMgPSBfX3Jhd19yZWFkbChJWFA0WFhfRVhQX0JBU0UoMCkgKyBDRkdfSFdf QklUUyk7CisKKwlpZiAoaHdfYml0cyAmIENGR19IV19IQVNfRVRIMCkgeworCQlmb3IgKGkgPSAw OyBpIDwgRVRIX0FMRU47IGkrKykKKwkJCWV0aF9waW5mb1swXS5od2FkZHJbaV0gPSBmbGFzaF9y ZWFkYihDRkdfRVRIMF9BRERSRVNTICsgaSk7CisJCXJlZ2lzdGVyX2RldmljZSgmZXRoX2Rldlsw XSk7CisJfQorCisJaWYgKGh3X2JpdHMgJiBDRkdfSFdfSEFTX0VUSDEpIHsKKwkJZm9yIChpID0g MDsgaSA8IEVUSF9BTEVOOyBpKyspCisJCQlldGhfcGluZm9bMV0uaHdhZGRyW2ldID0gZmxhc2hf cmVhZGIoQ0ZHX0VUSDFfQUREUkVTUyArIGkpOworCQlyZWdpc3Rlcl9kZXZpY2UoJmV0aF9kZXZb MV0pOworCX0KKworCXNkcmFtX2Rldi5zaXplID0gX19yYXdfcmVhZGwoSVhQNFhYX0VYUF9CQVNF KDApICsgQ0ZHX1NEUkFNX1NJWkUpOworCWkgPSByZWdpc3Rlcl9kZXZpY2UoJnNkcmFtX2Rldik7 CisJaWYgKGkpCisJCWdvdG8gb3V0OworCisJYXJtbGludXhfYWRkX2RyYW0oJnNkcmFtX2Rldik7 CisJYXJtbGludXhfc2V0X2Jvb3RwYXJhbXMoKHZvaWQgKikoMHgwMDAwMDEwMCkpOworCWFybWxp bnV4X3NldF9hcmNoaXRlY3R1cmUoTUFDSF9UWVBFX0dPUkFNT19NTFIpOworCitvdXQ6CisJcmV0 dXJuIGk7Cit9CitkZXZpY2VfaW5pdGNhbGwoZ21sX2RldmljZXNfaW5pdCk7CmRpZmYgLS1naXQg YS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5kb3ggYi9hcmNoL2FybS9ib2Fy ZHMvbXVsdGlsaW5rL211bHRpbGluay5kb3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZWFkYTFlMQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxp bmsvbXVsdGlsaW5rLmRveApAQCAtMCwwICsxLDM2IEBACisvKiogQHBhZ2UgbXVsdGlsaW5rIEdv cmFtbyBNdWx0aUxpbmsKKworVGhlc2UgYm9hcmRzIGFyZSBiYXNlZCBvbiBJbnRlbCBJWFA0Mngg Q1BVLgorCitWYXJpYW50czoKKworTWljcm9Sb3V0ZXIgbW9kdWxlOiBJWFA0MjEgb3IgSVhQNDI1 IDI2NiBNSHogQ1BVLCAzMiBNaUIgU0RSQU0sCisgICAxIG9yIDIgRmFzdCBFdGhlcm5ldCBwb3J0 cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSBSUy0yMzIgKGNvbnNvbGUpIHBvcnQuCisKK011bHRp TGluayB2LjE6IElYUDQyNSAyNjYgb3IgNTMzIE1IeiBDUFUsIDY0IC0gMjU2IE1pQiBTRFJBTSwK KyAgIDIgRmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSAtIDIgUlMt MjMyIHBvcnRzLAorICAgYSBtaW5pLVBDSSBzbG90LCAyIG9wdGlvbmFsIFVTQiBob3N0IGNvbm5l Y3RvcnMuCisKK011bHRpTGluayB2LjI6IElYUDQyNSAyNjYgb3IgNTMzIE1IeiBDUFUsIDY0IC0g MjU2IE1pQiBTRFJBTSwKKyAgIDIgRmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNlcmlhbCBw b3J0cywgMSAtIDIgUlMtMjMyIHBvcnRzLAorICAgMiBhZGRpdGlvbmFsIG9wdGlvbmFsIEZhc3Qg b3IgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cywgYSBtaW5pLVBDSSBzbG90LAorICAgNCBvcHRpb25h bCBVU0IgaG9zdCBjb25uZWN0b3JzLCBvcHRpb25hbCBSZWFsLVRpbWUgQ2xvY2ssCisgICBvcHRp b25hbCBJREUgY29ubmVjdG9yLgorCisxNiBNaUIgSW50ZWwgU3RyYXRhRmxhc2ggbWVtb3J5IGlz IHBhcnRpdGlvbmVkIGFzIGZvbGxvd3M6CisKKzB4MDAwMDAtMHgzNDAwMCA6IEJhcmVib3ggaW1h Z2UKKzB4MzQwMDAtMHgzOTAwMCA6IE5QRS1BIG1pY3JvY29kZQorMHgzOTAwMC0weDNjMDAwIDog TlBFLUIgbWljcm9jb2RlCisweDNjMDAwLTB4NDAwMDAgOiBOUEUtQyBtaWNyb2NvZGUKKzB4NDAw MDAtMHg2MDAwMCA6IGVudjAKKworVGhlcmUgaXMgYSBmYWN0b3J5IGNvbmZpZ3VyYXRpb24gcmVn aW9uIHdpdGhpbiBCYXJlYm94IGltYWdlIGF0IGxvY2F0aW9ucworMHg0MCAtIDB4N0YuIERldGFp bHMgYXJlIGluIGZpbGUgbXVsdGlsaW5rLmMKKworQmFyZWJveCBpbWFnZSBhbmQgTlBFIG1pY3Jv Y29kZSBmaWxlcyBhcmUgY29tYmluZWQgaW4gZmlyc3QgdHdvIGJsb2Nrcworb2YgZmxhc2ggbWVt b3J5LiBOUEUtQSBtaWNyb2NvZGUgaXMgbm90IHVzZWQgYnkgQmFyZWJveCAoYnV0IG1heSBiZSB1 c2VkCitieSBMaW51eCBIU1MgZHJpdmVyKS4gTlBFLUIgbWljcm9jb2RlIGlzIG5lZWRlZCBmb3Ig ZXRoMCBhbmQgTlBFLUMgZm9yCitldGgxLiBCYXJlYm94IG5lZWRzIHZlcnNpb24gMi40IG9mIHJl Z3VsYXIgbm9uLVZMQU4tYXdhcmUgbWljcm9jb2RlIGZpbGVzCisod2l0aCBvciB3aXRob3V0IGNy eXB0byBzdXBwb3J0KS4KKyovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9LY29u ZmlnIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mNWU0YjQxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1p eHA0eHgvS2NvbmZpZwpAQCAtMCwwICsxLDI2IEBACitpZiBBUkNIX0lYUDRYWAorCitjaG9pY2UK Kwlwcm9tcHQgIklYUDR4eCBCb2FyZCBUeXBlIgorCitjb25maWcgTUFDSF9NVUxUSUxJTksKKwli b29sICJHb3JhbW8gTXVsdGlMaW5rIgorCXNlbGVjdCBNQUNIX0hBU19MT1dMRVZFTF9JTklUCitl bmRjaG9pY2UKKworY29uZmlnIEJPQVJESU5GTworCWRlZmF1bHQgIkdvcmFtbyBNdWx0aUxpbmsi IGlmIE1BQ0hfTVVMVElMSU5LCisKK2NvbmZpZyBJWFA0WFhfUU1HUgorCXRyaXN0YXRlICJJWFA0 eHggUXVldWUgTWFuYWdlciBzdXBwb3J0IgorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRz IElYUDR4eCBidWlsdC1pbiBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VyCisJICBhbmQgaXMgcmVxdWly ZWQgYnkgdGhlIEV0aGVybmV0IGRyaXZlci4KKworY29uZmlnIElYUDRYWF9OUEUKKwl0cmlzdGF0 ZSAiSVhQNHh4IE5ldHdvcmsgUHJvY2Vzc29yIEVuZ2luZSBzdXBwb3J0IgorCWhlbHAKKwkgIFRo aXMgZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBuZXR3b3JrIGNvcHJvY2Vzc29ycwor CSAgYW5kIGlzIHJlcXVpcmVkIGJ5IHRoZSBFdGhlcm5ldCBkcml2ZXIuCisKK2VuZGlmCmRpZmYg LS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtaXhw NHh4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMzg5OTEK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9NYWtlZmlsZQpAQCAtMCww ICsxLDMgQEAKK29iai15ICs9IGxvd2xldmVsX2luaXQubyBnZW5lcmljLm8KK29iai0kKENPTkZJ R19JWFA0WFhfUU1HUikgKz0gcW1nci5vCitvYmotJChDT05GSUdfSVhQNFhYX05QRSkgKz0gbnBl Lm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2dlbmVyaWMuYyBiL2FyY2gvYXJt L21hY2gtaXhwNHh4L2dlbmVyaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wMjM5NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvZ2VuZXJp Yy5jCkBAIC0wLDAgKzEsMTIwIEBACisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5p dC5oPgorI2luY2x1ZGUgPG5zMTY1NTAuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKyNp bmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+CisKKyNkZWZp bmUgT1NUU19GUkVRVUVOQ1kgNjY2NjYwMDAKKwordm9pZCByZXNldF9jcHUodWxvbmcgYWRkcikK K3sKKwkvKiBVc2Ugb24tY2hpcCByZXNldCBjYXBhYmlsaXR5ICovCisJLyogVGhpcyBtYXkgbm90 IHdvcmsgb24gSVhQNDI1IHJldi4gQTAgKi8KKworCUlYUDRYWF9PU1dLID0gSVhQNFhYX1dEVF9L RVk7CisJSVhQNFhYX09TV1QgPSAwOyAvKiByZXF1ZXN0IGltbWVkaWF0ZSByZXNldCAqLworCUlY UDRYWF9PU1dFID0gSVhQNFhYX1dEVF9SRVNFVF9FTkFCTEUgfCBJWFA0WFhfV0RUX0NPVU5UX0VO QUJMRTsKKwl3aGlsZSAoMSkKKwkJOworfQorCisjaW5jbHVkZSA8Y2xvY2suaD4KKworLyoqCisg KiBAYnJpZWYgUHJvdmlkZSBhIHNpbXBsZSBjbG9jayByZWFkCisgKgorICogTm90aGluZyBpcyBz aW1wbGVyLi4gcmVhZCBkaXJlY3QgZnJvbSBjbG9jayBhbmQgcHJvdmlkZSBpdAorICogdG8gdGhl IGNhbGxlci4KKyAqCisgKiBAcmV0dXJuIGNsb2NrIGNvdW50ZXIKKyAqLworc3RhdGljIHVpbnQ2 NF90IGl4cDR4eF9jbG9ja3NvdXJjZV9yZWFkKHZvaWQpCit7CisJcmV0dXJuIElYUDRYWF9PU1RT OworfQorCitzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIGNzID0geworCS5yZWFkID0gaXhwNHh4 X2Nsb2Nrc291cmNlX3JlYWQsCisJLm1hc2sgPSAweGZmZmZmZmZmLAorCS5zaGlmdCA9IDEwLAor fTsKKworLyoqCisgKiBAYnJpZWYgSW5pdGlhbGl6ZSB0aGUgQ2xvY2sKKyAqCisgKiBXZSB1c2Ug dGhlIFRpbWUtU3RhbXAgVGltZXIKKyAqCisgKiBAcmV0dXJuIHJlc3VsdCBvZiBAcmVmIGluaXRf Y2xvY2sKKyAqLworc3RhdGljIGludCBpeHA0eHhfY2xvY2tzb3VyY2VfaW5pdCh2b2lkKQorewor CWNzLm11bHQgPSBjbG9ja3NvdXJjZV9oejJtdWx0KE9TVFNfRlJFUVVFTkNZLCBjcy5zaGlmdCk7 CisKKwlyZXR1cm4gaW5pdF9jbG9jaygmY3MpOworfQorCisvKiBSdW4gbWUgYXQgYm9vdCB0aW1l ICovCitjb3JlX2luaXRjYWxsKGl4cDR4eF9jbG9ja3NvdXJjZV9pbml0KTsKKworCisjaWZkZWYg Q09ORklHX0RSSVZFUl9TRVJJQUxfTlMxNjU1MAorCisvKioKKyAqIEBicmllZiBVQVJUIHBvcnQg cmVnaXN0ZXIgcmVhZCBmdW5jdGlvbiBmb3IgSVhQNFhYCisgKgorICogQHBhcmFtIGJhc2UgYmFz ZSBhZGRyZXNzIG9mIFVBUlQKKyAqIEBwYXJhbSByZWdfaWR4IHJlZ2lzdGVyIGluZGV4CisgKgor ICogQHJldHVybiBjaGFyYWN0ZXIgcmVhZCBmcm9tIHJlZ2lzdGVyCisgKi8KK3Vuc2lnbmVkIGlu dCBpeHA0eHhfdWFydF9yZWFkKHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgY2hhciByZWdf aWR4KQoreworCXJldHVybiByZWFkYig0ICogcmVnX2lkeCArIDMgLyogYmlnLWVuZGlhbiAqLyAr ICh1aW50OF90ICopYmFzZSk7Cit9CitFWFBPUlRfU1lNQk9MKGl4cDR4eF91YXJ0X3JlYWQpOwor CisvKioKKyAqIEBicmllZiBVQVJUIHBvcnQgcmVnaXN0ZXIgd3JpdGUgZnVuY3Rpb24gZm9yIElY UDRYWAorICoKKyAqIEBwYXJhbSB2YWwgdmFsdWUgdG8gd3JpdGUKKyAqIEBwYXJhbSBiYXNlIGJh c2UgYWRkcmVzcyBvZiBVQVJUCisgKiBAcGFyYW0gcmVnX2lkeCByZWdpc3RlciBpbmRleAorICoK KyAqIEByZXR1cm4gdm9pZAorICovCit2b2lkIGl4cDR4eF91YXJ0X3dyaXRlKHVuc2lnbmVkIGlu dCB2YWwsIHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgY2hhciByZWdfaWR4KQoreworCXdy aXRlYih2YWwsIDQgKiByZWdfaWR4ICsgMyAvKiBiaWctZW5kaWFuICovICsgKHVpbnQ4X3QgKili YXNlKTsKK30KK0VYUE9SVF9TWU1CT0woaXhwNHh4X3VhcnRfd3JpdGUpOworCisKK3N0YXRpYyBz dHJ1Y3QgTlMxNjU1MF9wbGF0IHNlcmlhbF9wbGF0ID0geworCS5jbG9jayA9IDE0NzQ1NjAwLAor CS5mX2NhcHMgPSBDT05TT0xFX1NURElOIHwgQ09OU09MRV9TVERPVVQgfCBDT05TT0xFX1NUREVS UiwKKwkucmVnX3JlYWQgPSBpeHA0eHhfdWFydF9yZWFkLAorCS5yZWdfd3JpdGUgPSBpeHA0eHhf dWFydF93cml0ZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2QgaXhwNHh4X3NlcmlhbF9k ZXZpY2UgPSB7CisJLm5hbWUgPSAic2VyaWFsX25zMTY1NTAiLAorCS5tYXBfYmFzZSA9ICh1MzIp SVhQNFhYX1VBUlQxX0JBU0UsCisJLnNpemUgPSAxMDI0LAorCS5wbGF0Zm9ybV9kYXRhID0gKHZv aWQgKikmc2VyaWFsX3BsYXQsCit9OworCisvKioKKyAqIEBicmllZiBVQVJUIHNlcmlhbCBwb3J0 IGluaXRpYWxpemF0aW9uCisgKgorICogQHJldHVybiByZXN1bHQgb2YgZGV2aWNlIHJlZ2lzdHJh dGlvbgorICovCitzdGF0aWMgaW50IGl4cDR4eF9jb25zb2xlX2luaXQodm9pZCkKK3sKKwkvKiBS ZWdpc3RlciB0aGUgc2VyaWFsIHBvcnQgKi8KKwlyZXR1cm4gcmVnaXN0ZXJfZGV2aWNlKCZpeHA0 eHhfc2VyaWFsX2RldmljZSk7Cit9CisKK2NvbnNvbGVfaW5pdGNhbGwoaXhwNHh4X2NvbnNvbGVf aW5pdCk7CisKKyNlbmRpZiAvKiBDT05GSUdfRFJJVkVSX1NFUklBTF9OUzE2NTUwICovCmRpZmYg LS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvY3B1LmggYi9hcmNoL2Fy bS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uM2RlMDIxZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhw NHh4L2luY2x1ZGUvbWFjaC9jcHUuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogYXJjaC9hcm0v bWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2NwdS5oCisgKgorICogSVhQNFhYIGNwdSB0eXBlIGRl dGVjdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBNb250YVZpc3RhIFNvZnR3YXJlLCBJ bmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNI X0NQVV9IX18KKyNkZWZpbmUgX19BU01fQVJDSF9DUFVfSF9fCisKKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorCisvKiBQcm9jZXNzb3IgaWQgdmFsdWUgaW4gQ1AxNSBSZWdpc3RlciAwICovCisj ZGVmaW5lIElYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUgMHg2OTA1NDFjMCAvKiBpbmNsdWRpbmcg dW51c2VkIDB4NjkwNTQxRXggKi8KKyNkZWZpbmUgSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLICAw eGZmZmZmZmMwCisKKyNkZWZpbmUgSVhQNDNYX1BST0NFU1NPUl9JRF9WQUxVRSAweDY5MDU0MDQw CisjZGVmaW5lIElYUDQzWF9QUk9DRVNTT1JfSURfTUFTSyAgMHhmZmZmZmZmMAorCisjZGVmaW5l IElYUDQ2WF9QUk9DRVNTT1JfSURfVkFMVUUgMHg2OTA1NDIwMCAvKiBpbmNsdWRpbmcgSVhQNDU1 ICovCisjZGVmaW5lIElYUDQ2WF9QUk9DRVNTT1JfSURfTUFTSyAgMHhmZmZmZmZmMAorCisjZGVm aW5lIGNwdV9pc19peHA0MnhfcmV2X2EwKCkgKChyZWFkX2NwdWlkX2lkKCkgJiAoSVhQNDJYX1BS T0NFU1NPUl9JRF9NQVNLIHwgMHhGKSkgPT0gXAorCQkJCUlYUDQyWF9QUk9DRVNTT1JfSURfVkFM VUUpCisjZGVmaW5lIGNwdV9pc19peHA0MngoKSAoKHJlYWRfY3B1aWRfaWQoKSAmIElYUDQyWF9Q Uk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCisj ZGVmaW5lIGNwdV9pc19peHA0M3goKSAoKHJlYWRfY3B1aWRfaWQoKSAmIElYUDQzWF9QUk9DRVNT T1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQzWF9QUk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5l IGNwdV9pc19peHA0NngoKSAoKHJlYWRfY3B1aWRfaWQoKSAmIElYUDQ2WF9QUk9DRVNTT1JfSURf TUFTSykgPT0gXAorCQkJIElYUDQ2WF9QUk9DRVNTT1JfSURfVkFMVUUpCisKKy8qCisgKiBUaGUg Q1BVIElEIG5ldmVyIGNoYW5nZXMgYXQgcnVuIHRpbWUsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgdGVs bCB0aGUKKyAqIGNvbXBpbGVyIHRoYXQgaXQncyBjb25zdGFudC4gIFVzZSB0aGlzIGZ1bmN0aW9u IHRvIHJlYWQgdGhlIENQVSBJRAorICogcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmVhZGluZyBwcm9j ZXNzb3JfaWQgb3IgcmVhZF9jcHVpZCgpIGRpcmVjdGx5LgorICovCitzdGF0aWMgaW5saW5lIHUz MiBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRfY3B1aWRfaWQodm9pZCkKK3sKKwl1MzIgdmFsOwor CWFzbSgibXJjIHAxNSwgMCwgJTAsIGMwLCBjMCwgMCIgOiAiPXIiICh2YWwpIDogOiAiY2MiKTsK KworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGl4cDR4eF9yZWFkX2ZlYXR1 cmVfYml0cyh2b2lkKQoreworCXUzMiB2YWwgPSB+SVhQNFhYX0VYUF9DRkcyOworCisJaWYgKGNw dV9pc19peHA0MnhfcmV2X2EwKCkpCisJCXJldHVybiBJWFA0MlhfRkVBVFVSRV9NQVNLICYgfihJ WFA0WFhfRkVBVFVSRV9SQ09NUCB8CisJCQkJCSAgICAgICBJWFA0WFhfRkVBVFVSRV9BRVMpOwor CWlmIChjcHVfaXNfaXhwNDJ4KCkpCisJCXJldHVybiB2YWwgJiBJWFA0MlhfRkVBVFVSRV9NQVNL OworCWlmIChjcHVfaXNfaXhwNDN4KCkpCisJCXJldHVybiB2YWwgJiBJWFA0M1hfRkVBVFVSRV9N QVNLOworCXJldHVybiB2YWwgJiBJWFA0NlhfRkVBVFVSRV9NQVNLOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgaXhwNHh4X3dyaXRlX2ZlYXR1cmVfYml0cyh1MzIgdmFsdWUpCit7CisJSVhQNFhY X0VYUF9DRkcyID0gfnZhbHVlOworfQorCisjZW5kaWYgIC8qIF9BU01fQVJDSF9DUFVfSCAqLwpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2l4cDR4eC1yZWdz LmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LXJlZ3MuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTRkYzhhCi0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2l4cDR4eC1yZWdzLmgKQEAgLTAs MCArMSwzNjUgQEAKKy8qCisgKiBSZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgSVhQNHh4IGNoaXBz ZXQuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnBvcmF0aW9uLgorICogQ29w eXJpZ2h0IChDKSAyMDAzLTIwMDQgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX0FTTV9BUk1fSVhQNFhYX0hfCisjZGVm aW5lIF9BU01fQVJNX0lYUDRYWF9IXworCisjaWZkZWYgX19BU1NFTUJMRVJfXworI2RlZmluZSBJ WFA0WFhfUkVHKHJlZykgIChyZWcpCisjZWxzZQorI2RlZmluZSBJWFA0WFhfUkVHKHJlZykgICgq KHZvbGF0aWxlIHUzMiAqKShyZWcpKQorI2RlZmluZSBJWFA0WFhfQkFTRShyZWcpICgodTMyKiko cmVnKSkKKyNlbmRpZgorCisvKiBFeHBhbnNpb24gQnVzIHJlZ2lvbiAqLworCisvKiBRdWV1ZSBN YW5hZ2VyICovCisjZGVmaW5lIElYUDRYWF9RTUdSX0JBU0UgICAgICAgICAgICAgICgweDYwMDAw MDAwKQorI2RlZmluZSBJWFA0WFhfUU1HUl9SRUdJT05fU0laRSAgICAgICAoMHgwMDAwNDAwMCkK KworCisvKiBQQ0kgQ29uZmlnIHJlZ2lzdGVycyAqLworI2RlZmluZSBJWFA0WFhfUENJX0NGR19C QVNFICAgICAgICAgICAoMHhDMDAwMDAwMCkKKyNkZWZpbmUgSVhQNFhYX1BDSV9DRkdfUkVHSU9O X1NJWkUgICAgKDB4MDAwMDEwMDApCisKKy8qIFBlcmlwaGVyYWwgc3BhY2UgKi8KKyNkZWZpbmUg SVhQNFhYX1BFUklQSEVSQUxfQkFTRSAgICAgICAgKDB4QzgwMDAwMDApCisjZGVmaW5lIElYUDRY WF9QRVJJUEhFUkFMX1JFR0lPTl9TSVpFICgweDAwMDEzMDAwKQorCisvKgorICogRGVidWcgVUFS VAorICoKKyAqIFRoaXMgaXMgYmFzaWNhbGx5IGEgcmVtYXAgb2YgVUFSVDEgaW50byBhIHJlZ2lv biB0aGF0IGlzIHNlY3Rpb24KKyAqIGFsaWduZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aXRo IHRoZSBsb3ctbGV2ZWwgZGVidWcgY29kZS4KKyAqLworI2RlZmluZSBJWFA0WFhfREVCVUdfVUFS VF9CQVNFICAgICAgICAoMHhDODAwMDAwMCkKKyNkZWZpbmUgSVhQNFhYX0RFQlVHX1VBUlRfUkVH SU9OX1NJWkUgKDB4MDAwMDEwMDApCisKKy8qIEV4cGFuc2lvbiBCdXMgQ29udHJvbGxlciByZWdp c3RlcnMuICovCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MwICAgICAgIElYUDRYWF9SRUcoMHhDNDAw MDAwMCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzEgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDA0 KQorI2RlZmluZSBJWFA0WFhfRVhQX0NTMiAgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMDgpCisj ZGVmaW5lIElYUDRYWF9FWFBfQ1MzICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAwQykKKyNkZWZp bmUgSVhQNFhYX0VYUF9DUzQgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDEwKQorI2RlZmluZSBJ WFA0WFhfRVhQX0NTNSAgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMTQpCisjZGVmaW5lIElYUDRY WF9FWFBfQ1M2ICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAxOCkKKyNkZWZpbmUgSVhQNFhYX0VY UF9DUzcgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDFDKQorCisjZGVmaW5lIElYUDRYWF9FWFBf QkFTRShuKSAgKDB4NTAwMDAwMDAgKyAobikgKiAxMDAwMDAwKQorCisjZGVmaW5lIElYUDRYWF9F WFBfRU4gICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSVhQNFhYX0VYUF9UMShuKSAgICAoMHgx MDAwMDAwMCAqIChuKSkgLyogdmFsaWQ6IDAgLSAzICovCisjZGVmaW5lIElYUDRYWF9FWFBfVDIo bikgICAgKDB4MDQwMDAwMDAgKiAobikpIC8qIHZhbGlkOiAwIC0gMyAqLworI2RlZmluZSBJWFA0 WFhfRVhQX1QzKG4pICAgICgweDAwNDAwMDAwICogKG4pKSAvKiB2YWxpZDogMCAtIDE1ICovCisj ZGVmaW5lIElYUDRYWF9FWFBfVDQobikgICAgKDB4MDAxMDAwMDAgKiAobikpIC8qIHZhbGlkOiAw IC0gMyAqLworI2RlZmluZSBJWFA0WFhfRVhQX1Q1KG4pICAgICgweDAwMDEwMDAwICogKG4pKSAv KiB2YWxpZDogMCAtIDE1ICovCisjZGVmaW5lIElYUDRYWF9FWFBfSU5URUwgICAgIDB4MDAwMDAw MDAKKyNkZWZpbmUgSVhQNFhYX0VYUF9NT1RPICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBJWFA0 WFhfRVhQX0hQSSAgICAgICAweDAwMDA4MDAwCisjZGVmaW5lIElYUDRYWF9FWFBfQklUUyhuKSAg KDB4MDAwMDA0MDAgKiAoKG4pIC0gOSkpIC8qIHZhbGlkOiA5IC0gMjQgKi8KKyNkZWZpbmUgSVhQ NFhYX0VYUF9CWVRFX1JEMTYgMHgwMDAwMDA0MAorI2RlZmluZSBJWFA0WFhfRVhQX0hSRFlfUE9M ICAweDAwMDAwMDIwCisjZGVmaW5lIElYUDRYWF9FWFBfTVVYX0VOICAgIDB4MDAwMDAwMTAKKyNk ZWZpbmUgSVhQNFhYX0VYUF9TUExUX0VOICAgMHgwMDAwMDAwOAorI2RlZmluZSBJWFA0WFhfRVhQ X1dSX0VOICAgICAweDAwMDAwMDAyCisjZGVmaW5lIElYUDRYWF9FWFBfQllURV9FTiAgIDB4MDAw MDAwMDEKKworI2RlZmluZSBJWFA0WFhfRVhQX0NGRzAgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAw MjApCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMSAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAyNCkK KyNkZWZpbmUgSVhQNFhYX0VYUF9DRkcyICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDI4KQorI2Rl ZmluZSBJWFA0WFhfRVhQX0NGRzMgICAgICBJWFA0WFhfUkVHKDB4QzQwMDAwMkMpCisKKworLyog UGVyaXBoZXJhbCBTcGFjZSBSZWdpc3RlciBSZWdpb24gQmFzZSBBZGRyZXNzZXMgKi8KKyNkZWZp bmUgSVhQNFhYX1VBUlQxX0JBU0UgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFT RSArIDB4MDAwMCkKKyNkZWZpbmUgSVhQNFhYX1VBUlQyX0JBU0UgICAgSVhQNFhYX0JBU0UoSVhQ NFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MTAwMCkKKyNkZWZpbmUgSVhQNFhYX1BNVV9CQVNFICAg ICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MjAwMCkKKyNkZWZpbmUg SVhQNFhYX0lOVENfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSAr IDB4MzAwMCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhY X1BFUklQSEVSQUxfQkFTRSArIDB4NDAwMCkKKyNkZWZpbmUgSVhQNFhYX05QRUFfQkFTRSAgICAg SVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4NjAwMCkKKyNkZWZpbmUgSVhQ NFhYX05QRUJfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4 NzAwMCkKKyNkZWZpbmUgSVhQNFhYX05QRUNfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BF UklQSEVSQUxfQkFTRSArIDB4ODAwMCkKKyNkZWZpbmUgSVhQNFhYX0V0aEJfQkFTRSAgICAgSVhQ NFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4OTAwMCkKKyNkZWZpbmUgSVhQNFhY X0V0aENfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4QTAw MCkKKyNkZWZpbmUgSVhQNFhYX1VTQl9CQVNFICAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQ SEVSQUxfQkFTRSArIDB4QjAwMCkKKy8qIElYUDQ2eCBvbmx5ICovCisjZGVmaW5lIElYUDRYWF9F dGhBX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEMwMDAp CisjZGVmaW5lIElYUDRYWF9FdGhCMV9CQVNFICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhF UkFMX0JBU0UgKyAweEQwMDApCisjZGVmaW5lIElYUDRYWF9FdGhCMl9CQVNFICAgIElYUDRYWF9C QVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEUwMDApCisjZGVmaW5lIElYUDRYWF9FdGhC M19CQVNFICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEYwMDApCisj ZGVmaW5lIElYUDRYWF9USU1FU1lOQ19CQVNFIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFM X0JBU0UgKyAweDEwMDAwKQorI2RlZmluZSBJWFA0WFhfSTJDX0JBU0UgICAgICBJWFA0WFhfQkFT RShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMTAwMCkKKyNkZWZpbmUgSVhQNFhYX1NTUF9C QVNFICAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MTIwMDApCisK Ky8qCisgIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8gYWNjZXNzIEludGVycnVwdCBDb250 cm9sbGVyIHJlZ2lzdGVycworICovCisjZGVmaW5lIElYUDRYWF9JQ1BSX09GRlNFVCAgIDB4MDAg LyogSW50ZXJydXB0IFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhfSUNNUl9PRkZTRVQgICAweDA0 IC8qIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgSVhQNFhYX0lDTFJfT0ZGU0VUICAgMHgw OCAvKiBJbnRlcnJ1cHQgSVJRL0ZJUSBTZWxlY3QgKi8KKyNkZWZpbmUgSVhQNFhYX0lDSVBfT0ZG U0VUICAgMHgwQyAvKiBJUlEgU3RhdHVzICovCisjZGVmaW5lIElYUDRYWF9JQ0ZQX09GRlNFVCAg IDB4MTAgLyogRklRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhfSUNIUl9PRkZTRVQgICAweDE0 IC8qIEludGVycnVwdCBQcmlvcml0eSAqLworI2RlZmluZSBJWFA0WFhfSUNJSF9PRkZTRVQgICAw eDE4IC8qIElSUSBIaWdoZXN0IFByaSBJbnQgKi8KKyNkZWZpbmUgSVhQNFhYX0lDRkhfT0ZGU0VU ICAgMHgxQyAvKiBGSVEgSGlnaGVzdCBQcmkgSW50ICovCisKKy8qIElYUDQ2NS1vbmx5ICovCisj ZGVmaW5lIElYUDRYWF9JQ1BSMl9PRkZTRVQgIDB4MjAgLyogSW50ZXJydXB0IFN0YXR1cyAyICov CisjZGVmaW5lIElYUDRYWF9JQ01SMl9PRkZTRVQgIDB4MjQgLyogSW50ZXJydXB0IEVuYWJsZSAy ICovCisjZGVmaW5lIElYUDRYWF9JQ0xSMl9PRkZTRVQgIDB4MjggLyogSW50ZXJydXB0IElSUS9G SVEgU2VsZWN0IDIgKi8KKyNkZWZpbmUgSVhQNFhYX0lDSVAyX09GRlNFVCAgMHgyQyAvKiBJUlEg U3RhdHVzICovCisjZGVmaW5lIElYUDRYWF9JQ0ZQMl9PRkZTRVQgIDB4MzAgLyogRklRIFN0YXR1 cyAqLworI2RlZmluZSBJWFA0WFhfSUNFRU5fT0ZGU0VUICAweDM0IC8qIEVycm9yIEhpZ2ggUHJp IEVuYWJsZSAqLworCisKKy8qIEludGVycnVwdCBDb250cm9sbGVyIFJlZ2lzdGVyIERlZmluaXRp b25zLiAqLworI2RlZmluZSBJWFA0WFhfSU5UQ19SRUcoeCkgICAoKHZvbGF0aWxlIHUzMiAqKShJ WFA0WFhfSU5UQ19CQVNFICsgKHgpKSkKKworI2RlZmluZSBJWFA0WFhfSUNQUiAgICAgICAgICBJ WFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNNUiAg ICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDTVJfT0ZGU0VUKQorI2RlZmluZSBJWFA0 WFhfSUNMUiAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDTFJfT0ZGU0VUKQorI2Rl ZmluZSBJWFA0WFhfSUNJUCAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSVBfT0ZG U0VUKQorI2RlZmluZSBJWFA0WFhfSUNGUCAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhY X0lDRlBfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNIUiAgICAgICAgICBJWFA0WFhfSU5UQ19S RUcoSVhQNFhYX0lDSFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNJSCAgICAgICAgICBJWFA0 WFhfSU5UQ19SRUcoSVhQNFhYX0lDSUhfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNGSCAgICAg ICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDRkhfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhf SUNQUjIgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFIyX09GRlNFVCkKKyNkZWZp bmUgSVhQNFhYX0lDTVIyICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ01SMl9PRkZT RVQpCisjZGVmaW5lIElYUDRYWF9JQ0xSMiAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhf SUNMUjJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNJUDIgICAgICAgICBJWFA0WFhfSU5UQ19S RUcoSVhQNFhYX0lDSVAyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDRlAyICAgICAgICAgSVhQ NFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZQMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0VFTiAg ICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNFRU5fT0ZGU0VUKQorCisvKiBDb25zdGFu dHMgdG8gbWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBHUElPIHJlZ2lzdGVycyAqLworI2RlZmluZSBJ WFA0WFhfR1BJT19HUE9VVFJfT0ZGU0VUICAgMHgwMAorI2RlZmluZSBJWFA0WFhfR1BJT19HUE9F Ul9PRkZTRVQgICAgMHgwNAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElOUl9PRkZTRVQgICAgMHgw OAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElTUl9PRkZTRVQgICAgMHgwQworI2RlZmluZSBJWFA0 WFhfR1BJT19HUElUMVJfT0ZGU0VUICAgMHgxMAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElUMlJf T0ZGU0VUICAgMHgxNAorI2RlZmluZSBJWFA0WFhfR1BJT19HUENMS1JfT0ZGU0VUICAgMHgxOAor I2RlZmluZSBJWFA0WFhfR1BJT19HUERCU0VMUl9PRkZTRVQgMHgxQworCisvKiBHUElPIFJlZ2lz dGVyIERlZmluaXRpb25zIC0gcGVyZm9ybSBvbmx5IDMyLWJpdCByZWFkcy93cml0ZXMgKi8KKyNk ZWZpbmUgSVhQNFhYX0dQSU9fUkVHKHgpICAgKCh2b2xhdGlsZSB1MzIgKikoSVhQNFhYX0dQSU9f QkFTRSArICh4KSkpCisKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPVVRSICAgSVhQNFhYX0dQSU9f UkVHKElYUDRYWF9HUElPX0dQT1VUUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT0VS ICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUE9FUl9PRkZTRVQpCisjZGVmaW5lIElY UDRYWF9HUElPX0dQSU5SICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElOUl9PRkZT RVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVNSICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhf R1BJT19HUElTUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQxUiAgIElYUDRYWF9H UElPX1JFRyhJWFA0WFhfR1BJT19HUElUMVJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19H UElUMlIgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BJVDJSX09GRlNFVCkKKyNkZWZp bmUgSVhQNFhYX0dQSU9fR1BDTEtSICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQQ0xL Ul9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQREJTRUxSIElYUDRYWF9HUElPX1JFRyhJ WFA0WFhfR1BJT19HUERCU0VMUl9PRkZTRVQpCisKKy8qIEdQSU8gcmVnaXN0ZXIgYml0IGRlZmlu aXRpb25zICovCisKKy8qIEludGVycnVwdCBzdHlsZXMgKi8KKyNkZWZpbmUgSVhQNFhYX0dQSU9f U1RZTEVfQUNUSVZFX0hJR0ggIDB4MAorI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9BQ1RJVkVf TE9XICAgMHgxCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX1JJU0lOR19FREdFICAweDIKKyNk ZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfRkFMTElOR19FREdFIDB4MworI2RlZmluZSBJWFA0WFhf R1BJT19TVFlMRV9UUkFOU0lUSU9OQUwgMHg0CisKKy8qIE1hc2sgdXNlZCB0byBjbGVhciBpbnRl cnJ1cHQgc3R5bGVzICovCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0NMRUFSICAgICAgICAw eDcKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfU0laRSAgICAgICAgIDMKKworLyogT3BlcmF0 aW5nIFN5c3RlbSBUaW1lciBSZWdpc3RlciBEZWZpbml0aW9ucy4gKi8KKyNkZWZpbmUgSVhQNFhY X09TVFMgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDAwKSAvKiBDb250aW5pb3VzIFRpbWVT dGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NUMSAgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUw MDQpIC8qIFRpbWVyIDEgVGltZXN0YW1wICovCisjZGVmaW5lIElYUDRYWF9PU1JUMSAgICAgICAg IElYUDRYWF9SRUcoMHhDODAwNTAwOCkgLyogVGltZXIgMSBSZWxvYWQgKi8KKyNkZWZpbmUgSVhQ NFhYX09TVDIgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDBDKSAvKiBUaW1lciAyIFRpbWVz dGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NSVDIgICAgICAgICBJWFA0WFhfUkVHKDB4QzgwMDUw MTApIC8qIFRpbWVyIDIgUmVsb2FkICovCisjZGVmaW5lIElYUDRYWF9PU1dUICAgICAgICAgIElY UDRYWF9SRUcoMHhDODAwNTAxNCkgLyogV2F0Y2hkb2cgVGltZXIgKi8KKyNkZWZpbmUgSVhQNFhY X09TV0UgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDE4KSAvKiBXYXRjaGRvZyBFbmFibGUg Ki8KKyNkZWZpbmUgSVhQNFhYX09TV0sgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDFDKSAv KiBXYXRjaGRvZyBLZXkgKi8KKyNkZWZpbmUgSVhQNFhYX09TU1QgICAgICAgICAgSVhQNFhYX1JF RygweEM4MDA1MDIwKSAvKiBUaW1lciBTdGF0dXMgKi8KKworLyogVGltZXIgcmVnaXN0ZXIgdmFs dWVzIGFuZCBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgSVhQNFhYX09TVF9FTkFCTEUgICAg ICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIElYUDRYWF9PU1RfT05FX1NIT1QgICAgICAgICAg MHgwMDAwMDAwMgorLyogTG93IG9yZGVyIGJpdHMgb2YgcmVsb2FkIHZhbHVlIGlnbm9yZWQgKi8K KyNkZWZpbmUgSVhQNFhYX09TVF9SRUxPQURfTUFTSyAgICAgICAweDAwMDAwMDAzCisjZGVmaW5l IElYUDRYWF9PU1RfRElTQUJMRUQgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBJWFA0WFhf T1NTVF9USU1FUl8xX1BFTkQgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgSVhQNFhYX09TU1RfVElN RVJfMl9QRU5EICAgICAweDAwMDAwMDAyCisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSX1RTX1BF TkQgICAgMHgwMDAwMDAwNAorI2RlZmluZSBJWFA0WFhfT1NTVF9USU1FUl9XRE9HX1BFTkQgIDB4 MDAwMDAwMDgKKyNkZWZpbmUgSVhQNFhYX09TU1RfVElNRVJfV0FSTV9SRVNFVCAweDAwMDAwMDEw CisKKyNkZWZpbmUgSVhQNFhYX1dEVF9LRVkgICAgICAgICAgICAgICAweDAwMDA0ODJFCisKKyNk ZWZpbmUgSVhQNFhYX1dEVF9SRVNFVF9FTkFCTEUgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIElY UDRYWF9XRFRfSVJRX0VOQUJMRSAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBJWFA0WFhfV0RU X0NPVU5UX0VOQUJMRSAgICAgIDB4MDAwMDAwMDQKKworCisvKiBDb25zdGFudHMgdG8gbWFrZSBp dCBlYXN5IHRvIGFjY2VzcyBQQ0kgQ29udHJvbC9TdGF0dXMgcmVnaXN0ZXJzICovCisjZGVmaW5l IFBDSV9OUF9BRF9PRkZTRVQgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgUENJX05QX0NCRV9PRkZT RVQgICAgICAgICAgMHgwNAorI2RlZmluZSBQQ0lfTlBfV0RBVEFfT0ZGU0VUICAgICAgICAweDA4 CisjZGVmaW5lIFBDSV9OUF9SREFUQV9PRkZTRVQgICAgICAgIDB4MGMKKyNkZWZpbmUgUENJX0NS UF9BRF9DQkVfT0ZGU0VUICAgICAgMHgxMAorI2RlZmluZSBQQ0lfQ1JQX1dEQVRBX09GRlNFVCAg ICAgICAweDE0CisjZGVmaW5lIFBDSV9DUlBfUkRBVEFfT0ZGU0VUICAgICAgIDB4MTgKKyNkZWZp bmUgUENJX0NTUl9PRkZTRVQgICAgICAgICAgICAgMHgxYworI2RlZmluZSBQQ0lfSVNSX09GRlNF VCAgICAgICAgICAgICAweDIwCisjZGVmaW5lIFBDSV9JTlRFTl9PRkZTRVQgICAgICAgICAgIDB4 MjQKKyNkZWZpbmUgUENJX0RNQUNUUkxfT0ZGU0VUICAgICAgICAgMHgyOAorI2RlZmluZSBQQ0lf QUhCTUVNQkFTRV9PRkZTRVQgICAgICAweDJjCisjZGVmaW5lIFBDSV9BSEJJT0JBU0VfT0ZGU0VU ICAgICAgIDB4MzAKKyNkZWZpbmUgUENJX1BDSU1FTUJBU0VfT0ZGU0VUICAgICAgMHgzNAorI2Rl ZmluZSBQQ0lfQUhCRE9PUkJFTExfT0ZGU0VUICAgICAweDM4CisjZGVmaW5lIFBDSV9QQ0lET09S QkVMTF9PRkZTRVQgICAgIDB4M0MKKyNkZWZpbmUgUENJX0FUUERNQTBfQUhCQUREUl9PRkZTRVQg MHg0MAorI2RlZmluZSBQQ0lfQVRQRE1BMF9QQ0lBRERSX09GRlNFVCAweDQ0CisjZGVmaW5lIFBD SV9BVFBETUEwX0xFTkFERFJfT0ZGU0VUIDB4NDgKKyNkZWZpbmUgUENJX0FUUERNQTFfQUhCQURE Ul9PRkZTRVQgMHg0QworI2RlZmluZSBQQ0lfQVRQRE1BMV9QQ0lBRERSX09GRlNFVCAweDUwCisj ZGVmaW5lIFBDSV9BVFBETUExX0xFTkFERFJfT0ZGU0VUIDB4NTQKKworLyogUENJIENvbnRyb2wv U3RhdHVzIFJlZ2lzdGVycyAqLworI2RlZmluZSBJWFA0WFhfUENJX0NTUih4KSAoKHZvbGF0aWxl IHUzMiAqKShJWFA0WFhfUENJX0NGR19CQVNFICsgKHgpKSkKKworI2RlZmluZSBQQ0lfTlBfQUQg ICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfQURfT0ZGU0VUKQorI2RlZmluZSBQQ0lf TlBfQ0JFICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfQ0JFX09GRlNFVCkKKyNkZWZp bmUgUENJX05QX1dEQVRBICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX1dEQVRBX09GRlNF VCkKKyNkZWZpbmUgUENJX05QX1JEQVRBICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX1JE QVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9BRF9DQkUgICAgICAgSVhQNFhYX1BDSV9DU1Io UENJX0NSUF9BRF9DQkVfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQ1JQX1dEQVRBICAgICAgICBJWFA0 WFhfUENJX0NTUihQQ0lfQ1JQX1dEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9SREFUQSAg ICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9SREFUQV9PRkZTRVQpCisjZGVmaW5lIFBDSV9D U1IgICAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9DU1JfT0ZGU0VUKQorI2RlZmluZSBQ Q0lfSVNSICAgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfSVNSX09GRlNFVCkKKyNkZWZp bmUgUENJX0lOVEVOICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0lOVEVOX09GRlNFVCkK KyNkZWZpbmUgUENJX0RNQUNUUkwgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0RNQUNUUkxf T0ZGU0VUKQorI2RlZmluZSBQQ0lfQUhCTUVNQkFTRSAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lf QUhCTUVNQkFTRV9PRkZTRVQpCisjZGVmaW5lIFBDSV9BSEJJT0JBU0UgICAgICAgIElYUDRYWF9Q Q0lfQ1NSKFBDSV9BSEJJT0JBU0VfT0ZGU0VUKQorI2RlZmluZSBQQ0lfUENJTUVNQkFTRSAgICAg ICBJWFA0WFhfUENJX0NTUihQQ0lfUENJTUVNQkFTRV9PRkZTRVQpCisjZGVmaW5lIFBDSV9BSEJE T09SQkVMTCAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BSEJET09SQkVMTF9PRkZTRVQpCisjZGVm aW5lIFBDSV9QQ0lET09SQkVMTCAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9QQ0lET09SQkVMTF9P RkZTRVQpCisjZGVmaW5lIFBDSV9BVFBETUEwX0FIQkFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9B VFBETUEwX0FIQkFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMF9QQ0lBRERSICBJWFA0 WFhfUENJX0NTUihQQ0lfQVRQRE1BMF9QQ0lBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERN QTBfTEVOQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTBfTEVOQUREUl9PRkZTRVQpCisj ZGVmaW5lIFBDSV9BVFBETUExX0FIQkFERFIgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUExX0FI QkFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMV9QQ0lBRERSICBJWFA0WFhfUENJX0NT UihQQ0lfQVRQRE1BMV9QQ0lBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTFfTEVOQURE UiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfTEVOQUREUl9PRkZTRVQpCisKKy8qIFBDSSBy ZWdpc3RlciB2YWx1ZXMgYW5kIGJpdCBkZWZpbml0aW9ucyAqLworCisvKiBDU1IgYml0IGRlZmlu aXRpb25zICovCisjZGVmaW5lIFBDSV9DU1JfSE9TVCAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZp bmUgUENJX0NTUl9BUkJFTiAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBQQ0lfQ1NSX0FEUyAg ICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBDSV9DU1JfUERTICAgICAgICAgIDB4MDAwMDAw MDgKKyNkZWZpbmUgUENJX0NTUl9BQkUgICAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBQQ0lf Q1NSX0RCVCAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIFBDSV9DU1JfQVNFICAgICAgICAg IDB4MDAwMDAxMDAKKyNkZWZpbmUgUENJX0NTUl9JQyAgICAgICAgICAgMHgwMDAwODAwMAorCisv KiBJU1IgKEludGVycnVwdCBzdGF0dXMpIFJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLworI2Rl ZmluZSBQQ0lfSVNSX1BTRSAgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBDSV9JU1JfUEZF ICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUENJX0lTUl9QUEUgICAgICAgICAgMHgwMDAw MDAwNAorI2RlZmluZSBQQ0lfSVNSX0FIQkUgICAgICAgICAweDAwMDAwMDA4CisjZGVmaW5lIFBD SV9JU1JfQVBEQyAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUENJX0lTUl9QQURDICAgICAg ICAgMHgwMDAwMDAyMAorI2RlZmluZSBQQ0lfSVNSX0FEQiAgICAgICAgICAweDAwMDAwMDQwCisj ZGVmaW5lIFBDSV9JU1JfUERCICAgICAgICAgIDB4MDAwMDAwODAKKworLyogSU5URU4gKEludGVy cnVwdCBFbmFibGUpIFJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBQQ0lfSU5U RU5fUFNFICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBDSV9JTlRFTl9QRkUgICAgICAgIDB4 MDAwMDAwMDIKKyNkZWZpbmUgUENJX0lOVEVOX1BQRSAgICAgICAgMHgwMDAwMDAwNAorI2RlZmlu ZSBQQ0lfSU5URU5fQUhCRSAgICAgICAweDAwMDAwMDA4CisjZGVmaW5lIFBDSV9JTlRFTl9BUERD ICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUENJX0lOVEVOX1BBREMgICAgICAgMHgwMDAwMDAy MAorI2RlZmluZSBQQ0lfSU5URU5fQURCICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFBDSV9J TlRFTl9QREIgICAgICAgIDB4MDAwMDAwODAKKworLyogU2hpZnQgdmFsdWUgZm9yIGJ5dGUgZW5h YmxlIG9uIE5QIGNtZC9ieXRlIGVuYWJsZSByZWdpc3RlciAqLworI2RlZmluZSBJWFA0WFhfUENJ X05QX0NCRV9CRVNMIDQKKworLyogUENJIGNvbW1hbmRzIHN1cHBvcnRlZCBieSBOUCBhY2Nlc3Mg dW5pdCAqLworI2RlZmluZSBOUF9DTURfSU9SRUFEICAgICAgICAweDIKKyNkZWZpbmUgTlBfQ01E X0lPV1JJVEUgICAgICAgMHgzCisjZGVmaW5lIE5QX0NNRF9DT05GSUdSRUFEICAgIDB4QQorI2Rl ZmluZSBOUF9DTURfQ09ORklHV1JJVEUgICAweEIKKyNkZWZpbmUgTlBfQ01EX01FTVJFQUQgICAg ICAgMHg2CisjZGVmaW5lIE5QX0NNRF9NRU1XUklURSAgICAgIDB4NworCisvKiBDb25zdGFudHMg Zm9yIENSUCBhY2Nlc3MgaW50byBsb2NhbCBjb25maWcgc3BhY2UgKi8KKyNkZWZpbmUgQ1JQX0FE X0NCRV9CRVNMICAgICAgMjAKKyNkZWZpbmUgQ1JQX0FEX0NCRV9XUklURSAgICAgMHgwMDAxMDAw MAorCisvKiBVU0IgRGV2aWNlIENvbnRyb2xsZXIgKi8KKyMgZGVmaW5lIElYUDRYWF9VU0JfUkVH KHgpICAgKCooKHZvbGF0aWxlIHUzMiAqKSh4KSkpCisKKy8qIFNEUkFNIENvbnRyb2xsZXIgcmVn aXN0ZXJzLiAqLworI2RlZmluZSBJWFA0WFhfU0RSQU1fQ09ORklHICBJWFA0WFhfUkVHKDB4Q0Mw MDAwMDApCisjZGVmaW5lIElYUDRYWF9TRFJBTV9SRUZSRVNIIElYUDRYWF9SRUcoMHhDQzAwMDAw NCkKKyNkZWZpbmUgSVhQNFhYX1NEUkFNX0lSICAgICAgSVhQNFhYX1JFRygweENDMDAwMDA4KQor CisvKiAiZnVzZSIgYml0cyBvZiBJWFBfRVhQX0NGRzIgKi8KKy8qIEFsbCBJWFA0eHggQ1BVcyAq LworI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9SQ09NUCAgICAgICAgICAgICgxIDw8IDApCisjZGVm aW5lIElYUDRYWF9GRUFUVVJFX1VTQl9ERVZJQ0UgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgSVhQ NFhYX0ZFQVRVUkVfSEFTSCAgICAgICAgICAgICAoMSA8PCAyKQorI2RlZmluZSBJWFA0WFhfRkVB VFVSRV9BRVMgICAgICAgICAgICAgICgxIDw8IDMpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0RF UyAgICAgICAgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfSERMQyAgICAg ICAgICAgICAoMSA8PCA1KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9BQUwgICAgICAgICAgICAg ICgxIDw8IDYpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0hTUyAgICAgICAgICAgICAgKDEgPDwg NykKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfVVRPUElBICAgICAgICAgICAoMSA8PCA4KQorI2Rl ZmluZSBJWFA0WFhfRkVBVFVSRV9OUEVCX0VUSDAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIElY UDRYWF9GRUFUVVJFX05QRUNfRVRIICAgICAgICAgKDEgPDwgMTApCisjZGVmaW5lIElYUDRYWF9G RUFUVVJFX1JFU0VUX05QRUEgICAgICAgKDEgPDwgMTEpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJF X1JFU0VUX05QRUIgICAgICAgKDEgPDwgMTIpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1JFU0VU X05QRUMgICAgICAgKDEgPDwgMTMpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1BDSSAgICAgICAg ICAgICAgKDEgPDwgMTQpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VUT1BJQV9QSFlfTElNSVQg KDMgPDwgMTYpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1hTQ0FMRV9NQVhfRlJFUSAgKDMgPDwg MjIpCisjZGVmaW5lIElYUDQyWF9GRUFUVVJFX01BU0sgKElYUDRYWF9GRUFUVVJFX1JDT01QICAg ICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1VTQl9ERVZJQ0UgICAgICAgfCBc CisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0hBU0ggICAgICAgICAgICAgfCBcCisJCQkgICAgIElY UDRYWF9GRUFUVVJFX0FFUyAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJF X0RFUyAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0hETEMgICAgICAg ICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0FBTCAgICAgICAgICAgICAgfCBcCisJ CQkgICAgIElYUDRYWF9GRUFUVVJFX0hTUyAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRY WF9GRUFUVVJFX1VUT1BJQSAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX05Q RUJfRVRIMCAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX05QRUNfRVRIICAgICAg ICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgICAgICAgfCBcCisJCQkg ICAgIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUIgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9G RUFUVVJFX1JFU0VUX05QRUMgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1BDSSAg ICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1VUT1BJQV9QSFlfTElNSVQg fCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1hTQ0FMRV9NQVhfRlJFUSkKKworLyogSVhQNDN4 LzQ2eCBDUFVzICovCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0VDQ19USU1FU1lOQyAgICAgKDEg PDwgMTUpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VTQl9IT1NUICAgICAgICAgKDEgPDwgMTgp CisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUFfRVRIICAgICAgICAgKDEgPDwgMTkpCisjZGVm aW5lIElYUDQzWF9GRUFUVVJFX01BU0sgKElYUDQyWF9GRUFUVVJFX01BU0sgICAgICAgICAgICAg fCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0VDQ19USU1FU1lOQyAgICAgfCBcCisJCQkgICAg IElYUDRYWF9GRUFUVVJFX1VTQl9IT1NUICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFU VVJFX05QRUFfRVRIKQorCisvKiBJWFA0NnggQ1BVIChpbmNsdWRpbmcgSVhQNDU1KSBvbmx5ICov CisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIXzFfVE9fMyAgKDEgPDwgMjApCisjZGVm aW5lIElYUDRYWF9GRUFUVVJFX1JTQSAgICAgICAgICAgICAgKDEgPDwgMjEpCisjZGVmaW5lIElY UDQ2WF9GRUFUVVJFX01BU0sgKElYUDQzWF9GRUFUVVJFX01BU0sgICAgICAgICAgICAgfCBcCisJ CQkgICAgIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIXzFfVE9fMyAgfCBcCisJCQkgICAgIElYUDRY WF9GRUFUVVJFX1JTQSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4 eC9pbmNsdWRlL21hY2gvbnBlLmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gv bnBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiZDAxYgotLS0gL2Rl di9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9ucGUuaApAQCAt MCwwICsxLDMwIEBACisjaWZuZGVmIF9fSVhQNFhYX05QRV9ICisjZGVmaW5lIF9fSVhQNFhYX05Q RV9ICisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2RlZmluZSBOUEVfTkFNRV9MRU5HVEggNQor CitzdHJ1Y3QgbnBlX3JlZ3MgeworCXUzMiBleGVjX2FkZHIsIGV4ZWNfZGF0YSwgZXhlY19zdGF0 dXNfY21kLCBleGVjX2NvdW50OworCXUzMiBhY3Rpb25fcG9pbnRzWzRdOworCXUzMiB3YXRjaHBv aW50X2ZpZm8sIHdhdGNoX2NvdW50OworCXUzMiBwcm9maWxlX2NvdW50OworCXUzMiBtZXNzYWdp bmdfc3RhdHVzLCBtZXNzYWdpbmdfY29udHJvbDsKKwl1MzIgbWFpbGJveF9zdGF0dXMsIC8qbWVz c2FnaW5nXyovIGluX291dF9maWZvOworfTsKKworc3RydWN0IG5wZSB7CisJc3RydWN0IG5wZV9y ZWdzICpyZWdzOworCWludCBpZCwgdmFsaWQ7CisJY29uc3QgY2hhciBuYW1lW05QRV9OQU1FX0xF TkdUSCArIDFdOworfTsKKworaW50IG5wZV9ydW5uaW5nKHN0cnVjdCBucGUgKm5wZSk7CitpbnQg bnBlX3NlbmRfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIGNvbnN0IHZvaWQgKm1zZywgY29uc3Qg Y2hhciAqd2hhdCk7CitpbnQgbnBlX3JlY3ZfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIHZvaWQg Km1zZywgY29uc3QgY2hhciAqd2hhdCk7CitpbnQgbnBlX3NlbmRfcmVjdl9tZXNzYWdlKHN0cnVj dCBucGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3aGF0KTsKK2ludCBucGVfbG9hZF9m aXJtd2FyZShzdHJ1Y3QgbnBlICpucGUpOworc3RydWN0IG5wZSAqbnBlX3JlcXVlc3QoaW50IGlk KTsKKworI2VuZGlmIC8qIF9fSVhQNFhYX05QRV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9t YWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaCBiL2FyY2gvYXJtL21hY2gtaXhwNHh4 L2luY2x1ZGUvbWFjaC9wbGF0Zm9ybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFkZjRhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNs dWRlL21hY2gvcGxhdGZvcm0uaApAQCAtMCwwICsxLDE1IEBACisjaW5jbHVkZSA8YXNtL3R5cGVz Lmg+CisKKyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVBIDB4MDAKKyNkZWZpbmUgSVhQNFhYX0VUSF9O UEVCIDB4MTAKKyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVDIDB4MjAKKworLyogSW5mb3JtYXRpb24g YWJvdXQgYnVpbHQtaW4gRXRoZXJuZXQgTUFDIGludGVyZmFjZXMgKi8KK3N0cnVjdCBldGhfcGxh dF9pbmZvIHsKKwl2b2lkICpyZWdzOworCXU4IG5wZTsKKwl1OCBwaHk7IC8qIE1JSSBQSFkgSUQs IDAgLSAzMSAqLworCXU4IHJ4cTsgLyogY29uZmlndXJhYmxlLCBjdXJyZW50bHkgMCAtIDMxIG9u bHkgKi8KKwl1OCB0eHJlYWR5cTsKKwl1OCBod2FkZHJbNl07Cit9OwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3FtZ3IuaCBiL2FyY2gvYXJtL21hY2gtaXhw NHh4L2luY2x1ZGUvbWFjaC9xbWdyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNGU5YjhkNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1 ZGUvbWFjaC9xbWdyLmgKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw MDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICovCisKKyNpZm5kZWYgSVhQNFhYX1FNR1JfSAorI2RlZmluZSBJWFA0WFhfUU1HUl9I CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+Cisj aW5jbHVkZSA8YXNtL2lvLmg+CisKKyNkZWZpbmUgREVCVUdfUU1HUiAgICAgICAwCisKKyNkZWZp bmUgSEFMRl9RVUVVRVMgICAgIDMyCisjZGVmaW5lIFFVRVVFUyAgICAgICAgICA2NAorI2RlZmlu ZSBNQVhfUVVFVUVfTEVOR1RIIDQgLyogaW4gZHdvcmRzICovCisKKyNkZWZpbmUgUVVFVUVfU1RB VDFfRU1QVFkgICAgICAgICAgICAgICAxIC8qIHF1ZXVlIHN0YXR1cyBiaXRzICovCisjZGVmaW5l IFFVRVVFX1NUQVQxX05FQVJMWV9FTVBUWSAgICAgICAgMgorI2RlZmluZSBRVUVVRV9TVEFUMV9O RUFSTFlfRlVMTCAgICAgICAgIDQKKyNkZWZpbmUgUVVFVUVfU1RBVDFfRlVMTCAgICAgICAgICAg ICAgICA4CisjZGVmaW5lIFFVRVVFX1NUQVQyX1VOREVSRkxPVyAgICAgICAgICAgMQorI2RlZmlu ZSBRVUVVRV9TVEFUMl9PVkVSRkxPVyAgICAgICAgICAgIDIKKworI2RlZmluZSBRVUVVRV9XQVRF Uk1BUktfMF9FTlRSSUVTICAgICAgIDAKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzFfRU5UUlkg ICAgICAgICAxCisjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18yX0VOVFJJRVMgICAgICAgMgorI2Rl ZmluZSBRVUVVRV9XQVRFUk1BUktfNF9FTlRSSUVTICAgICAgIDMKKyNkZWZpbmUgUVVFVUVfV0FU RVJNQVJLXzhfRU5UUklFUyAgICAgICA0CisjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18xNl9FTlRS SUVTICAgICAgNQorI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMzJfRU5UUklFUyAgICAgIDYKKyNk ZWZpbmUgUVVFVUVfV0FURVJNQVJLXzY0X0VOVFJJRVMgICAgICA3CisKKy8qIHF1ZXVlIGludGVy cnVwdCByZXF1ZXN0IGNvbmRpdGlvbnMgKi8KKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19FTVBUWSAg ICAgICAgICAgICAwCisjZGVmaW5lIFFVRVVFX0lSUV9TUkNfTkVBUkxZX0VNUFRZICAgICAgMQor I2RlZmluZSBRVUVVRV9JUlFfU1JDX05FQVJMWV9GVUxMICAgICAgIDIKKyNkZWZpbmUgUVVFVUVf SVJRX1NSQ19GVUxMICAgICAgICAgICAgICAzCisjZGVmaW5lIFFVRVVFX0lSUV9TUkNfTk9UX0VN UFRZICAgICAgICAgNAorI2RlZmluZSBRVUVVRV9JUlFfU1JDX05PVF9ORUFSTFlfRU1QVFkgIDUK KyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfTkVBUkxZX0ZVTEwgICA2CisjZGVmaW5lIFFVRVVF X0lSUV9TUkNfTk9UX0ZVTEwgICAgICAgICAgNworCitzdHJ1Y3QgcW1ncl9yZWdzIHsKKwl1MzIg YWNjW1FVRVVFU11bTUFYX1FVRVVFX0xFTkdUSF07IC8qIDB4MDAwIC0gMHgzRkYgKi8KKwl1MzIg c3RhdDFbNF07ICAgICAgICAgLyogMHg0MDAgLSAweDQwRiAqLworCXUzMiBzdGF0MlsyXTsgICAg ICAgICAvKiAweDQxMCAtIDB4NDE3ICovCisJdTMyIHN0YXRuZV9oOyAgICAgICAgIC8qIDB4NDE4 IC0gcXVldWUgbmVhcmx5IGVtcHR5ICovCisJdTMyIHN0YXRmX2g7ICAgICAgICAgIC8qIDB4NDFD IC0gcXVldWUgZnVsbCAqLworCXUzMiBpcnFzcmNbNF07ICAgICAgICAvKiAweDQyMCAtIDB4NDJG IElSQyBzb3VyY2UgKi8KKwl1MzIgaXJxZW5bMl07ICAgICAgICAgLyogMHg0MzAgLSAweDQzNyBJ UlEgZW5hYmxlZCAqLworCXUzMiBpcnFzdGF0WzJdOyAgICAgICAvKiAweDQzOCAtIDB4NDNGIC0g SVJRIGFjY2VzcyBvbmx5ICovCisJdTMyIHJlc2VydmVkWzE3NzZdOworCXUzMiBzcmFtWzIwNDhd OyAgICAgICAvKiAweDIwMDAgLSAweDNGRkYgLSBjb25maWcgYW5kIGJ1ZmZlciAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBxbWdyX3JlZ3MgKnFtZ3JfcmVncyA9IChzdHJ1Y3QgcW1ncl9y ZWdzICopSVhQNFhYX1FNR1JfQkFTRTsKKwordm9pZCBxbWdyX3NldF9pcnEodW5zaWduZWQgaW50 IHF1ZXVlLCBpbnQgc3JjLAorCQkgIHZvaWQgKCpoYW5kbGVyKSh2b2lkICpwZGV2KSwgdm9pZCAq cGRldik7Cit2b2lkIHFtZ3JfZW5hYmxlX2lycSh1bnNpZ25lZCBpbnQgcXVldWUpOwordm9pZCBx bWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSk7CisKKy8qIHJlcXVlc3RfIGFuZCBy ZWxlYXNlX3F1ZXVlKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBub24tSVJRIGNvbnRleHQgKi8KKwor I2lmIERFQlVHX1FNR1IKK2V4dGVybiBjaGFyIHFtZ3JfcXVldWVfZGVzY3NbSEFMRl9RVUVVRVNd WzMyXTsKKwordm9pZCBxbWdyX3JlcXVlc3RfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlLCB1bnNp Z25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJCXVuc2lnbmVkIGludCBuZWFybHlfZW1wdHlf d2F0ZXJtYXJrLAorCQkJdW5zaWduZWQgaW50IG5lYXJseV9mdWxsX3dhdGVybWFyaywKKwkJCWNv bnN0IGNoYXIgKmRlc2NfZm9ybWF0LCBjb25zdCBjaGFyKiBuYW1lKTsKKyNlbHNlCit2b2lkIF9f cW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAv KiBkd29yZHMgKi8sCisJCQkgIHVuc2lnbmVkIGludCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLAor CQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKTsKKyNkZWZpbmUgcW1ncl9y ZXF1ZXN0X3F1ZXVlKHF1ZXVlLCBsZW4sIG5lYXJseV9lbXB0eV93YXRlcm1hcmssICAgICAgIFwK KwkJCSAgIG5lYXJseV9mdWxsX3dhdGVybWFyaywgZGVzY19mb3JtYXQsIG5hbWUpIFwKKwlfX3Ft Z3JfcmVxdWVzdF9xdWV1ZShxdWV1ZSwgbGVuLCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLCAgICAg XAorCQkJICAgICBuZWFybHlfZnVsbF93YXRlcm1hcmspCisjZW5kaWYKKwordm9pZCBxbWdyX3Jl bGVhc2VfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlKTsKKworCitzdGF0aWMgaW5saW5lIHZvaWQg cW1ncl9wdXRfZW50cnkodW5zaWduZWQgaW50IHF1ZXVlLCB1MzIgdmFsKQoreworI2lmIERFQlVH X1FNR1IKKwlCVUdfT04oIXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdKTsgLyogbm90IHlldCByZXF1 ZXN0ZWQgKi8KKworCWZwcmludGYoc3RkZXJyLCAiUXVldWUgJXMoJWkpIHB1dCAlWFxuIiwKKwkJ cW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCB2YWwpOworI2VuZGlmCisJX19yYXdfd3Jp dGVsKHZhbCwgJnFtZ3JfcmVncy0+YWNjW3F1ZXVlXVswXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg dTMyIHFtZ3JfZ2V0X2VudHJ5KHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwl1MzIgdmFsOworCXZh bCA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmFjY1txdWV1ZV1bMF0pOworI2lmIERFQlVHX1FN R1IKKwlCVUdfT04oIXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdKTsgLyogbm90IHlldCByZXF1ZXN0 ZWQgKi8KKworCWZwcmludGYoc3RkZXJyLCAiUXVldWUgJXMoJWkpIGdldCAlWFxuIiwKKwkJcW1n cl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCB2YWwpOworI2VuZGlmCisJcmV0dXJuIHZhbDsK K30KKworc3RhdGljIGlubGluZSBpbnQgX19xbWdyX2dldF9zdGF0MSh1bnNpZ25lZCBpbnQgcXVl dWUpCit7CisJcmV0dXJuIChfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zdGF0MVtxdWV1ZSA+PiAz XSkKKwkJPj4gKChxdWV1ZSAmIDcpIDw8IDIpKSAmIDB4RjsKK30KKworLyoqCisgKiBxbWdyX3N0 YXRfZW1wdHkoKSAtIGNoZWNrcyBpZiBhIGhhcmR3YXJlIHF1ZXVlIGlzIGVtcHR5CisgKiBAcXVl dWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9uLXplcm8gdmFsdWUgaWYgdGhlIHF1 ZXVlIGlzIGVtcHR5LgorICovCitzdGF0aWMgaW5saW5lIGludCBxbWdyX3N0YXRfZW1wdHkodW5z aWduZWQgaW50IHF1ZXVlKQoreworCXJldHVybiBfX3FtZ3JfZ2V0X3N0YXQxKHF1ZXVlKSAmIFFV RVVFX1NUQVQxX0VNUFRZOworfQorCisvKioKKyAqIHFtZ3Jfc3RhdF9iZWxvd19sb3dfd2F0ZXJt YXJrKCkgLSBjaGVja3MgaWYgYSBxdWV1ZSBpcyBiZWxvdyBsb3cgd2F0ZXJtYXJrCisgKiBAcXVl dWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9uLXplcm8gdmFsdWUgaWYgdGhlIHF1 ZXVlIGlzIGJlbG93IGxvdyB3YXRlcm1hcmsuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHFtZ3Jf c3RhdF9iZWxvd19sb3dfd2F0ZXJtYXJrKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwlyZXR1cm4g X19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9ORUFSTFlfRU1QVFk7Cit9CisK Ky8qKgorICogcW1ncl9zdGF0X2Fib3ZlX2hpZ2hfd2F0ZXJtYXJrKCkgLSBjaGVja3MgaWYgYSBx dWV1ZSBpcyBhYm92ZSBoaWdoIHdhdGVybWFyaworICogQHF1ZXVlOiBxdWV1ZSBudW1iZXIKKyAq CisgKiBSZXR1cm5zIG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBxdWV1ZSBpcyBhYm92ZSBoaWdoIHdh dGVybWFyaworICovCitzdGF0aWMgaW5saW5lIGludCBxbWdyX3N0YXRfYWJvdmVfaGlnaF93YXRl cm1hcmsodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXJldHVybiBfX3FtZ3JfZ2V0X3N0YXQxKHF1 ZXVlKSAmIFFVRVVFX1NUQVQxX05FQVJMWV9GVUxMOworfQorCisvKioKKyAqIHFtZ3Jfc3RhdF9m dWxsKCkgLSBjaGVja3MgaWYgYSBoYXJkd2FyZSBxdWV1ZSBpcyBmdWxsCisgKiBAcXVldWU6IHF1 ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9uLXplcm8gdmFsdWUgaWYgdGhlIHF1ZXVlIGlz IGZ1bGwuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHFtZ3Jfc3RhdF9mdWxsKHVuc2lnbmVkIGlu dCBxdWV1ZSkKK3sKKwlyZXR1cm4gX19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFU MV9GVUxMOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2xv d2xldmVsX2luaXQuUyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2xvd2xldmVsX2luaXQuUwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGU5M2VmCi0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbG93bGV2ZWxfaW5pdC5TCkBAIC0wLDAgKzEsMTcgQEAK KyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+CisKKwkuc2VjdGlvbiAiLnRleHRfYmFyZV9p bml0IiwgImF4IgorCisJLmdsb2JsIGFyY2hfaW5pdF9sb3dsZXZlbAorYXJjaF9pbml0X2xvd2xl dmVsOgorCWxkciByMCwgY2ZnCisJbGRyIHIxLCBbcjBdCisJYW5kIHIxLCByMSwgI34weDgwMDAw MDAwIC8qIHVubWFwIEVYUCBidXMgZnJvbSAweDAgKi8KKwlzdHIgcjEsIFtyMF0KKworCS8qIHJl dHVybiB0byBST00gKi8KKwlvcnIgbHIsICMweDUwMDAwMDAwCisJbW92IHBjLCBscgorCitjZmc6 CisJLndvcmQgSVhQNFhYX0VYUF9DRkcwCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4 eC9ucGUuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmE4ZGRkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNo LWl4cDR4eC9ucGUuYwpAQCAtMCwwICsxLDY2OCBAQAorLyoKKyAqIEludGVsIElYUDR4eCBOZXR3 b3JrIFByb2Nlc3NvciBFbmdpbmUgZHJpdmVyIGZvciBMaW51eAorICoKKyAqIENvcHlyaWdodCAo QykgMjAwNyBLcnp5c3p0b2YgSGFsYXNhIDxraGNAcG0ud2F3LnBsPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8ZnMuaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+ CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1 ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxtYWNoL2NwdS5oPgorI2luY2x1ZGUg PG1hY2gvbnBlLmg+CisKKyNkZWZpbmUgREVCVUdfTVNHICAgICAgICAgICAgICAgICAgICAgIDAK KyNkZWZpbmUgREVCVUdfRlcgICAgICAgICAgICAgICAgICAgICAgIDAKKworI2RlZmluZSBOUEVf Q09VTlQgICAgICAgICAgICAgICAgICAgICAgMworI2RlZmluZSBNQVhfUkVUUklFUyAgICAgICAg ICAgICAgICAgICAgMTAwMCAgLyogbWljcm9zZWNvbmRzICovCisjZGVmaW5lIE5QRV80MlhfREFU QV9TSVpFICAgICAgICAgICAgICAweDgwMCAvKiBpbiBkd29yZHMgKi8KKyNkZWZpbmUgTlBFXzQ2 WF9EQVRBX1NJWkUgICAgICAgICAgICAgIDB4MTAwMAorI2RlZmluZSBOUEVfQV80MlhfSU5TVFJf U0laRSAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIE5QRV9CX0FORF9DXzQyWF9JTlNUUl9TSVpF ICAgICAweDgwMAorI2RlZmluZSBOUEVfNDZYX0lOU1RSX1NJWkUgICAgICAgICAgICAgMHgxMDAw CisjZGVmaW5lIFJFR1NfU0laRSAgICAgICAgICAgICAgICAgICAgICAweDEwMDAKKworI2RlZmlu ZSBOUEVfUEhZU19SRUcgICAgICAgICAgICAgICAgICAgMzIKKworI2RlZmluZSBGV19NQUdJQyAg ICAgICAgICAgICAgICAgICAgICAgMHhGRUVERjAwRAorI2RlZmluZSBGV19CTE9DS19UWVBFX0lO U1RSICAgICAgICAgICAgMHgwCisjZGVmaW5lIEZXX0JMT0NLX1RZUEVfREFUQSAgICAgICAgICAg ICAweDEKKyNkZWZpbmUgRldfQkxPQ0tfVFlQRV9FT0YgICAgICAgICAgICAgIDB4RgorCisvKiBO UEUgZXhlYyBzdGF0dXMgKHJlYWQpIGFuZCBjb21tYW5kICh3cml0ZSkgKi8KKyNkZWZpbmUgQ01E X05QRV9TVEVQICAgICAgICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQ01EX05QRV9TVEFSVCAg ICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgQ01EX05QRV9TVE9QICAgICAgICAgICAgICAg ICAgIDB4MDMKKyNkZWZpbmUgQ01EX05QRV9DTFJfUElQRSAgICAgICAgICAgICAgIDB4MDQKKyNk ZWZpbmUgQ01EX0NMUl9QUk9GSUxFX0NOVCAgICAgICAgICAgIDB4MEMKKyNkZWZpbmUgQ01EX1JE X0lOU19NRU0gICAgICAgICAgICAgICAgIDB4MTAgLyogaW5zdHJ1Y3Rpb24gbWVtb3J5ICovCisj ZGVmaW5lIENNRF9XUl9JTlNfTUVNICAgICAgICAgICAgICAgICAweDExCisjZGVmaW5lIENNRF9S RF9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEyIC8qIGRhdGEgbWVtb3J5ICovCisjZGVmaW5l IENNRF9XUl9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEzCisjZGVmaW5lIENNRF9SRF9FQ1Nf UkVHICAgICAgICAgICAgICAgICAweDE0IC8qIGV4ZWMgYWNjZXNzIHJlZ2lzdGVyICovCisjZGVm aW5lIENNRF9XUl9FQ1NfUkVHICAgICAgICAgICAgICAgICAweDE1CisKKyNkZWZpbmUgU1RBVF9S VU4gICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgU1RBVF9TVE9QICAg ICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgU1RBVF9DTEVBUiAgICAgICAg ICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgU1RBVF9FQ1NfSyAgICAgICAgICAgICAg ICAgICAgIDB4MDA4MDAwMDAgLyogcGlwZWxpbmUgY2xlYW4gKi8KKworI2RlZmluZSBOUEVfU1RF VlQgICAgICAgICAgICAgICAgICAgICAgMHgxQgorI2RlZmluZSBOUEVfU1RBUlRQQyAgICAgICAg ICAgICAgICAgICAgMHgxQworI2RlZmluZSBOUEVfUkVHTUFQICAgICAgICAgICAgICAgICAgICAg MHgxRQorI2RlZmluZSBOUEVfQ0lOREVYICAgICAgICAgICAgICAgICAgICAgMHgxRgorCisjZGVm aW5lIElOU1RSX1dSX1JFR19TSE9SVCAgICAgICAgICAgICAweDAwMDBDMDAwCisjZGVmaW5lIElO U1RSX1dSX1JFR19CWVRFICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIElOU1RSX1JE X0ZJRk8gICAgICAgICAgICAgICAgICAweDBGODg4MjIwCisjZGVmaW5lIElOU1RSX1JFU0VUX01C T1ggICAgICAgICAgICAgICAweDBGQUM4MjEwCisKKyNkZWZpbmUgRUNTX0JHX0NUWFRfUkVHXzAg ICAgICAgICAgICAgIDB4MDAgLyogQmFja2dyb3VuZCBFeGVjdXRpbmcgQ29udGV4dCAqLworI2Rl ZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMSAgICAgICAgICAgICAgMHgwMSAvKiBTdGFjayBsZXZlbCAq LworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMiAgICAgICAgICAgICAgMHgwMgorI2RlZmluZSBF Q1NfUFJJXzFfQ1RYVF9SRUdfMCAgICAgICAgICAgMHgwNCAvKiBQcmlvcml0eSAxIEV4ZWN1dGlu ZyBDb250ZXh0ICovCisjZGVmaW5lIEVDU19QUklfMV9DVFhUX1JFR18xICAgICAgICAgICAweDA1 IC8qIFN0YWNrIGxldmVsICovCisjZGVmaW5lIEVDU19QUklfMV9DVFhUX1JFR18yICAgICAgICAg ICAweDA2CisjZGVmaW5lIEVDU19QUklfMl9DVFhUX1JFR18wICAgICAgICAgICAweDA4IC8qIFBy aW9yaXR5IDIgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZpbmUgRUNTX1BSSV8yX0NUWFRfUkVH XzEgICAgICAgICAgIDB4MDkgLyogU3RhY2sgbGV2ZWwgKi8KKyNkZWZpbmUgRUNTX1BSSV8yX0NU WFRfUkVHXzIgICAgICAgICAgIDB4MEEKKyNkZWZpbmUgRUNTX0RCR19DVFhUX1JFR18wICAgICAg ICAgICAgIDB4MEMgLyogRGVidWcgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZpbmUgRUNTX0RC R19DVFhUX1JFR18xICAgICAgICAgICAgIDB4MEQgLyogU3RhY2sgbGV2ZWwgKi8KKyNkZWZpbmUg RUNTX0RCR19DVFhUX1JFR18yICAgICAgICAgICAgIDB4MEUKKyNkZWZpbmUgRUNTX0lOU1RSVUNU X1JFRyAgICAgICAgICAgICAgIDB4MTEgLyogTlBFIEluc3RydWN0aW9uIFJlZ2lzdGVyICovCisK KyNkZWZpbmUgRUNTX1JFR18wX0FDVElWRSAgICAgICAgICAgICAgIDB4ODAwMDAwMDAgLyogYWxs IGxldmVscyAqLworI2RlZmluZSBFQ1NfUkVHXzBfTkVYVFBDX01BU0sgICAgICAgICAgMHgxRkZG MDAwMCAvKiBCRy9QUkkxL1BSSTIgbGV2ZWxzICovCisjZGVmaW5lIEVDU19SRUdfMF9MRFVSX0JJ VFMgICAgICAgICAgICA4CisjZGVmaW5lIEVDU19SRUdfMF9MRFVSX01BU0sgICAgICAgICAgICAw eDAwMDAwNzAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUgRUNTX1JFR18xX0NDVFhUX0JJVFMg ICAgICAgICAgIDE2CisjZGVmaW5lIEVDU19SRUdfMV9DQ1RYVF9NQVNLICAgICAgICAgICAweDAw MEYwMDAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUgRUNTX1JFR18xX1NFTENUWFRfQklUUyAg ICAgICAgIDAKKyNkZWZpbmUgRUNTX1JFR18xX1NFTENUWFRfTUFTSyAgICAgICAgIDB4MDAwMDAw MEYgLyogYWxsIGxldmVscyAqLworI2RlZmluZSBFQ1NfREJHX1JFR18yX0lGICAgICAgICAgICAg ICAgMHgwMDEwMDAwMCAvKiBkZWJ1ZyBsZXZlbCAqLworI2RlZmluZSBFQ1NfREJHX1JFR18yX0lF ICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAvKiBkZWJ1ZyBsZXZlbCAqLworCisvKiBOUEUgd2F0 Y2hwb2ludF9maWZvIHJlZ2lzdGVyIGJpdCAqLworI2RlZmluZSBXRklGT19WQUxJRCAgICAgICAg ICAgICAgICAgICAgMHg4MDAwMDAwMAorCisvKiBOUEUgbWVzc2FnaW5nX3N0YXR1cyByZWdpc3Rl ciBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgTVNHU1RBVF9PRk5FICAweDAwMDEwMDAwIC8q IE91dEZpZm9Ob3RFbXB0eSAqLworI2RlZmluZSBNU0dTVEFUX0lGTkYgIDB4MDAwMjAwMDAgLyog SW5GaWZvTm90RnVsbCAqLworI2RlZmluZSBNU0dTVEFUX09GTkYgIDB4MDAwNDAwMDAgLyogT3V0 Rmlmb05vdEZ1bGwgKi8KKyNkZWZpbmUgTVNHU1RBVF9JRk5FICAweDAwMDgwMDAwIC8qIEluRmlm b05vdEVtcHR5ICovCisjZGVmaW5lIE1TR1NUQVRfTUJJTlQgMHgwMDEwMDAwMCAvKiBNYWlsYm94 IGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX0lGSU5UIDB4MDAyMDAwMDAgLyogSW5GaWZv IGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX09GSU5UIDB4MDA0MDAwMDAgLyogT3V0Rmlm byBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgTVNHU1RBVF9XRklOVCAweDAwODAwMDAwIC8qIFdhdGNo RmlmbyBpbnRlcnJ1cHQgKi8KKworLyogTlBFIG1lc3NhZ2luZ19jb250cm9sIHJlZ2lzdGVyIGJp dCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBNU0dDVExfT1VUX0ZJRk8gICAgICAgMHgwMDAxMDAw MCAvKiBlbmFibGUgb3V0cHV0IEZJRk8gKi8KKyNkZWZpbmUgTVNHQ1RMX0lOX0ZJRk8gICAgICAg IDB4MDAwMjAwMDAgLyogZW5hYmxlIGlucHV0IEZJRk8gKi8KKyNkZWZpbmUgTVNHQ1RMX09VVF9G SUZPX1dSSVRFIDB4MDEwMDAwMDAgLyogZW5hYmxlIEZJRk8gKyBXUklURSAqLworI2RlZmluZSBN U0dDVExfSU5fRklGT19XUklURSAgMHgwMjAwMDAwMAorCisvKiBOUEUgbWFpbGJveF9zdGF0dXMg dmFsdWUgZm9yIHJlc2V0ICovCisjZGVmaW5lIFJFU0VUX01CT1hfU1RBVCAgICAgICAgICAweDAw MDBGMEYwCisKKyNkZWZpbmUgcHJpbnRfbnBlKG5wZSwgZm10LCAuLi4pIGZwcmludGYoc3RkZXJy LCAiJXM6ICIgZm10LCBucGUtPm5hbWUsICMjIF9fVkFfQVJHU19fKQorCisjaWYgREVCVUdfTVNH CisjZGVmaW5lIGRlYnVnX21zZyhucGUsIGZtdCwgLi4uKSBwcmludF9ucGUobnBlLCBmbXQsICMj IF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgZGVidWdfbXNnKG5wZSwgZm10LCAuLi4pCisj ZW5kaWYKKworc3RhdGljIHN0cnVjdCB7CisJdTMyIHJlZywgdmFsOworfSBlY3NfcmVzZXRbXSA9 IHsKKwl7RUNTX0JHX0NUWFRfUkVHXzAsICAgIDB4QTAwMDAwMDB9LAorCXtFQ1NfQkdfQ1RYVF9S RUdfMSwgICAgMHgwMTAwMDAwMH0sCisJe0VDU19CR19DVFhUX1JFR18yLCAgICAweDAwMDA4MDAw fSwKKwl7RUNTX1BSSV8xX0NUWFRfUkVHXzAsIDB4MjAwMDAwODB9LAorCXtFQ1NfUFJJXzFfQ1RY VF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMV9DVFhUX1JFR18yLCAweDAwMDA4MDAw fSwKKwl7RUNTX1BSSV8yX0NUWFRfUkVHXzAsIDB4MjAwMDAwODB9LAorCXtFQ1NfUFJJXzJfQ1RY VF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMl9DVFhUX1JFR18yLCAweDAwMDA4MDAw fSwKKwl7RUNTX0RCR19DVFhUX1JFR18wLCAgIDB4MjAwMDAwMDB9LAorCXtFQ1NfREJHX0NUWFRf UkVHXzEsICAgMHgwMDAwMDAwMH0sCisJe0VDU19EQkdfQ1RYVF9SRUdfMiwgICAweDAwMUUwMDAw fSwKKwl7RUNTX0lOU1RSVUNUX1JFRywgICAgIDB4MTAwM0MwMEZ9LAorfTsKKworc3RhdGljIHN0 cnVjdCBucGUgbnBlX3RhYltOUEVfQ09VTlRdID0geworCXsKKwkJLnJlZ3MgPSAoc3RydWN0IG5w ZV9yZWdzICopSVhQNFhYX05QRUFfQkFTRSwKKwkJLmlkID0gMCwKKwkJLm5hbWUgPSAiTlBFLUEi LAorCX0sIHsKKwkJLnJlZ3MgPSAoc3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUJfQkFTRSwK KwkJLmlkID0gMSwKKwkJLm5hbWUgPSAiTlBFLUIiLAorCX0sIHsKKwkJLnJlZ3MgPSAoc3RydWN0 IG5wZV9yZWdzICopSVhQNFhYX05QRUNfQkFTRSwKKwkJLmlkID0gMiwKKwkJLm5hbWUgPSAiTlBF LUMiLAorCX0KK307CisKK2ludCBucGVfcnVubmluZyhzdHJ1Y3QgbnBlICpucGUpCit7CisJcmV0 dXJuIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpICYgU1RBVF9SVU4p ICE9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG5wZV9jbWRfd3JpdGUoc3RydWN0IG5wZSAqbnBlLCB1 MzIgYWRkciwgaW50IGNtZCwgdTMyIGRhdGEpCit7CisJX19yYXdfd3JpdGVsKGRhdGEsICZucGUt PnJlZ3MtPmV4ZWNfZGF0YSk7CisJX19yYXdfd3JpdGVsKGFkZHIsICZucGUtPnJlZ3MtPmV4ZWNf YWRkcik7CisJX19yYXdfd3JpdGVsKGNtZCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsK K30KKworc3RhdGljIHUzMiBucGVfY21kX3JlYWQoc3RydWN0IG5wZSAqbnBlLCB1MzIgYWRkciwg aW50IGNtZCkKK3sKKwlfX3Jhd193cml0ZWwoYWRkciwgJm5wZS0+cmVncy0+ZXhlY19hZGRyKTsK KwlfX3Jhd193cml0ZWwoY21kLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCS8qIElp bnRyb2R1Y2UgZXh0cmEgcmVhZCBjeWNsZXMgYWZ0ZXIgaXNzdWluZyByZWFkIGNvbW1hbmQgdG8g TlBFCisJICAgc28gdGhhdCB3ZSByZWFkIHRoZSByZWdpc3RlciBhZnRlciB0aGUgTlBFIGhhcyB1 cGRhdGVkIGl0LgorCSAgIFRoaXMgaXMgdG8gb3ZlcmNvbWUgcmFjZSBjb25kaXRpb24gYmV0d2Vl biBYU2NhbGUgYW5kIE5QRSAqLworCV9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPmV4ZWNfZGF0YSk7 CisJX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKKwlyZXR1cm4gX19yYXdfcmVh ZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKK30KKworc3RhdGljIHZvaWQgbnBlX2NsZWFyX2Fj dGl2ZShzdHJ1Y3QgbnBlICpucGUsIHUzMiByZWcpCit7CisJdTMyIHZhbCA9IG5wZV9jbWRfcmVh ZChucGUsIHJlZywgQ01EX1JEX0VDU19SRUcpOworCW5wZV9jbWRfd3JpdGUobnBlLCByZWcsIENN RF9XUl9FQ1NfUkVHLCB2YWwgJiB+RUNTX1JFR18wX0FDVElWRSk7Cit9CisKK3N0YXRpYyB2b2lk IG5wZV9zdGFydChzdHJ1Y3QgbnBlICpucGUpCit7CisJLyogZW5zdXJlIG9ubHkgQmFja2dyb3Vu ZCBDb250ZXh0IFN0YWNrIExldmVsIGlzIGFjdGl2ZSAqLworCW5wZV9jbGVhcl9hY3RpdmUobnBl LCBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCk7CisJbnBlX2NsZWFyX2FjdGl2ZShucGUsIEVDU19QUklf Ml9DVFhUX1JFR18wKTsKKwlucGVfY2xlYXJfYWN0aXZlKG5wZSwgRUNTX0RCR19DVFhUX1JFR18w KTsKKworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5yZWdzLT5leGVjX3N0 YXR1c19jbWQpOworCV9fcmF3X3dyaXRlbChDTURfTlBFX1NUQVJULCAmbnBlLT5yZWdzLT5leGVj X3N0YXR1c19jbWQpOworfQorCitzdGF0aWMgdm9pZCBucGVfc3RvcChzdHJ1Y3QgbnBlICpucGUp Cit7CisJX19yYXdfd3JpdGVsKENNRF9OUEVfU1RPUCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNf Y21kKTsKKwlfX3Jhd193cml0ZWwoQ01EX05QRV9DTFJfUElQRSwgJm5wZS0+cmVncy0+ZXhlY19z dGF0dXNfY21kKTsgLypGSVhNRT8qLworfQorCitzdGF0aWMgaW50IG5wZV9kZWJ1Z19pbnN0cihz dHJ1Y3QgbnBlICpucGUsIHUzMiBpbnN0ciwgdTMyIGN0eCwgdTMyIGxkdXIpCit7CisJdTMyIHdj OworCWludCBpOworCisJLyogc2V0IHRoZSBBY3RpdmUgYml0LCBhbmQgdGhlIExEVVIsIGluIHRo ZSBkZWJ1ZyBsZXZlbCAqLworCW5wZV9jbWRfd3JpdGUobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzAs IENNRF9XUl9FQ1NfUkVHLAorCQkgICAgICBFQ1NfUkVHXzBfQUNUSVZFIHwgKGxkdXIgPDwgRUNT X1JFR18wX0xEVVJfQklUUykpOworCisJLyogc2V0IENDVFhUIGF0IEVDUyBERUJVRyBMMyB0byBz cGVjaWZ5IGluIHdoaWNoIGNvbnRleHQgdG8gZXhlY3V0ZQorCSAgIHRoZSBpbnN0cnVjdGlvbiwg YW5kIHNldCBTRUxDVFhUIGF0IEVDUyBERUJVRyBMZXZlbCB0byBzcGVjaWZ5CisJICAgd2hpY2gg Y29udGV4dCBzdG9yZSB0byBhY2Nlc3MuCisJICAgRGVidWcgRUNTIExldmVsIFJlZyAxIGhhcyBm b3JtIDB4MDAwbjAwMG4sIHdoZXJlIG4gPSBjb250ZXh0IG51bWJlcgorCSovCisJbnBlX2NtZF93 cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMSwgQ01EX1dSX0VDU19SRUcsCisJCSAgICAgIChj dHggPDwgRUNTX1JFR18xX0NDVFhUX0JJVFMpIHwKKwkJICAgICAgKGN0eCA8PCBFQ1NfUkVHXzFf U0VMQ1RYVF9CSVRTKSk7CisKKwkvKiBjbGVhciB0aGUgcGlwZWxpbmUgKi8KKwlfX3Jhd193cml0 ZWwoQ01EX05QRV9DTFJfUElQRSwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsKKworCS8q IGxvYWQgTlBFIGluc3RydWN0aW9uIGludG8gdGhlIGluc3RydWN0aW9uIHJlZ2lzdGVyICovCisJ bnBlX2NtZF93cml0ZShucGUsIEVDU19JTlNUUlVDVF9SRUcsIENNRF9XUl9FQ1NfUkVHLCBpbnN0 cik7CisKKwkvKiB3ZSBuZWVkIHRoaXMgdmFsdWUgbGF0ZXIgdG8gd2FpdCBmb3IgY29tcGxldGlv biBvZiBOUEUgZXhlY3V0aW9uCisJICAgc3RlcCAqLworCXdjID0gX19yYXdfcmVhZGwoJm5wZS0+ cmVncy0+d2F0Y2hfY291bnQpOworCisJLyogaXNzdWUgYSBTdGVwIE9uZSBjb21tYW5kIHZpYSB0 aGUgRXhlY3V0aW9uIENvbnRyb2wgcmVnaXN0ZXIgKi8KKwlfX3Jhd193cml0ZWwoQ01EX05QRV9T VEVQLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCisJLyogV2F0Y2ggQ291bnQgcmVn aXN0ZXIgaW5jcmVtZW50cyB3aGVuIE5QRSBjb21wbGV0ZXMgYW4gaW5zdHJ1Y3Rpb24gKi8KKwlm b3IgKGkgPSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgeworCQlpZiAod2MgIT0gX19yYXdfcmVh ZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpKQorCQkJcmV0dXJuIDA7CisJCXVkZWxheSgxKTsK Kwl9CisKKwlwcmludF9ucGUobnBlLCAicmVzZXQ6IG5wZV9kZWJ1Z19pbnN0cigpOiB0aW1lb3V0 XG4iKTsKKwlyZXR1cm4gLUVUSU1FRE9VVDsKK30KKworc3RhdGljIGludCBucGVfbG9naWNhbF9y ZWdfd3JpdGU4KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIsIHU4IHZhbCwgdTMyIGN0eCkKK3sK KwkvKiBoZXJlIHdlIGJ1aWxkIHRoZSBOUEUgYXNzZW1ibGVyIGluc3RydWN0aW9uOiBtb3Y4IGQw LCAjMCAqLworCXUzMiBpbnN0ciA9IElOU1RSX1dSX1JFR19CWVRFIHwgLyogT3BDb2RlICovCisJ CWFkZHIgPDwgOSB8ICAgICAgICAgICAgIC8qIGJhc2UgT3BlcmFuZCAqLworCQkodmFsICYgMHgx RikgPDwgNCB8ICAgICAvKiBsb3dlciA1IGJpdHMgdG8gaW1tZWRpYXRlIGRhdGEgKi8KKwkJKHZh bCAmIH4weDFGKSA8PCAoMTggLSA1KTsvKiBoaWdoZXIgMyBiaXRzIHRvIENvUHJvYyBpbnN0ci4g Ki8KKwlyZXR1cm4gbnBlX2RlYnVnX2luc3RyKG5wZSwgaW5zdHIsIGN0eCwgMSk7IC8qIGV4ZWN1 dGUgaXQgKi8KK30KKworc3RhdGljIGludCBucGVfbG9naWNhbF9yZWdfd3JpdGUxNihzdHJ1Y3Qg bnBlICpucGUsIHUzMiBhZGRyLCB1MTYgdmFsLCB1MzIgY3R4KQoreworCS8qIGhlcmUgd2UgYnVp bGQgdGhlIE5QRSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb246IG1vdjE2IGQwLCAjMCAqLworCXUzMiBp bnN0ciA9IElOU1RSX1dSX1JFR19TSE9SVCB8IC8qIE9wQ29kZSAqLworCQlhZGRyIDw8IDkgfCAg ICAgICAgICAgICAvKiBiYXNlIE9wZXJhbmQgKi8KKwkJKHZhbCAmIDB4MUYpIDw8IDQgfCAgICAg LyogbG93ZXIgNSBiaXRzIHRvIGltbWVkaWF0ZSBkYXRhICovCisJCSh2YWwgJiB+MHgxRikgPDwg KDE4IC0gNSk7LyogaGlnaGVyIDExIGJpdHMgdG8gQ29Qcm9jIGluc3RyLiAqLworCXJldHVybiBu cGVfZGVidWdfaW5zdHIobnBlLCBpbnN0ciwgY3R4LCAxKTsgLyogZXhlY3V0ZSBpdCAqLworfQor CitzdGF0aWMgaW50IG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKHN0cnVjdCBucGUgKm5wZSwgdTMy IGFkZHIsIHUzMiB2YWwsIHUzMiBjdHgpCit7CisJLyogd3JpdGUgaW4gMTYgYml0IHN0ZXBzIGZp cnN0IHRoZSBoaWdoIGFuZCB0aGVuIHRoZSBsb3cgdmFsdWUgKi8KKwlpZiAobnBlX2xvZ2ljYWxf cmVnX3dyaXRlMTYobnBlLCBhZGRyLCB2YWwgPj4gMTYsIGN0eCkpCisJCXJldHVybiAtRVRJTUVE T1VUOworCXJldHVybiBucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIGFkZHIgKyAyLCB2YWwg JiAweEZGRkYsIGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgbnBlX3Jlc2V0KHN0cnVjdCBucGUgKm5w ZSkKK3sKKwl1MzIgdmFsLCBjdGwsIGV4ZWNfY291bnQsIGN0eF9yZWcyOworCWludCBpOworCisJ Y3RsID0gKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19jb250cm9sKSB8IDB4M0Yw MDAwMDApICYKKwkJMHgzRjNGRkZGRjsKKworCS8qIGRpc2FibGUgcGFyaXR5IGludGVycnVwdCAq LworCV9fcmF3X3dyaXRlbChjdGwgJiAweDNGMDBGRkZGLCAmbnBlLT5yZWdzLT5tZXNzYWdpbmdf Y29udHJvbCk7CisKKwkvKiBwcmUgZXhlYyAtIGRlYnVnIGluc3RydWN0aW9uICovCisJLyogdHVy biBvZmYgdGhlIGhhbHQgYml0IGJ5IGNsZWFyaW5nIEV4ZWN1dGlvbiBDb3VudCByZWdpc3Rlci4g Ki8KKwlleGVjX2NvdW50ID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19jb3VudCk7CisJ X19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmV4ZWNfY291bnQpOworCS8qIGVuc3VyZSB0aGF0 IElGIGFuZCBJRSBhcmUgb24gKHRlbXBvcmFyaWx5KSwgc28gdGhhdCB3ZSBkb24ndCBlbmQgdXAK KwkgICBzdGVwcGluZyBmb3JldmVyICovCisJY3R4X3JlZzIgPSBucGVfY21kX3JlYWQobnBlLCBF Q1NfREJHX0NUWFRfUkVHXzIsIENNRF9SRF9FQ1NfUkVHKTsKKwlucGVfY21kX3dyaXRlKG5wZSwg RUNTX0RCR19DVFhUX1JFR18yLCBDTURfV1JfRUNTX1JFRywgY3R4X3JlZzIgfAorCQkgICAgICBF Q1NfREJHX1JFR18yX0lGIHwgRUNTX0RCR19SRUdfMl9JRSk7CisKKwkvKiBjbGVhciB0aGUgRklG T3MgKi8KKwl3aGlsZSAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hwb2ludF9maWZvKSAm IFdGSUZPX1ZBTElEKQorCQk7CisJd2hpbGUgKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3Nh Z2luZ19zdGF0dXMpICYgTVNHU1RBVF9PRk5FKQorCQkvKiByZWFkIGZyb20gdGhlIG91dEZJRk8g dW50aWwgZW1wdHkgKi8KKwkJcHJpbnRfbnBlKG5wZSwgIm5wZV9yZXNldDogcmVhZCBGSUZPID0g MHglWFxuIiwKKwkJCSAgX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+aW5fb3V0X2ZpZm8pKTsKKwor CXdoaWxlIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVzKSAmIE1TR1NU QVRfSUZORSkKKwkJLyogc3RlcCBleGVjdXRpb24gb2YgdGhlIE5QRSBpbnRydWN0aW9uIHRvIHJl YWQgaW5GSUZPIHVzaW5nCisJCSAgIHRoZSBEZWJ1ZyBFeGVjdXRpbmcgQ29udGV4dCBzdGFjayAq LworCQlpZiAobnBlX2RlYnVnX2luc3RyKG5wZSwgSU5TVFJfUkRfRklGTywgMCwgMCkpCisJCQly ZXR1cm4gLUVUSU1FRE9VVDsKKworCS8qIHJlc2V0IHRoZSBtYWlsYm94IHJlZyBmcm9tIHRoZSBY U2NhbGUgc2lkZSAqLworCV9fcmF3X3dyaXRlbChSRVNFVF9NQk9YX1NUQVQsICZucGUtPnJlZ3Mt Pm1haWxib3hfc3RhdHVzKTsKKwkvKiBmcm9tIE5QRSBzaWRlICovCisJaWYgKG5wZV9kZWJ1Z19p bnN0cihucGUsIElOU1RSX1JFU0VUX01CT1gsIDAsIDApKQorCQlyZXR1cm4gLUVUSU1FRE9VVDsK KworCS8qIFJlc2V0IHRoZSBwaHlzaWNhbCByZWdpc3RlcnMgaW4gdGhlIE5QRSByZWdpc3RlciBm aWxlICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBOUEVfUEhZU19SRUc7IHZhbCsrKSB7CisJCWlm IChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIE5QRV9SRUdNQVAsIHZhbCA+PiAxLCAwKSkK KwkJCXJldHVybiAtRVRJTUVET1VUOworCQkvKiBhZGRyZXNzIGlzIGVpdGhlciAwIG9yIDQgKi8K KwkJaWYgKG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKG5wZSwgKHZhbCAmIDEpICogNCwgMCwgMCkp CisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiBSZXNldCB0aGUgY29udGV4dCBzdG9y ZSA9IGVhY2ggY29udGV4dCdzIENvbnRleHQgU3RvcmUgcmVnaXN0ZXJzICovCisKKwkvKiBDb250 ZXh0IDAgaGFzIG5vIFNUQVJUUEMuIEluc3RlYWQsIHRoaXMgdmFsdWUgaXMgdXNlZCB0byBzZXQg TmV4dFBDCisJICAgZm9yIEJhY2tncm91bmQgRUNTLCB0byBzZXQgd2hlcmUgTlBFIHN0YXJ0cyBl eGVjdXRpbmcgY29kZSAqLworCXZhbCA9IG5wZV9jbWRfcmVhZChucGUsIEVDU19CR19DVFhUX1JF R18wLCBDTURfUkRfRUNTX1JFRyk7CisJdmFsICY9IH5FQ1NfUkVHXzBfTkVYVFBDX01BU0s7CisJ dmFsIHw9ICgwIC8qIE5leHRQQyAqLyA8PCAxNikgJiBFQ1NfUkVHXzBfTkVYVFBDX01BU0s7CisJ bnBlX2NtZF93cml0ZShucGUsIEVDU19CR19DVFhUX1JFR18wLCBDTURfV1JfRUNTX1JFRywgdmFs KTsKKworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJCWlmIChpKSB7IC8qIENvbnRleHQg MCBoYXMgbm8gU1RFVlQgbm9yIFNUQVJUUEMgKi8KKwkJCS8qIFNURVZUID0gb2ZmLCAweDgwICov CisJCQlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlOChucGUsIE5QRV9TVEVWVCwgMHg4MCwgaSkp CisJCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCQlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlMTYo bnBlLCBOUEVfU1RBUlRQQywgMCwgaSkpCisJCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCX0KKwkJ LyogUkVHTUFQID0gZDAtPnAwLCBkOC0+cDIsIGQxNi0+cDQgKi8KKwkJaWYgKG5wZV9sb2dpY2Fs X3JlZ193cml0ZTE2KG5wZSwgTlBFX1JFR01BUCwgMHg4MjAsIGkpKQorCQkJcmV0dXJuIC1FVElN RURPVVQ7CisJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGU4KG5wZSwgTlBFX0NJTkRFWCwgMCwg aSkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiBwb3N0IGV4ZWMgKi8KKwkvKiBj bGVhciBhY3RpdmUgYml0IGluIGRlYnVnIGxldmVsICovCisJbnBlX2NtZF93cml0ZShucGUsIEVD U19EQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsIDApOworCS8qIGNsZWFyIHRoZSBwaXBl bGluZSAqLworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5yZWdzLT5leGVj X3N0YXR1c19jbWQpOworCS8qIHJlc3RvcmUgcHJldmlvdXMgdmFsdWVzICovCisJX19yYXdfd3Jp dGVsKGV4ZWNfY291bnQsICZucGUtPnJlZ3MtPmV4ZWNfY291bnQpOworCW5wZV9jbWRfd3JpdGUo bnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIsIENNRF9XUl9FQ1NfUkVHLCBjdHhfcmVnMik7CisKKwkv KiB3cml0ZSByZXNldCB2YWx1ZXMgdG8gRXhlY3V0aW9uIENvbnRleHQgU3RhY2sgcmVnaXN0ZXJz ICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBBUlJBWV9TSVpFKGVjc19yZXNldCk7IHZhbCsrKQor CQlucGVfY21kX3dyaXRlKG5wZSwgZWNzX3Jlc2V0W3ZhbF0ucmVnLCBDTURfV1JfRUNTX1JFRywK KwkJCSAgICAgIGVjc19yZXNldFt2YWxdLnZhbCk7CisKKwkvKiBjbGVhciB0aGUgcHJvZmlsZSBj b3VudGVyICovCisJX19yYXdfd3JpdGVsKENNRF9DTFJfUFJPRklMRV9DTlQsICZucGUtPnJlZ3Mt PmV4ZWNfc3RhdHVzX2NtZCk7CisKKwlfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+ZXhlY19j b3VudCk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmFjdGlvbl9wb2ludHNbMF0pOwor CV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdzLT5hY3Rpb25fcG9pbnRzWzFdKTsKKwlfX3Jhd193 cml0ZWwoMCwgJm5wZS0+cmVncy0+YWN0aW9uX3BvaW50c1syXSk7CisJX19yYXdfd3JpdGVsKDAs ICZucGUtPnJlZ3MtPmFjdGlvbl9wb2ludHNbM10pOworCV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5y ZWdzLT53YXRjaF9jb3VudCk7CisKKwl2YWwgPSBpeHA0eHhfcmVhZF9mZWF0dXJlX2JpdHMoKTsK KwkvKiByZXNldCB0aGUgTlBFICovCisJaXhwNHh4X3dyaXRlX2ZlYXR1cmVfYml0cyh2YWwgJgor CQkJCSAgfihJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQpKTsKKwkvKiBkZWFz c2VydCByZXNldCAqLworCWl4cDR4eF93cml0ZV9mZWF0dXJlX2JpdHModmFsIHwKKwkJCQkgIChJ WFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQpKTsKKwlmb3IgKGkgPSAwOyBpIDwg TUFYX1JFVFJJRVM7IGkrKykgeworCQlpZiAoaXhwNHh4X3JlYWRfZmVhdHVyZV9iaXRzKCkgJgor CQkgICAgKElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgPDwgbnBlLT5pZCkpCisJCQlicmVhazsg LyogTlBFIGlzIGJhY2sgYWxpdmUgKi8KKwkJdWRlbGF5KDEpOworCX0KKwlpZiAoaSA9PSBNQVhf UkVUUklFUykKKwkJcmV0dXJuIC1FVElNRURPVVQ7CisKKwlucGVfc3RvcChucGUpOworCisJLyog cmVzdG9yZSBOUEUgY29uZmlndXJhdGlvbiBidXMgQ29udHJvbCBSZWdpc3RlciAtIHBhcml0eSBz ZXR0aW5ncyAqLworCV9fcmF3X3dyaXRlbChjdGwsICZucGUtPnJlZ3MtPm1lc3NhZ2luZ19jb250 cm9sKTsKKwlyZXR1cm4gMDsKK30KKworCitpbnQgbnBlX3NlbmRfbWVzc2FnZShzdHJ1Y3QgbnBl ICpucGUsIGNvbnN0IHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCkKK3sKKwljb25zdCB1MzIg KnNlbmQgPSBtc2c7CisJaW50IGN5Y2xlcyA9IDA7CisKKwlkZWJ1Z19tc2cobnBlLCAiVHJ5aW5n IHRvIHNlbmQgbWVzc2FnZSAlcyBbJTA4WDolMDhYXVxuIiwKKwkJICB3aGF0LCBzZW5kWzBdLCBz ZW5kWzFdKTsKKworCWlmIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVz KSAmIE1TR1NUQVRfSUZORSkgeworCQlkZWJ1Z19tc2cobnBlLCAiTlBFIGlucHV0IEZJRk8gbm90 IGVtcHR5XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJX19yYXdfd3JpdGVsKHNlbmRbMF0s ICZucGUtPnJlZ3MtPmluX291dF9maWZvKTsKKworCWlmICghKF9fcmF3X3JlYWRsKCZucGUtPnJl Z3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9JRk5GKSkgeworCQlkZWJ1Z19tc2cobnBl LCAiTlBFIGlucHV0IEZJRk8gZnVsbFxuIik7CisJCXJldHVybiAtRUlPOworCX0KKworCV9fcmF3 X3dyaXRlbChzZW5kWzFdLCAmbnBlLT5yZWdzLT5pbl9vdXRfZmlmbyk7CisKKwl3aGlsZSAoKGN5 Y2xlcyA8IE1BWF9SRVRSSUVTKSAmJgorCSAgICAgICAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX0lGTkUpKSB7CisJCXVkZWxheSgxKTsKKwkJY3lj bGVzKys7CisJfQorCisJaWYgKGN5Y2xlcyA9PSBNQVhfUkVUUklFUykgeworCQlkZWJ1Z19tc2co bnBlLCAiVGltZW91dCBzZW5kaW5nIG1lc3NhZ2VcbiIpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsK Kwl9CisKKyNpZiBERUJVR19NU0cgPiAxCisJZGVidWdfbXNnKG5wZSwgIlNlbmRpbmcgYSBtZXNz YWdlIHRvb2sgJWkgY3ljbGVzXG4iLCBjeWNsZXMpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisK K2ludCBucGVfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBj aGFyICp3aGF0KQoreworCXUzMiAqcmVjdiA9IG1zZzsKKwlpbnQgY3ljbGVzID0gMCwgY250ID0g MDsKKworCWRlYnVnX21zZyhucGUsICJUcnlpbmcgdG8gcmVjZWl2ZSBtZXNzYWdlICVzXG4iLCB3 aGF0KTsKKworCXdoaWxlIChjeWNsZXMgPCBNQVhfUkVUUklFUykgeworCQlpZiAoX19yYXdfcmVh ZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX09GTkUpIHsKKwkJCXJl Y3ZbY250KytdID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+aW5fb3V0X2ZpZm8pOworCQkJaWYg KGNudCA9PSAyKQorCQkJCWJyZWFrOworCQl9IGVsc2UgeworCQkJdWRlbGF5KDEpOworCQkJY3lj bGVzKys7CisJCX0KKwl9CisKKwlzd2l0Y2goY250KSB7CisJY2FzZSAxOgorCQlkZWJ1Z19tc2co bnBlLCAiUmVjZWl2ZWQgWyUwOFhdXG4iLCByZWN2WzBdKTsKKwkJYnJlYWs7CisJY2FzZSAyOgor CQlkZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFg6JTA4WF1cbiIsIHJlY3ZbMF0sIHJlY3Zb MV0pOworCQlicmVhazsKKwl9CisKKwlpZiAoY3ljbGVzID09IE1BWF9SRVRSSUVTKSB7CisJCWRl YnVnX21zZyhucGUsICJUaW1lb3V0IHdhaXRpbmcgZm9yIG1lc3NhZ2VcbiIpOworCQlyZXR1cm4g LUVUSU1FRE9VVDsKKwl9CisKKyNpZiBERUJVR19NU0cgPiAxCisJZGVidWdfbXNnKG5wZSwgIlJl Y2VpdmluZyBhIG1lc3NhZ2UgdG9vayAlaSBjeWNsZXNcbiIsIGN5Y2xlcyk7CisjZW5kaWYKKwly ZXR1cm4gMDsKK30KKworaW50IG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUs IHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCkKK3sKKwlpbnQgcmVzdWx0OworCXUzMiAqc2Vu ZCA9IG1zZywgcmVjdlsyXTsKKworCWlmICgocmVzdWx0ID0gbnBlX3NlbmRfbWVzc2FnZShucGUs IG1zZywgd2hhdCkpICE9IDApCisJCXJldHVybiByZXN1bHQ7CisJaWYgKChyZXN1bHQgPSBucGVf cmVjdl9tZXNzYWdlKG5wZSwgcmVjdiwgd2hhdCkpICE9IDApCisJCXJldHVybiByZXN1bHQ7CisK KwlpZiAoKHJlY3ZbMF0gIT0gc2VuZFswXSkgfHwgKHJlY3ZbMV0gIT0gc2VuZFsxXSkpIHsKKwkJ ZGVidWdfbXNnKG5wZSwgIk1lc3NhZ2UgJXM6IHVuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZFxu IiwKKwkJCSAgd2hhdCk7CisJCXJldHVybiAtRUlPOworCX0KKwlyZXR1cm4gMDsKK30KKworCitp bnQgbnBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG5wZSAqbnBlKQoreworCXN0cnVjdCBkbF9ibG9j ayB7CisJCXUzMiB0eXBlOworCQl1MzIgb2Zmc2V0OworCX0gKmJsazsKKworCXN0cnVjdCBkbF9p bWFnZSB7CisJCXUzMiBtYWdpYzsKKwkJdTMyIGlkOworCQl1MzIgc2l6ZTsKKwkJdW5pb24gewor CQkJdTMyIGRhdGFbMF07CisJCQlzdHJ1Y3QgZGxfYmxvY2sgYmxvY2tzWzBdOworCQl9OworCX0g KmltYWdlOworCisJc3RydWN0IGRsX2NvZGVibG9jayB7CisJCXUzMiBucGVfYWRkcjsKKwkJdTMy IHNpemU7CisJCXUzMiBkYXRhWzBdOworCX0gKmNiOworCisJaW50IGksIGosIGVyciwgZGF0YV9z aXplLCBpbnN0cl9zaXplLCBibG9ja3MsIHRhYmxlX2VuZDsKKwl1MzIgY21kOworCWNoYXIgbmFt ZVs1IC8qICIvZGV2LyIgKi8gKyBOUEVfTkFNRV9MRU5HVEggKyAxIC8qIE5VTCAqL107CisJc2l6 ZV90IGltYWdlX3NpemU7CisKKwlzcHJpbnRmKG5hbWUsICIvZGV2LyVzIiwgbnBlLT5uYW1lKTsK KwlpZiAoIShpbWFnZSA9IHJlYWRfZmlsZShuYW1lLCAmaW1hZ2Vfc2l6ZSkpKSB7CisJCXByaW50 X25wZShucGUsICJiYWQgb3IgbWlzc2luZyBtaWNyb2NvZGUgZmlsZSAlcyIsIG5hbWUpOworCQly ZXR1cm4gLUVJTzsKKwl9CisKKwllcnIgPSAtRUlOVkFMOworCWlmIChpbWFnZV9zaXplIDwgc2l6 ZW9mKHN0cnVjdCBkbF9pbWFnZSkpIHsKKwkJcHJpbnRfbnBlKG5wZSwgImluY29tcGxldGUgbWlj cm9jb2RlIGZpbGUgJXNcbiIsIG5hbWUpOworCQlnb3RvIGVycjsKKwl9CisKKyNpZiBERUJVR19G VworCXByaW50X25wZShucGUsICJtaWNyb2NvZGU6ICUwOFggJTA4WCAlMDhYICgweCVYIGJ5dGVz KVxuIiwKKwkJICBpbWFnZS0+bWFnaWMsIGltYWdlLT5pZCwgaW1hZ2UtPnNpemUsIGltYWdlLT5z aXplICogNCk7CisjZW5kaWYKKworCWlmIChpbWFnZS0+bWFnaWMgPT0gc3dhYjMyKEZXX01BR0lD KSkgeyAvKiBzd2FwcGVkIGZpbGUgKi8KKwkJaW1hZ2UtPmlkID0gc3dhYjMyKGltYWdlLT5pZCk7 CisJCWltYWdlLT5zaXplID0gc3dhYjMyKGltYWdlLT5zaXplKTsKKwl9IGVsc2UgaWYgKGltYWdl LT5tYWdpYyAhPSBGV19NQUdJQykgeworCQlwcmludF9ucGUobnBlLCAiYmFkIG1pY3JvY29kZSBm aWxlICVzIG1hZ2ljOiAweCVYXG4iLCBuYW1lLCBpbWFnZS0+bWFnaWMpOworCQlnb3RvIGVycjsK Kwl9CisJaWYgKChpbWFnZS0+c2l6ZSAqIDQgKyBzaXplb2Yoc3RydWN0IGRsX2ltYWdlKSkgPiBp bWFnZV9zaXplKSB7CisJCXByaW50X25wZShucGUsICJpbmNvbXBsZXRlIG1pY3JvY29kZSBmaWxl ICVzXG4iLCBuYW1lKTsKKwkJZ290byBlcnI7CisJfQorCWlmICgoKGltYWdlLT5pZCA+PiAyNCkg JiAweEYgLyogTlBFIElEICovKSAhPSBucGUtPmlkKSB7CisJCXByaW50X25wZShucGUsICJOUEUg SUQgbWlzbWF0Y2ggaW4gbWljcm9jb2RlIGZpbGUgJXNcbiIsIG5hbWUpOworCQlnb3RvIGVycjsK Kwl9CisJaWYgKGltYWdlLT5tYWdpYyA9PSBzd2FiMzIoRldfTUFHSUMpKQorCQlmb3IgKGkgPSAw OyBpIDwgaW1hZ2UtPnNpemU7IGkrKykKKwkJCWltYWdlLT5kYXRhW2ldID0gc3dhYjMyKGltYWdl LT5kYXRhW2ldKTsKKworCWlmIChjcHVfaXNfaXhwNDJ4KCkgJiYgKChpbWFnZS0+aWQgPj4gMjgp ICYgMHhGIC8qIGRldmljZSBJRCAqLykpIHsKKwkJcHJpbnRfbnBlKG5wZSwgIklYUDQzeC9JWFA0 NnggbWljcm9jb2RlIGlnbm9yZWQgb24gSVhQNDJ4XG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJ aWYgKG5wZV9ydW5uaW5nKG5wZSkpIHsKKwkJcHJpbnRfbnBlKG5wZSwgInVuYWJsZSB0byBsb2Fk IG1pY3JvY29kZSBmaWxlICVzLCBOUEUgaXMgYWxyZWFkeSBydW5uaW5nXG4iLCBuYW1lKTsKKwkJ ZXJyID0gLUVCVVNZOworCQlnb3RvIGVycjsKKwl9CisKKwlpZiAoY3B1X2lzX2l4cDQyeCgpKSB7 CisJCWlmICghbnBlLT5pZCkKKwkJCWluc3RyX3NpemUgPSBOUEVfQV80MlhfSU5TVFJfU0laRTsK KwkJZWxzZQorCQkJaW5zdHJfc2l6ZSA9IE5QRV9CX0FORF9DXzQyWF9JTlNUUl9TSVpFOworCQlk YXRhX3NpemUgPSBOUEVfNDJYX0RBVEFfU0laRTsKKwl9IGVsc2UgeworCQlpbnN0cl9zaXplID0g TlBFXzQ2WF9JTlNUUl9TSVpFOworCQlkYXRhX3NpemUgPSBOUEVfNDZYX0RBVEFfU0laRTsKKwl9 CisKKwlmb3IgKGJsb2NrcyA9IDA7IGJsb2NrcyAqIHNpemVvZihzdHJ1Y3QgZGxfYmxvY2spIC8g NCA8IGltYWdlLT5zaXplOworCSAgICAgYmxvY2tzKyspCisJCWlmIChpbWFnZS0+YmxvY2tzW2Js b2Nrc10udHlwZSA9PSBGV19CTE9DS19UWVBFX0VPRikKKwkJCWJyZWFrOworCWlmIChibG9ja3Mg KiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgPj0gaW1hZ2UtPnNpemUpIHsKKwkJcHJpbnRf bnBlKG5wZSwgIm1pY3JvY29kZSBFT0YgYmxvY2sgbWFya2VyIG5vdCBmb3VuZFxuIik7CisJCWdv dG8gZXJyOworCX0KKworI2lmIERFQlVHX0ZXCisJcHJpbnRfbnBlKG5wZSwgIiVpIG1pY3JvY29k ZSBibG9ja3MgZm91bmRcbiIsIGJsb2Nrcyk7CisjZW5kaWYKKworCXRhYmxlX2VuZCA9IGJsb2Nr cyAqIHNpemVvZihzdHJ1Y3QgZGxfYmxvY2spIC8gNCArIDEgLyogRU9GIG1hcmtlciAqLzsKKwlm b3IgKGkgPSAwLCBibGsgPSBpbWFnZS0+YmxvY2tzOyBpIDwgYmxvY2tzOyBpKyssIGJsaysrKSB7 CisJCWlmIChibGstPm9mZnNldCA+IGltYWdlLT5zaXplIC0gc2l6ZW9mKHN0cnVjdCBkbF9jb2Rl YmxvY2spIC8gNAorCQkgICAgfHwgYmxrLT5vZmZzZXQgPCB0YWJsZV9lbmQpIHsKKwkJCXByaW50 X25wZShucGUsICJpbnZhbGlkIG9mZnNldCAweCVYIG9mICIKKwkJCQkgICJtaWNyb2NvZGUgYmxv Y2sgIyVpXG4iLCBibGstPm9mZnNldCwgaSk7CisJCQlnb3RvIGVycjsKKwkJfQorCisJCWNiID0g KHN0cnVjdCBkbF9jb2RlYmxvY2sqKSZpbWFnZS0+ZGF0YVtibGstPm9mZnNldF07CisJCWlmIChi bGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9JTlNUUikgeworCQkJaWYgKGNiLT5ucGVfYWRkciAr IGNiLT5zaXplID4gaW5zdHJfc2l6ZSkKKwkJCQlnb3RvIHRvb19iaWc7CisJCQljbWQgPSBDTURf V1JfSU5TX01FTTsKKwkJfSBlbHNlIGlmIChibGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9EQVRB KSB7CisJCQlpZiAoY2ItPm5wZV9hZGRyICsgY2ItPnNpemUgPiBkYXRhX3NpemUpCisJCQkJZ290 byB0b29fYmlnOworCQkJY21kID0gQ01EX1dSX0RBVEFfTUVNOworCQl9IGVsc2UgeworCQkJcHJp bnRfbnBlKG5wZSwgImludmFsaWQgbWljcm9jb2RlIGJsb2NrICMlaSB0eXBlIDB4JVhcbiIsCisJ CQkJICBpLCBibGstPnR5cGUpOworCQkJZ290byBlcnI7CisJCX0KKwkJaWYgKGJsay0+b2Zmc2V0 ICsgc2l6ZW9mKCpjYikgLyA0ICsgY2ItPnNpemUgPiBpbWFnZS0+c2l6ZSkgeworCQkJcHJpbnRf bnBlKG5wZSwgIm1pY3JvY29kZSBibG9jayAjJWkgZG9lc24ndCAiCisJCQkJICAiZml0IGluIG1p Y3JvY29kZSBpbWFnZTogdHlwZSAlYywgc3RhcnQgMHglWCwiCisJCQkJICAiIGxlbmd0aCAweCVY XG4iLCBpLAorCQkJCSAgYmxrLT50eXBlID09IEZXX0JMT0NLX1RZUEVfSU5TVFIgPyAnSScgOiAn RCcsCisJCQkJICBjYi0+bnBlX2FkZHIsIGNiLT5zaXplKTsKKwkJCWdvdG8gZXJyOworCQl9CisK KwkJZm9yIChqID0gMDsgaiA8IGNiLT5zaXplOyBqKyspCisJCQlucGVfY21kX3dyaXRlKG5wZSwg Y2ItPm5wZV9hZGRyICsgaiwgY21kLCBjYi0+ZGF0YVtqXSk7CisJfQorCisJbnBlX3N0YXJ0KG5w ZSk7CisJaWYgKCFucGVfcnVubmluZyhucGUpKQorCQlwcmludF9ucGUobnBlLCAidW5hYmxlIHRv IHN0YXJ0XG4iKTsKKwlmcmVlKGltYWdlKTsKKwlyZXR1cm4gMDsKKwordG9vX2JpZzoKKwlwcmlu dF9ucGUobnBlLCAibWljcm9jb2RlIGJsb2NrICMlaSBkb2Vzbid0IGZpdCBpbiBOUEUgIgorCQkg ICJtZW1vcnk6IHR5cGUgJWMsIHN0YXJ0IDB4JVgsIGxlbmd0aCAweCVYXG4iLCBpLAorCQkgIGJs ay0+dHlwZSA9PSBGV19CTE9DS19UWVBFX0lOU1RSID8gJ0knIDogJ0QnLAorCQkgIGNiLT5ucGVf YWRkciwgY2ItPnNpemUpOworZXJyOgorCWZyZWUoaW1hZ2UpOworCXJldHVybiBlcnI7Cit9CisK Kworc3RydWN0IG5wZSAqbnBlX3JlcXVlc3QoaW50IGlkKQoreworCWlmIChpZCA8IE5QRV9DT1VO VCkKKwkJaWYgKG5wZV90YWJbaWRdLnZhbGlkKQorCQkJcmV0dXJuICZucGVfdGFiW2lkXTsKKwly ZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBfX2luaXQgbnBlX2luaXQodm9pZCkKK3sKKwlp bnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBOUEVfQ09VTlQ7IGkrKykgeworCQlzdHJ1Y3QgbnBl ICpucGUgPSAmbnBlX3RhYltpXTsKKwkJaWYgKCEoaXhwNHh4X3JlYWRfZmVhdHVyZV9iaXRzKCkg JiAoSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQSA8PCBpKSkpCisJCQljb250aW51ZTsgLyogTlBF IGFscmVhZHkgZGlzYWJsZWQgb3Igbm90IHByZXNlbnQgKi8KKwkJaWYgKG5wZV9yZXNldChucGUp KQorCQkJY29udGludWU7CisJCW5wZS0+dmFsaWQgPSAxOworCX0KKwlyZXR1cm4gMDsKK30KKwor Y29yZWRldmljZV9pbml0Y2FsbChucGVfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNo LWl4cDR4eC9xbWdyLmMgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9xbWdyLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiNjUyMgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtL21hY2gtaXhwNHh4L3FtZ3IuYwpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIEludGVsIElY UDR4eCBRdWV1ZSBNYW5hZ2VyIGRyaXZlciBmb3IgTGludXgKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNp bmNsdWRlIDxtYWNoL3FtZ3IuaD4KKworc3RhdGljIHUzMiB1c2VkX3NyYW1fYml0bWFwWzRdOyAv KiAxMjggMTYtZHdvcmQgcGFnZXMgKi8KKworI2lmIERFQlVHX1FNR1IKK2NoYXIgcW1ncl9xdWV1 ZV9kZXNjc1tIQUxGX1FVRVVFU11bMzJdOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfVVNFX0lS UQorCitzdGF0aWMgdm9pZCAoKmlycV9oYW5kbGVyc1tIQUxGX1FVRVVFU10pKHZvaWQgKnBkZXYp Oworc3RhdGljIHZvaWQgKmlycV9wZGV2c1tIQUxGX1FVRVVFU107CisKK3ZvaWQgcW1ncl9zZXRf aXJxKHVuc2lnbmVkIGludCBxdWV1ZSwgaW50IHNyYywKKwkJICB2b2lkICgqaGFuZGxlcikodm9p ZCAqcGRldiksIHZvaWQgKnBkZXYpCit7CisJY29uc3QgdTMyICpyZWc7CisJaW50IGJpdDsKKwlC VUdfT04oc3JjID4gUVVFVUVfSVJRX1NSQ19OT1RfRlVMTCk7CisJcmVnID0gJnFtZ3JfcmVncy0+ aXJxc3JjW3F1ZXVlID4+IDNdOyAvKiA4IHF1ZXVlcyBwZXIgdTMyICovCisJYml0ID0gKHF1ZXVl ICUgOCkgKiA0OyAvKiAzIGJpdHMgKyAxIHJlc2VydmVkIGJpdCBwZXIgcXVldWUgKi8KKwlfX3Jh d193cml0ZWwoKF9fcmF3X3JlYWRsKHJlZykgJiB+KDcgPDwgYml0KSkgfCAoc3JjIDw8IGJpdCks IHJlZyk7CisKKwlpcnFfaGFuZGxlcnNbcXVldWVdID0gaGFuZGxlcjsKKwlpcnFfcGRldnNbcXVl dWVdID0gcGRldjsKK30KKworCitzdGF0aWMgdm9pZCBxbWdyX2lycTFfYTAodm9pZCAqZGF0YSkK K3sKKwlpbnQgaTsKKwl1MzIgZW5fYml0bWFwLCBzcmMsIHN0YXQ7CisKKwkvKiBBQ0sgLSBpdCBt YXkgY2xlYXIgYW55IGJpdHMgc28gZG9uJ3QgcmVseSBvbiBpdCAqLworCV9fcmF3X3dyaXRlbCgw eEZGRkZGRkZGLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsKKworCWVuX2JpdG1hcCA9IHFtZ3Jf cmVncy0+aXJxZW5bMF07CisJd2hpbGUgKGVuX2JpdG1hcCkgeworCQlpID0gZmxzKGVuX2JpdG1h cCkgLSAxOyAvKiBudW1iZXIgb2YgdGhlIGxhc3QgImxvdyIgcXVldWUgKi8KKwkJZW5fYml0bWFw ICY9IH5CSVQoaSk7CisJCXNyYyA9IHFtZ3JfcmVncy0+aXJxc3JjW2kgPj4gM107CisJCXN0YXQg PSBxbWdyX3JlZ3MtPnN0YXQxW2kgPj4gM107CisJCWlmIChzcmMgJiA0KSAvKiB0aGUgSVJRIGNv bmRpdGlvbiBpcyBpbnZlcnRlZCAqLworCQkJc3RhdCA9IH5zdGF0OworCQlpZiAoc3RhdCAmIEJJ VChzcmMgJiAzKSkKKwkJCWlycV9oYW5kbGVyc1tpXShpcnFfcGRldnNbaV0pOworCX0KK30KKwor CitzdGF0aWMgdm9pZCBxbWdyX2lycTEodm9pZCAqZGF0YSkKK3sKKwlpbnQgaTsKKwl1MzIgcmVx X2JpdG1hcCA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOworCisJaWYgKCFy ZXFfYml0bWFwKQorCQlyZXR1cm47CisJX19yYXdfd3JpdGVsKHJlcV9iaXRtYXAsICZxbWdyX3Jl Z3MtPmlycXN0YXRbMF0pOyAvKiBBQ0sgKi8KKworCXdoaWxlIChyZXFfYml0bWFwKSB7CisJCWkg PSBmbHMocmVxX2JpdG1hcCkgLSAxOyAvKiBudW1iZXIgb2YgdGhlIGxhc3QgcXVldWUgKi8KKwkJ cmVxX2JpdG1hcCAmPSB+QklUKGkpOworCQlpcnFfaGFuZGxlcnNbaV0oaXJxX3BkZXZzW2ldKTsK Kwl9Cit9CisKKwordm9pZCBxbWdyX2VuYWJsZV9pcnEodW5zaWduZWQgaW50IHF1ZXVlKQorewor CXUzMiBtYXNrID0gMSA8PCBxdWV1ZTsKKworCV9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbCgmcW1n cl9yZWdzLT5pcnFlblswXSkgfCBtYXNrLAorCQkgICAgICZxbWdyX3JlZ3MtPmlycWVuWzBdKTsK K30KKwordm9pZCBxbWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwl1MzIg bWFzayA9IDEgPDwgcXVldWU7CisKKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoJnFtZ3JfcmVn cy0+aXJxZW5bMF0pICYgfm1hc2ssCisJCSAgICAgJnFtZ3JfcmVncy0+aXJxZW5bMF0pOworCV9f cmF3X3dyaXRlbChtYXNrLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsgLyogY2xlYXIgKi8KK30K KworI2VuZGlmIC8qIENPTkZJR19VU0VfSVJRICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaGlm dF9tYXNrKHUzMiAqbWFzaykKK3sKKwltYXNrWzNdID0gbWFza1szXSA8PCAxIHwgbWFza1syXSA+ PiAzMTsKKwltYXNrWzJdID0gbWFza1syXSA8PCAxIHwgbWFza1sxXSA+PiAzMTsKKwltYXNrWzFd ID0gbWFza1sxXSA8PCAxIHwgbWFza1swXSA+PiAzMTsKKwltYXNrWzBdIDw8PSAxOworfQorCisj aWYgREVCVUdfUU1HUgordm9pZCBxbWdyX3JlcXVlc3RfcXVldWUodW5zaWduZWQgaW50IHF1ZXVl LCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJCXVuc2lnbmVkIGludCBuZWFybHlf ZW1wdHlfd2F0ZXJtYXJrLAorCQkJdW5zaWduZWQgaW50IG5lYXJseV9mdWxsX3dhdGVybWFyaywK KwkJCWNvbnN0IGNoYXIgKmRlc2NfZm9ybWF0LCBjb25zdCBjaGFyKiBuYW1lKQorI2Vsc2UKK3Zv aWQgX19xbWdyX3JlcXVlc3RfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQg bGVuIC8qIGR3b3JkcyAqLywKKwkJCSAgdW5zaWduZWQgaW50IG5lYXJseV9lbXB0eV93YXRlcm1h cmssCisJCQkgIHVuc2lnbmVkIGludCBuZWFybHlfZnVsbF93YXRlcm1hcmspCisjZW5kaWYKK3sK Kwl1MzIgY2ZnLCBhZGRyID0gMCwgbWFza1s0XTsgLyogaW4gMTYtZHdvcmRzICovCisKKwlCVUdf T04ocXVldWUgPj0gSEFMRl9RVUVVRVMpOworCUJVR19PTigobmVhcmx5X2VtcHR5X3dhdGVybWFy ayB8IG5lYXJseV9mdWxsX3dhdGVybWFyaykgJiB+Nyk7CisKKwlzd2l0Y2ggKGxlbikgeworCWNh c2UgIDE2OgorCQljZmcgPSAwIDw8IDI0OworCQltYXNrWzBdID0gMHgxOworCQlicmVhazsKKwlj YXNlICAzMjoKKwkJY2ZnID0gMSA8PCAyNDsKKwkJbWFza1swXSA9IDB4MzsKKwkJYnJlYWs7CisJ Y2FzZSAgNjQ6CisJCWNmZyA9IDIgPDwgMjQ7CisJCW1hc2tbMF0gPSAweEY7CisJCWJyZWFrOwor CWNhc2UgMTI4OgorCQljZmcgPSAzIDw8IDI0OworCQltYXNrWzBdID0gMHhGRjsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQorCisJY2ZnIHw9IG5lYXJseV9lbXB0eV93YXRlcm1h cmsgPDwgMjY7CisJY2ZnIHw9IG5lYXJseV9mdWxsX3dhdGVybWFyayA8PCAyOTsKKwlsZW4gLz0g MTY7IC8qIGluIDE2LWR3b3JkczogMSwgMiwgNCBvciA4ICovCisJbWFza1sxXSA9IG1hc2tbMl0g PSBtYXNrWzNdID0gMDsKKworCUJVR19PTihfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zcmFtW3F1 ZXVlXSkpOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKCEodXNlZF9zcmFtX2JpdG1hcFswXSAmIG1h c2tbMF0pICYmCisJCSAgICAhKHVzZWRfc3JhbV9iaXRtYXBbMV0gJiBtYXNrWzFdKSAmJgorCQkg ICAgISh1c2VkX3NyYW1fYml0bWFwWzJdICYgbWFza1syXSkgJiYKKwkJICAgICEodXNlZF9zcmFt X2JpdG1hcFszXSAmIG1hc2tbM10pKQorCQkJYnJlYWs7IC8qIGZvdW5kIGZyZWUgc3BhY2UgKi8K KworCQlhZGRyKys7CisJCXNoaWZ0X21hc2sobWFzayk7CisJCWlmIChhZGRyICsgbGVuID4gQVJS QVlfU0laRShxbWdyX3JlZ3MtPnNyYW0pKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6IG5v IGZyZWUgU1JBTSBzcGFjZSBmb3IiCisJCQkJIiBxdWV1ZSAlaVxuIiwgcXVldWUpOworCQkJQlVH KCk7CisJCX0KKwl9CisKKwl1c2VkX3NyYW1fYml0bWFwWzBdIHw9IG1hc2tbMF07CisJdXNlZF9z cmFtX2JpdG1hcFsxXSB8PSBtYXNrWzFdOworCXVzZWRfc3JhbV9iaXRtYXBbMl0gfD0gbWFza1sy XTsKKwl1c2VkX3NyYW1fYml0bWFwWzNdIHw9IG1hc2tbM107CisJX19yYXdfd3JpdGVsKGNmZyB8 IChhZGRyIDw8IDE0KSwgJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pOworI2lmIERFQlVHX1FNR1IK KwkvKiBubyBzbnByaW50ZigpICovCisJc3ByaW50ZihxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSwg ZGVzY19mb3JtYXQsIG5hbWUpOworCWZwcmludGYoc3RkZXJyLCAicW1ncjogcmVxdWVzdGVkIHF1 ZXVlICVzKCVpKSBhZGRyID0gMHglMDJYXG4iLAorCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSwg cXVldWUsIGFkZHIpOworI2VuZGlmCit9CisKK3ZvaWQgcW1ncl9yZWxlYXNlX3F1ZXVlKHVuc2ln bmVkIGludCBxdWV1ZSkKK3sKKwl1MzIgY2ZnLCBhZGRyLCBtYXNrWzRdOworCisJQlVHX09OKHF1 ZXVlID49IEhBTEZfUVVFVUVTKTsgLyogbm90IGluIHZhbGlkIHJhbmdlICovCisKKwljZmcgPSBf X3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSk7CisJYWRkciA9IChjZmcgPj4gMTQp ICYgMHhGRjsKKworCUJVR19PTighYWRkcik7IC8qIG5vdCByZXF1ZXN0ZWQgKi8KKworCXN3aXRj aCAoKGNmZyA+PiAyNCkgJiAzKSB7CisJY2FzZSAwOiBtYXNrWzBdID0gMHgxOyBicmVhazsKKwlj YXNlIDE6IG1hc2tbMF0gPSAweDM7IGJyZWFrOworCWNhc2UgMjogbWFza1swXSA9IDB4RjsgYnJl YWs7CisJY2FzZSAzOiBtYXNrWzBdID0gMHhGRjsgYnJlYWs7CisJfQorCisJbWFza1sxXSA9IG1h c2tbMl0gPSBtYXNrWzNdID0gMDsKKworCXdoaWxlIChhZGRyLS0pCisJCXNoaWZ0X21hc2sobWFz ayk7CisKKyNpZiBERUJVR19RTUdSCisJZnByaW50ZihzdGRlcnIsICJxbWdyOiByZWxlYXNpbmcg cXVldWUgJXMoJWkpXG4iLAorCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSwgcXVldWUpOworCXFt Z3JfcXVldWVfZGVzY3NbcXVldWVdWzBdID0gJ1x4MCc7CisjZW5kaWYKKwlfX3Jhd193cml0ZWwo MCwgJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pOworCisJdXNlZF9zcmFtX2JpdG1hcFswXSAmPSB+ bWFza1swXTsKKwl1c2VkX3NyYW1fYml0bWFwWzFdICY9IH5tYXNrWzFdOworCXVzZWRfc3JhbV9i aXRtYXBbMl0gJj0gfm1hc2tbMl07CisJdXNlZF9zcmFtX2JpdG1hcFszXSAmPSB+bWFza1szXTsK KyNpZmRlZiBDT05GSUdfVVNFX0lSUQorCWlycV9oYW5kbGVyc1txdWV1ZV0gPSBOVUxMOyAvKiBj YXRjaCBJUlEgYnVncyAqLworI2VuZGlmCisKKwl3aGlsZSAoKGFkZHIgPSBxbWdyX2dldF9lbnRy eShxdWV1ZSkpKQorCQlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6IHJlbGVhc2VkIHF1ZXVlICVpIG5v dCBlbXB0eTogMHglMDhYXG4iLAorCQkJcXVldWUsIGFkZHIpOworfQorCitzdGF0aWMgaW50IF9f aW5pdCBxbWdyX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKyNpZmRlZiBDT05GSUdfVVNFX0lSUQor CWludGVycnVwdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjZW5kaWYKKworCS8qIHJlc2V0IHFtZ3Ig cmVnaXN0ZXJzICovCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlfX3Jhd193cml0ZWwo MHgzMzMzMzMzMywgJnFtZ3JfcmVncy0+c3RhdDFbaV0pOworCQlfX3Jhd193cml0ZWwoMCwgJnFt Z3JfcmVncy0+aXJxc3JjW2ldKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworCQlf X3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3RhdDJbaV0pOworCQlfX3Jhd193cml0ZWwoMHhG RkZGRkZGRiwgJnFtZ3JfcmVncy0+aXJxc3RhdFtpXSk7IC8qIGNsZWFyICovCisJCV9fcmF3X3dy aXRlbCgwLCAmcW1ncl9yZWdzLT5pcnFlbltpXSk7CisJfQorCisJX19yYXdfd3JpdGVsKDB4RkZG RkZGRkYsICZxbWdyX3JlZ3MtPnN0YXRuZV9oKTsKKwlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVn cy0+c3RhdGZfaCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgUVVFVUVTOyBpKyspCisJCV9fcmF3X3dy aXRlbCgwLCAmcW1ncl9yZWdzLT5zcmFtW2ldKTsKKworI2lmZGVmIENPTkZJR19VU0VfSVJRCisJ aWYgKGNwdV9pc19peHA0MnhfcmV2X2EwKCkpCisJCWhhbmRsZXIgPSBxbWdyX2lycTFfYTA7CisJ ZWxzZQorCQloYW5kbGVyID0gcW1ncl9pcnExOworCisJaXJxX2luc3RhbGxfaGFuZGxlcihJWFA0 MjVfUU0xX0lSUSwgaGFuZGxlciwgTlVMTCk7CisjZW5kaWYKKwl1c2VkX3NyYW1fYml0bWFwWzBd ID0gMHhGOyAvKiA0IGZpcnN0IHBhZ2VzIHJlc2VydmVkIGZvciBjb25maWcgKi8KKwlyZXR1cm4g MDsKK30KKworY29yZWRldmljZV9pbml0Y2FsbChxbWdyX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L0tjb25maWcKaW5kZXggNjlmMzM1Mi4uZGY2 ZTQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9L Y29uZmlnCkBAIC03Nyw2ICs3NywxNCBAQCBjb25maWcgRFJJVkVSX05FVF9NQUNCCiAJZGVwZW5k cyBvbiBIQVNfTUFDQgogCXNlbGVjdCBNSUlERVYKIAorY29uZmlnIERSSVZFUl9ORVRfSVhQNFhY X0VUSAorCXRyaXN0YXRlICJJbnRlbCBJWFA0eHggRXRoZXJuZXQgc3VwcG9ydCIKKwlkZXBlbmRz IG9uIEFSQ0hfSVhQNFhYICYmIElYUDRYWF9OUEUgJiYgSVhQNFhYX1FNR1IKKwlzZWxlY3QgTUlJ REVWCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYnVpbHQtaW4gRXRo ZXJuZXQgcG9ydHMKKwkgIG9uIElYUDR4eCBwcm9jZXNzb3IuCisKIGNvbmZpZyBEUklWRVJfTkVU X1RBUAogCWJvb2wgInRhcCBFdGhlcm5ldCBkcml2ZXIiCiAJZGVwZW5kcyBvbiBMSU5VWApkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9NYWtlZmlsZQppbmRl eCA5NmQzZDMyLi45N2NiNDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9NYWtlZmlsZQorKysg Yi9kcml2ZXJzL25ldC9NYWtlZmlsZQpAQCAtMTEsMyArMTEsNCBAQCBvYmotJChDT05GSUdfRFJJ VkVSX05FVF9NQUNCKQkJKz0gbWFjYi5vCiBvYmotJChDT05GSUdfRFJJVkVSX05FVF9UQVApCQkr PSB0YXAubwogb2JqLSQoQ09ORklHX01JSURFVikJCQkrPSBtaWlkZXYubwogb2JqLSQoQ09ORklH X05FVF9VU0IpCQkJKz0gdXNiLworb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfSVhQNFhYX0VUSCkJ Kz0gaXhwNHh4X2V0aC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peHA0eHhfZXRoLmMgYi9k cml2ZXJzL25ldC9peHA0eHhfZXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNzFlNmQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2l4cDR4eF9ldGguYwpA QCAtMCwwICsxLDc2MyBAQAorLyoKKyAqIEludGVsIElYUDR4eCBFdGhlcm5ldCBkcml2ZXIgZm9y IExpbnV4CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0Bw bS53YXcucGw+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2 ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBFdGhlcm5ldCBwb3J0 IGNvbmZpZyAoMHgwMCBpcyBub3QgcHJlc2VudCBvbiBJWFA0MlgpOgorICoKKyAqIGxvZ2ljYWwg cG9ydAkJMHgwMAkJMHgxMAkJMHgyMAorICogTlBFCQkJMCAoTlBFLUEpCTEgKE5QRS1CKQkyIChO UEUtQykKKyAqIHBoeXNpY2FsIHBvcnQJMgkJMAkJMQorICogUlggcXVldWUgKHZhcmlhYmxlKQky MAkJMjEJCTIyCisgKiBUWCBxdWV1ZQkJMjMJCTI0CQkyNQorICogUlgtZnJlZSBxdWV1ZQkyNgkJ MjcJCTI4CisgKiBUWC1kb25lIHF1ZXVlIGlzIGFsd2F5cyAzMSwgcGVyLXBvcnQgUlggcXVldWUg aXMgY29uZmlndXJhYmxlCisgKgorICoKKyAqIFF1ZXVlIGVudHJpZXM6CisgKiBiaXRzIDAgLT4g MSAgLSBOUEUgSUQgKFJYIGFuZCBUWC1kb25lKQorICogYml0cyAwIC0+IDIgIC0gcHJpb3JpdHkg KFRYLCBwZXIgODAyLjFEKQorICogYml0cyAzIC0+IDQgIC0gcG9ydCBJRCAodXNlci1zZXQ/KQor ICogYml0cyA1IC0+IDMxIC0gcGh5c2ljYWwgZGVzY3JpcHRvciBhZGRyZXNzCisgKi8KKworI2lu Y2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4K KyNpbmNsdWRlIDxtaWlkZXYuaD4KKyNpbmNsdWRlIDxuZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5o PgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxtYWNoL3BsYXRmb3Jt Lmg+CisjaW5jbHVkZSA8bWFjaC9jcHUuaD4KKyNpbmNsdWRlIDxtYWNoL25wZS5oPgorI2luY2x1 ZGUgPG1hY2gvcW1nci5oPgorCisjZGVmaW5lIERFQlVHX0RFU0MJCTAKKyNkZWZpbmUgREVCVUdf UlgJCTAKKyNkZWZpbmUgREVCVUdfVFgJCTAKKyNkZWZpbmUgREVCVUdfUEtUX0JZVEVTCQkwCisj ZGVmaW5lIERFQlVHX01ESU8JCTAKKyNkZWZpbmUgREVCVUdfT1BFTgkJMAorI2RlZmluZSBERUJV R19DTE9TRQkJMAorCisjZGVmaW5lIFJYX0RFU0NTCQkxNiAvKiBhbHNvIGxlbmd0aCBvZiBhbGwg UlggcXVldWVzICovCisjZGVmaW5lIFRYX0RFU0NTCQkxNiAvKiBhbHNvIGxlbmd0aCBvZiBhbGwg VFggcXVldWVzICovCisjZGVmaW5lIFRYRE9ORV9RVUVVRV9MRU4JMTYgLyogZHdvcmRzICovCisK KyNkZWZpbmUgTUFYX01SVQkJCTE1MzYgLyogMHg2MDAgKi8KKyNkZWZpbmUgUlhfQlVGRl9TSVpF CQlNQVhfTVJVCisKKyNkZWZpbmUgTUFYX01ESU9fUkVUUklFUwkxMDAgLyogbWljcm9zZWNvbmRz LCB0eXBpY2FsbHkgMzAgY3ljbGVzICovCisjZGVmaW5lIE1BWF9DTE9TRV9XQUlUCQkxMDAwIC8q IG1pY3Jvc2Vjb25kcywgdHlwaWNhbGx5IDItMyBjeWNsZXMgKi8KKyNkZWZpbmUgRVRIX0FMRU4J CTYKKworI2RlZmluZSBQSFlTSUNBTF9JRChwb3J0KQkoKChwb3J0KS0+bnBlLT5pZCArIDIpICUg MykKKyNkZWZpbmUgTE9HSUNBTF9JRChwb3J0KQkoKHBvcnQpLT5ucGUtPmlkIDw8IDQpCisjZGVm aW5lIFJYX1FVRVVFKHBvcnQpCQkoKHBvcnQpLT5ucGUtPmlkICsgMjApIC8qIGNhbiBiZSBjaGFu Z2VkICovCisjZGVmaW5lIFRYX1FVRVVFKHBvcnQpCQkoKHBvcnQpLT5ucGUtPmlkICsgMjMpCisj ZGVmaW5lIFJYRlJFRV9RVUVVRShwb3J0KQkoKHBvcnQpLT5ucGUtPmlkICsgMjYpCisjZGVmaW5l IFRYRE9ORV9RVUVVRQkJMzEKKworLyogVFggQ29udHJvbCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUg VFhfQ05UUkwwX1RYX0VOCQkweDAxCisjZGVmaW5lIFRYX0NOVFJMMF9IQUxGRFVQTEVYCTB4MDIK KyNkZWZpbmUgVFhfQ05UUkwwX1JFVFJZCQkweDA0CisjZGVmaW5lIFRYX0NOVFJMMF9QQURfRU4J MHgwOAorI2RlZmluZSBUWF9DTlRSTDBfQVBQRU5EX0ZDUwkweDEwCisjZGVmaW5lIFRYX0NOVFJM MF8yREVGRVIJMHgyMAorI2RlZmluZSBUWF9DTlRSTDBfUk1JSQkJMHg0MCAvKiByZWR1Y2VkIE1J SSAqLworI2RlZmluZSBUWF9DTlRSTDFfUkVUUklFUwkweDBGIC8qIDQgYml0cyAqLworCisvKiBS WCBDb250cm9sIFJlZ2lzdGVycyAqLworI2RlZmluZSBSWF9DTlRSTDBfUlhfRU4JCTB4MDEKKyNk ZWZpbmUgUlhfQ05UUkwwX1BBRFNUUklQX0VOCTB4MDIKKyNkZWZpbmUgUlhfQ05UUkwwX1NFTkRf RkNTCTB4MDQKKyNkZWZpbmUgUlhfQ05UUkwwX1BBVVNFX0VOCTB4MDgKKyNkZWZpbmUgUlhfQ05U UkwwX0xPT1BfRU4JMHgxMAorI2RlZmluZSBSWF9DTlRSTDBfQUREUl9GTFRSX0VOCTB4MjAKKyNk ZWZpbmUgUlhfQ05UUkwwX1JYX1JVTlRfRU4JMHg0MAorI2RlZmluZSBSWF9DTlRSTDBfQkNBU1Rf RElTCTB4ODAKKyNkZWZpbmUgUlhfQ05UUkwxX0RFRkVSX0VOCTB4MDEKKworLyogQ29yZSBDb250 cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIENPUkVfUkVTRVQJCTB4MDEKKyNkZWZpbmUgQ09SRV9S WF9GSUZPX0ZMVVNICTB4MDIKKyNkZWZpbmUgQ09SRV9UWF9GSUZPX0ZMVVNICTB4MDQKKyNkZWZp bmUgQ09SRV9TRU5EX0pBTQkJMHgwOAorI2RlZmluZSBDT1JFX01EQ19FTgkJMHgxMCAvKiBNRElP IHVzaW5nIE5QRS1CIEVUSC0wIG9ubHkgKi8KKworI2RlZmluZSBERUZBVUxUX1RYX0NOVFJMMAko VFhfQ05UUkwwX1RYX0VOIHwgVFhfQ05UUkwwX1JFVFJZIHwgICAgICAgXAorCQkJCSBUWF9DTlRS TDBfUEFEX0VOIHwgVFhfQ05UUkwwX0FQUEVORF9GQ1MgfCBcCisJCQkJIFRYX0NOVFJMMF8yREVG RVIpCisjZGVmaW5lIERFRkFVTFRfUlhfQ05UUkwwCVJYX0NOVFJMMF9SWF9FTgorI2RlZmluZSBE RUZBVUxUX0NPUkVfQ05UUkwJQ09SRV9NRENfRU4KKworCisvKiBOUEUgbWVzc2FnZSBjb2RlcyAq LworI2RlZmluZSBOUEVfR0VUU1RBVFVTCQkJIDB4MDAKKyNkZWZpbmUgTlBFX0VEQl9TRVRQT1JU QUREUkVTUwkJIDB4MDEKKyNkZWZpbmUgTlBFX0VEQl9HRVRNQUNBRERSRVNTREFUQUJBU0UJIDB4 MDIKKyNkZWZpbmUgTlBFX0VEQl9TRVRNQUNBRERSRVNTU0RBVEFCQVNFCSAweDAzCisjZGVmaW5l IE5QRV9HRVRTVEFUUwkJCSAweDA0CisjZGVmaW5lIE5QRV9SRVNFVFNUQVRTCQkJIDB4MDUKKyNk ZWZpbmUgTlBFX1NFVE1BWEZSQU1FTEVOR1RIUwkJIDB4MDYKKyNkZWZpbmUgTlBFX1ZMQU5fU0VU UlhUQUdNT0RFCQkgMHgwNworI2RlZmluZSBOUEVfVkxBTl9TRVRERUZBVUxUUlhWSUQJIDB4MDgK KyNkZWZpbmUgTlBFX1ZMQU5fU0VUUE9SVFZMQU5UQUJMRUVOVFJZCSAweDA5CisjZGVmaW5lIE5Q RV9WTEFOX1NFVFBPUlRWTEFOVEFCTEVSQU5HRQkgMHgwQQorI2RlZmluZSBOUEVfVkxBTl9TRVRS WFFPU0VOVFJZCQkgMHgwQgorI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUSURFWFRSQUNUSU9OTU9E RSAweDBDCisjZGVmaW5lIE5QRV9TVFBfU0VUQkxPQ0tJTkdTVEFURQkgMHgwRAorI2RlZmluZSBO UEVfRldfU0VURklSRVdBTExNT0RFCQkgMHgwRQorI2RlZmluZSBOUEVfUENfU0VURlJBTUVDT05U Uk9MRFVSQVRJT05JRCAweDBGCisjZGVmaW5lIE5QRV9QQ19TRVRBUE1BQ1RBQkxFCQkgMHgxMQor I2RlZmluZSBOUEVfU0VUTE9PUEJBQ0tfTU9ERQkJIDB4MTIKKyNkZWZpbmUgTlBFX1BDX1NFVEJT U0lEVEFCTEUJCSAweDEzCisjZGVmaW5lIE5QRV9BRERSRVNTX0ZJTFRFUl9DT05GSUcJIDB4MTQK KyNkZWZpbmUgTlBFX0FQUEVOREZDU0NPTkZJRwkJIDB4MTUKKyNkZWZpbmUgTlBFX05PVElGWV9N QUNfUkVDT1ZFUllfRE9ORQkgMHgxNgorI2RlZmluZSBOUEVfTUFDX1JFQ09WRVJZX1NUQVJUCQkg MHgxNworCitzdHJ1Y3QgZXRoX3JlZ3MgeworCXUzMiB0eF9jb250cm9sWzJdLCBfX3JlczFbMl07 CQkgLyogMDAwICovCisJdTMyIHJ4X2NvbnRyb2xbMl0sIF9fcmVzMlsyXTsJCSAvKiAwMTAgKi8K Kwl1MzIgcmFuZG9tX3NlZWQsIF9fcmVzM1szXTsJCSAvKiAwMjAgKi8KKwl1MzIgcGFydGlhbF9l bXB0eV90aHJlc2hvbGQsIF9fcmVzNDsJIC8qIDAzMCAqLworCXUzMiBwYXJ0aWFsX2Z1bGxfdGhy ZXNob2xkLCBfX3JlczU7CSAvKiAwMzggKi8KKwl1MzIgdHhfc3RhcnRfYnl0ZXMsIF9fcmVzNlsz XTsJCSAvKiAwNDAgKi8KKwl1MzIgdHhfZGVmZXJyYWwsIHJ4X2RlZmVycmFsLCBfX3JlczdbMl07 IC8qIDA1MCAqLworCXUzMiB0eF8ycGFydF9kZWZlcnJhbFsyXSwgX19yZXM4WzJdOwkgLyogMDYw ICovCisJdTMyIHNsb3RfdGltZSwgX19yZXM5WzNdOwkJIC8qIDA3MCAqLworCXUzMiBtZGlvX2Nv bW1hbmRbNF07CQkJIC8qIDA4MCAqLworCXUzMiBtZGlvX3N0YXR1c1s0XTsJCQkgLyogMDkwICov CisJdTMyIG1jYXN0X21hc2tbNl0sIF9fcmVzMTBbMl07CQkgLyogMEEwICovCisJdTMyIG1jYXN0 X2FkZHJbNl0sIF9fcmVzMTFbMl07CQkgLyogMEMwICovCisJdTMyIGludF9jbG9ja190aHJlc2hv bGQsIF9fcmVzMTJbM107CSAvKiAwRTAgKi8KKwl1MzIgaHdfYWRkcls2XSwgX19yZXMxM1s2MV07 CQkgLyogMEYwICovCisJdTMyIGNvcmVfY29udHJvbDsJCQkgLyogMUZDICovCit9OworCisvKiBO UEUgbWVzc2FnZSBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBtc2cgeworCXU4IGNtZCwgZXRoX2lkLCBw YXJhbXNbNl07Cit9OworCisvKiBFdGhlcm5ldCBwYWNrZXQgZGVzY3JpcHRvciwgMzIgYnl0ZXMg Ki8KK3N0cnVjdCBkZXNjIHsKKwl1OCAqbmV4dDsgICAgLyogcG9pbnRlciB0byBuZXh0IGJ1ZmZl ciwgdW51c2VkICovCisKKwl1MTYgYnVmX2xlbjsgLyogYnVmZmVyIGxlbmd0aCAqLworCXUxNiBw a3RfbGVuOyAvKiBwYWNrZXQgbGVuZ3RoICovCisJdTggKmRhdGE7ICAgIC8qIHBvaW50ZXIgdG8g ZGF0YSBidWZmZXIgaW4gUkFNICovCisJdTggZGVzdF9pZDsKKwl1OCBzcmNfaWQ7CisJdTE2IGZs YWdzOworCXU4IHFvczsKKwl1OCBwYWRsZW47CisJdTE2IHZsYW5fdGNpOworCisJdTggZHN0X21h Y1tFVEhfQUxFTl0sIHNyY19tYWNbRVRIX0FMRU5dOworfTsKKworc3RydWN0IHBvcnQgeworCXN0 cnVjdCBkZXNjIHJ4X2Rlc2NfdGFiW1JYX0RFU0NTXTsgLyogYWxpZ25tZW50OiAweDEwICovCisJ c3RydWN0IGRlc2MgdHhfZGVzY190YWJbVFhfREVTQ1NdOworCXU4ICpidWZmX3RhYjsKKwlzdHJ1 Y3QgZXRoX3JlZ3MgKnJlZ3M7CisJc3RydWN0IG5wZSAqbnBlOworCXU4IGZpcm13YXJlWzRdOwor CXN0cnVjdCBldGhfcGxhdF9pbmZvICpwaW5mbzsKKwlzdHJ1Y3QgbWlpX2RldmljZSBtaWlkZXY7 CisJc3RydWN0IGV0aF9kZXZpY2UgZXRoOworfTsKKworI2RlZmluZSByeF9idWZmKHBvcnQsIG4p ICgocG9ydCktPmJ1ZmZfdGFiICsgTUFYX01SVSAqIChuKSkKKyNkZWZpbmUgdHhfYnVmZihwb3J0 LCBuKSAoKHBvcnQpLT5idWZmX3RhYiArIE1BWF9NUlUgKiAoUlhfREVTQ1MgKyAobikpKQorCitz dGF0aWMgc3RydWN0IGV0aF9yZWdzICptZGlvX3JlZ3M7IC8qIG1kaW8gY29tbWFuZCBhbmQgc3Rh dHVzIG9ubHkgKi8KKworc3RhdGljIGludCBpeHA0eHhfbWRpb19jbWQoaW50IHdyaXRlLCBjb25z dCBzdHJ1Y3QgZGV2aWNlX2QgKmRldiwgdW5zaWduZWQgY2hhciBwaHlfaWQsCisJCQkgICB1bnNp Z25lZCBjaGFyIGxvY2F0aW9uLCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKwlpbnQgY3ljbGVz ID0gMDsKKworCWlmIChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbM10pICYg MHg4MCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSBub3QgcmVhZHkgdG8gdHJhbnNt aXRcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAod3Jp dGUpIHsKKwkJX19yYXdfd3JpdGVsKHZhbHVlICYgMHhGRiwgJm1kaW9fcmVncy0+bWRpb19jb21t YW5kWzBdKTsKKwkJX19yYXdfd3JpdGVsKHZhbHVlID4+IDgsICZtZGlvX3JlZ3MtPm1kaW9fY29t bWFuZFsxXSk7CisJfQorCV9fcmF3X3dyaXRlbCgoKHBoeV9pZCA8PCA1KSB8IGxvY2F0aW9uKSAm IDB4RkYsCisJCSAgICAgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzJdKTsKKwlfX3Jhd193cml0 ZWwoKHBoeV9pZCA+PiAzKSB8ICh3cml0ZSA8PCAyKSB8IDB4ODAgLyogR08gKi8sCisJCSAgICAg Jm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzNdKTsKKworCXdoaWxlICgoY3ljbGVzIDwgTUFYX01E SU9fUkVUUklFUykgJiYKKwkgICAgICAgKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9fY29t bWFuZFszXSkgJiAweDgwKSkgeworCQl1ZGVsYXkoMSk7CisJCWN5Y2xlcysrOworCX0KKworCWlm IChjeWNsZXMgPT0gTUFYX01ESU9fUkVUUklFUykgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6 IE1JSSB3cml0ZSBmYWlsZWRcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCk7CisJCXJldHVybiAtMTsK Kwl9CisKKyNpZiBERUJVR19NRElPCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBtZGlvXyVzKCkg dG9vayAlaSBjeWNsZXNcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCwKKwkJd3JpdGUgPyAid3JpdGUi IDogInJlYWQiLCBjeWNsZXMpOworI2VuZGlmCisKKwlpZiAod3JpdGUpCisJCXJldHVybiAwOwor CisJaWYgKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9fc3RhdHVzWzNdKSAmIDB4ODApIHsK KyNpZiBERUJVR19NRElPCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIHJlYWQgZmFpbGVk XG4iLCBkZXYtPm5hbWUsIGRldi0+aWQpOworI2VuZGlmCisJCXJldHVybiAtMTsKKwl9CisKKwl2 YWx1ZSA9IChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX3N0YXR1c1swXSkgJiAweEZGKSB8 CisJCSgoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNbMV0pICYgMHhGRikgPDwg OCk7CisjaWYgREVCVUdfTURJTworCWZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIHJlYWQgWyVp XSAtPiAweCVYXG4iLCBkZXYtPm5hbWUsIGRldi0+aWQsIGxvY2F0aW9uLCB2YWx1ZSk7CisjZW5k aWYKKworCXJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIGludCBpeHA0eHhfbWRpb19yZWFkKHN0 cnVjdCBtaWlfZGV2aWNlICptaWksIGludCBwaHlfaWQsIGludCBsb2NhdGlvbikKK3sKKwlpbnQg cmV0ID0gaXhwNHh4X21kaW9fY21kKDAsICZtaWktPmRldiwgcGh5X2lkLCBsb2NhdGlvbiwgMCk7 CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBpeHA0eHhfbWRpb193cml0ZShzdHJ1Y3Qg bWlpX2RldmljZSAqbWlpLCBpbnQgcGh5X2lkLCBpbnQgbG9jYXRpb24sIGludCB2YWx1ZSkKK3sK KwlpbnQgcmV0ID0gaXhwNHh4X21kaW9fY21kKDEsICZtaWktPmRldiwgcGh5X2lkLCBsb2NhdGlv biwgdmFsdWUpOworI2lmIERFQlVHX01ESU8KKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSB3 cml0ZSBbJWldIDwtIDB4JVgsIGVyciA9ICVpXG4iLAorCQltaWktPmRldi5uYW1lLCBtaWktPmRl di5pZCwgbG9jYXRpb24sIHZhbHVlLCByZXQpOworI2VuZGlmCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBpeHA0eHhfYWRqdXN0X2xpbmsoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKK3sK KwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+cHJpdjsKKwlpbnQgcmVnLCBzcGVlZCwgZHVwbGV4 OworCisJbWlpZGV2X3dhaXRfYW5lZygmcG9ydC0+bWlpZGV2KTsKKworCXJlZyA9IG1paV9yZWFk KCZwb3J0LT5taWlkZXYsIHBvcnQtPm1paWRldi5hZGRyZXNzLCBNSUlfQk1TUik7CisJaWYgKHJl ZyA8IDApCisJCWdvdG8gZXJyX291dDsKKwlpZiAoIShyZWcgJiBCTVNSX0xTVEFUVVMpKSB7CisJ CXByaW50ZigiJXMlZDogTGluayBpcyBkb3duIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQp OworCQlyZXR1cm4gLTE7CisJfQorCisJcmVnID0gbWlpX3JlYWQoJnBvcnQtPm1paWRldiwgcG9y dC0+bWlpZGV2LmFkZHJlc3MsIE1JSV9CTUNSKTsKKwlpZiAocmVnIDwgMCkKKwkJZ290byBlcnJf b3V0OworCisJaWYgKHJlZyAmIEJNQ1JfQU5FTkFCTEUpIHsKKwkJcmVnID0gbWlpX3JlYWQoJnBv cnQtPm1paWRldiwgcG9ydC0+bWlpZGV2LmFkZHJlc3MsIE1JSV9MUEEpOworCQlpZiAocmVnIDwg MCkKKwkJCWdvdG8gZXJyX291dDsKKwkJZHVwbGV4ID0gcmVnICYgTFBBX0RVUExFWDsKKwkJc3Bl ZWQgPSByZWcgJiBMUEFfMTAwID8gMTAwIDogMTA7CisJfSBlbHNlIHsKKwkJZHVwbGV4ID0gcmVn ICYgQk1DUl9GVUxMRFBMWDsKKwkJc3BlZWQgPSByZWcgJiBCTUNSX1NQRUVEMTAwID8gMTAwIDog MTA7CisJfQorCisJaWYgKGR1cGxleCkKKwkJX19yYXdfd3JpdGVsKERFRkFVTFRfVFhfQ05UUkww ICYgflRYX0NOVFJMMF9IQUxGRFVQTEVYLAorCQkJICAgICAmcG9ydC0+cmVncy0+dHhfY29udHJv bFswXSk7CisJZWxzZQorCQlfX3Jhd193cml0ZWwoREVGQVVMVF9UWF9DTlRSTDAgfCBUWF9DTlRS TDBfSEFMRkRVUExFWCwKKwkJCSAgICAgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMF0pOworCisJ ZnByaW50ZihzdGRlcnIsICIlcyVkOiBsaW5rIHVwLCBzcGVlZCAldSBNYi9zLCAlcyBkdXBsZXhc biIsCisJCWRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBzcGVlZCwgZHVwbGV4ID8gImZ1bGwi IDogImhhbGYiKTsKKwlyZXR1cm4gMDsKKworZXJyX291dDoKKwlwcmludGYoIiVzJWQ6IGZhaWxl ZCB0byByZWFkIE1JSSBkYXRhXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisJcmV0 dXJuIC1FSU87Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWJ1Z19wa3Qoc3RydWN0IGV0aF9k ZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZnVuYywKKwkJCSAgICAgdTggKmRhdGEsIGludCBsZW4p Cit7CisjaWYgREVCVUdfUEtUX0JZVEVTCisJaW50IGk7CisKKwlmcHJpbnRmKHN0ZGVyciwgIiVz JWQ6ICVzKCU0aSkgIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGZ1bmMsIGxlbik7CisJ Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJCWlmIChpID49IERFQlVHX1BLVF9CWVRFUykK KwkJCWJyZWFrOworCQlmcHJpbnRmKHN0ZGVyciwgIiVzJTAyWCIsCisJCQkoKGkgPT0gNikgfHwg KGkgPT0gMTIpIHx8IChpID49IDE0KSkgPyAiICIgOiAiIiwKKwkJCWRhdGFbaV0pOworCX0KKwlm cHJpbnRmKHN0ZGVyciwgIlxuIik7CisjZW5kaWYKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQg ZGVidWdfZGVzYyhzdHJ1Y3QgZGVzYyAqZGVzYykKK3sKKyNpZiBERUJVR19ERVNDCisJZnByaW50 ZihzdGRlcnIsICIlMDdYOiAlWCAlM1ggJTNYICUwN1ggJTJYIDwgJTJYICU0WCAlWCIKKwkJIiAl WCAlWCAlMDJYJTAyWCUwMlglMDJYJTAyWCUwMlggPCAlMDJYJTAyWCUwMlglMDJYJTAyWCUwMlhc biIsCisJCSh1MzIpZGVzYywgKHUzMilkZXNjLT5uZXh0LCBkZXNjLT5idWZfbGVuLCBkZXNjLT5w a3RfbGVuLAorCQkodTMyKWRlc2MtPmRhdGEsIGRlc2MtPmRlc3RfaWQsIGRlc2MtPnNyY19pZCwg ZGVzYy0+ZmxhZ3MsCisJCWRlc2MtPnFvcywgZGVzYy0+cGFkbGVuLCBkZXNjLT52bGFuX3RjaSwK KwkJZGVzYy0+ZHN0X21hY1swXSwgZGVzYy0+ZHN0X21hY1sxXSwgZGVzYy0+ZHN0X21hY1syXSwK KwkJZGVzYy0+ZHN0X21hY1szXSwgZGVzYy0+ZHN0X21hY1s0XSwgZGVzYy0+ZHN0X21hY1s1XSwK KwkJZGVzYy0+c3JjX21hY1swXSwgZGVzYy0+c3JjX21hY1sxXSwgZGVzYy0+c3JjX21hY1syXSwK KwkJZGVzYy0+c3JjX21hY1szXSwgZGVzYy0+c3JjX21hY1s0XSwgZGVzYy0+c3JjX21hY1s1XSk7 CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBpbnQgcXVldWVfZ2V0X2Rlc2ModW5zaWduZWQg aW50IHF1ZXVlLCBzdHJ1Y3QgcG9ydCAqcG9ydCwKKwkJCQkgaW50IGlzX3R4KQoreworCXUzMiBh ZGRyLCBuOworCXN0cnVjdCBkZXNjICp0YWI7CisKKwlpZiAoIShhZGRyID0gcW1ncl9nZXRfZW50 cnkocXVldWUpKSkKKwkJcmV0dXJuIC0xOworCisJYWRkciAmPSB+MHgxRjsgLyogbWFzayBvdXQg bm9uLWFkZHJlc3MgYml0cyAqLworCXRhYiA9IGlzX3R4ID8gcG9ydC0+dHhfZGVzY190YWIgOiBw b3J0LT5yeF9kZXNjX3RhYjsKKwluID0gKGFkZHIgLSAodTMyKXRhYikgLyBzaXplb2Yoc3RydWN0 IGRlc2MpOworCUJVR19PTihuID49IChpc190eCA/IFRYX0RFU0NTIDogUlhfREVTQ1MpKTsKKwlk ZWJ1Z19kZXNjKChzdHJ1Y3QgZGVzYyopYWRkcik7CisJQlVHX09OKHRhYltuXS5uZXh0KTsKKwly ZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHF1ZXVlX3B1dF9kZXNjKHVuc2lnbmVk IGludCBxdWV1ZSwgc3RydWN0IGRlc2MgKmRlc2MpCit7CisJZGVidWdfZGVzYyhkZXNjKTsKKwlC VUdfT04oKCh1MzIpZGVzYykgJiAweDFGKTsKKwlxbWdyX3B1dF9lbnRyeShxdWV1ZSwgKHUzMilk ZXNjKTsKKwkvKiBEb24ndCBjaGVjayBmb3IgcXVldWUgb3ZlcmZsb3cgaGVyZSwgd2UndmUgYWxs b2NhdGVkIHN1ZmZpY2llbnQKKwkgICBsZW5ndGggYW5kIHF1ZXVlcyA+PSAzMiBkb24ndCBzdXBw b3J0IHRoaXMgY2hlY2sgYW55d2F5LiAqLworfQorCisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9w b2xsKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYt PnByaXY7CisJc3RydWN0IGRlc2MgKmRlc2M7CisJdTggKmJ1ZmY7CisJaW50IG4sIGxlbjsKKwor I2lmIERFQlVHX1JYCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfcG9sbFxuIiwgZGV2LT5k ZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisKKwlpZiAoKG4gPSBxdWV1ZV9nZXRfZGVz YyhSWF9RVUVVRShwb3J0KSwgcG9ydCwgMCkpIDwgMCkgeworI2lmIERFQlVHX1JYCisJCWZwcmlu dGYoc3RkZXJyLCAiJXMlZDogZXRoX3BvbGwgPSBubyBwYWNrZXQgcmVjZWl2ZWRcbiIsIGRldi0+ ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCQlyZXR1cm4gMDsKKwl9CisKKwliYXJy aWVyKCk7CisJZGVzYyA9ICZwb3J0LT5yeF9kZXNjX3RhYltuXTsKKwlidWZmID0gcnhfYnVmZihw b3J0LCBuKTsKKwlsZW4gPSBkZXNjLT5wa3RfbGVuOworCS8qIHByb2Nlc3MgcmVjZWl2ZWQgZnJh bWUgKi8KKwltZW1jcHkoKHZvaWQgKilOZXRSeFBhY2tldHNbMF0sIGJ1ZmYsIGxlbik7CisJZGVi dWdfcGt0KGRldiwgIlJYIiwgZGVzYy0+ZGF0YSwgbGVuKTsKKworCS8qIHB1dCB0aGUgbmV3IGJ1 ZmZlciBvbiBSWC1mcmVlIHF1ZXVlICovCisJZGVzYy0+YnVmX2xlbiA9IE1BWF9NUlU7CisJZGVz Yy0+cGt0X2xlbiA9IDA7CisJcXVldWVfcHV0X2Rlc2MoUlhGUkVFX1FVRVVFKHBvcnQpLCBkZXNj KTsKKworCW5ldF9yZWNlaXZlKE5ldFJ4UGFja2V0c1swXSwgbGVuKTsKKworI2lmIERFQlVHX1JY CisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfcG9sbCBlbmRcbiIsIGRldi0+ZGV2Lm5hbWUs IGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQgaXhw NHh4X2V0aF94bWl0KHN0cnVjdCBldGhfZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4p Cit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJaW50IG47CisJc3RydWN0IGRl c2MgKmRlc2M7CisKKyNpZiBERUJVR19UWAorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3ht aXRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCisJaWYgKHVubGlr ZWx5KGxlbiA+IDE1MDApKQorCQlyZXR1cm4gLTE7CisKKwlkZWJ1Z19wa3QoZGV2LCAiVFgiLCBk YXRhLCBsZW4pOworCisJaWYgKChuID0gcXVldWVfZ2V0X2Rlc2MoVFhET05FX1FVRVVFLCBwb3J0 LCAxKSkgPCAwKQorCQlyZXR1cm4gLTE7IC8qIG5vIGZyZWUgYnVmZmVycyAqLworCWRlc2MgPSAm cG9ydC0+dHhfZGVzY190YWJbbl07CisJZGVzYy0+ZGF0YSA9IHR4X2J1ZmYocG9ydCwgbik7CisJ ZGVzYy0+YnVmX2xlbiA9IGRlc2MtPnBrdF9sZW4gPSBsZW47CisJbWVtY3B5KGRlc2MtPmRhdGEs IGRhdGEsIGxlbik7CisKKwkvKiBOUEUgZmlybXdhcmUgcGFkcyBzaG9ydCBmcmFtZXMgd2l0aCB6 ZXJvcyBpbnRlcm5hbGx5ICovCisJLy8gd21iKCk7CisJYmFycmllcigpOworCXF1ZXVlX3B1dF9k ZXNjKFRYX1FVRVVFKHBvcnQpLCBkZXNjKTsKKworI2lmIERFQlVHX1RYCisJZnByaW50ZihzdGRl cnIsICIlcyVkOiBldGhfeG1pdCBlbmRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsK KyNlbmRpZgorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZXF1ZXN0X3F1ZXVlcyhzdHJ1 Y3QgcG9ydCAqcG9ydCwgc3RydWN0IGV0aF9kZXZpY2UgKmRldikKK3sKKwlxbWdyX3JlcXVlc3Rf cXVldWUoUlhGUkVFX1FVRVVFKHBvcnQpLCBSWF9ERVNDUywgMCwgMCwgIiVzOlJYLWZyZWUiLCBk ZXYtPmRldi5uYW1lKTsKKwlxbWdyX3JlcXVlc3RfcXVldWUoUlhfUVVFVUUocG9ydCksIFJYX0RF U0NTLCAwLCAwLCAiJXM6UlgiLCBkZXYtPmRldi5uYW1lKTsKKwlxbWdyX3JlcXVlc3RfcXVldWUo VFhfUVVFVUUocG9ydCksIFRYX0RFU0NTLCAwLCAwLCAiJXM6VFgiLCBkZXYtPmRldi5uYW1lKTsK KworCS8qIENvbW1vbiBUWC1kb25lIHF1ZXVlIGhhbmRsZXMgYnVmZmVycyBzZW50IG91dCBieSB0 aGUgTlBFcyAqLworCXFtZ3JfcmVxdWVzdF9xdWV1ZShUWERPTkVfUVVFVUUsIFRYRE9ORV9RVUVV RV9MRU4sIDAsIDAsCisJCQkgICAiJXM6VFgtZG9uZSIsIGRldi0+ZGV2Lm5hbWUpOworfQorCitz dGF0aWMgdm9pZCByZWxlYXNlX3F1ZXVlcyhzdHJ1Y3QgcG9ydCAqcG9ydCkKK3sKKwlxbWdyX3Jl bGVhc2VfcXVldWUoUlhGUkVFX1FVRVVFKHBvcnQpKTsKKwlxbWdyX3JlbGVhc2VfcXVldWUoUlhf UVVFVUUocG9ydCkpOworCXFtZ3JfcmVsZWFzZV9xdWV1ZShUWF9RVUVVRShwb3J0KSk7CisJcW1n cl9yZWxlYXNlX3F1ZXVlKFRYRE9ORV9RVUVVRSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfcXVl dWVzKHN0cnVjdCBwb3J0ICpwb3J0KQoreworCWludCBpOworCisJbWVtc2V0KHBvcnQtPnR4X2Rl c2NfdGFiLCAwLCBzaXplb2YocG9ydC0+dHhfZGVzY190YWIpKTsgLyogZGVzY3MgKi8KKwltZW1z ZXQocG9ydC0+cnhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0LT5yeF9kZXNjX3RhYikpOworCisJ LyogU2V0dXAgUlggYnVmZmVycyAqLworCWZvciAoaSA9IDA7IGkgPCBSWF9ERVNDUzsgaSsrKSB7 CisJCXN0cnVjdCBkZXNjICpkZXNjID0gJnBvcnQtPnJ4X2Rlc2NfdGFiW2ldOworCQlkZXNjLT5i dWZfbGVuID0gTUFYX01SVTsKKwkJZGVzYy0+ZGF0YSA9IHJ4X2J1ZmYocG9ydCwgaSk7CisJfQor fQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfb3BlbihzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2OworCXN0cnVjdCBucGUgKm5wZSA9IHBv cnQtPm5wZTsKKwlzdHJ1Y3QgbXNnIG1zZzsKKwlpbnQgaSwgZXJyOworCisjaWYgREVCVUdfT1BF TgorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogb3BlbmluZyAlcFxuIiwgZGV2LT5kZXYubmFtZSwg ZGV2LT5kZXYuaWQsIGRldik7CisjZW5kaWYKKworCWlmICghbnBlX3J1bm5pbmcobnBlKSkgewor CQllcnIgPSBucGVfbG9hZF9maXJtd2FyZShucGUpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVy cjsKKworCQlpZiAobnBlX3JlY3ZfbWVzc2FnZShucGUsICZtc2csICJFVEhfR0VUX1NUQVRVUyIp KSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6ICVzIG5vdCByZXNwb25kaW5nXG4iLCBkZXYt PmRldi5uYW1lLCBkZXYtPmRldi5pZCwgbnBlLT5uYW1lKTsKKwkJCXJldHVybiAtRUlPOworCQl9 CisJCW1lbWNweShwb3J0LT5maXJtd2FyZSwgbXNnLnBhcmFtcyArIDIsIDQpOworCX0KKworCWlm IChpeHA0eHhfYWRqdXN0X2xpbmsoZGV2KSkKKwkJcmV0dXJuIC1FTk9MSU5LOworCisJcG9ydC0+ YnVmZl90YWIgPSB4bWFsbG9jKChSWF9ERVNDUyArIFRYX0RFU0NTKSAqIE1BWF9NUlUpOworCisJ bWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKwltc2cuY21kID0gTlBFX1ZMQU5fU0VUUlhR T1NFTlRSWTsKKwltc2cuZXRoX2lkID0gTE9HSUNBTF9JRChwb3J0KTsKKwltc2cucGFyYW1zWzNd ID0gUlhfUVVFVUUocG9ydCkgfCAweDgwOworCW1zZy5wYXJhbXNbNF0gPSBSWF9RVUVVRShwb3J0 KSA+PiA0OyAvKiBNU0Igb2Ygb2Zmc2V0ICovCisJbXNnLnBhcmFtc1s1XSA9IFJYX1FVRVVFKHBv cnQpIDw8IDQ7IC8qIExTQiBvZiBvZmZzZXQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7 CisJCW1zZy5wYXJhbXNbMV0gPSBpOworCQlpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQt Pm5wZSwgJm1zZywgIkVUSF9TRVRfUlhRIikpIHsKKwkJCWVyciA9IC1FSU87CisJCQlnb3RvIG91 dDsKKwkJfQorCX0KKworCW1zZy5jbWQgPSBOUEVfRURCX1NFVFBPUlRBRERSRVNTOworCW1zZy5l dGhfaWQgPSBQSFlTSUNBTF9JRChwb3J0KTsKKwltZW1jcHkobXNnLnBhcmFtcywgcG9ydC0+cGlu Zm8tPmh3YWRkciwgRVRIX0FMRU4pOworCWlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+ bnBlLCAmbXNnLCAiRVRIX1NFVF9NQUMiKSkgeworCQllcnIgPSAtRUlPOworCQlnb3RvIG91dDsK Kwl9CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5jbWQgPSBOUEVfRldf U0VURklSRVdBTExNT0RFOworCW1zZy5ldGhfaWQgPSBMT0dJQ0FMX0lEKHBvcnQpOworCWlmIChu cGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX1NFVF9GSVJFV0FMTF9N T0RFIikpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJcmVxdWVzdF9xdWV1 ZXMocG9ydCwgZGV2KTsKKwlpbml0X3F1ZXVlcyhwb3J0KTsKKworCWZvciAoaSA9IDA7IGkgPCBF VEhfQUxFTjsgaSsrKQorCQlfX3Jhd193cml0ZWwocG9ydC0+cGluZm8tPmh3YWRkcltpXSwgJnBv cnQtPnJlZ3MtPmh3X2FkZHJbaV0pOworCV9fcmF3X3dyaXRlbCgweDA4LCAmcG9ydC0+cmVncy0+ cmFuZG9tX3NlZWQpOworCV9fcmF3X3dyaXRlbCgweDEyLCAmcG9ydC0+cmVncy0+cGFydGlhbF9l bXB0eV90aHJlc2hvbGQpOworCV9fcmF3X3dyaXRlbCgweDMwLCAmcG9ydC0+cmVncy0+cGFydGlh bF9mdWxsX3RocmVzaG9sZCk7CisJX19yYXdfd3JpdGVsKDB4MDgsICZwb3J0LT5yZWdzLT50eF9z dGFydF9ieXRlcyk7CisJX19yYXdfd3JpdGVsKDB4MTUsICZwb3J0LT5yZWdzLT50eF9kZWZlcnJh bCk7CisJX19yYXdfd3JpdGVsKDB4MDgsICZwb3J0LT5yZWdzLT50eF8ycGFydF9kZWZlcnJhbFsw XSk7CisJX19yYXdfd3JpdGVsKDB4MDcsICZwb3J0LT5yZWdzLT50eF8ycGFydF9kZWZlcnJhbFsx XSk7CisJX19yYXdfd3JpdGVsKDB4ODAsICZwb3J0LT5yZWdzLT5zbG90X3RpbWUpOworCV9fcmF3 X3dyaXRlbCgweDAxLCAmcG9ydC0+cmVncy0+aW50X2Nsb2NrX3RocmVzaG9sZCk7CisKKwkvKiBQ b3B1bGF0ZSBxdWV1ZXMgd2l0aCBidWZmZXJzLCBubyBmYWlsdXJlIGFmdGVyIHRoaXMgcG9pbnQg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgVFhfREVTQ1M7IGkrKykKKwkJcXVldWVfcHV0X2Rlc2MoVFhE T05FX1FVRVVFLCAmcG9ydC0+dHhfZGVzY190YWJbaV0pOworCisJZm9yIChpID0gMDsgaSA8IFJY X0RFU0NTOyBpKyspCisJCXF1ZXVlX3B1dF9kZXNjKFJYRlJFRV9RVUVVRShwb3J0KSwgJnBvcnQt PnJ4X2Rlc2NfdGFiW2ldKTsKKworCV9fcmF3X3dyaXRlbChUWF9DTlRSTDFfUkVUUklFUywgJnBv cnQtPnJlZ3MtPnR4X2NvbnRyb2xbMV0pOworCV9fcmF3X3dyaXRlbChERUZBVUxUX1RYX0NOVFJM MCwgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMF0pOworCV9fcmF3X3dyaXRlbCgwLCAmcG9ydC0+ cmVncy0+cnhfY29udHJvbFsxXSk7CisJX19yYXdfd3JpdGVsKERFRkFVTFRfUlhfQ05UUkwwLCAm cG9ydC0+cmVncy0+cnhfY29udHJvbFswXSk7CisKKyNpZiAwCisJcW1ncl9zZXRfaXJxKFJYX1FV RVVFKHBvcnQpLCBRVUVVRV9JUlFfU1JDX05PVF9FTVBUWSwKKwkJICAgICBldGhfcnhfaXJxLCBk ZXYpOworCXFtZ3Jfc2V0X2lycShUWERPTkVfUVVFVUUsIFFVRVVFX0lSUV9TUkNfTk9UX0VNUFRZ LAorCQkgICAgIGV0aF90eGRvbmVfaXJxLCBOVUxMKTsKKwlxbWdyX2VuYWJsZV9pcnEoVFhET05F X1FVRVVFKTsKKyNlbmRpZgorCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisjaWYgREVC VUdfT1BFTgorCWZwcmludGYoc3RkZXJyLCAiJXMlZCBvcGVuZWRcbiIsIGRldi0+ZGV2Lm5hbWUs IGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCXJldHVybiAwOworb3V0OgorCWZyZWUocG9ydC0+YnVm Zl90YWIpOworCXBvcnQtPmJ1ZmZfdGFiID0gTlVMTDsKKyNpZiBERUJVR19PUEVOCisJZnByaW50 ZihzdGRlcnIsICIlcyVkIG9wZW4gZmFpbGVkICglaSlcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ ZGV2LmlkLCBlcnIpOworI2VuZGlmCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgaXhw NHh4X2V0aF9jbG9zZShzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwb3J0ICpw b3J0ID0gZGV2LT5wcml2OworCXN0cnVjdCBtc2cgbXNnOworCWludCBidWZmcyA9IFJYX0RFU0NT OyAvKiBhbGxvY2F0ZWQgUlggYnVmZmVycyAqLworCWludCBpOworCisjaWYgREVCVUdfQ0xPU0UK KwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGNsb3NpbmdcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ ZGV2LmlkKTsKKyNlbmRpZgorI2lmIDAKKwlxbWdyX2Rpc2FibGVfaXJxKFJYX1FVRVVFKHBvcnQp KTsKKyNlbmRpZgorCisJaWYgKCFwb3J0LT5idWZmX3RhYikKKwkJcmV0dXJuOyAvKiBhbHJlYWR5 IGNsb3NlZCAqLworCisJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFJYRlJFRV9RVUVVRShwb3J0KSwg cG9ydCwgMCkgPj0gMCkKKwkJYnVmZnMtLTsKKworCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNn KSk7CisJbXNnLmNtZCA9IE5QRV9TRVRMT09QQkFDS19NT0RFOworCW1zZy5ldGhfaWQgPSBMT0dJ Q0FMX0lEKHBvcnQpOworCW1zZy5wYXJhbXNbMV0gPSAxOworCWlmIChucGVfc2VuZF9yZWN2X21l c3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX0VOQUJMRV9MT09QQkFDSyIpKQorCQlmcHJpbnRm KHN0ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBlbmFibGUgbG9vcGJhY2tcbiIsIGRldi0+ZGV2Lm5h bWUsIGRldi0+ZGV2LmlkKTsKKworI2lmIERFQlVHX0NMT1NFCisJZnByaW50ZihzdGRlcnIsICIl cyVkOiBkcmFpbmluZyBSWCBxdWV1ZVxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwor I2VuZGlmCisJaSA9IDA7CisJZG8geyAvKiBkcmFpbiBSWCBidWZmZXJzICovCisJCXdoaWxlIChx dWV1ZV9nZXRfZGVzYyhSWF9RVUVVRShwb3J0KSwgcG9ydCwgMCkgPj0gMCkKKwkJCWJ1ZmZzLS07 CisJCWlmICghYnVmZnMpCisJCQlicmVhazsKKwkJaWYgKHFtZ3Jfc3RhdF9mdWxsKFRYRE9ORV9R VUVVRSkgJiYgIShpICUgMTApKSB7CisJCQkvKiB3ZSBoYXZlIHRvIGluamVjdCBzb21lIHBhY2tl dCAqLworCQkJc3RydWN0IGRlc2MgKmRlc2M7CisJCQlpbnQgbiA9IHF1ZXVlX2dldF9kZXNjKFRY RE9ORV9RVUVVRSwgcG9ydCwgMSk7CisJCQlCVUdfT04obiA8IDApOworCQkJZGVzYyA9ICZwb3J0 LT50eF9kZXNjX3RhYltuXTsKKwkJCWRlc2MtPmJ1Zl9sZW4gPSBkZXNjLT5wa3RfbGVuID0gMTsK KwkJCS8vd21iKCk7CisJCQliYXJyaWVyKCk7CisJCQlxdWV1ZV9wdXRfZGVzYyhUWF9RVUVVRShw b3J0KSwgZGVzYyk7CisJCX0KKwkJdWRlbGF5KDEpOworCX0gd2hpbGUgKCsraSA8IE1BWF9DTE9T RV9XQUlUKTsKKworCWlmIChidWZmcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiB1bmFibGUg dG8gZHJhaW4gUlggcXVldWUsICVpIGJ1ZmZlcihzKSBsZWZ0IGluIE5QRVxuIiwKKwkJCWRldi0+ ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBidWZmcyk7CisjaWYgREVCVUdfQ0xPU0UKKwlpZiAoIWJ1 ZmZzKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWluaW5nIFJYIHF1ZXVlIHRvb2sgJWkg Y3ljbGVzXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgaSk7CisjZW5kaWYKKworCWJ1 ZmZzID0gVFhfREVTQ1M7CisJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYX1FVRVVFKHBvcnQpLCBw b3J0LCAxKSA+PSAwKQorCQlidWZmcy0tOyAvKiBjYW5jZWwgVFggKi8KKworCWkgPSAwOworCWRv IHsKKwkJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9RVUVVRSwgcG9ydCwgMSkgPj0gMCkK KwkJCWJ1ZmZzLS07CisJCWlmICghYnVmZnMpCisJCQlicmVhazsKKwl9IHdoaWxlICgrK2kgPCBN QVhfQ0xPU0VfV0FJVCk7CisKKwlpZiAoYnVmZnMpCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDog dW5hYmxlIHRvIGRyYWluIFRYIHF1ZXVlLCAlaSBidWZmZXIocykgbGVmdCBpbiBOUEVcbiIsCisJ CQlkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgYnVmZnMpOworI2lmIERFQlVHX0NMT1NFCisJ aWYgKCFidWZmcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyVkOiBkcmFpbmluZyBUWCBxdWV1ZXMg dG9vayAlaSBjeWNsZXNcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBpKTsKKyNlbmRp ZgorCisJbXNnLnBhcmFtc1sxXSA9IDA7CisJaWYgKG5wZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0 LT5ucGUsICZtc2csICJFVEhfRElTQUJMRV9MT09QQkFDSyIpKQorCQlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IHVuYWJsZSB0byBkaXNhYmxlIGxvb3BiYWNrXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYt PmRldi5pZCk7CisKKyNpZiAwCisJcW1ncl9kaXNhYmxlX2lycShUWERPTkVfUVVFVUUpOworI2Vu ZGlmCisJcmVsZWFzZV9xdWV1ZXMocG9ydCk7CisJZnJlZShwb3J0LT5idWZmX3RhYik7CisJcG9y dC0+YnVmZl90YWIgPSBOVUxMOworI2lmIERFQlVHX0NMT1NFCisJZnByaW50ZihzdGRlcnIsICIl cyVkOiBjbG9zZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorfQor CitzdGF0aWMgaW50IGl4cDR4eF9ldGhfZ2V0X2h3YWRkcihzdHJ1Y3QgZXRoX2RldmljZSAqZXRo LCB1bnNpZ25lZCBjaGFyICphZGRyKQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZXRoLT5wcml2 OworCW1lbWNweShhZGRyLCBwb3J0LT5waW5mby0+aHdhZGRyLCA2KTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBpeHA0eHhfZXRoX3NldF9od2FkZHIoc3RydWN0IGV0aF9kZXZpY2UgKmV0 aCwgdW5zaWduZWQgY2hhciAqYWRkcikKK3sKKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGV0aC0+cHJp djsKKwltZW1jcHkocG9ydC0+cGluZm8tPmh3YWRkciwgYWRkciwgNik7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9pbml0KHN0cnVjdCBldGhfZGV2aWNlICpldGgpCit7 CisJc3RydWN0IHBvcnQgKnBvcnQgPSBldGgtPnByaXY7CisKKwlfX3Jhd193cml0ZWwoREVGQVVM VF9DT1JFX0NOVFJMIHwgQ09SRV9SRVNFVCwKKwkJICAgICAmcG9ydC0+cmVncy0+Y29yZV9jb250 cm9sKTsKKwl1ZGVsYXkoNTApOworCV9fcmF3X3dyaXRlbChERUZBVUxUX0NPUkVfQ05UUkwsICZw b3J0LT5yZWdzLT5jb3JlX2NvbnRyb2wpOworCXVkZWxheSg1MCk7CisKKwltaWlkZXZfcmVzdGFy dF9hbmVnKCZwb3J0LT5taWlkZXYpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGl4cDR4 eF9ldGhfcHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYpCit7CisJc3RydWN0IG5wZSAqbnBlOwor CXN0cnVjdCBwb3J0ICpwb3J0OworCXN0cnVjdCBldGhfcGxhdF9pbmZvICpwaW5mbyA9IGRldi0+ cGxhdGZvcm1fZGF0YTsKKworCWlmICghcGluZm8pIHsKKwkJZnByaW50ZihzdGRlcnIsICJpeHA0 eHhfZXRoOiBubyBwbGF0Zm9ybSBpbmZvcm1hdGlvblxuIik7CisJCXJldHVybiAtRU5PREVWOwor CX0KKworCWlmICghKG5wZSA9IG5wZV9yZXF1ZXN0KHBpbmZvLT5ucGUpKSkgeworCQlmcHJpbnRm KHN0ZGVyciwgIml4cDR4eF9ldGg6IHVuYWJsZSB0byBhY3F1aXJlIE5QRVxuIik7CisJCXJldHVy biAtRU5PREVWOworCX0KKworCXBvcnQgPSBtZW1hbGlnbigweDIwLCBzaXplb2YoKnBvcnQpKTsK KwltZW1zZXQocG9ydCwgMCwgc2l6ZW9mKCpwb3J0KSk7CisKKwlwb3J0LT5yZWdzID0gcGluZm8t PnJlZ3M7CisJcG9ydC0+bnBlID0gbnBlOworCXBvcnQtPnBpbmZvID0gcGluZm87CisJcG9ydC0+ ZXRoLmRldi5pZCA9IC0xOworCXBvcnQtPmV0aC5wcml2ID0gcG9ydDsKKwlwb3J0LT5ldGguaW5p dCA9IGl4cDR4eF9ldGhfaW5pdDsKKwlwb3J0LT5ldGgub3BlbiA9IGl4cDR4eF9ldGhfb3BlbjsK Kwlwb3J0LT5ldGguaGFsdCA9IGl4cDR4eF9ldGhfY2xvc2U7CisJcG9ydC0+ZXRoLnNlbmQgPSBp eHA0eHhfZXRoX3htaXQ7CisJcG9ydC0+ZXRoLnJlY3YgPSBpeHA0eHhfZXRoX3BvbGw7CisJcG9y dC0+ZXRoLmdldF9ldGhhZGRyID0gaXhwNHh4X2V0aF9nZXRfaHdhZGRyOworCXBvcnQtPmV0aC5z ZXRfZXRoYWRkciA9IGl4cDR4eF9ldGhfc2V0X2h3YWRkcjsKKworCXBvcnQtPm1paWRldi5kZXYu aWQgPSAtMTsKKwlwb3J0LT5taWlkZXYucmVhZCA9IGl4cDR4eF9tZGlvX3JlYWQ7CisJcG9ydC0+ bWlpZGV2LndyaXRlID0gaXhwNHh4X21kaW9fd3JpdGU7CisJcG9ydC0+bWlpZGV2LmFkZHJlc3Mg PSBwaW5mby0+cGh5OworCXBvcnQtPm1paWRldi5lZGV2ID0gJnBvcnQtPmV0aDsKKwltaWlfcmVn aXN0ZXIoJnBvcnQtPm1paWRldik7CisJZXRoX3JlZ2lzdGVyKCZwb3J0LT5ldGgpOworCXJldHVy biAwOworfQorCitzdGF0aWMgc3RydWN0IGRyaXZlcl9kIGl4cDR4eF9ldGhfZHJpdmVyID0gewor CS5uYW1lICA9ICJpeHA0eHhfZXRoIiwKKwkucHJvYmUgPSBpeHA0eHhfZXRoX3Byb2JlLAorfTsK Kworc3RhdGljIGludCBfX2luaXQgaXhwNHh4X2V0aF9tb2R1bGVfaW5pdCh2b2lkKQoreworCWlm IChjcHVfaXNfaXhwNDN4KCkpIHsKKwkJLyogSVhQNDN4IGxhY2tzIE5QRS1CIGFuZCB1c2VzIE5Q RS1DIGZvciBNSUkgUEhZIGFjY2VzcyAqLworCQlpZiAoIShpeHA0eHhfcmVhZF9mZWF0dXJlX2Jp dHMoKSAmIElYUDRYWF9GRUFUVVJFX05QRUNfRVRIKSkKKwkJCXJldHVybiAtRU5PU1lTOworCQlt ZGlvX3JlZ3MgPSAoc3RydWN0IGV0aF9yZWdzICopSVhQNFhYX0V0aENfQkFTRTsKKwl9IGVsc2Ug eworCQkvKiBBbGwgTUlJIFBIWSBhY2Nlc3NlcyB1c2UgTlBFLUIgRXRoZXJuZXQgcmVnaXN0ZXJz ICovCisJCWlmICghKGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cygpICYgSVhQNFhYX0ZFQVRVUkVf TlBFQl9FVEgwKSkKKwkJCXJldHVybiAtRU5PU1lTOworCQltZGlvX3JlZ3MgPSAoc3RydWN0IGV0 aF9yZWdzICopSVhQNFhYX0V0aEJfQkFTRTsKKwl9CisKKwlfX3Jhd193cml0ZWwoREVGQVVMVF9D T1JFX0NOVFJMLCAmbWRpb19yZWdzLT5jb3JlX2NvbnRyb2wpOworCisJcmVnaXN0ZXJfZHJpdmVy KCZpeHA0eHhfZXRoX2RyaXZlcik7CisJcmV0dXJuIDA7Cit9CisKK2RldmljZV9pbml0Y2FsbChp eHA0eHhfZXRoX21vZHVsZV9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3Nlcmlh bF9uczE2NTUwLmMgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5jCmluZGV4IDI5MDYx OWYuLjBmMjVjZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmMK KysrIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuYwpAQCAtMTAyLDcgKzEwMiwxMSBA QCBzdGF0aWMgdm9pZCBuczE2NTUwX3NlcmlhbF9pbml0X3BvcnQoc3RydWN0IGNvbnNvbGVfZGV2 aWNlICpjZGV2KQogCWJhdWRfZGl2aXNvciA9IG5zMTY1NTBfY2FsY19kaXZpc29yKGNkZXYsIENP TkZJR19CQVVEUkFURSk7CiAKIAkvKiBpbml0aWFsaXppbmcgdGhlIGRldmljZSBmb3IgdGhlIGZp cnN0IHRpbWUgKi8KKyNpZmRlZiBDT05GSUdfQVJDSF9JWFA0WFgKKwlwbGF0LT5yZWdfd3JpdGUo SUVSX1VVRSwgYmFzZSwgaWVyKTsgLyogRW5hYmxlIFVBUlQgb3BlcmF0aW9uICovCisjZWxzZQog CXBsYXQtPnJlZ193cml0ZSgweDAwLCBiYXNlLCBpZXIpOworI2VuZGlmCiAjaWZkZWYgQ09ORklH X0RSSVZFUl9TRVJJQUxfTlMxNjU1MF9PTUFQX0VYVEVOU0lPTlMKIAlwbGF0LT5yZWdfd3JpdGUo MHgwNywgYmFzZSwgbWRyMSk7CS8qIERpc2FibGUgKi8KICNlbmRpZgpAQCAtMTgxLDcgKzE4NSwx MSBAQCBzdGF0aWMgaW50IG5zMTY1NTBfc2V0YmF1ZHJhdGUoc3RydWN0IGNvbnNvbGVfZGV2aWNl ICpjZGV2LCBpbnQgYmF1ZF9yYXRlKQogCSAgICBjZGV2LT5kZXYtPnBsYXRmb3JtX2RhdGE7CiAJ dW5zaWduZWQgbG9uZyBiYXNlID0gY2Rldi0+ZGV2LT5tYXBfYmFzZTsKIAl1bnNpZ25lZCBpbnQg YmF1ZF9kaXZpc29yID0gbnMxNjU1MF9jYWxjX2Rpdmlzb3IoY2RldiwgYmF1ZF9yYXRlKTsKKyNp ZmRlZiBDT05GSUdfQVJDSF9JWFA0WFgKKwlwbGF0LT5yZWdfd3JpdGUoSUVSX1VVRSwgYmFzZSwg aWVyKTsgLyogRW5hYmxlIFVBUlQgb3BlcmF0aW9uICovCisjZWxzZQogCXBsYXQtPnJlZ193cml0 ZSgweDAwLCBiYXNlLCBpZXIpOworI2VuZGlmCiAJcGxhdC0+cmVnX3dyaXRlKExDUl9CS1NFLCBi YXNlLCBsY3IpOwogCXBsYXQtPnJlZ193cml0ZShiYXVkX2Rpdmlzb3IgJiAweGZmLCBiYXNlLCBk bGwpOwogCXBsYXQtPnJlZ193cml0ZSgoYmF1ZF9kaXZpc29yID4+IDgpICYgMHhmZiwgYmFzZSwg ZGxtKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmggYi9kcml2 ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5oCmluZGV4IGViMmZkMTAuLmJhMjBhNmYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmgKKysrIGIvZHJpdmVycy9zZXJp YWwvc2VyaWFsX25zMTY1NTAuaApAQCAtNTAsNiArNTAsOCBAQAogI2RlZmluZSBkbGwJCXJicgog I2RlZmluZSBkbG0JCWllcgogCisjZGVmaW5lIElFUl9VVUUJCTB4NDAJLyogVUFSVCBVbml0IEVu YWJsZSAoWFNjYWxlKSAqLworCiAjZGVmaW5lIEZDUl9GSUZPX0VOICAgICAweDAxCS8qIEZpZm8g ZW5hYmxlICovCiAjZGVmaW5lIEZDUl9SWFNSICAgICAgICAweDAyCS8qIFJlY2VpdmVyIHNvZnQg cmVzZXQgKi8KICNkZWZpbmUgRkNSX1RYU1IgICAgICAgIDB4MDQJLyogVHJhbnNtaXR0ZXIgc29m dCByZXNldCAqLwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=