From nobody Sat Feb 7 17:20:17 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 6C741C7EE26 for ; Tue, 23 May 2023 21:54:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238748AbjEWVyD (ORCPT ); Tue, 23 May 2023 17:54:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238742AbjEWVx6 (ORCPT ); Tue, 23 May 2023 17:53:58 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1984C1 for ; Tue, 23 May 2023 14:53:57 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-64d2ca9ef0cso24646b3a.1 for ; Tue, 23 May 2023 14:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878837; x=1687470837; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=lQFqk5tM+BbTqLu00jJUZXwxOwTwIR2BZEs1Yt+uPUk=; b=Qq9KFOHAKlTXfIdq5oonMNe340bv/xvBAkLUI1RB//dNFr1f9AFutriOtkD1M2cBW6 6Mj6XQw5mi3HLb93hCfjzM67z0rUlls4w/F+YBWjQzLKOseJzENs/JOTQggqZSPXMU5k ndH3qgKAI6MRTi3Sr9OsS8pOUZIP56SJGe+2U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878837; x=1687470837; 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=lQFqk5tM+BbTqLu00jJUZXwxOwTwIR2BZEs1Yt+uPUk=; b=gNlX/d3pWQh4FeJUJbnORjBWpzVfI667k8VQbgpLa+Z0qWqY3Fajo3vQsp8xpeoqBX iNiEnbvMtpl0XSr+3hYcgGP6ZgBcm060a30vK8CPEuJ0P7uTvrUTyweWxOinp2/Nff4Z Hr/tL3J/UHdI5tkGxYNDvijC6Us9a1Wt7KFThbdHYdj7zUSoClOfV/1maYwl2w7R4mQn eAx6dTJUCvGHXNc7Uhoiln21OrJYIhuSQu6Dlw7aYeiWODjQwtoDXYozs9SndyqgsTT0 h6/ABYdnAFpga/lFZ/A16p1LQ2NmI/FK8E5Hbrm3rJ1AX96K5ML4y5ss4puM1MOjZJF6 mJzQ== X-Gm-Message-State: AC+VfDy57Ak8AYG/xQ0wiymlPzBH6K6l7o8GdB/JVfmBu93xakMRb8SZ Vu7TZSnStoz40UJ/kjRA3XTjFA== X-Google-Smtp-Source: ACHHUZ6NGpmTeAfXRA7+OQm2IB5EU7bj5l/SkRxX0CzcN6yT3YUWjIskbCRMgYSK5LIAYdC4eCzP+w== X-Received: by 2002:a17:903:41cf:b0:1ad:bb89:16f6 with SMTP id u15-20020a17090341cf00b001adbb8916f6mr18109919ple.50.1684878837126; Tue, 23 May 2023 14:53:57 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.53.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:53: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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 1/6] dt-bindings: net: brcm,unimac-mdio: Add asp-v2.0 Date: Tue, 23 May 2023 14:53:42 -0700 Message-Id: <1684878827-40672-2-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="00000000000098e90605fc636c16" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --00000000000098e90605fc636c16 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlIEFTUCAyLjAgRXRoZXJuZXQgY29udHJvbGxlciB1c2VzIGEgYnJjbSB1bmltYWMuCgpBY2tl ZC1ieTogQ29ub3IgRG9vbGV5IDxjb25vci5kb29sZXlAbWljcm9jaGlwLmNvbT4KU2lnbmVkLW9m Zi1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+ClNp Z25lZC1vZmYtYnk6IEp1c3RpbiBDaGVuIDxqdXN0aW4uY2hlbkBicm9hZGNvbS5jb20+ClJldmll d2VkLWJ5OiBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBjb3JpZ2luZS5jb20+Ci0tLQogRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnlhbWwg fCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnlhbWwg Yi89CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSx1bmltYWMtbWRp by55YW1sCmluZGV4IDBiZTQyNmVlMWU0NC4uNjY4NDgxMGZjYmYwIDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sdW5pbWFjLW1kaW8ueWFtbAor KysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sdW5pbWFjLW1k aW8ueWFtbApAQCAtMjIsNiArMjIsOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBicmNtLGdlbmV0 LW1kaW8tdjMKICAgICAgIC0gYnJjbSxnZW5ldC1tZGlvLXY0CiAgICAgICAtIGJyY20sZ2VuZXQt bWRpby12NQorICAgICAgLSBicmNtLGFzcC12Mi4wLW1kaW8KKyAgICAgIC0gYnJjbSxhc3AtdjIu MS1tZGlvCiAgICAgICAtIGJyY20sdW5pbWFjLW1kaW8KPTIwCiAgIHJlZzoKLS09MjAKMi43LjQK --00000000000098e90605fc636c16 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEICW13CvdkmX3kriUm8MYev0WyYuU2+kaR8i7 vK5zUGJcMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTM1N1owaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBdefBbl9OPMr+gFqYIxZ2pggAxnCqXSZI8OSwqKTqsCLROEUxNdrJf 5Cw2SbUjVv8iTgAG2y7/AscY9gJULyGSZjmxDTEsEvMAwakHpVTOeitJs7gDXT0jmdHXq3BtMQVX OrI68LNgRDSwp9EWr9mL7UEQkB4Ptl1vuY2kw1/jPpLd1jJeWlROZzpPP20qWIvsFnVVr0obAGZk EOs/vB7o7BT+ldMjMVfSCIWegE8ILohn0sZYKTaBvQfXCBBF1ZmJS5cu6q62ZVd1le57pKYgurJi hvxlQu7JEFmOnTxUHRoIc3WBxsseXdBPihE5VBrkr86FU5YyQ7OukOHbVCXq --00000000000098e90605fc636c16-- From nobody Sat Feb 7 17:20:17 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 00820C7EE29 for ; Tue, 23 May 2023 21:54:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238754AbjEWVyG (ORCPT ); Tue, 23 May 2023 17:54:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238743AbjEWVyB (ORCPT ); Tue, 23 May 2023 17:54:01 -0400 Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E2ECBBF for ; Tue, 23 May 2023 14:53:59 -0700 (PDT) Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-64d41d8bc63so35147b3a.0 for ; Tue, 23 May 2023 14:53:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878839; x=1687470839; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=aUZmayXr6lOcW/0UzamRikvAlWBbNA3J2k2unJN1ANA=; b=NNgzzDmZRPvpYNE6bs4Pb6jJVQAJjmq/O2vXlVmHsFNrjqW19nn/u63at16sealT+r Pp0rZzN3n/nfJNevI9+opw+V2YmpADmlViT8Yypm37GFwJK+z70PHFYoOdMD6JuSVeQa BYDh6wNwtq+f3l7XtMO0xbsfa0Tac+rgK6ob0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878839; x=1687470839; 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=aUZmayXr6lOcW/0UzamRikvAlWBbNA3J2k2unJN1ANA=; b=aBWhe1R9ix5ahUNXangb3zHE9NipbiVspJ+mBN3qjKBW25CVSgFWNpoTslHjI3q1NV 6c7qkPjqI/H01oWbhXqckkrIWkLEumvZG+a7qPGGfKwJ6P5dPrOFwKCEaU3pD9bvu1X6 3IkJUI42+4+cNxkyHpLK3cEtqtavE8ikHFxow2NP7cbtZNQOX2lwCVT5N/7zU464p0HC fLnAOVgHklevu1RvPntIGg3rLmwvhufW3Bde91iYP2m4ydV5cj4pGfyFQTpThOE0z3Eb yU9Kvq8W4V+EP3U6nf2whkFAK1mAriE+d+feHB5Jes/qnrxpl5LvmS+tcWFxhUnTXiIt 9rrg== X-Gm-Message-State: AC+VfDw/CWqZYShQCJUtjM9NhKOGe/ImP9Mv9Okkyjx75R9gbpJWwHw6 snJnBmj7N0kBYD/zfW2JhzqHTg== X-Google-Smtp-Source: ACHHUZ7AmSBlU/Hd0Hai5K5aI0MMCPhXJdl2nZVhD/LqT37vgiqoZThbv397FHeLU5DVez1itEHGrQ== X-Received: by 2002:a17:902:d2c2:b0:1ac:b4db:6a62 with SMTP id n2-20020a170902d2c200b001acb4db6a62mr16196725plc.65.1684878839320; Tue, 23 May 2023 14:53:59 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.53.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:53: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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 2/6] dt-bindings: net: Brcm ASP 2.0 Ethernet controller Date: Tue, 23 May 2023 14:53:43 -0700 Message-Id: <1684878827-40672-3-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000ba67db05fc636cdb" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --000000000000ba67db05fc636cdb MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnJvbTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CgpB ZGQgYSBiaW5kaW5nIGRvY3VtZW50IGZvciB0aGUgQnJvYWRjb20gQVNQIDIuMCBFdGhlcm5ldApj b250cm9sbGVyLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWlu ZWxsaUBicm9hZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEp1c3RpbiBDaGVuIDxqdXN0aW4uY2hl bkBicm9hZGNvbS5jb20+Ci0tLQp2MwoJLSBBZGp1c3QgY29tcGF0aWJsZSBzdHJpbmcgZXhhbXBs ZSB0byByZWZlcmVuY2UgU29DIGFuZCBIVyB2ZXIKCnYzCiAgICAgICAgLSBNaW5vciBmb3JtYXR0 aW5nIGlzc3VlcwogICAgICAgIC0gQ2hhbmdlIGNoYW5uZWwgcHJvcCB0byBicmNtLGNoYW5uZWwg Zm9yIHZlbmRvciBzcGVjaWZpYyBmb3JtYXQKICAgICAgICAtIFJlbW92ZWQgcmVkdW5kYW50IHYy LjAgZnJvbSBjb21wYXQgc3RyaW5nCiAgICAgICAgLSBGaXggcmFuZ2VzIGZpZWxkCgp2MgogICAg ICAgIC0gTWlub3IgZm9ybWF0dGluZyBpc3N1ZXMKCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9u ZXQvYnJjbSxhc3AtdjIuMC55YW1sICAgICB8IDE0NSArKysrKysrKysrKysrKysrKz0KKysrKwog MSBmaWxlIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGFzcC12Mi4wLnlhbWwKCmRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sYXNw LXYyLjAueWFtbCBiL0RvYz0KdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNt LGFzcC12Mi4wLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4w N2Y3MzczYjlkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvbmV0L2JyY20sYXNwLXYyLjAueWFtbApAQCAtMCwwICsxLDE0NSBAQAorIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCislWUFN TCAxLjIKKy0tLQorJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvYnJjbSxh c3AtdjIuMC55YW1sIworJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1h cy9jb3JlLnlhbWwjCisKK3RpdGxlOiBCcm9hZGNvbSBBU1AgMi4wIEV0aGVybmV0IGNvbnRyb2xs ZXIKKworbWFpbnRhaW5lcnM6CisgIC0gSnVzdGluIENoZW4gPGp1c3Rpbi5jaGVuQGJyb2FkY29t LmNvbT4KKyAgLSBGbG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNv bT4KKworZGVzY3JpcHRpb246IEJyb2FkY29tIEV0aGVybmV0IGNvbnRyb2xsZXIgZmlyc3QgaW50 cm9kdWNlZCB3aXRoIDcyMTY1CisKK3Byb3BlcnRpZXM6CisgICcjYWRkcmVzcy1jZWxscyc6Cisg ICAgY29uc3Q6IDEKKyAgJyNzaXplLWNlbGxzJzoKKyAgICBjb25zdDogMQorCisgIGNvbXBhdGli bGU6CisgICAgZW51bToKKyAgICAgIC0gYnJjbSxhc3AtdjIuMAorICAgICAgLSBicmNtLGJjbTcy MTY1LWFzcAorICAgICAgLSBicmNtLGFzcC12Mi4xCisgICAgICAtIGJyY20sYmNtNzQxNjUtYXNw CisKKyAgcmVnOgorICAgIG1heEl0ZW1zOiAxCisKKyAgcmFuZ2VzOiB0cnVlCisKKyAgaW50ZXJy dXB0czoKKyAgICBtaW5JdGVtczogMQorICAgIGl0ZW1zOgorICAgICAgLSBkZXNjcmlwdGlvbjog UlgvVFggaW50ZXJydXB0CisgICAgICAtIGRlc2NyaXB0aW9uOiBQb3J0IDAgV2FrZS1vbi1MQU4K KyAgICAgIC0gZGVzY3JpcHRpb246IFBvcnQgMSBXYWtlLW9uLUxBTgorCisgIGNsb2NrczoKKyAg ICBtYXhJdGVtczogMQorCisgIGV0aGVybmV0LXBvcnRzOgorICAgIHR5cGU6IG9iamVjdAorICAg IHByb3BlcnRpZXM6CisgICAgICAnI2FkZHJlc3MtY2VsbHMnOgorICAgICAgICBjb25zdDogMQor ICAgICAgJyNzaXplLWNlbGxzJzoKKyAgICAgICAgY29uc3Q6IDAKKworICAgIHBhdHRlcm5Qcm9w ZXJ0aWVzOgorICAgICAgIl5wb3J0QFswLTldKyQiOgorICAgICAgICB0eXBlOiBvYmplY3QKKwor ICAgICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjCisKKyAgICAgICAgcHJvcGVy dGllczoKKyAgICAgICAgICByZWc6CisgICAgICAgICAgICBtYXhJdGVtczogMQorICAgICAgICAg ICAgZGVzY3JpcHRpb246IFBvcnQgbnVtYmVyCisKKyAgICAgICAgICBicmNtLGNoYW5uZWw6Cisg ICAgICAgICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIK KyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBBU1AgY2hhbm5lbCBudW1iZXIKKworICAgICAgICBy ZXF1aXJlZDoKKyAgICAgICAgICAtIHJlZworICAgICAgICAgIC0gYnJjbSxjaGFubmVsCisKKyAg ICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UKKworcGF0dGVyblByb3BlcnRpZXM6CisgICJe bWRpb0BbMC05YS1mXSskIjoKKyAgICB0eXBlOiBvYmplY3QKKyAgICAkcmVmOiBicmNtLHVuaW1h Yy1tZGlvLnlhbWwKKworICAgIGRlc2NyaXB0aW9uOgorICAgICAgQVNQIGludGVybmFsIFVuaU1B QyBNRElPIGJ1cworCityZXF1aXJlZDoKKyAgLSBjb21wYXRpYmxlCisgIC0gcmVnCisgIC0gaW50 ZXJydXB0cworICAtIGNsb2NrcworICAtIHJhbmdlcworCithZGRpdGlvbmFsUHJvcGVydGllczog ZmFsc2UKKworZXhhbXBsZXM6CisgIC0gfAorICAgICNpbmNsdWRlIDxkdC1iaW5kaW5ncy9pbnRl cnJ1cHQtY29udHJvbGxlci9pcnEuaD4KKyAgICAjaW5jbHVkZSA8ZHQtYmluZGluZ3MvaW50ZXJy dXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oPgorCisgICAgZXRoZXJuZXRAOWMwMDAwMCB7CisgICAg ICAgIGNvbXBhdGlibGUgPTNEICJicmNtLGJjbTcyMTY1LWFzcCIsICJicmNtLGFzcC12Mi4wIjsK KyAgICAgICAgcmVnID0zRCA8MHg5YzAwMDAwIDB4MWZmZjE0PjsKKyAgICAgICAgaW50ZXJydXB0 cyA9M0QgPEdJQ19TUEkgNTEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisgICAgICAgIHJhbmdlcyA9 M0QgPDB4MCAweDljMDAwMDAgMHgxZmZmMTQ+OworICAgICAgICBjbG9ja3MgPTNEIDwmc2NtaSAx ND47CisgICAgICAgICNhZGRyZXNzLWNlbGxzID0zRCA8MT47CisgICAgICAgICNzaXplLWNlbGxz ID0zRCA8MT47CisKKyAgICAgICAgbWRpb0BjNjE0IHsKKyAgICAgICAgICAgIGNvbXBhdGlibGUg PTNEICJicmNtLGFzcC12Mi4wLW1kaW8iOworICAgICAgICAgICAgcmVnID0zRCA8MHhjNjE0IDB4 OD47CisgICAgICAgICAgICByZWctbmFtZXMgPTNEICJtZGlvIjsKKyAgICAgICAgICAgICNhZGRy ZXNzLWNlbGxzID0zRCA8MT47CisgICAgICAgICAgICAjc2l6ZS1jZWxscyA9M0QgPDA+OworCisg ICAgICAgICAgICBwaHkwOiBldGhlcm5ldC1waHlAMSB7CisgICAgICAgICAgICAgICAgcmVnID0z RCA8MT47CisgICAgICAgICAgICB9OworICAgICAgIH07CisKKyAgICAgICAgbWRpb0BjZTE0IHsK KyAgICAgICAgICAgIGNvbXBhdGlibGUgPTNEICJicmNtLGFzcC12Mi4wLW1kaW8iOworICAgICAg ICAgICAgcmVnID0zRCA8MHhjZTE0IDB4OD47CisgICAgICAgICAgICByZWctbmFtZXMgPTNEICJt ZGlvIjsKKyAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0zRCA8MT47CisgICAgICAgICAgICAj c2l6ZS1jZWxscyA9M0QgPDA+OworCisgICAgICAgICAgICBwaHkxOiBldGhlcm5ldC1waHlAMSB7 CisgICAgICAgICAgICAgICAgcmVnID0zRCA8MT47CisgICAgICAgICAgICB9OworICAgICAgICB9 OworCisgICAgICAgIGV0aGVybmV0LXBvcnRzIHsKKyAgICAgICAgICAgICNhZGRyZXNzLWNlbGxz ID0zRCA8MT47CisgICAgICAgICAgICAjc2l6ZS1jZWxscyA9M0QgPDA+OworCisgICAgICAgICAg ICBwb3J0QDAgeworICAgICAgICAgICAgICAgIHJlZyA9M0QgPDA+OworICAgICAgICAgICAgICAg IGJyY20sY2hhbm5lbCA9M0QgPDg+OworICAgICAgICAgICAgICAgIHBoeS1tb2RlID0zRCAicmdt aWkiOworICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPTNEIDwmcGh5MD47CisgICAgICAgICAg ICB9OworCisgICAgICAgICAgICBwb3J0QDEgeworICAgICAgICAgICAgICAgIHJlZyA9M0QgPDE+ OworICAgICAgICAgICAgICAgIGJyY20sY2hhbm5lbCA9M0QgPDk+OworICAgICAgICAgICAgICAg IHBoeS1tb2RlID0zRCAicmdtaWkiOworICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPTNEIDwm cGh5MT47CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Ci0tPTIwCjIuNy40Cg== --000000000000ba67db05fc636cdb 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIP++RyIACGRzcDCUnwA5UNOPmrPtSK7NbQqq 0GqfhUbOMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTM1OVowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBdvjRoO5lJeWxGTT42FdBtpP6lnDZozoG9yor6KaLd2x8xqOup04DV kPTUExRK0TB8Z62r32PipQCVVcKJxJu/kjcZ5UOZwx/d52xf3GgptJ4JgtH8UNZtzRlj3oU63YYL 7ydHdJm3y0AvlY1TeanhTwGTzCu3TH5PIcVxqzFFAFqRmE1I7BkqDijLTdvpDJguJwuAUMicWdfj ZOcmXCeMnt5ExI+lav4CZ5cvYKemg+uBO0/UlO3l698av7F91g5n8PyvRgdKW3gCS3ET0jYAMBUr o/labzG8h+vVStuSt20wEUN2pZQ5HnQCGtS9gx0J2tfUHQWrn/lLp6uW9sXY --000000000000ba67db05fc636cdb-- From nobody Sat Feb 7 17:20:17 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 95237C7EE26 for ; Tue, 23 May 2023 21:54:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238775AbjEWVyS (ORCPT ); Tue, 23 May 2023 17:54:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238751AbjEWVyL (ORCPT ); Tue, 23 May 2023 17:54:11 -0400 Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0AD2E6 for ; Tue, 23 May 2023 14:54:03 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-64d2981e3abso25187b3a.1 for ; Tue, 23 May 2023 14:54:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878843; x=1687470843; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=rrwGKy6l9OJK4n8exT/lbsHwcbyA9EXdbbrYsZ5Jf1c=; b=EmnA4OEB/sGdozw3qZWFis76W3Gxp6R/DTWjOiCixtjzlwOcsFdQ3rr3cFUOEbMcro PZXwYMzd+cX+MmJOF92GsS9kHZS9pePfQymSMUrzsRbtQA8sFRgK4BdB/+dDrxI5F0fi WySIyQaaiQ41yyYrT9WtnFK57FzCB9XZzxNxo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878843; x=1687470843; 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=rrwGKy6l9OJK4n8exT/lbsHwcbyA9EXdbbrYsZ5Jf1c=; b=A/xtgwIw0dlZI2hE/RLwZaRR96JP8xsqqkqa0fYRw2w14i0mfvGRch6lRe64gGaKRM RLyD+4eIlXRUC7nE8ILSJE3wvzWaHZ909FU1HlXXOj07f9BlWeAvIEG6Mu1WJzq7uswv zNTZMg3tnq3j5+Joo72TGEKYejCenQnH3JCwTuhBQa3ayXNEiDBUMHJF/f9xj3XjqG+b IYTT4Zxw0qAFbd6CMiVxaVMyuPjY08cyoG0dM+lKffs2IvhQIOpBt+o8frYOeOZiXz90 3EEp4h6FXseSFbsRhtX9E+GfXjmt7NUIO/3xjpeazC61Q1hKXbk8Zewdzj2d/J7yPQnX Xs0w== X-Gm-Message-State: AC+VfDxl8rnw1/9qY9V50egxtff1JL5PEk0eNDRf7x8p/ovKM1W/NNqP r3cIKEVpPppnNPjY5yQX5r99Ng== X-Google-Smtp-Source: ACHHUZ59XaZsNoi66EmvULLqeXXZ/Y50byHBDr4grkvlByik3dOfriTgukLf3+aIYmivVrsy8E00xQ== X-Received: by 2002:a17:903:2303:b0:1ae:610a:4a46 with SMTP id d3-20020a170903230300b001ae610a4a46mr20270814plh.47.1684878842216; Tue, 23 May 2023 14:54:02 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.53.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:54:01 -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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 3/6] net: bcmasp: Add support for ASP2.0 Ethernet controller Date: Tue, 23 May 2023 14:53:44 -0700 Message-Id: <1684878827-40672-4-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000f3660905fc636c6c" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --000000000000f3660905fc636c6c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBBU1AgMi4wIEV0aGVybmV0IGNvbnRyb2xsZXIg d2hpY2ggaXMgZmlyc3QKaW50cm9kdWNlZCB3aXRoIDcyMTY1LiBUaGlzIGNvbnRyb2xsZXIgZmVh dHVyZXMgdHdvIGRpc3RpbmN0IEV0aGVybmV0CnBvcnRzIHRoYXQgY2FuIGJlIGluZGVwZW5kZW50 bHkgb3BlcmF0ZWQuCgpUaGlzIHBhdGNoIHN1cHBvcnRzOgoKLSBXYWtlLW9uLUxBTiB1c2luZyBt YWdpYyBwYWNrZXRzCi0gYmFzaWMgZXRodG9vbCBvcGVyYXRpb25zIChsaW5rLCBjb3VudGVycywg bWVzc2FnZSBsZXZlbCkKLSBNQUMgZGVzdGluYXRpb24gYWRkcmVzcyBmaWx0ZXJpbmcgKHByb21p c2N1b3VzLCBBTExfTVVMVEksIGV0Yy4pCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxp IDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTogSnVzdGluIENo ZW4gPGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbT4KUmV2aWV3ZWQtYnk6IFNpbW9uIEhvcm1hbiA8 c2ltb24uaG9ybWFuQGNvcmlnaW5lLmNvbT4KLS0tCnY0CgktIEFkZHJlc3Mgc3BhcnNlIHdhcm5p bmdzCgktIEZpeCBvbmUgbW9yZSByZXZlcnNlIHhtYXMgdHJlZSB2aW9sYXRpb24KCS0gSW1wcm92 ZSBlcnJvciBsb2dpYyBmb3IgYmNtYXNwX25ldGZpbHRfZ2V0X3JlZ19vZmZzZXQoKQoKdjMKICAg ICAgICAtIEZpeCBsb2dpYyBlcnJvciB3aXRoIG5ldCBzdGF0cyB3aGVyZSBzb21lIHN0YXRzIHdl cmUgbWlzc2luZwogICAgICAgIC0gR2VuZXJhbCBjbGVhbiB1cCBhZGRyZXNzaW5nIGZvcm1hdHRp bmcvc3BlbGxpbmcvY29uc2lzdGVuY3kKICAgICAgICAtIFVzZSBkZXZfZXJyX3Byb2JlIHRvIHNh dmUgYSBmZXcgTG9DcwogICAgICAgIC0gVXNlIHB1dF91bmFsaWduZWQgd2hlbiB1cGRhdGluZyBu ZXQgc3RhdHMKCnYyCiAgICAgICAgLSBSZXBsYWNlIGEgY291cGxlIGZ1bmN0aW9ucyB3aXRoIGhl bHBlciBmdW5jdGlvbnMKICAgICAgICAtIEZpeCBhIGZldyBXb0wgaXNzdWVzCgogZHJpdmVycy9u ZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZyAgICAgICAgICAgICAgfCAgIDExICsKIGRyaXZl cnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlICAgICAgICAgICAgIHwgICAgMSArCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL01ha2VmaWxlICAgICAgICB8ICAgIDIg KwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3AuYyAgICAgICAgfCAx NDYyICsrKysrKysrKysrKysrKys9CisrKysKIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29t L2FzcDIvYmNtYXNwLmggICAgICAgIHwgIDYzNyArKysrKysrKysKIC4uLi9uZXQvZXRoZXJuZXQv YnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jICAgIHwgIDU2OCArKysrKysrKwogZHJpdmVy cy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jICAgfCAxNDI1ICsrKysr KysrKysrKysrKys9CisrKwogLi4uL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9p bnRmX2RlZnMuaCAgfCAgMjM4ICsrKysKIDggZmlsZXMgY2hhbmdlZCwgNDM0NCBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNw Mi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL2FzcDIvYmNtYXNwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5l dC9icm9hZGNvbS9hc3AyL2JjbWFzcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQv ZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3Bf aW50Zl9kZWZzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9L Y29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYj0Kcm9hZGNvbS9LY29uZmlnCmluZGV4IDk0 ODU4NmJmMWI1Yi4uZDQxNjYxNDExNDVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9icm9hZGNvbS9LY29uZmlnCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tj b25maWcKQEAgLTI1NSw0ICsyNTUsMTUgQEAgY29uZmlnIEJOWFRfSFdNT04KIAkgIFNheSBZIGlm IHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3IgZGF0YSBvbiBOZXRYdHJlbWUt Qy9FCiAJICBkZXZpY2VzLCB2aWEgdGhlIGh3bW9uIHN5c2ZzIGludGVyZmFjZS4KPTIwCitjb25m aWcgQkNNQVNQCisJdHJpc3RhdGUgIkJyb2FkY29tIEFTUCAyLjAgRXRoZXJuZXQgc3VwcG9ydCIK KwlkZWZhdWx0IEFSQ0hfQlJDTVNUQgorCWRlcGVuZHMgb24gT0YKKwlzZWxlY3QgTUlJCisJc2Vs ZWN0IFBIWUxJQgorCXNlbGVjdCBNRElPX0JDTV9VTklNQUMKKwloZWxwCisJICBUaGlzIGNvbmZp Z3VyYXRpb24gZW5hYmxlcyB0aGUgQnJvYWRjb20gQVNQIDIuMCBFdGhlcm5ldCBjb250cm9sbGVy CisJICBkcml2ZXIgd2hpY2ggaXMgcHJlc2VudCBpbiBCcm9hZGNvbSBTVEIgU29DcyBzdWNoIGFz IDcyMTY1LgorCiBlbmRpZiAjIE5FVF9WRU5ET1JfQlJPQURDT00KZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv PQpicm9hZGNvbS9NYWtlZmlsZQppbmRleCAwZGRmYjViNWQ1M2MuLmJhYzVjYjZhZDBjZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGUKKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGUKQEAgLTE3LDMgKzE3LDQgQEAgb2Jq LSQoQ09ORklHX0JHTUFDX0JDTUEpICs9M0QgYmdtYWMtYmNtYS5vIGJnbWFjLWJjbWEtbWRpPQpv Lm8KIG9iai0kKENPTkZJR19CR01BQ19QTEFURk9STSkgKz0zRCBiZ21hYy1wbGF0Zm9ybS5vCiBv YmotJChDT05GSUdfU1lTVEVNUE9SVCkgKz0zRCBiY21zeXNwb3J0Lm8KIG9iai0kKENPTkZJR19C TlhUKSArPTNEIGJueHQvCitvYmotJChDT05GSUdfQkNNQVNQKSArPTNEIGFzcDIvCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL01ha2VmaWxlIGIvZHJpdmVy cy9uZXQvZXRoZT0Kcm5ldC9icm9hZGNvbS9hc3AyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTA3NTUwMzE1ZjgzCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9NYWtlZmlsZQpAQCAtMCwwICsxLDIg QEAKK29iai0kKENPTkZJR19CQ01BU1ApICs9M0QgYmNtLWFzcC5vCitiY20tYXNwLW9ianMgOj0z RCBiY21hc3AubyBiY21hc3BfaW50Zi5vIGJjbWFzcF9ldGh0b29sLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwLmMgYi9kcml2ZXJzL25ldC9l dGhlPQpybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5iODkzOTJiYzU0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcC5jCkBAIC0wLDAgKzEsMTQ2MiBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBCcm9hZGNvbSBTVEIg QVNQIDIuMCBEcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgQnJvYWRjb20KKyAqLwor I2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaWZfdmxhbi5o PgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4K KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgor I2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9y bS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSAiYmNtYXNwLmgiCisjaW5j bHVkZSAiYmNtYXNwX2ludGZfZGVmcy5oIgorCitzdGF0aWMgdm9pZCBfaW50cjJfbWFza19jbGVh cihzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsIHUzMiBtYXNrKQoreworCWludHIyX2NvcmVfd2wo cHJpdiwgbWFzaywgQVNQX0lOVFIyX01BU0tfQ0xFQVIpOworCXByaXYtPmlycV9tYXNrICY9M0Qg fm1hc2s7Cit9CisKK3N0YXRpYyB2b2lkIF9pbnRyMl9tYXNrX3NldChzdHJ1Y3QgYmNtYXNwX3By aXYgKnByaXYsIHUzMiBtYXNrKQoreworCWludHIyX2NvcmVfd2wocHJpdiwgbWFzaywgQVNQX0lO VFIyX01BU0tfU0VUKTsKKwlwcml2LT5pcnFfbWFzayB8PTNEIG1hc2s7Cit9CisKK3ZvaWQgYmNt YXNwX2VuYWJsZV90eF9pcnEoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBpbnQgZW4pCit7CisJ c3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisKKwlpZiAoZW4pCisJ CV9pbnRyMl9tYXNrX2NsZWFyKHByaXYsIEFTUF9JTlRSMl9UWF9ERVNDKGludGYtPmNoYW5uZWwp KTsKKwllbHNlCisJCV9pbnRyMl9tYXNrX3NldChwcml2LCBBU1BfSU5UUjJfVFhfREVTQyhpbnRm LT5jaGFubmVsKSk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChiY21hc3BfZW5hYmxlX3R4X2lycSk7 CisKK3ZvaWQgYmNtYXNwX2VuYWJsZV9yeF9pcnEoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBp bnQgZW4pCit7CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisK KwlpZiAoZW4pCisJCV9pbnRyMl9tYXNrX2NsZWFyKHByaXYsIEFTUF9JTlRSMl9SWF9FQ0goaW50 Zi0+Y2hhbm5lbCkpOworCWVsc2UKKwkJX2ludHIyX21hc2tfc2V0KHByaXYsIEFTUF9JTlRSMl9S WF9FQ0goaW50Zi0+Y2hhbm5lbCkpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoYmNtYXNwX2VuYWJs ZV9yeF9pcnEpOworCitzdGF0aWMgdm9pZCBiY21hc3BfaW50cjJfbWFza19zZXRfYWxsKHN0cnVj dCBiY21hc3BfcHJpdiAqcHJpdikKK3sKKwlfaW50cjJfbWFza19zZXQocHJpdiwgMHhmZmZmZmZm Zik7CisJcHJpdi0+aXJxX21hc2sgPTNEIDB4ZmZmZmZmZmY7Cit9CisKK3N0YXRpYyB2b2lkIGJj bWFzcF9pbnRyMl9jbGVhcl9hbGwoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KQoreworCWludHIy X2NvcmVfd2wocHJpdiwgMHhmZmZmZmZmZiwgQVNQX0lOVFIyX0NMRUFSKTsKK30KKworc3RhdGlj IHZvaWQgYmNtYXNwX2ludHIyX2hhbmRsaW5nKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMy IHN0YXR1cykKK3sKKwlpZiAoc3RhdHVzICYgQVNQX0lOVFIyX1JYX0VDSChpbnRmLT5jaGFubmVs KSkgeworCQlpZiAobGlrZWx5KG5hcGlfc2NoZWR1bGVfcHJlcCgmaW50Zi0+cnhfbmFwaSkpKSB7 CisJCQliY21hc3BfZW5hYmxlX3J4X2lycShpbnRmLCAwKTsKKwkJCV9fbmFwaV9zY2hlZHVsZV9p cnFvZmYoJmludGYtPnJ4X25hcGkpOworCQl9CisJfQorCisJaWYgKHN0YXR1cyAmIEFTUF9JTlRS Ml9UWF9ERVNDKGludGYtPmNoYW5uZWwpKSB7CisJCWlmIChsaWtlbHkobmFwaV9zY2hlZHVsZV9w cmVwKCZpbnRmLT50eF9uYXBpKSkpIHsKKwkJCWJjbWFzcF9lbmFibGVfdHhfaXJxKGludGYsIDAp OworCQkJX19uYXBpX3NjaGVkdWxlX2lycW9mZigmaW50Zi0+dHhfbmFwaSk7CisJCX0KKwl9Cit9 CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBiY21hc3BfaXNyKGludCBpcnEsIHZvaWQgKmRhdGEpCit7 CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBkYXRhOworCXN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZjsKKwl1MzIgc3RhdHVzOworCWludCBpOworCisJc3RhdHVzID0zRCBpbnRyMl9jb3Jl X3JsKHByaXYsIEFTUF9JTlRSMl9TVEFUVVMpICYKKwkJfmludHIyX2NvcmVfcmwocHJpdiwgQVNQ X0lOVFIyX01BU0tfU1RBVFVTKTsKKworCWludHIyX2NvcmVfd2wocHJpdiwgc3RhdHVzLCBBU1Bf SU5UUjJfQ0xFQVIpOworCisJaWYgKHVubGlrZWx5KHN0YXR1cyA9M0Q9M0QgMCkpIHsKKwkJZGV2 X3dhcm4oJnByaXYtPnBkZXYtPmRldiwgImwyIHNwdXJpb3VzIGludGVycnVwdFxuIik7CisJCXJl dHVybiBJUlFfTk9ORTsKKwl9CisKKwkvKiBIYW5kbGUgaW50ZmVyZmFjZXMgKi8KKwlmb3IgKGkg PTNEIDA7IGkgPCBwcml2LT5pbnRmX2NvdW50OyBpKyspIHsKKwkJaW50ZiA9M0QgcHJpdi0+aW50 ZnNbaV07CisJCWJjbWFzcF9pbnRyMl9oYW5kbGluZyhpbnRmLCBzdGF0dXMpOworCX0KKworCXJl dHVybiBJUlFfSEFORExFRDsKK30KKwordm9pZCBiY21hc3BfZmx1c2hfcnhfcG9ydChzdHJ1Y3Qg YmNtYXNwX2ludGYgKmludGYpCit7CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRm LT5wYXJlbnQ7CisJdTMyIG1hc2s7CisKKwlzd2l0Y2ggKGludGYtPnBvcnQpIHsKKwljYXNlIDA6 CisJCW1hc2sgPTNEIEFTUF9DVFJMX1VNQUMwX0ZMVVNIX01BU0s7CisJCWJyZWFrOworCWNhc2Ug MToKKwkJbWFzayA9M0QgQVNQX0NUUkxfVU1BQzFfRkxVU0hfTUFTSzsKKwkJYnJlYWs7CisJY2Fz ZSAyOgorCQltYXNrID0zRCBBU1BfQ1RSTF9TUEJfRkxVU0hfTUFTSzsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJLyogTm90IHZhbGlkIHBvcnQgKi8KKwkJcmV0dXJuOworCX0KKworCXJ4X2N0cmxf Y29yZV93bChwcml2LCBtYXNrLCBwcml2LT5od19pbmZvLT5yeF9jdHJsX2ZsdXNoKTsKK30KKwor c3RhdGljIHZvaWQgYmNtYXNwX25ldGZpbHRfaHdfZW5fd2FrZShzdHJ1Y3QgYmNtYXNwX3ByaXYg KnByaXYsCisJCQkJICAgICAgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdCkKK3sKKwly eF9maWx0ZXJfY29yZV93bChwcml2LCBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDNfMSg2NCks CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVChuZmlsdC0+aHdfaW5kZXgpKTsKKworCXJ4 X2ZpbHRlcl9jb3JlX3dsKHByaXYsIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVF9MMigzMikgfAor CQkJICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDNfMCgzMikgfAorCQkJICBBU1BfUlhfRklM VEVSX05FVF9PRkZTRVRfTDNfMSg5NikgfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRf TDQoMzIpLAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVQobmZpbHQtPmh3X2luZGV4ICsg MSkpOworCisJcnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0NI KG5maWx0LT5wb3J0ICsgOCkgfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9DRkdfRU4gfAorCQkJ ICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDJfRU4gfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9D RkdfTDNfRU4gfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDRfRU4gfAorCQkJICBBU1Bf UlhfRklMVEVSX05FVF9DRkdfTDNfRlJNKDIpIHwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZH X0w0X0ZSTSgyKSB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19VTUMobmZpbHQtPnBvcnQp LAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9DRkcobmZpbHQtPmh3X2luZGV4KSk7CisKKwlyeF9m aWx0ZXJfY29yZV93bChwcml2LCBBU1BfUlhfRklMVEVSX05FVF9DRkdfQ0gobmZpbHQtPnBvcnQg KyA4KSB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19FTiB8CisJCQkgIEFTUF9SWF9GSUxU RVJfTkVUX0NGR19MMl9FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MM19FTiB8CisJ CQkgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MNF9FTiB8CisJCQkgIEFTUF9SWF9GSUxURVJfTkVU X0NGR19MM19GUk0oMikgfAorCQkJICBBU1BfUlhfRklMVEVSX05FVF9DRkdfTDRfRlJNKDIpIHwK KwkJCSAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX1VNQyhuZmlsdC0+cG9ydCksCisJCQkgIEFTUF9S WF9GSUxURVJfTkVUX0NGRyhuZmlsdC0+aHdfaW5kZXggKyAxKSk7Cit9CisKKyNkZWZpbmUgTUFY X1dBS0VfRklMVEVSX1NJWkUJCTI1NgorZW51bSBhc3BfbmV0ZmlsdF9yZWdfdHlwZSB7CisJQVNQ X05FVEZJTFRfTUFUQ0ggPTNEIDAsCisJQVNQX05FVEZJTFRfTUFTSywKKwlBU1BfTkVURklMVF9N QVgKK307CisKK3N0YXRpYyBpbnQgYmNtYXNwX25ldGZpbHRfZ2V0X3JlZ19vZmZzZXQoc3RydWN0 IGJjbWFzcF9wcml2ICpwcml2LAorCQkJCQkgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmls dCwKKwkJCQkJIGVudW0gYXNwX25ldGZpbHRfcmVnX3R5cGUgcmVnX3R5cGUsCisJCQkJCSB1MzIg b2Zmc2V0KQoreworCXUzMiBibG9ja19pbmRleCwgZmlsdGVyX3NlbDsKKworCWlmIChvZmZzZXQg PCAzMikgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JYX0ZJTFRFUl9ORVRfTDI7CisJCWZpbHRl cl9zZWwgPTNEIG5maWx0LT5od19pbmRleDsKKwl9IGVsc2UgaWYgKG9mZnNldCA8IDY0KSB7CisJ CWJsb2NrX2luZGV4ID0zRCBBU1BfUlhfRklMVEVSX05FVF9MMjsKKwkJZmlsdGVyX3NlbCA9M0Qg bmZpbHQtPmh3X2luZGV4ICsgMTsKKwl9IGVsc2UgaWYgKG9mZnNldCA8IDk2KSB7CisJCWJsb2Nr X2luZGV4ID0zRCBBU1BfUlhfRklMVEVSX05FVF9MM18wOworCQlmaWx0ZXJfc2VsID0zRCBuZmls dC0+aHdfaW5kZXg7CisJfSBlbHNlIGlmIChvZmZzZXQgPCAxMjgpIHsKKwkJYmxvY2tfaW5kZXgg PTNEIEFTUF9SWF9GSUxURVJfTkVUX0wzXzA7CisJCWZpbHRlcl9zZWwgPTNEIG5maWx0LT5od19p bmRleCArIDE7CisJfSBlbHNlIGlmIChvZmZzZXQgPCAxNjApIHsKKwkJYmxvY2tfaW5kZXggPTNE IEFTUF9SWF9GSUxURVJfTkVUX0wzXzE7CisJCWZpbHRlcl9zZWwgPTNEIG5maWx0LT5od19pbmRl eDsKKwl9IGVsc2UgaWYgKG9mZnNldCA8IDE5MikgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JY X0ZJTFRFUl9ORVRfTDNfMTsKKwkJZmlsdGVyX3NlbCA9M0QgbmZpbHQtPmh3X2luZGV4ICsgMTsK Kwl9IGVsc2UgaWYgKG9mZnNldCA8IDIyNCkgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JYX0ZJ TFRFUl9ORVRfTDQ7CisJCWZpbHRlcl9zZWwgPTNEIG5maWx0LT5od19pbmRleDsKKwl9IGVsc2Ug aWYgKG9mZnNldCA8IDI1NikgeworCQlibG9ja19pbmRleCA9M0QgQVNQX1JYX0ZJTFRFUl9ORVRf TDQ7CisJCWZpbHRlcl9zZWwgPTNEIG5maWx0LT5od19pbmRleCArIDE7CisJfSBlbHNlIHsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChyZWdfdHlwZSkgeworCWNhc2UgQVNQX05F VEZJTFRfTUFUQ0g6CisJCXJldHVybiBBU1BfUlhfRklMVEVSX05FVF9QQVQoZmlsdGVyX3NlbCwg YmxvY2tfaW5kZXgsCisJCQkJCSAgICAgKG9mZnNldCAlIDMyKSk7CisJY2FzZSBBU1BfTkVURklM VF9NQVNLOgorCQlyZXR1cm4gQVNQX1JYX0ZJTFRFUl9ORVRfTUFTSyhmaWx0ZXJfc2VsLCBibG9j a19pbmRleCwKKwkJCQkJICAgICAgKG9mZnNldCAlIDMyKSk7CisJZGVmYXVsdDoKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorfQorCitzdGF0aWMgdm9pZCBiY21hc3BfbmV0ZmlsdF93cihzdHJ1Y3Qg YmNtYXNwX3ByaXYgKnByaXYsCisJCQkgICAgICBzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5m aWx0LAorCQkJICAgICAgZW51bSBhc3BfbmV0ZmlsdF9yZWdfdHlwZSByZWdfdHlwZSwKKwkJCSAg ICAgIHUzMiB2YWwsIHUzMiBvZmZzZXQpCit7CisJaW50IHJlZ19vZmZzZXQ7CisKKwkvKiBIVyBv bmx5IGFjY2VwdHMgNCBieXRlIGFsaWduZWQgd3JpdGVzICovCisJaWYgKCFJU19BTElHTkVEKG9m ZnNldCwgNCkgfHwgb2Zmc2V0ID4gTUFYX1dBS0VfRklMVEVSX1NJWkUpCisJCXJldHVybjsKKwor CXJlZ19vZmZzZXQgPTNEIGJjbWFzcF9uZXRmaWx0X2dldF9yZWdfb2Zmc2V0KHByaXYsIG5maWx0 LCByZWdfdHlwZSwKKwkJCQkJCSAgIG9mZnNldCk7CisKKwlyeF9maWx0ZXJfY29yZV93bChwcml2 LCB2YWwsIHJlZ19vZmZzZXQpOworfQorCitzdGF0aWMgdTMyIGJjbWFzcF9uZXRmaWx0X3JkKHN0 cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwKKwkJCSAgICAgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVy ICpuZmlsdCwKKwkJCSAgICAgZW51bSBhc3BfbmV0ZmlsdF9yZWdfdHlwZSByZWdfdHlwZSwKKwkJ CSAgICAgdTMyIG9mZnNldCkKK3sKKwlpbnQgcmVnX29mZnNldDsKKworCS8qIEhXIG9ubHkgYWNj ZXB0cyA0IGJ5dGUgYWxpZ25lZCB3cml0ZXMgKi8KKwlpZiAoIUlTX0FMSUdORUQob2Zmc2V0LCA0 KSB8fCBvZmZzZXQgPiBNQVhfV0FLRV9GSUxURVJfU0laRSkKKwkJcmV0dXJuIDA7CisKKwlyZWdf b2Zmc2V0ID0zRCBiY21hc3BfbmV0ZmlsdF9nZXRfcmVnX29mZnNldChwcml2LCBuZmlsdCwgcmVn X3R5cGUsCisJCQkJCQkgICBvZmZzZXQpOworCisJcmV0dXJuIHJ4X2ZpbHRlcl9jb3JlX3JsKHBy aXYsIHJlZ19vZmZzZXQpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9uZXRmaWx0X3dyX21fd2Fr ZShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCisJCQkJICAgIHN0cnVjdCBiY21hc3BfbmV0X2Zp bHRlciAqbmZpbHQsCisJCQkJICAgIHUzMiBvZmZzZXQsIHZvaWQgKm1hdGNoLCB2b2lkICptYXNr LAorCQkJCSAgICBzaXplX3Qgc2l6ZSkKK3sKKwl1MzIgc2hpZnQsIG1hc2tfdmFsID0zRCAwLCBt YXRjaF92YWwgPTNEIDA7CisJYm9vbCBmaXJzdF9ieXRlID0zRCB0cnVlOworCisJaWYgKChvZmZz ZXQgKyBzaXplKSA+IE1BWF9XQUtFX0ZJTFRFUl9TSVpFKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CXdoaWxlIChzaXplLS0pIHsKKwkJLyogVGhlIEhXIG9ubHkgYWNjZXB0cyA0IGJ5dGUgYWxpZ25l ZCB3cml0ZXMsIHNvIGlmIHdlCisJCSAqIGJlZ2luIHVuYWxpZ25lZCBvciBpZiByZW1haW5pbmcg Ynl0ZXMgbGVzcyB0aGFuIDQsCisJCSAqIHdlIG5lZWQgdG8gcmVhZCB0aGVuIHdyaXRlIHRvIGF2 b2lkIGxvc2luZyBjdXJyZW50CisJCSAqIHJlZ2lzdGVyIHN0YXRlCisJCSAqLworCQlpZiAoZmly c3RfYnl0ZSAmJiAoIUlTX0FMSUdORUQob2Zmc2V0LCA0KSB8fCBzaXplIDwgMykpIHsKKwkJCW1h dGNoX3ZhbCA9M0QgYmNtYXNwX25ldGZpbHRfcmQocHJpdiwgbmZpbHQsCisJCQkJCQkgICAgICBB U1BfTkVURklMVF9NQVRDSCwKKwkJCQkJCSAgICAgIEFMSUdOX0RPV04ob2Zmc2V0LCA0KSk7CisJ CQltYXNrX3ZhbCA9M0QgYmNtYXNwX25ldGZpbHRfcmQocHJpdiwgbmZpbHQsCisJCQkJCQkgICAg IEFTUF9ORVRGSUxUX01BU0ssCisJCQkJCQkgICAgIEFMSUdOX0RPV04ob2Zmc2V0LCA0KSk7CisJ CX0KKworCQlzaGlmdCA9M0QgKDMgLSAob2Zmc2V0ICUgNCkpICogODsKKwkJbWF0Y2hfdmFsICY9 M0QgfkdFTk1BU0soc2hpZnQgKyA3LCBzaGlmdCk7CisJCW1hc2tfdmFsICY9M0QgfkdFTk1BU0so c2hpZnQgKyA3LCBzaGlmdCk7CisJCW1hdGNoX3ZhbCB8PTNEICh1MzIpKCooKHU4ICopbWF0Y2gp IDw8IHNoaWZ0KTsKKwkJbWFza192YWwgfD0zRCAodTMyKSgqKCh1OCAqKW1hc2spIDw8IHNoaWZ0 KTsKKworCQkvKiBJZiBsYXN0IGJ5dGUgb3IgbGFzdCBieXRlIG9mIHdvcmQsIHdyaXRlIHRvIHJl ZyAqLworCQlpZiAoIXNpemUgfHwgKChvZmZzZXQgJSA0KSA9M0Q9M0QgMykpIHsKKwkJCWJjbWFz cF9uZXRmaWx0X3dyKHByaXYsIG5maWx0LCBBU1BfTkVURklMVF9NQVRDSCwKKwkJCQkJICBtYXRj aF92YWwsIEFMSUdOX0RPV04ob2Zmc2V0LCA0KSk7CisJCQliY21hc3BfbmV0ZmlsdF93cihwcml2 LCBuZmlsdCwgQVNQX05FVEZJTFRfTUFTSywKKwkJCQkJICBtYXNrX3ZhbCwgQUxJR05fRE9XTihv ZmZzZXQsIDQpKTsKKwkJCWZpcnN0X2J5dGUgPTNEIHRydWU7CisJCX0gZWxzZSB7CisJCQlmaXJz dF9ieXRlID0zRCBmYWxzZTsKKwkJfQorCisJCW9mZnNldCsrOworCQltYXRjaCsrOworCQltYXNr Kys7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9uZXRmaWx0X3Jl c2V0X2h3KHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwKKwkJCQkgICAgc3RydWN0IGJjbWFzcF9u ZXRfZmlsdGVyICpuZmlsdCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9M0QgMDsgaSA8IE1BWF9X QUtFX0ZJTFRFUl9TSVpFOyBpICs9M0QgNCkgeworCQliY21hc3BfbmV0ZmlsdF93cihwcml2LCBu ZmlsdCwgQVNQX05FVEZJTFRfTUFUQ0gsIDAsIGkpOworCQliY21hc3BfbmV0ZmlsdF93cihwcml2 LCBuZmlsdCwgQVNQX05FVEZJTFRfTUFTSywgMCwgaSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBi Y21hc3BfbmV0ZmlsdF90Y3BpcDRfd3Ioc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LAorCQkJCSAg ICAgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdCwKKwkJCQkgICAgIHN0cnVjdCBldGh0 b29sX3RjcGlwNF9zcGVjICptYXRjaCwKKwkJCQkgICAgIHN0cnVjdCBldGh0b29sX3RjcGlwNF9z cGVjICptYXNrLAorCQkJCSAgICAgdTMyIG9mZnNldCkKK3sKKwlfX2JlMTYgdmFsXzE2LCBtYXNr XzE2OworCisJdmFsXzE2ID0zRCBodG9ucyhFVEhfUF9JUCk7CisJbWFza18xNiA9M0QgaHRvbnMo MHhGRkZGKTsKKwliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIChFVEhfQUxF TiAqIDIpICsgb2Zmc2V0LAorCQkJCSAmdmFsXzE2LCAmbWFza18xNiwgc2l6ZW9mKHZhbF8xNikp OworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZz ZXQgKyAxLAorCQkJCSAmbWF0Y2gtPnRvcywgJm1hc2stPnRvcywKKwkJCQkgc2l6ZW9mKG1hdGNo LT50b3MpKTsKKwliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVO ICsgb2Zmc2V0ICsgMTIsCisJCQkJICZtYXRjaC0+aXA0c3JjLCAmbWFzay0+aXA0c3JjLAorCQkJ CSBzaXplb2YobWF0Y2gtPmlwNHNyYykpOworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2 LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAxNiwKKwkJCQkgJm1hdGNoLT5pcDRkc3QsICZt YXNrLT5pcDRkc3QsCisJCQkJIHNpemVvZihtYXRjaC0+aXA0ZHN0KSk7CisJYmNtYXNwX25ldGZp bHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNldCArIDIwLAorCQkJCSAm bWF0Y2gtPnBzcmMsICZtYXNrLT5wc3JjLAorCQkJCSBzaXplb2YobWF0Y2gtPnBzcmMpKTsKKwli Y21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zmc2V0ICsg MjIsCisJCQkJICZtYXRjaC0+cGRzdCwgJm1hc2stPnBkc3QsCisJCQkJIHNpemVvZihtYXRjaC0+ cGRzdCkpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfbmV0ZmlsdF90Y3BpcDZfd3Ioc3RydWN0 IGJjbWFzcF9wcml2ICpwcml2LAorCQkJCSAgICAgc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpu ZmlsdCwKKwkJCQkgICAgIHN0cnVjdCBldGh0b29sX3RjcGlwNl9zcGVjICptYXRjaCwKKwkJCQkg ICAgIHN0cnVjdCBldGh0b29sX3RjcGlwNl9zcGVjICptYXNrLAorCQkJCSAgICAgdTMyIG9mZnNl dCkKK3sKKwlfX2JlMTYgdmFsXzE2LCBtYXNrXzE2OworCisJdmFsXzE2ID0zRCBodG9ucyhFVEhf UF9JUFY2KTsKKwltYXNrXzE2ID0zRCBodG9ucygweEZGRkYpOworCWJjbWFzcF9uZXRmaWx0X3dy X21fd2FrZShwcml2LCBuZmlsdCwgKEVUSF9BTEVOICogMikgKyBvZmZzZXQsCisJCQkJICZ2YWxf MTYsICZtYXNrXzE2LCBzaXplb2YodmFsXzE2KSk7CisJdmFsXzE2ID0zRCBodG9ucyhtYXRjaC0+ dGNsYXNzIDw8IDQpOworCW1hc2tfMTYgPTNEIGh0b25zKG1hc2stPnRjbGFzcyA8PCA0KTsKKwli Y21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zmc2V0LAor CQkJCSAmdmFsXzE2LCAmbWFza18xNiwgc2l6ZW9mKHZhbF8xNikpOworCWJjbWFzcF9uZXRmaWx0 X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyA4LAorCQkJCSAmbWF0 Y2gtPmlwNnNyYywgJm1hc2stPmlwNnNyYywKKwkJCQkgc2l6ZW9mKG1hdGNoLT5pcDZzcmMpKTsK KwliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zmc2V0 ICsgMjQsCisJCQkJICZtYXRjaC0+aXA2ZHN0LCAmbWFzay0+aXA2ZHN0LAorCQkJCSBzaXplb2Yo bWF0Y2gtPmlwNmRzdCkpOworCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwg RVRIX0hMRU4gKyBvZmZzZXQgKyA0MCwKKwkJCQkgJm1hdGNoLT5wc3JjLCAmbWFzay0+cHNyYywK KwkJCQkgc2l6ZW9mKG1hdGNoLT5wc3JjKSk7CisJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHBy aXYsIG5maWx0LCBFVEhfSExFTiArIG9mZnNldCArIDQyLAorCQkJCSAmbWF0Y2gtPnBkc3QsICZt YXNrLT5wZHN0LAorCQkJCSBzaXplb2YobWF0Y2gtPnBkc3QpKTsKK30KKworc3RhdGljIGludCBi Y21hc3BfbmV0ZmlsdF93cl90b19odyhzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCisJCQkJICAg c3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdCkKK3sKKwlzdHJ1Y3QgZXRodG9vbF9yeF9m bG93X3NwZWMgKmZzID0zRCAmbmZpbHQtPmZzOworCXVuc2lnbmVkIGludCBvZmZzZXQgPTNEIDA7 CisJX19iZTE2IHZhbF8xNiwgbWFza18xNjsKKwl1OCB2YWxfOCwgbWFza184OworCisJLyogQ3Vy cmVudGx5IG9ubHkgc3VwcG9ydHMgd2FrZSBmaWx0ZXJzICovCisJaWYgKCFuZmlsdC0+d2FrZV9m aWx0ZXIpCisJCXJldHVybiAtRUlOVkFMOworCisJYmNtYXNwX25ldGZpbHRfcmVzZXRfaHcocHJp diwgbmZpbHQpOworCisJaWYgKGZzLT5mbG93X3R5cGUgJiBGTE9XX01BQ19FWFQpIHsKKwkJYmNt YXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCAwLCAmZnMtPmhfZXh0LmhfZGVzdCwK KwkJCQkJICZmcy0+bV9leHQuaF9kZXN0LAorCQkJCQkgc2l6ZW9mKGZzLT5oX2V4dC5oX2Rlc3Qp KTsKKwl9CisKKwlpZiAoKGZzLT5mbG93X3R5cGUgJiBGTE9XX0VYVCkgJiYKKwkgICAgKGZzLT5t X2V4dC52bGFuX2V0eXBlIHx8IGZzLT5tX2V4dC52bGFuX3RjaSkpIHsKKwkJYmNtYXNwX25ldGZp bHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCAoRVRIX0FMRU4gKiAyKSwKKwkJCQkJICZmcy0+aF9l eHQudmxhbl9ldHlwZSwKKwkJCQkJICZmcy0+bV9leHQudmxhbl9ldHlwZSwKKwkJCQkJIHNpemVv Zihmcy0+aF9leHQudmxhbl9ldHlwZSkpOworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJp diwgbmZpbHQsICgoRVRIX0FMRU4gKiAyKSArIDIpLAorCQkJCQkgJmZzLT5oX2V4dC52bGFuX3Rj aSwKKwkJCQkJICZmcy0+bV9leHQudmxhbl90Y2ksCisJCQkJCSBzaXplb2YoZnMtPmhfZXh0LnZs YW5fdGNpKSk7CisJCW9mZnNldCArPTNEIFZMQU5fSExFTjsKKwl9CisKKwlzd2l0Y2ggKGZzLT5m bG93X3R5cGUgJiB+KEZMT1dfRVhUIHwgRkxPV19NQUNfRVhUKSkgeworCWNhc2UgRVRIRVJfRkxP VzoKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCAwLAorCQkJCQkgJmZz LT5oX3UuZXRoZXJfc3BlYy5oX2Rlc3QsCisJCQkJCSAmZnMtPm1fdS5ldGhlcl9zcGVjLmhfZGVz dCwKKwkJCQkJIHNpemVvZihmcy0+aF91LmV0aGVyX3NwZWMuaF9kZXN0KSk7CisJCWJjbWFzcF9u ZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0FMRU4sCisJCQkJCSAmZnMtPmhfdS5l dGhlcl9zcGVjLmhfc291cmNlLAorCQkJCQkgJmZzLT5tX3UuZXRoZXJfc3BlYy5oX3NvdXJjZSwK KwkJCQkJIHNpemVvZihmcy0+aF91LmV0aGVyX3NwZWMuaF9zb3VyY2UpKTsKKwkJYmNtYXNwX25l dGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCAoRVRIX0FMRU4gKiAyKSArIG9mZnNldCwKKwkJ CQkJICZmcy0+aF91LmV0aGVyX3NwZWMuaF9wcm90bywKKwkJCQkJICZmcy0+bV91LmV0aGVyX3Nw ZWMuaF9wcm90bywKKwkJCQkJIHNpemVvZihmcy0+aF91LmV0aGVyX3NwZWMuaF9wcm90bykpOwor CisJCWJyZWFrOworCWNhc2UgSVBfVVNFUl9GTE9XOgorCQl2YWxfMTYgPTNEIGh0b25zKEVUSF9Q X0lQKTsKKwkJbWFza18xNiA9M0QgaHRvbnMoMHhGRkZGKTsKKwkJYmNtYXNwX25ldGZpbHRfd3Jf bV93YWtlKHByaXYsIG5maWx0LCAoRVRIX0FMRU4gKiAyKSArIG9mZnNldCwKKwkJCQkJICZ2YWxf MTYsICZtYXNrXzE2LCBzaXplb2YodmFsXzE2KSk7CisJCWJjbWFzcF9uZXRmaWx0X3dyX21fd2Fr ZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAxLAorCQkJCQkgJmZzLT5oX3UudXNy X2lwNF9zcGVjLnRvcywKKwkJCQkJICZmcy0+bV91LnVzcl9pcDRfc3BlYy50b3MsCisJCQkJCSBz aXplb2YoZnMtPmhfdS51c3JfaXA0X3NwZWMudG9zKSk7CisJCWJjbWFzcF9uZXRmaWx0X3dyX21f d2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyA5LAorCQkJCQkgJmZzLT5oX3Uu dXNyX2lwNF9zcGVjLnByb3RvLAorCQkJCQkgJmZzLT5tX3UudXNyX2lwNF9zcGVjLnByb3RvLAor CQkJCQkgc2l6ZW9mKGZzLT5oX3UudXNyX2lwNF9zcGVjLnByb3RvKSk7CisJCWJjbWFzcF9uZXRm aWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQgKyAxMiwKKwkJCQkJ ICZmcy0+aF91LnVzcl9pcDRfc3BlYy5pcDRzcmMsCisJCQkJCSAmZnMtPm1fdS51c3JfaXA0X3Nw ZWMuaXA0c3JjLAorCQkJCQkgc2l6ZW9mKGZzLT5oX3UudXNyX2lwNF9zcGVjLmlwNHNyYykpOwor CQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9ITEVOICsgb2Zmc2V0 ICsgMTYsCisJCQkJCSAmZnMtPmhfdS51c3JfaXA0X3NwZWMuaXA0ZHN0LAorCQkJCQkgJmZzLT5t X3UudXNyX2lwNF9zcGVjLmlwNGRzdCwKKwkJCQkJIHNpemVvZihmcy0+aF91LnVzcl9pcDRfc3Bl Yy5pcDRkc3QpKTsKKwkJaWYgKCFmcy0+bV91LnVzcl9pcDRfc3BlYy5sNF80X2J5dGVzKQorCQkJ YnJlYWs7CisKKwkJLyogT25seSBzdXBwb3J0cyAyMCBieXRlIElQdjQgaGVhZGVyICovCisJCXZh bF84ID0zRCAweDQ1OworCQltYXNrXzggPTNEIDB4RkY7CisJCWJjbWFzcF9uZXRmaWx0X3dyX21f d2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4gKyBvZmZzZXQsCisJCQkJCSAmdmFsXzgsICZtYXNr XzgsIHNpemVvZih2YWxfOCkpOworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZp bHQsCisJCQkJCSBFVEhfSExFTiArIDIwICsgb2Zmc2V0LAorCQkJCQkgJmZzLT5oX3UudXNyX2lw NF9zcGVjLmw0XzRfYnl0ZXMsCisJCQkJCSAmZnMtPm1fdS51c3JfaXA0X3NwZWMubDRfNF9ieXRl cywKKwkJCQkJIHNpemVvZihmcy0+aF91LnVzcl9pcDRfc3BlYy5sNF80X2J5dGVzKQorCQkJCQkg KTsKKwkJYnJlYWs7CisJY2FzZSBUQ1BfVjRfRkxPVzoKKwkJdmFsXzggPTNEIElQUFJPVE9fVENQ OworCQltYXNrXzggPTNEIDB4RkY7CisJCWJjbWFzcF9uZXRmaWx0X3RjcGlwNF93cihwcml2LCBu ZmlsdCwgJmZzLT5oX3UudGNwX2lwNF9zcGVjLAorCQkJCQkgJmZzLT5tX3UudGNwX2lwNF9zcGVj LCBvZmZzZXQpOworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9I TEVOICsgb2Zmc2V0ICsgOSwKKwkJCQkJICZ2YWxfOCwgJm1hc2tfOCwgc2l6ZW9mKHZhbF84KSk7 CisJCWJyZWFrOworCWNhc2UgVURQX1Y0X0ZMT1c6CisJCXZhbF84ID0zRCBJUFBST1RPX1VEUDsK KwkJbWFza184ID0zRCAweEZGOworCQliY21hc3BfbmV0ZmlsdF90Y3BpcDRfd3IocHJpdiwgbmZp bHQsICZmcy0+aF91LnVkcF9pcDRfc3BlYywKKwkJCQkJICZmcy0+bV91LnVkcF9pcDRfc3BlYywg b2Zmc2V0KTsKKworCQliY21hc3BfbmV0ZmlsdF93cl9tX3dha2UocHJpdiwgbmZpbHQsIEVUSF9I TEVOICsgb2Zmc2V0ICsgOSwKKwkJCQkJICZ2YWxfOCwgJm1hc2tfOCwgc2l6ZW9mKHZhbF84KSk7 CisJCWJyZWFrOworCWNhc2UgVENQX1Y2X0ZMT1c6CisJCXZhbF84ID0zRCBJUFBST1RPX1RDUDsK KwkJbWFza184ID0zRCAweEZGOworCQliY21hc3BfbmV0ZmlsdF90Y3BpcDZfd3IocHJpdiwgbmZp bHQsICZmcy0+aF91LnRjcF9pcDZfc3BlYywKKwkJCQkJICZmcy0+bV91LnRjcF9pcDZfc3BlYywg b2Zmc2V0KTsKKwkJYmNtYXNwX25ldGZpbHRfd3JfbV93YWtlKHByaXYsIG5maWx0LCBFVEhfSExF TiArIG9mZnNldCArIDYsCisJCQkJCSAmdmFsXzgsICZtYXNrXzgsIHNpemVvZih2YWxfOCkpOwor CQlicmVhazsKKwljYXNlIFVEUF9WNl9GTE9XOgorCQl2YWxfOCA9M0QgSVBQUk9UT19VRFA7CisJ CW1hc2tfOCA9M0QgMHhGRjsKKwkJYmNtYXNwX25ldGZpbHRfdGNwaXA2X3dyKHByaXYsIG5maWx0 LCAmZnMtPmhfdS51ZHBfaXA2X3NwZWMsCisJCQkJCSAmZnMtPm1fdS51ZHBfaXA2X3NwZWMsIG9m ZnNldCk7CisJCWJjbWFzcF9uZXRmaWx0X3dyX21fd2FrZShwcml2LCBuZmlsdCwgRVRIX0hMRU4g KyBvZmZzZXQgKyA2LAorCQkJCQkgJnZhbF84LCAmbWFza184LCBzaXplb2YodmFsXzgpKTsKKwkJ YnJlYWs7CisJfQorCisJYmNtYXNwX25ldGZpbHRfaHdfZW5fd2FrZShwcml2LCBuZmlsdCk7CisK KwlyZXR1cm4gMDsKK30KKwordm9pZCBiY21hc3BfbmV0ZmlsdF9zdXNwZW5kKHN0cnVjdCBiY21h c3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBh cmVudDsKKwlib29sIHdyaXRlID0zRCBmYWxzZTsKKwlpbnQgcmV0LCBpOworCisJLyogV3JpdGUg YWxsIGZpbHRlcnMgdG8gSFcgKi8KKwlmb3IgKGkgPTNEIDA7IGkgPCBOVU1fTkVUX0ZJTFRFUlM7 IGkrKykgeworCQkvKiBJZiB0aGUgZmlsdGVyIGRvZXMgbm90IG1hdGNoIHRoZSBwb3J0LCBza2lw IHByb2dyYW1taW5nLiAqLworCQlpZiAoIXByaXYtPm5ldF9maWx0ZXJzW2ldLmNsYWltZWQgfHwK KwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2ldLnBvcnQgIT0zRCBpbnRmLT5wb3J0KQorCQkJY29u dGludWU7CisKKwkJaWYgKGkgPiAwICYmIChpICUgMikgJiYKKwkJICAgIHByaXYtPm5ldF9maWx0 ZXJzW2ldLndha2VfZmlsdGVyICYmCisJCSAgICBwcml2LT5uZXRfZmlsdGVyc1tpIC0gMV0ud2Fr ZV9maWx0ZXIpCisJCQljb250aW51ZTsKKworCQlyZXQgPTNEIGJjbWFzcF9uZXRmaWx0X3dyX3Rv X2h3KHByaXYsICZwcml2LT5uZXRfZmlsdGVyc1tpXSk7CisJCWlmICghcmV0KQorCQkJd3JpdGUg PTNEIHRydWU7CisJfQorCisJLyogU3VjY2Vzc2Z1bGx5IHByb2dyYW1tZWQgYXQgbGVhc3Qgb25l IHdha2UgZmlsdGVyCisJICogc28gZW5hYmxlIHRvcCBsZXZlbCB3YWtlIGNvbmZpZworCSAqLwor CWlmICh3cml0ZSkKKwkJcnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgKEFTUF9SWF9GSUxURVJfT1BV VF9FTiB8CisJCQkJICBBU1BfUlhfRklMVEVSX0xOUl9NRCB8CisJCQkJICBBU1BfUlhfRklMVEVS X0dFTl9XS19FTiB8CisJCQkJICBBU1BfUlhfRklMVEVSX05UX0ZMVF9FTiksCisJCQkJICBBU1Bf UlhfRklMVEVSX0JMS19DVFJMKTsKK30KKwordm9pZCBiY21hc3BfbmV0ZmlsdF9nZXRfYWxsX2Fj dGl2ZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIHUzMiAqcnVsZV9sb2M9CnMsCisJCQkJICAg dTMyICpydWxlX2NudCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBh cmVudDsKKwlpbnQgaiA9M0QgMCwgaTsKKworCWZvciAoaSA9M0QgMDsgaSA8IE5VTV9ORVRfRklM VEVSUzsgaSsrKSB7CisJCWlmICghcHJpdi0+bmV0X2ZpbHRlcnNbaV0uY2xhaW1lZCB8fAorCQkg ICAgcHJpdi0+bmV0X2ZpbHRlcnNbaV0ucG9ydCAhPTNEIGludGYtPnBvcnQpCisJCQljb250aW51 ZTsKKworCQlpZiAoaSA+IDAgJiYgKGkgJSAyKSAmJgorCQkgICAgcHJpdi0+bmV0X2ZpbHRlcnNb aV0ud2FrZV9maWx0ZXIgJiYKKwkJICAgIHByaXYtPm5ldF9maWx0ZXJzW2kgLSAxXS53YWtlX2Zp bHRlcikKKwkJCWNvbnRpbnVlOworCisJCXJ1bGVfbG9jc1tqKytdID0zRCBwcml2LT5uZXRfZmls dGVyc1tpXS5mcy5sb2NhdGlvbjsKKwl9CisKKwkqcnVsZV9jbnQgPTNEIGo7Cit9CisKK2ludCBi Y21hc3BfbmV0ZmlsdF9nZXRfYWN0aXZlKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlz dHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwlpbnQgY250ID0zRCAw LCBpOworCisJZm9yIChpID0zRCAwOyBpIDwgTlVNX05FVF9GSUxURVJTOyBpKyspIHsKKwkJaWYg KCFwcml2LT5uZXRfZmlsdGVyc1tpXS5jbGFpbWVkIHx8CisJCSAgICBwcml2LT5uZXRfZmlsdGVy c1tpXS5wb3J0ICE9M0QgaW50Zi0+cG9ydCkKKwkJCWNvbnRpbnVlOworCisJCS8qIFNraXAgb3Zl ciBhIHdha2UgZmlsdGVyIHBhaXIgKi8KKwkJaWYgKGkgPiAwICYmIChpICUgMikgJiYKKwkJICAg IHByaXYtPm5ldF9maWx0ZXJzW2ldLndha2VfZmlsdGVyICYmCisJCSAgICBwcml2LT5uZXRfZmls dGVyc1tpIC0gMV0ud2FrZV9maWx0ZXIpCisJCQljb250aW51ZTsKKworCQljbnQrKzsKKwl9CisK KwlyZXR1cm4gY250OworfQorCitpbnQgYmNtYXNwX25ldGZpbHRfY2hlY2tfZHVwKHN0cnVjdCBi Y21hc3BfaW50ZiAqaW50ZiwKKwkJCSAgICAgc3RydWN0IGV0aHRvb2xfcnhfZmxvd19zcGVjICpm cykKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwlzdHJ1 Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMgKmN1cjsKKwlzaXplX3QgZnNfc2l6ZSA9M0QgMDsKKwlp bnQgaTsKKworCWZvciAoaSA9M0QgMDsgaSA8IE5VTV9ORVRfRklMVEVSUzsgaSsrKSB7CisJCWlm ICghcHJpdi0+bmV0X2ZpbHRlcnNbaV0uY2xhaW1lZCB8fAorCQkgICAgcHJpdi0+bmV0X2ZpbHRl cnNbaV0ucG9ydCAhPTNEIGludGYtPnBvcnQpCisJCQljb250aW51ZTsKKworCQljdXIgPTNEICZw cml2LT5uZXRfZmlsdGVyc1tpXS5mczsKKworCQlpZiAoY3VyLT5mbG93X3R5cGUgIT0zRCBmcy0+ Zmxvd190eXBlIHx8CisJCSAgICBjdXItPnJpbmdfY29va2llICE9M0QgZnMtPnJpbmdfY29va2ll KQorCQkJY29udGludWU7CisKKwkJc3dpdGNoIChmcy0+Zmxvd190eXBlICYgfihGTE9XX0VYVCB8 IEZMT1dfTUFDX0VYVCkpIHsKKwkJY2FzZSBFVEhFUl9GTE9XOgorCQkJZnNfc2l6ZSA9M0Qgc2l6 ZW9mKHN0cnVjdCBldGhoZHIpOworCQkJYnJlYWs7CisJCWNhc2UgSVBfVVNFUl9GTE9XOgorCQkJ ZnNfc2l6ZSA9M0Qgc2l6ZW9mKHN0cnVjdCBldGh0b29sX3VzcmlwNF9zcGVjKTsKKwkJCWJyZWFr OworCQljYXNlIFRDUF9WNl9GTE9XOgorCQljYXNlIFVEUF9WNl9GTE9XOgorCQkJZnNfc2l6ZSA9 M0Qgc2l6ZW9mKHN0cnVjdCBldGh0b29sX3RjcGlwNl9zcGVjKTsKKwkJCWJyZWFrOworCQljYXNl IFRDUF9WNF9GTE9XOgorCQljYXNlIFVEUF9WNF9GTE9XOgorCQkJZnNfc2l6ZSA9M0Qgc2l6ZW9m KHN0cnVjdCBldGh0b29sX3RjcGlwNF9zcGVjKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ Y29udGludWU7CisJCX0KKworCQlpZiAobWVtY21wKCZjdXItPmhfdSwgJmZzLT5oX3UsIGZzX3Np emUpIHx8CisJCSAgICBtZW1jbXAoJmN1ci0+bV91LCAmZnMtPm1fdSwgZnNfc2l6ZSkpCisJCQlj b250aW51ZTsKKworCQlpZiAoY3VyLT5mbG93X3R5cGUgJiBGTE9XX0VYVCkgeworCQkJaWYgKGN1 ci0+aF9leHQudmxhbl9ldHlwZSAhPTNEIGZzLT5oX2V4dC52bGFuX2V0eXBlIHx8CisJCQkgICAg Y3VyLT5tX2V4dC52bGFuX2V0eXBlICE9M0QgZnMtPm1fZXh0LnZsYW5fZXR5cGUgfHwKKwkJCSAg ICBjdXItPmhfZXh0LnZsYW5fdGNpICE9M0QgZnMtPmhfZXh0LnZsYW5fdGNpIHx8CisJCQkgICAg Y3VyLT5tX2V4dC52bGFuX3RjaSAhPTNEIGZzLT5tX2V4dC52bGFuX3RjaSB8fAorCQkJICAgIGN1 ci0+aF9leHQuZGF0YVswXSAhPTNEIGZzLT5oX2V4dC5kYXRhWzBdKQorCQkJCWNvbnRpbnVlOwor CQl9CisJCWlmIChjdXItPmZsb3dfdHlwZSAmIEZMT1dfTUFDX0VYVCkgeworCQkJaWYgKG1lbWNt cCgmY3VyLT5oX2V4dC5oX2Rlc3QsCisJCQkJICAgJmZzLT5oX2V4dC5oX2Rlc3QsIEVUSF9BTEVO KSB8fAorCQkJICAgIG1lbWNtcCgmY3VyLT5tX2V4dC5oX2Rlc3QsCisJCQkJICAgJmZzLT5tX2V4 dC5oX2Rlc3QsIEVUSF9BTEVOKSkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCXJldHVybiAxOwor CX0KKworCXJldHVybiAwOworfQorCisvKiBJZiBubyBuZXR3b3JrIGZpbHRlciBmb3VuZCwgcmV0 dXJuIG9wZW4gZmlsdGVyLgorICogSWYgbm8gbW9yZSBvcGVuIGZpbHRlcnMgcmV0dXJuIE5VTEwK KyAqLworc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpiY21hc3BfbmV0ZmlsdF9nZXRfaW5pdChz dHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsCisJCQkJCQkgIGludCBsb2MsIGJvb2wgd2FrZV9maWx0 ZXIsCisJCQkJCQkgIGJvb2wgaW5pdCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5m aWx0ZXIgPTNEIE5VTEw7CisJc3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJl bnQ7CisJaW50IGksIG9wZW5faW5kZXggPTNEIC0xOworCisJLyogQ2hlY2sgd2hldGhlciB3ZSBl eGNlZWQgdGhlIGZpbHRlciB0YWJsZSBjYXBhY2l0eSAqLworCWlmIChsb2MgIT0zRCBSWF9DTFNf TE9DX0FOWSAmJiBsb2MgPj0zRCBOVU1fTkVUX0ZJTFRFUlMpCisJCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOworCisJLyogSWYgdGhlIGZpbHRlciBsb2NhdGlvbiBpcyBidXN5IChhbHJlYWR5IGNs YWltZWQpIGFuZCB3ZSBhcmUgaW5pdGlhbGl6aT0KbmcKKwkgKiB0aGUgZmlsdGVyIChpbnNlcnRp b24pLCByZXR1cm4gYSBidXN5IGVycm9yIGNvZGUuCisJICovCisJaWYgKGxvYyAhPTNEIFJYX0NM U19MT0NfQU5ZICYmIGluaXQgJiYgcHJpdi0+bmV0X2ZpbHRlcnNbbG9jXS5jbGFpbWVkKQorCQly ZXR1cm4gRVJSX1BUUigtRUJVU1kpOworCisJLyogV2UgbmVlZCB0d28gZmlsdGVycyBmb3Igd2Fr ZS11cCwgc28gd2UgY2Fubm90IHVzZSBhbiBvZGQgZmlsdGVyICovCisJaWYgKHdha2VfZmlsdGVy ICYmIGxvYyAhPTNEIFJYX0NMU19MT0NfQU5ZICYmIChsb2MgJSAyKSkKKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7CisKKwkvKiBJbml0aWFsaXplIHRoZSBsb29wIGluZGV4IGJhc2VkIG9uIHRo ZSBkZXNpcmVkIGxvY2F0aW9uIG9yIGZyb20gMCAqLworCWkgPTNEIGxvYyA9M0Q9M0QgUlhfQ0xT X0xPQ19BTlkgPyAwIDogbG9jOworCisJZm9yICggOyBpIDwgTlVNX05FVF9GSUxURVJTOyBpKysp IHsKKwkJLyogRm91bmQgbWF0Y2hpbmcgbmV0d29yayBmaWx0ZXIgKi8KKwkJaWYgKCFpbml0ICYm CisJCSAgICBwcml2LT5uZXRfZmlsdGVyc1tpXS5jbGFpbWVkICYmCisJCSAgICBwcml2LT5uZXRf ZmlsdGVyc1tpXS5od19pbmRleCA9M0Q9M0QgaSAmJgorCQkgICAgcHJpdi0+bmV0X2ZpbHRlcnNb aV0ucG9ydCA9M0Q9M0QgaW50Zi0+cG9ydCkKKwkJCXJldHVybiAmcHJpdi0+bmV0X2ZpbHRlcnNb aV07CisKKwkJLyogSWYgd2UgZG9uJ3QgbmVlZCBhIG5ldyBmaWx0ZXIgb3IgbmV3IGZpbHRlciBh bHJlYWR5IGZvdW5kICovCisJCWlmICghaW5pdCB8fCBvcGVuX2luZGV4ID49M0QgMCkKKwkJCWNv bnRpbnVlOworCisJCS8qIFdha2UgZmlsdGVyIGNvbnNsaWRhdGVzIHR3byBmaWx0ZXJzIHRvIGNv dmVyIG1vcmUgYnl0ZXMKKwkJICogV2FrZSBmaWx0ZXIgaXMgb3BlbiBpZi4uLgorCQkgKiAxLiBJ dCBpcyBhbiBldmVuIGZpbHRlcgorCQkgKiAyLiBUaGUgY3VycmVudCBhbmQgbmV4dCBmaWx0ZXIg aXMgbm90IGNsYWltZWQKKwkJICovCisJCWlmICh3YWtlX2ZpbHRlciAmJiAhKGkgJSAyKSAmJiAh cHJpdi0+bmV0X2ZpbHRlcnNbaV0uY2xhaW1lZCAmJgorCQkgICAgIXByaXYtPm5ldF9maWx0ZXJz W2kgKyAxXS5jbGFpbWVkKQorCQkJb3Blbl9pbmRleCA9M0QgaTsKKwkJZWxzZSBpZiAoIXByaXYt Pm5ldF9maWx0ZXJzW2ldLmNsYWltZWQpCisJCQlvcGVuX2luZGV4ID0zRCBpOworCX0KKworCWlm IChvcGVuX2luZGV4ID49M0QgMCkgeworCQluZmlsdGVyID0zRCAmcHJpdi0+bmV0X2ZpbHRlcnNb b3Blbl9pbmRleF07CisJCW5maWx0ZXItPmNsYWltZWQgPTNEIHRydWU7CisJCW5maWx0ZXItPnBv cnQgPTNEIGludGYtPnBvcnQ7CisJCW5maWx0ZXItPmh3X2luZGV4ID0zRCBvcGVuX2luZGV4Owor CX0KKworCWlmICh3YWtlX2ZpbHRlciAmJiBvcGVuX2luZGV4ID49M0QgMCkgeworCQkvKiBDbGFp bSBuZXh0IGZpbHRlciAqLworCQlwcml2LT5uZXRfZmlsdGVyc1tvcGVuX2luZGV4ICsgMV0uY2xh aW1lZCA9M0QgdHJ1ZTsKKwkJcHJpdi0+bmV0X2ZpbHRlcnNbb3Blbl9pbmRleCArIDFdLndha2Vf ZmlsdGVyID0zRCB0cnVlOworCQluZmlsdGVyLT53YWtlX2ZpbHRlciA9M0QgdHJ1ZTsKKwl9CisK KwlyZXR1cm4gbmZpbHRlciA/IG5maWx0ZXIgOiBFUlJfUFRSKC1FSU5WQUwpOworfQorCit2b2lk IGJjbWFzcF9uZXRmaWx0X3JlbGVhc2Uoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLAorCQkJICAg IHN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlciAqbmZpbHQpCit7CisJc3RydWN0IGJjbWFzcF9wcml2 ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisKKwlpZiAobmZpbHQtPndha2VfZmlsdGVyKSB7CisJ CW1lbXNldCgmcHJpdi0+bmV0X2ZpbHRlcnNbbmZpbHQtPmh3X2luZGV4ICsgMV0sIDAsCisJCSAg ICAgICBzaXplb2Yoc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyKSk7CisJfQorCisJbWVtc2V0KG5m aWx0LCAwLCBzaXplb2Yoc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyKSk7Cit9CisKK3N0YXRpYyB2 b2lkIGJjbWFzcF9hZGRyX3RvX3VpbnQodW5zaWduZWQgY2hhciAqYWRkciwgdTMyICpoaWdoLCB1 MzIgKmxvdykKK3sKKwkqaGlnaCA9M0QgKHUzMikoYWRkclswXSA8PCA4IHwgYWRkclsxXSk7CisJ KmxvdyA9M0QgKHUzMikoYWRkclsyXSA8PCAyNCB8IGFkZHJbM10gPDwgMTYgfCBhZGRyWzRdIDw8 IDggfAorCQkgICAgIGFkZHJbNV0pOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc2V0X21kYV9m aWx0ZXIoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLAorCQkJCSAgY29uc3QgdW5zaWduZWQgY2hh ciAqYWRkciwKKwkJCQkgIHVuc2lnbmVkIGNoYXIgKm1hc2ssCisJCQkJICB1bnNpZ25lZCBpbnQg aSkKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwl1MzIg YWRkcl9oLCBhZGRyX2wsIG1hc2tfaCwgbWFza19sOworCisJLyogU2V0IGxvY2FsIGNvcHkgKi8K KwlldGhlcl9hZGRyX2NvcHkocHJpdi0+bWRhX2ZpbHRlcnNbaV0ubWFzaywgbWFzayk7CisJZXRo ZXJfYWRkcl9jb3B5KHByaXYtPm1kYV9maWx0ZXJzW2ldLmFkZHIsIGFkZHIpOworCisJLyogV3Jp dGUgdG8gSFcgKi8KKwliY21hc3BfYWRkcl90b191aW50KHByaXYtPm1kYV9maWx0ZXJzW2ldLm1h c2ssICZtYXNrX2gsICZtYXNrX2wpOworCWJjbWFzcF9hZGRyX3RvX3VpbnQocHJpdi0+bWRhX2Zp bHRlcnNbaV0uYWRkciwgJmFkZHJfaCwgJmFkZHJfbCk7CisJcnhfZmlsdGVyX2NvcmVfd2wocHJp diwgYWRkcl9oLCBBU1BfUlhfRklMVEVSX01EQV9QQVRfSChpKSk7CisJcnhfZmlsdGVyX2NvcmVf d2wocHJpdiwgYWRkcl9sLCBBU1BfUlhfRklMVEVSX01EQV9QQVRfTChpKSk7CisJcnhfZmlsdGVy X2NvcmVfd2wocHJpdiwgbWFza19oLCBBU1BfUlhfRklMVEVSX01EQV9NU0tfSChpKSk7CisJcnhf ZmlsdGVyX2NvcmVfd2wocHJpdiwgbWFza19sLCBBU1BfUlhfRklMVEVSX01EQV9NU0tfTChpKSk7 Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9lbl9tZGFfZmlsdGVyKHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZiwgYm9vbCBlbiwKKwkJCQkgdW5zaWduZWQgaW50IGkpCit7CisJc3RydWN0IGJjbWFz cF9wcml2ICpwcml2ID0zRCBpbnRmLT5wYXJlbnQ7CisKKwlpZiAocHJpdi0+bWRhX2ZpbHRlcnNb aV0uZW4gPTNEPTNEIGVuKQorCQlyZXR1cm47CisKKwlwcml2LT5tZGFfZmlsdGVyc1tpXS5lbiA9 M0QgZW47CisJcHJpdi0+bWRhX2ZpbHRlcnNbaV0ucG9ydCA9M0QgaW50Zi0+cG9ydDsKKworCXJ4 X2ZpbHRlcl9jb3JlX3dsKHByaXYsICgoaW50Zi0+Y2hhbm5lbCArIDgpIHwKKwkJCSAgKGVuIDw8 IEFTUF9SWF9GSUxURVJfTURBX0NGR19FTl9TSElGVCkgfAorCQkJICBBU1BfUlhfRklMVEVSX01E QV9DRkdfVU1DX1NFTChpbnRmLT5wb3J0KSksCisJCQkgIEFTUF9SWF9GSUxURVJfTURBX0NGRyhp KSk7Cit9CisKKy8qIFRoZXJlIGFyZSAzMiBNREEgZmlsdGVycyBzaGFyZWQgYmV0d2VlbiBhbGwg cG9ydHMsIHdlIHJlc2VydmUgNCBmaWx0ZXJzPQogcGVyCisgKiBwb3J0IGZvciB0aGUgZm9sbG93 aW5nLgorICogLSBQcm9taXNjOiBGaWx0ZXIgdG8gYWxsb3cgYWxsIHBhY2tldHMgd2hlbiBwcm9t aXNjIGlzIGVuYWJsZWQKKyAqIC0gQWxsIE11bHRpY2FzdAorICogLSBCcm9hZGNhc3QKKyAqIC0g T3duIGFkZHJlc3MKKyAqCisgKiBUaGUgcmVzZXJ2ZWQgZmlsdGVycyBhcmUgaWRlbnRpZmllZCBh cyBzby4KKyAqIC0gUHJvbWlzYzogKFBvcnQgKiA0KSArIDAKKyAqIC0gQWxsIE11bHRpY2FzdDog KFBvcnQgKiA0KSArIDEKKyAqIC0gQnJvYWRjYXN0OiAoUG9ydCAqIDQpICsgMgorICogLSBPd24g YWRkcmVzczogKFBvcnQgKiA0KSArIDMKKyAqLworZW51bSBhc3BfcnhfZmlsdGVyX2lkIHsKKwlB U1BfUlhfRklMVEVSX01EQV9QUk9NSVNDID0zRCAwLAorCUFTUF9SWF9GSUxURVJfTURBX0FMTE1V TFRJLAorCUFTUF9SWF9GSUxURVJfTURBX0JST0FEQ0FTVCwKKwlBU1BfUlhfRklMVEVSX01EQV9P V05fQUREUiwKKwlBU1BfUlhfRklMVEVSX01EQV9SRVNfQ09VTlQsCit9OworCisjZGVmaW5lIEFT UF9SWF9GSUxUX01EQV9SRVNfQ09VTlQoaW50ZikJKChpbnRmKS0+cGFyZW50LT5pbnRmX2NvdW50 IFwKKwkJCQkJICogQVNQX1JYX0ZJTFRFUl9NREFfUkVTX0NPVU5UKQorCisjZGVmaW5lIEFTUF9S WF9GSUxUX01EQShpbnRmLCBuYW1lKQkoKChpbnRmKS0+cG9ydCAqIFwKKwkJCQkJICBBU1BfUlhf RklMVEVSX01EQV9SRVNfQ09VTlQpIFwKKwkJCQkJICsgQVNQX1JYX0ZJTFRFUl9NREFfIyNuYW1l KQorCit2b2lkIGJjbWFzcF9zZXRfcHJvbWlzYyhzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJv b2wgZW4pCit7CisJdW5zaWduZWQgaW50IGkgPTNEIEFTUF9SWF9GSUxUX01EQShpbnRmLCBQUk9N SVNDKTsKKwl1bnNpZ25lZCBjaGFyIHByb21pc2NbRVRIX0FMRU5dOworCisJZXRoX3plcm9fYWRk cihwcm9taXNjKTsKKwkvKiBTZXQgbWFzayB0byAwMDowMDowMDowMDowMDowMCB0byBtYXRjaCBh bGwgcGFja2V0cyAqLworCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBwcm9taXNjLCBwcm9t aXNjLCBpKTsKKwliY21hc3BfZW5fbWRhX2ZpbHRlcihpbnRmLCBlbiwgaSk7Cit9CisKK3ZvaWQg YmNtYXNwX3NldF9hbGxtdWx0aShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgZW4pCit7 CisJdW5zaWduZWQgY2hhciBhbGxtdWx0aVtdID0zRCB7MHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMH07CisJdW5zaWduZWQgaW50IGkgPTNEIEFTUF9SWF9GSUxUX01EQShpbnRmLCBB TExNVUxUSSk7CisKKwkvKiBTZXQgbWFzayB0byAwMTowMDowMDowMDowMDowMCB0byBtYXRjaCBh bGwgbXVsdGljYXN0ICovCisJYmNtYXNwX3NldF9tZGFfZmlsdGVyKGludGYsIGFsbG11bHRpLCBh bGxtdWx0aSwgaSk7CisJYmNtYXNwX2VuX21kYV9maWx0ZXIoaW50ZiwgZW4sIGkpOworfQorCit2 b2lkIGJjbWFzcF9zZXRfYnJvYWQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKQor eworCXVuc2lnbmVkIGludCBpID0zRCBBU1BfUlhfRklMVF9NREEoaW50ZiwgQlJPQURDQVNUKTsK Kwl1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dOworCisJZXRoX2Jyb2FkY2FzdF9hZGRyKGFk ZHIpOworCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBhZGRyLCBhZGRyLCBpKTsKKwliY21h c3BfZW5fbWRhX2ZpbHRlcihpbnRmLCBlbiwgaSk7Cit9CisKK3ZvaWQgYmNtYXNwX3NldF9vYWRk cihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsCisJ CSAgICAgIGJvb2wgZW4pCit7CisJdW5zaWduZWQgY2hhciBtYXNrW10gPTNEIHsweGZmLCAweGZm LCAweGZmLCAweGZmLCAweGZmLCAweGZmfTsKKwl1bnNpZ25lZCBpbnQgaSA9M0QgQVNQX1JYX0ZJ TFRfTURBKGludGYsIE9XTl9BRERSKTsKKworCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBh ZGRyLCBtYXNrLCBpKTsKKwliY21hc3BfZW5fbWRhX2ZpbHRlcihpbnRmLCBlbiwgaSk7Cit9CisK K3ZvaWQgYmNtYXNwX2Rpc2FibGVfYWxsX2ZpbHRlcnMoc3RydWN0IGJjbWFzcF9pbnRmICppbnRm KQoreworCXN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgaW50Zi0+cGFyZW50OworCXVuc2ln bmVkIGludCBpOworCisJLyogRGlzYWJsZSBhbGwgZmlsdGVycyBoZWxkIGJ5IHRoaXMgcG9ydCAq LworCWZvciAoaSA9M0QgQVNQX1JYX0ZJTFRfTURBX1JFU19DT1VOVChpbnRmKTsgaSA8IE5VTV9N REFfRklMVEVSUzsgaSsrKSB7CisJCWlmIChwcml2LT5tZGFfZmlsdGVyc1tpXS5lbiAmJgorCQkg ICAgcHJpdi0+bWRhX2ZpbHRlcnNbaV0ucG9ydCA9M0Q9M0QgaW50Zi0+cG9ydCkKKwkJCWJjbWFz cF9lbl9tZGFfZmlsdGVyKGludGYsIDAsIGkpOworCX0KK30KKworc3RhdGljIGludCBiY21hc3Bf Y29tYmluZV9zZXRfZmlsdGVyKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCQkgICAgIHVu c2lnbmVkIGNoYXIgKmFkZHIsIHVuc2lnbmVkIGNoYXIgKm1hc2ssCisJCQkJICAgICBpbnQgaSkK K3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwl1NjQgYWRk cjEsIGFkZHIyLCBtYXNrMSwgbWFzazIsIG1hc2szOworCisJLyogU3dpdGNoIHRvIHU2NCB0byBo ZWxwIHdpdGggdGhlIGNhbGN1bGF0aW9ucyAqLworCWFkZHIxID0zRCBldGhlcl9hZGRyX3RvX3U2 NChwcml2LT5tZGFfZmlsdGVyc1tpXS5hZGRyKTsKKwltYXNrMSA9M0QgZXRoZXJfYWRkcl90b191 NjQocHJpdi0+bWRhX2ZpbHRlcnNbaV0ubWFzayk7CisJYWRkcjIgPTNEIGV0aGVyX2FkZHJfdG9f dTY0KGFkZHIpOworCW1hc2syID0zRCBldGhlcl9hZGRyX3RvX3U2NChtYXNrKTsKKworCS8qIENo ZWNrIGlmIG9uZSBmaWx0ZXIgcmVzaWRlcyB3aXRoaW4gdGhlIG90aGVyICovCisJbWFzazMgPTNE IG1hc2sxICYgbWFzazI7CisJaWYgKG1hc2szID0zRD0zRCBtYXNrMSAmJiAoKGFkZHIxICYgbWFz azEpID0zRD0zRCAoYWRkcjIgJiBtYXNrMSkpKSB7CisJCS8qIEZpbHRlciAyIHJlc2lkZXMgd2l0 aGluIGZpbHRlciAxLCBzbyBldmVyeXRoaW5nIGlzIGdvb2QgKi8KKwkJcmV0dXJuIDA7CisJfSBl bHNlIGlmIChtYXNrMyA9M0Q9M0QgbWFzazIgJiYgKChhZGRyMSAmIG1hc2syKSA9M0Q9M0QgKGFk ZHIyICYgbWFzazIpKT0KKSB7CisJCS8qIEZpbHRlciAxIHJlc2lkZXMgd2l0aGluIGZpbHRlciAy LCBzbyBzd2FwIGZpbHRlcnMgKi8KKwkJYmNtYXNwX3NldF9tZGFfZmlsdGVyKGludGYsIGFkZHIs IG1hc2ssIGkpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBVbmFibGUgdG8gY29tYmluZSAqLwor CXJldHVybiAtRUlOVkFMOworfQorCitpbnQgYmNtYXNwX3NldF9lbl9tZGFfZmlsdGVyKHN0cnVj dCBiY21hc3BfaW50ZiAqaW50ZiwgdW5zaWduZWQgY2hhciAqYWRkciwKKwkJCSAgICAgdW5zaWdu ZWQgY2hhciAqbWFzaykKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBh cmVudDsKKwlpbnQgaSwgcmV0OworCisJZm9yIChpID0zRCBBU1BfUlhfRklMVF9NREFfUkVTX0NP VU5UKGludGYpOyBpIDwgTlVNX01EQV9GSUxURVJTOyBpKyspIHsKKwkJLyogSWYgZmlsdGVyIG5v dCBlbmFibGVkIG9yIGJlbG9uZ3MgdG8gYW5vdGhlciBwb3J0IHNraXAgKi8KKwkJaWYgKCFwcml2 LT5tZGFfZmlsdGVyc1tpXS5lbiB8fAorCQkgICAgcHJpdi0+bWRhX2ZpbHRlcnNbaV0ucG9ydCAh PTNEIGludGYtPnBvcnQpCisJCQljb250aW51ZTsKKworCQkvKiBBdHRlbXB0IHRvIGNvbWJpbmUg ZmlsdGVycyAqLworCQlyZXQgPTNEIGJjbWFzcF9jb21iaW5lX3NldF9maWx0ZXIoaW50ZiwgYWRk ciwgbWFzaywgaSk7CisJCWlmICghcmV0KSB7CisJCQlpbnRmLT5taWIuZmlsdGVyc19jb21iaW5l X2NudCsrOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKiBDcmVhdGUgbmV3IGZpbHRlciBp ZiBwb3NzaWJsZSAqLworCWZvciAoaSA9M0QgQVNQX1JYX0ZJTFRfTURBX1JFU19DT1VOVChpbnRm KTsgaSA8IE5VTV9NREFfRklMVEVSUzsgaSsrKSB7CisJCWlmIChwcml2LT5tZGFfZmlsdGVyc1tp XS5lbikKKwkJCWNvbnRpbnVlOworCisJCWJjbWFzcF9zZXRfbWRhX2ZpbHRlcihpbnRmLCBhZGRy LCBtYXNrLCBpKTsKKwkJYmNtYXNwX2VuX21kYV9maWx0ZXIoaW50ZiwgMSwgaSk7CisJCXJldHVy biAwOworCX0KKworCS8qIE5vIHJvb20gZm9yIG5ldyBmaWx0ZXIgKi8KKwlyZXR1cm4gLUVJTlZB TDsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2NvcmVfaW5pdF9maWx0ZXJzKHN0cnVjdCBiY21h c3BfcHJpdiAqcHJpdikKK3sKKwlpbnQgaTsKKworCS8qIERpc2FibGUgYWxsIGZpbHRlcnMgYW5k IHJlc2V0IHNvZnR3YXJlIHZpZXcgc2luY2UgdGhlIEhXCisJICogY2FuIGxvc2UgY29udGV4dCB3 aGlsZSBpbiBkZWVwIHNsZWVwIHN1c3BlbmQgc3RhdGVzCisJICovCisJZm9yIChpID0zRCAwOyBp IDwgTlVNX01EQV9GSUxURVJTOyBpKyspIHsKKwkJcnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgMHgw LCBBU1BfUlhfRklMVEVSX01EQV9DRkcoaSkpOworCQlwcml2LT5tZGFfZmlsdGVyc1tpXS5lbiA9 M0QgMDsKKwl9CisKKwlmb3IgKGkgPTNEIDA7IGkgPCBOVU1fTkVUX0ZJTFRFUlM7IGkrKykKKwkJ cnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgMHgwLCBBU1BfUlhfRklMVEVSX05FVF9DRkcoaSkpOwor CisJLyogVG9wIGxldmVsIGZpbHRlciBlbmFibGUgYml0IHNob3VsZCBiZSBlbmFibGVkIGF0IGFs bCB0aW1lcywgc2V0CisJICogR0VOX1dBS0VfQ0xFQVIgdG8gY2xlYXIgdGhlIG5ldHdvcmsgZmls dGVyIHdha2UtdXAgd2hpY2ggd291bGQKKwkgKiBvdGhlcndpc2UgYmUgc3RpY2t5CisJICovCisJ cnhfZmlsdGVyX2NvcmVfd2wocHJpdiwgKEFTUF9SWF9GSUxURVJfT1BVVF9FTiB8CisJCQkgIEFT UF9SWF9GSUxURVJfTURBX0VOIHwKKwkJCSAgQVNQX1JYX0ZJTFRFUl9HRU5fV0tfQ0xSIHwKKwkJ CSAgQVNQX1JYX0ZJTFRFUl9OVF9GTFRfRU4pLAorCQkJICBBU1BfUlhfRklMVEVSX0JMS19DVFJM KTsKK30KKworLyogQVNQIGNvcmUgaW5pdGlhbGl6YXRpb24gKi8KK3N0YXRpYyB2b2lkIGJjbWFz cF9jb3JlX2luaXQoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KQoreworCXR4X2FuYWx5dGljc19j b3JlX3dsKHByaXYsIDB4MCwgQVNQX1RYX0FOQUxZVElDU19DVFJMKTsKKwlyeF9hbmFseXRpY3Nf Y29yZV93bChwcml2LCAweDQsIEFTUF9SWF9BTkFMWVRJQ1NfQ1RSTCk7CisKKwlyeF9lZHBrdF9j b3JlX3dsKHByaXYsIChBU1BfRURQS1RfSERSX1NaXzEyOCA8PCBBU1BfRURQS1RfSERSX1NaX1NI SUZUKSwKKwkJCSBBU1BfRURQS1RfSERSX0NGRyk7CisJcnhfZWRwa3RfY29yZV93bChwcml2LAor CQkJIChBU1BfRURQS1RfRU5ESV9CVF9TV1BfV0QgPDwgQVNQX0VEUEtUX0VORElfREVTQ19TSElG VCksCisJCQkgQVNQX0VEUEtUX0VOREkpOworCisJcnhfZWRwa3RfY29yZV93bChwcml2LCAweDFi LCBBU1BfRURQS1RfQlVSU1RfQlVGX1BTQ0FMX1RPVVQpOworCXJ4X2VkcGt0X2NvcmVfd2wocHJp diwgMHgzZTgsIEFTUF9FRFBLVF9CVVJTVF9CVUZfV1JJVEVfVE9VVCk7CisJcnhfZWRwa3RfY29y ZV93bChwcml2LCAweDNlOCwgQVNQX0VEUEtUX0JVUlNUX0JVRl9SRUFEX1RPVVQpOworCisJcnhf ZWRwa3RfY29yZV93bChwcml2LCBBU1BfRURQS1RfRU5BQkxFX0VOLCBBU1BfRURQS1RfRU5BQkxF KTsKKworCS8qIERpc2FibGUgYW5kIGNsZWFyIGJvdGggVW5pTUFDJ3Mgd2FrZS11cCBpbnRlcnJ1 cHRzIHRvIGF2b2lkCisJICogc3RpY2t5IGludGVycnVwdHMuCisJICovCisJX2ludHIyX21hc2tf c2V0KHByaXYsIEFTUF9JTlRSMl9VTUMwX1dBS0UgfCBBU1BfSU5UUjJfVU1DMV9XQUtFKTsKKwlp bnRyMl9jb3JlX3dsKHByaXYsIEFTUF9JTlRSMl9VTUMwX1dBS0UgfCBBU1BfSU5UUjJfVU1DMV9X QUtFLAorCQkgICAgICBBU1BfSU5UUjJfQ0xFQVIpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bf Y29yZV9jbG9ja19zZWxlY3Qoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LCBib29sIHNsb3cpCit7 CisJdTMyIHJlZzsKKworCXJlZyA9M0QgY3RybF9jb3JlX3JsKHByaXYsIEFTUF9DVFJMX0NPUkVf Q0xPQ0tfU0VMRUNUKTsKKwlpZiAoc2xvdykKKwkJcmVnICY9M0QgfkFTUF9DVFJMX0NPUkVfQ0xP Q0tfU0VMRUNUX01BSU47CisJZWxzZQorCQlyZWcgfD0zRCBBU1BfQ1RSTF9DT1JFX0NMT0NLX1NF TEVDVF9NQUlOOworCWN0cmxfY29yZV93bChwcml2LCByZWcsIEFTUF9DVFJMX0NPUkVfQ0xPQ0tf U0VMRUNUKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2NvcmVfY2xvY2tfc2V0X2xsKHN0cnVj dCBiY21hc3BfcHJpdiAqcHJpdiwgdTMyIGNsciwgdTM9CjIgc2V0KQoreworCXUzMiByZWc7CisK KwlyZWcgPTNEIGN0cmxfY29yZV9ybChwcml2LCBBU1BfQ1RSTF9DTE9DS19DVFJMKTsKKwlyZWcg Jj0zRCB+Y2xyOworCXJlZyB8PTNEIHNldDsKKwljdHJsX2NvcmVfd2wocHJpdiwgcmVnLCBBU1Bf Q1RSTF9DTE9DS19DVFJMKTsKKworCXJlZyA9M0QgY3RybF9jb3JlX3JsKHByaXYsIEFTUF9DVFJM X1NDUkFUQ0hfMCk7CisJcmVnICY9M0QgfmNscjsKKwlyZWcgfD0zRCBzZXQ7CisJY3RybF9jb3Jl X3dsKHByaXYsIHJlZywgQVNQX0NUUkxfU0NSQVRDSF8wKTsKK30KKworc3RhdGljIHZvaWQgYmNt YXNwX2NvcmVfY2xvY2tfc2V0KHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiwgdTMyIGNsciwgdTMy IHM9CmV0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgm cHJpdi0+Y2xrX2xvY2ssIGZsYWdzKTsKKwliY21hc3BfY29yZV9jbG9ja19zZXRfbGwocHJpdiwg Y2xyLCBzZXQpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmNsa19sb2NrLCBmbGFn cyk7Cit9CisKK3ZvaWQgYmNtYXNwX2NvcmVfY2xvY2tfc2V0X2ludGYoc3RydWN0IGJjbWFzcF9p bnRmICppbnRmLCBib29sIGVuKQoreworCXUzMiBpbnRmX21hc2sgPTNEIEFTUF9DVFJMX0NMT0NL X0NUUkxfQVNQX1JHTUlJX0RJUyhpbnRmLT5wb3J0KTsKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnBy aXYgPTNEIGludGYtPnBhcmVudDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXUzMiByZWc7CisK KwkvKiBXaGVuIGVuYWJsaW5nIGFuIGludGVyZmFjZSwgaWYgdGhlIFJYIG9yIFRYIGNsb2NrcyB3 ZXJlIG5vdCBlbmFibGVkLAorCSAqIGVuYWJsZSB0aGVtLiBDb252ZXJzZWx5LCB3aGlsZSBkaXNh YmxpbmcgYW4gaW50ZXJmYWNlLCBpZiB0aGlzIGlzCisJICogdGhlIGxhc3Qgb25lIGVuYWJsZWQs IHdlIGNhbiB0dXJuIG9mZiB0aGUgc2hhcmVkIFJYIGFuZCBUWCBjbG9ja3MgYXMKKwkgKiB3ZWxs LiBXZSBjb250cm9sIGVuYWJsZSBiaXRzIHdoaWNoIGlzIHdoeSB3ZSB0ZXN0IGZvciBlcXVhbGl0 eSBvbgorCSAqIHRoZSBSR01JSSBjbG9jayBiaXQgbWFzay4KKwkgKi8KKwlzcGluX2xvY2tfaXJx c2F2ZSgmcHJpdi0+Y2xrX2xvY2ssIGZsYWdzKTsKKwlpZiAoZW4pIHsKKwkJaW50Zl9tYXNrIHw9 M0QgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfVFhfRElTQUJMRSB8CisJCQkgICAgIEFTUF9DVFJM X0NMT0NLX0NUUkxfQVNQX1JYX0RJU0FCTEU7CisJCWJjbWFzcF9jb3JlX2Nsb2NrX3NldF9sbChw cml2LCBpbnRmX21hc2ssIDApOworCX0gZWxzZSB7CisJCXJlZyA9M0QgY3RybF9jb3JlX3JsKHBy aXYsIEFTUF9DVFJMX1NDUkFUQ0hfMCkgfCBpbnRmX21hc2s7CisJCWlmICgocmVnICYgQVNQX0NU UkxfQ0xPQ0tfQ1RSTF9BU1BfUkdNSUlfTUFTSykgPTNEPTNECisJCSAgICBBU1BfQ1RSTF9DTE9D S19DVFJMX0FTUF9SR01JSV9NQVNLKQorCQkJaW50Zl9tYXNrIHw9M0QgQVNQX0NUUkxfQ0xPQ0tf Q1RSTF9BU1BfVFhfRElTQUJMRSB8CisJCQkJICAgICBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9S WF9ESVNBQkxFOworCQliY21hc3BfY29yZV9jbG9ja19zZXRfbGwocHJpdiwgMCwgaW50Zl9tYXNr KTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+Y2xrX2xvY2ssIGZsYWdzKTsK K30KKworc3RhdGljIGludCBiY21hc3BfaXNfcG9ydF92YWxpZChzdHJ1Y3QgYmNtYXNwX3ByaXYg KnByaXYsIGludCBwb3J0KQoreworCS8qIFF1aWNrIHNhbml0eSBjaGVjaworCSAqICAgUG9ydHMg MC8xIHJlc2VydmVkIGZvciB1bmltYWMKKwkgKiAgIE1heCBzdXBwb3J0ZWQgcG9ydHMgaXMgMgor CSAqLworCXJldHVybiAocG9ydCA9M0Q9M0QgMCB8fCBwb3J0ID0zRD0zRCAxKTsKK30KKworc3Rh dGljIGlycXJldHVybl90IGJjbWFzcF9pc3Jfd29sKGludCBpcnEsIHZvaWQgKmRhdGEpCit7CisJ c3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBkYXRhOworCXUzMiBzdGF0dXM7CisKKwkvKiBO byBMMyBJUlEsIHNvIHdlIGdvb2QgKi8KKwlpZiAocHJpdi0+d29sX2lycSA8PTNEIDApCisJCWdv dG8gaXJxX2hhbmRsZWQ7CisKKwlzdGF0dXMgPTNEIHdha2V1cF9pbnRyMl9jb3JlX3JsKHByaXYs IEFTUF9XQUtFVVBfSU5UUjJfU1RBVFVTKSAmCisJCX53YWtldXBfaW50cjJfY29yZV9ybChwcml2 LCBBU1BfV0FLRVVQX0lOVFIyX01BU0tfU1RBVFVTKTsKKwl3YWtldXBfaW50cjJfY29yZV93bChw cml2LCBzdGF0dXMsIEFTUF9XQUtFVVBfSU5UUjJfQ0xFQVIpOworCitpcnFfaGFuZGxlZDoKKwlw bV93YWtldXBfZXZlbnQoJnByaXYtPnBkZXYtPmRldiwgMCk7CisJcmV0dXJuIElSUV9IQU5ETEVE OworfQorCitzdGF0aWMgaW50IGJjbWFzcF9nZXRfYW5kX3JlcXVlc3RfaXJxKHN0cnVjdCBiY21h c3BfcHJpdiAqcHJpdiwgaW50IGkpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9 M0QgcHJpdi0+cGRldjsKKwlpbnQgaXJxLCByZXQ7CisKKwlpcnEgPTNEIHBsYXRmb3JtX2dldF9p cnFfb3B0aW9uYWwocGRldiwgaSk7CisJaWYgKGlycSA8IDApCisJCXJldHVybiBpcnE7CisKKwly ZXQgPTNEIGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgaXJxLCBiY21hc3BfaXNyX3dvbCwg MCwKKwkJCSAgICAgICBwZGV2LT5uYW1lLCBwcml2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJcmV0dXJuIGlycTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2luaXRfd29sX3NoYXJl ZChzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiA9M0QgcHJpdi0+cGRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPTNEICZwZGV2LT5kZXY7 CisJaW50IGlycTsKKworCWlycSA9M0QgYmNtYXNwX2dldF9hbmRfcmVxdWVzdF9pcnEocHJpdiwg MSk7CisJaWYgKGlycSA8IDApIHsKKwkJZGV2X3dhcm4oZGV2LCAiRmFpbGVkIHRvIGluaXQgV29M IGlycTogJWRcbiIsIGlycSk7CisJCXJldHVybjsKKwl9CisKKwlwcml2LT53b2xfaXJxID0zRCBp cnE7CisJcHJpdi0+d29sX2lycV9lbmFibGVkX21hc2sgPTNEIDA7CisJZGV2aWNlX3NldF93YWtl dXBfY2FwYWJsZSgmcGRldi0+ZGV2LCAxKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2VuYWJs ZV93b2xfc2hhcmVkKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbikKK3sKKwlzdHJ1 Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPTNEICZwcml2LT5wZGV2LT5kZXY7CisKKwlpZiAoZW4pIHsKKwkJaWYgKHByaXYtPndvbF9p cnFfZW5hYmxlZF9tYXNrKSB7CisJCQlzZXRfYml0KGludGYtPnBvcnQsICZwcml2LT53b2xfaXJx X2VuYWJsZWRfbWFzayk7CisJCQlyZXR1cm47CisJCX0KKworCQkvKiBGaXJzdCBlbmFibGUgKi8K KwkJc2V0X2JpdChpbnRmLT5wb3J0LCAmcHJpdi0+d29sX2lycV9lbmFibGVkX21hc2spOworCQll bmFibGVfaXJxX3dha2UocHJpdi0+d29sX2lycSk7CisJCWRldmljZV9zZXRfd2FrZXVwX2VuYWJs ZShkZXYsIDEpOworCX0gZWxzZSB7CisJCWNsZWFyX2JpdChpbnRmLT5wb3J0LCAmcHJpdi0+d29s X2lycV9lbmFibGVkX21hc2spOworCQlpZiAocHJpdi0+d29sX2lycV9lbmFibGVkX21hc2spCisJ CQlyZXR1cm47CisKKwkJLyogTGFzdCBkaXNhYmxlICovCisJCWRpc2FibGVfaXJxX3dha2UocHJp di0+d29sX2lycSk7CisJCWRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShkZXYsIDApOworCX0KK30K Kworc3RhdGljIHZvaWQgYmNtYXNwX3dvbF9pcnFfZGVzdHJveV9zaGFyZWQoc3RydWN0IGJjbWFz cF9wcml2ICpwcml2KQoreworCWlmIChwcml2LT53b2xfaXJxID4gMCkKKwkJZnJlZV9pcnEocHJp di0+d29sX2lycSwgcHJpdik7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9pbml0X3dvbF9wZXJf aW50ZihzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYpCit7CisJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiA9M0QgcHJpdi0+cGRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPTNEICZwZGV2LT5k ZXY7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmOworCWludCBpcnEsIGk7CisKKwlmb3IgKGkg PTNEIDA7IGkgPCBwcml2LT5pbnRmX2NvdW50OyBpKyspIHsKKwkJaW50ZiA9M0QgcHJpdi0+aW50 ZnNbaV07CisJCWlycSA9M0QgYmNtYXNwX2dldF9hbmRfcmVxdWVzdF9pcnEocHJpdiwgaW50Zi0+ cG9ydCArIDEpOworCQlpZiAoaXJxIDwgMCkgeworCQkJZGV2X3dhcm4oZGV2LCAiRmFpbGVkIHRv IGluaXQgV29MIGlycShwb3J0ICVkKTogJWRcbiIsCisJCQkJIGludGYtPnBvcnQsIGlycSk7CisJ CQljb250aW51ZTsKKwkJfQorCisJCWludGYtPndvbF9pcnEgPTNEIGlycTsKKwkJaW50Zi0+d29s X2lycV9lbmFibGVkID0zRCBmYWxzZTsKKwkJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZSgmcGRl di0+ZGV2LCAxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9lbmFibGVfd29sX3Blcl9p bnRmKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbikKK3sKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPTNEICZpbnRmLT5wYXJlbnQtPnBkZXYtPmRldjsKKworCWlmIChlbiBeIGludGYtPndv bF9pcnFfZW5hYmxlZCkKKwkJaXJxX3NldF9pcnFfd2FrZShpbnRmLT53b2xfaXJxLCBlbik7CisK KwlpbnRmLT53b2xfaXJxX2VuYWJsZWQgPTNEIGVuOworCWRldmljZV9zZXRfd2FrZXVwX2VuYWJs ZShkZXYsIGVuKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3dvbF9pcnFfZGVzdHJveV9wZXJf aW50ZihzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICpp bnRmOworCWludCBpOworCisJZm9yIChpID0zRCAwOyBpIDwgcHJpdi0+aW50Zl9jb3VudDsgaSsr KSB7CisJCWludGYgPTNEIHByaXYtPmludGZzW2ldOworCisJCWlmIChpbnRmLT53b2xfaXJxID4g MCkKKwkJCWZyZWVfaXJxKGludGYtPndvbF9pcnEsIHByaXYpOworCX0KK30KKworc3RhdGljIHN0 cnVjdCBiY21hc3BfaHdfaW5mbyB2MjBfaHdfaW5mbyA9M0QgeworCS5yeF9jdHJsX2ZsdXNoID0z RCBBU1BfUlhfQ1RSTF9GTFVTSCwKKwkudW1hYzJmYiA9M0QgVU1BQzJGQl9PRkZTRVQsCisJLnJ4 X2N0cmxfZmJfb3V0X2ZyYW1lX2NvdW50ID0zRCBBU1BfUlhfQ1RSTF9GQl9PVVRfRlJBTUVfQ09V TlQsCisJLnJ4X2N0cmxfZmJfZmlsdF9vdXRfZnJhbWVfY291bnQgPTNEIEFTUF9SWF9DVFJMX0ZC X0ZJTFRfT1VUX0ZSQU1FX0NPVU5ULAorCS5yeF9jdHJsX2ZiX3J4X2ZpZm9fZGVwdGggPTNEIEFT UF9SWF9DVFJMX0ZCX1JYX0ZJRk9fREVQVEgsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJj bWFzcF9wbGF0X2RhdGEgdjIwX3BsYXRfZGF0YSA9M0QgeworCS5pbml0X3dvbCA9M0QgYmNtYXNw X2luaXRfd29sX3Blcl9pbnRmLAorCS5lbmFibGVfd29sID0zRCBiY21hc3BfZW5hYmxlX3dvbF9w ZXJfaW50ZiwKKwkuZGVzdHJveV93b2wgPTNEIGJjbWFzcF93b2xfaXJxX2Rlc3Ryb3lfcGVyX2lu dGYsCisJLmh3X2luZm8gPTNEICZ2MjBfaHdfaW5mbywKK307CisKK3N0YXRpYyBzdHJ1Y3QgYmNt YXNwX2h3X2luZm8gdjIxX2h3X2luZm8gPTNEIHsKKwkucnhfY3RybF9mbHVzaCA9M0QgQVNQX1JY X0NUUkxfRkxVU0hfMl8xLAorCS51bWFjMmZiID0zRCBVTUFDMkZCX09GRlNFVF8yXzEsCisJLnJ4 X2N0cmxfZmJfb3V0X2ZyYW1lX2NvdW50ID0zRCBBU1BfUlhfQ1RSTF9GQl9PVVRfRlJBTUVfQ09V TlRfMl8xLAorCS5yeF9jdHJsX2ZiX2ZpbHRfb3V0X2ZyYW1lX2NvdW50ID0zRAorCQlBU1BfUlhf Q1RSTF9GQl9GSUxUX09VVF9GUkFNRV9DT1VOVF8yXzEsCisJLnJ4X2N0cmxfZmJfcnhfZmlmb19k ZXB0aCA9M0QgQVNQX1JYX0NUUkxfRkJfUlhfRklGT19ERVBUSF8yXzEsCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGJjbWFzcF9wbGF0X2RhdGEgdjIxX3BsYXRfZGF0YSA9M0QgeworCS5pbml0 X3dvbCA9M0QgYmNtYXNwX2luaXRfd29sX3NoYXJlZCwKKwkuZW5hYmxlX3dvbCA9M0QgYmNtYXNw X2VuYWJsZV93b2xfc2hhcmVkLAorCS5kZXN0cm95X3dvbCA9M0QgYmNtYXNwX3dvbF9pcnFfZGVz dHJveV9zaGFyZWQsCisJLmh3X2luZm8gPTNEICZ2MjFfaHdfaW5mbywKK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGJjbWFzcF9vZl9tYXRjaFtdID0zRCB7CisJeyAuY29t cGF0aWJsZSA9M0QgImJyY20sYXNwLXYyLjAiLCAuZGF0YSA9M0QgJnYyMF9wbGF0X2RhdGEgfSwK Kwl7IC5jb21wYXRpYmxlID0zRCAiYnJjbSxhc3AtdjIuMSIsIC5kYXRhID0zRCAmdjIxX3BsYXRf ZGF0YSB9LAorCXsgLyogc2VudGluZWwgKi8gfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCBiY21hc3Bfb2ZfbWF0Y2gpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBi Y21hc3BfbWRpb19vZl9tYXRjaFtdID0zRCB7CisJeyAuY29tcGF0aWJsZSA9M0QgImJyY20sYXNw LXYyLjEtbWRpbyIsIH0sCisJeyAuY29tcGF0aWJsZSA9M0QgImJyY20sYXNwLXYyLjAtbWRpbyIs IH0sCisJeyAvKiBzZW50aW5lbCAqLyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJj bWFzcF9tZGlvX29mX21hdGNoKTsKKworc3RhdGljIGludCBiY21hc3BfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzX25vZGUs ICppbnRmX25vZGU7CisJY29uc3Qgc3RydWN0IGJjbWFzcF9wbGF0X2RhdGEgKnBkYXRhOworCXN0 cnVjdCBkZXZpY2UgKmRldiA9M0QgJnBkZXYtPmRldjsKKwlpbnQgcmV0LCBpLCBjb3VudCA9M0Qg MCwgcG9ydDsKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXY7CisJc3RydWN0IGJjbWFzcF9pbnRm ICppbnRmOworCisJcHJpdiA9M0QgZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFwcml2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXByaXYtPmlycSA9 M0QgcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAocHJpdi0+aXJxIDw9M0QgMCkKKwkJ cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiaW52YWxpZCBpbnRlcnJ1cHRcbiIp OworCisJcHJpdi0+Y2xrID0zRCBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsICJz d19hc3AiKTsKKwlpZiAoSVNfRVJSKHByaXYtPmNsaykpCisJCXJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgUFRSX0VSUihwcml2LT5jbGspLAorCQkJCQkJCSAiZmFpbGVkIHRvIHJlcXVlc3QgY2xv Y2tcbiIpOworCisJLyogQmFzZSBmcm9tIHBhcmVudCBub2RlICovCisJcHJpdi0+YmFzZSA9M0Qg ZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOworCWlmIChJU19FUlIocHJp di0+YmFzZSkpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LT5iYXNl KSwgImZhaWxlZCB0byBpb21hcFxuIik7CisKKwlyZXQgPTNEIGRtYV9zZXRfbWFza19hbmRfY29o ZXJlbnQoJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDQwKSk7CisJaWYgKHJldCkKKwkJcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJ1bmFibGUgdG8gc2V0IERNQSBtYXNrOiAlZFxuIiwg cmV0KTsKKworCWRldl9zZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2LCBwcml2KTsKKwlwcml2LT5wZGV2 ID0zRCBwZGV2OworCXNwaW5fbG9ja19pbml0KCZwcml2LT5tZGFfbG9jayk7CisJc3Bpbl9sb2Nr X2luaXQoJnByaXYtPmNsa19sb2NrKTsKKwltdXRleF9pbml0KCZwcml2LT5uZXRfbG9jayk7CisJ bXV0ZXhfaW5pdCgmcHJpdi0+d29sX2xvY2spOworCisJcGRhdGEgPTNEIGRldmljZV9nZXRfbWF0 Y2hfZGF0YSgmcGRldi0+ZGV2KTsKKwlpZiAoIXBkYXRhKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9i ZShkZXYsIC1FSU5WQUwsICJ1bmFibGUgdG8gZmluZCBwbGF0Zm9ybSBkYXRhXG4iKTsKKworCXBy aXYtPmluaXRfd29sID0zRCBwZGF0YS0+aW5pdF93b2w7CisJcHJpdi0+ZW5hYmxlX3dvbCA9M0Qg cGRhdGEtPmVuYWJsZV93b2w7CisJcHJpdi0+ZGVzdHJveV93b2wgPTNEIHBkYXRhLT5kZXN0cm95 X3dvbDsKKwlwcml2LT5od19pbmZvID0zRCBwZGF0YS0+aHdfaW5mbzsKKworCS8qIEVuYWJsZSBh bGwgY2xvY2tzIHRvIGVuc3VyZSBzdWNjZXNzZnVsIHByb2JpbmcgKi8KKwliY21hc3BfY29yZV9j bG9ja19zZXQocHJpdiwgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfQUxMX0RJU0FCTEUsIDApOwor CisJLyogU3dpdGNoIHRvIHRoZSBtYWluIGNsb2NrICovCisJYmNtYXNwX2NvcmVfY2xvY2tfc2Vs ZWN0KHByaXYsIGZhbHNlKTsKKworCWJjbWFzcF9pbnRyMl9tYXNrX3NldF9hbGwocHJpdik7CisJ YmNtYXNwX2ludHIyX2NsZWFyX2FsbChwcml2KTsKKworCXJldCA9M0QgZGV2bV9yZXF1ZXN0X2ly cSgmcGRldi0+ZGV2LCBwcml2LT5pcnEsIGJjbWFzcF9pc3IsIDAsCisJCQkgICAgICAgcGRldi0+ bmFtZSwgcHJpdik7CisJaWYgKHJldCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQs ICJmYWlsZWQgdG8gcmVxdWVzdCBBU1AgaW50ZXJydXB0OiAlZCIsIHJlPQp0KTsKKworCS8qIFJl Z2lzdGVyIG1kaW8gY2hpbGQgbm9kZXMgKi8KKwlvZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYtPm9m X25vZGUsIGJjbWFzcF9tZGlvX29mX21hdGNoLCBOVUxMLCBkZXYpOworCisJLyogQVNQIHNwZWNp ZmljIGluaXRpYWxpemF0aW9uLCBOZWVkcyB0byBiZSBkb25lIHJlZ2FyZGxlc3Mgb2YKKwkgKiBo b3cgbWFueSBpbnRlcmZhY2VzIGNvbWUgdXAuCisJICovCisJYmNtYXNwX2NvcmVfaW5pdChwcml2 KTsKKwliY21hc3BfY29yZV9pbml0X2ZpbHRlcnMocHJpdik7CisKKwlwb3J0c19ub2RlID0zRCBv Zl9maW5kX25vZGVfYnlfbmFtZShkZXYtPm9mX25vZGUsICJldGhlcm5ldC1wb3J0cyIpOworCWlm ICghcG9ydHNfbm9kZSkgeworCQlkZXZfd2FybihkZXYsICJObyBwb3J0cyBmb3VuZFxuIik7CisJ CXJldHVybiAwOworCX0KKworCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKHBvcnRz X25vZGUsIGludGZfbm9kZSkgeworCQlvZl9wcm9wZXJ0eV9yZWFkX3UzMihpbnRmX25vZGUsICJy ZWciLCAmcG9ydCk7CisJCWlmICghYmNtYXNwX2lzX3BvcnRfdmFsaWQocHJpdiwgcG9ydCkpIHsK KwkJCWRldl93YXJuKGRldiwgIiVwT0Y6ICVkIGlzIGFuIGludmFsaWQgcG9ydFxuIiwKKwkJCQkg aW50Zl9ub2RlLCBwb3J0KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcHJpdi0+aW50Zl9jb3Vu dCsrOworCX0KKworCXByaXYtPmludGZzID0zRCBkZXZtX2tjYWxsb2MoZGV2LCBwcml2LT5pbnRm X2NvdW50LAorCQkJCSAgIHNpemVvZihzdHJ1Y3QgYmNtYXNwX2ludGYgKiksCisJCQkJICAgR0ZQ X0tFUk5FTCk7CisJaWYgKCFwcml2LT5pbnRmcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBQ cm9iZSBlYWNoIGludGVyZmFjZSAoSW5pdGlhbGl6YXRpb24gc2hvdWxkIGNvbnRpbnVlIGV2ZW4g aWYKKwkgKiBpbnRlcmZhY2VzIGFyZSB1bmFibGUgdG8gY29tZSB1cCkKKwkgKi8KKwlpID0zRCAw OworCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKHBvcnRzX25vZGUsIGludGZfbm9k ZSkKKwkJcHJpdi0+aW50ZnNbaSsrXSA9M0QgYmNtYXNwX2ludGVyZmFjZV9jcmVhdGUocHJpdiwg aW50Zl9ub2RlKTsKKworCS8qIENoZWNrIGFuZCBlbmFibGUgV29MICovCisJcHJpdi0+aW5pdF93 b2wocHJpdik7CisKKwkvKiBEcm9wIHRoZSBjbG9jayByZWZlcmVuY2UgY291bnQgbm93IGFuZCBs ZXQgbmRvX29wZW4oKS9uZG9fY2xvc2UoKQorCSAqIG1hbmFnZSBpdCBmb3IgdXMgZnJvbSBub3cg b24uCisJICovCisJYmNtYXNwX2NvcmVfY2xvY2tfc2V0KHByaXYsIDAsIEFTUF9DVFJMX0NMT0NL X0NUUkxfQVNQX0FMTF9ESVNBQkxFKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5j bGspOworCisJLyogTm93IGRvIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIG5ldHdvcmsgcG9ydHMg d2hpY2ggd2lsbCB0YWtlIGNhcmUKKwkgKiBvZiBtYW5hZ2luZyB0aGUgY2xvY2sgcHJvcGVybHku CisJICovCisJZm9yIChpID0zRCAwOyBpIDwgcHJpdi0+aW50Zl9jb3VudDsgaSsrKSB7CisJCWlu dGYgPTNEIHByaXYtPmludGZzW2ldOworCQlpZiAoIWludGYpCisJCQljb250aW51ZTsKKworCQly ZXQgPTNEIHJlZ2lzdGVyX25ldGRldihpbnRmLT5uZGV2KTsKKwkJaWYgKHJldCkgeworCQkJbmV0 ZGV2X2VycihpbnRmLT5uZGV2LAorCQkJCSAgICJmYWlsZWQgdG8gcmVnaXN0ZXIgbmV0X2Rldmlj ZTogJWRcbiIsIHJldCk7CisJCQliY21hc3BfaW50ZXJmYWNlX2Rlc3Ryb3koaW50ZiwgZmFsc2Up OworCQkJY29udGludWU7CisJCX0KKwkJY291bnQrKzsKKwl9CisKKwlkZXZfaW5mbyhkZXYsICJJ bml0aWFsaXplZCAlZCBwb3J0KHMpXG4iLCBjb3VudCk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBiY21hc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJ c3RydWN0IGJjbWFzcF9wcml2ICpwcml2ID0zRCBkZXZfZ2V0X2RydmRhdGEoJnBkZXYtPmRldik7 CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmOworCWludCBpOworCisJcHJpdi0+ZGVzdHJveV93 b2wocHJpdik7CisKKwlmb3IgKGkgPTNEIDA7IGkgPCBwcml2LT5pbnRmX2NvdW50OyBpKyspIHsK KwkJaW50ZiA9M0QgcHJpdi0+aW50ZnNbaV07CisJCWlmICghaW50ZikKKwkJCWNvbnRpbnVlOwor CisJCWJjbWFzcF9pbnRlcmZhY2VfZGVzdHJveShpbnRmLCB0cnVlKTsKKwl9CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJaW50IHJldDsKKworCXJldCA9M0QgYmNtYXNwX3JlbW92ZShwZGV2KTsK KwlpZiAocmV0KQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVtb3ZlOiAlZFxu IiwgcmV0KTsKK30KKworc3RhdGljIGludCBfX21heWJlX3VudXNlZCBiY21hc3Bfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkKQoreworCXN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgZGV2X2dl dF9kcnZkYXRhKGQpOworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZjsKKwlpbnQgaSwgcmV0Owor CisJZm9yIChpID0zRCAwOyBpIDwgcHJpdi0+aW50Zl9jb3VudDsgaSsrKSB7CisJCWludGYgPTNE IHByaXYtPmludGZzW2ldOworCQlpZiAoIWludGYpCisJCQljb250aW51ZTsKKworCQlyZXQgPTNE IGJjbWFzcF9pbnRlcmZhY2Vfc3VzcGVuZChpbnRmKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOwor CX0KKworCXJldCA9M0QgY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtPmNsayk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCS8qIFdoZXRoZXIgV2FrZS1vbi1MQU4gaXMgZW5hYmxlZCBvciBu b3QsIHdlIGNhbiBhbHdheXMgZGlzYWJsZQorCSAqIHRoZSBzaGFyZWQgVFggY2xvY2sKKwkgKi8K KwliY21hc3BfY29yZV9jbG9ja19zZXQocHJpdiwgMCwgQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1Bf VFhfRElTQUJMRSk7CisKKwliY21hc3BfY29yZV9jbG9ja19zZWxlY3QocHJpdiwgdHJ1ZSk7CisK KwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmNtYXNwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk KQoreworCXN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdiA9M0QgZGV2X2dldF9kcnZkYXRhKGQpOwor CXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZjsKKwlpbnQgaSwgcmV0OworCisJcmV0ID0zRCBjbGtf cHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ LyogU3dpdGNoIHRvIHRoZSBtYWluIGNsb2NrIGRvbWFpbiAqLworCWJjbWFzcF9jb3JlX2Nsb2Nr X3NlbGVjdChwcml2LCBmYWxzZSk7CisKKwkvKiBSZS1lbmFibGUgYWxsIGNsb2NrcyBmb3IgcmUt aW5pdGlhbGl6YXRpb24gKi8KKwliY21hc3BfY29yZV9jbG9ja19zZXQocHJpdiwgQVNQX0NUUkxf Q0xPQ0tfQ1RSTF9BU1BfQUxMX0RJU0FCTEUsIDApOworCisJYmNtYXNwX2NvcmVfaW5pdChwcml2 KTsKKwliY21hc3BfY29yZV9pbml0X2ZpbHRlcnMocHJpdik7CisKKwkvKiBBbmQgZGlzYWJsZSB0 aGVtIHRvIGxldCB0aGUgbmV0d29yayBkZXZpY2VzIHRha2UgY2FyZSBvZiB0aGVtICovCisJYmNt YXNwX2NvcmVfY2xvY2tfc2V0KHByaXYsIDAsIEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQX0FMTF9E SVNBQkxFKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jbGspOworCisJZm9yIChp ID0zRCAwOyBpIDwgcHJpdi0+aW50Zl9jb3VudDsgaSsrKSB7CisJCWludGYgPTNEIHByaXYtPmlu dGZzW2ldOworCQlpZiAoIWludGYpCisJCQljb250aW51ZTsKKworCQlyZXQgPTNEIGJjbWFzcF9p bnRlcmZhY2VfcmVzdW1lKGludGYpOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKGJjbWFzcF9wbV9vcHMsCisJ CQkgYmNtYXNwX3N1c3BlbmQsIGJjbWFzcF9yZXN1bWUpOworCitzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RyaXZlciBiY21hc3BfZHJpdmVyID0zRCB7CisJLnByb2JlID0zRCBiY21hc3BfcHJvYmUs CisJLnJlbW92ZSA9M0QgYmNtYXNwX3JlbW92ZSwKKwkuc2h1dGRvd24gPTNEIGJjbWFzcF9zaHV0 ZG93biwKKwkuZHJpdmVyID0zRCB7CisJCS5uYW1lID0zRCAiYnJjbSxhc3AtdjIiLAorCQkub2Zf bWF0Y2hfdGFibGUgPTNEIGJjbWFzcF9vZl9tYXRjaCwKKwkJLnBtID0zRCAmYmNtYXNwX3BtX29w cywKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYmNtYXNwX2RyaXZlcik7CisKK01P RFVMRV9BVVRIT1IoIkJyb2FkY29tIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkJyb2FkY29tIEFT UCAyLjAgRXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIiKTsKK01PRFVMRV9BTElBUygicGxhdGZv cm06YnJjbSxhc3AtdjIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwLmggYi9kcml2ZXJzL25ldC9l dGhlPQpybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi42MDdhMjM5YWE5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcC5oCkBAIC0wLDAgKzEsNjM3IEBACisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworI2lmbmRlZiBfX0JDTUFTUF9I CisjZGVmaW5lIF9fQkNNQVNQX0gKKworI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLTY0LW5vbmF0b21pYy1oaS1s by5oPgorI2luY2x1ZGUgPHVhcGkvbGludXgvZXRodG9vbC5oPgorCisjZGVmaW5lIEFTUF9JTlRS Ml9PRkZTRVQJCQkweDEwMDAKKyNkZWZpbmUgIEFTUF9JTlRSMl9TVEFUVVMJCQkweDAKKyNkZWZp bmUgIEFTUF9JTlRSMl9TRVQJCQkJMHg0CisjZGVmaW5lICBBU1BfSU5UUjJfQ0xFQVIJCQkweDgK KyNkZWZpbmUgIEFTUF9JTlRSMl9NQVNLX1NUQVRVUwkJCTB4YworI2RlZmluZSAgQVNQX0lOVFIy X01BU0tfU0VUCQkJMHgxMAorI2RlZmluZSAgQVNQX0lOVFIyX01BU0tfQ0xFQVIJCQkweDE0CisK KyNkZWZpbmUgQVNQX0lOVFIyX1JYX0VDSChpbnRyKQkJCUJJVChpbnRyKQorI2RlZmluZSBBU1Bf SU5UUjJfVFhfREVTQyhpbnRyKQkJCUJJVCgoaW50cikgKyAxNCkKKyNkZWZpbmUgQVNQX0lOVFIy X1VNQzBfV0FLRQkJCUJJVCgyMikKKyNkZWZpbmUgQVNQX0lOVFIyX1VNQzFfV0FLRQkJCUJJVCgy OCkKKworI2RlZmluZSBBU1BfV0FLRVVQX0lOVFIyX09GRlNFVAkJCTB4MTIwMAorI2RlZmluZSAg QVNQX1dBS0VVUF9JTlRSMl9TVEFUVVMJCTB4MAorI2RlZmluZSAgQVNQX1dBS0VVUF9JTlRSMl9T RVQJCQkweDQKKyNkZWZpbmUgIEFTUF9XQUtFVVBfSU5UUjJfQ0xFQVIJCQkweDgKKyNkZWZpbmUg IEFTUF9XQUtFVVBfSU5UUjJfTUFTS19TVEFUVVMJCTB4YworI2RlZmluZSAgQVNQX1dBS0VVUF9J TlRSMl9NQVNLX1NFVAkJMHgxMAorI2RlZmluZSAgQVNQX1dBS0VVUF9JTlRSMl9NQVNLX0NMRUFS CQkweDE0CisjZGVmaW5lIEFTUF9XQUtFVVBfSU5UUjJfTVBEXzAJCQlCSVQoMCkKKyNkZWZpbmUg QVNQX1dBS0VVUF9JTlRSMl9NUERfMQkJCUJJVCgxKQorI2RlZmluZSBBU1BfV0FLRVVQX0lOVFIy X0ZJTFRfMAkJCUJJVCgyKQorI2RlZmluZSBBU1BfV0FLRVVQX0lOVFIyX0ZJTFRfMQkJCUJJVCgz KQorI2RlZmluZSBBU1BfV0FLRVVQX0lOVFIyX0ZXCQkJQklUKDQpCisKKyNkZWZpbmUgQVNQX1RY X0FOQUxZVElDU19PRkZTRVQJCQkweDRjMDAwCisjZGVmaW5lICBBU1BfVFhfQU5BTFlUSUNTX0NU UkwJCQkweDAKKworI2RlZmluZSBBU1BfUlhfQU5BTFlUSUNTX09GRlNFVAkJCTB4OTgwMDAKKyNk ZWZpbmUgIEFTUF9SWF9BTkFMWVRJQ1NfQ1RSTAkJCTB4MAorCisjZGVmaW5lIEFTUF9SWF9DVFJM X09GRlNFVAkJCTB4OWYwMDAKKyNkZWZpbmUgQVNQX1JYX0NUUkxfVU1BQ18wX0ZSQU1FX0NPVU5U CQkweDgKKyNkZWZpbmUgQVNQX1JYX0NUUkxfVU1BQ18xX0ZSQU1FX0NPVU5UCQkweGMKKyNkZWZp bmUgQVNQX1JYX0NUUkxfRkJfMF9GUkFNRV9DT1VOVAkJMHgxNAorI2RlZmluZSBBU1BfUlhfQ1RS TF9GQl8xX0ZSQU1FX0NPVU5UCQkweDE4CisjZGVmaW5lIEFTUF9SWF9DVFJMX0ZCXzhfRlJBTUVf Q09VTlQJCTB4MWMKKy8qIGFzcDIuMSBkaXZlcmdlcyBvZmZzZXRzIGhlcmUgKi8KKy8qIEFTUDIu MCAqLworI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl9PVVRfRlJBTUVfQ09VTlQJCTB4MjAKKyNkZWZp bmUgQVNQX1JYX0NUUkxfRkJfRklMVF9PVVRfRlJBTUVfQ09VTlQJMHgyNAorI2RlZmluZSBBU1Bf UlhfQ1RSTF9GTFVTSAkJCTB4MjgKKyNkZWZpbmUgIEFTUF9DVFJMX1VNQUMwX0ZMVVNIX01BU0sJ CShCSVQoMCkgfCBCSVQoMTIpKQorI2RlZmluZSAgQVNQX0NUUkxfVU1BQzFfRkxVU0hfTUFTSwkJ KEJJVCgxKSB8IEJJVCgxMykpCisjZGVmaW5lICBBU1BfQ1RSTF9TUEJfRkxVU0hfTUFTSwkJKEJJ VCg4KSB8IEJJVCgyMCkpCisjZGVmaW5lIEFTUF9SWF9DVFJMX0ZCX1JYX0ZJRk9fREVQVEgJCTB4 MzAKKy8qIEFTUDIuMSAqLworI2RlZmluZSBBU1BfUlhfQ1RSTF9GQl85X0ZSQU1FX0NPVU5UXzJf MQkweDIwCisjZGVmaW5lIEFTUF9SWF9DVFJMX0ZCXzEwX0ZSQU1FX0NPVU5UXzJfMQkweDI0Cisj ZGVmaW5lIEFTUF9SWF9DVFJMX0ZCX09VVF9GUkFNRV9DT1VOVF8yXzEJMHgyOAorI2RlZmluZSBB U1BfUlhfQ1RSTF9GQl9GSUxUX09VVF9GUkFNRV9DT1VOVF8yXzEJMHgyYworI2RlZmluZSBBU1Bf UlhfQ1RSTF9GTFVTSF8yXzEJCQkweDMwCisjZGVmaW5lIEFTUF9SWF9DVFJMX0ZCX1JYX0ZJRk9f REVQVEhfMl8xCTB4MzgKKworI2RlZmluZSBBU1BfUlhfRklMVEVSX09GRlNFVAkJCTB4ODAwMDAK KyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfQkxLX0NUUkwJCQkweDAKKyNkZWZpbmUgICBBU1BfUlhf RklMVEVSX09QVVRfRU4JCQlCSVQoMCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX01EQV9FTgkJ CUJJVCgxKQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTE5SX01ECQkJQklUKDIpCisjZGVmaW5l ICAgQVNQX1JYX0ZJTFRFUl9HRU5fV0tfRU4JCUJJVCgzKQorI2RlZmluZSAgIEFTUF9SWF9GSUxU RVJfR0VOX1dLX0NMUgkJQklUKDQpCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9OVF9GTFRfRU4J CUJJVCg1KQorI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9NREFfQ0ZHKHNlbCkJCSgoKHNlbCkgKiAw eDE0KSArIDB4MTAwKQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTURBX0NGR19FTl9TSElGVAk4 CisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9NREFfQ0ZHX1VNQ19TRUwoc2VsKQkoKHNlbCkgPiAx ID8gQklUKDE3KSA6IFwKKwkJCQkJCSBCSVQoKHNlbCkgKyA5KSkKKyNkZWZpbmUgIEFTUF9SWF9G SUxURVJfTURBX1BBVF9IKHNlbCkJCSgoKHNlbCkgKiAweDE0KSArIDB4MTA0KQorI2RlZmluZSAg QVNQX1JYX0ZJTFRFUl9NREFfUEFUX0woc2VsKQkJKCgoc2VsKSAqIDB4MTQpICsgMHgxMDgpCisj ZGVmaW5lICBBU1BfUlhfRklMVEVSX01EQV9NU0tfSChzZWwpCQkoKChzZWwpICogMHgxNCkgKyAw eDEwYykKKyNkZWZpbmUgIEFTUF9SWF9GSUxURVJfTURBX01TS19MKHNlbCkJCSgoKHNlbCkgKiAw eDE0KSArIDB4MTEwKQorI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9NREFfQ0ZHKHNlbCkJCSgoKHNl bCkgKiAweDE0KSArIDB4MTAwKQorI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9NREFfUEFUX0goc2Vs KQkJKCgoc2VsKSAqIDB4MTQpICsgMHgxMDQpCisjZGVmaW5lICBBU1BfUlhfRklMVEVSX01EQV9Q QVRfTChzZWwpCQkoKChzZWwpICogMHgxNCkgKyAweDEwOCkKKyNkZWZpbmUgIEFTUF9SWF9GSUxU RVJfTURBX01TS19IKHNlbCkJCSgoKHNlbCkgKiAweDE0KSArIDB4MTBjKQorI2RlZmluZSAgQVNQ X1JYX0ZJTFRFUl9NREFfTVNLX0woc2VsKQkJKCgoc2VsKSAqIDB4MTQpICsgMHgxMTApCisjZGVm aW5lICBBU1BfUlhfRklMVEVSX05FVF9DRkcoc2VsKQkJKCgoc2VsKSAqIDB4YTA0KSArIDB4NDAw KQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19DSChzZWwpCQkoKHNlbCkgPDwgMCkK KyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9DRkdfRU4JCUJJVCg5KQorI2RlZmluZSAgIEFT UF9SWF9GSUxURVJfTkVUX0NGR19MMl9FTgkJQklUKDEwKQorI2RlZmluZSAgIEFTUF9SWF9GSUxU RVJfTkVUX0NGR19MM19FTgkJQklUKDExKQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX0NG R19MNF9FTgkJQklUKDEyKQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX0NGR19MM19GUk0o c2VsKQkoKHNlbCkgPDwgMTMpCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0w0X0ZS TShzZWwpCSgoc2VsKSA8PCAxNSkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9DRkdfVU1D KHNlbCkJQklUKChzZWwpICsgMTkpCisjZGVmaW5lICAgQVNQX1JYX0ZJTFRFUl9ORVRfQ0ZHX0RN QV9FTgkJQklUKDI3KQorCitlbnVtIGFzcF9yeF9uZXRfZmlsdGVyX2Jsb2NrIHsKKwlBU1BfUlhf RklMVEVSX05FVF9MMiA9M0QgMCwKKwlBU1BfUlhfRklMVEVSX05FVF9MM18wLAorCUFTUF9SWF9G SUxURVJfTkVUX0wzXzEsCisJQVNQX1JYX0ZJTFRFUl9ORVRfTDQsCisJQVNQX1JYX0ZJTFRFUl9O RVRfQkxPQ0tfTUFYCit9OworCisjZGVmaW5lICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTUFY CQkzMgorI2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9ORVRfUEFUKHNlbCwgYmxvY2ssIG9mZikgXAor CQkoKChzZWwpICogMHhhMDQpICsgKChibG9jaykgKiAweDIwMCkgKyAob2ZmKSArIDB4NjAwKQor I2RlZmluZSAgQVNQX1JYX0ZJTFRFUl9ORVRfTUFTSyhzZWwsIGJsb2NrLCBvZmYpIFwKKwkJKCgo c2VsKSAqIDB4YTA0KSArICgoYmxvY2spICogMHgyMDApICsgKG9mZikgKyAweDcwMCkKKworI2Rl ZmluZSAgQVNQX1JYX0ZJTFRFUl9ORVRfT0ZGU0VUKHNlbCkJCSgoKHNlbCkgKiAweGEwNCkgKyAw eGUwMCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDIodmFsKQkoKHZhbCkg PDwgMCkKKyNkZWZpbmUgICBBU1BfUlhfRklMVEVSX05FVF9PRkZTRVRfTDNfMCh2YWwpCSgodmFs KSA8PCA4KQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVF9MM18xKHZhbCkJKCh2 YWwpIDw8IDE2KQorI2RlZmluZSAgIEFTUF9SWF9GSUxURVJfTkVUX09GRlNFVF9MNCh2YWwpCSgo dmFsKSA8PCAyNCkKKworI2RlZmluZSBBU1BfRURQS1RfT0ZGU0VUCQkJMHg5YzAwMAorI2RlZmlu ZSAgQVNQX0VEUEtUX0VOQUJMRQkJCTB4NAorI2RlZmluZSAgIEFTUF9FRFBLVF9FTkFCTEVfRU4J CQlCSVQoMCkKKyNkZWZpbmUgIEFTUF9FRFBLVF9IRFJfQ0ZHCQkJMHhjCisjZGVmaW5lICAgQVNQ X0VEUEtUX0hEUl9TWl9TSElGVAkJMgorI2RlZmluZSAgIEFTUF9FRFBLVF9IRFJfU1pfMzIJCQkw CisjZGVmaW5lICAgQVNQX0VEUEtUX0hEUl9TWl82NAkJCTEKKyNkZWZpbmUgICBBU1BfRURQS1Rf SERSX1NaXzk2CQkJMgorI2RlZmluZSAgIEFTUF9FRFBLVF9IRFJfU1pfMTI4CQkJMworI2RlZmlu ZSBBU1BfRURQS1RfQlVSU1RfQlVGX1BTQ0FMX1RPVVQJCTB4MTAKKyNkZWZpbmUgQVNQX0VEUEtU X0JVUlNUX0JVRl9XUklURV9UT1VUCQkweDE0CisjZGVmaW5lIEFTUF9FRFBLVF9CVVJTVF9CVUZf UkVBRF9UT1VUCQkweDE4CisjZGVmaW5lIEFTUF9FRFBLVF9SWF9UU19DT1VOVEVSCQkJMHgzOAor I2RlZmluZSAgQVNQX0VEUEtUX0VOREkJCQkJMHg0OAorI2RlZmluZSAgIEFTUF9FRFBLVF9FTkRJ X0RFU0NfU0hJRlQJCTgKKyNkZWZpbmUgICBBU1BfRURQS1RfRU5ESV9OT19CVF9TV1AJCTAKKyNk ZWZpbmUgICBBU1BfRURQS1RfRU5ESV9CVF9TV1BfV0QJCTEKKyNkZWZpbmUgQVNQX0VEUEtUX1JY X1BLVF9DTlQJCQkweDEzOAorI2RlZmluZSBBU1BfRURQS1RfSERSX0VYVFJfQ05UCQkJMHgxM2MK KyNkZWZpbmUgQVNQX0VEUEtUX0hEUl9PVVRfQ05UCQkJMHgxNDAKKworI2RlZmluZSBBU1BfQ1RS TAkJCQkweDEwMTAwMAorI2RlZmluZSAgQVNQX0NUUkxfQVNQX1NXX0lOSVQJCQkweDA0CisjZGVm aW5lICAgQVNQX0NUUkxfQVNQX1NXX0lOSVRfQUNQVVNTX0NPUkUJQklUKDApCisjZGVmaW5lICAg QVNQX0NUUkxfQVNQX1NXX0lOSVRfQVNQX1RYCQlCSVQoMSkKKyNkZWZpbmUgICBBU1BfQ1RSTF9B U1BfU1dfSU5JVF9BU19SWAkJQklUKDIpCisjZGVmaW5lICAgQVNQX0NUUkxfQVNQX1NXX0lOSVRf QVNQX1JHTUlJX1VNQUMwCUJJVCgzKQorI2RlZmluZSAgIEFTUF9DVFJMX0FTUF9TV19JTklUX0FT UF9SR01JSV9VTUFDMQlCSVQoNCkKKyNkZWZpbmUgICBBU1BfQ1RSTF9BU1BfU1dfSU5JVF9BU1Bf WE1FTUlGCUJJVCg1KQorI2RlZmluZSAgQVNQX0NUUkxfQ0xPQ0tfQ1RSTAkJCTB4MDQKKyNkZWZp bmUgICBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9UWF9ESVNBQkxFCUJJVCgwKQorI2RlZmluZSAg IEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQX1JYX0RJU0FCTEUJQklUKDEpCisjZGVmaW5lICAgQVNQ X0NUUkxfQ0xPQ0tfQ1RSTF9BU1BfUkdNSUlfU0hJRlQJMgorI2RlZmluZSAgIEFTUF9DVFJMX0NM T0NLX0NUUkxfQVNQX1JHTUlJX01BU0sJKDB4NyA8PCBBU1BfQ1RSTF9DTE9DS19DVFJMX0E9ClNQ X1JHTUlJX1NISUZUKQorI2RlZmluZSAgIEFTUF9DVFJMX0NMT0NLX0NUUkxfQVNQX1JHTUlJX0RJ Uyh4KQlCSVQoQVNQX0NUUkxfQ0xPQ0tfQ1RSTF9BU1A9Cl9SR01JSV9TSElGVCArICh4KSkKKyNk ZWZpbmUgICBBU1BfQ1RSTF9DTE9DS19DVFJMX0FTUF9BTExfRElTQUJMRQlHRU5NQVNLKDQsIDAp CisjZGVmaW5lICBBU1BfQ1RSTF9DT1JFX0NMT0NLX1NFTEVDVAkJMHgwOAorI2RlZmluZSAgIEFT UF9DVFJMX0NPUkVfQ0xPQ0tfU0VMRUNUX01BSU4JQklUKDApCisjZGVmaW5lICBBU1BfQ1RSTF9T Q1JBVENIXzAJCQkweDBjCisKK3N0cnVjdCBiY21hc3BfdHhfY2IgeworCXN0cnVjdCBza19idWZm CQkqc2tiOworCXVuc2lnbmVkIGludAkJYnl0ZXNfc2VudDsKKwlib29sCQkJbGFzdDsKKworCURF RklORV9ETUFfVU5NQVBfQUREUihkbWFfYWRkcik7CisJREVGSU5FX0RNQV9VTk1BUF9MRU4oZG1h X2xlbik7Cit9OworCitzdHJ1Y3QgYmNtYXNwX3JlcyB7CisJLyogUGVyIGludGVyZmFjZSByZXNv dXJjZXMgKi8KKwkvKiBQb3J0ICovCisJdm9pZCBfX2lvbWVtCQkqdW1hYzsKKwl2b2lkIF9faW9t ZW0JCSp1bWFjMmZiOworCXZvaWQgX19pb21lbQkJKnJnbWlpOworCisJLyogVFggc2xvd3BhdGgv Y29uZmlndXJhdGlvbiAqLworCXZvaWQgX19pb21lbQkJKnR4X3NwYl9jdHJsOworCXZvaWQgX19p b21lbQkJKnR4X3NwYl90b3A7CisJdm9pZCBfX2lvbWVtCQkqdHhfZXBrdF9jb3JlOworCXZvaWQg X19pb21lbQkJKnR4X3BhdXNlX2N0cmw7Cit9OworCisjZGVmaW5lIERFU0NfQUREUih4KQkJKCh4 KSAmIEdFTk1BU0tfVUxMKDM5LCAwKSkKKyNkZWZpbmUgREVTQ19GTEFHUyh4KQkJKCh4KSAmIEdF Tk1BU0tfVUxMKDYzLCA0MCkpCisKK3N0cnVjdCBiY21hc3BfZGVzYyB7CisJdTY0CQlidWY7CisJ I2RlZmluZSBERVNDX0NIS1NVTQlCSVRfVUxMKDQwKQorCSNkZWZpbmUgREVTQ19DUkNfRVJSCUJJ VF9VTEwoNDEpCisJI2RlZmluZSBERVNDX1JYX1NZTV9FUlIJQklUX1VMTCg0MikKKwkjZGVmaW5l IERFU0NfTk9fT0NUX0FMTiBCSVRfVUxMKDQzKQorCSNkZWZpbmUgREVTQ19QS1RfVFJVQwlCSVRf VUxMKDQ0KQorCS8qICAzOTowIChUWC9SWCkgYml0cyAwLTM5IG9mIGJ1ZiBhZGRyCisJICogICAg NDAgKFJYKSBjaGVja3N1bQorCSAqICAgIDQxIChSWCkgY3JjX2Vycm9yCisJICogICAgNDIgKFJY KSByeF9zeW1ib2xfZXJyb3IKKwkgKiAgICA0MyAoUlgpIG5vbl9vY3RldF9hbGlnbmVkCisJICog ICAgNDQgKFJYKSBwa3RfdHJ1bmNhdGVkCisJICogICAgNDUgUmVzZXJ2ZWQKKwkgKiA1Njo0NiAo UlgpIG1hY19maWx0ZXJfaWQKKwkgKiA2MDo1NyAoUlgpIHJ4X3BvcnRfbnVtICgwLXVuaWNtYWMw LCAxLXVuaW1hYzEpCisJICogICAgNjEgUmVzZXJ2ZWQKKwkgKiA2Mzo2MiAoVFgpIGZvcndhcmQg Q1JDLCBvdmVyd3JpdGUgQ1JDCisJICovCisJdTMyCQlzaXplOworCXUzMgkJZmxhZ3M7CisJI2Rl ZmluZSBERVNDX0lOVF9FTiAgICAgQklUKDApCisJI2RlZmluZSBERVNDX1NPRglCSVQoMSkKKwkj ZGVmaW5lIERFU0NfRU9GCUJJVCgyKQorCSNkZWZpbmUgREVTQ19FUEtUX0NNRCAgIEJJVCgzKQor CSNkZWZpbmUgREVTQ19TQ1JBTV9TVCAgIEJJVCg4KQorCSNkZWZpbmUgREVTQ19TQ1JBTV9FTkQg IEJJVCg5KQorCSNkZWZpbmUgREVTQ19QQ1BQICAgICAgIEJJVCgxMCkKKwkjZGVmaW5lIERFU0Nf UFBQUCAgICAgICBCSVQoMTEpCisJLyogICAgIDAgKFRYKSB0eF9pbnRfZW4KKwkgKiAgICAgMSAo VFgvUlgpIFNPRgorCSAqICAgICAyIChUWC9SWCkgRU9GCisJICogICAgIDMgKFRYKSBlcGt0X2Nv bW1hbmQKKwkgKiAgIDY6NCAoVFgpIFBBCisJICogICAgIDcgKFRYKSBwYXVzZSBhdCBkZXNjIGVu ZAorCSAqICAgICA4IChUWCkgc2NyYW1fc3RhcnQKKwkgKiAgICAgOSAoVFgpIHNjcmFtX2VuZAor CSAqICAgIDEwIChUWCkgUENQUAorCSAqICAgIDExIChUWCkgUFBQUAorCSAqIDE0OjEyIFJlc2Vy dmVkCisJICogICAgMTUgKFRYKSBwaWQgY2ggVmFsaWQKKwkgKiAxOToxNiAoVFgpIGRhdGFfcGt0 X3R5cGUKKwkgKiAzMjoyMCAoVFgpIHBpZF9jaGFubmVsIChSWCkgbndfZmlsdGVyX2lkCisJICov Cit9OworCisvKiBSeC9UeCBjb21tb24gY291bnRlciBncm91cCAqLworc3RydWN0IGJjbWFzcF9w a3RfY291bnRlcnMgeworCXUzMgljbnRfNjQ7CQkvKiBSTyBSZWNlaXZlZC9UcmFuc21pdHRlZCA2 NCBieXRlcyBwYWNrZXQgKi8KKwl1MzIJY250XzEyNzsJLyogUk8gUngvVHggMTI3IGJ5dGVzIHBh Y2tldCAqLworCXUzMgljbnRfMjU1OwkvKiBSTyBSeC9UeCA2NS0yNTUgYnl0ZXMgcGFja2V0ICov CisJdTMyCWNudF81MTE7CS8qIFJPIFJ4L1R4IDI1Ni01MTEgYnl0ZXMgcGFja2V0ICovCisJdTMy CWNudF8xMDIzOwkvKiBSTyBSeC9UeCA1MTItMTAyMyBieXRlcyBwYWNrZXQgKi8KKwl1MzIJY250 XzE1MTg7CS8qIFJPIFJ4L1R4IDEwMjQtMTUxOCBieXRlcyBwYWNrZXQgKi8KKwl1MzIJY250X21n djsJLyogUk8gUngvVHggMTUxOS0xNTIyIGdvb2QgVkxBTiBwYWNrZXQgKi8KKwl1MzIJY250XzIw NDc7CS8qIFJPIFJ4L1R4IDE1MjItMjA0NyBieXRlcyBwYWNrZXQqLworCXUzMgljbnRfNDA5NTsJ LyogUk8gUngvVHggMjA0OC00MDk1IGJ5dGVzIHBhY2tldCovCisJdTMyCWNudF85MjE2OwkvKiBS TyBSeC9UeCA0MDk2LTkyMTYgYnl0ZXMgcGFja2V0Ki8KK307CisKKy8qIFJTViwgUmVjZWl2ZSBT dGF0dXMgVmVjdG9yICovCitzdHJ1Y3QgYmNtYXNwX3J4X2NvdW50ZXJzIHsKKwlzdHJ1Y3QgIGJj bWFzcF9wa3RfY291bnRlcnMgcGt0X2NudDsKKwl1MzIJcGt0OwkJLyogUk8gKDB4NDI4KSBSZWNl aXZlZCBwa3QgY291bnQqLworCXUzMglieXRlczsJCS8qIFJPIFJlY2VpdmVkIGJ5dGUgY291bnQg Ki8KKwl1MzIJbWNhOwkJLyogUk8gIyBvZiBSZWNlaXZlZCBtdWx0aWNhc3QgcGt0ICovCisJdTMy CWJjYTsJCS8qIFJPICMgb2YgUmVjZWl2ZSBicm9hZGNhc3QgcGt0ICovCisJdTMyCWZjczsJCS8q IFJPICMgb2YgUmVjZWl2ZWQgRkNTIGVycm9yICAqLworCXUzMgljZjsJCS8qIFJPICMgb2YgUmVj ZWl2ZWQgY29udHJvbCBmcmFtZSBwa3QqLworCXUzMglwZjsJCS8qIFJPICMgb2YgUmVjZWl2ZWQg cGF1c2UgZnJhbWUgcGt0ICovCisJdTMyCXVvOwkJLyogUk8gIyBvZiB1bmtub3duIG9wIGNvZGUg cGt0ICovCisJdTMyCWFsbjsJCS8qIFJPICMgb2YgYWxpZ25tZW50IGVycm9yIGNvdW50ICovCisJ dTMyCWZscjsJCS8qIFJPICMgb2YgZnJhbWUgbGVuZ3RoIG91dCBvZiByYW5nZSBjb3VudCAqLwor CXUzMgljZGU7CQkvKiBSTyAjIG9mIGNvZGUgZXJyb3IgcGt0ICovCisJdTMyCWZjcjsJCS8qIFJP ICMgb2YgY2FycmllciBzZW5zZSBlcnJvciBwa3QgKi8KKwl1MzIJb3ZyOwkJLyogUk8gIyBvZiBv dmVyc2l6ZSBwa3QqLworCXUzMglqYnI7CQkvKiBSTyAjIG9mIGphYmJlciBjb3VudCAqLworCXUz MgltdHVlOwkJLyogUk8gIyBvZiBNVFUgZXJyb3IgcGt0Ki8KKwl1MzIJcG9rOwkJLyogUk8gIyBv ZiBSZWNlaXZlZCBnb29kIHBrdCAqLworCXUzMgl1YzsJCS8qIFJPICMgb2YgdW5pY2FzdCBwa3Qg Ki8KKwl1MzIJcHBwOwkJLyogUk8gIyBvZiBQUFAgcGt0ICovCisJdTMyCXJjcmM7CQkvKiBSTyAo MHg0NzApLCMgb2YgQ1JDIG1hdGNoIHBrdCAqLworfTsKKworLyogVFNWLCBUcmFuc21pdCBTdGF0 dXMgVmVjdG9yICovCitzdHJ1Y3QgYmNtYXNwX3R4X2NvdW50ZXJzIHsKKwlzdHJ1Y3QgYmNtYXNw X3BrdF9jb3VudGVycyBwa3RfY250OworCXUzMglwa3RzOwkJLyogUk8gKDB4NGE4KSBUcmFuc21p dHRlZCBwa3QgKi8KKwl1MzIJbWNhOwkJLyogUk8gIyBvZiB4bWl0ZWQgbXVsdGljYXN0IHBrdCAq LworCXUzMgliY2E7CQkvKiBSTyAjIG9mIHhtaXRlZCBicm9hZGNhc3QgcGt0ICovCisJdTMyCXBm OwkJLyogUk8gIyBvZiB4bWl0ZWQgcGF1c2UgZnJhbWUgY291bnQgKi8KKwl1MzIJY2Y7CQkvKiBS TyAjIG9mIHhtaXRlZCBjb250cm9sIGZyYW1lIGNvdW50ICovCisJdTMyCWZjczsJCS8qIFJPICMg b2YgeG1pdGVkIEZDUyBlcnJvciBjb3VudCAqLworCXUzMglvdnI7CQkvKiBSTyAjIG9mIHhtaXRl ZCBvdmVyc2l6ZSBwa3QgKi8KKwl1MzIJZHJmOwkJLyogUk8gIyBvZiB4bWl0ZWQgZGVmZXJyYWwg cGt0ICovCisJdTMyCWVkZjsJCS8qIFJPICMgb2YgeG1pdGVkIEV4Y2Vzc2l2ZSBkZWZlcnJhbCBw a3QqLworCXUzMglzY2w7CQkvKiBSTyAjIG9mIHhtaXRlZCBzaW5nbGUgY29sbGlzaW9uIHBrdCAq LworCXUzMgltY2w7CQkvKiBSTyAjIG9mIHhtaXRlZCBtdWx0aXBsZSBjb2xsaXNpb24gcGt0Ki8K Kwl1MzIJbGNsOwkJLyogUk8gIyBvZiB4bWl0ZWQgbGF0ZSBjb2xsaXNpb24gcGt0ICovCisJdTMy CWVjbDsJCS8qIFJPICMgb2YgeG1pdGVkIGV4Y2Vzc2l2ZSBjb2xsaXNpb24gcGt0Ki8KKwl1MzIJ ZnJnOwkJLyogUk8gIyBvZiB4bWl0ZWQgZnJhZ21lbnRzIHBrdCovCisJdTMyCW5jbDsJCS8qIFJP ICMgb2YgeG1pdGVkIHRvdGFsIGNvbGxpc2lvbiBjb3VudCAqLworCXUzMglqYnI7CQkvKiBSTyAj IG9mIHhtaXRlZCBqYWJiZXIgY291bnQqLworCXUzMglieXRlczsJCS8qIFJPICMgb2YgeG1pdGVk IGJ5dGUgY291bnQgKi8KKwl1MzIJcG9rOwkJLyogUk8gIyBvZiB4bWl0ZWQgZ29vZCBwa3QgKi8K Kwl1MzIJdWM7CQkvKiBSTyAoMHgweDRmMCkjIG9mIHhtaXRlZCB1bml0Y2FzdCBwa3QgKi8KK307 CisKK3N0cnVjdCBiY21hc3BfbWliX2NvdW50ZXJzIHsKKwlzdHJ1Y3QgYmNtYXNwX3J4X2NvdW50 ZXJzIHJ4OworCXN0cnVjdCBiY21hc3BfdHhfY291bnRlcnMgdHg7CisJdTMyCXJ4X3J1bnRfY250 OworCXUzMglyeF9ydW50X2ZjczsKKwl1MzIJcnhfcnVudF9mY3NfYWxpZ247CisJdTMyCXJ4X3J1 bnRfYnl0ZXM7CisJdTMyCWVkcGt0X3RzOworCXUzMgllZHBrdF9yeF9wa3RfY250OworCXUzMgll ZHBrdF9oZHJfZXh0X2NudDsKKwl1MzIJZWRwa3RfaGRyX291dF9jbnQ7CisJdTMyCXVtYWNfZnJt X2NudDsKKwl1MzIJZmJfZnJtX2NudDsKKwl1MzIJZmJfb3V0X2ZybV9jbnQ7CisJdTMyCWZiX2Zp bHRfb3V0X2ZybV9jbnQ7CisJdTMyCWZiX3J4X2ZpZm9fZGVwdGg7CisJdTMyCWFsbG9jX3J4X2J1 ZmZfZmFpbGVkOworCXUzMglhbGxvY19yeF9za2JfZmFpbGVkOworCXUzMglyeF9kbWFfZmFpbGVk OworCXUzMgl0eF9kbWFfZmFpbGVkOworCXUzMgltY19maWx0ZXJzX2Z1bGxfY250OworCXUzMgl1 Y19maWx0ZXJzX2Z1bGxfY250OworCXUzMglmaWx0ZXJzX2NvbWJpbmVfY250OworCXUzMglwcm9t aXNjX2ZpbHRlcnNfY250OworCXUzMgl0eF9yZWFsbG9jX29mZmxvYWRfZmFpbGVkOworCXUzMgl0 eF9yZWFsbG9jX29mZmxvYWQ7Cit9OworCitzdHJ1Y3QgYmNtYXNwX2ludGY7CisKK3N0cnVjdCBi Y21hc3BfaW50Zl9vcHMgeworCXVuc2lnbmVkIGxvbmcgKCpyeF9kZXNjX3JlYWQpKHN0cnVjdCBi Y21hc3BfaW50ZiAqaW50Zik7CisJdm9pZCAoKnJ4X2J1ZmZlcl93cml0ZSkoc3RydWN0IGJjbWFz cF9pbnRmICppbnRmLCBkbWFfYWRkcl90IGFkZHIpOworCXZvaWQgKCpyeF9kZXNjX3dyaXRlKShz dHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWRkcik7CisJdW5zaWduZWQgbG9u ZyAoKnR4X3JlYWQpKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50Zik7CisJdm9pZCAoKnR4X3dyaXRl KShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWRkcik7Cit9OworCitzdHJ1 Y3QgYmNtYXNwX2ludGYgeworCXN0cnVjdCBuZXRfZGV2aWNlCSpuZGV2OworCXN0cnVjdCBiY21h c3BfcHJpdgkqcGFyZW50OworCisJLyogQVNQIENoICovCisJaW50CQkJY2hhbm5lbDsKKwlpbnQJ CQlwb3J0OworCWNvbnN0IHN0cnVjdCBiY21hc3BfaW50Zl9vcHMJKm9wczsKKworCXN0cnVjdCBu YXBpX3N0cnVjdAl0eF9uYXBpOworCS8qIFRYIHJpbmcsIHN0YXJ0cyBvbiBhIG5ldyBjYWNoZWxp bmUgYm91bmRhcnkgKi8KKwl2b2lkIF9faW9tZW0JCSp0eF9zcGJfZG1hOworCWludAkJCXR4X3Nw Yl9pbmRleDsKKwlpbnQJCQl0eF9zcGJfY2xlYW5faW5kZXg7CisJc3RydWN0IGJjbWFzcF9kZXNj CSp0eF9zcGJfY3B1OworCWRtYV9hZGRyX3QJCXR4X3NwYl9kbWFfYWRkcjsKKwlkbWFfYWRkcl90 CQl0eF9zcGJfZG1hX3ZhbGlkOworCWRtYV9hZGRyX3QJCXR4X3NwYl9kbWFfcmVhZDsKKwlzdHJ1 Y3QgYmNtYXNwX3R4X2NiCSp0eF9jYnM7CisJLyogVHggcmluZyBsb2NrICovCisJc3BpbmxvY2tf dAkJdHhfbG9jazsKKworCS8qIFJYIHJpbmcsIHN0YXJ0cyBvbiBhIG5ldyBjYWNoZWxpbmUgYm91 bmRhcnkgKi8KKwl2b2lkIF9faW9tZW0JCSpyeF9lZHBrdF9jZmc7CisJdm9pZCBfX2lvbWVtCQkq cnhfZWRwa3RfZG1hOworCWludAkJCXJ4X2VkcGt0X2luZGV4OworCWludAkJCXJ4X2J1Zl9vcmRl cjsKKwlzdHJ1Y3QgYmNtYXNwX2Rlc2MJKnJ4X2VkcGt0X2NwdTsKKwlkbWFfYWRkcl90CQlyeF9l ZHBrdF9kbWFfYWRkcjsKKwlkbWFfYWRkcl90CQlyeF9lZHBrdF9kbWFfcmVhZDsKKworCS8qIFJY IGJ1ZmZlciBwcmVmZXRjaGVyIHJpbmcqLworCXZvaWQJCQkqcnhfcmluZ19jcHU7CisJZG1hX2Fk ZHJfdAkJcnhfcmluZ19kbWE7CisJZG1hX2FkZHJfdAkJcnhfcmluZ19kbWFfdmFsaWQ7CisJc3Ry dWN0IG5hcGlfc3RydWN0CXJ4X25hcGk7CisKKwlzdHJ1Y3QgYmNtYXNwX3JlcwlyZXM7CisJdW5z aWduZWQgaW50CQljcmNfZndkOworCisJLyogUEhZIGRldmljZSAqLworCXN0cnVjdCBkZXZpY2Vf bm9kZQkqcGh5X2RuOworCXN0cnVjdCBkZXZpY2Vfbm9kZQkqbmRldl9kbjsKKwlwaHlfaW50ZXJm YWNlX3QJCXBoeV9pbnRlcmZhY2U7CisJYm9vbAkJCWludGVybmFsX3BoeTsKKwlpbnQJCQlvbGRf cGF1c2U7CisJaW50CQkJb2xkX2xpbms7CisJaW50CQkJb2xkX2R1cGxleDsKKworCXUzMgkJCW1z Z19lbmFibGU7CisJLyogTUlCIGNvdW50ZXJzICovCisJc3RydWN0IGJjbWFzcF9taWJfY291bnRl cnMgbWliOworCisJLyogV2FrZS1vbi1MQU4gKi8KKwl1MzIJCQl3b2xvcHRzOworCXU4CQkJc29w YXNzW1NPUEFTU19NQVhdOworCWludAkJCXdvbF9pcnE7CisJdW5zaWduZWQgaW50CQl3b2xfaXJx X2VuYWJsZWQ6MTsKKworCXN0cnVjdCBldGh0b29sX2VlZQllZWU7Cit9OworCisjZGVmaW5lIE5V TV9ORVRfRklMVEVSUwkJCQkzMgorc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyIHsKKwlzdHJ1Y3Qg ZXRodG9vbF9yeF9mbG93X3NwZWMJZnM7CisKKwlib29sCQkJCWNsYWltZWQ7CisJYm9vbAkJCQl3 YWtlX2ZpbHRlcjsKKworCWludAkJCQlwb3J0OworCXVuc2lnbmVkIGludAkJCWh3X2luZGV4Owor fTsKKworI2RlZmluZSBOVU1fTURBX0ZJTFRFUlMJCQkJMzIKK3N0cnVjdCBiY21hc3BfbWRhX2Zp bHRlciB7CisJLyogQ3VycmVudCBvd25lciBvZiB0aGlzIGZpbHRlciAqLworCWludAkJcG9ydDsK Kwlib29sCQllbjsKKwl1OAkJYWRkcltFVEhfQUxFTl07CisJdTgJCW1hc2tbRVRIX0FMRU5dOwor fTsKKworc3RydWN0IGJjbWFzcF9wcml2OworCitzdHJ1Y3QgYmNtYXNwX2h3X2luZm8geworCXUz MgkJcnhfY3RybF9mbHVzaDsKKwl1MzIJCXVtYWMyZmI7CisJdTMyCQlyeF9jdHJsX2ZiX291dF9m cmFtZV9jb3VudDsKKwl1MzIJCXJ4X2N0cmxfZmJfZmlsdF9vdXRfZnJhbWVfY291bnQ7CisJdTMy CQlyeF9jdHJsX2ZiX3J4X2ZpZm9fZGVwdGg7Cit9OworCitzdHJ1Y3QgYmNtYXNwX3BsYXRfZGF0 YSB7CisJdm9pZCAoKmluaXRfd29sKShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYpOworCXZvaWQg KCplbmFibGVfd29sKShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgZW4pOworCXZvaWQg KCpkZXN0cm95X3dvbCkoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KTsKKwlzdHJ1Y3QgYmNtYXNw X2h3X2luZm8JCSpod19pbmZvOworfTsKKworc3RydWN0IGJjbWFzcF9wcml2IHsKKwlzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlCQkqcGRldjsKKwlzdHJ1Y3QgY2xrCQkJKmNsazsKKworCWludAkJCQlp cnE7CisJdTMyCQkJCWlycV9tYXNrOworCisJaW50CQkJCXdvbF9pcnE7CisJdW5zaWduZWQgbG9u ZwkJCXdvbF9pcnFfZW5hYmxlZF9tYXNrOworCS8qIFdvbCBsb2NrICovCisJc3RydWN0IG11dGV4 CQkJd29sX2xvY2s7CisJdm9pZCAoKmluaXRfd29sKShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYp OworCXZvaWQgKCplbmFibGVfd29sKShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgZW4p OworCXZvaWQgKCpkZXN0cm95X3dvbCkoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2KTsKKworCXZv aWQgX19pb21lbQkJCSpiYXNlOworCXN0cnVjdAliY21hc3BfaHdfaW5mbwkJKmh3X2luZm87CisK Kwl1bnNpZ25lZCBpbnQJCQlpbnRmX2NvdW50OworCXN0cnVjdCBiY21hc3BfaW50ZgkJKippbnRm czsKKworCXN0cnVjdCBiY21hc3BfbWRhX2ZpbHRlcgltZGFfZmlsdGVyc1tOVU1fTURBX0ZJTFRF UlNdOworCXVuc2lnbmVkIGludAkJCWZpbHRlcnNfY291bnQ7CisJLyogTUFDIGRlc3RpbmF0aW9u IGFkZHJlc3MgZmlsdGVycyBsb2NrICovCisJc3BpbmxvY2tfdAkJCW1kYV9sb2NrOworCisJLyog UHJvdGVjdHMgYWNjZXNzZXMgdG8gQVNQX0NUUkxfQ0xPQ0tfQ1RSTCAqLworCXNwaW5sb2NrX3QJ CQljbGtfbG9jazsKKworCXN0cnVjdCBiY21hc3BfbmV0X2ZpbHRlcgluZXRfZmlsdGVyc1tOVU1f TkVUX0ZJTFRFUlNdOworCS8qIE1heCBhbW91bnQgb2YgZmlsdGVycyBtaW51cyByZXNlcnZlZCBm aWx0ZXJzICovCisJdW5zaWduZWQgaW50CQkJbmV0X2ZpbHRlcnNfY291bnRfbWF4OworCS8qIE5l dHdvcmsgZmlsdGVyIGxvY2sgKi8KKwlzdHJ1Y3QgbXV0ZXgJCQluZXRfbG9jazsKK307CisKK3N0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY21hc3BfaW50Zl9yeF9kZXNjX3JlYWQoc3RydWN0 IGJjbWFzcF9pbnRmICppPQpudGYpCit7CisJcmV0dXJuIGludGYtPm9wcy0+cnhfZGVzY19yZWFk KGludGYpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYmNtYXNwX2ludGZfcnhfYnVmZmVyX3dy aXRlKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCQkJICAgICAgIGRtYV9hZGRyX3QgYWRk cikKK3sKKwlpbnRmLT5vcHMtPnJ4X2J1ZmZlcl93cml0ZShpbnRmLCBhZGRyKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIGJjbWFzcF9pbnRmX3J4X2Rlc2Nfd3JpdGUoc3RydWN0IGJjbWFzcF9p bnRmICppbnRmLAorCQkJCQkgICAgIGRtYV9hZGRyX3QgYWRkcikKK3sKKwlpbnRmLT5vcHMtPnJ4 X2Rlc2Nfd3JpdGUoaW50ZiwgYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZyBiY21hc3BfaW50Zl90eF9yZWFkKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlyZXR1 cm4gaW50Zi0+b3BzLT50eF9yZWFkKGludGYpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYmNt YXNwX2ludGZfdHhfd3JpdGUoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLAorCQkJCQlkbWFfYWRk cl90IGFkZHIpCit7CisJaW50Zi0+b3BzLT50eF93cml0ZShpbnRmLCBhZGRyKTsKK30KKworI2Rl ZmluZSBfX0JDTUFTUF9JT19NQUNSTyhuYW1lLCBtKQkJCQkJXAorc3RhdGljIGlubGluZSB1MzIg bmFtZSMjX3JsKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIG9mZikJCVwKK3sJCQkJCQkJ CQlcCisJdTMyIHJlZyA9M0QgcmVhZGxfcmVsYXhlZChpbnRmLT5tICsgb2ZmKTsJCQkJXAorCXJl dHVybiByZWc7CQkJCQkJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSMj X3dsKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIHZhbCwgdTMyIG9mZilcCit7CQkJCQkJ CQkJXAorCXdyaXRlbF9yZWxheGVkKHZhbCwgaW50Zi0+bSArIG9mZik7CQkJCVwKK30KKworI2Rl ZmluZSBCQ01BU1BfSU9fTUFDUk8obmFtZSkJCV9fQkNNQVNQX0lPX01BQ1JPKG5hbWUsIHJlcy5u YW1lKQorI2RlZmluZSBCQ01BU1BfRlBfSU9fTUFDUk8obmFtZSkJX19CQ01BU1BfSU9fTUFDUk8o bmFtZSwgbmFtZSkKKworQkNNQVNQX0lPX01BQ1JPKHVtYWMpOworQkNNQVNQX0lPX01BQ1JPKHVt YWMyZmIpOworQkNNQVNQX0lPX01BQ1JPKHJnbWlpKTsKK0JDTUFTUF9GUF9JT19NQUNSTyh0eF9z cGJfZG1hKTsKK0JDTUFTUF9JT19NQUNSTyh0eF9zcGJfY3RybCk7CitCQ01BU1BfSU9fTUFDUk8o dHhfc3BiX3RvcCk7CitCQ01BU1BfSU9fTUFDUk8odHhfZXBrdF9jb3JlKTsKK0JDTUFTUF9JT19N QUNSTyh0eF9wYXVzZV9jdHJsKTsKK0JDTUFTUF9GUF9JT19NQUNSTyhyeF9lZHBrdF9kbWEpOwor QkNNQVNQX0ZQX0lPX01BQ1JPKHJ4X2VkcGt0X2NmZyk7CisKKyNkZWZpbmUgX19CQ01BU1BfRlBf SU9fTUFDUk9fUShuYW1lLCBtKQkJCQkJXAorc3RhdGljIGlubGluZSB1NjQgbmFtZSMjX3JxKHN0 cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyIG9mZikJCVwKK3sJCQkJCQkJCQlcCisJdTY0IHJl ZyA9M0QgcmVhZHFfcmVsYXhlZChpbnRmLT5tICsgb2ZmKTsJCQkJXAorCXJldHVybiByZWc7CQkJ CQkJCVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSMjX3dxKHN0cnVjdCBi Y21hc3BfaW50ZiAqaW50ZiwgdTY0IHZhbCwgdTMyIG9mZilcCit7CQkJCQkJCQkJXAorCXdyaXRl cV9yZWxheGVkKHZhbCwgaW50Zi0+bSArIG9mZik7CQkJCVwKK30KKworI2RlZmluZSBCQ01BU1Bf RlBfSU9fTUFDUk9fUShuYW1lKQlfX0JDTUFTUF9GUF9JT19NQUNST19RKG5hbWUsIG5hbWUpCisK K0JDTUFTUF9GUF9JT19NQUNST19RKHR4X3NwYl9kbWEpOworQkNNQVNQX0ZQX0lPX01BQ1JPX1Eo cnhfZWRwa3RfZG1hKTsKK0JDTUFTUF9GUF9JT19NQUNST19RKHJ4X2VkcGt0X2NmZyk7CisKKyNk ZWZpbmUgUEtUX09GRkxPQURfTk9QCQkJKDAgPDwgMjgpCisjZGVmaW5lIFBLVF9PRkZMT0FEX0hE Ul9PUAkJKDEgPDwgMjgpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFJfV1JCQUNLCQlCSVQoMTkp CisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFJfQ09VTlQoeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUg IFBLVF9PRkZMT0FEX0hEUl9TSVpFXzEoeCkJKCh4KSA8PCA0KQorI2RlZmluZSAgUEtUX09GRkxP QURfSERSX1NJWkVfMih4KQkoeCkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0hEUjJfU0laRV8yKHgp CSgoeCkgPDwgMjQpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9IRFIyX1NJWkVfMyh4KQkoKHgpIDw8 IDEyKQorI2RlZmluZSAgUEtUX09GRkxPQURfSERSMl9TSVpFXzQoeCkJKHgpCisjZGVmaW5lIFBL VF9PRkZMT0FEX0VQS1RfT1AJCSgyIDw8IDI4KQorI2RlZmluZSAgUEtUX09GRkxPQURfRVBLVF9X UkJBQ0sJQklUKDIzKQorI2RlZmluZSAgUEtUX09GRkxPQURfRVBLVF9JUCh4KQkJKCh4KSA8PCAy MSkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0VQS1RfVFAoeCkJCSgoeCkgPDwgMTkpCisjZGVmaW5l ICBQS1RfT0ZGTE9BRF9FUEtUX0xFTih4KQkoKHgpIDw8IDE2KQorI2RlZmluZSAgUEtUX09GRkxP QURfRVBLVF9DU1VNX0wzCUJJVCgxNSkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0VQS1RfQ1NVTV9M MglCSVQoMTQpCisjZGVmaW5lICBQS1RfT0ZGTE9BRF9FUEtUX0lEKHgpCQkoKHgpIDw8IDEyKQor I2RlZmluZSAgUEtUX09GRkxPQURfRVBLVF9TRVEoeCkJKCh4KSA8PCAxMCkKKyNkZWZpbmUgIFBL VF9PRkZMT0FEX0VQS1RfVFMoeCkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgIFBLVF9PRkZMT0FEX0VQ S1RfQkxPQyh4KQkoeCkKKyNkZWZpbmUgUEtUX09GRkxPQURfRU5EX09QCQkoNyA8PCAyOCkKKwor c3RydWN0IGJjbWFzcF9wa3Rfb2ZmbG9hZCB7CisJX19iZTMyCQlub3A7CisJX19iZTMyCQloZWFk ZXI7CisJX19iZTMyCQloZWFkZXIyOworCV9fYmUzMgkJZXBrdDsKKwlfX2JlMzIJCWVuZDsKK307 CisKKyNkZWZpbmUgQkNNQVNQX0NPUkVfSU9fTUFDUk8obmFtZSwgb2Zmc2V0KQkJCQlcCitzdGF0 aWMgaW5saW5lIHUzMiBuYW1lIyNfY29yZV9ybChzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsCQlc CisJCQkJIHUzMiBvZmYpCQkJCVwKK3sJCQkJCQkJCQlcCisJdTMyIHJlZyA9M0QgcmVhZGxfcmVs YXhlZChwcml2LT5iYXNlICsgKG9mZnNldCkgKyBvZmYpOwkJXAorCXJldHVybiByZWc7CQkJCQkJ CVwKK30JCQkJCQkJCQlcCitzdGF0aWMgaW5saW5lIHZvaWQgbmFtZSMjX2NvcmVfd2woc3RydWN0 IGJjbWFzcF9wcml2ICpwcml2LAkJXAorCQkJCSAgdTMyIHZhbCwgdTMyIG9mZikJCQlcCit7CQkJ CQkJCQkJXAorCXdyaXRlbF9yZWxheGVkKHZhbCwgcHJpdi0+YmFzZSArIChvZmZzZXQpICsgb2Zm KTsJCVwKK30KKworQkNNQVNQX0NPUkVfSU9fTUFDUk8oaW50cjIsIEFTUF9JTlRSMl9PRkZTRVQp OworQkNNQVNQX0NPUkVfSU9fTUFDUk8od2FrZXVwX2ludHIyLCBBU1BfV0FLRVVQX0lOVFIyX09G RlNFVCk7CitCQ01BU1BfQ09SRV9JT19NQUNSTyh0eF9hbmFseXRpY3MsIEFTUF9UWF9BTkFMWVRJ Q1NfT0ZGU0VUKTsKK0JDTUFTUF9DT1JFX0lPX01BQ1JPKHJ4X2FuYWx5dGljcywgQVNQX1JYX0FO QUxZVElDU19PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8ocnhfY3RybCwgQVNQX1JYX0NU UkxfT0ZGU0VUKTsKK0JDTUFTUF9DT1JFX0lPX01BQ1JPKHJ4X2ZpbHRlciwgQVNQX1JYX0ZJTFRF Ul9PRkZTRVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8ocnhfZWRwa3QsIEFTUF9FRFBLVF9PRkZT RVQpOworQkNNQVNQX0NPUkVfSU9fTUFDUk8oY3RybCwgQVNQX0NUUkwpOworCitzdHJ1Y3QgYmNt YXNwX2ludGYgKmJjbWFzcF9pbnRlcmZhY2VfY3JlYXRlKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJp diwKKwkJCQkJICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbmRldl9kbik7CisKK3ZvaWQgYmNtYXNw X2ludGVyZmFjZV9kZXN0cm95KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCB1bnJlZ2lz dGVyKTsKKwordm9pZCBiY21hc3BfZW5hYmxlX3R4X2lycShzdHJ1Y3QgYmNtYXNwX2ludGYgKmlu dGYsIGludCBlbik7CisKK3ZvaWQgYmNtYXNwX2VuYWJsZV9yeF9pcnEoc3RydWN0IGJjbWFzcF9p bnRmICppbnRmLCBpbnQgZW4pOworCit2b2lkIGJjbWFzcF9mbHVzaF9yeF9wb3J0KHN0cnVjdCBi Y21hc3BfaW50ZiAqaW50Zik7CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNt YXNwX2V0aHRvb2xfb3BzOworCitpbnQgYmNtYXNwX2ludGVyZmFjZV9zdXNwZW5kKHN0cnVjdCBi Y21hc3BfaW50ZiAqaW50Zik7CisKK2ludCBiY21hc3BfaW50ZXJmYWNlX3Jlc3VtZShzdHJ1Y3Qg YmNtYXNwX2ludGYgKmludGYpOworCit2b2lkIGJjbWFzcF9zZXRfcHJvbWlzYyhzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYsIGJvb2wgZW4pOworCit2b2lkIGJjbWFzcF9zZXRfYWxsbXVsdGkoc3Ry dWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuKTsKKwordm9pZCBiY21hc3Bfc2V0X2Jyb2Fk KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbik7CisKK3ZvaWQgYmNtYXNwX3NldF9v YWRkcihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIs CisJCSAgICAgIGJvb2wgZW4pOworCitpbnQgYmNtYXNwX3NldF9lbl9tZGFfZmlsdGVyKHN0cnVj dCBiY21hc3BfaW50ZiAqaW50ZiwgdW5zaWduZWQgY2hhciAqYWRkciwKKwkJCSAgICAgdW5zaWdu ZWQgY2hhciAqbWFzayk7CisKK3ZvaWQgYmNtYXNwX2Rpc2FibGVfYWxsX2ZpbHRlcnMoc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmKTsKKwordm9pZCBiY21hc3BfY29yZV9jbG9ja19zZXRfaW50Zihz dHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgZW4pOworCitzdHJ1Y3QgYmNtYXNwX25ldF9m aWx0ZXIgKmJjbWFzcF9uZXRmaWx0X2dldF9pbml0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwK KwkJCQkJCSAgaW50IGxvYywgYm9vbCB3YWtlX2ZpbHRlciwKKwkJCQkJCSAgYm9vbCBpbml0KTsK KworaW50IGJjbWFzcF9uZXRmaWx0X2NoZWNrX2R1cChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYs CisJCQkgICAgIHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMpOworCit2b2lkIGJjbWFz cF9uZXRmaWx0X3JlbGVhc2Uoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLAorCQkJICAgIHN0cnVj dCBiY21hc3BfbmV0X2ZpbHRlciAqbmZpbHQpOworCitpbnQgYmNtYXNwX25ldGZpbHRfZ2V0X2Fj dGl2ZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpOworCit2b2lkIGJjbWFzcF9uZXRmaWx0X2dl dF9hbGxfYWN0aXZlKHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgdTMyICpydWxlX2xvYz0KcywK KwkJCQkgICB1MzIgKnJ1bGVfY250KTsKKwordm9pZCBiY21hc3BfbmV0ZmlsdF9zdXNwZW5kKHN0 cnVjdCBiY21hc3BfaW50ZiAqaW50Zik7CisKK3ZvaWQgYmNtYXNwX2VlZV9lbmFibGVfc2V0KHN0 cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwgYm9vbCBlbmFibGUpOworI2VuZGlmCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9ldGh0b29sLmMgYi9k cml2ZXJzLz0KbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlMDRhYjIxNjYxNgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0 aHRvb2wuYwpAQCAtMCwwICsxLDU2OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKKyNkZWZpbmUgcHJfZm10KGZtdCkJCQkJImJjbWFzcF9ldGh0b29sOiAiIGZtdAorCisj aW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyNp bmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4KKworI2luY2x1ZGUgImJjbWFzcC5oIgorI2luY2x1ZGUgImJjbWFzcF9pbnRmX2RlZnMu aCIKKworLyogc3RhbmRhcmQgZXRodG9vbCBzdXBwb3J0IGZ1bmN0aW9ucy4gKi8KK2VudW0gYmNt YXNwX3N0YXRfdHlwZSB7CisJQkNNQVNQX1NUQVRfTkVUREVWID0zRCAtMSwKKwlCQ01BU1BfU1RB VF9NSUJfUlgsCisJQkNNQVNQX1NUQVRfTUlCX1RYLAorCUJDTUFTUF9TVEFUX1JVTlQsCisJQkNN QVNQX1NUQVRfUlhfRURQS1QsCisJQkNNQVNQX1NUQVRfUlhfQ1RSTCwKKwlCQ01BU1BfU1RBVF9T T0ZULAorfTsKKworc3RydWN0IGJjbWFzcF9zdGF0cyB7CisJY2hhciBzdGF0X3N0cmluZ1tFVEhf R1NUUklOR19MRU5dOworCWludCBzdGF0X3NpemVvZjsKKwlpbnQgc3RhdF9vZmZzZXQ7CisJZW51 bSBiY21hc3Bfc3RhdF90eXBlIHR5cGU7CisJLyogcmVnaXN0ZXIgb2Zmc2V0IGZyb20gYmFzZSBm b3IgbWlzYyBjb3VudGVycyAqLworCXUxNiByZWdfb2Zmc2V0OworfTsKKworI2RlZmluZSBTVEFU X05FVERFVihtKSB7IFwKKwkuc3RhdF9zdHJpbmcgPTNEIF9fc3RyaW5naWZ5KG0pLCBcCisJLnN0 YXRfc2l6ZW9mID0zRCBzaXplb2YoKChzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqKTApLT5tKSwg XAorCS5zdGF0X29mZnNldCA9M0Qgb2Zmc2V0b2Yoc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMsIG0p LCBcCisJLnR5cGUgPTNEIEJDTUFTUF9TVEFUX05FVERFViwgXAorfQorCisjZGVmaW5lIFNUQVRf QkNNQVNQX01JQihzdHIsIG0sIF90eXBlKSB7IFwKKwkuc3RhdF9zdHJpbmcgPTNEIHN0ciwgXAor CS5zdGF0X3NpemVvZiA9M0Qgc2l6ZW9mKCgoc3RydWN0IGJjbWFzcF9pbnRmICopMCktPm0pLCBc CisJLnN0YXRfb2Zmc2V0ID0zRCBvZmZzZXRvZihzdHJ1Y3QgYmNtYXNwX2ludGYsIG0pLCBcCisJ LnR5cGUgPTNEIF90eXBlLCBcCit9CisKKyNkZWZpbmUgU1RBVF9CQ01BU1BfT0ZGU0VUKHN0ciwg bSwgX3R5cGUsIG9mZnNldCkgeyBcCisJLnN0YXRfc3RyaW5nID0zRCBzdHIsIFwKKwkuc3RhdF9z aXplb2YgPTNEIHNpemVvZigoKHN0cnVjdCBiY21hc3BfaW50ZiAqKTApLT5tKSwgXAorCS5zdGF0 X29mZnNldCA9M0Qgb2Zmc2V0b2Yoc3RydWN0IGJjbWFzcF9pbnRmLCBtKSwgXAorCS50eXBlID0z RCBfdHlwZSwgXAorCS5yZWdfb2Zmc2V0ID0zRCBvZmZzZXQsIFwKK30KKworI2RlZmluZSBTVEFU X0JDTUFTUF9NSUJfUlgoc3RyLCBtKSBcCisJU1RBVF9CQ01BU1BfTUlCKHN0ciwgbSwgQkNNQVNQ X1NUQVRfTUlCX1JYKQorI2RlZmluZSBTVEFUX0JDTUFTUF9NSUJfVFgoc3RyLCBtKSBcCisJU1RB VF9CQ01BU1BfTUlCKHN0ciwgbSwgQkNNQVNQX1NUQVRfTUlCX1RYKQorI2RlZmluZSBTVEFUX0JD TUFTUF9SVU5UKHN0ciwgbSkgXAorCVNUQVRfQkNNQVNQX01JQihzdHIsIG0sIEJDTUFTUF9TVEFU X1JVTlQpCisjZGVmaW5lIFNUQVRfQkNNQVNQX1JYX0VEUEtUKHN0ciwgbSwgb2Zmc2V0KSBcCisJ U1RBVF9CQ01BU1BfT0ZGU0VUKHN0ciwgbSwgQkNNQVNQX1NUQVRfUlhfRURQS1QsIG9mZnNldCkK KyNkZWZpbmUgU1RBVF9CQ01BU1BfUlhfQ1RSTChzdHIsIG0sIG9mZnNldCkgXAorCVNUQVRfQkNN QVNQX09GRlNFVChzdHIsIG0sIEJDTUFTUF9TVEFUX1JYX0NUUkwsIG9mZnNldCkKKyNkZWZpbmUg U1RBVF9CQ01BU1BfU09GVF9NSUIobSkgXAorCVNUQVRfQkNNQVNQX01JQihfX3N0cmluZ2lmeSht KSwgbWliLm0sIEJDTUFTUF9TVEFUX1NPRlQpCisKKy8qIFRoZXJlIGlzIGEgMHgxMCBnYXAgaW4g aGFyZHdhcmUgYmV0d2VlbiB0aGUgZW5kIG9mIFJYIGFuZCBiZWdpbm5pbmcgb2YgPQpUWAorICog c3RhdHMgYW5kIHRoZW4gYmV0d2VlbiB0aGUgZW5kIG9mIFRYIHN0YXRzIGFuZCB0aGUgYmVnaW5u aW5nIG9mIHRoZSBSWCA9ClJVTlQuCisgKiBUaGUgc29mdHdhcmUgc3RydWN0dXJlIGFscmVhZHkg YWNjb3VudHMgZm9yIHNpemVvZih1MzIpIGJldHdlZW4gbWVtYmVycz0KIHNvCisgKiBuZWVkIHRv IGFkZCAweGMgdG8gb2Zmc2V0IGNvcnJlY3RseSBpbnRvIHRoZSBoYXJkd2FyZSByZWdpc3Rlci4K KyAqLworI2RlZmluZSBCQ01BU1BfU1RBVF9PRkZTRVQJMHhjCisKKy8qIEhhcmR3YXJlIGNvdW50 ZXJzIG11c3QgYmUga2VwdCBpbiBzeW5jIGJlY2F1c2UgdGhlIG9yZGVyL29mZnNldAorICogaXMg aW1wb3J0YW50IGhlcmUgKG9yZGVyIGluIHN0cnVjdHVyZSBkZWNsYXJhdGlvbiA9M0Qgb3JkZXIg aW4gaGFyZHdhcmUpCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtYXNwX3N0YXRzIGJjbWFz cF9nc3RyaW5nc19zdGF0c1tdID0zRCB7CisJLyogZ2VuZXJhbCBzdGF0cyAqLworCVNUQVRfTkVU REVWKHJ4X3BhY2tldHMpLAorCVNUQVRfTkVUREVWKHR4X3BhY2tldHMpLAorCVNUQVRfTkVUREVW KHJ4X2J5dGVzKSwKKwlTVEFUX05FVERFVih0eF9ieXRlcyksCisJU1RBVF9ORVRERVYocnhfZXJy b3JzKSwKKwlTVEFUX05FVERFVih0eF9lcnJvcnMpLAorCVNUQVRfTkVUREVWKHJ4X2Ryb3BwZWQp LAorCVNUQVRfTkVUREVWKHR4X2Ryb3BwZWQpLAorCVNUQVRfTkVUREVWKG11bHRpY2FzdCksCisJ LyogVW5pTUFDIFJTViBjb3VudGVycyAqLworCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfNjRfb2N0 ZXRzIiwgbWliLnJ4LnBrdF9jbnQuY250XzY0KSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4XzY1 XzEyN19vY3QiLCBtaWIucngucGt0X2NudC5jbnRfMTI3KSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgo InJ4XzEyOF8yNTVfb2N0IiwgbWliLnJ4LnBrdF9jbnQuY250XzI1NSksCisJU1RBVF9CQ01BU1Bf TUlCX1JYKCJyeF8yNTZfNTExX29jdCIsIG1pYi5yeC5wa3RfY250LmNudF81MTEpLAorCVNUQVRf QkNNQVNQX01JQl9SWCgicnhfNTEyXzEwMjNfb2N0IiwgbWliLnJ4LnBrdF9jbnQuY250XzEwMjMp LAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfMTAyNF8xNTE4X29jdCIsIG1pYi5yeC5wa3RfY250 LmNudF8xNTE4KSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4X3ZsYW5fMTUxOV8xNTIyX29jdCIs IG1pYi5yeC5wa3RfY250LmNudF9tZ3YpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfMTUyMl8y MDQ3X29jdCIsIG1pYi5yeC5wa3RfY250LmNudF8yMDQ3KSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgo InJ4XzIwNDhfNDA5NV9vY3QiLCBtaWIucngucGt0X2NudC5jbnRfNDA5NSksCisJU1RBVF9CQ01B U1BfTUlCX1JYKCJyeF80MDk2XzkyMTZfb2N0IiwgbWliLnJ4LnBrdF9jbnQuY250XzkyMTYpLAor CVNUQVRfQkNNQVNQX01JQl9SWCgicnhfcGt0cyIsIG1pYi5yeC5wa3QpLAorCVNUQVRfQkNNQVNQ X01JQl9SWCgicnhfYnl0ZXMiLCBtaWIucnguYnl0ZXMpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgi cnhfbXVsdGljYXN0IiwgbWliLnJ4Lm1jYSksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9icm9h ZGNhc3QiLCBtaWIucnguYmNhKSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4X2ZjcyIsIG1pYi5y eC5mY3MpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfY29udHJvbCIsIG1pYi5yeC5jZiksCisJ U1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9wYXVzZSIsIG1pYi5yeC5wZiksCisJU1RBVF9CQ01BU1Bf TUlCX1JYKCJyeF91bmtub3duIiwgbWliLnJ4LnVvKSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4 X2FsaWduIiwgbWliLnJ4LmFsbiksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9vdXRyYW5nZSIs IG1pYi5yeC5mbHIpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfY29kZSIsIG1pYi5yeC5jZGUp LAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfY2FycmllciIsIG1pYi5yeC5mY3IpLAorCVNUQVRf QkNNQVNQX01JQl9SWCgicnhfb3ZlcnNpemUiLCBtaWIucngub3ZyKSwKKwlTVEFUX0JDTUFTUF9N SUJfUlgoInJ4X2phYmJlciIsIG1pYi5yeC5qYnIpLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhf bXR1X2VyciIsIG1pYi5yeC5tdHVlKSwKKwlTVEFUX0JDTUFTUF9NSUJfUlgoInJ4X2dvb2RfcGt0 cyIsIG1pYi5yeC5wb2spLAorCVNUQVRfQkNNQVNQX01JQl9SWCgicnhfdW5pY2FzdCIsIG1pYi5y eC51YyksCisJU1RBVF9CQ01BU1BfTUlCX1JYKCJyeF9wcHAiLCBtaWIucngucHBwKSwKKwlTVEFU X0JDTUFTUF9NSUJfUlgoInJ4X2NyYyIsIG1pYi5yeC5yY3JjKSwKKwkvKiBVbmlNQUMgVFNWIGNv dW50ZXJzICovCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF82NF9vY3RldHMiLCBtaWIudHgucGt0 X2NudC5jbnRfNjQpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfNjVfMTI3X29jdCIsIG1pYi50 eC5wa3RfY250LmNudF8xMjcpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfMTI4XzI1NV9vY3Qi LCBtaWIudHgucGt0X2NudC5jbnRfMjU1KSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4XzI1Nl81 MTFfb2N0IiwgbWliLnR4LnBrdF9jbnQuY250XzUxMSksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0 eF81MTJfMTAyM19vY3QiLCBtaWIudHgucGt0X2NudC5jbnRfMTAyMyksCisJU1RBVF9CQ01BU1Bf TUlCX1RYKCJ0eF8xMDI0XzE1MThfb2N0IiwgbWliLnR4LnBrdF9jbnQuY250XzE1MTgpLAorCVNU QVRfQkNNQVNQX01JQl9UWCgidHhfdmxhbl8xNTE5XzE1MjJfb2N0IiwgbWliLnR4LnBrdF9jbnQu Y250X21ndiksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF8xNTIyXzIwNDdfb2N0IiwgbWliLnR4 LnBrdF9jbnQuY250XzIwNDcpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfMjA0OF80MDk1X29j dCIsIG1pYi50eC5wa3RfY250LmNudF80MDk1KSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4XzQw OTZfOTIxNl9vY3QiLCBtaWIudHgucGt0X2NudC5jbnRfOTIxNiksCisJU1RBVF9CQ01BU1BfTUlC X1RYKCJ0eF9wa3RzIiwgbWliLnR4LnBrdHMpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfbXVs dGljYXN0IiwgbWliLnR4Lm1jYSksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF9icm9hZGNhc3Qi LCBtaWIudHguYmNhKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X3BhdXNlIiwgbWliLnR4LnBm KSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X2NvbnRyb2wiLCBtaWIudHguY2YpLAorCVNUQVRf QkNNQVNQX01JQl9UWCgidHhfZmNzX2VyciIsIG1pYi50eC5mY3MpLAorCVNUQVRfQkNNQVNQX01J Ql9UWCgidHhfb3ZlcnNpemUiLCBtaWIudHgub3ZyKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4 X2RlZmVyIiwgbWliLnR4LmRyZiksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF9leGNlc3NfZGVm ZXIiLCBtaWIudHguZWRmKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X3NpbmdsZV9jb2wiLCBt aWIudHguc2NsKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X211bHRpX2NvbCIsIG1pYi50eC5t Y2wpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfbGF0ZV9jb2wiLCBtaWIudHgubGNsKSwKKwlT VEFUX0JDTUFTUF9NSUJfVFgoInR4X2V4Y2Vzc19jb2wiLCBtaWIudHguZWNsKSwKKwlTVEFUX0JD TUFTUF9NSUJfVFgoInR4X2ZyYWdzIiwgbWliLnR4LmZyZyksCisJU1RBVF9CQ01BU1BfTUlCX1RY KCJ0eF90b3RhbF9jb2wiLCBtaWIudHgubmNsKSwKKwlTVEFUX0JDTUFTUF9NSUJfVFgoInR4X2ph YmJlciIsIG1pYi50eC5qYnIpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfYnl0ZXMiLCBtaWIu dHguYnl0ZXMpLAorCVNUQVRfQkNNQVNQX01JQl9UWCgidHhfZ29vZF9wa3RzIiwgbWliLnR4LnBv ayksCisJU1RBVF9CQ01BU1BfTUlCX1RYKCJ0eF91bmljYXN0IiwgbWliLnR4LnVjKSwKKwkvKiBV bmlNQUMgUlVOVCBjb3VudGVycyAqLworCVNUQVRfQkNNQVNQX1JVTlQoInJ4X3J1bnRfcGt0cyIs IG1pYi5yeF9ydW50X2NudCksCisJU1RBVF9CQ01BU1BfUlVOVCgicnhfcnVudF92YWxpZF9mY3Mi LCBtaWIucnhfcnVudF9mY3MpLAorCVNUQVRfQkNNQVNQX1JVTlQoInJ4X3J1bnRfaW52YWxfZmNz X2FsaWduIiwgbWliLnJ4X3J1bnRfZmNzX2FsaWduKSwKKwlTVEFUX0JDTUFTUF9SVU5UKCJyeF9y dW50X2J5dGVzIiwgbWliLnJ4X3J1bnRfYnl0ZXMpLAorCS8qIEVEUEtUIGNvdW50ZXJzICovCisJ U1RBVF9CQ01BU1BfUlhfRURQS1QoImVkcGt0X3RzIiwgbWliLmVkcGt0X3RzLAorCQkJICAgICBB U1BfRURQS1RfUlhfVFNfQ09VTlRFUiksCisJU1RBVF9CQ01BU1BfUlhfRURQS1QoImVkcGt0X3J4 X3BrdF9jbnQiLCBtaWIuZWRwa3RfcnhfcGt0X2NudCwKKwkJCSAgICAgQVNQX0VEUEtUX1JYX1BL VF9DTlQpLAorCVNUQVRfQkNNQVNQX1JYX0VEUEtUKCJlZHBrdF9oZHJfZXh0X2NudCIsIG1pYi5l ZHBrdF9oZHJfZXh0X2NudCwKKwkJCSAgICAgQVNQX0VEUEtUX0hEUl9FWFRSX0NOVCksCisJU1RB VF9CQ01BU1BfUlhfRURQS1QoImVkcGt0X2hkcl9vdXRfY250IiwgbWliLmVkcGt0X2hkcl9vdXRf Y250LAorCQkJICAgICBBU1BfRURQS1RfSERSX09VVF9DTlQpLAorCS8qIEFTUCBSWCBjb250cm9s ICovCisJU1RBVF9CQ01BU1BfUlhfQ1RSTCgidW1hY19mcm1fY250IiwgbWliLnVtYWNfZnJtX2Nu dCwKKwkJCSAgICBBU1BfUlhfQ1RSTF9VTUFDXzBfRlJBTUVfQ09VTlQpLAorCVNUQVRfQkNNQVNQ X1JYX0NUUkwoImZiX2ZybV9jbnQiLCBtaWIuZmJfZnJtX2NudCwKKwkJCSAgICBBU1BfUlhfQ1RS TF9GQl8wX0ZSQU1FX0NPVU5UKSwKKwlTVEFUX0JDTUFTUF9SWF9DVFJMKCJmYl9vdXRfZnJtX2Nu dCIsIG1pYi5mYl9vdXRfZnJtX2NudCwKKwkJCSAgICBBU1BfUlhfQ1RSTF9GQl9PVVRfRlJBTUVf Q09VTlQpLAorCVNUQVRfQkNNQVNQX1JYX0NUUkwoImZiX2ZpbHRfb3V0X2ZybV9jbnQiLCBtaWIu ZmJfZmlsdF9vdXRfZnJtX2NudCwKKwkJCSAgICBBU1BfUlhfQ1RSTF9GQl9GSUxUX09VVF9GUkFN RV9DT1VOVCksCisJU1RBVF9CQ01BU1BfUlhfQ1RSTCgiZmJfcnhfZmlmb19kZXB0aCIsIG1pYi5m Yl9yeF9maWZvX2RlcHRoLAorCQkJICAgIEFTUF9SWF9DVFJMX0ZCX1JYX0ZJRk9fREVQVEgpLAor CS8qIFNvZnR3YXJlIG1haW50YWluZWQgc3RhdGlzdGljcyAqLworCVNUQVRfQkNNQVNQX1NPRlRf TUlCKGFsbG9jX3J4X2J1ZmZfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQihhbGxvY19y eF9za2JfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQihyeF9kbWFfZmFpbGVkKSwKKwlT VEFUX0JDTUFTUF9TT0ZUX01JQih0eF9kbWFfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01J QihtY19maWx0ZXJzX2Z1bGxfY250KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQih1Y19maWx0ZXJz X2Z1bGxfY250KSwKKwlTVEFUX0JDTUFTUF9TT0ZUX01JQihmaWx0ZXJzX2NvbWJpbmVfY250KSwK KwlTVEFUX0JDTUFTUF9TT0ZUX01JQihwcm9taXNjX2ZpbHRlcnNfY250KSwKKwlTVEFUX0JDTUFT UF9TT0ZUX01JQih0eF9yZWFsbG9jX29mZmxvYWRfZmFpbGVkKSwKKwlTVEFUX0JDTUFTUF9TT0ZU X01JQih0eF9yZWFsbG9jX29mZmxvYWQpLAorCit9OworCisjZGVmaW5lIEJDTUFTUF9TVEFUU19M RU4JQVJSQVlfU0laRShiY21hc3BfZ3N0cmluZ3Nfc3RhdHMpCisKK3N0YXRpYyB1MTYgYmNtYXNw X3N0YXRfZml4dXBfb2Zmc2V0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCQkgICAgY29u c3Qgc3RydWN0IGJjbWFzcF9zdGF0cyAqcykKK3sKKwlzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYg PTNEIGludGYtPnBhcmVudDsKKworCWlmICghc3RyY21wKCJmYl9vdXRfZnJtX2NudCIsIHMtPnN0 YXRfc3RyaW5nKSkKKwkJcmV0dXJuIHByaXYtPmh3X2luZm8tPnJ4X2N0cmxfZmJfb3V0X2ZyYW1l X2NvdW50OworCisJaWYgKCFzdHJjbXAoImZiX2ZpbHRfb3V0X2ZybV9jbnQiLCBzLT5zdGF0X3N0 cmluZykpCisJCXJldHVybiBwcml2LT5od19pbmZvLT5yeF9jdHJsX2ZiX2ZpbHRfb3V0X2ZyYW1l X2NvdW50OworCisJaWYgKCFzdHJjbXAoImZiX3J4X2ZpZm9fZGVwdGgiLCBzLT5zdGF0X3N0cmlu ZykpCisJCXJldHVybiBwcml2LT5od19pbmZvLT5yeF9jdHJsX2ZiX3J4X2ZpZm9fZGVwdGg7CisK KwlyZXR1cm4gcy0+cmVnX29mZnNldDsKK30KKworc3RhdGljIGludCBiY21hc3BfZ2V0X3NzZXRf Y291bnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHN0cmluZ19zZXQpCit7CisJc3dpdGNo IChzdHJpbmdfc2V0KSB7CisJY2FzZSBFVEhfU1NfU1RBVFM6CisJCXJldHVybiBCQ01BU1BfU1RB VFNfTEVOOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGJjbWFzcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgc3Ry aW5nc2V0LAorCQkJICAgICAgIHU4ICpkYXRhKQoreworCWludCBpOworCisJc3dpdGNoIChzdHJp bmdzZXQpIHsKKwljYXNlIEVUSF9TU19TVEFUUzoKKwkJZm9yIChpID0zRCAwOyBpIDwgQkNNQVNQ X1NUQVRTX0xFTjsgaSsrKSB7CisJCQltZW1jcHkoZGF0YSArIGkgKiBFVEhfR1NUUklOR19MRU4s CisJCQkgICAgICAgYmNtYXNwX2dzdHJpbmdzX3N0YXRzW2ldLnN0YXRfc3RyaW5nLAorCQkJICAg ICAgIEVUSF9HU1RSSU5HX0xFTik7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJu OworCX0KK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3VwZGF0ZV9taWJfY291bnRlcnMoc3RydWN0 IGJjbWFzcF9pbnRmICpwcml2KQoreworCWludCBpLCBqID0zRCAwOworCisJZm9yIChpID0zRCAw OyBpIDwgQkNNQVNQX1NUQVRTX0xFTjsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBiY21hc3Bfc3Rh dHMgKnM7CisJCXUxNiBvZmZzZXQgPTNEIDA7CisJCXUzMiB2YWwgPTNEIDA7CisJCWNoYXIgKnA7 CisKKwkJcyA9M0QgJmJjbWFzcF9nc3RyaW5nc19zdGF0c1tpXTsKKwkJc3dpdGNoIChzLT50eXBl KSB7CisJCWNhc2UgQkNNQVNQX1NUQVRfTkVUREVWOgorCQljYXNlIEJDTUFTUF9TVEFUX1NPRlQ6 CisJCQljb250aW51ZTsKKwkJY2FzZSBCQ01BU1BfU1RBVF9SVU5UOgorCQkJb2Zmc2V0ICs9M0Qg QkNNQVNQX1NUQVRfT0ZGU0VUOworCQkJZmFsbHRocm91Z2g7CisJCWNhc2UgQkNNQVNQX1NUQVRf TUlCX1RYOgorCQkJb2Zmc2V0ICs9M0QgQkNNQVNQX1NUQVRfT0ZGU0VUOworCQkJZmFsbHRocm91 Z2g7CisJCWNhc2UgQkNNQVNQX1NUQVRfTUlCX1JYOgorCQkJdmFsID0zRCB1bWFjX3JsKHByaXYs IFVNQ19NSUJfU1RBUlQgKyBqICsgb2Zmc2V0KTsKKwkJCW9mZnNldCA9M0QgMDsJLyogUmVzZXQg T2Zmc2V0ICovCisJCQlicmVhazsKKwkJY2FzZSBCQ01BU1BfU1RBVF9SWF9FRFBLVDoKKwkJCXZh bCA9M0QgcnhfZWRwa3RfY29yZV9ybChwcml2LT5wYXJlbnQsIHMtPnJlZ19vZmZzZXQpOworCQkJ YnJlYWs7CisJCWNhc2UgQkNNQVNQX1NUQVRfUlhfQ1RSTDoKKwkJCW9mZnNldCA9M0QgYmNtYXNw X3N0YXRfZml4dXBfb2Zmc2V0KHByaXYsIHMpOworCQkJaWYgKG9mZnNldCAhPTNEIEFTUF9SWF9D VFJMX0ZCX0ZJTFRfT1VUX0ZSQU1FX0NPVU5UKQorCQkJCW9mZnNldCArPTNEIHNpemVvZih1MzIp ICogcHJpdi0+cG9ydDsKKwkJCXZhbCA9M0QgcnhfY3RybF9jb3JlX3JsKHByaXYtPnBhcmVudCwg b2Zmc2V0KTsKKwkJCWJyZWFrOworCQl9CisKKwkJaiArPTNEIHMtPnN0YXRfc2l6ZW9mOworCQlw ID0zRCAoY2hhciAqKXByaXYgKyBzLT5zdGF0X29mZnNldDsKKwkJcHV0X3VuYWxpZ25lZCh2YWws ICh1MzIgKilwKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9nZXRfZXRodG9vbF9zdGF0 cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMg KnN0YXRzLAorCQkJCSAgICAgdTY0ICpkYXRhKQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqcHJp diA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgaTsKKworCWlmIChuZXRpZl9ydW5uaW5nKGRl dikpCisJCWJjbWFzcF91cGRhdGVfbWliX2NvdW50ZXJzKHByaXYpOworCisJZGV2LT5uZXRkZXZf b3BzLT5uZG9fZ2V0X3N0YXRzKGRldik7CisKKwlmb3IgKGkgPTNEIDA7IGkgPCBCQ01BU1BfU1RB VFNfTEVOOyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGJjbWFzcF9zdGF0cyAqczsKKwkJY2hhciAq cDsKKworCQlzID0zRCAmYmNtYXNwX2dzdHJpbmdzX3N0YXRzW2ldOworCQlpZiAocy0+dHlwZSA9 M0Q9M0QgQkNNQVNQX1NUQVRfTkVUREVWKQorCQkJcCA9M0QgKGNoYXIgKikmZGV2LT5zdGF0czsK KwkJZWxzZQorCQkJcCA9M0QgKGNoYXIgKilwcml2OworCQlwICs9M0Qgcy0+c3RhdF9vZmZzZXQ7 CisJCWlmIChzaXplb2YodW5zaWduZWQgbG9uZykgIT0zRCBzaXplb2YodTMyKSAmJgorCQkgICAg cy0+c3RhdF9zaXplb2YgPTNEPTNEIHNpemVvZih1bnNpZ25lZCBsb25nKSkKKwkJCWRhdGFbaV0g PTNEICoodW5zaWduZWQgbG9uZyAqKXA7CisJCWVsc2UKKwkJCWRhdGFbaV0gPTNEICoodTMyICop cDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pCit7CisJ c3Ryc2NweShpbmZvLT5kcml2ZXIsICJiY21hc3AiLCBzaXplb2YoaW5mby0+ZHJpdmVyKSk7CisJ c3Ryc2NweShpbmZvLT5idXNfaW5mbywgZGV2X25hbWUoZGV2LT5kZXYucGFyZW50KSwKKwkJc2l6 ZW9mKGluZm8tPmJ1c19pbmZvKSk7Cit9CisKK3N0YXRpYyB1MzIgYmNtYXNwX2dldF9tc2dsZXZl bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9 M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKworCXJldHVybiBpbnRmLT5tc2dfZW5hYmxlOworfQorCitz dGF0aWMgdm9pZCBiY21hc3Bfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUz MiBsZXZlbCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRl dik7CisKKwlpbnRmLT5tc2dfZW5hYmxlID0zRCBsZXZlbDsKK30KKworI2RlZmluZSBCQ01BU1Bf U1VQUE9SVEVEX1dBS0UgICAoV0FLRV9NQUdJQyB8IFdBS0VfTUFHSUNTRUNVUkUgfCBXQUtFX0ZJ TFQ9CkVSKQorc3RhdGljIHZvaWQgYmNtYXNwX2dldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKmRl diwgc3RydWN0IGV0aHRvb2xfd29saW5mbyA9Cip3b2wpCit7CisJc3RydWN0IGJjbWFzcF9pbnRm ICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYpOworCisJd29sLT5zdXBwb3J0ZWQgPTNEIEJDTUFT UF9TVVBQT1JURURfV0FLRTsKKwl3b2wtPndvbG9wdHMgPTNEIGludGYtPndvbG9wdHM7CisJbWVt c2V0KHdvbC0+c29wYXNzLCAwLCBzaXplb2Yod29sLT5zb3Bhc3MpKTsKKworCWlmICh3b2wtPndv bG9wdHMgJiBXQUtFX01BR0lDU0VDVVJFKQorCQltZW1jcHkod29sLT5zb3Bhc3MsIGludGYtPnNv cGFzcywgc2l6ZW9mKGludGYtPnNvcGFzcykpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9zZXRf d29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKj0Kd29s KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlz dHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYgPTNEIGludGYtPnBhcmVudDsKKwlzdHJ1Y3QgZGV2aWNl ICprZGV2ID0zRCAmcHJpdi0+cGRldi0+ZGV2OworCisJaWYgKCFkZXZpY2VfY2FuX3dha2V1cChr ZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJaWYgKHdvbC0+d29sb3B0cyAmIH5CQ01B U1BfU1VQUE9SVEVEX1dBS0UpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCS8qIEludGVyZmFj ZSBTcGVjaWZpYyAqLworCWludGYtPndvbG9wdHMgPTNEIHdvbC0+d29sb3B0czsKKwlpZiAoaW50 Zi0+d29sb3B0cyAmIFdBS0VfTUFHSUNTRUNVUkUpCisJCW1lbWNweShpbnRmLT5zb3Bhc3MsIHdv bC0+c29wYXNzLCBzaXplb2Yod29sLT5zb3Bhc3MpKTsKKworCW11dGV4X2xvY2soJnByaXYtPndv bF9sb2NrKTsKKwlwcml2LT5lbmFibGVfd29sKGludGYsICEhaW50Zi0+d29sb3B0cyk7CisJbXV0 ZXhfdW5sb2NrKCZwcml2LT53b2xfbG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBiY21hc3BfZmxvd19pbnNlcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRv b2xfcnhuZmM9CiAqY21kKQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2 X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgYmNtYXNwX25ldF9maWx0ZXIgKm5maWx0ZXI7CisJdTMyIGxv YyA9M0QgY21kLT5mcy5sb2NhdGlvbjsKKwlib29sIHdha2UgPTNEIGZhbHNlOworCisJaWYgKGNt ZC0+ZnMucmluZ19jb29raWUgPTNEPTNEIFJYX0NMU19GTE9XX1dBS0UpCisJCXdha2UgPTNEIHRy dWU7CisKKwkvKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBXQUtFIGZpbHRlcnMgKi8KKwlpZiAo IXdha2UpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCXN3aXRjaCAoY21kLT5mcy5mbG93X3R5 cGUgJiB+KEZMT1dfRVhUIHwgRkxPV19NQUNfRVhUKSkgeworCWNhc2UgRVRIRVJfRkxPVzoKKwlj YXNlIElQX1VTRVJfRkxPVzoKKwljYXNlIFRDUF9WNF9GTE9XOgorCWNhc2UgVURQX1Y0X0ZMT1c6 CisJY2FzZSBUQ1BfVjZfRkxPVzoKKwljYXNlIFVEUF9WNl9GTE9XOgorCQlicmVhazsKKwlkZWZh dWx0OgorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCisJLyogQ2hlY2sgaWYgZmlsdGVyIGFs cmVhZHkgZXhpc3RzICovCisJaWYgKGJjbWFzcF9uZXRmaWx0X2NoZWNrX2R1cChpbnRmLCAmY21k LT5mcykpCisJCXJldHVybiAtRUlOVkFMOworCisJbmZpbHRlciA9M0QgYmNtYXNwX25ldGZpbHRf Z2V0X2luaXQoaW50ZiwgbG9jLCB3YWtlLCB0cnVlKTsKKwlpZiAoSVNfRVJSKG5maWx0ZXIpKQor CQlyZXR1cm4gUFRSX0VSUihuZmlsdGVyKTsKKworCS8qIFJldHVybiB0aGUgbG9jYXRpb24gd2hl cmUgd2UgZGlkIGluc2VydCB0aGUgZmlsdGVyICovCisJY21kLT5mcy5sb2NhdGlvbiA9M0QgbmZp bHRlci0+aHdfaW5kZXg7CisJbWVtY3B5KCZuZmlsdGVyLT5mcywgJmNtZC0+ZnMsIHNpemVvZihz dHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMpKTsKKworCS8qIFNpbmNlIHdlIG9ubHkgc3VwcG9y dCB3YWtlIGZpbHRlcnMsIGRlZmVyIHJlZ2lzdGVyIHByb2dyYW1taW5nIHRpbGwKKwkgKiBzdXNw ZW5kIHRpbWUuCisJICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtYXNwX2Zsb3df ZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3J4bmZjPQogKmNt ZCkKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJ c3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpuZmlsdGVyOworCisJbmZpbHRlciA9M0QgYmNtYXNw X25ldGZpbHRfZ2V0X2luaXQoaW50ZiwgY21kLT5mcy5sb2NhdGlvbiwgZmFsc2UsIGZhbHNlKTsK KwlpZiAoSVNfRVJSKG5maWx0ZXIpKQorCQlyZXR1cm4gUFRSX0VSUihuZmlsdGVyKTsKKworCWJj bWFzcF9uZXRmaWx0X3JlbGVhc2UoaW50ZiwgbmZpbHRlcik7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBiY21hc3BfZmxvd19nZXQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBzdHJ1 Y3QgZXRodG9vbF9yeG5mYyA9CipjbWQpCit7CisJc3RydWN0IGJjbWFzcF9uZXRfZmlsdGVyICpu ZmlsdGVyOworCisJbmZpbHRlciA9M0QgYmNtYXNwX25ldGZpbHRfZ2V0X2luaXQoaW50ZiwgY21k LT5mcy5sb2NhdGlvbiwgZmFsc2UsIGZhbHNlKTsKKwlpZiAoSVNfRVJSKG5maWx0ZXIpKQorCQly ZXR1cm4gUFRSX0VSUihuZmlsdGVyKTsKKworCW1lbWNweSgmY21kLT5mcywgJm5maWx0ZXItPmZz LCBzaXplb2YobmZpbHRlci0+ZnMpKTsKKworCWNtZC0+ZGF0YSA9M0QgTlVNX05FVF9GSUxURVJT OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtYXNwX3NldF9yeG5mYyhzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqPQpjbWQpCit7CisJc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYpOworCWludCByZXQgPTNEIC1F T1BOT1RTVVBQOworCisJbXV0ZXhfbG9jaygmaW50Zi0+cGFyZW50LT5uZXRfbG9jayk7CisKKwlz d2l0Y2ggKGNtZC0+Y21kKSB7CisJY2FzZSBFVEhUT09MX1NSWENMU1JMSU5TOgorCQlyZXQgPTNE IGJjbWFzcF9mbG93X2luc2VydChkZXYsIGNtZCk7CisJCWJyZWFrOworCWNhc2UgRVRIVE9PTF9T UlhDTFNSTERFTDoKKwkJcmV0ID0zRCBiY21hc3BfZmxvd19kZWxldGUoZGV2LCBjbWQpOworCQli cmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwltdXRleF91bmxvY2soJmludGYtPnBh cmVudC0+bmV0X2xvY2spOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBiY21hc3Bf Z2V0X3J4bmZjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3J4bmZjICo9 CmNtZCwKKwkJCSAgICB1MzIgKnJ1bGVfbG9jcykKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmlu dGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJaW50IGVyciA9M0QgMDsKKworCW11dGV4X2xvY2so JmludGYtPnBhcmVudC0+bmV0X2xvY2spOworCisJc3dpdGNoIChjbWQtPmNtZCkgeworCWNhc2Ug RVRIVE9PTF9HUlhDTFNSTENOVDoKKwkJY21kLT5ydWxlX2NudCA9M0QgYmNtYXNwX25ldGZpbHRf Z2V0X2FjdGl2ZShpbnRmKTsKKwkJLyogV2Ugc3VwcG9ydCBzcGVjaWZ5aW5nIHJ1bGUgbG9jYXRp b25zICovCisJCWNtZC0+ZGF0YSB8PTNEIFJYX0NMU19MT0NfU1BFQ0lBTDsKKwkJYnJlYWs7CisJ Y2FzZSBFVEhUT09MX0dSWENMU1JVTEU6CisJCWVyciA9M0QgYmNtYXNwX2Zsb3dfZ2V0KGludGYs IGNtZCk7CisJCWJyZWFrOworCWNhc2UgRVRIVE9PTF9HUlhDTFNSTEFMTDoKKwkJYmNtYXNwX25l dGZpbHRfZ2V0X2FsbF9hY3RpdmUoaW50ZiwgcnVsZV9sb2NzLCAmY21kLT5ydWxlX2NudCk7CisJ CWNtZC0+ZGF0YSA9M0QgTlVNX05FVF9GSUxURVJTOworCQlicmVhazsKKwlkZWZhdWx0OgorCQll cnIgPTNEIC1FT1BOT1RTVVBQOworCQlicmVhazsKKwl9CisKKwltdXRleF91bmxvY2soJmludGYt PnBhcmVudC0+bmV0X2xvY2spOworCisJcmV0dXJuIGVycjsKK30KKwordm9pZCBiY21hc3BfZWVl X2VuYWJsZV9zZXQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuYWJsZSkKK3sKKwl1 MzIgcmVnOworCisJcmVnID0zRCB1bWFjX3JsKGludGYsIFVNQ19FRUVfQ1RSTCk7CisJaWYgKGVu YWJsZSkKKwkJcmVnIHw9M0QgRUVFX0VOOworCWVsc2UKKwkJcmVnICY9M0QgfkVFRV9FTjsKKwl1 bWFjX3dsKGludGYsIHJlZywgVU1DX0VFRV9DVFJMKTsKKworCWludGYtPmVlZS5lZWVfZW5hYmxl ZCA9M0QgZW5hYmxlOworCWludGYtPmVlZS5lZWVfYWN0aXZlID0zRCBlbmFibGU7Cit9CisKK3N0 YXRpYyBpbnQgYmNtYXNwX2dldF9lZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0 aHRvb2xfZWVlICplKQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3By aXYoZGV2KTsKKwlzdHJ1Y3QgZXRodG9vbF9lZWUgKnAgPTNEICZpbnRmLT5lZWU7CisKKwlpZiAo IWRldi0+cGh5ZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWUtPmVlZV9lbmFibGVkID0zRCBw LT5lZWVfZW5hYmxlZDsKKwllLT5lZWVfYWN0aXZlID0zRCBwLT5lZWVfYWN0aXZlOworCWUtPnR4 X2xwaV9lbmFibGVkID0zRCBwLT50eF9scGlfZW5hYmxlZDsKKwllLT50eF9scGlfdGltZXIgPTNE IHVtYWNfcmwoaW50ZiwgVU1DX0VFRV9MUElfVElNRVIpOworCisJcmV0dXJuIHBoeV9ldGh0b29s X2dldF9lZWUoZGV2LT5waHlkZXYsIGUpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9zZXRfZWVl KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2VlZSAqZSkKK3sKKwlzdHJ1 Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJc3RydWN0IGV0aHRv b2xfZWVlICpwID0zRCAmaW50Zi0+ZWVlOworCWludCByZXQ7CisKKwlpZiAoIWRldi0+cGh5ZGV2 KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICghcC0+ZWVlX2VuYWJsZWQpIHsKKwkJYmNtYXNw X2VlZV9lbmFibGVfc2V0KGludGYsIGZhbHNlKTsKKwl9IGVsc2UgeworCQlyZXQgPTNEIHBoeV9p bml0X2VlZShkZXYtPnBoeWRldiwgMCk7CisJCWlmIChyZXQpIHsKKwkJCW5ldGlmX2VycihpbnRm LCBodywgZGV2LAorCQkJCSAgIkVFRSBpbml0aWFsaXphdGlvbiBmYWlsZWQ6ICVkXG4iLCByZXQp OworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCXVtYWNfd2woaW50ZiwgZS0+dHhfbHBpX3RpbWVy LCBVTUNfRUVFX0xQSV9USU1FUik7CisJCWludGYtPmVlZS5lZWVfYWN0aXZlID0zRCByZXQgPj0z RCAwOworCQlpbnRmLT5lZWUudHhfbHBpX2VuYWJsZWQgPTNEIGUtPnR4X2xwaV9lbmFibGVkOwor CQliY21hc3BfZWVlX2VuYWJsZV9zZXQoaW50ZiwgdHJ1ZSk7CisJfQorCisJcmV0dXJuIHBoeV9l dGh0b29sX3NldF9lZWUoZGV2LT5waHlkZXYsIGUpOworfQorCitjb25zdCBzdHJ1Y3QgZXRodG9v bF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0zRCB7CisJLmdldF9kcnZpbmZvCQk9M0QgYmNtYXNw X2dldF9kcnZpbmZvLAorCS5nZXRfd29sCQk9M0QgYmNtYXNwX2dldF93b2wsCisJLnNldF93b2wJ CT0zRCBiY21hc3Bfc2V0X3dvbCwKKwkuZ2V0X2xpbmsJCT0zRCBldGh0b29sX29wX2dldF9saW5r LAorCS5nZXRfc3RyaW5ncwkJPTNEIGJjbWFzcF9nZXRfc3RyaW5ncywKKwkuZ2V0X2V0aHRvb2xf c3RhdHMJPTNEIGJjbWFzcF9nZXRfZXRodG9vbF9zdGF0cywKKwkuZ2V0X3NzZXRfY291bnQJCT0z RCBiY21hc3BfZ2V0X3NzZXRfY291bnQsCisJLmdldF9saW5rX2tzZXR0aW5ncwk9M0QgcGh5X2V0 aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLAorCS5zZXRfbGlua19rc2V0dGluZ3MJPTNEIHBoeV9l dGh0b29sX3NldF9saW5rX2tzZXR0aW5ncywKKwkuZ2V0X21zZ2xldmVsCQk9M0QgYmNtYXNwX2dl dF9tc2dsZXZlbCwKKwkuc2V0X21zZ2xldmVsCQk9M0QgYmNtYXNwX3NldF9tc2dsZXZlbCwKKwku bndheV9yZXNldAkJPTNEIHBoeV9ldGh0b29sX253YXlfcmVzZXQsCisJLmdldF9yeG5mYwkJPTNE IGJjbWFzcF9nZXRfcnhuZmMsCisJLnNldF9yeG5mYwkJPTNEIGJjbWFzcF9zZXRfcnhuZmMsCisJ LnNldF9lZWUJCT0zRCBiY21hc3Bfc2V0X2VlZSwKKwkuZ2V0X2VlZQkJPTNEIGJjbWFzcF9nZXRf ZWVlLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIv YmNtYXNwX2ludGYuYyBiL2RyaXZlcnMvbmV0PQovZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21h c3BfaW50Zi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQxZWUx MjE1ZjRmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20v YXNwMi9iY21hc3BfaW50Zi5jCkBAIC0wLDAgKzEsMTQyNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKKyNkZWZpbmUgcHJfZm10KGZtdCkJCQkiYmNtYXNwX2ludGY6ICIg Zm10CisKKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8bGludXgvYnJjbXBo eS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cisj aW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2Uu aD4KKyNpbmNsdWRlIDxsaW51eC9vZl9uZXQuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9tZGlvLmg+ CisjaW5jbHVkZSA8bGludXgvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvcGh5X2ZpeGVkLmg+Cisj aW5jbHVkZSA8bGludXgvcHRwX2NsYXNzaWZ5Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8bmV0L2lwLmg+CisjaW5jbHVkZSA8bmV0L2lwdjYuaD4KKwor I2luY2x1ZGUgImJjbWFzcC5oIgorI2luY2x1ZGUgImJjbWFzcF9pbnRmX2RlZnMuaCIKKworc3Rh dGljIGludCBpbmNyX3JpbmcoaW50IGluZGV4LCBpbnQgcmluZ19jb3VudCkKK3sKKwlpbmRleCsr OworCWlmIChpbmRleCA9M0Q9M0QgcmluZ19jb3VudCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4g aW5kZXg7Cit9CisKKy8qIFBvaW50cyB0byBsYXN0IGJ5dGUgb2YgZGVzY3JpcHRvciAqLworc3Rh dGljIGRtYV9hZGRyX3QgaW5jcl9sYXN0X2J5dGUoZG1hX2FkZHJfdCBhZGRyLCBkbWFfYWRkcl90 IGJlZywKKwkJCQkgaW50IHJpbmdfY291bnQpCit7CisJZG1hX2FkZHJfdCBlbmQgPTNEIGJlZyAr IChyaW5nX2NvdW50ICogREVTQ19TSVpFKTsKKworCWFkZHIgKz0zRCBERVNDX1NJWkU7CisJaWYg KGFkZHIgPiBlbmQpCisJCXJldHVybiBiZWcgKyBERVNDX1NJWkUgLSAxOworCisJcmV0dXJuIGFk ZHI7Cit9CisKKy8qIFBvaW50cyB0byBmaXJzdCBieXRlIG9mIGRlc2NyaXB0b3IgKi8KK3N0YXRp YyBkbWFfYWRkcl90IGluY3JfZmlyc3RfYnl0ZShkbWFfYWRkcl90IGFkZHIsIGRtYV9hZGRyX3Qg YmVnLAorCQkJCSAgaW50IHJpbmdfY291bnQpCit7CisJZG1hX2FkZHJfdCBlbmQgPTNEIGJlZyAr IChyaW5nX2NvdW50ICogREVTQ19TSVpFKTsKKworCWFkZHIgKz0zRCBERVNDX1NJWkU7CisJaWYg KGFkZHIgPj0zRCBlbmQpCisJCXJldHVybiBiZWc7CisKKwlyZXR1cm4gYWRkcjsKK30KKworc3Rh dGljIHZvaWQgYmNtYXNwX2VuYWJsZV90eChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGludCBl bikKK3sKKwlpZiAoZW4pIHsKKwkJdHhfc3BiX2N0cmxfd2woaW50ZiwgVFhfU1BCX0NUUkxfRU5B QkxFX0VOLCBUWF9TUEJfQ1RSTF9FTkFCTEUpOworCQl0eF9lcGt0X2NvcmVfd2woaW50ZiwgKFRY X0VQS1RfQ19DRkdfTUlTQ19FTiB8CisJCQkJVFhfRVBLVF9DX0NGR19NSVNDX1BUIHwKKwkJCQko aW50Zi0+cG9ydCA8PCBUWF9FUEtUX0NfQ0ZHX01JU0NfUFNfU0hJRlQpKSwKKwkJCQlUWF9FUEtU X0NfQ0ZHX01JU0MpOworCX0gZWxzZSB7CisJCXR4X3NwYl9jdHJsX3dsKGludGYsIDB4MCwgVFhf U1BCX0NUUkxfRU5BQkxFKTsKKwkJdHhfZXBrdF9jb3JlX3dsKGludGYsIDB4MCwgVFhfRVBLVF9D X0NGR19NSVNDKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9lbmFibGVfcngoc3RydWN0 IGJjbWFzcF9pbnRmICppbnRmLCBpbnQgZW4pCit7CisJaWYgKGVuKQorCQlyeF9lZHBrdF9jZmdf d2woaW50ZiwgUlhfRURQS1RfQ0ZHX0VOQUJMRV9FTiwKKwkJCQlSWF9FRFBLVF9DRkdfRU5BQkxF KTsKKwllbHNlCisJCXJ4X2VkcGt0X2NmZ193bChpbnRmLCAweDAsIFJYX0VEUEtUX0NGR19FTkFC TEUpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZp Y2UgKmRldikKK3sKKwl1bnNpZ25lZCBjaGFyIG1hc2tbXSA9M0QgezB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4ZmYsIDB4ZmZ9OworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2 X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhOworCWludCByZXQ7CisKKwlz cGluX2xvY2tfYmgoJmludGYtPnBhcmVudC0+bWRhX2xvY2spOworCisJYmNtYXNwX2Rpc2FibGVf YWxsX2ZpbHRlcnMoaW50Zik7CisKKwlpZiAoZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKQorCQln b3RvIHNldF9wcm9taXNjOworCisJYmNtYXNwX3NldF9wcm9taXNjKGludGYsIDApOworCisJYmNt YXNwX3NldF9icm9hZChpbnRmLCAxKTsKKworCWJjbWFzcF9zZXRfb2FkZHIoaW50ZiwgZGV2LT5k ZXZfYWRkciwgMSk7CisKKwlpZiAoZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkgeworCQliY21h c3Bfc2V0X2FsbG11bHRpKGludGYsIDEpOworCX0gZWxzZSB7CisJCWJjbWFzcF9zZXRfYWxsbXVs dGkoaW50ZiwgMCk7CisKKwkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIGRldikgeworCQkJ cmV0ID0zRCBiY21hc3Bfc2V0X2VuX21kYV9maWx0ZXIoaW50ZiwgaGEtPmFkZHIsIG1hc2spOwor CQkJaWYgKHJldCkgeworCQkJCWludGYtPm1pYi5tY19maWx0ZXJzX2Z1bGxfY250Kys7CisJCQkJ Z290byBzZXRfcHJvbWlzYzsKKwkJCX0KKwkJfQorCX0KKworCW5ldGRldl9mb3JfZWFjaF91Y19h ZGRyKGhhLCBkZXYpIHsKKwkJcmV0ID0zRCBiY21hc3Bfc2V0X2VuX21kYV9maWx0ZXIoaW50Ziwg aGEtPmFkZHIsIG1hc2spOworCQlpZiAocmV0KSB7CisJCQlpbnRmLT5taWIudWNfZmlsdGVyc19m dWxsX2NudCsrOworCQkJZ290byBzZXRfcHJvbWlzYzsKKwkJfQorCX0KKworCXNwaW5fdW5sb2Nr X2JoKCZpbnRmLT5wYXJlbnQtPm1kYV9sb2NrKTsKKwlyZXR1cm47CisKK3NldF9wcm9taXNjOgor CWJjbWFzcF9zZXRfcHJvbWlzYyhpbnRmLCAxKTsKKwlpbnRmLT5taWIucHJvbWlzY19maWx0ZXJz X2NudCsrOworCisJLyogZGlzYWJsZSBhbGwgZmlsdGVycyB1c2VkIGJ5IHRoaXMgcG9ydCAqLwor CWJjbWFzcF9kaXNhYmxlX2FsbF9maWx0ZXJzKGludGYpOworCisJc3Bpbl91bmxvY2tfYmgoJmlu dGYtPnBhcmVudC0+bWRhX2xvY2spOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfY2xlYW5fdHhj YihzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGludCBpbmRleCkKK3sKKwlzdHJ1Y3QgYmNtYXNw X3R4X2NiICp0eGNiID0zRCAmaW50Zi0+dHhfY2JzW2luZGV4XTsKKworCXR4Y2ItPnNrYiA9M0Qg TlVMTDsKKwlkbWFfdW5tYXBfYWRkcl9zZXQodHhjYiwgZG1hX2FkZHIsIDApOworCWRtYV91bm1h cF9sZW5fc2V0KHR4Y2IsIGRtYV9sZW4sIDApOworCXR4Y2ItPmxhc3QgPTNEIGZhbHNlOworfQor CitzdGF0aWMgaW50IHR4X3NwYl9yaW5nX2Z1bGwoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBp bnQgY250KQoreworCWludCBuZXh0X2luZGV4LCBpOworCisJLyogQ2hlY2sgaWYgd2UgaGF2ZSBl bm91Z2ggcm9vbSBmb3IgY250IGRlc2NyaXB0b3JzICovCisJZm9yIChpID0zRCAwOyBpIDwgY250 OyBpKyspIHsKKwkJbmV4dF9pbmRleCA9M0QgaW5jcl9yaW5nKGludGYtPnR4X3NwYl9pbmRleCwg REVTQ19SSU5HX0NPVU5UKTsKKwkJaWYgKG5leHRfaW5kZXggPTNEPTNEIGludGYtPnR4X3NwYl9j bGVhbl9pbmRleCkKKwkJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMg c3RydWN0IHNrX2J1ZmYgKmJjbWFzcF9jc3VtX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRl diwKKwkJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkJICAgYm9vbCAqY3N1bV9odykK K3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJdTMy IGhlYWRlciA9M0QgMCwgaGVhZGVyMiA9M0QgMCwgZXBrdCA9M0QgMDsKKwlzdHJ1Y3QgYmNtYXNw X3BrdF9vZmZsb2FkICpvZmZsb2FkOworCXVuc2lnbmVkIGludCBoZWFkZXJfY250ID0zRCAwOwor CXN0cnVjdCBza19idWZmICpuZXdfc2tiOworCXU4IGlwX3Byb3RvOworCisJaWYgKHNrYi0+aXBf c3VtbWVkICE9M0QgQ0hFQ0tTVU1fUEFSVElBTCkKKwkJcmV0dXJuIHNrYjsKKworCWlmICh1bmxp a2VseShza2JfaGVhZHJvb20oc2tiKSA8IHNpemVvZigqb2ZmbG9hZCkpKSB7CisJCW5ld19za2Ig PTNEIHNrYl9yZWFsbG9jX2hlYWRyb29tKHNrYiwgc2l6ZW9mKCpvZmZsb2FkKSk7CisJCWlmICgh bmV3X3NrYikgeworCQkJaW50Zi0+bWliLnR4X3JlYWxsb2Nfb2ZmbG9hZF9mYWlsZWQrKzsKKwkJ CWdvdG8gaGVscDsKKwkJfQorCisJCWRldl9jb25zdW1lX3NrYl9hbnkoc2tiKTsKKwkJc2tiID0z RCBuZXdfc2tiOworCQlpbnRmLT5taWIudHhfcmVhbGxvY19vZmZsb2FkKys7CisJfQorCisJc3dp dGNoIChza2ItPnByb3RvY29sKSB7CisJY2FzZSBodG9ucyhFVEhfUF9JUCk6CisJCWhlYWRlciB8 PTNEIFBLVF9PRkZMT0FEX0hEUl9TSVpFXzIoKGlwX2hkcmxlbihza2IpID4+IDgpICYgMHhmKTsK KwkJaGVhZGVyMiB8PTNEIFBLVF9PRkZMT0FEX0hEUjJfU0laRV8yKGlwX2hkcmxlbihza2IpICYg MHhmZik7CisJCWVwa3QgfD0zRCBQS1RfT0ZGTE9BRF9FUEtUX0lQKDApIHwgUEtUX09GRkxPQURf RVBLVF9DU1VNX0wyOworCQlpcF9wcm90byA9M0QgaXBfaGRyKHNrYiktPnByb3RvY29sOworCQlo ZWFkZXJfY250ICs9M0QgMjsKKwkJYnJlYWs7CisJY2FzZSBodG9ucyhFVEhfUF9JUFY2KToKKwkJ aGVhZGVyIHw9M0QgUEtUX09GRkxPQURfSERSX1NJWkVfMigoSVA2X0hMRU4gPj4gOCkgJiAweGYp OworCQloZWFkZXIyIHw9M0QgUEtUX09GRkxPQURfSERSMl9TSVpFXzIoSVA2X0hMRU4gJiAweGZm KTsKKwkJZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfSVAoMSkgfCBQS1RfT0ZGTE9BRF9FUEtU X0NTVU1fTDI7CisJCWlwX3Byb3RvID0zRCBpcHY2X2hkcihza2IpLT5uZXh0aGRyOworCQloZWFk ZXJfY250ICs9M0QgMjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZ290byBoZWxwOworCX0KKwor CXN3aXRjaCAoaXBfcHJvdG8pIHsKKwljYXNlIElQUFJPVE9fVENQOgorCQloZWFkZXIyIHw9M0Qg UEtUX09GRkxPQURfSERSMl9TSVpFXzModGNwX2hkcmxlbihza2IpKTsKKwkJZXBrdCB8PTNEIFBL VF9PRkZMT0FEX0VQS1RfVFAoMCkgfCBQS1RfT0ZGTE9BRF9FUEtUX0NTVU1fTDM7CisJCWhlYWRl cl9jbnQrKzsKKwkJYnJlYWs7CisJY2FzZSBJUFBST1RPX1VEUDoKKwkJaGVhZGVyMiB8PTNEIFBL VF9PRkZMT0FEX0hEUjJfU0laRV8zKFVEUF9ITEVOKTsKKwkJZXBrdCB8PTNEIFBLVF9PRkZMT0FE X0VQS1RfVFAoMSkgfCBQS1RfT0ZGTE9BRF9FUEtUX0NTVU1fTDM7CisJCWhlYWRlcl9jbnQrKzsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZ290byBoZWxwOworCX0KKworCW9mZmxvYWQgPTNEIChz dHJ1Y3QgYmNtYXNwX3BrdF9vZmZsb2FkICopc2tiX3B1c2goc2tiLCBzaXplb2YoKm9mZmxvYWQp KTsKKworCWhlYWRlciB8PTNEIFBLVF9PRkZMT0FEX0hEUl9PUCB8IFBLVF9PRkZMT0FEX0hEUl9D T1VOVChoZWFkZXJfY250KSB8CisJCSAgUEtUX09GRkxPQURfSERSX1NJWkVfMShFVEhfSExFTik7 CisJZXBrdCB8PTNEIFBLVF9PRkZMT0FEX0VQS1RfT1A7CisKKwlvZmZsb2FkLT5ub3AgPTNEIGh0 b25sKFBLVF9PRkZMT0FEX05PUCk7CisJb2ZmbG9hZC0+aGVhZGVyID0zRCBodG9ubChoZWFkZXIp OworCW9mZmxvYWQtPmhlYWRlcjIgPTNEIGh0b25sKGhlYWRlcjIpOworCW9mZmxvYWQtPmVwa3Qg PTNEIGh0b25sKGVwa3QpOworCW9mZmxvYWQtPmVuZCA9M0QgaHRvbmwoUEtUX09GRkxPQURfRU5E X09QKTsKKwkqY3N1bV9odyA9M0QgdHJ1ZTsKKworCXJldHVybiBza2I7CisKK2hlbHA6CisJc2ti X2NoZWNrc3VtX2hlbHAoc2tiKTsKKworCXJldHVybiBza2I7Cit9CisKK3N0YXRpYyB1bnNpZ25l ZCBsb25nIGJjbWFzcF9yeF9lZHBrdF9kbWFfcnEoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmKQor eworCXJldHVybiByeF9lZHBrdF9kbWFfcnEoaW50ZiwgUlhfRURQS1RfRE1BX1ZBTElEKTsKK30K Kworc3RhdGljIHZvaWQgYmNtYXNwX3J4X2VkcGt0X2NmZ193cShzdHJ1Y3QgYmNtYXNwX2ludGYg KmludGYsIGRtYV9hZGRyX3QgYWQ9CmRyKQoreworCXJ4X2VkcGt0X2NmZ193cShpbnRmLCBhZGRy LCBSWF9FRFBLVF9SSU5HX0JVRkZFUl9SRUFEKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3J4 X2VkcGt0X2RtYV93cShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWQ9CmRy KQoreworCXJ4X2VkcGt0X2RtYV93cShpbnRmLCBhZGRyLCBSWF9FRFBLVF9ETUFfUkVBRCk7Cit9 CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGJjbWFzcF90eF9zcGJfZG1hX3JxKHN0cnVjdCBiY21h c3BfaW50ZiAqaW50ZikKK3sKKwlyZXR1cm4gdHhfc3BiX2RtYV9ycShpbnRmLCBUWF9TUEJfRE1B X1JFQUQpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfdHhfc3BiX2RtYV93cShzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYsIGRtYV9hZGRyX3QgYWRkcikKK3sKKwl0eF9zcGJfZG1hX3dxKGludGYs IGFkZHIsIFRYX1NQQl9ETUFfVkFMSUQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbWFz cF9pbnRmX29wcyBiY21hc3BfaW50Zl9vcHMgPTNEIHsKKwkucnhfZGVzY19yZWFkID0zRCBiY21h c3BfcnhfZWRwa3RfZG1hX3JxLAorCS5yeF9idWZmZXJfd3JpdGUgPTNEIGJjbWFzcF9yeF9lZHBr dF9jZmdfd3EsCisJLnJ4X2Rlc2Nfd3JpdGUgPTNEIGJjbWFzcF9yeF9lZHBrdF9kbWFfd3EsCisJ LnR4X3JlYWQgPTNEIGJjbWFzcF90eF9zcGJfZG1hX3JxLAorCS50eF93cml0ZSA9M0QgYmNtYXNw X3R4X3NwYl9kbWFfd3EsCit9OworCitzdGF0aWMgbmV0ZGV2X3R4X3QgYmNtYXNwX3htaXQoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYmNt YXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisJaW50IHNwYl9pbmRleCwgbnJf ZnJhZ3MsIHJldCwgaSwgajsKKwl1bnNpZ25lZCBpbnQgdG90YWxfYnl0ZXMsIHNpemU7CisJc3Ry dWN0IGJjbWFzcF90eF9jYiAqdHhjYjsKKwlkbWFfYWRkcl90IG1hcHBpbmcsIHZhbGlkOworCXN0 cnVjdCBiY21hc3BfZGVzYyAqZGVzYzsKKwlib29sIGNzdW1faHcgPTNEIGZhbHNlOworCXN0cnVj dCBkZXZpY2UgKmtkZXY7CisJc2tiX2ZyYWdfdCAqZnJhZzsKKworCWtkZXYgPTNEICZpbnRmLT5w YXJlbnQtPnBkZXYtPmRldjsKKworCXNwaW5fbG9jaygmaW50Zi0+dHhfbG9jayk7CisKKwlucl9m cmFncyA9M0Qgc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFnczsKKworCWlmICh0eF9zcGJfcmluZ19m dWxsKGludGYsIG5yX2ZyYWdzICsgMSkpIHsKKwkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOworCQlu ZXRkZXZfZXJyKGRldiwgIlR4IFJpbmcgRnVsbCFcbiIpOworCQlyZXQgPTNEIE5FVERFVl9UWF9C VVNZOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBTYXZlIHNrYiBsZW4gYmVmb3JlIGFkZGluZyBj c3VtIG9mZmxvYWQgaGVhZGVyICovCisJdG90YWxfYnl0ZXMgPTNEIHNrYi0+bGVuOworCXNrYiA9 M0QgYmNtYXNwX2NzdW1fb2ZmbG9hZChkZXYsIHNrYiwgJmNzdW1faHcpOworCWlmICghc2tiKSB7 CisJCXJldCA9M0QgTkVUREVWX1RYX09LOworCQlnb3RvIG91dDsKKwl9CisKKwlzcGJfaW5kZXgg PTNEIGludGYtPnR4X3NwYl9pbmRleDsKKwl2YWxpZCA9M0QgaW50Zi0+dHhfc3BiX2RtYV92YWxp ZDsKKwlmb3IgKGkgPTNEIDA7IGkgPD0zRCBucl9mcmFnczsgaSsrKSB7CisJCWlmICghaSkgewor CQkJc2l6ZSA9M0Qgc2tiX2hlYWRsZW4oc2tiKTsKKwkJCWlmICghbnJfZnJhZ3MgJiYgc2l6ZSA8 IChFVEhfWkxFTiArIEVUSF9GQ1NfTEVOKSkgeworCQkJCWlmIChza2JfcHV0X3BhZHRvKHNrYiwg RVRIX1pMRU4gKyBFVEhfRkNTX0xFTikpIHsKKwkJCQkJcmV0ID0zRCBORVRERVZfVFhfT0s7CisJ CQkJCWdvdG8gb3V0OworCQkJCX0KKwkJCQlzaXplID0zRCBza2ItPmxlbjsKKwkJCX0KKwkJCW1h cHBpbmcgPTNEIGRtYV9tYXBfc2luZ2xlKGtkZXYsIHNrYi0+ZGF0YSwgc2l6ZSwKKwkJCQkJCSBE TUFfVE9fREVWSUNFKTsKKwkJfSBlbHNlIHsKKwkJCWZyYWcgPTNEICZza2Jfc2hpbmZvKHNrYikt PmZyYWdzW2kgLSAxXTsKKwkJCXNpemUgPTNEIHNrYl9mcmFnX3NpemUoZnJhZyk7CisJCQltYXBw aW5nID0zRCBza2JfZnJhZ19kbWFfbWFwKGtkZXYsIGZyYWcsIDAsIHNpemUsCisJCQkJCQkgICBE TUFfVE9fREVWSUNFKTsKKwkJfQorCisJCWlmIChkbWFfbWFwcGluZ19lcnJvcihrZGV2LCBtYXBw aW5nKSkgeworCQkJcmV0ID0zRCBORVRERVZfVFhfT0s7CisJCQlpbnRmLT5taWIudHhfZG1hX2Zh aWxlZCsrOworCQkJZ290byBvdXRfdW5tYXBfZnJhZ3M7CisJCX0KKworCQl0eGNiID0zRCAmaW50 Zi0+dHhfY2JzW3NwYl9pbmRleF07CisJCWRlc2MgPTNEICZpbnRmLT50eF9zcGJfY3B1W3NwYl9p bmRleF07CisJCW1lbXNldChkZXNjLCAwLCBzaXplb2YoKmRlc2MpKTsKKwkJdHhjYi0+c2tiID0z RCBza2I7CisJCXR4Y2ItPmJ5dGVzX3NlbnQgPTNEIHRvdGFsX2J5dGVzOworCQlkbWFfdW5tYXBf YWRkcl9zZXQodHhjYiwgZG1hX2FkZHIsIG1hcHBpbmcpOworCQlkbWFfdW5tYXBfbGVuX3NldCh0 eGNiLCBkbWFfbGVuLCBzaXplKTsKKwkJaWYgKCFpKSB7CisJCQlkZXNjLT5mbGFncyB8PTNEIERF U0NfU09GOworCQkJaWYgKGNzdW1faHcpCisJCQkJZGVzYy0+ZmxhZ3MgfD0zRCBERVNDX0VQS1Rf Q01EOworCQl9CisKKwkJaWYgKGkgPTNEPTNEIG5yX2ZyYWdzKSB7CisJCQlkZXNjLT5mbGFncyB8 PTNEIERFU0NfRU9GOworCQkJdHhjYi0+bGFzdCA9M0QgdHJ1ZTsKKwkJfQorCisJCWRlc2MtPmJ1 ZiA9M0QgbWFwcGluZzsKKwkJZGVzYy0+c2l6ZSA9M0Qgc2l6ZTsKKwkJZGVzYy0+ZmxhZ3MgfD0z RCBERVNDX0lOVF9FTjsKKworCQluZXRpZl9kYmcoaW50ZiwgdHhfcXVldWVkLCBkZXYsCisJCQkg ICIlcyBkbWFfYnVmPTNEJXBhZCBkbWFfbGVuPTNEMHgleCBmbGFncz0zRDB4JXggaW5kZXg9M0Qw eCV4XG4iLAorCQkJICBfX2Z1bmNfXywgJm1hcHBpbmcsIGRlc2MtPnNpemUsIGRlc2MtPmZsYWdz LAorCQkJICBzcGJfaW5kZXgpOworCisJCXNwYl9pbmRleCA9M0QgaW5jcl9yaW5nKHNwYl9pbmRl eCwgREVTQ19SSU5HX0NPVU5UKTsKKwkJdmFsaWQgPTNEIGluY3JfbGFzdF9ieXRlKHZhbGlkLCBp bnRmLT50eF9zcGJfZG1hX2FkZHIsCisJCQkJICAgICAgIERFU0NfUklOR19DT1VOVCk7CisJfQor CisJLyogRW5zdXJlIGFsbCBkZXNjcmlwdG9ycyBoYXZlIGJlZW4gd3JpdHRlbiB0byBEUkFNIGZv ciB0aGUKKwkgKiBoYXJkd2FyZSB0byBzZWUgdXAtdG8tZGF0ZSBjb250ZW50cy4KKwkgKi8KKwl3 bWIoKTsKKworCWludGYtPnR4X3NwYl9pbmRleCA9M0Qgc3BiX2luZGV4OworCWludGYtPnR4X3Nw Yl9kbWFfdmFsaWQgPTNEIHZhbGlkOworCWJjbWFzcF9pbnRmX3R4X3dyaXRlKGludGYsIGludGYt PnR4X3NwYl9kbWFfdmFsaWQpOworCisJaWYgKHR4X3NwYl9yaW5nX2Z1bGwoaW50ZiwgTUFYX1NL Ql9GUkFHUyArIDEpKQorCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CisKKwlzcGluX3VubG9jaygm aW50Zi0+dHhfbG9jayk7CisJcmV0dXJuIE5FVERFVl9UWF9PSzsKKworb3V0X3VubWFwX2ZyYWdz OgorCXNwYl9pbmRleCA9M0QgaW50Zi0+dHhfc3BiX2luZGV4OworCWZvciAoaiA9M0QgMDsgaiA8 IGk7IGorKykgeworCQliY21hc3BfY2xlYW5fdHhjYihpbnRmLCBzcGJfaW5kZXgpOworCQlzcGJf aW5kZXggPTNEIGluY3JfcmluZyhzcGJfaW5kZXgsIERFU0NfUklOR19DT1VOVCk7CisJfQorb3V0 OgorCXNwaW5fdW5sb2NrKCZpbnRmLT50eF9sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgdm9pZCBiY21hc3BfbmV0aWZfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlz dHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7CisKKwliY21hc3Bf c2V0X3J4X21vZGUoZGV2KTsKKwluYXBpX2VuYWJsZSgmaW50Zi0+dHhfbmFwaSk7CisJbmFwaV9l bmFibGUoJmludGYtPnJ4X25hcGkpOworCisJYmNtYXNwX2VuYWJsZV9yeF9pcnEoaW50ZiwgMSk7 CisJYmNtYXNwX2VuYWJsZV90eF9pcnEoaW50ZiwgMSk7CisKKwlwaHlfc3RhcnQoZGV2LT5waHlk ZXYpOworfQorCitzdGF0aWMgdm9pZCB1bWFjX3Jlc2V0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50 ZikKK3sKKwl1bWFjX3dsKGludGYsIDB4MCwgVU1DX0NNRCk7CisJdW1hY193bChpbnRmLCBVTUNf Q01EX1NXX1JFU0VULCBVTUNfQ01EKTsKKwl1c2xlZXBfcmFuZ2UoMTAsIDEwMCk7CisJdW1hY193 bChpbnRmLCAweDAsIFVNQ19DTUQpOworfQorCitzdGF0aWMgdm9pZCB1bWFjX3NldF9od19hZGRy KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiwKKwkJCSAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq YWRkcikKK3sKKwl1MzIgbWFjMCA9M0QgKGFkZHJbMF0gPDwgMjQpIHwgKGFkZHJbMV0gPDwgMTYp IHwgKGFkZHJbMl0gPDwgOCkgfAorCQkgICAgYWRkclszXTsKKwl1MzIgbWFjMSA9M0QgKGFkZHJb NF0gPDwgOCkgfCBhZGRyWzVdOworCisJdW1hY193bChpbnRmLCBtYWMwLCBVTUNfTUFDMCk7CisJ dW1hY193bChpbnRmLCBtYWMxLCBVTUNfTUFDMSk7Cit9CisKK3N0YXRpYyB2b2lkIHVtYWNfZW5h YmxlX3NldChzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIHUzMiBtYXNrLAorCQkJICAgIHVuc2ln bmVkIGludCBlbmFibGUpCit7CisJdTMyIHJlZzsKKworCXJlZyA9M0QgdW1hY19ybChpbnRmLCBV TUNfQ01EKTsKKwlpZiAoZW5hYmxlKQorCQlyZWcgfD0zRCBtYXNrOworCWVsc2UKKwkJcmVnICY9 M0Qgfm1hc2s7CisJdW1hY193bChpbnRmLCByZWcsIFVNQ19DTUQpOworCisJLyogVW5pTUFDIHN0 b3BzIG9uIGEgcGFja2V0IGJvdW5kYXJ5LCB3YWl0IGZvciBhIGZ1bGwtc2l6ZWQgcGFja2V0CisJ ICogdG8gYmUgcHJvY2Vzc2VkICgxIG1zZWMpLgorCSAqLworCWlmIChlbmFibGUgPTNEPTNEIDAp CisJCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKK30KKworc3RhdGljIHZvaWQgdW1hY19pbml0 KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwl1bWFjX3dsKGludGYsIDB4ODAwLCBVTUNf RlJNX0xFTik7CisJdW1hY193bChpbnRmLCAweGZmZmYsIFVNQ19QQVVTRV9DTlRSTCk7CisJdW1h Y193bChpbnRmLCAweDgwMCwgVU1DX1JYX01BWF9QS1RfU1opOworCXVtYWNfZW5hYmxlX3NldChp bnRmLCBVTUNfQ01EX1BST01JU0MsIDEpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF90eF9wb2xs KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKK3sKKwlzdHJ1Y3QgYmNtYXNw X2ludGYgKmludGYgPTNECisJCWNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgYmNtYXNwX2ludGYs IHR4X25hcGkpOworCXN0cnVjdCBkZXZpY2UgKmtkZXYgPTNEICZpbnRmLT5wYXJlbnQtPnBkZXYt PmRldjsKKwl1bnNpZ25lZCBsb25nIHJlYWQsIHJlbGVhc2VkID0zRCAwOworCXN0cnVjdCBiY21h c3BfdHhfY2IgKnR4Y2I7CisJc3RydWN0IGJjbWFzcF9kZXNjICpkZXNjOworCWRtYV9hZGRyX3Qg bWFwcGluZzsKKworCXJlYWQgPTNEIGJjbWFzcF9pbnRmX3R4X3JlYWQoaW50Zik7CisJd2hpbGUg KGludGYtPnR4X3NwYl9kbWFfcmVhZCAhPTNEIHJlYWQpIHsKKwkJdHhjYiA9M0QgJmludGYtPnR4 X2Nic1tpbnRmLT50eF9zcGJfY2xlYW5faW5kZXhdOworCQltYXBwaW5nID0zRCBkbWFfdW5tYXBf YWRkcih0eGNiLCBkbWFfYWRkcik7CisKKwkJZG1hX3VubWFwX3NpbmdsZShrZGV2LCBtYXBwaW5n LAorCQkJCSBkbWFfdW5tYXBfbGVuKHR4Y2IsIGRtYV9sZW4pLAorCQkJCSBETUFfVE9fREVWSUNF KTsKKworCQlpZiAodHhjYi0+bGFzdCkgeworCQkJZGV2X2NvbnN1bWVfc2tiX2FueSh0eGNiLT5z a2IpOworCQkJaW50Zi0+bmRldi0+c3RhdHMudHhfcGFja2V0cysrOworCQkJaW50Zi0+bmRldi0+ c3RhdHMudHhfYnl0ZXMgKz0zRCB0eGNiLT5ieXRlc19zZW50OworCQl9CisKKwkJZGVzYyA9M0Qg JmludGYtPnR4X3NwYl9jcHVbaW50Zi0+dHhfc3BiX2NsZWFuX2luZGV4XTsKKworCQluZXRpZl9k YmcoaW50ZiwgdHhfZG9uZSwgaW50Zi0+bmRldiwKKwkJCSAgIiVzIGRtYV9idWY9M0QlcGFkIGRt YV9sZW49M0QweCV4IGZsYWdzPTNEMHgleCBjX2luZGV4PTNEMHgleFxuIiwKKwkJCSAgX19mdW5j X18sICZtYXBwaW5nLCBkZXNjLT5zaXplLCBkZXNjLT5mbGFncywKKwkJCSAgaW50Zi0+dHhfc3Bi X2NsZWFuX2luZGV4KTsKKworCQliY21hc3BfY2xlYW5fdHhjYihpbnRmLCBpbnRmLT50eF9zcGJf Y2xlYW5faW5kZXgpOworCQlyZWxlYXNlZCsrOworCisJCWludGYtPnR4X3NwYl9jbGVhbl9pbmRl eCA9M0QgaW5jcl9yaW5nKGludGYtPnR4X3NwYl9jbGVhbl9pbmRleCwKKwkJCQkJCSAgICAgREVT Q19SSU5HX0NPVU5UKTsKKwkJaW50Zi0+dHhfc3BiX2RtYV9yZWFkID0zRCBpbmNyX2ZpcnN0X2J5 dGUoaW50Zi0+dHhfc3BiX2RtYV9yZWFkLAorCQkJCQkJCWludGYtPnR4X3NwYl9kbWFfYWRkciwK KwkJCQkJCQlERVNDX1JJTkdfQ09VTlQpOworCX0KKworCS8qIEVuc3VyZSBhbGwgZGVzY3JpcHRv cnMgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gRFJBTSBmb3IgdGhlIGhhcmR3YXJlCisJICogdG8gc2Vl IHVwZGF0ZWQgY29udGVudHMuCisJICovCisJd21iKCk7CisKKwluYXBpX2NvbXBsZXRlKCZpbnRm LT50eF9uYXBpKTsKKworCWJjbWFzcF9lbmFibGVfdHhfaXJxKGludGYsIDEpOworCisJaWYgKHJl bGVhc2VkKQorCQluZXRpZl93YWtlX3F1ZXVlKGludGYtPm5kZXYpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYmNtYXNwX3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBp bnQgYnVkZ2V0KQoreworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QKKwkJY29udGFpbmVy X29mKG5hcGksIHN0cnVjdCBiY21hc3BfaW50ZiwgcnhfbmFwaSk7CisJc3RydWN0IGRldmljZSAq a2RldiA9M0QgJmludGYtPnBhcmVudC0+cGRldi0+ZGV2OworCXVuc2lnbmVkIGxvbmcgcHJvY2Vz c2VkID0zRCAwOworCXN0cnVjdCBiY21hc3BfZGVzYyAqZGVzYzsKKwlzdHJ1Y3Qgc2tfYnVmZiAq c2tiOworCWRtYV9hZGRyX3QgdmFsaWQ7CisJdm9pZCAqZGF0YTsKKwl1NjQgZmxhZ3M7CisJdTMy IGxlbjsKKworCXZhbGlkID0zRCBiY21hc3BfaW50Zl9yeF9kZXNjX3JlYWQoaW50ZikgKyAxOwor CWlmICh2YWxpZCA9M0Q9M0QgaW50Zi0+cnhfZWRwa3RfZG1hX2FkZHIgKyBERVNDX1JJTkdfU0la RSkKKwkJdmFsaWQgPTNEIGludGYtPnJ4X2VkcGt0X2RtYV9hZGRyOworCisJd2hpbGUgKChwcm9j ZXNzZWQgPCBidWRnZXQpICYmICh2YWxpZCAhPTNEIGludGYtPnJ4X2VkcGt0X2RtYV9yZWFkKSkg eworCQlkZXNjID0zRCAmaW50Zi0+cnhfZWRwa3RfY3B1W2ludGYtPnJ4X2VkcGt0X2luZGV4XTsK KworCQkvKiBFbnN1cmUgdGhhdCBkZXNjcmlwdG9yIGhhcyBiZWVuIGZ1bGx5IHdyaXR0ZW4gdG8g RFJBTSBieQorCQkgKiBoYXJkd2FyZSBiZWZvcmUgcmVhZGluZyBieSB0aGUgQ1BVCisJCSAqLwor CQlybWIoKTsKKworCQkvKiBDYWxjdWxhdGUgdmlydCBhZGRyIGJ5IG9mZnNldHRpbmcgZnJvbSBw aHlzaWNhbCBhZGRyICovCisJCWRhdGEgPTNEIGludGYtPnJ4X3JpbmdfY3B1ICsKKwkJCShERVND X0FERFIoZGVzYy0+YnVmKSAtIGludGYtPnJ4X3JpbmdfZG1hKTsKKworCQlmbGFncyA9M0QgREVT Q19GTEFHUyhkZXNjLT5idWYpOworCQlpZiAodW5saWtlbHkoZmxhZ3MgJiAoREVTQ19DUkNfRVJS IHwgREVTQ19SWF9TWU1fRVJSKSkpIHsKKwkJCW5ldGlmX2VycihpbnRmLCByeF9zdGF0dXMsIGlu dGYtPm5kZXYsICJmbGFncz0zRDB4JWxseFxuIiwKKwkJCQkgIGZsYWdzKTsKKworCQkJaW50Zi0+ bmRldi0+c3RhdHMucnhfZXJyb3JzKys7CisJCQlpbnRmLT5uZGV2LT5zdGF0cy5yeF9kcm9wcGVk Kys7CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShrZGV2 LCBERVNDX0FERFIoZGVzYy0+YnVmKSwgZGVzYy0+c2l6ZSwKKwkJCQkJRE1BX0ZST01fREVWSUNF KTsKKworCQlsZW4gPTNEIGRlc2MtPnNpemU7CisKKwkJc2tiID0zRCBfX25ldGRldl9hbGxvY19z a2IoaW50Zi0+bmRldiwgbGVuLAorCQkJCQkgR0ZQX0FUT01JQyB8IF9fR0ZQX05PV0FSTik7CisJ CWlmICghc2tiKSB7CisJCQlpbnRmLT5uZGV2LT5zdGF0cy5yeF9lcnJvcnMrKzsKKwkJCWludGYt Pm1pYi5hbGxvY19yeF9za2JfZmFpbGVkKys7CisJCQluZXRpZl93YXJuKGludGYsIHJ4X2Vyciwg aW50Zi0+bmRldiwKKwkJCQkgICAiU0tCIGFsbG9jIGZhaWxlZFxuIik7CisJCQlnb3RvIG5leHQ7 CisJCX0KKworCQlza2JfcHV0KHNrYiwgbGVuKTsKKwkJbWVtY3B5KHNrYi0+ZGF0YSwgZGF0YSwg bGVuKTsKKworCQlza2JfcHVsbChza2IsIDIpOworCQlsZW4gLT0zRCAyOworCQlpZiAobGlrZWx5 KGludGYtPmNyY19md2QpKSB7CisJCQlza2JfdHJpbShza2IsIGxlbiAtIEVUSF9GQ1NfTEVOKTsK KwkJCWxlbiAtPTNEIEVUSF9GQ1NfTEVOOworCQl9CisKKwkJaWYgKChpbnRmLT5uZGV2LT5mZWF0 dXJlcyAmIE5FVElGX0ZfUlhDU1VNKSAmJgorCQkgICAgKGRlc2MtPmJ1ZiAmIERFU0NfQ0hLU1VN KSkKKwkJCXNrYi0+aXBfc3VtbWVkID0zRCBDSEVDS1NVTV9VTk5FQ0VTU0FSWTsKKworCQlza2It PnByb3RvY29sID0zRCBldGhfdHlwZV90cmFucyhza2IsIGludGYtPm5kZXYpOworCisJCW5hcGlf Z3JvX3JlY2VpdmUobmFwaSwgc2tiKTsKKworCQlpbnRmLT5uZGV2LT5zdGF0cy5yeF9wYWNrZXRz Kys7CisJCWludGYtPm5kZXYtPnN0YXRzLnJ4X2J5dGVzICs9M0QgbGVuOworCituZXh0OgorCQli Y21hc3BfaW50Zl9yeF9idWZmZXJfd3JpdGUoaW50ZiwgKERFU0NfQUREUihkZXNjLT5idWYpICsK KwkJCQkJICAgIGRlc2MtPnNpemUpKTsKKworCQlwcm9jZXNzZWQrKzsKKwkJaW50Zi0+cnhfZWRw a3RfZG1hX3JlYWQgPTNECisJCQlpbmNyX2ZpcnN0X2J5dGUoaW50Zi0+cnhfZWRwa3RfZG1hX3Jl YWQsCisJCQkJCWludGYtPnJ4X2VkcGt0X2RtYV9hZGRyLAorCQkJCQlERVNDX1JJTkdfQ09VTlQp OworCQlpbnRmLT5yeF9lZHBrdF9pbmRleCA9M0QgaW5jcl9yaW5nKGludGYtPnJ4X2VkcGt0X2lu ZGV4LAorCQkJCQkJIERFU0NfUklOR19DT1VOVCk7CisJfQorCisJYmNtYXNwX2ludGZfcnhfZGVz Y193cml0ZShpbnRmLCBpbnRmLT5yeF9lZHBrdF9kbWFfcmVhZCk7CisKKwlpZiAocHJvY2Vzc2Vk IDwgYnVkZ2V0KSB7CisJCW5hcGlfY29tcGxldGVfZG9uZSgmaW50Zi0+cnhfbmFwaSwgcHJvY2Vz c2VkKTsKKwkJYmNtYXNwX2VuYWJsZV9yeF9pcnEoaW50ZiwgMSk7CisJfQorCisJcmV0dXJuIHBy b2Nlc3NlZDsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2Fkal9saW5rKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihk ZXYpOworCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPTNEIGRldi0+cGh5ZGV2OworCXUzMiBj bWRfYml0cyA9M0QgMCwgcmVnOworCWludCBjaGFuZ2VkID0zRCAwOworCisJaWYgKGludGYtPm9s ZF9saW5rICE9M0QgcGh5ZGV2LT5saW5rKSB7CisJCWNoYW5nZWQgPTNEIDE7CisJCWludGYtPm9s ZF9saW5rID0zRCBwaHlkZXYtPmxpbms7CisJfQorCisJaWYgKGludGYtPm9sZF9kdXBsZXggIT0z RCBwaHlkZXYtPmR1cGxleCkgeworCQljaGFuZ2VkID0zRCAxOworCQlpbnRmLT5vbGRfZHVwbGV4 ID0zRCBwaHlkZXYtPmR1cGxleDsKKwl9CisKKwlzd2l0Y2ggKHBoeWRldi0+c3BlZWQpIHsKKwlj YXNlIFNQRUVEXzI1MDA6CisJCWNtZF9iaXRzID0zRCBVTUNfQ01EX1NQRUVEXzI1MDA7CisJCWJy ZWFrOworCWNhc2UgU1BFRURfMTAwMDoKKwkJY21kX2JpdHMgPTNEIFVNQ19DTURfU1BFRURfMTAw MDsKKwkJYnJlYWs7CisJY2FzZSBTUEVFRF8xMDA6CisJCWNtZF9iaXRzID0zRCBVTUNfQ01EX1NQ RUVEXzEwMDsKKwkJYnJlYWs7CisJY2FzZSBTUEVFRF8xMDoKKwkJY21kX2JpdHMgPTNEIFVNQ19D TURfU1BFRURfMTA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKwljbWRfYml0 cyA8PD0zRCBVTUNfQ01EX1NQRUVEX1NISUZUOworCisJaWYgKHBoeWRldi0+ZHVwbGV4ID0zRD0z RCBEVVBMRVhfSEFMRikKKwkJY21kX2JpdHMgfD0zRCBVTUNfQ01EX0hEX0VOOworCisJaWYgKGlu dGYtPm9sZF9wYXVzZSAhPTNEIHBoeWRldi0+cGF1c2UpIHsKKwkJY2hhbmdlZCA9M0QgMTsKKwkJ aW50Zi0+b2xkX3BhdXNlID0zRCBwaHlkZXYtPnBhdXNlOworCX0KKworCWlmICghcGh5ZGV2LT5w YXVzZSkKKwkJY21kX2JpdHMgfD0zRCBVTUNfQ01EX1JYX1BBVVNFX0lHTk9SRSB8IFVNQ19DTURf VFhfUEFVU0VfSUdOT1JFOworCisJaWYgKCFjaGFuZ2VkKQorCQlyZXR1cm47CisKKwlpZiAocGh5 ZGV2LT5saW5rKSB7CisJCXJlZyA9M0QgdW1hY19ybChpbnRmLCBVTUNfQ01EKTsKKwkJcmVnICY9 M0QgfigoVU1DX0NNRF9TUEVFRF9NQVNLIDw8IFVNQ19DTURfU1BFRURfU0hJRlQpIHwKKwkJCVVN Q19DTURfSERfRU4gfCBVTUNfQ01EX1JYX1BBVVNFX0lHTk9SRSB8CisJCQlVTUNfQ01EX1RYX1BB VVNFX0lHTk9SRSk7CisJCXJlZyB8PTNEIGNtZF9iaXRzOworCQl1bWFjX3dsKGludGYsIHJlZywg VU1DX0NNRCk7CisKKwkJaW50Zi0+ZWVlLmVlZV9hY3RpdmUgPTNEIHBoeV9pbml0X2VlZShwaHlk ZXYsIDApID49M0QgMDsKKwkJYmNtYXNwX2VlZV9lbmFibGVfc2V0KGludGYsIGludGYtPmVlZS5l ZWVfYWN0aXZlKTsKKwl9CisKKwlyZWcgPTNEIHJnbWlpX3JsKGludGYsIFJHTUlJX09PQl9DTlRS TCk7CisJaWYgKHBoeWRldi0+bGluaykKKwkJcmVnIHw9M0QgUkdNSUlfTElOSzsKKwllbHNlCisJ CXJlZyAmPTNEIH5SR01JSV9MSU5LOworCXJnbWlpX3dsKGludGYsIHJlZywgUkdNSUlfT09CX0NO VFJMKTsKKworCWlmIChjaGFuZ2VkKQorCQlwaHlfcHJpbnRfc3RhdHVzKHBoeWRldik7Cit9CisK K3N0YXRpYyBpbnQgYmNtYXNwX2luaXRfcngoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmKQorewor CXN0cnVjdCBkZXZpY2UgKmtkZXYgPTNEICZpbnRmLT5wYXJlbnQtPnBkZXYtPmRldjsKKwlzdHJ1 Y3QgcGFnZSAqYnVmZmVyX3BnOworCWRtYV9hZGRyX3QgZG1hOworCXZvaWQgKnA7CisJdTMyIHJl ZzsKKwlpbnQgcmV0OworCisJaW50Zi0+cnhfYnVmX29yZGVyID0zRCBnZXRfb3JkZXIoUklOR19C VUZGRVJfU0laRSk7CisJYnVmZmVyX3BnID0zRCBhbGxvY19wYWdlcyhHRlBfS0VSTkVMLCBpbnRm LT5yeF9idWZfb3JkZXIpOworCisJZG1hID0zRCBkbWFfbWFwX3BhZ2Uoa2RldiwgYnVmZmVyX3Bn LCAwLCBSSU5HX0JVRkZFUl9TSVpFLAorCQkJICAgRE1BX0ZST01fREVWSUNFKTsKKwlpZiAoZG1h X21hcHBpbmdfZXJyb3Ioa2RldiwgZG1hKSkgeworCQlfX2ZyZWVfcGFnZXMoYnVmZmVyX3BnLCBp bnRmLT5yeF9idWZfb3JkZXIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJaW50Zi0+cnhfcmlu Z19jcHUgPTNEIHBhZ2VfdG9fdmlydChidWZmZXJfcGcpOworCWludGYtPnJ4X3JpbmdfZG1hID0z RCBkbWE7CisJaW50Zi0+cnhfcmluZ19kbWFfdmFsaWQgPTNEIGludGYtPnJ4X3JpbmdfZG1hICsg UklOR19CVUZGRVJfU0laRSAtIDE7CisKKwlwID0zRCBkbWFfYWxsb2NfY29oZXJlbnQoa2Rldiwg REVTQ19SSU5HX1NJWkUsICZpbnRmLT5yeF9lZHBrdF9kbWFfYWRkciwKKwkJCSAgICAgICBHRlBf S0VSTkVMKTsKKwlpZiAoIXApIHsKKwkJcmV0ID0zRCAtRU5PTUVNOworCQlnb3RvIGZyZWVfcnhf cmluZzsKKwl9CisJaW50Zi0+cnhfZWRwa3RfY3B1ID0zRCBwOworCisJbmV0aWZfbmFwaV9hZGQo aW50Zi0+bmRldiwgJmludGYtPnJ4X25hcGksIGJjbWFzcF9yeF9wb2xsKTsKKworCWludGYtPnJ4 X2VkcGt0X2RtYV9yZWFkID0zRCBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkcjsKKwlpbnRmLT5yeF9l ZHBrdF9pbmRleCA9M0QgMDsKKworCS8qIE1ha2Ugc3VyZSBjaGFubmVscyBhcmUgZGlzYWJsZWQg Ki8KKwlyeF9lZHBrdF9jZmdfd2woaW50ZiwgMHgwLCBSWF9FRFBLVF9DRkdfRU5BQkxFKTsKKwor CS8qIFJ4IFNQQiAqLworCXJ4X2VkcGt0X2NmZ193cShpbnRmLCBpbnRmLT5yeF9yaW5nX2RtYSwg UlhfRURQS1RfUklOR19CVUZGRVJfUkVBRCk7CisJcnhfZWRwa3RfY2ZnX3dxKGludGYsIGludGYt PnJ4X3JpbmdfZG1hLCBSWF9FRFBLVF9SSU5HX0JVRkZFUl9XUklURSk7CisJcnhfZWRwa3RfY2Zn X3dxKGludGYsIGludGYtPnJ4X3JpbmdfZG1hLCBSWF9FRFBLVF9SSU5HX0JVRkZFUl9CQVNFKTsK KwlyeF9lZHBrdF9jZmdfd3EoaW50ZiwgaW50Zi0+cnhfcmluZ19kbWFfdmFsaWQsCisJCQlSWF9F RFBLVF9SSU5HX0JVRkZFUl9FTkQpOworCXJ4X2VkcGt0X2NmZ193cShpbnRmLCBpbnRmLT5yeF9y aW5nX2RtYV92YWxpZCwKKwkJCVJYX0VEUEtUX1JJTkdfQlVGRkVSX1ZBTElEKTsKKworCS8qIEVE UEtUICovCisJcnhfZWRwa3RfY2ZnX3dsKGludGYsIChSWF9FRFBLVF9DRkdfQ0ZHMF9SQlVGXzRL IDw8CisJCQlSWF9FRFBLVF9DRkdfQ0ZHMF9EQlVGX1NISUZUKSB8CisJCSAgICAgICAoUlhfRURQ S1RfQ0ZHX0NGRzBfNjRfQUxOIDw8CisJCQlSWF9FRFBLVF9DRkdfQ0ZHMF9CQUxOX1NISUZUKSB8 CisJCSAgICAgICAoUlhfRURQS1RfQ0ZHX0NGRzBfRUZSTV9TVFVGKSwKKwkJCVJYX0VEUEtUX0NG R19DRkcwKTsKKwlyeF9lZHBrdF9kbWFfd3EoaW50ZiwgaW50Zi0+cnhfZWRwa3RfZG1hX2FkZHIs IFJYX0VEUEtUX0RNQV9XUklURSk7CisJcnhfZWRwa3RfZG1hX3dxKGludGYsIGludGYtPnJ4X2Vk cGt0X2RtYV9hZGRyLCBSWF9FRFBLVF9ETUFfUkVBRCk7CisJcnhfZWRwa3RfZG1hX3dxKGludGYs IGludGYtPnJ4X2VkcGt0X2RtYV9hZGRyLCBSWF9FRFBLVF9ETUFfQkFTRSk7CisJcnhfZWRwa3Rf ZG1hX3dxKGludGYsIGludGYtPnJ4X2VkcGt0X2RtYV9hZGRyICsgKERFU0NfUklOR19TSVpFIC0g MSksCisJCQlSWF9FRFBLVF9ETUFfRU5EKTsKKwlyeF9lZHBrdF9kbWFfd3EoaW50ZiwgaW50Zi0+ cnhfZWRwa3RfZG1hX2FkZHIgKyAoREVTQ19SSU5HX1NJWkUgLSAxKSwKKwkJCVJYX0VEUEtUX0RN QV9WQUxJRCk7CisKKwlyZWcgPTNEIFVNQUMyRkJfQ0ZHX0RFRkFVTFRfRU4gfAorCSAgICAgICgo aW50Zi0+Y2hhbm5lbCArIDExKSA8PCBVTUFDMkZCX0NGR19DSElEX1NISUZUKTsKKwlyZWcgfD0z RCAoMHhkIDw8IFVNQUMyRkJfQ0ZHX09LX1NFTkRfU0hJRlQpOworCXVtYWMyZmJfd2woaW50Ziwg cmVnLCBVTUFDMkZCX0NGRyk7CisKKwlyZXR1cm4gMDsKKworZnJlZV9yeF9yaW5nOgorCWRtYV91 bm1hcF9wYWdlKGtkZXYsIGludGYtPnJ4X3JpbmdfZG1hLCBSSU5HX0JVRkZFUl9TSVpFLAorCQkg ICAgICAgRE1BX0ZST01fREVWSUNFKTsKKwlfX2ZyZWVfcGFnZXModmlydF90b19wYWdlKGludGYt PnJ4X3JpbmdfY3B1KSwgaW50Zi0+cnhfYnVmX29yZGVyKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIGJjbWFzcF9yZWNsYWltX2ZyZWVfYWxsX3J4KHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAmaW50Zi0+cGFyZW50LT5wZGV2 LT5kZXY7CisKKwlkbWFfZnJlZV9jb2hlcmVudChrZGV2LCBERVNDX1JJTkdfU0laRSwgaW50Zi0+ cnhfZWRwa3RfY3B1LAorCQkJICBpbnRmLT5yeF9lZHBrdF9kbWFfYWRkcik7CisJZG1hX3VubWFw X3BhZ2Uoa2RldiwgaW50Zi0+cnhfcmluZ19kbWEsIFJJTkdfQlVGRkVSX1NJWkUsCisJCSAgICAg ICBETUFfRlJPTV9ERVZJQ0UpOworCV9fZnJlZV9wYWdlcyh2aXJ0X3RvX3BhZ2UoaW50Zi0+cnhf cmluZ19jcHUpLCBpbnRmLT5yeF9idWZfb3JkZXIpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9p bml0X3R4KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2 ID0zRCAmaW50Zi0+cGFyZW50LT5wZGV2LT5kZXY7CisJdm9pZCAqcDsKKwlpbnQgcmV0OworCisJ cCA9M0QgZG1hX2FsbG9jX2NvaGVyZW50KGtkZXYsIERFU0NfUklOR19TSVpFLCAmaW50Zi0+dHhf c3BiX2RtYV9hZGRyLAorCQkJICAgICAgIEdGUF9LRVJORUwpOworCWlmICghcCkKKwkJcmV0dXJu IC1FTk9NRU07CisKKwlpbnRmLT50eF9zcGJfY3B1ID0zRCBwOworCWludGYtPnR4X3NwYl9kbWFf dmFsaWQgPTNEIGludGYtPnR4X3NwYl9kbWFfYWRkciArIERFU0NfUklOR19TSVpFIC0gMTsKKwlp bnRmLT50eF9zcGJfZG1hX3JlYWQgPTNEIGludGYtPnR4X3NwYl9kbWFfYWRkcjsKKworCWludGYt PnR4X2NicyA9M0Qga2NhbGxvYyhERVNDX1JJTkdfQ09VTlQsIHNpemVvZihzdHJ1Y3QgYmNtYXNw X3R4X2NiKSwKKwkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIWludGYtPnR4X2Nicykgewor CQlyZXQgPTNEIC1FTk9NRU07CisJCWdvdG8gZnJlZV90eF9zcGI7CisJfQorCisJc3Bpbl9sb2Nr X2luaXQoJmludGYtPnR4X2xvY2spOworCWludGYtPnR4X3NwYl9pbmRleCA9M0QgMDsKKwlpbnRm LT50eF9zcGJfY2xlYW5faW5kZXggPTNEIDA7CisKKwluZXRpZl9uYXBpX2FkZF90eChpbnRmLT5u ZGV2LCAmaW50Zi0+dHhfbmFwaSwgYmNtYXNwX3R4X3BvbGwpOworCisJLyogTWFrZSBzdXJlIGNo YW5uZWxzIGFyZSBkaXNhYmxlZCAqLworCXR4X3NwYl9jdHJsX3dsKGludGYsIDB4MCwgVFhfU1BC X0NUUkxfRU5BQkxFKTsKKwl0eF9lcGt0X2NvcmVfd2woaW50ZiwgMHgwLCBUWF9FUEtUX0NfQ0ZH X01JU0MpOworCisJLyogVHggU1BCICovCisJdHhfc3BiX2N0cmxfd2woaW50ZiwgKChpbnRmLT5j aGFubmVsICsgOCkgPDwgVFhfU1BCX0NUUkxfWEZfQklEX1NISUZUKSwKKwkJICAgICAgIFRYX1NQ Ql9DVFJMX1hGX0NUUkwyKTsKKwl0eF9wYXVzZV9jdHJsX3dsKGludGYsICgxIDw8IChpbnRmLT5j aGFubmVsICsgOCkpLCBUWF9QQVVTRV9NQVBfVkVDVE9SKTsKKwl0eF9zcGJfdG9wX3dsKGludGYs IDB4MWUsIFRYX1NQQl9UT1BfQkxLT1VUKTsKKwl0eF9zcGJfdG9wX3dsKGludGYsIDB4MCwgVFhf U1BCX1RPUF9TUFJFX0JXX0NUUkwpOworCisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRmLT50eF9z cGJfZG1hX2FkZHIsIFRYX1NQQl9ETUFfUkVBRCk7CisJdHhfc3BiX2RtYV93cShpbnRmLCBpbnRm LT50eF9zcGJfZG1hX2FkZHIsIFRYX1NQQl9ETUFfQkFTRSk7CisJdHhfc3BiX2RtYV93cShpbnRm LCBpbnRmLT50eF9zcGJfZG1hX3ZhbGlkLCBUWF9TUEJfRE1BX0VORCk7CisJdHhfc3BiX2RtYV93 cShpbnRmLCBpbnRmLT50eF9zcGJfZG1hX3ZhbGlkLCBUWF9TUEJfRE1BX1ZBTElEKTsKKworCXJl dHVybiAwOworCitmcmVlX3R4X3NwYjoKKwlkbWFfZnJlZV9jb2hlcmVudChrZGV2LCBERVNDX1JJ TkdfU0laRSwgaW50Zi0+dHhfc3BiX2NwdSwKKwkJCSAgaW50Zi0+dHhfc3BiX2RtYV9hZGRyKTsK KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9yZWNsYWltX2ZyZWVfYWxs X3R4KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0z RCAmaW50Zi0+cGFyZW50LT5wZGV2LT5kZXY7CisKKwkvKiBGcmVlIGRlc2NyaXB0b3JzICovCisJ ZG1hX2ZyZWVfY29oZXJlbnQoa2RldiwgREVTQ19SSU5HX1NJWkUsIGludGYtPnR4X3NwYl9jcHUs CisJCQkgIGludGYtPnR4X3NwYl9kbWFfYWRkcik7CisKKwkvKiBGcmVlIGNicyAqLworCWtmcmVl KGludGYtPnR4X2Nicyk7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9lcGh5X2VuYWJsZV9zZXQo c3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuYWJsZSkKK3sKKwl1MzIgbWFzayA9M0Qg UkdNSUlfRVBIWV9DRkdfSUREUV9CSUFTIHwgUkdNSUlfRVBIWV9DRkdfRVhUX1BXUkRPV04gfAor CQkgICBSR01JSV9FUEhZX0NGR19JRERRX0dMT0JBTDsKKwl1MzIgcmVnOworCisJcmVnID0zRCBy Z21paV9ybChpbnRmLCBSR01JSV9FUEhZX0NOVFJMKTsKKwlpZiAoZW5hYmxlKSB7CisJCXJlZyAm PTNEIH5SR01JSV9FUEhZX0NLMjVfRElTOworCQlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX0VQ SFlfQ05UUkwpOworCQltZGVsYXkoMSk7CisKKwkJcmVnICY9M0Qgfm1hc2s7CisJCXJlZyB8PTNE IFJHTUlJX0VQSFlfUkVTRVQ7CisJCXJnbWlpX3dsKGludGYsIHJlZywgUkdNSUlfRVBIWV9DTlRS TCk7CisJCW1kZWxheSgxKTsKKworCQlyZWcgJj0zRCB+UkdNSUlfRVBIWV9SRVNFVDsKKwl9IGVs c2UgeworCQlyZWcgfD0zRCBtYXNrIHwgUkdNSUlfRVBIWV9SRVNFVDsKKwkJcmdtaWlfd2woaW50 ZiwgcmVnLCBSR01JSV9FUEhZX0NOVFJMKTsKKwkJbWRlbGF5KDEpOworCQlyZWcgfD0zRCBSR01J SV9FUEhZX0NLMjVfRElTOworCX0KKwlyZ21paV93bChpbnRmLCByZWcsIFJHTUlJX0VQSFlfQ05U UkwpOworCW1kZWxheSgxKTsKKworCS8qIFNldCBvciBjbGVhciB0aGUgTEVEIGNvbnRyb2wgb3Zl cnJpZGUgdG8gYXZvaWQgbGlnaHRpbmcgdXAgTEVEcworCSAqIHdoaWxlIHRoZSBFUEhZIGlzIHBv d2VyZWQgb2ZmIGFuZCBkcmF3aW5nIHVubmVjZXNzYXJ5IGN1cnJlbnQuCisJICovCisJcmVnID0z RCByZ21paV9ybChpbnRmLCBSR01JSV9TWVNfTEVEX0NOVFJMKTsKKwlpZiAoZW5hYmxlKQorCQly ZWcgJj0zRCB+UkdNSUlfU1lTX0xFRF9DTlRSTF9MSU5LX09WUkQ7CisJZWxzZQorCQlyZWcgfD0z RCBSR01JSV9TWVNfTEVEX0NOVFJMX0xJTktfT1ZSRDsKKwlyZ21paV93bChpbnRmLCByZWcsIFJH TUlJX1NZU19MRURfQ05UUkwpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmdtaWlfbW9kZV9l bl9zZXQoc3RydWN0IGJjbWFzcF9pbnRmICppbnRmLCBib29sIGVuYWJsZSkKK3sKKwl1MzIgcmVn OworCisJcmVnID0zRCByZ21paV9ybChpbnRmLCBSR01JSV9PT0JfQ05UUkwpOworCXJlZyAmPTNE IH5SR01JSV9PT0JfRElTOworCWlmIChlbmFibGUpCisJCXJlZyB8PTNEIFJHTUlJX01PREVfRU47 CisJZWxzZQorCQlyZWcgJj0zRCB+UkdNSUlfTU9ERV9FTjsKKwlyZ21paV93bChpbnRmLCByZWcs IFJHTUlJX09PQl9DTlRSTCk7Cit9CisKK3N0YXRpYyB2b2lkIGJjbWFzcF9uZXRpZl9kZWluaXQo c3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNE IG5ldGRldl9wcml2KGRldik7CisJdTMyIHJlZywgdGltZW91dCA9M0QgMTAwMDsKKworCW5hcGlf ZGlzYWJsZSgmaW50Zi0+dHhfbmFwaSk7CisKKwliY21hc3BfZW5hYmxlX3R4KGludGYsIDApOwor CisJLyogRmx1c2ggYW55IFRYIHBhY2tldHMgaW4gdGhlIHBpcGUgKi8KKwl0eF9zcGJfZG1hX3ds KGludGYsIFRYX1NQQl9ETUFfRklGT19GTFVTSCwgVFhfU1BCX0RNQV9GSUZPX0NUUkwpOworCWRv IHsKKwkJcmVnID0zRCB0eF9zcGJfZG1hX3JsKGludGYsIFRYX1NQQl9ETUFfRklGT19TVEFUVVMp OworCQlpZiAoIShyZWcgJiBUWF9TUEJfRE1BX0ZJRk9fRkxVU0gpKQorCQkJYnJlYWs7CisJCXVz bGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKKwl9IHdoaWxlICh0aW1lb3V0LS0gPiAwKTsKKwl0eF9z cGJfZG1hX3dsKGludGYsIDB4MCwgVFhfU1BCX0RNQV9GSUZPX0NUUkwpOworCisJdW1hY19lbmFi bGVfc2V0KGludGYsIFVNQ19DTURfVFhfRU4sIDApOworCisJcGh5X3N0b3AoZGV2LT5waHlkZXYp OworCisJdW1hY19lbmFibGVfc2V0KGludGYsIFVNQ19DTURfUlhfRU4sIDApOworCisJYmNtYXNw X2ZsdXNoX3J4X3BvcnQoaW50Zik7CisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWJjbWFz cF9lbmFibGVfcngoaW50ZiwgMCk7CisKKwluYXBpX2Rpc2FibGUoJmludGYtPnJ4X25hcGkpOwor CisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovCisJYmNtYXNwX2VuYWJsZV90eF9pcnEoaW50Ziwg MCk7CisJYmNtYXNwX2VuYWJsZV9yeF9pcnEoaW50ZiwgMCk7CisKKwluZXRpZl9uYXBpX2RlbCgm aW50Zi0+dHhfbmFwaSk7CisJYmNtYXNwX3JlY2xhaW1fZnJlZV9hbGxfdHgoaW50Zik7CisKKwlu ZXRpZl9uYXBpX2RlbCgmaW50Zi0+cnhfbmFwaSk7CisJYmNtYXNwX3JlY2xhaW1fZnJlZV9hbGxf cngoaW50Zik7Cit9CisKK3N0YXRpYyBpbnQgYmNtYXNwX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYgPTNEIG5ldGRldl9wcml2KGRldik7 CisKKwluZXRpZl9kYmcoaW50ZiwgaWZkb3duLCBkZXYsICJiY21hc3Agc3RvcFxuIik7CisKKwkv KiBTdG9wIHR4IGZyb20gdXBkYXRpbmcgSFcgKi8KKwluZXRpZl90eF9kaXNhYmxlKGRldik7CisK KwliY21hc3BfbmV0aWZfZGVpbml0KGRldik7CisKKwlwaHlfZGlzY29ubmVjdChkZXYtPnBoeWRl dik7CisKKwkvKiBEaXNhYmxlIGludGVybmFsIEVQSFkgb3IgZXh0ZXJuYWwgUEhZICovCisJaWYg KGludGYtPmludGVybmFsX3BoeSkKKwkJYmNtYXNwX2VwaHlfZW5hYmxlX3NldChpbnRmLCBmYWxz ZSk7CisJZWxzZQorCQliY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgZmFsc2UpOworCisJ LyogRGlzYWJsZSB0aGUgaW50ZXJmYWNlIGNsb2NrcyAqLworCWJjbWFzcF9jb3JlX2Nsb2NrX3Nl dF9pbnRmKGludGYsIGZhbHNlKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShpbnRmLT5wYXJl bnQtPmNsayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX2NvbmZpZ3Vy ZV9wb3J0KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwl1MzIgcmVnLCBpZF9tb2RlX2Rp cyA9M0QgMDsKKworCXJlZyA9M0QgcmdtaWlfcmwoaW50ZiwgUkdNSUlfUE9SVF9DTlRSTCk7CisJ cmVnICY9M0QgflJHTUlJX1BPUlRfTU9ERV9NQVNLOworCisJc3dpdGNoIChpbnRmLT5waHlfaW50 ZXJmYWNlKSB7CisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CisJCS8qIFJHTUlJX05P X0lEOiBUWEMgdHJhbnNpdGlvbnMgYXQgdGhlIHNhbWUgdGltZSBhcyBUWEQKKwkJICoJCShyZXF1 aXJlcyBQQ0Igb3IgcmVjZWl2ZXItc2lkZSBkZWxheSkKKwkJICogUkdNSUk6CUFkZCAybnMgZGVs YXkgb24gVFhDICg5MCBkZWdyZWUgc2hpZnQpCisJCSAqCisJCSAqIElEIGlzIGltcGxpY2l0bHkg ZGlzYWJsZWQgZm9yIDEwME1icHMgKFJHKU1JSSBvcGVyYXRpb24uCisJCSAqLworCQlpZF9tb2Rl X2RpcyA9M0QgUkdNSUlfSURfTU9ERV9ESVM7CisJCWZhbGx0aHJvdWdoOworCWNhc2UgUEhZX0lO VEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6CisJCXJlZyB8PTNEIFJHTUlJX1BPUlRfTU9ERV9FWFRf R1BIWTsKKwkJYnJlYWs7CisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfTUlJOgorCQlyZWcgfD0z RCBSR01JSV9QT1JUX01PREVfRVhUX0VQSFk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFr OworCX0KKworCWlmIChpbnRmLT5pbnRlcm5hbF9waHkpCisJCXJlZyB8PTNEIFJHTUlJX1BPUlRf TU9ERV9FUEhZOworCisJcmdtaWlfd2woaW50ZiwgcmVnLCBSR01JSV9QT1JUX0NOVFJMKTsKKwor CXJlZyA9M0QgcmdtaWlfcmwoaW50ZiwgUkdNSUlfT09CX0NOVFJMKTsKKwlyZWcgJj0zRCB+UkdN SUlfSURfTU9ERV9ESVM7CisJcmVnIHw9M0QgaWRfbW9kZV9kaXM7CisJcmdtaWlfd2woaW50Ziwg cmVnLCBSR01JSV9PT0JfQ05UUkwpOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9uZXRpZl9pbml0 KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgcGh5X2Nvbm5lY3QpCit7CisJc3RydWN0IGJj bWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYpOworCXBoeV9pbnRlcmZhY2VfdCBw aHlfaWZhY2UgPTNEIGludGYtPnBoeV9pbnRlcmZhY2U7CisJdTMyIHBoeV9mbGFncyA9M0QgUEhZ X0JSQ01fQVVUT19QV1JEV05fRU5BQkxFIHwKKwkJCVBIWV9CUkNNX0RJU19UWENSWENfTk9FTlJH WSB8CisJCQlQSFlfQlJDTV9JRERRX1NVU1BFTkQ7CisJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRl diA9M0QgTlVMTDsKKwlpbnQgcmV0OworCisJLyogQWx3YXlzIGVuYWJsZSBpbnRlcmZhY2UgY2xv Y2tzICovCisJYmNtYXNwX2NvcmVfY2xvY2tfc2V0X2ludGYoaW50ZiwgdHJ1ZSk7CisKKwkvKiBF bmFibGUgaW50ZXJuYWwgUEhZIG9yIGV4dGVybmFsIFBIWSBiZWZvcmUgYW55IE1BQyBhY3Rpdml0 eSAqLworCWlmIChpbnRmLT5pbnRlcm5hbF9waHkpCisJCWJjbWFzcF9lcGh5X2VuYWJsZV9zZXQo aW50ZiwgdHJ1ZSk7CisJZWxzZQorCQliY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgdHJ1 ZSk7CisJYmNtYXNwX2NvbmZpZ3VyZV9wb3J0KGludGYpOworCisJLyogVGhpcyBpcyBhbiB1Z2x5 IHF1aXJrIGJ1dCB3ZSBoYXZlIG5vdCBiZWVuIGNvcnJlY3RseQorCSAqIGludGVycHJldGluZyB0 aGUgcGh5X2ludGVyZmFjZSB2YWx1ZXMgYW5kIHdlIGhhdmUgZG9uZSB0aGF0CisJICogYWNyb3Nz IGRpZmZlcmVudCBkcml2ZXJzLCBzbyBhdCBsZWFzdCB3ZSBhcmUgY29uc2lzdGVudCBpbgorCSAq IG91ciBtaXN0YWtlcy4KKwkgKgorCSAqIFdoZW4gdGhlIEdlbmVyaWMgUEhZIGRyaXZlciBpcyBp biB1c2UgZWl0aGVyIHRoZSBQSFkgaGFzCisJICogYmVlbiBzdHJhcHBlZCBvciBwcm9ncmFtbWVk IGNvcnJlY3RseSBieSB0aGUgYm9vdCBsb2FkZXIgc28KKwkgKiB3ZSBzaG91bGQgc3RpY2sgdG8g b3VyIGluY29ycmVjdCBpbnRlcnByZXRhdGlvbiBzaW5jZSB3ZQorCSAqIGhhdmUgdmFsaWRhdGVk IGl0LgorCSAqCisJICogTm93IHdoZW4gYSBkZWRpY2F0ZWQgUEhZIGRyaXZlciBpcyBpbiB1c2Us IHdlIG5lZWQgdG8KKwkgKiByZXZlcnNlIHRoZSBtZWFuaW5nIG9mIHRoZSBwaHlfaW50ZXJmYWNl X21vZGUgdmFsdWVzIHRvCisJICogc29tZXRoaW5nIHRoYXQgdGhlIFBIWSBkcml2ZXIgd2lsbCBp bnRlcnByZXQgYW5kIGFjdCBvbiBzdWNoCisJICogdGhhdCB3ZSBoYXZlIHR3byBtaXN0YWtlcyBj YW5jZWxpbmcgdGhlbXNlbHZlcyBzbyB0byBzcGVhay4KKwkgKiBXZSBvbmx5IGRvIHRoaXMgZm9y IHRoZSB0d28gbW9kZXMgdGhhdCBHRU5FVCBkcml2ZXIKKwkgKiBvZmZpY2lhbGx5IHN1cHBvcnRz IG9uIEJyb2FkY29tIFNUQiBjaGlwczoKKwkgKiBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkgYW5k IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElELgorCSAqIE90aGVyIG1vZGVzIGFyZSBub3Qg Km9mZmljaWFsbHkqIHN1cHBvcnRlZCB3aXRoIHRoZSBib290CisJICogbG9hZGVyIGFuZCB0aGUg c2NyaXB0ZWQgZW52aXJvbm1lbnQgZ2VuZXJhdGluZyBEZXZpY2UgVHJlZQorCSAqIGJsb2JzIGZv ciB0aG9zZSBwbGF0Zm9ybXMuCisJICoKKwkgKiBOb3RlIHRoYXQgaW50ZXJuYWwgUEhZIGFuZCBm aXhlZC1saW5rIGNvbmZpZ3VyYXRpb25zIGFyZSBub3QKKwkgKiBhZmZlY3RlZCBiZWNhdXNlIHRo ZXkgdXNlIGRpZmZlcmVudCBwaHlfaW50ZXJmYWNlX3QgdmFsdWVzCisJICogb3IgdGhlIEdlbmVy aWMgUEhZIGRyaXZlci4KKwkgKi8KKwlzd2l0Y2ggKHBoeV9pZmFjZSkgeworCWNhc2UgUEhZX0lO VEVSRkFDRV9NT0RFX1JHTUlJOgorCQlwaHlfaWZhY2UgPTNEIFBIWV9JTlRFUkZBQ0VfTU9ERV9S R01JSV9JRDsKKwkJYnJlYWs7CisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoK KwkJcGh5X2lmYWNlID0zRCBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJaWYgKHBoeV9jb25uZWN0KSB7CisJCXBoeWRl diA9M0Qgb2ZfcGh5X2Nvbm5lY3QoZGV2LCBpbnRmLT5waHlfZG4sCisJCQkJCWJjbWFzcF9hZGpf bGluaywgcGh5X2ZsYWdzLAorCQkJCQlwaHlfaWZhY2UpOworCQlpZiAoIXBoeWRldikgeworCQkJ cmV0ID0zRCAtRU5PREVWOworCQkJbmV0ZGV2X2VycihkZXYsICJjb3VsZCBub3QgYXR0YWNoIHRv IFBIWVxuIik7CisJCQlnb3RvIGVycl9waHlfZGlzYWJsZTsKKwkJfQorCX0gZWxzZSBpZiAoIWlu dGYtPndvbG9wdHMpIHsKKwkJcmV0ID0zRCBwaHlfcmVzdW1lKGRldi0+cGh5ZGV2KTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyX3BoeV9kaXNhYmxlOworCX0KKworCXVtYWNfcmVzZXQoaW50Zik7 CisKKwl1bWFjX2luaXQoaW50Zik7CisKKwkvKiBEaXNhYmxlIHRoZSBVbmlNQUMgUlgvVFggKi8K Kwl1bWFjX2VuYWJsZV9zZXQoaW50ZiwgKFVNQ19DTURfUlhfRU4gfCBVTUNfQ01EX1RYX0VOKSwg MCk7CisKKwl1bWFjX3NldF9od19hZGRyKGludGYsIGRldi0+ZGV2X2FkZHIpOworCisJaW50Zi0+ b2xkX2R1cGxleCA9M0QgLTE7CisJaW50Zi0+b2xkX2xpbmsgPTNEIC0xOworCWludGYtPm9sZF9w YXVzZSA9M0QgLTE7CisKKwlyZXQgPTNEIGJjbWFzcF9pbml0X3R4KGludGYpOworCWlmIChyZXQp CisJCWdvdG8gZXJyX3BoeV9kaXNjb25uZWN0OworCisJLyogVHVybiBvbiBhc3AgKi8KKwliY21h c3BfZW5hYmxlX3R4KGludGYsIDEpOworCisJcmV0ID0zRCBiY21hc3BfaW5pdF9yeChpbnRmKTsK KwlpZiAocmV0KQorCQlnb3RvIGVycl9yZWNsYWltX3R4OworCisJYmNtYXNwX2VuYWJsZV9yeChp bnRmLCAxKTsKKworCS8qIFR1cm4gb24gVW5pTUFDIFRYL1JYICovCisJdW1hY19lbmFibGVfc2V0 KGludGYsIChVTUNfQ01EX1JYX0VOIHwgVU1DX0NNRF9UWF9FTiksIDEpOworCisJaW50Zi0+Y3Jj X2Z3ZCA9M0QgISEodW1hY19ybChpbnRmLCBVTUNfQ01EKSAmIFVNQ19DTURfQ1JDX0ZXRCk7CisK KwliY21hc3BfbmV0aWZfc3RhcnQoZGV2KTsKKworCW5ldGlmX3N0YXJ0X3F1ZXVlKGRldik7CisK KwlyZXR1cm4gMDsKKworZXJyX3JlY2xhaW1fdHg6CisJYmNtYXNwX3JlY2xhaW1fZnJlZV9hbGxf dHgoaW50Zik7CitlcnJfcGh5X2Rpc2Nvbm5lY3Q6CisJaWYgKHBoeWRldikKKwkJcGh5X2Rpc2Nv bm5lY3QocGh5ZGV2KTsKK2Vycl9waHlfZGlzYWJsZToKKwlpZiAoaW50Zi0+aW50ZXJuYWxfcGh5 KQorCQliY21hc3BfZXBoeV9lbmFibGVfc2V0KGludGYsIGZhbHNlKTsKKwllbHNlCisJCWJjbWFz cF9yZ21paV9tb2RlX2VuX3NldChpbnRmLCBmYWxzZSk7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBiY21hc3Bfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBi Y21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgcmV0OworCisJbmV0 aWZfZGJnKGludGYsIGlmdXAsIGRldiwgImJjbWFzcCBvcGVuXG4iKTsKKworCXJldCA9M0QgY2xr X3ByZXBhcmVfZW5hYmxlKGludGYtPnBhcmVudC0+Y2xrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcmV0ID0zRCBiY21hc3BfbmV0aWZfaW5pdChkZXYsIHRydWUpOworCWlmIChyZXQp CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShpbnRmLT5wYXJlbnQtPmNsayk7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmVzZXRfbWliKHN0cnVjdCBiY21hc3BfaW50 ZiAqaW50ZikKK3sKKwl1bWFjX3dsKGludGYsIFVNQ19NSUJfQ05UUkxfUlhfQ05UX1JTVCB8CisJ CVVNQ19NSUJfQ05UUkxfUlVOVF9DTlRfUlNUIHwKKwkJVU1DX01JQl9DTlRSTF9UWF9DTlRfUlNU LCBVTUNfTUlCX0NOVFJMKTsKKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisJdW1hY193bChp bnRmLCAwLCBVTUNfTUlCX0NOVFJMKTsKK30KKworc3RhdGljIHZvaWQgYmNtYXNwX3R4X3RpbWVv dXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpCit7CisJc3Ry dWN0IGJjbWFzcF9pbnRmICppbnRmID0zRCBuZXRkZXZfcHJpdihkZXYpOworCisJbmV0aWZfZGJn KGludGYsIHR4X2VyciwgZGV2LCAidHJhbnNtaXQgdGltZW91dCFcbiIpOworCisJbmV0aWZfdHJh bnNfdXBkYXRlKGRldik7CisJZGV2LT5zdGF0cy50eF9lcnJvcnMrKzsKKworCW5ldGlmX3dha2Vf cXVldWUoZGV2KTsKK30KKworc3RhdGljIGludCBiY21hc3BfZ2V0X3BoeXNfcG9ydF9uYW1lKHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJICAgICBjaGFyICpuYW1lLCBzaXplX3QgbGVuKQor eworCXN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZiA9M0QgbmV0ZGV2X3ByaXYoZGV2KTsKKworCWlm IChzbnByaW50ZihuYW1lLCBsZW4sICJwJWQiLCBpbnRmLT5wb3J0KSA+PTNEIGxlbikKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNl X3N0YXRzICpiY21hc3BfZ2V0X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJcmV0 dXJuICZkZXYtPnN0YXRzOworfQorCitzdGF0aWMgaW50IGJjbWFzcF9pb2N0bChzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQoreworCWlmICghbmV0aWZf cnVubmluZyhkZXYpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghZGV2LT5waHlkZXYpCisJ CXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIHBoeV9taWlfaW9jdGwoZGV2LT5waHlkZXYsIHJx LCBjbWQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJjbWFzcF9u ZXRkZXZfb3BzID0zRCB7CisJLm5kb19vcGVuCQk9M0QgYmNtYXNwX29wZW4sCisJLm5kb19zdG9w CQk9M0QgYmNtYXNwX3N0b3AsCisJLm5kb19zdGFydF94bWl0CQk9M0QgYmNtYXNwX3htaXQsCisJ Lm5kb190eF90aW1lb3V0CQk9M0QgYmNtYXNwX3R4X3RpbWVvdXQsCisJLm5kb19zZXRfcnhfbW9k ZQk9M0QgYmNtYXNwX3NldF9yeF9tb2RlLAorCS5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lCT0zRCBi Y21hc3BfZ2V0X3BoeXNfcG9ydF9uYW1lLAorCS5uZG9fZ2V0X3N0YXRzCQk9M0QgYmNtYXNwX2dl dF9zdGF0cywKKwkubmRvX2RvX2lvY3RsCQk9M0QgYmNtYXNwX2lvY3RsLAorCS5uZG9fc2V0X21h Y19hZGRyZXNzCT0zRCBldGhfbWFjX2FkZHIsCit9OworCitzdGF0aWMgdm9pZCBiY21hc3BfbWFw X3JlcyhzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsIHN0cnVjdCBiY21hc3BfaW50ZiAqaT0KbnRm KQoreworCS8qIFBlciBwb3J0ICovCisJaW50Zi0+cmVzLnVtYWMgPTNEIHByaXYtPmJhc2UgKyBV TUNfT0ZGU0VUKGludGYpOworCWludGYtPnJlcy51bWFjMmZiID0zRCBwcml2LT5iYXNlICsgKHBy aXYtPmh3X2luZm8tPnVtYWMyZmIgKworCQkJCQkgIChpbnRmLT5wb3J0ICogMHg0KSk7CisJaW50 Zi0+cmVzLnJnbWlpID0zRCBwcml2LT5iYXNlICsgUkdNSUlfT0ZGU0VUKGludGYpOworCisJLyog UGVyIGNoICovCisJaW50Zi0+dHhfc3BiX2RtYSA9M0QgcHJpdi0+YmFzZSArIFRYX1NQQl9ETUFf T0ZGU0VUKGludGYpOworCWludGYtPnJlcy50eF9zcGJfY3RybCA9M0QgcHJpdi0+YmFzZSArIFRY X1NQQl9DVFJMX09GRlNFVChpbnRmKTsKKwlpbnRmLT5yZXMudHhfc3BiX3RvcCA9M0QgcHJpdi0+ YmFzZSArIFRYX1NQQl9UT1BfT0ZGU0VUKGludGYpOworCWludGYtPnJlcy50eF9lcGt0X2NvcmUg PTNEIHByaXYtPmJhc2UgKyBUWF9FUEtUX0NfT0ZGU0VUKGludGYpOworCWludGYtPnJlcy50eF9w YXVzZV9jdHJsID0zRCBwcml2LT5iYXNlICsgVFhfUEFVU0VfQ1RSTF9PRkZTRVQoaW50Zik7CisK KwlpbnRmLT5yeF9lZHBrdF9kbWEgPTNEIHByaXYtPmJhc2UgKyBSWF9FRFBLVF9ETUFfT0ZGU0VU KGludGYpOworCWludGYtPnJ4X2VkcGt0X2NmZyA9M0QgcHJpdi0+YmFzZSArIFJYX0VEUEtUX0NG R19PRkZTRVQoaW50Zik7Cit9CisKKyNkZWZpbmUgTUFYX0lSUV9TVFJfTEVOCQk2NAorc3RydWN0 IGJjbWFzcF9pbnRmICpiY21hc3BfaW50ZXJmYWNlX2NyZWF0ZShzdHJ1Y3QgYmNtYXNwX3ByaXYg KnByaXYsCisJCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5kZXZfZG4pCit7CisJc3RydWN0 IGRldmljZSAqZGV2ID0zRCAmcHJpdi0+cGRldi0+ZGV2OworCXN0cnVjdCBiY21hc3BfaW50ZiAq aW50ZjsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKKwlpbnQgY2gsIHBvcnQsIHJldDsKKwor CWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihuZGV2X2RuLCAicmVnIiwgJnBvcnQpKSB7CisJCWRl dl93YXJuKGRldiwgIiVzOiBpbnZhbGlkIGNoIG51bWJlclxuIiwgbmRldl9kbi0+bmFtZSk7CisJ CWdvdG8gZXJyOworCX0KKworCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihuZGV2X2RuLCAiYnJj bSxjaGFubmVsIiwgJmNoKSkgeworCQlkZXZfd2FybihkZXYsICIlczogaW52YWxpZCBjaCBudW1i ZXJcbiIsIG5kZXZfZG4tPm5hbWUpOworCQlnb3RvIGVycjsKKwl9CisKKwluZGV2ID0zRCBhbGxv Y19ldGhlcmRldihzaXplb2Yoc3RydWN0IGJjbWFzcF9pbnRmKSk7CisJaWYgKCFkZXYpIHsKKwkJ ZGV2X3dhcm4oZGV2LCAiJXM6IHVuYWJsZSB0byBhbGxvYyBuZGV2XG4iLCBuZGV2X2RuLT5uYW1l KTsKKwkJZ290byBlcnI7CisJfQorCWludGYgPTNEIG5ldGRldl9wcml2KG5kZXYpOworCisJaW50 Zi0+cGFyZW50ID0zRCBwcml2OworCWludGYtPm5kZXYgPTNEIG5kZXY7CisJaW50Zi0+Y2hhbm5l bCA9M0QgY2g7CisJaW50Zi0+cG9ydCA9M0QgcG9ydDsKKwlpbnRmLT5uZGV2X2RuID0zRCBuZGV2 X2RuOworCisJcmV0ID0zRCBvZl9nZXRfcGh5X21vZGUobmRldl9kbiwgJmludGYtPnBoeV9pbnRl cmZhY2UpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBQSFkgbW9k ZSBwcm9wZXJ0eVxuIik7CisJCWdvdG8gZXJyX2ZyZWVfbmV0ZGV2OworCX0KKworCWlmIChpbnRm LT5waHlfaW50ZXJmYWNlID0zRD0zRCBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwpCisJCWlu dGYtPmludGVybmFsX3BoeSA9M0QgdHJ1ZTsKKworCWludGYtPnBoeV9kbiA9M0Qgb2ZfcGFyc2Vf cGhhbmRsZShuZGV2X2RuLCAicGh5LWhhbmRsZSIsIDApOworCWlmICghaW50Zi0+cGh5X2RuICYm IG9mX3BoeV9pc19maXhlZF9saW5rKG5kZXZfZG4pKSB7CisJCXJldCA9M0Qgb2ZfcGh5X3JlZ2lz dGVyX2ZpeGVkX2xpbmsobmRldl9kbik7CisJCWlmIChyZXQpIHsKKwkJCWRldl93YXJuKGRldiwg IiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgZml4ZWQgUEhZXG4iLAorCQkJCSBuZGV2X2RuLT5uYW1l KTsKKwkJCWdvdG8gZXJyX2ZyZWVfbmV0ZGV2OworCQl9CisJCWludGYtPnBoeV9kbiA9M0QgbmRl dl9kbjsKKwl9CisKKwkvKiBNYXAgcmVzb3VyY2UgKi8KKwliY21hc3BfbWFwX3Jlcyhwcml2LCBp bnRmKTsKKworCWlmICgoIXBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShpbnRmLT5waHlfaW50 ZXJmYWNlKSAmJgorCSAgICAgaW50Zi0+cGh5X2ludGVyZmFjZSAhPTNEIFBIWV9JTlRFUkZBQ0Vf TU9ERV9NSUkgJiYKKwkgICAgIGludGYtPnBoeV9pbnRlcmZhY2UgIT0zRCBQSFlfSU5URVJGQUNF X01PREVfSU5URVJOQUwpIHx8CisJICAgIChpbnRmLT5wb3J0ICE9M0QgMSAmJiBpbnRmLT5pbnRl cm5hbF9waHkpKSB7CisJCW5ldGRldl9lcnIoaW50Zi0+bmRldiwgImludmFsaWQgUEhZIG1vZGU6 ICVzIGZvciBwb3J0ICVkXG4iLAorCQkJICAgcGh5X21vZGVzKGludGYtPnBoeV9pbnRlcmZhY2Up LCBpbnRmLT5wb3J0KTsKKwkJcmV0ID0zRCAtRUlOVkFMOworCQlnb3RvIGVycl9mcmVlX25ldGRl djsKKwl9CisKKwliY21hc3BfcmVzZXRfbWliKGludGYpOworCisJcmV0ID0zRCBvZl9nZXRfZXRo ZGV2X2FkZHJlc3MobmRldl9kbiwgbmRldik7CisJaWYgKHJldCkgeworCQluZXRkZXZfd2Fybihu ZGV2LCAidXNpbmcgcmFuZG9tIEV0aGVybmV0IE1BQ1xuIik7CisJCWV0aF9od19hZGRyX3JhbmRv bShuZGV2KTsKKwl9CisKKwlTRVRfTkVUREVWX0RFVihuZGV2LCBkZXYpOworCWludGYtPm9wcyA9 M0QgJmJjbWFzcF9pbnRmX29wczsKKwluZGV2LT5uZXRkZXZfb3BzID0zRCAmYmNtYXNwX25ldGRl dl9vcHM7CisJbmRldi0+ZXRodG9vbF9vcHMgPTNEICZiY21hc3BfZXRodG9vbF9vcHM7CisJaW50 Zi0+bXNnX2VuYWJsZSA9M0QgbmV0aWZfbXNnX2luaXQoLTEsIE5FVElGX01TR19EUlYgfAorCQkJ CQkgIE5FVElGX01TR19QUk9CRSB8CisJCQkJCSAgTkVUSUZfTVNHX0xJTkspOworCW5kZXYtPmZl YXR1cmVzIHw9M0QgTkVUSUZfRl9JUF9DU1VNIHwgTkVUSUZfRl9JUFY2X0NTVU0gfCBORVRJRl9G X1NHIHwKKwkJCSAgTkVUSUZfRl9SWENTVU07CisJbmRldi0+aHdfZmVhdHVyZXMgfD0zRCBuZGV2 LT5mZWF0dXJlczsKKwluZGV2LT5uZWVkZWRfaGVhZHJvb20gKz0zRCBzaXplb2Yoc3RydWN0IGJj bWFzcF9wa3Rfb2ZmbG9hZCk7CisKKwlyZXR1cm4gaW50ZjsKKworZXJyX2ZyZWVfbmV0ZGV2Ogor CWZyZWVfbmV0ZGV2KG5kZXYpOworZXJyOgorCXJldHVybiBOVUxMOworfQorCit2b2lkIGJjbWFz cF9pbnRlcmZhY2VfZGVzdHJveShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYsIGJvb2wgdW5yZWdp c3RlcikKK3sKKwlpZiAodW5yZWdpc3RlcikKKwkJdW5yZWdpc3Rlcl9uZXRkZXYoaW50Zi0+bmRl dik7CisJaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGludGYtPm5kZXZfZG4pKQorCQlvZl9waHlf ZGVyZWdpc3Rlcl9maXhlZF9saW5rKGludGYtPm5kZXZfZG4pOworCWZyZWVfbmV0ZGV2KGludGYt Pm5kZXYpOworfQorCitzdGF0aWMgdm9pZCBiY21hc3Bfc3VzcGVuZF90b193b2woc3RydWN0IGJj bWFzcF9pbnRmICppbnRmKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0zRCBpbnRmLT5u ZGV2OworCXUzMiByZWc7CisKKwlyZWcgPTNEIHVtYWNfcmwoaW50ZiwgVU1DX01QRF9DVFJMKTsK KwlpZiAoaW50Zi0+d29sb3B0cyAmIChXQUtFX01BR0lDIHwgV0FLRV9NQUdJQ1NFQ1VSRSkpCisJ CXJlZyB8PTNEIFVNQ19NUERfQ1RSTF9NUERfRU47CisJcmVnICY9M0QgflVNQ19NUERfQ1RSTF9Q U1dfRU47CisJaWYgKGludGYtPndvbG9wdHMgJiBXQUtFX01BR0lDU0VDVVJFKSB7CisJCS8qIFBy b2dyYW0gdGhlIFNlY3VyZU9uIHBhc3N3b3JkICovCisJCXVtYWNfd2woaW50ZiwgZ2V0X3VuYWxp Z25lZF9iZTE2KCZpbnRmLT5zb3Bhc3NbMF0pLAorCQkJVU1DX1BTV19NUyk7CisJCXVtYWNfd2wo aW50ZiwgZ2V0X3VuYWxpZ25lZF9iZTMyKCZpbnRmLT5zb3Bhc3NbMl0pLAorCQkJVU1DX1BTV19M Uyk7CisJCXJlZyB8PTNEIFVNQ19NUERfQ1RSTF9QU1dfRU47CisJfQorCXVtYWNfd2woaW50Ziwg cmVnLCBVTUNfTVBEX0NUUkwpOworCisJaWYgKGludGYtPndvbG9wdHMgJiBXQUtFX0ZJTFRFUikK KwkJYmNtYXNwX25ldGZpbHRfc3VzcGVuZChpbnRmKTsKKworCS8qIFVuaU1BQyByZWNlaXZlIG5l ZWRzIHRvIGJlIHR1cm5lZCBvbiAqLworCXVtYWNfZW5hYmxlX3NldChpbnRmLCBVTUNfQ01EX1JY X0VOLCAxKTsKKworCWlmIChpbnRmLT5wYXJlbnQtPndvbF9pcnEgPiAwKSB7CisJCXdha2V1cF9p bnRyMl9jb3JlX3dsKGludGYtPnBhcmVudCwgMHhmZmZmZmZmZiwKKwkJCQkgICAgIEFTUF9XQUtF VVBfSU5UUjJfTUFTS19DTEVBUik7CisJfQorCisJbmV0aWZfZGJnKGludGYsIHdvbCwgbmRldiwg ImVudGVyZWQgV09MIG1vZGVcbiIpOworfQorCitpbnQgYmNtYXNwX2ludGVyZmFjZV9zdXNwZW5k KHN0cnVjdCBiY21hc3BfaW50ZiAqaW50ZikKK3sKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0zRCAm aW50Zi0+cGFyZW50LT5wZGV2LT5kZXY7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9M0QgaW50 Zi0+bmRldjsKKwlpbnQgcmV0ID0zRCAwOworCisJaWYgKCFuZXRpZl9ydW5uaW5nKGRldikpCisJ CXJldHVybiAwOworCisJbmV0aWZfZGV2aWNlX2RldGFjaChkZXYpOworCisJYmNtYXNwX25ldGlm X2RlaW5pdChkZXYpOworCisJaWYgKCFpbnRmLT53b2xvcHRzKSB7CisJCXJldCA9M0QgcGh5X3N1 c3BlbmQoZGV2LT5waHlkZXYpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisKKwkJaWYgKGlu dGYtPmludGVybmFsX3BoeSkKKwkJCWJjbWFzcF9lcGh5X2VuYWJsZV9zZXQoaW50ZiwgZmFsc2Up OworCQllbHNlCisJCQliY21hc3BfcmdtaWlfbW9kZV9lbl9zZXQoaW50ZiwgZmFsc2UpOworCisJ CS8qIElmIFdha2Utb24tTEFOIGlzIGRpc2FibGVkLCB3ZSBjYW4gc2FmZWx5CisJCSAqIGRpc2Fi bGUgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNsb2Nrcy4KKwkJICovCisJCWJjbWFzcF9jb3JlX2Ns b2NrX3NldF9pbnRmKGludGYsIGZhbHNlKTsKKwl9CisKKwlpZiAoZGV2aWNlX21heV93YWtldXAo a2RldikgJiYgaW50Zi0+d29sb3B0cykKKwkJYmNtYXNwX3N1c3BlbmRfdG9fd29sKGludGYpOwor CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGludGYtPnBhcmVudC0+Y2xrKTsKKworCXJldHVybiBy ZXQ7CisKK291dDoKKwliY21hc3BfbmV0aWZfaW5pdChkZXYsIGZhbHNlKTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgdm9pZCBiY21hc3BfcmVzdW1lX2Zyb21fd29sKHN0cnVjdCBiY21hc3Bf aW50ZiAqaW50ZikKK3sKKwl1MzIgcmVnOworCisJcmVnID0zRCB1bWFjX3JsKGludGYsIFVNQ19N UERfQ1RSTCk7CisJcmVnICY9M0QgflVNQ19NUERfQ1RSTF9NUERfRU47CisJdW1hY193bChpbnRm LCByZWcsIFVNQ19NUERfQ1RSTCk7CisKKwlpZiAoaW50Zi0+cGFyZW50LT53b2xfaXJxID4gMCkg eworCQl3YWtldXBfaW50cjJfY29yZV93bChpbnRmLT5wYXJlbnQsIDB4ZmZmZmZmZmYsCisJCQkJ ICAgICBBU1BfV0FLRVVQX0lOVFIyX01BU0tfU0VUKTsKKwl9Cit9CisKK2ludCBiY21hc3BfaW50 ZXJmYWNlX3Jlc3VtZShzdHJ1Y3QgYmNtYXNwX2ludGYgKmludGYpCit7CisJc3RydWN0IG5ldF9k ZXZpY2UgKmRldiA9M0QgaW50Zi0+bmRldjsKKwlpbnQgcmV0OworCisJaWYgKCFuZXRpZl9ydW5u aW5nKGRldikpCisJCXJldHVybiAwOworCisJcmV0ID0zRCBjbGtfcHJlcGFyZV9lbmFibGUoaW50 Zi0+cGFyZW50LT5jbGspOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPTNEIGJj bWFzcF9uZXRpZl9pbml0KGRldiwgZmFsc2UpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJ YmNtYXNwX3Jlc3VtZV9mcm9tX3dvbChpbnRmKTsKKworCWlmIChpbnRmLT5lZWUuZWVlX2VuYWJs ZWQpCisJCWJjbWFzcF9lZWVfZW5hYmxlX3NldChpbnRmLCB0cnVlKTsKKworCW5ldGlmX2Rldmlj ZV9hdHRhY2goZGV2KTsKKworCXJldHVybiAwOworCitvdXQ6CisJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGludGYtPnBhcmVudC0+Y2xrKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zl9kZWZzLmggYi9kcml2 ZXI9CnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGZfZGVmcy5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWIxZTY1MDAyMjYwCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50 Zl9kZWZzLmgKQEAgLTAsMCArMSwyMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovCisjaWZuZGVmIF9fQkNNQVNQX0lOVEZfREVGU19ICisjZGVmaW5lIF9fQkNNQVNQ X0lOVEZfREVGU19ICisKKyNkZWZpbmUgVU1DX09GRlNFVChpbnRmKQkJXAorCSgoKChpbnRmKS0+ cG9ydCkgKiAweDgwMCkgKyAweGMwMDApCisjZGVmaW5lICBVTUNfQ01ECQkJMHgwMDgKKyNkZWZp bmUgICBVTUNfQ01EX1RYX0VOCQkJQklUKDApCisjZGVmaW5lICAgVU1DX0NNRF9SWF9FTgkJCUJJ VCgxKQorI2RlZmluZSAgIFVNQ19DTURfU1BFRURfU0hJRlQJCTB4MgorI2RlZmluZSAgICBVTUNf Q01EX1NQRUVEX01BU0sJCTB4MworI2RlZmluZSAgICBVTUNfQ01EX1NQRUVEXzEwCQkweDAKKyNk ZWZpbmUgICAgVU1DX0NNRF9TUEVFRF8xMDAJCTB4MQorI2RlZmluZSAgICBVTUNfQ01EX1NQRUVE XzEwMDAJCTB4MgorI2RlZmluZSAgICBVTUNfQ01EX1NQRUVEXzI1MDAJCTB4MworI2RlZmluZSAg IFVNQ19DTURfUFJPTUlTQwkJQklUKDQpCisjZGVmaW5lICAgVU1DX0NNRF9QQURfRU4JCUJJVCg1 KQorI2RlZmluZSAgIFVNQ19DTURfQ1JDX0ZXRAkJQklUKDYpCisjZGVmaW5lICAgVU1DX0NNRF9Q QVVTRV9GV0QJCUJJVCg3KQorI2RlZmluZSAgIFVNQ19DTURfUlhfUEFVU0VfSUdOT1JFCUJJVCg4 KQorI2RlZmluZSAgIFVNQ19DTURfVFhfQUREUl9JTlMJCUJJVCg5KQorI2RlZmluZSAgIFVNQ19D TURfSERfRU4JCQlCSVQoMTApCisjZGVmaW5lICAgVU1DX0NNRF9TV19SRVNFVAkJQklUKDEzKQor I2RlZmluZSAgIFVNQ19DTURfTENMX0xPT1BfRU4JCUJJVCgxNSkKKyNkZWZpbmUgICBVTUNfQ01E X0FVVE9fQ09ORklHCQlCSVQoMjIpCisjZGVmaW5lICAgVU1DX0NNRF9DTlRMX0ZSTV9FTgkJQklU KDIzKQorI2RlZmluZSAgIFVNQ19DTURfTk9fTEVOX0NISwkJQklUKDI0KQorI2RlZmluZSAgIFVN Q19DTURfUk1UX0xPT1BfRU4JCUJJVCgyNSkKKyNkZWZpbmUgICBVTUNfQ01EX1BSQkxfRU4JCUJJ VCgyNykKKyNkZWZpbmUgICBVTUNfQ01EX1RYX1BBVVNFX0lHTk9SRQlCSVQoMjgpCisjZGVmaW5l ICAgVU1DX0NNRF9UWF9SWF9FTgkJQklUKDI5KQorI2RlZmluZSAgIFVNQ19DTURfUlVOVF9GSUxU RVJfRElTCUJJVCgzMCkKKyNkZWZpbmUgIFVNQ19NQUMwCQkJMHgwYworI2RlZmluZSAgVU1DX01B QzEJCQkweDEwCisjZGVmaW5lICBVTUNfRlJNX0xFTgkJCTB4MTQKKyNkZWZpbmUgIFVNQ19FRUVf Q1RSTAkJCTB4NjQKKyNkZWZpbmUgICBFTl9MUElfUlhfUEFVU0UJCUJJVCgwKQorI2RlZmluZSAg IEVOX0xQSV9UWF9QRkMJCQlCSVQoMSkKKyNkZWZpbmUgICBFTl9MUElfVFhfUEFVU0UJCUJJVCgy KQorI2RlZmluZSAgIEVFRV9FTgkJCUJJVCgzKQorI2RlZmluZSAgIFJYX0ZJRk9fQ0hFQ0sJCQlC SVQoNCkKKyNkZWZpbmUgICBFRUVfVFhfQ0xLX0RJUwkJQklUKDUpCisjZGVmaW5lICAgRElTX0VF RV8xME0JCQlCSVQoNikKKyNkZWZpbmUgICBMUF9JRExFX1BSRURJQ1RJT05fTU9ERQlCSVQoNykK KyNkZWZpbmUgIFVNQ19FRUVfTFBJX1RJTUVSCQkweDY4CisjZGVmaW5lICBVTUNfUEFVU0VfQ05U UkwJCTB4MzMwCisjZGVmaW5lICBVTUNfVFhfRkxVU0gJCQkweDMzNAorI2RlZmluZSAgVU1DX01J Ql9TVEFSVAkJCTB4NDAwCisjZGVmaW5lICBVTUNfTUlCX0NOVFJMCQkJMHg1ODAKKyNkZWZpbmUg ICBVTUNfTUlCX0NOVFJMX1JYX0NOVF9SU1QJQklUKDApCisjZGVmaW5lICAgVU1DX01JQl9DTlRS TF9SVU5UX0NOVF9SU1QJQklUKDEpCisjZGVmaW5lICAgVU1DX01JQl9DTlRSTF9UWF9DTlRfUlNU CUJJVCgyKQorI2RlZmluZSAgVU1DX1JYX01BWF9QS1RfU1oJCTB4NjA4CisjZGVmaW5lICBVTUNf TVBEX0NUUkwJCQkweDYyMAorI2RlZmluZSAgIFVNQ19NUERfQ1RSTF9NUERfRU4JCUJJVCgwKQor I2RlZmluZSAgIFVNQ19NUERfQ1RSTF9QU1dfRU4JCUJJVCgyNykKKyNkZWZpbmUgIFVNQ19QU1df TVMJCQkweDYyNAorI2RlZmluZSAgVU1DX1BTV19MUwkJCTB4NjI4CisKKyNkZWZpbmUgVU1BQzJG Ql9PRkZTRVRfMl8xCQkweDlmMDQ0CisjZGVmaW5lIFVNQUMyRkJfT0ZGU0VUCQkJMHg5ZjAzYwor I2RlZmluZSAgVU1BQzJGQl9DRkcJCQkweDAKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19PUFVUX0VO CQlCSVQoMCkKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19WTEFOX0VOCQlCSVQoMSkKKyNkZWZpbmUg ICBVTUFDMkZCX0NGR19TTkFQX0VOCQlCSVQoMikKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19CQ01f VEdfRU4JCUJJVCgzKQorI2RlZmluZSAgIFVNQUMyRkJfQ0ZHX0lQVVRfRU4JCUJJVCg0KQorI2Rl ZmluZSAgIFVNQUMyRkJfQ0ZHX0NISURfU0hJRlQJOAorI2RlZmluZSAgIFVNQUMyRkJfQ0ZHX09L X1NFTkRfU0hJRlQJMjQKKyNkZWZpbmUgICBVTUFDMkZCX0NGR19ERUZBVUxUX0VOCVwKKwkJKFVN QUMyRkJfQ0ZHX09QVVRfRU4gfCBVTUFDMkZCX0NGR19WTEFOX0VOIFwKKwkJfCBVTUFDMkZCX0NG R19TTkFQX0VOIHwgVU1BQzJGQl9DRkdfSVBVVF9FTikKKworI2RlZmluZSBSR01JSV9PRkZTRVQo aW50ZikJXAorCSgoKChpbnRmKS0+cG9ydCkgKiAweDEwMCkgKyAweGQwMDApCisjZGVmaW5lICBS R01JSV9FUEhZX0NOVFJMCQkweDAwCisjZGVmaW5lICAgIFJHTUlJX0VQSFlfQ0ZHX0lERFFfQklB UwlCSVQoMCkKKyNkZWZpbmUgICAgUkdNSUlfRVBIWV9DRkdfRVhUX1BXUkRPV04JQklUKDEpCisj ZGVmaW5lICAgIFJHTUlJX0VQSFlfQ0ZHX0ZPUkNFX0RMTF9FTglCSVQoMikKKyNkZWZpbmUgICAg UkdNSUlfRVBIWV9DRkdfSUREUV9HTE9CQUwJQklUKDMpCisjZGVmaW5lICAgIFJHTUlJX0VQSFlf Q0syNV9ESVMJCUJJVCg0KQorI2RlZmluZSAgICBSR01JSV9FUEhZX1JFU0VUCQlCSVQoNykKKyNk ZWZpbmUgIFJHTUlJX09PQl9DTlRSTAkJMHgwYworI2RlZmluZSAgIFJHTUlJX0xJTksJCQlCSVQo NCkKKyNkZWZpbmUgICBSR01JSV9PT0JfRElTCQkJQklUKDUpCisjZGVmaW5lICAgUkdNSUlfTU9E RV9FTgkJCUJJVCg2KQorI2RlZmluZSAgIFJHTUlJX0lEX01PREVfRElTCQlCSVQoMTYpCisKKyNk ZWZpbmUgUkdNSUlfUE9SVF9DTlRSTAkJMHg2MAorI2RlZmluZSAgIFJHTUlJX1BPUlRfTU9ERV9F UEhZCQkwCisjZGVmaW5lICAgUkdNSUlfUE9SVF9NT0RFX0dQSFkJCTEKKyNkZWZpbmUgICBSR01J SV9QT1JUX01PREVfRVhUX0VQSFkJMgorI2RlZmluZSAgIFJHTUlJX1BPUlRfTU9ERV9FWFRfR1BI WQkzCisjZGVmaW5lICAgUkdNSUlfUE9SVF9NT0RFX0VYVF9SVk1JSQk0CisjZGVmaW5lICAgUkdN SUlfUE9SVF9NT0RFX01BU0sJCUdFTk1BU0soMiwgMCkKKworI2RlZmluZSBSR01JSV9TWVNfTEVE X0NOVFJMCQkweDc0CisjZGVmaW5lICBSR01JSV9TWVNfTEVEX0NOVFJMX0xJTktfT1ZSRAlCSVQo MTUpCisKKyNkZWZpbmUgT1VURE1BX09GRlNFVChpbnRmKQlcCisJKCgoaW50Zi0+Y2hhbm5lbCAt IDYpICogMHhiMCkgKyAweDQ3MDAwKQorI2RlZmluZSAgT1VURE1BX0VOQUJMRQkJCTB4MDAKKyNk ZWZpbmUgICBPVVRETUFfRU5BQkxFX0VOCQlCSVQoMCkKKyNkZWZpbmUgIE9VVERNQV9IV19TVEFU VVMJCTB4MDQKKyNkZWZpbmUgICBPVVRETUFfSFdfU1RBVFVTX0lETEUJCUJJVCgwKQorI2RlZmlu ZSAgT1VURE1BX0RBVEFfRE1BX1dSSVRFCQkweDA4CisjZGVmaW5lICBPVVRETUFfREFUQV9ETUFf UkVBRAkJMHgxMAorI2RlZmluZSAgT1VURE1BX0RBVEFfRE1BX0JBU0UJCTB4MTgKKyNkZWZpbmUg IE9VVERNQV9EQVRBX0RNQV9FTkQJCTB4MjAKKyNkZWZpbmUgIE9VVERNQV9EQVRBX0RNQV9WQUxJ RAkJMHgyOAorI2RlZmluZSAgT1VURE1BX0RBVEFfQ1RSTDEJCTB4MzAKKyNkZWZpbmUgICBPVVRE TUFfREFUQV9DVFJMMV9FX0JBTE5fTUFTSwlHRU5NQVNLKDIsIDApCisjZGVmaW5lICAgT1VURE1B X0RBVEFfQ1RSTDFfRV9OT19BTE4JMHgwMAorI2RlZmluZSAgIE9VVERNQV9EQVRBX0NUUkwxX0Vf NF9BTE4JMHgwMgorI2RlZmluZSAgIE9VVERNQV9EQVRBX0NUUkwxX0VfNjRfQUxOCTB4MDYKKyNk ZWZpbmUgICBPVVRETUFfREFUQV9DVFJMMV9FX1NUVUZGCUJJVCgzKQorI2RlZmluZSAgIE9VVERN QV9EQVRBX0NUUkwxX1BTSF9UTVJfRU4JQklUKDQpCisjZGVmaW5lICBPVVRETUFfREFUQV9QVVNI X1RJTUVSCQkweDM0CisjZGVmaW5lICBPVVRETUFfREFUQV9QVVNIX0VWRU5UX0NUUkwJMHgzOAor I2RlZmluZSAgIE9VVERNQV9EQVRBX1BVU0hfQ1RSTF9QVVNICUJJVCgwKQorI2RlZmluZSAgT1VU RE1BX0RBVEFfUFVTSF9FVkVOVF9TVEFUVVMJMHgzYworI2RlZmluZSAgIE9VVERNQV9EQVRBX1BV U0hfRVZUX1NUQVRVUwlCSVQoMCkKKyNkZWZpbmUgIE9VVERNQV9ERVNDX0RNQV9XUklURQkJMHg1 MAorI2RlZmluZSAgT1VURE1BX0RFU0NfRE1BX1JFQUQJCTB4NTgKKyNkZWZpbmUgIE9VVERNQV9E RVNDX0RNQV9CQVNFCQkweDYwCisjZGVmaW5lICBPVVRETUFfREVTQ19ETUFfRU5ECQkweDY4Cisj ZGVmaW5lICBPVVRETUFfREVTQ19ETUFfVkFMSUQJCTB4NzAKKyNkZWZpbmUgIE9VVERNQV9ERVND X0RNQV9DVFJMMQkJMHg3OAorI2RlZmluZSAgIE9VVERNQV9ERVNDX0NUUkwxX1BTSF9USU1SX0VO CUJJVCgwKQorI2RlZmluZSAgT1VURE1BX0RFU0NfUFVTSF9USU1FUgkJMHg3YworI2RlZmluZSAg T1VURE1BX0RFU0NfUFVTSF9FVlRfQ1RMCTB4ODAKKyNkZWZpbmUgICBPVVRETUFfREVTQ19QVVNI X0VWVF9DVExfUFNICUJJVCgwKQorI2RlZmluZSAgT1VURE1BX0RFU0NfUFNIX0VWVF9TVAkJMHg4 NAorI2RlZmluZSAgT1VURE1BX0RFU0NfRklGT19DVFJMCQkweDg4CisjZGVmaW5lICAgT1VURE1B X0RFU0NfRklGT19DVExfRkxVU0gJQklUKDApCisjZGVmaW5lICBPVVRETUFfREVTQ19GSUZPX0ZM VVNIX1NUQVRVUwkweDhjCisjZGVmaW5lICAgT1VURE1BX0RFU0NfRklGT19GTEhfU1QJQklUKDAp CisjZGVmaW5lICBPVVRETUFfREVTQ19ETUFfQ1RSTDIJCTB4OTQKKyNkZWZpbmUgICBPVVRNREFf REVTQ19ETUFfQ1RSTDJfV0RfRU4JQklUKDEpCisjZGVmaW5lICAgT1VURE1BX0RFU0NfRE1BX0NU UkwyX1JYX1BPUlQJOAorCisjZGVmaW5lIFRYX1NQQl9ETUFfT0ZGU0VUKGludGYpIFwKKwkoKCgo aW50ZiktPmNoYW5uZWwpICogMHgzMCkgKyAweDQ4MTgwKQorI2RlZmluZSAgVFhfU1BCX0RNQV9S RUFECQkweDAwCisjZGVmaW5lICBUWF9TUEJfRE1BX0JBU0UJCTB4MDgKKyNkZWZpbmUgIFRYX1NQ Ql9ETUFfRU5ECQkJMHgxMAorI2RlZmluZSAgVFhfU1BCX0RNQV9WQUxJRAkJMHgxOAorI2RlZmlu ZSAgVFhfU1BCX0RNQV9GSUZPX0NUUkwJCTB4MjAKKyNkZWZpbmUgICBUWF9TUEJfRE1BX0ZJRk9f RkxVU0gJCUJJVCgwKQorI2RlZmluZSAgVFhfU1BCX0RNQV9GSUZPX1NUQVRVUwkJMHgyNAorCisj ZGVmaW5lIFRYX1NQQl9DVFJMX09GRlNFVChpbnRmKSBcCisJKCgoKGludGYpLT5jaGFubmVsKSAq IDB4NjgpICsgMHg0OTM0MCkKKyNkZWZpbmUgIFRYX1NQQl9DVFJMX0VOQUJMRQkJMHgwCisjZGVm aW5lICAgVFhfU1BCX0NUUkxfRU5BQkxFX0VOCQlCSVQoMCkKKyNkZWZpbmUgIFRYX1NQQl9DVFJM X1hGX0NUUkwyCQkweDIwCisjZGVmaW5lICAgVFhfU1BCX0NUUkxfWEZfQklEX1NISUZUCTE2CisK KyNkZWZpbmUgVFhfU1BCX1RPUF9PRkZTRVQoaW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkg KiAweDFjKSArIDB4NGEwZTApCisjZGVmaW5lIFRYX1NQQl9UT1BfQkxLT1VUCQkweDAKKyNkZWZp bmUgVFhfU1BCX1RPUF9TUFJFX0JXX0NUUkwJCTB4NAorCisjZGVmaW5lIFRYX0VQS1RfQ19PRkZT RVQoaW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkgKiAweDEyMCkgKyAweDQwOTAwKQorI2Rl ZmluZSAgVFhfRVBLVF9DX0NGR19NSVNDCQkweDAKKyNkZWZpbmUgICBUWF9FUEtUX0NfQ0ZHX01J U0NfRU4JCUJJVCgwKQorI2RlZmluZSAgIFRYX0VQS1RfQ19DRkdfTUlTQ19QVAkJQklUKDEpCisj ZGVmaW5lICAgVFhfRVBLVF9DX0NGR19NSVNDX1BTX1NISUZUCTE0CisjZGVmaW5lICAgVFhfRVBL VF9DX0NGR19NSVNDX0ZEX1NISUZUCTIwCisKKyNkZWZpbmUgVFhfUEFVU0VfQ1RSTF9PRkZTRVQo aW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCAqIDB4YykgKyAweDQ5YTIwKSkKKyNkZWZpbmUg IFRYX1BBVVNFX01BUF9WRUNUT1IJCTB4OAorCisjZGVmaW5lIFJYX0VEUEtUX0RNQV9PRkZTRVQo aW50ZikgXAorCSgoKChpbnRmKS0+Y2hhbm5lbCkgKiAweDM4KSArIDB4OWNhMDApCisjZGVmaW5l ICBSWF9FRFBLVF9ETUFfV1JJVEUJCTB4MDAKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9SRUFECQkw eDA4CisjZGVmaW5lICBSWF9FRFBLVF9ETUFfQkFTRQkJMHgxMAorI2RlZmluZSAgUlhfRURQS1Rf RE1BX0VORAkJMHgxOAorI2RlZmluZSAgUlhfRURQS1RfRE1BX1ZBTElECQkweDIwCisjZGVmaW5l ICBSWF9FRFBLVF9ETUFfRlVMTE5FU1MJCTB4MjgKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9NSU5f VEhSRVMJCTB4MmMKKyNkZWZpbmUgIFJYX0VEUEtUX0RNQV9DSF9YT05PRkYJCTB4MzAKKworI2Rl ZmluZSBSWF9FRFBLVF9DRkdfT0ZGU0VUKGludGYpIFwKKwkoKCgoaW50ZiktPmNoYW5uZWwpICog MHg3MCkgKyAweDljNjAwKQorI2RlZmluZSAgUlhfRURQS1RfQ0ZHX0NGRzAJCTB4MAorI2RlZmlu ZSAgIFJYX0VEUEtUX0NGR19DRkcwX0RCVUZfU0hJRlQJOQorI2RlZmluZSAgICBSWF9FRFBLVF9D RkdfQ0ZHMF9SQlVGCTB4MAorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9SQlVGXzRLCTB4 MQorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9CVUZfNEsJMHgyCisvKiBFRlJNIFNUVUZG LCAwID0zRCBubyBieXRlIHN0dWZmLCAxID0zRCB0d28gYnl0ZSBzdHVmZiAqLworI2RlZmluZSAg IFJYX0VEUEtUX0NGR19DRkcwX0VGUk1fU1RVRglCSVQoMTEpCisjZGVmaW5lICAgUlhfRURQS1Rf Q0ZHX0NGRzBfQkFMTl9TSElGVAkxMgorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF9OT19B TE4JMAorI2RlZmluZSAgICBSWF9FRFBLVF9DRkdfQ0ZHMF80X0FMTgkyCisjZGVmaW5lICAgIFJY X0VEUEtUX0NGR19DRkcwXzY0X0FMTgk2CisjZGVmaW5lICBSWF9FRFBLVF9SSU5HX0JVRkZFUl9X UklURQkweDM4CisjZGVmaW5lICBSWF9FRFBLVF9SSU5HX0JVRkZFUl9SRUFECTB4NDAKKyNkZWZp bmUgIFJYX0VEUEtUX1JJTkdfQlVGRkVSX0JBU0UJMHg0OAorI2RlZmluZSAgUlhfRURQS1RfUklO R19CVUZGRVJfRU5ECTB4NTAKKyNkZWZpbmUgIFJYX0VEUEtUX1JJTkdfQlVGRkVSX1ZBTElECTB4 NTgKKyNkZWZpbmUgIFJYX0VEUEtUX0NGR19FTkFCTEUJCTB4NmMKKyNkZWZpbmUgICBSWF9FRFBL VF9DRkdfRU5BQkxFX0VOCUJJVCgwKQorCisjZGVmaW5lIFJYX1NQQl9ETUFfT0ZGU0VUKGludGYp IFwKKwkoKCgoaW50ZiktPmNoYW5uZWwpICogMHgzMCkgKyAweGEwMDAwKQorI2RlZmluZSAgUlhf U1BCX0RNQV9SRUFECQkweDAwCisjZGVmaW5lICBSWF9TUEJfRE1BX0JBU0UJCTB4MDgKKyNkZWZp bmUgIFJYX1NQQl9ETUFfRU5ECQkJMHgxMAorI2RlZmluZSAgUlhfU1BCX0RNQV9WQUxJRAkJMHgx OAorI2RlZmluZSAgUlhfU1BCX0RNQV9GSUZPX0NUUkwJCTB4MjAKKyNkZWZpbmUgICBSWF9TUEJf RE1BX0ZJRk9fRkxVU0gJCUJJVCgwKQorI2RlZmluZSAgUlhfU1BCX0RNQV9GSUZPX1NUQVRVUwkJ MHgyNAorCisjZGVmaW5lIFJYX1NQQl9DVFJMX09GRlNFVChpbnRmKSBcCisJKCgoKGludGYpLT5j aGFubmVsIC0gNikgKiAweDY4KSArIDB4YTEwMDApCisjZGVmaW5lICBSWF9TUEJfQ1RSTF9FTkFC TEUJCTB4MDAKKyNkZWZpbmUgICBSWF9TUEJfQ1RSTF9FTkFCTEVfRU4JCUJJVCgwKQorCisjZGVm aW5lIFJYX1BBVVNFX0NUUkxfT0ZGU0VUKGludGYpIFwKKwkoKCgoaW50ZiktPmNoYW5uZWwgLSA2 KSAqIDB4NCkgKyAweGExMTM4KQorI2RlZmluZSAgUlhfUEFVU0VfTUFQX1ZFQ1RPUgkJMHgwMAor CisjZGVmaW5lIFJYX1NQQl9UT1BfQ1RSTF9PRkZTRVQoaW50ZikgXAorCSgoKChpbnRmKS0+Y2hh bm5lbCAtIDYpICogMHgxNCkgKyAweGEyMDAwKQorI2RlZmluZSAgUlhfU1BCX1RPUF9CTEtPVVQJ CTB4MDAKKworI2RlZmluZSBOVU1fNEtfQlVGRkVSUwkJCTMyCisjZGVmaW5lIFJJTkdfQlVGRkVS X1NJWkUJCShQQUdFX1NJWkUgKiBOVU1fNEtfQlVGRkVSUykKKworI2RlZmluZSBERVNDX1JJTkdf Q09VTlQJCQkoNjQgKiBOVU1fNEtfQlVGRkVSUykKKyNkZWZpbmUgREVTQ19TSVpFCQkJMTYKKyNk ZWZpbmUgREVTQ19SSU5HX1NJWkUJCQkoREVTQ19SSU5HX0NPVU5UICogREVTQ19TSVpFKQorCisj ZW5kaWYKLS09MjAKMi43LjQK --000000000000f3660905fc636c6c 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEINhVGVL3P3svWbE/fQiGuasFkMjkPNULmxKG ywUexmDwMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTQwM1owaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQAE6DODC8jE2zL7nEB9C2oKRgUjp1l4YDK7Dwn58xh/HYQ3JIQsISn2 MCjub8yalDyyBvbYPZ3exLcM3UrYYJVR0bi+nNZfNlXu6UH1XUl1XJPG/8kjN/PM+SdDKydyMmYB W+DREsGWZmlYsA/En8LeZEjA4n77weClyVHn++B2YZb1H7i+tap3HWnEaQYG083qHEM5XDuenuam 1J283Lh1LP1bMZEu+AFLisaNuLy7XPX1Ll8HBmdbgrX18Vdbxtstn0Tix5vrjgTUlaigq03nGP/3 2oLogFyPa0ewVrOJ0wc6y+Fy9/jsOqXU5Fw7bfmicv9xIsJ18EHQ2u2Z1IK1 --000000000000f3660905fc636c6c-- From nobody Sat Feb 7 17:20:17 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 CEDB0C7EE2F for ; Tue, 23 May 2023 21:54:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238746AbjEWVyP (ORCPT ); Tue, 23 May 2023 17:54:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238743AbjEWVyL (ORCPT ); Tue, 23 May 2023 17:54:11 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5BECF12B for ; Tue, 23 May 2023 14:54:05 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1ae3ed1b08eso2090155ad.0 for ; Tue, 23 May 2023 14:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878844; x=1687470844; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=nd7M62IWGFVDpMFlvDXL5T5LDSEpbfLvw9DS1K2r4Qs=; b=VF/CENL94S8gi6nNSmHys0uEJuqHtX+bkAB3tBFTL7ezd2Jw7e7vrw6tveq2AXkseX 5IKKnjhQLy4RfpuqWuI+olphqjhKN4JdhfrZDO6l5Wiw7H/GvzECKgkkuZNbWJ8+5rvr geVRviZelnQvNswD33DZiMozIquABrjJsTSQI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878844; x=1687470844; 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=nd7M62IWGFVDpMFlvDXL5T5LDSEpbfLvw9DS1K2r4Qs=; b=Z6TvjNcOU/1Q/nLUmB7W1Q8atWaSQzz08m96bsUodsLicXOJ8i/PwR/z9wrafFBAJ+ m2g40qL0saoupirxRjplvboPJwqJcxjj6VGDmIvy6JUg17MgKi3H/k4uxdExvfG8sQoX JwjqZQcWqi4wwWdw/XRXbo8znVAerASQirqptUpMM4fPT+JSwfILmKZNqsQMKd6RN1mA 8ugyCOPsbTzB9+2g40OhQr81JpC61b9hLqtSGyTotRbGZFYj+1YVY2736dC5BNvWgAB5 Db8y6lYK7UjQa04HmPPTnf7kxkQvjw9Q+K4u5Ejjpa1PFxgb08Pabf0l+fhoQGd0Ie7S m99A== X-Gm-Message-State: AC+VfDxMG5iwtcXJYwXPc+VD+u8eoy6XXKbUy4Nv6x0KkfOs5ZFQLSCx cVCHmZFGUbuL4HX7iThJPdgfnQ== X-Google-Smtp-Source: ACHHUZ64iGZpMkNhh08Ow93EyiSub98QO2oQclL4dPF/Ipx6c+/DP7Rbo80oXpcurd72slR2wKFMIg== X-Received: by 2002:a17:902:e842:b0:1ac:47fe:888 with SMTP id t2-20020a170902e84200b001ac47fe0888mr18505323plg.28.1684878844603; Tue, 23 May 2023 14:54:04 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.54.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:54:04 -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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 4/6] net: phy: mdio-bcm-unimac: Add asp v2.0 support Date: Tue, 23 May 2023 14:53:45 -0700 Message-Id: <1684878827-40672-5-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000000b43a805fc636d29" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --0000000000000b43a805fc636d29 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIG1kaW8gY29tcGF0IHN0cmluZyBmb3IgQVNQIDIuMCBldGhlcm5ldCBkcml2ZXIuCgpTaWdu ZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNv bT4KU2lnbmVkLW9mZi1ieTogSnVzdGluIENoZW4gPGp1c3Rpbi5jaGVuQGJyb2FkY29tLmNvbT4K UmV2aWV3ZWQtYnk6IEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KUmV2aWV3ZWQtYnk6IFNp bW9uIEhvcm1hbiA8c2ltb24uaG9ybWFuQGNvcmlnaW5lLmNvbT4KLS0tCiBkcml2ZXJzL25ldC9t ZGlvL21kaW8tYmNtLXVuaW1hYy5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFjLmMgYi9k cml2ZXJzL25ldC9tZGlvL21kaW8tYmNtPQotdW5pbWFjLmMKaW5kZXggYmZjOWJlMjNjOTczLi42 YjI2YTA4MDM2OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFj LmMKKysrIGIvZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS11bmltYWMuYwpAQCAtMzM0LDYgKzMz NCw4IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyh1bmltYWNfbWRpb19wbV9vcHMsCiAJCQkg dW5pbWFjX21kaW9fc3VzcGVuZCwgdW5pbWFjX21kaW9fcmVzdW1lKTsKPTIwCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCB1bmltYWNfbWRpb19pZHNbXSA9M0QgeworCXsgLmNvbXBh dGlibGUgPTNEICJicmNtLGFzcC12Mi4xLW1kaW8iLCB9LAorCXsgLmNvbXBhdGlibGUgPTNEICJi cmNtLGFzcC12Mi4wLW1kaW8iLCB9LAogCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1k aW8tdjUiLCB9LAogCXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1kaW8tdjQiLCB9LAog CXsgLmNvbXBhdGlibGUgPTNEICJicmNtLGdlbmV0LW1kaW8tdjMiLCB9LAotLT0yMAoyLjcuNAo= --0000000000000b43a805fc636d29 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIJ2z7jogmukky6leg5r84lAEakYp17xnNt46 yRvBev+zMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTQwNFowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQCiv5AuXFA58TcF6W09Mx4mE3OwE0HBAAISbf54VyNC5qXsuTLdx0lF PBmzAcS7trEhj4nRG6CqLCqdOhUmMohEFp1s8PwqjqBjzUUsjC6Z/WUYfuite9hhbjvGt3n/xr0o 248K+M+8DwvyquBrzz6LDKyzYJ1zrSNTsIXbFM0qaKLeXrxlw0APA8L8hoEwlmKai8Crt9d3odSD X8Dfu/Dsihf/Fzb3kn1sWToUdAOPo2i9D9bFxXY9pHjbKDsTy2r19E+tEhMC77qlB8cgOMyohPlX q7BiqOdRj8WpUQA0UVG9JkX9Y8oWDxFQU5stgukLgzM5TaRHWL7xaaCEdgNo --0000000000000b43a805fc636d29-- From nobody Sat Feb 7 17:20:17 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 17DCAC7EE23 for ; Tue, 23 May 2023 21:54:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238790AbjEWVyW (ORCPT ); Tue, 23 May 2023 17:54:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238770AbjEWVyP (ORCPT ); Tue, 23 May 2023 17:54:15 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7BC6E1A4 for ; Tue, 23 May 2023 14:54:07 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1ae4c5e1388so1846525ad.1 for ; Tue, 23 May 2023 14:54:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878847; x=1687470847; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=5M2eroIbHskeneG7FNglLTW+r6d0NUBGWYcPR/fO99k=; b=b9EvlGEIOixkDCYEHl0nckERX0oa1U2jmvE30+VTHyhtUztjdkQnAKIVjtkcX16xSQ Pvfe9sO+m9Xzuk3qRU91Yqh1NJRZKkAZV9uSCK1nG8nzMt04BJLE55JQeOjHBA01bf44 6jJ2VRLFH/fKLbYucqmY748oXij8QhLhIdovM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878847; x=1687470847; 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=5M2eroIbHskeneG7FNglLTW+r6d0NUBGWYcPR/fO99k=; b=QEn494HJdbVMIB8XW+v+bGgpwbNIhzmymWCK2zDwHtkhyPqGSs/R/PstrY3Ji5DzCC oCKhk84J/HQKUMU33jxXOmS16SWeX5Iq19BbRKjg3qDCcLKwlUvaanZ4UY7dJX+8kXpu 7Dl0TKgrWAvl9+v5FDoFvMMDwlgGLaj8d+fcb8Bu6im5i+uKGkfhV+BctopV9AmSD14r hSsXCaTxVHFwJJMyrgg5wtZUsxJCf5AOgAvdekfDnCgMWr3Lz3yE7MiNDEWFpIo1J4D3 jouftbg4PtbSiUdHYsGbIQMTCagNjz/EVCjSibXS2jPfvgjnrr+Op269d4noqJ4sj4AC cn7g== X-Gm-Message-State: AC+VfDy5xzriKGQHqmNrexY1CVjq/ece/tHe4r8HtqqxXsj8fXN8lzcX GckA6SpMC00HLRcVp4XaBb95x2BODE4cLU/4nthqNA== X-Google-Smtp-Source: ACHHUZ6mBqUjyivTppa0NSQ4JkG//Jeduh2Xxj308sXyaDly0bOWrqV4nfzCBjkBcCnbcKklM/A93w== X-Received: by 2002:a17:902:f816:b0:1af:dc52:bf6a with SMTP id ix22-20020a170902f81600b001afdc52bf6amr723167plb.54.1684878846901; Tue, 23 May 2023 14:54:06 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.54.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:54:06 -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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 5/6] net: phy: bcm7xxx: Add EPHY entry for 74165 Date: Tue, 23 May 2023 14:53:46 -0700 Message-Id: <1684878827-40672-6-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000002e2f3d05fc636ddc" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --0000000000002e2f3d05fc636ddc MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnJvbTogRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+Cgo3 NDE2NSBpcyBhIDE2bm0gcHJvY2VzcyBTb0Mgd2l0aCBhIDEwLzEwMCBpbnRlZ3JhdGVkIEV0aGVy bmV0IFBIWSwKdXRpbGl6ZSB0aGUgcmVjZW50bHkgZGVmaW5lZCAxNm5tIEVQSFkgbWFjcm8gdG8g Y29uZmlndXJlIHRoYXQgUEhZLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zmxv cmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEp1c3RpbiBDaGVuIDxq dXN0aW4uY2hlbkBicm9hZGNvbS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgTHVubiA8YW5kcmV3 QGx1bm4uY2g+ClJldmlld2VkLWJ5OiBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBjb3JpZ2lu ZS5jb20+Ci0tLQogZHJpdmVycy9uZXQvcGh5L2JjbTd4eHguYyB8IDEgKwogaW5jbHVkZS9saW51 eC9icmNtcGh5LmggICB8IDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jIGIvZHJpdmVycy9uZXQvcGh5L2Jj bTd4eHguYwppbmRleCBmOGMxN2EyNTNmOGIuLjg0NzhiMDgxYzA1OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvcGh5L2JjbTd4eHguYworKysgYi9kcml2ZXJzL25ldC9waHkvYmNtN3h4eC5jCkBA IC05MTMsNiArOTEzLDcgQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGJjbTd4eHhfZHJpdmVy W10gPTNEIHsKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzI3OCwgIkJyb2FkY29tIEJD TTcyNzgiKSwKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzM2NCwgIkJyb2FkY29tIEJD TTczNjQiKSwKIAlCQ003WFhYXzI4Tk1fR1BIWShQSFlfSURfQkNNNzM2NiwgIkJyb2FkY29tIEJD TTczNjYiKSwKKwlCQ003WFhYXzE2Tk1fRVBIWShQSFlfSURfQkNNNzQxNjUsICJCcm9hZGNvbSBC Q003NDE2NSIpLAogCUJDTTdYWFhfMjhOTV9HUEhZKFBIWV9JRF9CQ003NDM3MSwgIkJyb2FkY29t IEJDTTc0MzcxIiksCiAJQkNNN1hYWF8yOE5NX0dQSFkoUEhZX0lEX0JDTTc0MzksICJCcm9hZGNv bSBCQ003NDM5IiksCiAJQkNNN1hYWF8yOE5NX0dQSFkoUEhZX0lEX0JDTTc0MzlfMiwgIkJyb2Fk Y29tIEJDTTc0MzkgKDIpIiksCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JyY21waHkuaCBi L2luY2x1ZGUvbGludXgvYnJjbXBoeS5oCmluZGV4IGU5YWZiZmI2ZDdhNS4uNDA5ZWM5ZDM1MDUx IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JyY21waHkuaAorKysgYi9pbmNsdWRlL2xpbnV4 L2JyY21waHkuaApAQCAtNDQsNiArNDQsNyBAQAogI2RlZmluZSBQSFlfSURfQkNNNzM2NgkJCTB4 NjAwZDg0OTAKICNkZWZpbmUgUEhZX0lEX0JDTTczNDYJCQkweDYwMGQ4NjUwCiAjZGVmaW5lIFBI WV9JRF9CQ003MzYyCQkJMHg2MDBkODRiMAorI2RlZmluZSBQSFlfSURfQkNNNzQxNjUJCQkweDM1 OTA1MmMwCiAjZGVmaW5lIFBIWV9JRF9CQ003NDI1CQkJMHg2MDBkODZiMAogI2RlZmluZSBQSFlf SURfQkNNNzQyOQkJCTB4NjAwZDg3MzAKICNkZWZpbmUgUEhZX0lEX0JDTTc0MzUJCQkweDYwMGQ4 NzUwCi0tPTIwCjIuNy40Cg== --0000000000002e2f3d05fc636ddc 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIM0r1D816tQnx6HdGeSGVutqkRocMFvOQVlv FoxqXVo2MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTQwN1owaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQAYmjKn2C7Rb5SVqkTjgpJsbbuK9CNmTz86yAjNa9CyQjxLWSAk8ELu 1CX3jEf+TMnTV1B5hR2sWkILEVyOGTTqBa+Tu55lHGUNhhDUlyTP/zYyGyhxpm+sxycqphV6Mf/T BoDmYuN3AUhbpHsST3SKw4S0Mx7j+eRFRrhkD4+UrZDiOf+1q5uAh6V+jtTshvvUzhmsSmkiewZ6 7cloQR1NN8P1Q5MOtJrF8tA8SsSFClkFekKl+QSAsL/3Z0IFfaIpCXKnN4aqzG3VtT1tIWgWIqG+ 2s0sMkU2YKjhed6DWfRIXw3e6lfjdRM95qjZXb9l63P9fPD0ClQWhqc1KWHd --0000000000002e2f3d05fc636ddc-- From nobody Sat Feb 7 17:20:17 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 F15D3C7EE23 for ; Tue, 23 May 2023 21:54:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238785AbjEWVyg (ORCPT ); Tue, 23 May 2023 17:54:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238751AbjEWVyS (ORCPT ); Tue, 23 May 2023 17:54:18 -0400 Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 03FA4E45 for ; Tue, 23 May 2023 14:54:10 -0700 (PDT) Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-517ab9a4a13so130134a12.1 for ; Tue, 23 May 2023 14:54:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1684878849; x=1687470849; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=zwPrMvLHQzAyPwKSBLLcEfE+ULMuFpfg+jY2PoqLQcY=; b=Qwc4B5rILpvpkUUAVB0+3ul9+mio7AmFehBMKyh3Gwu/4NckR9YEWCYTUYydKivMKc n6zujG1ISdKA45poQjbSlYEzlv/wAWN7JiXV8WFxlGEG6jrDlG4eEl8NRl1CfCVlFggr 42Ho2q26QopkJUMjiJMcp+hcc+vmg5AMxA70Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684878849; x=1687470849; 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=zwPrMvLHQzAyPwKSBLLcEfE+ULMuFpfg+jY2PoqLQcY=; b=I+vcepHzl+cAw8dwfAZTJvk3sajixZu6DCIZUTVvR7l6gWwdBFzesdV3DH7MYGobLE pN1AAElApYujdcVpjctQCz5N3bl5GoSVxC+GrOSLSP6NT+lYgonpIXV1RxRaTCWmxl+h Y13zFHsett4500SVvrZdRt5/FJpQIBRFOoTgDFQDIeIYiiFAf/XY5AQURM3osLRd5IF5 zLNsbGmSAk/DfPW+mv5a3tef+URNuNU2gsgaET5iQ5M3DMqD/8fjiOSxukbCm5GSmAIt RiMzfYop3aKkpB63w6C0EC+POoEFgv9Xh3KLbPZwFJQpv8gGJ+PBQplzYSBW2SDa5xNc 4spQ== X-Gm-Message-State: AC+VfDy/sMyOv39sLCF/3/aDyt0AQrFA6JdpADay1JaaztdXHKx/Imxc VaElzJ2cIqdmHGgegK58T1sDAQ== X-Google-Smtp-Source: ACHHUZ4LwnKOEXbbLexkXlgsmBxIRToEzY9tbvRVTG9MXJu1BoRFEN4WYmFb7BO2bnjqo32Io9XxHg== X-Received: by 2002:a17:902:ced0:b0:1af:b47e:7892 with SMTP id d16-20020a170902ced000b001afb47e7892mr8537422plg.67.1684878849312; Tue, 23 May 2023 14:54:09 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id e4-20020a170902744400b001ae62d7cb2bsm7189820plt.199.2023.05.23.14.54.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 May 2023 14:54:08 -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: justinpopo6@gmail.com, justin.chen@broadcom.com, f.fainelli@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.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, conor@kernel.org, simon.horman@corigine.com, Florian Fainelli Subject: [PATCH net-next v4 6/6] MAINTAINERS: ASP 2.0 Ethernet driver maintainers Date: Tue, 23 May 2023 14:53:47 -0700 Message-Id: <1684878827-40672-7-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> References: <1684878827-40672-1-git-send-email-justin.chen@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000525c6c05fc636d92" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable --000000000000525c6c05fc636d92 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIG1haW50YWluZXJzIGVudHJ5IGZvciBBU1AgMi4wIEV0aGVybmV0IGRyaXZlci4KClNpZ25l ZC1vZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29t PgpTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ2hlbiA8anVzdGluLmNoZW5AYnJvYWRjb20uY29tPgpS ZXZpZXdlZC1ieTogU2ltb24gSG9ybWFuIDxzaW1vbi5ob3JtYW5AY29yaWdpbmUuY29tPgotLS0K IE1BSU5UQUlORVJTIHwgOSArKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGUyZmQ2NGMy ZWJkYy4uNzMyYTA5OWY0YTEwIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJ TkVSUwpAQCAtNDE5OCw2ICs0MTk4LDE1IEBAIEY6CWRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20t dW5pbWFjLmMKIEY6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9iY21nZW5ldC5oCiBGOglp bmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWRpby1iY20tdW5pbWFjLmgKPTIwCitCUk9BRENP TSBBU1AgMi4wIEVUSEVSTkVUIERSSVZFUgorTToJSnVzdGluIENoZW4gPGp1c3Rpbi5jaGVuQGJy b2FkY29tLmNvbT4KK006CUZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRj b20uY29tPgorTDoJYmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbQorTDoJbmV0 ZGV2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sYXNwLXYyLjAueWFtbAorRjoJZHJpdmVycy9uZXQvZXRo ZXJuZXQvYnJvYWRjb20vYXNwMi8KKwogQlJPQURDT00gSVBST0MgQVJNIEFSQ0hJVEVDVFVSRQog TToJUmF5IEp1aSA8cmp1aUBicm9hZGNvbS5jb20+CiBNOglTY290dCBCcmFuZGVuIDxzYnJhbmRl bkBicm9hZGNvbS5jb20+Ci0tPTIwCjIuNy40Cg== --000000000000525c6c05fc636d92 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 YIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEIGIxbn3fKlDxiJ8nfOTkVNNDRuQqQG0C6gDZ niVepttoMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDUyMzIx NTQwOVowaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFl AwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQCATAN BgkqhkiG9w0BAQEFAASCAQBUnbUrvqYP/iXfysEf+jbW+TZh+MYGXEmWLtKRGZR+moDbS7Xpk2Ic Ivs14hQIRjd1NEAQ04pcF4vAyd3ybmwNKPenlQI454xTEPD0FlqQUGccg/9VuG9BabDy5cmwIQ55 O4Y+Kspf2Li06H7VocqmCGG4cCzc8RqK8+Ihw53Pz2LxDTsOQ3TgB1z1tAT/0b4m+ZM+l3WZIpGi NGz0fXf70AFrJcLHYJq1udTlgo8pWgwprHXrebzGIYXsPgz08BnLnab7T1GuMn004G04pm0uyd60 L7R6RjPZi+8XNbfy4KfA6sfKY9LG4FQFwaC/mGguNZELsD8/IG0kZOdPlNy3 --000000000000525c6c05fc636d92--