From patchwork Tue Feb 11 16:07:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970099 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 06DD2C021A1 for ; Tue, 11 Feb 2025 16:12:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=dFvWI3dN7K06mKi/yL58AlXaCE Ojl+BJ5uY3VeSQizsru2hvOtkQ4MV3hK2UPLKuZI0oJPhmI3BPVSrtdFnp2IflEOcbyJy6tVYr2Yl 71Ztz2XkTLP8MqAvNk1pTfVy1USF+tLi0BAnjJTJcJLfQPicJb1beiHzpVhTUfGC1x4+nAS4b4PCr qzNnzwqIkDHkmu+lhqLxTvmAjgwzJXaw5Tt7qeHVyWhhPL0En5Ixdf7xC3bmK+Iyuknk0qz9JDNTG c2ULl31qoDTKlNpl+wa93gfZvYrj0vuNGiqOvwok0qAAPGC3J3YVHfNxd0sNDprKyzJf9b9jqn0tL +usguxDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thsrj-00000004RTi-2uXL; Tue, 11 Feb 2025 16:12:03 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thso3-00000004QOy-2CkX for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:16 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2fa2eb7eb45so6452673a91.1 for ; Tue, 11 Feb 2025 08:08:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290095; x=1739894895; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=JXcZAbbHaZQxpoqmO+gePxeADsrfrjz3I4+ThX/aL8zaaP5NVutn87Xf8h3geuuFV1 j8HVhUaaCWhtDOQpGh+mH1WjUQ+ifIfbkdBqu7EpEQwQHg410eXvYR7vv66R17N+yHA1 D/niMxNQXx9nB0RIFxp1MMZCfb2Bq3lH1pYv4x8eJaqRUFjYO60Qy5PwoxEb5BLDtnc7 eZSG+1JdwdMAsjM1IFZSLvdRVWHgaLK7PrXN2uV5eEsC3PPCBuJwlQwfvibaDODnjWMh giWsijjr47d+J91ApuCBgLP8rkQQexAH1Npb7pxhyMBzcnK0bTpaiewP3bHUf7Zvp7a2 5Edw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290095; x=1739894895; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=T96r+DyzbGwAqbK2cbiHJG0eNme7kwk+bIOzEpkIsiWcUCsS3VNq7bvM4uGnnCmt0B RNfDtPIT8wI2MkJeT0ti3FQMtqYHQrxNyA1NRT9NjVVuOngFmfNB6z3V/2sF4vI9Fpcx u6G/GudMjH4h+Xz+uIxGiyOscQ5Na6OnkkWobzobxYaEwQmsbjeesb4wt5hYJ8/Q74th sjuilbo4jVL8uagPdsYvECiVA/lsCcroBwtm8LKbzc24zP3r+Pz4Vd5Tmp4eTXXVUzq4 5GHXQGx1Nxw4UZ0JOjMcgNNDISOr+49YTgH7h05d6mQDzo1TUbRECZGPheJVUI5cgq3I g28Q== X-Forwarded-Encrypted: i=1; AJvYcCVEz3gyJuOlc5yuegnDeabCbzhUJ3G2K+q8ssT61D2b4B2j+nXu+zDz3KwYu64h7FoCPO73Hfr9rD6OgkxVUsPA@lists.infradead.org X-Gm-Message-State: AOJu0YwybdGbNIZMLEsgqLjrLP8khvBSLMCDJDIb3+qROQWOdpA0eKms IrMe9Za28ubLg5aKF82W33SrHHeRN9lAkRIlm+J8CavYgBiSwlXD X-Gm-Gg: ASbGncsV57ooLiPTRvvUxl0C79adC2Zn9MUkBWpQidnR83+RFpZ5dwC1ZCLd9BtnYz5 JQSwnwhLX96E4jSmN47gyb4n2OtunlcphbgF8Yfxo1GfvNfhZ5+7reyjJeSMl390fwVG6DuP61n lMETAvPcStmaEnaxNayztgAze9Vw8QcyE0xKsy0IcK1H9c6inP3icKV8ZcRkzFrlDxVBvYVHcAk 2yv64Ic6CcK6V3uO8MifZvm7NWMPwTR1M+PgeQZYnqdfzhlqYblBGTnopotLNIQqANyVPg9YItx e81DfPz4/yVIcpE/vA== X-Google-Smtp-Source: AGHT+IGWiLhpcJsKWzNqi2HT6SRSgJ6VjVADK4Ws7JsDG48oB8ZOyWOashXxpxghrQJ8PTMsnPtFyg== X-Received: by 2002:a17:90b:2dd0:b0:2fa:603e:905c with SMTP id 98e67ed59e1d1-2faa05deea4mr6190188a91.2.1739290094626; Tue, 11 Feb 2025 08:08:14 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:14 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:22 +0800 Subject: [PATCH 01/10] dt-bindings: arm: pmu: Add Apple A7-A11 SoC CPU PMU compatibles MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-1-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1038; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=xKNBKHADoFe0D0/YamWRency2Eic4YhwlS1J3poCzGo=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3Xm0Xt2CbsT+7H9gathEZr4OYeo7c3d66hR5 s1nW1F9h82JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15gAKCRABygi3psUI JHDFD/sFR4NMAnHjLFGq8QNGyYh5/aQCC9Enpo3Iz/tjM8EDsqgYuXbz9aZel6EhLouX0knyeQ7 sis7l8A2O8rZx7taElUW4Boug7FV1SW/KlPQMABCELFy9GDPsv+p3eg/a0QEBEeWdcHphCGv7G7 pApeqSKyqISAtLDWndy7nGNba+9bSWClFzH/iKyTER7LMChBOsJECU1r6ewEOZ/7tNogJYNXd5g OOX94RR8KqhXLiHUMS2ZMHPHnaInZDDN+6UCt4sDvpmgTKAKnb/k7X/EDMFedxdUykgr05BLJdR lT0FkJ6GG9gdDpaHRaxUnKAR6ZyG6ejHAA8/+KxoaYCn+4cLsKjf8gH9WpiHvDQuvstknOxEz6r yhgkqXxJHtmN5IAwwLXQ7i/pujEUDCTmqod40yRbpG6qVYDVIP9ilkijBHLKRMxLTY4V2f4JdFg om7ebmIpo+dTk9TK1j804AGY2zYZ7FTSnVimz/EjIMxujpjrGeLF6SZTyaZ6aF10mnfKQP46bvn Dhvn1xKiLhiVLlLWx/63ELv5LwI9/SW1LRs+yWRg1dpn6KDY/85/EpGuZdtBmvo3xZbXbav09wt 7Ip+KjkPetmWR9RdcU59kxHz2OMOaqkqdB3cGQ+jNLfGL4mSIVrUpoPoyy+svDq93W+OocJr9rQ RXcs9RWNF3GaH9Q== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080815_567437_9DEB114C X-CRM114-Status: UNSURE ( 9.60 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document the compatibles for Apple A7-A11 SoC CPU PMU. Signed-off-by: Nick Chan --- Documentation/devicetree/bindings/arm/pmu.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/pmu.yaml b/Documentation/devicetree/bindings/arm/pmu.yaml index a148ff54f2b8a92fa3fcfa78c1bcc525dba1c6dd..d2e7f19cf6a2d7d2348d163d37c2787c7a36bbd4 100644 --- a/Documentation/devicetree/bindings/arm/pmu.yaml +++ b/Documentation/devicetree/bindings/arm/pmu.yaml @@ -22,8 +22,14 @@ properties: - apm,potenza-pmu - apple,avalanche-pmu - apple,blizzard-pmu + - apple,cyclone-pmu - apple,firestorm-pmu + - apple,fusion-pmu - apple,icestorm-pmu + - apple,monsoon-pmu + - apple,mistral-pmu + - apple,twister-pmu + - apple,typhoon-pmu - arm,armv8-pmuv3 # Only for s/w models - arm,arm1136-pmu - arm,arm1176-pmu From patchwork Tue Feb 11 16:07:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970100 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0F968C0219B for ; Tue, 11 Feb 2025 16:13:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nmvoan1YqE/yKtA+UIeo5+2Y3tZ+vsFg5mxf89/sp0U=; b=rrJsV8K3Tao6LBIR8Uf2h6kwun m12l9URAsEGmjEc2LNcHQAl5XKzE75OOZpSfQRiDt2HORxXHx23tCx+RFW614YZg9KT9oc1o/A+to Ow24mfI1dQZu1SqCiB7aiJcZroerGxjmI0eIvr8DFWRnCExa3FmY35KQV5z0wC4Sy2ISyKuOuQQZJ tlgAHDe1KdTkU9pBHBn40yFCMsA2F63nzEij4/m7L8kSgsJYHw5Z17uoMrjk7ZmrVBhkPh/qU5GD2 pJD8ZxrwJljDsSntNOM8DLe/HAwsqd3GIRq/sX8IKaEM2X/q0A87epEmaT3AoKoL5yyYnOUZjoy+o 2vGNs06w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thst7-00000004Rqc-1Lpn; Tue, 11 Feb 2025 16:13:29 +0000 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thso6-00000004QPt-2rjU for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:19 +0000 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-21f7f1e1194so74296585ad.2 for ; Tue, 11 Feb 2025 08:08:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290098; x=1739894898; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=nmvoan1YqE/yKtA+UIeo5+2Y3tZ+vsFg5mxf89/sp0U=; b=h6Zh1WZkpctRirYasao0wRHMgBWjZxBZ8eJBJzk3S0kJeyJVXJdq+JbTNt4gmwb3I4 YNnhJ8Zg1QA0L5YQkPkewIUVSyNjYTyEjmy9EDXEocaqdadMUKE9HutiEfb4p8Lbx4xy a0V5V3CB14czyms/1+lPQoU7lJpQAZL8LOASy8II95OtjOH73Hmc8lhl9yPOTFbBBzeU UGj3a9xYjgYQwdJ/fiVYzg/vfkWwJE0yjvELuFhxFo5w48S96kfIRKawkkXBqQbaR/7Z ypuhYY3ROX5Bxjdu37KyUgManM8BP3yePpffDzplpUvPihVTEYT3JsQAiSqRn/MktE4f J7Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290098; x=1739894898; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nmvoan1YqE/yKtA+UIeo5+2Y3tZ+vsFg5mxf89/sp0U=; b=uxzumwD1rDHjcXnP/jNKsehUgyaGrOxj4hW9w379m8EWztUN6A67AJXz2/F0vOw1UB 6OWkKuKkNKJTO9KvXS0C8tkG8D/TwmVkxCYugJbKPGKC9AvqeVFNSzDEoqqJrmh8gfgz TSjcapbNQc/vgd9hj7cfSIcHdGGol6lZuWMo3xuBxGGw7sh/+DAIN+gVthGeP/a2Nqqv 3G+jgJRy2Ct9CspmipCUndo4BMSMeTXoQwqfFQ8+3VUm1WKdYDJYMhiCIPhaPP689lsB QXNFMo0ShPV5/8znEdTAI0bahJ8px4XwdM8P7l/w9m7iCkrHa+ab9G54HNdt8PfrJIYC jhBw== X-Forwarded-Encrypted: i=1; AJvYcCXTwy3R+nb0QRn7Ch+QUYxE01/4wcShha3Wm0rf2OaXQrDgBeUaFkHC4YwYzb1oItAZM43ybBRFDG3R4OXYMwPT@lists.infradead.org X-Gm-Message-State: AOJu0Yzf+q0AvQWEypnxexXRShQKEJmrFKHHwIxLKbzkSDOk4M7wwQfc a0IFMf98Y3uRflk1XuxniUHDR3rISeVaoXNzsRgOBgi6mmdNUxEf X-Gm-Gg: ASbGnctmJPRPang4oV4cNq29W/Wd02fH65LQyNTktsOLxn6LmX7dzWFXQSqWeXHiHjk JsISylAPn0XYpmqDhPK+onKtuCBx+NFoBEUMJCTMojHfisnE0gnDT4A5rcgrzY85885xmuduggW Rehjaai7Vo+429TvwB1/mn63OBEUkGvXLSS8wmNBW38uCilWA+QzQNCiZ6gnNiybTaAnxeIU2LC chU9LJ0y7IIXVQ25D7KnfGlKrvB+flkl2CEvPahc8WGayQBV4dVxIl8ewdvyHeOkJ/oKSly5VAV TY//zjxm+oIVYvCZNg== X-Google-Smtp-Source: AGHT+IFEV+8GtRr4zcR1axgnJ8X+fQckqOO5KYT71vYUJNwCtdK0cLMJYzMXIm72XlvyZN+zJANN6Q== X-Received: by 2002:a17:90b:4a41:b0:2ee:b0b0:8e02 with SMTP id 98e67ed59e1d1-2fb7e8bb5e7mr437325a91.28.1739290097691; Tue, 11 Feb 2025 08:08:17 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:17 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:23 +0800 Subject: [PATCH 02/10] drivers/perf: apple_m1: Support per-implementation event tables MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-2-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5883; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=YQao7sB+3fLgHzETqufpNL42LDNNV6Hr1igoTgjUD9U=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XnXLndYLpfjny34FvZYPhDDrIyS03cHytYC w79sFECftuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JHX7EAC1d8N+62+DY2PhhY4Q/8ox2U5uCGEglmpwkDWrE6t2mLPCYW/YW12eppFASRfvvYO6gtI lAVQruGvRRPrxs2QSEf9fgA4onFWwZrmsgMlWeS/y+l/k547j2mOMYwk5c777qbU3EgsYvqcE/u 92nEdifj+nCj/grlNyT/Ru9rkUfGzCr+D7dhBJbjRYB5TIc/Z6lR5/E7bkODzQaa0w7hp8dyer2 IihseH6TMaJvV9iOw66GvYwblU6JIDkaNfFpIncyXTo1ip6ZpbUyD6icClAYdRxOgEXTK+Tc7DR hhIcbqper4NrD6Ozi+h5fGdyNoHChvSIqpJ5T0N/PLBZVSuaepUyk68VNiAW9qBcq2C1h46fO+L o7LfJapMN37fyRRbj76ZW2puOvM9DylsWfyks6Te1MctNZ8vRcU3cE+0Jbc/Fw1Sui7sXUINwf0 HQJzmFfYR2T2VMEJZZw/+FboENkklbPIKV3DEl38Hw8fqsIpHUbjglWimxqWSGP8PZcWmXCGEBx f7XXnB+9e+aH5KugMC1W23uCgTHuD7qqSmp/r1mKxFukELLlIUG5w4M52//nyeZiTnEGvoR5SMw Lv7jmJW032cZvbCyf/vtRnsDKKo6mPTOYygn4bi2GOoMol+UJUJrffVHOg+QnLCaGJiUZcApTFn /yLtwQl6DJvfb0A== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080818_727277_3E59193E X-CRM114-Status: GOOD ( 17.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Use per-implementation event tables to allow supporting implementations with a different list of events and event affinities. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 65 +++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 06fd317529fcbab0f1485228efe8470be565407c..1bf7ce5c09846c699d66bdfcca129f418a9dad9e 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -42,9 +42,6 @@ * moment, we don't really need to distinguish between the two because we * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. - * - * If we eventually find out that the events are different across - * implementations, we'll have to introduce per cpu-type tables. */ enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, @@ -466,11 +463,12 @@ static void m1_pmu_write_counter(struct perf_event *event, u64 value) isb(); } -static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, - struct perf_event *event) +static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event, + const u16 event_affinities[M1_PMU_CFG_EVENT]) { unsigned long evtype = event->hw.config_base & M1_PMU_CFG_EVENT; - unsigned long affinity = m1_pmu_event_affinity[evtype]; + unsigned long affinity = event_affinities[evtype]; int idx; /* @@ -489,6 +487,12 @@ static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, m1_pmu_event_affinity); +} + static void m1_pmu_clear_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -516,7 +520,8 @@ static void m1_pmu_stop(struct arm_pmu *cpu_pmu) __m1_pmu_set_mode(PMCR0_IMODE_OFF); } -static int m1_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_47(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* * Although the counters are 48bit wide, bit 47 is what @@ -524,18 +529,29 @@ static int m1_pmu_map_event(struct perf_event *event) * being 47bit wide to mimick the behaviour of the ARM PMU. */ event->hw.flags |= ARMPMU_EVT_47BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } -static int m2_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_63(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* - * Same deal as the above, except that M2 has 64bit counters. + * Same deal as the above, except with 64bit counters. * Which, as far as we're concerned, actually means 63 bits. * Yes, this is getting awkward. */ event->hw.flags |= ARMPMU_EVT_63BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); +} + +static int m1_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &m1_pmu_perf_map); +} + +static int m2_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } static void m1_pmu_reset(void *info) @@ -572,25 +588,16 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) +static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags) { cpu_pmu->handle_irq = m1_pmu_handle_irq; cpu_pmu->enable = m1_pmu_enable_event; cpu_pmu->disable = m1_pmu_disable_event; cpu_pmu->read_counter = m1_pmu_read_counter; cpu_pmu->write_counter = m1_pmu_write_counter; - cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; - - if (flags & ARMPMU_EVT_47BIT) - cpu_pmu->map_event = m1_pmu_map_event; - else if (flags & ARMPMU_EVT_63BIT) - cpu_pmu->map_event = m2_pmu_map_event; - else - return WARN_ON(-EINVAL); - cpu_pmu->reset = m1_pmu_reset; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; @@ -604,25 +611,33 @@ static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT); } static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_firestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT); } static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_avalanche_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT); } static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_blizzard_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Tue Feb 11 16:07:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970101 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2E519C0219E for ; Tue, 11 Feb 2025 16:15:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mfKkV7CWiRWo4A1sDx20Z/a947sDezwx25dWCKqppXg=; b=WyiMF8iom4y9uRQ/QGngxuR/2K lACae1MYLMUyM/VgBLJjtOFZxdUWgmvdfzwEaFSc4Mn6DGJuyNETyBAb3x2NWZVrip3GkGmQIw87a 8l0lziKJhpHVXXIgv2hk9LRAeO+KgErGKJHVVzABTFb+Urk7ldZAQoin+YzDvJi7zZitiT/nP3hwR HJqMWDoZ1fGC/EyVTcvok1F+flDiex4MGXHJtoUEHT67B4T/EBKRMlW6zTfKDN+DHn/vutDliSN9p Mpa5/Z7Rcr/VcFXX24eWBYvE+4vx6fNb/x9bH0TjNtxznugLjKxWp1Yb0fXG816ZbxP9OkOA0ur/c U8czNByA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thsuV-00000004SKD-0HOu; Tue, 11 Feb 2025 16:14:55 +0000 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thso9-00000004QQU-2rdH for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:22 +0000 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-2fa8ada6662so3517308a91.1 for ; Tue, 11 Feb 2025 08:08:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290101; x=1739894901; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=mfKkV7CWiRWo4A1sDx20Z/a947sDezwx25dWCKqppXg=; b=Z73Wis2e09NfOHWTwD/gvt2klGzOHrK1eTqIHwAV1ZgWuFHLXAzr6x8jQeTdtF5ORr p/fuda+1hSK/+Iwman3IyU5oNTvvmafR4Mqw19NGRPRYuCQN1yaTMZKeKzc/8XzJApXX ozNAMJPgMrHcQgIQR9pLuH+RX3v5H73Iem4cZZ4yDI/JP4/gYpB94jYX1RAEzuAWhApr ZkSE7PJJrSX+l+k/NDOa/CA/ddC59PyseRoU7xKI9nlKgXXWe3UqY8B/GESIlug110xB saBs1EDRu4A2qfm1PDZZ+NSUQ9cgr171QqJQrg6BaN61hY7XvIhx4xzmta/jnOYcqFqW KnVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290101; x=1739894901; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mfKkV7CWiRWo4A1sDx20Z/a947sDezwx25dWCKqppXg=; b=Kl+ick7YN1sPrCAzNM8uJq4JuE/qc8KU3q9Bj4VAqXXyio2wybrABmrU8RroJwlYV0 1t08YwRIKsiKRxOXvcTpRq1Z3JYupn9M7VTXfvwPLyikA1NZfgOvbNmKOAzhdiJp0Juj o4lcwEbMrfJFsi0f9A6q6vKHWGZyhrpXipGApESuQ2ptfrICHwt+2TF3MytcmBRrVTym 0+WcryuqLsNpQqMmE0qi79gG8YiAFcQVtQKtaFnLy5Csa4Ub/MPJgOJezh8GhnFUXNjh LguO/io65wphCTKZA2G54Jd5wm0SwsmaLNH/26cDOdoPNvUWf0UO3IpjYQfwqvtxiJ1S x6pg== X-Forwarded-Encrypted: i=1; AJvYcCUZbCg9SMSiICiGOaJkRbsXC9oqXSZz5PqC+dkKRRlu56X2Y6ISsbu+NWGupFGmfT+SDLGTNqXeVzrDrcnt87QL@lists.infradead.org X-Gm-Message-State: AOJu0Yybp2FUnkxWIk2hZPo/m0AldS8PjCYWj79RhUNU8mMBT6RfFMRm L6oBOtF0a3P8wEkM7/flC25CKIPH7n4vpfzy+x11ehYtPFa/miAv X-Gm-Gg: ASbGnctntvlzD0UwRVu9kENpfUJIOrsADi+99AhDSou0ZnO9rc4k9U4E+81yOzuMxmA 25aRKGdyD3bIUjtubDvHzYR2NjwJm+t7h9ABAorX4sWf/KYZzPaNKT7J2D5CbO+z9rktb2UBZTR q3LAycA5GgZBseRtfvpTataf9hdpf3GzyqiYRBax+ytRGMbAiLQz4roXVYz5190GWZua9W6obRN jdZoVF+XjurzenX4x01+Yr5B61OXnYnFN1Slic5WP3xw7RWxExEG3FPITWLzT5LwT6zMHhC4v0t bICnTSQEjQYcXtffFA== X-Google-Smtp-Source: AGHT+IGYIx9qHgSp+qZcb6/qvb2+gwFM/rh4dYNGwKpwPu7lcZcsAaPnt+SRsdlsmCSE8/iIZIKG+A== X-Received: by 2002:a17:90b:3d85:b0:2ee:c4f2:a76d with SMTP id 98e67ed59e1d1-2fb63d33b30mr417216a91.21.1739290100762; Tue, 11 Feb 2025 08:08:20 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:20 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:24 +0800 Subject: [PATCH 03/10] drivers/perf: apple_m1: Support a per-implementation number of counters MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-3-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5023; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=tmdsy1Oiq7FNXqzIGpnSzLce1hbAiDf+aC6M6dPM320=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XnbAbnbjs0YuJEYMx1pG99Z7Cr2COlrwO3p sNCmoW2gYCJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JHV+EAC0De5KVfZwznUq4lQA29PrIK5zuWm90hiZxr7iiRwCDxlB99+q9Fsfsm2Xkb0ptgdCAl4 76YdTWOWLzQJvcvPYpKimJQR3F7K64bLuUhM8UfYMWGVkMo0ZSKfj0aqVUbCgVBWaZ4Wt0lfZKH K7a/1m6Mmnw2qyCfDL76l2soBsDfZ5OpvnGRPDsflRcDCKkOl2bjryydrzFx1WGXF8l7Uq9/iUF 6i1BjDsM2VqNz5KZnDf1EMjZImS/oBk9hUVwtJQzAWPYNjg12DrV+F33o4zdiVW+eyavODMvhgX U1kBKvQ79ncaYvSORpf6yEvk5EiXRKmzzlsF/L0WJP2iM20URftIMQte8fDUQqMO4obS4lAUIkW a00PAy3lHEa2iUSd5oPxu3QxhQ0+BO54dp8WpYZh/NfbwTUHXMGAA/CfEB6mXLv1aFCL3MqIeTT xLc82sYMOA4A7+mQtNLzgm1qay92AMtyEY7aBLmtQc06xRKweVaA7MuI1ciUKrK7o/ZdVFidfFk 4RelnmYLXzRGmXfDZl+l3PECz0AsC85ALX+nEX8MwhZmRt4pXgy7RmzH5xuEJQDffYlQIAmENFu GQBFSj3RcWvfPdPQW8Za80km9v8iFdLfbTFrKAqRC+qhH+lzH49Qwx55nSQqx8C0/mKPQsm3fJq XXHUb2IVowrlcTQ== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080821_726755_BAFAB87A X-CRM114-Status: GOOD ( 16.02 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Support a per-implementation number of counters to allow adding support for implementations with less counters. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 1bf7ce5c09846c699d66bdfcca129f418a9dad9e..ae91848bcd828be197fc21bb2195f3e2460edc65 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -19,6 +19,7 @@ #include #define M1_PMU_NR_COUNTERS 10 +#define APPLE_PMU_MAX_NR_COUNTERS 10 #define M1_PMU_CFG_EVENT GENMASK(7, 0) @@ -431,7 +432,7 @@ static irqreturn_t m1_pmu_handle_irq(struct arm_pmu *cpu_pmu) regs = get_irq_regs(); - for_each_set_bit(idx, cpu_pmu->cntr_mask, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, cpu_pmu->cntr_mask, APPLE_PMU_MAX_NR_COUNTERS) { struct perf_event *event = cpuc->events[idx]; struct perf_sample_data data; @@ -479,7 +480,7 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, * counting on the PMU at any given time, and by placing the * most constraining events first. */ - for_each_set_bit(idx, &affinity, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, &affinity, APPLE_PMU_MAX_NR_COUNTERS) { if (!test_and_set_bit(idx, cpuc->used_mask)) return idx; } @@ -554,13 +555,13 @@ static int m2_pmu_map_event(struct perf_event *event) return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } -static void m1_pmu_reset(void *info) +static void apple_pmu_reset_common(void *info, u32 counters) { int i; __m1_pmu_set_mode(PMCR0_IMODE_OFF); - for (i = 0; i < M1_PMU_NR_COUNTERS; i++) { + for (i = 0; i < counters; i++) { m1_pmu_disable_counter(i); m1_pmu_disable_counter_interrupt(i); m1_pmu_write_hw_counter(0, i); @@ -569,6 +570,11 @@ static void m1_pmu_reset(void *info) isb(); } +static void m1_pmu_reset(void *info) +{ + apple_pmu_reset_common(info, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_set_event_filter(struct hw_perf_event *event, struct perf_event_attr *attr) { @@ -588,7 +594,7 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags) +static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags, u32 counters) { cpu_pmu->handle_irq = m1_pmu_handle_irq; cpu_pmu->enable = m1_pmu_enable_event; @@ -598,10 +604,9 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags) cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; - cpu_pmu->reset = m1_pmu_reset; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; - bitmap_set(cpu_pmu->cntr_mask, 0, M1_PMU_NR_COUNTERS); + bitmap_set(cpu_pmu->cntr_mask, 0, counters); cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = &m1_pmu_format_attr_group; return 0; @@ -613,7 +618,8 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_icestorm_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; - return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); } static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) @@ -621,7 +627,8 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_firestorm_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; - return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); } static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) @@ -629,7 +636,8 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_avalanche_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; - return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT, M1_PMU_NR_COUNTERS); } static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) @@ -637,7 +645,8 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_blizzard_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; - return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT, M1_PMU_NR_COUNTERS); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Tue Feb 11 16:07:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970102 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81012C0219B for ; Tue, 11 Feb 2025 16:16:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=uEntLtHz4WyreVvdYG90vu3xiJUwTFLXejk99s9G7I8=; b=s2xyjSYeZ+bSsNpfz/mkiXPMn1 EcPkKC6jZDHAQ4qN+DtpENg6esEwahdjRdZSBmQ7lGKqjzBecr2/rrjMkyG/A3Omg49BJijy6M6fw XbKuXYwo5Ql4EVrY8jyWVAmGjkrzE6RkQbavmdMXDiSh1reyyYy76EuEn8M8E/Jdj2L9zbtn77MbN gn3je1zo3NFBUA5VD6qkbH0DODXWJKthNjOixd2/Cxb0bQa9oXbx0oHs2CiQA2YttFZkCDfuB/fSe yQbWB4LutxtKRhiiYAodegaB1PzLnn3D4o1iWZt3rwx4IdlOdMBePDg1QhYf4IC1yxkzhYri0Zl5Q 7Xt99MYA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thsvt-00000004T0P-45PG; Tue, 11 Feb 2025 16:16:21 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoC-00000004QRk-2kmX for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:25 +0000 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2fa3e20952fso7081172a91.1 for ; Tue, 11 Feb 2025 08:08:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290104; x=1739894904; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=uEntLtHz4WyreVvdYG90vu3xiJUwTFLXejk99s9G7I8=; b=ajtBdjo62uJiGyZ20EveG/ZS8grY3Ff1BxvSh4VArjGfPDh85Gl6TPDUG+CH4KRi1R a2UKal1XAZWZjbLtcI/VZMb2oRC4U3OrC3h7FyuqMSMi5PwCnenVNyzOI0s+I7W5/2Sq QS9racwEZtkWQTpJNj62qMbSiHhiwxnfQf6lHXGd7E7ani6ZvjprzCJmCInqkIjvEt0w LJdnpirsYLGtQBx2pNOMUij+YBcTAGAFp2PdTh8codC7ks5HhPJfDH4bwktoGpWutW3n DrfsHz5mS1hn7h4Ul2xPKR4i6R+UHO6YiZX03VEvVR8bcH48FaGCxaFR1EUnsyePvsdk ZTQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290104; x=1739894904; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uEntLtHz4WyreVvdYG90vu3xiJUwTFLXejk99s9G7I8=; b=jqHhNT2k4FELqgBrZqu71PoWSIT7boSu3rz7J/gVaoxLD/BNVk1yK2lGuctHkspDjH 8CDKVS+g+hASKviabOrtuL0VEtEf8r6KVGQsms8n6WxTUwKG9I2CZ4XtTVHAEhssOiNu J5l0+ORdorbi6LIeF0aunzhhbt9F6X7MHLaeRlzyyOh39LUKoLEU0XRGo3oOzS6Da7vC jkpkNLecOWpfoOR128ZW4JuALvm6+iewcxAzO9J9xdrRTcpjqfH6IxyW3ZuXb9paEprJ crFIHdq6wHrM1QM4U9qrBm8BMQLyT/nsX0REoyUhgzAaMRknEe3JZyCfP+8/r9uhysoJ +ZRQ== X-Forwarded-Encrypted: i=1; AJvYcCXmrCX8oAlvMrqWViuQLJfE2y73QbBLbhHodY0E5CVMUp2wjTAt3QVTnd3zqMH1i/z6aIHAKVHCmgGE96T8jUcd@lists.infradead.org X-Gm-Message-State: AOJu0Yw6O5Xgu2N9Jxic7eC8BD/MqpIoufVyZiEbVSrZYLBXFC2c9N70 YbMPf8R91mEnoqrH8Ugg31GZvWCL2fsqUeNAu9wSgqkFmaU0pK8y X-Gm-Gg: ASbGncv/wVcVkBOnxWB8HiK4czGFJer+glU4SkXIP+Ksy0hcBlETsLAnMrtaWhUleDu /GODtUJanuZxS0/POxefqYk9xIUcj7iIdqBpzl+KTzn0pB50rIkZrDcGdZSXYDsh+5wtwtsl2FG lSIpSq5D9jgVc+zg4X633AKzXb2G4fyiocA5vQg8r4QTrR5bj70Pq1JHOZ/Vp4CRCZj2E2AHAEd TulWtZ75WEUrD+Pe+DSjN3r25xK4WZ8/bebWg04wEo6HJ5SsBjR+Ux9ohFROdAkBZjKUBmOrzWp JHkdEvpiXB8J8DLI3Q== X-Google-Smtp-Source: AGHT+IEMlQ8kqWyBtETjcYInexsO3wrAznZUhzIxMTN/xckLpbtrZpA4GAT8HBvg6O+adCuJbKKOBA== X-Received: by 2002:a17:90b:1e4e:b0:2ee:45fd:34f2 with SMTP id 98e67ed59e1d1-2fa23f565d8mr23851683a91.6.1739290104015; Tue, 11 Feb 2025 08:08:24 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:23 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:25 +0800 Subject: [PATCH 04/10] drivers/perf: apple_m1: Support configuring counters for 32-bit EL0 MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-4-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1826; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=gQs9caovUGQok2nCifAixdGJFEgkZT2VLjuftKNGAZk=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XnrvthgwukKuQgQqkT+wKNLkCh7f6Uj8zfB 3RsovLrxOSJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JJcDD/9Xa3lG9+foU72POXq17q9s3tzKS7KN12596keegPogu+bO2b/Hxb/kdQUrKeU2Cid3aWM QDJ7quwXGR8GjRg/3YQqvhZPjOIzqknyV5sD7UJsR5IFEtVYX/TkVZOEnyNVRT8QKiqT90CBlT9 WyVpnSymp04tTfQUR+7Af9p3T6pfIJHFoUQeqq7+eaCNRziy9WH5wcaPpgvaGm3GpnGuhye8nB8 uIzx4rEnbHXIdC15u6zs/GXkMJT8J6HRUwmS7UUL9VjS3VxGSSu/bi99MsU/ksd7Qyy6Y0ImnNq 3eOHrZaEy1NvtZfGh9R05MLvj2hq+RY8pMO2x/od/HvyN+9XvZ+Aoy1HVaHCS2c8l7lBRAaDVo6 z/sdKOrFSdaWkLkO27gb9eb5xzXt1LPTLyCBxBwRE+m78V7ncXWlhfgXtQ7XO67ZNIYKAhJpZr/ 8cJtR0oEr+Md874UgXV4rCeeoHvF7nu3405cKLidESyW5XW3/HNuLnaPzHNwsnUeg6zkicA5xbD LeenyCVjjkudXVnenBL7HuL2df34xtCuLxVLG+cUUWfgyDf0GfYbZAhQQpbJcDgrDDnzXA9tpl+ 0rfTDIIYo7lz8SNfMXpWn/F9mkJbPTMTCc96K4gYM+mXqPDSo7vdSIXA4FV/Z7sBHrVeqqZAyuA kBY4khho2yLIlPA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080824_698343_5005227E X-CRM114-Status: GOOD ( 12.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for configuring counters for 32-bit EL0 to allow adding support for implementations with 32-bit EL0. For documentation purposes, also add the bitmask for configuring counters for 64-bit EL3. Signed-off-by: Nick Chan --- arch/arm64/include/asm/apple_m1_pmu.h | 2 ++ drivers/perf/apple_m1_cpu_pmu.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/arch/arm64/include/asm/apple_m1_pmu.h b/arch/arm64/include/asm/apple_m1_pmu.h index 99483b19b99fca38483faad443ad4bcf4b85ef63..835d602a9a33fc812982839799c0bbabef656078 100644 --- a/arch/arm64/include/asm/apple_m1_pmu.h +++ b/arch/arm64/include/asm/apple_m1_pmu.h @@ -37,8 +37,10 @@ #define PMCR0_PMI_ENABLE_8_9 GENMASK(45, 44) #define SYS_IMP_APL_PMCR1_EL1 sys_reg(3, 1, 15, 1, 0) +#define PMCR1_COUNT_A32_EL0_0_7 GENMASK(7, 0) #define PMCR1_COUNT_A64_EL0_0_7 GENMASK(15, 8) #define PMCR1_COUNT_A64_EL1_0_7 GENMASK(23, 16) +#define PMCR1_COUNT_A64_EL3_0_7 GENMASK(31, 24) #define PMCR1_COUNT_A64_EL0_8_9 GENMASK(41, 40) #define PMCR1_COUNT_A64_EL1_8_9 GENMASK(49, 48) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index ae91848bcd828be197fc21bb2195f3e2460edc65..06ae20332e79f7dfa819f764a3752fefe53bf5b8 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -335,6 +335,9 @@ static void m1_pmu_configure_counter(unsigned int index, u8 event, case 0 ... 7: user_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL0_0_7)); kernel_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL1_0_7)); + + if (system_supports_32bit_el0()) + user_bit |= BIT(get_bit_offset(index, PMCR1_COUNT_A32_EL0_0_7)); break; case 8 ... 9: user_bit = BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL0_8_9)); From patchwork Tue Feb 11 16:07:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970103 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 27344C0219B for ; Tue, 11 Feb 2025 16:18:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=o/bCCPIxn4KDDZBLFDUwD7PiQhomaVfOF5iK7lDsvVw=; b=oUAK7B0VnlHlh6Ue+IyiJxVpPe ZTYKhAJebcGcxTkrn6EXRFYVDK+x9FRT+5zMOnR4zhxbsD38g4qq1y27t4Yt6EKzS1CMRMD4FO428 HSWjhtFZ43ddzvNrw2UpqyhZNyTomqiPwrt32341Hw0Ijf5KNMvHVzErGvctL7fGfKdXWWQ+4PxLn 5CGLuyLU9OLp09FN1LxY5twdybnhu2vuUsQenp/OioeUXlZ6KRBLEhyx4b8aIU7UHmhi90txLhCgZ ceYni9eFZOAaZMKLGl75pGadkCWQEE3DrID69x3ssE11mSdENwtqJPtDCA2G5iD/ZXGQ6CsVAz0QT ofVdv5aA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thsxH-00000004THN-2iTo; Tue, 11 Feb 2025 16:17:47 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoF-00000004QSG-30SX for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:28 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2f9d627b5fbso10897713a91.2 for ; Tue, 11 Feb 2025 08:08:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290107; x=1739894907; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=o/bCCPIxn4KDDZBLFDUwD7PiQhomaVfOF5iK7lDsvVw=; b=mkbt3BG3TD7CpQ1Ah2gfER/56S40ykYOSHFUXnixHTiMklS9NA1RWBmJ2OD1YFdHTJ jUmwAH9OAsE+G9T+TGOj5uF/aG5D1Xn6nvtOvZFkpXGVrSD7TKM8WtQIQaNTuPvgSll4 tmgTAgP2IKXgaZz/EJ9AclFwEwttBaUTGoPAVxjBT50+Se0dwIRCK5+jTopUFKc96HzA oYHxe0xWz9xxYDTateAeIWRICVotv9HLdeGODbCL1n6ZJQKwZz1NseLbb97/o69m6nz9 OVluA3pPBrGm0x/Aib5TJXSsYwWiF2PMltZM/u/SxJGX3XEUeeXcRuKkEG/w2Zogg2tr dGCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290107; x=1739894907; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o/bCCPIxn4KDDZBLFDUwD7PiQhomaVfOF5iK7lDsvVw=; b=NWMWNsd5C1NGyweMKOSZlXlSwZjZK1AkOH4nyFI9shMjxTXO8qJCxSAkmox/ZIwG/B //YMes23q/57iD5F9gGuVmz4g1CB1mPxH8Uep0gg3xLZ3TtHvEW2q0hrfzP8jXki01wY PBIrQBDYSVI2KGwc3AvXkIPciDytfNeEAANX98mKHktfQ8nwyPWeMDkTV7WerNh5pCw7 UQrNHa8r9Bmk2iugk4s4yzmwqGQNrhCO3L7lnYd4/7KdOleBVKkMLwn8PhB9AJsIcKRf QOJBbtb4Wvu+PYL6wr/vZA2z3VjubDigMZ+PuMSwWnnAc3/K8K1cODxnZM/4bN1BuC6G Vv/w== X-Forwarded-Encrypted: i=1; AJvYcCUrFGfwwMsAA/0P2HXdNb2XR/1okQ1gjrHiKxFoSjhekB0pQQKa6TMeGcYqOzZkoVP7UEEqybjP3P2FceMgRpDR@lists.infradead.org X-Gm-Message-State: AOJu0Ywqfx4j7M14KHkUNK40Vu4j87urqs9zWLOr6GjHSfB/OvVm9JyO PvKCPHX5r06i4yZHSY/RX2E0q8wwyta/l0g4spta1PIPKBSjmUEA X-Gm-Gg: ASbGncta/3FZqFq8ScyHvn9rypdBMIaZsj0js8143XE/D7li72a8xO1znpR8sGiqlZh esLe9sQ9wKUDR+T/GgIyyz8IpL/8ipi1ta0mUKZ56JyhN9g02FmCcqOZHWBAwyKngNAFIj2levQ uJFZvKs6AFEXWQXrKPxqD+h+ksen2jVVSJOUC6bQqKIlG+sc8XjoTPXtxKsQDr1pJ+oLpLk/HhA k4fuvrtntwICXxgwttzWwvU54geuH/d96C6maxy7kgAGMtJntoE9d2cd8fR/mNyql+axf5WLRGN fhY+xpQ8TvCDolUcyg== X-Google-Smtp-Source: AGHT+IFDoBSLFXS8fc2oKxZ7u11430kH7lpuCMLsImbDx0eDbX0du8ImVtICDjL3/vMG4Cm2HPnt/g== X-Received: by 2002:a17:90b:3647:b0:2ee:74a1:fba2 with SMTP id 98e67ed59e1d1-2fa241776aemr27656016a91.20.1739290107060; Tue, 11 Feb 2025 08:08:27 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:26 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:26 +0800 Subject: [PATCH 05/10] drivers/perf: apple_m1: Support per-implementation PMU start MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-5-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2292; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=/xQSzk950FCuvtHGQpngGIk6ngOfd9HdKv/UR2YVLS8=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3Xn9nZDkPLT0KDldq05E5uglg+bM8uK4wN4T UIOBBR4oGeJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JF7FD/4wv/qAAOyZdCHLlU2G+92h/urYiFuL3iJJOQ5sxB/pz44kEDVs9qEL4Dy9QvoUYnldG1P tauf+aYAe4YLqfeicHvZNYljYUcvTQmpbTjfPTTr9gkAweHEiRJDKXszaioauKZyLGn8Iy24Ss2 gjEbPZRw+eoaO7K1PtTKXzK4vczJuV71a5Kd/uscSzJbrqV80sBTv4frJkuxcdU3KcxjbwuTeIv jkJibsOCUPhIdRew5KVoeFtnAaerGdGTwK6hm384aRdHT336p+hEO+6k8RacaCZLxfNLRMEPXDN tl4f54G93X4MJrUzMMt5dPh4JH/A+PQ2ADKJtWnKdzYFF7GWRkM7tQYkEBaXYMpxfshBDDJjZmp EKdvD2Heb/qqF2ivHp5tRPG48BV3ivXH7ZaETcDeNzetX6VaIVwPMv35jw9fVrRrZsMIgv+MLxU QNVyB/+dOjnJ59Oof+9Z/E0pgT7N90MpS/pG18fP7EiBSFJ74BUP14cISabTNY60rpcdLR9D41O 5UHtNR7WzCyzCvmDKMr6mH4q7lMf6djqpIjEWVp5qUaX0pHnKolIcTygmzd8GvQrdlQwtvuY238 uG8nIgpQJ/ygvxt/A+vWw7LR8S1YNrnxPatPvi5vHWjEF39RULSbcqvhBmzMfpEHVYSpRH2cNi2 9oFASIjH+CeKwLg== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080827_758611_7DCC810A X-CRM114-Status: GOOD ( 11.88 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Support for implementations that deliver its interrupts in ways other than FIQ will be added, which requires a per-implementation start function. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 06ae20332e79f7dfa819f764a3752fefe53bf5b8..39fcdcdb9e5dd6d4edad0a182dbc2eef62780d8c 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -605,7 +605,6 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags, u32 counter cpu_pmu->read_counter = m1_pmu_read_counter; cpu_pmu->write_counter = m1_pmu_write_counter; cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; - cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; @@ -622,6 +621,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); } @@ -631,6 +631,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); } @@ -640,6 +641,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT, M1_PMU_NR_COUNTERS); } @@ -649,6 +651,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_63BIT, M1_PMU_NR_COUNTERS); } From patchwork Tue Feb 11 16:07:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970104 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7427EC0219B for ; Tue, 11 Feb 2025 16:19:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9KGE9UU8LWLAuGZMOil2Ew8KWbJ7U0vW14KkPC/rMug=; b=yQrmDO6DU+/z97QsPYCYjPT1TF LjAVcdXvebdF6Frrkyv6oJ+2hzDu23BIoRYx57FbSugt08m9iiQpAHvok461ZTl4t4r+9x5bnBw9i jvUuNymVMv/2zfvPgL3uUq8nlxvY44Tvp2z2lztyabRCHV4zbG19POQts7sSNn0Gc79ooazKLFSy3 VQw7RQoPsVxiFaOB3uzlbV8KlD2BrvQRGyRydzlWF+Zc+AMYwozbG5f++K1jB6cSihdrz5SJxfG0W I9eWfKY2monZHgXPArY8VbptpkACx8mo1O3cd7QDEXt5Pu7yQeAn+tAfS0t25VKvJwtvMHMqSJ0K1 Dfk81xWQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thsyf-00000004TbU-1AKi; Tue, 11 Feb 2025 16:19:13 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoJ-00000004QT7-0oeG for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:32 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2fa5af6d743so4458896a91.3 for ; Tue, 11 Feb 2025 08:08:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290110; x=1739894910; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9KGE9UU8LWLAuGZMOil2Ew8KWbJ7U0vW14KkPC/rMug=; b=XBLJnhnR50aTO1JQxJBiAqVt1ngOi5scBH1pVLTQsewsEXMTLvZWB7h2vfa6ZRgfsy bGo0U3fUhqwlvPM4AWf99mGyz04eu5EiXDuFYhP6M4Ex7RIVJOlS3Q6PUE+IQjtowzDS b/dnP74FMszs2PyUBrCpqXQLwY+wKOwubda2B8DNP1BUFax4Q/lixskugAzCQHAQdHjv Wn7KUyboS2GPaDyxINUyM7pQ5LjuVd4NGtS3BRs9R1lTaBERkYmgMjUJPJc1f6VsA98k gEwarKFrmtNflgyqcgGp9pjiQ97BTXfg6euGGC+qtk5+X64ZH1rPUnc9hujhj+X6X229 2aWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290110; x=1739894910; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9KGE9UU8LWLAuGZMOil2Ew8KWbJ7U0vW14KkPC/rMug=; b=U7gF9ag4769S9U1WFfjp/SE2E3P8/p7u8lacK0QRSP6BF//evL/aSpK5Aum4eTWG7x SyiVUyLyWS7OHD/nbVGtmIsKluPv0oQx7XXeeodNr+wJUC9H2CBqXopcrHGjfT37Gm4X qtzmQpcY4tNekgHy5eIOoNBpBhfQM8BJdinySbXNMgKqkZ4dUbDveU27DAdfFjhSflK6 74u5ApWj/grX6pTD4aQuA7HVMtWv0hS+haEnquOvzwFizgZDommH3r3Kdy+niepLC/IF e8pHzon2o9d+B+rUCbFotE/S5cXMdTb0zwSIR5G++dmLqIgSfWZ1hIsYUfB2BLf3wBCp xzwQ== X-Forwarded-Encrypted: i=1; AJvYcCV4Iz1FDtuPRKDj/iIhSYA/4Ofw+VTeDQlyt5SgTNHnBFuX3l91OJ7oyPWGRyyVI0AbT8Kp4+r3MQGr3+efBwgA@lists.infradead.org X-Gm-Message-State: AOJu0Yy09ZXZtp3EWqy3gL+vJcR3Fb1gIJ2yuDknJck03VADovsHd9dJ smQcMIk8Ec4gGOnT8dbZu/i47uUHAc/4PCuQB4/822Bf5FTN4Fdr+E4Nig== X-Gm-Gg: ASbGnctehlp7L5U6bPInbnO6CglBTbAyatmbpJTk1BG5kIaOLXUmb025ZDTLlFsTdOI /IUgB5yii9tRYPG8heX4SGv2l8JlbNH6vv12jEA2k6XPUnSnA6OHOZzchqPGpFWYHFcF0qoX7Pz r11cnjGdDmPrTJYRGV485qsEkhzFW9nhzN1wbnDD4vJs58L7nP1fZxm2puiCcduEWGRIcKZBpag SGEDX1zwwMPdHs1nJi5/e+KWfwIxLwaie6CRTsXX1gnkLo0beX+uwj/osTrkuja2mAreUSm+tFD ExiCaJUHrfMkHJOYhw== X-Google-Smtp-Source: AGHT+IGSeMLr4j5Q5It5SPPlJYnO7UKpX+ZxPMED2e1hExc6Ai2Yp/buYksXrdtRPVj4/gwGNWKUIw== X-Received: by 2002:a17:90b:3596:b0:2ee:bf84:4fe8 with SMTP id 98e67ed59e1d1-2fa243eaa37mr24647103a91.30.1739290110174; Tue, 11 Feb 2025 08:08:30 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:29 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:27 +0800 Subject: [PATCH 06/10] drivers/perf: apple_m1: Add Apple A7 support MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-6-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=10345; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=FKoxFceE3ZzHF8kIrLmEjk0eExaHdGdlMF986JmIDvE=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XnKTu5tQNXWH/N0WtZ8U+XKDsnNDKVTIU1Y Z9M/WPTG8KJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JH+GD/9jIDY62YdrZmUxXIluB8bDw6BOJhDnV0hO5jwZ6/S/Rsoksn1KXKwZHoMhtChlLSCcu1B 5e7ZJCWo0pYbWYWMgAFDE71pZYLjJTY00z+FIoLcB9UAm7+qH+E26s2Q0dpoeh2D+8/4Zt0tTle 9XrcxZHe60msHZdRRKl2Pv7SfV8C0PjarmqhU9RIdH47zEMmEBEjyMUy8ogqW84l0w+7L4IGghD qTwJbzkEP5cJ/+2ma62THurkJ0hCquJTNHK/VlvnxVJPWlNeb6PtbiBw32jNRmVjGOvbqH8b3YU FUzDrmzMpykjlZA/x+fC0Eo+7NDdLnNWVyGDRMdejKFDNHZ2wN9F3OQnTJKI2DD5JZaDhu5qv9S +fpwVPOYTFmhCz2dHoTpJOgBNq8QGpfcnBlwSCftVUd8PhMi9Arwdq+Fc9QE7Ms+OJsZtWuYuOf zBgv4cuuZm6BJm/PDsRwM+8iPZJAvA8c90cN+zkFA8Z+fXXAH5j4kfaB7IHImZkIvZ37bDJs2+c tNCvU2nttaD8zT67zwR9QcNhgYxpQ1rTB0HFeq4eJ8tD8ghCEP7dcmtWpC0bEgN1TVI8ib2OGAu hnHdrOoqI8AD9p5MTIEfViu+GeGXtNEj04kE4us1lWO8AHUG+uSwDNh5uGWPawiHOWQVWlf66Ck ZcDgRUfVK7e/Ibw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080831_240861_0743E90C X-CRM114-Status: GOOD ( 16.85 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A7 SoC. The PMU has 8 counters and a very different event layout compared to the M1 PMU. Interrupts are delivered as IRQs instead of FIQs like on the M1. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 178 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 39fcdcdb9e5dd6d4edad0a182dbc2eef62780d8c..a4f04e4647e5f554984dc219473afb837b81e6cd 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -18,6 +18,7 @@ #include #include +#define A7_PMU_NR_COUNTERS 8 #define M1_PMU_NR_COUNTERS 10 #define APPLE_PMU_MAX_NR_COUNTERS 10 @@ -44,6 +45,143 @@ * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. */ + +enum a7_pmu_events { + A7_PMU_PERFCTR_INST_ALL = 0x0, + A7_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A7_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0x10, + A7_PMU_PERFCTR_L2_TLB_MISS_DATA = 0x11, + A7_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x19, + A7_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x20, + A7_PMU_PERFCTR_L2C_AGENT_LD = 0x22, + A7_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x23, + A7_PMU_PERFCTR_L2C_AGENT_ST = 0x24, + A7_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x25, + A7_PMU_PERFCTR_SCHEDULE_UOP = 0x58, + A7_PMU_PERFCTR_MAP_REWIND = 0x61, + A7_PMU_PERFCTR_MAP_STALL = 0x62, + A7_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x6e, + A7_PMU_PERFCTR_INST_A32 = 0x78, + A7_PMU_PERFCTR_INST_T32 = 0x79, + A7_PMU_PERFCTR_INST_A64 = 0x7a, + A7_PMU_PERFCTR_INST_BRANCH = 0x7b, + A7_PMU_PERFCTR_INST_BRANCH_CALL = 0x7c, + A7_PMU_PERFCTR_INST_BRANCH_RET = 0x7d, + A7_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x7e, + A7_PMU_PERFCTR_INST_BRANCH_INDIR = 0x81, + A7_PMU_PERFCTR_INST_BRANCH_COND = 0x82, + A7_PMU_PERFCTR_INST_INT_LD = 0x83, + A7_PMU_PERFCTR_INST_INT_ST = 0x84, + A7_PMU_PERFCTR_INST_INT_ALU = 0x85, + A7_PMU_PERFCTR_INST_SIMD_LD = 0x86, + A7_PMU_PERFCTR_INST_SIMD_ST = 0x87, + A7_PMU_PERFCTR_INST_SIMD_ALU = 0x88, + A7_PMU_PERFCTR_INST_LDST = 0x89, + A7_PMU_PERFCTR_UNKNOWN_8d = 0x8d, + A7_PMU_PERFCTR_UNKNOWN_8e = 0x8e, + A7_PMU_PERFCTR_UNKNOWN_8f = 0x8f, + A7_PMU_PERFCTR_UNKNOWN_90 = 0x90, + A7_PMU_PERFCTR_UNKNOWN_93 = 0x93, + A7_PMU_PERFCTR_UNKNOWN_94 = 0x94, + A7_PMU_PERFCTR_UNKNOWN_95 = 0x95, + A7_PMU_PERFCTR_L1D_TLB_ACCESS = 0x96, + A7_PMU_PERFCTR_L1D_TLB_MISS = 0x97, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0x98, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0x99, + A7_PMU_PERFCTR_UNKNOWN_9b = 0x9b, + A7_PMU_PERFCTR_LD_UNIT_UOP = 0x9c, + A7_PMU_PERFCTR_ST_UNIT_UOP = 0x9d, + A7_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0x9e, + A7_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A7_PMU_PERFCTR_LDST_X64_UOP = 0xa7, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xb4, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xb5, + A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xb6, + A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xb9, + A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xba, + A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xbb, + A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xbd, + A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xbf, + A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xc0, + A7_PMU_PERFCTR_UNKNOWN_c1 = 0xc1, + A7_PMU_PERFCTR_UNKNOWN_c4 = 0xc4, + A7_PMU_PERFCTR_UNKNOWN_c5 = 0xc5, + A7_PMU_PERFCTR_UNKNOWN_c6 = 0xc6, + A7_PMU_PERFCTR_UNKNOWN_c8 = 0xc8, + A7_PMU_PERFCTR_UNKNOWN_ca = 0xca, + A7_PMU_PERFCTR_UNKNOWN_cb = 0xcb, + A7_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xce, + A7_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xcf, + A7_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A7_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A7_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A7_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A7_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A7_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A7_PMU_CFG_COUNT_USER = BIT(8), + A7_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { + [0 ... A7_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A7_PMU_PERFCTR_INST_ALL] = ANY_BUT_0_1 | BIT(1), + [A7_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A7_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_A64] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8d] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8e] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_90] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_93] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_94] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_95] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9b] = ONLY_5_6_7, + [A7_PMU_PERFCTR_LD_UNIT_UOP] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c4] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c5] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c6] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c8] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_ca] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_cb] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -162,6 +300,14 @@ static const u16 m1_pmu_event_affinity[M1_PMU_PERFCTR_LAST + 1] = { [M1_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +static const unsigned int a7_pmu_perf_map[PERF_COUNT_HW_MAX] = { + PERF_MAP_ALL_UNSUPPORTED, + [PERF_COUNT_HW_CPU_CYCLES] = A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE, + [PERF_COUNT_HW_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_ALL, + [PERF_COUNT_HW_BRANCH_MISSES] = A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC, + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_BRANCH +}; + static const unsigned m1_pmu_perf_map[PERF_COUNT_HW_MAX] = { PERF_MAP_ALL_UNSUPPORTED, [PERF_COUNT_HW_CPU_CYCLES] = M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE, @@ -491,6 +637,12 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -514,6 +666,11 @@ static void __m1_pmu_set_mode(u8 mode) isb(); } +static void a7_pmu_start(struct arm_pmu *cpu_pmu) +{ + __m1_pmu_set_mode(PMCR0_IMODE_AIC); +} + static void m1_pmu_start(struct arm_pmu *cpu_pmu) { __m1_pmu_set_mode(PMCR0_IMODE_FIQ); @@ -548,6 +705,11 @@ static int apple_pmu_map_event_63(struct perf_event *event, return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } +static int a7_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &a7_pmu_perf_map); +} + static int m1_pmu_map_event(struct perf_event *event) { return apple_pmu_map_event_47(event, &m1_pmu_perf_map); @@ -573,6 +735,11 @@ static void apple_pmu_reset_common(void *info, u32 counters) isb(); } +static void a7_pmu_reset(void *info) +{ + apple_pmu_reset_common(info, A7_PMU_NR_COUNTERS); +} + static void m1_pmu_reset(void *info) { apple_pmu_reset_common(info, M1_PMU_NR_COUNTERS); @@ -615,6 +782,16 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 flags, u32 counter } /* Device driver gunk */ +static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_cyclone_pmu"; + cpu_pmu->get_event_idx = a7_pmu_get_event_idx; + cpu_pmu->map_event = a7_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -660,6 +837,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; MODULE_DEVICE_TABLE(of, m1_pmu_of_device_ids); From patchwork Tue Feb 11 16:07:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970105 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 470EAC0219B for ; Tue, 11 Feb 2025 16:20:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=1Dl2n6AN12/YUm/7LNgqtmWXmHek9Kpp3INfHpWYEAI=; b=dzY0WmdgeCn04VAA3jUDn8UTE0 Q4ueSDFpnNLPhnMslMsbIbdRC1ZFhPo13tUIpkq5pTP4X9xuvqM4rygI1y3GCRb7uN7BHm/+3BppG klatcuB4TcgqlQrIewXq9WpvCvTKZYTgaAipu7/L8MdEzZ3RuGhec499WpPHsDQGxLAiZtoMJhBad 41a6u7Gr7TIZLPXakzP93iN1/9wP8+6jLNqsoLvgnYCsqsrXMbxL5k5X/qjLxURSgtjIaELmyroFK lqvbjFZ/OuM2RtEvf0svIwTqCFU9Hdp6BsYzW6576QZdEYholJJFyRusm8EwKbgVYiNlbvWzfRqY6 HaXOqIug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tht03-00000004Try-064M; Tue, 11 Feb 2025 16:20:39 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoM-00000004QUF-17ES for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:35 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2f9d3d0f55dso8877076a91.1 for ; Tue, 11 Feb 2025 08:08:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290113; x=1739894913; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1Dl2n6AN12/YUm/7LNgqtmWXmHek9Kpp3INfHpWYEAI=; b=E6JuWw9s2oHrgU186TJWNcdzhx10ITndeRHCBcfCXNePXNN3ObJZkZrjqDCe4RXu2W Lld16oYNsQhTKR7OwpE8jFqDKKio7jxYu9mVrZEESg2tocqF1YEDwXU+MQx3IVWLL6RQ imA6qZHpsM7UCpgU3AEaYcxbS1UhKJRzYt0cCgEeQbD+KyiqtlFU6Va1i9Zis5yHWRck CMbHJiDPsJ0gv/aGwYX7uZYewVRkUUqAwG5rShH/JTIneCtdKIP0v9G1aFWEVA73CyF+ S90GjeWWg+z7cBaMPy/W9kpXuhGHmZp0uqIm47dTKZ+OhrJ97i3nm7Wr9fAt9d7TBqa+ B8yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290113; x=1739894913; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1Dl2n6AN12/YUm/7LNgqtmWXmHek9Kpp3INfHpWYEAI=; b=iQgWk9jIngx4kH5gFOYizDiOPvEotIGJH0myMOLU9U2WKuxfMTlyZW3cCLKF1AYcyc azGEkx0fp6Zhn2gTS16CG8ch4851ius618iVpdvwhXXFGKcPQTWig6T+h8fgMOfghtyI IxToDl06Jw3HdbVr962R8NBn3bsv2iXl6PbEYy4xyJp+bMj5JElYX/F0aWoa+dzZeAYX hxyZnoIZy9WYAjuu57/j0dUFs8wk9PJZD9DuwU/+ahfXnd92UvFAPmjBq78OZ+4Nff0T 853bjzxhbcSlIypam4d2lz9ZDmX3sJ39Z2WWuL16nHJLOpiXY+5PD4UH3dCpvO+ZZZls ZJIg== X-Forwarded-Encrypted: i=1; AJvYcCXgum1IXTVGJrAe5f0n3Z/yJTObAzuVHOFIoiTG0W2hTEfU8k+fiDSO9VgD96G5RjEnXQmByN2J8glcLSwZiwNy@lists.infradead.org X-Gm-Message-State: AOJu0YyzAkflICQcFIF9W1xqF/Na5USUjoUBsy7C2BxkHDvqfCVAHRHJ RoCC+g/ki0e+b2wfs/cwihHHv1qL2y4jBVQdPQgN5l9ZPOUOaMOi X-Gm-Gg: ASbGncsesekYjdW5679NGji4avAegEQtb96P1/pSy6mUPKQKfdk30ov5wJywqu0ctAp SG5oscHhHjUkEqmLMvpyIg4WMBh+2KrM00CBpt5oujPUWuWx5XlZqzq5zKJV6pLigHpnlVsQOR/ FlGsFr5S1wsoj476iXOcGQhPipRp4h+hbeK75kQfZ33ny+OCa25Cz3mhWMkrzJPGYw+SXXRDuoK Sz+wqntpr0SkCDKsahGQK2g2vXfcH9BWz8wdAtFEkCNfKNQrkDT4Ca0vtqWX3Rdsxn7NQzJUjrr x+LhEIQs1bTNKvTaRw== X-Google-Smtp-Source: AGHT+IFDGZ/Bx9q7X3jCnm8fIUcT9G/3gb+ZXY2eRiFlETWVFMsxD3mcOsNA/DA54Zf7lGCxm0sMTg== X-Received: by 2002:a17:90a:f497:b0:2ee:d7d3:3019 with SMTP id 98e67ed59e1d1-2fa24063f89mr32162513a91.12.1739290113296; Tue, 11 Feb 2025 08:08:33 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:32 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:28 +0800 Subject: [PATCH 07/10] drivers/perf: apple_m1: Add Apple A8/A8X support MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-7-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7283; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=vxKtbeDMRmIy8scNUcIryhiSkCBNLCQvbpOGN3JABho=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3Xn3CNSFZKaWSmqOGm0xBZ63F3gY95gkZdnb zR/+yZN6t+JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JNs2D/4yzcU71+IRjQTqcnRVQuJenaIrIfheNGOp/U0QT2bGLpq06VhGTNYxD4WzTfnfn2niJyx U3bqHHoCZTS4srDSeBivYKeQW4MA5IH+WnVm0ZUEVIRGfRagN6FGJs+9mnaAjjEE74KAIEm5vhH 3CTiET/AzLIbQgAv4boRs3L+xijBn3kuRgdVCKznoOqCsxO/9bSkuwgP+dT5wBWlFbRP6f4Aoa2 j2zBdPe+08OsnCLPe2AoIFzaLqtEAY8iJNXbRuPD0uYX+nfwLnKLb0ZFoJR64/EYmzxaj0w2qZq /RmiwSoyZ9o6fsFgfTmGSFhKekSpA4hY9p8MlylZnK1JnEa7bfRYmOQaFfyH4bHievHQT713mHQ ZUa330CVXbvh20JO/uSclmO7ANLF6u+I0jus2KBWJwNbYbVM4ilpIjXDz70KIkTRjcr8haSMxdn cKC19+3ZMJdUrAbing4KbtZhbPyGK7x7MfGrjR0SRCH7AVNHyX4e9BcFNKavCBDfamYTMdDNt5L v18deNwoDZDZ8n5hPZtXpkipr58rFiBrPBaClHLKsaRKzDFdWDolMM6bHCpSBER9OHRcUZWQjVt OLYJDBIFKgzCdoU3kDiPdO7zNINfE/smmurRGB/GmEZSAgEV59piM9s0ZIC6Agl57dXcUHYYESa EC+jlM2MkpXKPvw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080834_308385_1AF1A115 X-CRM114-Status: GOOD ( 14.23 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found on the Apple A8, A8X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 123 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index a4f04e4647e5f554984dc219473afb837b81e6cd..0adad923d50f05db1f977342c66f2b70d5e0de9a 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -27,6 +27,7 @@ #define ANY_BUT_0_1 GENMASK(9, 2) #define ONLY_2_TO_7 GENMASK(7, 2) #define ONLY_2_4_6 (BIT(2) | BIT(4) | BIT(6)) +#define ONLY_3_5_7 (BIT(3) | BIT(5) | BIT(7)) #define ONLY_5_6_7 (BIT(5) | BIT(6) | BIT(7)) /* @@ -182,6 +183,111 @@ static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a8_pmu_events { + A8_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A8_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A8_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A8_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x13, + A8_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x14, + A8_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A8_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A8_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A8_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A8_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A8_PMU_PERFCTR_MAP_REWIND = 0x75, + A8_PMU_PERFCTR_MAP_STALL = 0x76, + A8_PMU_PERFCTR_MAP_INT_UOP = 0x7b, + A8_PMU_PERFCTR_MAP_LDST_UOP = 0x7c, + A8_PMU_PERFCTR_MAP_SIMD_UOP = 0x7d, + A8_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A8_PMU_PERFCTR_INST_A32 = 0x8a, + A8_PMU_PERFCTR_INST_T32 = 0x8b, + A8_PMU_PERFCTR_INST_ALL = 0x8c, + A8_PMU_PERFCTR_INST_BRANCH = 0x8d, + A8_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A8_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A8_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A8_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A8_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A8_PMU_PERFCTR_INST_INT_LD = 0x95, + A8_PMU_PERFCTR_INST_INT_ST = 0x96, + A8_PMU_PERFCTR_INST_INT_ALU = 0x97, + A8_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A8_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A8_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A8_PMU_PERFCTR_INST_LDST = 0x9b, + A8_PMU_PERFCTR_UNKNOWN_9c = 0x9c, + A8_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A8_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A8_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A8_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A8_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A8_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A8_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A8_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A8_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A8_PMU_PERFCTR_FETCH_RESTART = 0xde, + A8_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A8_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A8_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A8_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A8_PMU_CFG_COUNT_USER = BIT(8), + A8_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { + [0 ... A8_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A8_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A8_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9c] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_f5] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -643,6 +749,12 @@ static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); } +static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -792,6 +904,16 @@ static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); } +static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_typhoon_pmu"; + cpu_pmu->get_event_idx = a8_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -837,6 +959,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; From patchwork Tue Feb 11 16:07:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970106 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 10171C0219B for ; Tue, 11 Feb 2025 16:22:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=98z2XYYRzQ8D8svX8siNUPVhrLU1wb1YkFqSoCD4z3Y=; b=Gd2tg1podd8m+XG5rE6boCAdok SuYaqhMCu4CclDZh3/wHkLAXPIz2hKIqt5+iKMpAxjAmscOcV84KH8jpcVKaTz14Dsp9xhJ6llfbQ oCKggf8VlgNlZezHwxJngaqp3oKiZADH9RaZHbHO3863f3vM7bHsm60GhgGomY3W1gGvk/jvA8d3M 0T0UoxqmVyhmm0YCd8hQIRVfE2gGcR6wHcO4ZUrM8AyRB5Mu3Por5fN6Rf9O1V90VB2UYyvtBocx/ 4KyE9eGzZNOt1Lvbnv5H6CDsEAceni1pbLdghmMqOHMcTSMphCyigIfHz+tnnerVJta5+rv9fY/tL 1Jin7Ecg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tht1Q-00000004U4W-2tHW; Tue, 11 Feb 2025 16:22:04 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoP-00000004QUu-21zV for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:38 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2f9b9c0088fso9187581a91.0 for ; Tue, 11 Feb 2025 08:08:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290116; x=1739894916; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=98z2XYYRzQ8D8svX8siNUPVhrLU1wb1YkFqSoCD4z3Y=; b=AUg7QgOAF62s0uXP2Y00GgEEKCJyd/T06gvPIedMcpyjE1uY2m+vljfKhsWtq2dt39 QjUWdtxHESAUOw9eu7hTXEW2Gjh7Q1uAsljt3IEx2P5M7Ae4b8bg9u9CRCaDJdG713Dx QQbpzpwpwncc+HaQnCl0VWT0Nu9sko3kX6+Jk0kBNN3MpBSviREYXFYvyj85aElXCp2l r1mct1PtzvtJC5EktyBnI1ZGumsPsvG5drWcaXGnpXE+jltlprjOO4XKezWRtC44Xklu C1fK1uoxcbzE+dOWYWaZj/lYxJkrB1Vjw3RZSAbvlrK5CwtwTxqT09RYuYU/iwf5dQgn vlmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290116; x=1739894916; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=98z2XYYRzQ8D8svX8siNUPVhrLU1wb1YkFqSoCD4z3Y=; b=ShUobSPACVzTMdKp08BSOKwav6CogU1OLl1I+jYu/yag5/DCRyPmzPsQpoewyFI4Xt /FYAfmOjlUOPmSgZqRqFMt41U4Zb7y6z1xdpHoJd6b7AwR/NmK/YW817EEMvLtwG3K97 uWNZBCZPhFeJL2Qsjq+zDz6L8+2AT7aA6KXZTWR40k4uojB4WCCzJJCLprw81NHWVRP/ Yrbs/LHuKlee2CVx6OAIoushKupDk3odT1PCNi4R29oByT/V0yH8pH77ZqG9uhyeKykb vBK56EGp9cn/Uth0sZQiLBLfNOaopRmjwBB39bJVDR/oZm4Bd0pvGHY1wjSeQs1XskEu HEXA== X-Forwarded-Encrypted: i=1; AJvYcCVHQZJIgqUlr7qod2wFFuh14UMbOg/Qk48bNWgMGDqrpx88po3YTizgo72pcXTPrbYJFLE7dtH4yHahCglX+gLI@lists.infradead.org X-Gm-Message-State: AOJu0YyuMx16P4tkYNRQqNHxQxOhfTJ51GsIYSc19x+ln5wZBB02XF7G xmpkqL8ypUWRfx7kyCNz1M66lxmTBxZb2xooK/5/Tp5VI6s7XBza X-Gm-Gg: ASbGncv4tjq8eQrYSYDX+1BHJNWcWfatqN0XouF+rcfOqxBKPsMxAMVKW1LrLlMQT16 zgK7XdzFMY9zPbeVaBzDDOac0uhKv2TfRSZbLl0eoatrex8vLrBn6fZr+2CilUEhx1jgXWs+epN TqWY9ora3PkV2kAcfRPLauD+pYROnAfj1Al9QoWe2+6DHfT73CVZAuzuYXaINld3TUwWASJIZab 8cJApethOgDo+s/5vn1juY1fO2JXfVseyJyq8sJgS40iPuWkV38lTYCnTE/SRjZ58hYuprMqU3x T6XWqerOr16jVSojzw== X-Google-Smtp-Source: AGHT+IHi+DuLcWnvWwCfZG64M7w8IG53o28CoOE0thaWDG5+fhlXqzhYXMbqXOqlnumqzWro3qMUeQ== X-Received: by 2002:a17:90b:548b:b0:2ee:8cbb:de28 with SMTP id 98e67ed59e1d1-2faa090abccmr6691971a91.8.1739290116404; Tue, 11 Feb 2025 08:08:36 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:35 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:29 +0800 Subject: [PATCH 08/10] drivers/perf: apple_m1: Add A9/A9X support MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-8-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6966; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=cRVX0qZipF1a3qWrtGdJGv2+CmNHVPkTZK8m87LPi7s=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XnjBL/eF/qM9ZzewOPxmTq6+xz/CEO25x90 JyKoYwfN7yJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t15wAKCRABygi3psUI JLPgD/9QPg1m+0AjFRkhm0c1a+zqKZyDbxlFH5th2Gq/uDzH+7W7sJ9MZN8TZKLADaGqmYNEIod UJspSGZxFjwcM0LavEWWMqSftpFZOUUapgQdpAOgEpYp1hwMHj5ehTndgxCyoyqffSrNkBcvjFf Trdd2ugjFNHZPgjGF4kZI0ozccILRbCqv/nsj+JGS6lrM5NXnO9T83LRcS7MYKY29SS0WhMT3Yh y5rFYJbg31krQbLwA/CP0W44NSQ3+kSN5B/6GJwDfuiuD7sC+WZ/XLogdsttdL1tJbIidwO+Mxf NgvcvcHbF0XJsK7u0Po6srgppN/hWE+Pf7c61MWruwJE+iPLj5thgRRnGYGqysMTUXzcrvJ0m5o we/I4m5tNaIMMq2xDv9Tb0eoTBJR8fzdoyYSM9jAId3QzgJdKuoxgTDP3+p+zLpjpe03Gx4rTWG r9xs46Klf6O5dQYTgNu7q6QyPUHiDPcFu/gJPrlE8PYeozK8wh6XhN4r9pTG2n0S+APyIYQNIVt KhU/2pAWaUznetQVr5UFM2PRvybGnM0yC4trruA4ZCSVvFy2MC0ulZV6LaiLMgz32SZAEpFMwwA 29Vcm4/GPqTsletCoAzg5bFp7/17JntCVQJVER1vpZoX/ipTGTl09PvTu7Buq34rnS3TfQ8xgmk bcKtrul1A/qNIwg== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080837_537118_B8A494E0 X-CRM114-Status: GOOD ( 13.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for CPU PMU found in the Apple A9 and A9X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 120 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 0adad923d50f05db1f977342c66f2b70d5e0de9a..1575f8eda874345eb56c00f8243833308c63a84a 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -288,6 +288,109 @@ static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; + +enum a9_pmu_events { + A9_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A9_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A9_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A9_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A9_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A9_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A9_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A9_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A9_PMU_PERFCTR_MAP_REWIND = 0x75, + A9_PMU_PERFCTR_MAP_STALL = 0x76, + A9_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A9_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A9_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A9_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A9_PMU_PERFCTR_INST_ALL = 0x8c, + A9_PMU_PERFCTR_INST_BRANCH = 0x8d, + A9_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A9_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A9_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A9_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A9_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A9_PMU_PERFCTR_INST_INT_LD = 0x95, + A9_PMU_PERFCTR_INST_INT_ST = 0x96, + A9_PMU_PERFCTR_INST_INT_ALU = 0x97, + A9_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A9_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A9_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A9_PMU_PERFCTR_INST_LDST = 0x9b, + A9_PMU_PERFCTR_INST_BARRIER = 0x9c, + A9_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A9_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A9_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A9_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A9_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A9_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A9_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A9_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A9_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A9_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A9_PMU_PERFCTR_FETCH_RESTART = 0xde, + A9_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A9_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A9_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A9_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A9_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A9_PMU_CFG_COUNT_USER = BIT(8), + A9_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { + [0 ... A9_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A9_PMU_PERFCTR_UNKNOWN_1] = BIT(7), + [A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A9_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A9_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -755,6 +858,12 @@ static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); } +static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -914,6 +1023,16 @@ static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); } +static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_twister_pmu"; + cpu_pmu->get_event_idx = a9_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -959,6 +1078,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, From patchwork Tue Feb 11 16:07:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970107 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EEB88C0219B for ; Tue, 11 Feb 2025 16:23:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=eWlUXgrcSfzXV71CLDNlCta0MjhBp7vcCQWkXEx+E1g=; b=nR8M50uW2W0Wf7ue9S1mS5bhk5 vlkomT3rihF//LBeqnlzuwg9aYXY1FSH9An8ao6Q6nW1ezQDsDttjBUjA88y3WynSC2r9N643OXWH /YNxi0lwlz+8bl1+Rxl7umIN+iv6J98t/flMTmaSmInk9HVlfOiaG4/JW4gKUDZioeRWTDGs4Zv68 /T8HZS1PH2owWuNiHrAU8pOtJTu13SCkAlhCClOgKSK5wC1ZECwogx+wcbDauee+kU9t78UDfOwxe TvDQ7uqYOHTrhzvoWtChujRpzcC1gCA43O0dEqJlOvtsjRgR7jkRR3oZk44SH+nxJwivS3OkowrLi oMgVqJdw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tht2o-00000004UGW-1TPs; Tue, 11 Feb 2025 16:23:30 +0000 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoS-00000004QWR-1Qrj for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:41 +0000 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2fa2eb7eb45so6453632a91.1 for ; Tue, 11 Feb 2025 08:08:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290120; x=1739894920; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=eWlUXgrcSfzXV71CLDNlCta0MjhBp7vcCQWkXEx+E1g=; b=NBEx1RYLeR9PztlRoWXEGiirpuZtUO6EZffSoKm+jrhMRFKPjcK3OWhjs/a25FLtxf P3h2N6He8RLWF5uGPKqsd+96p/UFhlQtSq6a6r/n8MyzYJLB7MAsl5JCCQqJbY0/4cNX DylFKecPANgXi1QAynSWz3hvz+ghaNoCqP1SeYPPqyJoa27epj22FBOrq1ytGuTII/88 hifuxqcr5zFJv6lmiYDVdNjxZiCQ+xMD1GO1D6vbhwBsmyCMvL3OX9zOuqSbNwjBAJVy PrS6/HX6Y89RyE87+9srCapHdJqcmbt8bQD+/wQ0WfqQXzusHYvUfaC1Uv1jepWUmJaC uQfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290120; x=1739894920; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eWlUXgrcSfzXV71CLDNlCta0MjhBp7vcCQWkXEx+E1g=; b=m/oZcG5jdzIInatvEneldINBPtzf9ALzGYGYz0CCUERouekHrlQ159jzPLku9d6kRM dPsXpfrIP/q0WVsoPH2LuN2dVr9mJ4XrdlnuQohR6Bj9GkEDnQ492jn2zGmeBUypPdBu a9WnY+1RDTALl9xxIqnZ7JCiHY6VD9LkB5BNnM0f2XvcuAEWKqJ3Olk8xJReF8O9Ymz0 7cRaQcByByGFICmHRHkZ+2ZKK8t8czUf80ULMZdf3frsEX2ws5KqwoFIE9BYBYDnRHNx b9TzmBPvOoWBoTv+f5b1/xk3NzMrjP3yTajFFiTZE5boX+HvIzK9WbVFCnGUZwlOVSM0 Lx7Q== X-Forwarded-Encrypted: i=1; AJvYcCUS+pIzxRtPC03MK/BUFhqALZ+EF0+RD8CVGnIoGzTDt4AspWRJBzgevoeMr+oRjimc7nOi46+R5C+U0PPlwuDA@lists.infradead.org X-Gm-Message-State: AOJu0YyAAsZiXuuKS1wtSApD+WBV5cj9Pc3rCNZ5+not8UXALIpoQmr+ 3G9j7DtGaeWsl1UiR01fXRGih+CUqa3jOn4B+1I7rl2at32eRBa2 X-Gm-Gg: ASbGnctnMwZ5WHBl6e0IS1y1eMVFNV6+nBEklXSE0FXiPwoW7HNtB230+LSaU1fqZlk DaN6aYWPLYQfsndp9R7JrA9nDroAA53+5TEQ/9f02cgNbNklOUOnw3huBnmlzQM9xvynOALqZdZ b4zlRTzjdybdQhApzH8VhFt84LRt1Ix2jNTQXUn1YLCWu8uU9p2UcS/RqMXk2WBsVCYyLtAdOfI 8W6PzKy5+jjO3rVyZt0Xu1Ky3fvHshRAojsrsZ7y6iDWnYMkN0y/e85K0bC+3B/8OPBMPJaTxT1 mKn30F+Sy20wXFyVWg== X-Google-Smtp-Source: AGHT+IEIOp+XGPrwJW4/JKLX8mEcEEgyiukNRwRyimMyprziw7oEUoS6JuVmvLqcmRvsKw6+P5+WYg== X-Received: by 2002:a17:90b:4b0d:b0:2ee:c30f:33c9 with SMTP id 98e67ed59e1d1-2faa0960968mr6370291a91.14.1739290119538; Tue, 11 Feb 2025 08:08:39 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:39 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:30 +0800 Subject: [PATCH 09/10] drivers/perf: apple_m1: Add Apple A10/A10X/T2 Support MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-9-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7446; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=W9uY1CyO/fNFWnV4SvZDTZzRBUZIyLr+QMGimmcF68Q=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XoOyvVI1097oDlq0qYDGdrP6JqU4Lc0evSz 6+3jNETf5mJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t16AAKCRABygi3psUI JBXGD/9kzjVE7bdpwvNITu6iyMf7pc17P8PeXlQj5dDu/tY3BSe+jxQUghg+kLSBGg4ARaZVXsV pFjiTqXeO7I7XES11u7c90S8Sxx0El4qnRqdbZosr5KhmQb34rc5by89IQgG3BTRCL2EHO1ztxG vxDhuRCDtxUO1LrZiJVxEB8RU+gz9bmzceAip7mKBAdBbFWSHCQq+VZY3h6kq4Uguav9LWIpdkn 5Hp6nUTTCbWSMfIYmErOrS/lAdBUQSd6ZVu7SkGDF9cI8iBcMHbgrp53nitbM0UIAxNTrszV9Sr FHhPpLprGsuJ3JzWthabbckK91WhGtIRU1LYDxbkSJDJB66mwMN9DwaKOd/YSfGF4dJFIGMGAcJ XyI6SL5outuc9s7q1VIpFt88TR/vfVu/Gll9iIwLaV1NKhGdcJbeyOKyOeQqX2OaDleUte7cdmf 8szuny1ikj3qDoJ8CMAI379c3aHHonFTJn9uCXq55mvwUBtel4yzgFcZtYUQGL5jmlFszytaIli i82ndSBWuM3COxJ4ysgfMexr0jxju1zN/ASIIKyXwvofG2x+4CspDGl1IfsBKHqe2IJyhyNfVU9 Cst2TfP4HygJgC6kHV6j8dkhUXUm0tRUt4FRXV2AgenpXSRI5qB4lCk0aeB6Y+ZhJZ7/5BucHq5 4+o1Y4oRvFz/fjA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080840_393606_101F789F X-CRM114-Status: GOOD ( 13.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A10, A10X, T2 SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 126 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 1575f8eda874345eb56c00f8243833308c63a84a..2eafcb1bfcf6bf4b57a939c5470552cba81e7758 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -391,6 +391,115 @@ static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; +enum a10_pmu_events { + A10_PMU_PERFCTR_RETIRE_UOP = 0x1, + A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A10_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A10_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A10_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A10_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A10_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A10_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A10_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A10_PMU_PERFCTR_MAP_REWIND = 0x75, + A10_PMU_PERFCTR_MAP_STALL = 0x76, + A10_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A10_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A10_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A10_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A10_PMU_PERFCTR_INST_ALL = 0x8c, + A10_PMU_PERFCTR_INST_BRANCH = 0x8d, + A10_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A10_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A10_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A10_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A10_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A10_PMU_PERFCTR_INST_INT_LD = 0x95, + A10_PMU_PERFCTR_INST_INT_ST = 0x96, + A10_PMU_PERFCTR_INST_INT_ALU = 0x97, + A10_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A10_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A10_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A10_PMU_PERFCTR_INST_LDST = 0x9b, + A10_PMU_PERFCTR_INST_BARRIER = 0x9c, + A10_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A10_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A10_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A10_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A10_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A10_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A10_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A10_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A10_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A10_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A10_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A10_PMU_PERFCTR_FETCH_RESTART = 0xde, + A10_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A10_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A10_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A10_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A10_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A10_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A10_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A10_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A10_PMU_CFG_COUNT_USER = BIT(8), + A10_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { + [0 ... A10_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A10_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A10_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A10_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -864,6 +973,12 @@ static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); } +static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1033,6 +1148,16 @@ static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, A7_PMU_NR_COUNTERS); } +static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_fusion_pmu"; + cpu_pmu->get_event_idx = a10_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1078,6 +1203,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, From patchwork Tue Feb 11 16:07:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13970108 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A8267C0219B for ; Tue, 11 Feb 2025 16:25:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=1O3DPqsHMZl+tQK8e6H66+oY0Dkf1V6lPtG345WzuQw=; b=vhfIdx52U6YXE+DbVRXpIwaNME Q4bRztd6m9ltnnAjeQzfpvfVFDRSlECPHdXsOEt6K7+wSJGlXzYMJfOI5LflsFPOD24D9Hcvx7ye7 yzTWba+Iyhh/G3sieKdrGMH1I/a03Rzzcb0c1TZZEL+jaMCLypL0gkOZhkdsfAo2uhjT9t72bgUF9 vd4E0EGonaOPTErdWR6Simzmmw7at5QViac7rdhgkuv2OZustFNsc40Xgdwqe4icUt5ql2AmWTsz/ NUJ2h8THSe8E9K1qjwEXyyFp8L70wq4Rj8trCRLKSHGLKj4kom2wNGk1kMzxcpP60WXPBUWFL1KEH VqCvV4oA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tht4B-00000004UZ7-493A; Tue, 11 Feb 2025 16:24:55 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thsoV-00000004QYf-167x for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2025 16:08:44 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2f9b91dff71so8866642a91.2 for ; Tue, 11 Feb 2025 08:08:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739290123; x=1739894923; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1O3DPqsHMZl+tQK8e6H66+oY0Dkf1V6lPtG345WzuQw=; b=izPi9FQw2ypcvJJt5OngdG1dQ76Zud08BuQz7RzH/iFvzLi2xu94fHppogbwOZegmT qjTNqSHYMKAtuwgX4X2AroNh2mHSl7snllJu5jlMT8FuOlXqI8Vmwrr1CBf6EqHmhixR 9FfMhlopoZwuZbDhoztm5DIw/NYYfCaURD3pG8fG24vknjeNZs8pKeLGZgBaj0izIOw8 sNwYi2lfg+Vep2cLQ8LThDwqbNqSc8wPagGT0nmpir6ya6HyAX5mv1bAVFfoq3Qc1zam t8JZ9w7jAnPp5aFnuDfNd2e2cVTQpnrc7kZTw8DE6NKyZFe68TlcyuSDa4M6d8zOjWa+ 7Avw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739290123; x=1739894923; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1O3DPqsHMZl+tQK8e6H66+oY0Dkf1V6lPtG345WzuQw=; b=rgowjIrXzrWcYICEO4UG11wkJ4u+GkwxhHDyzD77sUoVYbPiJSyyZap7ddYz/8EfJK YufC19cSWr7pVdnc+kkEIlhAuspAN0kKJY8SiSOnnVRrcm+Nfuc8cgs5r2fOuz5XLmj2 YuLCQS4ekbxzJI+N1CziZ+D68MxkQZKuA3/mRFeT/1Sezh+JUVWHeL5oFZDMhqRhq92j oagLL3kcLlqW30es+85m4a2Vc1qXuyntqQRG4uuY+EitoRwG4VIcnVUpZgia0QRZ9A/8 Hbq6dGIORaQPD8IMUBMzKGCao4MvXQ8kRJpfdcctGViUg/kjFiwZ6tVlHKMDIT6JVFv8 R+UA== X-Forwarded-Encrypted: i=1; AJvYcCU1ImuZMm9mUJ/vxI4UTw7McXXBaHNxzEXlOySfRjyuUo0dg0N6QlJerGnOd2PXifgJqNxa8ZIHjlUKqd8pjOPW@lists.infradead.org X-Gm-Message-State: AOJu0YwoPjw2bovgKAFxnu3am+5GE4cj+Qc3axOR+qWdwchNZZu2sDN9 kO1/FIYevDfk/yqczQ7sd5guZDpXZ6n/SXFdvU6BZyMt0o2n7NRC X-Gm-Gg: ASbGnctrreQwzngdy03j/DmmTHORBFB9S/dw7cXE6W5/7rlKfTvvyHeOeE0dxHtX+BF +FwkieSQKTzzsDM9YwBHsq0s4qGWzZEgLuUKPSu2TcIfY8roQZZRxCI2wvha1ER1uPLv8JRv+Na f0s0YjxoiChbhK0QgTCLF3vPXz7KtAQfi/gCy07E2338/y7Xr+bZQcMVmV8/9AHqIjtU6fRIURG yyv6cmbw0Cgzyj6DACEqjgUlJI+GI55K13ubBmJ1HyqCtC62oWXxyuoNYb9sTXz8Bo9Vcr3uZji oyUtgklPqB2VFxEXrw== X-Google-Smtp-Source: AGHT+IG6G7065tb9vEJwgv5bPL6BKiPdWBuG/Hrx2vDGxQYdRxxeXQT5pT1jbB1l2NApBuR0T5Sp8A== X-Received: by 2002:a17:90b:368c:b0:2ee:741c:e9f4 with SMTP id 98e67ed59e1d1-2fa2406434fmr26864538a91.11.1739290122639; Tue, 11 Feb 2025 08:08:42 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fa618e5e18sm6040478a91.41.2025.02.11.08.08.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:08:42 -0800 (PST) From: Nick Chan Date: Wed, 12 Feb 2025 00:07:31 +0800 Subject: [PATCH 10/10] drivers/perf: apple_m1: Add Apple A11 Support MIME-Version: 1.0 Message-Id: <20250212-apple-cpmu-v1-10-f8c7f2ac1743@gmail.com> References: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> In-Reply-To: <20250212-apple-cpmu-v1-0-f8c7f2ac1743@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7901; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=rwHc3mgKnwMYwfhwpQDSG8cR6N18yvZFC8tKzaeZXoU=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnq3XoE+tpQdF4eMnLpXXSfA/45LMt+MPF4PryP HMKAvOU+oyJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6t16AAKCRABygi3psUI JDY4D/9BWdJs7RseCRXasa64BXCmII0mEHmATtqN/ryxrmoM6+thpTRt+TYis+1ZMfyZFrZO2E/ YzDHsBIuIbaHPUbKhL1BfhzGmqO7CpZmWxGkuf7PyjOey8Q0zoHJQwRgflhFQ2fFBc3q13L0wLf mfjfCCq9mylKTKkFtW+4Fcy7QQ7Ho5MFP0PJbKzQyVzbtXAqc3ERyjND5KFV70nNiLxUjlcMHVy PrVhGvdXNv9lhVSHHhNiOn76jRyeBWwZXkgbGtbC4QcGepkuxfSfyWCfu7baOvMwhMhKXpSxHGm lAM7NrDqMaaoHpBbuaHADTd3l7GtyOOjzEoc28R9EAhi4gaeMMyB+1Pi207tN+OZ/ww8XyDnSy+ UXdr8Klbt7b2+6pUqoxHVOoAz1AaQRXr92/rZ7eg4lJZdwSj9sQGWLWXA4P+2ydkhusYrl3UgWW f6Dsm+BUPQFelMaRnrdgEQUlwZJR+blt1rxScdhVsAQ6MLEgNfY5363XI6sdpfVF5m1MStpJ6lw RoI0lNYOGjYVHMs7kmpudj5lZXY9SewGr4NXUPU4xl47AVLPmWViXzBak3XaC/0fItmszqIaXAe XeIC3ST2zdkVhfu07ZhDLQjeeey2xJwW7hdUUBK+caxyTazdFgiv7iruP9UrH8FGetGUODlcZUP 6p+3aKqjx8qtpYw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250211_080843_306448_762ED677 X-CRM114-Status: GOOD ( 13.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found attached to the performance and efficiency cores of the Apple A11 SoCs. This PMU can deliver its interrupt via IRQ or FIQ. Use FIQ as that is faster. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 135 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 2eafcb1bfcf6bf4b57a939c5470552cba81e7758..254eb8e08906c2f0366c27f2089095ecd2fc7adb 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -500,6 +500,113 @@ static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a11_pmu_events { + A11_PMU_PERFCTR_RETIRE_UOP = 0x1, + A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A11_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A11_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A11_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A11_PMU_PERFCTR_MAP_REWIND = 0x75, + A11_PMU_PERFCTR_MAP_STALL = 0x76, + A11_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A11_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A11_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A11_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A11_PMU_PERFCTR_INST_A32 = 0x8a, + A11_PMU_PERFCTR_INST_T32 = 0x8b, + A11_PMU_PERFCTR_INST_ALL = 0x8c, + A11_PMU_PERFCTR_INST_BRANCH = 0x8d, + A11_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A11_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A11_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A11_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A11_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A11_PMU_PERFCTR_INST_INT_LD = 0x95, + A11_PMU_PERFCTR_INST_INT_ST = 0x96, + A11_PMU_PERFCTR_INST_INT_ALU = 0x97, + A11_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A11_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A11_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A11_PMU_PERFCTR_INST_LDST = 0x9b, + A11_PMU_PERFCTR_INST_BARRIER = 0x9c, + A11_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A11_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A11_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A11_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A11_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A11_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A11_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A11_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A11_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A11_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A11_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A11_PMU_PERFCTR_FETCH_RESTART = 0xde, + A11_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A11_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A11_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A11_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A11_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A11_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A11_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A11_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A11_PMU_CFG_COUNT_USER = BIT(8), + A11_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a11_pmu_event_affinity[A11_PMU_PERFCTR_LAST + 1] = { + [0 ... A11_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A11_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A11_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A11_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A11_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -979,6 +1086,12 @@ static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); } +static int a11_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a11_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1158,6 +1271,26 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); } +static int a11_pmu_monsoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_monsoon_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); +} + +static int a11_pmu_mistral_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_mistral_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + return apple_pmu_init_common(cpu_pmu, ARMPMU_EVT_47BIT, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1204,6 +1337,8 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, + { .compatible = "apple,monsoon-pmu", .data = a11_pmu_monsoon_init, }, + { .compatible = "apple,mistral-pmu", .data = a11_pmu_mistral_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, },