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 87721C982D0 for ; Thu, 17 Sep 2026 21:04:53 +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=GpeJ3LkrXBxuZOCrFDh8sxA227h6udjyuuv1oilRXME=; b=Y5q/YBtoIj9cD7 qDL4mL96wx+ecwgDlu6YfuYvDzFdtUZ7qPO0Yb6TeBZbWRNf8NpKFuS95VatNpdg0hCoIANOpvo4S bKn7d8RWPM1gFLbPG5yxzS3+sNi5aY5QdsxEIadrD92JR9EE9jw1O8B2LwFrYpnezqwsw3gI8G0B3 6YEaO5mrEUSvy/+wS4ntIGxVL0ET2IWOdEutNZMux9AKIQewNaMCy7c0W3EB2xeIiFbZK3C6wNM7w 7w7CDpk6FP6Mk/i9IYnnfeujSW9tYmw4hecNzF6VTWWNhQ+cGPoFqTL1Jniu06/bkd1W6vZaCZ15A K0RsiKLRkc1IEbRy0UZQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x7JHl-0000000CWs3-1J9N; Thu, 17 Sep 2026 21:04:49 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x7JHj-0000000CWrk-20lZ for linux-amlogic@bombadil.infradead.org; Thu, 17 Sep 2026 21:04:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Sender:Reply-To:Content-ID:Content-Description; bh=BVSFbjnkl8UpNcArJJM1cv5lAji7DzunjkCRs+hQbqc=; b=b2uD3NkHwuXeohHf9BYkPRXQBs 7YcCe53Joh5qjP5yBFMjvJc5ueMTS38z1WnyAwIMsa/x0/w077RA2H5jXG1n+WI2W+bQo34lPDR6u 0qm+ymoxqoGxAWc+xdJTvQy5YwgfRfqsPvhZE6ALmifEwCisOIn2ml69mm+ss3SzCV26NdnMRsk5E l8AICeiNV5CBRKV6YW4XMekKnrdVY3Y+bRHaIs814xnjDdiCdRvg9YgwVb9yKcRJY+QfS1qF/IcpS bHB1eJSgNCnVixiEPeTQ1huQv8QfwYy0YLR1gMsi0OpmeVBI9Dky5TSTi7GSJ5e+wTMYDRAHolmzT g2DDudeg==; Received: from mail-wm2-x11.google.com ([2a00:1450:4864:31::11]) by desiato.infradead.org with esmtps (Exim 4.99.2 #2 (Red Hat Linux)) id 1x7JFs-00000009Gd7-3yab for linux-amlogic@lists.infradead.org; Thu, 17 Sep 2026 21:04:46 +0000 Received: by mail-wm2-x11.google.com with SMTP id 5b1f17b1804b1-49d097b4939so496455e9.0 for ; Thu, 17 Sep 2026 14:02:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789678963; x=1790283763; 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=BVSFbjnkl8UpNcArJJM1cv5lAji7DzunjkCRs+hQbqc=; b=DRsmKJq07YM4/nW4TqqPOMIS0KUCTePZ8qWPV8N86N9LCzM9T3LU/Lkp8uxkdPenxM FpOP0mIo3JClI66bYdeGVzjWbXd2WN7ZaHueR28lRjUho08xPq7YQAeksv1eFncDQp9S BuFGAA+gHcMcdwgcIMfXWXFiIUhT1tXLkfL2nW8Zbg/zXel9ODnGIh756PUZCrCbICz+ 5qG47ANxT1uxw+VXwNcsSzG8cxbdLzmS5ZRqLMHWezwcCpiMD8KsGmYI7PNI0IShg612 tnj0D9N4NhfWiv1GfgYZN23shaUtJv6Ona8LHwGfNsu3jMhvAM81oSmy0DtAiqdRS+P0 kVig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789678963; x=1790283763; 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=BVSFbjnkl8UpNcArJJM1cv5lAji7DzunjkCRs+hQbqc=; b=jcVug0yMrpbSORbyfR22UN3byV6w8Es3FzK7hxJcT89oGIAfD/98SxdGh1CF9JD+YM aLnETkzxaH1UlRdGUmuvqa/Gj7a7szAwInsGCRCrW1o+3LNAzmNIat0N1PB+i655ZmNH zVGF2fpUPR1bSZyYjE7AjbpQHEAK0VV2C6b0Y2yhBfEDhImv+elTJMpGc40vUB0xVzz5 /QErYJhpDf5zlXN9hE4ffciOpNZvDWAMcU3cZ9dGDlHX+/Sk2IGkyCPBP9HVHsvQE/tt 6m6G07qSEq9azB8gWjm1YPDje69WhZKtH+KjOZ0ty8M2VTTJJLWg4/fqlfYdG4xLKz5R su3A== X-Forwarded-Encrypted: i=1; AKwUvBxzNSuZmtDTD87DwAIIx8s+puE5TjdrZ11QbFsCVeBmhscgB6nF7h/BxzVbZ5Excw6HD9/Jfs0HLStUA/xZ@lists.infradead.org X-Gm-Message-State: AFuF++nZCH8z0ypqsFsyiJ/R8tRqjFwobfghvQi/2gqV6soV6hgrMdSl iHT5fvGIiEnSQSqQBpFRy4NSwMTLup+QfXYZJGeG6hVcw8G44fqJt9EzYKH0bVVYf7M= X-Gm-Gg: AYBFou2dR9IlhHGaa4D8qimNQGwQ1q0Y1ZV6Ej5/a8IxeL2Mrqhu3LD4SLPEfHXzmdj vdDDcpCsdiBpuAv131M05DFg8xhc8VNSd9/Bc6ZOxT1DEC3y8N4arpj8KwUNYwiMycCguwix1Sy wnZ/gjXX4oe/8BrXeHUUH6Dq+2axwJMQNUU1p16bDab7uI3l89AoXIOhcLzfbCt2ChHaaAAURhv qsJ6XlRSKIhQ66S3Pp6B8xXMnpDcAwUYrbS+wccVdGbRghtbxUmaeB6beDfePyzNOaNUdzc8feq bN95tk46y1wlr6h4cD0kuGjcTDar8/b9he5qdTwKPPlUQ2ftIJ2BgcMui2LxUv9NQQLN+wHBYBD 9wg+Qi0vXZ2Wd5GXUNYrNWgqagkKoBRqhSgE4AKTs/wUnU1Xz4I8+ybxmzyngkN72hXBws3X76F UnMJVuMZ1564rhHrQ32ATlbpWlF5vV7nrV2NFenbNFbyFXdxeP8SwMUy/5YUh4469c6z1jHYUTm SmnLQ== X-Received: by 2002:a05:600c:34d0:b0:495:6e68:5df2 with SMTP id 5b1f17b1804b1-49fc56ef520mr1779275e9.12.1789678962730; Thu, 17 Sep 2026 14:02:42 -0700 (PDT) Received: from [127.0.1.1] ([151.42.87.32]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fc5755c40sm3106095e9.3.2026.09.17.14.02.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 14:02:42 -0700 (PDT) From: Valerio Setti Date: Thu, 17 Sep 2026 23:02:33 +0200 Subject: [PATCH v2 3/6] ASoC: meson: add AUDIN driver MIME-Version: 1.0 Message-Id: <20260917-audin-v2-3-38de4bc1de34@baylibre.com> References: <20260917-audin-v2-0-38de4bc1de34@baylibre.com> In-Reply-To: <20260917-audin-v2-0-38de4bc1de34@baylibre.com> To: Jerome Brunet , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Neil Armstrong , Kevin Hilman , Martin Blumenstingl , Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Valerio Setti X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=28710; i=vsetti@baylibre.com; h=from:subject:message-id; bh=AOYdmWNtnAPFdoV4iO0i0WTAgTqFKle4O5cMxyzJiHY=; b=owGbwMvMwCV2z3ty7kUrRgbG02pJDFlrQnP129+eXbGoZhOPl/omz6CUdeccfzf5MNx8/H7Op l1SYjEbO0pZGMS4GGTFFFlYpt/7XVCq9tA44WQBzBxWJpAhDFycAjCRZdcYGf4y/Z7A8m9fh45B 1d6/ojcf/1EsmngsjUPtpQXLuSe7T9ow/OEv0PnQ+8juoPpktoZDwozMYmW9ptztZQJzL+/vdmA R5wEA X-Developer-Key: i=vsetti@baylibre.com; a=openpgp; fpr=0497DEFB707526E13360C970DE4B936DD13A0100 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260917_220320_861623_B0589E51 X-CRM114-Status: GOOD ( 32.18 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org QVVESU4gcHJvdmlkZXMgYXVkaW8gaW5wdXQgc3VwcG9ydCB0byB0aGUgQW1sb2dpYyBHWCBiYXNl ZCBwbGF0Zm9ybXMKKEdYQkIvR1hMKS4gSXQgaXMgdGhlIGNvdW50ZXJwYXJ0IG9mIEFJVSBmb3Ig Y2FwdHVyZSBhbmQgaXQgc3RyaWN0bHkKZm9sbG93cyB0aGUgc2FtZSBzdHJ1Y3R1cmU6Ci0gSXQg dGFrZXMgdGhlIG93bmVyc2hpcCBvZiB0aGUgZW50aXJlIHJlZ2lzdGVyIHJhbmdlOwotIEl0IHNl dHMgdXAgcGVyaXBoZXJhbCBjbG9jayBhbmQgaGFuZGxlcyB0aGUgcmVzZXQ7Ci0gSXQgYWRkcyBz dXBwb3J0IGZvciBJMlMgZGF0YSBmb3JtYXR0ZXIgdGhyb3VnaCBhIHdpZGdldDsKLSBJdCBpbnN0 YW50aWF0ZXMgZWFjaCBvZiB0aGUgRklGT3MgYXMgY29tcG9uZW50J3MgREFJLgoKQm90aCBJMlMg ZGF0YSBmb3JtYXR0ZXIgYW5kIEZJRk8gY29kZSBsaXZlIHNlcGFyYXRlIGZpbGVzCignYXVkaW4t Zm9ybWF0dGVyLWkycycgYW5kICdhdWRpbi1maWZvJywgcmVzcGVjdGl2ZWx5KSBmb3IgYSBiZXR0 ZXIKY29kZSBvcmdhbml6YXRpb24uIFVuZm9ydHVuYXRlbHkgaXQgd2Fzbid0IHBvc3NpYmxlIHRv IGFkZCB0aGVtIGFzCmluZGVwZW5kZW50IGRldmljZXMgZHVlIHRvIHRoZSBtZXNzeSByZWdpc3Rl ciBsYXlvdXQgb3JnYW5pemF0aW9uIHRoYXQKaGFzIGJlZW4gaW1wbGVtZW50ZWQgYnkgdGhlIG1h bnVmYWN0dXJlciBvbiB0aGlzIHBsYXRmb3JtLgoKVGhpcyBjb21wb25lbnQgY291bGQgaWRlYWxs eSBoYW5kbGUgbXVsdGlwbGUgaW5wdXQgc291cmNlcyAoU1BESUYsIEkyUywKUENNLCBIRE1JKSwg YnV0IGZvciB0aGUgdGltZSBiZWluZyBvbmx5IEkyUyBpcyBhZGRlZCBhbmQgaGFzIGJlZW4gdGVz dGVkLgoKTm90ZTogZHVlIHRvIGRlZmF1bHQgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiwgYXQgYm9v dCBhbGwgRklGTyBpbnB1dCBzb3VyY2VzCmFyZSBzZXQgdG8gIlNQRElGIi4gSW4gb3JkZXIgdG8g YmUgYWJsZSB0byB0ZXN0IEkyUyB0aGV5IG11c3QgYmUgc3dpdGNoZWQKdG8gIkkyUyIuIFRoaXMg Y2FuIGVhc2lseSBiZSBhY2hpZXZlZCB3aXRoOgoKICAkIGFtaXhlciBzc2V0ICdBVURJTiBGSUZP MCBTUkMgU0VMJyAnSTJTJwoKU2lnbmVkLW9mZi1ieTogVmFsZXJpbyBTZXR0aSA8dnNldHRpQGJh eWxpYnJlLmNvbT4KLS0tCiBzb3VuZC9zb2MvbWVzb24vS2NvbmZpZyAgICAgICAgICAgICAgIHwg ICA5ICsKIHNvdW5kL3NvYy9tZXNvbi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDQgKwogc291 bmQvc29jL21lc29uL2F1ZGluLWZpZm8uYyAgICAgICAgICB8IDM2NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzb3VuZC9zb2MvbWVzb24vYXVkaW4tZm9ybWF0dGVyLWkycy5j IHwgMTc0ICsrKysrKysrKysrKysrKysKIHNvdW5kL3NvYy9tZXNvbi9hdWRpbi5jICAgICAgICAg ICAgICAgfCAxODYgKysrKysrKysrKysrKysrKysKIHNvdW5kL3NvYy9tZXNvbi9hdWRpbi5oICAg ICAgICAgICAgICAgfCAgMzAgKysrCiA2IGZpbGVzIGNoYW5nZWQsIDc3MCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL21lc29uL0tjb25maWcgYi9zb3VuZC9zb2MvbWVzb24v S2NvbmZpZwppbmRleCA0YzQwYmY2MGRjNGUuLjlkODU4OWI1YTg4ZiAxMDA2NDQKLS0tIGEvc291 bmQvc29jL21lc29uL0tjb25maWcKKysrIGIvc291bmQvc29jL21lc29uL0tjb25maWcKQEAgLTE3 LDYgKzE3LDE0IEBAIGNvbmZpZyBTTkRfTUVTT05fQUlVCiAJICBTZWxlY3QgWSBvciBNIHRvIGFk ZCBzdXBwb3J0IGZvciB0aGUgQXVkaW8gb3V0cHV0IHN1YnN5c3RlbSBmb3VuZAogCSAgaW4gdGhl IEFtbG9naWMgTWVzb244LCBNZXNvbjhiIGFuZCBHWCBTb0MgZmFtaWxpZXMKIAorY29uZmlnIFNO RF9NRVNPTl9BVURJTgorCXRyaXN0YXRlICJBbWxvZ2ljIEFVRElOIgorCXNlbGVjdCBSRUdNQVBf TU1JTworCXNlbGVjdCBTTkRfTUVTT05fR1hfRk9STUFUVEVSCisJaGVscAorCSAgU2VsZWN0IFkg b3IgTSB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIGF1ZGlvIGlucHV0IHN1YnN5c3RlbSBmb3VuZAor CSAgaW4gdGhlIEFtbG9naWMgR1ggU29DIGZhbWlseS4gQ3VycmVudGx5IG9ubHkgSTJTIGlucHV0 IGlzIHN1cHBvcnRlZC4KKwogY29uZmlnIFNORF9NRVNPTl9BWEdfRklGTwogCXRyaXN0YXRlCiAJ c2VsZWN0IFJFR01BUF9NTUlPCkBAIC0xMTMsNiArMTIxLDcgQEAgY29uZmlnIFNORF9NRVNPTl9H WF9TT1VORF9DQVJECiAJdHJpc3RhdGUgIkFtbG9naWMgR1ggU291bmQgQ2FyZCBTdXBwb3J0Igog CXNlbGVjdCBTTkRfTUVTT05fQ0FSRF9VVElMUwogCWltcGx5IFNORF9NRVNPTl9BSVUKKwlpbXBs eSBTTkRfTUVTT05fQVVESU4KIAloZWxwCiAJICBTZWxlY3QgWSBvciBNIHRvIGFkZCBzdXBwb3J0 IGZvciB0aGUgR1hCQi9HWEwgU29DIHNvdW5kIGNhcmQKIApkaWZmIC0tZ2l0IGEvc291bmQvc29j L21lc29uL01ha2VmaWxlIGIvc291bmQvc29jL21lc29uL01ha2VmaWxlCmluZGV4IDFiMWZiZThh MDQ1OC4uNGFmNzVkZjBkMTliIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvbWVzb24vTWFrZWZpbGUK KysrIGIvc291bmQvc29jL21lc29uL01ha2VmaWxlCkBAIC0xMCw2ICsxMCw5IEBAIHNuZC1zb2Mt bWVzb24tYWl1LXkgKz0gYWl1LWZpZm8ubwogc25kLXNvYy1tZXNvbi1haXUteSArPSBhaXUtZmlm by1pMnMubwogc25kLXNvYy1tZXNvbi1haXUteSArPSBhaXUtZmlmby1zcGRpZi5vCiBzbmQtc29j LW1lc29uLWd4LWZvcm1hdHRlci15IDo9IGd4LWZvcm1hdHRlci5vCitzbmQtc29jLW1lc29uLWF1 ZGluLXkgOj0gYXVkaW4ubworc25kLXNvYy1tZXNvbi1hdWRpbi15ICs9IGF1ZGluLWZvcm1hdHRl ci1pMnMubworc25kLXNvYy1tZXNvbi1hdWRpbi15ICs9IGF1ZGluLWZpZm8ubwogc25kLXNvYy1t ZXNvbi1heGctZmlmby15IDo9IGF4Zy1maWZvLm8KIHNuZC1zb2MtbWVzb24tYXhnLWZyZGRyLXkg Oj0gYXhnLWZyZGRyLm8KIHNuZC1zb2MtbWVzb24tYXhnLXRvZGRyLXkgOj0gYXhnLXRvZGRyLm8K QEAgLTMwLDYgKzMzLDcgQEAgc25kLXNvYy1tZXNvbi10OTAxNS15IDo9IHQ5MDE1Lm8KIAogb2Jq LSQoQ09ORklHX1NORF9NRVNPTl9BSVUpICs9IHNuZC1zb2MtbWVzb24tYWl1Lm8KIG9iai0kKENP TkZJR19TTkRfTUVTT05fR1hfRk9STUFUVEVSKSArPSBzbmQtc29jLW1lc29uLWd4LWZvcm1hdHRl ci5vCitvYmotJChDT05GSUdfU05EX01FU09OX0FVRElOKSArPSBzbmQtc29jLW1lc29uLWF1ZGlu Lm8KIG9iai0kKENPTkZJR19TTkRfTUVTT05fQVhHX0ZJRk8pICs9IHNuZC1zb2MtbWVzb24tYXhn LWZpZm8ubwogb2JqLSQoQ09ORklHX1NORF9NRVNPTl9BWEdfRlJERFIpICs9IHNuZC1zb2MtbWVz b24tYXhnLWZyZGRyLm8KIG9iai0kKENPTkZJR19TTkRfTUVTT05fQVhHX1RPRERSKSArPSBzbmQt c29jLW1lc29uLWF4Zy10b2Rkci5vCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWVzb24vYXVkaW4t Zmlmby5jIGIvc291bmQvc29jL21lc29uL2F1ZGluLWZpZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjM5Y2E2NWUzY2VlOQotLS0gL2Rldi9udWxsCisrKyBiL3Nv dW5kL3NvYy9tZXNvbi9hdWRpbi1maWZvLmMKQEAgLTAsMCArMSwzNjcgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDI2IEJheUxp YnJlLCBTQVMuCisvLyBBdXRob3I6IFZhbGVyaW8gU2V0dGkgPHZzZXR0aUBiYXlsaWJyZS5jb20+ CisKKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBw aW5nLmg+CisjaW5jbHVkZSA8bGludXgvaHJ0aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21hdGg2 NC5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K KyNpbmNsdWRlIDxsaW51eC93b3JkcGFydC5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMu aD4KKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4KKyNpbmNsdWRlIDxzb3VuZC9zb2MtZGFpLmg+CisK KyNpbmNsdWRlICJhdWRpbi5oIgorCisvKiBGSUZPIHJlZ2lzdGVycyAqLworI2RlZmluZSBBVURJ Tl9GSUZPX1NUQVJUCTB4MDAKKyNkZWZpbmUgQVVESU5fRklGT19FTkQJCTB4MDQKKyNkZWZpbmUg QVVESU5fRklGT19QVFIJCTB4MDgKKworLyogRklGT3hfQ1RSTDEgcmVnaXN0ZXJzIGFuZCBiaXRz ICovCisjZGVmaW5lIEFVRElOX0ZJRk9fQ1RSTDEJCQkweDE4CisjZGVmaW5lICBBVURJTl9GSUZP X0NUUkwxX0RJTl9CWVRFX05VTV9NQVNLCUdFTk1BU0soMywgMikKKyNkZWZpbmUgIEFVRElOX0ZJ Rk9fQ1RSTDFfRElOX1BPU18wMV9NQVNLCUdFTk1BU0soMSwgMCkKKworLyogV2hlbiB0aGUgRklG TyBpcyBmdWxsIHRoZSBkYXRhIGlzIGJ1bGsgdHJhbnNmZXJyZWQgdG8gbWVtb3J5LiAqLworI2Rl ZmluZSBBVURJTl9GSUZPX0xBTkVfU0laRQkJOCAvKiBieXRlcyAqLworI2RlZmluZSBBVURJTl9G SUZPX0kyU19CTE9DSwkJKEFVRElOX0ZJRk9fTEFORV9TSVpFICogMzIpIC8qIDI1NiBieXRlcyAq LworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgYXVkaW5fZmlmb19wY21f aHcgPSB7CisJLmluZm8gPSAoU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfAorCQkgU05EUlZf UENNX0lORk9fTU1BUCB8CisJCSBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElEIHwKKwkJIFNORFJW X1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSIHwKKwkJIFNORFJWX1BDTV9JTkZPX1BBVVNFKSwKKwku Zm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFLAorCS5yYXRlX21pbiA9IDU1MTIsCisJ LnJhdGVfbWF4ID0gMTkyMDAwLAorCS5jaGFubmVsc19taW4gPSAyLAorCS5jaGFubmVsc19tYXgg PSAyLAorCS8qCisJICogVGhlIEZJRk8gb25seSBtb3ZlcyBkYXRhIHRvIHRoZSBtZW1vcnkgb25j ZSBpdCBpcyBmdWxsLCBzbyBpdHMgcG9pbnRlcgorCSAqIHByb2dyZXNzZXMgb25lIGJsb2NrIGF0 IGEgdGltZS4KKwkgKi8KKwkucGVyaW9kX2J5dGVzX21pbiA9IDIgKiBBVURJTl9GSUZPX0kyU19C TE9DSywKKwkucGVyaW9kX2J5dGVzX21heCA9IFVJTlRfTUFYLCAvKiBCb3VuZGVkIGJ5IGJ1ZmZl cl9ieXRlc19tYXggKi8KKwkucGVyaW9kc19taW4gPSAyLAorCS5wZXJpb2RzX21heCA9IFVJTlRf TUFYLAorCS8qCisJICogSXQncyAxIE1CLiBUaGVyZSBpcyBubyBwaHlzaWNhbCBjb25zdHJhaW50 IGZvciB0aGlzOyBpdCdzIG9ubHkgbWVhbnQgdG8KKwkgKiBwcm92aWRlIHNvbWUgZGVjZW50bHkg bGFyZ2UgYnVmZmVyIHNpemUgd2hlcmUgdG8gc3RvcmUgaW5jb21pbmcgZGF0YQorCSAqIGFuZCBm aXQgdmFyaW91cyBwZXJpb2RfYnl0ZXMgcmVxdWVzdHMuCisJICovCisJLmJ1ZmZlcl9ieXRlc19t YXggPSA0MDk2ICogQVVESU5fRklGT19JMlNfQkxPQ0ssCit9OworCitzdHJ1Y3QgYXVkaW5fZmlm b19kYWlfZGF0YSB7CisJLyoKKwkgKiBUaGUgQVVESU4gcGVyaXBoZXJhbCBoYXMgYW4gSVJRIHRv IHNpZ25hbCB3aGVuIGRhdGEgaXMgcmVjZWl2ZWQsIGJ1dAorCSAqIGl0IGNhbm5vdCBncmFudCBh IHBlcmlvZGljIGJlaGF2aW9yLiBUaGUgcmVhc29uIGlzIHRoYXQgdGhlIHJlZ2lzdGVyCisJICog d2hpY2ggaG9sZHMgdGhlIGFkZHJlc3Mgd2hpY2ggdHJpZ2dlcnMgdGhlIElSUSBtdXN0IGJlIHVw ZGF0ZWQKKwkgKiBjb250aW51b3VzbHkuIFRoaXMgY3JlYXRlcyBhIHJpc2sgb2Ygb3ZlcmZsb3cg aWYgZm9yIGFueSByZWFzb24gdGhlCisJICogSVNSIGV4ZWN1dGlvbiBpcyBkZWxheWVkLiBVc2lu ZyBhIHBlcmlvZGljIHRpbWVyIGlzIHRoZXJlZm9yZSBzaW1wbGVyCisJICogYW5kIG1vcmUgcmVs aWFibGUuCisJICovCisJc3RydWN0IGhydGltZXIgcG9sbGluZ190aW1lcjsKKwlzdHJ1Y3Qgc25k X3NvY19kYWkgKmRhaTsKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKKwl1 bnNpZ25lZCBpbnQgcGVyaW9kX2J5dGVzOworCXVuc2lnbmVkIGludCBieXRlX3JhdGU7CisJdW5z aWduZWQgaW50IGxhc3RfcG9zOyAvKiBQb3NpdGlvbiBpbnNpZGUgdGhlIGFsbG9jYXRlZCByZWFk IGJ1ZmZlci4gKi8KKwlib29sIHJ1bm5pbmc7Cit9OworCitzdGF0aWMgdW5zaWduZWQgaW50IGF1 ZGluX2ZpZm9fcG9zKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLAorCQkJCSAgIHN0cnVjdCBzbmRf cGNtX3J1bnRpbWUgKnJ1bnRpbWUpCit7CisJdW5zaWduZWQgaW50IHB0ciA9IGxvd2VyXzMyX2Jp dHMocnVudGltZS0+ZG1hX2FkZHIpOworCisJcmVnbWFwX3JlYWQoZGFpLT5jb21wb25lbnQtPnJl Z21hcCwgZGFpLT5kcml2ZXItPmJhc2UgKyBBVURJTl9GSUZPX1BUUiwgJnB0cik7CisKKwlyZXR1 cm4gcHRyIC0gbG93ZXJfMzJfYml0cyhydW50aW1lLT5kbWFfYWRkcik7Cit9CisKK3N0YXRpYyBr dGltZV90IGF1ZGluX2ZpZm9fYnl0ZXNfdG9fbnMoc3RydWN0IGF1ZGluX2ZpZm9fZGFpX2RhdGEg KmRhdGEsCisJCQkJICAgICAgdW5zaWduZWQgaW50IGJ5dGVzKQoreworCXJldHVybiBkaXZfdTY0 KCh1NjQpYnl0ZXMgKiBOU0VDX1BFUl9TRUMsIGRhdGEtPmJ5dGVfcmF0ZSk7Cit9CisKK3N0YXRp YyBpbnQgYXVkaW5fZmlmb19kYWlfdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1 YnN0cmVhbSwgaW50IGNtZCwKKwkJCQkgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0 cnVjdCBhdWRpbl9maWZvX2RhaV9kYXRhICpkYXRhID0gc25kX3NvY19kYWlfZG1hX2RhdGFfZ2V0 X2NhcHR1cmUoZGFpKTsKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IGRh aS0+Y29tcG9uZW50OworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VS X1NUQVJUOgorCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfUkVTVU1FOgorCWNhc2UgU05EUlZfUENN X1RSSUdHRVJfUEFVU0VfUkVMRUFTRToKKwkJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMo Y29tcG9uZW50LCBkYWktPmRyaXZlci0+YmFzZSArIEFVRElOX0ZJRk9fQ1RSTCwKKwkJCQkJICAg ICAgQVVESU5fRklGT19DVFJMX0VOLAorCQkJCQkgICAgICBBVURJTl9GSUZPX0NUUkxfRU4pOwor CQlXUklURV9PTkNFKGRhdGEtPnJ1bm5pbmcsIHRydWUpOworCQlocnRpbWVyX3N0YXJ0KCZkYXRh LT5wb2xsaW5nX3RpbWVyLAorCQkJICAgICAgYXVkaW5fZmlmb19ieXRlc190b19ucyhkYXRhLCBk YXRhLT5wZXJpb2RfYnl0ZXMpLAorCQkJICAgICAgSFJUSU1FUl9NT0RFX1JFTF9TT0ZUKTsKKwkJ YnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVVNQRU5EOgorCWNhc2UgU05EUlZfUENN X1RSSUdHRVJfUEFVU0VfUFVTSDoKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisJCVdS SVRFX09OQ0UoZGF0YS0+cnVubmluZywgZmFsc2UpOworCQkvKgorCQkgKiBQQ00gc3RyZWFtIGxv Y2sgaXMgaGVsZCBoZXJlLiBJZiB0aGUgdGltZXIgY2FsbGJhY2sgaXMgcnVubmluZworCQkgKiAo aS5lLiBpdCBjYW5ub3QgYmUgc3RvcHBlZCkgdGhlcmUgaXMgYWxzbyBocnRpbWVyX2NhbmNlbCgp CisJCSAqIGluIGh3X2ZyZWUoKS4KKwkJICovCisJCWhydGltZXJfdHJ5X3RvX2NhbmNlbCgmZGF0 YS0+cG9sbGluZ190aW1lcik7CisJCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBv bmVudCwgZGFpLT5kcml2ZXItPmJhc2UgKyBBVURJTl9GSUZPX0NUUkwsCisJCQkJCSAgICAgIEFV RElOX0ZJRk9fQ1RSTF9FTiwgMCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF1ZGluX2ZpZm9fZGFpX3By ZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJICBzdHJ1Y3Qg c25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3QgYXVkaW5fZmlmb19kYWlfZGF0YSAqZGF0YSA9 IHNuZF9zb2NfZGFpX2RtYV9kYXRhX2dldF9jYXB0dXJlKGRhaSk7CisJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjb21wb25lbnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3Qgc25kX3BjbV9y dW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCWRtYV9hZGRyX3QgZG1hX2Vu ZCA9IHJ1bnRpbWUtPmRtYV9hZGRyICsgcnVudGltZS0+ZG1hX2J5dGVzIC0gQVVESU5fRklGT19M QU5FX1NJWkU7CisJdW5zaWduZWQgaW50IHZhbDsKKworCWRhdGEtPmxhc3RfcG9zID0gMDsKKwor CS8qCisJICogU2V0dXAgbWVtb3J5IGJvdW5kYXJpZXMuCisJICogTm90ZTogRE1BIGhhcyBhIDMy LWJpdCBtYXNrLCBzbyBpdCdzIE9LIHRvIHRha2UgbG93ZXIgMzIgYml0cy4KKwkgKi8KKwlzbmRf c29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIGRhaS0+ZHJpdmVyLT5iYXNlICsgQVVESU5f RklGT19TVEFSVCwKKwkJCQlsb3dlcl8zMl9iaXRzKHJ1bnRpbWUtPmRtYV9hZGRyKSk7CisJc25k X3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LCBkYWktPmRyaXZlci0+YmFzZSArIEFVRElO X0ZJRk9fUFRSLAorCQkJCWxvd2VyXzMyX2JpdHMocnVudGltZS0+ZG1hX2FkZHIpKTsKKwlzbmRf c29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIGRhaS0+ZHJpdmVyLT5iYXNlICsgQVVESU5f RklGT19FTkQsCisJCQkJbG93ZXJfMzJfYml0cyhkbWFfZW5kKSk7CisKKwkvKiBMb2FkIG5ldyBh ZGRyZXNzZXMgKGJvdGggTE9BRCBhbmQgVUcgYXJlIHNlbGYtY2xlYXJpbmcpLiAqLworCXZhbCA9 IEFVRElOX0ZJRk9fQ1RSTF9MT0FEIHwgQVVESU5fRklGT19DVFJMX1VHOworCXNuZF9zb2NfY29t cG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgZGFpLT5kcml2ZXItPmJhc2UgKyBBVURJTl9G SUZPX0NUUkwsIHZhbCwgdmFsKTsKKworCS8qIFJlc2V0IChSU1QgaXMgc2VsZi1jbGVhcmluZyku ICovCisJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBkYWktPmRyaXZl ci0+YmFzZSArIEFVRElOX0ZJRk9fQ1RSTCwKKwkJCQkgICAgICBBVURJTl9GSUZPX0NUUkxfUlNU LAorCQkJCSAgICAgIEFVRElOX0ZJRk9fQ1RSTF9SU1QpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgYXVkaW5fZmlmb19kYWlfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bSAqc3Vic3RyZWFtLAorCQkJCSAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywK KwkJCQkgICAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHNuZF9zb2NfY29t cG9uZW50ICpjb21wb25lbnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgYXVkaW5fZmlmb19k YWlfZGF0YSAqZGF0YSA9IHNuZF9zb2NfZGFpX2RtYV9kYXRhX2dldF9jYXB0dXJlKGRhaSk7CisJ dW5zaWduZWQgaW50IHZhbDsKKworCS8qCisJICogVGhlIEkyUyBpbnB1dCBkZWNvZGVyIHBhc3Nl cyAyNCBiaXRzIG9mIGxlZnQtanVzdGlmaWVkIGRhdGEKKwkgKiBidXQgZm9yIHRoZSB0aW1lIGJl aW5nIHdlIG9ubHkgc3VwcG9ydCAxNiBiaXQgZm9ybWF0dGVkIHNhbXBsZXMKKwkgKiB3aGljaCBt ZWFucyB0aGF0IHdlIGRyb3AgdGhlIExTQi4KKwkgKi8KKwl2YWwgPSBGSUVMRF9QUkVQKEFVRElO X0ZJRk9fQ1RSTDFfRElOX1BPU18wMV9NQVNLLCAxKTsKKwlzbmRfc29jX2NvbXBvbmVudF91cGRh dGVfYml0cyhjb21wb25lbnQsIGRhaS0+ZHJpdmVyLT5iYXNlICsgQVVESU5fRklGT19DVFJMMSwK KwkJCQkgICAgICBBVURJTl9GSUZPX0NUUkwxX0RJTl9QT1NfMDFfTUFTSywKKwkJCQkgICAgICB2 YWwpOworCisJLyogU2V0IHNhbXBsZSBzaXplIHRvIDIgYnl0ZXMgKDE2IGJpdCkgKi8KKwl2YWwg PSBGSUVMRF9QUkVQKEFVRElOX0ZJRk9fQ1RSTDFfRElOX0JZVEVfTlVNX01BU0ssIDEpOworCXNu ZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgZGFpLT5kcml2ZXItPmJhc2Ug KyBBVURJTl9GSUZPX0NUUkwxLAorCQkJCSAgICAgIEFVRElOX0ZJRk9fQ1RSTDFfRElOX0JZVEVf TlVNX01BU0ssCisJCQkJICAgICAgdmFsKTsKKworCS8qCisJICogVGhpcyBpcyBhIGJpdCBjb3Vu dGVyaW50dWl0aXZlLiBFdmVuIHRob3VnaCB0aGUgcGxhdGZvcm0gaGFzIGEgc2luZ2xlCisJICog cGluIGZvciBJMlMgaW5wdXQgd2hpY2ggd291bGQgbWVhbiB0aGF0IHdlIGNhbiBvbmx5IHN1cHBv cnQgMgorCSAqIGNoYW5uZWxzLCBkb2luZyBzbyB3b3VsZCBjYXVzZSBzYW1wbGVzIHRvIGJlIHN0 b3JlZCBpbiBhIHdlaXJkIHdheQorCSAqIGludG8gdGhlIEZJRk86IGFsbCB0aGUgc2FtcGxlcyBm cm9tIHRoZSAxc3QgY2hhbm5lbCBvbiB0aGUgMXN0IGhhbGYKKwkgKiBvZiB0aGUgRklGTywgdGhl biBzYW1wbGVzIGZyb20gdGhlIDJuZCBjaGFubmVsIGluIHRoZSBvdGhlciBoYWxmLiBPZgorCSAq IGNvdXJzZSBleHRyYSB3b3JrIHdvdWxkIGJlIHJlcXVpcmVkIHRvIHByb3Blcmx5IGludGVybGVh dmUgdGhlbQorCSAqIGJlZm9yZSByZXR1cm5pbmcgdG8gdGhlIHVzZXJzcGFjZS4KKwkgKiBTZXR0 aW5nIGEgc2luZ2xlIGNoYW5uZWwgbW9kZSBpbnN0ZWFkIHNvbHZlcyB0aGUgcHJvYmxlbTogc2Ft cGxlcworCSAqIGZyb20gMXN0IGFuZCAybmQgY2hhbm5lbCBhcmUgc3RvcmVkIGludGVybGVhdmVk IGFuZCBzZXF1ZW50aWFsbHkgaW4KKwkgKiB0aGUgRklGTy4KKwkgKi8KKwl2YWwgPSBGSUVMRF9Q UkVQKEFVRElOX0ZJRk9fQ1RSTF9DSEFOX01BU0ssIDEpOworCXNuZF9zb2NfY29tcG9uZW50X3Vw ZGF0ZV9iaXRzKGNvbXBvbmVudCwgZGFpLT5kcml2ZXItPmJhc2UgKyBBVURJTl9GSUZPX0NUUkws CisJCQkJICAgICAgQVVESU5fRklGT19DVFJMX0NIQU5fTUFTSywgdmFsKTsKKworCS8qCisJICog RklGTyBpcyBmaWxsZWQgbGluZSBieSBsaW5lIGFuZCBlYWNoIG9mIHRoZW0gaXMgOCBieXRlcy4g VGhlCisJICogcHJvYmxlbSBpcyB0aGF0IGVhY2ggbGluZSBpcyBmaWxsZWQgc3RhcnRpbmcgZnJv bSB0aGUgZW5kLAorCSAqIHNvIHdlIG5lZWQgdG8gcHJvcGVybHkgcmVvcmRlciB0aGVtIGJlZm9y ZSBtb3ZpbmcgdG8gdGhlCisJICogUkFNLiBUaGlzIGlzIHRoZSB2YWx1ZSByZXF1aXJlZCB0byBw cm9wZXJseSByZS1vcmRlciBzYW1wbGVzIHN0b3JlZAorCSAqIGluIDE2IGJpdCBmb3JtYXQuCisJ ICovCisJdmFsID0gRklFTERfUFJFUChBVURJTl9GSUZPX0NUUkxfRU5ESUFOX01BU0ssIDYpOwor CXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgZGFpLT5kcml2ZXItPmJh c2UgKyBBVURJTl9GSUZPX0NUUkwsCisJCQkJICAgICAgQVVESU5fRklGT19DVFJMX0VORElBTl9N QVNLLCB2YWwpOworCisJLyogVXNlZCBieSB0aGUgcG9sbGluZyB0aW1lciB0byBjb252ZXJ0IGEg Ynl0ZSBjb3VudCBpbnRvIGEgZGVsYXkuICovCisJZGF0YS0+cGVyaW9kX2J5dGVzID0gcGFyYW1z X3BlcmlvZF9ieXRlcyhwYXJhbXMpOworCWRhdGEtPmJ5dGVfcmF0ZSA9IHBhcmFtc19yYXRlKHBh cmFtcykgKiBwYXJhbXNfY2hhbm5lbHMocGFyYW1zKSAqCisJCQkgIHBhcmFtc19waHlzaWNhbF93 aWR0aChwYXJhbXMpIC8gQklUU19QRVJfQllURTsKKworCWRhdGEtPnN1YnN0cmVhbSA9IHN1YnN0 cmVhbTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF1ZGluX2ZpZm9fZGFpX3N0YXJ0 dXAoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJICBzdHJ1Y3Qgc25k X3NvY19kYWkgKmRhaSkKK3sKKwlpbnQgcmV0OworCisJc25kX3NvY19zZXRfcnVudGltZV9od3Bh cmFtcyhzdWJzdHJlYW0sICZhdWRpbl9maWZvX3BjbV9odyk7CisKKwlyZXQgPSBzbmRfcGNtX2h3 X2NvbnN0cmFpbnRfc3RlcChzdWJzdHJlYW0tPnJ1bnRpbWUsIDAsCisJCQkJCSBTTkRSVl9QQ01f SFdfUEFSQU1fQlVGRkVSX0JZVEVTLAorCQkJCQkgQVVESU5fRklGT19JMlNfQkxPQ0spOworCWlm IChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGFpLT5kZXYsICJGYWlsZWQgdG8gc2V0IGNvbnN0cmFp bnQgb24gYnVmZmVyX2J5dGVzICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IHNuZF9wY21faHdfY29uc3RyYWludF9zdGVwKHN1YnN0cmVhbS0+cnVudGltZSwgMCwKKwkJ CQkJIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfQllURVMsCisJCQkJCSBBVURJTl9GSUZPX0ky U19CTE9DSyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkYWktPmRldiwgIkZhaWxlZCB0 byBzZXQgY29uc3RyYWludCBvbiBwZXJpb2RfYnl0ZXMgJWRcbiIsIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXVkaW5fZmlmb19kYWlfcGNt X25ldyhzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkLAorCQkJCSAgc3RydWN0IHNuZF9z b2NfZGFpICpkYWkpCit7CisJaW50IHJldDsKKworCXJldCA9IGRtYV9jb2VyY2VfbWFza19hbmRf Y29oZXJlbnQoZGFpLT5kZXYsIERNQV9CSVRfTUFTSygzMikpOworCWlmIChyZXQpIHsKKwkJZGV2 X2VycihkYWktPmRldiwgIkZhaWxlZCB0byBzZXQgRE1BIG1hc2sgJWRcbiIsIHJldCk7CisJCXJl dHVybiByZXQ7CisJfQorCisJcmV0ID0gc25kX3BjbV9zZXRfbWFuYWdlZF9idWZmZXJfYWxsKHJ0 ZC0+cGNtLCBTTkRSVl9ETUFfVFlQRV9ERVYsCisJCQkJCSAgICAgZGFpLT5kZXYsCisJCQkJCSAg ICAgYXVkaW5fZmlmb19wY21faHcuYnVmZmVyX2J5dGVzX21heCwKKwkJCQkJICAgICBhdWRpbl9m aWZvX3BjbV9ody5idWZmZXJfYnl0ZXNfbWF4KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGFp LT5kZXYsICJGYWlsZWQgdG8gc2V0IFBDTSBtYW5hZ2VkIGJ1ZmZlciAlZFxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVudW0gaHJ0aW1lcl9y ZXN0YXJ0IGF1ZGluX2ZpZm9fdGltZXJfY2Ioc3RydWN0IGhydGltZXIgKnRpbWVyKQoreworCXN0 cnVjdCBhdWRpbl9maWZvX2RhaV9kYXRhICpkYXRhID0KKwkJY29udGFpbmVyX29mKHRpbWVyLCBz dHJ1Y3QgYXVkaW5fZmlmb19kYWlfZGF0YSwgcG9sbGluZ190aW1lcik7CisJc3RydWN0IHNuZF9w Y21fcnVudGltZSAqcnVudGltZSA9IGRhdGEtPnN1YnN0cmVhbS0+cnVudGltZTsKKwl1bnNpZ25l ZCBpbnQgY3Vycl9wb3MsIGRlbHRhLCBzbGVlcF90aW1lOworCisJaWYgKCFSRUFEX09OQ0UoZGF0 YS0+cnVubmluZykpCisJCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKKworCWN1cnJfcG9zID0g YXVkaW5fZmlmb19wb3MoZGF0YS0+ZGFpLCBydW50aW1lKTsKKwlkZWx0YSA9IChjdXJyX3BvcyA+ PSBkYXRhLT5sYXN0X3BvcykgPworCQljdXJyX3BvcyAtIGRhdGEtPmxhc3RfcG9zIDoKKwkJKHJ1 bnRpbWUtPmRtYV9ieXRlcyAtIGRhdGEtPmxhc3RfcG9zKSArIGN1cnJfcG9zOworCisJLyogUmVw b3J0IG9ubHkgd2hlbiB0aGUgcGVyaW9kIGlzIGNvbXBsZXRlZC4gKi8KKwlpZiAoZGVsdGEgPj0g ZGF0YS0+cGVyaW9kX2J5dGVzKSB7CisJCWRhdGEtPmxhc3RfcG9zID0gY3Vycl9wb3M7CisJCWRl bHRhID0gZGVsdGEgJSBkYXRhLT5wZXJpb2RfYnl0ZXM7CisJCXNuZF9wY21fcGVyaW9kX2VsYXBz ZWQoZGF0YS0+c3Vic3RyZWFtKTsKKwl9CisKKwkvKiBTbGVlcCB1bnRpbCB0aGUgcGVyaW9kIGlz IGNvbXBsZXRlZC4gKi8KKwlzbGVlcF90aW1lID0gcm91bmRfdXAoZGF0YS0+cGVyaW9kX2J5dGVz IC0gZGVsdGEsIEFVRElOX0ZJRk9fSTJTX0JMT0NLKTsKKwlocnRpbWVyX2ZvcndhcmRfbm93KHRp bWVyLCBhdWRpbl9maWZvX2J5dGVzX3RvX25zKGRhdGEsIHNsZWVwX3RpbWUpKTsKKworCWlmICgh UkVBRF9PTkNFKGRhdGEtPnJ1bm5pbmcpKQorCQlyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7CisJ cmV0dXJuIEhSVElNRVJfUkVTVEFSVDsKK30KKworc3RhdGljIGludCBhdWRpbl9maWZvX2RhaV9w cm9iZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3QgYXVkaW5fZmlmb19kYWlf ZGF0YSAqZGF0YTsKKworCWRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7CisJaWYgKCFkYXRhKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWRhdGEtPmRhaSA9IGRhaTsKKworCWhydGltZXJfc2V0dXAo JmRhdGEtPnBvbGxpbmdfdGltZXIsIGF1ZGluX2ZpZm9fdGltZXJfY2IsIENMT0NLX01PTk9UT05J QywKKwkJICAgICAgSFJUSU1FUl9NT0RFX1JFTF9TT0ZUKTsKKworCXNuZF9zb2NfZGFpX2RtYV9k YXRhX3NldF9jYXB0dXJlKGRhaSwgZGF0YSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBhdWRpbl9maWZvX2RhaV9yZW1vdmUoc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJa2Zy ZWUoc25kX3NvY19kYWlfZG1hX2RhdGFfZ2V0X2NhcHR1cmUoZGFpKSk7CisKKwlyZXR1cm4gMDsK K30KKworY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBhdWRpbl9maWZvX2RhaV9vcHMgPSB7 CisJLnRyaWdnZXIJPSBhdWRpbl9maWZvX2RhaV90cmlnZ2VyLAorCS5wcmVwYXJlCT0gYXVkaW5f Zmlmb19kYWlfcHJlcGFyZSwKKwkuaHdfcGFyYW1zCT0gYXVkaW5fZmlmb19kYWlfaHdfcGFyYW1z LAorCS5zdGFydHVwCT0gYXVkaW5fZmlmb19kYWlfc3RhcnR1cCwKKwkucGNtX25ldwk9IGF1ZGlu X2ZpZm9fZGFpX3BjbV9uZXcsCisJLnByb2JlCQk9IGF1ZGluX2ZpZm9fZGFpX3Byb2JlLAorCS5y ZW1vdmUJCT0gYXVkaW5fZmlmb19kYWlfcmVtb3ZlLAorfTsKKworc25kX3BjbV91ZnJhbWVzX3Qg YXVkaW5fZmlmb19jb21wb25lbnRfcG9pbnRlcihzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCwKKwkJCQkJICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQoreworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRp bWU7CisJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHNuZF9zb2Nfc3Vic3RyZWFt X3RvX3J0ZChzdWJzdHJlYW0pOworCXN0cnVjdCBzbmRfc29jX2RhaSAqZGFpID0gc25kX3NvY19y dGRfdG9fY3B1KHJ0ZCwgMCk7CisKKwlyZXR1cm4gYnl0ZXNfdG9fZnJhbWVzKHJ1bnRpbWUsIGF1 ZGluX2ZpZm9fcG9zKGRhaSwgcnVudGltZSkpOworfQorCisvKgorICogc3luY19zdG9wKCkgaXMg Y2FsbGVkIGJlZm9yZSBod19wYXJhbXMoKSwgaHdfZnJlZSgpLCBzdXNwZW5kKCksIHByZXBhcmUo KS4KKyAqIENhbmNlbGxpbmcgdGhlIGhydGltZXIgaGVyZSBlbnN1cmVzIHRoZSB0aW1lciBpcyBy ZWFsbHkgc3RvcHBlZCBldmVuIGluCisgKiBjYXNlIHRoZSBzdHJlYW0gaXMgcnVuLT5zdG9wLT5w cmVwYXJlLT5zdGFydC4KKyAqLworaW50IGF1ZGluX2ZpZm9fc3luY19zdG9wKHN0cnVjdCBzbmRf c29jX2NvbXBvbmVudCAqY29tcG9uZW50LCBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc25kX3NvY19zdWJz dHJlYW1fdG9fcnRkKHN1YnN0cmVhbSk7CisJc3RydWN0IHNuZF9zb2NfZGFpICpkYWkgPSBzbmRf c29jX3J0ZF90b19jcHUocnRkLCAwKTsKKwlzdHJ1Y3QgYXVkaW5fZmlmb19kYWlfZGF0YSAqZGF0 YSA9IHNuZF9zb2NfZGFpX2RtYV9kYXRhX2dldF9jYXB0dXJlKGRhaSk7CisKKwlocnRpbWVyX2Nh bmNlbCgmZGF0YS0+cG9sbGluZ190aW1lcik7CisJV1JJVEVfT05DRShkYXRhLT5ydW5uaW5nLCBm YWxzZSk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9tZXNvbi9hdWRp bi1mb3JtYXR0ZXItaTJzLmMgYi9zb3VuZC9zb2MvbWVzb24vYXVkaW4tZm9ybWF0dGVyLWkycy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGJiYjVjZGI1MmRjCi0t LSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL21lc29uL2F1ZGluLWZvcm1hdHRlci1pMnMuYwpA QCAtMCwwICsxLDE3NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8v CisvLyBDb3B5cmlnaHQgKGMpIDIwMjYgQmF5TGlicmUsIFNBUy4KKy8vIEF1dGhvcjogVmFsZXJp byBTZXR0aSA8dnNldHRpQGJheWxpYnJlLmNvbT4KKworI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxk Lmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8c291bmQvc29jLmg+Cisj aW5jbHVkZSA8c291bmQvc29jLWRhaS5oPgorCisjaW5jbHVkZSAiYXVkaW4uaCIKKyNpbmNsdWRl ICJneC1mb3JtYXR0ZXIuaCIKKworLyogSTJTSU5fQ1RSTCByZWdpc3RlciBhbmQgYml0cyAqLwor I2RlZmluZSBBVURJTl9JMlNJTl9DVFJMCQkJMHg0MAorI2RlZmluZSAgQVVESU5fSTJTSU5fQ1RS TF9JMlNJTl9ESVIJCUJJVCgwKQorI2RlZmluZSAgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9DTEtf U0VMCQlCSVQoMSkKKyNkZWZpbmUgIEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtfU0VMCUJJ VCgyKQorI2RlZmluZSAgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9CQ0xLX0lOVglCSVQoMykKKyNk ZWZpbmUgIEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtfU0tFV19NQVNLCUdFTk1BU0soNiwg NCkKKyNkZWZpbmUgIEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtfSU5WCUJJVCg3KQorI2Rl ZmluZSAgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9TSVpFX01BU0sJR0VOTUFTSyg5LCA4KQorI2Rl ZmluZSAgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9DSEFOX0VOX01BU0sJR0VOTUFTSygxMywgMTAp CisjZGVmaW5lICBBVURJTl9JMlNJTl9DVFJMX0kyU0lOX0VOCQlCSVQoMTUpCisKK3N0YXRpYyBz dHJ1Y3Qgc25kX3NvY19kYWkgKgorYXVkaW5fZm9ybWF0dGVyX2kyc19nZXRfYmUoc3RydWN0IHNu ZF9zb2NfZGFwbV93aWRnZXQgKncpCit7CisJc3RydWN0IHNuZF9zb2NfZGFwbV9wYXRoICpwOwor CXN0cnVjdCBzbmRfc29jX2RhaSAqYmU7CisKKwlzbmRfc29jX2RhcG1fd2lkZ2V0X2Zvcl9lYWNo X3NvdXJjZV9wYXRoKHcsIHApIHsKKwkJaWYgKCFwLT5jb25uZWN0KQorCQkJY29udGludWU7CisK KwkJaWYgKHAtPnNvdXJjZS0+aWQgPT0gc25kX3NvY19kYXBtX2RhaV9vdXQpCisJCQlyZXR1cm4g KHN0cnVjdCBzbmRfc29jX2RhaSAqKXAtPnNvdXJjZS0+cHJpdjsKKworCQliZSA9IGF1ZGluX2Zv cm1hdHRlcl9pMnNfZ2V0X2JlKHAtPnNvdXJjZSk7CisJCWlmIChiZSkKKwkJCXJldHVybiBiZTsK Kwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHN0cnVjdCBneF9zdHJlYW0gKgorYXVk aW5fZm9ybWF0dGVyX2kyc19nZXRfc3RyZWFtKHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3 KQoreworCXN0cnVjdCBzbmRfc29jX2RhaSAqYmUgPSBhdWRpbl9mb3JtYXR0ZXJfaTJzX2dldF9i ZSh3KTsKKworCWlmICghYmUpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIHNuZF9zb2NfZGFp X2RtYV9kYXRhX2dldF9jYXB0dXJlKGJlKTsKK30KKworc3RhdGljIHZvaWQgYXVkaW5fZm9ybWF0 dGVyX2kyc19lbmFibGUoc3RydWN0IHJlZ21hcCAqbWFwKQoreworCXJlZ21hcF91cGRhdGVfYml0 cyhtYXAsIEFVRElOX0kyU0lOX0NUUkwsCisJCQkgICBBVURJTl9JMlNJTl9DVFJMX0kyU0lOX0VO LAorCQkJICAgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9FTik7Cit9CisKK3N0YXRpYyB2b2lkIGF1 ZGluX2Zvcm1hdHRlcl9pMnNfZGlzYWJsZShzdHJ1Y3QgcmVnbWFwICptYXApCit7CisJcmVnbWFw X3VwZGF0ZV9iaXRzKG1hcCwgQVVESU5fSTJTSU5fQ1RSTCwKKwkJCSAgIEFVRElOX0kyU0lOX0NU UkxfSTJTSU5fRU4sIDApOworfQorCitzdGF0aWMgaW50IGF1ZGluX2Zvcm1hdHRlcl9pMnNfcHJl cGFyZShzdHJ1Y3QgcmVnbWFwICptYXAsCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBneF9mb3Jt YXR0ZXJfaHcgKnF1aXJrcywKKwkJCQkgICAgICAgc3RydWN0IGd4X3N0cmVhbSAqdHMpCit7CisJ dW5zaWduZWQgaW50IHZhbDsKKwlpbnQgcmV0OworCisJLyoKKwkgKiBJMlMgZGVjb2RlciBhbHdh eXMgb3V0cHV0cyAyNCBiaXRzIHRvIHRoZSBGSUZPIGFjY29yZGluZyB0byB0aGUKKwkgKiBtYW51 YWwuIFRoZSBvbmx5IHRoaW5nIHdlIGNhbiBjaGFuZ2UgdGhyb3VnaAorCSAqIEFVRElOX0kyU0lO X0NUUkxfSTJTSU5fU0laRV9NQVNLIGlzIHRoZSBmb2xsb3dpbmc6CisJICogLSAwIC0+IG91dHB1 dFsyMzowXSA9IHtvcmlnaW5hbFsyMzo4XSw44oCZZDB9CisJICogLSAxIC0+IG91dHB1dFsyMzow XSA9IHtvcmlnaW5hbFsyMzo2XSw24oCZZDB9CisJICogLSAyIC0+IG91dHB1dFsyMzowXSA9IHtv cmlnaW5hbFsyMzo0XSw04oCZZDB9CisJICogLSAzIC0+IG91dHB1dFsyMzowXSA9IHtvcmlnaW5h bFsyMzowXX0KKwkgKgorCSAqIFdlIHVzZSAzIGhlcmUgYW5kLCBpbiBjYXNlIG9mIDE2IGJpdCBm b3JtYXQsIHdlIGZpbHRlciB1bm5lY2Vzc2FyeQorCSAqIGJ5dGVzIGF0IEZJRk8gc3RhZ2UuCisJ ICogTm90ZTogZGF0YSBpcyBsZWZ0LWp1c3RpZmllZCwgc28gaW4gY2FzZSBvZiAxNiBiaXRzIHNh bXBsZXMsIHRoaXMKKwkgKiAgICAgICBtZWFucyB0aGF0IHRoZSBMU0IgaXMgdG8gYmUgZGlzY2Fy ZGVkIGF0IEZJRk8gbGV2ZWwgYW5kIHRoZQorCSAqICAgICAgIHJlbGV2YW50IHBhcnQgaXMgaW4g Yml0cyBbMjM6OF0uCisJICovCisJdmFsID0gRklFTERfUFJFUChBVURJTl9JMlNJTl9DVFJMX0ky U0lOX1NJWkVfTUFTSywgMyk7CisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKG1hcCwgQVVESU5f STJTSU5fQ1RSTCwKKwkJCQkgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9TSVpFX01BU0ssIHZhbCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qCisJICogVGhlIG1hbnVhbCBjbGFpbXMg dGhhdCB0aGlzIHBsYXRmb3JtIHN1cHBvcnRzIHVwIHRvIDQgc3RyZWFtcworCSAqICg4IGNoYW5u ZWxzKSwgYnV0IGN1cnJlbnRseSBvbmx5IDEgc3RyZWFtICgyIGNoYW5uZWxzKSBoYXMgYmVlbgor CSAqIHRlc3RlZCBhbmQgaXQncyBzdXBwb3J0ZWQuCisJICovCisJdmFsID0gRklFTERfUFJFUChB VURJTl9JMlNJTl9DVFJMX0kyU0lOX0NIQU5fRU5fTUFTSywgMSk7CisJcmV0ID0gcmVnbWFwX3Vw ZGF0ZV9iaXRzKG1hcCwgQVVESU5fSTJTSU5fQ1RSTCwKKwkJCQkgQVVESU5fSTJTSU5fQ1RSTF9J MlNJTl9DSEFOX0VOX01BU0ssIHZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8q CisJICogVXNlIGNsb2NrcyBmcm9tIEFJVSBhbmQgbm90IGZyb20gdGhlIHBhZHMgc2luY2Ugd2Ug b25seSB3YW50IHRvCisJICogc3VwcG9ydCBtYXN0ZXIgbW9kZS4KKwkgKi8KKwl2YWwgPSBBVURJ Tl9JMlNJTl9DVFJMX0kyU0lOX0NMS19TRUwgfAorCSAgICAgIEFVRElOX0kyU0lOX0NUUkxfSTJT SU5fTFJDTEtfU0VMIHwKKwkgICAgICBBVURJTl9JMlNJTl9DVFJMX0kyU0lOX0RJUjsKKwlyZXQg PSByZWdtYXBfdXBkYXRlX2JpdHMobWFwLCBBVURJTl9JMlNJTl9DVFJMLCB2YWwsIHZhbCk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXN3aXRjaCAodHMtPmlmYWNlLT5mbXQgJiBTTkRf U09DX0RBSUZNVF9JTlZfTUFTSykgeworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfTkY6CisJCXZh bCA9IEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fQkNMS19JTlY7CisJCWJyZWFrOworCWNhc2UgU05E X1NPQ19EQUlGTVRfTkJfSUY6CisJCXZhbCA9IEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtf SU5WOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0lCX0lGOgorCQl2YWwgPSBBVURJ Tl9JMlNJTl9DVFJMX0kyU0lOX0JDTEtfSU5WIHwgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9MUkNM S19JTlY7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTkJfTkY6CisJCXZhbCA9IDA7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IHJl Z21hcF91cGRhdGVfYml0cyhtYXAsIEFVRElOX0kyU0lOX0NUUkwsCisJCQkJIEFVRElOX0kyU0lO X0NUUkxfSTJTSU5fTFJDTEtfSU5WIHwKKwkJCQkgQVVESU5fSTJTSU5fQ1RSTF9JMlNJTl9CQ0xL X0lOViwgdmFsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJc3dpdGNoICh0cy0+aWZh Y2UtPmZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RB SUZNVF9JMlM6CisJCXZhbCA9IDE7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTEVG VF9KOgorCQl2YWwgPSAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwl2YWwgPSBGSUVMRF9QUkVQKEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtfU0tF V19NQVNLLCB2YWwpOworCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhtYXAsIEFVRElOX0kyU0lO X0NUUkwsCisJCQkJIEFVRElOX0kyU0lOX0NUUkxfSTJTSU5fTFJDTEtfU0tFV19NQVNLLAorCQkJ CSB2YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBneF9mb3JtYXR0ZXJfb3BzIGF1ZGluX2Zvcm1hdHRlcl9pMnNfb3Bz ID0geworCS5nZXRfc3RyZWFtCT0gYXVkaW5fZm9ybWF0dGVyX2kyc19nZXRfc3RyZWFtLAorCS5w cmVwYXJlCT0gYXVkaW5fZm9ybWF0dGVyX2kyc19wcmVwYXJlLAorCS5lbmFibGUJCT0gYXVkaW5f Zm9ybWF0dGVyX2kyc19lbmFibGUsCisJLmRpc2FibGUJPSBhdWRpbl9mb3JtYXR0ZXJfaTJzX2Rp c2FibGUsCit9OworCitjb25zdCBzdHJ1Y3QgZ3hfZm9ybWF0dGVyX2RyaXZlciBhdWRpbl9mb3Jt YXR0ZXJfaTJzX2RydiA9IHsKKwkub3BzCQk9ICZhdWRpbl9mb3JtYXR0ZXJfaTJzX29wcywKK307 CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWVzb24vYXVkaW4uYyBiL3NvdW5kL3NvYy9tZXNvbi9h dWRpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWMwMjQyNjdh YzI5Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL21lc29uL2F1ZGluLmMKQEAgLTAsMCAr MSwxODYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvLworLy8gQ29w eXJpZ2h0IChjKSAyMDI2IEJheUxpYnJlLCBTQVMuCisvLyBBdXRob3I6IFZhbGVyaW8gU2V0dGkg PHZzZXR0aUBiYXlsaWJyZS5jb20+CisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNp bmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgorI2luY2x1 ZGUgPHNvdW5kL3NvYy5oPgorCisjaW5jbHVkZSAiYXVkaW4uaCIKKyNpbmNsdWRlICJneC1mb3Jt YXR0ZXIuaCIKKworI2RlZmluZSBBVURJTl9GSUZPMF9CQVNFCTB4ODAKKyNkZWZpbmUgQVVESU5f RklGTzFfQkFTRQkweENDCisjZGVmaW5lIEFVRElOX0ZJRk8yX0JBU0UJMHgxMTQKKworc3RhdGlj IGNvbnN0IGNoYXIgKiBjb25zdCBhdWRpbl9maWZvX2lucHV0X3NlbF90ZXh0c1tdID0geworCSJT UERJRiIsICJJMlMiLCAiUENNIiwgIkhETUkiLCAiRGVtb2R1bGF0b3IiCit9OworCitzdGF0aWMg U09DX0VOVU1fU0lOR0xFX0RFQ0woYXVkaW5fZmlmbzBfaW5wdXRfc2VsX2VudW0sIEFVRElOX0ZJ Rk8wX0JBU0UgKyBBVURJTl9GSUZPX0NUUkwsCisJCQkgICAgQVVESU5fRklGT19DVFJMX0RJTl9T RUxfT0ZGLAorCQkJICAgIGF1ZGluX2ZpZm9faW5wdXRfc2VsX3RleHRzKTsKK3N0YXRpYyBTT0Nf RU5VTV9TSU5HTEVfREVDTChhdWRpbl9maWZvMV9pbnB1dF9zZWxfZW51bSwgQVVESU5fRklGTzFf QkFTRSArIEFVRElOX0ZJRk9fQ1RSTCwKKwkJCSAgICBBVURJTl9GSUZPX0NUUkxfRElOX1NFTF9P RkYsCisJCQkgICAgYXVkaW5fZmlmb19pbnB1dF9zZWxfdGV4dHMpOworc3RhdGljIFNPQ19FTlVN X1NJTkdMRV9ERUNMKGF1ZGluX2ZpZm8yX2lucHV0X3NlbF9lbnVtLCBBVURJTl9GSUZPMl9CQVNF ICsgQVVESU5fRklGT19DVFJMLAorCQkJICAgIEFVRElOX0ZJRk9fQ1RSTF9ESU5fU0VMX09GRiwK KwkJCSAgICBhdWRpbl9maWZvX2lucHV0X3NlbF90ZXh0cyk7CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX2tjb250cm9sX25ldyBhdWRpbl9maWZvMF9pbnB1dF9zZWxfbXV4ID0KKwlTT0NfREFQ TV9FTlVNKCJGSUZPMCBJbnB1dCBTb3VyY2UiLCBhdWRpbl9maWZvMF9pbnB1dF9zZWxfZW51bSk7 CitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgYXVkaW5fZmlmbzFfaW5wdXRf c2VsX211eCA9CisJU09DX0RBUE1fRU5VTSgiRklGTzEgSW5wdXQgU291cmNlIiwgYXVkaW5fZmlm bzFfaW5wdXRfc2VsX2VudW0pOworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3 IGF1ZGluX2ZpZm8yX2lucHV0X3NlbF9tdXggPQorCVNPQ19EQVBNX0VOVU0oIkZJRk8yIElucHV0 IFNvdXJjZSIsIGF1ZGluX2ZpZm8yX2lucHV0X3NlbF9lbnVtKTsKKworI2RlZmluZSBBVURJTl9X SURHRVRfSTJTX0ZPUk1BVFRFUgkwCisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdl dCBhdWRpbl9kYXBtX3dpZGdldHNbXSA9IHsKKwlbQVVESU5fV0lER0VUX0kyU19GT1JNQVRURVJd ID0KKwkJU05EX1NPQ19EQVBNX1BHQV9FKCJJMlMgRm9ybWF0dGVyIiwgU05EX1NPQ19OT1BNLCAw LCAwLCBOVUxMLCAwLAorCQkJCSAgIGd4X2Zvcm1hdHRlcl9ldmVudCwKKwkJCQkgICAoU05EX1NP Q19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BNRCkpLAorCVNORF9TT0NfREFQTV9N VVgoIkZJRk8wIFNSQyBTRUwiLCBTTkRfU09DX05PUE0sIDAsIDAsCisJCQkgJmF1ZGluX2ZpZm8w X2lucHV0X3NlbF9tdXgpLAorCVNORF9TT0NfREFQTV9NVVgoIkZJRk8xIFNSQyBTRUwiLCBTTkRf U09DX05PUE0sIDAsIDAsCisJCQkgJmF1ZGluX2ZpZm8xX2lucHV0X3NlbF9tdXgpLAorCVNORF9T T0NfREFQTV9NVVgoIkZJRk8yIFNSQyBTRUwiLCBTTkRfU09DX05PUE0sIDAsIDAsCisJCQkgJmF1 ZGluX2ZpZm8yX2lucHV0X3NlbF9tdXgpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf c29jX2RhcG1fcm91dGUgYXVkaW5fZGFwbV9yb3V0ZXNbXSA9IHsKKwl7ICJGSUZPMCBTUkMgU0VM IiwgIkkyUyIsICJJMlMgRm9ybWF0dGVyIiB9LAorCXsgIkZJRk8wIENhcHR1cmUiLCBOVUxMLCAi RklGTzAgU1JDIFNFTCIgfSwKKwl7ICJGSUZPMSBTUkMgU0VMIiwgIkkyUyIsICJJMlMgRm9ybWF0 dGVyIiB9LAorCXsgIkZJRk8xIENhcHR1cmUiLCBOVUxMLCAiRklGTzEgU1JDIFNFTCIgfSwKKwl7 ICJGSUZPMiBTUkMgU0VMIiwgIkkyUyIsICJJMlMgRm9ybWF0dGVyIiB9LAorCXsgIkZJRk8yIENh cHR1cmUiLCBOVUxMLCAiRklGTzIgU1JDIFNFTCIgfSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25k X3NvY19kYWlfZHJpdmVyIGF1ZGluX2RhaV9kcnZbXSA9IHsKKwl7CisJCS5uYW1lID0gIkZJRk8w IiwKKwkJLmJhc2UgPSBBVURJTl9GSUZPMF9CQVNFLAorCQkuY2FwdHVyZSA9IHsKKwkJCS5zdHJl YW1fbmFtZQk9ICJGSUZPMCBDYXB0dXJlIiwKKwkJCS5jaGFubmVsc19taW4JPSAyLAorCQkJLmNo YW5uZWxzX21heAk9IDIsCisJCQkucmF0ZXMJCT0gU05EUlZfUENNX1JBVEVfQ09OVElOVU9VUywK KwkJCS5yYXRlX21pbgk9IDU1MTIsCisJCQkucmF0ZV9tYXgJPSAxOTIwMDAsCisJCQkuZm9ybWF0 cwk9IFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFLAorCQl9LAorCQkub3BzID0gJmF1ZGluX2ZpZm9f ZGFpX29wcywKKwl9LAorCXsKKwkJLm5hbWUgPSAiRklGTzEiLAorCQkuYmFzZSA9IEFVRElOX0ZJ Rk8xX0JBU0UsCisJCS5jYXB0dXJlID0geworCQkJLnN0cmVhbV9uYW1lCT0gIkZJRk8xIENhcHR1 cmUiLAorCQkJLmNoYW5uZWxzX21pbgk9IDIsCisJCQkuY2hhbm5lbHNfbWF4CT0gMiwKKwkJCS5y YXRlcwkJPSBTTkRSVl9QQ01fUkFURV9DT05USU5VT1VTLAorCQkJLnJhdGVfbWluCT0gNTUxMiwK KwkJCS5yYXRlX21heAk9IDE5MjAwMCwKKwkJCS5mb3JtYXRzCT0gU05EUlZfUENNX0ZNVEJJVF9T MTZfTEUsCisJCX0sCisJCS5vcHMgPSAmYXVkaW5fZmlmb19kYWlfb3BzLAorCX0sCisJeworCQku bmFtZSA9ICJGSUZPMiIsCisJCS5iYXNlID0gQVVESU5fRklGTzJfQkFTRSwKKwkJLmNhcHR1cmUg PSB7CisJCQkuc3RyZWFtX25hbWUJPSAiRklGTzIgQ2FwdHVyZSIsCisJCQkuY2hhbm5lbHNfbWlu CT0gMiwKKwkJCS5jaGFubmVsc19tYXgJPSAyLAorCQkJLnJhdGVzCQk9IFNORFJWX1BDTV9SQVRF X0NPTlRJTlVPVVMsCisJCQkucmF0ZV9taW4JPSA1NTEyLAorCQkJLnJhdGVfbWF4CT0gMTkyMDAw LAorCQkJLmZvcm1hdHMJPSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSwKKwkJfSwKKwkJLm9wcyA9 ICZhdWRpbl9maWZvX2RhaV9vcHMsCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k X3NvY19jb21wb25lbnRfZHJpdmVyIGF1ZGluX2NvbXBvbmVudCA9IHsKKwkuZGFwbV93aWRnZXRz ID0gYXVkaW5fZGFwbV93aWRnZXRzLAorCS5udW1fZGFwbV93aWRnZXRzID0gQVJSQVlfU0laRShh dWRpbl9kYXBtX3dpZGdldHMpLAorCS5kYXBtX3JvdXRlcyA9IGF1ZGluX2RhcG1fcm91dGVzLAor CS5udW1fZGFwbV9yb3V0ZXMgPSBBUlJBWV9TSVpFKGF1ZGluX2RhcG1fcm91dGVzKSwKKwkucG9p bnRlciA9IGF1ZGluX2ZpZm9fY29tcG9uZW50X3BvaW50ZXIsCisJLnN5bmNfc3RvcCA9IGF1ZGlu X2ZpZm9fc3luY19zdG9wLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmln IGF1ZGluX3JlZ21hcF9jZmcgPSB7CisJLnJlZ19iaXRzCT0gMzIsCisJLnZhbF9iaXRzCT0gMzIs CisJLnJlZ19zdHJpZGUJPSA0LAorCS5tYXhfcmVnaXN0ZXIJPSAweDE0OCwKK307CisKK3N0YXRp YyBpbnQgYXVkaW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXZvaWQgX19pb21lbSAqbW1pbzsKKwlzdHJ1 Y3QgcmVnbWFwICpyZWdtYXA7CisJc3RydWN0IGNsayAqY2xrOworCWludCByZXQ7CisKKwlyZXQg PSBkZXZpY2VfcmVzZXQoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShk ZXYsIHJldCwgIkZhaWxlZCB0byByZXNldCBkZXZpY2VcbiIpOworCisJbW1pbyA9IGRldm1fcGxh dGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKKwlpZiAoSVNfRVJSKG1taW8pKQorCQly ZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIobW1pbyksICJGYWlsZWQgdG8gaW9yZW1h cCBtZW1vcnlcbiIpOworCisJcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgbW1p bywgJmF1ZGluX3JlZ21hcF9jZmcpOworCWlmIChJU19FUlIocmVnbWFwKSkKKwkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHJlZ21hcCksICJGYWlsZWQgdG8gaW5pdCByZWdtYXBc biIpOworCisJY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoZGV2LCBOVUxMKTsKKwlpZiAoSVNf RVJSKGNsaykpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihjbGspLCAiRmFp bGVkIHRvIGdldCBjbG9ja1xuIik7CisKKwlyZXQgPSBneF9mb3JtYXR0ZXJfY3JlYXRlKGRldiwg JmF1ZGluX2RhcG1fd2lkZ2V0c1tBVURJTl9XSURHRVRfSTJTX0ZPUk1BVFRFUl0sCisJCQkJICAm YXVkaW5fZm9ybWF0dGVyX2kyc19kcnYsIHJlZ21hcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gYWxsb2NhdGUgZm9ybWF0dGVyXG4iKTsK KworCXJldCA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9jb21wb25lbnQoZGV2LCAmYXVkaW5fY29t cG9uZW50LAorCQkJCQkgICAgICBhdWRpbl9kYWlfZHJ2LCBBUlJBWV9TSVpFKGF1ZGluX2RhaV9k cnYpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxl ZCB0byByZWdpc3RlciBjb21wb25lbnRcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGF1ZGluX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWd4X2Zv cm1hdHRlcl9mcmVlKCZhdWRpbl9kYXBtX3dpZGdldHNbQVVESU5fV0lER0VUX0kyU19GT1JNQVRU RVJdKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXVkaW5fb2ZfbWF0 Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFtbG9naWMsZ3gtYXVkaW4iIH0sCisJeyB9Cit9 OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXVkaW5fb2ZfbWF0Y2gpOworCitzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBhdWRpbl9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5h bWUgPSAiZ3gtYXVkaW4iLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBhdWRpbl9vZl9tYXRjaCwKKwl9 LAorCS5wcm9iZSA9IGF1ZGluX3Byb2JlLAorCS5yZW1vdmUgPSBhdWRpbl9yZW1vdmUsCit9Owor bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhdWRpbl9kcml2ZXIpOworCitNT0RVTEVfREVTQ1JJUFRJ T04oIk1lc29uIEdYIEFVRElOIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiVmFsZXJpbyBTZXR0 aSA8dnNldHRpQGJheWxpYnJlLmNvbT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAt LWdpdCBhL3NvdW5kL3NvYy9tZXNvbi9hdWRpbi5oIGIvc291bmQvc29jL21lc29uL2F1ZGluLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZjNiNThhNzgwYzAKLS0t IC9kZXYvbnVsbAorKysgYi9zb3VuZC9zb2MvbWVzb24vYXVkaW4uaApAQCAtMCwwICsxLDMwIEBA CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAgT1IgTUlUKSAqLworLyoKKyAq IENvcHlyaWdodCAoYykgMjAyNiBCYXlMaWJyZSwgU0FTLgorICogQXV0aG9yOiBWYWxlcmlvIFNl dHRpIDx2c2V0dGlAYmF5bGlicmUuY29tPgorICovCisKKyNpZm5kZWYgX01FU09OX0FVRElOX0gK KyNkZWZpbmUgX01FU09OX0FVRElOX0gKKworI2luY2x1ZGUgImd4LWZvcm1hdHRlci5oIgorCisv KiBGSUZPeCBDVFJMIHJlZ2lzdGVycyBhbmQgYml0cyAqLworI2RlZmluZSBBVURJTl9GSUZPX0NU UkwJCQkweDE0CisjZGVmaW5lICBBVURJTl9GSUZPX0NUUkxfRU4JCUJJVCgwKQorI2RlZmluZSAg QVVESU5fRklGT19DVFJMX1JTVAkJQklUKDEpCisjZGVmaW5lICBBVURJTl9GSUZPX0NUUkxfTE9B RAkJQklUKDIpCisjZGVmaW5lICBBVURJTl9GSUZPX0NUUkxfRElOX1NFTF9PRkYJMworI2RlZmlu ZSAgQVVESU5fRklGT19DVFJMX0VORElBTl9NQVNLCUdFTk1BU0soMTAsIDgpCisjZGVmaW5lICBB VURJTl9GSUZPX0NUUkxfQ0hBTl9NQVNLCUdFTk1BU0soMTQsIDExKQorI2RlZmluZSAgQVVESU5f RklGT19DVFJMX1VHCQlCSVQoMTUpCisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3hfZm9ybWF0dGVy X2RyaXZlciBhdWRpbl9mb3JtYXR0ZXJfaTJzX2RydjsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBz bmRfc29jX2RhaV9vcHMgYXVkaW5fZmlmb19kYWlfb3BzOworZXh0ZXJuIHNuZF9wY21fdWZyYW1l c190IGF1ZGluX2ZpZm9fY29tcG9uZW50X3BvaW50ZXIoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 ICpjb21wb25lbnQsCisJCQkJCQkgICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSk7CitleHRlcm4gaW50IGF1ZGluX2ZpZm9fc3luY19zdG9wKHN0cnVjdCBzbmRfc29jX2Nv bXBvbmVudCAqY29tcG9uZW50LAorCQkJCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtKTsKKworI2VuZGlmCgotLSAKMi40Ny4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1s b2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo=