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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EE11FC624DB for ; Thu, 3 Sep 2026 20:45:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fbA45iqGHVrtBxY3ZxoQCw0Zvx34XOQDdI0XQojYaBQ=; b=uMxUltfZYIRhz+ C1VQFb2JYXnyYi6iwxkEI9nEhO56LJ0fTlVvc7w6vEicj1YhZbqb3lJsp3M2o1Gi0g2jyfoT0yFK7 rU58/j2wW0TNwDDAzQ+ygcPRwd4F+dT+4KYYGwIpGwWMF1GyCPe6PiLLo6Le79vm9fQfT72yz7xRH 8hbD8KJVKn9ZB2ZlRRU9pK+JFs53pk6KiGw2IlTefXJzWp2db+kIkPxju4oVxMnfvzK2nPE6GiWWH FS6vzAd+XV6zavK9MfYY6Yn+FjhHYWEknFTpqXq8T52cRyHAXSzdTduTZxlBQyCibClAZkJfEdq1j oTr2rY267ogeO35iLIRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x2EJ1-00000000ZpQ-2oP9; Thu, 03 Sep 2026 20:45:07 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x2EIx-00000000Zmm-3uoZ for linux-phy@lists.infradead.org; Thu, 03 Sep 2026 20:45:06 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-49b965570d7so3565095e9.0 for ; Thu, 03 Sep 2026 13:45:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1788468302; x=1789073102; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=DnzfNbp5Cd4gO1GYglrDhEZBWI/KMSaf6jPMLY/WBX4=; b=yfd8PvgJpnAvx3lY7vwwflqytv+88UYJk7sUgqwp3EkafKS0dUaBAiFTRR0hw1oc+H reJWzIheaxBAcZyYPgzMJjdhHoFYJNbmWLCTgECS9QEBBH71t03Fw55pie1B+w1luZR3 wxfoFkOppz8GVG+1RtyAjR9NprxDrs/igREMbvAwc0Yax57BKfLlCIDlPfxGmK+V37/7 9bMKOMquE/gE9EwzRPDDuOKRw12VlC8cfJ+TZ0VJdH97Iwi0a16Qkm5HsugDTzXVedzX jJg136R1vlYN1OG1o9ual1iVXjqe+bjb5WLZoULxy1c3B+Fcjgm/5DlHIIeeOOAZw9Ei kFCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788468302; x=1789073102; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=DnzfNbp5Cd4gO1GYglrDhEZBWI/KMSaf6jPMLY/WBX4=; b=Cn1YuKCHfGsPk9Sjq6aNy6109N+NF6Guan5Ru34YXvwyrrdwox7oH0FohDvh0r29FK 9Qh20YBnILYf8c55GARP5pnjFfO6LFU4DbpkXyq7p+RXAfAPTg2xs9JJYNCNzV5N4NkJ F0PeCPYGu5p04miVUe8EBy55frHeVr+5ETbyb5mO4RJ15xwmXsfofHoO3V3UPYn6JIBu 9EZJIqxKXiMZzwvCF8Oq2SaeTHrTCSHPINrZnQeFryIxFLmHuCqKFhofov93c4HrTxz1 uQklpsfgskaqc0LIANvthTeTuaBdvkswl5bXdI2ZxvUtXnLqPKeEy8lW+gE8a9tYEfRV EbnA== X-Forwarded-Encrypted: i=1; AKwUvBwP9hqrGXpt0wCzVzzTI+b62M9aUoAGT5B8stL166TU91Vb/R2y9KtstonbSjhnLLvwbA0Hz/GPPQY=@lists.infradead.org X-Gm-Message-State: AFuF++mZYBJVWYQ1YIfVy0me9BoOrHWbgEw6dnZiMaYKVCEgZ5fekkPE ldXLgggYsxBSEeOSucR7dcy5lNmlkelRGMjlbN6i0WHnnuNgQa3ENLTVSfmdQ2Jkmhs= X-Gm-Gg: AYBFou2zUprF2xLrI/3cuvpvF7McnN7CPOUv9qsevaWfTZEmpz0m6Etl6fZ5rz2l5WQ ZMVcYlCFXxuarLCkhw1K9mAByTTIiu+bsEDAjkIBKTF92bA0PenSaRxu/yLDCJ8NW70ZIyCD038 69nz6cvV/lnbj6PgB54IbmFRyMOP4nnR9hWt93wHUmr6Pi9YJ3WU9i0Rlv6SvNaXcHeFq4cCvtK Lx/9scDZm7SV7U9e+7cMadbAYFe1IL248zkagpdKa/4r4aiw9aib/KnGLMLuewx32GPCS96Wd0k wI7CtNSlrZnNXScR7ma7k34XxThZIgYjQ0imyFzk5ygHu0sGdhXkb7NSYmaobnYXAhRPSrsuJKU k3jrms/LChtZHKpgsi1NxD51BC7JkovJg0eOPJWudwd78Dy4vR/PeHVDWGzrksiCUdojXTYp8Px VztWbU3qSJ8fP9So+rxY0bca/7Nq3kwjaqbis33eALdIfYg031zKeICQd6qgPXRQlEN1uL X-Received: by 2002:a05:600c:83c8:b0:499:cd34:100d with SMTP id 5b1f17b1804b1-49cf82353cemr12247525e9.7.1788468301509; Thu, 03 Sep 2026 13:45:01 -0700 (PDT) Received: from [192.168.0.35] ([93.107.91.8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48588394fa1sm1040684f8f.8.2026.09.03.13.45.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 13:45:00 -0700 (PDT) From: Bryan O'Donoghue Date: Thu, 03 Sep 2026 21:44:34 +0100 Subject: [PATCH v17 2/2] phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY driver MIME-Version: 1.0 Message-Id: <20260903-x1e-csi2-phy-v17-2-26606fa9a039@linaro.org> References: <20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org> In-Reply-To: <20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Neil Armstrong Cc: Bryan O'Donoghue , Vladimir Zapolskiy , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Bryan O'Donoghue X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=37326; i=bryan.odonoghue@linaro.org; h=from:subject:message-id; bh=EQWK55Ij6IrhzCg0EeR9HBKo6W2mPCK1pcc6naSRQ7A=; b=owEBbQKS/ZANAwAKASJxO7Ohjcg6AcsmYgBqmdxJUV5hSuFoxbm2v4p6z5z8yhsKBJmdQh/AH uDn7rl/p4OJAjMEAAEKAB0WIQTmk/sqq6Nt4Rerb7QicTuzoY3IOgUCapncSQAKCRAicTuzoY3I OiFjD/9WRXX15X9uE+QKU1WsDSC22kzuszZj+qfonBh6MLSVCi1Mful2SAVlaY6WHYb3kch4nuj wJa2I17dUfH7NKP8uxnf5or/2lRmr0pfT9DQ7HYy2G9TtwrjDT/wdskoZKQ5pRSv5JEr8M8hPqN IKRHLTN7deCXcD3BMiHhtn2QF8TtgnppEP0koIchvM5yLWMTqZ9acODr2UrDvJHb41JAbR4A8VB NGf38O/GKC9vwP+xY+JxEkuKsLxh/m5FaGi2qqS3bIYLvDgD+MNf8Ji8bS0yftMd+UV7gVnwJUG THlOBf2eKRqkWV/yzJAKxgPVzDlf4O4y5XV/qYAqcNNFrK/fKbRuZu6WmoVOgaXDpjvqE2d0bwm i1nJq7UKe3XWGtjOPrhnyfiojW5NTadRkYiVWsm/WI9UaCN5k1174d7+UfZeqfGqtuq2nIY5pym i8BV2PrJpRK+o1qqInqRxXFrj6O6GhGwpVt8rRZLFNv7p2kbAxfPCiGzd/9QHQLM4jHZl94XGZR FQedPQrL3NACzuR40MDGMzr3CVe/CfRI5H3z+AFHy0aJFO2+UjHe9mjQmFDykQU1jCvhcgn03yB nBkvuoP744QiWBqU2fp9aG6ZatqeAbNYm+sDy6syGNuSxpOahjr83fEN7Aao38uHj1Z0GI7wAfC oim3Wd/KFQsWe5Q== X-Developer-Key: i=bryan.odonoghue@linaro.org; a=openpgp; fpr=E693FB2AABA36DE117AB6FB422713BB3A18DC83A X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260903_134504_227285_9A076706 X-CRM114-Status: GOOD ( 20.48 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org QWRkIGEgbmV3IE1JUEkgQ1NJMiBkcml2ZXIgaW4gRFBIWSBtb2RlIGluaXRpYWxseS4gVGhlIGVu dGlyZSBzZXQgb2YKZXhpc3RpbmcgQ0FNU1MgQ1NJIFBIWSBpbml0IHNlcXVlbmNlcyBhcmUgaW1w b3J0ZWQgaW4gb3JkZXIgdG8gc2F2ZSB0aW1lCmFuZCBlZmZvcnQgaW4gbGF0ZXIgcGF0Y2hlcy4K ClRoZSBmb2xsb3dpbmcgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIGluIHRoaXMgZHJvcDoKInFjb20s eDFlODAxMDAtY3NpMi1waHkiCgpJbi1saW5lIHdpdGggb3RoZXIgUEhZIGRyaXZlcnMgdGhlIHBy b2Nlc3Mgbm9kZSBpcyBpbmNsdWRlZCBpbiB0aGUgbmFtZS4KRGF0YS1sYW5lIGFuZCBjbG9jayBs YW5lIHBvc2l0aW9uaW5nIGFuZCBwb2xhcml0eSBzZWxlY3Rpb24gdmlhIG5ld2x5CmFtZW5kZWQg c3RydWN0IHBoeV9jb25maWd1cmVfb3B0c19taXBpX2RwaHl7fSBpcyBzdXBwb3J0ZWQuCgpUaGUg UXVhbGNvbW0gM1BIIGNsYXNzIG9mIFBIWXMgY2FuIGRvIGJvdGggRFBIWSBhbmQgQ1BIWSBtb2Rl LiBGb3Igbm93IG9ubHkKRFBIWSBpcyBzdXBwb3J0ZWQuCgpJbiBwb3J0aW5nIHNvbWUgb2YgdGhl IGxvZ2ljIG92ZXIgZnJvbSBjYW1zcy1jc2lwaHkqLmMgdG8gaGVyZSBpdHMgYWxzbwpwb3NzaWJs ZSB0byByYXRpb25hbGlzZSBzb21lIG9mIHRoZSBjb2RlLgoKSW4gcGFydGljdWxhciB1c2Ugb2Yg cmVndWxhdG9yX2J1bGsgYW5kIGNsa19idWxrIGFzIHdlbGwgYXMgZHJvcHBpbmcgdGhlCnNlZW1p bmdseSB1c2VsZXNzIGFuZCB1bnVzZWQgaW50ZXJydXB0IGhhbmRsZXIuCgpUaGUgUEhZIHNlcXVl bmNlcyBhbmQgYSBsb3Qgb2YgdGhlIGxvZ2ljIHRoYXQgZ29lcyB3aXRoIHRoZW0gYXJlIHdlbGwK cHJvdmVuIGluIENBTVNTIGFuZCBtYXR1cmUgc28gdGhlIG1haW4gdGhpbmcgdG8gd2F0Y2ggb3V0 IGZvciBoZXJlIGlzIGhvdwp0byBnZXQgdGhlIHJpZ2h0IHNlcXVlbmNpbmcgb2YgcmVndWxhdG9y cywgY2xvY2tzIGFuZCByZWdpc3Rlci13cml0ZXMuCgpUaGUgcmVnaXN0ZXIgaW5pdCBzZXF1ZW5j ZSB0YWJsZSBpcyBpbXBvcnRlZCB2ZXJiYXRpbSBmcm9tIHRoZSBleGlzdGluZwpDQU1TUyBjc2lw aHkgZHJpdmVyLiBBIGZvbGxvdy11cCBzZXJpZXMgd2lsbCByZXdvcmsgdGhlIHRhYmxlIHRvIGV4 dHJhY3QKdGhlIHJlcGV0aXRpdmUgcGVyLWxhbmUgcGF0dGVybiBpbnRvIGEgbG9vcC4KClJldmll d2VkLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmVpbC5hcm1zdHJvbmdAbGluYXJvLm9yZz4KU2lnbmVk LW9mZi1ieTogQnJ5YW4gTydEb25vZ2h1ZSA8YnJ5YW4ub2Rvbm9naHVlQGxpbmFyby5vcmc+Ci0t LQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTAgKwogZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg fCAgMTUgKwogZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUgKwogZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLTNwaC1k cGh5LmMgfCAzODUgKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1x Y29tLW1pcGktY3NpMi1jb3JlLmMgICAgIHwgNDYwICsrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLmggICAgICAgICAgfCAgOTcgKysr KysKIDYgZmlsZXMgY2hhbmdlZCwgOTcyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9NQUlO VEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDE1MDExZjU3NTJhOTkuLmEyMDNiNDE0NzVlYTQg MTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0yMjI5Niw2ICsy MjI5NiwxNiBAQCBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvbWVkaWEvcWNvbSwqLWlyaXMueWFtbAogRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9x Y29tL2lyaXMvCiAKK1FVQUxDT01NIE1JUEkgQ1NJMiBQSFkgRFJJVkVSCitNOglCcnlhbiBPJ0Rv bm9naHVlIDxib2RAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3Jn CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5r ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvcGh5L3Fjb20sKi1jc2kyLXBoeS55YW1sCitGOglkcml2ZXJzL3BoeS9xdWFsY29tbS9w aHktcWNvbS1taXBpLWNzaTIqLmMKK0Y6CWRyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW1p cGktY3NpMiouaAorCiBRVUFMQ09NTSBOQU5EIENPTlRST0xMRVIgRFJJVkVSCiBNOglNYW5pdmFu bmFuIFNhZGhhc2l2YW0gPG1hbmlAa2VybmVsLm9yZz4KIEw6CWxpbnV4LW10ZEBsaXN0cy5pbmZy YWRlYWQub3JnCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnIGIvZHJp dmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZwppbmRleCA2MGEwZWFkMTI3ZmE5Li5jZDY5NTllNjli ZWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnCisrKyBiL2RyaXZl cnMvcGh5L3F1YWxjb21tL0tjb25maWcKQEAgLTI4LDYgKzI4LDIxIEBAIGNvbmZpZyBQSFlfUUNP TV9FRFAKIAkgIEVuYWJsZSB0aGlzIGRyaXZlciB0byBzdXBwb3J0IHRoZSBRdWFsY29tbSBlRFAg UEhZIGZvdW5kIGluIHZhcmlvdXMKIAkgIFF1YWxjb21tIGNoaXBzZXRzLgogCitjb25maWcgUEhZ X1FDT01fTUlQSV9DU0kyCisJdHJpc3RhdGUgIlF1YWxjb21tIE1JUEkgQ1NJMiBQSFkgZHJpdmVy IgorCWRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVAorCWRlcGVuZHMgb24gT0YK KwlkZXBlbmRzIG9uIFBNCisJZGVwZW5kcyBvbiBQTV9PUFAKKwlkZXBlbmRzIG9uIENPTU1PTl9D TEsKKwlzZWxlY3QgR0VORVJJQ19QSFkKKwlzZWxlY3QgR0VORVJJQ19QSFlfTUlQSV9EUEhZCisJ aGVscAorCSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgTUlQSSBDU0kyIFBIWSBkcml2ZXIg Zm91bmQgaW4gdmFyaW91cworCSAgUXVhbGNvbW0gY2hpcHNldHMuIFRoaXMgUEhZIGlzIHVzZWQg dG8gY29ubmVjdCBNSVBJIENTSTIKKwkgIGNhbWVyYSBzZW5zb3JzIHRvIHRoZSBDU0kgRGVjb2Rl ciBpbiB0aGUgUXVhbGNvbW0gQ2FtZXJhIFN1YnN5c3RlbQorCSAgQ0FNU1MuCisKIGNvbmZpZyBQ SFlfUUNPTV9JUFE0MDE5X1VTQgogCXRyaXN0YXRlICJRdWFsY29tbSBJUFE0MDE5IFVTQiBQSFkg ZHJpdmVyIgogCWRlcGVuZHMgb24gT0YgJiYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L3F1 YWxjb21tL01ha2VmaWxlCmluZGV4IGI3MWE2YTBiZWQzZjEuLjM4MmNiNTk0YjA2YjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcGh5L3F1 YWxjb21tL01ha2VmaWxlCkBAIC02LDYgKzYsMTEgQEAgb2JqLSQoQ09ORklHX1BIWV9RQ09NX0lQ UTQwMTlfVVNCKQkrPSBwaHktcWNvbS1pcHE0MDE5LXVzYi5vCiBvYmotJChDT05GSUdfUEhZX1FD T01fSVBRODA2WF9TQVRBKQkrPSBwaHktcWNvbS1pcHE4MDZ4LXNhdGEubwogb2JqLSQoQ09ORklH X1BIWV9RQ09NX00zMV9VU0IpCQkrPSBwaHktcWNvbS1tMzEubwogb2JqLSQoQ09ORklHX1BIWV9R Q09NX00zMV9FVVNCKQkJKz0gcGh5LXFjb20tbTMxLWV1c2IyLm8KKworcGh5LXFjb20tbWlwaS1j c2kyLW9ianMJCQkrPSBwaHktcWNvbS1taXBpLWNzaTItY29yZS5vIFwKKwkJCQkJICAgcGh5LXFj b20tbWlwaS1jc2kyLTNwaC1kcGh5Lm8KK29iai0kKENPTkZJR19QSFlfUUNPTV9NSVBJX0NTSTIp CSs9IHBoeS1xY29tLW1pcGktY3NpMi5vCisKIG9iai0kKENPTkZJR19QSFlfUUNPTV9QQ0lFMikJ CSs9IHBoeS1xY29tLXBjaWUyLm8KIAogb2JqLSQoQ09ORklHX1BIWV9RQ09NX1FNUF9DT01CTykJ Kz0gcGh5LXFjb20tcW1wLWNvbWJvLm8gcGh5LXFjb20tcW1wLXVzYmMubwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLTNwaC1kcGh5LmMgYi9kcml2 ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1taXBpLWNzaTItM3BoLWRwaHkuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45NjZkNzljOThmOWIyCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbWlwaS1jc2kyLTNwaC1kcGh5 LmMKQEAgLTAsMCArMSwzODUgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w CisvKgorICogUXVhbGNvbW0gTVNNIENhbWVyYSBTdWJzeXN0ZW0gLSBDU0lQSFkgTW9kdWxlIDNw aGFzZSB2MS4wCisgKgorICogQ29weXJpZ2h0IChjKSAyMDExLTIwMTUsIFRoZSBMaW51eCBGb3Vu ZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjYg TGluYXJvIEx0ZC4KKyAqLworCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4 L3RpbWU2NC5oPgorCisjaW5jbHVkZSAicGh5LXFjb20tbWlwaS1jc2kyLmgiCisKKyNkZWZpbmUg Q1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMbihvZmZzZXQsIG4pCSgob2Zmc2V0KSArIDB4 NCAqIChuKSkKKyNkZWZpbmUgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMMF9QSFlfU1df UkVTRVQJQklUKDApCisjZGVmaW5lIENTSVBIWV8zUEhfQ01OX0NTSV9DT01NT05fQ1RSTDVfQ0xL X0VOQUJMRQlCSVQoNykKKyNkZWZpbmUgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMNl9D T01NT05fUFdSRE5fQglCSVQoMCkKKyNkZWZpbmUgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9D VFJMNl9TSE9XX1JFVl9JRAlCSVQoMSkKKyNkZWZpbmUgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1P Tl9DVFJMMTBfSVJRX0NMRUFSX0NNRAlCSVQoMCkKKyNkZWZpbmUgQ1NJUEhZXzNQSF9DTU5fQ1NJ X0NPTU1PTl9TVEFUVVNuKG9mZnNldCwgbikJKChvZmZzZXQpICsgMHhiMCArIDB4NCAqIChuKSkK KworI2RlZmluZSBDU0lQSFlfMlBIX0xOX0NTSV8yUEhBU0VfQ1RSTDluKG4pCQkoKDB4MjAwICog KG4pKSArIDB4MjQpCisKKy8qCisgKiAzIHBoYXNlIENTSSBoYXMgMTkgY29tbW9uIHN0YXR1cyBy ZWdzIHdpdGggb25seSAwLTEwIGJlaW5nIHVzZWQKKyAqIGFuZCAxMS0xOCBiZWluZyByZXNlcnZl ZC4KKyAqLworI2RlZmluZSBDU0lfQ09NTU9OX1NUQVRVU19OVU0JCQkJMTEKKy8qCisgKiBUaGVy ZSBhcmUgYSBudW1iZXIgb2YgY29tbW9uIGNvbnRyb2wgcmVnaXN0ZXJzCisgKiBUaGUgb2Zmc2V0 IHRvIGNsZWFyIHRoZSBDU0lQSFkgSVJRIHN0YXR1cyBzdGFydHMgQCAyMgorICogU28gdG8gY2xl YXIgQ1NJX0NPTU1PTl9TVEFUVVMwIHRoaXMgaXMgQ1NJX0NPTU1PTl9DT05UUk9MMjIsIFNUQVRV UzEgaXMKKyAqIENPTlRST0wyMyBhbmQgc28gb24KKyAqLworI2RlZmluZSBDU0lfQ1RSTF9TVEFU VVNfSU5ERVgJCQkJMjIKKworLyoKKyAqIFRoZXJlIGFyZSA0MyBDT01NT05fQ1RSTCByZWdpc3Rl cnMgd2l0aCByZWdzIGFmdGVyICMgMzMgYmVpbmcgcmVzZXJ2ZWQKKyAqLworI2RlZmluZSBDU0lf Q1RSTF9NQVgJCQkJCTMzCisKKyNkZWZpbmUgQ1NJUEhZX0RFRkFVTFRfUEFSQU1TCQkJCTAKKyNk ZWZpbmUgQ1NJUEhZX1NFVFRMRV9DTlRfTE9XRVJfQllURQkJCTIKKyNkZWZpbmUgQ1NJUEhZX1NL RVdfQ0FMCQkJCQk3CisKKy8qIDRubSAyUEggdiAyLjEuMiAycDVHYnBzIDQgbGFuZSBEUEhZIG1v ZGUgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QKK21pcGlfY3NpMnBoeV9sYW5lX3JlZ3MgbGFuZV9y ZWdzX3gxZTgwMTAwW10gPSB7CisJLyogUG93ZXIgdXAgbGFuZXMgMnBoIG1vZGUgKi8KKwl7LnJl Z19hZGRyID0gMHgxMDFjLCAucmVnX2RhdGEgPSAweDdhLCAucGFyYW1fdHlwZSA9IENTSVBIWV9E RUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MTAxOCwgLnJlZ19kYXRhID0gMHgwMSwg LnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCisJey5yZWdfYWRkciA9IDB4 MDA5NCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJB TVN9LAorCXsucmVnX2FkZHIgPSAweDAwYTAsIC5yZWdfZGF0YSA9IDB4MDAsIC5wYXJhbV90eXBl ID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwMDkwLCAucmVnX2Rh dGEgPSAweDBmLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdf YWRkciA9IDB4MDA5OCwgLnJlZ19kYXRhID0gMHgwOCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVG QVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDAwOTQsIC5yZWdfZGF0YSA9IDB4MDcsIC5k ZWxheV91cyA9IDB4MDEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7 LnJlZ19hZGRyID0gMHgwMDMwLCAucmVnX2RhdGEgPSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBI WV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDAwMCwgLnJlZ19kYXRhID0gMHg4 ZSwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAw eDAwMzgsIC5yZWdfZGF0YSA9IDB4ZmUsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFS QU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwMDJjLCAucmVnX2RhdGEgPSAweDAxLCAucGFyYW1fdHlw ZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDAzNCwgLnJlZ19k YXRhID0gMHgwZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVn X2FkZHIgPSAweDAwMWMsIC5yZWdfZGF0YSA9IDB4MGEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RF RkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwMDE0LCAucmVnX2RhdGEgPSAweDYwLCAu cGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDAz YywgLnJlZ19kYXRhID0gMHhiOCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9 LAorCXsucmVnX2FkZHIgPSAweDAwMDQsIC5yZWdfZGF0YSA9IDB4MGMsIC5wYXJhbV90eXBlID0g Q1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwMDIwLCAucmVnX2RhdGEg PSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRk ciA9IDB4MDAwOCwgLnJlZ19kYXRhID0gMHgxMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0VUVExF X0NOVF9MT1dFUl9CWVRFfSwKKwl7LnJlZ19hZGRyID0gMHgwMDEwLCAucmVnX2RhdGEgPSAweDUy LCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4 MDA5NCwgLnJlZ19kYXRhID0gMHhkNywgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAor CXsucmVnX2FkZHIgPSAweDAwNWMsIC5yZWdfZGF0YSA9IDB4MDAsIC5wYXJhbV90eXBlID0gQ1NJ UEhZX1NLRVdfQ0FMfSwKKwl7LnJlZ19hZGRyID0gMHgwMDYwLCAucmVnX2RhdGEgPSAweGJkLCAu cGFyYW1fdHlwZSA9IENTSVBIWV9TS0VXX0NBTH0sCisJey5yZWdfYWRkciA9IDB4MDA2NCwgLnJl Z19kYXRhID0gMHg3ZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAorCisJey5yZWdf YWRkciA9IDB4MGU5NCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVG QVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBlYTAsIC5yZWdfZGF0YSA9IDB4MDAsIC5w YXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwZTkw LCAucmVnX2RhdGEgPSAweDBmLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30s CisJey5yZWdfYWRkciA9IDB4MGU5OCwgLnJlZ19kYXRhID0gMHgwOCwgLnBhcmFtX3R5cGUgPSBD U0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBlOTQsIC5yZWdfZGF0YSA9 IDB4MDcsIC5kZWxheV91cyA9ICAweDAxLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BB UkFNU30sCisJey5yZWdfYWRkciA9IDB4MGUzMCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5 cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBlMjgsIC5yZWdf ZGF0YSA9IDB4MDQsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJl Z19hZGRyID0gMHgwZTAwLCAucmVnX2RhdGEgPSAweDgwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9E RUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MGUwYywgLnJlZ19kYXRhID0gMHhmZiwg LnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBl MzgsIC5yZWdfZGF0YSA9IDB4MWYsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1T fSwKKwl7LnJlZ19hZGRyID0gMHgwZTJjLCAucmVnX2RhdGEgPSAweDAxLCAucGFyYW1fdHlwZSA9 IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MGUzNCwgLnJlZ19kYXRh ID0gMHgwZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2Fk ZHIgPSAweDBlMWMsIC5yZWdfZGF0YSA9IDB4MGEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFV TFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwZTE0LCAucmVnX2RhdGEgPSAweDYwLCAucGFy YW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MGUzYywg LnJlZ19kYXRhID0gMHhiOCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAor CXsucmVnX2FkZHIgPSAweDBlMDQsIC5yZWdfZGF0YSA9IDB4MGMsIC5wYXJhbV90eXBlID0gQ1NJ UEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwZTIwLCAucmVnX2RhdGEgPSAw eDAwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9 IDB4MGUwOCwgLnJlZ19kYXRhID0gMHgxMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0VUVExFX0NO VF9MT1dFUl9CWVRFfSwKKwl7LnJlZ19hZGRyID0gMHgwZTEwLCAucmVnX2RhdGEgPSAweDUyLCAu cGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisKKwl7LnJlZ19hZGRyID0gMHgw NDk0LCAucmVnX2RhdGEgPSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFN U30sCisJey5yZWdfYWRkciA9IDB4MDRhMCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5cGUg PSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDA0OTAsIC5yZWdfZGF0 YSA9IDB4MGYsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19h ZGRyID0gMHgwNDk4LCAucmVnX2RhdGEgPSAweDA4LCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZB VUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDQ5NCwgLnJlZ19kYXRhID0gMHgwNywgLmRl bGF5X3VzID0gIDB4MDEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7 LnJlZ19hZGRyID0gMHgwNDMwLCAucmVnX2RhdGEgPSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBI WV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDQwMCwgLnJlZ19kYXRhID0gMHg4 ZSwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAw eDA0MzgsIC5yZWdfZGF0YSA9IDB4ZmUsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFS QU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwNDJjLCAucmVnX2RhdGEgPSAweDAxLCAucGFyYW1fdHlw ZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDQzNCwgLnJlZ19k YXRhID0gMHgwZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVn X2FkZHIgPSAweDA0MWMsIC5yZWdfZGF0YSA9IDB4MGEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RF RkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwNDE0LCAucmVnX2RhdGEgPSAweDYwLCAu cGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDQz YywgLnJlZ19kYXRhID0gMHhiOCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9 LAorCXsucmVnX2FkZHIgPSAweDA0MDQsIC5yZWdfZGF0YSA9IDB4MGMsIC5wYXJhbV90eXBlID0g Q1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwNDIwLCAucmVnX2RhdGEg PSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRk ciA9IDB4MDQwOCwgLnJlZ19kYXRhID0gMHgxMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0VUVExF X0NOVF9MT1dFUl9CWVRFfSwKKwl7LnJlZ19hZGRyID0gMHgwNDEwLCAucmVnX2RhdGEgPSAweDUy LCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4 MDQ5NCwgLnJlZ19kYXRhID0gMHhkNywgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAor CXsucmVnX2FkZHIgPSAweDA0NWMsIC5yZWdfZGF0YSA9IDB4MDAsIC5wYXJhbV90eXBlID0gQ1NJ UEhZX1NLRVdfQ0FMfSwKKwl7LnJlZ19hZGRyID0gMHgwNDYwLCAucmVnX2RhdGEgPSAweGJkLCAu cGFyYW1fdHlwZSA9IENTSVBIWV9TS0VXX0NBTH0sCisJey5yZWdfYWRkciA9IDB4MDQ2NCwgLnJl Z19kYXRhID0gMHg3ZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAorCisJey5yZWdf YWRkciA9IDB4MDg5NCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVG QVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDA4YTAsIC5yZWdfZGF0YSA9IDB4MDAsIC5w YXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwODkw LCAucmVnX2RhdGEgPSAweDBmLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30s CisJey5yZWdfYWRkciA9IDB4MDg5OCwgLnJlZ19kYXRhID0gMHgwOCwgLnBhcmFtX3R5cGUgPSBD U0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDA4OTQsIC5yZWdfZGF0YSA9 IDB4MDcsIC5kZWxheV91cyA9ICAweDAxLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BB UkFNU30sCisJey5yZWdfYWRkciA9IDB4MDgzMCwgLnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5 cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDA4MDAsIC5yZWdf ZGF0YSA9IDB4OGUsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJl Z19hZGRyID0gMHgwODM4LCAucmVnX2RhdGEgPSAweGZlLCAucGFyYW1fdHlwZSA9IENTSVBIWV9E RUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDgyYywgLnJlZ19kYXRhID0gMHgwMSwg LnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDA4 MzQsIC5yZWdfZGF0YSA9IDB4MGYsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1T fSwKKwl7LnJlZ19hZGRyID0gMHgwODFjLCAucmVnX2RhdGEgPSAweDBhLCAucGFyYW1fdHlwZSA9 IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDgxNCwgLnJlZ19kYXRh ID0gMHg2MCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2Fk ZHIgPSAweDA4M2MsIC5yZWdfZGF0YSA9IDB4YjgsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFV TFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwODA0LCAucmVnX2RhdGEgPSAweDBjLCAucGFy YW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MDgyMCwg LnJlZ19kYXRhID0gMHgwMCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAor CXsucmVnX2FkZHIgPSAweDA4MDgsIC5yZWdfZGF0YSA9IDB4MTAsIC5wYXJhbV90eXBlID0gQ1NJ UEhZX1NFVFRMRV9DTlRfTE9XRVJfQllURX0sCisJey5yZWdfYWRkciA9IDB4MDgxMCwgLnJlZ19k YXRhID0gMHg1MiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVn X2FkZHIgPSAweDA4OTQsIC5yZWdfZGF0YSA9IDB4ZDcsIC5wYXJhbV90eXBlID0gQ1NJUEhZX1NL RVdfQ0FMfSwKKwl7LnJlZ19hZGRyID0gMHgwODVjLCAucmVnX2RhdGEgPSAweDAwLCAucGFyYW1f dHlwZSA9IENTSVBIWV9TS0VXX0NBTH0sCisJey5yZWdfYWRkciA9IDB4MDg2MCwgLnJlZ19kYXRh ID0gMHhiZCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAorCXsucmVnX2FkZHIgPSAw eDA4NjQsIC5yZWdfZGF0YSA9IDB4N2YsIC5wYXJhbV90eXBlID0gQ1NJUEhZX1NLRVdfQ0FMfSwK KworCXsucmVnX2FkZHIgPSAweDBjOTQsIC5yZWdfZGF0YSA9IDB4MDAsIC5wYXJhbV90eXBlID0g Q1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwY2EwLCAucmVnX2RhdGEg PSAweDAwLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRk ciA9IDB4MGM5MCwgLnJlZ19kYXRhID0gMHgwZiwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVM VF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBjOTgsIC5yZWdfZGF0YSA9IDB4MDgsIC5wYXJh bV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwYzk0LCAu cmVnX2RhdGEgPSAweDA3LCAuZGVsYXlfdXMgPSAgMHgwMSwgLnBhcmFtX3R5cGUgPSBDU0lQSFlf REVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBjMzAsIC5yZWdfZGF0YSA9IDB4MDAs IC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgw YzAwLCAucmVnX2RhdGEgPSAweDhlLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZBVUxUX1BBUkFN U30sCisJey5yZWdfYWRkciA9IDB4MGMzOCwgLnJlZ19kYXRhID0gMHhmZSwgLnBhcmFtX3R5cGUg PSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBjMmMsIC5yZWdfZGF0 YSA9IDB4MDEsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwKKwl7LnJlZ19h ZGRyID0gMHgwYzM0LCAucmVnX2RhdGEgPSAweDBmLCAucGFyYW1fdHlwZSA9IENTSVBIWV9ERUZB VUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MGMxYywgLnJlZ19kYXRhID0gMHgwYSwgLnBh cmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIgPSAweDBjMTQs IC5yZWdfZGF0YSA9IDB4NjAsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1TfSwK Kwl7LnJlZ19hZGRyID0gMHgwYzNjLCAucmVnX2RhdGEgPSAweGI4LCAucGFyYW1fdHlwZSA9IENT SVBIWV9ERUZBVUxUX1BBUkFNU30sCisJey5yZWdfYWRkciA9IDB4MGMwNCwgLnJlZ19kYXRhID0g MHgwYywgLnBhcmFtX3R5cGUgPSBDU0lQSFlfREVGQVVMVF9QQVJBTVN9LAorCXsucmVnX2FkZHIg PSAweDBjMjAsIC5yZWdfZGF0YSA9IDB4MDAsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRf UEFSQU1TfSwKKwl7LnJlZ19hZGRyID0gMHgwYzA4LCAucmVnX2RhdGEgPSAweDEwLCAucGFyYW1f dHlwZSA9IENTSVBIWV9TRVRUTEVfQ05UX0xPV0VSX0JZVEV9LAorCXsucmVnX2FkZHIgPSAweDBj MTAsIC5yZWdfZGF0YSA9IDB4NTIsIC5wYXJhbV90eXBlID0gQ1NJUEhZX0RFRkFVTFRfUEFSQU1T fSwKKwl7LnJlZ19hZGRyID0gMHgwYzk0LCAucmVnX2RhdGEgPSAweGQ3LCAucGFyYW1fdHlwZSA9 IENTSVBIWV9TS0VXX0NBTH0sCisJey5yZWdfYWRkciA9IDB4MGM1YywgLnJlZ19kYXRhID0gMHgw MCwgLnBhcmFtX3R5cGUgPSBDU0lQSFlfU0tFV19DQUx9LAorCXsucmVnX2FkZHIgPSAweDBjNjAs IC5yZWdfZGF0YSA9IDB4YmQsIC5wYXJhbV90eXBlID0gQ1NJUEhZX1NLRVdfQ0FMfSwKKwl7LnJl Z19hZGRyID0gMHgwYzY0LCAucmVnX2RhdGEgPSAweDdmLCAucGFyYW1fdHlwZSA9IENTSVBIWV9T S0VXX0NBTH0sCit9OworCitzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBtaXBpX2NzaTJwaHlf ZGV2aWNlX3JlZ3MgKgorY3NpMnBoeV9kZXZfdG9fcmVncyhzdHJ1Y3QgbWlwaV9jc2kycGh5X2Rl dmljZSAqY3NpMnBoeSkKK3sKKwlyZXR1cm4gJmNzaTJwaHktPnNvY19jZmctPnJlZ19pbmZvOwor fQorCitzdGF0aWMgdm9pZCBwaHlfcWNvbV9taXBpX2NzaTJfaHdfdmVyc2lvbl9yZWFkKHN0cnVj dCBtaXBpX2NzaTJwaHlfZGV2aWNlICpjc2kycGh5KQoreworCWNvbnN0IHN0cnVjdCBtaXBpX2Nz aTJwaHlfZGV2aWNlX3JlZ3MgKnJlZ3MgPSBjc2kycGh5X2Rldl90b19yZWdzKGNzaTJwaHkpOwor CXUzMiB0bXA7CisKKwl3cml0ZWwoQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMNl9TSE9X X1JFVl9JRCwgY3NpMnBoeS0+YmFzZSArCisJICAgICAgIENTSVBIWV8zUEhfQ01OX0NTSV9DT01N T05fQ1RSTG4ocmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCA2KSk7CisKKwl0bXAgPSByZWFkbF9y ZWxheGVkKGNzaTJwaHktPmJhc2UgKworCQkJICAgIENTSVBIWV8zUEhfQ01OX0NTSV9DT01NT05f U1RBVFVTbihyZWdzLT5jb21tb25fcmVnc19vZmZzZXQsIDEyKSk7CisJY3NpMnBoeS0+aHdfdmVy c2lvbiA9IHRtcDsKKworCXRtcCA9IHJlYWRsX3JlbGF4ZWQoY3NpMnBoeS0+YmFzZSArCisJCQkg ICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9TVEFUVVNuKHJlZ3MtPmNvbW1vbl9yZWdzX29m ZnNldCwgMTMpKTsKKwljc2kycGh5LT5od192ZXJzaW9uIHw9ICh0bXAgPDwgOCkgJiAweEZGMDA7 CisKKwl0bXAgPSByZWFkbF9yZWxheGVkKGNzaTJwaHktPmJhc2UgKworCQkJICAgIENTSVBIWV8z UEhfQ01OX0NTSV9DT01NT05fU1RBVFVTbihyZWdzLT5jb21tb25fcmVnc19vZmZzZXQsIDE0KSk7 CisJY3NpMnBoeS0+aHdfdmVyc2lvbiB8PSAodG1wIDw8IDE2KSAmIDB4RkYwMDAwOworCisJdG1w ID0gcmVhZGxfcmVsYXhlZChjc2kycGh5LT5iYXNlICsKKwkJCSAgICBDU0lQSFlfM1BIX0NNTl9D U0lfQ09NTU9OX1NUQVRVU24ocmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCAxNSkpOworCWNzaTJw aHktPmh3X3ZlcnNpb24gfD0gKHRtcCA8PCAyNCkgJiAweEZGMDAwMDAwOworCisJZGV2X2RiZ19v bmNlKGNzaTJwaHktPmRldiwgIkNTSVBIWSAzUEggSFcgVmVyc2lvbiA9IDB4JTA4eFxuIiwgY3Np MnBoeS0+aHdfdmVyc2lvbik7Cit9CisKKy8qCisgKiBwaHlfcWNvbV9taXBpX2NzaTJfcmVzZXQg LSBQZXJmb3JtIHNvZnR3YXJlIHJlc2V0IG9uIENTSVBIWSBtb2R1bGUKKyAqIEBwaHlfcWNvbV9t aXBpX2NzaTI6IENTSVBIWSBkZXZpY2UKKyAqLworc3RhdGljIHZvaWQgcGh5X3Fjb21fbWlwaV9j c2kyX3Jlc2V0KHN0cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlICpjc2kycGh5KQoreworCWNvbnN0 IHN0cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlX3JlZ3MgKnJlZ3MgPSBjc2kycGh5X2Rldl90b19y ZWdzKGNzaTJwaHkpOworCisJd3JpdGVsKENTSVBIWV8zUEhfQ01OX0NTSV9DT01NT05fQ1RSTDBf UEhZX1NXX1JFU0VULAorCSAgICAgICBjc2kycGh5LT5iYXNlICsgQ1NJUEhZXzNQSF9DTU5fQ1NJ X0NPTU1PTl9DVFJMbihyZWdzLT5jb21tb25fcmVnc19vZmZzZXQsIDApKTsKKwl1c2xlZXBfcmFu Z2UoNTAwMCwgODAwMCk7CisJd3JpdGVsKDB4MCwgY3NpMnBoeS0+YmFzZSArCisJICAgICAgIENT SVBIWV8zUEhfQ01OX0NTSV9DT01NT05fQ1RSTG4ocmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCAw KSk7Cit9CisKKy8qCisgKiBwaHlfcWNvbV9taXBpX2NzaTJfc2V0dGxlX2NudF9jYWxjIC0gQ2Fs Y3VsYXRlIHNldHRsZSBjb3VudCB2YWx1ZQorICoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBjYWxj dWxhdGUgc2V0dGxlIGNvdW50IHZhbHVlLiBUaGlzIGlzCisgKiBiYXNlZCBvbiB0aGUgQ1NJMiBU X2hzX3NldHRsZSBwYXJhbWV0ZXIgd2hpY2ggaW4gdHVybgorICogaXMgY2FsY3VsYXRlZCBiYXNl ZCBvbiB0aGUgQ1NJMiB0cmFuc21pdHRlciBsaW5rIGZyZXF1ZW5jeS4KKyAqCisgKiBSZXR1cm4g c2V0dGxlIGNvdW50LgorICovCitzdGF0aWMgdTggcGh5X3Fjb21fbWlwaV9jc2kyX3NldHRsZV9j bnRfY2FsYyhzNjQgbGlua19mcmVxLCB1MzIgdGltZXJfY2xrX3JhdGUpCit7CisJdTMyIHRfaHNf cHJlcGFyZV9tYXhfcHM7CisJdTMyIHRpbWVyX3BlcmlvZF9wczsKKwl1MzIgdF9oc19zZXR0bGVf cHM7CisJdTggc2V0dGxlX2NudDsKKwl1MzIgdWlfcHM7CisKKwl1aV9wcyA9IGRpdjY0X3U2NChQ U0VDX1BFUl9TRUMsIGxpbmtfZnJlcSk7CisJdWlfcHMgLz0gMjsKKwl0X2hzX3ByZXBhcmVfbWF4 X3BzID0gODUwMDAgKyA2ICogdWlfcHM7CisJdF9oc19zZXR0bGVfcHMgPSB0X2hzX3ByZXBhcmVf bWF4X3BzOworCisJdGltZXJfcGVyaW9kX3BzID0gZGl2X3U2NChQU0VDX1BFUl9TRUMsIHRpbWVy X2Nsa19yYXRlKTsKKworCWlmICgodF9oc19zZXR0bGVfcHMgLyB0aW1lcl9wZXJpb2RfcHMpIDwg NikKKwkJcmV0dXJuIDA7CisKKwlzZXR0bGVfY250ID0gdF9oc19zZXR0bGVfcHMgLyB0aW1lcl9w ZXJpb2RfcHMgLSA2OworCisJcmV0dXJuIHNldHRsZV9jbnQ7Cit9CisKK3N0YXRpYyB2b2lkCitw aHlfcWNvbV9taXBpX2NzaTJfZ2VuMl9jb25maWdfbGFuZXMoc3RydWN0IG1pcGlfY3NpMnBoeV9k ZXZpY2UgKmNzaTJwaHksCisJCQkJICAgICB1OCBzZXR0bGVfY250KQoreworCWNvbnN0IHN0cnVj dCBtaXBpX2NzaTJwaHlfZGV2aWNlX3JlZ3MgKnJlZ3MgPSBjc2kycGh5X2Rldl90b19yZWdzKGNz aTJwaHkpOworCWNvbnN0IHN0cnVjdCBtaXBpX2NzaTJwaHlfbGFuZV9yZWdzICpyID0gcmVncy0+ aW5pdF9zZXE7CisJaW50IGksIGFycmF5X3NpemUgPSByZWdzLT5sYW5lX2FycmF5X3NpemU7CisJ dTMyIHZhbDsKKworCWZvciAoaSA9IDA7IGkgPCBhcnJheV9zaXplOyBpKyssIHIrKykgeworCQlz d2l0Y2ggKHItPnBhcmFtX3R5cGUpIHsKKwkJY2FzZSBDU0lQSFlfU0VUVExFX0NOVF9MT1dFUl9C WVRFOgorCQkJdmFsID0gc2V0dGxlX2NudCAmIDB4ZmY7CisJCQlicmVhazsKKwkJY2FzZSBDU0lQ SFlfU0tFV19DQUw6CisJCQkvKiBUT0RPOiBzdXBwb3J0IGFwcGxpY2F0aW9uIG9mIHNrZXcgZnJv bSBkdCBmbGFnICovCisJCQljb250aW51ZTsKKwkJZGVmYXVsdDoKKwkJCXZhbCA9IHItPnJlZ19k YXRhOworCQkJYnJlYWs7CisJCX0KKwkJd3JpdGVsKHZhbCwgY3NpMnBoeS0+YmFzZSArIHItPnJl Z19hZGRyKTsKKwkJaWYgKHItPmRlbGF5X3VzKQorCQkJdWRlbGF5KHItPmRlbGF5X3VzKTsKKwl9 Cit9CisKK3N0YXRpYyBpbnQgcGh5X3Fjb21fbWlwaV9jc2kyX2xhbmVzX2VuYWJsZShzdHJ1Y3Qg bWlwaV9jc2kycGh5X2RldmljZSAqY3NpMnBoeSwKKwkJCQkJICAgc3RydWN0IG1pcGlfY3NpMnBo eV9zdHJlYW1fY2ZnICpjZmcpCit7CisJY29uc3Qgc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2Vf cmVncyAqcmVncyA9IGNzaTJwaHlfZGV2X3RvX3JlZ3MoY3NpMnBoeSk7CisJc3RydWN0IG1pcGlf Y3NpMnBoeV9sYW5lc19jZmcgKmxhbmVfY2ZnID0gJmNmZy0+bGFuZV9jZmc7CisJdTggc2V0dGxl X2NudDsKKwl1OCB2YWw7CisJaW50IGk7CisKKwlpZiAoY2ZnLT5saW5rX2ZyZXEgPD0gMCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlzZXR0bGVfY250ID0gcGh5X3Fjb21fbWlwaV9jc2kyX3NldHRs ZV9jbnRfY2FsYyhjZmctPmxpbmtfZnJlcSwgY3NpMnBoeS0+dGltZXJfY2xrX3JhdGUpOworCWlm ICghc2V0dGxlX2NudCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwkvKgorCSAqIENTSV9DT01NT05f Q1RSTDUgaXMgYSBwaHlzaWNhbCBsYW5lIHBvd2VyLXVwIGJpdG1hcDoKKwkgKiAtIEJpdHMgWzAs Miw0LDZdIOKGkiBELVBIWSBkYXRhIGxhbmVzKExOMCwgTE4yLCBMTjQsIExONikKKwkgKiAtIEJp dHMgWzEsMyw1XSDihpIgQy1QSFkgdHJpbyBsYW5lcyhMTjEsIExOMywgTE41KQorCSAqIC0gQml0 IFs3XSDihpIgRC1QSFkgY2xvY2sgbGFuZShMTkNLKSBkZWRpY2F0ZWQgY2xvY2sgZW5hYmxlCisJ ICovCisJdmFsID0gQklUKGxhbmVfY2ZnLT5jbGsucG9zKTsKKwlmb3IgKGkgPSAwOyBpIDwgY2Zn LT5udW1fZGF0YV9sYW5lczsgaSsrKQorCQl2YWwgfD0gQklUKGxhbmVfY2ZnLT5kYXRhW2ldLnBv cyAqIDIpOworCisJd3JpdGVsKHZhbCwgY3NpMnBoeS0+YmFzZSArCisJICAgICAgIENTSVBIWV8z UEhfQ01OX0NTSV9DT01NT05fQ1RSTG4ocmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCA1KSk7CisK KwkvKiBMYW5lIGNvbmZpZ3VyYXRpb24gZm9yIHBvbGFyaXR5IEAgQ1NJUEhZLWJhc2UgKyBDVFJM OSAqLworCWZvciAoaSA9IDA7IGkgPCBjZmctPm51bV9kYXRhX2xhbmVzOyBpKyspIHsKKwkJaWYg KGxhbmVfY2ZnLT5kYXRhW2ldLnBvbCkgeworCQkJdTggcG9zID0gbGFuZV9jZmctPmRhdGFbaV0u cG9zOworCisJCQl3cml0ZWwoQklUKDIpLCBjc2kycGh5LT5iYXNlICsgQ1NJUEhZXzJQSF9MTl9D U0lfMlBIQVNFX0NUUkw5bihwb3MgKiAyKSk7CisJCX0KKwl9CisKKwlpZiAobGFuZV9jZmctPmNs ay5wb2wpCisJCXdyaXRlbChCSVQoMiksIGNzaTJwaHktPmJhc2UgKyBDU0lQSFlfMlBIX0xOX0NT SV8yUEhBU0VfQ1RSTDluKGxhbmVfY2ZnLT5jbGsucG9zKSk7CisKKwl2YWwgPSBDU0lQSFlfM1BI X0NNTl9DU0lfQ09NTU9OX0NUUkw2X0NPTU1PTl9QV1JETl9COworCXdyaXRlbCh2YWwsIGNzaTJw aHktPmJhc2UgKworCSAgICAgICBDU0lQSFlfM1BIX0NNTl9DU0lfQ09NTU9OX0NUUkxuKHJlZ3Mt PmNvbW1vbl9yZWdzX29mZnNldCwgNikpOworCisJdmFsID0gMHgwMjsKKwl3cml0ZWwodmFsLCBj c2kycGh5LT5iYXNlICsKKwkgICAgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMbihy ZWdzLT5jb21tb25fcmVnc19vZmZzZXQsIDcpKTsKKworCXZhbCA9IDB4MDA7CisJd3JpdGVsKHZh bCwgY3NpMnBoeS0+YmFzZSArCisJICAgICAgIENTSVBIWV8zUEhfQ01OX0NTSV9DT01NT05fQ1RS TG4ocmVncy0+Y29tbW9uX3JlZ3Nfb2Zmc2V0LCAwKSk7CisKKwlwaHlfcWNvbV9taXBpX2NzaTJf Z2VuMl9jb25maWdfbGFuZXMoY3NpMnBoeSwgc2V0dGxlX2NudCk7CisKKwkvKiBJUlFfTUFTSyBy ZWdpc3RlcnMgLSBkaXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovCisJZm9yIChpID0gQ1NJX0NPTU1P Tl9TVEFUVVNfTlVNOyBpIDwgQ1NJX0NUUkxfU1RBVFVTX0lOREVYOyBpKyspIHsKKwkJd3JpdGVs KDAsIGNzaTJwaHktPmJhc2UgKworCQkgICAgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9D VFJMbihyZWdzLT5jb21tb25fcmVnc19vZmZzZXQsIGkpKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQKK3BoeV9xY29tX21pcGlfY3NpMl9sYW5lc19kaXNhYmxlKHN0cnVjdCBt aXBpX2NzaTJwaHlfZGV2aWNlICpjc2kycGh5LAorCQkJCSBzdHJ1Y3QgbWlwaV9jc2kycGh5X3N0 cmVhbV9jZmcgKmNmZykKK3sKKwljb25zdCBzdHJ1Y3QgbWlwaV9jc2kycGh5X2RldmljZV9yZWdz ICpyZWdzID0gY3NpMnBoeV9kZXZfdG9fcmVncyhjc2kycGh5KTsKKworCXdyaXRlbCgwLCBjc2ky cGh5LT5iYXNlICsKKwkgICAgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMbihyZWdz LT5jb21tb25fcmVnc19vZmZzZXQsIDUpKTsKKworCXdyaXRlbCgwLCBjc2kycGh5LT5iYXNlICsK KwkgICAgICAgQ1NJUEhZXzNQSF9DTU5fQ1NJX0NPTU1PTl9DVFJMbihyZWdzLT5jb21tb25fcmVn c19vZmZzZXQsIDYpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBpX2NzaTJwaHlfaHdf b3BzIHBoeV9xY29tX21pcGlfY3NpMl9vcHNfM3BoXzFfMCA9IHsKKwkuaHdfdmVyc2lvbl9yZWFk ID0gcGh5X3Fjb21fbWlwaV9jc2kyX2h3X3ZlcnNpb25fcmVhZCwKKwkucmVzZXQgPSBwaHlfcWNv bV9taXBpX2NzaTJfcmVzZXQsCisJLmxhbmVzX2VuYWJsZSA9IHBoeV9xY29tX21pcGlfY3NpMl9s YW5lc19lbmFibGUsCisJLmxhbmVzX2Rpc2FibGUgPSBwaHlfcWNvbV9taXBpX2NzaTJfbGFuZXNf ZGlzYWJsZSwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgeDFlX2Nsa3NbXSA9IHsK KwkiY29yZSIsCisJInRpbWVyIiwKKwkiYWhiIgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCB4MWVfc3VwcGxpZXNbXSA9IHsKKwkidmRkYS0wcDkiLAorCSJ2ZGRhLTFwMiIKK307CisK K3N0YXRpYyBzdHJ1Y3QgbWlwaV9jc2kyX2dlbnBkIHgxZV9nZW5wZHNbXSA9IHsKKwl7IC5uYW1l ID0gInRvcCIsIC5zY2FsZWQgPSBmYWxzZSB9LAorCXsgLm5hbWUgPSAibW1jeCIsIC5zY2FsZWQg PSB0cnVlIH0sCisJeyAubmFtZSA9ICJteCIsIC5zY2FsZWQgPSB0cnVlIH0sCit9OworCitjb25z dCBzdHJ1Y3QgbWlwaV9jc2kycGh5X3NvY19jZmcgbWlwaV9jc2kyX2RwaHlfNG5tX3gxZSA9IHsK Kwkub3BzID0gJnBoeV9xY29tX21pcGlfY3NpMl9vcHNfM3BoXzFfMCwKKwkucmVnX2luZm8gPSB7 CisJCS5pbml0X3NlcSA9IGxhbmVfcmVnc194MWU4MDEwMCwKKwkJLmxhbmVfYXJyYXlfc2l6ZSA9 IEFSUkFZX1NJWkUobGFuZV9yZWdzX3gxZTgwMTAwKSwKKwkJLmNvbW1vbl9yZWdzX29mZnNldCA9 IDB4MTAwMCwKKwl9LAorCS5zdXBwbHlfbmFtZXMgPSAoY29uc3QgY2hhciAqKil4MWVfc3VwcGxp ZXMsCisJLm51bV9zdXBwbGllcyA9IEFSUkFZX1NJWkUoeDFlX3N1cHBsaWVzKSwKKwkuY2xrX25h bWVzID0gKGNvbnN0IGNoYXIgKiopeDFlX2Nsa3MsCisJLm51bV9jbGsgPSBBUlJBWV9TSVpFKHgx ZV9jbGtzKSwKKwkuZ2VucGRzID0geDFlX2dlbnBkcywKKwkubnVtX2dlbnBkcyA9IEFSUkFZX1NJ WkUoeDFlX2dlbnBkcyksCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5 LXFjb20tbWlwaS1jc2kyLWNvcmUuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW1p cGktY3NpMi1jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4u NDIyN2YyOWFkMWY2NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3Bo eS1xY29tLW1pcGktY3NpMi1jb3JlLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBMaW5hcm8g THRkLgorICovCisKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2Vz Lmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNp bmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4 L29mLmg+CisjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3Bo eS5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHktbWlwaS1kcGh5Lmg+CisjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcG1fZG9tYWluLmg+CisjaW5j bHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2lu Y2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0 Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCisjaW5jbHVkZSAicGh5LXFjb20tbWlwaS1j c2kyLmgiCisKK3N0YXRpYyBpbnQKK3BoeV9xY29tX21pcGlfY3NpMl9zZXRfY2xvY2tfcmF0ZXMo c3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2UgKmNzaTJwaHksCisJCQkJICAgczY0IGxpbmtfZnJl cSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjc2kycGh5LT5kZXY7CisJdW5zaWduZWQgbG9u ZyBvcHBfcmF0ZSA9IGxpbmtfZnJlcSAvIDQ7CisJc3RydWN0IGRldl9wbV9vcHAgKm9wcDsKKwls b25nIHRpbWVyX3JhdGU7CisJaW50IGksIHBzdGF0ZTsKKwlpbnQgcmV0OworCisJb3BwID0gZGV2 X3BtX29wcF9maW5kX2ZyZXFfY2VpbChkZXYsICZvcHBfcmF0ZSk7CisJaWYgKElTX0VSUihvcHAp KSB7CisJCWRldl9lcnIoY3NpMnBoeS0+ZGV2LCAiQ291bGRuJ3QgZmluZCBjZWlsaW5nIGZvciAl bGxkIEh6XG4iLAorCQkJbGlua19mcmVxKTsKKwkJcmV0dXJuIFBUUl9FUlIob3BwKTsKKwl9CisK Kwlwc3RhdGUgPSAwOworCWZvciAoaSA9IDA7IGkgPCBjc2kycGh5LT5wZF9saXN0LT5udW1fcGRz OyBpKyspIHsKKwkJdW5zaWduZWQgaW50IHBlcmY7CisKKwkJaWYgKCFjc2kycGh5LT5zb2NfY2Zn LT5nZW5wZHNbaV0uc2NhbGVkKQorCQkJY29udGludWU7CisKKwkJcGVyZiA9IGRldl9wbV9vcHBf Z2V0X3JlcXVpcmVkX3BzdGF0ZShvcHAsIHBzdGF0ZSk7CisJCXBzdGF0ZSArPSAxOworCisJCXJl dCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoY3NpMnBoeS0+cGRfbGlzdC0+ cGRfZGV2c1tpXSwgcGVyZik7CisJCWlmIChyZXQpIHsKKwkJCWRldl9lcnIoY3NpMnBoeS0+ZGV2 LCAiQ291bGRuJ3Qgc2V0IHBlcmYgc3RhdGUgJXVcbiIsCisJCQkJcGVyZik7CisJCQlkZXZfcG1f b3BwX3B1dChvcHApOworCQkJZ290byB1bnNldF9wc3RhdGU7CisJCX0KKwl9CisJZGV2X3BtX29w cF9wdXQob3BwKTsKKworCXJldCA9IGRldl9wbV9vcHBfc2V0X3JhdGUoZGV2LCBvcHBfcmF0ZSk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNzaTJwaHktPmRldiwgImRldl9wbV9vcHBfc2V0X3Jh dGUoKSBmYWlsXG4iKTsKKwkJZ290byB1bnNldF9vcHBfcmF0ZTsKKwl9CisKKwl0aW1lcl9yYXRl ID0gY2xrX3JvdW5kX3JhdGUoY3NpMnBoeS0+dGltZXJfY2xrLCBsaW5rX2ZyZXEgLyA0KTsKKwlp ZiAodGltZXJfcmF0ZSA8PSAwKSB7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8gdW5zZXRfb3Bw X3JhdGU7CisJfQorCisJcmV0ID0gY2xrX3NldF9yYXRlKGNzaTJwaHktPnRpbWVyX2NsaywgdGlt ZXJfcmF0ZSk7CisJaWYgKHJldCkKKwkJZ290byB1bnNldF9vcHBfcmF0ZTsKKworCWNzaTJwaHkt PnRpbWVyX2Nsa19yYXRlID0gdGltZXJfcmF0ZTsKKworCXJldHVybiAwOworCit1bnNldF9vcHBf cmF0ZToKKwlkZXZfcG1fb3BwX3NldF9yYXRlKGRldiwgMCk7CisKK3Vuc2V0X3BzdGF0ZToKKwl3 aGlsZSAoaS0tKSB7CisJCWlmICghY3NpMnBoeS0+c29jX2NmZy0+Z2VucGRzW2ldLnNjYWxlZCkK KwkJCWNvbnRpbnVlOworCisJCWRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoY3Np MnBoeS0+cGRfbGlzdC0+cGRfZGV2c1tpXSwgMCk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBwaHlfcWNvbV9taXBpX2NzaTJfY29uZmlndXJlKHN0cnVjdCBwaHkgKnBoeSwK KwkJCQkJdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQoreworCXN0cnVjdCBtaXBpX2Nz aTJwaHlfZGV2aWNlICpjc2kycGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IHBo eV9jb25maWd1cmVfb3B0c19taXBpX2RwaHkgKmRwaHlfY2ZnID0gJm9wdHMtPm1pcGlfZHBoeTsK KwlzdHJ1Y3QgbWlwaV9jc2kycGh5X3N0cmVhbV9jZmcgKnN0cmVhbV9jZmcgPSAmY3NpMnBoeS0+ c3RyZWFtX2NmZzsKKwlpbnQgcmV0OworCisJcmV0ID0gcGh5X21pcGlfZHBoeV9jb25maWdfdmFs aWRhdGUoZHBoeV9jZmcpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAoZHBoeV9j ZmctPmxhbmVzIDwgMSB8fCBkcGh5X2NmZy0+bGFuZXMgPiBDU0kyX01BWF9EQVRBX0xBTkVTKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCXN0cmVhbV9jZmctPmxpbmtfZnJlcSA9IGRwaHlfY2ZnLT5o c19jbGtfcmF0ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBoeV9xY29tX21pcGlf Y3NpMl9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksCisJCQkJICAgICAgIGVudW0gcGh5X21vZGUg bW9kZSwgaW50IHN1Ym1vZGUpCit7CisJc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2UgKmNzaTJw aHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWlmIChtb2RlICE9IFBIWV9NT0RFX01JUElf RFBIWSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJY3NpMnBoeS0+cGh5X21vZGUgPSBtb2Rl OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBoeV9xY29tX21pcGlfY3NpMl9wb3dlcl9v bihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2UgKmNzaTJw aHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwljb25zdCBzdHJ1Y3QgbWlwaV9jc2kycGh5X2h3 X29wcyAqb3BzID0gY3NpMnBoeS0+c29jX2NmZy0+b3BzOworCWludCBpLCByZXQ7CisKKwlyZXQg PSByZWd1bGF0b3JfYnVsa19lbmFibGUoY3NpMnBoeS0+c29jX2NmZy0+bnVtX3N1cHBsaWVzLAor CQkJCSAgICBjc2kycGh5LT5zdXBwbGllcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoY3NpMnBoeS0+ZGV2KTsKKwlpZiAocmV0 IDwgMCkKKwkJZ290byBkaXNhYmxlX3JlZ3VsYXRvcnM7CisKKwlyZXQgPSBwaHlfcWNvbV9taXBp X2NzaTJfc2V0X2Nsb2NrX3JhdGVzKGNzaTJwaHksIGNzaTJwaHktPnN0cmVhbV9jZmcubGlua19m cmVxKTsKKwlpZiAocmV0KQorCQlnb3RvIHBvd2Vyb2ZmX3BoeTsKKworCXJldCA9IGNsa19idWxr X3ByZXBhcmVfZW5hYmxlKGNzaTJwaHktPnNvY19jZmctPm51bV9jbGssCisJCQkJICAgICAgY3Np MnBoeS0+Y2xrcyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNzaTJwaHktPmRldiwgImZhaWxl ZCB0byBlbmFibGUgY2xvY2tzLCAlZFxuIiwgcmV0KTsKKwkJZ290byB1bnNldF9yYXRlOworCX0K KworCW9wcy0+cmVzZXQoY3NpMnBoeSk7CisKKwlvcHMtPmh3X3ZlcnNpb25fcmVhZChjc2kycGh5 KTsKKworCXJldCA9IG9wcy0+bGFuZXNfZW5hYmxlKGNzaTJwaHksICZjc2kycGh5LT5zdHJlYW1f Y2ZnKTsKKwlpZiAocmV0KQorCQlnb3RvIHVuc2V0X2Nsb2NrczsKKworCXJldHVybiAwOworCit1 bnNldF9jbG9ja3M6CisJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoY3NpMnBoeS0+c29jX2Nm Zy0+bnVtX2NsaywKKwkJCQkgICBjc2kycGh5LT5jbGtzKTsKKwordW5zZXRfcmF0ZToKKwlkZXZf cG1fb3BwX3NldF9yYXRlKGNzaTJwaHktPmRldiwgMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Np MnBoeS0+cGRfbGlzdC0+bnVtX3BkczsgaSsrKSB7CisJCWlmICghY3NpMnBoeS0+c29jX2NmZy0+ Z2VucGRzW2ldLnNjYWxlZCkKKwkJCWNvbnRpbnVlOworCisJCWRldl9wbV9nZW5wZF9zZXRfcGVy Zm9ybWFuY2Vfc3RhdGUoY3NpMnBoeS0+cGRfbGlzdC0+cGRfZGV2c1tpXSwgMCk7CisJfQorCitw b3dlcm9mZl9waHk6CisJcG1fcnVudGltZV9wdXRfc3luYyhjc2kycGh5LT5kZXYpOworCitkaXNh YmxlX3JlZ3VsYXRvcnM6CisJcmVndWxhdG9yX2J1bGtfZGlzYWJsZShjc2kycGh5LT5zb2NfY2Zn LT5udW1fc3VwcGxpZXMsCisJCQkgICAgICAgY3NpMnBoeS0+c3VwcGxpZXMpOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludCBwaHlfcWNvbV9taXBpX2NzaTJfcG93ZXJfb2ZmKHN0cnVj dCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbWlwaV9jc2kycGh5X2RldmljZSAqY3NpMnBoeSA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOworCWNvbnN0IHN0cnVjdCBtaXBpX2NzaTJwaHlfaHdfb3BzICpv cHMgPSBjc2kycGh5LT5zb2NfY2ZnLT5vcHM7CisJaW50IGk7CisKKwlvcHMtPmxhbmVzX2Rpc2Fi bGUoY3NpMnBoeSwgJmNzaTJwaHktPnN0cmVhbV9jZmcpOworCisJY2xrX2J1bGtfZGlzYWJsZV91 bnByZXBhcmUoY3NpMnBoeS0+c29jX2NmZy0+bnVtX2NsaywKKwkJCQkgICBjc2kycGh5LT5jbGtz KTsKKworCWRldl9wbV9vcHBfc2V0X3JhdGUoY3NpMnBoeS0+ZGV2LCAwKTsKKworCWZvciAoaSA9 IDA7IGkgPCBjc2kycGh5LT5wZF9saXN0LT5udW1fcGRzOyBpKyspIHsKKwkJaWYgKCFjc2kycGh5 LT5zb2NfY2ZnLT5nZW5wZHNbaV0uc2NhbGVkKQorCQkJY29udGludWU7CisKKwkJZGV2X3BtX2dl bnBkX3NldF9wZXJmb3JtYW5jZV9zdGF0ZShjc2kycGh5LT5wZF9saXN0LT5wZF9kZXZzW2ldLCAw KTsKKwl9CisKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGNzaTJwaHktPmRldik7CisKKwlyZWd1bGF0 b3JfYnVsa19kaXNhYmxlKGNzaTJwaHktPnNvY19jZmctPm51bV9zdXBwbGllcywKKwkJCSAgICAg ICBjc2kycGh5LT5zdXBwbGllcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBwaHlfb3BzIHBoeV9xY29tX21pcGlfY3NpMl9vcHMgPSB7CisJLmNvbmZpZ3VyZQk9IHBo eV9xY29tX21pcGlfY3NpMl9jb25maWd1cmUsCisJLnNldF9tb2RlCT0gcGh5X3Fjb21fbWlwaV9j c2kyX3NldF9tb2RlLAorCS5wb3dlcl9vbgk9IHBoeV9xY29tX21pcGlfY3NpMl9wb3dlcl9vbiwK KwkucG93ZXJfb2ZmCT0gcGh5X3Fjb21fbWlwaV9jc2kyX3Bvd2VyX29mZiwKKwkub3duZXIJCT0g VEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IHBoeV9xY29tX21pcGlfY3NpMl9hdHRhY2hf cG1fZG9tYWlucyhzdHJ1Y3QgbWlwaV9jc2kycGh5X2RldmljZSAqY3NpMnBoeSkKK3sKKwlzdHJ1 Y3QgZGV2X3BtX2RvbWFpbl9hdHRhY2hfZGF0YSBwZF9kYXRhID0geyAwIH07CisJY29uc3QgY2hh ciAqKnBkX25hbWVzOworCWludCBpOworCisJcGRfbmFtZXMgPSBkZXZtX2t6YWxsb2MoY3NpMnBo eS0+ZGV2LAorCQkJCXNpemVvZihjaGFyICopICogY3NpMnBoeS0+c29jX2NmZy0+bnVtX2dlbnBk cywKKwkJCQlHRlBfS0VSTkVMKTsKKwlpZiAoIXBkX25hbWVzKQorCQlyZXR1cm4gLUVOT01FTTsK KworCWZvciAoaSA9IDA7IGkgPCBjc2kycGh5LT5zb2NfY2ZnLT5udW1fZ2VucGRzOyBpKyspCisJ CXBkX25hbWVzW2ldID0gY3NpMnBoeS0+c29jX2NmZy0+Z2VucGRzW2ldLm5hbWU7CisKKwlwZF9k YXRhLnBkX25hbWVzID0gcGRfbmFtZXM7CisJcGRfZGF0YS5udW1fcGRfbmFtZXMgPSBjc2kycGh5 LT5zb2NfY2ZnLT5udW1fZ2VucGRzOworCisJcmV0dXJuIGRldm1fcG1fZG9tYWluX2F0dGFjaF9s aXN0KGNzaTJwaHktPmRldiwgJnBkX2RhdGEsCisJCQkJCSAgJmNzaTJwaHktPnBkX2xpc3QpOwor fQorCitzdGF0aWMgaW50IHBoeV9xY29tX21pcGlfY3NpMl9wYXJzZV9yb3V0aW5nKHN0cnVjdCBt aXBpX2NzaTJwaHlfZGV2aWNlICpjc2kycGh5KQoreworCXN0cnVjdCBtaXBpX2NzaTJwaHlfc3Ry ZWFtX2NmZyAqc3RyZWFtX2NmZyA9ICZjc2kycGh5LT5zdHJlYW1fY2ZnOworCXUzMiBsYW5lX3Bv bGFyaXRpZXNbQ1NJMl9NQVhfREFUQV9MQU5FUyArIDFdOworCXUzMiBkYXRhX2xhbmVzW0NTSTJf TUFYX0RBVEFfTEFORVNdOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNzaTJwaHktPmRldjsKKwlz dHJ1Y3QgZndub2RlX2hhbmRsZSAqZXA7CisJaW50IG51bV9wb2xhcml0aWVzOworCWludCBudW1f ZGF0YV9sYW5lczsKKwl1MzIgYnVzX3R5cGU7CisJaW50IGksIHJldDsKKworCWVwID0gZndub2Rl X2dyYXBoX2dldF9lbmRwb2ludF9ieV9pZChkZXZfZndub2RlKGRldiksIDAsIDEsIDApOworCWlm IChlcCkgeworCQlmd25vZGVfaGFuZGxlX3B1dChlcCk7CisJCWRldl9lcnIoZGV2LCAiRFBIWSBz cGxpdCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJ fQorCisJZXAgPSBmd25vZGVfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X2lkKGRldl9md25vZGUoZGV2 KSwgMCwgMCwgMCk7CisJaWYgKCFlcCkgeworCQlkZXZfZXJyKGRldiwgIk1pc3NpbmcgcG9ydEAw XG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJLyogYnVzLXR5cGUgaXMgb3B0aW9uYWws IEQtUEhZIGlzIHRoZSBkZWZhdWx0ICovCisJYnVzX3R5cGUgPSBNRURJQV9CVVNfVFlQRV9DU0ky X0RQSFk7CisJZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKGVwLCAiYnVzLXR5cGUiLCAmYnVzX3R5 cGUpOworCisJaWYgKGJ1c190eXBlICE9IE1FRElBX0JVU19UWVBFX0NTSTJfRFBIWSkgeworCQly ZXQgPSAtRU9QTk9UU1VQUDsKKwkJZGV2X2VycihkZXYsICJVbnN1cHBvcnRlZCBidXMtdHlwZSAl dVxuIiwgYnVzX3R5cGUpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJbnVtX2RhdGFfbGFuZXMg PSBmd25vZGVfcHJvcGVydHlfY291bnRfdTMyKGVwLCAiZGF0YS1sYW5lcyIpOworCWlmIChudW1f ZGF0YV9sYW5lcyA8IDEgfHwgbnVtX2RhdGFfbGFuZXMgPiBDU0kyX01BWF9EQVRBX0xBTkVTKSB7 CisJCXJldCA9IC1FSU5WQUw7CisJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBkYXRhLWxhbmVzIGNv dW50OiAlZFxuIiwgbnVtX2RhdGFfbGFuZXMpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCXN0cmVh bV9jZmctPm51bV9kYXRhX2xhbmVzID0gbnVtX2RhdGFfbGFuZXM7CisKKwlyZXQgPSBmd25vZGVf cHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZXAsICJkYXRhLWxhbmVzIiwgZGF0YV9sYW5lcywKKwkJ CQkJICAgICBzdHJlYW1fY2ZnLT5udW1fZGF0YV9sYW5lcyk7CisJaWYgKHJldCkgeworCQlkZXZf ZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGRhdGEtbGFuZXM6ICVkXG4iLCByZXQpOworCQlnb3Rv IG91dF9wdXQ7CisJfQorCisJLyogbGFuZS1wb2xhcml0aWVzOiBvcHRpb25hbCwgdXAgdG8gbnVt X2RhdGFfbGFuZXMgKyAxIGVudHJpZXMgKi8KKwltZW1zZXQobGFuZV9wb2xhcml0aWVzLCAweDAw LCBzaXplb2YobGFuZV9wb2xhcml0aWVzKSk7CisJbnVtX3BvbGFyaXRpZXMgPSBmd25vZGVfcHJv cGVydHlfY291bnRfdTMyKGVwLCAibGFuZS1wb2xhcml0aWVzIik7CisJaWYgKG51bV9wb2xhcml0 aWVzID4gMCkgeworCQlpZiAobnVtX3BvbGFyaXRpZXMgIT0gc3RyZWFtX2NmZy0+bnVtX2RhdGFf bGFuZXMgKyAxKSB7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZGV2X2VycihkZXYsICJjbG9jaytk YXRhLWxhbmUgJWQvcG9sYXJpdGllcyAlZCBtaXNtYXRjaFxuIiwKKwkJCQlzdHJlYW1fY2ZnLT5u dW1fZGF0YV9sYW5lcyArIDEsIG51bV9wb2xhcml0aWVzKTsKKwkJCWdvdG8gb3V0X3B1dDsKKwkJ fQorCisJCXJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShlcCwgImxhbmUtcG9s YXJpdGllcyIsIGxhbmVfcG9sYXJpdGllcywKKwkJCQkJCSAgICAgbnVtX3BvbGFyaXRpZXMpOwor CQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGxhbmUtcG9sYXJp dGllczogJWRcbiIsIHJldCk7CisJCQlnb3RvIG91dF9wdXQ7CisJCX0KKwl9CisKKwljc2kycGh5 LT5zdHJlYW1fY2ZnLmxhbmVfY2ZnLmNsay5wb3MgPSBDU0kyX0RFRkFVTFRfQ0xLX0xBTkU7CisJ Y3NpMnBoeS0+c3RyZWFtX2NmZy5sYW5lX2NmZy5jbGsucG9sID0gbGFuZV9wb2xhcml0aWVzWzBd OworCisJZm9yIChpID0gMDsgaSA8IGNzaTJwaHktPnN0cmVhbV9jZmcubnVtX2RhdGFfbGFuZXM7 IGkrKykgeworCQlpZiAoZGF0YV9sYW5lc1tpXSA8IDEgfHwgZGF0YV9sYW5lc1tpXSA+IENTSTJf TUFYX0RBVEFfTEFORVMpIHsKKwkJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBsYW5lICVkXG4iLCBk YXRhX2xhbmVzW2ldKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF9wdXQ7CisJCX0K KworCQkvKiBDb252ZXJ0IGRhdGEtbGFuZXMgPSA8MSAyIDMgND4gdG8gYml0IHBvc2l0aW9ucyAq LworCQljc2kycGh5LT5zdHJlYW1fY2ZnLmxhbmVfY2ZnLmRhdGFbaV0ucG9zID0gZGF0YV9sYW5l c1tpXSAtIDE7CisJCWNzaTJwaHktPnN0cmVhbV9jZmcubGFuZV9jZmcuZGF0YVtpXS5wb2wgPSBs YW5lX3BvbGFyaXRpZXNbaSArIDFdOworCX0KKworCXJldCA9IDA7CisKK291dF9wdXQ6CisJZndu b2RlX2hhbmRsZV9wdXQoZXApOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBwaHlf cWNvbV9taXBpX2NzaTJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwl1 bnNpZ25lZCBpbnQgaSwgbnVtX2NsaywgbnVtX3N1cHBsaWVzOworCXN0cnVjdCBtaXBpX2NzaTJw aHlfZGV2aWNlICpjc2kycGh5OworCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBwaHkgKmdlbmVyaWNf cGh5OworCWludCByZXQ7CisKKwljc2kycGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpj c2kycGh5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjc2kycGh5KQorCQlyZXR1cm4gLUVOT01FTTsK KworCWNzaTJwaHktPmRldiA9IGRldjsKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBjc2kycGh5KTsK KworCWNzaTJwaHktPnNvY19jZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYtPmRldik7 CisKKwlpZiAoIWNzaTJwaHktPnNvY19jZmcpCisJCXJldHVybiAtRUlOVkFMOworCisJbnVtX2Ns ayA9IGNzaTJwaHktPnNvY19jZmctPm51bV9jbGs7CisKKwlyZXQgPSBwaHlfcWNvbV9taXBpX2Nz aTJfcGFyc2Vfcm91dGluZyhjc2kycGh5KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ cmV0ID0gcGh5X3Fjb21fbWlwaV9jc2kyX2F0dGFjaF9wbV9kb21haW5zKGNzaTJwaHkpOworCWlm IChyZXQgPCAwIHx8IGNzaTJwaHktPnBkX2xpc3QgPT0gTlVMTCkgeworCQlpZiAocmV0ID09IDAp CisJCQlyZXQgPSAtRU5PREVWOworCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZh aWxlZCB0byBhdHRhY2ggcG93ZXItZG9tYWluIGxpc3RcbiIpOworCX0KKworCXJldCA9IGRldm1f cG1fcnVudGltZV9lbmFibGUoZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIGRldl9lcnJf cHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gZW5hYmxlIHBtIHJ1bnRpbWVcbiIpOworCisJcmV0 ID0gZGV2bV9jbGtfYnVsa19nZXRfYWxsKGRldiwgJmNzaTJwaHktPmNsa3MpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBnZXQgY2xv Y2tzXG4iKTsKKworCWlmIChudW1fY2xrICE9IHJldCkgeworCQlyZXR1cm4gZGV2X2Vycl9wcm9i ZShkZXYsIC1FTk9ERVYsICJjbG9jayBjb3VudCAlZCBleHBlY3RlZCAlZFxuIiwKKwkJCQkgICAg IHJldCwgbnVtX2Nsayk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG51bV9jbGs7IGkrKykgewor CQlpZiAoIWNzaTJwaHktPmNsa3NbaV0uaWQpCisJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYs IC1FSU5WQUwsICJNaXNzaW5nIGNsb2NrLW5hbWVzXG4iKTsKKworCQlpZiAoIXN0cmNtcChjc2ky cGh5LT5jbGtzW2ldLmlkLCAidGltZXIiKSkgeworCQkJY3NpMnBoeS0+dGltZXJfY2xrID0gY3Np MnBoeS0+Y2xrc1tpXS5jbGs7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoIWNzaTJwaHktPnRp bWVyX2NsaykKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRU5PREVWLCAibm8gdGltZXIg Y2xvY2tcbiIpOworCisJcmV0ID0gZGV2bV9wbV9vcHBfc2V0X2Nsa25hbWUoZGV2LCAiY29yZSIp OworCWlmIChyZXQpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRv IHNldCBvcHAgY2xrbmFtZVxuIik7CisKKwlyZXQgPSBkZXZtX3BtX29wcF9vZl9hZGRfdGFibGUo ZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgImludmFs aWQgT1BQIHRhYmxlIGluIGRldmljZSB0cmVlXG4iKTsKKworCW51bV9zdXBwbGllcyA9IGNzaTJw aHktPnNvY19jZmctPm51bV9zdXBwbGllczsKKwljc2kycGh5LT5zdXBwbGllcyA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqY3NpMnBoeS0+c3VwcGxpZXMpICogbnVtX3N1cHBsaWVzLAorCQkJ CQkgR0ZQX0tFUk5FTCk7CisJaWYgKCFjc2kycGh5LT5zdXBwbGllcykKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3N1cHBsaWVzOyBpKyspCisJCWNzaTJwaHktPnN1 cHBsaWVzW2ldLnN1cHBseSA9IGNzaTJwaHktPnNvY19jZmctPnN1cHBseV9uYW1lc1tpXTsKKwor CXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgbnVtX3N1cHBsaWVzLCBjc2kycGh5 LT5zdXBwbGllcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQs CisJCQkJICAgICAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3Igc3VwcGxpZXNcbiIpOworCisJY3Np MnBoeS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKKwlp ZiAoSVNfRVJSKGNzaTJwaHktPmJhc2UpKQorCQlyZXR1cm4gUFRSX0VSUihjc2kycGh5LT5iYXNl KTsKKworCWdlbmVyaWNfcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgJnBoeV9xY29t X21pcGlfY3NpMl9vcHMpOworCWlmIChJU19FUlIoZ2VuZXJpY19waHkpKSB7CisJCXJldCA9IFBU Ul9FUlIoZ2VuZXJpY19waHkpOworCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgImZh aWxlZCB0byBjcmVhdGUgcGh5XG4iKTsKKwl9CisJY3NpMnBoeS0+cGh5ID0gZ2VuZXJpY19waHk7 CisKKwlwaHlfc2V0X2RydmRhdGEoZ2VuZXJpY19waHksIGNzaTJwaHkpOworCisJcGh5X3Byb3Zp ZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hs YXRlKTsKKwlpZiAoIUlTX0VSUihwaHlfcHJvdmlkZXIpKQorCQlkZXZfZGJnKGRldiwgIlJlZ2lz dGVyZWQgTUlQSSBDU0kyIFBIWSBkZXZpY2VcbiIpOworCisJcmV0dXJuIFBUUl9FUlJfT1JfWkVS TyhwaHlfcHJvdmlkZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBw aHlfcWNvbV9taXBpX2NzaTJfb2ZfbWF0Y2hfdGFibGVbXSA9IHsKKwl7IC5jb21wYXRpYmxlCT0g InFjb20seDFlODAxMDAtY3NpMi1waHkiLCAuZGF0YSA9ICZtaXBpX2NzaTJfZHBoeV80bm1feDFl IH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcGh5X3Fjb21fbWlwaV9jc2ky X29mX21hdGNoX3RhYmxlKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcGh5X3Fj b21fbWlwaV9jc2kyX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gcGh5X3Fjb21fbWlwaV9jc2kyX3By b2JlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gInFjb20tbWlwaS1jc2kyLXBoeSIsCisJCS5v Zl9tYXRjaF90YWJsZSA9IHBoeV9xY29tX21pcGlfY3NpMl9vZl9tYXRjaF90YWJsZSwKKwl9LAor fTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihwaHlfcWNvbV9taXBpX2NzaTJfZHJpdmVyKTsK KworTU9EVUxFX0RFU0NSSVBUSU9OKCJRdWFsY29tbSBNSVBJIENTSTIgUEhZIGRyaXZlciIpOwor TU9EVUxFX0FVVEhPUigiQnJ5YW4gTydEb25vZ2h1ZSA8Ym9kQGtlcm5lbC5vcmc+Iik7CitNT0RV TEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHkt cWNvbS1taXBpLWNzaTIuaCBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW1pcGktY3Np Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjdlNTVhZTAwNzM3 MDQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1taXBp LWNzaTIuaApAQCAtMCwwICsxLDk3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLworLyoKKyAqCisgKiBRdWFsY29tbSBNSVBJIENTSTIgQ1BIWS9EUEhZIGRyaXZlcgor ICoKKyAqIENvcHlyaWdodCAoQykgMjAyNSBMaW5hcm8gTHRkLgorICovCisjaWZuZGVmIF9fUEhZ X1FDT01fTUlQSV9DU0kyX0hfXworI2RlZmluZSBfX1BIWV9RQ09NX01JUElfQ1NJMl9IX18KKwor I2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKworI2RlZmluZSBDU0kyX01BWF9EQVRBX0xBTkVT CTQKKyNkZWZpbmUgQ1NJMl9ERUZBVUxUX0NMS19MQU5FCTcKKworc3RydWN0IG1pcGlfY3NpMnBo eV9sYW5lIHsKKwl1OCBwb3M7CisJdTggcG9sOworfTsKKworc3RydWN0IG1pcGlfY3NpMnBoeV9s YW5lc19jZmcgeworCXN0cnVjdCBtaXBpX2NzaTJwaHlfbGFuZSBkYXRhW0NTSTJfTUFYX0RBVEFf TEFORVNdOworCXN0cnVjdCBtaXBpX2NzaTJwaHlfbGFuZSBjbGs7Cit9OworCitzdHJ1Y3QgbWlw aV9jc2kycGh5X3N0cmVhbV9jZmcgeworCXM2NCBsaW5rX2ZyZXE7CisJdTggbnVtX2RhdGFfbGFu ZXM7CisJc3RydWN0IG1pcGlfY3NpMnBoeV9sYW5lc19jZmcgbGFuZV9jZmc7Cit9OworCitzdHJ1 Y3QgbWlwaV9jc2kycGh5X2RldmljZTsKKworc3RydWN0IG1pcGlfY3NpMnBoeV9od19vcHMgewor CXZvaWQgKCpod192ZXJzaW9uX3JlYWQpKHN0cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlICpjc2ky cGh5X2Rldik7CisJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgbWlwaV9jc2kycGh5X2RldmljZSAqY3Np MnBoeV9kZXYpOworCWludCAoKmxhbmVzX2VuYWJsZSkoc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZp Y2UgKmNzaTJwaHlfZGV2LAorCQkJICAgIHN0cnVjdCBtaXBpX2NzaTJwaHlfc3RyZWFtX2NmZyAq Y2ZnKTsKKwl2b2lkICgqbGFuZXNfZGlzYWJsZSkoc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2Ug KmNzaTJwaHlfZGV2LAorCQkJICAgICAgc3RydWN0IG1pcGlfY3NpMnBoeV9zdHJlYW1fY2ZnICpj ZmcpOworfTsKKworc3RydWN0IG1pcGlfY3NpMnBoeV9sYW5lX3JlZ3MgeworCWNvbnN0IHMzMiBy ZWdfYWRkcjsKKwljb25zdCBzMzIgcmVnX2RhdGE7CisJY29uc3QgdTMyIGRlbGF5X3VzOworCWNv bnN0IHUzMiBwYXJhbV90eXBlOworfTsKKworc3RydWN0IG1pcGlfY3NpMnBoeV9kZXZpY2VfcmVn cyB7CisJY29uc3Qgc3RydWN0IG1pcGlfY3NpMnBoeV9sYW5lX3JlZ3MgKmluaXRfc2VxOworCWNv bnN0IGludCBsYW5lX2FycmF5X3NpemU7CisJY29uc3QgdTMyIGNvbW1vbl9yZWdzX29mZnNldDsK K307CisKK3N0cnVjdCBtaXBpX2NzaTJfZ2VucGQgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJYm9v bCBzY2FsZWQ7Cit9OworCitzdHJ1Y3QgbWlwaV9jc2kycGh5X3NvY19jZmcgeworCWNvbnN0IHN0 cnVjdCBtaXBpX2NzaTJwaHlfaHdfb3BzICpvcHM7CisJY29uc3Qgc3RydWN0IG1pcGlfY3NpMnBo eV9kZXZpY2VfcmVncyByZWdfaW5mbzsKKworCWNvbnN0IGNoYXIgKiogY29uc3Qgc3VwcGx5X25h bWVzOworCWNvbnN0IHVuc2lnbmVkIGludCBudW1fc3VwcGxpZXM7CisKKwljb25zdCBjaGFyICoq IGNvbnN0IGNsa19uYW1lczsKKwljb25zdCB1bnNpZ25lZCBpbnQgbnVtX2NsazsKKworCWNvbnN0 IHN0cnVjdCBtaXBpX2NzaTJfZ2VucGQgKmdlbnBkczsKKwljb25zdCB1bnNpZ25lZCBpbnQgbnVt X2dlbnBkczsKK307CisKK3N0cnVjdCBtaXBpX2NzaTJwaHlfZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2 aWNlICpkZXY7CisJdTggcGh5X21vZGU7CisKKwlzdHJ1Y3QgcGh5ICpwaHk7CisJdm9pZCBfX2lv bWVtICpiYXNlOworCisJc3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7CisJc3RydWN0IGNsayAq dGltZXJfY2xrOworCXUzMiB0aW1lcl9jbGtfcmF0ZTsKKworCXN0cnVjdCByZWd1bGF0b3JfYnVs a19kYXRhICpzdXBwbGllczsKKwlzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9saXN0ICpwZF9saXN0Owor CisJY29uc3Qgc3RydWN0IG1pcGlfY3NpMnBoeV9zb2NfY2ZnICpzb2NfY2ZnOworCXN0cnVjdCBt aXBpX2NzaTJwaHlfc3RyZWFtX2NmZyBzdHJlYW1fY2ZnOworCisJdTMyIGh3X3ZlcnNpb247Cit9 OworCitleHRlcm4gY29uc3Qgc3RydWN0IG1pcGlfY3NpMnBoeV9zb2NfY2ZnIG1pcGlfY3NpMl9k cGh5XzRubV94MWU7CisKKyNlbmRpZiAvKiBfX1BIWV9RQ09NX01JUElfQ1NJMl9IX18gKi8KCi0t IAoyLjU1LjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1waHkK