From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B61FC77B7A for ; Thu, 1 Jun 2023 22:12:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232912AbjFAWMw (ORCPT ); Thu, 1 Jun 2023 18:12:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231726AbjFAWMs (ORCPT ); Thu, 1 Jun 2023 18:12:48 -0400 Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C87C8197 for ; Thu, 1 Jun 2023 15:12:46 -0700 (PDT) Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-75b2a2bf757so134579885a.2 for ; Thu, 01 Jun 2023 15:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657566; x=1688249566; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=7WMT1Yz2mxs9jPH2zrBM5/HGklZOnDC9wg6LY/uMLdo=; b=dEbL56V52OD9G/f6ItYXeyViRbJvBM1M2AsG1c1b03KDjqtNRwbtlL+FscfCF1CSGx b3L6PpYs0nsTJN/qdVo7yadp/ob4ap2Tl/9O5tHC2GFUuUZvVHlS5X00ubAKyUHDI2Kj AZRtFFZ/ufu3IAPjR3rBvD2wKx7E7lREbJ3Z0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657566; x=1688249566; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7WMT1Yz2mxs9jPH2zrBM5/HGklZOnDC9wg6LY/uMLdo=; b=GaY0YAeWjLXDMzhrYEl3zi2DbiH+8fbUTmCts1ynzix41nxg/JNA8IZP97xc5+72eS UYc3lkSf+eymRu8u1nsrjozBSv1nXbAG3zm9QvxiAS71UXoghafJZmfKSzIgehd3iBZo 1m3zu7QU7AnYLEiqlgglwJJ+zXLTPWPcaaP78cvytI5EcMBJFCLXVJmhP/YUS1GhhrM5 asleRXk/WVpeXeaVlHuX+yv90LdFyFhY06qkFHZozzthvXkUTRCV/Tx2OFs3i6KJxpNv fV2JyHLQX1EXcfjh5sVHnDfCrtneMlpple4kmxlszuehzBstVmG/9DG5+O7mneDUkKs5 0sTw== X-Gm-Message-State: AC+VfDwTqLQ/VU95cLO9PlOUQVrH/yvXVP0VdbLY8rynlKEbWAV5AUe4 /KcxJID+NJ2zNlKuSzRr3wuhcA== X-Google-Smtp-Source: ACHHUZ6qDdjGhRjQvb8SORtuF75+cBFnb05cb61LjJryw+9sRs99tSSO6l3C2YwgZg/7C7MiMHiHPw== X-Received: by 2002:a05:620a:26a6:b0:75b:23a1:3675 with SMTP id c38-20020a05620a26a600b0075b23a13675mr10577102qkp.54.1685657565882; Thu, 01 Jun 2023 15:12:45 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:45 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 1/6] dt-bindings: net: brcm,unimac-mdio: Add asp-v2.0 Date: Thu, 1 Jun 2023 15:12:26 -0700 Message-Id: <1685657551-38291-2-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="00000000000072274505fd18bcb6" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --00000000000072274505fd18bcb6 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlIEFTUCAyLjAgRXRoZXJuZXQgY29udHJvbGxlciB1c2VzIGEgYnJjbSB1bmltYWMuCgpSZXZp ZXdlZC1ieTogU2ltb24gSG9ybWFuIDxzaW1vbi5ob3JtYW5AY29yaWdpbmUuY29tPgpBY2tlZC1i eTogQ29ub3IgRG9vbGV5IDxjb25vci5kb29sZXlAbWljcm9jaGlwLmNvbT4KU2lnbmVkLW9mZi1i eTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+ClNpZ25l ZC1vZmYtYnk6IEp1c3RpbiBDaGVuIDxqdXN0aW4uY2hlbkBicm9hZGNvbS5jb20+Ci0tLQogRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnlhbWwg fCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnlhbWwg Yi89CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSx1bmltYWMtbWRp by55YW1sCmluZGV4IDBiZTQyNmVlMWU0NC4uNjY4NDgxMGZjYmYwIDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sdW5pbWFjLW1kaW8ueWFtbAor KysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sdW5pbWFjLW1k aW8ueWFtbApAQCAtMjIsNiArMjIsOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBicmNtLGdlbmV0 LW1kaW8tdjMKICAgICAgIC0gYnJjbSxnZW5ldC1tZGlvLXY0CiAgICAgICAtIGJyY20sZ2VuZXQt bWRpby12NQorICAgICAgLSBicmNtLGFzcC12Mi4wLW1kaW8KKyAgICAgIC0gYnJjbSxhc3AtdjIu MS1tZGlvCiAgICAgICAtIGJyY20sdW5pbWFjLW1kaW8KPTIwCiAgIHJlZzoKLS09MjAKMi43LjQK --00000000000072274505fd18bcb6 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEINAcq15A6mFf9q6u2xJbqVsioTkozB6uouzx A9tu0tHlMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTI0NlowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBbBH4dKxTrTw76FuLRaUBjBGyH7Q3srWY9CTNY2ymfHzs0IJauLbVj jgNBgLdRciakNN7QK3E4g8RIXIhAQUnk5kJWiCsoTQGVGrJ4FxbzeoIQm2twY1rrFb+DcDeLbHBo D0QLZIBnimYmoQlRlSfrAOBF4tsRM3vt4xBCOcYlpaRmwhv6fQHh6MdngK5mSOgSYS8EHA5/+zeH ah2+r2MTzsVVGID4OshyfZ7uIPPpwSUn4+uP4HIAK2N7i4p/qs5xGrY6hnDluMvd5r22MLypp/XO zKLVtPbX+HWuYZG2lQKsBKReu9hc+wD1wur1p/S4huB4ifWa8P4Vftb2DCro --00000000000072274505fd18bcb6-- From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 319BFC7EE2E for ; Thu, 1 Jun 2023 22:13:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231628AbjFAWND (ORCPT ); Thu, 1 Jun 2023 18:13:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232672AbjFAWMv (ORCPT ); Thu, 1 Jun 2023 18:12:51 -0400 Received: from mail-qk1-x729.google.com (mail-qk1-x729.google.com [IPv6:2607:f8b0:4864:20::729]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A28C18C for ; Thu, 1 Jun 2023 15:12:49 -0700 (PDT) Received: by mail-qk1-x729.google.com with SMTP id af79cd13be357-75afa109e60so121396785a.2 for ; Thu, 01 Jun 2023 15:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657568; x=1688249568; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=9CjLg+gusNL/o5NJUzikef4sGaz8MNx0kUe+1TJWTCY=; b=TUDQcDGpJMzJAwFLnVmc3zfu4PJFebDtK2bSo3qvpMpd8xh8Ll2lkkwebyDku6c54K QhYvGzBIr37aKBresGfCiKrQhBB1ZGC4rXPbO74nMPd54JgWhSEy9KUk0sLP5pcvLtEM scFCW8kQyEy437rMnTZK82N5/7eeClLIErhTU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657568; x=1688249568; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9CjLg+gusNL/o5NJUzikef4sGaz8MNx0kUe+1TJWTCY=; b=ZIquAynDBirMLGtUbbByWgSsG6lyjEvxjkktDNTuxkMALTnkEN1jtvqyz0nSr7+qUO QCHL0EPHUOKIhM+S61G7/jEtURwZJ1VNF+Dl0ev8debjU9BqWWVgJ96CxijjO5W6yrtm /+e//jP/EhrdwEKNJB/r+Bm1v6jzZvqsOKE8ahLCVjz8Op6ldGa3R46JLWCBJPPacH5g f1qgQQWiY2bXzrNVKNJnXIHXnlLhLE3KSWcOlgbHvlEFbcMJK+3c4nCEdqHrZxQ/EA5C IsVv1igU2qSpSFQskcCuzwQbXOWBw5b63z4fqHEI0QJ2jX/HUs9+KoTN0eKQro45WG/f WSlw== X-Gm-Message-State: AC+VfDyuPxSlaWqGZ/wuXczfw5n+196TT8xEsviZw0A4L+0roE8SGFZS QAGUo2WqtN98l1A1E1wOVUG96w== X-Google-Smtp-Source: ACHHUZ7cchzgL4QqAGDyZ9aydAR74bhdJwxsA9wlLl6HRndy8z6C+9igz2r1r/ebZVnTqKpfPADpfA== X-Received: by 2002:a05:6214:c49:b0:5d5:fd1d:6ef5 with SMTP id r9-20020a0562140c4900b005d5fd1d6ef5mr10123071qvj.12.1685657568497; Thu, 01 Jun 2023 15:12:48 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:48 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 2/6] dt-bindings: net: Brcm ASP 2.0 Ethernet controller Date: Thu, 1 Jun 2023 15:12:27 -0700 Message-Id: <1685657551-38291-3-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000009ab11405fd18bc06" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --0000000000009ab11405fd18bc06 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnJvbTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CgpB ZGQgYSBiaW5kaW5nIGRvY3VtZW50IGZvciB0aGUgQnJvYWRjb20gQVNQIDIuMCBFdGhlcm5ldApj b250cm9sbGVyLgoKUmV2aWV3ZWQtYnk6IENvbm9yIERvb2xleSA8Y29ub3IuZG9vbGV5QG1pY3Jv Y2hpcC5jb20+ClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVs bGlAYnJvYWRjb20uY29tPgpTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ2hlbiA8anVzdGluLmNoZW5A YnJvYWRjb20uY29tPgotLS0KdjYKCS0gTW92ZWQgY29tcGF0aWJsZSB0byB0aGUgdG9wCgktIENo YW5nZWQgcXVvdGVzIHRvIGJlIGNvbnNpc3RlbnQKCS0gRWxhYm9yYXRlZCBvbiBicmNtLGNoYW5u ZWwgZGVzY3JpcHRpb24KCnY1CgktIEZpeCBjb21wYXRpYmxlIHN0cmluZyB5YW1sIGZvcm1hdCB0 byBwcm9wZXJseSBjYXB0dXJlIHdoYXQgd2Ugd2FudAoKdjQKICAgICAgICAtIEFkanVzdCBjb21w YXRpYmxlIHN0cmluZyBleGFtcGxlIHRvIHJlZmVyZW5jZSBTb0MgYW5kIEhXIHZlcgoKdjMKICAg ICAgICAtIE1pbm9yIGZvcm1hdHRpbmcgaXNzdWVzCiAgICAgICAgLSBDaGFuZ2UgY2hhbm5lbCBw cm9wIHRvIGJyY20sY2hhbm5lbCBmb3IgdmVuZG9yIHNwZWNpZmljIGZvcm1hdAogICAgICAgIC0g UmVtb3ZlZCByZWR1bmRhbnQgdjIuMCBmcm9tIGNvbXBhdCBzdHJpbmcKICAgICAgICAtIEZpeCBy YW5nZXMgZmllbGQKCnYyCiAgICAgICAgLSBNaW5vciBmb3JtYXR0aW5nIGlzc3VlcwoKIC4uLi9k ZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGFzcC12Mi4wLnlhbWwgICAgIHwgMTUzICsrKysr KysrKysrKysrKysrPQorKysrCiAxIGZpbGUgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Jy Y20sYXNwLXYyLjAueWFtbAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9uZXQvYnJjbSxhc3AtdjIuMC55YW1sIGIvRG9jPQp1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvbmV0L2JyY20sYXNwLXYyLjAueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjNmMmJmNjRiNjVjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxhc3AtdjIuMC55YW1sCkBAIC0w LDAgKzEsMTUzIEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9S IEJTRC0yLUNsYXVzZSkKKyVZQU1MIDEuMgorLS0tCiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9y Zy9zY2hlbWFzL25ldC9icmNtLGFzcC12Mi4wLnlhbWwjCiskc2NoZW1hOiBodHRwOi8vZGV2aWNl dHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKKwordGl0bGU6IEJyb2FkY29tIEFTUCAy LjAgRXRoZXJuZXQgY29udHJvbGxlcgorCittYWludGFpbmVyczoKKyAgLSBKdXN0aW4gQ2hlbiA8 anVzdGluLmNoZW5AYnJvYWRjb20uY29tPgorICAtIEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4u ZmFpbmVsbGlAYnJvYWRjb20uY29tPgorCitkZXNjcmlwdGlvbjogQnJvYWRjb20gRXRoZXJuZXQg Y29udHJvbGxlciBmaXJzdCBpbnRyb2R1Y2VkIHdpdGggNzIxNjUKKworcHJvcGVydGllczoKKyAg Y29tcGF0aWJsZToKKyAgICBvbmVPZjoKKyAgICAgIC0gaXRlbXM6CisgICAgICAgICAgLSBlbnVt OgorICAgICAgICAgICAgICAtIGJyY20sYmNtNzQxNjUtYXNwCisgICAgICAgICAgLSBjb25zdDog YnJjbSxhc3AtdjIuMQorICAgICAgLSBpdGVtczoKKyAgICAgICAgICAtIGVudW06CisgICAgICAg ICAgICAgIC0gYnJjbSxiY203MjE2NS1hc3AKKyAgICAgICAgICAtIGNvbnN0OiBicmNtLGFzcC12 Mi4wCisKKyAgIiNhZGRyZXNzLWNlbGxzIjoKKyAgICBjb25zdDogMQorICAiI3NpemUtY2VsbHMi OgorICAgIGNvbnN0OiAxCisKKyAgcmVnOgorICAgIG1heEl0ZW1zOiAxCisKKyAgcmFuZ2VzOiB0 cnVlCisKKyAgaW50ZXJydXB0czoKKyAgICBtaW5JdGVtczogMQorICAgIGl0ZW1zOgorICAgICAg LSBkZXNjcmlwdGlvbjogUlgvVFggaW50ZXJydXB0CisgICAgICAtIGRlc2NyaXB0aW9uOiBQb3J0 IDAgV2FrZS1vbi1MQU4KKyAgICAgIC0gZGVzY3JpcHRpb246IFBvcnQgMSBXYWtlLW9uLUxBTgor CisgIGNsb2NrczoKKyAgICBtYXhJdGVtczogMQorCisgIGV0aGVybmV0LXBvcnRzOgorICAgIHR5 cGU6IG9iamVjdAorICAgIHByb3BlcnRpZXM6CisgICAgICAiI2FkZHJlc3MtY2VsbHMiOgorICAg ICAgICBjb25zdDogMQorICAgICAgIiNzaXplLWNlbGxzIjoKKyAgICAgICAgY29uc3Q6IDAKKwor ICAgIHBhdHRlcm5Qcm9wZXJ0aWVzOgorICAgICAgIl5wb3J0QFswLTldKyQiOgorICAgICAgICB0 eXBlOiBvYmplY3QKKworICAgICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjCisK KyAgICAgICAgcHJvcGVydGllczoKKyAgICAgICAgICByZWc6CisgICAgICAgICAgICBtYXhJdGVt czogMQorICAgICAgICAgICAgZGVzY3JpcHRpb246IFBvcnQgbnVtYmVyCisKKyAgICAgICAgICBi cmNtLGNoYW5uZWw6CisgICAgICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZp bml0aW9ucy91aW50MzIKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8CisgICAgICAgICAgICAg IEFTUCBDaGFubmVsIE51bWJlcgorCisgICAgICAgICAgICAgIFRoZSBkZXBhY2tldGl6ZXIgY2hh bm5lbCB0aGF0IGNvbnN1bWVzIHBhY2tldHMgZnJvbQorICAgICAgICAgICAgICB0aGUgdW5pbWFj L3BvcnQuCisKKyAgICAgICAgcmVxdWlyZWQ6CisgICAgICAgICAgLSByZWcKKyAgICAgICAgICAt IGJyY20sY2hhbm5lbAorCisgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCisKK3BhdHRl cm5Qcm9wZXJ0aWVzOgorICAiXm1kaW9AWzAtOWEtZl0rJCI6CisgICAgdHlwZTogb2JqZWN0Cisg ICAgJHJlZjogYnJjbSx1bmltYWMtbWRpby55YW1sCisKKyAgICBkZXNjcmlwdGlvbjoKKyAgICAg IEFTUCBpbnRlcm5hbCBVbmlNQUMgTURJTyBidXMKKworcmVxdWlyZWQ6CisgIC0gY29tcGF0aWJs ZQorICAtIHJlZworICAtIGludGVycnVwdHMKKyAgLSBjbG9ja3MKKyAgLSByYW5nZXMKKworYWRk aXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCisKK2V4YW1wbGVzOgorICAtIHwKKyAgICAjaW5jbHVk ZSA8ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmg+CisgICAgI2luY2x1ZGUg PGR0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaD4KKworICAgIGV0aGVy bmV0QDljMDAwMDAgeworICAgICAgICBjb21wYXRpYmxlID0zRCAiYnJjbSxiY203MjE2NS1hc3Ai LCAiYnJjbSxhc3AtdjIuMCI7CisgICAgICAgIHJlZyA9M0QgPDB4OWMwMDAwMCAweDFmZmYxND47 CisgICAgICAgIGludGVycnVwdHMgPTNEIDxHSUNfU1BJIDUxIElSUV9UWVBFX0xFVkVMX0hJR0g+ OworICAgICAgICByYW5nZXMgPTNEIDwweDAgMHg5YzAwMDAwIDB4MWZmZjE0PjsKKyAgICAgICAg Y2xvY2tzID0zRCA8JnNjbWkgMTQ+OworICAgICAgICAjYWRkcmVzcy1jZWxscyA9M0QgPDE+Owor ICAgICAgICAjc2l6ZS1jZWxscyA9M0QgPDE+OworCisgICAgICAgIG1kaW9AYzYxNCB7CisgICAg ICAgICAgICBjb21wYXRpYmxlID0zRCAiYnJjbSxhc3AtdjIuMC1tZGlvIjsKKyAgICAgICAgICAg IHJlZyA9M0QgPDB4YzYxNCAweDg+OworICAgICAgICAgICAgcmVnLW5hbWVzID0zRCAibWRpbyI7 CisgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9M0QgPDE+OworICAgICAgICAgICAgI3NpemUt Y2VsbHMgPTNEIDwwPjsKKworICAgICAgICAgICAgcGh5MDogZXRoZXJuZXQtcGh5QDEgeworICAg ICAgICAgICAgICAgIHJlZyA9M0QgPDE+OworICAgICAgICAgICAgfTsKKyAgICAgICB9OworCisg ICAgICAgIG1kaW9AY2UxNCB7CisgICAgICAgICAgICBjb21wYXRpYmxlID0zRCAiYnJjbSxhc3At djIuMC1tZGlvIjsKKyAgICAgICAgICAgIHJlZyA9M0QgPDB4Y2UxNCAweDg+OworICAgICAgICAg ICAgcmVnLW5hbWVzID0zRCAibWRpbyI7CisgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9M0Qg PDE+OworICAgICAgICAgICAgI3NpemUtY2VsbHMgPTNEIDwwPjsKKworICAgICAgICAgICAgcGh5 MTogZXRoZXJuZXQtcGh5QDEgeworICAgICAgICAgICAgICAgIHJlZyA9M0QgPDE+OworICAgICAg ICAgICAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBldGhlcm5ldC1wb3J0cyB7CisgICAgICAg ICAgICAjYWRkcmVzcy1jZWxscyA9M0QgPDE+OworICAgICAgICAgICAgI3NpemUtY2VsbHMgPTNE IDwwPjsKKworICAgICAgICAgICAgcG9ydEAwIHsKKyAgICAgICAgICAgICAgICByZWcgPTNEIDww PjsKKyAgICAgICAgICAgICAgICBicmNtLGNoYW5uZWwgPTNEIDw4PjsKKyAgICAgICAgICAgICAg ICBwaHktbW9kZSA9M0QgInJnbWlpIjsKKyAgICAgICAgICAgICAgICBwaHktaGFuZGxlID0zRCA8 JnBoeTA+OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgcG9ydEAxIHsKKyAgICAgICAg ICAgICAgICByZWcgPTNEIDwxPjsKKyAgICAgICAgICAgICAgICBicmNtLGNoYW5uZWwgPTNEIDw5 PjsKKyAgICAgICAgICAgICAgICBwaHktbW9kZSA9M0QgInJnbWlpIjsKKyAgICAgICAgICAgICAg ICBwaHktaGFuZGxlID0zRCA8JnBoeTE+OworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAg ICB9OwotLT0yMAoyLjcuNAo= --0000000000009ab11405fd18bc06 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIDB182FryU/mh5g6yrQaxL35hLLIjrvbyLiZ Ph3NrB6WMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTI0OFowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQA/KSiLAMpV9cbKzNnA3YkrkUCN37G8ZIPJqdi6y4MPp0fat4bqbVFE I2WnhM09fPCDBCQLEvjVj/2k5rhNngbfg13xGv0BGZI3O/XuUrz70wasQfI/MnhwlCElU6mx/Pn/ Kw08JurOHPVs/4xxu5sFgeCp+HfT1omZSke92cMkRjA4K3BoYc1/nAyGLsDe0H2C3hdEywLm4uar N30gZx8JbK1mKYng00SrsorivF80zdRsctRFS/iKizVz+sIkCzfMUYUx0ov3Orb3F33D9g6MYifo yaozTJE1FKdD6G9BeIjyRmePEri4GAdvKNMy9aPzEWRCjR76AhWYbD8wAB9O --0000000000009ab11405fd18bc06-- From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92F54C77B7A for ; Thu, 1 Jun 2023 22:13:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233184AbjFAWNJ (ORCPT ); Thu, 1 Jun 2023 18:13:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233061AbjFAWNC (ORCPT ); Thu, 1 Jun 2023 18:13:02 -0400 Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B68941A4 for ; Thu, 1 Jun 2023 15:12:53 -0700 (PDT) Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-75cbbb10c69so143572885a.2 for ; Thu, 01 Jun 2023 15:12:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657572; x=1688249572; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=jhG4llKFQABgiQlkoKRzVvozj3YKal6dmG6Xwi2XZMY=; b=V1hu8OH0NOdmp+ksH7vyV38Le6/CAazgua5CusG8YDMz8oXNBtNAYA8FBtynIy+I5U mPd7x9WkHgi5nTa5jjT1PlywtgNz5DNz9nmluxHv6/uE5UdxQ7bbzP5OwAfe+kJMB6tJ Ro3uFLinAVhY7dFPQOwWihP0p+FKgMKylJRVM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657572; x=1688249572; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jhG4llKFQABgiQlkoKRzVvozj3YKal6dmG6Xwi2XZMY=; b=QWmwjHP1KbG8dIfwE0otApVvS7GZenpbO6GUituULCKTXKtenfap4wv0ewjzJdtLv7 0p/Q4XDg7tgexsD1Vb6L3znWN4D1l5NEbDV1twVh1ZRMnLMfPohq57SBih2hR4bVq0i7 SBM6rtZ9VBEwGQDIuVqYvNgyjr5vvWLYTAl/huXD2XRGVfDjVmnJI/zI+T/KBZFnGR51 J36tL8LTNXkTyieNVsv0jcnr6lCfmp/SuolFJQhIPNlijUKU8FMXhzds44o8FbpPBEx+ u8pfXT+cZYIBZOSaPs8JAQAmoqCr3V2xmMTd+R3jO6tuJgJG19/anJI0dfhNUmkZ5Okn fymg== X-Gm-Message-State: AC+VfDwAhtll+k8+OyIw/2bUme5cdRBHE6Uzv598Ux5KLiZhLbxsUceW rmw/NOd5XzB4ONcP+fzvBq2Yow== X-Google-Smtp-Source: ACHHUZ6Ud88E/kOJBxvsppCTuFhlIeN1a79XCa4J7BUqAuAph9QOysa83M4qqwAALH6VMFzyjNOhIA== X-Received: by 2002:a37:4405:0:b0:75b:23a1:481 with SMTP id r5-20020a374405000000b0075b23a10481mr9503549qka.71.1685657571606; Thu, 01 Jun 2023 15:12:51 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:51 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 3/6] net: bcmasp: Add support for ASP2.0 Ethernet controller Date: Thu, 1 Jun 2023 15:12:28 -0700 Message-Id: <1685657551-38291-4-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000d7732205fd18bce9" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --000000000000d7732205fd18bce9 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBBU1AgMi4wIEV0aGVybmV0IGNvbnRyb2xsZXIg d2hpY2ggaXMgZmlyc3QKaW50cm9kdWNlZCB3aXRoIDcyMTY1LiBUaGlzIGNvbnRyb2xsZXIgZmVh dHVyZXMgdHdvIGRpc3RpbmN0IEV0aGVybmV0CnBvcnRzIHRoYXQgY2FuIGJlIGluZGVwZW5kZW50 bHkgb3BlcmF0ZWQuCgpUaGlzIHBhdGNoIHN1cHBvcnRzOgoKLSBXYWtlLW9uLUxBTiB1c2luZyBt YWdpYyBwYWNrZXRzCi0gYmFzaWMgZXRodG9vbCBvcGVyYXRpb25zIChsaW5rLCBjb3VudGVycywg bWVzc2FnZSBsZXZlbCkKLSBNQUMgZGVzdGluYXRpb24gYWRkcmVzcyBmaWx0ZXJpbmcgKHByb21p c2N1b3VzLCBBTExfTVVMVEksIGV0Yy4pCgpSZXZpZXdlZC1ieTogU2ltb24gSG9ybWFuIDxzaW1v bi5ob3JtYW5AY29yaWdpbmUuY29tPgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxm bG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTogSnVzdGluIENoZW4g PGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbT4KLS0tCnY2CgktIEZpeGVkIGEgcmVzZXJ2ZWQgbWFj IGZpbHRlciBpbmRleGluZyBlcnJvcgoJLSBSZW1vdmVkIHR4X2xvY2sKCS0gU2ltcGxpZmllZCB0 eF90aW1lb3V0IGhvb2sKCS0gUmVtb3ZlZCBnZXRfc3RhdHMKCS0gRml4ZWQgcGh5IGlvY3RsCgkt IEZpeGVkIGRldiAtPiBuZGV2IHR5cG8KCS0gRml4ZWQgc2V0X3dvbCBkb3VibGUgZGlzYWJsZQoK djUKCS0gUmVtb3ZlIHVubmVjZXNzYXJ5IHBhcmVudGhlc2lzCgktIFVzZSBib29sIGZvciBiY21h c3BfbmV0ZmlsdF9jaGVja19kdXAoKQoKdjQKICAgICAgICAtIEFkZHJlc3Mgc3BhcnNlIHdhcm5p bmdzCiAgICAgICAgLSBGaXggb25lIG1vcmUgcmV2ZXJzZSB4bWFzIHRyZWUgdmlvbGF0aW9uCiAg ICAgICAgLSBJbXByb3ZlIGVycm9yIGxvZ2ljIGZvciBiY21hc3BfbmV0ZmlsdF9nZXRfcmVnX29m ZnNldCgpCgktIFJlbW92ZSBpbmxpbmVzCgp2MwogICAgICAgIC0gRml4IGxvZ2ljIGVycm9yIHdp dGggbmV0IHN0YXRzIHdoZXJlIHNvbWUgc3RhdHMgd2VyZSBtaXNzaW5nCiAgICAgICAgLSBHZW5l cmFsIGNsZWFuIHVwIGFkZHJlc3NpbmcgZm9ybWF0dGluZy9zcGVsbGluZy9jb25zaXN0ZW5jeQog ICAgICAgIC0gVXNlIGRldl9lcnJfcHJvYmUgdG8gc2F2ZSBhIGZldyBMb0NzCiAgICAgICAgLSBV c2UgcHV0X3VuYWxpZ25lZCB3aGVuIHVwZGF0aW5nIG5ldCBzdGF0cwoKdjIKICAgICAgICAtIFJl cGxhY2UgYSBjb3VwbGUgZnVuY3Rpb25zIHdpdGggaGVscGVyIGZ1bmN0aW9ucwogICAgICAgIC0g Rml4IGEgZmV3IFdvTCBpc3N1ZXMKCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29u ZmlnICAgICAgICAgICAgICB8ICAgMTEgKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20v TWFrZWZpbGUgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL2FzcDIvTWFrZWZpbGUgICAgICAgIHwgICAgMiArCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS9hc3AyL2JjbWFzcC5jICAgICAgICB8IDE0NjcgKysrKysrKysrKysrKysrKz0KKysr KwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3AuaCAgICAgICAgfCAg NjM4ICsrKysrKysrKwogLi4uL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9ldGh0 b29sLmMgICAgfCAgNTY4ICsrKysrKysrCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9h c3AyL2JjbWFzcF9pbnRmLmMgICB8IDEzOTMgKysrKysrKysrKysrKysrKz0KKysrCiAuLi4vbmV0 L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGZfZGVmcy5oICB8ICAyMzggKysrKwog OCBmaWxlcyBjaGFuZ2VkLCA0MzE4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3AuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2Jj bWFzcF9ldGh0b29sLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25l dC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmX2RlZnMuaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9iPQpyb2FkY29tL0tjb25maWcKaW5kZXggOTQ4NTg2YmYxYjViLi5kNDE2NjE0MTE0NWQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcKKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZwpAQCAtMjU1LDQgKzI1NSwxNSBA QCBjb25maWcgQk5YVF9IV01PTgogCSAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSB0 aGVybWFsIHNlbnNvciBkYXRhIG9uIE5ldFh0cmVtZS1DL0UKIAkgIGRldmljZXMsIHZpYSB0aGUg aHdtb24gc3lzZnMgaW50ZXJmYWNlLgo9MjAKK2NvbmZpZyBCQ01BU1AKKwl0cmlzdGF0ZSAiQnJv YWRjb20gQVNQIDIuMCBFdGhlcm5ldCBzdXBwb3J0IgorCWRlZmF1bHQgQVJDSF9CUkNNU1RCCisJ ZGVwZW5kcyBvbiBPRgorCXNlbGVjdCBNSUkKKwlzZWxlY3QgUEhZTElCCisJc2VsZWN0IE1ESU9f QkNNX1VOSU1BQworCWhlbHAKKwkgIFRoaXMgY29uZmlndXJhdGlvbiBlbmFibGVzIHRoZSBCcm9h ZGNvbSBBU1AgMi4wIEV0aGVybmV0IGNvbnRyb2xsZXIKKwkgIGRyaXZlciB3aGljaCBpcyBwcmVz ZW50IGluIEJyb2FkY29tIFNUQiBTb0NzIHN1Y2ggYXMgNzIxNjUuCisKIGVuZGlmICMgTkVUX1ZF TkRPUl9CUk9BRENPTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20v TWFrZWZpbGUgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC89CmJyb2FkY29tL01ha2VmaWxlCmluZGV4 IDBkZGZiNWI1ZDUzYy4uYmFjNWNiNmFkMGNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhl cm5ldC9icm9hZGNvbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNv bS9NYWtlZmlsZQpAQCAtMTcsMyArMTcsNCBAQCBvYmotJChDT05GSUdfQkdNQUNfQkNNQSkgKz0z RCBiZ21hYy1iY21hLm8gYmdtYWMtYmNtYS1tZGk9Cm8ubwogb2JqLSQoQ09ORklHX0JHTUFDX1BM QVRGT1JNKSArPTNEIGJnbWFjLXBsYXRmb3JtLm8KIG9iai0kKENPTkZJR19TWVNURU1QT1JUKSAr PTNEIGJjbXN5c3BvcnQubwogb2JqLSQoQ09ORklHX0JOWFQpICs9M0QgYm54dC8KK29iai0kKENP TkZJR19CQ01BU1ApICs9M0QgYXNwMi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2FzcDIvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9ldGhlPQpybmV0L2Jyb2FkY29t L2FzcDIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5l MDc1NTAzMTVmODMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9hc3AyL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAorb2JqLSQoQ09ORklHX0JDTUFTUCkg Kz0zRCBiY20tYXNwLm8KK2JjbS1hc3Atb2JqcyA6PTNEIGJjbWFzcC5vIGJjbWFzcF9pbnRmLm8g YmNtYXNwX2V0aHRvb2wubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRj b20vYXNwMi9iY21hc3AuYyBiL2RyaXZlcnMvbmV0L2V0aGU9CnJuZXQvYnJvYWRjb20vYXNwMi9i Y21hc3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY0ZDBkMjA4 MjRhMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2Fz cDIvYmNtYXNwLmMKQEAgLTAsMCArMSwxNDY3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAorLyoKKyAqIEJyb2FkY29tIFNUQiBBU1AgMi4wIERyaXZlcgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyMyBCcm9hZGNvbQorICovCisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZp Y2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl92bGFuLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5o PgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rl dmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVz cy5oPgorI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+CisjaW5jbHVkZSA8bGludXgvY2xr Lmg+CisKKyNpbmNsdWRlICJiY21hc3AuaCIKKyNpbmNsdWRlICJiY21hc3BfaW50Zl9kZWZzLmgi CisKK3N0YXRpYyB2b2lkIF9pbnRyMl9tYXNrX2NsZWFyKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJp diwgdTMyIG1hc2spCit7CisJaW50cjJfY29yZV93bChwcml2LCBtYXNrLCBBU1BfSU5UUjJfTUFT S19DTEVBUik7CisJcHJpdi0+aXJxX21hc2sgJj0zRCB+bWFzazsKK30KKworc3RhdGljIHZvaWQg X2ludHIyX21hc2tfc2V0KHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwgdTMyIG1hc2spCit7CisJ aW50cjJfY29yZV93bChwcml2LCBtYXNrLCBBU1BfSU5UUjJfTUFTS19TRVQpOworCXByaXYtPmly cV9tYXNrIHw9M0QgbWFzazsKK30KKwordm9pZCBiY21hc3BfZW5hYmxlX3R4X2lycShzdHJ1Y3Qg YmNtYXNwX2ludGYgKmludGYsIGludCBlbikKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYg PTNEIGludGYtPnBhcmVudDsKKworCWlmIChlbikKKwkJX2ludHIyX21hc2tfY2xlYXIocHJpdiwg QVNQX0lOVFIyX1RYX0RFU0MoaW50Zi0+Y2hhbm5lbCkpOworCWVsc2UKKwkJX2ludHIyX21hc2tf c2V0KHByaXYsIEFTUF9JTlRSMl9UWF9ERVNDKGludGYtPmNoYW5uZWwpKTsKK30KK0VYUE9SVF9T WU1CT0xfR1BMKGJjbWFzcF9lbmFibGVfdHhfaXJxKTsKKwordm9pZCBiY21hc3BfZW5hYmxlX3J4 X2lycShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGludCBlbikKK3sKKwlzdHJ1Y3QgYmNtYXNw X3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKworCWlmIChlbikKKwkJX2ludHIyX21hc2tf Y2xlYXIocHJpdiwgQVNQX0lOVFIyX1JYX0VDSChpbnRmLT5jaGFubmVsKSk7CisJZWxzZQorCQlf aW50cjJfbWFza19zZXQocHJpdiwgQVNQX0lOVFIyX1JYX0VDSChpbnRmLT5jaGFubmVsKSk7Cit9 CitFWFBPUlRfU1lNQk9MX0dQTChiY21hc3BfZW5hYmxlX3J4X2lycSk7CisKK3N0YXRpYyB2b2lk IGJjbWFzcF9pbnRyMl9tYXNrX3NldF9hbGwoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KQorewor CV9pbnRyMl9tYXNrX3NldChwcml2LCAweGZmZmZmZmZmKTsKKwlwcml2LT5pcnFfbWFzayA9M0Qg MHhmZmZmZmZmZjsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2ludHIyX2NsZWFyX2FsbChzdHJ1 Y3QgYmNtYXNwX3ByaXYgKnByaXYpCit7CisJaW50cjJfY29yZV93bChwcml2LCAweGZmZmZmZmZm LCBBU1BfSU5UUjJfQ0xFQVIpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfaW50cjJfaGFuZGxp bmcoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCB1MzIgc3RhdHVzKQoreworCWlmIChzdGF0dXMg JiBBU1BfSU5UUjJfUlhfRUNIKGludGYtPmNoYW5uZWwpKSB7CisJCWlmIChsaWtlbHkobmFwaV9z Y2hlZHVsZV9wcmVwKCZpbnRmLT5yeF9uYXBpKSkpIHsKKwkJCWJjbWFzcF9lbmFibGVfcnhfaXJx KGludGYsIDApOworCQkJX19uYXBpX3NjaGVkdWxlX2lycW9mZigmaW50Zi0+cnhfbmFwaSk7CisJ CX0KKwl9CisKKwlpZiAoc3RhdHVzICYgQVNQX0lOVFIyX1RYX0RFU0MoaW50Zi0+Y2hhbm5lbCkp IHsKKwkJaWYgKGxpa2VseShuYXBpX3NjaGVkdWxlX3ByZXAoJmludGYtPnR4X25hcGkpKSkgewor CQkJYmNtYXNwX2VuYWJsZV90eF9pcnEoaW50ZiwgMCk7CisJCQlfX25hcGlfc2NoZWR1bGVfaXJx b2ZmKCZpbnRmLT50eF9uYXBpKTsKKwkJfQorCX0KK30KKworc3RhdGljIGlycXJldHVybl90IGJj bWFzcF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnBy aXYgPTNEIGRhdGE7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmOworCXUzMiBzdGF0dXM7CisJ aW50IGk7CisKKwlzdGF0dXMgPTNEIGludHIyX2NvcmVfcmwocHJpdiwgQVNQX0lOVFIyX1NUQVRV UykgJgorCQl+aW50cjJfY29yZV9ybChwcml2LCBBU1BfSU5UUjJfTUFTS19TVEFUVVMpOworCisJ aW50cjJfY29yZV93bChwcml2LCBzdGF0dXMsIEFTUF9JTlRSMl9DTEVBUik7CisKKwlpZiAodW5s aWtlbHkoc3RhdHVzID0zRD0zRCAwKSkgeworCQlkZXZfd2FybigmcHJpdi0+cGRldi0+ZGV2LCAi bDIgc3B1cmlvdXMgaW50ZXJydXB0XG4iKTsKKwkJcmV0dXJuIElSUV9OT05FOworCX0KKworCS8q IEhhbmRsZSBpbnRmZXJmYWNlcyAqLworCWZvciAoaSA9M0QgMDsgaSA8IHByaXYtPmludGZfY291 bnQ7IGkrKykgeworCQlpbnRmID0zRCBwcml2LT5pbnRmc1tpXTsKKwkJYmNtYXNwX2ludHIyX2hh bmRsaW5nKGludGYsIHN0YXR1cyk7CisJfQorCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCit2 b2lkIGJjbWFzcF9mbHVzaF9yeF9wb3J0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlz dHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwl1MzIgbWFzazsKKwor CXN3aXRjaCAoaW50Zi0+cG9ydCkgeworCWNhc2UgMDoKKwkJbWFzayA9M0QgQVNQX0NUUkxfVU1B QzBfRkxVU0hfTUFTSzsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQltYXNrID0zRCBBU1BfQ1RSTF9V TUFDMV9GTFVTSF9NQVNLOworCQlicmVhazsKKwljYXNlIDI6CisJCW1hc2sgPTNEIEFTUF9DVFJM X1NQQl9GTFVTSF9NQVNLOworCQlicmVhazsKKwlkZWZhdWx0OgorCQkvKiBOb3QgdmFsaWQgcG9y dCAqLworCQlyZXR1cm47CisJfQorCisJcnhfY3RybF9jb3JlX3dsKHByaXYsIG1hc2ssIHByaXYt Pmh3X2luZm8tPnJ4X2N0cmxfZmx1c2gpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfbmV0Zmls dF9od19lbl93YWtlKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwKKwkJCQkgICAgICBzdHJ1Y3Qg YmNtYXNwX25ldF9maWx0ZXIgKm5maWx0KQoreworCXJ4X2ZpbHRlcl9jb3JlX3dsKHByaXYsIEFT UF9SWF9GSUxURVJfTkVUX09GRlNFVF9MM18xKDY0KSwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRf T0ZGU0VUKG5maWx0LT5od19pbmRleCkpOworCisJcnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgQVNQ X1JYX0ZJTFRFUl9ORVRfT0ZGU0VUX0wyKDMyKSB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX09G RlNFVF9MM18wKDMyKSB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVF9MM18xKDk2KSB8 CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVF9MNCgzMiksCisJCQkgIEFTUF9SWF9GSUxU RVJfTkVUX09GRlNFVChuZmlsdC0+aHdfaW5kZXggKyAxKSk7CisKKwlyeF9maWx0ZXJfY29yZV93 bChwcml2LCBBU1BfUlhfRklMVEVSX05FVF9DRkdfQ0gobmZpbHQtPnBvcnQgKyA4KSB8CisJCQkg IEFTUF9SWF9GSUxURVJfTkVUX0NGR19FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19M Ml9FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MM19FTiB8CisJCQkgIEFTUF9SWF9G SUxURVJfTkVUX0NGR19MNF9FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MM19GUk0o MikgfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDRfRlJNKDIpIHwKKwkJCSAgQVNQX1JY X0ZJTFRFUl9ORVRfQ0ZHX1VNQyhuZmlsdC0+cG9ydCksCisJCQkgIEFTUF9SWF9GSUxURVJfTkVU X0NGRyhuZmlsdC0+aHdfaW5kZXgpKTsKKworCXJ4X2ZpbHRlcl9jb3JlX3dsKHByaXYsIEFTUF9S WF9GSUxURVJfTkVUX0NGR19DSChuZmlsdC0+cG9ydCArIDgpIHwKKwkJCSAgQVNQX1JYX0ZJTFRF Ul9ORVRfQ0ZHX0VOIHwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0wyX0VOIHwKKwkJCSAg QVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0wzX0VOIHwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZH X0w0X0VOIHwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0wzX0ZSTSgyKSB8CisJCQkgIEFT UF9SWF9GSUxURVJfTkVUX0NGR19MNF9GUk0oMikgfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9D RkdfVU1DKG5maWx0LT5wb3J0KSwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHKG5maWx0LT5o d19pbmRleCArIDEpKTsKK30KKworI2RlZmluZSBNQVhfV0FLRV9GSUxURVJfU0laRQkJMjU2Citl bnVtIGFzcF9uZXRmaWx0X3JlZ190eXBlIHsKKwlBU1BfTkVURklMVF9NQVRDSCA9M0QgMCwKKwlB U1BfTkVURklMVF9NQVNLLAorCUFTUF9ORVRGSUxUX01BWAorfTsKKworc3RhdGljIGludCBiY21h c3BfbmV0ZmlsdF9nZXRfcmVnX29mZnNldChzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCisJCQkJ CSBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5maWx0LAorCQkJCQkgZW51bSBhc3BfbmV0Zmls dF9yZWdfdHlwZSByZWdfdHlwZSwKKwkJCQkJIHUzMiBvZmZzZXQpCit7CisJdTMyIGJsb2NrX2lu ZGV4LCBmaWx0ZXJfc2VsOworCisJaWYgKG9mZnNldCA8IDMyKSB7CisJCWJsb2NrX2luZGV4ID0z RCBBU1BfUlhfRklMVEVSX05FVF9MMjsKKwkJZmlsdGVyX3NlbCA9M0QgbmZpbHQtPmh3X2luZGV4 OworCX0gZWxzZSBpZiAob2Zmc2V0IDwgNjQpIHsKKwkJYmxvY2tfaW5kZXggPTNEIEFTUF9SWF9G SUxURVJfTkVUX0wyOworCQlmaWx0ZXJfc2VsID0zRCBuZmlsdC0+aHdfaW5kZXggKyAxOworCX0g ZWxzZSBpZiAob2Zmc2V0IDwgOTYpIHsKKwkJYmxvY2tfaW5kZXggPTNEIEFTUF9SWF9GSUxURVJf TkVUX0wzXzA7CisJCWZpbHRlcl9zZWwgPTNEIG5maWx0LT5od19pbmRleDsKKwl9IGVsc2UgaWYg KG9mZnNldCA8IDEyOCkgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JYX0ZJTFRFUl9ORVRfTDNf MDsKKwkJZmlsdGVyX3NlbCA9M0QgbmZpbHQtPmh3X2luZGV4ICsgMTsKKwl9IGVsc2UgaWYgKG9m ZnNldCA8IDE2MCkgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JYX0ZJTFRFUl9ORVRfTDNfMTsK KwkJZmlsdGVyX3NlbCA9M0QgbmZpbHQtPmh3X2luZGV4OworCX0gZWxzZSBpZiAob2Zmc2V0IDwg MTkyKSB7CisJCWJsb2NrX2luZGV4ID0zRCBBU1BfUlhfRklMVEVSX05FVF9MM18xOworCQlmaWx0 ZXJfc2VsID0zRCBuZmlsdC0+aHdfaW5kZXggKyAxOworCX0gZWxzZSBpZiAob2Zmc2V0IDwgMjI0 KSB7CisJCWJsb2NrX2luZGV4ID0zRCBBU1BfUlhfRklMVEVSX05FVF9MNDsKKwkJZmlsdGVyX3Nl bCA9M0QgbmZpbHQtPmh3X2luZGV4OworCX0gZWxzZSBpZiAob2Zmc2V0IDwgMjU2KSB7CisJCWJs b2NrX2luZGV4ID0zRCBBU1BfUlhfRklMVEVSX05FVF9MNDsKKwkJZmlsdGVyX3NlbCA9M0QgbmZp bHQtPmh3X2luZGV4ICsgMTsKKwl9IGVsc2UgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlz d2l0Y2ggKHJlZ190eXBlKSB7CisJY2FzZSBBU1BfTkVURklMVF9NQVRDSDoKKwkJcmV0dXJuIEFT UF9SWF9GSUxURVJfTkVUX1BBVChmaWx0ZXJfc2VsLCBibG9ja19pbmRleCwKKwkJCQkJICAgICAo b2Zmc2V0ICUgMzIpKTsKKwljYXNlIEFTUF9ORVRGSUxUX01BU0s6CisJCXJldHVybiBBU1BfUlhf RklMVEVSX05FVF9NQVNLKGZpbHRlcl9zZWwsIGJsb2NrX2luZGV4LAorCQkJCQkgICAgICAob2Zm c2V0ICUgMzIpKTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGJjbWFzcF9uZXRmaWx0X3dyKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwKKwkJCSAg ICAgIHN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlciAqbmZpbHQsCisJCQkgICAgICBlbnVtIGFzcF9u ZXRmaWx0X3JlZ190eXBlIHJlZ190eXBlLAorCQkJICAgICAgdTMyIHZhbCwgdTMyIG9mZnNldCkK K3sKKwlpbnQgcmVnX29mZnNldDsKKworCS8qIEhXIG9ubHkgYWNjZXB0cyA0IGJ5dGUgYWxpZ25l ZCB3cml0ZXMgKi8KKwlpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCA0KSB8fCBvZmZzZXQgPiBNQVhf V0FLRV9GSUxURVJfU0laRSkKKwkJcmV0dXJuOworCisJcmVnX29mZnNldCA9M0QgYmNtYXNwX25l dGZpbHRfZ2V0X3JlZ19vZmZzZXQocHJpdiwgbmZpbHQsIHJlZ190eXBlLAorCQkJCQkJICAgb2Zm c2V0KTsKKworCXJ4X2ZpbHRlcl9jb3JlX3dsKHByaXYsIHZhbCwgcmVnX29mZnNldCk7Cit9CisK K3N0YXRpYyB1MzIgYmNtYXNwX25ldGZpbHRfcmQoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LAor CQkJICAgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5maWx0LAorCQkJICAgICBlbnVtIGFz cF9uZXRmaWx0X3JlZ190eXBlIHJlZ190eXBlLAorCQkJICAgICB1MzIgb2Zmc2V0KQoreworCWlu dCByZWdfb2Zmc2V0OworCisJLyogSFcgb25seSBhY2NlcHRzIDQgYnl0ZSBhbGlnbmVkIHdyaXRl cyAqLworCWlmICghSVNfQUxJR05FRChvZmZzZXQsIDQpIHx8IG9mZnNldCA+IE1BWF9XQUtFX0ZJ TFRFUl9TSVpFKQorCQlyZXR1cm4gMDsKKworCXJlZ19vZmZzZXQgPTNEIGJjbWFzcF9uZXRmaWx0 X2dldF9yZWdfb2Zmc2V0KHByaXYsIG5maWx0LCByZWdfdHlwZSwKKwkJCQkJCSAgIG9mZnNldCk7 CisKKwlyZXR1cm4gcnhfZmlsdGVyX2NvcmVfcmwocHJpdiwgcmVnX29mZnNldCk7Cit9CisKK3N0 YXRpYyBpbnQgYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJp diwKKwkJCQkgICAgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdCwKKwkJCQkgICAgdTMy IG9mZnNldCwgdm9pZCAqbWF0Y2gsIHZvaWQgKm1hc2ssCisJCQkJICAgIHNpemVfdCBzaXplKQor eworCXUzMiBzaGlmdCwgbWFza192YWwgPTNEIDAsIG1hdGNoX3ZhbCA9M0QgMDsKKwlib29sIGZp cnN0X2J5dGUgPTNEIHRydWU7CisKKwlpZiAoKG9mZnNldCArIHNpemUpID4gTUFYX1dBS0VfRklM VEVSX1NJWkUpCisJCXJldHVybiAtRUlOVkFMOworCisJd2hpbGUgKHNpemUtLSkgeworCQkvKiBU aGUgSFcgb25seSBhY2NlcHRzIDQgYnl0ZSBhbGlnbmVkIHdyaXRlcywgc28gaWYgd2UKKwkJICog YmVnaW4gdW5hbGlnbmVkIG9yIGlmIHJlbWFpbmluZyBieXRlcyBsZXNzIHRoYW4gNCwKKwkJICog d2UgbmVlZCB0byByZWFkIHRoZW4gd3JpdGUgdG8gYXZvaWQgbG9zaW5nIGN1cnJlbnQKKwkJICog cmVnaXN0ZXIgc3RhdGUKKwkJICovCisJCWlmIChmaXJzdF9ieXRlICYmICghSVNfQUxJR05FRChv ZmZzZXQsIDQpIHx8IHNpemUgPCAzKSkgeworCQkJbWF0Y2hfdmFsID0zRCBiY21hc3BfbmV0Zmls dF9yZChwcml2LCBuZmlsdCwKKwkJCQkJCSAgICAgIEFTUF9ORVRGSUxUX01BVENILAorCQkJCQkJ ICAgICAgQUxJR05fRE9XTihvZmZzZXQsIDQpKTsKKwkJCW1hc2tfdmFsID0zRCBiY21hc3BfbmV0 ZmlsdF9yZChwcml2LCBuZmlsdCwKKwkJCQkJCSAgICAgQVNQX05FVEZJTFRfTUFTSywKKwkJCQkJ CSAgICAgQUxJR05fRE9XTihvZmZzZXQsIDQpKTsKKwkJfQorCisJCXNoaWZ0ID0zRCAoMyAtIChv ZmZzZXQgJSA0KSkgKiA4OworCQltYXRjaF92YWwgJj0zRCB+R0VOTUFTSyhzaGlmdCArIDcsIHNo aWZ0KTsKKwkJbWFza192YWwgJj0zRCB+R0VOTUFTSyhzaGlmdCArIDcsIHNoaWZ0KTsKKwkJbWF0 Y2hfdmFsIHw9M0QgKHUzMikoKigodTggKiltYXRjaCkgPDwgc2hpZnQpOworCQltYXNrX3ZhbCB8 PTNEICh1MzIpKCooKHU4ICopbWFzaykgPDwgc2hpZnQpOworCisJCS8qIElmIGxhc3QgYnl0ZSBv ciBsYXN0IGJ5dGUgb2Ygd29yZCwgd3JpdGUgdG8gcmVnICovCisJCWlmICghc2l6ZSB8fCAoKG9m ZnNldCAlIDQpID0zRD0zRCAzKSkgeworCQkJYmNtYXNwX25ldGZpbHRfd3IocHJpdiwgbmZpbHQs IEFTUF9ORVRGSUxUX01BVENILAorCQkJCQkgIG1hdGNoX3ZhbCwgQUxJR05fRE9XTihvZmZzZXQs IDQpKTsKKwkJCWJjbWFzcF9uZXRmaWx0X3dyKHByaXYsIG5maWx0LCBBU1BfTkVURklMVF9NQVNL LAorCQkJCQkgIG1hc2tfdmFsLCBBTElHTl9ET1dOKG9mZnNldCwgNCkpOworCQkJZmlyc3RfYnl0 ZSA9M0QgdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJCWZpcnN0X2J5dGUgPTNEIGZhbHNlOworCQl9CisK KwkJb2Zmc2V0Kys7CisJCW1hdGNoKys7CisJCW1hc2srKzsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgYmNtYXNwX25ldGZpbHRfcmVzZXRfaHcoc3RydWN0IGJjbWFzcF9wcml2 ICpwcml2LAorCQkJCSAgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5maWx0KQoreworCWlu dCBpOworCisJZm9yIChpID0zRCAwOyBpIDwgTUFYX1dBS0VfRklMVEVSX1NJWkU7IGkgKz0zRCA0 KSB7CisJCWJjbWFzcF9uZXRmaWx0X3dyKHByaXYsIG5maWx0LCBBU1BfTkVURklMVF9NQVRDSCwg MCwgaSk7CisJCWJjbWFzcF9uZXRmaWx0X3dyKHByaXYsIG5maWx0LCBBU1BfTkVURklMVF9NQVNL LCAwLCBpKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9uZXRmaWx0X3RjcGlwNF93cihz dHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCisJCQkJICAgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0 ZXIgKm5maWx0LAorCQkJCSAgICAgc3RydWN0IGV0aHRvb2xfdGNwaXA0X3NwZWMgKm1hdGNoLAor CQkJCSAgICAgc3RydWN0IGV0aHRvb2xfdGNwaXA0X3NwZWMgKm1hc2ssCisJCQkJICAgICB1MzIg b2Zmc2V0KQoreworCV9fYmUxNiB2YWxfMTYsIG1hc2tfMTY7CisKKwl2YWxfMTYgPTNEIGh0b25z KEVUSF9QX0lQKTsKKwltYXNrXzE2ID0zRCBodG9ucygweEZGRkYpOworCWJjbWFzcF9uZXRmaWx0 X3dyX21fd2FrZShwcml2LCBuZmlsdCwgKEVUSF9BTEVOICogMikgKyBvZmZzZXQsCisJCQkJICZ2 YWxfMTYsICZtYXNrXzE2LCBzaXplb2YodmFsXzE2KSk7CisJYmNtYXNwX25ldGZpbHRfd3JfbV93 YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNldCArIDEsCisJCQkJICZtYXRjaC0+dG9z LCAmbWFzay0+dG9zLAorCQkJCSBzaXplb2YobWF0Y2gtPnRvcykpOworCWJjbWFzcF9uZXRmaWx0 X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAxMiwKKwkJCQkgJm1h dGNoLT5pcDRzcmMsICZtYXNrLT5pcDRzcmMsCisJCQkJIHNpemVvZihtYXRjaC0+aXA0c3JjKSk7 CisJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNl dCArIDE2LAorCQkJCSAmbWF0Y2gtPmlwNGRzdCwgJm1hc2stPmlwNGRzdCwKKwkJCQkgc2l6ZW9m KG1hdGNoLT5pcDRkc3QpKTsKKwliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQs IEVUSF9ITEVOICsgb2Zmc2V0ICsgMjAsCisJCQkJICZtYXRjaC0+cHNyYywgJm1hc2stPnBzcmMs CisJCQkJIHNpemVvZihtYXRjaC0+cHNyYykpOworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShw cml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAyMiwKKwkJCQkgJm1hdGNoLT5wZHN0LCAm bWFzay0+cGRzdCwKKwkJCQkgc2l6ZW9mKG1hdGNoLT5wZHN0KSk7Cit9CisKK3N0YXRpYyB2b2lk IGJjbWFzcF9uZXRmaWx0X3RjcGlwNl93cihzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCisJCQkJ ICAgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5maWx0LAorCQkJCSAgICAgc3RydWN0IGV0 aHRvb2xfdGNwaXA2X3NwZWMgKm1hdGNoLAorCQkJCSAgICAgc3RydWN0IGV0aHRvb2xfdGNwaXA2 X3NwZWMgKm1hc2ssCisJCQkJICAgICB1MzIgb2Zmc2V0KQoreworCV9fYmUxNiB2YWxfMTYsIG1h c2tfMTY7CisKKwl2YWxfMTYgPTNEIGh0b25zKEVUSF9QX0lQVjYpOworCW1hc2tfMTYgPTNEIGh0 b25zKDB4RkZGRik7CisJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCAoRVRI X0FMRU4gKiAyKSArIG9mZnNldCwKKwkJCQkgJnZhbF8xNiwgJm1hc2tfMTYsIHNpemVvZih2YWxf MTYpKTsKKwl2YWxfMTYgPTNEIGh0b25zKG1hdGNoLT50Y2xhc3MgPDwgNCk7CisJbWFza18xNiA9 M0QgaHRvbnMobWFzay0+dGNsYXNzIDw8IDQpOworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShw cml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQsCisJCQkJICZ2YWxfMTYsICZtYXNrXzE2LCBz aXplb2YodmFsXzE2KSk7CisJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBF VEhfSExFTiArIG9mZnNldCArIDgsCisJCQkJICZtYXRjaC0+aXA2c3JjLCAmbWFzay0+aXA2c3Jj LAorCQkJCSBzaXplb2YobWF0Y2gtPmlwNnNyYykpOworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2Fr ZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAyNCwKKwkJCQkgJm1hdGNoLT5pcDZk c3QsICZtYXNrLT5pcDZkc3QsCisJCQkJIHNpemVvZihtYXRjaC0+aXA2ZHN0KSk7CisJYmNtYXNw X25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNldCArIDQwLAor CQkJCSAmbWF0Y2gtPnBzcmMsICZtYXNrLT5wc3JjLAorCQkJCSBzaXplb2YobWF0Y2gtPnBzcmMp KTsKKwliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zm c2V0ICsgNDIsCisJCQkJICZtYXRjaC0+cGRzdCwgJm1hc2stPnBkc3QsCisJCQkJIHNpemVvZiht YXRjaC0+cGRzdCkpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9uZXRmaWx0X3dyX3RvX2h3KHN0 cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwKKwkJCQkgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIg Km5maWx0KQoreworCXN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMgPTNEICZuZmlsdC0+ ZnM7CisJdW5zaWduZWQgaW50IG9mZnNldCA9M0QgMDsKKwlfX2JlMTYgdmFsXzE2LCBtYXNrXzE2 OworCXU4IHZhbF84LCBtYXNrXzg7CisKKwkvKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyB3YWtl IGZpbHRlcnMgKi8KKwlpZiAoIW5maWx0LT53YWtlX2ZpbHRlcikKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwliY21hc3BfbmV0ZmlsdF9yZXNldF9odyhwcml2LCBuZmlsdCk7CisKKwlpZiAoZnMtPmZs b3dfdHlwZSAmIEZMT1dfTUFDX0VYVCkgeworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJp diwgbmZpbHQsIDAsICZmcy0+aF9leHQuaF9kZXN0LAorCQkJCQkgJmZzLT5tX2V4dC5oX2Rlc3Qs CisJCQkJCSBzaXplb2YoZnMtPmhfZXh0LmhfZGVzdCkpOworCX0KKworCWlmICgoZnMtPmZsb3df dHlwZSAmIEZMT1dfRVhUKSAmJgorCSAgICAoZnMtPm1fZXh0LnZsYW5fZXR5cGUgfHwgZnMtPm1f ZXh0LnZsYW5fdGNpKSkgeworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQs IChFVEhfQUxFTiAqIDIpLAorCQkJCQkgJmZzLT5oX2V4dC52bGFuX2V0eXBlLAorCQkJCQkgJmZz LT5tX2V4dC52bGFuX2V0eXBlLAorCQkJCQkgc2l6ZW9mKGZzLT5oX2V4dC52bGFuX2V0eXBlKSk7 CisJCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgKChFVEhfQUxFTiAqIDIp ICsgMiksCisJCQkJCSAmZnMtPmhfZXh0LnZsYW5fdGNpLAorCQkJCQkgJmZzLT5tX2V4dC52bGFu X3RjaSwKKwkJCQkJIHNpemVvZihmcy0+aF9leHQudmxhbl90Y2kpKTsKKwkJb2Zmc2V0ICs9M0Qg VkxBTl9ITEVOOworCX0KKworCXN3aXRjaCAoZnMtPmZsb3dfdHlwZSAmIH4oRkxPV19FWFQgfCBG TE9XX01BQ19FWFQpKSB7CisJY2FzZSBFVEhFUl9GTE9XOgorCQliY21hc3BfbmV0ZmlsdF93cl9t X3dha2UocHJpdiwgbmZpbHQsIDAsCisJCQkJCSAmZnMtPmhfdS5ldGhlcl9zcGVjLmhfZGVzdCwK KwkJCQkJICZmcy0+bV91LmV0aGVyX3NwZWMuaF9kZXN0LAorCQkJCQkgc2l6ZW9mKGZzLT5oX3Uu ZXRoZXJfc3BlYy5oX2Rlc3QpKTsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5m aWx0LCBFVEhfQUxFTiwKKwkJCQkJICZmcy0+aF91LmV0aGVyX3NwZWMuaF9zb3VyY2UsCisJCQkJ CSAmZnMtPm1fdS5ldGhlcl9zcGVjLmhfc291cmNlLAorCQkJCQkgc2l6ZW9mKGZzLT5oX3UuZXRo ZXJfc3BlYy5oX3NvdXJjZSkpOworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZp bHQsIChFVEhfQUxFTiAqIDIpICsgb2Zmc2V0LAorCQkJCQkgJmZzLT5oX3UuZXRoZXJfc3BlYy5o X3Byb3RvLAorCQkJCQkgJmZzLT5tX3UuZXRoZXJfc3BlYy5oX3Byb3RvLAorCQkJCQkgc2l6ZW9m KGZzLT5oX3UuZXRoZXJfc3BlYy5oX3Byb3RvKSk7CisKKwkJYnJlYWs7CisJY2FzZSBJUF9VU0VS X0ZMT1c6CisJCXZhbF8xNiA9M0QgaHRvbnMoRVRIX1BfSVApOworCQltYXNrXzE2ID0zRCBodG9u cygweEZGRkYpOworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIChFVEhf QUxFTiAqIDIpICsgb2Zmc2V0LAorCQkJCQkgJnZhbF8xNiwgJm1hc2tfMTYsIHNpemVvZih2YWxf MTYpKTsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiAr IG9mZnNldCArIDEsCisJCQkJCSAmZnMtPmhfdS51c3JfaXA0X3NwZWMudG9zLAorCQkJCQkgJmZz LT5tX3UudXNyX2lwNF9zcGVjLnRvcywKKwkJCQkJIHNpemVvZihmcy0+aF91LnVzcl9pcDRfc3Bl Yy50b3MpKTsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExF TiArIG9mZnNldCArIDksCisJCQkJCSAmZnMtPmhfdS51c3JfaXA0X3NwZWMucHJvdG8sCisJCQkJ CSAmZnMtPm1fdS51c3JfaXA0X3NwZWMucHJvdG8sCisJCQkJCSBzaXplb2YoZnMtPmhfdS51c3Jf aXA0X3NwZWMucHJvdG8pKTsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0 LCBFVEhfSExFTiArIG9mZnNldCArIDEyLAorCQkJCQkgJmZzLT5oX3UudXNyX2lwNF9zcGVjLmlw NHNyYywKKwkJCQkJICZmcy0+bV91LnVzcl9pcDRfc3BlYy5pcDRzcmMsCisJCQkJCSBzaXplb2Yo ZnMtPmhfdS51c3JfaXA0X3NwZWMuaXA0c3JjKSk7CisJCWJjbWFzcF9uZXRmaWx0X3dyX21fd2Fr ZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAxNiwKKwkJCQkJICZmcy0+aF91LnVz cl9pcDRfc3BlYy5pcDRkc3QsCisJCQkJCSAmZnMtPm1fdS51c3JfaXA0X3NwZWMuaXA0ZHN0LAor CQkJCQkgc2l6ZW9mKGZzLT5oX3UudXNyX2lwNF9zcGVjLmlwNGRzdCkpOworCQlpZiAoIWZzLT5t X3UudXNyX2lwNF9zcGVjLmw0XzRfYnl0ZXMpCisJCQlicmVhazsKKworCQkvKiBPbmx5IHN1cHBv cnRzIDIwIGJ5dGUgSVB2NCBoZWFkZXIgKi8KKwkJdmFsXzggPTNEIDB4NDU7CisJCW1hc2tfOCA9 M0QgMHhGRjsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExF TiArIG9mZnNldCwKKwkJCQkJICZ2YWxfOCwgJm1hc2tfOCwgc2l6ZW9mKHZhbF84KSk7CisJCWJj bWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwKKwkJCQkJIEVUSF9ITEVOICsgMjAg KyBvZmZzZXQsCisJCQkJCSAmZnMtPmhfdS51c3JfaXA0X3NwZWMubDRfNF9ieXRlcywKKwkJCQkJ ICZmcy0+bV91LnVzcl9pcDRfc3BlYy5sNF80X2J5dGVzLAorCQkJCQkgc2l6ZW9mKGZzLT5oX3Uu dXNyX2lwNF9zcGVjLmw0XzRfYnl0ZXMpCisJCQkJCSApOworCQlicmVhazsKKwljYXNlIFRDUF9W NF9GTE9XOgorCQl2YWxfOCA9M0QgSVBQUk9UT19UQ1A7CisJCW1hc2tfOCA9M0QgMHhGRjsKKwkJ YmNtYXNwX25ldGZpbHRfdGNwaXA0X3dyKHByaXYsIG5maWx0LCAmZnMtPmhfdS50Y3BfaXA0X3Nw ZWMsCisJCQkJCSAmZnMtPm1fdS50Y3BfaXA0X3NwZWMsIG9mZnNldCk7CisJCWJjbWFzcF9uZXRm aWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyA5LAorCQkJCQkg JnZhbF84LCAmbWFza184LCBzaXplb2YodmFsXzgpKTsKKwkJYnJlYWs7CisJY2FzZSBVRFBfVjRf RkxPVzoKKwkJdmFsXzggPTNEIElQUFJPVE9fVURQOworCQltYXNrXzggPTNEIDB4RkY7CisJCWJj bWFzcF9uZXRmaWx0X3RjcGlwNF93cihwcml2LCBuZmlsdCwgJmZzLT5oX3UudWRwX2lwNF9zcGVj LAorCQkJCQkgJmZzLT5tX3UudWRwX2lwNF9zcGVjLCBvZmZzZXQpOworCisJCWJjbWFzcF9uZXRm aWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyA5LAorCQkJCQkg JnZhbF84LCAmbWFza184LCBzaXplb2YodmFsXzgpKTsKKwkJYnJlYWs7CisJY2FzZSBUQ1BfVjZf RkxPVzoKKwkJdmFsXzggPTNEIElQUFJPVE9fVENQOworCQltYXNrXzggPTNEIDB4RkY7CisJCWJj bWFzcF9uZXRmaWx0X3RjcGlwNl93cihwcml2LCBuZmlsdCwgJmZzLT5oX3UudGNwX2lwNl9zcGVj LAorCQkJCQkgJmZzLT5tX3UudGNwX2lwNl9zcGVjLCBvZmZzZXQpOworCQliY21hc3BfbmV0Zmls dF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zmc2V0ICsgNiwKKwkJCQkJICZ2 YWxfOCwgJm1hc2tfOCwgc2l6ZW9mKHZhbF84KSk7CisJCWJyZWFrOworCWNhc2UgVURQX1Y2X0ZM T1c6CisJCXZhbF84ID0zRCBJUFBST1RPX1VEUDsKKwkJbWFza184ID0zRCAweEZGOworCQliY21h c3BfbmV0ZmlsdF90Y3BpcDZfd3IocHJpdiwgbmZpbHQsICZmcy0+aF91LnVkcF9pcDZfc3BlYywK KwkJCQkJICZmcy0+bV91LnVkcF9pcDZfc3BlYywgb2Zmc2V0KTsKKwkJYmNtYXNwX25ldGZpbHRf d3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNldCArIDYsCisJCQkJCSAmdmFs XzgsICZtYXNrXzgsIHNpemVvZih2YWxfOCkpOworCQlicmVhazsKKwl9CisKKwliY21hc3BfbmV0 ZmlsdF9od19lbl93YWtlKHByaXYsIG5maWx0KTsKKworCXJldHVybiAwOworfQorCit2b2lkIGJj bWFzcF9uZXRmaWx0X3N1c3BlbmQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmKQoreworCXN0cnVj dCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgaW50Zi0+cGFyZW50OworCWJvb2wgd3JpdGUgPTNEIGZh bHNlOworCWludCByZXQsIGk7CisKKwkvKiBXcml0ZSBhbGwgZmlsdGVycyB0byBIVyAqLworCWZv ciAoaSA9M0QgMDsgaSA8IE5VTV9ORVRfRklMVEVSUzsgaSsrKSB7CisJCS8qIElmIHRoZSBmaWx0 ZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcnQsIHNraXAgcHJvZ3JhbW1pbmcuICovCisJCWlmICgh cHJpdi0+bmV0X2ZpbHRlcnNbaV0uY2xhaW1lZCB8fAorCQkgICAgcHJpdi0+bmV0X2ZpbHRlcnNb aV0ucG9ydCAhPTNEIGludGYtPnBvcnQpCisJCQljb250aW51ZTsKKworCQlpZiAoaSA+IDAgJiYg KGkgJSAyKSAmJgorCQkgICAgcHJpdi0+bmV0X2ZpbHRlcnNbaV0ud2FrZV9maWx0ZXIgJiYKKwkJ ICAgIHByaXYtPm5ldF9maWx0ZXJzW2kgLSAxXS53YWtlX2ZpbHRlcikKKwkJCWNvbnRpbnVlOwor CisJCXJldCA9M0QgYmNtYXNwX25ldGZpbHRfd3JfdG9faHcocHJpdiwgJnByaXYtPm5ldF9maWx0 ZXJzW2ldKTsKKwkJaWYgKCFyZXQpCisJCQl3cml0ZSA9M0QgdHJ1ZTsKKwl9CisKKwkvKiBTdWNj ZXNzZnVsbHkgcHJvZ3JhbW1lZCBhdCBsZWFzdCBvbmUgd2FrZSBmaWx0ZXIKKwkgKiBzbyBlbmFi bGUgdG9wIGxldmVsIHdha2UgY29uZmlnCisJICovCisJaWYgKHdyaXRlKQorCQlyeF9maWx0ZXJf Y29yZV93bChwcml2LCAoQVNQX1JYX0ZJTFRFUl9PUFVUX0VOIHwKKwkJCQkgIEFTUF9SWF9GSUxU RVJfTE5SX01EIHwKKwkJCQkgIEFTUF9SWF9GSUxURVJfR0VOX1dLX0VOIHwKKwkJCQkgIEFTUF9S WF9GSUxURVJfTlRfRkxUX0VOKSwKKwkJCQkgIEFTUF9SWF9GSUxURVJfQkxLX0NUUkwpOworfQor Cit2b2lkIGJjbWFzcF9uZXRmaWx0X2dldF9hbGxfYWN0aXZlKHN0cnVjdCBiY21hc3BfaW50ZiAq aW50ZiwgdTMyICpydWxlX2xvYz0KcywKKwkJCQkgICB1MzIgKnJ1bGVfY250KQoreworCXN0cnVj dCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgaW50Zi0+cGFyZW50OworCWludCBqID0zRCAwLCBpOwor CisJZm9yIChpID0zRCAwOyBpIDwgTlVNX05FVF9GSUxURVJTOyBpKyspIHsKKwkJaWYgKCFwcml2 LT5uZXRfZmlsdGVyc1tpXS5jbGFpbWVkIHx8CisJCSAgICBwcml2LT5uZXRfZmlsdGVyc1tpXS5w b3J0ICE9M0QgaW50Zi0+cG9ydCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChpID4gMCAmJiAoaSAl IDIpICYmCisJCSAgICBwcml2LT5uZXRfZmlsdGVyc1tpXS53YWtlX2ZpbHRlciAmJgorCQkgICAg cHJpdi0+bmV0X2ZpbHRlcnNbaSAtIDFdLndha2VfZmlsdGVyKQorCQkJY29udGludWU7CisKKwkJ cnVsZV9sb2NzW2orK10gPTNEIHByaXYtPm5ldF9maWx0ZXJzW2ldLmZzLmxvY2F0aW9uOworCX0K KworCSpydWxlX2NudCA9M0QgajsKK30KKworaW50IGJjbWFzcF9uZXRmaWx0X2dldF9hY3RpdmUo c3RydWN0IGJjbWFzcF9pbnRmICppbnRmKQoreworCXN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiA9 M0QgaW50Zi0+cGFyZW50OworCWludCBjbnQgPTNEIDAsIGk7CisKKwlmb3IgKGkgPTNEIDA7IGkg PCBOVU1fTkVUX0ZJTFRFUlM7IGkrKykgeworCQlpZiAoIXByaXYtPm5ldF9maWx0ZXJzW2ldLmNs YWltZWQgfHwKKwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2ldLnBvcnQgIT0zRCBpbnRmLT5wb3J0 KQorCQkJY29udGludWU7CisKKwkJLyogU2tpcCBvdmVyIGEgd2FrZSBmaWx0ZXIgcGFpciAqLwor CQlpZiAoaSA+IDAgJiYgKGkgJSAyKSAmJgorCQkgICAgcHJpdi0+bmV0X2ZpbHRlcnNbaV0ud2Fr ZV9maWx0ZXIgJiYKKwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2kgLSAxXS53YWtlX2ZpbHRlcikK KwkJCWNvbnRpbnVlOworCisJCWNudCsrOworCX0KKworCXJldHVybiBjbnQ7Cit9CisKK2Jvb2wg YmNtYXNwX25ldGZpbHRfY2hlY2tfZHVwKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCSAg ICAgIHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMpCit7CisJc3RydWN0IGJjbWFzcF9w cml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisJc3RydWN0IGV0aHRvb2xfcnhfZmxvd19zcGVj ICpjdXI7CisJc2l6ZV90IGZzX3NpemUgPTNEIDA7CisJaW50IGk7CisKKwlmb3IgKGkgPTNEIDA7 IGkgPCBOVU1fTkVUX0ZJTFRFUlM7IGkrKykgeworCQlpZiAoIXByaXYtPm5ldF9maWx0ZXJzW2ld LmNsYWltZWQgfHwKKwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2ldLnBvcnQgIT0zRCBpbnRmLT5w b3J0KQorCQkJY29udGludWU7CisKKwkJY3VyID0zRCAmcHJpdi0+bmV0X2ZpbHRlcnNbaV0uZnM7 CisKKwkJaWYgKGN1ci0+Zmxvd190eXBlICE9M0QgZnMtPmZsb3dfdHlwZSB8fAorCQkgICAgY3Vy LT5yaW5nX2Nvb2tpZSAhPTNEIGZzLT5yaW5nX2Nvb2tpZSkKKwkJCWNvbnRpbnVlOworCisJCXN3 aXRjaCAoZnMtPmZsb3dfdHlwZSAmIH4oRkxPV19FWFQgfCBGTE9XX01BQ19FWFQpKSB7CisJCWNh c2UgRVRIRVJfRkxPVzoKKwkJCWZzX3NpemUgPTNEIHNpemVvZihzdHJ1Y3QgZXRoaGRyKTsKKwkJ CWJyZWFrOworCQljYXNlIElQX1VTRVJfRkxPVzoKKwkJCWZzX3NpemUgPTNEIHNpemVvZihzdHJ1 Y3QgZXRodG9vbF91c3JpcDRfc3BlYyk7CisJCQlicmVhazsKKwkJY2FzZSBUQ1BfVjZfRkxPVzoK KwkJY2FzZSBVRFBfVjZfRkxPVzoKKwkJCWZzX3NpemUgPTNEIHNpemVvZihzdHJ1Y3QgZXRodG9v bF90Y3BpcDZfc3BlYyk7CisJCQlicmVhazsKKwkJY2FzZSBUQ1BfVjRfRkxPVzoKKwkJY2FzZSBV RFBfVjRfRkxPVzoKKwkJCWZzX3NpemUgPTNEIHNpemVvZihzdHJ1Y3QgZXRodG9vbF90Y3BpcDRf c3BlYyk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYg KG1lbWNtcCgmY3VyLT5oX3UsICZmcy0+aF91LCBmc19zaXplKSB8fAorCQkgICAgbWVtY21wKCZj dXItPm1fdSwgJmZzLT5tX3UsIGZzX3NpemUpKQorCQkJY29udGludWU7CisKKwkJaWYgKGN1ci0+ Zmxvd190eXBlICYgRkxPV19FWFQpIHsKKwkJCWlmIChjdXItPmhfZXh0LnZsYW5fZXR5cGUgIT0z RCBmcy0+aF9leHQudmxhbl9ldHlwZSB8fAorCQkJICAgIGN1ci0+bV9leHQudmxhbl9ldHlwZSAh PTNEIGZzLT5tX2V4dC52bGFuX2V0eXBlIHx8CisJCQkgICAgY3VyLT5oX2V4dC52bGFuX3RjaSAh PTNEIGZzLT5oX2V4dC52bGFuX3RjaSB8fAorCQkJICAgIGN1ci0+bV9leHQudmxhbl90Y2kgIT0z RCBmcy0+bV9leHQudmxhbl90Y2kgfHwKKwkJCSAgICBjdXItPmhfZXh0LmRhdGFbMF0gIT0zRCBm cy0+aF9leHQuZGF0YVswXSkKKwkJCQljb250aW51ZTsKKwkJfQorCQlpZiAoY3VyLT5mbG93X3R5 cGUgJiBGTE9XX01BQ19FWFQpIHsKKwkJCWlmIChtZW1jbXAoJmN1ci0+aF9leHQuaF9kZXN0LAor CQkJCSAgICZmcy0+aF9leHQuaF9kZXN0LCBFVEhfQUxFTikgfHwKKwkJCSAgICBtZW1jbXAoJmN1 ci0+bV9leHQuaF9kZXN0LAorCQkJCSAgICZmcy0+bV9leHQuaF9kZXN0LCBFVEhfQUxFTikpCisJ CQkJY29udGludWU7CisJCX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7 Cit9CisKKy8qIElmIG5vIG5ldHdvcmsgZmlsdGVyIGZvdW5kLCByZXR1cm4gb3BlbiBmaWx0ZXIu CisgKiBJZiBubyBtb3JlIG9wZW4gZmlsdGVycyByZXR1cm4gTlVMTAorICovCitzdHJ1Y3QgYmNt YXNwX25ldF9maWx0ZXIgKmJjbWFzcF9uZXRmaWx0X2dldF9pbml0KHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZiwKKwkJCQkJCSAgaW50IGxvYywgYm9vbCB3YWtlX2ZpbHRlciwKKwkJCQkJCSAgYm9v bCBpbml0KQoreworCXN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlciAqbmZpbHRlciA9M0QgTlVMTDsK KwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwlpbnQgaSwgb3Bl bl9pbmRleCA9M0QgLTE7CisKKwkvKiBDaGVjayB3aGV0aGVyIHdlIGV4Y2VlZCB0aGUgZmlsdGVy IHRhYmxlIGNhcGFjaXR5ICovCisJaWYgKGxvYyAhPTNEIFJYX0NMU19MT0NfQU5ZICYmIGxvYyA+ PTNEIE5VTV9ORVRfRklMVEVSUykKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwkvKiBJ ZiB0aGUgZmlsdGVyIGxvY2F0aW9uIGlzIGJ1c3kgKGFscmVhZHkgY2xhaW1lZCkgYW5kIHdlIGFy ZSBpbml0aWFsaXppPQpuZworCSAqIHRoZSBmaWx0ZXIgKGluc2VydGlvbiksIHJldHVybiBhIGJ1 c3kgZXJyb3IgY29kZS4KKwkgKi8KKwlpZiAobG9jICE9M0QgUlhfQ0xTX0xPQ19BTlkgJiYgaW5p dCAmJiBwcml2LT5uZXRfZmlsdGVyc1tsb2NdLmNsYWltZWQpCisJCXJldHVybiBFUlJfUFRSKC1F QlVTWSk7CisKKwkvKiBXZSBuZWVkIHR3byBmaWx0ZXJzIGZvciB3YWtlLXVwLCBzbyB3ZSBjYW5u b3QgdXNlIGFuIG9kZCBmaWx0ZXIgKi8KKwlpZiAod2FrZV9maWx0ZXIgJiYgbG9jICE9M0QgUlhf Q0xTX0xPQ19BTlkgJiYgKGxvYyAlIDIpKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwor CS8qIEluaXRpYWxpemUgdGhlIGxvb3AgaW5kZXggYmFzZWQgb24gdGhlIGRlc2lyZWQgbG9jYXRp b24gb3IgZnJvbSAwICovCisJaSA9M0QgbG9jID0zRD0zRCBSWF9DTFNfTE9DX0FOWSA/IDAgOiBs b2M7CisKKwlmb3IgKCA7IGkgPCBOVU1fTkVUX0ZJTFRFUlM7IGkrKykgeworCQkvKiBGb3VuZCBt YXRjaGluZyBuZXR3b3JrIGZpbHRlciAqLworCQlpZiAoIWluaXQgJiYKKwkJICAgIHByaXYtPm5l dF9maWx0ZXJzW2ldLmNsYWltZWQgJiYKKwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2ldLmh3X2lu ZGV4ID0zRD0zRCBpICYmCisJCSAgICBwcml2LT5uZXRfZmlsdGVyc1tpXS5wb3J0ID0zRD0zRCBp bnRmLT5wb3J0KQorCQkJcmV0dXJuICZwcml2LT5uZXRfZmlsdGVyc1tpXTsKKworCQkvKiBJZiB3 ZSBkb24ndCBuZWVkIGEgbmV3IGZpbHRlciBvciBuZXcgZmlsdGVyIGFscmVhZHkgZm91bmQgKi8K KwkJaWYgKCFpbml0IHx8IG9wZW5faW5kZXggPj0zRCAwKQorCQkJY29udGludWU7CisKKwkJLyog V2FrZSBmaWx0ZXIgY29uc2xpZGF0ZXMgdHdvIGZpbHRlcnMgdG8gY292ZXIgbW9yZSBieXRlcwor CQkgKiBXYWtlIGZpbHRlciBpcyBvcGVuIGlmLi4uCisJCSAqIDEuIEl0IGlzIGFuIGV2ZW4gZmls dGVyCisJCSAqIDIuIFRoZSBjdXJyZW50IGFuZCBuZXh0IGZpbHRlciBpcyBub3QgY2xhaW1lZAor CQkgKi8KKwkJaWYgKHdha2VfZmlsdGVyICYmICEoaSAlIDIpICYmICFwcml2LT5uZXRfZmlsdGVy c1tpXS5jbGFpbWVkICYmCisJCSAgICAhcHJpdi0+bmV0X2ZpbHRlcnNbaSArIDFdLmNsYWltZWQp CisJCQlvcGVuX2luZGV4ID0zRCBpOworCQllbHNlIGlmICghcHJpdi0+bmV0X2ZpbHRlcnNbaV0u Y2xhaW1lZCkKKwkJCW9wZW5faW5kZXggPTNEIGk7CisJfQorCisJaWYgKG9wZW5faW5kZXggPj0z RCAwKSB7CisJCW5maWx0ZXIgPTNEICZwcml2LT5uZXRfZmlsdGVyc1tvcGVuX2luZGV4XTsKKwkJ bmZpbHRlci0+Y2xhaW1lZCA9M0QgdHJ1ZTsKKwkJbmZpbHRlci0+cG9ydCA9M0QgaW50Zi0+cG9y dDsKKwkJbmZpbHRlci0+aHdfaW5kZXggPTNEIG9wZW5faW5kZXg7CisJfQorCisJaWYgKHdha2Vf ZmlsdGVyICYmIG9wZW5faW5kZXggPj0zRCAwKSB7CisJCS8qIENsYWltIG5leHQgZmlsdGVyICov CisJCXByaXYtPm5ldF9maWx0ZXJzW29wZW5faW5kZXggKyAxXS5jbGFpbWVkID0zRCB0cnVlOwor CQlwcml2LT5uZXRfZmlsdGVyc1tvcGVuX2luZGV4ICsgMV0ud2FrZV9maWx0ZXIgPTNEIHRydWU7 CisJCW5maWx0ZXItPndha2VfZmlsdGVyID0zRCB0cnVlOworCX0KKworCXJldHVybiBuZmlsdGVy ID8gbmZpbHRlciA6IEVSUl9QVFIoLUVJTlZBTCk7Cit9CisKK3ZvaWQgYmNtYXNwX25ldGZpbHRf cmVsZWFzZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsCisJCQkgICAgc3RydWN0IGJjbWFzcF9u ZXRfZmlsdGVyICpuZmlsdCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYt PnBhcmVudDsKKworCWlmIChuZmlsdC0+d2FrZV9maWx0ZXIpIHsKKwkJbWVtc2V0KCZwcml2LT5u ZXRfZmlsdGVyc1tuZmlsdC0+aHdfaW5kZXggKyAxXSwgMCwKKwkJICAgICAgIHNpemVvZihzdHJ1 Y3QgYmNtYXNwX25ldF9maWx0ZXIpKTsKKwl9CisKKwltZW1zZXQobmZpbHQsIDAsIHNpemVvZihz dHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIpKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2FkZHJf dG9fdWludCh1bnNpZ25lZCBjaGFyICphZGRyLCB1MzIgKmhpZ2gsIHUzMiAqbG93KQoreworCSpo aWdoID0zRCAodTMyKShhZGRyWzBdIDw8IDggfCBhZGRyWzFdKTsKKwkqbG93ID0zRCAodTMyKShh ZGRyWzJdIDw8IDI0IHwgYWRkclszXSA8PCAxNiB8IGFkZHJbNF0gPDwgOCB8CisJCSAgICAgYWRk cls1XSk7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9zZXRfbWRhX2ZpbHRlcihzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYsCisJCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLAorCQkJCSAg dW5zaWduZWQgY2hhciAqbWFzaywKKwkJCQkgIHVuc2lnbmVkIGludCBpKQoreworCXN0cnVjdCBi Y21hc3BfcHJpdiAqcHJpdiA9M0QgaW50Zi0+cGFyZW50OworCXUzMiBhZGRyX2gsIGFkZHJfbCwg bWFza19oLCBtYXNrX2w7CisKKwkvKiBTZXQgbG9jYWwgY29weSAqLworCWV0aGVyX2FkZHJfY29w eShwcml2LT5tZGFfZmlsdGVyc1tpXS5tYXNrLCBtYXNrKTsKKwlldGhlcl9hZGRyX2NvcHkocHJp di0+bWRhX2ZpbHRlcnNbaV0uYWRkciwgYWRkcik7CisKKwkvKiBXcml0ZSB0byBIVyAqLworCWJj bWFzcF9hZGRyX3RvX3VpbnQocHJpdi0+bWRhX2ZpbHRlcnNbaV0ubWFzaywgJm1hc2tfaCwgJm1h c2tfbCk7CisJYmNtYXNwX2FkZHJfdG9fdWludChwcml2LT5tZGFfZmlsdGVyc1tpXS5hZGRyLCAm YWRkcl9oLCAmYWRkcl9sKTsKKwlyeF9maWx0ZXJfY29yZV93bChwcml2LCBhZGRyX2gsIEFTUF9S WF9GSUxURVJfTURBX1BBVF9IKGkpKTsKKwlyeF9maWx0ZXJfY29yZV93bChwcml2LCBhZGRyX2ws IEFTUF9SWF9GSUxURVJfTURBX1BBVF9MKGkpKTsKKwlyeF9maWx0ZXJfY29yZV93bChwcml2LCBt YXNrX2gsIEFTUF9SWF9GSUxURVJfTURBX01TS19IKGkpKTsKKwlyeF9maWx0ZXJfY29yZV93bChw cml2LCBtYXNrX2wsIEFTUF9SWF9GSUxURVJfTURBX01TS19MKGkpKTsKK30KKworc3RhdGljIHZv aWQgYmNtYXNwX2VuX21kYV9maWx0ZXIoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVu LAorCQkJCSB1bnNpZ25lZCBpbnQgaSkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNE IGludGYtPnBhcmVudDsKKworCWlmIChwcml2LT5tZGFfZmlsdGVyc1tpXS5lbiA9M0Q9M0QgZW4p CisJCXJldHVybjsKKworCXByaXYtPm1kYV9maWx0ZXJzW2ldLmVuID0zRCBlbjsKKwlwcml2LT5t ZGFfZmlsdGVyc1tpXS5wb3J0ID0zRCBpbnRmLT5wb3J0OworCisJcnhfZmlsdGVyX2NvcmVfd2wo cHJpdiwgKChpbnRmLT5jaGFubmVsICsgOCkgfAorCQkJICAoZW4gPDwgQVNQX1JYX0ZJTFRFUl9N REFfQ0ZHX0VOX1NISUZUKSB8CisJCQkgIEFTUF9SWF9GSUxURVJfTURBX0NGR19VTUNfU0VMKGlu dGYtPnBvcnQpKSwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9NREFfQ0ZHKGkpKTsKK30KKworLyogVGhl cmUgYXJlIDMyIE1EQSBmaWx0ZXJzIHNoYXJlZCBiZXR3ZWVuIGFsbCBwb3J0cywgd2UgcmVzZXJ2 ZSA0IGZpbHRlcnM9CiBwZXIKKyAqIHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcuCisgKiAtIFByb21p c2M6IEZpbHRlciB0byBhbGxvdyBhbGwgcGFja2V0cyB3aGVuIHByb21pc2MgaXMgZW5hYmxlZAor ICogLSBBbGwgTXVsdGljYXN0CisgKiAtIEJyb2FkY2FzdAorICogLSBPd24gYWRkcmVzcworICoK KyAqIFRoZSByZXNlcnZlZCBmaWx0ZXJzIGFyZSBpZGVudGlmaWVkIGFzIHNvLgorICogLSBQcm9t aXNjOiAoaW5kZXggKiA0KSArIDAKKyAqIC0gQWxsIE11bHRpY2FzdDogKGluZGV4ICogNCkgKyAx CisgKiAtIEJyb2FkY2FzdDogKGluZGV4ICogNCkgKyAyCisgKiAtIE93biBhZGRyZXNzOiAoaW5k ZXggKiA0KSArIDMKKyAqLworZW51bSBhc3BfcnhfZmlsdGVyX2lkIHsKKwlBU1BfUlhfRklMVEVS X01EQV9QUk9NSVNDID0zRCAwLAorCUFTUF9SWF9GSUxURVJfTURBX0FMTE1VTFRJLAorCUFTUF9S WF9GSUxURVJfTURBX0JST0FEQ0FTVCwKKwlBU1BfUlhfRklMVEVSX01EQV9PV05fQUREUiwKKwlB U1BfUlhfRklMVEVSX01EQV9SRVNfQ09VTlQsCit9OworCisjZGVmaW5lIEFTUF9SWF9GSUxUX01E QV9SRVNfQ09VTlQoaW50ZikJKChpbnRmKS0+cGFyZW50LT5pbnRmX2NvdW50IFwKKwkJCQkJICog QVNQX1JYX0ZJTFRFUl9NREFfUkVTX0NPVU5UKQorCisjZGVmaW5lIEFTUF9SWF9GSUxUX01EQShp bnRmLCBuYW1lKQkoKChpbnRmKS0+aW5kZXggKiBcCisJCQkJCSAgQVNQX1JYX0ZJTFRFUl9NREFf UkVTX0NPVU5UKSBcCisJCQkJCSArIEFTUF9SWF9GSUxURVJfTURBXyMjbmFtZSkKKwordm9pZCBi Y21hc3Bfc2V0X3Byb21pc2Moc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKQorewor CXVuc2lnbmVkIGludCBpID0zRCBBU1BfUlhfRklMVF9NREEoaW50ZiwgUFJPTUlTQyk7CisJdW5z aWduZWQgY2hhciBwcm9taXNjW0VUSF9BTEVOXTsKKworCWV0aF96ZXJvX2FkZHIocHJvbWlzYyk7 CisJLyogU2V0IG1hc2sgdG8gMDA6MDA6MDA6MDA6MDA6MDAgdG8gbWF0Y2ggYWxsIHBhY2tldHMg Ki8KKwliY21hc3Bfc2V0X21kYV9maWx0ZXIoaW50ZiwgcHJvbWlzYywgcHJvbWlzYywgaSk7CisJ YmNtYXNwX2VuX21kYV9maWx0ZXIoaW50ZiwgZW4sIGkpOworfQorCit2b2lkIGJjbWFzcF9zZXRf YWxsbXVsdGkoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKQoreworCXVuc2lnbmVk IGNoYXIgYWxsbXVsdGlbXSA9M0QgezB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9 OworCXVuc2lnbmVkIGludCBpID0zRCBBU1BfUlhfRklMVF9NREEoaW50ZiwgQUxMTVVMVEkpOwor CisJLyogU2V0IG1hc2sgdG8gMDE6MDA6MDA6MDA6MDA6MDAgdG8gbWF0Y2ggYWxsIG11bHRpY2Fz dCAqLworCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBhbGxtdWx0aSwgYWxsbXVsdGksIGkp OworCWJjbWFzcF9lbl9tZGFfZmlsdGVyKGludGYsIGVuLCBpKTsKK30KKwordm9pZCBiY21hc3Bf c2V0X2Jyb2FkKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbikKK3sKKwl1bnNpZ25l ZCBpbnQgaSA9M0QgQVNQX1JYX0ZJTFRfTURBKGludGYsIEJST0FEQ0FTVCk7CisJdW5zaWduZWQg Y2hhciBhZGRyW0VUSF9BTEVOXTsKKworCWV0aF9icm9hZGNhc3RfYWRkcihhZGRyKTsKKwliY21h c3Bfc2V0X21kYV9maWx0ZXIoaW50ZiwgYWRkciwgYWRkciwgaSk7CisJYmNtYXNwX2VuX21kYV9m aWx0ZXIoaW50ZiwgZW4sIGkpOworfQorCit2b2lkIGJjbWFzcF9zZXRfb2FkZHIoc3RydWN0IGJj bWFzcF9pbnRmICppbnRmLCBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLAorCQkgICAgICBib29s IGVuKQoreworCXVuc2lnbmVkIGNoYXIgbWFza1tdID0zRCB7MHhmZiwgMHhmZiwgMHhmZiwgMHhm ZiwgMHhmZiwgMHhmZn07CisJdW5zaWduZWQgaW50IGkgPTNEIEFTUF9SWF9GSUxUX01EQShpbnRm LCBPV05fQUREUik7CisKKwliY21hc3Bfc2V0X21kYV9maWx0ZXIoaW50ZiwgYWRkciwgbWFzaywg aSk7CisJYmNtYXNwX2VuX21kYV9maWx0ZXIoaW50ZiwgZW4sIGkpOworfQorCit2b2lkIGJjbWFz cF9kaXNhYmxlX2FsbF9maWx0ZXJzKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1 Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwl1bnNpZ25lZCBpbnQgaTsK KworCS8qIERpc2FibGUgYWxsIGZpbHRlcnMgaGVsZCBieSB0aGlzIHBvcnQgKi8KKwlmb3IgKGkg PTNEIEFTUF9SWF9GSUxUX01EQV9SRVNfQ09VTlQoaW50Zik7IGkgPCBOVU1fTURBX0ZJTFRFUlM7 IGkrKykgeworCQlpZiAocHJpdi0+bWRhX2ZpbHRlcnNbaV0uZW4gJiYKKwkJICAgIHByaXYtPm1k YV9maWx0ZXJzW2ldLnBvcnQgPTNEPTNEIGludGYtPnBvcnQpCisJCQliY21hc3BfZW5fbWRhX2Zp bHRlcihpbnRmLCAwLCBpKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgYmNtYXNwX2NvbWJpbmVfc2V0 X2ZpbHRlcihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsCisJCQkJICAgICB1bnNpZ25lZCBjaGFy ICphZGRyLCB1bnNpZ25lZCBjaGFyICptYXNrLAorCQkJCSAgICAgaW50IGkpCit7CisJc3RydWN0 IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisJdTY0IGFkZHIxLCBhZGRyMiwg bWFzazEsIG1hc2syLCBtYXNrMzsKKworCS8qIFN3aXRjaCB0byB1NjQgdG8gaGVscCB3aXRoIHRo ZSBjYWxjdWxhdGlvbnMgKi8KKwlhZGRyMSA9M0QgZXRoZXJfYWRkcl90b191NjQocHJpdi0+bWRh X2ZpbHRlcnNbaV0uYWRkcik7CisJbWFzazEgPTNEIGV0aGVyX2FkZHJfdG9fdTY0KHByaXYtPm1k YV9maWx0ZXJzW2ldLm1hc2spOworCWFkZHIyID0zRCBldGhlcl9hZGRyX3RvX3U2NChhZGRyKTsK KwltYXNrMiA9M0QgZXRoZXJfYWRkcl90b191NjQobWFzayk7CisKKwkvKiBDaGVjayBpZiBvbmUg ZmlsdGVyIHJlc2lkZXMgd2l0aGluIHRoZSBvdGhlciAqLworCW1hc2szID0zRCBtYXNrMSAmIG1h c2syOworCWlmIChtYXNrMyA9M0Q9M0QgbWFzazEgJiYgKChhZGRyMSAmIG1hc2sxKSA9M0Q9M0Qg KGFkZHIyICYgbWFzazEpKSkgeworCQkvKiBGaWx0ZXIgMiByZXNpZGVzIHdpdGhpbiBmaWx0ZXIg MSwgc28gZXZlcnl0aGluZyBpcyBnb29kICovCisJCXJldHVybiAwOworCX0gZWxzZSBpZiAobWFz azMgPTNEPTNEIG1hc2syICYmICgoYWRkcjEgJiBtYXNrMikgPTNEPTNEIChhZGRyMiAmIG1hc2sy KSk9CikgeworCQkvKiBGaWx0ZXIgMSByZXNpZGVzIHdpdGhpbiBmaWx0ZXIgMiwgc28gc3dhcCBm aWx0ZXJzICovCisJCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBhZGRyLCBtYXNrLCBpKTsK KwkJcmV0dXJuIDA7CisJfQorCisJLyogVW5hYmxlIHRvIGNvbWJpbmUgKi8KKwlyZXR1cm4gLUVJ TlZBTDsKK30KKworaW50IGJjbWFzcF9zZXRfZW5fbWRhX2ZpbHRlcihzdHJ1Y3QgYmNtYXNwX2lu dGYgKmludGYsIHVuc2lnbmVkIGNoYXIgKmFkZHIsCisJCQkgICAgIHVuc2lnbmVkIGNoYXIgKm1h c2spCit7CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisJaW50 IGksIHJldDsKKworCWZvciAoaSA9M0QgQVNQX1JYX0ZJTFRfTURBX1JFU19DT1VOVChpbnRmKTsg aSA8IE5VTV9NREFfRklMVEVSUzsgaSsrKSB7CisJCS8qIElmIGZpbHRlciBub3QgZW5hYmxlZCBv ciBiZWxvbmdzIHRvIGFub3RoZXIgcG9ydCBza2lwICovCisJCWlmICghcHJpdi0+bWRhX2ZpbHRl cnNbaV0uZW4gfHwKKwkJICAgIHByaXYtPm1kYV9maWx0ZXJzW2ldLnBvcnQgIT0zRCBpbnRmLT5w b3J0KQorCQkJY29udGludWU7CisKKwkJLyogQXR0ZW1wdCB0byBjb21iaW5lIGZpbHRlcnMgKi8K KwkJcmV0ID0zRCBiY21hc3BfY29tYmluZV9zZXRfZmlsdGVyKGludGYsIGFkZHIsIG1hc2ssIGkp OworCQlpZiAoIXJldCkgeworCQkJaW50Zi0+bWliLmZpbHRlcnNfY29tYmluZV9jbnQrKzsKKwkJ CXJldHVybiAwOworCQl9CisJfQorCisJLyogQ3JlYXRlIG5ldyBmaWx0ZXIgaWYgcG9zc2libGUg Ki8KKwlmb3IgKGkgPTNEIEFTUF9SWF9GSUxUX01EQV9SRVNfQ09VTlQoaW50Zik7IGkgPCBOVU1f TURBX0ZJTFRFUlM7IGkrKykgeworCQlpZiAocHJpdi0+bWRhX2ZpbHRlcnNbaV0uZW4pCisJCQlj b250aW51ZTsKKworCQliY21hc3Bfc2V0X21kYV9maWx0ZXIoaW50ZiwgYWRkciwgbWFzaywgaSk7 CisJCWJjbWFzcF9lbl9tZGFfZmlsdGVyKGludGYsIDEsIGkpOworCQlyZXR1cm4gMDsKKwl9CisK KwkvKiBObyByb29tIGZvciBuZXcgZmlsdGVyICovCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0 YXRpYyB2b2lkIGJjbWFzcF9jb3JlX2luaXRfZmlsdGVycyhzdHJ1Y3QgYmNtYXNwX3ByaXYgKnBy aXYpCit7CisJaW50IGk7CisKKwkvKiBEaXNhYmxlIGFsbCBmaWx0ZXJzIGFuZCByZXNldCBzb2Z0 d2FyZSB2aWV3IHNpbmNlIHRoZSBIVworCSAqIGNhbiBsb3NlIGNvbnRleHQgd2hpbGUgaW4gZGVl cCBzbGVlcCBzdXNwZW5kIHN0YXRlcworCSAqLworCWZvciAoaSA9M0QgMDsgaSA8IE5VTV9NREFf RklMVEVSUzsgaSsrKSB7CisJCXJ4X2ZpbHRlcl9jb3JlX3dsKHByaXYsIDB4MCwgQVNQX1JYX0ZJ TFRFUl9NREFfQ0ZHKGkpKTsKKwkJcHJpdi0+bWRhX2ZpbHRlcnNbaV0uZW4gPTNEIDA7CisJfQor CisJZm9yIChpID0zRCAwOyBpIDwgTlVNX05FVF9GSUxURVJTOyBpKyspCisJCXJ4X2ZpbHRlcl9j b3JlX3dsKHByaXYsIDB4MCwgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHKGkpKTsKKworCS8qIFRvcCBs ZXZlbCBmaWx0ZXIgZW5hYmxlIGJpdCBzaG91bGQgYmUgZW5hYmxlZCBhdCBhbGwgdGltZXMsIHNl dAorCSAqIEdFTl9XQUtFX0NMRUFSIHRvIGNsZWFyIHRoZSBuZXR3b3JrIGZpbHRlciB3YWtlLXVw IHdoaWNoIHdvdWxkCisJICogb3RoZXJ3aXNlIGJlIHN0aWNreQorCSAqLworCXJ4X2ZpbHRlcl9j b3JlX3dsKHByaXYsIChBU1BfUlhfRklMVEVSX09QVVRfRU4gfAorCQkJICBBU1BfUlhfRklMVEVS X01EQV9FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfR0VOX1dLX0NMUiB8CisJCQkgIEFTUF9SWF9G SUxURVJfTlRfRkxUX0VOKSwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9CTEtfQ1RSTCk7Cit9CisKKy8q IEFTUCBjb3JlIGluaXRpYWxpemF0aW9uICovCitzdGF0aWMgdm9pZCBiY21hc3BfY29yZV9pbml0 KHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdikKK3sKKwl0eF9hbmFseXRpY3NfY29yZV93bChwcml2 LCAweDAsIEFTUF9UWF9BTkFMWVRJQ1NfQ1RSTCk7CisJcnhfYW5hbHl0aWNzX2NvcmVfd2wocHJp diwgMHg0LCBBU1BfUlhfQU5BTFlUSUNTX0NUUkwpOworCisJcnhfZWRwa3RfY29yZV93bChwcml2 LCAoQVNQX0VEUEtUX0hEUl9TWl8xMjggPDwgQVNQX0VEUEtUX0hEUl9TWl9TSElGVCksCisJCQkg QVNQX0VEUEtUX0hEUl9DRkcpOworCXJ4X2VkcGt0X2NvcmVfd2wocHJpdiwKKwkJCSAoQVNQX0VE UEtUX0VORElfQlRfU1dQX1dEIDw8IEFTUF9FRFBLVF9FTkRJX0RFU0NfU0hJRlQpLAorCQkJIEFT UF9FRFBLVF9FTkRJKTsKKworCXJ4X2VkcGt0X2NvcmVfd2wocHJpdiwgMHgxYiwgQVNQX0VEUEtU X0JVUlNUX0JVRl9QU0NBTF9UT1VUKTsKKwlyeF9lZHBrdF9jb3JlX3dsKHByaXYsIDB4M2U4LCBB U1BfRURQS1RfQlVSU1RfQlVGX1dSSVRFX1RPVVQpOworCXJ4X2VkcGt0X2NvcmVfd2wocHJpdiwg MHgzZTgsIEFTUF9FRFBLVF9CVVJTVF9CVUZfUkVBRF9UT1VUKTsKKworCXJ4X2VkcGt0X2NvcmVf d2wocHJpdiwgQVNQX0VEUEtUX0VOQUJMRV9FTiwgQVNQX0VEUEtUX0VOQUJMRSk7CisKKwkvKiBE aXNhYmxlIGFuZCBjbGVhciBib3RoIFVuaU1BQydzIHdha2UtdXAgaW50ZXJydXB0cyB0byBhdm9p ZAorCSAqIHN0aWNreSBpbnRlcnJ1cHRzLgorCSAqLworCV9pbnRyMl9tYXNrX3NldChwcml2LCBB U1BfSU5UUjJfVU1DMF9XQUtFIHwgQVNQX0lOVFIyX1VNQzFfV0FLRSk7CisJaW50cjJfY29yZV93 bChwcml2LCBBU1BfSU5UUjJfVU1DMF9XQUtFIHwgQVNQX0lOVFIyX1VNQzFfV0FLRSwKKwkJICAg ICAgQVNQX0lOVFIyX0NMRUFSKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2NvcmVfY2xvY2tf c2VsZWN0KHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwgYm9vbCBzbG93KQoreworCXUzMiByZWc7 CisKKwlyZWcgPTNEIGN0cmxfY29yZV9ybChwcml2LCBBU1BfQ1RSTF9DT1JFX0NMT0NLX1NFTEVD VCk7CisJaWYgKHNsb3cpCisJCXJlZyAmPTNEIH5BU1BfQ1RSTF9DT1JFX0NMT0NLX1NFTEVDVF9N QUlOOworCWVsc2UKKwkJcmVnIHw9M0QgQVNQX0NUUkxfQ09SRV9DTE9DS19TRUxFQ1RfTUFJTjsK KwljdHJsX2NvcmVfd2wocHJpdiwgcmVnLCBBU1BfQ1RSTF9DT1JFX0NMT0NLX1NFTEVDVCk7Cit9 CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9jb3JlX2Nsb2NrX3NldF9sbChzdHJ1Y3QgYmNtYXNwX3By aXYgKnByaXYsIHUzMiBjbHIsIHUzPQoyIHNldCkKK3sKKwl1MzIgcmVnOworCisJcmVnID0zRCBj dHJsX2NvcmVfcmwocHJpdiwgQVNQX0NUUkxfQ0xPQ0tfQ1RSTCk7CisJcmVnICY9M0QgfmNscjsK KwlyZWcgfD0zRCBzZXQ7CisJY3RybF9jb3JlX3dsKHByaXYsIHJlZywgQVNQX0NUUkxfQ0xPQ0tf Q1RSTCk7CisKKwlyZWcgPTNEIGN0cmxfY29yZV9ybChwcml2LCBBU1BfQ1RSTF9TQ1JBVENIXzAp OworCXJlZyAmPTNEIH5jbHI7CisJcmVnIHw9M0Qgc2V0OworCWN0cmxfY29yZV93bChwcml2LCBy ZWcsIEFTUF9DVFJMX1NDUkFUQ0hfMCk7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9jb3JlX2Ns b2NrX3NldChzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsIHUzMiBjbHIsIHUzMiBzPQpldCkKK3sK Kwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmNsa19s b2NrLCBmbGFncyk7CisJYmNtYXNwX2NvcmVfY2xvY2tfc2V0X2xsKHByaXYsIGNsciwgc2V0KTsK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5jbGtfbG9jaywgZmxhZ3MpOworfQorCit2 b2lkIGJjbWFzcF9jb3JlX2Nsb2NrX3NldF9pbnRmKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50Ziwg Ym9vbCBlbikKK3sKKwl1MzIgaW50Zl9tYXNrID0zRCBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9S R01JSV9ESVMoaW50Zi0+cG9ydCk7CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRm LT5wYXJlbnQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgcmVnOworCisJLyogV2hlbiBl bmFibGluZyBhbiBpbnRlcmZhY2UsIGlmIHRoZSBSWCBvciBUWCBjbG9ja3Mgd2VyZSBub3QgZW5h YmxlZCwKKwkgKiBlbmFibGUgdGhlbS4gQ29udmVyc2VseSwgd2hpbGUgZGlzYWJsaW5nIGFuIGlu dGVyZmFjZSwgaWYgdGhpcyBpcworCSAqIHRoZSBsYXN0IG9uZSBlbmFibGVkLCB3ZSBjYW4gdHVy biBvZmYgdGhlIHNoYXJlZCBSWCBhbmQgVFggY2xvY2tzIGFzCisJICogd2VsbC4gV2UgY29udHJv bCBlbmFibGUgYml0cyB3aGljaCBpcyB3aHkgd2UgdGVzdCBmb3IgZXF1YWxpdHkgb24KKwkgKiB0 aGUgUkdNSUkgY2xvY2sgYml0IG1hc2suCisJICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYt PmNsa19sb2NrLCBmbGFncyk7CisJaWYgKGVuKSB7CisJCWludGZfbWFzayB8PTNEIEFTUF9DVFJM X0NMT0NLX0NUUkxfQVNQX1RYX0RJU0FCTEUgfAorCQkJICAgICBBU1BfQ1RSTF9DTE9DS19DVFJM X0FTUF9SWF9ESVNBQkxFOworCQliY21hc3BfY29yZV9jbG9ja19zZXRfbGwocHJpdiwgaW50Zl9t YXNrLCAwKTsKKwl9IGVsc2UgeworCQlyZWcgPTNEIGN0cmxfY29yZV9ybChwcml2LCBBU1BfQ1RS TF9TQ1JBVENIXzApIHwgaW50Zl9tYXNrOworCQlpZiAoKHJlZyAmIEFTUF9DVFJMX0NMT0NLX0NU UkxfQVNQX1JHTUlJX01BU0spID0zRD0zRAorCQkgICAgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1Bf UkdNSUlfTUFTSykKKwkJCWludGZfbWFzayB8PTNEIEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQX1RY X0RJU0FCTEUgfAorCQkJCSAgICAgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfUlhfRElTQUJMRTsK KwkJYmNtYXNwX2NvcmVfY2xvY2tfc2V0X2xsKHByaXYsIDAsIGludGZfbWFzayk7CisJfQorCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmNsa19sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRp YyBpbnQgYmNtYXNwX2lzX3BvcnRfdmFsaWQoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LCBpbnQg cG9ydCkKK3sKKwkvKiBRdWljayBzYW5pdHkgY2hlY2sKKwkgKiAgIFBvcnRzIDAvMSByZXNlcnZl ZCBmb3IgdW5pbWFjCisJICogICBNYXggc3VwcG9ydGVkIHBvcnRzIGlzIDIKKwkgKi8KKwlyZXR1 cm4gcG9ydCA9M0Q9M0QgMCB8fCBwb3J0ID0zRD0zRCAxOworfQorCitzdGF0aWMgaXJxcmV0dXJu X3QgYmNtYXNwX2lzcl93b2woaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgYmNtYXNw X3ByaXYgKnByaXYgPTNEIGRhdGE7CisJdTMyIHN0YXR1czsKKworCS8qIE5vIEwzIElSUSwgc28g d2UgZ29vZCAqLworCWlmIChwcml2LT53b2xfaXJxIDw9M0QgMCkKKwkJZ290byBpcnFfaGFuZGxl ZDsKKworCXN0YXR1cyA9M0Qgd2FrZXVwX2ludHIyX2NvcmVfcmwocHJpdiwgQVNQX1dBS0VVUF9J TlRSMl9TVEFUVVMpICYKKwkJfndha2V1cF9pbnRyMl9jb3JlX3JsKHByaXYsIEFTUF9XQUtFVVBf SU5UUjJfTUFTS19TVEFUVVMpOworCXdha2V1cF9pbnRyMl9jb3JlX3dsKHByaXYsIHN0YXR1cywg QVNQX1dBS0VVUF9JTlRSMl9DTEVBUik7CisKK2lycV9oYW5kbGVkOgorCXBtX3dha2V1cF9ldmVu dCgmcHJpdi0+cGRldi0+ZGV2LCAwKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRp YyBpbnQgYmNtYXNwX2dldF9hbmRfcmVxdWVzdF9pcnEoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2 LCBpbnQgaSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0zRCBwcml2LT5wZGV2 OworCWludCBpcnEsIHJldDsKKworCWlycSA9M0QgcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChw ZGV2LCBpKTsKKwlpZiAoaXJxIDwgMCkKKwkJcmV0dXJuIGlycTsKKworCXJldCA9M0QgZGV2bV9y ZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBpcnEsIGJjbWFzcF9pc3Jfd29sLCAwLAorCQkJICAgICAg IHBkZXYtPm5hbWUsIHByaXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4g aXJxOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfaW5pdF93b2xfc2hhcmVkKHN0cnVjdCBiY21h c3BfcHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0zRCBwcml2 LT5wZGV2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9M0QgJnBkZXYtPmRldjsKKwlpbnQgaXJxOwor CisJaXJxID0zRCBiY21hc3BfZ2V0X2FuZF9yZXF1ZXN0X2lycShwcml2LCAxKTsKKwlpZiAoaXJx IDwgMCkgeworCQlkZXZfd2FybihkZXYsICJGYWlsZWQgdG8gaW5pdCBXb0wgaXJxOiAlZFxuIiwg aXJxKTsKKwkJcmV0dXJuOworCX0KKworCXByaXYtPndvbF9pcnEgPTNEIGlycTsKKwlwcml2LT53 b2xfaXJxX2VuYWJsZWRfbWFzayA9M0QgMDsKKwlkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKCZw ZGV2LT5kZXYsIDEpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfZW5hYmxlX3dvbF9zaGFyZWQo c3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKQoreworCXN0cnVjdCBiY21hc3BfcHJp diAqcHJpdiA9M0QgaW50Zi0+cGFyZW50OworCXN0cnVjdCBkZXZpY2UgKmRldiA9M0QgJnByaXYt PnBkZXYtPmRldjsKKworCWlmIChlbikgeworCQlpZiAocHJpdi0+d29sX2lycV9lbmFibGVkX21h c2spIHsKKwkJCXNldF9iaXQoaW50Zi0+cG9ydCwgJnByaXYtPndvbF9pcnFfZW5hYmxlZF9tYXNr KTsKKwkJCXJldHVybjsKKwkJfQorCisJCS8qIEZpcnN0IGVuYWJsZSAqLworCQlzZXRfYml0KGlu dGYtPnBvcnQsICZwcml2LT53b2xfaXJxX2VuYWJsZWRfbWFzayk7CisJCWVuYWJsZV9pcnFfd2Fr ZShwcml2LT53b2xfaXJxKTsKKwkJZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKGRldiwgMSk7CisJ fSBlbHNlIHsKKwkJaWYgKCFwcml2LT53b2xfaXJxX2VuYWJsZWRfbWFzaykKKwkJCXJldHVybjsK KworCQljbGVhcl9iaXQoaW50Zi0+cG9ydCwgJnByaXYtPndvbF9pcnFfZW5hYmxlZF9tYXNrKTsK KwkJaWYgKHByaXYtPndvbF9pcnFfZW5hYmxlZF9tYXNrKQorCQkJcmV0dXJuOworCisJCS8qIExh c3QgZGlzYWJsZSAqLworCQlkaXNhYmxlX2lycV93YWtlKHByaXYtPndvbF9pcnEpOworCQlkZXZp Y2Vfc2V0X3dha2V1cF9lbmFibGUoZGV2LCAwKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFz cF93b2xfaXJxX2Rlc3Ryb3lfc2hhcmVkKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdikKK3sKKwlp ZiAocHJpdi0+d29sX2lycSA+IDApCisJCWZyZWVfaXJxKHByaXYtPndvbF9pcnEsIHByaXYpOwor fQorCitzdGF0aWMgdm9pZCBiY21hc3BfaW5pdF93b2xfcGVyX2ludGYoc3RydWN0IGJjbWFzcF9w cml2ICpwcml2KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPTNEIHByaXYtPnBk ZXY7CisJc3RydWN0IGRldmljZSAqZGV2ID0zRCAmcGRldi0+ZGV2OworCXN0cnVjdCBiY21hc3Bf aW50ZiAqaW50ZjsKKwlpbnQgaXJxLCBpOworCisJZm9yIChpID0zRCAwOyBpIDwgcHJpdi0+aW50 Zl9jb3VudDsgaSsrKSB7CisJCWludGYgPTNEIHByaXYtPmludGZzW2ldOworCQlpcnEgPTNEIGJj bWFzcF9nZXRfYW5kX3JlcXVlc3RfaXJxKHByaXYsIGludGYtPnBvcnQgKyAxKTsKKwkJaWYgKGly cSA8IDApIHsKKwkJCWRldl93YXJuKGRldiwgIkZhaWxlZCB0byBpbml0IFdvTCBpcnEocG9ydCAl ZCk6ICVkXG4iLAorCQkJCSBpbnRmLT5wb3J0LCBpcnEpOworCQkJY29udGludWU7CisJCX0KKwor CQlpbnRmLT53b2xfaXJxID0zRCBpcnE7CisJCWludGYtPndvbF9pcnFfZW5hYmxlZCA9M0QgZmFs c2U7CisJCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoJnBkZXYtPmRldiwgMSk7CisJfQorfQor CitzdGF0aWMgdm9pZCBiY21hc3BfZW5hYmxlX3dvbF9wZXJfaW50ZihzdHJ1Y3QgYmNtYXNwX2lu dGYgKmludGYsIGJvb2wgZW4pCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0zRCAmaW50Zi0+cGFy ZW50LT5wZGV2LT5kZXY7CisKKwlpZiAoZW4gXiBpbnRmLT53b2xfaXJxX2VuYWJsZWQpCisJCWly cV9zZXRfaXJxX3dha2UoaW50Zi0+d29sX2lycSwgZW4pOworCisJaW50Zi0+d29sX2lycV9lbmFi bGVkID0zRCBlbjsKKwlkZXZpY2Vfc2V0X3dha2V1cF9lbmFibGUoZGV2LCBlbik7Cit9CisKK3N0 YXRpYyB2b2lkIGJjbWFzcF93b2xfaXJxX2Rlc3Ryb3lfcGVyX2ludGYoc3RydWN0IGJjbWFzcF9w cml2ICpwcml2KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZjsKKwlpbnQgaTsKKworCWZv ciAoaSA9M0QgMDsgaSA8IHByaXYtPmludGZfY291bnQ7IGkrKykgeworCQlpbnRmID0zRCBwcml2 LT5pbnRmc1tpXTsKKworCQlpZiAoaW50Zi0+d29sX2lycSA+IDApCisJCQlmcmVlX2lycShpbnRm LT53b2xfaXJxLCBwcml2KTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYmNtYXNwX2h3X2luZm8g djIwX2h3X2luZm8gPTNEIHsKKwkucnhfY3RybF9mbHVzaCA9M0QgQVNQX1JYX0NUUkxfRkxVU0gs CisJLnVtYWMyZmIgPTNEIFVNQUMyRkJfT0ZGU0VULAorCS5yeF9jdHJsX2ZiX291dF9mcmFtZV9j b3VudCA9M0QgQVNQX1JYX0NUUkxfRkJfT1VUX0ZSQU1FX0NPVU5ULAorCS5yeF9jdHJsX2ZiX2Zp bHRfb3V0X2ZyYW1lX2NvdW50ID0zRCBBU1BfUlhfQ1RSTF9GQl9GSUxUX09VVF9GUkFNRV9DT1VO VCwKKwkucnhfY3RybF9mYl9yeF9maWZvX2RlcHRoID0zRCBBU1BfUlhfQ1RSTF9GQl9SWF9GSUZP X0RFUFRILAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY21hc3BfcGxhdF9kYXRhIHYyMF9w bGF0X2RhdGEgPTNEIHsKKwkuaW5pdF93b2wgPTNEIGJjbWFzcF9pbml0X3dvbF9wZXJfaW50ZiwK KwkuZW5hYmxlX3dvbCA9M0QgYmNtYXNwX2VuYWJsZV93b2xfcGVyX2ludGYsCisJLmRlc3Ryb3lf d29sID0zRCBiY21hc3Bfd29sX2lycV9kZXN0cm95X3Blcl9pbnRmLAorCS5od19pbmZvID0zRCAm djIwX2h3X2luZm8sCit9OworCitzdGF0aWMgc3RydWN0IGJjbWFzcF9od19pbmZvIHYyMV9od19p bmZvID0zRCB7CisJLnJ4X2N0cmxfZmx1c2ggPTNEIEFTUF9SWF9DVFJMX0ZMVVNIXzJfMSwKKwku dW1hYzJmYiA9M0QgVU1BQzJGQl9PRkZTRVRfMl8xLAorCS5yeF9jdHJsX2ZiX291dF9mcmFtZV9j b3VudCA9M0QgQVNQX1JYX0NUUkxfRkJfT1VUX0ZSQU1FX0NPVU5UXzJfMSwKKwkucnhfY3RybF9m Yl9maWx0X291dF9mcmFtZV9jb3VudCA9M0QKKwkJQVNQX1JYX0NUUkxfRkJfRklMVF9PVVRfRlJB TUVfQ09VTlRfMl8xLAorCS5yeF9jdHJsX2ZiX3J4X2ZpZm9fZGVwdGggPTNEIEFTUF9SWF9DVFJM X0ZCX1JYX0ZJRk9fREVQVEhfMl8xLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY21hc3Bf cGxhdF9kYXRhIHYyMV9wbGF0X2RhdGEgPTNEIHsKKwkuaW5pdF93b2wgPTNEIGJjbWFzcF9pbml0 X3dvbF9zaGFyZWQsCisJLmVuYWJsZV93b2wgPTNEIGJjbWFzcF9lbmFibGVfd29sX3NoYXJlZCwK KwkuZGVzdHJveV93b2wgPTNEIGJjbWFzcF93b2xfaXJxX2Rlc3Ryb3lfc2hhcmVkLAorCS5od19p bmZvID0zRCAmdjIxX2h3X2luZm8sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBiY21hc3Bfb2ZfbWF0Y2hbXSA9M0QgeworCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGFz cC12Mi4wIiwgLmRhdGEgPTNEICZ2MjBfcGxhdF9kYXRhIH0sCisJeyAuY29tcGF0aWJsZSA9M0Qg ImJyY20sYXNwLXYyLjEiLCAuZGF0YSA9M0QgJnYyMV9wbGF0X2RhdGEgfSwKKwl7IC8qIHNlbnRp bmVsICovIH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmNtYXNwX29mX21hdGNoKTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmNtYXNwX21kaW9fb2ZfbWF0Y2hb XSA9M0QgeworCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGFzcC12Mi4xLW1kaW8iLCB9LAorCXsg LmNvbXBhdGlibGUgPTNEICJicmNtLGFzcC12Mi4wLW1kaW8iLCB9LAorCXsgLyogc2VudGluZWwg Ki8gfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hc3BfbWRpb19vZl9tYXRjaCk7 CisKK3N0YXRpYyBpbnQgYmNtYXNwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cit7CisJc3RydWN0IGRldmljZV9ub2RlICpwb3J0c19ub2RlLCAqaW50Zl9ub2RlOworCWNvbnN0 IHN0cnVjdCBiY21hc3BfcGxhdF9kYXRhICpwZGF0YTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPTNE ICZwZGV2LT5kZXY7CisJaW50IHJldCwgaSwgY291bnQgPTNEIDAsIHBvcnQ7CisJc3RydWN0IGJj bWFzcF9wcml2ICpwcml2OworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZjsKKworCXByaXYgPTNE IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJp dikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwcml2LT5pcnEgPTNEIHBsYXRmb3JtX2dldF9pcnEo cGRldiwgMCk7CisJaWYgKHByaXYtPmlycSA8PTNEIDApCisJCXJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgLUVJTlZBTCwgImludmFsaWQgaW50ZXJydXB0XG4iKTsKKworCXByaXYtPmNsayA9M0Qg ZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCAic3dfYXNwIik7CisJaWYgKElTX0VS Uihwcml2LT5jbGspKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi0+ Y2xrKSwKKwkJCQkJCQkgImZhaWxlZCB0byByZXF1ZXN0IGNsb2NrXG4iKTsKKworCS8qIEJhc2Ug ZnJvbSBwYXJlbnQgbm9kZSAqLworCXByaXYtPmJhc2UgPTNEIGRldm1fcGxhdGZvcm1faW9yZW1h cF9yZXNvdXJjZShwZGV2LCAwKTsKKwlpZiAoSVNfRVJSKHByaXYtPmJhc2UpKQorCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi0+YmFzZSksICJmYWlsZWQgdG8gaW9tYXBc biIpOworCisJcmV0ID0zRCBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCZwZGV2LT5kZXYsIERN QV9CSVRfTUFTSyg0MCkpOworCWlmIChyZXQpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwg cmV0LCAidW5hYmxlIHRvIHNldCBETUEgbWFzazogJWRcbiIsIHJldCk7CisKKwlkZXZfc2V0X2Ry dmRhdGEoJnBkZXYtPmRldiwgcHJpdik7CisJcHJpdi0+cGRldiA9M0QgcGRldjsKKwlzcGluX2xv Y2tfaW5pdCgmcHJpdi0+bWRhX2xvY2spOworCXNwaW5fbG9ja19pbml0KCZwcml2LT5jbGtfbG9j ayk7CisJbXV0ZXhfaW5pdCgmcHJpdi0+bmV0X2xvY2spOworCW11dGV4X2luaXQoJnByaXYtPndv bF9sb2NrKTsKKworCXBkYXRhID0zRCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYtPmRldik7 CisJaWYgKCFwZGF0YSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAidW5h YmxlIHRvIGZpbmQgcGxhdGZvcm0gZGF0YVxuIik7CisKKwlwcml2LT5pbml0X3dvbCA9M0QgcGRh dGEtPmluaXRfd29sOworCXByaXYtPmVuYWJsZV93b2wgPTNEIHBkYXRhLT5lbmFibGVfd29sOwor CXByaXYtPmRlc3Ryb3lfd29sID0zRCBwZGF0YS0+ZGVzdHJveV93b2w7CisJcHJpdi0+aHdfaW5m byA9M0QgcGRhdGEtPmh3X2luZm87CisKKwkvKiBFbmFibGUgYWxsIGNsb2NrcyB0byBlbnN1cmUg c3VjY2Vzc2Z1bCBwcm9iaW5nICovCisJYmNtYXNwX2NvcmVfY2xvY2tfc2V0KHByaXYsIEFTUF9D VFJMX0NMT0NLX0NUUkxfQVNQX0FMTF9ESVNBQkxFLCAwKTsKKworCS8qIFN3aXRjaCB0byB0aGUg bWFpbiBjbG9jayAqLworCWJjbWFzcF9jb3JlX2Nsb2NrX3NlbGVjdChwcml2LCBmYWxzZSk7CisK KwliY21hc3BfaW50cjJfbWFza19zZXRfYWxsKHByaXYpOworCWJjbWFzcF9pbnRyMl9jbGVhcl9h bGwocHJpdik7CisKKwlyZXQgPTNEIGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgcHJpdi0+ aXJxLCBiY21hc3BfaXNyLCAwLAorCQkJICAgICAgIHBkZXYtPm5hbWUsIHByaXYpOworCWlmIChy ZXQpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbGVkIHRvIHJlcXVlc3Qg QVNQIGludGVycnVwdDogJWQiLCByZT0KdCk7CisKKwkvKiBSZWdpc3RlciBtZGlvIGNoaWxkIG5v ZGVzICovCisJb2ZfcGxhdGZvcm1fcG9wdWxhdGUoZGV2LT5vZl9ub2RlLCBiY21hc3BfbWRpb19v Zl9tYXRjaCwgTlVMTCwgZGV2KTsKKworCS8qIEFTUCBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiwg TmVlZHMgdG8gYmUgZG9uZSByZWdhcmRsZXNzIG9mCisJICogaG93IG1hbnkgaW50ZXJmYWNlcyBj b21lIHVwLgorCSAqLworCWJjbWFzcF9jb3JlX2luaXQocHJpdik7CisJYmNtYXNwX2NvcmVfaW5p dF9maWx0ZXJzKHByaXYpOworCisJcG9ydHNfbm9kZSA9M0Qgb2ZfZmluZF9ub2RlX2J5X25hbWUo ZGV2LT5vZl9ub2RlLCAiZXRoZXJuZXQtcG9ydHMiKTsKKwlpZiAoIXBvcnRzX25vZGUpIHsKKwkJ ZGV2X3dhcm4oZGV2LCAiTm8gcG9ydHMgZm91bmRcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlm b3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShwb3J0c19ub2RlLCBpbnRmX25vZGUpIHsK KwkJb2ZfcHJvcGVydHlfcmVhZF91MzIoaW50Zl9ub2RlLCAicmVnIiwgJnBvcnQpOworCQlpZiAo IWJjbWFzcF9pc19wb3J0X3ZhbGlkKHByaXYsIHBvcnQpKSB7CisJCQlkZXZfd2FybihkZXYsICIl cE9GOiAlZCBpcyBhbiBpbnZhbGlkIHBvcnRcbiIsCisJCQkJIGludGZfbm9kZSwgcG9ydCk7CisJ CQljb250aW51ZTsKKwkJfQorCisJCXByaXYtPmludGZfY291bnQrKzsKKwl9CisKKwlwcml2LT5p bnRmcyA9M0QgZGV2bV9rY2FsbG9jKGRldiwgcHJpdi0+aW50Zl9jb3VudCwKKwkJCQkgICBzaXpl b2Yoc3RydWN0IGJjbWFzcF9pbnRmICopLAorCQkJCSAgIEdGUF9LRVJORUwpOworCWlmICghcHJp di0+aW50ZnMpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogUHJvYmUgZWFjaCBpbnRlcmZhY2Ug KEluaXRpYWxpemF0aW9uIHNob3VsZCBjb250aW51ZSBldmVuIGlmCisJICogaW50ZXJmYWNlcyBh cmUgdW5hYmxlIHRvIGNvbWUgdXApCisJICovCisJaSA9M0QgMDsKKwlmb3JfZWFjaF9hdmFpbGFi bGVfY2hpbGRfb2Zfbm9kZShwb3J0c19ub2RlLCBpbnRmX25vZGUpIHsKKwkJcHJpdi0+aW50ZnNb aV0gPTNEIGJjbWFzcF9pbnRlcmZhY2VfY3JlYXRlKHByaXYsIGludGZfbm9kZSwgaSk7CisJCWkr KzsKKwl9CisKKwkvKiBDaGVjayBhbmQgZW5hYmxlIFdvTCAqLworCXByaXYtPmluaXRfd29sKHBy aXYpOworCisJLyogRHJvcCB0aGUgY2xvY2sgcmVmZXJlbmNlIGNvdW50IG5vdyBhbmQgbGV0IG5k b19vcGVuKCkvbmRvX2Nsb3NlKCkKKwkgKiBtYW5hZ2UgaXQgZm9yIHVzIGZyb20gbm93IG9uLgor CSAqLworCWJjbWFzcF9jb3JlX2Nsb2NrX3NldChwcml2LCAwLCBBU1BfQ1RSTF9DTE9DS19DVFJM X0FTUF9BTExfRElTQUJMRSk7CisKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsK KworCS8qIE5vdyBkbyB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBuZXR3b3JrIHBvcnRzIHdoaWNo IHdpbGwgdGFrZSBjYXJlCisJICogb2YgbWFuYWdpbmcgdGhlIGNsb2NrIHByb3Blcmx5LgorCSAq LworCWZvciAoaSA9M0QgMDsgaSA8IHByaXYtPmludGZfY291bnQ7IGkrKykgeworCQlpbnRmID0z RCBwcml2LT5pbnRmc1tpXTsKKwkJaWYgKCFpbnRmKQorCQkJY29udGludWU7CisKKwkJcmV0ID0z RCByZWdpc3Rlcl9uZXRkZXYoaW50Zi0+bmRldik7CisJCWlmIChyZXQpIHsKKwkJCW5ldGRldl9l cnIoaW50Zi0+bmRldiwKKwkJCQkgICAiZmFpbGVkIHRvIHJlZ2lzdGVyIG5ldF9kZXZpY2U6ICVk XG4iLCByZXQpOworCQkJYmNtYXNwX2ludGVyZmFjZV9kZXN0cm95KGludGYsIGZhbHNlKTsKKwkJ CWNvbnRpbnVlOworCQl9CisJCWNvdW50Kys7CisJfQorCisJZGV2X2luZm8oZGV2LCAiSW5pdGlh bGl6ZWQgJWQgcG9ydChzKVxuIiwgY291bnQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgYmNtYXNwX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVj dCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOworCXN0 cnVjdCBiY21hc3BfaW50ZiAqaW50ZjsKKwlpbnQgaTsKKworCXByaXYtPmRlc3Ryb3lfd29sKHBy aXYpOworCisJZm9yIChpID0zRCAwOyBpIDwgcHJpdi0+aW50Zl9jb3VudDsgaSsrKSB7CisJCWlu dGYgPTNEIHByaXYtPmludGZzW2ldOworCQlpZiAoIWludGYpCisJCQljb250aW51ZTsKKworCQli Y21hc3BfaW50ZXJmYWNlX2Rlc3Ryb3koaW50ZiwgdHJ1ZSk7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQoreworCWludCByZXQ7CisKKwlyZXQgPTNEIGJjbWFzcF9yZW1vdmUocGRldik7CisJaWYg KHJldCkKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlbW92ZTogJWRcbiIsIHJl dCk7Cit9CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmNtYXNwX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGRldl9nZXRfZHJ2 ZGF0YShkKTsKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGY7CisJaW50IGksIHJldDsKKworCWZv ciAoaSA9M0QgMDsgaSA8IHByaXYtPmludGZfY291bnQ7IGkrKykgeworCQlpbnRmID0zRCBwcml2 LT5pbnRmc1tpXTsKKwkJaWYgKCFpbnRmKQorCQkJY29udGludWU7CisKKwkJcmV0ID0zRCBiY21h c3BfaW50ZXJmYWNlX3N1c3BlbmQoaW50Zik7CisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisK KwlyZXQgPTNEIGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5jbGspOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwkvKiBXaGV0aGVyIFdha2Utb24tTEFOIGlzIGVuYWJsZWQgb3Igbm90LCB3 ZSBjYW4gYWx3YXlzIGRpc2FibGUKKwkgKiB0aGUgc2hhcmVkIFRYIGNsb2NrCisJICovCisJYmNt YXNwX2NvcmVfY2xvY2tfc2V0KHByaXYsIDAsIEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQX1RYX0RJ U0FCTEUpOworCisJYmNtYXNwX2NvcmVfY2xvY2tfc2VsZWN0KHByaXYsIHRydWUpOworCisJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNsayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IF9fbWF5YmVfdW51c2VkIGJjbWFzcF9yZXN1bWUoc3RydWN0IGRldmljZSAqZCkKK3sK KwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGRldl9nZXRfZHJ2ZGF0YShkKTsKKwlzdHJ1 Y3QgYmNtYXNwX2ludGYgKmludGY7CisJaW50IGksIHJldDsKKworCXJldCA9M0QgY2xrX3ByZXBh cmVfZW5hYmxlKHByaXYtPmNsayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFN3 aXRjaCB0byB0aGUgbWFpbiBjbG9jayBkb21haW4gKi8KKwliY21hc3BfY29yZV9jbG9ja19zZWxl Y3QocHJpdiwgZmFsc2UpOworCisJLyogUmUtZW5hYmxlIGFsbCBjbG9ja3MgZm9yIHJlLWluaXRp YWxpemF0aW9uICovCisJYmNtYXNwX2NvcmVfY2xvY2tfc2V0KHByaXYsIEFTUF9DVFJMX0NMT0NL X0NUUkxfQVNQX0FMTF9ESVNBQkxFLCAwKTsKKworCWJjbWFzcF9jb3JlX2luaXQocHJpdik7CisJ YmNtYXNwX2NvcmVfaW5pdF9maWx0ZXJzKHByaXYpOworCisJLyogQW5kIGRpc2FibGUgdGhlbSB0 byBsZXQgdGhlIG5ldHdvcmsgZGV2aWNlcyB0YWtlIGNhcmUgb2YgdGhlbSAqLworCWJjbWFzcF9j b3JlX2Nsb2NrX3NldChwcml2LCAwLCBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9BTExfRElTQUJM RSk7CisKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKKworCWZvciAoaSA9M0Qg MDsgaSA8IHByaXYtPmludGZfY291bnQ7IGkrKykgeworCQlpbnRmID0zRCBwcml2LT5pbnRmc1tp XTsKKwkJaWYgKCFpbnRmKQorCQkJY29udGludWU7CisKKwkJcmV0ID0zRCBiY21hc3BfaW50ZXJm YWNlX3Jlc3VtZShpbnRmKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOworCX0KKworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhiY21hc3BfcG1fb3BzLAorCQkJIGJj bWFzcF9zdXNwZW5kLCBiY21hc3BfcmVzdW1lKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgYmNtYXNwX2RyaXZlciA9M0QgeworCS5wcm9iZSA9M0QgYmNtYXNwX3Byb2JlLAorCS5y ZW1vdmUgPTNEIGJjbWFzcF9yZW1vdmUsCisJLnNodXRkb3duID0zRCBiY21hc3Bfc2h1dGRvd24s CisJLmRyaXZlciA9M0QgeworCQkubmFtZSA9M0QgImJyY20sYXNwLXYyIiwKKwkJLm9mX21hdGNo X3RhYmxlID0zRCBiY21hc3Bfb2ZfbWF0Y2gsCisJCS5wbSA9M0QgJmJjbWFzcF9wbV9vcHMsCisJ fSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGJjbWFzcF9kcml2ZXIpOworCitNT0RVTEVf QVVUSE9SKCJCcm9hZGNvbSIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJCcm9hZGNvbSBBU1AgMi4w IEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmJy Y20sYXNwLXYyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcC5oIGIvZHJpdmVycy9uZXQvZXRoZT0K cm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNDhkZTg3ZDQ5YjAxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3AuaApAQCAtMCwwICsxLDYzOCBAQAorLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKyNpZm5kZWYgX19CQ01BU1BfSAorI2Rl ZmluZSBfX0JDTUFTUF9ICisKKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRl IDxsaW51eC9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9pby02NC1ub25hdG9taWMtaGktbG8uaD4K KyNpbmNsdWRlIDx1YXBpL2xpbnV4L2V0aHRvb2wuaD4KKworI2RlZmluZSBBU1BfSU5UUjJfT0ZG U0VUCQkJMHgxMDAwCisjZGVmaW5lICBBU1BfSU5UUjJfU1RBVFVTCQkJMHgwCisjZGVmaW5lICBB U1BfSU5UUjJfU0VUCQkJCTB4NAorI2RlZmluZSAgQVNQX0lOVFIyX0NMRUFSCQkJMHg4CisjZGVm aW5lICBBU1BfSU5UUjJfTUFTS19TVEFUVVMJCQkweGMKKyNkZWZpbmUgIEFTUF9JTlRSMl9NQVNL X1NFVAkJCTB4MTAKKyNkZWZpbmUgIEFTUF9JTlRSMl9NQVNLX0NMRUFSCQkJMHgxNAorCisjZGVm aW5lIEFTUF9JTlRSMl9SWF9FQ0goaW50cikJCQlCSVQoaW50cikKKyNkZWZpbmUgQVNQX0lOVFIy X1RYX0RFU0MoaW50cikJCQlCSVQoKGludHIpICsgMTQpCisjZGVmaW5lIEFTUF9JTlRSMl9VTUMw X1dBS0UJCQlCSVQoMjIpCisjZGVmaW5lIEFTUF9JTlRSMl9VTUMxX1dBS0UJCQlCSVQoMjgpCisK KyNkZWZpbmUgQVNQX1dBS0VVUF9JTlRSMl9PRkZTRVQJCQkweDEyMDAKKyNkZWZpbmUgIEFTUF9X QUtFVVBfSU5UUjJfU1RBVFVTCQkweDAKKyNkZWZpbmUgIEFTUF9XQUtFVVBfSU5UUjJfU0VUCQkJ MHg0CisjZGVmaW5lICBBU1BfV0FLRVVQX0lOVFIyX0NMRUFSCQkJMHg4CisjZGVmaW5lICBBU1Bf V0FLRVVQX0lOVFIyX01BU0tfU1RBVFVTCQkweGMKKyNkZWZpbmUgIEFTUF9XQUtFVVBfSU5UUjJf TUFTS19TRVQJCTB4MTAKKyNkZWZpbmUgIEFTUF9XQUtFVVBfSU5UUjJfTUFTS19DTEVBUgkJMHgx NAorI2RlZmluZSBBU1BfV0FLRVVQX0lOVFIyX01QRF8wCQkJQklUKDApCisjZGVmaW5lIEFTUF9X QUtFVVBfSU5UUjJfTVBEXzEJCQlCSVQoMSkKKyNkZWZpbmUgQVNQX1dBS0VVUF9JTlRSMl9GSUxU XzAJCQlCSVQoMikKKyNkZWZpbmUgQVNQX1dBS0VVUF9JTlRSMl9GSUxUXzEJCQlCSVQoMykKKyNk ZWZpbmUgQVNQX1dBS0VVUF9JTlRSMl9GVwkJCUJJVCg0KQorCisjZGVmaW5lIEFTUF9UWF9BTkFM WVRJQ1NfT0ZGU0VUCQkJMHg0YzAwMAorI2RlZmluZSAgQVNQX1RYX0FOQUxZVElDU19DVFJMCQkJ MHgwCisKKyNkZWZpbmUgQVNQX1JYX0FOQUxZVElDU19PRkZTRVQJCQkweDk4MDAwCisjZGVmaW5l ICBBU1BfUlhfQU5BTFlUSUNTX0NUUkwJCQkweDAKKworI2RlZmluZSBBU1BfUlhfQ1RSTF9PRkZT RVQJCQkweDlmMDAwCisjZGVmaW5lIEFTUF9SWF9DVFJMX1VNQUNfMF9GUkFNRV9DT1VOVAkJMHg4 CisjZGVmaW5lIEFTUF9SWF9DVFJMX1VNQUNfMV9GUkFNRV9DT1VOVAkJMHhjCisjZGVmaW5lIEFT UF9SWF9DVFJMX0ZCXzBfRlJBTUVfQ09VTlQJCTB4MTQKKyNkZWZpbmUgQVNQX1JYX0NUUkxfRkJf MV9GUkFNRV9DT1VOVAkJMHgxOAorI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl84X0ZSQU1FX0NPVU5U CQkweDFjCisvKiBhc3AyLjEgZGl2ZXJnZXMgb2Zmc2V0cyBoZXJlICovCisvKiBBU1AyLjAgKi8K KyNkZWZpbmUgQVNQX1JYX0NUUkxfRkJfT1VUX0ZSQU1FX0NPVU5UCQkweDIwCisjZGVmaW5lIEFT UF9SWF9DVFJMX0ZCX0ZJTFRfT1VUX0ZSQU1FX0NPVU5UCTB4MjQKKyNkZWZpbmUgQVNQX1JYX0NU UkxfRkxVU0gJCQkweDI4CisjZGVmaW5lICBBU1BfQ1RSTF9VTUFDMF9GTFVTSF9NQVNLCQkoQklU KDApIHwgQklUKDEyKSkKKyNkZWZpbmUgIEFTUF9DVFJMX1VNQUMxX0ZMVVNIX01BU0sJCShCSVQo MSkgfCBCSVQoMTMpKQorI2RlZmluZSAgQVNQX0NUUkxfU1BCX0ZMVVNIX01BU0sJCShCSVQoOCkg fCBCSVQoMjApKQorI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl9SWF9GSUZPX0RFUFRICQkweDMwCisv KiBBU1AyLjEgKi8KKyNkZWZpbmUgQVNQX1JYX0NUUkxfRkJfOV9GUkFNRV9DT1VOVF8yXzEJMHgy MAorI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl8xMF9GUkFNRV9DT1VOVF8yXzEJMHgyNAorI2RlZmlu ZSBBU1BfUlhfQ1RSTF9GQl9PVVRfRlJBTUVfQ09VTlRfMl8xCTB4MjgKKyNkZWZpbmUgQVNQX1JY X0NUUkxfRkJfRklMVF9PVVRfRlJBTUVfQ09VTlRfMl8xCTB4MmMKKyNkZWZpbmUgQVNQX1JYX0NU UkxfRkxVU0hfMl8xCQkJMHgzMAorI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl9SWF9GSUZPX0RFUFRI XzJfMQkweDM4CisKKyNkZWZpbmUgQVNQX1JYX0ZJTFRFUl9PRkZTRVQJCQkweDgwMDAwCisjZGVm aW5lICBBU1BfUlhfRklMVEVSX0JMS19DVFJMCQkJMHgwCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRF Ul9PUFVUX0VOCQkJQklUKDApCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9NREFfRU4JCQlCSVQo MSkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX0xOUl9NRAkJCUJJVCgyKQorI2RlZmluZSAgIEFT UF9SWF9GSUxURVJfR0VOX1dLX0VOCQlCSVQoMykKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX0dF Tl9XS19DTFIJCUJJVCg0KQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTlRfRkxUX0VOCQlCSVQo NSkKKyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfTURBX0NGRyhzZWwpCQkoKChzZWwpICogMHgxNCkg KyAweDEwMCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX01EQV9DRkdfRU5fU0hJRlQJOAorI2Rl ZmluZSAgIEFTUF9SWF9GSUxURVJfTURBX0NGR19VTUNfU0VMKHNlbCkJKChzZWwpID4gMSA/IEJJ VCgxNykgOiBcCisJCQkJCQkgQklUKChzZWwpICsgOSkpCisjZGVmaW5lICBBU1BfUlhfRklMVEVS X01EQV9QQVRfSChzZWwpCQkoKChzZWwpICogMHgxNCkgKyAweDEwNCkKKyNkZWZpbmUgIEFTUF9S WF9GSUxURVJfTURBX1BBVF9MKHNlbCkJCSgoKHNlbCkgKiAweDE0KSArIDB4MTA4KQorI2RlZmlu ZSAgQVNQX1JYX0ZJTFRFUl9NREFfTVNLX0goc2VsKQkJKCgoc2VsKSAqIDB4MTQpICsgMHgxMGMp CisjZGVmaW5lICBBU1BfUlhfRklMVEVSX01EQV9NU0tfTChzZWwpCQkoKChzZWwpICogMHgxNCkg KyAweDExMCkKKyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfTURBX0NGRyhzZWwpCQkoKChzZWwpICog MHgxNCkgKyAweDEwMCkKKyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfTURBX1BBVF9IKHNlbCkJCSgo KHNlbCkgKiAweDE0KSArIDB4MTA0KQorI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9NREFfUEFUX0wo c2VsKQkJKCgoc2VsKSAqIDB4MTQpICsgMHgxMDgpCisjZGVmaW5lICBBU1BfUlhfRklMVEVSX01E QV9NU0tfSChzZWwpCQkoKChzZWwpICogMHgxNCkgKyAweDEwYykKKyNkZWZpbmUgIEFTUF9SWF9G SUxURVJfTURBX01TS19MKHNlbCkJCSgoKHNlbCkgKiAweDE0KSArIDB4MTEwKQorI2RlZmluZSAg QVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHKHNlbCkJCSgoKHNlbCkgKiAweGEwNCkgKyAweDQwMCkKKyNk ZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9DRkdfQ0goc2VsKQkJKChzZWwpIDw8IDApCisjZGVm aW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0VOCQlCSVQoOSkKKyNkZWZpbmUgICBBU1BfUlhf RklMVEVSX05FVF9DRkdfTDJfRU4JCUJJVCgxMCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05F VF9DRkdfTDNfRU4JCUJJVCgxMSkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDRf RU4JCUJJVCgxMikKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDNfRlJNKHNlbCkJ KChzZWwpIDw8IDEzKQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MNF9GUk0oc2Vs KQkoKHNlbCkgPDwgMTUpCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX1VNQyhzZWwp CUJJVCgoc2VsKSArIDE5KQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19ETUFfRU4J CUJJVCgyNykKKworZW51bSBhc3BfcnhfbmV0X2ZpbHRlcl9ibG9jayB7CisJQVNQX1JYX0ZJTFRF Ul9ORVRfTDIgPTNEIDAsCisJQVNQX1JYX0ZJTFRFUl9ORVRfTDNfMCwKKwlBU1BfUlhfRklMVEVS X05FVF9MM18xLAorCUFTUF9SWF9GSUxURVJfTkVUX0w0LAorCUFTUF9SWF9GSUxURVJfTkVUX0JM T0NLX01BWAorfTsKKworI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9ORVRfT0ZGU0VUX01BWAkJMzIK KyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfTkVUX1BBVChzZWwsIGJsb2NrLCBvZmYpIFwKKwkJKCgo c2VsKSAqIDB4YTA0KSArICgoYmxvY2spICogMHgyMDApICsgKG9mZikgKyAweDYwMCkKKyNkZWZp bmUgIEFTUF9SWF9GSUxURVJfTkVUX01BU0soc2VsLCBibG9jaywgb2ZmKSBcCisJCSgoKHNlbCkg KiAweGEwNCkgKyAoKGJsb2NrKSAqIDB4MjAwKSArIChvZmYpICsgMHg3MDApCisKKyNkZWZpbmUg IEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVChzZWwpCQkoKChzZWwpICogMHhhMDQpICsgMHhlMDAp CisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfT0ZGU0VUX0wyKHZhbCkJKCh2YWwpIDw8IDAp CisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfT0ZGU0VUX0wzXzAodmFsKQkoKHZhbCkgPDwg OCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDNfMSh2YWwpCSgodmFsKSA8 PCAxNikKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDQodmFsKQkoKHZhbCkg PDwgMjQpCisKKyNkZWZpbmUgQVNQX0VEUEtUX09GRlNFVAkJCTB4OWMwMDAKKyNkZWZpbmUgIEFT UF9FRFBLVF9FTkFCTEUJCQkweDQKKyNkZWZpbmUgICBBU1BfRURQS1RfRU5BQkxFX0VOCQkJQklU KDApCisjZGVmaW5lICBBU1BfRURQS1RfSERSX0NGRwkJCTB4YworI2RlZmluZSAgIEFTUF9FRFBL VF9IRFJfU1pfU0hJRlQJCTIKKyNkZWZpbmUgICBBU1BfRURQS1RfSERSX1NaXzMyCQkJMAorI2Rl ZmluZSAgIEFTUF9FRFBLVF9IRFJfU1pfNjQJCQkxCisjZGVmaW5lICAgQVNQX0VEUEtUX0hEUl9T Wl85NgkJCTIKKyNkZWZpbmUgICBBU1BfRURQS1RfSERSX1NaXzEyOAkJCTMKKyNkZWZpbmUgQVNQ X0VEUEtUX0JVUlNUX0JVRl9QU0NBTF9UT1VUCQkweDEwCisjZGVmaW5lIEFTUF9FRFBLVF9CVVJT VF9CVUZfV1JJVEVfVE9VVAkJMHgxNAorI2RlZmluZSBBU1BfRURQS1RfQlVSU1RfQlVGX1JFQURf VE9VVAkJMHgxOAorI2RlZmluZSBBU1BfRURQS1RfUlhfVFNfQ09VTlRFUgkJCTB4MzgKKyNkZWZp bmUgIEFTUF9FRFBLVF9FTkRJCQkJCTB4NDgKKyNkZWZpbmUgICBBU1BfRURQS1RfRU5ESV9ERVND X1NISUZUCQk4CisjZGVmaW5lICAgQVNQX0VEUEtUX0VORElfTk9fQlRfU1dQCQkwCisjZGVmaW5l ICAgQVNQX0VEUEtUX0VORElfQlRfU1dQX1dECQkxCisjZGVmaW5lIEFTUF9FRFBLVF9SWF9QS1Rf Q05UCQkJMHgxMzgKKyNkZWZpbmUgQVNQX0VEUEtUX0hEUl9FWFRSX0NOVAkJCTB4MTNjCisjZGVm aW5lIEFTUF9FRFBLVF9IRFJfT1VUX0NOVAkJCTB4MTQwCisKKyNkZWZpbmUgQVNQX0NUUkwJCQkJ MHgxMDEwMDAKKyNkZWZpbmUgIEFTUF9DVFJMX0FTUF9TV19JTklUCQkJMHgwNAorI2RlZmluZSAg IEFTUF9DVFJMX0FTUF9TV19JTklUX0FDUFVTU19DT1JFCUJJVCgwKQorI2RlZmluZSAgIEFTUF9D VFJMX0FTUF9TV19JTklUX0FTUF9UWAkJQklUKDEpCisjZGVmaW5lICAgQVNQX0NUUkxfQVNQX1NX X0lOSVRfQVNfUlgJCUJJVCgyKQorI2RlZmluZSAgIEFTUF9DVFJMX0FTUF9TV19JTklUX0FTUF9S R01JSV9VTUFDMAlCSVQoMykKKyNkZWZpbmUgICBBU1BfQ1RSTF9BU1BfU1dfSU5JVF9BU1BfUkdN SUlfVU1BQzEJQklUKDQpCisjZGVmaW5lICAgQVNQX0NUUkxfQVNQX1NXX0lOSVRfQVNQX1hNRU1J RglCSVQoNSkKKyNkZWZpbmUgIEFTUF9DVFJMX0NMT0NLX0NUUkwJCQkweDA0CisjZGVmaW5lICAg QVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfVFhfRElTQUJMRQlCSVQoMCkKKyNkZWZpbmUgICBBU1Bf Q1RSTF9DTE9DS19DVFJMX0FTUF9SWF9ESVNBQkxFCUJJVCgxKQorI2RlZmluZSAgIEFTUF9DVFJM X0NMT0NLX0NUUkxfQVNQX1JHTUlJX1NISUZUCTIKKyNkZWZpbmUgICBBU1BfQ1RSTF9DTE9DS19D VFJMX0FTUF9SR01JSV9NQVNLCSgweDcgPDwgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BPQpTUF9SR01J SV9TSElGVCkKKyNkZWZpbmUgICBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9SR01JSV9ESVMoeCkJ QklUKEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQPQpfUkdNSUlfU0hJRlQgKyAoeCkpCisjZGVmaW5l ICAgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfQUxMX0RJU0FCTEUJR0VOTUFTSyg0LCAwKQorI2Rl ZmluZSAgQVNQX0NUUkxfQ09SRV9DTE9DS19TRUxFQ1QJCTB4MDgKKyNkZWZpbmUgICBBU1BfQ1RS TF9DT1JFX0NMT0NLX1NFTEVDVF9NQUlOCUJJVCgwKQorI2RlZmluZSAgQVNQX0NUUkxfU0NSQVRD SF8wCQkJMHgwYworCitzdHJ1Y3QgYmNtYXNwX3R4X2NiIHsKKwlzdHJ1Y3Qgc2tfYnVmZgkJKnNr YjsKKwl1bnNpZ25lZCBpbnQJCWJ5dGVzX3NlbnQ7CisJYm9vbAkJCWxhc3Q7CisKKwlERUZJTkVf RE1BX1VOTUFQX0FERFIoZG1hX2FkZHIpOworCURFRklORV9ETUFfVU5NQVBfTEVOKGRtYV9sZW4p OworfTsKKworc3RydWN0IGJjbWFzcF9yZXMgeworCS8qIFBlciBpbnRlcmZhY2UgcmVzb3VyY2Vz ICovCisJLyogUG9ydCAqLworCXZvaWQgX19pb21lbQkJKnVtYWM7CisJdm9pZCBfX2lvbWVtCQkq dW1hYzJmYjsKKwl2b2lkIF9faW9tZW0JCSpyZ21paTsKKworCS8qIFRYIHNsb3dwYXRoL2NvbmZp Z3VyYXRpb24gKi8KKwl2b2lkIF9faW9tZW0JCSp0eF9zcGJfY3RybDsKKwl2b2lkIF9faW9tZW0J CSp0eF9zcGJfdG9wOworCXZvaWQgX19pb21lbQkJKnR4X2Vwa3RfY29yZTsKKwl2b2lkIF9faW9t ZW0JCSp0eF9wYXVzZV9jdHJsOworfTsKKworI2RlZmluZSBERVNDX0FERFIoeCkJCSgoeCkgJiBH RU5NQVNLX1VMTCgzOSwgMCkpCisjZGVmaW5lIERFU0NfRkxBR1MoeCkJCSgoeCkgJiBHRU5NQVNL X1VMTCg2MywgNDApKQorCitzdHJ1Y3QgYmNtYXNwX2Rlc2MgeworCXU2NAkJYnVmOworCSNkZWZp bmUgREVTQ19DSEtTVU0JQklUX1VMTCg0MCkKKwkjZGVmaW5lIERFU0NfQ1JDX0VSUglCSVRfVUxM KDQxKQorCSNkZWZpbmUgREVTQ19SWF9TWU1fRVJSCUJJVF9VTEwoNDIpCisJI2RlZmluZSBERVND X05PX09DVF9BTE4gQklUX1VMTCg0MykKKwkjZGVmaW5lIERFU0NfUEtUX1RSVUMJQklUX1VMTCg0 NCkKKwkvKiAgMzk6MCAoVFgvUlgpIGJpdHMgMC0zOSBvZiBidWYgYWRkcgorCSAqICAgIDQwIChS WCkgY2hlY2tzdW0KKwkgKiAgICA0MSAoUlgpIGNyY19lcnJvcgorCSAqICAgIDQyIChSWCkgcnhf c3ltYm9sX2Vycm9yCisJICogICAgNDMgKFJYKSBub25fb2N0ZXRfYWxpZ25lZAorCSAqICAgIDQ0 IChSWCkgcGt0X3RydW5jYXRlZAorCSAqICAgIDQ1IFJlc2VydmVkCisJICogNTY6NDYgKFJYKSBt YWNfZmlsdGVyX2lkCisJICogNjA6NTcgKFJYKSByeF9wb3J0X251bSAoMC11bmljbWFjMCwgMS11 bmltYWMxKQorCSAqICAgIDYxIFJlc2VydmVkCisJICogNjM6NjIgKFRYKSBmb3J3YXJkIENSQywg b3ZlcndyaXRlIENSQworCSAqLworCXUzMgkJc2l6ZTsKKwl1MzIJCWZsYWdzOworCSNkZWZpbmUg REVTQ19JTlRfRU4gICAgIEJJVCgwKQorCSNkZWZpbmUgREVTQ19TT0YJQklUKDEpCisJI2RlZmlu ZSBERVNDX0VPRglCSVQoMikKKwkjZGVmaW5lIERFU0NfRVBLVF9DTUQgICBCSVQoMykKKwkjZGVm aW5lIERFU0NfU0NSQU1fU1QgICBCSVQoOCkKKwkjZGVmaW5lIERFU0NfU0NSQU1fRU5EICBCSVQo OSkKKwkjZGVmaW5lIERFU0NfUENQUCAgICAgICBCSVQoMTApCisJI2RlZmluZSBERVNDX1BQUFAg ICAgICAgQklUKDExKQorCS8qICAgICAwIChUWCkgdHhfaW50X2VuCisJICogICAgIDEgKFRYL1JY KSBTT0YKKwkgKiAgICAgMiAoVFgvUlgpIEVPRgorCSAqICAgICAzIChUWCkgZXBrdF9jb21tYW5k CisJICogICA2OjQgKFRYKSBQQQorCSAqICAgICA3IChUWCkgcGF1c2UgYXQgZGVzYyBlbmQKKwkg KiAgICAgOCAoVFgpIHNjcmFtX3N0YXJ0CisJICogICAgIDkgKFRYKSBzY3JhbV9lbmQKKwkgKiAg ICAxMCAoVFgpIFBDUFAKKwkgKiAgICAxMSAoVFgpIFBQUFAKKwkgKiAxNDoxMiBSZXNlcnZlZAor CSAqICAgIDE1IChUWCkgcGlkIGNoIFZhbGlkCisJICogMTk6MTYgKFRYKSBkYXRhX3BrdF90eXBl CisJICogMzI6MjAgKFRYKSBwaWRfY2hhbm5lbCAoUlgpIG53X2ZpbHRlcl9pZAorCSAqLworfTsK KworLyogUngvVHggY29tbW9uIGNvdW50ZXIgZ3JvdXAgKi8KK3N0cnVjdCBiY21hc3BfcGt0X2Nv dW50ZXJzIHsKKwl1MzIJY250XzY0OwkJLyogUk8gUmVjZWl2ZWQvVHJhbnNtaXR0ZWQgNjQgYnl0 ZXMgcGFja2V0ICovCisJdTMyCWNudF8xMjc7CS8qIFJPIFJ4L1R4IDEyNyBieXRlcyBwYWNrZXQg Ki8KKwl1MzIJY250XzI1NTsJLyogUk8gUngvVHggNjUtMjU1IGJ5dGVzIHBhY2tldCAqLworCXUz MgljbnRfNTExOwkvKiBSTyBSeC9UeCAyNTYtNTExIGJ5dGVzIHBhY2tldCAqLworCXUzMgljbnRf MTAyMzsJLyogUk8gUngvVHggNTEyLTEwMjMgYnl0ZXMgcGFja2V0ICovCisJdTMyCWNudF8xNTE4 OwkvKiBSTyBSeC9UeCAxMDI0LTE1MTggYnl0ZXMgcGFja2V0ICovCisJdTMyCWNudF9tZ3Y7CS8q IFJPIFJ4L1R4IDE1MTktMTUyMiBnb29kIFZMQU4gcGFja2V0ICovCisJdTMyCWNudF8yMDQ3Owkv KiBSTyBSeC9UeCAxNTIyLTIwNDcgYnl0ZXMgcGFja2V0Ki8KKwl1MzIJY250XzQwOTU7CS8qIFJP IFJ4L1R4IDIwNDgtNDA5NSBieXRlcyBwYWNrZXQqLworCXUzMgljbnRfOTIxNjsJLyogUk8gUngv VHggNDA5Ni05MjE2IGJ5dGVzIHBhY2tldCovCit9OworCisvKiBSU1YsIFJlY2VpdmUgU3RhdHVz IFZlY3RvciAqLworc3RydWN0IGJjbWFzcF9yeF9jb3VudGVycyB7CisJc3RydWN0ICBiY21hc3Bf cGt0X2NvdW50ZXJzIHBrdF9jbnQ7CisJdTMyCXBrdDsJCS8qIFJPICgweDQyOCkgUmVjZWl2ZWQg cGt0IGNvdW50Ki8KKwl1MzIJYnl0ZXM7CQkvKiBSTyBSZWNlaXZlZCBieXRlIGNvdW50ICovCisJ dTMyCW1jYTsJCS8qIFJPICMgb2YgUmVjZWl2ZWQgbXVsdGljYXN0IHBrdCAqLworCXUzMgliY2E7 CQkvKiBSTyAjIG9mIFJlY2VpdmUgYnJvYWRjYXN0IHBrdCAqLworCXUzMglmY3M7CQkvKiBSTyAj IG9mIFJlY2VpdmVkIEZDUyBlcnJvciAgKi8KKwl1MzIJY2Y7CQkvKiBSTyAjIG9mIFJlY2VpdmVk IGNvbnRyb2wgZnJhbWUgcGt0Ki8KKwl1MzIJcGY7CQkvKiBSTyAjIG9mIFJlY2VpdmVkIHBhdXNl IGZyYW1lIHBrdCAqLworCXUzMgl1bzsJCS8qIFJPICMgb2YgdW5rbm93biBvcCBjb2RlIHBrdCAq LworCXUzMglhbG47CQkvKiBSTyAjIG9mIGFsaWdubWVudCBlcnJvciBjb3VudCAqLworCXUzMglm bHI7CQkvKiBSTyAjIG9mIGZyYW1lIGxlbmd0aCBvdXQgb2YgcmFuZ2UgY291bnQgKi8KKwl1MzIJ Y2RlOwkJLyogUk8gIyBvZiBjb2RlIGVycm9yIHBrdCAqLworCXUzMglmY3I7CQkvKiBSTyAjIG9m IGNhcnJpZXIgc2Vuc2UgZXJyb3IgcGt0ICovCisJdTMyCW92cjsJCS8qIFJPICMgb2Ygb3ZlcnNp emUgcGt0Ki8KKwl1MzIJamJyOwkJLyogUk8gIyBvZiBqYWJiZXIgY291bnQgKi8KKwl1MzIJbXR1 ZTsJCS8qIFJPICMgb2YgTVRVIGVycm9yIHBrdCovCisJdTMyCXBvazsJCS8qIFJPICMgb2YgUmVj ZWl2ZWQgZ29vZCBwa3QgKi8KKwl1MzIJdWM7CQkvKiBSTyAjIG9mIHVuaWNhc3QgcGt0ICovCisJ dTMyCXBwcDsJCS8qIFJPICMgb2YgUFBQIHBrdCAqLworCXUzMglyY3JjOwkJLyogUk8gKDB4NDcw KSwjIG9mIENSQyBtYXRjaCBwa3QgKi8KK307CisKKy8qIFRTViwgVHJhbnNtaXQgU3RhdHVzIFZl Y3RvciAqLworc3RydWN0IGJjbWFzcF90eF9jb3VudGVycyB7CisJc3RydWN0IGJjbWFzcF9wa3Rf Y291bnRlcnMgcGt0X2NudDsKKwl1MzIJcGt0czsJCS8qIFJPICgweDRhOCkgVHJhbnNtaXR0ZWQg cGt0ICovCisJdTMyCW1jYTsJCS8qIFJPICMgb2YgeG1pdGVkIG11bHRpY2FzdCBwa3QgKi8KKwl1 MzIJYmNhOwkJLyogUk8gIyBvZiB4bWl0ZWQgYnJvYWRjYXN0IHBrdCAqLworCXUzMglwZjsJCS8q IFJPICMgb2YgeG1pdGVkIHBhdXNlIGZyYW1lIGNvdW50ICovCisJdTMyCWNmOwkJLyogUk8gIyBv ZiB4bWl0ZWQgY29udHJvbCBmcmFtZSBjb3VudCAqLworCXUzMglmY3M7CQkvKiBSTyAjIG9mIHht aXRlZCBGQ1MgZXJyb3IgY291bnQgKi8KKwl1MzIJb3ZyOwkJLyogUk8gIyBvZiB4bWl0ZWQgb3Zl cnNpemUgcGt0ICovCisJdTMyCWRyZjsJCS8qIFJPICMgb2YgeG1pdGVkIGRlZmVycmFsIHBrdCAq LworCXUzMgllZGY7CQkvKiBSTyAjIG9mIHhtaXRlZCBFeGNlc3NpdmUgZGVmZXJyYWwgcGt0Ki8K Kwl1MzIJc2NsOwkJLyogUk8gIyBvZiB4bWl0ZWQgc2luZ2xlIGNvbGxpc2lvbiBwa3QgKi8KKwl1 MzIJbWNsOwkJLyogUk8gIyBvZiB4bWl0ZWQgbXVsdGlwbGUgY29sbGlzaW9uIHBrdCovCisJdTMy CWxjbDsJCS8qIFJPICMgb2YgeG1pdGVkIGxhdGUgY29sbGlzaW9uIHBrdCAqLworCXUzMgllY2w7 CQkvKiBSTyAjIG9mIHhtaXRlZCBleGNlc3NpdmUgY29sbGlzaW9uIHBrdCovCisJdTMyCWZyZzsJ CS8qIFJPICMgb2YgeG1pdGVkIGZyYWdtZW50cyBwa3QqLworCXUzMgluY2w7CQkvKiBSTyAjIG9m IHhtaXRlZCB0b3RhbCBjb2xsaXNpb24gY291bnQgKi8KKwl1MzIJamJyOwkJLyogUk8gIyBvZiB4 bWl0ZWQgamFiYmVyIGNvdW50Ki8KKwl1MzIJYnl0ZXM7CQkvKiBSTyAjIG9mIHhtaXRlZCBieXRl IGNvdW50ICovCisJdTMyCXBvazsJCS8qIFJPICMgb2YgeG1pdGVkIGdvb2QgcGt0ICovCisJdTMy CXVjOwkJLyogUk8gKDB4MHg0ZjApIyBvZiB4bWl0ZWQgdW5pdGNhc3QgcGt0ICovCit9OworCitz dHJ1Y3QgYmNtYXNwX21pYl9jb3VudGVycyB7CisJc3RydWN0IGJjbWFzcF9yeF9jb3VudGVycyBy eDsKKwlzdHJ1Y3QgYmNtYXNwX3R4X2NvdW50ZXJzIHR4OworCXUzMglyeF9ydW50X2NudDsKKwl1 MzIJcnhfcnVudF9mY3M7CisJdTMyCXJ4X3J1bnRfZmNzX2FsaWduOworCXUzMglyeF9ydW50X2J5 dGVzOworCXUzMgllZHBrdF90czsKKwl1MzIJZWRwa3RfcnhfcGt0X2NudDsKKwl1MzIJZWRwa3Rf aGRyX2V4dF9jbnQ7CisJdTMyCWVkcGt0X2hkcl9vdXRfY250OworCXUzMgl1bWFjX2ZybV9jbnQ7 CisJdTMyCWZiX2ZybV9jbnQ7CisJdTMyCWZiX291dF9mcm1fY250OworCXUzMglmYl9maWx0X291 dF9mcm1fY250OworCXUzMglmYl9yeF9maWZvX2RlcHRoOworCXUzMglhbGxvY19yeF9idWZmX2Zh aWxlZDsKKwl1MzIJYWxsb2Nfcnhfc2tiX2ZhaWxlZDsKKwl1MzIJcnhfZG1hX2ZhaWxlZDsKKwl1 MzIJdHhfZG1hX2ZhaWxlZDsKKwl1MzIJbWNfZmlsdGVyc19mdWxsX2NudDsKKwl1MzIJdWNfZmls dGVyc19mdWxsX2NudDsKKwl1MzIJZmlsdGVyc19jb21iaW5lX2NudDsKKwl1MzIJcHJvbWlzY19m aWx0ZXJzX2NudDsKKwl1MzIJdHhfcmVhbGxvY19vZmZsb2FkX2ZhaWxlZDsKKwl1MzIJdHhfcmVh bGxvY19vZmZsb2FkOworfTsKKworc3RydWN0IGJjbWFzcF9pbnRmOworCitzdHJ1Y3QgYmNtYXNw X2ludGZfb3BzIHsKKwl1bnNpZ25lZCBsb25nICgqcnhfZGVzY19yZWFkKShzdHJ1Y3QgYmNtYXNw X2ludGYgKmludGYpOworCXZvaWQgKCpyeF9idWZmZXJfd3JpdGUpKHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZiwgZG1hX2FkZHJfdCBhZGRyKTsKKwl2b2lkICgqcnhfZGVzY193cml0ZSkoc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmLCBkbWFfYWRkcl90IGFkZHIpOworCXVuc2lnbmVkIGxvbmcgKCp0 eF9yZWFkKShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpOworCXZvaWQgKCp0eF93cml0ZSkoc3Ry dWN0IGJjbWFzcF9pbnRmICppbnRmLCBkbWFfYWRkcl90IGFkZHIpOworfTsKKworc3RydWN0IGJj bWFzcF9pbnRmIHsKKwlzdHJ1Y3QgbmV0X2RldmljZQkqbmRldjsKKwlzdHJ1Y3QgYmNtYXNwX3By aXYJKnBhcmVudDsKKworCS8qIEFTUCBDaCAqLworCWludAkJCWNoYW5uZWw7CisJaW50CQkJcG9y dDsKKwljb25zdCBzdHJ1Y3QgYmNtYXNwX2ludGZfb3BzCSpvcHM7CisKKwkvKiBVc2VkIGZvciBz cGxpdHRpbmcgc2hhcmVkIHJlc291cmNlcyAqLworCWludAkJCWluZGV4OworCisJc3RydWN0IG5h cGlfc3RydWN0CXR4X25hcGk7CisJLyogVFggcmluZywgc3RhcnRzIG9uIGEgbmV3IGNhY2hlbGlu ZSBib3VuZGFyeSAqLworCXZvaWQgX19pb21lbQkJKnR4X3NwYl9kbWE7CisJaW50CQkJdHhfc3Bi X2luZGV4OworCWludAkJCXR4X3NwYl9jbGVhbl9pbmRleDsKKwlzdHJ1Y3QgYmNtYXNwX2Rlc2MJ KnR4X3NwYl9jcHU7CisJZG1hX2FkZHJfdAkJdHhfc3BiX2RtYV9hZGRyOworCWRtYV9hZGRyX3QJ CXR4X3NwYl9kbWFfdmFsaWQ7CisJZG1hX2FkZHJfdAkJdHhfc3BiX2RtYV9yZWFkOworCXN0cnVj dCBiY21hc3BfdHhfY2IJKnR4X2NiczsKKworCS8qIFJYIHJpbmcsIHN0YXJ0cyBvbiBhIG5ldyBj YWNoZWxpbmUgYm91bmRhcnkgKi8KKwl2b2lkIF9faW9tZW0JCSpyeF9lZHBrdF9jZmc7CisJdm9p ZCBfX2lvbWVtCQkqcnhfZWRwa3RfZG1hOworCWludAkJCXJ4X2VkcGt0X2luZGV4OworCWludAkJ CXJ4X2J1Zl9vcmRlcjsKKwlzdHJ1Y3QgYmNtYXNwX2Rlc2MJKnJ4X2VkcGt0X2NwdTsKKwlkbWFf YWRkcl90CQlyeF9lZHBrdF9kbWFfYWRkcjsKKwlkbWFfYWRkcl90CQlyeF9lZHBrdF9kbWFfcmVh ZDsKKworCS8qIFJYIGJ1ZmZlciBwcmVmZXRjaGVyIHJpbmcqLworCXZvaWQJCQkqcnhfcmluZ19j cHU7CisJZG1hX2FkZHJfdAkJcnhfcmluZ19kbWE7CisJZG1hX2FkZHJfdAkJcnhfcmluZ19kbWFf dmFsaWQ7CisJc3RydWN0IG5hcGlfc3RydWN0CXJ4X25hcGk7CisKKwlzdHJ1Y3QgYmNtYXNwX3Jl cwlyZXM7CisJdW5zaWduZWQgaW50CQljcmNfZndkOworCisJLyogUEhZIGRldmljZSAqLworCXN0 cnVjdCBkZXZpY2Vfbm9kZQkqcGh5X2RuOworCXN0cnVjdCBkZXZpY2Vfbm9kZQkqbmRldl9kbjsK KwlwaHlfaW50ZXJmYWNlX3QJCXBoeV9pbnRlcmZhY2U7CisJYm9vbAkJCWludGVybmFsX3BoeTsK KwlpbnQJCQlvbGRfcGF1c2U7CisJaW50CQkJb2xkX2xpbms7CisJaW50CQkJb2xkX2R1cGxleDsK KworCXUzMgkJCW1zZ19lbmFibGU7CisJLyogTUlCIGNvdW50ZXJzICovCisJc3RydWN0IGJjbWFz cF9taWJfY291bnRlcnMgbWliOworCisJLyogV2FrZS1vbi1MQU4gKi8KKwl1MzIJCQl3b2xvcHRz OworCXU4CQkJc29wYXNzW1NPUEFTU19NQVhdOworCWludAkJCXdvbF9pcnE7CisJdW5zaWduZWQg aW50CQl3b2xfaXJxX2VuYWJsZWQ6MTsKKworCXN0cnVjdCBldGh0b29sX2VlZQllZWU7Cit9Owor CisjZGVmaW5lIE5VTV9ORVRfRklMVEVSUwkJCQkzMgorc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVy IHsKKwlzdHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMJZnM7CisKKwlib29sCQkJCWNsYWltZWQ7 CisJYm9vbAkJCQl3YWtlX2ZpbHRlcjsKKworCWludAkJCQlwb3J0OworCXVuc2lnbmVkIGludAkJ CWh3X2luZGV4OworfTsKKworI2RlZmluZSBOVU1fTURBX0ZJTFRFUlMJCQkJMzIKK3N0cnVjdCBi Y21hc3BfbWRhX2ZpbHRlciB7CisJLyogQ3VycmVudCBvd25lciBvZiB0aGlzIGZpbHRlciAqLwor CWludAkJcG9ydDsKKwlib29sCQllbjsKKwl1OAkJYWRkcltFVEhfQUxFTl07CisJdTgJCW1hc2tb RVRIX0FMRU5dOworfTsKKworc3RydWN0IGJjbWFzcF9wcml2OworCitzdHJ1Y3QgYmNtYXNwX2h3 X2luZm8geworCXUzMgkJcnhfY3RybF9mbHVzaDsKKwl1MzIJCXVtYWMyZmI7CisJdTMyCQlyeF9j dHJsX2ZiX291dF9mcmFtZV9jb3VudDsKKwl1MzIJCXJ4X2N0cmxfZmJfZmlsdF9vdXRfZnJhbWVf Y291bnQ7CisJdTMyCQlyeF9jdHJsX2ZiX3J4X2ZpZm9fZGVwdGg7Cit9OworCitzdHJ1Y3QgYmNt YXNwX3BsYXRfZGF0YSB7CisJdm9pZCAoKmluaXRfd29sKShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnBy aXYpOworCXZvaWQgKCplbmFibGVfd29sKShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wg ZW4pOworCXZvaWQgKCpkZXN0cm95X3dvbCkoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KTsKKwlz dHJ1Y3QgYmNtYXNwX2h3X2luZm8JCSpod19pbmZvOworfTsKKworc3RydWN0IGJjbWFzcF9wcml2 IHsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCQkqcGRldjsKKwlzdHJ1Y3QgY2xrCQkJKmNsazsK KworCWludAkJCQlpcnE7CisJdTMyCQkJCWlycV9tYXNrOworCisJaW50CQkJCXdvbF9pcnE7CisJ dW5zaWduZWQgbG9uZwkJCXdvbF9pcnFfZW5hYmxlZF9tYXNrOworCS8qIFdvbCBsb2NrICovCisJ c3RydWN0IG11dGV4CQkJd29sX2xvY2s7CisJdm9pZCAoKmluaXRfd29sKShzdHJ1Y3QgYmNtYXNw X3ByaXYgKnByaXYpOworCXZvaWQgKCplbmFibGVfd29sKShzdHJ1Y3QgYmNtYXNwX2ludGYgKmlu dGYsIGJvb2wgZW4pOworCXZvaWQgKCpkZXN0cm95X3dvbCkoc3RydWN0IGJjbWFzcF9wcml2ICpw cml2KTsKKworCXZvaWQgX19pb21lbQkJCSpiYXNlOworCXN0cnVjdAliY21hc3BfaHdfaW5mbwkJ Kmh3X2luZm87CisKKwl1bnNpZ25lZCBpbnQJCQlpbnRmX2NvdW50OworCXN0cnVjdCBiY21hc3Bf aW50ZgkJKippbnRmczsKKworCXN0cnVjdCBiY21hc3BfbWRhX2ZpbHRlcgltZGFfZmlsdGVyc1tO VU1fTURBX0ZJTFRFUlNdOworCXVuc2lnbmVkIGludAkJCWZpbHRlcnNfY291bnQ7CisJLyogTUFD IGRlc3RpbmF0aW9uIGFkZHJlc3MgZmlsdGVycyBsb2NrICovCisJc3BpbmxvY2tfdAkJCW1kYV9s b2NrOworCisJLyogUHJvdGVjdHMgYWNjZXNzZXMgdG8gQVNQX0NUUkxfQ0xPQ0tfQ1RSTCAqLwor CXNwaW5sb2NrX3QJCQljbGtfbG9jazsKKworCXN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlcgluZXRf ZmlsdGVyc1tOVU1fTkVUX0ZJTFRFUlNdOworCS8qIE1heCBhbW91bnQgb2YgZmlsdGVycyBtaW51 cyByZXNlcnZlZCBmaWx0ZXJzICovCisJdW5zaWduZWQgaW50CQkJbmV0X2ZpbHRlcnNfY291bnRf bWF4OworCS8qIE5ldHdvcmsgZmlsdGVyIGxvY2sgKi8KKwlzdHJ1Y3QgbXV0ZXgJCQluZXRfbG9j azsKK307CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY21hc3BfaW50Zl9yeF9kZXNj X3JlYWQoc3RydWN0IGJjbWFzcF9pbnRmICppPQpudGYpCit7CisJcmV0dXJuIGludGYtPm9wcy0+ cnhfZGVzY19yZWFkKGludGYpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYmNtYXNwX2ludGZf cnhfYnVmZmVyX3dyaXRlKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCQkJICAgICAgIGRt YV9hZGRyX3QgYWRkcikKK3sKKwlpbnRmLT5vcHMtPnJ4X2J1ZmZlcl93cml0ZShpbnRmLCBhZGRy KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGJjbWFzcF9pbnRmX3J4X2Rlc2Nfd3JpdGUoc3Ry dWN0IGJjbWFzcF9pbnRmICppbnRmLAorCQkJCQkgICAgIGRtYV9hZGRyX3QgYWRkcikKK3sKKwlp bnRmLT5vcHMtPnJ4X2Rlc2Nfd3JpdGUoaW50ZiwgYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZyBiY21hc3BfaW50Zl90eF9yZWFkKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50 ZikKK3sKKwlyZXR1cm4gaW50Zi0+b3BzLT50eF9yZWFkKGludGYpOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgYmNtYXNwX2ludGZfdHhfd3JpdGUoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLAor CQkJCQlkbWFfYWRkcl90IGFkZHIpCit7CisJaW50Zi0+b3BzLT50eF93cml0ZShpbnRmLCBhZGRy KTsKK30KKworI2RlZmluZSBfX0JDTUFTUF9JT19NQUNSTyhuYW1lLCBtKQkJCQkJXAorc3RhdGlj IGlubGluZSB1MzIgbmFtZSMjX3JsKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIG9mZikJ CVwKK3sJCQkJCQkJCQlcCisJdTMyIHJlZyA9M0QgcmVhZGxfcmVsYXhlZChpbnRmLT5tICsgb2Zm KTsJCQkJXAorCXJldHVybiByZWc7CQkJCQkJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5l IHZvaWQgbmFtZSMjX3dsKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIHZhbCwgdTMyIG9m ZilcCit7CQkJCQkJCQkJXAorCXdyaXRlbF9yZWxheGVkKHZhbCwgaW50Zi0+bSArIG9mZik7CQkJ CVwKK30KKworI2RlZmluZSBCQ01BU1BfSU9fTUFDUk8obmFtZSkJCV9fQkNNQVNQX0lPX01BQ1JP KG5hbWUsIHJlcy5uYW1lKQorI2RlZmluZSBCQ01BU1BfRlBfSU9fTUFDUk8obmFtZSkJX19CQ01B U1BfSU9fTUFDUk8obmFtZSwgbmFtZSkKKworQkNNQVNQX0lPX01BQ1JPKHVtYWMpOworQkNNQVNQ X0lPX01BQ1JPKHVtYWMyZmIpOworQkNNQVNQX0lPX01BQ1JPKHJnbWlpKTsKK0JDTUFTUF9GUF9J T19NQUNSTyh0eF9zcGJfZG1hKTsKK0JDTUFTUF9JT19NQUNSTyh0eF9zcGJfY3RybCk7CitCQ01B U1BfSU9fTUFDUk8odHhfc3BiX3RvcCk7CitCQ01BU1BfSU9fTUFDUk8odHhfZXBrdF9jb3JlKTsK K0JDTUFTUF9JT19NQUNSTyh0eF9wYXVzZV9jdHJsKTsKK0JDTUFTUF9GUF9JT19NQUNSTyhyeF9l ZHBrdF9kbWEpOworQkNNQVNQX0ZQX0lPX01BQ1JPKHJ4X2VkcGt0X2NmZyk7CisKKyNkZWZpbmUg X19CQ01BU1BfRlBfSU9fTUFDUk9fUShuYW1lLCBtKQkJCQkJXAorc3RhdGljIGlubGluZSB1NjQg bmFtZSMjX3JxKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIG9mZikJCVwKK3sJCQkJCQkJ CQlcCisJdTY0IHJlZyA9M0QgcmVhZHFfcmVsYXhlZChpbnRmLT5tICsgb2ZmKTsJCQkJXAorCXJl dHVybiByZWc7CQkJCQkJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSMj X3dxKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTY0IHZhbCwgdTMyIG9mZilcCit7CQkJCQkJ CQkJXAorCXdyaXRlcV9yZWxheGVkKHZhbCwgaW50Zi0+bSArIG9mZik7CQkJCVwKK30KKworI2Rl ZmluZSBCQ01BU1BfRlBfSU9fTUFDUk9fUShuYW1lKQlfX0JDTUFTUF9GUF9JT19NQUNST19RKG5h bWUsIG5hbWUpCisKK0JDTUFTUF9GUF9JT19NQUNST19RKHR4X3NwYl9kbWEpOworQkNNQVNQX0ZQ X0lPX01BQ1JPX1EocnhfZWRwa3RfZG1hKTsKK0JDTUFTUF9GUF9JT19NQUNST19RKHJ4X2VkcGt0 X2NmZyk7CisKKyNkZWZpbmUgUEtUX09GRkxPQURfTk9QCQkJKDAgPDwgMjgpCisjZGVmaW5lIFBL VF9PRkZMT0FEX0hEUl9PUAkJKDEgPDwgMjgpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFJfV1JC QUNLCQlCSVQoMTkpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFJfQ09VTlQoeCkJKCh4KSA8PCAx NikKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0hEUl9TSVpFXzEoeCkJKCh4KSA8PCA0KQorI2RlZmlu ZSAgUEtUX09GRkxPQURfSERSX1NJWkVfMih4KQkoeCkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0hE UjJfU0laRV8yKHgpCSgoeCkgPDwgMjQpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFIyX1NJWkVf Myh4KQkoKHgpIDw8IDEyKQorI2RlZmluZSAgUEtUX09GRkxPQURfSERSMl9TSVpFXzQoeCkJKHgp CisjZGVmaW5lIFBLVF9PRkZMT0FEX0VQS1RfT1AJCSgyIDw8IDI4KQorI2RlZmluZSAgUEtUX09G RkxPQURfRVBLVF9XUkJBQ0sJQklUKDIzKQorI2RlZmluZSAgUEtUX09GRkxPQURfRVBLVF9JUCh4 KQkJKCh4KSA8PCAyMSkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0VQS1RfVFAoeCkJCSgoeCkgPDwg MTkpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9FUEtUX0xFTih4KQkoKHgpIDw8IDE2KQorI2RlZmlu ZSAgUEtUX09GRkxPQURfRVBLVF9DU1VNX0wzCUJJVCgxNSkKKyNkZWZpbmUgIFBLVF9PRkZMT0FE X0VQS1RfQ1NVTV9MMglCSVQoMTQpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9FUEtUX0lEKHgpCQko KHgpIDw8IDEyKQorI2RlZmluZSAgUEtUX09GRkxPQURfRVBLVF9TRVEoeCkJKCh4KSA8PCAxMCkK KyNkZWZpbmUgIFBLVF9PRkZMT0FEX0VQS1RfVFMoeCkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgIFBL VF9PRkZMT0FEX0VQS1RfQkxPQyh4KQkoeCkKKyNkZWZpbmUgUEtUX09GRkxPQURfRU5EX09QCQko NyA8PCAyOCkKKworc3RydWN0IGJjbWFzcF9wa3Rfb2ZmbG9hZCB7CisJX19iZTMyCQlub3A7CisJ X19iZTMyCQloZWFkZXI7CisJX19iZTMyCQloZWFkZXIyOworCV9fYmUzMgkJZXBrdDsKKwlfX2Jl MzIJCWVuZDsKK307CisKKyNkZWZpbmUgQkNNQVNQX0NPUkVfSU9fTUFDUk8obmFtZSwgb2Zmc2V0 KQkJCQlcCitzdGF0aWMgaW5saW5lIHUzMiBuYW1lIyNfY29yZV9ybChzdHJ1Y3QgYmNtYXNwX3By aXYgKnByaXYsCQlcCisJCQkJIHUzMiBvZmYpCQkJCVwKK3sJCQkJCQkJCQlcCisJdTMyIHJlZyA9 M0QgcmVhZGxfcmVsYXhlZChwcml2LT5iYXNlICsgKG9mZnNldCkgKyBvZmYpOwkJXAorCXJldHVy biByZWc7CQkJCQkJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSMjX2Nv cmVfd2woc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LAkJXAorCQkJCSAgdTMyIHZhbCwgdTMyIG9m ZikJCQlcCit7CQkJCQkJCQkJXAorCXdyaXRlbF9yZWxheGVkKHZhbCwgcHJpdi0+YmFzZSArIChv ZmZzZXQpICsgb2ZmKTsJCVwKK30KKworQkNNQVNQX0NPUkVfSU9fTUFDUk8oaW50cjIsIEFTUF9J TlRSMl9PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8od2FrZXVwX2ludHIyLCBBU1BfV0FL RVVQX0lOVFIyX09GRlNFVCk7CitCQ01BU1BfQ09SRV9JT19NQUNSTyh0eF9hbmFseXRpY3MsIEFT UF9UWF9BTkFMWVRJQ1NfT0ZGU0VUKTsKK0JDTUFTUF9DT1JFX0lPX01BQ1JPKHJ4X2FuYWx5dGlj cywgQVNQX1JYX0FOQUxZVElDU19PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8ocnhfY3Ry bCwgQVNQX1JYX0NUUkxfT0ZGU0VUKTsKK0JDTUFTUF9DT1JFX0lPX01BQ1JPKHJ4X2ZpbHRlciwg QVNQX1JYX0ZJTFRFUl9PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8ocnhfZWRwa3QsIEFT UF9FRFBLVF9PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8oY3RybCwgQVNQX0NUUkwpOwor CitzdHJ1Y3QgYmNtYXNwX2ludGYgKmJjbWFzcF9pbnRlcmZhY2VfY3JlYXRlKHN0cnVjdCBiY21h c3BfcHJpdiAqcHJpdiwKKwkJCQkJICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbmRldl9kbiwgaW50 IGkpOworCit2b2lkIGJjbWFzcF9pbnRlcmZhY2VfZGVzdHJveShzdHJ1Y3QgYmNtYXNwX2ludGYg KmludGYsIGJvb2wgdW5yZWdpc3Rlcik7CisKK3ZvaWQgYmNtYXNwX2VuYWJsZV90eF9pcnEoc3Ry dWN0IGJjbWFzcF9pbnRmICppbnRmLCBpbnQgZW4pOworCit2b2lkIGJjbWFzcF9lbmFibGVfcnhf aXJxKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgaW50IGVuKTsKKwordm9pZCBiY21hc3BfZmx1 c2hfcnhfcG9ydChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpOworCitleHRlcm4gY29uc3Qgc3Ry dWN0IGV0aHRvb2xfb3BzIGJjbWFzcF9ldGh0b29sX29wczsKKworaW50IGJjbWFzcF9pbnRlcmZh Y2Vfc3VzcGVuZChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpOworCitpbnQgYmNtYXNwX2ludGVy ZmFjZV9yZXN1bWUoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmKTsKKwordm9pZCBiY21hc3Bfc2V0 X3Byb21pc2Moc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKTsKKwordm9pZCBiY21h c3Bfc2V0X2FsbG11bHRpKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbik7CisKK3Zv aWQgYmNtYXNwX3NldF9icm9hZChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgZW4pOwor Cit2b2lkIGJjbWFzcF9zZXRfb2FkZHIoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBjb25zdCB1 bnNpZ25lZCBjaGFyICphZGRyLAorCQkgICAgICBib29sIGVuKTsKKworaW50IGJjbWFzcF9zZXRf ZW5fbWRhX2ZpbHRlcihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIHVuc2lnbmVkIGNoYXIgKmFk ZHIsCisJCQkgICAgIHVuc2lnbmVkIGNoYXIgKm1hc2spOworCit2b2lkIGJjbWFzcF9kaXNhYmxl X2FsbF9maWx0ZXJzKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50Zik7CisKK3ZvaWQgYmNtYXNwX2Nv cmVfY2xvY2tfc2V0X2ludGYoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKTsKKwor c3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpiY21hc3BfbmV0ZmlsdF9nZXRfaW5pdChzdHJ1Y3Qg YmNtYXNwX2ludGYgKmludGYsCisJCQkJCQkgIGludCBsb2MsIGJvb2wgd2FrZV9maWx0ZXIsCisJ CQkJCQkgIGJvb2wgaW5pdCk7CisKK2Jvb2wgYmNtYXNwX25ldGZpbHRfY2hlY2tfZHVwKHN0cnVj dCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCSAgICAgIHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3Bl YyAqZnMpOworCit2b2lkIGJjbWFzcF9uZXRmaWx0X3JlbGVhc2Uoc3RydWN0IGJjbWFzcF9pbnRm ICppbnRmLAorCQkJICAgIHN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlciAqbmZpbHQpOworCitpbnQg YmNtYXNwX25ldGZpbHRfZ2V0X2FjdGl2ZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpOworCit2 b2lkIGJjbWFzcF9uZXRmaWx0X2dldF9hbGxfYWN0aXZlKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50 ZiwgdTMyICpydWxlX2xvYz0KcywKKwkJCQkgICB1MzIgKnJ1bGVfY250KTsKKwordm9pZCBiY21h c3BfbmV0ZmlsdF9zdXNwZW5kKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50Zik7CisKK3ZvaWQgYmNt YXNwX2VlZV9lbmFibGVfc2V0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbmFibGUp OworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3Ay L2JjbWFzcF9ldGh0b29sLmMgYi9kcml2ZXJzLz0KbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIv YmNtYXNwX2V0aHRvb2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmNlMDRhYjIxNjYxNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jy b2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYwpAQCAtMCwwICsxLDU2OCBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyNkZWZpbmUgcHJfZm10KGZtdCkJCQkJImJjbWFz cF9ldGh0b29sOiAiIGZtdAorCisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUg PGxpbnV4L2V0aHRvb2wuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImJjbWFzcC5oIgorI2luY2x1 ZGUgImJjbWFzcF9pbnRmX2RlZnMuaCIKKworLyogc3RhbmRhcmQgZXRodG9vbCBzdXBwb3J0IGZ1 bmN0aW9ucy4gKi8KK2VudW0gYmNtYXNwX3N0YXRfdHlwZSB7CisJQkNNQVNQX1NUQVRfTkVUREVW ID0zRCAtMSwKKwlCQ01BU1BfU1RBVF9NSUJfUlgsCisJQkNNQVNQX1NUQVRfTUlCX1RYLAorCUJD TUFTUF9TVEFUX1JVTlQsCisJQkNNQVNQX1NUQVRfUlhfRURQS1QsCisJQkNNQVNQX1NUQVRfUlhf Q1RSTCwKKwlCQ01BU1BfU1RBVF9TT0ZULAorfTsKKworc3RydWN0IGJjbWFzcF9zdGF0cyB7CisJ Y2hhciBzdGF0X3N0cmluZ1tFVEhfR1NUUklOR19MRU5dOworCWludCBzdGF0X3NpemVvZjsKKwlp bnQgc3RhdF9vZmZzZXQ7CisJZW51bSBiY21hc3Bfc3RhdF90eXBlIHR5cGU7CisJLyogcmVnaXN0 ZXIgb2Zmc2V0IGZyb20gYmFzZSBmb3IgbWlzYyBjb3VudGVycyAqLworCXUxNiByZWdfb2Zmc2V0 OworfTsKKworI2RlZmluZSBTVEFUX05FVERFVihtKSB7IFwKKwkuc3RhdF9zdHJpbmcgPTNEIF9f c3RyaW5naWZ5KG0pLCBcCisJLnN0YXRfc2l6ZW9mID0zRCBzaXplb2YoKChzdHJ1Y3QgbmV0X2Rl dmljZV9zdGF0cyAqKTApLT5tKSwgXAorCS5zdGF0X29mZnNldCA9M0Qgb2Zmc2V0b2Yoc3RydWN0 IG5ldF9kZXZpY2Vfc3RhdHMsIG0pLCBcCisJLnR5cGUgPTNEIEJDTUFTUF9TVEFUX05FVERFViwg XAorfQorCisjZGVmaW5lIFNUQVRfQkNNQVNQX01JQihzdHIsIG0sIF90eXBlKSB7IFwKKwkuc3Rh dF9zdHJpbmcgPTNEIHN0ciwgXAorCS5zdGF0X3NpemVvZiA9M0Qgc2l6ZW9mKCgoc3RydWN0IGJj bWFzcF9pbnRmICopMCktPm0pLCBcCisJLnN0YXRfb2Zmc2V0ID0zRCBvZmZzZXRvZihzdHJ1Y3Qg YmNtYXNwX2ludGYsIG0pLCBcCisJLnR5cGUgPTNEIF90eXBlLCBcCit9CisKKyNkZWZpbmUgU1RB VF9CQ01BU1BfT0ZGU0VUKHN0ciwgbSwgX3R5cGUsIG9mZnNldCkgeyBcCisJLnN0YXRfc3RyaW5n ID0zRCBzdHIsIFwKKwkuc3RhdF9zaXplb2YgPTNEIHNpemVvZigoKHN0cnVjdCBiY21hc3BfaW50 ZiAqKTApLT5tKSwgXAorCS5zdGF0X29mZnNldCA9M0Qgb2Zmc2V0b2Yoc3RydWN0IGJjbWFzcF9p bnRmLCBtKSwgXAorCS50eXBlID0zRCBfdHlwZSwgXAorCS5yZWdfb2Zmc2V0ID0zRCBvZmZzZXQs IFwKK30KKworI2RlZmluZSBTVEFUX0JDTUFTUF9NSUJfUlgoc3RyLCBtKSBcCisJU1RBVF9CQ01B U1BfTUlCKHN0ciwgbSwgQkNNQVNQX1NUQVRfTUlCX1JYKQorI2RlZmluZSBTVEFUX0JDTUFTUF9N SUJfVFgoc3RyLCBtKSBcCisJU1RBVF9CQ01BU1BfTUlCKHN0ciwgbSwgQkNNQVNQX1NUQVRfTUlC X1RYKQorI2RlZmluZSBTVEFUX0JDTUFTUF9SVU5UKHN0ciwgbSkgXAorCVNUQVRfQkNNQVNQX01J QihzdHIsIG0sIEJDTUFTUF9TVEFUX1JVTlQpCisjZGVmaW5lIFNUQVRfQkNNQVNQX1JYX0VEUEtU KHN0ciwgbSwgb2Zmc2V0KSBcCisJU1RBVF9CQ01BU1BfT0ZGU0VUKHN0ciwgbSwgQkNNQVNQX1NU QVRfUlhfRURQS1QsIG9mZnNldCkKKyNkZWZpbmUgU1RBVF9CQ01BU1BfUlhfQ1RSTChzdHIsIG0s IG9mZnNldCkgXAorCVNUQVRfQkNNQVNQX09GRlNFVChzdHIsIG0sIEJDTUFTUF9TVEFUX1JYX0NU UkwsIG9mZnNldCkKKyNkZWZpbmUgU1RBVF9CQ01BU1BfU09GVF9NSUIobSkgXAorCVNUQVRfQkNN QVNQX01JQihfX3N0cmluZ2lmeShtKSwgbWliLm0sIEJDTUFTUF9TVEFUX1NPRlQpCisKKy8qIFRo ZXJlIGlzIGEgMHgxMCBnYXAgaW4gaGFyZHdhcmUgYmV0d2VlbiB0aGUgZW5kIG9mIFJYIGFuZCBi ZWdpbm5pbmcgb2YgPQpUWAorICogc3RhdHMgYW5kIHRoZW4gYmV0d2VlbiB0aGUgZW5kIG9mIFRY IHN0YXRzIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBSWCA9ClJVTlQuCisgKiBUaGUgc29mdHdh cmUgc3RydWN0dXJlIGFscmVhZHkgYWNjb3VudHMgZm9yIHNpemVvZih1MzIpIGJldHdlZW4gbWVt YmVycz0KIHNvCisgKiBuZWVkIHRvIGFkZCAweGMgdG8gb2Zmc2V0IGNvcnJlY3RseSBpbnRvIHRo ZSBoYXJkd2FyZSByZWdpc3Rlci4KKyAqLworI2RlZmluZSBCQ01BU1BfU1RBVF9PRkZTRVQJMHhj CisKKy8qIEhhcmR3YXJlIGNvdW50ZXJzIG11c3QgYmUga2VwdCBpbiBzeW5jIGJlY2F1c2UgdGhl IG9yZGVyL29mZnNldAorICogaXMgaW1wb3J0YW50IGhlcmUgKG9yZGVyIGluIHN0cnVjdHVyZSBk ZWNsYXJhdGlvbiA9M0Qgb3JkZXIgaW4gaGFyZHdhcmUpCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYmNtYXNwX3N0YXRzIGJjbWFzcF9nc3RyaW5nc19zdGF0c1tdID0zRCB7CisJLyogZ2VuZXJh bCBzdGF0cyAqLworCVNUQVRfTkVUREVWKHJ4X3BhY2tldHMpLAorCVNUQVRfTkVUREVWKHR4X3Bh Y2tldHMpLAorCVNUQVRfTkVUREVWKHJ4X2J5dGVzKSwKKwlTVEFUX05FVERFVih0eF9ieXRlcyks CisJU1RBVF9ORVRERVYocnhfZXJyb3JzKSwKKwlTVEFUX05FVERFVih0eF9lcnJvcnMpLAorCVNU QVRfTkVUREVWKHJ4X2Ryb3BwZWQpLAorCVNUQVRfTkVUREVWKHR4X2Ryb3BwZWQpLAorCVNUQVRf TkVUREVWKG11bHRpY2FzdCksCisJLyogVW5pTUFDIFJTViBjb3VudGVycyAqLworCVNUQVRfQkNN QVNQX01JQl9SWCgicnhfNjRfb2N0ZXRzIiwgbWliLnJ4LnBrdF9jbnQuY250XzY0KSwKKwlTVEFU X0JDTUFTUF9NSUJfUlgoInJ4XzY1XzEyN19vY3QiLCBtaWIucngucGt0X2NudC5jbnRfMTI3KSwK KwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4XzEyOF8yNTVfb2N0IiwgbWliLnJ4LnBrdF9jbnQuY250 XzI1NSksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF8yNTZfNTExX29jdCIsIG1pYi5yeC5wa3Rf Y250LmNudF81MTEpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfNTEyXzEwMjNfb2N0IiwgbWli LnJ4LnBrdF9jbnQuY250XzEwMjMpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfMTAyNF8xNTE4 X29jdCIsIG1pYi5yeC5wa3RfY250LmNudF8xNTE4KSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4 X3ZsYW5fMTUxOV8xNTIyX29jdCIsIG1pYi5yeC5wa3RfY250LmNudF9tZ3YpLAorCVNUQVRfQkNN QVNQX01JQl9SWCgicnhfMTUyMl8yMDQ3X29jdCIsIG1pYi5yeC5wa3RfY250LmNudF8yMDQ3KSwK KwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4XzIwNDhfNDA5NV9vY3QiLCBtaWIucngucGt0X2NudC5j bnRfNDA5NSksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF80MDk2XzkyMTZfb2N0IiwgbWliLnJ4 LnBrdF9jbnQuY250XzkyMTYpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfcGt0cyIsIG1pYi5y eC5wa3QpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfYnl0ZXMiLCBtaWIucnguYnl0ZXMpLAor CVNUQVRfQkNNQVNQX01JQl9SWCgicnhfbXVsdGljYXN0IiwgbWliLnJ4Lm1jYSksCisJU1RBVF9C Q01BU1BfTUlCX1JYKCJyeF9icm9hZGNhc3QiLCBtaWIucnguYmNhKSwKKwlTVEFUX0JDTUFTUF9N SUJfUlgoInJ4X2ZjcyIsIG1pYi5yeC5mY3MpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfY29u dHJvbCIsIG1pYi5yeC5jZiksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9wYXVzZSIsIG1pYi5y eC5wZiksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF91bmtub3duIiwgbWliLnJ4LnVvKSwKKwlT VEFUX0JDTUFTUF9NSUJfUlgoInJ4X2FsaWduIiwgbWliLnJ4LmFsbiksCisJU1RBVF9CQ01BU1Bf TUlCX1JYKCJyeF9vdXRyYW5nZSIsIG1pYi5yeC5mbHIpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgi cnhfY29kZSIsIG1pYi5yeC5jZGUpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfY2FycmllciIs IG1pYi5yeC5mY3IpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfb3ZlcnNpemUiLCBtaWIucngu b3ZyKSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4X2phYmJlciIsIG1pYi5yeC5qYnIpLAorCVNU QVRfQkNNQVNQX01JQl9SWCgicnhfbXR1X2VyciIsIG1pYi5yeC5tdHVlKSwKKwlTVEFUX0JDTUFT UF9NSUJfUlgoInJ4X2dvb2RfcGt0cyIsIG1pYi5yeC5wb2spLAorCVNUQVRfQkNNQVNQX01JQl9S WCgicnhfdW5pY2FzdCIsIG1pYi5yeC51YyksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9wcHAi LCBtaWIucngucHBwKSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4X2NyYyIsIG1pYi5yeC5yY3Jj KSwKKwkvKiBVbmlNQUMgVFNWIGNvdW50ZXJzICovCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF82 NF9vY3RldHMiLCBtaWIudHgucGt0X2NudC5jbnRfNjQpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgi dHhfNjVfMTI3X29jdCIsIG1pYi50eC5wa3RfY250LmNudF8xMjcpLAorCVNUQVRfQkNNQVNQX01J Ql9UWCgidHhfMTI4XzI1NV9vY3QiLCBtaWIudHgucGt0X2NudC5jbnRfMjU1KSwKKwlTVEFUX0JD TUFTUF9NSUJfVFgoInR4XzI1Nl81MTFfb2N0IiwgbWliLnR4LnBrdF9jbnQuY250XzUxMSksCisJ U1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF81MTJfMTAyM19vY3QiLCBtaWIudHgucGt0X2NudC5jbnRf MTAyMyksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF8xMDI0XzE1MThfb2N0IiwgbWliLnR4LnBr dF9jbnQuY250XzE1MTgpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfdmxhbl8xNTE5XzE1MjJf b2N0IiwgbWliLnR4LnBrdF9jbnQuY250X21ndiksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF8x NTIyXzIwNDdfb2N0IiwgbWliLnR4LnBrdF9jbnQuY250XzIwNDcpLAorCVNUQVRfQkNNQVNQX01J Ql9UWCgidHhfMjA0OF80MDk1X29jdCIsIG1pYi50eC5wa3RfY250LmNudF80MDk1KSwKKwlTVEFU X0JDTUFTUF9NSUJfVFgoInR4XzQwOTZfOTIxNl9vY3QiLCBtaWIudHgucGt0X2NudC5jbnRfOTIx NiksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF9wa3RzIiwgbWliLnR4LnBrdHMpLAorCVNUQVRf QkNNQVNQX01JQl9UWCgidHhfbXVsdGljYXN0IiwgbWliLnR4Lm1jYSksCisJU1RBVF9CQ01BU1Bf TUlCX1RYKCJ0eF9icm9hZGNhc3QiLCBtaWIudHguYmNhKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgo InR4X3BhdXNlIiwgbWliLnR4LnBmKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X2NvbnRyb2wi LCBtaWIudHguY2YpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfZmNzX2VyciIsIG1pYi50eC5m Y3MpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfb3ZlcnNpemUiLCBtaWIudHgub3ZyKSwKKwlT VEFUX0JDTUFTUF9NSUJfVFgoInR4X2RlZmVyIiwgbWliLnR4LmRyZiksCisJU1RBVF9CQ01BU1Bf TUlCX1RYKCJ0eF9leGNlc3NfZGVmZXIiLCBtaWIudHguZWRmKSwKKwlTVEFUX0JDTUFTUF9NSUJf VFgoInR4X3NpbmdsZV9jb2wiLCBtaWIudHguc2NsKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4 X211bHRpX2NvbCIsIG1pYi50eC5tY2wpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfbGF0ZV9j b2wiLCBtaWIudHgubGNsKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X2V4Y2Vzc19jb2wiLCBt aWIudHguZWNsKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X2ZyYWdzIiwgbWliLnR4LmZyZyks CisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF90b3RhbF9jb2wiLCBtaWIudHgubmNsKSwKKwlTVEFU X0JDTUFTUF9NSUJfVFgoInR4X2phYmJlciIsIG1pYi50eC5qYnIpLAorCVNUQVRfQkNNQVNQX01J Ql9UWCgidHhfYnl0ZXMiLCBtaWIudHguYnl0ZXMpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhf Z29vZF9wa3RzIiwgbWliLnR4LnBvayksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF91bmljYXN0 IiwgbWliLnR4LnVjKSwKKwkvKiBVbmlNQUMgUlVOVCBjb3VudGVycyAqLworCVNUQVRfQkNNQVNQ X1JVTlQoInJ4X3J1bnRfcGt0cyIsIG1pYi5yeF9ydW50X2NudCksCisJU1RBVF9CQ01BU1BfUlVO VCgicnhfcnVudF92YWxpZF9mY3MiLCBtaWIucnhfcnVudF9mY3MpLAorCVNUQVRfQkNNQVNQX1JV TlQoInJ4X3J1bnRfaW52YWxfZmNzX2FsaWduIiwgbWliLnJ4X3J1bnRfZmNzX2FsaWduKSwKKwlT VEFUX0JDTUFTUF9SVU5UKCJyeF9ydW50X2J5dGVzIiwgbWliLnJ4X3J1bnRfYnl0ZXMpLAorCS8q IEVEUEtUIGNvdW50ZXJzICovCisJU1RBVF9CQ01BU1BfUlhfRURQS1QoImVkcGt0X3RzIiwgbWli LmVkcGt0X3RzLAorCQkJICAgICBBU1BfRURQS1RfUlhfVFNfQ09VTlRFUiksCisJU1RBVF9CQ01B U1BfUlhfRURQS1QoImVkcGt0X3J4X3BrdF9jbnQiLCBtaWIuZWRwa3RfcnhfcGt0X2NudCwKKwkJ CSAgICAgQVNQX0VEUEtUX1JYX1BLVF9DTlQpLAorCVNUQVRfQkNNQVNQX1JYX0VEUEtUKCJlZHBr dF9oZHJfZXh0X2NudCIsIG1pYi5lZHBrdF9oZHJfZXh0X2NudCwKKwkJCSAgICAgQVNQX0VEUEtU X0hEUl9FWFRSX0NOVCksCisJU1RBVF9CQ01BU1BfUlhfRURQS1QoImVkcGt0X2hkcl9vdXRfY250 IiwgbWliLmVkcGt0X2hkcl9vdXRfY250LAorCQkJICAgICBBU1BfRURQS1RfSERSX09VVF9DTlQp LAorCS8qIEFTUCBSWCBjb250cm9sICovCisJU1RBVF9CQ01BU1BfUlhfQ1RSTCgidW1hY19mcm1f Y250IiwgbWliLnVtYWNfZnJtX2NudCwKKwkJCSAgICBBU1BfUlhfQ1RSTF9VTUFDXzBfRlJBTUVf Q09VTlQpLAorCVNUQVRfQkNNQVNQX1JYX0NUUkwoImZiX2ZybV9jbnQiLCBtaWIuZmJfZnJtX2Nu dCwKKwkJCSAgICBBU1BfUlhfQ1RSTF9GQl8wX0ZSQU1FX0NPVU5UKSwKKwlTVEFUX0JDTUFTUF9S WF9DVFJMKCJmYl9vdXRfZnJtX2NudCIsIG1pYi5mYl9vdXRfZnJtX2NudCwKKwkJCSAgICBBU1Bf UlhfQ1RSTF9GQl9PVVRfRlJBTUVfQ09VTlQpLAorCVNUQVRfQkNNQVNQX1JYX0NUUkwoImZiX2Zp bHRfb3V0X2ZybV9jbnQiLCBtaWIuZmJfZmlsdF9vdXRfZnJtX2NudCwKKwkJCSAgICBBU1BfUlhf Q1RSTF9GQl9GSUxUX09VVF9GUkFNRV9DT1VOVCksCisJU1RBVF9CQ01BU1BfUlhfQ1RSTCgiZmJf cnhfZmlmb19kZXB0aCIsIG1pYi5mYl9yeF9maWZvX2RlcHRoLAorCQkJICAgIEFTUF9SWF9DVFJM X0ZCX1JYX0ZJRk9fREVQVEgpLAorCS8qIFNvZnR3YXJlIG1haW50YWluZWQgc3RhdGlzdGljcyAq LworCVNUQVRfQkNNQVNQX1NPRlRfTUlCKGFsbG9jX3J4X2J1ZmZfZmFpbGVkKSwKKwlTVEFUX0JD TUFTUF9TT0ZUX01JQihhbGxvY19yeF9za2JfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01J QihyeF9kbWFfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQih0eF9kbWFfZmFpbGVkKSwK KwlTVEFUX0JDTUFTUF9TT0ZUX01JQihtY19maWx0ZXJzX2Z1bGxfY250KSwKKwlTVEFUX0JDTUFT UF9TT0ZUX01JQih1Y19maWx0ZXJzX2Z1bGxfY250KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQihm aWx0ZXJzX2NvbWJpbmVfY250KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQihwcm9taXNjX2ZpbHRl cnNfY250KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQih0eF9yZWFsbG9jX29mZmxvYWRfZmFpbGVk KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQih0eF9yZWFsbG9jX29mZmxvYWQpLAorCit9OworCisj ZGVmaW5lIEJDTUFTUF9TVEFUU19MRU4JQVJSQVlfU0laRShiY21hc3BfZ3N0cmluZ3Nfc3RhdHMp CisKK3N0YXRpYyB1MTYgYmNtYXNwX3N0YXRfZml4dXBfb2Zmc2V0KHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZiwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGJjbWFzcF9zdGF0cyAqcykKK3sKKwlzdHJ1 Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKworCWlmICghc3RyY21wKCJm Yl9vdXRfZnJtX2NudCIsIHMtPnN0YXRfc3RyaW5nKSkKKwkJcmV0dXJuIHByaXYtPmh3X2luZm8t PnJ4X2N0cmxfZmJfb3V0X2ZyYW1lX2NvdW50OworCisJaWYgKCFzdHJjbXAoImZiX2ZpbHRfb3V0 X2ZybV9jbnQiLCBzLT5zdGF0X3N0cmluZykpCisJCXJldHVybiBwcml2LT5od19pbmZvLT5yeF9j dHJsX2ZiX2ZpbHRfb3V0X2ZyYW1lX2NvdW50OworCisJaWYgKCFzdHJjbXAoImZiX3J4X2ZpZm9f ZGVwdGgiLCBzLT5zdGF0X3N0cmluZykpCisJCXJldHVybiBwcml2LT5od19pbmZvLT5yeF9jdHJs X2ZiX3J4X2ZpZm9fZGVwdGg7CisKKwlyZXR1cm4gcy0+cmVnX29mZnNldDsKK30KKworc3RhdGlj IGludCBiY21hc3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHN0 cmluZ19zZXQpCit7CisJc3dpdGNoIChzdHJpbmdfc2V0KSB7CisJY2FzZSBFVEhfU1NfU1RBVFM6 CisJCXJldHVybiBCQ01BU1BfU1RBVFNfTEVOOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU9QTk9U U1VQUDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LCB1MzIgc3RyaW5nc2V0LAorCQkJICAgICAgIHU4ICpkYXRhKQoreworCWlu dCBpOworCisJc3dpdGNoIChzdHJpbmdzZXQpIHsKKwljYXNlIEVUSF9TU19TVEFUUzoKKwkJZm9y IChpID0zRCAwOyBpIDwgQkNNQVNQX1NUQVRTX0xFTjsgaSsrKSB7CisJCQltZW1jcHkoZGF0YSAr IGkgKiBFVEhfR1NUUklOR19MRU4sCisJCQkgICAgICAgYmNtYXNwX2dzdHJpbmdzX3N0YXRzW2ld LnN0YXRfc3RyaW5nLAorCQkJICAgICAgIEVUSF9HU1RSSU5HX0xFTik7CisJCX0KKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0dXJuOworCX0KK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3VwZGF0 ZV9taWJfY291bnRlcnMoc3RydWN0IGJjbWFzcF9pbnRmICpwcml2KQoreworCWludCBpLCBqID0z RCAwOworCisJZm9yIChpID0zRCAwOyBpIDwgQkNNQVNQX1NUQVRTX0xFTjsgaSsrKSB7CisJCWNv bnN0IHN0cnVjdCBiY21hc3Bfc3RhdHMgKnM7CisJCXUxNiBvZmZzZXQgPTNEIDA7CisJCXUzMiB2 YWwgPTNEIDA7CisJCWNoYXIgKnA7CisKKwkJcyA9M0QgJmJjbWFzcF9nc3RyaW5nc19zdGF0c1tp XTsKKwkJc3dpdGNoIChzLT50eXBlKSB7CisJCWNhc2UgQkNNQVNQX1NUQVRfTkVUREVWOgorCQlj YXNlIEJDTUFTUF9TVEFUX1NPRlQ6CisJCQljb250aW51ZTsKKwkJY2FzZSBCQ01BU1BfU1RBVF9S VU5UOgorCQkJb2Zmc2V0ICs9M0QgQkNNQVNQX1NUQVRfT0ZGU0VUOworCQkJZmFsbHRocm91Z2g7 CisJCWNhc2UgQkNNQVNQX1NUQVRfTUlCX1RYOgorCQkJb2Zmc2V0ICs9M0QgQkNNQVNQX1NUQVRf T0ZGU0VUOworCQkJZmFsbHRocm91Z2g7CisJCWNhc2UgQkNNQVNQX1NUQVRfTUlCX1JYOgorCQkJ dmFsID0zRCB1bWFjX3JsKHByaXYsIFVNQ19NSUJfU1RBUlQgKyBqICsgb2Zmc2V0KTsKKwkJCW9m ZnNldCA9M0QgMDsJLyogUmVzZXQgT2Zmc2V0ICovCisJCQlicmVhazsKKwkJY2FzZSBCQ01BU1Bf U1RBVF9SWF9FRFBLVDoKKwkJCXZhbCA9M0QgcnhfZWRwa3RfY29yZV9ybChwcml2LT5wYXJlbnQs IHMtPnJlZ19vZmZzZXQpOworCQkJYnJlYWs7CisJCWNhc2UgQkNNQVNQX1NUQVRfUlhfQ1RSTDoK KwkJCW9mZnNldCA9M0QgYmNtYXNwX3N0YXRfZml4dXBfb2Zmc2V0KHByaXYsIHMpOworCQkJaWYg KG9mZnNldCAhPTNEIEFTUF9SWF9DVFJMX0ZCX0ZJTFRfT1VUX0ZSQU1FX0NPVU5UKQorCQkJCW9m ZnNldCArPTNEIHNpemVvZih1MzIpICogcHJpdi0+cG9ydDsKKwkJCXZhbCA9M0QgcnhfY3RybF9j b3JlX3JsKHByaXYtPnBhcmVudCwgb2Zmc2V0KTsKKwkJCWJyZWFrOworCQl9CisKKwkJaiArPTNE IHMtPnN0YXRfc2l6ZW9mOworCQlwID0zRCAoY2hhciAqKXByaXYgKyBzLT5zdGF0X29mZnNldDsK KwkJcHV0X3VuYWxpZ25lZCh2YWwsICh1MzIgKilwKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJj bWFzcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCSAgICAg c3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLAorCQkJCSAgICAgdTY0ICpkYXRhKQoreworCXN0 cnVjdCBiY21hc3BfaW50ZiAqcHJpdiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgaTsKKwor CWlmIChuZXRpZl9ydW5uaW5nKGRldikpCisJCWJjbWFzcF91cGRhdGVfbWliX2NvdW50ZXJzKHBy aXYpOworCisJZGV2LT5uZXRkZXZfb3BzLT5uZG9fZ2V0X3N0YXRzKGRldik7CisKKwlmb3IgKGkg PTNEIDA7IGkgPCBCQ01BU1BfU1RBVFNfTEVOOyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGJjbWFz cF9zdGF0cyAqczsKKwkJY2hhciAqcDsKKworCQlzID0zRCAmYmNtYXNwX2dzdHJpbmdzX3N0YXRz W2ldOworCQlpZiAocy0+dHlwZSA9M0Q9M0QgQkNNQVNQX1NUQVRfTkVUREVWKQorCQkJcCA9M0Qg KGNoYXIgKikmZGV2LT5zdGF0czsKKwkJZWxzZQorCQkJcCA9M0QgKGNoYXIgKilwcml2OworCQlw ICs9M0Qgcy0+c3RhdF9vZmZzZXQ7CisJCWlmIChzaXplb2YodW5zaWduZWQgbG9uZykgIT0zRCBz aXplb2YodTMyKSAmJgorCQkgICAgcy0+c3RhdF9zaXplb2YgPTNEPTNEIHNpemVvZih1bnNpZ25l ZCBsb25nKSkKKwkJCWRhdGFbaV0gPTNEICoodW5zaWduZWQgbG9uZyAqKXA7CisJCWVsc2UKKwkJ CWRhdGFbaV0gPTNEICoodTMyICopcDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9nZXRf ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBldGh0b29s X2RydmluZm8gKmluZm8pCit7CisJc3Ryc2NweShpbmZvLT5kcml2ZXIsICJiY21hc3AiLCBzaXpl b2YoaW5mby0+ZHJpdmVyKSk7CisJc3Ryc2NweShpbmZvLT5idXNfaW5mbywgZGV2X25hbWUoZGV2 LT5kZXYucGFyZW50KSwKKwkJc2l6ZW9mKGluZm8tPmJ1c19pbmZvKSk7Cit9CisKK3N0YXRpYyB1 MzIgYmNtYXNwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVj dCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKworCXJldHVybiBpbnRm LT5tc2dfZW5hYmxlOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc2V0X21zZ2xldmVsKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsIHUzMiBsZXZlbCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmlu dGYgPTNEIG5ldGRldl9wcml2KGRldik7CisKKwlpbnRmLT5tc2dfZW5hYmxlID0zRCBsZXZlbDsK K30KKworI2RlZmluZSBCQ01BU1BfU1VQUE9SVEVEX1dBS0UgICAoV0FLRV9NQUdJQyB8IFdBS0Vf TUFHSUNTRUNVUkUgfCBXQUtFX0ZJTFQ9CkVSKQorc3RhdGljIHZvaWQgYmNtYXNwX2dldF93b2wo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyA9Cip3b2wpCit7 CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYpOworCisJd29s LT5zdXBwb3J0ZWQgPTNEIEJDTUFTUF9TVVBQT1JURURfV0FLRTsKKwl3b2wtPndvbG9wdHMgPTNE IGludGYtPndvbG9wdHM7CisJbWVtc2V0KHdvbC0+c29wYXNzLCAwLCBzaXplb2Yod29sLT5zb3Bh c3MpKTsKKworCWlmICh3b2wtPndvbG9wdHMgJiBXQUtFX01BR0lDU0VDVVJFKQorCQltZW1jcHko d29sLT5zb3Bhc3MsIGludGYtPnNvcGFzcywgc2l6ZW9mKGludGYtPnNvcGFzcykpOworfQorCitz dGF0aWMgaW50IGJjbWFzcF9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBl dGh0b29sX3dvbGluZm8gKj0Kd29sKQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0Qg bmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBh cmVudDsKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmcHJpdi0+cGRldi0+ZGV2OworCisJaWYg KCFkZXZpY2VfY2FuX3dha2V1cChrZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJaWYg KHdvbC0+d29sb3B0cyAmIH5CQ01BU1BfU1VQUE9SVEVEX1dBS0UpCisJCXJldHVybiAtRU9QTk9U U1VQUDsKKworCS8qIEludGVyZmFjZSBTcGVjaWZpYyAqLworCWludGYtPndvbG9wdHMgPTNEIHdv bC0+d29sb3B0czsKKwlpZiAoaW50Zi0+d29sb3B0cyAmIFdBS0VfTUFHSUNTRUNVUkUpCisJCW1l bWNweShpbnRmLT5zb3Bhc3MsIHdvbC0+c29wYXNzLCBzaXplb2Yod29sLT5zb3Bhc3MpKTsKKwor CW11dGV4X2xvY2soJnByaXYtPndvbF9sb2NrKTsKKwlwcml2LT5lbmFibGVfd29sKGludGYsICEh aW50Zi0+d29sb3B0cyk7CisJbXV0ZXhfdW5sb2NrKCZwcml2LT53b2xfbG9jayk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBiY21hc3BfZmxvd19pbnNlcnQoc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwgc3RydWN0IGV0aHRvb2xfcnhuZmM9CiAqY21kKQoreworCXN0cnVjdCBiY21hc3Bf aW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgYmNtYXNwX25ldF9maWx0 ZXIgKm5maWx0ZXI7CisJdTMyIGxvYyA9M0QgY21kLT5mcy5sb2NhdGlvbjsKKwlib29sIHdha2Ug PTNEIGZhbHNlOworCisJaWYgKGNtZC0+ZnMucmluZ19jb29raWUgPTNEPTNEIFJYX0NMU19GTE9X X1dBS0UpCisJCXdha2UgPTNEIHRydWU7CisKKwkvKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBX QUtFIGZpbHRlcnMgKi8KKwlpZiAoIXdha2UpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCXN3 aXRjaCAoY21kLT5mcy5mbG93X3R5cGUgJiB+KEZMT1dfRVhUIHwgRkxPV19NQUNfRVhUKSkgewor CWNhc2UgRVRIRVJfRkxPVzoKKwljYXNlIElQX1VTRVJfRkxPVzoKKwljYXNlIFRDUF9WNF9GTE9X OgorCWNhc2UgVURQX1Y0X0ZMT1c6CisJY2FzZSBUQ1BfVjZfRkxPVzoKKwljYXNlIFVEUF9WNl9G TE9XOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCisJ LyogQ2hlY2sgaWYgZmlsdGVyIGFscmVhZHkgZXhpc3RzICovCisJaWYgKGJjbWFzcF9uZXRmaWx0 X2NoZWNrX2R1cChpbnRmLCAmY21kLT5mcykpCisJCXJldHVybiAtRUlOVkFMOworCisJbmZpbHRl ciA9M0QgYmNtYXNwX25ldGZpbHRfZ2V0X2luaXQoaW50ZiwgbG9jLCB3YWtlLCB0cnVlKTsKKwlp ZiAoSVNfRVJSKG5maWx0ZXIpKQorCQlyZXR1cm4gUFRSX0VSUihuZmlsdGVyKTsKKworCS8qIFJl dHVybiB0aGUgbG9jYXRpb24gd2hlcmUgd2UgZGlkIGluc2VydCB0aGUgZmlsdGVyICovCisJY21k LT5mcy5sb2NhdGlvbiA9M0QgbmZpbHRlci0+aHdfaW5kZXg7CisJbWVtY3B5KCZuZmlsdGVyLT5m cywgJmNtZC0+ZnMsIHNpemVvZihzdHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMpKTsKKworCS8q IFNpbmNlIHdlIG9ubHkgc3VwcG9ydCB3YWtlIGZpbHRlcnMsIGRlZmVyIHJlZ2lzdGVyIHByb2dy YW1taW5nIHRpbGwKKwkgKiBzdXNwZW5kIHRpbWUuCisJICovCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgYmNtYXNwX2Zsb3dfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVj dCBldGh0b29sX3J4bmZjPQogKmNtZCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNE IG5ldGRldl9wcml2KGRldik7CisJc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdGVyOwor CisJbmZpbHRlciA9M0QgYmNtYXNwX25ldGZpbHRfZ2V0X2luaXQoaW50ZiwgY21kLT5mcy5sb2Nh dGlvbiwgZmFsc2UsIGZhbHNlKTsKKwlpZiAoSVNfRVJSKG5maWx0ZXIpKQorCQlyZXR1cm4gUFRS X0VSUihuZmlsdGVyKTsKKworCWJjbWFzcF9uZXRmaWx0X3JlbGVhc2UoaW50ZiwgbmZpbHRlcik7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBiY21hc3BfZmxvd19nZXQoc3RydWN0IGJj bWFzcF9pbnRmICppbnRmLCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyA9CipjbWQpCit7CisJc3RydWN0 IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdGVyOworCisJbmZpbHRlciA9M0QgYmNtYXNwX25ldGZp bHRfZ2V0X2luaXQoaW50ZiwgY21kLT5mcy5sb2NhdGlvbiwgZmFsc2UsIGZhbHNlKTsKKwlpZiAo SVNfRVJSKG5maWx0ZXIpKQorCQlyZXR1cm4gUFRSX0VSUihuZmlsdGVyKTsKKworCW1lbWNweSgm Y21kLT5mcywgJm5maWx0ZXItPmZzLCBzaXplb2YobmZpbHRlci0+ZnMpKTsKKworCWNtZC0+ZGF0 YSA9M0QgTlVNX05FVF9GSUxURVJTOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNt YXNwX3NldF9yeG5mYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9yeG5m YyAqPQpjbWQpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihk ZXYpOworCWludCByZXQgPTNEIC1FT1BOT1RTVVBQOworCisJbXV0ZXhfbG9jaygmaW50Zi0+cGFy ZW50LT5uZXRfbG9jayk7CisKKwlzd2l0Y2ggKGNtZC0+Y21kKSB7CisJY2FzZSBFVEhUT09MX1NS WENMU1JMSU5TOgorCQlyZXQgPTNEIGJjbWFzcF9mbG93X2luc2VydChkZXYsIGNtZCk7CisJCWJy ZWFrOworCWNhc2UgRVRIVE9PTF9TUlhDTFNSTERFTDoKKwkJcmV0ID0zRCBiY21hc3BfZmxvd19k ZWxldGUoZGV2LCBjbWQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlt dXRleF91bmxvY2soJmludGYtPnBhcmVudC0+bmV0X2xvY2spOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCBiY21hc3BfZ2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0 cnVjdCBldGh0b29sX3J4bmZjICo9CmNtZCwKKwkJCSAgICB1MzIgKnJ1bGVfbG9jcykKK3sKKwlz dHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJaW50IGVyciA9 M0QgMDsKKworCW11dGV4X2xvY2soJmludGYtPnBhcmVudC0+bmV0X2xvY2spOworCisJc3dpdGNo IChjbWQtPmNtZCkgeworCWNhc2UgRVRIVE9PTF9HUlhDTFNSTENOVDoKKwkJY21kLT5ydWxlX2Nu dCA9M0QgYmNtYXNwX25ldGZpbHRfZ2V0X2FjdGl2ZShpbnRmKTsKKwkJLyogV2Ugc3VwcG9ydCBz cGVjaWZ5aW5nIHJ1bGUgbG9jYXRpb25zICovCisJCWNtZC0+ZGF0YSB8PTNEIFJYX0NMU19MT0Nf U1BFQ0lBTDsKKwkJYnJlYWs7CisJY2FzZSBFVEhUT09MX0dSWENMU1JVTEU6CisJCWVyciA9M0Qg YmNtYXNwX2Zsb3dfZ2V0KGludGYsIGNtZCk7CisJCWJyZWFrOworCWNhc2UgRVRIVE9PTF9HUlhD TFNSTEFMTDoKKwkJYmNtYXNwX25ldGZpbHRfZ2V0X2FsbF9hY3RpdmUoaW50ZiwgcnVsZV9sb2Nz LCAmY21kLT5ydWxlX2NudCk7CisJCWNtZC0+ZGF0YSA9M0QgTlVNX05FVF9GSUxURVJTOworCQli cmVhazsKKwlkZWZhdWx0OgorCQllcnIgPTNEIC1FT1BOT1RTVVBQOworCQlicmVhazsKKwl9CisK KwltdXRleF91bmxvY2soJmludGYtPnBhcmVudC0+bmV0X2xvY2spOworCisJcmV0dXJuIGVycjsK K30KKwordm9pZCBiY21hc3BfZWVlX2VuYWJsZV9zZXQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRm LCBib29sIGVuYWJsZSkKK3sKKwl1MzIgcmVnOworCisJcmVnID0zRCB1bWFjX3JsKGludGYsIFVN Q19FRUVfQ1RSTCk7CisJaWYgKGVuYWJsZSkKKwkJcmVnIHw9M0QgRUVFX0VOOworCWVsc2UKKwkJ cmVnICY9M0QgfkVFRV9FTjsKKwl1bWFjX3dsKGludGYsIHJlZywgVU1DX0VFRV9DVFJMKTsKKwor CWludGYtPmVlZS5lZWVfZW5hYmxlZCA9M0QgZW5hYmxlOworCWludGYtPmVlZS5lZWVfYWN0aXZl ID0zRCBlbmFibGU7Cit9CisKK3N0YXRpYyBpbnQgYmNtYXNwX2dldF9lZWUoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfZWVlICplKQoreworCXN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgZXRodG9vbF9lZWUgKnAgPTNE ICZpbnRmLT5lZWU7CisKKwlpZiAoIWRldi0+cGh5ZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CWUtPmVlZV9lbmFibGVkID0zRCBwLT5lZWVfZW5hYmxlZDsKKwllLT5lZWVfYWN0aXZlID0zRCBw LT5lZWVfYWN0aXZlOworCWUtPnR4X2xwaV9lbmFibGVkID0zRCBwLT50eF9scGlfZW5hYmxlZDsK KwllLT50eF9scGlfdGltZXIgPTNEIHVtYWNfcmwoaW50ZiwgVU1DX0VFRV9MUElfVElNRVIpOwor CisJcmV0dXJuIHBoeV9ldGh0b29sX2dldF9lZWUoZGV2LT5waHlkZXYsIGUpOworfQorCitzdGF0 aWMgaW50IGJjbWFzcF9zZXRfZWVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0 b29sX2VlZSAqZSkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2 KGRldik7CisJc3RydWN0IGV0aHRvb2xfZWVlICpwID0zRCAmaW50Zi0+ZWVlOworCWludCByZXQ7 CisKKwlpZiAoIWRldi0+cGh5ZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICghcC0+ZWVl X2VuYWJsZWQpIHsKKwkJYmNtYXNwX2VlZV9lbmFibGVfc2V0KGludGYsIGZhbHNlKTsKKwl9IGVs c2UgeworCQlyZXQgPTNEIHBoeV9pbml0X2VlZShkZXYtPnBoeWRldiwgMCk7CisJCWlmIChyZXQp IHsKKwkJCW5ldGlmX2VycihpbnRmLCBodywgZGV2LAorCQkJCSAgIkVFRSBpbml0aWFsaXphdGlv biBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCXVtYWNfd2wo aW50ZiwgZS0+dHhfbHBpX3RpbWVyLCBVTUNfRUVFX0xQSV9USU1FUik7CisJCWludGYtPmVlZS5l ZWVfYWN0aXZlID0zRCByZXQgPj0zRCAwOworCQlpbnRmLT5lZWUudHhfbHBpX2VuYWJsZWQgPTNE IGUtPnR4X2xwaV9lbmFibGVkOworCQliY21hc3BfZWVlX2VuYWJsZV9zZXQoaW50ZiwgdHJ1ZSk7 CisJfQorCisJcmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUoZGV2LT5waHlkZXYsIGUpOworfQor Citjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0zRCB7CisJLmdl dF9kcnZpbmZvCQk9M0QgYmNtYXNwX2dldF9kcnZpbmZvLAorCS5nZXRfd29sCQk9M0QgYmNtYXNw X2dldF93b2wsCisJLnNldF93b2wJCT0zRCBiY21hc3Bfc2V0X3dvbCwKKwkuZ2V0X2xpbmsJCT0z RCBldGh0b29sX29wX2dldF9saW5rLAorCS5nZXRfc3RyaW5ncwkJPTNEIGJjbWFzcF9nZXRfc3Ry aW5ncywKKwkuZ2V0X2V0aHRvb2xfc3RhdHMJPTNEIGJjbWFzcF9nZXRfZXRodG9vbF9zdGF0cywK KwkuZ2V0X3NzZXRfY291bnQJCT0zRCBiY21hc3BfZ2V0X3NzZXRfY291bnQsCisJLmdldF9saW5r X2tzZXR0aW5ncwk9M0QgcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLAorCS5zZXRfbGlu a19rc2V0dGluZ3MJPTNEIHBoeV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncywKKwkuZ2V0X21z Z2xldmVsCQk9M0QgYmNtYXNwX2dldF9tc2dsZXZlbCwKKwkuc2V0X21zZ2xldmVsCQk9M0QgYmNt YXNwX3NldF9tc2dsZXZlbCwKKwkubndheV9yZXNldAkJPTNEIHBoeV9ldGh0b29sX253YXlfcmVz ZXQsCisJLmdldF9yeG5mYwkJPTNEIGJjbWFzcF9nZXRfcnhuZmMsCisJLnNldF9yeG5mYwkJPTNE IGJjbWFzcF9zZXRfcnhuZmMsCisJLnNldF9lZWUJCT0zRCBiY21hc3Bfc2V0X2VlZSwKKwkuZ2V0 X2VlZQkJPTNEIGJjbWFzcF9nZXRfZWVlLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYyBiL2RyaXZlcnMvbmV0PQovZXRoZXJu ZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uOTFlZjUxNjE1ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jCkBAIC0wLDAgKzEsMTM5MyBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyNkZWZpbmUgcHJfZm10KGZt dCkJCQkiYmNtYXNwX2ludGY6ICIgZm10CisKKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+Cisj aW5jbHVkZSA8bGludXgvYnJjbXBoeS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9uZXQuaD4KKyNpbmNs dWRlIDxsaW51eC9vZl9tZGlvLmg+CisjaW5jbHVkZSA8bGludXgvcGh5Lmg+CisjaW5jbHVkZSA8 bGludXgvcGh5X2ZpeGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHRwX2NsYXNzaWZ5Lmg+CisjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bmV0L2lwLmg+CisjaW5j bHVkZSA8bmV0L2lwdjYuaD4KKworI2luY2x1ZGUgImJjbWFzcC5oIgorI2luY2x1ZGUgImJjbWFz cF9pbnRmX2RlZnMuaCIKKworc3RhdGljIGludCBpbmNyX3JpbmcoaW50IGluZGV4LCBpbnQgcmlu Z19jb3VudCkKK3sKKwlpbmRleCsrOworCWlmIChpbmRleCA9M0Q9M0QgcmluZ19jb3VudCkKKwkJ cmV0dXJuIDA7CisKKwlyZXR1cm4gaW5kZXg7Cit9CisKKy8qIFBvaW50cyB0byBsYXN0IGJ5dGUg b2YgZGVzY3JpcHRvciAqLworc3RhdGljIGRtYV9hZGRyX3QgaW5jcl9sYXN0X2J5dGUoZG1hX2Fk ZHJfdCBhZGRyLCBkbWFfYWRkcl90IGJlZywKKwkJCQkgaW50IHJpbmdfY291bnQpCit7CisJZG1h X2FkZHJfdCBlbmQgPTNEIGJlZyArIChyaW5nX2NvdW50ICogREVTQ19TSVpFKTsKKworCWFkZHIg Kz0zRCBERVNDX1NJWkU7CisJaWYgKGFkZHIgPiBlbmQpCisJCXJldHVybiBiZWcgKyBERVNDX1NJ WkUgLSAxOworCisJcmV0dXJuIGFkZHI7Cit9CisKKy8qIFBvaW50cyB0byBmaXJzdCBieXRlIG9m IGRlc2NyaXB0b3IgKi8KK3N0YXRpYyBkbWFfYWRkcl90IGluY3JfZmlyc3RfYnl0ZShkbWFfYWRk cl90IGFkZHIsIGRtYV9hZGRyX3QgYmVnLAorCQkJCSAgaW50IHJpbmdfY291bnQpCit7CisJZG1h X2FkZHJfdCBlbmQgPTNEIGJlZyArIChyaW5nX2NvdW50ICogREVTQ19TSVpFKTsKKworCWFkZHIg Kz0zRCBERVNDX1NJWkU7CisJaWYgKGFkZHIgPj0zRCBlbmQpCisJCXJldHVybiBiZWc7CisKKwly ZXR1cm4gYWRkcjsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2VuYWJsZV90eChzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYsIGludCBlbikKK3sKKwlpZiAoZW4pIHsKKwkJdHhfc3BiX2N0cmxfd2wo aW50ZiwgVFhfU1BCX0NUUkxfRU5BQkxFX0VOLCBUWF9TUEJfQ1RSTF9FTkFCTEUpOworCQl0eF9l cGt0X2NvcmVfd2woaW50ZiwgKFRYX0VQS1RfQ19DRkdfTUlTQ19FTiB8CisJCQkJVFhfRVBLVF9D X0NGR19NSVNDX1BUIHwKKwkJCQkoaW50Zi0+cG9ydCA8PCBUWF9FUEtUX0NfQ0ZHX01JU0NfUFNf U0hJRlQpKSwKKwkJCQlUWF9FUEtUX0NfQ0ZHX01JU0MpOworCX0gZWxzZSB7CisJCXR4X3NwYl9j dHJsX3dsKGludGYsIDB4MCwgVFhfU1BCX0NUUkxfRU5BQkxFKTsKKwkJdHhfZXBrdF9jb3JlX3ds KGludGYsIDB4MCwgVFhfRVBLVF9DX0NGR19NSVNDKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJj bWFzcF9lbmFibGVfcngoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBpbnQgZW4pCit7CisJaWYg KGVuKQorCQlyeF9lZHBrdF9jZmdfd2woaW50ZiwgUlhfRURQS1RfQ0ZHX0VOQUJMRV9FTiwKKwkJ CQlSWF9FRFBLVF9DRkdfRU5BQkxFKTsKKwllbHNlCisJCXJ4X2VkcGt0X2NmZ193bChpbnRmLCAw eDAsIFJYX0VEUEtUX0NGR19FTkFCTEUpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc2V0X3J4 X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwl1bnNpZ25lZCBjaGFyIG1hc2tbXSA9 M0QgezB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmZ9OworCXN0cnVjdCBiY21hc3Bf aW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIg KmhhOworCWludCByZXQ7CisKKwlzcGluX2xvY2tfYmgoJmludGYtPnBhcmVudC0+bWRhX2xvY2sp OworCisJYmNtYXNwX2Rpc2FibGVfYWxsX2ZpbHRlcnMoaW50Zik7CisKKwlpZiAoZGV2LT5mbGFn cyAmIElGRl9QUk9NSVNDKQorCQlnb3RvIHNldF9wcm9taXNjOworCisJYmNtYXNwX3NldF9wcm9t aXNjKGludGYsIDApOworCisJYmNtYXNwX3NldF9icm9hZChpbnRmLCAxKTsKKworCWJjbWFzcF9z ZXRfb2FkZHIoaW50ZiwgZGV2LT5kZXZfYWRkciwgMSk7CisKKwlpZiAoZGV2LT5mbGFncyAmIElG Rl9BTExNVUxUSSkgeworCQliY21hc3Bfc2V0X2FsbG11bHRpKGludGYsIDEpOworCX0gZWxzZSB7 CisJCWJjbWFzcF9zZXRfYWxsbXVsdGkoaW50ZiwgMCk7CisKKwkJbmV0ZGV2X2Zvcl9lYWNoX21j X2FkZHIoaGEsIGRldikgeworCQkJcmV0ID0zRCBiY21hc3Bfc2V0X2VuX21kYV9maWx0ZXIoaW50 ZiwgaGEtPmFkZHIsIG1hc2spOworCQkJaWYgKHJldCkgeworCQkJCWludGYtPm1pYi5tY19maWx0 ZXJzX2Z1bGxfY250Kys7CisJCQkJZ290byBzZXRfcHJvbWlzYzsKKwkJCX0KKwkJfQorCX0KKwor CW5ldGRldl9mb3JfZWFjaF91Y19hZGRyKGhhLCBkZXYpIHsKKwkJcmV0ID0zRCBiY21hc3Bfc2V0 X2VuX21kYV9maWx0ZXIoaW50ZiwgaGEtPmFkZHIsIG1hc2spOworCQlpZiAocmV0KSB7CisJCQlp bnRmLT5taWIudWNfZmlsdGVyc19mdWxsX2NudCsrOworCQkJZ290byBzZXRfcHJvbWlzYzsKKwkJ fQorCX0KKworCXNwaW5fdW5sb2NrX2JoKCZpbnRmLT5wYXJlbnQtPm1kYV9sb2NrKTsKKwlyZXR1 cm47CisKK3NldF9wcm9taXNjOgorCWJjbWFzcF9zZXRfcHJvbWlzYyhpbnRmLCAxKTsKKwlpbnRm LT5taWIucHJvbWlzY19maWx0ZXJzX2NudCsrOworCisJLyogZGlzYWJsZSBhbGwgZmlsdGVycyB1 c2VkIGJ5IHRoaXMgcG9ydCAqLworCWJjbWFzcF9kaXNhYmxlX2FsbF9maWx0ZXJzKGludGYpOwor CisJc3Bpbl91bmxvY2tfYmgoJmludGYtPnBhcmVudC0+bWRhX2xvY2spOworfQorCitzdGF0aWMg dm9pZCBiY21hc3BfY2xlYW5fdHhjYihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGludCBpbmRl eCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3R4X2NiICp0eGNiID0zRCAmaW50Zi0+dHhfY2JzW2luZGV4 XTsKKworCXR4Y2ItPnNrYiA9M0QgTlVMTDsKKwlkbWFfdW5tYXBfYWRkcl9zZXQodHhjYiwgZG1h X2FkZHIsIDApOworCWRtYV91bm1hcF9sZW5fc2V0KHR4Y2IsIGRtYV9sZW4sIDApOworCXR4Y2It Pmxhc3QgPTNEIGZhbHNlOworfQorCitzdGF0aWMgaW50IHR4X3NwYl9yaW5nX2Z1bGwoc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmLCBpbnQgY250KQoreworCWludCBuZXh0X2luZGV4LCBpOworCisJ LyogQ2hlY2sgaWYgd2UgaGF2ZSBlbm91Z2ggcm9vbSBmb3IgY250IGRlc2NyaXB0b3JzICovCisJ Zm9yIChpID0zRCAwOyBpIDwgY250OyBpKyspIHsKKwkJbmV4dF9pbmRleCA9M0QgaW5jcl9yaW5n KGludGYtPnR4X3NwYl9pbmRleCwgREVTQ19SSU5HX0NPVU5UKTsKKwkJaWYgKG5leHRfaW5kZXgg PTNEPTNEIGludGYtPnR4X3NwYl9jbGVhbl9pbmRleCkKKwkJCXJldHVybiAxOworCX0KKworCXJl dHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJjbWFzcF9jc3VtX29mZmxvYWQo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJ CQkJICAgYm9vbCAqY3N1bV9odykKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5l dGRldl9wcml2KGRldik7CisJdTMyIGhlYWRlciA9M0QgMCwgaGVhZGVyMiA9M0QgMCwgZXBrdCA9 M0QgMDsKKwlzdHJ1Y3QgYmNtYXNwX3BrdF9vZmZsb2FkICpvZmZsb2FkOworCXVuc2lnbmVkIGlu dCBoZWFkZXJfY250ID0zRCAwOworCXN0cnVjdCBza19idWZmICpuZXdfc2tiOworCXU4IGlwX3By b3RvOworCisJaWYgKHNrYi0+aXBfc3VtbWVkICE9M0QgQ0hFQ0tTVU1fUEFSVElBTCkKKwkJcmV0 dXJuIHNrYjsKKworCWlmICh1bmxpa2VseShza2JfaGVhZHJvb20oc2tiKSA8IHNpemVvZigqb2Zm bG9hZCkpKSB7CisJCW5ld19za2IgPTNEIHNrYl9yZWFsbG9jX2hlYWRyb29tKHNrYiwgc2l6ZW9m KCpvZmZsb2FkKSk7CisJCWlmICghbmV3X3NrYikgeworCQkJaW50Zi0+bWliLnR4X3JlYWxsb2Nf b2ZmbG9hZF9mYWlsZWQrKzsKKwkJCWdvdG8gaGVscDsKKwkJfQorCisJCWRldl9jb25zdW1lX3Nr Yl9hbnkoc2tiKTsKKwkJc2tiID0zRCBuZXdfc2tiOworCQlpbnRmLT5taWIudHhfcmVhbGxvY19v ZmZsb2FkKys7CisJfQorCisJc3dpdGNoIChza2ItPnByb3RvY29sKSB7CisJY2FzZSBodG9ucyhF VEhfUF9JUCk6CisJCWhlYWRlciB8PTNEIFBLVF9PRkZMT0FEX0hEUl9TSVpFXzIoKGlwX2hkcmxl bihza2IpID4+IDgpICYgMHhmKTsKKwkJaGVhZGVyMiB8PTNEIFBLVF9PRkZMT0FEX0hEUjJfU0la RV8yKGlwX2hkcmxlbihza2IpICYgMHhmZik7CisJCWVwa3QgfD0zRCBQS1RfT0ZGTE9BRF9FUEtU X0lQKDApIHwgUEtUX09GRkxPQURfRVBLVF9DU1VNX0wyOworCQlpcF9wcm90byA9M0QgaXBfaGRy KHNrYiktPnByb3RvY29sOworCQloZWFkZXJfY250ICs9M0QgMjsKKwkJYnJlYWs7CisJY2FzZSBo dG9ucyhFVEhfUF9JUFY2KToKKwkJaGVhZGVyIHw9M0QgUEtUX09GRkxPQURfSERSX1NJWkVfMigo SVA2X0hMRU4gPj4gOCkgJiAweGYpOworCQloZWFkZXIyIHw9M0QgUEtUX09GRkxPQURfSERSMl9T SVpFXzIoSVA2X0hMRU4gJiAweGZmKTsKKwkJZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfSVAo MSkgfCBQS1RfT0ZGTE9BRF9FUEtUX0NTVU1fTDI7CisJCWlwX3Byb3RvID0zRCBpcHY2X2hkcihz a2IpLT5uZXh0aGRyOworCQloZWFkZXJfY250ICs9M0QgMjsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJZ290byBoZWxwOworCX0KKworCXN3aXRjaCAoaXBfcHJvdG8pIHsKKwljYXNlIElQUFJPVE9f VENQOgorCQloZWFkZXIyIHw9M0QgUEtUX09GRkxPQURfSERSMl9TSVpFXzModGNwX2hkcmxlbihz a2IpKTsKKwkJZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfVFAoMCkgfCBQS1RfT0ZGTE9BRF9F UEtUX0NTVU1fTDM7CisJCWhlYWRlcl9jbnQrKzsKKwkJYnJlYWs7CisJY2FzZSBJUFBST1RPX1VE UDoKKwkJaGVhZGVyMiB8PTNEIFBLVF9PRkZMT0FEX0hEUjJfU0laRV8zKFVEUF9ITEVOKTsKKwkJ ZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfVFAoMSkgfCBQS1RfT0ZGTE9BRF9FUEtUX0NTVU1f TDM7CisJCWhlYWRlcl9jbnQrKzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZ290byBoZWxwOwor CX0KKworCW9mZmxvYWQgPTNEIChzdHJ1Y3QgYmNtYXNwX3BrdF9vZmZsb2FkICopc2tiX3B1c2go c2tiLCBzaXplb2YoKm9mZmxvYWQpKTsKKworCWhlYWRlciB8PTNEIFBLVF9PRkZMT0FEX0hEUl9P UCB8IFBLVF9PRkZMT0FEX0hEUl9DT1VOVChoZWFkZXJfY250KSB8CisJCSAgUEtUX09GRkxPQURf SERSX1NJWkVfMShFVEhfSExFTik7CisJZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfT1A7CisK KwlvZmZsb2FkLT5ub3AgPTNEIGh0b25sKFBLVF9PRkZMT0FEX05PUCk7CisJb2ZmbG9hZC0+aGVh ZGVyID0zRCBodG9ubChoZWFkZXIpOworCW9mZmxvYWQtPmhlYWRlcjIgPTNEIGh0b25sKGhlYWRl cjIpOworCW9mZmxvYWQtPmVwa3QgPTNEIGh0b25sKGVwa3QpOworCW9mZmxvYWQtPmVuZCA9M0Qg aHRvbmwoUEtUX09GRkxPQURfRU5EX09QKTsKKwkqY3N1bV9odyA9M0QgdHJ1ZTsKKworCXJldHVy biBza2I7CisKK2hlbHA6CisJc2tiX2NoZWNrc3VtX2hlbHAoc2tiKTsKKworCXJldHVybiBza2I7 Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGJjbWFzcF9yeF9lZHBrdF9kbWFfcnEoc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmKQoreworCXJldHVybiByeF9lZHBrdF9kbWFfcnEoaW50ZiwgUlhf RURQS1RfRE1BX1ZBTElEKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3J4X2VkcGt0X2NmZ193 cShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWQ9CmRyKQoreworCXJ4X2Vk cGt0X2NmZ193cShpbnRmLCBhZGRyLCBSWF9FRFBLVF9SSU5HX0JVRkZFUl9SRUFEKTsKK30KKwor c3RhdGljIHZvaWQgYmNtYXNwX3J4X2VkcGt0X2RtYV93cShzdHJ1Y3QgYmNtYXNwX2ludGYgKmlu dGYsIGRtYV9hZGRyX3QgYWQ9CmRyKQoreworCXJ4X2VkcGt0X2RtYV93cShpbnRmLCBhZGRyLCBS WF9FRFBLVF9ETUFfUkVBRCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGJjbWFzcF90eF9z cGJfZG1hX3JxKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlyZXR1cm4gdHhfc3BiX2Rt YV9ycShpbnRmLCBUWF9TUEJfRE1BX1JFQUQpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfdHhf c3BiX2RtYV93cShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWRkcikKK3sK Kwl0eF9zcGJfZG1hX3dxKGludGYsIGFkZHIsIFRYX1NQQl9ETUFfVkFMSUQpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGJjbWFzcF9pbnRmX29wcyBiY21hc3BfaW50Zl9vcHMgPTNEIHsKKwku cnhfZGVzY19yZWFkID0zRCBiY21hc3BfcnhfZWRwa3RfZG1hX3JxLAorCS5yeF9idWZmZXJfd3Jp dGUgPTNEIGJjbWFzcF9yeF9lZHBrdF9jZmdfd3EsCisJLnJ4X2Rlc2Nfd3JpdGUgPTNEIGJjbWFz cF9yeF9lZHBrdF9kbWFfd3EsCisJLnR4X3JlYWQgPTNEIGJjbWFzcF90eF9zcGJfZG1hX3JxLAor CS50eF93cml0ZSA9M0QgYmNtYXNwX3R4X3NwYl9kbWFfd3EsCit9OworCitzdGF0aWMgbmV0ZGV2 X3R4X3QgYmNtYXNwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7 CisJdW5zaWduZWQgaW50IHRvdGFsX2J5dGVzLCBzaXplOworCWludCBzcGJfaW5kZXgsIG5yX2Zy YWdzLCBpLCBqOworCXN0cnVjdCBiY21hc3BfdHhfY2IgKnR4Y2I7CisJZG1hX2FkZHJfdCBtYXBw aW5nLCB2YWxpZDsKKwlzdHJ1Y3QgYmNtYXNwX2Rlc2MgKmRlc2M7CisJYm9vbCBjc3VtX2h3ID0z RCBmYWxzZTsKKwlzdHJ1Y3QgZGV2aWNlICprZGV2OworCXNrYl9mcmFnX3QgKmZyYWc7CisKKwlr ZGV2ID0zRCAmaW50Zi0+cGFyZW50LT5wZGV2LT5kZXY7CisKKwlucl9mcmFncyA9M0Qgc2tiX3No aW5mbyhza2IpLT5ucl9mcmFnczsKKworCWlmICh0eF9zcGJfcmluZ19mdWxsKGludGYsIG5yX2Zy YWdzICsgMSkpIHsKKwkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOworCQluZXRkZXZfZXJyKGRldiwg IlR4IFJpbmcgRnVsbCFcbiIpOworCQlyZXR1cm4gTkVUREVWX1RYX0JVU1k7CisJfQorCisJLyog U2F2ZSBza2IgbGVuIGJlZm9yZSBhZGRpbmcgY3N1bSBvZmZsb2FkIGhlYWRlciAqLworCXRvdGFs X2J5dGVzID0zRCBza2ItPmxlbjsKKwlza2IgPTNEIGJjbWFzcF9jc3VtX29mZmxvYWQoZGV2LCBz a2IsICZjc3VtX2h3KTsKKwlpZiAoIXNrYikKKwkJcmV0dXJuIE5FVERFVl9UWF9PSzsKKworCXNw Yl9pbmRleCA9M0QgaW50Zi0+dHhfc3BiX2luZGV4OworCXZhbGlkID0zRCBpbnRmLT50eF9zcGJf ZG1hX3ZhbGlkOworCWZvciAoaSA9M0QgMDsgaSA8PTNEIG5yX2ZyYWdzOyBpKyspIHsKKwkJaWYg KCFpKSB7CisJCQlzaXplID0zRCBza2JfaGVhZGxlbihza2IpOworCQkJaWYgKCFucl9mcmFncyAm JiBzaXplIDwgKEVUSF9aTEVOICsgRVRIX0ZDU19MRU4pKSB7CisJCQkJaWYgKHNrYl9wdXRfcGFk dG8oc2tiLCBFVEhfWkxFTiArIEVUSF9GQ1NfTEVOKSkKKwkJCQkJcmV0dXJuIE5FVERFVl9UWF9P SzsKKwkJCQlzaXplID0zRCBza2ItPmxlbjsKKwkJCX0KKwkJCW1hcHBpbmcgPTNEIGRtYV9tYXBf c2luZ2xlKGtkZXYsIHNrYi0+ZGF0YSwgc2l6ZSwKKwkJCQkJCSBETUFfVE9fREVWSUNFKTsKKwkJ fSBlbHNlIHsKKwkJCWZyYWcgPTNEICZza2Jfc2hpbmZvKHNrYiktPmZyYWdzW2kgLSAxXTsKKwkJ CXNpemUgPTNEIHNrYl9mcmFnX3NpemUoZnJhZyk7CisJCQltYXBwaW5nID0zRCBza2JfZnJhZ19k bWFfbWFwKGtkZXYsIGZyYWcsIDAsIHNpemUsCisJCQkJCQkgICBETUFfVE9fREVWSUNFKTsKKwkJ fQorCisJCWlmIChkbWFfbWFwcGluZ19lcnJvcihrZGV2LCBtYXBwaW5nKSkgeworCQkJaW50Zi0+ bWliLnR4X2RtYV9mYWlsZWQrKzsKKwkJCXNwYl9pbmRleCA9M0QgaW50Zi0+dHhfc3BiX2luZGV4 OworCQkJZm9yIChqID0zRCAwOyBqIDwgaTsgaisrKSB7CisJCQkJYmNtYXNwX2NsZWFuX3R4Y2Io aW50Ziwgc3BiX2luZGV4KTsKKwkJCQlzcGJfaW5kZXggPTNEIGluY3JfcmluZyhzcGJfaW5kZXgs CisJCQkJCQkgICAgICBERVNDX1JJTkdfQ09VTlQpOworCQkJfQorCQkJLyogUmV3aW5kIHNvIHdl IGRvIG5vdCBoYXZlIGEgaG9sZSAqLworCQkJc3BiX2luZGV4ID0zRCBpbnRmLT50eF9zcGJfaW5k ZXg7CisJCQlyZXR1cm4gTkVUREVWX1RYX09LOworCQl9CisKKwkJdHhjYiA9M0QgJmludGYtPnR4 X2Nic1tzcGJfaW5kZXhdOworCQlkZXNjID0zRCAmaW50Zi0+dHhfc3BiX2NwdVtzcGJfaW5kZXhd OworCQltZW1zZXQoZGVzYywgMCwgc2l6ZW9mKCpkZXNjKSk7CisJCXR4Y2ItPnNrYiA9M0Qgc2ti OworCQl0eGNiLT5ieXRlc19zZW50ID0zRCB0b3RhbF9ieXRlczsKKwkJZG1hX3VubWFwX2FkZHJf c2V0KHR4Y2IsIGRtYV9hZGRyLCBtYXBwaW5nKTsKKwkJZG1hX3VubWFwX2xlbl9zZXQodHhjYiwg ZG1hX2xlbiwgc2l6ZSk7CisJCWlmICghaSkgeworCQkJZGVzYy0+ZmxhZ3MgfD0zRCBERVNDX1NP RjsKKwkJCWlmIChjc3VtX2h3KQorCQkJCWRlc2MtPmZsYWdzIHw9M0QgREVTQ19FUEtUX0NNRDsK KwkJfQorCisJCWlmIChpID0zRD0zRCBucl9mcmFncykgeworCQkJZGVzYy0+ZmxhZ3MgfD0zRCBE RVNDX0VPRjsKKwkJCXR4Y2ItPmxhc3QgPTNEIHRydWU7CisJCX0KKworCQlkZXNjLT5idWYgPTNE IG1hcHBpbmc7CisJCWRlc2MtPnNpemUgPTNEIHNpemU7CisJCWRlc2MtPmZsYWdzIHw9M0QgREVT Q19JTlRfRU47CisKKwkJbmV0aWZfZGJnKGludGYsIHR4X3F1ZXVlZCwgZGV2LAorCQkJICAiJXMg ZG1hX2J1Zj0zRCVwYWQgZG1hX2xlbj0zRDB4JXggZmxhZ3M9M0QweCV4IGluZGV4PTNEMHgleFxu IiwKKwkJCSAgX19mdW5jX18sICZtYXBwaW5nLCBkZXNjLT5zaXplLCBkZXNjLT5mbGFncywKKwkJ CSAgc3BiX2luZGV4KTsKKworCQlzcGJfaW5kZXggPTNEIGluY3JfcmluZyhzcGJfaW5kZXgsIERF U0NfUklOR19DT1VOVCk7CisJCXZhbGlkID0zRCBpbmNyX2xhc3RfYnl0ZSh2YWxpZCwgaW50Zi0+ dHhfc3BiX2RtYV9hZGRyLAorCQkJCSAgICAgICBERVNDX1JJTkdfQ09VTlQpOworCX0KKworCS8q IEVuc3VyZSBhbGwgZGVzY3JpcHRvcnMgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gRFJBTSBmb3IgdGhl CisJICogaGFyZHdhcmUgdG8gc2VlIHVwLXRvLWRhdGUgY29udGVudHMuCisJICovCisJd21iKCk7 CisKKwlpbnRmLT50eF9zcGJfaW5kZXggPTNEIHNwYl9pbmRleDsKKwlpbnRmLT50eF9zcGJfZG1h X3ZhbGlkID0zRCB2YWxpZDsKKwliY21hc3BfaW50Zl90eF93cml0ZShpbnRmLCBpbnRmLT50eF9z cGJfZG1hX3ZhbGlkKTsKKworCWlmICh0eF9zcGJfcmluZ19mdWxsKGludGYsIE1BWF9TS0JfRlJB R1MgKyAxKSkKKwkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOworCisJcmV0dXJuIE5FVERFVl9UWF9P SzsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX25ldGlmX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYp OworCisJYmNtYXNwX3NldF9yeF9tb2RlKGRldik7CisJbmFwaV9lbmFibGUoJmludGYtPnR4X25h cGkpOworCW5hcGlfZW5hYmxlKCZpbnRmLT5yeF9uYXBpKTsKKworCWJjbWFzcF9lbmFibGVfcnhf aXJxKGludGYsIDEpOworCWJjbWFzcF9lbmFibGVfdHhfaXJxKGludGYsIDEpOworCisJcGh5X3N0 YXJ0KGRldi0+cGh5ZGV2KTsKK30KKworc3RhdGljIHZvaWQgdW1hY19yZXNldChzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYpCit7CisJdW1hY193bChpbnRmLCAweDAsIFVNQ19DTUQpOworCXVtYWNf d2woaW50ZiwgVU1DX0NNRF9TV19SRVNFVCwgVU1DX0NNRCk7CisJdXNsZWVwX3JhbmdlKDEwLCAx MDApOworCXVtYWNfd2woaW50ZiwgMHgwLCBVTUNfQ01EKTsKK30KKworc3RhdGljIHZvaWQgdW1h Y19zZXRfaHdfYWRkcihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsCisJCQkgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmFkZHIpCit7CisJdTMyIG1hYzAgPTNEIChhZGRyWzBdIDw8IDI0KSB8IChh ZGRyWzFdIDw8IDE2KSB8IChhZGRyWzJdIDw8IDgpIHwKKwkJICAgIGFkZHJbM107CisJdTMyIG1h YzEgPTNEIChhZGRyWzRdIDw8IDgpIHwgYWRkcls1XTsKKworCXVtYWNfd2woaW50ZiwgbWFjMCwg VU1DX01BQzApOworCXVtYWNfd2woaW50ZiwgbWFjMSwgVU1DX01BQzEpOworfQorCitzdGF0aWMg dm9pZCB1bWFjX2VuYWJsZV9zZXQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCB1MzIgbWFzaywK KwkJCSAgICB1bnNpZ25lZCBpbnQgZW5hYmxlKQoreworCXUzMiByZWc7CisKKwlyZWcgPTNEIHVt YWNfcmwoaW50ZiwgVU1DX0NNRCk7CisJaWYgKGVuYWJsZSkKKwkJcmVnIHw9M0QgbWFzazsKKwll bHNlCisJCXJlZyAmPTNEIH5tYXNrOworCXVtYWNfd2woaW50ZiwgcmVnLCBVTUNfQ01EKTsKKwor CS8qIFVuaU1BQyBzdG9wcyBvbiBhIHBhY2tldCBib3VuZGFyeSwgd2FpdCBmb3IgYSBmdWxsLXNp emVkIHBhY2tldAorCSAqIHRvIGJlIHByb2Nlc3NlZCAoMSBtc2VjKS4KKwkgKi8KKwlpZiAoZW5h YmxlID0zRD0zRCAwKQorCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7Cit9CisKK3N0YXRpYyB2 b2lkIHVtYWNfaW5pdChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpCit7CisJdW1hY193bChpbnRm LCAweDgwMCwgVU1DX0ZSTV9MRU4pOworCXVtYWNfd2woaW50ZiwgMHhmZmZmLCBVTUNfUEFVU0Vf Q05UUkwpOworCXVtYWNfd2woaW50ZiwgMHg4MDAsIFVNQ19SWF9NQVhfUEtUX1NaKTsKKwl1bWFj X2VuYWJsZV9zZXQoaW50ZiwgVU1DX0NNRF9QUk9NSVNDLCAxKTsKK30KKworc3RhdGljIGludCBi Y21hc3BfdHhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCit7CisJ c3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRAorCQljb250YWluZXJfb2YobmFwaSwgc3RydWN0 IGJjbWFzcF9pbnRmLCB0eF9uYXBpKTsKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmaW50Zi0+ cGFyZW50LT5wZGV2LT5kZXY7CisJdW5zaWduZWQgbG9uZyByZWFkLCByZWxlYXNlZCA9M0QgMDsK KwlzdHJ1Y3QgYmNtYXNwX3R4X2NiICp0eGNiOworCXN0cnVjdCBiY21hc3BfZGVzYyAqZGVzYzsK KwlkbWFfYWRkcl90IG1hcHBpbmc7CisKKwlyZWFkID0zRCBiY21hc3BfaW50Zl90eF9yZWFkKGlu dGYpOworCXdoaWxlIChpbnRmLT50eF9zcGJfZG1hX3JlYWQgIT0zRCByZWFkKSB7CisJCXR4Y2Ig PTNEICZpbnRmLT50eF9jYnNbaW50Zi0+dHhfc3BiX2NsZWFuX2luZGV4XTsKKwkJbWFwcGluZyA9 M0QgZG1hX3VubWFwX2FkZHIodHhjYiwgZG1hX2FkZHIpOworCisJCWRtYV91bm1hcF9zaW5nbGUo a2RldiwgbWFwcGluZywKKwkJCQkgZG1hX3VubWFwX2xlbih0eGNiLCBkbWFfbGVuKSwKKwkJCQkg RE1BX1RPX0RFVklDRSk7CisKKwkJaWYgKHR4Y2ItPmxhc3QpIHsKKwkJCWRldl9jb25zdW1lX3Nr Yl9hbnkodHhjYi0+c2tiKTsKKwkJCWludGYtPm5kZXYtPnN0YXRzLnR4X3BhY2tldHMrKzsKKwkJ CWludGYtPm5kZXYtPnN0YXRzLnR4X2J5dGVzICs9M0QgdHhjYi0+Ynl0ZXNfc2VudDsKKwkJfQor CisJCWRlc2MgPTNEICZpbnRmLT50eF9zcGJfY3B1W2ludGYtPnR4X3NwYl9jbGVhbl9pbmRleF07 CisKKwkJbmV0aWZfZGJnKGludGYsIHR4X2RvbmUsIGludGYtPm5kZXYsCisJCQkgICIlcyBkbWFf YnVmPTNEJXBhZCBkbWFfbGVuPTNEMHgleCBmbGFncz0zRDB4JXggY19pbmRleD0zRDB4JXhcbiIs CisJCQkgIF9fZnVuY19fLCAmbWFwcGluZywgZGVzYy0+c2l6ZSwgZGVzYy0+ZmxhZ3MsCisJCQkg IGludGYtPnR4X3NwYl9jbGVhbl9pbmRleCk7CisKKwkJYmNtYXNwX2NsZWFuX3R4Y2IoaW50Ziwg aW50Zi0+dHhfc3BiX2NsZWFuX2luZGV4KTsKKwkJcmVsZWFzZWQrKzsKKworCQlpbnRmLT50eF9z cGJfY2xlYW5faW5kZXggPTNEIGluY3JfcmluZyhpbnRmLT50eF9zcGJfY2xlYW5faW5kZXgsCisJ CQkJCQkgICAgIERFU0NfUklOR19DT1VOVCk7CisJCWludGYtPnR4X3NwYl9kbWFfcmVhZCA9M0Qg aW5jcl9maXJzdF9ieXRlKGludGYtPnR4X3NwYl9kbWFfcmVhZCwKKwkJCQkJCQlpbnRmLT50eF9z cGJfZG1hX2FkZHIsCisJCQkJCQkJREVTQ19SSU5HX0NPVU5UKTsKKwl9CisKKwkvKiBFbnN1cmUg YWxsIGRlc2NyaXB0b3JzIGhhdmUgYmVlbiB3cml0dGVuIHRvIERSQU0gZm9yIHRoZSBoYXJkd2Fy ZQorCSAqIHRvIHNlZSB1cGRhdGVkIGNvbnRlbnRzLgorCSAqLworCXdtYigpOworCisJbmFwaV9j b21wbGV0ZSgmaW50Zi0+dHhfbmFwaSk7CisKKwliY21hc3BfZW5hYmxlX3R4X2lycShpbnRmLCAx KTsKKworCWlmIChyZWxlYXNlZCkKKwkJbmV0aWZfd2FrZV9xdWV1ZShpbnRmLT5uZGV2KTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0 cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNE CisJCWNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgYmNtYXNwX2ludGYsIHJ4X25hcGkpOworCXN0 cnVjdCBkZXZpY2UgKmtkZXYgPTNEICZpbnRmLT5wYXJlbnQtPnBkZXYtPmRldjsKKwl1bnNpZ25l ZCBsb25nIHByb2Nlc3NlZCA9M0QgMDsKKwlzdHJ1Y3QgYmNtYXNwX2Rlc2MgKmRlc2M7CisJc3Ry dWN0IHNrX2J1ZmYgKnNrYjsKKwlkbWFfYWRkcl90IHZhbGlkOworCXZvaWQgKmRhdGE7CisJdTY0 IGZsYWdzOworCXUzMiBsZW47CisKKwl2YWxpZCA9M0QgYmNtYXNwX2ludGZfcnhfZGVzY19yZWFk KGludGYpICsgMTsKKwlpZiAodmFsaWQgPTNEPTNEIGludGYtPnJ4X2VkcGt0X2RtYV9hZGRyICsg REVTQ19SSU5HX1NJWkUpCisJCXZhbGlkID0zRCBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkcjsKKwor CXdoaWxlICgocHJvY2Vzc2VkIDwgYnVkZ2V0KSAmJiAodmFsaWQgIT0zRCBpbnRmLT5yeF9lZHBr dF9kbWFfcmVhZCkpIHsKKwkJZGVzYyA9M0QgJmludGYtPnJ4X2VkcGt0X2NwdVtpbnRmLT5yeF9l ZHBrdF9pbmRleF07CisKKwkJLyogRW5zdXJlIHRoYXQgZGVzY3JpcHRvciBoYXMgYmVlbiBmdWxs eSB3cml0dGVuIHRvIERSQU0gYnkKKwkJICogaGFyZHdhcmUgYmVmb3JlIHJlYWRpbmcgYnkgdGhl IENQVQorCQkgKi8KKwkJcm1iKCk7CisKKwkJLyogQ2FsY3VsYXRlIHZpcnQgYWRkciBieSBvZmZz ZXR0aW5nIGZyb20gcGh5c2ljYWwgYWRkciAqLworCQlkYXRhID0zRCBpbnRmLT5yeF9yaW5nX2Nw dSArCisJCQkoREVTQ19BRERSKGRlc2MtPmJ1ZikgLSBpbnRmLT5yeF9yaW5nX2RtYSk7CisKKwkJ ZmxhZ3MgPTNEIERFU0NfRkxBR1MoZGVzYy0+YnVmKTsKKwkJaWYgKHVubGlrZWx5KGZsYWdzICYg KERFU0NfQ1JDX0VSUiB8IERFU0NfUlhfU1lNX0VSUikpKSB7CisJCQluZXRpZl9lcnIoaW50Ziwg cnhfc3RhdHVzLCBpbnRmLT5uZGV2LCAiZmxhZ3M9M0QweCVsbHhcbiIsCisJCQkJICBmbGFncyk7 CisKKwkJCWludGYtPm5kZXYtPnN0YXRzLnJ4X2Vycm9ycysrOworCQkJaW50Zi0+bmRldi0+c3Rh dHMucnhfZHJvcHBlZCsrOworCQkJZ290byBuZXh0OworCQl9CisKKwkJZG1hX3N5bmNfc2luZ2xl X2Zvcl9jcHUoa2RldiwgREVTQ19BRERSKGRlc2MtPmJ1ZiksIGRlc2MtPnNpemUsCisJCQkJCURN QV9GUk9NX0RFVklDRSk7CisKKwkJbGVuID0zRCBkZXNjLT5zaXplOworCisJCXNrYiA9M0QgX19u ZXRkZXZfYWxsb2Nfc2tiKGludGYtPm5kZXYsIGxlbiwKKwkJCQkJIEdGUF9BVE9NSUMgfCBfX0dG UF9OT1dBUk4pOworCQlpZiAoIXNrYikgeworCQkJaW50Zi0+bmRldi0+c3RhdHMucnhfZXJyb3Jz Kys7CisJCQlpbnRmLT5taWIuYWxsb2Nfcnhfc2tiX2ZhaWxlZCsrOworCQkJbmV0aWZfd2Fybihp bnRmLCByeF9lcnIsIGludGYtPm5kZXYsCisJCQkJICAgIlNLQiBhbGxvYyBmYWlsZWRcbiIpOwor CQkJZ290byBuZXh0OworCQl9CisKKwkJc2tiX3B1dChza2IsIGxlbik7CisJCW1lbWNweShza2It PmRhdGEsIGRhdGEsIGxlbik7CisKKwkJc2tiX3B1bGwoc2tiLCAyKTsKKwkJbGVuIC09M0QgMjsK KwkJaWYgKGxpa2VseShpbnRmLT5jcmNfZndkKSkgeworCQkJc2tiX3RyaW0oc2tiLCBsZW4gLSBF VEhfRkNTX0xFTik7CisJCQlsZW4gLT0zRCBFVEhfRkNTX0xFTjsKKwkJfQorCisJCWlmICgoaW50 Zi0+bmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1JYQ1NVTSkgJiYKKwkJICAgIChkZXNjLT5idWYg JiBERVNDX0NIS1NVTSkpCisJCQlza2ItPmlwX3N1bW1lZCA9M0QgQ0hFQ0tTVU1fVU5ORUNFU1NB Ulk7CisKKwkJc2tiLT5wcm90b2NvbCA9M0QgZXRoX3R5cGVfdHJhbnMoc2tiLCBpbnRmLT5uZGV2 KTsKKworCQluYXBpX2dyb19yZWNlaXZlKG5hcGksIHNrYik7CisKKwkJaW50Zi0+bmRldi0+c3Rh dHMucnhfcGFja2V0cysrOworCQlpbnRmLT5uZGV2LT5zdGF0cy5yeF9ieXRlcyArPTNEIGxlbjsK KworbmV4dDoKKwkJYmNtYXNwX2ludGZfcnhfYnVmZmVyX3dyaXRlKGludGYsIChERVNDX0FERFIo ZGVzYy0+YnVmKSArCisJCQkJCSAgICBkZXNjLT5zaXplKSk7CisKKwkJcHJvY2Vzc2VkKys7CisJ CWludGYtPnJ4X2VkcGt0X2RtYV9yZWFkID0zRAorCQkJaW5jcl9maXJzdF9ieXRlKGludGYtPnJ4 X2VkcGt0X2RtYV9yZWFkLAorCQkJCQlpbnRmLT5yeF9lZHBrdF9kbWFfYWRkciwKKwkJCQkJREVT Q19SSU5HX0NPVU5UKTsKKwkJaW50Zi0+cnhfZWRwa3RfaW5kZXggPTNEIGluY3JfcmluZyhpbnRm LT5yeF9lZHBrdF9pbmRleCwKKwkJCQkJCSBERVNDX1JJTkdfQ09VTlQpOworCX0KKworCWJjbWFz cF9pbnRmX3J4X2Rlc2Nfd3JpdGUoaW50ZiwgaW50Zi0+cnhfZWRwa3RfZG1hX3JlYWQpOworCisJ aWYgKHByb2Nlc3NlZCA8IGJ1ZGdldCkgeworCQluYXBpX2NvbXBsZXRlX2RvbmUoJmludGYtPnJ4 X25hcGksIHByb2Nlc3NlZCk7CisJCWJjbWFzcF9lbmFibGVfcnhfaXJxKGludGYsIDEpOworCX0K KworCXJldHVybiBwcm9jZXNzZWQ7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9hZGpfbGluayhz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0Qg bmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0zRCBkZXYtPnBo eWRldjsKKwl1MzIgY21kX2JpdHMgPTNEIDAsIHJlZzsKKwlpbnQgY2hhbmdlZCA9M0QgMDsKKwor CWlmIChpbnRmLT5vbGRfbGluayAhPTNEIHBoeWRldi0+bGluaykgeworCQljaGFuZ2VkID0zRCAx OworCQlpbnRmLT5vbGRfbGluayA9M0QgcGh5ZGV2LT5saW5rOworCX0KKworCWlmIChpbnRmLT5v bGRfZHVwbGV4ICE9M0QgcGh5ZGV2LT5kdXBsZXgpIHsKKwkJY2hhbmdlZCA9M0QgMTsKKwkJaW50 Zi0+b2xkX2R1cGxleCA9M0QgcGh5ZGV2LT5kdXBsZXg7CisJfQorCisJc3dpdGNoIChwaHlkZXYt PnNwZWVkKSB7CisJY2FzZSBTUEVFRF8yNTAwOgorCQljbWRfYml0cyA9M0QgVU1DX0NNRF9TUEVF RF8yNTAwOworCQlicmVhazsKKwljYXNlIFNQRUVEXzEwMDA6CisJCWNtZF9iaXRzID0zRCBVTUNf Q01EX1NQRUVEXzEwMDA7CisJCWJyZWFrOworCWNhc2UgU1BFRURfMTAwOgorCQljbWRfYml0cyA9 M0QgVU1DX0NNRF9TUEVFRF8xMDA7CisJCWJyZWFrOworCWNhc2UgU1BFRURfMTA6CisJCWNtZF9i aXRzID0zRCBVTUNfQ01EX1NQRUVEXzEwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsK Kwl9CisJY21kX2JpdHMgPDw9M0QgVU1DX0NNRF9TUEVFRF9TSElGVDsKKworCWlmIChwaHlkZXYt PmR1cGxleCA9M0Q9M0QgRFVQTEVYX0hBTEYpCisJCWNtZF9iaXRzIHw9M0QgVU1DX0NNRF9IRF9F TjsKKworCWlmIChpbnRmLT5vbGRfcGF1c2UgIT0zRCBwaHlkZXYtPnBhdXNlKSB7CisJCWNoYW5n ZWQgPTNEIDE7CisJCWludGYtPm9sZF9wYXVzZSA9M0QgcGh5ZGV2LT5wYXVzZTsKKwl9CisKKwlp ZiAoIXBoeWRldi0+cGF1c2UpCisJCWNtZF9iaXRzIHw9M0QgVU1DX0NNRF9SWF9QQVVTRV9JR05P UkUgfCBVTUNfQ01EX1RYX1BBVVNFX0lHTk9SRTsKKworCWlmICghY2hhbmdlZCkKKwkJcmV0dXJu OworCisJaWYgKHBoeWRldi0+bGluaykgeworCQlyZWcgPTNEIHVtYWNfcmwoaW50ZiwgVU1DX0NN RCk7CisJCXJlZyAmPTNEIH4oKFVNQ19DTURfU1BFRURfTUFTSyA8PCBVTUNfQ01EX1NQRUVEX1NI SUZUKSB8CisJCQlVTUNfQ01EX0hEX0VOIHwgVU1DX0NNRF9SWF9QQVVTRV9JR05PUkUgfAorCQkJ VU1DX0NNRF9UWF9QQVVTRV9JR05PUkUpOworCQlyZWcgfD0zRCBjbWRfYml0czsKKwkJdW1hY193 bChpbnRmLCByZWcsIFVNQ19DTUQpOworCisJCWludGYtPmVlZS5lZWVfYWN0aXZlID0zRCBwaHlf aW5pdF9lZWUocGh5ZGV2LCAwKSA+PTNEIDA7CisJCWJjbWFzcF9lZWVfZW5hYmxlX3NldChpbnRm LCBpbnRmLT5lZWUuZWVlX2FjdGl2ZSk7CisJfQorCisJcmVnID0zRCByZ21paV9ybChpbnRmLCBS R01JSV9PT0JfQ05UUkwpOworCWlmIChwaHlkZXYtPmxpbmspCisJCXJlZyB8PTNEIFJHTUlJX0xJ Tks7CisJZWxzZQorCQlyZWcgJj0zRCB+UkdNSUlfTElOSzsKKwlyZ21paV93bChpbnRmLCByZWcs IFJHTUlJX09PQl9DTlRSTCk7CisKKwlpZiAoY2hhbmdlZCkKKwkJcGh5X3ByaW50X3N0YXR1cyhw aHlkZXYpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9pbml0X3J4KHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmaW50Zi0+cGFyZW50LT5wZGV2 LT5kZXY7CisJc3RydWN0IHBhZ2UgKmJ1ZmZlcl9wZzsKKwlkbWFfYWRkcl90IGRtYTsKKwl2b2lk ICpwOworCXUzMiByZWc7CisJaW50IHJldDsKKworCWludGYtPnJ4X2J1Zl9vcmRlciA9M0QgZ2V0 X29yZGVyKFJJTkdfQlVGRkVSX1NJWkUpOworCWJ1ZmZlcl9wZyA9M0QgYWxsb2NfcGFnZXMoR0ZQ X0tFUk5FTCwgaW50Zi0+cnhfYnVmX29yZGVyKTsKKworCWRtYSA9M0QgZG1hX21hcF9wYWdlKGtk ZXYsIGJ1ZmZlcl9wZywgMCwgUklOR19CVUZGRVJfU0laRSwKKwkJCSAgIERNQV9GUk9NX0RFVklD RSk7CisJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGtkZXYsIGRtYSkpIHsKKwkJX19mcmVlX3BhZ2Vz KGJ1ZmZlcl9wZywgaW50Zi0+cnhfYnVmX29yZGVyKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQor CWludGYtPnJ4X3JpbmdfY3B1ID0zRCBwYWdlX3RvX3ZpcnQoYnVmZmVyX3BnKTsKKwlpbnRmLT5y eF9yaW5nX2RtYSA9M0QgZG1hOworCWludGYtPnJ4X3JpbmdfZG1hX3ZhbGlkID0zRCBpbnRmLT5y eF9yaW5nX2RtYSArIFJJTkdfQlVGRkVSX1NJWkUgLSAxOworCisJcCA9M0QgZG1hX2FsbG9jX2Nv aGVyZW50KGtkZXYsIERFU0NfUklOR19TSVpFLCAmaW50Zi0+cnhfZWRwa3RfZG1hX2FkZHIsCisJ CQkgICAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFwKSB7CisJCXJldCA9M0QgLUVOT01FTTsKKwkJ Z290byBmcmVlX3J4X3Jpbmc7CisJfQorCWludGYtPnJ4X2VkcGt0X2NwdSA9M0QgcDsKKworCW5l dGlmX25hcGlfYWRkKGludGYtPm5kZXYsICZpbnRmLT5yeF9uYXBpLCBiY21hc3BfcnhfcG9sbCk7 CisKKwlpbnRmLT5yeF9lZHBrdF9kbWFfcmVhZCA9M0QgaW50Zi0+cnhfZWRwa3RfZG1hX2FkZHI7 CisJaW50Zi0+cnhfZWRwa3RfaW5kZXggPTNEIDA7CisKKwkvKiBNYWtlIHN1cmUgY2hhbm5lbHMg YXJlIGRpc2FibGVkICovCisJcnhfZWRwa3RfY2ZnX3dsKGludGYsIDB4MCwgUlhfRURQS1RfQ0ZH X0VOQUJMRSk7CisKKwkvKiBSeCBTUEIgKi8KKwlyeF9lZHBrdF9jZmdfd3EoaW50ZiwgaW50Zi0+ cnhfcmluZ19kbWEsIFJYX0VEUEtUX1JJTkdfQlVGRkVSX1JFQUQpOworCXJ4X2VkcGt0X2NmZ193 cShpbnRmLCBpbnRmLT5yeF9yaW5nX2RtYSwgUlhfRURQS1RfUklOR19CVUZGRVJfV1JJVEUpOwor CXJ4X2VkcGt0X2NmZ193cShpbnRmLCBpbnRmLT5yeF9yaW5nX2RtYSwgUlhfRURQS1RfUklOR19C VUZGRVJfQkFTRSk7CisJcnhfZWRwa3RfY2ZnX3dxKGludGYsIGludGYtPnJ4X3JpbmdfZG1hX3Zh bGlkLAorCQkJUlhfRURQS1RfUklOR19CVUZGRVJfRU5EKTsKKwlyeF9lZHBrdF9jZmdfd3EoaW50 ZiwgaW50Zi0+cnhfcmluZ19kbWFfdmFsaWQsCisJCQlSWF9FRFBLVF9SSU5HX0JVRkZFUl9WQUxJ RCk7CisKKwkvKiBFRFBLVCAqLworCXJ4X2VkcGt0X2NmZ193bChpbnRmLCAoUlhfRURQS1RfQ0ZH X0NGRzBfUkJVRl80SyA8PAorCQkJUlhfRURQS1RfQ0ZHX0NGRzBfREJVRl9TSElGVCkgfAorCQkg ICAgICAgKFJYX0VEUEtUX0NGR19DRkcwXzY0X0FMTiA8PAorCQkJUlhfRURQS1RfQ0ZHX0NGRzBf QkFMTl9TSElGVCkgfAorCQkgICAgICAgKFJYX0VEUEtUX0NGR19DRkcwX0VGUk1fU1RVRiksCisJ CQlSWF9FRFBLVF9DRkdfQ0ZHMCk7CisJcnhfZWRwa3RfZG1hX3dxKGludGYsIGludGYtPnJ4X2Vk cGt0X2RtYV9hZGRyLCBSWF9FRFBLVF9ETUFfV1JJVEUpOworCXJ4X2VkcGt0X2RtYV93cShpbnRm LCBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkciwgUlhfRURQS1RfRE1BX1JFQUQpOworCXJ4X2VkcGt0 X2RtYV93cShpbnRmLCBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkciwgUlhfRURQS1RfRE1BX0JBU0Up OworCXJ4X2VkcGt0X2RtYV93cShpbnRmLCBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkciArIChERVND X1JJTkdfU0laRSAtIDEpLAorCQkJUlhfRURQS1RfRE1BX0VORCk7CisJcnhfZWRwa3RfZG1hX3dx KGludGYsIGludGYtPnJ4X2VkcGt0X2RtYV9hZGRyICsgKERFU0NfUklOR19TSVpFIC0gMSksCisJ CQlSWF9FRFBLVF9ETUFfVkFMSUQpOworCisJcmVnID0zRCBVTUFDMkZCX0NGR19ERUZBVUxUX0VO IHwKKwkgICAgICAoKGludGYtPmNoYW5uZWwgKyAxMSkgPDwgVU1BQzJGQl9DRkdfQ0hJRF9TSElG VCk7CisJcmVnIHw9M0QgKDB4ZCA8PCBVTUFDMkZCX0NGR19PS19TRU5EX1NISUZUKTsKKwl1bWFj MmZiX3dsKGludGYsIHJlZywgVU1BQzJGQl9DRkcpOworCisJcmV0dXJuIDA7CisKK2ZyZWVfcnhf cmluZzoKKwlkbWFfdW5tYXBfcGFnZShrZGV2LCBpbnRmLT5yeF9yaW5nX2RtYSwgUklOR19CVUZG RVJfU0laRSwKKwkJICAgICAgIERNQV9GUk9NX0RFVklDRSk7CisJX19mcmVlX3BhZ2VzKHZpcnRf dG9fcGFnZShpbnRmLT5yeF9yaW5nX2NwdSksIGludGYtPnJ4X2J1Zl9vcmRlcik7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmVjbGFpbV9mcmVlX2FsbF9yeChzdHJ1 Y3QgYmNtYXNwX2ludGYgKmludGYpCit7CisJc3RydWN0IGRldmljZSAqa2RldiA9M0QgJmludGYt PnBhcmVudC0+cGRldi0+ZGV2OworCisJZG1hX2ZyZWVfY29oZXJlbnQoa2RldiwgREVTQ19SSU5H X1NJWkUsIGludGYtPnJ4X2VkcGt0X2NwdSwKKwkJCSAgaW50Zi0+cnhfZWRwa3RfZG1hX2FkZHIp OworCWRtYV91bm1hcF9wYWdlKGtkZXYsIGludGYtPnJ4X3JpbmdfZG1hLCBSSU5HX0JVRkZFUl9T SVpFLAorCQkgICAgICAgRE1BX0ZST01fREVWSUNFKTsKKwlfX2ZyZWVfcGFnZXModmlydF90b19w YWdlKGludGYtPnJ4X3JpbmdfY3B1KSwgaW50Zi0+cnhfYnVmX29yZGVyKTsKK30KKworc3RhdGlj IGludCBiY21hc3BfaW5pdF90eChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpCit7CisJc3RydWN0 IGRldmljZSAqa2RldiA9M0QgJmludGYtPnBhcmVudC0+cGRldi0+ZGV2OworCXZvaWQgKnA7CisJ aW50IHJldDsKKworCXAgPTNEIGRtYV9hbGxvY19jb2hlcmVudChrZGV2LCBERVNDX1JJTkdfU0la RSwgJmludGYtPnR4X3NwYl9kbWFfYWRkciwKKwkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAo IXApCisJCXJldHVybiAtRU5PTUVNOworCisJaW50Zi0+dHhfc3BiX2NwdSA9M0QgcDsKKwlpbnRm LT50eF9zcGJfZG1hX3ZhbGlkID0zRCBpbnRmLT50eF9zcGJfZG1hX2FkZHIgKyBERVNDX1JJTkdf U0laRSAtIDE7CisJaW50Zi0+dHhfc3BiX2RtYV9yZWFkID0zRCBpbnRmLT50eF9zcGJfZG1hX2Fk ZHI7CisKKwlpbnRmLT50eF9jYnMgPTNEIGtjYWxsb2MoREVTQ19SSU5HX0NPVU5ULCBzaXplb2Yo c3RydWN0IGJjbWFzcF90eF9jYiksCisJCQkgICAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFpbnRm LT50eF9jYnMpIHsKKwkJcmV0ID0zRCAtRU5PTUVNOworCQlnb3RvIGZyZWVfdHhfc3BiOworCX0K KworCWludGYtPnR4X3NwYl9pbmRleCA9M0QgMDsKKwlpbnRmLT50eF9zcGJfY2xlYW5faW5kZXgg PTNEIDA7CisKKwluZXRpZl9uYXBpX2FkZF90eChpbnRmLT5uZGV2LCAmaW50Zi0+dHhfbmFwaSwg YmNtYXNwX3R4X3BvbGwpOworCisJLyogTWFrZSBzdXJlIGNoYW5uZWxzIGFyZSBkaXNhYmxlZCAq LworCXR4X3NwYl9jdHJsX3dsKGludGYsIDB4MCwgVFhfU1BCX0NUUkxfRU5BQkxFKTsKKwl0eF9l cGt0X2NvcmVfd2woaW50ZiwgMHgwLCBUWF9FUEtUX0NfQ0ZHX01JU0MpOworCisJLyogVHggU1BC ICovCisJdHhfc3BiX2N0cmxfd2woaW50ZiwgKChpbnRmLT5jaGFubmVsICsgOCkgPDwgVFhfU1BC X0NUUkxfWEZfQklEX1NISUZUKSwKKwkJICAgICAgIFRYX1NQQl9DVFJMX1hGX0NUUkwyKTsKKwl0 eF9wYXVzZV9jdHJsX3dsKGludGYsICgxIDw8IChpbnRmLT5jaGFubmVsICsgOCkpLCBUWF9QQVVT RV9NQVBfVkVDVE9SKTsKKwl0eF9zcGJfdG9wX3dsKGludGYsIDB4MWUsIFRYX1NQQl9UT1BfQkxL T1VUKTsKKwl0eF9zcGJfdG9wX3dsKGludGYsIDB4MCwgVFhfU1BCX1RPUF9TUFJFX0JXX0NUUkwp OworCisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRmLT50eF9zcGJfZG1hX2FkZHIsIFRYX1NQQl9E TUFfUkVBRCk7CisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRmLT50eF9zcGJfZG1hX2FkZHIsIFRY X1NQQl9ETUFfQkFTRSk7CisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRmLT50eF9zcGJfZG1hX3Zh bGlkLCBUWF9TUEJfRE1BX0VORCk7CisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRmLT50eF9zcGJf ZG1hX3ZhbGlkLCBUWF9TUEJfRE1BX1ZBTElEKTsKKworCXJldHVybiAwOworCitmcmVlX3R4X3Nw YjoKKwlkbWFfZnJlZV9jb2hlcmVudChrZGV2LCBERVNDX1JJTkdfU0laRSwgaW50Zi0+dHhfc3Bi X2NwdSwKKwkJCSAgaW50Zi0+dHhfc3BiX2RtYV9hZGRyKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIGJjbWFzcF9yZWNsYWltX2ZyZWVfYWxsX3R4KHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmaW50Zi0+cGFyZW50LT5wZGV2 LT5kZXY7CisKKwkvKiBGcmVlIGRlc2NyaXB0b3JzICovCisJZG1hX2ZyZWVfY29oZXJlbnQoa2Rl diwgREVTQ19SSU5HX1NJWkUsIGludGYtPnR4X3NwYl9jcHUsCisJCQkgIGludGYtPnR4X3NwYl9k bWFfYWRkcik7CisKKwkvKiBGcmVlIGNicyAqLworCWtmcmVlKGludGYtPnR4X2Nicyk7Cit9CisK K3N0YXRpYyB2b2lkIGJjbWFzcF9lcGh5X2VuYWJsZV9zZXQoc3RydWN0IGJjbWFzcF9pbnRmICpp bnRmLCBib29sIGVuYWJsZSkKK3sKKwl1MzIgbWFzayA9M0QgUkdNSUlfRVBIWV9DRkdfSUREUV9C SUFTIHwgUkdNSUlfRVBIWV9DRkdfRVhUX1BXUkRPV04gfAorCQkgICBSR01JSV9FUEhZX0NGR19J RERRX0dMT0JBTDsKKwl1MzIgcmVnOworCisJcmVnID0zRCByZ21paV9ybChpbnRmLCBSR01JSV9F UEhZX0NOVFJMKTsKKwlpZiAoZW5hYmxlKSB7CisJCXJlZyAmPTNEIH5SR01JSV9FUEhZX0NLMjVf RElTOworCQlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX0VQSFlfQ05UUkwpOworCQltZGVsYXko MSk7CisKKwkJcmVnICY9M0Qgfm1hc2s7CisJCXJlZyB8PTNEIFJHTUlJX0VQSFlfUkVTRVQ7CisJ CXJnbWlpX3dsKGludGYsIHJlZywgUkdNSUlfRVBIWV9DTlRSTCk7CisJCW1kZWxheSgxKTsKKwor CQlyZWcgJj0zRCB+UkdNSUlfRVBIWV9SRVNFVDsKKwl9IGVsc2UgeworCQlyZWcgfD0zRCBtYXNr IHwgUkdNSUlfRVBIWV9SRVNFVDsKKwkJcmdtaWlfd2woaW50ZiwgcmVnLCBSR01JSV9FUEhZX0NO VFJMKTsKKwkJbWRlbGF5KDEpOworCQlyZWcgfD0zRCBSR01JSV9FUEhZX0NLMjVfRElTOworCX0K KwlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX0VQSFlfQ05UUkwpOworCW1kZWxheSgxKTsKKwor CS8qIFNldCBvciBjbGVhciB0aGUgTEVEIGNvbnRyb2wgb3ZlcnJpZGUgdG8gYXZvaWQgbGlnaHRp bmcgdXAgTEVEcworCSAqIHdoaWxlIHRoZSBFUEhZIGlzIHBvd2VyZWQgb2ZmIGFuZCBkcmF3aW5n IHVubmVjZXNzYXJ5IGN1cnJlbnQuCisJICovCisJcmVnID0zRCByZ21paV9ybChpbnRmLCBSR01J SV9TWVNfTEVEX0NOVFJMKTsKKwlpZiAoZW5hYmxlKQorCQlyZWcgJj0zRCB+UkdNSUlfU1lTX0xF RF9DTlRSTF9MSU5LX09WUkQ7CisJZWxzZQorCQlyZWcgfD0zRCBSR01JSV9TWVNfTEVEX0NOVFJM X0xJTktfT1ZSRDsKKwlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX1NZU19MRURfQ05UUkwpOwor fQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoc3RydWN0IGJjbWFzcF9p bnRmICppbnRmLCBib29sIGVuYWJsZSkKK3sKKwl1MzIgcmVnOworCisJcmVnID0zRCByZ21paV9y bChpbnRmLCBSR01JSV9PT0JfQ05UUkwpOworCXJlZyAmPTNEIH5SR01JSV9PT0JfRElTOworCWlm IChlbmFibGUpCisJCXJlZyB8PTNEIFJHTUlJX01PREVfRU47CisJZWxzZQorCQlyZWcgJj0zRCB+ UkdNSUlfTU9ERV9FTjsKKwlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX09PQl9DTlRSTCk7Cit9 CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9uZXRpZl9kZWluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRl dikKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJ dTMyIHJlZywgdGltZW91dCA9M0QgMTAwMDsKKworCW5hcGlfZGlzYWJsZSgmaW50Zi0+dHhfbmFw aSk7CisKKwliY21hc3BfZW5hYmxlX3R4KGludGYsIDApOworCisJLyogRmx1c2ggYW55IFRYIHBh Y2tldHMgaW4gdGhlIHBpcGUgKi8KKwl0eF9zcGJfZG1hX3dsKGludGYsIFRYX1NQQl9ETUFfRklG T19GTFVTSCwgVFhfU1BCX0RNQV9GSUZPX0NUUkwpOworCWRvIHsKKwkJcmVnID0zRCB0eF9zcGJf ZG1hX3JsKGludGYsIFRYX1NQQl9ETUFfRklGT19TVEFUVVMpOworCQlpZiAoIShyZWcgJiBUWF9T UEJfRE1BX0ZJRk9fRkxVU0gpKQorCQkJYnJlYWs7CisJCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAw KTsKKwl9IHdoaWxlICh0aW1lb3V0LS0gPiAwKTsKKwl0eF9zcGJfZG1hX3dsKGludGYsIDB4MCwg VFhfU1BCX0RNQV9GSUZPX0NUUkwpOworCisJdW1hY19lbmFibGVfc2V0KGludGYsIFVNQ19DTURf VFhfRU4sIDApOworCisJcGh5X3N0b3AoZGV2LT5waHlkZXYpOworCisJdW1hY19lbmFibGVfc2V0 KGludGYsIFVNQ19DTURfUlhfRU4sIDApOworCisJYmNtYXNwX2ZsdXNoX3J4X3BvcnQoaW50Zik7 CisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWJjbWFzcF9lbmFibGVfcngoaW50ZiwgMCk7 CisKKwluYXBpX2Rpc2FibGUoJmludGYtPnJ4X25hcGkpOworCisJLyogRGlzYWJsZSBpbnRlcnJ1 cHRzICovCisJYmNtYXNwX2VuYWJsZV90eF9pcnEoaW50ZiwgMCk7CisJYmNtYXNwX2VuYWJsZV9y eF9pcnEoaW50ZiwgMCk7CisKKwluZXRpZl9uYXBpX2RlbCgmaW50Zi0+dHhfbmFwaSk7CisJYmNt YXNwX3JlY2xhaW1fZnJlZV9hbGxfdHgoaW50Zik7CisKKwluZXRpZl9uYXBpX2RlbCgmaW50Zi0+ cnhfbmFwaSk7CisJYmNtYXNwX3JlY2xhaW1fZnJlZV9hbGxfcngoaW50Zik7Cit9CisKK3N0YXRp YyBpbnQgYmNtYXNwX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisKKwluZXRpZl9kYmcoaW50Ziwg aWZkb3duLCBkZXYsICJiY21hc3Agc3RvcFxuIik7CisKKwkvKiBTdG9wIHR4IGZyb20gdXBkYXRp bmcgSFcgKi8KKwluZXRpZl90eF9kaXNhYmxlKGRldik7CisKKwliY21hc3BfbmV0aWZfZGVpbml0 KGRldik7CisKKwlwaHlfZGlzY29ubmVjdChkZXYtPnBoeWRldik7CisKKwkvKiBEaXNhYmxlIGlu dGVybmFsIEVQSFkgb3IgZXh0ZXJuYWwgUEhZICovCisJaWYgKGludGYtPmludGVybmFsX3BoeSkK KwkJYmNtYXNwX2VwaHlfZW5hYmxlX3NldChpbnRmLCBmYWxzZSk7CisJZWxzZQorCQliY21hc3Bf cmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgZmFsc2UpOworCisJLyogRGlzYWJsZSB0aGUgaW50ZXJm YWNlIGNsb2NrcyAqLworCWJjbWFzcF9jb3JlX2Nsb2NrX3NldF9pbnRmKGludGYsIGZhbHNlKTsK KworCWNsa19kaXNhYmxlX3VucHJlcGFyZShpbnRmLT5wYXJlbnQtPmNsayk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCBiY21hc3Bf aW50ZiAqaW50ZikKK3sKKwl1MzIgcmVnLCBpZF9tb2RlX2RpcyA9M0QgMDsKKworCXJlZyA9M0Qg cmdtaWlfcmwoaW50ZiwgUkdNSUlfUE9SVF9DTlRSTCk7CisJcmVnICY9M0QgflJHTUlJX1BPUlRf TU9ERV9NQVNLOworCisJc3dpdGNoIChpbnRmLT5waHlfaW50ZXJmYWNlKSB7CisJY2FzZSBQSFlf SU5URVJGQUNFX01PREVfUkdNSUk6CisJCS8qIFJHTUlJX05PX0lEOiBUWEMgdHJhbnNpdGlvbnMg YXQgdGhlIHNhbWUgdGltZSBhcyBUWEQKKwkJICoJCShyZXF1aXJlcyBQQ0Igb3IgcmVjZWl2ZXIt c2lkZSBkZWxheSkKKwkJICogUkdNSUk6CUFkZCAybnMgZGVsYXkgb24gVFhDICg5MCBkZWdyZWUg c2hpZnQpCisJCSAqCisJCSAqIElEIGlzIGltcGxpY2l0bHkgZGlzYWJsZWQgZm9yIDEwME1icHMg KFJHKU1JSSBvcGVyYXRpb24uCisJCSAqLworCQlpZF9tb2RlX2RpcyA9M0QgUkdNSUlfSURfTU9E RV9ESVM7CisJCWZhbGx0aHJvdWdoOworCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RY SUQ6CisJCXJlZyB8PTNEIFJHTUlJX1BPUlRfTU9ERV9FWFRfR1BIWTsKKwkJYnJlYWs7CisJY2Fz ZSBQSFlfSU5URVJGQUNFX01PREVfTUlJOgorCQlyZWcgfD0zRCBSR01JSV9QT1JUX01PREVfRVhU X0VQSFk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWlmIChpbnRmLT5p bnRlcm5hbF9waHkpCisJCXJlZyB8PTNEIFJHTUlJX1BPUlRfTU9ERV9FUEhZOworCisJcmdtaWlf d2woaW50ZiwgcmVnLCBSR01JSV9QT1JUX0NOVFJMKTsKKworCXJlZyA9M0QgcmdtaWlfcmwoaW50 ZiwgUkdNSUlfT09CX0NOVFJMKTsKKwlyZWcgJj0zRCB+UkdNSUlfSURfTU9ERV9ESVM7CisJcmVn IHw9M0QgaWRfbW9kZV9kaXM7CisJcmdtaWlfd2woaW50ZiwgcmVnLCBSR01JSV9PT0JfQ05UUkwp OworfQorCitzdGF0aWMgaW50IGJjbWFzcF9uZXRpZl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsIGJvb2wgcGh5X2Nvbm5lY3QpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBu ZXRkZXZfcHJpdihkZXYpOworCXBoeV9pbnRlcmZhY2VfdCBwaHlfaWZhY2UgPTNEIGludGYtPnBo eV9pbnRlcmZhY2U7CisJdTMyIHBoeV9mbGFncyA9M0QgUEhZX0JSQ01fQVVUT19QV1JEV05fRU5B QkxFIHwKKwkJCVBIWV9CUkNNX0RJU19UWENSWENfTk9FTlJHWSB8CisJCQlQSFlfQlJDTV9JRERR X1NVU1BFTkQ7CisJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9M0QgTlVMTDsKKwlpbnQgcmV0 OworCisJLyogQWx3YXlzIGVuYWJsZSBpbnRlcmZhY2UgY2xvY2tzICovCisJYmNtYXNwX2NvcmVf Y2xvY2tfc2V0X2ludGYoaW50ZiwgdHJ1ZSk7CisKKwkvKiBFbmFibGUgaW50ZXJuYWwgUEhZIG9y IGV4dGVybmFsIFBIWSBiZWZvcmUgYW55IE1BQyBhY3Rpdml0eSAqLworCWlmIChpbnRmLT5pbnRl cm5hbF9waHkpCisJCWJjbWFzcF9lcGh5X2VuYWJsZV9zZXQoaW50ZiwgdHJ1ZSk7CisJZWxzZQor CQliY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgdHJ1ZSk7CisJYmNtYXNwX2NvbmZpZ3Vy ZV9wb3J0KGludGYpOworCisJLyogVGhpcyBpcyBhbiB1Z2x5IHF1aXJrIGJ1dCB3ZSBoYXZlIG5v dCBiZWVuIGNvcnJlY3RseQorCSAqIGludGVycHJldGluZyB0aGUgcGh5X2ludGVyZmFjZSB2YWx1 ZXMgYW5kIHdlIGhhdmUgZG9uZSB0aGF0CisJICogYWNyb3NzIGRpZmZlcmVudCBkcml2ZXJzLCBz byBhdCBsZWFzdCB3ZSBhcmUgY29uc2lzdGVudCBpbgorCSAqIG91ciBtaXN0YWtlcy4KKwkgKgor CSAqIFdoZW4gdGhlIEdlbmVyaWMgUEhZIGRyaXZlciBpcyBpbiB1c2UgZWl0aGVyIHRoZSBQSFkg aGFzCisJICogYmVlbiBzdHJhcHBlZCBvciBwcm9ncmFtbWVkIGNvcnJlY3RseSBieSB0aGUgYm9v dCBsb2FkZXIgc28KKwkgKiB3ZSBzaG91bGQgc3RpY2sgdG8gb3VyIGluY29ycmVjdCBpbnRlcnBy ZXRhdGlvbiBzaW5jZSB3ZQorCSAqIGhhdmUgdmFsaWRhdGVkIGl0LgorCSAqCisJICogTm93IHdo ZW4gYSBkZWRpY2F0ZWQgUEhZIGRyaXZlciBpcyBpbiB1c2UsIHdlIG5lZWQgdG8KKwkgKiByZXZl cnNlIHRoZSBtZWFuaW5nIG9mIHRoZSBwaHlfaW50ZXJmYWNlX21vZGUgdmFsdWVzIHRvCisJICog c29tZXRoaW5nIHRoYXQgdGhlIFBIWSBkcml2ZXIgd2lsbCBpbnRlcnByZXQgYW5kIGFjdCBvbiBz dWNoCisJICogdGhhdCB3ZSBoYXZlIHR3byBtaXN0YWtlcyBjYW5jZWxpbmcgdGhlbXNlbHZlcyBz byB0byBzcGVhay4KKwkgKiBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSB0d28gbW9kZXMgdGhhdCBH RU5FVCBkcml2ZXIKKwkgKiBvZmZpY2lhbGx5IHN1cHBvcnRzIG9uIEJyb2FkY29tIFNUQiBjaGlw czoKKwkgKiBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkgYW5kIFBIWV9JTlRFUkZBQ0VfTU9ERV9S R01JSV9UWElELgorCSAqIE90aGVyIG1vZGVzIGFyZSBub3QgKm9mZmljaWFsbHkqIHN1cHBvcnRl ZCB3aXRoIHRoZSBib290CisJICogbG9hZGVyIGFuZCB0aGUgc2NyaXB0ZWQgZW52aXJvbm1lbnQg Z2VuZXJhdGluZyBEZXZpY2UgVHJlZQorCSAqIGJsb2JzIGZvciB0aG9zZSBwbGF0Zm9ybXMuCisJ ICoKKwkgKiBOb3RlIHRoYXQgaW50ZXJuYWwgUEhZIGFuZCBmaXhlZC1saW5rIGNvbmZpZ3VyYXRp b25zIGFyZSBub3QKKwkgKiBhZmZlY3RlZCBiZWNhdXNlIHRoZXkgdXNlIGRpZmZlcmVudCBwaHlf aW50ZXJmYWNlX3QgdmFsdWVzCisJICogb3IgdGhlIEdlbmVyaWMgUEhZIGRyaXZlci4KKwkgKi8K Kwlzd2l0Y2ggKHBoeV9pZmFjZSkgeworCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOgor CQlwaHlfaWZhY2UgPTNEIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDsKKwkJYnJlYWs7CisJ Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKKwkJcGh5X2lmYWNlID0zRCBQSFlf SU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7 CisJfQorCisJaWYgKHBoeV9jb25uZWN0KSB7CisJCXBoeWRldiA9M0Qgb2ZfcGh5X2Nvbm5lY3Qo ZGV2LCBpbnRmLT5waHlfZG4sCisJCQkJCWJjbWFzcF9hZGpfbGluaywgcGh5X2ZsYWdzLAorCQkJ CQlwaHlfaWZhY2UpOworCQlpZiAoIXBoeWRldikgeworCQkJcmV0ID0zRCAtRU5PREVWOworCQkJ bmV0ZGV2X2VycihkZXYsICJjb3VsZCBub3QgYXR0YWNoIHRvIFBIWVxuIik7CisJCQlnb3RvIGVy cl9waHlfZGlzYWJsZTsKKwkJfQorCX0gZWxzZSBpZiAoIWludGYtPndvbG9wdHMpIHsKKwkJcmV0 ID0zRCBwaHlfcmVzdW1lKGRldi0+cGh5ZGV2KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX3Bo eV9kaXNhYmxlOworCX0KKworCXVtYWNfcmVzZXQoaW50Zik7CisKKwl1bWFjX2luaXQoaW50Zik7 CisKKwkvKiBEaXNhYmxlIHRoZSBVbmlNQUMgUlgvVFggKi8KKwl1bWFjX2VuYWJsZV9zZXQoaW50 ZiwgKFVNQ19DTURfUlhfRU4gfCBVTUNfQ01EX1RYX0VOKSwgMCk7CisKKwl1bWFjX3NldF9od19h ZGRyKGludGYsIGRldi0+ZGV2X2FkZHIpOworCisJaW50Zi0+b2xkX2R1cGxleCA9M0QgLTE7CisJ aW50Zi0+b2xkX2xpbmsgPTNEIC0xOworCWludGYtPm9sZF9wYXVzZSA9M0QgLTE7CisKKwlyZXQg PTNEIGJjbWFzcF9pbml0X3R4KGludGYpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3BoeV9kaXNj b25uZWN0OworCisJLyogVHVybiBvbiBhc3AgKi8KKwliY21hc3BfZW5hYmxlX3R4KGludGYsIDEp OworCisJcmV0ID0zRCBiY21hc3BfaW5pdF9yeChpbnRmKTsKKwlpZiAocmV0KQorCQlnb3RvIGVy cl9yZWNsYWltX3R4OworCisJYmNtYXNwX2VuYWJsZV9yeChpbnRmLCAxKTsKKworCS8qIFR1cm4g b24gVW5pTUFDIFRYL1JYICovCisJdW1hY19lbmFibGVfc2V0KGludGYsIChVTUNfQ01EX1JYX0VO IHwgVU1DX0NNRF9UWF9FTiksIDEpOworCisJaW50Zi0+Y3JjX2Z3ZCA9M0QgISEodW1hY19ybChp bnRmLCBVTUNfQ01EKSAmIFVNQ19DTURfQ1JDX0ZXRCk7CisKKwliY21hc3BfbmV0aWZfc3RhcnQo ZGV2KTsKKworCW5ldGlmX3N0YXJ0X3F1ZXVlKGRldik7CisKKwlyZXR1cm4gMDsKKworZXJyX3Jl Y2xhaW1fdHg6CisJYmNtYXNwX3JlY2xhaW1fZnJlZV9hbGxfdHgoaW50Zik7CitlcnJfcGh5X2Rp c2Nvbm5lY3Q6CisJaWYgKHBoeWRldikKKwkJcGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTsKK2Vycl9w aHlfZGlzYWJsZToKKwlpZiAoaW50Zi0+aW50ZXJuYWxfcGh5KQorCQliY21hc3BfZXBoeV9lbmFi bGVfc2V0KGludGYsIGZhbHNlKTsKKwllbHNlCisJCWJjbWFzcF9yZ21paV9tb2RlX2VuX3NldChp bnRmLCBmYWxzZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBiY21hc3Bfb3Blbihz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0Qg bmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgcmV0OworCisJbmV0aWZfZGJnKGludGYsIGlmdXAsIGRl diwgImJjbWFzcCBvcGVuXG4iKTsKKworCXJldCA9M0QgY2xrX3ByZXBhcmVfZW5hYmxlKGludGYt PnBhcmVudC0+Y2xrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0zRCBiY21h c3BfbmV0aWZfaW5pdChkZXYsIHRydWUpOworCWlmIChyZXQpCisJCWNsa19kaXNhYmxlX3VucHJl cGFyZShpbnRmLT5wYXJlbnQtPmNsayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBiY21hc3BfcmVzZXRfbWliKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwl1bWFjX3ds KGludGYsIFVNQ19NSUJfQ05UUkxfUlhfQ05UX1JTVCB8CisJCVVNQ19NSUJfQ05UUkxfUlVOVF9D TlRfUlNUIHwKKwkJVU1DX01JQl9DTlRSTF9UWF9DTlRfUlNULCBVTUNfTUlCX0NOVFJMKTsKKwl1 c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisJdW1hY193bChpbnRmLCAwLCBVTUNfTUlCX0NOVFJM KTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRm ID0zRCBuZXRkZXZfcHJpdihkZXYpOworCisJbmV0aWZfZGJnKGludGYsIHR4X2VyciwgZGV2LCAi dHJhbnNtaXQgdGltZW91dCFcbiIpOworCWRldi0+c3RhdHMudHhfZXJyb3JzKys7Cit9CisKK3N0 YXRpYyBpbnQgYmNtYXNwX2dldF9waHlzX3BvcnRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LAorCQkJCSAgICAgY2hhciAqbmFtZSwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgYmNtYXNwX2lu dGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisKKwlpZiAoc25wcmludGYobmFtZSwgbGVu LCAicCVkIiwgaW50Zi0+cG9ydCkgPj0zRCBsZW4pCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYmNtYXNwX25l dGRldl9vcHMgPTNEIHsKKwkubmRvX29wZW4JCT0zRCBiY21hc3Bfb3BlbiwKKwkubmRvX3N0b3AJ CT0zRCBiY21hc3Bfc3RvcCwKKwkubmRvX3N0YXJ0X3htaXQJCT0zRCBiY21hc3BfeG1pdCwKKwku bmRvX3R4X3RpbWVvdXQJCT0zRCBiY21hc3BfdHhfdGltZW91dCwKKwkubmRvX3NldF9yeF9tb2Rl CT0zRCBiY21hc3Bfc2V0X3J4X21vZGUsCisJLm5kb19nZXRfcGh5c19wb3J0X25hbWUJPTNEIGJj bWFzcF9nZXRfcGh5c19wb3J0X25hbWUsCisJLm5kb19ldGhfaW9jdGwJCT0zRCBwaHlfZG9faW9j dGxfcnVubmluZywKKwkubmRvX3NldF9tYWNfYWRkcmVzcwk9M0QgZXRoX21hY19hZGRyLAorfTsK Kworc3RhdGljIHZvaWQgYmNtYXNwX21hcF9yZXMoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LCBz dHJ1Y3QgYmNtYXNwX2ludGYgKmk9Cm50ZikKK3sKKwkvKiBQZXIgcG9ydCAqLworCWludGYtPnJl cy51bWFjID0zRCBwcml2LT5iYXNlICsgVU1DX09GRlNFVChpbnRmKTsKKwlpbnRmLT5yZXMudW1h YzJmYiA9M0QgcHJpdi0+YmFzZSArIChwcml2LT5od19pbmZvLT51bWFjMmZiICsKKwkJCQkJICAo aW50Zi0+cG9ydCAqIDB4NCkpOworCWludGYtPnJlcy5yZ21paSA9M0QgcHJpdi0+YmFzZSArIFJH TUlJX09GRlNFVChpbnRmKTsKKworCS8qIFBlciBjaCAqLworCWludGYtPnR4X3NwYl9kbWEgPTNE IHByaXYtPmJhc2UgKyBUWF9TUEJfRE1BX09GRlNFVChpbnRmKTsKKwlpbnRmLT5yZXMudHhfc3Bi X2N0cmwgPTNEIHByaXYtPmJhc2UgKyBUWF9TUEJfQ1RSTF9PRkZTRVQoaW50Zik7CisJaW50Zi0+ cmVzLnR4X3NwYl90b3AgPTNEIHByaXYtPmJhc2UgKyBUWF9TUEJfVE9QX09GRlNFVChpbnRmKTsK KwlpbnRmLT5yZXMudHhfZXBrdF9jb3JlID0zRCBwcml2LT5iYXNlICsgVFhfRVBLVF9DX09GRlNF VChpbnRmKTsKKwlpbnRmLT5yZXMudHhfcGF1c2VfY3RybCA9M0QgcHJpdi0+YmFzZSArIFRYX1BB VVNFX0NUUkxfT0ZGU0VUKGludGYpOworCisJaW50Zi0+cnhfZWRwa3RfZG1hID0zRCBwcml2LT5i YXNlICsgUlhfRURQS1RfRE1BX09GRlNFVChpbnRmKTsKKwlpbnRmLT5yeF9lZHBrdF9jZmcgPTNE IHByaXYtPmJhc2UgKyBSWF9FRFBLVF9DRkdfT0ZGU0VUKGludGYpOworfQorCisjZGVmaW5lIE1B WF9JUlFfU1RSX0xFTgkJNjQKK3N0cnVjdCBiY21hc3BfaW50ZiAqYmNtYXNwX2ludGVyZmFjZV9j cmVhdGUoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LAorCQkJCQkgICAgc3RydWN0IGRldmljZV9u b2RlICpuZGV2X2RuLCBpbnQgaSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPTNEICZwcml2LT5w ZGV2LT5kZXY7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmOworCXN0cnVjdCBuZXRfZGV2aWNl ICpuZGV2OworCWludCBjaCwgcG9ydCwgcmV0OworCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMy KG5kZXZfZG4sICJyZWciLCAmcG9ydCkpIHsKKwkJZGV2X3dhcm4oZGV2LCAiJXM6IGludmFsaWQg Y2ggbnVtYmVyXG4iLCBuZGV2X2RuLT5uYW1lKTsKKwkJZ290byBlcnI7CisJfQorCisJaWYgKG9m X3Byb3BlcnR5X3JlYWRfdTMyKG5kZXZfZG4sICJicmNtLGNoYW5uZWwiLCAmY2gpKSB7CisJCWRl dl93YXJuKGRldiwgIiVzOiBpbnZhbGlkIGNoIG51bWJlclxuIiwgbmRldl9kbi0+bmFtZSk7CisJ CWdvdG8gZXJyOworCX0KKworCW5kZXYgPTNEIGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3Qg YmNtYXNwX2ludGYpKTsKKwlpZiAoIW5kZXYpIHsKKwkJZGV2X3dhcm4oZGV2LCAiJXM6IHVuYWJs ZSB0byBhbGxvYyBuZGV2XG4iLCBuZGV2X2RuLT5uYW1lKTsKKwkJZ290byBlcnI7CisJfQorCWlu dGYgPTNEIG5ldGRldl9wcml2KG5kZXYpOworCisJaW50Zi0+cGFyZW50ID0zRCBwcml2OworCWlu dGYtPm5kZXYgPTNEIG5kZXY7CisJaW50Zi0+Y2hhbm5lbCA9M0QgY2g7CisJaW50Zi0+cG9ydCA9 M0QgcG9ydDsKKwlpbnRmLT5uZGV2X2RuID0zRCBuZGV2X2RuOworCWludGYtPmluZGV4ID0zRCBp OworCisJcmV0ID0zRCBvZl9nZXRfcGh5X21vZGUobmRldl9kbiwgJmludGYtPnBoeV9pbnRlcmZh Y2UpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBQSFkgbW9kZSBw cm9wZXJ0eVxuIik7CisJCWdvdG8gZXJyX2ZyZWVfbmV0ZGV2OworCX0KKworCWlmIChpbnRmLT5w aHlfaW50ZXJmYWNlID0zRD0zRCBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwpCisJCWludGYt PmludGVybmFsX3BoeSA9M0QgdHJ1ZTsKKworCWludGYtPnBoeV9kbiA9M0Qgb2ZfcGFyc2VfcGhh bmRsZShuZGV2X2RuLCAicGh5LWhhbmRsZSIsIDApOworCWlmICghaW50Zi0+cGh5X2RuICYmIG9m X3BoeV9pc19maXhlZF9saW5rKG5kZXZfZG4pKSB7CisJCXJldCA9M0Qgb2ZfcGh5X3JlZ2lzdGVy X2ZpeGVkX2xpbmsobmRldl9kbik7CisJCWlmIChyZXQpIHsKKwkJCWRldl93YXJuKGRldiwgIiVz OiBmYWlsZWQgdG8gcmVnaXN0ZXIgZml4ZWQgUEhZXG4iLAorCQkJCSBuZGV2X2RuLT5uYW1lKTsK KwkJCWdvdG8gZXJyX2ZyZWVfbmV0ZGV2OworCQl9CisJCWludGYtPnBoeV9kbiA9M0QgbmRldl9k bjsKKwl9CisKKwkvKiBNYXAgcmVzb3VyY2UgKi8KKwliY21hc3BfbWFwX3Jlcyhwcml2LCBpbnRm KTsKKworCWlmICgoIXBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRmLT5waHlfaW50ZXJm YWNlKSAmJgorCSAgICAgaW50Zi0+cGh5X2ludGVyZmFjZSAhPTNEIFBIWV9JTlRFUkZBQ0VfTU9E RV9NSUkgJiYKKwkgICAgIGludGYtPnBoeV9pbnRlcmZhY2UgIT0zRCBQSFlfSU5URVJGQUNFX01P REVfSU5URVJOQUwpIHx8CisJICAgIChpbnRmLT5wb3J0ICE9M0QgMSAmJiBpbnRmLT5pbnRlcm5h bF9waHkpKSB7CisJCW5ldGRldl9lcnIoaW50Zi0+bmRldiwgImludmFsaWQgUEhZIG1vZGU6ICVz IGZvciBwb3J0ICVkXG4iLAorCQkJICAgcGh5X21vZGVzKGludGYtPnBoeV9pbnRlcmZhY2UpLCBp bnRmLT5wb3J0KTsKKwkJcmV0ID0zRCAtRUlOVkFMOworCQlnb3RvIGVycl9mcmVlX25ldGRldjsK Kwl9CisKKwliY21hc3BfcmVzZXRfbWliKGludGYpOworCisJcmV0ID0zRCBvZl9nZXRfZXRoZGV2 X2FkZHJlc3MobmRldl9kbiwgbmRldik7CisJaWYgKHJldCkgeworCQluZXRkZXZfd2FybihuZGV2 LCAidXNpbmcgcmFuZG9tIEV0aGVybmV0IE1BQ1xuIik7CisJCWV0aF9od19hZGRyX3JhbmRvbShu ZGV2KTsKKwl9CisKKwlTRVRfTkVUREVWX0RFVihuZGV2LCBkZXYpOworCWludGYtPm9wcyA9M0Qg JmJjbWFzcF9pbnRmX29wczsKKwluZGV2LT5uZXRkZXZfb3BzID0zRCAmYmNtYXNwX25ldGRldl9v cHM7CisJbmRldi0+ZXRodG9vbF9vcHMgPTNEICZiY21hc3BfZXRodG9vbF9vcHM7CisJaW50Zi0+ bXNnX2VuYWJsZSA9M0QgbmV0aWZfbXNnX2luaXQoLTEsIE5FVElGX01TR19EUlYgfAorCQkJCQkg IE5FVElGX01TR19QUk9CRSB8CisJCQkJCSAgTkVUSUZfTVNHX0xJTkspOworCW5kZXYtPmZlYXR1 cmVzIHw9M0QgTkVUSUZfRl9JUF9DU1VNIHwgTkVUSUZfRl9JUFY2X0NTVU0gfCBORVRJRl9GX1NH IHwKKwkJCSAgTkVUSUZfRl9SWENTVU07CisJbmRldi0+aHdfZmVhdHVyZXMgfD0zRCBuZGV2LT5m ZWF0dXJlczsKKwluZGV2LT5uZWVkZWRfaGVhZHJvb20gKz0zRCBzaXplb2Yoc3RydWN0IGJjbWFz cF9wa3Rfb2ZmbG9hZCk7CisKKwlyZXR1cm4gaW50ZjsKKworZXJyX2ZyZWVfbmV0ZGV2OgorCWZy ZWVfbmV0ZGV2KG5kZXYpOworZXJyOgorCXJldHVybiBOVUxMOworfQorCit2b2lkIGJjbWFzcF9p bnRlcmZhY2VfZGVzdHJveShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgdW5yZWdpc3Rl cikKK3sKKwlpZiAodW5yZWdpc3RlcikKKwkJdW5yZWdpc3Rlcl9uZXRkZXYoaW50Zi0+bmRldik7 CisJaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGludGYtPm5kZXZfZG4pKQorCQlvZl9waHlfZGVy ZWdpc3Rlcl9maXhlZF9saW5rKGludGYtPm5kZXZfZG4pOworCWZyZWVfbmV0ZGV2KGludGYtPm5k ZXYpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc3VzcGVuZF90b193b2woc3RydWN0IGJjbWFz cF9pbnRmICppbnRmKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0zRCBpbnRmLT5uZGV2 OworCXUzMiByZWc7CisKKwlyZWcgPTNEIHVtYWNfcmwoaW50ZiwgVU1DX01QRF9DVFJMKTsKKwlp ZiAoaW50Zi0+d29sb3B0cyAmIChXQUtFX01BR0lDIHwgV0FLRV9NQUdJQ1NFQ1VSRSkpCisJCXJl ZyB8PTNEIFVNQ19NUERfQ1RSTF9NUERfRU47CisJcmVnICY9M0QgflVNQ19NUERfQ1RSTF9QU1df RU47CisJaWYgKGludGYtPndvbG9wdHMgJiBXQUtFX01BR0lDU0VDVVJFKSB7CisJCS8qIFByb2dy YW0gdGhlIFNlY3VyZU9uIHBhc3N3b3JkICovCisJCXVtYWNfd2woaW50ZiwgZ2V0X3VuYWxpZ25l ZF9iZTE2KCZpbnRmLT5zb3Bhc3NbMF0pLAorCQkJVU1DX1BTV19NUyk7CisJCXVtYWNfd2woaW50 ZiwgZ2V0X3VuYWxpZ25lZF9iZTMyKCZpbnRmLT5zb3Bhc3NbMl0pLAorCQkJVU1DX1BTV19MUyk7 CisJCXJlZyB8PTNEIFVNQ19NUERfQ1RSTF9QU1dfRU47CisJfQorCXVtYWNfd2woaW50ZiwgcmVn LCBVTUNfTVBEX0NUUkwpOworCisJaWYgKGludGYtPndvbG9wdHMgJiBXQUtFX0ZJTFRFUikKKwkJ YmNtYXNwX25ldGZpbHRfc3VzcGVuZChpbnRmKTsKKworCS8qIFVuaU1BQyByZWNlaXZlIG5lZWRz IHRvIGJlIHR1cm5lZCBvbiAqLworCXVtYWNfZW5hYmxlX3NldChpbnRmLCBVTUNfQ01EX1JYX0VO LCAxKTsKKworCWlmIChpbnRmLT5wYXJlbnQtPndvbF9pcnEgPiAwKSB7CisJCXdha2V1cF9pbnRy Ml9jb3JlX3dsKGludGYtPnBhcmVudCwgMHhmZmZmZmZmZiwKKwkJCQkgICAgIEFTUF9XQUtFVVBf SU5UUjJfTUFTS19DTEVBUik7CisJfQorCisJbmV0aWZfZGJnKGludGYsIHdvbCwgbmRldiwgImVu dGVyZWQgV09MIG1vZGVcbiIpOworfQorCitpbnQgYmNtYXNwX2ludGVyZmFjZV9zdXNwZW5kKHN0 cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmaW50 Zi0+cGFyZW50LT5wZGV2LT5kZXY7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9M0QgaW50Zi0+ bmRldjsKKwlpbnQgcmV0ID0zRCAwOworCisJaWYgKCFuZXRpZl9ydW5uaW5nKGRldikpCisJCXJl dHVybiAwOworCisJbmV0aWZfZGV2aWNlX2RldGFjaChkZXYpOworCisJYmNtYXNwX25ldGlmX2Rl aW5pdChkZXYpOworCisJaWYgKCFpbnRmLT53b2xvcHRzKSB7CisJCXJldCA9M0QgcGh5X3N1c3Bl bmQoZGV2LT5waHlkZXYpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisKKwkJaWYgKGludGYt PmludGVybmFsX3BoeSkKKwkJCWJjbWFzcF9lcGh5X2VuYWJsZV9zZXQoaW50ZiwgZmFsc2UpOwor CQllbHNlCisJCQliY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgZmFsc2UpOworCisJCS8q IElmIFdha2Utb24tTEFOIGlzIGRpc2FibGVkLCB3ZSBjYW4gc2FmZWx5CisJCSAqIGRpc2FibGUg dGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNsb2Nrcy4KKwkJICovCisJCWJjbWFzcF9jb3JlX2Nsb2Nr X3NldF9pbnRmKGludGYsIGZhbHNlKTsKKwl9CisKKwlpZiAoZGV2aWNlX21heV93YWtldXAoa2Rl dikgJiYgaW50Zi0+d29sb3B0cykKKwkJYmNtYXNwX3N1c3BlbmRfdG9fd29sKGludGYpOworCisJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGludGYtPnBhcmVudC0+Y2xrKTsKKworCXJldHVybiByZXQ7 CisKK291dDoKKwliY21hc3BfbmV0aWZfaW5pdChkZXYsIGZhbHNlKTsKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmVzdW1lX2Zyb21fd29sKHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZikKK3sKKwl1MzIgcmVnOworCisJcmVnID0zRCB1bWFjX3JsKGludGYsIFVNQ19NUERf Q1RSTCk7CisJcmVnICY9M0QgflVNQ19NUERfQ1RSTF9NUERfRU47CisJdW1hY193bChpbnRmLCBy ZWcsIFVNQ19NUERfQ1RSTCk7CisKKwlpZiAoaW50Zi0+cGFyZW50LT53b2xfaXJxID4gMCkgewor CQl3YWtldXBfaW50cjJfY29yZV93bChpbnRmLT5wYXJlbnQsIDB4ZmZmZmZmZmYsCisJCQkJICAg ICBBU1BfV0FLRVVQX0lOVFIyX01BU0tfU0VUKTsKKwl9Cit9CisKK2ludCBiY21hc3BfaW50ZXJm YWNlX3Jlc3VtZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpCit7CisJc3RydWN0IG5ldF9kZXZp Y2UgKmRldiA9M0QgaW50Zi0+bmRldjsKKwlpbnQgcmV0OworCisJaWYgKCFuZXRpZl9ydW5uaW5n KGRldikpCisJCXJldHVybiAwOworCisJcmV0ID0zRCBjbGtfcHJlcGFyZV9lbmFibGUoaW50Zi0+ cGFyZW50LT5jbGspOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPTNEIGJjbWFz cF9uZXRpZl9pbml0KGRldiwgZmFsc2UpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJYmNt YXNwX3Jlc3VtZV9mcm9tX3dvbChpbnRmKTsKKworCWlmIChpbnRmLT5lZWUuZWVlX2VuYWJsZWQp CisJCWJjbWFzcF9lZWVfZW5hYmxlX3NldChpbnRmLCB0cnVlKTsKKworCW5ldGlmX2RldmljZV9h dHRhY2goZGV2KTsKKworCXJldHVybiAwOworCitvdXQ6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGludGYtPnBhcmVudC0+Y2xrKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zl9kZWZzLmggYi9kcml2ZXI9 CnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGZfZGVmcy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWIxZTY1MDAyMjYwCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zl9k ZWZzLmgKQEAgLTAsMCArMSwyMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wICovCisjaWZuZGVmIF9fQkNNQVNQX0lOVEZfREVGU19ICisjZGVmaW5lIF9fQkNNQVNQX0lO VEZfREVGU19ICisKKyNkZWZpbmUgVU1DX09GRlNFVChpbnRmKQkJXAorCSgoKChpbnRmKS0+cG9y dCkgKiAweDgwMCkgKyAweGMwMDApCisjZGVmaW5lICBVTUNfQ01ECQkJMHgwMDgKKyNkZWZpbmUg ICBVTUNfQ01EX1RYX0VOCQkJQklUKDApCisjZGVmaW5lICAgVU1DX0NNRF9SWF9FTgkJCUJJVCgx KQorI2RlZmluZSAgIFVNQ19DTURfU1BFRURfU0hJRlQJCTB4MgorI2RlZmluZSAgICBVTUNfQ01E X1NQRUVEX01BU0sJCTB4MworI2RlZmluZSAgICBVTUNfQ01EX1NQRUVEXzEwCQkweDAKKyNkZWZp bmUgICAgVU1DX0NNRF9TUEVFRF8xMDAJCTB4MQorI2RlZmluZSAgICBVTUNfQ01EX1NQRUVEXzEw MDAJCTB4MgorI2RlZmluZSAgICBVTUNfQ01EX1NQRUVEXzI1MDAJCTB4MworI2RlZmluZSAgIFVN Q19DTURfUFJPTUlTQwkJQklUKDQpCisjZGVmaW5lICAgVU1DX0NNRF9QQURfRU4JCUJJVCg1KQor I2RlZmluZSAgIFVNQ19DTURfQ1JDX0ZXRAkJQklUKDYpCisjZGVmaW5lICAgVU1DX0NNRF9QQVVT RV9GV0QJCUJJVCg3KQorI2RlZmluZSAgIFVNQ19DTURfUlhfUEFVU0VfSUdOT1JFCUJJVCg4KQor I2RlZmluZSAgIFVNQ19DTURfVFhfQUREUl9JTlMJCUJJVCg5KQorI2RlZmluZSAgIFVNQ19DTURf SERfRU4JCQlCSVQoMTApCisjZGVmaW5lICAgVU1DX0NNRF9TV19SRVNFVAkJQklUKDEzKQorI2Rl ZmluZSAgIFVNQ19DTURfTENMX0xPT1BfRU4JCUJJVCgxNSkKKyNkZWZpbmUgICBVTUNfQ01EX0FV VE9fQ09ORklHCQlCSVQoMjIpCisjZGVmaW5lICAgVU1DX0NNRF9DTlRMX0ZSTV9FTgkJQklUKDIz KQorI2RlZmluZSAgIFVNQ19DTURfTk9fTEVOX0NISwkJQklUKDI0KQorI2RlZmluZSAgIFVNQ19D TURfUk1UX0xPT1BfRU4JCUJJVCgyNSkKKyNkZWZpbmUgICBVTUNfQ01EX1BSQkxfRU4JCUJJVCgy NykKKyNkZWZpbmUgICBVTUNfQ01EX1RYX1BBVVNFX0lHTk9SRQlCSVQoMjgpCisjZGVmaW5lICAg VU1DX0NNRF9UWF9SWF9FTgkJQklUKDI5KQorI2RlZmluZSAgIFVNQ19DTURfUlVOVF9GSUxURVJf RElTCUJJVCgzMCkKKyNkZWZpbmUgIFVNQ19NQUMwCQkJMHgwYworI2RlZmluZSAgVU1DX01BQzEJ CQkweDEwCisjZGVmaW5lICBVTUNfRlJNX0xFTgkJCTB4MTQKKyNkZWZpbmUgIFVNQ19FRUVfQ1RS TAkJCTB4NjQKKyNkZWZpbmUgICBFTl9MUElfUlhfUEFVU0UJCUJJVCgwKQorI2RlZmluZSAgIEVO X0xQSV9UWF9QRkMJCQlCSVQoMSkKKyNkZWZpbmUgICBFTl9MUElfVFhfUEFVU0UJCUJJVCgyKQor I2RlZmluZSAgIEVFRV9FTgkJCUJJVCgzKQorI2RlZmluZSAgIFJYX0ZJRk9fQ0hFQ0sJCQlCSVQo NCkKKyNkZWZpbmUgICBFRUVfVFhfQ0xLX0RJUwkJQklUKDUpCisjZGVmaW5lICAgRElTX0VFRV8x ME0JCQlCSVQoNikKKyNkZWZpbmUgICBMUF9JRExFX1BSRURJQ1RJT05fTU9ERQlCSVQoNykKKyNk ZWZpbmUgIFVNQ19FRUVfTFBJX1RJTUVSCQkweDY4CisjZGVmaW5lICBVTUNfUEFVU0VfQ05UUkwJ CTB4MzMwCisjZGVmaW5lICBVTUNfVFhfRkxVU0gJCQkweDMzNAorI2RlZmluZSAgVU1DX01JQl9T VEFSVAkJCTB4NDAwCisjZGVmaW5lICBVTUNfTUlCX0NOVFJMCQkJMHg1ODAKKyNkZWZpbmUgICBV TUNfTUlCX0NOVFJMX1JYX0NOVF9SU1QJQklUKDApCisjZGVmaW5lICAgVU1DX01JQl9DTlRSTF9S VU5UX0NOVF9SU1QJQklUKDEpCisjZGVmaW5lICAgVU1DX01JQl9DTlRSTF9UWF9DTlRfUlNUCUJJ VCgyKQorI2RlZmluZSAgVU1DX1JYX01BWF9QS1RfU1oJCTB4NjA4CisjZGVmaW5lICBVTUNfTVBE X0NUUkwJCQkweDYyMAorI2RlZmluZSAgIFVNQ19NUERfQ1RSTF9NUERfRU4JCUJJVCgwKQorI2Rl ZmluZSAgIFVNQ19NUERfQ1RSTF9QU1dfRU4JCUJJVCgyNykKKyNkZWZpbmUgIFVNQ19QU1dfTVMJ CQkweDYyNAorI2RlZmluZSAgVU1DX1BTV19MUwkJCTB4NjI4CisKKyNkZWZpbmUgVU1BQzJGQl9P RkZTRVRfMl8xCQkweDlmMDQ0CisjZGVmaW5lIFVNQUMyRkJfT0ZGU0VUCQkJMHg5ZjAzYworI2Rl ZmluZSAgVU1BQzJGQl9DRkcJCQkweDAKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19PUFVUX0VOCQlC SVQoMCkKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19WTEFOX0VOCQlCSVQoMSkKKyNkZWZpbmUgICBV TUFDMkZCX0NGR19TTkFQX0VOCQlCSVQoMikKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19CQ01fVEdf RU4JCUJJVCgzKQorI2RlZmluZSAgIFVNQUMyRkJfQ0ZHX0lQVVRfRU4JCUJJVCg0KQorI2RlZmlu ZSAgIFVNQUMyRkJfQ0ZHX0NISURfU0hJRlQJOAorI2RlZmluZSAgIFVNQUMyRkJfQ0ZHX09LX1NF TkRfU0hJRlQJMjQKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19ERUZBVUxUX0VOCVwKKwkJKFVNQUMy RkJfQ0ZHX09QVVRfRU4gfCBVTUFDMkZCX0NGR19WTEFOX0VOIFwKKwkJfCBVTUFDMkZCX0NGR19T TkFQX0VOIHwgVU1BQzJGQl9DRkdfSVBVVF9FTikKKworI2RlZmluZSBSR01JSV9PRkZTRVQoaW50 ZikJXAorCSgoKChpbnRmKS0+cG9ydCkgKiAweDEwMCkgKyAweGQwMDApCisjZGVmaW5lICBSR01J SV9FUEhZX0NOVFJMCQkweDAwCisjZGVmaW5lICAgIFJHTUlJX0VQSFlfQ0ZHX0lERFFfQklBUwlC SVQoMCkKKyNkZWZpbmUgICAgUkdNSUlfRVBIWV9DRkdfRVhUX1BXUkRPV04JQklUKDEpCisjZGVm aW5lICAgIFJHTUlJX0VQSFlfQ0ZHX0ZPUkNFX0RMTF9FTglCSVQoMikKKyNkZWZpbmUgICAgUkdN SUlfRVBIWV9DRkdfSUREUV9HTE9CQUwJQklUKDMpCisjZGVmaW5lICAgIFJHTUlJX0VQSFlfQ0sy NV9ESVMJCUJJVCg0KQorI2RlZmluZSAgICBSR01JSV9FUEhZX1JFU0VUCQlCSVQoNykKKyNkZWZp bmUgIFJHTUlJX09PQl9DTlRSTAkJMHgwYworI2RlZmluZSAgIFJHTUlJX0xJTksJCQlCSVQoNCkK KyNkZWZpbmUgICBSR01JSV9PT0JfRElTCQkJQklUKDUpCisjZGVmaW5lICAgUkdNSUlfTU9ERV9F TgkJCUJJVCg2KQorI2RlZmluZSAgIFJHTUlJX0lEX01PREVfRElTCQlCSVQoMTYpCisKKyNkZWZp bmUgUkdNSUlfUE9SVF9DTlRSTAkJMHg2MAorI2RlZmluZSAgIFJHTUlJX1BPUlRfTU9ERV9FUEhZ CQkwCisjZGVmaW5lICAgUkdNSUlfUE9SVF9NT0RFX0dQSFkJCTEKKyNkZWZpbmUgICBSR01JSV9Q T1JUX01PREVfRVhUX0VQSFkJMgorI2RlZmluZSAgIFJHTUlJX1BPUlRfTU9ERV9FWFRfR1BIWQkz CisjZGVmaW5lICAgUkdNSUlfUE9SVF9NT0RFX0VYVF9SVk1JSQk0CisjZGVmaW5lICAgUkdNSUlf UE9SVF9NT0RFX01BU0sJCUdFTk1BU0soMiwgMCkKKworI2RlZmluZSBSR01JSV9TWVNfTEVEX0NO VFJMCQkweDc0CisjZGVmaW5lICBSR01JSV9TWVNfTEVEX0NOVFJMX0xJTktfT1ZSRAlCSVQoMTUp CisKKyNkZWZpbmUgT1VURE1BX09GRlNFVChpbnRmKQlcCisJKCgoaW50Zi0+Y2hhbm5lbCAtIDYp ICogMHhiMCkgKyAweDQ3MDAwKQorI2RlZmluZSAgT1VURE1BX0VOQUJMRQkJCTB4MDAKKyNkZWZp bmUgICBPVVRETUFfRU5BQkxFX0VOCQlCSVQoMCkKKyNkZWZpbmUgIE9VVERNQV9IV19TVEFUVVMJ CTB4MDQKKyNkZWZpbmUgICBPVVRETUFfSFdfU1RBVFVTX0lETEUJCUJJVCgwKQorI2RlZmluZSAg T1VURE1BX0RBVEFfRE1BX1dSSVRFCQkweDA4CisjZGVmaW5lICBPVVRETUFfREFUQV9ETUFfUkVB RAkJMHgxMAorI2RlZmluZSAgT1VURE1BX0RBVEFfRE1BX0JBU0UJCTB4MTgKKyNkZWZpbmUgIE9V VERNQV9EQVRBX0RNQV9FTkQJCTB4MjAKKyNkZWZpbmUgIE9VVERNQV9EQVRBX0RNQV9WQUxJRAkJ MHgyOAorI2RlZmluZSAgT1VURE1BX0RBVEFfQ1RSTDEJCTB4MzAKKyNkZWZpbmUgICBPVVRETUFf REFUQV9DVFJMMV9FX0JBTE5fTUFTSwlHRU5NQVNLKDIsIDApCisjZGVmaW5lICAgT1VURE1BX0RB VEFfQ1RSTDFfRV9OT19BTE4JMHgwMAorI2RlZmluZSAgIE9VVERNQV9EQVRBX0NUUkwxX0VfNF9B TE4JMHgwMgorI2RlZmluZSAgIE9VVERNQV9EQVRBX0NUUkwxX0VfNjRfQUxOCTB4MDYKKyNkZWZp bmUgICBPVVRETUFfREFUQV9DVFJMMV9FX1NUVUZGCUJJVCgzKQorI2RlZmluZSAgIE9VVERNQV9E QVRBX0NUUkwxX1BTSF9UTVJfRU4JQklUKDQpCisjZGVmaW5lICBPVVRETUFfREFUQV9QVVNIX1RJ TUVSCQkweDM0CisjZGVmaW5lICBPVVRETUFfREFUQV9QVVNIX0VWRU5UX0NUUkwJMHgzOAorI2Rl ZmluZSAgIE9VVERNQV9EQVRBX1BVU0hfQ1RSTF9QVVNICUJJVCgwKQorI2RlZmluZSAgT1VURE1B X0RBVEFfUFVTSF9FVkVOVF9TVEFUVVMJMHgzYworI2RlZmluZSAgIE9VVERNQV9EQVRBX1BVU0hf RVZUX1NUQVRVUwlCSVQoMCkKKyNkZWZpbmUgIE9VVERNQV9ERVNDX0RNQV9XUklURQkJMHg1MAor I2RlZmluZSAgT1VURE1BX0RFU0NfRE1BX1JFQUQJCTB4NTgKKyNkZWZpbmUgIE9VVERNQV9ERVND X0RNQV9CQVNFCQkweDYwCisjZGVmaW5lICBPVVRETUFfREVTQ19ETUFfRU5ECQkweDY4CisjZGVm aW5lICBPVVRETUFfREVTQ19ETUFfVkFMSUQJCTB4NzAKKyNkZWZpbmUgIE9VVERNQV9ERVNDX0RN QV9DVFJMMQkJMHg3OAorI2RlZmluZSAgIE9VVERNQV9ERVNDX0NUUkwxX1BTSF9USU1SX0VOCUJJ VCgwKQorI2RlZmluZSAgT1VURE1BX0RFU0NfUFVTSF9USU1FUgkJMHg3YworI2RlZmluZSAgT1VU RE1BX0RFU0NfUFVTSF9FVlRfQ1RMCTB4ODAKKyNkZWZpbmUgICBPVVRETUFfREVTQ19QVVNIX0VW VF9DVExfUFNICUJJVCgwKQorI2RlZmluZSAgT1VURE1BX0RFU0NfUFNIX0VWVF9TVAkJMHg4NAor I2RlZmluZSAgT1VURE1BX0RFU0NfRklGT19DVFJMCQkweDg4CisjZGVmaW5lICAgT1VURE1BX0RF U0NfRklGT19DVExfRkxVU0gJQklUKDApCisjZGVmaW5lICBPVVRETUFfREVTQ19GSUZPX0ZMVVNI X1NUQVRVUwkweDhjCisjZGVmaW5lICAgT1VURE1BX0RFU0NfRklGT19GTEhfU1QJQklUKDApCisj ZGVmaW5lICBPVVRETUFfREVTQ19ETUFfQ1RSTDIJCTB4OTQKKyNkZWZpbmUgICBPVVRNREFfREVT Q19ETUFfQ1RSTDJfV0RfRU4JQklUKDEpCisjZGVmaW5lICAgT1VURE1BX0RFU0NfRE1BX0NUUkwy X1JYX1BPUlQJOAorCisjZGVmaW5lIFRYX1NQQl9ETUFfT0ZGU0VUKGludGYpIFwKKwkoKCgoaW50 ZiktPmNoYW5uZWwpICogMHgzMCkgKyAweDQ4MTgwKQorI2RlZmluZSAgVFhfU1BCX0RNQV9SRUFE CQkweDAwCisjZGVmaW5lICBUWF9TUEJfRE1BX0JBU0UJCTB4MDgKKyNkZWZpbmUgIFRYX1NQQl9E TUFfRU5ECQkJMHgxMAorI2RlZmluZSAgVFhfU1BCX0RNQV9WQUxJRAkJMHgxOAorI2RlZmluZSAg VFhfU1BCX0RNQV9GSUZPX0NUUkwJCTB4MjAKKyNkZWZpbmUgICBUWF9TUEJfRE1BX0ZJRk9fRkxV U0gJCUJJVCgwKQorI2RlZmluZSAgVFhfU1BCX0RNQV9GSUZPX1NUQVRVUwkJMHgyNAorCisjZGVm aW5lIFRYX1NQQl9DVFJMX09GRlNFVChpbnRmKSBcCisJKCgoKGludGYpLT5jaGFubmVsKSAqIDB4 NjgpICsgMHg0OTM0MCkKKyNkZWZpbmUgIFRYX1NQQl9DVFJMX0VOQUJMRQkJMHgwCisjZGVmaW5l ICAgVFhfU1BCX0NUUkxfRU5BQkxFX0VOCQlCSVQoMCkKKyNkZWZpbmUgIFRYX1NQQl9DVFJMX1hG X0NUUkwyCQkweDIwCisjZGVmaW5lICAgVFhfU1BCX0NUUkxfWEZfQklEX1NISUZUCTE2CisKKyNk ZWZpbmUgVFhfU1BCX1RPUF9PRkZTRVQoaW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkgKiAw eDFjKSArIDB4NGEwZTApCisjZGVmaW5lIFRYX1NQQl9UT1BfQkxLT1VUCQkweDAKKyNkZWZpbmUg VFhfU1BCX1RPUF9TUFJFX0JXX0NUUkwJCTB4NAorCisjZGVmaW5lIFRYX0VQS1RfQ19PRkZTRVQo aW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkgKiAweDEyMCkgKyAweDQwOTAwKQorI2RlZmlu ZSAgVFhfRVBLVF9DX0NGR19NSVNDCQkweDAKKyNkZWZpbmUgICBUWF9FUEtUX0NfQ0ZHX01JU0Nf RU4JCUJJVCgwKQorI2RlZmluZSAgIFRYX0VQS1RfQ19DRkdfTUlTQ19QVAkJQklUKDEpCisjZGVm aW5lICAgVFhfRVBLVF9DX0NGR19NSVNDX1BTX1NISUZUCTE0CisjZGVmaW5lICAgVFhfRVBLVF9D X0NGR19NSVNDX0ZEX1NISUZUCTIwCisKKyNkZWZpbmUgVFhfUEFVU0VfQ1RSTF9PRkZTRVQoaW50 ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCAqIDB4YykgKyAweDQ5YTIwKSkKKyNkZWZpbmUgIFRY X1BBVVNFX01BUF9WRUNUT1IJCTB4OAorCisjZGVmaW5lIFJYX0VEUEtUX0RNQV9PRkZTRVQoaW50 ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkgKiAweDM4KSArIDB4OWNhMDApCisjZGVmaW5lICBS WF9FRFBLVF9ETUFfV1JJVEUJCTB4MDAKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9SRUFECQkweDA4 CisjZGVmaW5lICBSWF9FRFBLVF9ETUFfQkFTRQkJMHgxMAorI2RlZmluZSAgUlhfRURQS1RfRE1B X0VORAkJMHgxOAorI2RlZmluZSAgUlhfRURQS1RfRE1BX1ZBTElECQkweDIwCisjZGVmaW5lICBS WF9FRFBLVF9ETUFfRlVMTE5FU1MJCTB4MjgKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9NSU5fVEhS RVMJCTB4MmMKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9DSF9YT05PRkYJCTB4MzAKKworI2RlZmlu ZSBSWF9FRFBLVF9DRkdfT0ZGU0VUKGludGYpIFwKKwkoKCgoaW50ZiktPmNoYW5uZWwpICogMHg3 MCkgKyAweDljNjAwKQorI2RlZmluZSAgUlhfRURQS1RfQ0ZHX0NGRzAJCTB4MAorI2RlZmluZSAg IFJYX0VEUEtUX0NGR19DRkcwX0RCVUZfU0hJRlQJOQorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdf Q0ZHMF9SQlVGCTB4MAorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9SQlVGXzRLCTB4MQor I2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9CVUZfNEsJMHgyCisvKiBFRlJNIFNUVUZGLCAw ID0zRCBubyBieXRlIHN0dWZmLCAxID0zRCB0d28gYnl0ZSBzdHVmZiAqLworI2RlZmluZSAgIFJY X0VEUEtUX0NGR19DRkcwX0VGUk1fU1RVRglCSVQoMTEpCisjZGVmaW5lICAgUlhfRURQS1RfQ0ZH X0NGRzBfQkFMTl9TSElGVAkxMgorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9OT19BTE4J MAorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF80X0FMTgkyCisjZGVmaW5lICAgIFJYX0VE UEtUX0NGR19DRkcwXzY0X0FMTgk2CisjZGVmaW5lICBSWF9FRFBLVF9SSU5HX0JVRkZFUl9XUklU RQkweDM4CisjZGVmaW5lICBSWF9FRFBLVF9SSU5HX0JVRkZFUl9SRUFECTB4NDAKKyNkZWZpbmUg IFJYX0VEUEtUX1JJTkdfQlVGRkVSX0JBU0UJMHg0OAorI2RlZmluZSAgUlhfRURQS1RfUklOR19C VUZGRVJfRU5ECTB4NTAKKyNkZWZpbmUgIFJYX0VEUEtUX1JJTkdfQlVGRkVSX1ZBTElECTB4NTgK KyNkZWZpbmUgIFJYX0VEUEtUX0NGR19FTkFCTEUJCTB4NmMKKyNkZWZpbmUgICBSWF9FRFBLVF9D RkdfRU5BQkxFX0VOCUJJVCgwKQorCisjZGVmaW5lIFJYX1NQQl9ETUFfT0ZGU0VUKGludGYpIFwK KwkoKCgoaW50ZiktPmNoYW5uZWwpICogMHgzMCkgKyAweGEwMDAwKQorI2RlZmluZSAgUlhfU1BC X0RNQV9SRUFECQkweDAwCisjZGVmaW5lICBSWF9TUEJfRE1BX0JBU0UJCTB4MDgKKyNkZWZpbmUg IFJYX1NQQl9ETUFfRU5ECQkJMHgxMAorI2RlZmluZSAgUlhfU1BCX0RNQV9WQUxJRAkJMHgxOAor I2RlZmluZSAgUlhfU1BCX0RNQV9GSUZPX0NUUkwJCTB4MjAKKyNkZWZpbmUgICBSWF9TUEJfRE1B X0ZJRk9fRkxVU0gJCUJJVCgwKQorI2RlZmluZSAgUlhfU1BCX0RNQV9GSUZPX1NUQVRVUwkJMHgy NAorCisjZGVmaW5lIFJYX1NQQl9DVFJMX09GRlNFVChpbnRmKSBcCisJKCgoKGludGYpLT5jaGFu bmVsIC0gNikgKiAweDY4KSArIDB4YTEwMDApCisjZGVmaW5lICBSWF9TUEJfQ1RSTF9FTkFCTEUJ CTB4MDAKKyNkZWZpbmUgICBSWF9TUEJfQ1RSTF9FTkFCTEVfRU4JCUJJVCgwKQorCisjZGVmaW5l IFJYX1BBVVNFX0NUUkxfT0ZGU0VUKGludGYpIFwKKwkoKCgoaW50ZiktPmNoYW5uZWwgLSA2KSAq IDB4NCkgKyAweGExMTM4KQorI2RlZmluZSAgUlhfUEFVU0VfTUFQX1ZFQ1RPUgkJMHgwMAorCisj ZGVmaW5lIFJYX1NQQl9UT1BfQ1RSTF9PRkZTRVQoaW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5l bCAtIDYpICogMHgxNCkgKyAweGEyMDAwKQorI2RlZmluZSAgUlhfU1BCX1RPUF9CTEtPVVQJCTB4 MDAKKworI2RlZmluZSBOVU1fNEtfQlVGRkVSUwkJCTMyCisjZGVmaW5lIFJJTkdfQlVGRkVSX1NJ WkUJCShQQUdFX1NJWkUgKiBOVU1fNEtfQlVGRkVSUykKKworI2RlZmluZSBERVNDX1JJTkdfQ09V TlQJCQkoNjQgKiBOVU1fNEtfQlVGRkVSUykKKyNkZWZpbmUgREVTQ19TSVpFCQkJMTYKKyNkZWZp bmUgREVTQ19SSU5HX1NJWkUJCQkoREVTQ19SSU5HX0NPVU5UICogREVTQ19TSVpFKQorCisjZW5k aWYKLS09MjAKMi43LjQK --000000000000d7732205fd18bce9 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIIQbgxJzh0DK381P8yiKBDwHYjcJMudtTriH Csl2f8fJMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTI1MlowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQCTR15tkm9wZNNA7Luoznq2keVoFPgpKrW9hQ1MU6/sPTCzh2QVc2Qx JgjlXVaXDMSwGrdVNN+FFD3Qm4UiSWqPJHrhG2Ec/d0T9lP20hWMO0oE0ET5COsxA4AFwtoq7o4m UVX4qMV+9LR5dQUs9Z06AapWkfosAvxF4b/LAq8FZ99+WOLwfo6EmF181O0jyf5TogAhvWo2k24g lc1R896cG4xHCpbrz6XZ7YBW+bEQzA0qBXbjlIoktCzD0AJs+ZDBajctLpscXJU4NDXbgM1pkClZ vKzvMevnk75br//kUNZY9fbdVfGl9OZydEGVBQnCNm9yBmiWvO0pfeNNFafx --000000000000d7732205fd18bce9-- From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA203C77B7A for ; Thu, 1 Jun 2023 22:13:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232904AbjFAWNG (ORCPT ); Thu, 1 Jun 2023 18:13:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233083AbjFAWNC (ORCPT ); Thu, 1 Jun 2023 18:13:02 -0400 Received: from mail-qk1-x72f.google.com (mail-qk1-x72f.google.com [IPv6:2607:f8b0:4864:20::72f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4F1B1A8 for ; Thu, 1 Jun 2023 15:12:54 -0700 (PDT) Received: by mail-qk1-x72f.google.com with SMTP id af79cd13be357-75b076babc3so134725885a.3 for ; Thu, 01 Jun 2023 15:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657574; x=1688249574; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=El+SHjwlDmFO/P2PuJWnCiq3vVAA9vjcN6bOSYpFaxA=; b=QjOvnv9PJcVPsffFM/Oh7zSmxlDrcUbhVwykcpVY9n9/RTWeY8hj/FbjFd+9RJ89XB V+TYZRDBo3cN364bwpRsXWdCcSgG5hoRtR1uYSuvJPtSU0TfTdAmQy+GSe7LEwasczhz g5PKXazXeE1qF9zRyyPnfe9odPSNzapRCiXiM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657574; x=1688249574; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=El+SHjwlDmFO/P2PuJWnCiq3vVAA9vjcN6bOSYpFaxA=; b=S/xC5qLxjUh/aPtXUfBpKf6fuJrbp0OnU/c8QDVAR/7qdnMoAqo8//x3FMzqnsZLC4 kAnZNeJUrEEWlHian+oUvKuwmKIyRprbrvWBz0/kKAG6DAPSf5xicNwYrP0kZ17d01Dz 809FGW+W8JpTmndqg2h4QgLRJlr+bavud5hIIgLomwLDGmTpk4ns3ulovz/BoLkmjIA3 upqYYUNgsjg19WGw9JDThw78mRVwgb293+Z25I5V4B7pt+CusD6BuAPXfGUcQ4sNjnpV 4zi7JSNWJCtSF7Z0YENLS+vW3BFisazL5cUIOQBkV3I6rmbppXaVdP5ATJ7QKf/UBQO2 /oZg== X-Gm-Message-State: AC+VfDydLd+fSJxtNAGcqLmpLyqiAGZVh8BxHTWfagJ8PXrBBCaN7ZbH spmMacA2cm+JoirkP6CIXtjuhA== X-Google-Smtp-Source: ACHHUZ6AKR0tKpdAI0tQ939j8D9cLarDU6zjJEtmrh/e643PW84ApOREqeOhj0+MMi7RdRHgIhE+BA== X-Received: by 2002:a05:620a:6503:b0:75b:23a1:365a with SMTP id qb3-20020a05620a650300b0075b23a1365amr10906491qkn.27.1685657574352; Thu, 01 Jun 2023 15:12:54 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:54 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 4/6] net: phy: mdio-bcm-unimac: Add asp v2.0 support Date: Thu, 1 Jun 2023 15:12:29 -0700 Message-Id: <1685657551-38291-5-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000f3147e05fd18bc67" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --000000000000f3147e05fd18bc67 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIG1kaW8gY29tcGF0IHN0cmluZyBmb3IgQVNQIDIuMCBldGhlcm5ldCBkcml2ZXIuCgpSZXZp ZXdlZC1ieTogU2ltb24gSG9ybWFuIDxzaW1vbi5ob3JtYW5AY29yaWdpbmUuY29tPgpSZXZpZXdl ZC1ieTogQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFu IEZhaW5lbGxpIDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTog SnVzdGluIENoZW4gPGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbT4KLS0tCiBkcml2ZXJzL25ldC9t ZGlvL21kaW8tYmNtLXVuaW1hYy5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFjLmMgYi9k cml2ZXJzL25ldC9tZGlvL21kaW8tYmNtPQotdW5pbWFjLmMKaW5kZXggYmZjOWJlMjNjOTczLi42 YjI2YTA4MDM2OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFj LmMKKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS11bmltYWMuYwpAQCAtMzM0LDYgKzMz NCw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyh1bmltYWNfbWRpb19wbV9vcHMsCiAJCQkg dW5pbWFjX21kaW9fc3VzcGVuZCwgdW5pbWFjX21kaW9fcmVzdW1lKTsKPTIwCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCB1bmltYWNfbWRpb19pZHNbXSA9M0QgeworCXsgLmNvbXBh dGlibGUgPTNEICJicmNtLGFzcC12Mi4xLW1kaW8iLCB9LAorCXsgLmNvbXBhdGlibGUgPTNEICJi cmNtLGFzcC12Mi4wLW1kaW8iLCB9LAogCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1k aW8tdjUiLCB9LAogCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1kaW8tdjQiLCB9LAog CXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1kaW8tdjMiLCB9LAotLT0yMAoyLjcuNAo= --000000000000f3147e05fd18bc67 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIIQagYJKoZIhvcNAQcCoIIQWzCCEFcCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gg3BMIIFDTCCA/WgAwIBAgIQeEqpED+lv77edQixNJMdADANBgkqhkiG9w0BAQsFADBMMSAwHgYD VQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UE AxMKR2xvYmFsU2lnbjAeFw0yMDA5MTYwMDAwMDBaFw0yODA5MTYwMDAwMDBaMFsxCzAJBgNVBAYT AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEdDQyBS MyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA vbCmXCcsbZ/a0fRIQMBxp4gJnnyeneFYpEtNydrZZ+GeKSMdHiDgXD1UnRSIudKo+moQ6YlCOu4t rVWO/EiXfYnK7zeop26ry1RpKtogB7/O115zultAz64ydQYLe+a1e/czkALg3sgTcOOcFZTXk38e aqsXsipoX1vsNurqPtnC27TWsA7pk4uKXscFjkeUE8JZu9BDKaswZygxBOPBQBwrA5+20Wxlk6k1 e6EKaaNaNZUy30q3ArEf30ZDpXyfCtiXnupjSK8WU2cK4qsEtj09JS4+mhi0CTCrCnXAzum3tgcH cHRg0prcSzzEUDQWoFxyuqwiwhHu3sPQNmFOMwIDAQABo4IB2jCCAdYwDgYDVR0PAQH/BAQDAgGG MGAGA1UdJQRZMFcGCCsGAQUFBwMCBggrBgEFBQcDBAYKKwYBBAGCNxQCAgYKKwYBBAGCNwoDBAYJ KwYBBAGCNxUGBgorBgEEAYI3CgMMBggrBgEFBQcDBwYIKwYBBQUHAxEwEgYDVR0TAQH/BAgwBgEB /wIBADAdBgNVHQ4EFgQUljPR5lgXWzR1ioFWZNW+SN6hj88wHwYDVR0jBBgwFoAUj/BLf6guRSSu TVD6Y5qL3uLdG7wwegYIKwYBBQUHAQEEbjBsMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9i YWxzaWduLmNvbS9yb290cjMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j b20vY2FjZXJ0L3Jvb3QtcjMuY3J0MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFs c2lnbi5jb20vcm9vdC1yMy5jcmwwWgYDVR0gBFMwUTALBgkrBgEEAaAyASgwQgYKKwYBBAGgMgEo CjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAN BgkqhkiG9w0BAQsFAAOCAQEAdAXk/XCnDeAOd9nNEUvWPxblOQ/5o/q6OIeTYvoEvUUi2qHUOtbf jBGdTptFsXXe4RgjVF9b6DuizgYfy+cILmvi5hfk3Iq8MAZsgtW+A/otQsJvK2wRatLE61RbzkX8 9/OXEZ1zT7t/q2RiJqzpvV8NChxIj+P7WTtepPm9AIj0Keue+gS2qvzAZAY34ZZeRHgA7g5O4TPJ /oTd+4rgiU++wLDlcZYd/slFkaT3xg4qWDepEMjT4T1qFOQIL+ijUArYS4owpPg9NISTKa1qqKWJ jFoyms0d0GwOniIIbBvhI2MJ7BSY9MYtWVT5jJO3tsVHwj4cp92CSFuGwunFMzCCA18wggJHoAMC AQICCwQAAAAAASFYUwiiMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNVBAsTF0dsb2JhbFNpZ24gUm9v dCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTA5 MDMxODEwMDAwMFoXDTI5MDMxODEwMDAwMFowTDEgMB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENB IC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMJXaQeQZ4Ihb1wIO2hMoonv0FdhHFrYhy/EYCQ8eyip0E XyTLLkvhYIJG4VKrDIFHcGzdZNHr9SyjD4I9DCuul9e2FIYQebs7E4B3jAjhSdJqYi8fXvqWaN+J J5U4nwbXPsnLJlkNc96wyOkmDoMVxu9bi9IEYMpJpij2aTv2y8gokeWdimFXN6x0FNx04Druci8u nPvQu7/1PQDhBjPogiuuU6Y6FnOM3UEOIDrAtKeh6bJPkC4yYOlXy7kEkmho5TgmYHWyn3f/kRTv riBJ/K1AFUjRAjFhGV64l++td7dkmnq/X8ET75ti+w1s4FRpFqkD2m7pg5NxdsZphYIXAgMBAAGj QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSP8Et/qC5FJK5N UPpjmove4t0bvDANBgkqhkiG9w0BAQsFAAOCAQEAS0DbwFCq/sgM7/eWVEVJu5YACUGssxOGhigH M8pr5nS5ugAtrqQK0/Xx8Q+Kv3NnSoPHRHt44K9ubG8DKY4zOUXDjuS5V2yq/BKW7FPGLeQkbLmU Y/vcU2hnVj6DuM81IcPJaP7O2sJTqsyQiunwXUaMld16WCgaLx3ezQA3QY/tRG3XUyiXfvNnBB4V 14qWtNPeTCekTBtzc3b0F5nCH3oO4y0IrQocLP88q1UOD5F+NuvDV0m+4S4tfGCLw0FREyOdzvcy a5QBqJnnLDMfOjsl0oZAzjsshnjJYS8Uuu7bVW/fhO4FCU29KNhyztNiUGUe65KXgzHZs7XKR1g/ XzCCBUkwggQxoAMCAQICDCPwEotc2kAt96Z1EDANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJC RTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTExMC8GA1UEAxMoR2xvYmFsU2lnbiBHQ0MgUjMg UGVyc29uYWxTaWduIDIgQ0EgMjAyMDAeFw0yMjA5MTAxMjM5NTBaFw0yNTA5MTAxMjM5NTBaMIGM MQswCQYDVQQGEwJJTjESMBAGA1UECBMJS2FybmF0YWthMRIwEAYDVQQHEwlCYW5nYWxvcmUxFjAU BgNVBAoTDUJyb2FkY29tIEluYy4xFDASBgNVBAMTC0p1c3RpbiBDaGVuMScwJQYJKoZIhvcNAQkB FhhqdXN0aW4uY2hlbkBicm9hZGNvbS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDKX7oyRqaeT81UCy+OTzAUHJeHABD6GDVZu7IJxt8GWSGx+ebFexFz/gnRO/sgwnPzzrC2DwM1 kaDgYe+pI1lMzUZvAB5DfS1qXKNGoeeNv7FoNFlv3iD4bvOykX/K/voKtjS3QNs0EDnwkvETUWWu yiXtMiGENBBJcbGirKuFTT3U/2iPoSL5OeMSEqKLdkNTT9O79KN+Rf7Zi4Duz0LUqqpz9hZl4zGc NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIEnzGqj5limPyn3XWWeX7/6M+Ed7zWICe6ZI 8/t8bKFNMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTI1NFowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBwCGr9FlK45tupEJSmyoD5UH7dVcfO88u5xDQ6J94eaWVY+FiBpXpd cKHFVHUSLOlW36BDqlNLoD7FQb6U8fL4jecMZeIVClmO08/X9HHlMP+DuL1hbMGnx/VeW2/yQOMI sJPKyUOQ/7/sdFlDy4WWgRx2bwFP0Blx4/iOhGwPZx7fiSAW17krj/dsomyf6crcivrRb/EjDPKm +DjeUPU9I0AAxXZE2vnN02fJP1ElO/gpsyjKmcLZ9mU+mKPqwXXPArm+HdKuadpBxr3VhIOgrLVp nPlMU7YfBThT0cbQyIMukkBHVWB0Zc06y/AXlaiRxss3/HQ1NU9V3tJTS1UU --000000000000f3147e05fd18bc67-- From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB75BC77B7E for ; Thu, 1 Jun 2023 22:13:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233212AbjFAWNM (ORCPT ); Thu, 1 Jun 2023 18:13:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233139AbjFAWND (ORCPT ); Thu, 1 Jun 2023 18:13:03 -0400 Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4357A1BB for ; Thu, 1 Jun 2023 15:12:58 -0700 (PDT) Received: by mail-qk1-x733.google.com with SMTP id af79cd13be357-75b0b2eb9ecso120276785a.2 for ; Thu, 01 Jun 2023 15:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657577; x=1688249577; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=6c6x1g1pWWSS3FZmhFz8+/QmqSJrczEuHX70V5t2OOQ=; b=BlVbsTAWoDJlulrEDKaaaIKjVpI69L3COAR1EHBm3fNR1l54EAYsfZqVpSevcxhCj0 3/hUhO2MV3oyiJjCm+qJbjeJyCWOokB0l3D9CZDIq85AVn+yNnRPsNnB3ZOr9//xtZmp yJ+G2ckYZ3HbW0v8I9BN+xglOFLkxvb6FK/JU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657577; x=1688249577; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6c6x1g1pWWSS3FZmhFz8+/QmqSJrczEuHX70V5t2OOQ=; b=k12FWZDDDCpsntN9nfNb4QZmGd4rC0QtFxtXTs6R9L1M1J02zwEqjdY8wAPKVgjquW IUjaUEEb7sofCeM41LOU+rLRAfzqSjGaZ53kXsU4yEoLJ5f6seKsehYNfc0aeo5M/zNM c3N3ZPioTaIL8cLy4ozv0UaNlb1X94ZHRnn4iGt1Vpdvlws4i8p/DM9vkOH+fuX7fwR5 XjsjQdIQlj8zBHVMCB+Wn/BARkghApYHWi4TVcMZZValGzRtc2gxZO8PqE1OHAd9PQf5 BsVb6fTb6c0lBpjzw/v2PSsXaf9nux0kpl07SG1GDdT30gusWM2L65WXPtO+mK1RpJ/A lkXQ== X-Gm-Message-State: AC+VfDwMpMKX+1n2SieSIH+XXY5ThIuRXwhB9Za8VE5Xj7p2KM1N9vxP vg4zMnNBLUq/A5unC/3V6+Y+Vw== X-Google-Smtp-Source: ACHHUZ6op6M8nIh/kE5VzYC/dBMw+H6svxUo4FErD2hAmm6/OPrX1MAIKnH5KOc3atw4gxIn3Eve6g== X-Received: by 2002:a05:620a:25ca:b0:75b:23a1:413 with SMTP id y10-20020a05620a25ca00b0075b23a10413mr12127397qko.41.1685657577231; Thu, 01 Jun 2023 15:12:57 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:56 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 5/6] net: phy: bcm7xxx: Add EPHY entry for 74165 Date: Thu, 1 Jun 2023 15:12:30 -0700 Message-Id: <1685657551-38291-6-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000001ff15e05fd18bd29" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --0000000000001ff15e05fd18bd29 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnJvbTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+Cgo3 NDE2NSBpcyBhIDE2bm0gcHJvY2VzcyBTb0Mgd2l0aCBhIDEwLzEwMCBpbnRlZ3JhdGVkIEV0aGVy bmV0IFBIWSwKdXRpbGl6ZSB0aGUgcmVjZW50bHkgZGVmaW5lZCAxNm5tIEVQSFkgbWFjcm8gdG8g Y29uZmlndXJlIHRoYXQgUEhZLgoKUmV2aWV3ZWQtYnk6IFNpbW9uIEhvcm1hbiA8c2ltb24uaG9y bWFuQGNvcmlnaW5lLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5j aD4KU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9h ZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEp1c3RpbiBDaGVuIDxqdXN0aW4uY2hlbkBicm9hZGNv bS5jb20+Ci0tLQogZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYyB8IDEgKwogaW5jbHVkZS9saW51 eC9icmNtcGh5LmggICB8IDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jIGIvZHJpdmVycy9uZXQvcGh5L2Jj bTd4eHguYwppbmRleCBmOGMxN2EyNTNmOGIuLjg0NzhiMDgxYzA1OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvcGh5L2JjbTd4eHguYworKysgYi9kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jCkBA IC05MTMsNiArOTEzLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGJjbTd4eHhfZHJpdmVy W10gPTNEIHsKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzI3OCwgIkJyb2FkY29tIEJD TTcyNzgiKSwKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzM2NCwgIkJyb2FkY29tIEJD TTczNjQiKSwKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzM2NiwgIkJyb2FkY29tIEJD TTczNjYiKSwKKwlCQ003WFhYXzE2Tk1fRVBIWShQSFlfSURfQkNNNzQxNjUsICJCcm9hZGNvbSBC Q003NDE2NSIpLAogCUJDTTdYWFhfMjhOTV9HUEhZKFBIWV9JRF9CQ003NDM3MSwgIkJyb2FkY29t IEJDTTc0MzcxIiksCiAJQkNNN1hYWF8yOE5NX0dQSFkoUEhZX0lEX0JDTTc0MzksICJCcm9hZGNv bSBCQ003NDM5IiksCiAJQkNNN1hYWF8yOE5NX0dQSFkoUEhZX0lEX0JDTTc0MzlfMiwgIkJyb2Fk Y29tIEJDTTc0MzkgKDIpIiksCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JyY21waHkuaCBi L2luY2x1ZGUvbGludXgvYnJjbXBoeS5oCmluZGV4IGU5YWZiZmI2ZDdhNS4uNDA5ZWM5ZDM1MDUx IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JyY21waHkuaAorKysgYi9pbmNsdWRlL2xpbnV4 L2JyY21waHkuaApAQCAtNDQsNiArNDQsNyBAQAogI2RlZmluZSBQSFlfSURfQkNNNzM2NgkJCTB4 NjAwZDg0OTAKICNkZWZpbmUgUEhZX0lEX0JDTTczNDYJCQkweDYwMGQ4NjUwCiAjZGVmaW5lIFBI WV9JRF9CQ003MzYyCQkJMHg2MDBkODRiMAorI2RlZmluZSBQSFlfSURfQkNNNzQxNjUJCQkweDM1 OTA1MmMwCiAjZGVmaW5lIFBIWV9JRF9CQ003NDI1CQkJMHg2MDBkODZiMAogI2RlZmluZSBQSFlf SURfQkNNNzQyOQkJCTB4NjAwZDg3MzAKICNkZWZpbmUgUEhZX0lEX0JDTTc0MzUJCQkweDYwMGQ4 NzUwCi0tPTIwCjIuNy40Cg== --0000000000001ff15e05fd18bd29 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEINyS2dQN91y+hAoNqFIIkehud+x+mqlFhrXU yQQP12PnMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTI1N1owaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBk28W8zF+/q1iYCvqqQdx6tD45ARq14a25hAbsBhoq6XZOBjuFbc6t OW2WSkcQUnxVbqeX5Sxtmt1x2m5Eqdi01I4cWnqHc/73qCJCLzfsXs+ikkLilJ7KkgKWrq7W51CS vtNcPmY7+r+F726CKNYETfk8EdhAQLrk3avy431D4ZNu9gWC1o4GU3vBNiwaR2lWjq2S+h/ATfNv fgB/7VWJseAbVHynZYcyRXVMLXF+IVnqU6RihPomMVrqarQYwKmKHn4djcf2t+UeDWxf7qRvNtSO LQE9WtavIZXTtSARFPa9QB2aegYtfCOA4tsUtYgTj9BbCyiftm/HsbU3Jz/Z --0000000000001ff15e05fd18bd29-- From nobody Sat Feb 7 17:20:16 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 785ADC77B7A for ; Thu, 1 Jun 2023 22:13:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233127AbjFAWN0 (ORCPT ); Thu, 1 Jun 2023 18:13:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233059AbjFAWNG (ORCPT ); Thu, 1 Jun 2023 18:13:06 -0400 Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBE9918C for ; Thu, 1 Jun 2023 15:13:00 -0700 (PDT) Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-75b17b80834so144648985a.1 for ; Thu, 01 Jun 2023 15:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685657580; x=1688249580; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=M9aQ39c+6bjHrAtIPQFBDHHmGbMVd3kk+lrTWzFae+g=; b=TIjzYKrFP8NzDNYye0/uvbJ/JyCW9F/rUcJRleufhssrswyCStw0zUDvaHnzf8OfpV 0ZkH5f7VW+BqzOZApJkXsGAIcOtqsmEYSZ1Mb3BNzqVwKcvx6+2F1E3GPkwpG7CafwpC oE9iQEGm7WjTQAuvWChhAlWnqf8dRNEwgFLnM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685657580; x=1688249580; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=M9aQ39c+6bjHrAtIPQFBDHHmGbMVd3kk+lrTWzFae+g=; b=aUf4FJ8nr4Yr/+KyxVJ/tDMxXg9ZRvMBZIiosXcaIBfpk6Ufy9rPNFwEcjw+c2wvB5 VGEB8tzvttYnUdt+EkeKQLDAXcRCRUv8VU/xfp62FynUf5GC2lmvFp2mWiAxZ+YZ7ckZ oEwVwJyQ9Lam50E7YMMUxaR9dw5k0vJd3YP8NqeqnJA9ZUv6+hziTZrMviPSftjGjxEC PFxa1XclzAAs4SVKYN6ROCNMJS0W+TS0PKcEWKbjqzqWddb79OkLC9FcP+MvYDengK6f DiIrRMxcHNpEbmOyRdmgA5NMDIvOmh237CGjuaMs0xYPOkok8XA3V8pSGQqROZZcIcU2 j+CQ== X-Gm-Message-State: AC+VfDw2J+PzVqkLG728PRkJq6KlmcbVljL5EB4G6s1Mank+omUvpnEY aydxi9G02wbTnKPMNnI13A3Zwg== X-Google-Smtp-Source: ACHHUZ5niOrYzCIDjF4lF2lg8/PzpPcRVLKnQabV6DmZV/cYAh4x1/K/Kv43MYGGuGTZqsBqE4FAZA== X-Received: by 2002:a05:620a:cc3:b0:75b:23a1:442 with SMTP id b3-20020a05620a0cc300b0075b23a10442mr9307655qkj.8.1685657579902; Thu, 01 Jun 2023 15:12:59 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id f5-20020a05620a068500b00759554bbe48sm7180430qkh.4.2023.06.01.15.12.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Jun 2023 15:12:59 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com Cc: florian.fainelli@broadcom.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, opendmb@gmail.com, andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, richardcochran@gmail.com, sumit.semwal@linaro.org, christian.koenig@amd.com, simon.horman@corigine.com, Justin Chen Subject: [PATCH net-next v6 6/6] MAINTAINERS: ASP 2.0 Ethernet driver maintainers Date: Thu, 1 Jun 2023 15:12:31 -0700 Message-Id: <1685657551-38291-7-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> References: <1685657551-38291-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="00000000000048eb2c05fd18bd03" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --00000000000048eb2c05fd18bd03 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIG1haW50YWluZXJzIGVudHJ5IGZvciBBU1AgMi4wIEV0aGVybmV0IGRyaXZlci4KClJldmll d2VkLWJ5OiBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBjb3JpZ2luZS5jb20+ClNpZ25lZC1v ZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29tPgpT aWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ2hlbiA8anVzdGluLmNoZW5AYnJvYWRjb20uY29tPgotLS0K djMKCS0gQ2hhbmdlIGZyb20gZ21haWwgdG8gYnJvYWRjb20gZW1haWxzCgogTUFJTlRBSU5FUlMg fCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYzI1MTcyZDY0NzFhLi45ODZiOTc1 YjFkNjcgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC00MTk4 LDYgKzQxOTgsMTUgQEAgRjoJZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS11bmltYWMuYwogRjoJ aW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2JjbWdlbmV0LmgKIEY6CWluY2x1ZGUvbGludXgv cGxhdGZvcm1fZGF0YS9tZGlvLWJjbS11bmltYWMuaAo9MjAKK0JST0FEQ09NIEFTUCAyLjAgRVRI RVJORVQgRFJJVkVSCitNOglKdXN0aW4gQ2hlbiA8anVzdGluLmNoZW5AYnJvYWRjb20uY29tPgor TToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CitMOgli Y20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tCitMOgluZXRkZXZAdmdlci5rZXJu ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9uZXQvYnJjbSxhc3AtdjIuMC55YW1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNv bS9hc3AyLworCiBCUk9BRENPTSBJUFJPQyBBUk0gQVJDSElURUNUVVJFCiBNOglSYXkgSnVpIDxy anVpQGJyb2FkY29tLmNvbT4KIE06CVNjb3R0IEJyYW5kZW4gPHNicmFuZGVuQGJyb2FkY29tLmNv bT4KLS09MjAKMi43LjQK --00000000000048eb2c05fd18bd03 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 NhTY3E+cXCB11wty89QStajwXdhGJTYEvUgvsq1h8CwJj9w/38ldAQf5WjhPmApYeJR2ewFrBMCM 4lHkdRJ6TDc9nXoEkypUfjJkJHe7Eal06tosh6JpAgMBAAGjggHZMIIB1TAOBgNVHQ8BAf8EBAMC BaAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNp Z24uY29tL2NhY2VydC9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGG NWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwME0G A1UdIARGMEQwQgYKKwYBBAGgMgEoCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxz aWduLmNvbS9yZXBvc2l0b3J5LzAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j cmwuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAuY3JsMCMGA1UdEQQc MBqBGGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNVHSME GDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUIWGeYuaTsnIada5Xx8TR3cheUbgw DQYJKoZIhvcNAQELBQADggEBAHNQlMqQOFYPYFO71A+8t+qWMmtOdd2iGswSOvpSZ/pmGlfw8ZvY dRTkl27m37la84AxRkiVMes14JyOZJoMh/g7fbgPlU14eBc6WQWkIA6AmNkduFWTr1pRezkjpeo6 xVmdBLM4VY1TFDYj7S8H2adPuypd62uHMY/MZi+BIUys4uAFA+N3NuUBNjcVZXYPplYxxKEuIFq6 sDL+OV16G+F9CkNMN3txsym8Nnx5WAYZb6+rBUIhMGz70V05xsHQfzvo2s7f0J1tJ5BoRlPPhL0h VOnWA3h71u9TfSsv+PXVm3P21TfOS2uc1hbzEqyENCP4i5XQ0rv0TmPW42GZ0o4xggJtMIICaQIB ATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH bG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwj8BKLXNpALfemdRAwDQYJ YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIDVcNbjChrfS4tNhAIJjvSew5OOi0N6m56uM yBx5M51OMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDYwMTIy MTMwMFowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQAF1BQ02lH0rYRXpKGNtKbz2LaqA/e81Wn3veY/jaVf+fXN9d2kT/Ad Scg8kCN047EU51+4oQyUQwrlqsmws0RoKyVKZ6axRFs2QNgmRQKeH43yBhuwAbJza147T386v754 /rANpfeKTiYyxzPM45lFN3zRr0K/Vih78Yv74QpNW/SIZ008cFAZX6mISqq01Z32n1x1oarGG6/Q BI3Lksmb7Y0sISjuEWZcq0BeUglSh1P26ikL3PYT8gwzoaGWv64+ji+/KvpeVR3aLR8sZkjRZ6bR HHW0E633MllJVJMsjtvGVoyh6QYhDkb29DMVcoI5mD8aPKnVb4bcgQvkARpa --00000000000048eb2c05fd18bd03--