From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAFCCC76199 for ; Sun, 16 Feb 2020 17:27:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A635D2086A for ; Sun, 16 Feb 2020 17:27:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A635D2086A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tronnes.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 47CCB6E466; Sun, 16 Feb 2020 17:27:06 +0000 (UTC) Received: from asav22.altibox.net (asav22.altibox.net [109.247.116.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC3A76E44F for ; Sun, 16 Feb 2020 17:27:02 +0000 (UTC) Received: from localhost.localdomain (unknown [81.166.168.211]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: noralf.tronnes@ebnett.no) by asav22.altibox.net (Postfix) with ESMTPSA id 297EC200E8; Sun, 16 Feb 2020 18:21:40 +0100 (CET) From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= To: broonie@kernel.org, balbi@kernel.org, lee.jones@linaro.org Subject: [RFC 4/9] pinctrl: Add Multifunction USB Device pinctrl driver Date: Sun, 16 Feb 2020 18:21:12 +0100 Message-Id: <20200216172117.49832-5-noralf@tronnes.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20200216172117.49832-1-noralf@tronnes.org> References: <20200216172117.49832-1-noralf@tronnes.org> MIME-Version: 1.0 X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=ZvHD1ezG c=1 sm=1 tr=0 a=OYZzhG0JTxDrWp/F2OJbnw==:117 a=OYZzhG0JTxDrWp/F2OJbnw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=IkcTkHD0fZMA:10 a=M51BFTxLslgA:10 a=SJz97ENfAAAA:8 a=zA0JEd7Wm40yEy5wBp4A:9 a=mvnLadNLvkWAnLlj:21 a=mjYpQo1dwepDeJSL:21 a=QEXdDO2ut3YA:10 a=vFet0B0WnEQeilDPIY6i:22 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VGhlIE11bHRpZnVuY3Rpb24gVVNCIERldmljZSBoYXMgb3B0aW9uYWwgc3VwcG9ydCBmb3IgZ3Bp byBhbmQgcGluCmNvbmZpZ3VyYXRpb24uIEludGVycnVwdHMgYXJlIHN1cHBvcnRlZCBpZiB0aGUg ZGV2aWNlIHN1cHBvcnRzIGl0LgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3Jh bGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9waW5jdHJsL0tjb25maWcgICAgICAgfCAgIDkg KwogZHJpdmVycy9waW5jdHJsL01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVycy9waW5jdHJs L3BpbmN0cmwtbXVkLmMgfCA2NTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog ZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtbXVkLmggfCAgODkgKysrKysKIDQgZmlsZXMgY2hhbmdl ZCwgNzU2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BpbmN0cmwv cGluY3RybC1tdWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGluY3RybC9waW5jdHJs LW11ZC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL0tjb25maWcgYi9kcml2ZXJzL3Bp bmN0cmwvS2NvbmZpZwppbmRleCBkZjBlZjY5ZGQ0NzQuLmVlMzUzMmM2NDQxMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9waW5jdHJsL0tjb25maWcKKysrIGIvZHJpdmVycy9waW5jdHJsL0tjb25maWcK QEAgLTM4NCw2ICszODQsMTUgQEAgY29uZmlnIFBJTkNUUkxfT0NFTE9UCiAJc2VsZWN0IE9GX0dQ SU8KIAlzZWxlY3QgUkVHTUFQX01NSU8KIAorY29uZmlnIFBJTkNUUkxfTVVECisJdHJpc3RhdGUg Ik11bHRpZnVuY3Rpb24gVVNCIERldmljZSBwaW5jdHJsIGRyaXZlciIKKwlkZXBlbmRzIG9uIE1G RF9NVUQKKwlzZWxlY3QgR0VORVJJQ19QSU5DT05GCisJc2VsZWN0IEdQSU9MSUIKKwlzZWxlY3Qg R1BJT0xJQl9JUlFDSElQCisJaGVscAorCSAgU3VwcG9ydCBmb3IgR1BJT3Mgb24gTXVsdGlmdW5j dGlvbiBVU0IgRGV2aWNlcy4KKwogc291cmNlICJkcml2ZXJzL3BpbmN0cmwvYWN0aW9ucy9LY29u ZmlnIgogc291cmNlICJkcml2ZXJzL3BpbmN0cmwvYXNwZWVkL0tjb25maWciCiBzb3VyY2UgImRy aXZlcnMvcGluY3RybC9iY20vS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9N YWtlZmlsZSBiL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZQppbmRleCA4NzlmMzEyYmZiNzUuLjc4 MmNjN2YyODZiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9waW5jdHJsL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvcGluY3RybC9NYWtlZmlsZQpAQCAtNDcsNiArNDcsNyBAQCBvYmotJChDT05GSUdfUElO Q1RSTF9JTkdFTklDKQkrPSBwaW5jdHJsLWluZ2VuaWMubwogb2JqLSQoQ09ORklHX1BJTkNUUkxf Uks4MDUpCSs9IHBpbmN0cmwtcms4MDUubwogb2JqLSQoQ09ORklHX1BJTkNUUkxfT0NFTE9UKQkr PSBwaW5jdHJsLW9jZWxvdC5vCiBvYmotJChDT05GSUdfUElOQ1RSTF9FUVVJTElCUklVTSkgICAr PSBwaW5jdHJsLWVxdWlsaWJyaXVtLm8KK29iai0kKENPTkZJR19QSU5DVFJMX01VRCkJKz0gcGlu Y3RybC1tdWQubwogCiBvYmoteQkJCQkrPSBhY3Rpb25zLwogb2JqLSQoQ09ORklHX0FSQ0hfQVNQ RUVEKQkrPSBhc3BlZWQvCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvcGluY3RybC1tdWQu YyBiL2RyaXZlcnMvcGluY3RybC9waW5jdHJsLW11ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uZjg5MGM4ZTY4NzU1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9waW5jdHJsL3BpbmN0cmwtbXVkLmMKQEAgLTAsMCArMSw2NTcgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisvKgorICogQ29weXJpZ2h0IDIwMjAgTm9y YWxmIFRyw7hubmVzCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JpdG1hcC5oPgorI2luY2x1ZGUg PGxpbnV4L2dwaW8vZHJpdmVyLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5j bHVkZSA8bGludXgvaXJxLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8 bGludXgvbWZkL211ZC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvcGluY29uZi5o PgorI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvcGlubXV4Lmg+CisjaW5jbHVkZSA8bGludXgvcmVn bWFwLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CisKKyNpbmNsdWRlICJjb3JlLmgiCisjaW5jbHVkZSAicGluY29uZi5oIgorI2luY2x1ZGUg InBpbm11eC5oIgorI2luY2x1ZGUgInBpbmN0cmwtdXRpbHMuaCIKKworI2luY2x1ZGUgInBpbmN0 cmwtbXVkLmgiCisKKy8qIFRlbXBvcmFyeSBkZWJ1Z2dpbmcgYWlkICovCitzdGF0aWMgdW5zaWdu ZWQgaW50IGRlYnVnID0gODsKKworI2RlZmluZSBwZGVidWcobGV2ZWwsIGZtdCwgLi4uKQkJCQlc CitkbyB7CQkJCQkJCVwKKwlpZiAoKGxldmVsKSA8PSBkZWJ1ZykJCQkJXAorCQlwcmludGsoS0VS Tl9ERUJVRyBmbXQsICMjX19WQV9BUkdTX18pOwlcCit9IHdoaWxlICgwKQorCitzdHJ1Y3QgbXVk X3BpbmN0cmxfcGluIHsKKwl1bnNpZ25lZCBpbnQgaXJxX3R5cGVzOworCXVuc2lnbmVkIGludCBp cnFfdHlwZTsKKwlib29sIGlycV9lbmFibGVkOworfTsKKworc3RydWN0IG11ZF9waW5jdHJsIHsK KwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCBt dWRfcGluY3RybF9waW4gKnBpbnM7CisJc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsX2RldjsKKwlz dHJ1Y3QgcGluY3RybF9kZXNjIHBjdGxfZGVzYzsKKwlzdHJ1Y3QgZ3Bpb19jaGlwIGdwaW9fY2hp cDsKKwlzdHJ1Y3QgaXJxX2NoaXAgaXJxX2NoaXA7CisJc3RydWN0IG11dGV4IGlycWxvY2s7IC8q IElSUSBidXMgbG9jayAqLworfTsKKworc3RhdGljIHVuc2lnbmVkIGludCBtdWRfcGluY3RybF9w aW5fcmVnKHVuc2lnbmVkIGludCBwaW4sIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisJcmV0dXJu IE1VRF9QSU5DVFJMX1JFR19QSU5fQkFTRSArIChwaW4gKiBNVURfUElOQ1RSTF9QSU5fQkxPQ0tf U0laRSkgKyBvZmZzZXQ7Cit9CisKK3N0YXRpYyBpbnQgbXVkX3BpbmN0cmxfcGluX3JlYWRfcmVn KHN0cnVjdCBtdWRfcGluY3RybCAqcGN0bCwgdW5zaWduZWQgaW50IHBpbiwKKwkJCQkgICAgdW5z aWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50ICp2YWwpCit7CisJcmV0dXJuIHJlZ21hcF9y ZWFkKHBjdGwtPnJlZ21hcCwgbXVkX3BpbmN0cmxfcGluX3JlZyhwaW4sIG9mZnNldCksIHZhbCk7 Cit9CisKK3N0YXRpYyBpbnQgbXVkX3BpbmN0cmxfcGluX3dyaXRlX3JlZyhzdHJ1Y3QgbXVkX3Bp bmN0cmwgKnBjdGwsIHVuc2lnbmVkIGludCBwaW4sCisJCQkJICAgICB1bnNpZ25lZCBpbnQgb2Zm c2V0LCB1bnNpZ25lZCBpbnQgdmFsKQoreworCXJldHVybiByZWdtYXBfd3JpdGUocGN0bC0+cmVn bWFwLCBtdWRfcGluY3RybF9waW5fcmVnKHBpbiwgb2Zmc2V0KSwgdmFsKTsKK30KKworc3RhdGlj IGludCBtdWRfcGluY3RybF9yZWFkX2JpdG1hcChzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBjdGwsIHVu c2lnbmVkIGludCByZWcsCisJCQkJICAgdW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBp bnQgbmJpdHMpCit7CisJdW5zaWduZWQgaW50IG5yZWdzID0gRElWX1JPVU5EX1VQKG5iaXRzLCAz Mik7CisJdTMyICp2YWxzOworCWludCByZXQ7CisKKwl2YWxzID0ga21hbGxvY19hcnJheShucmVn cywgc2l6ZW9mKCp2YWxzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF2YWxzKQorCQlyZXR1cm4gLUVO T01FTTsKKworCXJldCA9IHJlZ21hcF9idWxrX3JlYWQocGN0bC0+cmVnbWFwLCByZWcsIHZhbHMs IG5yZWdzKTsKKwlpZiAocmV0KQorCQlnb3RvIGZyZWU7CisKKwliaXRtYXBfZnJvbV9hcnIzMihi aXRtYXAsIHZhbHMsIG5iaXRzKTsKK2ZyZWU6CisJa2ZyZWUodmFscyk7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IG11ZF9waW5jdHJsX2dwaW9fcmVxdWVzdChzdHJ1Y3QgZ3Bpb19j aGlwICpnYywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBj dGwgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisJaW50IHJldDsKKworCXBkZWJ1ZygxLCAiJXM6 IG9mZnNldD0ldVxuIiwgX19mdW5jX18sIG9mZnNldCk7CisKKwlyZXQgPSBtdWRfcGluY3RybF9w aW5fd3JpdGVfcmVnKHBjdGwsIG9mZnNldCwgTVVEX1BJTl9HUElPX1JFUVVFU1QsIDEpOworCWlm IChyZXQgPT0gLUVCVVNZKSB7CisJCWRldl9lcnIocGN0bC0+ZGV2LAorCQkJInBpbiAldSBpcyBj bGFpbWVkIGJ5IGFub3RoZXIgZnVuY3Rpb24gb24gdGhlIFVTQiBkZXZpY2VcbiIsCisJCQlvZmZz ZXQpOworCQlyZXQgPSAtRUlOVkFMOyAvKiBmb2xsb3cgcGlubXV4LmM6cGluX3JlcXVlc3QoKSAq LworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIG11ZF9waW5jdHJsX2dwaW9f ZnJlZShzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKwlzdHJ1 Y3QgbXVkX3BpbmN0cmwgKnBjdGwgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisKKwlwZGVidWco MSwgIiVzOiBvZmZzZXQ9JXVcbiIsIF9fZnVuY19fLCBvZmZzZXQpOworCisJbXVkX3BpbmN0cmxf cGluX3dyaXRlX3JlZyhwY3RsLCBvZmZzZXQsIE1VRF9QSU5fR1BJT19GUkVFLCAxKTsKK30KKwor c3RhdGljIGludCBtdWRfcGluY3RybF9ncGlvX2dldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5z aWduZWQgaW50IG9mZnNldCkKK3sKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBjdGwgPSBncGlvY2hp cF9nZXRfZGF0YShnYyk7CisJdW5zaWduZWQgaW50IHZhbHVlOworCWludCByZXQ7CisKKwlyZXQg PSBtdWRfcGluY3RybF9waW5fcmVhZF9yZWcocGN0bCwgb2Zmc2V0LCBNVURfUElOX0xFVkVMLCAm dmFsdWUpOworCisJcmV0dXJuIHJldCA/IHJldCA6IHZhbHVlOworfQorCitzdGF0aWMgdm9pZCBt dWRfcGluY3RybF9ncGlvX3NldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5zaWduZWQgaW50IG9m ZnNldCwgaW50IHZhbHVlKQoreworCXN0cnVjdCBtdWRfcGluY3RybCAqcGN0bCA9IGdwaW9jaGlw X2dldF9kYXRhKGdjKTsKKwlpbnQgcmV0OworCisJcmV0ID0gbXVkX3BpbmN0cmxfcGluX3dyaXRl X3JlZyhwY3RsLCBvZmZzZXQsIE1VRF9QSU5fTEVWRUwsIHZhbHVlKTsKKwlpZiAocmV0KQorCQlk ZXZfZXJyX29uY2UocGN0bC0+ZGV2LCAiRmFpbGVkIHRvIHNldCBncGlvIG91dHB1dCwgZXJyb3I9 JWRcbiIsIHJldCk7Cit9CisKKy8qIEZJWE1FOiBSZW1vdmUgdGhpcyBjb21tZW50IHdoZW4gc2V0 dGxlZDogLmdldF9kaXJlY3Rpb24gcmV0dXJucyAwPW91dCwgMT1pbiAqLworc3RhdGljIGludCBt dWRfcGluY3RybF9ncGlvX2dldF9kaXJlY3Rpb24oc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2ln bmVkIGludCBvZmZzZXQpCit7CisJc3RydWN0IG11ZF9waW5jdHJsICpwY3RsID0gZ3Bpb2NoaXBf Z2V0X2RhdGEoZ2MpOworCXVuc2lnbmVkIGludCB2YWw7CisJaW50IHJldDsKKworCXJldCA9IG11 ZF9waW5jdHJsX3Bpbl9yZWFkX3JlZyhwY3RsLCBvZmZzZXQsIE1VRF9QSU5fRElSRUNUSU9OLCAm dmFsKTsKKworCXJldHVybiByZXQgPyByZXQgOiB2YWw7Cit9CisKK3N0YXRpYyBpbnQgbXVkX3Bp bmN0cmxfZ3Bpb19kaXJlY3Rpb25faW5wdXQoc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVk IGludCBvZmZzZXQpCit7CisJc3RydWN0IG11ZF9waW5jdHJsICpwY3RsID0gZ3Bpb2NoaXBfZ2V0 X2RhdGEoZ2MpOworCWludCByZXQ7CisKKwlyZXQgPSBtdWRfcGluY3RybF9waW5fd3JpdGVfcmVn KHBjdGwsIG9mZnNldCwgTVVEX1BJTl9ESVJFQ1RJT04sCisJCQkJCU1VRF9QSU5fRElSRUNUSU9O X0lOUFVUKTsKKwlpZiAocmV0ID09IC1FTk9UU1VQUCkgeworCQlkZXZfZXJyKHBjdGwtPmRldiwg InBpbiAldSBjYW4ndCBiZSB1c2VkIGFzIGFuIGlucHV0XG4iLCBvZmZzZXQpOworCQlyZXQgPSAt RUlPOyAvKiBncGlvbGliIHVzZXMgdGhpcyBlcnJvciBjb2RlICovCisJfQorCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCBtdWRfcGluY3RybF9ncGlvX2RpcmVjdGlvbl9vdXRwdXQoc3Ry dWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVkIGludCBvZmZzZXQsIGludCB2YWx1ZSkKK3sKKwlz dHJ1Y3QgbXVkX3BpbmN0cmwgKnBjdGwgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisJdW5zaWdu ZWQgaW50IHJlZ3ZhbDsKKwlpbnQgcmV0OworCisJcmVndmFsID0gdmFsdWUgPyBNVURfUElOX0RJ UkVDVElPTl9PVVRQVVRfSElHSCA6IE1VRF9QSU5fRElSRUNUSU9OX09VVFBVVF9MT1c7CisKKwly ZXQgPSBtdWRfcGluY3RybF9waW5fd3JpdGVfcmVnKHBjdGwsIG9mZnNldCwgTVVEX1BJTl9ESVJF Q1RJT04sIHJlZ3ZhbCk7CisJaWYgKHJldCA9PSAtRU5PVFNVUFApIHsKKwkJZGV2X2VycihwY3Rs LT5kZXYsICJwaW4gJXUgY2FuJ3QgYmUgdXNlZCBhcyBhbiBvdXRwdXRcbiIsIG9mZnNldCk7CisJ CXJldCA9IC1FSU87CisJfQorCisJcmV0dXJuIHJldDsKK30KKworLyogVGhlIHBpbmN0cmwgcGlu IG51bWJlciBzcGFjZSBhbmQgdGhlIGdwaW8gaHdwaW4gKG9mZnNldCkgbnVtYmVyc3BhY2UgYXJl IGlkZW50aWNhbC4gKi8KK3N0YXRpYyBpbnQgbXVkX3BpbmN0cmxfZ3Bpb19hZGRfcGluX3Jhbmdl cyhzdHJ1Y3QgZ3Bpb19jaGlwICpnYykKK3sKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBjdGwgPSBn cGlvY2hpcF9nZXRfZGF0YShnYyk7CisKKwlyZXR1cm4gZ3Bpb2NoaXBfYWRkX3Bpbl9yYW5nZSgm cGN0bC0+Z3Bpb19jaGlwLCBkZXZfbmFtZShwY3RsLT5kZXYpLAorCQkJCSAgICAgIHBjdGwtPnBj dGxfZGVzYy5waW5zLT5udW1iZXIsCisJCQkJICAgICAgcGN0bC0+cGN0bF9kZXNjLnBpbnMtPm51 bWJlciwKKwkJCQkgICAgICBwY3RsLT5wY3RsX2Rlc2MubnBpbnMpOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGdwaW9fY2hpcCBtdWRfcGluY3RybF9ncGlvX2NoaXAgPSB7CisJLmxhYmVsCQkJ PSAibXVkLXBpbnMiLAorCS5yZXF1ZXN0CQk9IG11ZF9waW5jdHJsX2dwaW9fcmVxdWVzdCwKKwku ZnJlZQkJCT0gbXVkX3BpbmN0cmxfZ3Bpb19mcmVlLAorCS5nZXRfZGlyZWN0aW9uCQk9IG11ZF9w aW5jdHJsX2dwaW9fZ2V0X2RpcmVjdGlvbiwKKwkuZGlyZWN0aW9uX2lucHV0CT0gbXVkX3BpbmN0 cmxfZ3Bpb19kaXJlY3Rpb25faW5wdXQsCisJLmRpcmVjdGlvbl9vdXRwdXQJPSBtdWRfcGluY3Ry bF9ncGlvX2RpcmVjdGlvbl9vdXRwdXQsCisJLmdldAkJCT0gbXVkX3BpbmN0cmxfZ3Bpb19nZXQs CisJLnNldAkJCT0gbXVkX3BpbmN0cmxfZ3Bpb19zZXQsCisJLnNldF9jb25maWcJCT0gZ3Bpb2No aXBfZ2VuZXJpY19jb25maWcsCisJLmFkZF9waW5fcmFuZ2VzCQk9IG11ZF9waW5jdHJsX2dwaW9f YWRkX3Bpbl9yYW5nZXMsCisJLmJhc2UJCQk9IC0xLAorCS5jYW5fc2xlZXAJCT0gdHJ1ZSwKK307 CisKKy8qIGVudW0gcGluX2NvbmZpZ19wYXJhbSBpcyBub3QgQUJJIHNvOiAqLworc3RhdGljIGNv bnN0IHU4IG11ZF9waW5fY29uZmlnX3BhcmFtX3RhYmxlW10gPSB7CisJW1BJTl9DT05GSUdfQklB U19CVVNfSE9MRF0gPSBNVURfUElOX0NPTkZJR19CSUFTX0JVU19IT0xELAorCVtQSU5fQ09ORklH X0JJQVNfRElTQUJMRV0gPSBNVURfUElOX0NPTkZJR19CSUFTX0RJU0FCTEUsCisJW1BJTl9DT05G SUdfQklBU19ISUdIX0lNUEVEQU5DRV0gPSBNVURfUElOX0NPTkZJR19CSUFTX0hJR0hfSU1QRURB TkNFLAorCVtQSU5fQ09ORklHX0JJQVNfUFVMTF9ET1dOXSA9IE1VRF9QSU5fQ09ORklHX0JJQVNf UFVMTF9ET1dOLAorCVtQSU5fQ09ORklHX0JJQVNfUFVMTF9QSU5fREVGQVVMVF0gPSBNVURfUElO X0NPTkZJR19CSUFTX1BVTExfUElOX0RFRkFVTFQsCisJW1BJTl9DT05GSUdfQklBU19QVUxMX1VQ XSA9IE1VRF9QSU5fQ09ORklHX0JJQVNfUFVMTF9VUCwKKwlbUElOX0NPTkZJR19EUklWRV9PUEVO X0RSQUlOXSA9IE1VRF9QSU5fQ09ORklHX0RSSVZFX09QRU5fRFJBSU4sCisJW1BJTl9DT05GSUdf RFJJVkVfT1BFTl9TT1VSQ0VdID0gTVVEX1BJTl9DT05GSUdfRFJJVkVfT1BFTl9TT1VSQ0UsCisJ W1BJTl9DT05GSUdfRFJJVkVfUFVTSF9QVUxMXSA9IE1VRF9QSU5fQ09ORklHX0RSSVZFX1BVU0hf UFVMTCwKKwlbUElOX0NPTkZJR19EUklWRV9TVFJFTkdUSF0gPSBNVURfUElOX0NPTkZJR19EUklW RV9TVFJFTkdUSCwKKwlbUElOX0NPTkZJR19EUklWRV9TVFJFTkdUSF9VQV0gPSBNVURfUElOX0NP TkZJR19EUklWRV9TVFJFTkdUSF9VQSwKKwlbUElOX0NPTkZJR19JTlBVVF9ERUJPVU5DRV0gPSBN VURfUElOX0NPTkZJR19JTlBVVF9ERUJPVU5DRSwKKwlbUElOX0NPTkZJR19JTlBVVF9FTkFCTEVd ID0gTVVEX1BJTl9DT05GSUdfSU5QVVRfRU5BQkxFLAorCVtQSU5fQ09ORklHX0lOUFVUX1NDSE1J VFRdID0gTVVEX1BJTl9DT05GSUdfSU5QVVRfU0NITUlUVCwKKwlbUElOX0NPTkZJR19JTlBVVF9T Q0hNSVRUX0VOQUJMRV0gPSBNVURfUElOX0NPTkZJR19JTlBVVF9TQ0hNSVRUX0VOQUJMRSwKKwlb UElOX0NPTkZJR19MT1dfUE9XRVJfTU9ERV0gPSBNVURfUElOX0NPTkZJR19MT1dfUE9XRVJfTU9E RSwKKwlbUElOX0NPTkZJR19PVVRQVVRfRU5BQkxFXSA9IE1VRF9QSU5fQ09ORklHX09VVFBVVF9F TkFCTEUsCisJW1BJTl9DT05GSUdfT1VUUFVUXSA9IE1VRF9QSU5fQ09ORklHX09VVFBVVCwKKwlb UElOX0NPTkZJR19QT1dFUl9TT1VSQ0VdID0gTVVEX1BJTl9DT05GSUdfUE9XRVJfU09VUkNFLAor CVtQSU5fQ09ORklHX1NMRUVQX0hBUkRXQVJFX1NUQVRFXSA9IE1VRF9QSU5fQ09ORklHX1NMRUVQ X0hBUkRXQVJFX1NUQVRFLAorCVtQSU5fQ09ORklHX1NMRVdfUkFURV0gPSBNVURfUElOX0NPTkZJ R19TTEVXX1JBVEUsCisJW1BJTl9DT05GSUdfU0tFV19ERUxBWV0gPSBNVURfUElOX0NPTkZJR19T S0VXX0RFTEFZLAorCVtQSU5fQ09ORklHX1BFUlNJU1RfU1RBVEVdID0gTVVEX1BJTl9DT05GSUdf UEVSU0lTVF9TVEFURSwKK307CisKK3N0YXRpYyBpbnQgbXVkX3BpbmN0cmxfcGluY29uZl9nZXQo c3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LAorCQkJCSAgIHVuc2lnbmVkIGludCBwaW4sIHVu c2lnbmVkIGxvbmcgKmNvbmZpZykKK3sKKwllbnVtIHBpbl9jb25maWdfcGFyYW0gcGFyYW0gPSBw aW5jb25mX3RvX2NvbmZpZ19wYXJhbSgqY29uZmlnKTsKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBj dGwgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsKKwl1bnNpZ25lZCBpbnQgYXJn LCBvZmZzZXQgPSBtdWRfcGluX2NvbmZpZ19wYXJhbV90YWJsZVtwYXJhbV07CisJaW50IHJldDsK KworCXJldCA9IG11ZF9waW5jdHJsX3Bpbl9yZWFkX3JlZyhwY3RsLCBwaW4sIG9mZnNldCwgJmFy Zyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCSpjb25maWcgPSBwaW5jb25mX3RvX2Nv bmZpZ19wYWNrZWQocGFyYW0sIGFyZyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBt dWRfcGluY3RybF9waW5jb25mX3NldChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIHVuc2ln bmVkIGludCBwaW4sCisJCQkJICAgdW5zaWduZWQgbG9uZyAqY29uZmlncywgdW5zaWduZWQgaW50 IG51bV9jb25maWdzKQoreworCXN0cnVjdCBtdWRfcGluY3RybCAqcGN0bCA9IHBpbmN0cmxfZGV2 X2dldF9kcnZkYXRhKHBjdGxkZXYpOworCWVudW0gcGluX2NvbmZpZ19wYXJhbSBwYXJhbTsKKwl1 bnNpZ25lZCBpbnQgaSwgb2Zmc2V0LCBhcmc7CisJaW50IHJldDsKKworCWZvciAoaSA9IDA7IGkg PCBudW1fY29uZmlnczsgaSsrKSB7CisJCXBhcmFtID0gcGluY29uZl90b19jb25maWdfcGFyYW0o Y29uZmlnc1tpXSk7CisJCWFyZyA9IHBpbmNvbmZfdG9fY29uZmlnX2FyZ3VtZW50KGNvbmZpZ3Nb aV0pOworCQlvZmZzZXQgPSBtdWRfcGluX2NvbmZpZ19wYXJhbV90YWJsZVtwYXJhbV07CisKKwkJ cmV0ID0gbXVkX3BpbmN0cmxfcGluX3dyaXRlX3JlZyhwY3RsLCBwaW4sIG9mZnNldCwgYXJnKTsK KwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgcGluY29uZl9vcHMgbXVkX3BpbmNvbmZfb3BzID0geworCS5pc19nZW5l cmljCQkJPSB0cnVlLAorCS5waW5fY29uZmlnX2dldAkJCT0gbXVkX3BpbmN0cmxfcGluY29uZl9n ZXQsCisJLnBpbl9jb25maWdfc2V0CQkJPSBtdWRfcGluY3RybF9waW5jb25mX3NldCwKKwkucGlu X2NvbmZpZ19jb25maWdfZGJnX3Nob3cJPSBwaW5jb25mX2dlbmVyaWNfZHVtcF9jb25maWcsCit9 OworCitzdGF0aWMgaW50IG11ZF9waW5jdHJsX2dldF9ncm91cHNfY291bnQoc3RydWN0IHBpbmN0 cmxfZGV2ICpwY3RsZGV2KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgY2hhciAq bXVkX3BpbmN0cmxfZ2V0X2dyb3VwX25hbWUoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LAor CQkJCQkgICAgICB1bnNpZ25lZCBpbnQgc2VsZWN0b3IpCit7CisJcmV0dXJuIE5VTEw7Cit9CisK K3N0YXRpYyBpbnQgbXVkX3BpbmN0cmxfZ2V0X2dyb3VwX3BpbnMoc3RydWN0IHBpbmN0cmxfZGV2 ICpwY3RsZGV2LAorCQkJCSAgICAgIHVuc2lnbmVkIGludCBzZWxlY3RvciwKKwkJCQkgICAgICBj b25zdCB1bnNpZ25lZCBpbnQgKipwaW5zLAorCQkJCSAgICAgIHVuc2lnbmVkIGludCAqbnVtX3Bp bnMpCit7CisJcmV0dXJuIC1FTk9UU1VQUDsKK30KKworc3RhdGljIHZvaWQgbXVkX3BpbmN0cmxf cGluX2RiZ19zaG93KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwKKwkJCQkgICAgIHN0cnVj dCBzZXFfZmlsZSAqcywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKwlzdHJ1Y3QgbXVkX3BpbmN0 cmwgKnBjdGwgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsKKwlzdHJ1Y3QgcGlu Y3RybF9ncGlvX3JhbmdlICpyYW5nZTsKKwlpbnQgZGlyLCB2YWw7CisKKwlyYW5nZSA9IHBpbmN0 cmxfZmluZF9ncGlvX3JhbmdlX2Zyb21fcGluX25vbG9jayhwY3RsZGV2LCBvZmZzZXQpOworCWlm ICghcmFuZ2UpCisJCXJldHVybjsKKworCWRpciA9IG11ZF9waW5jdHJsX2dwaW9fZ2V0X2RpcmVj dGlvbigmcGN0bC0+Z3Bpb19jaGlwLCBvZmZzZXQpOworCWlmIChkaXIgPCAwKQorCQlyZXR1cm47 CisKKwl2YWwgPSBtdWRfcGluY3RybF9ncGlvX2dldCgmcGN0bC0+Z3Bpb19jaGlwLCBvZmZzZXQp OworCWlmICh2YWwgPCAwKQorCQlyZXR1cm47CisKKwlzZXFfcHJpbnRmKHMsICJmdW5jdGlvbiBn cGlvXyVzICVzIiwgZGlyID8gImluIiA6ICJvdXQiLCB2YWwgPyAiaGkiIDogImxvIik7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGluY3RybF9vcHMgbXVkX3BpbmN0cmxfb3BzID0geworCS5n ZXRfZ3JvdXBzX2NvdW50CT0gbXVkX3BpbmN0cmxfZ2V0X2dyb3Vwc19jb3VudCwKKwkuZ2V0X2dy b3VwX25hbWUJCT0gbXVkX3BpbmN0cmxfZ2V0X2dyb3VwX25hbWUsCisJLmdldF9ncm91cF9waW5z CQk9IG11ZF9waW5jdHJsX2dldF9ncm91cF9waW5zLAorCS5waW5fZGJnX3Nob3cJCT0gbXVkX3Bp bmN0cmxfcGluX2RiZ19zaG93LAorCS5kdF9ub2RlX3RvX21hcAkJPSBwaW5jb25mX2dlbmVyaWNf ZHRfbm9kZV90b19tYXBfcGluLAorCS5kdF9mcmVlX21hcAkJPSBwaW5jb25mX2dlbmVyaWNfZHRf ZnJlZV9tYXAsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHBpbmN0cmxfZGVzYyBtdWRfcGlu Y3RybF9waW5jdHJsX2Rlc2MgPSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5uYW1lCQk9 ICJtdWQtcGlucyIsCisJLnBjdGxvcHMJPSAmbXVkX3BpbmN0cmxfb3BzLAorCS5jb25mb3BzCT0g Jm11ZF9waW5jb25mX29wcywKK307CisKK3N0YXRpYyB2b2lkIG11ZF9waW5jdHJsX2lycV9pbml0 X3ZhbGlkX21hc2soc3RydWN0IGdwaW9fY2hpcCAqZ2MsCisJCQkJCSAgICB1bnNpZ25lZCBsb25n ICp2YWxpZF9tYXNrLAorCQkJCQkgICAgdW5zaWduZWQgaW50IG5ncGlvcykKK3sKKwlzdHJ1Y3Qg bXVkX3BpbmN0cmwgKnBjdGwgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisJdW5zaWduZWQgaW50 IGk7CisKKwlwZGVidWcoMSwgIiVzOiB2YWxpZF9tYXNrOiAlKnBiXG4iLCBfX2Z1bmNfXywgbmdw aW9zLCB2YWxpZF9tYXNrKTsKKworCWZvciAoaSA9IDA7IGkgPCBuZ3Bpb3M7IGkrKykgeworCQlp ZiAoIXBjdGwtPnBpbnNbaV0uaXJxX3R5cGVzKQorCQkJY2xlYXJfYml0KGksIHZhbGlkX21hc2sp OworCX0KKworCXBkZWJ1ZygxLCAiJXM6IHZhbGlkX21hc2s6ICUqcGJcbiIsIF9fZnVuY19fLCBu Z3Bpb3MsIHZhbGlkX21hc2spOworfQorCitzdGF0aWMgdm9pZCBtdWRfcGluY3RybF9pcnFfZW5h YmxlKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKK3sKKwlzdHJ1Y3QgZ3Bpb19jaGlwICpncGlvX2No aXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsKKwlzdHJ1Y3QgbXVkX3BpbmN0 cmwgKnBjdGwgPSBncGlvY2hpcF9nZXRfZGF0YShncGlvX2NoaXApOworCisJcGRlYnVnKDIsICIl czogaHdpcnE9JWx1XG4iLCBfX2Z1bmNfXywgZGF0YS0+aHdpcnEpOworCisJcGN0bC0+cGluc1tk YXRhLT5od2lycV0uaXJxX2VuYWJsZWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtdWRfcGlu Y3RybF9pcnFfZGlzYWJsZShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IGdwaW9f Y2hpcCAqZ3Bpb19jaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7CisJc3Ry dWN0IG11ZF9waW5jdHJsICpwY3RsID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ3Bpb19jaGlwKTsKKwor CXBkZWJ1ZygyLCAiJXM6IGh3aXJxPSVsdVxuIiwgX19mdW5jX18sIGRhdGEtPmh3aXJxKTsKKwor CXBjdGwtPnBpbnNbZGF0YS0+aHdpcnFdLmlycV9lbmFibGVkID0gZmFsc2U7Cit9CisKK3N0YXRp YyBpbnQgbXVkX3BpbmN0cmxfaXJxX3NldF90eXBlKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwgdW5z aWduZWQgaW50IHR5cGUpCit7CisJc3RydWN0IGdwaW9fY2hpcCAqZ3Bpb19jaGlwID0gaXJxX2Rh dGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7CisJc3RydWN0IG11ZF9waW5jdHJsICpwY3RsID0g Z3Bpb2NoaXBfZ2V0X2RhdGEoZ3Bpb19jaGlwKTsKKworCXBkZWJ1ZygxLCAiJXM6IGh3aXJxPSVs dSwgdHlwZT0ldVxuIiwgX19mdW5jX18sIGRhdGEtPmh3aXJxLCB0eXBlKTsKKworCWlmICh0eXBl ID09IElSUV9UWVBFX05PTkUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKChwY3RsLT5waW5z W2RhdGEtPmh3aXJxXS5pcnFfdHlwZXMgJiB0eXBlKSA9PSB0eXBlKQorCQlwY3RsLT5waW5zW2Rh dGEtPmh3aXJxXS5pcnFfdHlwZSA9IHR5cGU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgbXVkX3BpbmN0cmxfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKK3sKKwlz dHJ1Y3QgZ3Bpb19jaGlwICpncGlvX2NoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShk YXRhKTsKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwgKnBjdGwgPSBncGlvY2hpcF9nZXRfZGF0YShncGlv X2NoaXApOworCisJcGRlYnVnKDMsICIlczogaHdpcnE9JWx1XG4iLCBfX2Z1bmNfXywgZGF0YS0+ aHdpcnEpOworCisJbXV0ZXhfbG9jaygmcGN0bC0+aXJxbG9jayk7Cit9CisKK3N0YXRpYyB2b2lk IG11ZF9waW5jdHJsX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkYXRhKQor eworCXN0cnVjdCBncGlvX2NoaXAgKmdwaW9fY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9k YXRhKGRhdGEpOworCXN0cnVjdCBtdWRfcGluY3RybCAqcGN0bCA9IGdwaW9jaGlwX2dldF9kYXRh KGdwaW9fY2hpcCk7CisJdW5zaWduZWQgaW50IHJlZzsKKwl1MzIgdmFsc1syXTsKKwlpbnQgcmV0 OworCisJcGRlYnVnKDMsICIlczogaHdpcnE9JWx1OiBpcnFfZW5hYmxlZD0ldSBpcnFfdHlwZT0l dVxuIiwgX19mdW5jX18sCisJICAgICAgIGRhdGEtPmh3aXJxLCBwY3RsLT5waW5zW2RhdGEtPmh3 aXJxXS5pcnFfZW5hYmxlZCwKKwkgICAgICAgcGN0bC0+cGluc1tkYXRhLT5od2lycV0uaXJxX3R5 cGUpOworCisJc3dpdGNoIChwY3RsLT5waW5zW2RhdGEtPmh3aXJxXS5pcnFfdHlwZSkgeworCWNh c2UgSVJRX1RZUEVfRURHRV9SSVNJTkc6CisJCXZhbHNbMF0gPSBNVURfUElOX0lSUV9UWVBFX0VE R0VfUklTSU5HOworCQlicmVhazsKKwljYXNlIElSUV9UWVBFX0VER0VfRkFMTElORzoKKwkJdmFs c1swXSA9IE1VRF9QSU5fSVJRX1RZUEVfRURHRV9GQUxMSU5HOworCQlicmVhazsKKwljYXNlIElS UV9UWVBFX0VER0VfQk9USDoKKwkJdmFsc1swXSA9IE1VRF9QSU5fSVJRX1RZUEVfRURHRV9CT1RI OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWxzWzBdID0gTVVEX1BJTl9JUlFfVFlQRV9OT05F OworCQlicmVhazsKKwl9OworCisJdmFsc1sxXSA9IHBjdGwtPnBpbnNbZGF0YS0+aHdpcnFdLmly cV9lbmFibGVkOworCXJlZyA9IG11ZF9waW5jdHJsX3Bpbl9yZWcoZGF0YS0+aHdpcnEsIE1VRF9Q SU5fSVJRX1RZUEUpOworCisJLyogSXQncyBzYWZlIHRvIHVzZSBhIHN0YWNrIGFsbG9jYXRlZCBh cnJheSBiZWNhdXNlIGJ1bGtfd3JpdGUgZG9lcyBrbWVtZHVwICovCisJcmV0ID0gcmVnbWFwX2J1 bGtfd3JpdGUocGN0bC0+cmVnbWFwLCByZWcsIHZhbHMsIDIpOworCWlmIChyZXQpCisJCWRldl9l cnJfb25jZShwY3RsLT5kZXYsICJGYWlsZWQgdG8gc3luYyBpcnEgZGF0YSwgZXJyb3I9JWRcbiIs IHJldCk7CisKKwltdXRleF91bmxvY2soJnBjdGwtPmlycWxvY2spOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGlycV9jaGlwIG11ZF9waW5jdHJsX2lycV9jaGlwID0geworCS5uYW1lCQkJPSAi bXVkLXBpbnMiLAorCS5pcnFfZW5hYmxlCQk9IG11ZF9waW5jdHJsX2lycV9lbmFibGUsCisJLmly cV9kaXNhYmxlCQk9IG11ZF9waW5jdHJsX2lycV9kaXNhYmxlLAorCS5pcnFfc2V0X3R5cGUJCT0g bXVkX3BpbmN0cmxfaXJxX3NldF90eXBlLAorCS5pcnFfYnVzX2xvY2sJCT0gbXVkX3BpbmN0cmxf aXJxX2J1c19sb2NrLAorCS5pcnFfYnVzX3N5bmNfdW5sb2NrCT0gbXVkX3BpbmN0cmxfaXJxX2J1 c19zeW5jX3VubG9jaywKK307CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBtdWRfcGluY3RybF9pcnFf dGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgbXVkX3BpbmN0cmwg KnBjdGwgPSAoc3RydWN0IG11ZF9waW5jdHJsICopZGV2X2lkOworCURFQ0xBUkVfQklUTUFQKHN0 YXR1cywgTVVEX1BJTkNUUkxfTUFYX05VTV9QSU5TKTsKKwlzdHJ1Y3QgZ3Bpb19jaGlwICpnYyA9 ICZwY3RsLT5ncGlvX2NoaXA7CisJdW5zaWduZWQgbG9uZyBuOworCWludCByZXQ7CisKKwlyZXQg PSBtdWRfcGluY3RybF9yZWFkX2JpdG1hcChwY3RsLCBNVURfUElOQ1RSTF9SRUdfSVJRX1NUQVRV UywKKwkJCQkgICAgICBzdGF0dXMsIGdjLT5uZ3Bpbyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIElS UV9OT05FOworCisJcGRlYnVnKDMsICIlczogU1RBVFVTOiAlKnBiXG4iLCBfX2Z1bmNfXywgZ2Mt Pm5ncGlvLCBzdGF0dXMpOworCisJZm9yX2VhY2hfc2V0X2JpdChuLCBzdGF0dXMsIGdjLT5uZ3Bp bykgeworCQl1bnNpZ25lZCBpbnQgaXJxID0gaXJxX2ZpbmRfbWFwcGluZyhnYy0+aXJxLmRvbWFp biwgbik7CisKKwkJcGRlYnVnKDIsICIlczogSVJRIG9uIHBpbiAlbHUgaXJxPSV1IGVuYWJsZWQ9 JXVcbiIsIF9fZnVuY19fLAorCQkgICAgICAgbiwgaXJxLCBwY3RsLT5waW5zW25dLmlycV9lbmFi bGVkKTsKKworCQlpZiAoaXJxICYmIHBjdGwtPnBpbnNbbl0uaXJxX2VuYWJsZWQpCisJCQloYW5k bGVfbmVzdGVkX2lycShpcnEpOworCX0KKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIG11ZF9waW5jdHJsX3JlZ21hcF9jb25maWcg PSB7CisJLnJlZ19iaXRzID0gMzIsCisJLnZhbF9iaXRzID0gMzIsCisJLyogRklYTUU6IFNldHVw IGNhY2hpbmc/ICovCisJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLAorfTsKKworc3RhdGlj IGludCBtdWRfcGluY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQorewor CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IG11ZF9jZWxsX3BkYXRh ICpwZGF0YSA9IGRldl9nZXRfcGxhdGRhdGEoZGV2KTsKKwlzdHJ1Y3QgcGluY3RybF9waW5fZGVz YyAqcGRlc2M7CisJc3RydWN0IG11ZF9waW5jdHJsICpwY3RsOworCXN0cnVjdCByZWdtYXAgKnJl Z21hcDsKKwl1bnNpZ25lZCBpbnQgaSwgcmVnLCBucGluczsKKwljb25zdCBjaGFyICoqbmFtZXM7 CisJaW50IHJldCwgaXJxOworCisJcGRlYnVnKDEsICIlczogZGV2LT5vZl9ub2RlPSVweFxuIiwg X19mdW5jX18sIGRldi0+b2Zfbm9kZSk7CisKKwlwY3RsID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpwY3RsKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwY3RsKQorCQlyZXR1cm4gLUVOT01FTTsK KworCXBjdGwtPmRldiA9IGRldjsKKworCW11dGV4X2luaXQoJnBjdGwtPmlycWxvY2spOworCisJ cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF91c2IoZGV2LCBwZGF0YS0+aW50ZXJmYWNlLCBwZGF0 YS0+aW5kZXgsCisJCQkJICAgICAgJm11ZF9waW5jdHJsX3JlZ21hcF9jb25maWcpOworCWlmIChJ U19FUlIocmVnbWFwKSkKKwkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKKworCXBjdGwtPnJlZ21h cCA9IHJlZ21hcDsKKworCXJldCA9IHJlZ21hcF9yZWFkKHJlZ21hcCwgTVVEX1BJTkNUUkxfUkVH X05VTV9QSU5TLCAmbnBpbnMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihwY3RsLT5kZXYsICJG YWlsZWQgdG8gcmVhZCBmcm9tIGRldmljZVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCWlmICgh bnBpbnMgfHwgbnBpbnMgPiBNVURfUElOQ1RSTF9NQVhfTlVNX1BJTlMpCisJCXJldHVybiAtRUlO VkFMOworCisJcGN0bC0+cGlucyA9IGRldm1fa2NhbGxvYyhkZXYsIG5waW5zLCBzaXplb2YoKnBj dGwtPnBpbnMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBjdGwtPnBpbnMpCisJCXJldHVybiAtRU5P TUVNOworCisJcGRlc2MgPSBkZXZtX2tjYWxsb2MoZGV2LCBucGlucywgc2l6ZW9mKCpwZGVzYyks IEdGUF9LRVJORUwpOworCWlmICghcGRlc2MpCisJCXJldHVybiAtRU5PTUVNOworCisJcGN0bC0+ cGN0bF9kZXNjID0gbXVkX3BpbmN0cmxfcGluY3RybF9kZXNjOworCXBjdGwtPnBjdGxfZGVzYy5w aW5zID0gcGRlc2M7CisJcGN0bC0+cGN0bF9kZXNjLm5waW5zID0gbnBpbnM7CisKKwlmb3IgKGkg PSAwOyBpIDwgbnBpbnM7IGkrKywgcGRlc2MrKykgeworCQljaGFyICpuYW1lOworCisJCW5hbWUg PSBkZXZtX2ttYWxsb2MoZGV2LCBNVURfUElOX05BTUVfTEVOLCBHRlBfS0VSTkVMKTsKKwkJaWYg KCFuYW1lKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJcGRlc2MtPm51bWJlciA9IGk7CisJCXBk ZXNjLT5uYW1lID0gbmFtZTsKKwkJcmVnID0gbXVkX3BpbmN0cmxfcGluX3JlZyhpLCBNVURfUElO X05BTUUpOworCQlyZXQgPSByZWdtYXBfcmF3X3JlYWQocmVnbWFwLCByZWcsIG5hbWUsIE1VRF9Q SU5fTkFNRV9MRU4pOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKHBjdGwtPmRldiwgIkZhaWxl ZCB0byByZWFkIG5hbWUgZm9yIHBpbiAldVxuIiwgaSk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJ CWlmICghbmFtZVswXSB8fCBuYW1lW01VRF9QSU5fTkFNRV9MRU4gLSAxXSkgeworCQkJZGV2X2Vy cihwY3RsLT5kZXYsICJJbGxlZ2FsIG5hbWUgZm9yIHBpbiAldVxuIiwgaSk7CisJCQlyZXR1cm4g LUVJTlZBTDsKKwkJfQorCX0KKworCXJldCA9IGRldm1fcGluY3RybF9yZWdpc3Rlcl9hbmRfaW5p dChkZXYsICZwY3RsLT5wY3RsX2Rlc2MsCisJCQkJCSAgICAgcGN0bCwgJnBjdGwtPnBjdGxfZGV2 KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIocGN0bC0+ZGV2LCAicGluY3RybCByZWdpc3RyYXRp b24gZmFpbGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBwaW5jdHJsX2VuYWJs ZShwY3RsLT5wY3RsX2Rldik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKHBjdGwtPmRldiwgInBp bmN0cmwgZW5hYmxlIGZhaWxlZFxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJaXJxID0gcGxh dGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCAwKTsKKwlwZGVidWcoMSwgIiVzOiBpcnE9JWRc biIsIF9fZnVuY19fLCBpcnEpOworCWlmIChpcnEgPiAwKSB7CisJCWJvb2wgdXNlX2lycSA9IGZh bHNlOworCisJCWZvciAoaSA9IDA7IGkgPCBucGluczsgaSsrKSB7CisJCQlyZWcgPSBtdWRfcGlu Y3RybF9waW5fcmVnKGksIE1VRF9QSU5fSVJRX1RZUEVTKTsKKwkJCXJldCA9IHJlZ21hcF9yZWFk KHJlZ21hcCwgcmVnLCAmcGN0bC0+cGluc1tpXS5pcnFfdHlwZXMpOworCQkJaWYgKHJldCkgewor CQkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQgaXJxIHR5cGUgZm9yIHBpbiAldVxuIiwg aSk7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKwkJCXBkZWJ1ZygxLCAiJXM6IHBjdGwtPnBpbnNb JXVdLmlycV90eXBlcz0ldVxuIiwgX19mdW5jX18sCisJCQkgICAgICAgaSwgcGN0bC0+cGluc1tp XS5pcnFfdHlwZXMpOworCQkJaWYgKHBjdGwtPnBpbnNbaV0uaXJxX3R5cGVzKQorCQkJCXVzZV9p cnEgPSB0cnVlOworCQl9CisKKwkJaWYgKCF1c2VfaXJxKQorCQkJaXJxID0gMDsKKwl9IGVsc2Ug eworCQlpcnEgPSAwOworCX0KKworCXBjdGwtPmdwaW9fY2hpcCA9IG11ZF9waW5jdHJsX2dwaW9f Y2hpcDsKKwlwY3RsLT5ncGlvX2NoaXAucGFyZW50ID0gZGV2OworCXBjdGwtPmdwaW9fY2hpcC5u Z3BpbyA9IG5waW5zOworCWlmIChpcnEpCisJCXBjdGwtPmdwaW9fY2hpcC5pcnEuaW5pdF92YWxp ZF9tYXNrID0gbXVkX3BpbmN0cmxfaXJxX2luaXRfdmFsaWRfbWFzazsKKworCW5hbWVzID0gZGV2 bV9rY2FsbG9jKGRldiwgbnBpbnMsIHNpemVvZigqbmFtZXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IW5hbWVzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBjdGwtPmdwaW9fY2hpcC5uYW1lcyA9IG5h bWVzOworCisJZm9yIChpID0gMDsgaSA8IG5waW5zOyBpKyspCisJCW5hbWVzW2ldID0gcGN0bC0+ cGN0bF9kZXNjLnBpbnNbaV0ubmFtZTsKKworCXJldCA9IGRldm1fZ3Bpb2NoaXBfYWRkX2RhdGEo ZGV2LCAmcGN0bC0+Z3Bpb19jaGlwLCBwY3RsKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2 LCAiQ291bGQgbm90IHJlZ2lzdGVyIGdwaW9jaGlwLCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlpZiAoaXJxKSB7CisJCXBjdGwtPmlycV9jaGlwID0gbXVkX3BpbmN0cmxfaXJx X2NoaXA7CisJCXJldCA9IGdwaW9jaGlwX2lycWNoaXBfYWRkX25lc3RlZCgmcGN0bC0+Z3Bpb19j aGlwLCAmcGN0bC0+aXJxX2NoaXAsCisJCQkJCQkgIDAsIGhhbmRsZV9iYWRfaXJxLCBJUlFfVFlQ RV9OT05FKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihkZXYsICJDYW5ub3QgYWRkIGlycWNo aXAgdG8gZ3Bpb2NoaXBcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCXJldCA9IGRldm1f cmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBpcnEsIE5VTEwsCisJCQkJCQltdWRfcGluY3RybF9p cnFfdGhyZWFkX2ZuLAorCQkJCQkJSVJRRl9PTkVTSE9ULCAibXVkLXBpbnMiLCBwY3RsKTsKKwkJ aWYgKHJldCkgeworCQkJZGV2X2VycihkZXYsICJDYW5ub3QgcmVxdWVzdCBpcnElZFxuIiwgaXJx KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXVkX3BpbmN0cmxfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5j b21wYXRpYmxlID0gIm11ZC1waW5zIiwgfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBtdWRfcGluY3RybF9vZl9tYXRjaCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlX2lkIG11ZF9waW5jdHJsX2lkX3RhYmxlW10gPSB7CisJeyAibXVkLXBpbnMiLCB9 LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHBsYXRmb3JtLCBtdWRfcGluY3RybF9p ZF90YWJsZSk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG11ZF9waW5jdHJsX2Ry aXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJtdWQtcGlucyIsCisJCS5vZl9tYXRj aF90YWJsZSA9IG11ZF9waW5jdHJsX29mX21hdGNoLAorCX0sCisJLnByb2JlID0gbXVkX3BpbmN0 cmxfcHJvYmUsCisJLmlkX3RhYmxlID0gbXVkX3BpbmN0cmxfaWRfdGFibGUsCit9OworCittb2R1 bGVfcGxhdGZvcm1fZHJpdmVyKG11ZF9waW5jdHJsX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1Io Ik5vcmFsZiBUcsO4bm5lcyIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJQaW4gY29udHJvbCBpbnRl cmZhY2UgZm9yIE11bHRpZnVuY3Rpb24gVVNCIERldmljZSIpOworTU9EVUxFX0xJQ0VOU0UoIkdQ TCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtbXVkLmggYi9kcml2ZXJz L3BpbmN0cmwvcGluY3RybC1tdWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmY0ODM5ZGE0NmJkYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvcGluY3RybC9w aW5jdHJsLW11ZC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAyMCBOb3JhbGYgVHLDuG5uZXMKKyAqLworCisj aWZuZGVmIF9fTElOVVhfUElOQ1RSTF9NVURfSAorI2RlZmluZSBfX0xJTlVYX1BJTkNUUkxfTVVE X0gKKworI2RlZmluZSBNVURfUElOQ1RSTF9NQVhfTlVNX1BJTlMJCTUxMgorCisjZGVmaW5lIE1V RF9QSU5DVFJMX1JFR19OVU1fUElOUwkJMHgwMDAwCisKKyNkZWZpbmUgTVVEX1BJTkNUUkxfUkVH X0lSUV9TVEFUVVMJCTB4MDAyMAorI2RlZmluZSBNVURfUElOQ1RSTF9SRUdfSVJRX1NUQVRVU19F TkQJCTB4MDAyZgorCisjZGVmaW5lIE1VRF9QSU5DVFJMX1JFR19QSU5fQkFTRQkJMHgwMTAwCisj ZGVmaW5lIE1VRF9QSU5DVFJMX1BJTl9CTE9DS19TSVpFCQkyNTYKKworICAvKgorICAgKiBUaGUg Zm9sbG93aW5nIGFyZSBvZmZzZXRzIGludG8gdGhlIHBpbiByZWdpc3RlciBibG9jay4KKyAgICoK KyAgICogVGhlIGZpcnN0IHBhcnQgaXMgaWRlbnRpY2FsIHRvIGVudW0gcGluX2NvbmZpZ19wYXJh bSBleGNlcHQgZm9yOgorICAgKiAtIE5vIHJvb20gZm9yIGN1c3RvbSBjb25maWd1cmF0aW9ucy4K KyAgICoKKyAgICogU2VlIHRoZSBlbnVtIGRlY2xhcmF0aW9uIGRvY3MgaW4gaW5jbHVkZS9saW51 eC9waW5jdHJsL3BpbmNvbmYtZ2VuZXJpYy5oCisgICAqIGZvciBkZXRhaWxzIGFib3V0IGJlaGF2 aW91ciBhbmQgYXJndW1lbnRzLgorICAgKgorICAgKiBEZXZpY2Ugc2hvdWxkIHJldHVybiAtRU5P VFNVUFAgaWYgdGhlIGNvbmZpZyBpcyBub3Qgc3VwcG9ydGVkLgorICAgKi8KKyAgI2RlZmluZSBN VURfUElOX0NPTkZJR19CSUFTX0JVU19IT0xECQkweDAwCisgICNkZWZpbmUgTVVEX1BJTl9DT05G SUdfQklBU19ESVNBQkxFCQkweDAxCisgICNkZWZpbmUgTVVEX1BJTl9DT05GSUdfQklBU19ISUdI X0lNUEVEQU5DRQkweDAyCisgICNkZWZpbmUgTVVEX1BJTl9DT05GSUdfQklBU19QVUxMX0RPV04J CTB4MDMKKyAgI2RlZmluZSBNVURfUElOX0NPTkZJR19CSUFTX1BVTExfUElOX0RFRkFVTFQJMHgw NAorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX0JJQVNfUFVMTF9VUAkJMHgwNQorICAjZGVmaW5l IE1VRF9QSU5fQ09ORklHX0RSSVZFX09QRU5fRFJBSU4JMHgwNgorICAjZGVmaW5lIE1VRF9QSU5f Q09ORklHX0RSSVZFX09QRU5fU09VUkNFCTB4MDcKKyAgI2RlZmluZSBNVURfUElOX0NPTkZJR19E UklWRV9QVVNIX1BVTEwJMHgwOAorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX0RSSVZFX1NUUkVO R1RICQkweDA5CisgICNkZWZpbmUgTVVEX1BJTl9DT05GSUdfRFJJVkVfU1RSRU5HVEhfVUEJMHgw YQorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX0lOUFVUX0RFQk9VTkNFCQkweDBiCisgICNkZWZp bmUgTVVEX1BJTl9DT05GSUdfSU5QVVRfRU5BQkxFCQkweDBjCisgICNkZWZpbmUgTVVEX1BJTl9D T05GSUdfSU5QVVRfU0NITUlUVAkJMHgwZAorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX0lOUFVU X1NDSE1JVFRfRU5BQkxFCTB4MGUKKyAgI2RlZmluZSBNVURfUElOX0NPTkZJR19MT1dfUE9XRVJf TU9ERQkJMHgwZgorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX09VVFBVVF9FTkFCTEUJCTB4MTAK KyAgI2RlZmluZSBNVURfUElOX0NPTkZJR19PVVRQVVQJCQkweDExCisgICNkZWZpbmUgTVVEX1BJ Tl9DT05GSUdfUE9XRVJfU09VUkNFCQkweDEyCisgICNkZWZpbmUgTVVEX1BJTl9DT05GSUdfU0xF RVBfSEFSRFdBUkVfU1RBVEUJMHgxMworICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX1NMRVdfUkFU RQkJMHgxNAorICAjZGVmaW5lIE1VRF9QSU5fQ09ORklHX1NLRVdfREVMQVkJCTB4MTUKKyAgI2Rl ZmluZSBNVURfUElOX0NPTkZJR19QRVJTSVNUX1NUQVRFCQkweDE2CisgICNkZWZpbmUgTVVEX1BJ Tl9DT05GSUdfRU5ECQkJMHg3ZgorCisgIC8qIE11c3QgYmUgTlVMIHRlcm1pbmF0ZWQgKi8KKyAg I2RlZmluZSBNVURfUElOX05BTUUJCQkJMHg4MAorICAgICNkZWZpbmUgTVVEX1BJTl9OQU1FX0xF TgkJCTE2CisgICNkZWZpbmUgTVVEX1BJTl9OQU1FX0VORAkJCTB4ODMKKworICAvKgorICAgKiBE ZXZpY2Ugc2hvdWxkIHJldHVybjoKKyAgICogICAtRUJVU1kgaWYgcGluIGlzIGluIHVzZSBieSBh bm90aGVyIGZ1bmN0aW9uIChpMmMsIHNwaSwgLi4uKQorICAgKiAgIC1FTk9FTlQgaWYgdGhlcmUg aXMgbm8gZ3BpbyBmdW5jdGlvbiBvbiB0aGUgcGluLgorICAgKi8KKyAgI2RlZmluZSBNVURfUElO X0dQSU9fUkVRVUVTVAkJCTB4ODQKKyAgI2RlZmluZSBNVURfUElOX0dQSU9fRlJFRQkJCTB4ODUK KworICAvKiBEZXZpY2Ugc2hvdWxkIHJldHVybiAtRU5PVFNVUFAgaWYgdGhlIGRpcmVjdGlvbiBp cyBub3Qgc3VwcG9ydGVkICovCisgICNkZWZpbmUgTVVEX1BJTl9ESVJFQ1RJT04JCQkweDg2Cisg ICAgI2RlZmluZSBNVURfUElOX0RJUkVDVElPTl9PVVRQVVQJCTB4MAorICAgICAgI2RlZmluZSBN VURfUElOX0RJUkVDVElPTl9PVVRQVVRfTE9XCTB4MAorICAgICAgI2RlZmluZSBNVURfUElOX0RJ UkVDVElPTl9PVVRQVVRfSElHSAkweDIKKyAgICAjZGVmaW5lIE1VRF9QSU5fRElSRUNUSU9OX0lO UFVUCQkweDEKKworICAjZGVmaW5lIE1VRF9QSU5fTEVWRUwJCQkJMHg4NworCisgIC8qCisgICAq IFNldCBfVFlQRVMgdG8gX05PTkUgaXMgdGhlIHBpbiBkb2Vzbid0IGhhdmUgaW50ZXJydXB0IHN1 cHBvcnQuCisgICAqIElmIGFsbCBwaW5zIGFyZSBfTk9ORSwgdGhlbiBpbnRlcnJ1cHRzIGFyZSBk aXNhYmxlZCBpbiB0aGUgaG9zdCBkcml2ZXIuCisgICAqLworICAjZGVmaW5lIE1VRF9QSU5fSVJR X1RZUEVTCQkJMHg5MAorICAgICNkZWZpbmUgTVVEX1BJTl9JUlFfVFlQRV9OT05FCQkweDAwCisg ICAgI2RlZmluZSBNVURfUElOX0lSUV9UWVBFX0VER0VfUklTSU5HCTB4MDEKKyAgICAjZGVmaW5l IE1VRF9QSU5fSVJRX1RZUEVfRURHRV9GQUxMSU5HCTB4MDIKKyAgICAjZGVmaW5lIE1VRF9QSU5f SVJRX1RZUEVfRURHRV9CT1RICQkweDAzCisgICNkZWZpbmUgTVVEX1BJTl9JUlFfVFlQRQkJCTB4 OTEKKyAgI2RlZmluZSBNVURfUElOX0lSUV9FTkFCTEVECQkJMHg5MgorCisjZW5kaWYKLS0gCjIu MjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==