From patchwork Fri Feb 14 14:28: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: 13975046 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 F3D3FC02198 for ; Fri, 14 Feb 2025 14:33:38 +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=9vprohxk3JreCnU/aMQ3Cwcsm8vUQGIhxwt5YLfMxZE=; b=Ho55LFJ7Dr5/3AARH4MDBZcyBY 1NCWHQV1UhUncyQlGl02F4nwNXZ1jUcz9DqwCxXMmosliy7f+5FAL8FDHQVS8IUGukkyqJeApoejh vspam8A7vgi7cSlFAVASPTTT4dFjwKz+Rb4uZDWquhkYEtedTENLW9a9jYKv4hoh1U9PpbZ7uMeG7 MWcGgr2LHWQ2l2VVFs9mXOT1OUlCf/rhbBvzwumhFzGHnuTlmu2sv1DA6FGOBAaUBUaqR2qGtPmkv VMWNwrxG12egqqh+FI4pS3YJcm+nbgugwl0knWvPzeh4x/ua4KtgMpVz4b2wLaDkbE4SjnjEuZEsq DNmJVRnQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwkx-0000000FAQb-1zxU; Fri, 14 Feb 2025 14:33:27 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwi8-0000000F9lq-3Vmu for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:34 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-220ecbdb4c2so24581925ad.3 for ; Fri, 14 Feb 2025 06:30:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543432; x=1740148232; 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=9vprohxk3JreCnU/aMQ3Cwcsm8vUQGIhxwt5YLfMxZE=; b=BKn74U38FxIDhOZAYUPTIzClsYToi1th0ANDcf+G+NyryRMUaZoPe165WN/yEDmufo J7E9tdFnqJn72pWuZxyCLtrWCxHJsdEBb4b3JTVYXCYefTAJWjIs8a76zikSAlaeNjap lBLqSGs+ou1Fzlb0ah6jP39Ts3PnWcuA6NbYnmJdEEjeFnm+VwYpUt/1nVi+Jmzin+Ou Cxh1r5bfkstAtAOughwyt1jlBIYUaptgQAIHzJ+41B8Viol4nwiLcvaQ9cf7ay5+MbNf 2dYLjGJQim0pCqxiSODYqnompLenOXIsgzkhPaZkq7C5ZDTc5pg+n2hnmQXkpz08kPPc j0XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543432; x=1740148232; 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=9vprohxk3JreCnU/aMQ3Cwcsm8vUQGIhxwt5YLfMxZE=; b=Ixd+TCLdJhZ7EWp++IL9QmZCxhcCY8vat5m6k53ifDr28b6LA7x6hTuAHUPSidCuN7 FAtMUXA040D4UPNGgSrVPAPRheySFuVDSRD8w/RObAbQKZVEcnqPlctz4OhTzMk8WIim zPynzIUG/fFGoFrAbb3gpbODmgLP06hHcHAVA9otsND74jQhs6XSZzzf0JdfpGsGsct/ VBSFSBqAMDFhVgLSXkdN804DU2xjQYZQSUAxy/tJhNLweYNoTdPdcay0IMdOCVmQKL08 hSbhvjLuK+y7Iz01EfF8nJeD+xo084TFOcK/XrF0Gsi4OmZ8LphV4vpEl3Kw8W8E9kTj e8Gw== X-Forwarded-Encrypted: i=1; AJvYcCWzawPp7PQ2RMR50uET9Q04aq85vyvN1NlVQLrMXWqn7y6C6jbytj7sKJoppOquFSLpq949d/fEBLyi1J10jjPD@lists.infradead.org X-Gm-Message-State: AOJu0YzumEPs0mx+MnUJgSaEh6be2nbzy0TknE7SFs3Ym3SkXUgbl1lX /QBb3GgAc6b38jnYWax3hT3kVGoFkVk4rv0V1U2RLofD1BsDaknt X-Gm-Gg: ASbGncvVFKidPct9QrwuuQX6+yYLpSm1BgKqgDu1R+yg8Xh0Y0mlfYZGM1B0O4SK8ET 7xUakfl0ki8XdTM6jQcDdKr+ZkOO4+xOHh+95VdcNyFv8gfVbKMetFKIX2/gTCjS7Gx0bcpDPA0 /pgJLrKPq36nrcyxr6XQJnIjVTQqjMVYmD5T8oQxshDq8GrJXE0KOS9ttu8CgEoiDy5JaML8Boj i8uNT9T3Eie7+BW/3VivYvMje/yJWk60GdRP2lfgyGZLWga1KVQYnwix61n7UfVgztNk4XnxyHF YsOKvlvVTKxP+rY4XA== X-Google-Smtp-Source: AGHT+IEu2Hb5pPBgql0J5zrtyu/OArrfmnQCdrNZAsm5tiDRfDCnaHp3/5nPXiG8C9X00s8G8YzcCg== X-Received: by 2002:a17:902:f68b:b0:21f:1096:7d5 with SMTP id d9443c01a7336-220bbb209camr182567835ad.17.1739543431767; Fri, 14 Feb 2025 06:30:31 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:31 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:27 +0800 Subject: [PATCH v4 01/11] dt-bindings: arm: pmu: Add Apple A7-A11 SoC CPU PMU compatibles MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-1-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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 , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1102; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=IvblILNfK65nRmNXFfVq27lzQtZVkqPdlXpIO65Xo5E=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1N/3AiQ60M/18EKguryDnvFSc8EpDOxgVFQn WnGb5RK8MaJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TfwAKCRABygi3psUI JN7YD/4zOhnKwP/8gjH/iYxy8EzNHBKW4M0lhDY1BbC3KPoAx+9ZuPGLOH70VB7T6F7r8IawTxc HCns5b69zzvzgRD80Kzn+qDqbm9EmaD1acIdmdF4s+jdKSWu/ldoW0yBhtfajoqg9tsk+vVUfXU 2Pg8j9go5VIaACP+7mt9S4PQzambMtsJ9/hA6heFk93g68xUXBlxEbMb5c9SaVz/+7zahh8usyB 7bwp/2wJvgYLN4uiHdBpxZRYjG0T3G6nV9l1B6gdlSCmnhqQ5uqinPmdPNWsx4jD1UIY6U6eNsL xmHkfQa9Ad/DQ3G6qk299EQTPTMMIlGp6LYS8MJ667rwBN5/1gTU/lPniRqO/XHPIbtRoWguK21 /CLbTPqbUCyiTkFU5o8m5imLiaGTzDJJ23pnvvI+nnrcdKBKb372bOf0miqwtIOeNptuq5RcJF7 smY9NiKRS7lVHDY0bnYq5kL+0fAzhXnT8h4QkWYqzmAEOY7JamxjYLxnuPzBG9HryytxUJkvYbi Vl4mpqp0PUpjD/kIWJsJdtlnqN0ez1YmHYYdqgDdw0jV7bvFG/Yl0y8/6tjRdgFM8HApJzQHPj2 fiRZ+EBgLkMjCMfv6UqJURbbW0M+PW4eEIaD7cD735Zqk8UZ8DUoEzYZcjWqOMQ0biFiqNu7CIM apcGbdemuPN4+JQ== 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-20250214_063032_869358_16DD4E0A X-CRM114-Status: UNSURE ( 9.19 ) 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. Acked-by: Krzysztof Kozlowski 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 Fri Feb 14 14:28: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: 13975047 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 A9908C02198 for ; Fri, 14 Feb 2025 14:35:08 +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=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=V2CZbBtvfIuOXtFROu9HtFdosK PP4Y232nBI+aZ3RYRdVmEytvLbWUVza6Wun8davbKbapXv1lg/fxV2m3cB4zw5PmHCZy19uOxutF6 02TH0vWmNJdMZpsutS9jFTkyBC+4x2QSS0u8kvws7WQWnEIGN7AkVcvj2d/94kdLZluI00MPmnjn/ i3kx0Q3aJu9+T7yD93IlaEwvgSpeInPi02SxIyMH01ytQYkz6qVhPznCfT92yltZeCKCFqlFWtBlV OgqHOg8KE1jDfS5xC+tGkRHmHjyxp5XK/dT6KQiseZdC83ryAwvRiyg5+XjgLYUUUsoW/1vZoXbgm J+hjvxNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwmN-0000000FAkH-0bbE; Fri, 14 Feb 2025 14:34:55 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiB-0000000F9mU-3q1F for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:37 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-21f78b1fb7dso37052345ad.3 for ; Fri, 14 Feb 2025 06:30:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543435; x=1740148235; 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=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=PS1JxPTjgJjmqgWTP1nq6qMFUKRRFU5TfZa/fG/06o0eEDXa3vfxBnaUJNiE/vBqS8 slT0/+iQpEBsWaRd1OpWISIxLPRhPPjmH3oZp92GpqwNhGZ/t2MZMak220FsPfHTpYA1 DK6KjzAeKF0eEi7TE1dNihUWTxHKyokfC+HcDoveQ068yUZiRq7WrDHwdDLGYTjspeVz uQWUl/f6TweEuHV73mU+DzZ2SJ+Z1Gb0MBcoK8YKGu2TKvG8yZx3hSVcrJM/90a1phaT 60U24QSCkuuktTbnDcxPRvYXMs1H7w9UglYXvU5DQAYUq7nsEGVDZTYbCpJG4FmCVtgO CmfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543435; x=1740148235; 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=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=vbz3nrrBXfTdW6UxiP8XYABqsyTriy4Z/er/VFm4QjXtzWNvEvn75FyouU0KkyghcG h3hnRW+0oRWgj2Fj/xmdqoQPiA2KDMBgpf6eJHojYv2UeChzxDUkgn3f8MBhHskmxRDb gLGAG+GYlBKkOxgOTzDb6D0sZwSqLTofmiZ9XtXMvG6asFEMxxqhEjE+iq9Qk7GVg4SJ M6TXO7R1VlPrfP4jWarBGGYZpDnExQtcGTiTCv48yHoTKlTb0CPuaHV/eg3PCQL9aE+0 Ll+qrph4Z28leMwNRMlyK5TNFrkmKFpVwZIMiWlcaa/RMCgxvKfcQOpwXjGMZvFvb3RY gbdQ== X-Forwarded-Encrypted: i=1; AJvYcCV4ZVRS7ssWKIwP2RTre5PvTPyKKWdCQVlB/wA8KvlEJR3Oj33zLlYjQRCKHe0jncfokEaC7i5fD19OeL3iu6HE@lists.infradead.org X-Gm-Message-State: AOJu0YySRLOHUnceQ3+3qVumhmKhWxAd2b0yC0MNxWtdbEwlRK/SdCMy hdlfNaL0zJMH3CpR4rf5B72PeqnY4cHvIHelUpNhOhgtD6HnwQLr X-Gm-Gg: ASbGnctZydXuHkxLvoawJvVSrVP/JIziOaHSyA5bUf/x0I3HL17stHbqvn6GvZvtDCz OHMaRIb+gRgmvglAgABr4KYgTe08hzt17G2IUa2pBjGKTt7yva3NX5hzarZLjCyI5vGX19LOLmQ hYNi6+q4CT0uohCf10TWcbMuTgTJ0mkFRipPC5THcCY/AA5BacaHl+O3DSCr5blETy14EmFDHcB hug5uPeV7u0ThPdOUlMl1TF5DOgiZZQ5hiVDtw6nc1RVZMVLXaGiTf8t04fy1LybqO+6saqA6Zm p9bbGqxd4O2ZGGOC1g== X-Google-Smtp-Source: AGHT+IG/bVbomX6ZL8o6cgIyCYELKgNnLgDTIIQLfhKHH2P1Nm6zYVwBqR15+gUOMU5DTLQtOl4QHg== X-Received: by 2002:a17:903:2f8f:b0:220:e991:480a with SMTP id d9443c01a7336-220e991e31amr71970365ad.15.1739543434789; Fri, 14 Feb 2025 06:30:34 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:34 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:28 +0800 Subject: [PATCH v4 02/11] drivers/perf: apple_m1: Support per-implementation event tables MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-2-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=5765; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=8lUtIdaUZ74bJi6U5U+SM7syFrwG6QLTTZ/s/7A0PwQ=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1N/KjjlLGW1G/Qu5tuyuGcZie4elLqLg+YmX 2T8QHqcdfaJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TfwAKCRABygi3psUI JFKREACwe+jV0g2vw8XAkjbC6c+oIJnGIRBrYdcOt3TfoV+rtn9faFUL5TEIdB444IFB4zWiERR DSzCT9Hdu/4mjo251rfhx55Blzze1QKW/3riaQUKfjg9/lY/1M64n4xfVQzLagAH71oiYNO8K1q l/V42F8xJIlIxG7n10pGc8ekOw/1zI8yyRrxpkQug4+/0bq5LAVQzTevxJC/EARux7v1yyS0APz gcFrnABtcqKiIJ5FR+5+/0N16UGGJTmBKbDnp4y689Vf9I8k6/XpTMh8mMxTEtuW+koR+YwI4vH CrYLkuZ23M65EJJ7GZyt0AtHMxFxRCtYTOnkLRKgjGYnRnXUzE83T9HQsom4vdfb3fnyDz0DhbB lC1N3Z5GmL0TCAWhnvXtTrUwHAa0v+DBnbOBx4gpordKhpk8CWoTKq4p2zoIyACYGPC8q2j+hhI JMOPIogrS4dM+99g8S2I9nxgrwkFoXIpLLdCUR8Q/dYo6ZUyVfKV8xxbO09/88t0zc9FRewoMJH cYNhpTbZ8/NgqoVrhyEOZ8NX3ZQZvDG1ie04xcZn8uQvxiaqYVwBifBSJD9FcNxXicfZ1f5AR7w UBafRRr751U+c+yMRgQNIqcCa32/+GCzYIt/+7oa1TZTzPpxKNcHeAusCKpSZ8Kx6JKqv0ImO3v cbqBxbcEMah8Ljg== 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-20250214_063035_950204_D6371C71 X-CRM114-Status: GOOD ( 17.28 ) 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..dfd5d72ce9f3c5bebd990b5df6a6823fb7785cce 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(struct arm_pmu *cpu_pmu) { 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(cpu_pmu); } 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(cpu_pmu); } 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(cpu_pmu); } 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(cpu_pmu); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Fri Feb 14 14:28: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: 13975048 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 85B17C02198 for ; Fri, 14 Feb 2025 14:36:34 +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=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=fc8EQTNhxBPG2woMuYE4nY1BB9 CydUGV/6f+O661bJg+TGs5gvRHLqIdlX6sPSIXSS6knBIr7VKW/bWpRzBBf/y164a6ojFwXEv+7s4 8a1QUV8fXT1vybXXRx3WKX4rxsFImnmf2yD0Ybwoq+DWkhAUDsXVRXNUGYhCW4izHqSiR8JPKwcl3 fpc1zTjXwbZOSe922/X3nqdpYVhBiahANZZGocC00oXts1IFanLCt1u9ukQEkFx8vcQLS3Pu6ofow fSGCR53FG1e2v+7j+zZJZrdxFnFoq4TpjgRDLvh1JRDK7zfnBTy7Rd0Z/z2xCTFr20FiK3DCagKuf 4dwplmcg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwnn-0000000FB16-3LM9; Fri, 14 Feb 2025 14:36:23 +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 1tiwiF-0000000F9nM-19ij for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:40 +0000 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-220d398bea9so29853105ad.3 for ; Fri, 14 Feb 2025 06:30:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543438; x=1740148238; 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=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=VS/Ve5fsSJQDh2cW2zaggWdi7HDxS/hqn7rTLqw6WaUn/JcubDQQNNUVXWrV/cqHao GwbE2n39NB6bhWatXtp2BoNHiJCwdQ4oZwNEoOoa+H/xgnXD2zctBezBckK2UakLfPDV u5nKoQS3EwOfW+iJnFlt4xN7snAGbYABi4d8QFjFAaQbBBV/0dLt4yEHFzx7ICjN6mc1 VEcnz/H1fcDPQbJocDiaOe995nFlUmXaG/gk7H1Q4KJPGZaleDJ8BuhV2EgWo44wtnBU 2nIqVGZotpukq9/WWP+JBUGgxbLqXARvcii3GXKvXGJDNWwaMQGjHZJtwhjImbizse9h ccMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543438; x=1740148238; 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=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=OkoLytJ4F453FjBnrJquoXd4tFvKaAbTk6wcbxH3EbBUoYl4S8wcxdZiNcYMKqIcb1 /zxty+M5uKHTAdcY11Z4DMLKxHvhARlD8O4cwdjSPZWez/tH/72aYxV8ltHuP6WCBOrp cormXUIPaipKUukhHBmLdGiRIiZeoJlWqZ60td0eG233PyozM7yTKHmX9VQF02gmoMUN y92CAB6ylawIz7mF/8eLRVoLBmdkQ2OTnRh21wau0eg2MD7hxOu36vApTQT2jD1fWgCF Q1qg1Z4WiLj59i7UgTNFwU4ARk4k9y63XqZOWEXj5QL4c6e4O4jGQ8Zttn3cAAkd4LpL bYZg== X-Forwarded-Encrypted: i=1; AJvYcCV11ftnuzOXqqX3hhzKPuQ+vXUtevLQrrX+nYqGj1POcoUomeAXLe8aLHgTimCbw/STP0JIIrSzh8LVJ+dr/Lcs@lists.infradead.org X-Gm-Message-State: AOJu0Yz1HmqhXCX+Xcz1aWv9kyyfZNX86nxn/7EwZS4SsSecraXGUcNT DkHF15qydieJ0nvDgroXpcQHAauIPqVEK+LJpvemVVXplEO9YMIc X-Gm-Gg: ASbGncuQ60z5tYtmnGgJUQmH6JnhpDkJeme/Gwc2hDueeWg2j54pxZiKbASME1bGvum YvzzjQUa/SRZkTReqdRqBQPuBpvWy6307yMw2wwwtXq3OREmA5+x0BTiIEcnCM8jkqUlnGQwwo+ 82z4v5Dqb9SDfFD3zWcHp9G1JWYlAgucryMnyeCQK6EwTOW2AZ9/DOW6vlmOZudy+C2+LqF3kyi HZztzNqh+YC6egxOk5wJmeP/xHqtC7KeHE6rzQoWEpUeI5ABQ+BRKGxdFQS9C86pzByd58HUVnQ Hb/WJUoBSpLYgFoqdQ== X-Google-Smtp-Source: AGHT+IGlV/clcQ7bA1VUVCHwnAC7Ksp+1PRaUPCafXfhp5XXwUagzP+nJKFR5X2c/1fpY3M5q5wCaw== X-Received: by 2002:a17:902:f545:b0:216:393b:23d4 with SMTP id d9443c01a7336-220bbab0e0cmr199459515ad.11.1739543438299; Fri, 14 Feb 2025 06:30:38 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:37 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:29 +0800 Subject: [PATCH v4 03/11] drivers/perf: apple_m1: Support a per-implementation number of counters MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-3-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=4755; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=MG7H09oJBroEMR2rLRIA2iE+Zt5xTdbc861bsPYOz8o=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OA1ESIhZerrZ84FjKBXZFleAZUOZNbSrprv Mym56PWKYqJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JDHbD/wKOIeNqAV2YNyWr/eU5L29ZU0+QQRvSVZBpqK2cU20vrZ6Z1LZNb+v267CjeeBhzFqwT8 v0wrtmAQ7S45X0xPZpOg7HZXN1fa3PNT4YTF81fjLuYSj+zeb5qlpZIGgJbCsIX7vztqB4uc7JZ 8VaKwJRHPLpw/0ZgEtVBafy+Ied345opGHA4rPZU/wyOHBL6T0F6Ym+y5+0Bbwg7nNH2XUonhfv b/Np36Ro0VebowdqZniRv5tU/M9igtPkX7gv/ctXesu9h5PM/GGXKuizGKb4iSrVf3/Rl8iSWrY B7VL6KQEajdCbjUHVySYmFS5sKEbI9POpZ8DAlxIhRbhDWmCs6xUBWXuAu+lL4fwRZTqS+fA5au 00PAk9oD0j/xvBSDPwaeoU3crZ4sDkvCPDotGQTVYzvsbABs966qe61WJrQtHFEQ1ufdPH64NDL GsGIH592Y0F2/jNsH/UD8hqHLQyz9YkWUxqXCXbW/82fxwQhDlyBx9FJIfcFZVnA/CdVuHRdPWl X62NzTBNtyDxRBz4oaP5mRl5GvlJmmljIbyjr/7t8DUejNZU4Pucuy3G1ZpGQhc1GtsjudcgOIA 8+iGYuXNVm8ZN++ev88u+LwYJp13Z3zqjJMFK8umo2BvMTjzhhfdLkNCij4ic8eOgKnWUqa3jed q/I7kG8paRK/Blg== 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-20250214_063039_313125_EC2CD1FB X-CRM114-Status: GOOD ( 15.95 ) 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 dfd5d72ce9f3c5bebd990b5df6a6823fb7785cce..bf397fd81230007dcf52888f148e3158dc02e29d 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(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(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(struct arm_pmu *cpu_pmu) +static int apple_pmu_init(struct arm_pmu *cpu_pmu, 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(struct arm_pmu *cpu_pmu) 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(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, 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(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, 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(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, 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(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Fri Feb 14 14:28: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: 13975049 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 6D525C02198 for ; Fri, 14 Feb 2025 14:38:03 +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=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=A7IRkjRb+AmRF/kCEGjurVAE6D 8ctg/yPV1qBq8wCm4+boIqxf1jsoM5Ad0662GWmTpD5Vq7F99UN4URcU8BxZH9KTEGkOcQORndj9B UZawiZbSbA7T30OR1iQBp28hGGtALcICOcOYnOg5vbIN6cpc7JEiiKLiiXXzBXwENeklCjjXrKKl3 PRz1NZmlUs8f0EnWBYp2Kre6v3d+ZyiGdRy2U2Rc7ubsFf6hjvQ/5vDcm1IvX1dtbuvvNH0VfXyWU QSyb/MyruQkLRZiklmy3pj/lssbqCz6RcKUfNtG25tZgD1vU2eaon/QAmaxtswB3Ku+fNz2gis+HY 7gmDDqlA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwpC-0000000FBFP-2Ete; Fri, 14 Feb 2025 14:37:50 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiI-0000000F9oI-07DE for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:43 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-220f4dd756eso11059745ad.3 for ; Fri, 14 Feb 2025 06:30:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543441; x=1740148241; 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=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=DQPXgOxMHaYLEzScEaZdHm0bhb0JxqmcVdhciwS5Bbf1dtCP/pGajLzMWGjuwy3ZSB VGDPPydxP2Zu7dK1VFaZYZ+srn7aZi+IKDLXT0At+ERkt3H9Su/cXNvnsxu3xntnGZWy +Xzlbsl7iBblAT/D9JNjrth2OyG9LOEnjC5pRj2ll5NDkqYZTH1xnuyLoQvrrDotRYWq V8D8RCGHV9MAep5HAlowjOrDIxQAfSvm+xnImRMaBfgqmd4aXUuh0lEErwadH/sLLoFT QaKvi/SMpdquipvXWDu3Lug/X/GpJd88lOainVPeIjk1xigJ9/Z2wi9c3zzODv3oIw5U F5Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543441; x=1740148241; 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=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=igfrO8XhjdKGMAOadMZYoNN/HPeZX9bMQGHdAZJT/TFTDc3TvBHRoDKh4kOQEHCYtw IBkc812hu0wHY+G6UFEt2RldgLC3JL+3oN2j2jgsUhiuJxN5ztk+YtRMJJ/o7sbkAatA /7eg99yZM6hVS9+jktJUXYuympLPV2bs1UVZ7MxG3Vo9ppvb/PmbhiUuRPBBa5lfCXPJ Wv0aJ4MMfOgMnfl9zCc3Y6T9InYnLtbqqTqNXwnP8VE/2vygLkjqC0SztGu9mQd6VQNk KHnE7tihcg6UT53KY754f0JdyiFnlOytF4wLXOSYl6+dfN4mq1DTvmCDPvdxwkW8BxyE hklg== X-Forwarded-Encrypted: i=1; AJvYcCXZ327XtolIGVNn49fa+YkopHNbvzrUA0xMiQCkan5vPV7F2rsReDbqQz4j3UoUPdZG0rD2nYODMwjmkhsAUyvf@lists.infradead.org X-Gm-Message-State: AOJu0YxGtUeBSVgO2wCylX1yEfmMRujgmE5y6Gf3wND6BKZUYJ6Y/wA3 lt3tRe+bgmSstb7qUMrRXIy8I6In3OzjYeQTPsNS70WmJOPaVfMo X-Gm-Gg: ASbGncvVxENIYSlbUpFFJtAtLYrdylK9sl416AS/WrOonjqmL9T7GIOa73B1Ozcaf0G 3P7mzVmUs6IKPoTGXaxX4c2WjlVdAHUg/umWTMOilW/KTGv62Es5ApVXjAo2xvubmew5Bs/h6M1 lp5Mz8mlje7SeubxDpZSW2QZGmm0oyDvEFWmYoyCoOui7NRvYSRHwSbYCgB9cYR91fW4xZqxqpT cyoU84/ptWYDhVWBgXrWns7bq5TJ1zSe4RtEx32mg6IYxiU90Gs3sp32j93GiJrMJ8oqPv0/oRE OsMA8Z7KDje/z3d3rA== X-Google-Smtp-Source: AGHT+IHItG+fJEC1v2jw86RiUwqBiXRX/eR8U/klOPF6QDGyKbVKG1IeHvzHzNB21irjeh1NLw3AzQ== X-Received: by 2002:a17:902:ecd2:b0:220:e04e:7213 with SMTP id d9443c01a7336-220e04e74a5mr92641655ad.25.1739543441461; Fri, 14 Feb 2025 06:30:41 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:40 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:30 +0800 Subject: [PATCH v4 04/11] drivers/perf: apple_m1: Support configuring counters for 32-bit EL0 MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-4-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=2104; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=JtntoT+/7KJ8q2fmzw/EEFzk/pZROlC/KV344Upuyvg=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OAVGEnzQZGgBLLYROuakeok8cZ6GoDeANer 886jpv7ZkmJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JNQrD/9f269MjZYrwrUDFvUQJBrF2mmUvB+bgJ2lDAEEgy0lfcigPi/R5ir83D7epKRHh1as4PO 3fNnv7iguos1pG5k7ymSqV1wn45aTo1XwJwt23CmijRdhuZoytqDk9VoC7EcYF07Iqo12PaTbuh 6to9jSyEgfsw32TzrO3eousDXWR8Sl2w4tx8ejVqwqBnLFcuzm/NEIwcAsPZjdU1nikKTMK+2GJ NXQ4lngoEJKdNnbi6kIdFos+BRDe/5T8iWq/juGbhxMWwfWeMzpBFFMybJrxiIDi4sZgQQyRFvU moSHV8rLeYaSwvYovYJsTDnZvqk78Ig5tCPnZ0fRkJHrg+3TtYdIvtSu5kygB17dWg8CHO32ZPW pyuIwcbTRShMMEcr4U5RKjbi7xchiiP8PLcdUZ3/F3iQe69QEkwGh9BOeMLOXVrU7GfAlvN9OT7 e3HhlsfI3/h12xxUUX2Ws2AUBufWGAX312kaBzw75olaqaI31x6vaQGreCawbR32c1qqBK3e+xF pNCYzioKnd9Mv2SvsLc8xNFiIWNYN7d5fUOjnhT5oElfeY+aKcfRTpDqq071JkeqRPpIRDiMlpD FUsXRsY2iYVOJzcYH3b1E955q0IT1/RNf3HGaFBAfDmLzfMDMLe8PdGAvE4HSsEbtrx/yFTwFR+ 1PXCB7zP7CCaCyA== 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-20250214_063042_061226_E0043B23 X-CRM114-Status: GOOD ( 11.93 ) 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 | 3 +++ drivers/perf/apple_m1_cpu_pmu.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/arch/arm64/include/asm/apple_m1_pmu.h b/arch/arm64/include/asm/apple_m1_pmu.h index 99483b19b99fca38483faad443ad4bcf4b85ef63..75be4b4c71f167a6874e22b38dc7c0bf30d25a47 100644 --- a/arch/arm64/include/asm/apple_m1_pmu.h +++ b/arch/arm64/include/asm/apple_m1_pmu.h @@ -37,8 +37,11 @@ #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_A32_EL0_8_9 GENMASK(33, 32) #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 bf397fd81230007dcf52888f148e3158dc02e29d..73ba9861a15ff931b5e388b6d809dedb140e2292 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -335,10 +335,16 @@ 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)); kernel_bit = BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL1_8_9)); + + if (system_supports_32bit_el0()) + user_bit |= BIT(get_bit_offset(index - 8, PMCR1_COUNT_A32_EL0_8_9)); break; default: BUG(); From patchwork Fri Feb 14 14:28: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: 13975050 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 E2245C021A4 for ; Fri, 14 Feb 2025 14:39:31 +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=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=N3j1MmpJMJYqyxSxelLIyfJhpF uGpYodLYA6ledvYvIJHfy0kV+s+3XNYMRlHCj0ww0TlkCfFlI6KBGXs+dH14rDXLVIMX1M079lzFG +yqFz68+k2OYLlWUuMlNPGHYNvS1YlByu+qiUY/dxNFWhNe9+mE6pglwMyHkZupkyG4CDm6+cFUuq gi26oRDvhYpzDEBE9RFf3SoP5Y3NMqDPmkvPYe1rMsnqGfLYb9e8n3AjAlFcNu1kiR01/uGuceMZc YHvHVBE/8qsX07Y9wsWqkT3zr39LU0JQgDxSTf6j2szb5mLyA4fDRl4PO7CIDY3sRMRiyCUzDJPzc 1ZcuyuJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwqd-0000000FBUQ-0mKB; Fri, 14 Feb 2025 14:39:19 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiL-0000000F9pS-2X6K for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:46 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-220e6028214so28720015ad.0 for ; Fri, 14 Feb 2025 06:30:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543445; x=1740148245; 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=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=nkSkOowPAOIu4mJ6QdgTVkTKLWEE1Nxpbq3IqknCL9zmZqzdLwn85XMLWEUlj3p0QJ 6WlsJL1P0VqZv0zG2YxYers57a71cla+jH92IOLrDDAAMzUvJsJL/ctmO2/cYBG5EW3P u0BYGYqoAH2CnxYgjj2J0ukb6NOreJM3rsFVru1WUaXPiI6x3rPNa8M90BA6qizfcacA oWy33tiBi1v9+QFrV8BeY9qNouglKzosUSCOx80fXABPPUKofiz0IqNTZsYY4DLqNYii W6JRHCoe7Mo3BKpkjbPwEnbfA9DG3n59s1OtkzkRvttBFa0cvaPM0yo3FO1yBJ3WU7kR 5bMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543445; x=1740148245; 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=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=DSX7LBqMLJMIe9o4JXq/Qmplfq/QXD6uLkvqsaJzZMO9izKEoxPgCzIsMZ/g/pmH0A LZEcCe0SD037y0ykxIyMACIPdSor6+T90QzgQvn5OYP+BQ6asxUEqRe/PC8qLW+iXzZx j0EDi4huWK4viNcwI+CYfmTwCnH7/tTuynYCWt/wVMZQBTP0kgbZYJ6J9HCPUF0laqxB MeERc4UkKiqYyuYk/vVM8gQP7XWfh+VstellGcFeQ5ihNHlH5wctB6/8bJJdCV3cipnt S1pGMIdD09/G1wMN1YCasiBRb+g2afJShAMxbdCN0l+mUXQtjmHOpNTgSlOETBmxpse/ c+GA== X-Forwarded-Encrypted: i=1; AJvYcCW5KHLcn82N/4r+gqc7dNGe5PeCqOZTYiEvIuKVViWRaiAce4wgua3tV5M3scfhCllqrCJsQxNrjCjcoQ3lu9rG@lists.infradead.org X-Gm-Message-State: AOJu0Yy+m6rLBawwtWyQhvFVeWYR0lh0LZWszfQyaW5Nl3t1ieEBboE4 /miBiOlAHyat1ViEMCKr44Uty8bwpOesMD6TAnNdAW8+ZMahrvdb X-Gm-Gg: ASbGncvBbc4LjQFQfeIU5VSuPlmF49TZ0xhdwHUMdH1+Qz244JcPCGjVF1Jp3/UIabY dK7tCD0m/YADe14ujstupfW6TJKZ38HQExxPfU787WWTl1NEZimC35V2LtJZI53ZioJuHDM2hzM S6U2dMjBLK8M2X4uAomzMzjYw+uE62RJip3p5KjA7z2ppjb8/9W2yNE2p3LvbIn9k/EiyAZc9cx U+IHG8y3+aS7EVGO9VWI3vzZwlW2358eINPejytTuMOn+2CYUtooLKRuiG9JctgH4hfyz8h7Hbn 2vYejWw8nC7fT9X09w== X-Google-Smtp-Source: AGHT+IFRr54NQGh/IgFm9UJ+j+G6mFUuuYOyOtSYg0bwbWseWMm/5RMmaT7XUoR1sxFLmmR2C3cCYA== X-Received: by 2002:a17:903:2350:b0:216:410d:4c53 with SMTP id d9443c01a7336-220bdfed345mr189976225ad.41.1739543444569; Fri, 14 Feb 2025 06:30:44 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:44 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:31 +0800 Subject: [PATCH v4 05/11] drivers/perf: apple_m1: Support per-implementation PMU startup MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-5-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=2178; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=6YoEPxJ23tlB05Hr5lEn9IwiUxu3JyxaBoeQXV7L+7o=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OARxgd3D8G0gBs1fVW5W1xQkJOrG7rToycf qFi8+KQB+yJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JA8zD/oCREdDsqvpz+u5NdKYTBBxaf5oGFqwWIjo8D6W1NxIjU38x5hUAaqm0rDKPyPI5EI4Iog SMLIRHb9efzNadiYddp/P+y/5m2Eag7+F30WnxRpPNrdpBYix/vyMzCoxl+RzMY5B8l+eYC+HLy h7k+Vjkn0Pw9OMZ3qUF57pWV4iBgvQecShwPNjQ7AAhC8fiQqQjMHJec6+fCllGR8BlgOQvCQd9 KM0v4GCIyFnvSZG4gUNKqvkBc9DReuHvE9qKtu0PQhMnoGlKag9AAHxSE98ZbDoHRnyENW6Ww+Q R5/nM/o7WN3KVqrh4sNKN0E7NtA8gNx0K+AhPveEnxrZleME+zKfLFzvYQLEY3xwHIWPiMJQGgZ 4goZ08rZ5zlGU0NLTK+db653yIrp/zht+pqJuYMJPcrQszCWACEkwfLRgZspy7W4zXcWKkfYOsT w+QsznZUU90mHFQU1QRe6g0YHVtm4RaOPVWOQvzgEIYQCllqntlCRjqGU1ZcgWFAT0KbQivc2mn z3zbP/OQPBnzL+nQG/ygneSGzh1uy2iA0pFfX0c945SzIEQ+0LEr12/aSSW9wDUbZmjYf+0ZjPZ mMGbCgWSxJufQoQ29w8cnpjHeo5HdY1gBuux2zZDzgXozqtV4pO9+yTHbqjWXXL2bNcw2fomT9X a1Ip3ibTj9oijog== 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-20250214_063045_647530_27A4962B X-CRM114-Status: GOOD ( 11.36 ) 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 startup 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 73ba9861a15ff931b5e388b6d809dedb140e2292..b601d585d204f9e59ad7f5216679b97852a46a04 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -608,7 +608,6 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) 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; @@ -625,6 +624,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(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -634,6 +634,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(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -643,6 +644,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(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -652,6 +654,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(cpu_pmu, M1_PMU_NR_COUNTERS); } From patchwork Fri Feb 14 14:28:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975051 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 A92CEC02198 for ; Fri, 14 Feb 2025 14:40:59 +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=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=TzXefnYTMsZbTSBlYaGjQWgkUX ng6pP8N3rZRVC5RkRXwaJW+q6jD8RgtMary9dreQdVUJNA0k1L9SHym8iXOIcRPL63XlDNA3szMTN LLdGrcT+7yRKlicPndCatpm0dRbBUeBaeAf3HV5LCQWxUNjMJkIbR6h2oVI09y8oQUk5wSAPLwhYC +3GIdOj6ZDhE/WrEzEKr0qjUTG7M4hic5yv9A7PQbL+g2+XoorL4UUjeJbHwz7hkeNrVPrkS3JGSw uk5S3mHGd9C+a0y8C24dUxyWg8MmywR53ftekY7KC4vgAPK+pqZ4LGKHS+UXFjCVnTkmSkDCSetD3 t6basHmQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiws2-0000000FBmt-3gr9; Fri, 14 Feb 2025 14:40:46 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiO-0000000F9px-0xgM for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:49 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-219f8263ae0so37010195ad.0 for ; Fri, 14 Feb 2025 06:30:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543448; x=1740148248; 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=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=lz4GJBqpr+JsW78II3v1m5OAOS9AycSbBFHyy4GxVJPj4c88gVRvWeMnbj+N+YZEY4 DyQismA7vvYIzv3ycaAs7VYJAYSgFWW+aHzYL/LT580yQNkonsKGzpGjS7Q4iQVzwiln o6vO0Rl41voTlqu8/dnDIMumHDBQwS4796rTfTk0jI6tsnmP8XdWLtN/uXD73sdz0rTU c7HkpPn2ykUS/RUqjQgnR36QE9fic5j1R7wSufYNBqWAmtftOH1Lnp9q+X/NqECHmZJJ 9CcjhEMHXauPwhmQENLmcBum2KbCHHmexhpLMObWpMbg990HItd3+Q3a09nyvDwJIGrB jPVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543448; x=1740148248; 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=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=bRZqgIAn2/fQ9utHx2kLZ6suiaQHoy0z0PyTXWcOzcaXkiZKCeK1zjZh37Y8Ptgs7S RnZPTS3ACDGFNLj0mVdEig00dM6qhqeHXQEejvlbcWfH38Qkl0se/6nf+rFoKLBRboXF 37YsmM/1ybTDmZO4zcBWCe4+WrY0yyuo7qPNO1FkOsdf11AGQz/OGFqzfEx3mxsevpIO G7Zx6clzSWKy3YmU9hg8YojUhfSuwm2BTanOgiQn5Oqadj+MccnZLgCQKgnZjfe6VtR9 vr4aOAtxQRcnRsu+FyByP/I8BQZuetYJ25X6UpNNLoHbiik4lOKBFNMt/6G4SkCBcA/s 3aLA== X-Forwarded-Encrypted: i=1; AJvYcCXcnm7okQ7We95pm828aNC4+vSuJ2//cZtkuk2ULNgKImYMv2RnCtp16lMY9tmfn62LdpnIZIp1QkbrjDHDYXB1@lists.infradead.org X-Gm-Message-State: AOJu0Yyx7RbB6BwnqHHokbmBEqV5I+xrZEFiUjf9PJF5gl1P71yR4Rrn ueq+Nu+v3HXuq5dQRdTSOzFISBv94d2d62BxH6VG8vE4qne3sRui X-Gm-Gg: ASbGnct1YXggTL/hqDLJOxiV8wy7UcU6u3oFnuQVXcnk+J+e4giHVzWQiTgCuFxhlhB ZSXPt7XIZ3WZz6ChB2syg2E1dQwh7t6huu/+QVbe80qiamCOA9eQMCstRL5fpGiMcTu/v8nJ2xr I4AppMR88UNGjdBDykbjab0SkZ9wt85U0eDxwo0TD6DCwJIF2whaimOlVunRP8hmONogzBrCcq3 h+dNOKzWfd4RTlMkkX8vh6c7xFdipHrDH26rCKxQH7ijRG/t/vxv1SKGfaOYY5P2a5raySgezbW VyS/TnDDN6mrbrNwvQ== X-Google-Smtp-Source: AGHT+IFglqPtbNOR5d6lPNgfHapWAMCKOc/XtNXDkRhnLODWQ8FuM92j2yXPlsrbIGhvAMP7bUtYFA== X-Received: by 2002:a17:902:e551:b0:221:1c2:2012 with SMTP id d9443c01a7336-22101c2226dmr5121005ad.49.1739543447628; Fri, 14 Feb 2025 06:30:47 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:47 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:32 +0800 Subject: [PATCH v4 06/11] drivers/perf: apple_m1: Support per-implementation event attr group MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-6-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=2273; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=ODunfawf7CVe5hX+5as3cMBvBCM9oIodivRV8l+gVA4=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OANQD+IsUSDqrlORfp2jkKJ1QfjHu80PWed wsiCyMmfLiJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JJ8BEACp0B2nKDD0n9WAUS7AUfltglql9y7lURBC6T+c1+vW0x6Je4TI4EG8CG+yKDEjyQEL15p NewACnfSOBVXdxztSY+6+NvYRbO+W8KZgDlbM4aOAKOg1JrEOtigSYje8BqJbcTWwDC10sIAzSN vAeBN+rANWdrNouVd0H4CCxfo71A2rKPX7VAtQA1fFOuQtS/UG+v7t1pgltm64gCXZqIywyyEcY vgJfZWDLlg91TPdqKrHKm7fKQK81c+bF+I3Fwc2eeDyeIhmx8nCTmJ4vc4BwitobujK4h7Mwcy0 h8Vzqcij+mPbzO2JRwWnaVuI9ngQLF6baMNd4s7+dKxixy0Ubav/CSXn6QT+UWm2w5ibSPxlhiC erl8bLI9FkEUg3jS9/LljeNidQOOhHaIuLmWim4Sg5biRxitgYnCZsV4o83a0eOstJvmuvm3dWl dWCpf/qltjbZS9dfBYgiJQ9ZoqGRMV3tX4IXN/RNw8CUeGqJf8p63a26N+rW6VEQeoyGupejGxS wWfyiDPKNt0hhn6ygb/2AlMgsFWmghqaaZgAapSOJTXjtTmxcjDexxEXbl5F9XzdgOvTQEJZEWh DW8fpWzU/U3GHBHDe2blGQUT3Wm6oFMPVfApfu4+amZjmISqbPhftYJEVBnS6a9RHTlyEOEIC2o kt852ZFaa0zC7RA== 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-20250214_063048_271721_4A6C6327 X-CRM114-Status: GOOD ( 11.56 ) 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 To support implementations with different event numbers for cycles or instruction events, event attr groups needs to be per-implementation. 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 b601d585d204f9e59ad7f5216679b97852a46a04..f98f3e95bfdbb5e9d0fe66357f6037f056fbf25c 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -612,7 +612,6 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) cpu_pmu->set_event_filter = m1_pmu_set_event_filter; 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; } @@ -625,6 +624,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -635,6 +635,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -645,6 +646,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -655,6 +657,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } From patchwork Fri Feb 14 14:28:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975052 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 740E2C02198 for ; Fri, 14 Feb 2025 14:42: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=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=wbrZn1Fsl0hWOptk2zxknk1iL+ y1T0eGKvK0QVHtOqVynOzGMbYSo2Kd4CYJsd3lUrOBx1rCazxYs0f0sQTj8Pg56z2KQQ+Jnsf0ne6 ob1nlSXNvRHvIbexTzvfSniQBGy0w2XLORzwJ7v6yGI3dgGt/7MXKrJz92dMLDFrgl9PD2AOv51n6 urMVkuFcUz5McVFWsu+7CfijUKzHiJHF4sTxZl7sN0nFKXhIKz7ECl7sb7tG7wE8p+8A10XHgtTK8 d7BtVyYn/mhvbEJ//i7WWD3QcLcXl1YoovLr6R/kSFXeYn1xyyZbBjT8tVIP4O/VLHgwbs/F380NR zX6Xg6dA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwtS-0000000FC0k-29eP; Fri, 14 Feb 2025 14:42:14 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiR-0000000F9qf-3YgA for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:52 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-21f55fbb72bso40116865ad.2 for ; Fri, 14 Feb 2025 06:30:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543451; x=1740148251; 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=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=JAo0j/eQ71Gp3s3jTVczmAHJlDfHnt3fXYGvdxuP7goGB0iKh9Dr5MQQm//AVw6hDP kPVyXzzQZQ2M4pmRPrfDqwElKBmf4nJTno7JAaioamSwzNqezC42n0Vb/V3HCb5wSPMR K9Y5rkjEoEst09Fp0EwqpTAWR1O/D/6SXPwtu3b8ndwl/BWsjtFGUuI388IOW3GLQQab dX3vaeXNBEoYnLRYb+8TK/gd8ckTZv5nI0Ml7wflGHs87yd4iEHudteXc0ofQ2KiTFX8 zzyU3IuPYMMv+ow/dhKqNFvsgrwBikWxwpBubD4uSLc1NN+5UT5CC9CEIsJtgQJAFAy2 KNNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543451; x=1740148251; 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=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=j52t5rPIDwR6W2UPjFx7v+5ZTkKFZEB9MCeOiZA0yBzHEZG6yqBXtUGqlJwNwZ4Kcc GHSuqax+2xM8iolJ7NWHdDpsDq8ZAxaxwKL9TgfjVwBCnq4+WKQ42gzodBUVVH+IeuL2 NK+nP5eAvOLiJRKsU2A4Y2ZFKx3DONP6nn1rwO4Z7lLmceKDplslLVgkw0tCFQ+m0oY1 OTXZgXsp7vuQPTki24AysbQmPS9AuSalOT88WYiFGeB3d8z3Fkt4x2NTNAPBofp1F3KL 9lONk0k2yqMaFgWGIqTx6LUfu8kmx1nvBZz4k0HLvIPCVN7f8fCYjDbGk+VSp9czJFBM tUtA== X-Forwarded-Encrypted: i=1; AJvYcCVN1f/OW+Tx3J1GYdQAECJhN/o79wgdryv1mHL8fkIm0mKxtjvRpBuGL/bkoaTg88KZWeZSBSnskTFrb9I1ZIN1@lists.infradead.org X-Gm-Message-State: AOJu0Yyx71JMJZnHTZnMJfAvbuphRUrNPhICHwGyZVJ8MyJH/0bCetQw QwSroSIGaoLeWoYEPnOgKZOXlc37kYAdDKRawtsWLGwzRU9SnQvv0SxZmw== X-Gm-Gg: ASbGnctxFtl5j0Bmv7sQc2epbsvWnDAOz68+fhiMKEwSvPf31KIkopFzsHlb9rLmasg Tmx8w7GvdGYCoNzVNKGf10vKdvDVjcGwqBmkNeO4AfbmHIeWwckY6YbkLmoY57Q6qqVefixKzhT GRizRzi1NxGao8nrsP2VLV4FInwjyBVbPyQe6oXymR5pBZHpQ2yOI4dNFHWPLF74Ai6M7dg6zfM lAG5sWgv8rIMg1bJ28cE3PVgVhlcmsnWHD+EOhi5qgEhxSuuHcWMexO2klhmx7lfqdcfkYEjk+o vxgIQ9XrWzrPE7z0pg== X-Google-Smtp-Source: AGHT+IHtM34hAdmN3/8lq/L+mXQ/bc0/1i4ErnQvcV/SkWbSoQ85kr8JWHLJ8cRA9xk99NkhJdwYFg== X-Received: by 2002:a17:902:d546:b0:21f:f02:4176 with SMTP id d9443c01a7336-220d213edf8mr125352465ad.33.1739543450709; Fri, 14 Feb 2025 06:30:50 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:50 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:33 +0800 Subject: [PATCH v4 07/11] drivers/perf: apple_m1: Add Apple A7 support MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-7-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=11055; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=HIk4rf7zxCOA98DOmDx17AWtajnJ5bX8H7E5/mhDlbc=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OApy8rKggKVG+PcdjLuvD+0DYRXtlq77ybW ngOTYDOEieJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JM8FD/9z4U42h4UhGpIauPs/5mDjKcfZz3jgfwvnZtuykmEtC+EwwuOAyHSx2p0QNvLdLM8agw+ DK/qkZ+1sO3ycjT3b1P5oK4x8RBOpaVTcXjLEfKuMEVmBXcsCPQ1IJM8S583lFjwoTMEZIVkHl7 VJlRMoRLfTyNEH9tuKlh1Nd8H4kIfzcP8TrhXAsCnVGLR8cc5+KYSG4DmDqfma6dQlNvUv9FFFV CmOJq6mbMA2V5fVrXGCKEz53hlTak6PMYlIPjGFk7G80PzkGLkjKtcM9FcYpbUKYnnlQ7dzOQnO BHyDPS/y0T0d0FgO/fJESi3wnYELcKCelv0JWpX2yXJZGBqwz3ZBYZWQLEP8ypHtZHOahy2USlj VDMEPRVxCS7V0DcYJpUF7GEaNuDIfjSaJQzFfUazNq/RKcg1fomHFnNZggRdCbr65PRowzMbdcq eHkICOKYioGJKBnLfCTQDKnQM+qymyxQLVnrdrISu44BRT81JriM+exoxzmTk6XWN6s8UJ56RFd 0MA9CsTu7hev0sksc1r2RxQZhNBaCTNYki5OibNpiQg6G/hRLlFmpQF4B+YRLqvjo3q3ujqSBFx WjfP22lhpJovupfbqEBW/PgjZ39A+GtpFxLBrCpFGPFBa1ywvi0UgFtDOcXxil01KE+c5IL508Q oHhvEGM+23DcABg== 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-20250214_063051_900350_34D08CF1 X-CRM114-Status: GOOD ( 17.28 ) 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 | 190 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index f98f3e95bfdbb5e9d0fe66357f6037f056fbf25c..93b49f08e5c740c5bba2eede191e279ed4965181 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, @@ -185,6 +331,17 @@ static ssize_t m1_pmu_events_sysfs_show(struct device *dev, #define M1_PMU_EVENT_ATTR(name, config) \ PMU_EVENT_ATTR_ID(name, m1_pmu_events_sysfs_show, config) +static struct attribute *a7_pmu_event_attrs[] = { + M1_PMU_EVENT_ATTR(cycles, A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE), + M1_PMU_EVENT_ATTR(instructions, A7_PMU_PERFCTR_INST_ALL), + NULL, +}; + +static const struct attribute_group a7_pmu_events_attr_group = { + .name = "events", + .attrs = a7_pmu_event_attrs, +}; + static struct attribute *m1_pmu_event_attrs[] = { M1_PMU_EVENT_ATTR(cycles, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE), M1_PMU_EVENT_ATTR(instructions, M1_PMU_PERFCTR_INST_ALL), @@ -494,6 +651,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) { @@ -517,6 +680,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); @@ -551,6 +719,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); @@ -576,6 +749,11 @@ static void apple_pmu_reset(void *info, u32 counters) isb(); } +static void a7_pmu_reset(void *info) +{ + apple_pmu_reset(info, A7_PMU_NR_COUNTERS); +} + static void m1_pmu_reset(void *info) { apple_pmu_reset(info, M1_PMU_NR_COUNTERS); @@ -617,6 +795,17 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) } /* 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &a7_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -666,6 +855,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 Fri Feb 14 14:28:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975053 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 EAA0CC02198 for ; Fri, 14 Feb 2025 14:43:56 +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=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=Qg1whGymz9LeegC5OoTNG6Kcto 3WaKYVrqfp5RbBx2zcnc++W6Eftj3Tajx7w7ps+hJkC+Lz6fg4aN2cxXvfjEw46/Gx/f3S/hs86xt bgYkuKzUS/CK5nx2ij8LqBffoQOGeCHTsGX/ujwpA/NnzuV0209KqpIGSPebdx0ygcpjwnVvfkwbb wHNhFWuiOvAyGeOVmoJ+lKcOxIpr2Mwjniika5a+HZkzcksbWeYHmBib300khQz0hEIxnTG6DOsZq f/pzTnAmR/X49wT+0iWGJpPkO7xaZlSSy8baCYi6fBqjUBnu6sSrxzhHb9JyyY/+zXlnRQTX+b6pF y3NoHrIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwus-0000000FCG5-136u; Fri, 14 Feb 2025 14:43:42 +0000 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiV-0000000F9rS-0c9H for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:56 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-220f4dd756eso11070545ad.3 for ; Fri, 14 Feb 2025 06:30:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543454; x=1740148254; 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=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=jHCivTK57ep7MX4oMBijVpvyKTCSyj4q75mnmdTNytjtg7G+LKZK63mFohk9n8jMMQ 3zLy9GEria3RynmHYm7s7rKfRR2BdsEBg10MeVvpFO6QPDFYItEPWbYhOfaGPcnGnCqL XfxLYnsx3O4iZcZ28DGqeFemtBVRIN0yFflIFuKiKrJ/PrMlXPIfD3ILHPXTNdPyKOSK 6nmi2hoWm0GObZnO5xkLmYG86QvuiRmIExxFUVl7Qw0QZfLgg9nRX8PFB4jGsVabX5aO mnKlXdoneKZXp6R9IAdTLqmU/U1psdL87QBSPPfGVEybsKK3qX54GuYBMyFluapULsM0 brww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543454; x=1740148254; 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=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=rlnbPmHXk5AfGhV4XnPZFDajO+PpFfuVpQNmODNu1it3aiJb8SRY8RP1gLyMG7t5he Mo9mS3ykbX75fAIjzboRJ9qUvYrf2NR7QZq3PoyGk/gXo+w5XJ916ouZEITKrb4eKnuj CCqQmxfg0aeZDcXsh0fEiF6TYM7L0cKHS5rURRddYZaZFNTb2DdZHpJ3P4Q2UwWkbUMM mH1O7m/N3O98Mckunhrl7JJRjas6YJGQNNden9eMEHSAdLDvr/zr0seyHdaRNm0Pq+MM FwlIM2fxuZNiqSKfa3IVUZTFHQ8RpQqZisFBISJOZ41VkhPcw1kt/MUIadMmMQwIWhrg BsRw== X-Forwarded-Encrypted: i=1; AJvYcCUBYGoctQPRRij+WIkkBiI7UkMhZK11pT0gUVvIljIqSzb5Sz8QAJLEEqgtmUGM20YnDICfK8kYvmCcYC5cOuj+@lists.infradead.org X-Gm-Message-State: AOJu0YzKFx23+gkHNJGyRAPDPOBgE8N7m1hKkrYqXJaK5EHa9ec5OyhF KpHXx2vFAmiZ1Jt4wSlTuml/+K44WPqi5pE6cl2BC6v+54gDZeza X-Gm-Gg: ASbGncvEX3EqOkipa7B36LLh0qrvnTUUlawM4vIUBu1fnGafmNzlffeDYpzy0ci4YwW szLj/iZaX58QI3o31VdMHcCcAR2ETXx0LQkK2W1FC8nOjQ+cSg5CLuT/bk6u2ZUquBuO5zQphg2 /U+1cg7lJ66WI5T/sQKzKCNXKXPdPnOy6LXB/ArEh7qqLRuduCj2KlHFiDFZAxoP6bc7tApkzqI vTURghSMlUQ1Watib9bK1uBEvuA2k8GzBCQsZcyvXjDWvwUOTdPG9JY59VtmIq4bk7Z4EJIlZj1 eM1wBccpJkvGZ6Y/OA== X-Google-Smtp-Source: AGHT+IGicJqzYvZ2kBokYOUartLTRRHIQs06xopALYmjKha8YAcnIjyn+kDtWWtibfSB/39BCxQBqg== X-Received: by 2002:a17:903:945:b0:21f:801a:9be1 with SMTP id d9443c01a7336-220d211297dmr117087075ad.33.1739543453897; Fri, 14 Feb 2025 06:30:53 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:53 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:34 +0800 Subject: [PATCH v4 08/11] drivers/perf: apple_m1: Add Apple A8/A8X support MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-8-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=7312; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=MbPXWlvl+CRdYMbAx6AekhnxkcwDgazyj5+54FmTU+Q=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OAHvQJyXKm2tzcgCvKteuIspuwo0swKQXHQ uyz+T0SRhSJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JHAnD/9J3hVn1Vzklw8t+VWNz+6RaK5irZIJ3x52ZXNykdP6jM/Cj6awFlvjpGQNwx/xg2ny2qo aLQ2nUXUcPiKAN1QHi7fgDxNw36MouVSbOBCgfe84fFVmKvCtHg40J0NoWDGJ65XvWFCqWz5SZ4 RJMd96t3sqmy/cq2pvXqzn24mx3sxLVMcEGBaGPlkhFl19jsia5guEZsAy0MQ+Cnn0XNmZI0no3 evfccOJgGrImhjlmmqPQEWYZ51PQAYr/liY0Sa/llbM8wHn5JNKMEAVIXRypeMkwbrANDjGkJxy X7KmGZ5ZpAFIlKRYfIzSxEz6PjDPYy9GCOBkWVqrluM5kJ/hyNl3BoovbqeXA9OgmdQ7WaWr86U i13yNXHiYmoNoeYxAeZ6qjMgjuQNlXIy2WUvSqVmRQe7CpiyIEJRkvlO0YNe6F3of+tWrzRBfm8 I54PV69KI2IvOx9KVGUrcuvqN0Ts1F9frpR2zfNf1oI6265kGuaT4Kz56YaaSu1dN3CFVLitldA 8FCmON3R3Y1jDSegm8CN8XEl/CPhWXCNEWiW1u1eeZaLpHn/Zu5X2TPMS3ZhAhO14lkJCITDIdB 6XsgMxyLoeV6t1w1on6CLbHBeOUr2hEbhRF8nra8CuzeSKIzijtW6yltSXIYXb3FOT/oUE5U9Bq I12ElvwC+Rx/wTQ== 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-20250214_063055_195759_FD10EE29 X-CRM114-Status: GOOD ( 14.00 ) 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 | 124 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 93b49f08e5c740c5bba2eede191e279ed4965181..04825a1991ab1c670563e3ce91b43fa5d8c85920 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, @@ -657,6 +763,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) { @@ -806,6 +918,17 @@ static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -855,6 +978,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 Fri Feb 14 14:28:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975054 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 7FF5DC021A4 for ; Fri, 14 Feb 2025 14:45:22 +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=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=1N5LXRzJb84RBws2D+3UVnrL1h 8ercvQTIsz0Do19iejO9nMDOsnQfA0jNlYQq73ODOb6tRf99itNF3ynhk2+SvccalnwqonTm/9oa2 QAWX0ItGZJhbT/VJGxC5TxPZQUFhlrOz467u1M7D9imsX3cdz5f/ZT4v5p9CCBz/K9zIPLBrEBS12 WlYKOMj09p1Hi3HMfZ7j/RWWFux7hDNH+5dndpo7j/v9IPl6SrULf88D9OTUjYRhQVU8IaUUuFc05 F1ySAZhAgpF4XShRpCWR+juewP5HIiGq6iQBIRMMLPoj/ReLgVSLMC3i2ptz1ubymQQzkNP9oIHIh hanzNLqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwwH-0000000FCXy-3mz1; Fri, 14 Feb 2025 14:45:09 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwiX-0000000F9sO-3Ftr for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:30:59 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-220ca204d04so28581705ad.0 for ; Fri, 14 Feb 2025 06:30:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543457; x=1740148257; 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=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=fJSPoQ8j0Htq0Li5MYuSsI3B97+vTltH7v0gJ+kcwaV/tj1Rmg2Fw42ks0gi9LWZLv avyFDUd33m4wA7ISOzR/VKSJrTSvo1HVI2hDAnQ8KcMAUQXxtX9U77Ym+qUP2y62jmmx 0xLDG4NwS/wrXvJh3roEHTfi22DUnFFKS5+g4TgpXktTFEzcnsB2u4fPiR9ODcjC/Rqr f8tLPZqn1+u0Tt0ZjllYkodmKPC1yWME4EuOCXK1olO/uzezy/1ub1agsMiPXN7jSqW2 Bjr37Emr7ebA+DFxE2sp3TgXHl690QWrSqN7zOGAgpLu2FG1dn27999NuihhKcHaTEt2 FTbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543457; x=1740148257; 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=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=NPID3U5oj8PD8WZ+mq/p8JoKQ4Z353/DBFXs+Id6HDtNy24g/3E+fdXnZJk9Xyj6R2 bDDliP5Jf5BKENMUzPdu+UEJvvOT5KrhWgPg/z74t4dr2no23Ue8hNWum2da1VFmKLxm gVAyiAvyycDYhVx0A+J/MYfgFX0EOjYagJ8DFE1/K6WJoYSkikO2C5/vT6HKbYGZJw37 2Ox+Exutc1R99CyRA0YoRTW5DJnQqH4u4qbgee4JT12FpaSYn+hK7pVUEyS9g2HnqSXB S0FHxhcQg2lOxZmECFS6D9eaJH3rMwZSDotajHhxyLPt2d6SZoK6u11lkJjytkCKeRrC j5gA== X-Forwarded-Encrypted: i=1; AJvYcCXJj+IznYJZGv2D9oi0qQFtxpaJwTEWLQjksIrq4aV5nZVzXspVCyTc7D82qlwKljTsurFF5nSot2UcEGWgoqGd@lists.infradead.org X-Gm-Message-State: AOJu0Yxv9oS4gzt5HV82HBn1rG9CIbaOjUqDljlXObnFbaihhrmPaFSm rAhbFRGgNo+fKJOUNGAeLNJgp2kZyE9G4syQvDLKtgeYwmQegHRn X-Gm-Gg: ASbGncvfJbYfgEBM2tCd+7pNOoQGOeIviyiRGaWsJksDJ/womjsCKt6Yi8fLTVm0iiM MGdeqvUU6Ws03LKRCVPOkeDYlZnUHRapSr0+4YntGkTswivtHOYtStnb6xGPO1VBVqowSjIi/WW lHH1cDQhvb+wqzIHEUFlwCpvqXg+SHEVaz4M9AQYiwJGg1i68Ao/6XmZVlSY50cZjwo6M1KAkSs qmHioYScEHZuYMoFXF9sNI/KXskPioqgcXUX5HRz/MLWu2Bb83wfw1lCihuDuNgdfeL6SeEmK/+ v2yxGy76uSjHTX/uwA== X-Google-Smtp-Source: AGHT+IEVSE/Y6cpIeGYeF+jpYChzS2zybZlEniBjGqkXH0nhV91KooXSVZXwegRR86VoWIi9EndN+g== X-Received: by 2002:a17:903:188:b0:220:f4db:98b4 with SMTP id d9443c01a7336-220f4db99a4mr38780945ad.24.1739543456995; Fri, 14 Feb 2025 06:30:56 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:56 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:35 +0800 Subject: [PATCH v4 09/11] drivers/perf: apple_m1: Add A9/A9X support MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-9-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=6995; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=IOLPmmdLpTyze4pMSwzOoHnsgDuo2hfTL3xYJ/hiFU0=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OAAzbsZznXVNuG0tkE6m4quoPUcIv52LnDT Fby5td33cKJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgAAKCRABygi3psUI JHI0D/0WjqcqLActa5VN4oKwyRqJgJkhkgdKR2odrxUePOx/6B2laKpsAaekCusP5IULd8WwKwB Ye9v72R2/Xh02/+BPap7uRiw8L23EqT+0i6iuccO7L3uQjszRRV54WggB4/pm4gbS4GEbbLCDZN Flt9JH+OUpyAxrW6UTP3tJKGgw6TvtdvsKdPrSNpVJV7oKHa+JfQkmHhHbJ0PBG/GK4GBO8H1NP 9jBZctKWMEysZXf9Le4tIZuiF/Q2Xqlp74+5Q48+lYoC45VTXIxAgf84ZHKxptgslDchKDxEMMn uJSyhs2SRS5mIz8foei1Y3vpZysrgHFd7tMtV4SGtCunYs5xjoalp91yey/rpZwHqndvdccWC4j CPr1sPJMkDCjMU7IaDmGgfqscVBGIJr3emveUU3/IzHNsNgYeLK9eFwsXG2ZPE88hdefON8ZHPC cwZiFrxmtHqUgSehZvrE3JZ3XQBUQNM0ww8DOLlMQN8JLnAyrNO4xMN1PuBk3lrpw7WLAChifxX O07MuGSKpG0RH4UXJUpTvICsKqsy4DzM/tMWlQCTFPnBoxBdvkO6zKhuBonaDHO+22xnYCp+lgu qeC2bDVCTd18o51CGTt8jXXdWe8lC4kKP+IOmrN5AVhk0Dl5fPM5hFjxzvdwzkSh/fUU1fmsKsH 5i1uNhXH0F6CAuQ== 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-20250214_063057_853107_A49BB544 X-CRM114-Status: GOOD ( 13.22 ) 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 | 121 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 04825a1991ab1c670563e3ce91b43fa5d8c85920..f7ae5cd56980b75d8f2073368479d0af77ab351c 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, @@ -769,6 +872,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) { @@ -929,6 +1038,17 @@ static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -978,6 +1098,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 Fri Feb 14 14:28:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975056 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 4A90FC021A4 for ; Fri, 14 Feb 2025 14:46:51 +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=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=LJsiLsr/dFa2xbFYPpiGbFIry+ dpNriLsFGXHwxY/fVZ+DIMBMwXynillHIzVYfr1RwULqm06SMogVMocVZiV1LJxH+l3fhYR3cztkO AVtgV+zK1TLeFWLnlJ9OpsnVM+OfGOknEERQo5FBnO0/pq1Z8FGuoKVIWtOOwcHSIdPqqh1LXYHhI 6VF6ISS+q0ElsF8bGKZQtZwzJ7to0dYcaUjqZIY9IBqkt5OEpfVdcbhCypAK+plmAyWl4XJaxczEm YYvfWH5pHk/V15BupNG7KmtV6Y6CdVoR+Xwjle3K3IRMgb8912Ks4JcLagjqzq4LaGMiiNeaHqY0t 1xMV/2Eg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwxh-0000000FCpK-2Yaz; Fri, 14 Feb 2025 14:46:37 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwia-0000000F9uJ-3kDJ for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:31:01 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-21f7f1e1194so53441975ad.2 for ; Fri, 14 Feb 2025 06:31:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543460; x=1740148260; 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=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=YA8+aLG69IcU45I0ZDlCIXrfN3eUNzT2QToJ9hGDALBqedTWWYCSHp7n/SKtriy2hl TmL6XfVQsZqHpe0KTK7VOGqpM8K76lxuLji33PZjErT7n4HjfcPzzJWOQG04cqhxfnry 3XZSWFnQcn2Jpu5DNKNuCFbAUyd9C312J1ghvlEjL8j2DPxwTAY2MGHwPrv5epcj/RkZ QRN22uDlYNsMxcGIWTgRq44wlA1TLUYTN/vTpoEmyVvrPDccJnh7kgQxCvdtimj0ThSs kLmC+c+MXmtGUkTBhmoKs6Z8aV3gaiCGeQNLdwKitoJlSY68NNt0cai3nT3BoVAnG1pq A+Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543460; x=1740148260; 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=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=MAFRTyensg3SVayjYn6/RR5Pn4Kc/i3NpG0e7qy8+VQm6m6tRXhuRrRPjepokZ8jdc eT4krPTv6F1hW50G2FZ2PQ7CFUE7gT1sXLE6q6JI1WZJI6zod0Yu1Y1ymOblxeO+9t1T ezyFf3DAUBKuGfnDM+NqRd77YOhHQVk8osPzCTpJh6Q51Xdb6gBmgBwJlhpK+REUJzGR tHDa7ywsrR94ETehsIdHC9NR64/8OvH7l6wM/MsxvTPsIFVAnT5Ge7IKuwhRSexF/NR8 JBbsDBSIQQb8LHMWm0Q+Dhzzfd3p3drYI1FO3kugoBik3qwwMt8We+USBUNV8xC6zIuq KefA== X-Forwarded-Encrypted: i=1; AJvYcCXHuXOJe7DTljLMusK0gVvWAFrml2MeZViThSma5ZRuMgrnz9jVpzSFthp14m9IW9IW2Qv9nHHElzBeC7syvgA3@lists.infradead.org X-Gm-Message-State: AOJu0Yy0b2WpEu9MVweklfCao2v7UmIo69dCkdmHEySAQUHFJRXvR2Gm GFE6VeS5RnPJaH8iuAyKEh0Jbot6ZI8f2bhQSR82ts6yyDiTPwBb X-Gm-Gg: ASbGncvxqAXMgMFuelY/z6CncaWLV1GbWg7AxJb7GgwXxPVGK8CGy0eRdP082TLiJhM E7kaEgst9XyKUdfSSkR/iet5ecfEUcVUI45Ohzb/gFkDM0cBL93G21mo1y7Du517FjMDdTzMoF8 gcOiRdvxL3FZ7mA/4GKAG9YwqTxUnQ9GfgHBOEfMChm5T6oihb5ASAkuLsklJjpVn31RsoNRZKf +8w6jNEwxmkokUWvisJAYzqCDFkK0q4Go2HO+sWjELtRiJeVnLfDI8+/jKXgrmEUeMrQyeQ5OIL 1lsYGgBM2OHsTfTeww== X-Google-Smtp-Source: AGHT+IHpu6VgcmzS1KzhqUj5UbaoYSDoaSSSs0nHSTsqu/fPDL7/eSN0nq/+cxZezbZYh3NWR1VlBw== X-Received: by 2002:a17:902:cec3:b0:216:281f:820d with SMTP id d9443c01a7336-220bbb0f048mr186911715ad.11.1739543460243; Fri, 14 Feb 2025 06:31:00 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:30:59 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:36 +0800 Subject: [PATCH v4 10/11] drivers/perf: apple_m1: Add Apple A10/A10X/T2 Support MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-10-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=7476; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=lf7A3C0Zz4tESlVXeyHjO47IaZTEqkMcyB+fvyCShrA=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OBrSMSL6fyAhj4ZKO06vkB3R/PvKyhH/NHq PZ8s/ilycaJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgQAKCRABygi3psUI JB8NEACeLMW5i+kY5GozkF5iznv1WyUQYAQ+R/rEP7C5ueOC1xATdrLUcF2874tT2hXDEDypbrm SnXjWpIsGe6xLvjyitlqcla5chIt/Dq6D1Bs4VrzplrJXHOrwPBRWsIDITNPCGvS4OSB7rd3HaW HHufoTEtkkV2zt465IMVObgE2dJMiNjE/qCHBUmYY9R7XsxHk7gjVooW0euwxvUfebNsB/femi7 pplQ4Aa1XJaI17sDLIR1M+3buGdfK1P5q+LLMCjjZtQhJzamxmleHMUG96q+S0twcBBTotDmDET KUmIxPzvKAVVl8f9fccNazDqjmQv+L0sRBkDnRYWLcqJyRT85cnaNMMZ89xIY0aLWjztVAT7kA5 3hlG5U7CxWu88EUWgOTiSdIg2PH8ilQqiLFEtRO5dLc/Bzz1HQMgjvbIGSwzk7vJsG8nuOFGcw8 oTXlx8aMLGLQwxb0AoTCut6wRl2YP6Un1oitNWZNgOCNQk6wjYDm3gUuCyRrBQ9+/mAdTwvE5zp QgDLSh2BkyaIWSGQWKdOWl/val7gCJWAgc4stRiN7E4tOu5C+bbxJ9uxAW2xLhfbKyTY0MvN+3A v0MMhrUKh4HOZGDfIAm2lluKJcVTz2lqdfK5qI84fEvVbE5kuz5VZcNMkCjbvtSkeVsmnOMmhNb ewuHWxPAwaFFbmQ== 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-20250214_063100_941047_3D624D4C X-CRM114-Status: GOOD ( 13.37 ) 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 | 127 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index f7ae5cd56980b75d8f2073368479d0af77ab351c..e66ec1426f5d9d48ef52abd539acff7648958785 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, @@ -878,6 +987,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) { @@ -1049,6 +1164,17 @@ static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1098,6 +1224,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 Fri Feb 14 14:28:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13975057 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 544FEC02198 for ; Fri, 14 Feb 2025 14:48:16 +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=+x1KwZxNSrdIMQmJdRQQHZgni7JuWBTiuRq1uomt/9I=; b=Xb2qlxFxkBcCZLOqm3g8Oe6mle gvhMm8ncRn9+0zVZB1MsL0GUf1QR1HBXOEj5WIYqlc3IIyZL7jSt9+f1OuNpUJ9OAeiqvaLCt3PJb NXA4HhSjAEESVlRQHC3ZOzwRA/6VoKE6l/E2La84mDrxiff1KamXVimQaq0C/8YUAlUHkcen9Qn80 XvbFxBHhAz/C38GEXzX0KkuaM2HMdj3dTIAh7avDJq4NBjgPtF1EXkAN7siKF4hg8BejG7pr0Q+nZ jCuytbEMqUDRgWW0Fl8YrdRpMGkUegPucpWJjM+4C4n5lv/lB0itcJJGL+ROpiUN2XoDa+bQTa0Rh LS5fcdjQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiwz7-0000000FD6X-11ZL; Fri, 14 Feb 2025 14:48:05 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiwie-0000000F9up-0NdF for linux-arm-kernel@lists.infradead.org; Fri, 14 Feb 2025 14:31:05 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-220dc3831e3so27537985ad.0 for ; Fri, 14 Feb 2025 06:31:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739543463; x=1740148263; 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=+x1KwZxNSrdIMQmJdRQQHZgni7JuWBTiuRq1uomt/9I=; b=exS032qJl7SiyD7fwcPKbPtxkY9nXJ1EADQNT3gEaXNgqgCnKlxdXq6h8AKProFa7Y Zm2594OA/tF0BOqPsPpo23Nt6l9QzjWwsMDqpWfUr9LNj6K9JgZJJwCjd+OUvIToHmTO FRp52ucBFmRQmvX6pD7gnJ0K9QkKdcosble7ymtHd+pBVumYUT37epwqB4I0oV9lpB57 tHFy74Gcbcr38GNClsfhz2H3XCN+ytt/xwiy1eAlimgnxknkXQEpQFqwvi2CB2vnGS0B dZAzm0PUwiQELLx+ValyXUrNFvvXc6QjDPoxVnp+QnD52hD9KsC7jrFVwLVZDhbchcNu 1FZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739543463; x=1740148263; 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=+x1KwZxNSrdIMQmJdRQQHZgni7JuWBTiuRq1uomt/9I=; b=G1ZsG5Dv9SIvGcxgZe73pgupsVfb/Gzv2uTZO2hhN/aSfA9kxwm+eksLHySuX8MiBn yW65Il8fj4MTGmpzaZ1+XLse9+Qlmja+DqFIMXqN5g0ROSiWN1SucCBNdA1EBe0obzBO 1/t6YTZOB497S0Pmbe+G/Ahm2rqOHHlpzFXTmhf8lxtl5XVSISp/qXpnpBQ0/QJJL4dp YcNPW36j9//IERxnM9zinslkw4FHo++NgfJsEzlsDCJ6lrgUGR0Ep3DQ3Te7V/COXU0i w62eUxUBKWafWu1PCB6V2n6AiuO1BH8WqoMsAMe3WjX24djT7/4zaePZcpTxMHgInnzQ WUew== X-Forwarded-Encrypted: i=1; AJvYcCXa5LNwIAreWA5Ic/vnFR7IOEt+Kk22C/EQ3UPskU2WRyuLq6KYhEVheNO2PH5KVCLnPcOw4dyurAQEc0Hwvwkp@lists.infradead.org X-Gm-Message-State: AOJu0YxGknn6a6ksfZzSWv+7WKcqwgb1RDegfxBaE+jMWcUK0M0ajwxl gNvyUxDQZ7cQDPQhEALf2I5ztpGPydhKkvUaD52c4LuZrcKHhzej X-Gm-Gg: ASbGnctibzx45Px9LOCbH+4xecO2JZ5d+p2VwWv1IyONIL7680nSZVpExJTMmLI/Mb8 jusIko5vT6wRZaqYd338/tJzVGFg2CtkHlLGb14U4zXH33mELLM4E5nNRDXUZlJXl/6l/rMYtYz 0dFQ04Vl7/gCBJiZqA2E4G7GDiq3QTbNqTxF4itMgaLby7yR9GjVe7+xLCpc4g9HvxmFEjvfRMi zBVUBqT4l37sUmJoiPjaGhtYxc0Pb9QlGP5jXoKB3Kck03U/5wzyXPk6hCNYtKNSFRRoKEiXjIr +TSZPRrbYaiglXfSOg== X-Google-Smtp-Source: AGHT+IHEd6g8rP3PTcEbBpzib/KLNqeBwuG6Z4mi0XCVCkr3oKIt0ITp/BFhBdGufa+NvOOdmbN/zA== X-Received: by 2002:a17:903:2f81:b0:21f:40de:ae4e with SMTP id d9443c01a7336-220d36ea10amr117696205ad.9.1739543463400; Fri, 14 Feb 2025 06:31:03 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-220d545c8d1sm29490315ad.113.2025.02.14.06.31.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 06:31:02 -0800 (PST) From: Nick Chan Date: Fri, 14 Feb 2025 22:28:37 +0800 Subject: [PATCH v4 11/11] drivers/perf: apple_m1: Add Apple A11 Support MIME-Version: 1.0 Message-Id: <20250214-apple-cpmu-v4-11-ffca0e45147e@gmail.com> References: <20250214-apple-cpmu-v4-0-ffca0e45147e@gmail.com> In-Reply-To: <20250214-apple-cpmu-v4-0-ffca0e45147e@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=7988; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=vvdMzw8bbPqoK9nrfiGpyfrLmTCkg8tuW8G+NgndUa8=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnr1OBOzmp7pWtB1lpiFZND5Ndbu/T1g/ic/Bft qX0WwtkiuuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ69TgQAKCRABygi3psUI JBBKD/9yFe75eK7f5/j3i4+TcAJIGyyJ4DFJC1sEoNntPqQc0achTFOrYvOBV/IRd3e+VX0jxkH wNoxXgT68wzXzV872iUFuHCVuKJNpy8zV5Tta1ig1GaqB5USx9egspLv7svPJ1i9fRnZvPkBzNh 6P0rm+lQk0/F4C2zDXCUea37WyrGtDajyMjPaFEILOsdZ88QEmH49sNIgRpKS5qch4yTwdZ1uAz ffePcFyz+CNmZ4eR7hAWEf/5ZvSkP+iVftf7vpuCMus/yNTaya9ULZdarccwqOPEeZkEfT9GRTT jyO2E6nr2n72kgucJL6AY0V2DIV/DHBzHt8bhD7AscXdhyRtcj5obwR6TxUlBqbPqGHB6bq/5jT Um4JDPaQAJMTLNGdmzfpNvIw+jkStpFHBM29c4bTmB37NS4YDVPVGhttQ1xriXHsSTyO83C4wcY jCRphxeMmT6C5FHKQ1aOQNIuv+pfXRfPWFGPun4z2yE114SsWvcZbGmFHRoFa2fsvyIjQWHf5/P hrfYCXL5JkVz0vGDeNunpXa3sxgAQxGdUMV3Tt36W+3j8c6tXfE47qEnKxlCBAGYahFLg+7UjQg OBJyHl8jKGwx4F78+fMgFZ0jAONi+nQF+3Id2G7ed0S47RjKYEl6lG3U+5mSAYyV/eHXWCuLBjS iqGovy2dSHL77Eg== 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-20250214_063104_136760_8FDE11F8 X-CRM114-Status: GOOD ( 13.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 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 | 137 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index e66ec1426f5d9d48ef52abd539acff7648958785..612ec0dfacaa9c3fc43a3c122d836193494967ad 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, @@ -993,6 +1100,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) { @@ -1175,6 +1288,28 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, 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; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1225,6 +1360,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, },