From patchwork Wed Feb 12 17:22:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13972218 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 A2D33C02198 for ; Wed, 12 Feb 2025 17:28:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=Z4hg6NMnVK/u2YhBMZqixdn6yz maCZHb9DKmO5o8vVVH9YVUPBce5g7xkKF2ln0kmn5rFSdhoH+UxRDdCoKC73mfS42QuRkJeJ4ysy6 PRE7o3tlLmB91825o9jv8+RRH3ase9u+aJRZ8WQ1yqoxFby16NJPHAF1LxK8oRs/+FEKsBw5fa9C2 17rmovobwL22QaSu7sGvNkuasj41h1CExapojJZ+EhXCB3c0mdgFa9EB1myq5BzcDMDHJAOn65R+k 6W9T7nRn9NfrtI9yGij9mgRWnwbjCL14/oGY9HUCP3pXLx8Rr1ty7R+wPn4JuuwJyjpIost27WOmJ DKfFAGJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGWm-00000008JvL-1lsZ; Wed, 12 Feb 2025 17:28:00 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiGRz-00000008InI-3pJF for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:05 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-21f6022c2c3so19766505ad.0 for ; Wed, 12 Feb 2025 09:23:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380983; x=1739985783; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=T6ImNHgA1bPZdB73VN3sTWi+liyO5x5LuCAfGs8N5D3jSuUnyzHNgzLMJ0Qgzyu+0q vPhJLaMEptpWLjwkrKqBrC0JPWpEY9xILqZJOrFzzft0le3jTOY6wyHSQNRMK0U2daMQ 0mMdiCiiAODtVoOvnU07yf1zTY3Sk9XQRjym6HMeeUzlYeISeWG1cIcY6Y8vPahM7dF/ UFCfmZ+ak7gBtPraZJmC5HujUIj1kccEqNr4vsh6ZnLxnk94mtHrYRbAP56BZsGZPhpC /bEcUQNqJ7j4xB2SwChuBZTtU2Z24jtiq9NWxLEn1/Xjkc9oCDeyFb6SP99kbISUMzlR 1buA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380983; x=1739985783; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CCgOaShG88KaX9ZrY+HfMI5Bon6pKtYLqZUjsI6n6g4=; b=fHDeXxzm5nVuwisXnPmIW0ObXTxPJCnRhc6/BT5mw84cbLFOY97WIv6t6xJ4e4Qmdz tUMjXSatacYDih9oJp/AkodVwn1kJ0VG6w+X0Eg/za8qiIiiqf4CJW49/SoEUM7FwDEW trzcY+OTcle8QnEEaOyq72ti/fjzmlsbjn3ziigeVEf+2gcD17/32TQjla3WL0sSOUFM 7xUdxwJpCQOxZ+aJZbXYZrkHlJz9flcyff5FsFayOXTaeWyAKdy6DbP6fndrGZWH9VfX DreFtMw7ZPsDZu2Sw3XICqE3o+DyAOj0xSQ8AqDKCtqRH9/VHmCyYK72EUnucCRcDnU9 Fk/Q== X-Forwarded-Encrypted: i=1; AJvYcCWZIwVmplhmCL57o/Fu5Zs82MlYW6pR4U8DeSCDPl+kwD6vozKFcCToUIk4Bzskk4emr6Reltp64g9oFQDO2QHr@lists.infradead.org X-Gm-Message-State: AOJu0Yz/sQ6+Sq+pUL1M6k1XXmgXqJydMWuglm6F5HqlgfgAfpE7Kb+Z CbmBc6F1aG2zGO5k4EBK7AXtr6l+6ryYQi3hPl4kkFIyNOeVuajK X-Gm-Gg: ASbGnctVSzFbGwLmQVOwpfsLLrDeIYwVY4VEZSQzun/lNdbwFeg/KHK+v2H8rAnDnEN jMSd9M/t80gk3RGCNExOK4ecUwBNvhU1kgqNQUlcxpaL/14mmOmxT7wdRpDvLlzbzaa4FyQWcpK 7D9ZcKVrpiZ5eMPgbMDHoa/9kewOu00ImNCGrDYuNkkKIkh3fHWMJOiYn0BAoVLDa+Z/aHxGNYv gprIxZULmUoM7RT8DIIIUObSpy89h3ZwNatZNRNCtR8/iamAy9X60RyH2Kxjn+xojGJIDIupcsu haPlE4ddCZsomVax0A== X-Google-Smtp-Source: AGHT+IGEy1jSFc7CoEH40Z2HRbFahUzGAgG3SF1zUBLy8tYFGnP8eFybnOnuulflEwPS88Om92TV1g== X-Received: by 2002:a05:6a20:734a:b0:1ee:64c0:aa85 with SMTP id adf61e73a8af0-1ee6bae9454mr152576637.6.1739380982936; Wed, 12 Feb 2025 09:23:02 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:02 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:24 +0800 Subject: [PATCH v2 01/10] dt-bindings: arm: pmu: Add Apple A7-A11 SoC CPU PMU compatibles MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-1-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1038; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=xKNBKHADoFe0D0/YamWRency2Eic4YhwlS1J3poCzGo=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjvWO+25WvZjqa60EjVC9mqSIkhHbwtfm+Dt 0wHaa0R9XKJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY7wAKCRABygi3psUI JLWlD/964sLrzrYk5mzJZPYQe5C6BGPTmD69eecHjciATrYkefUjS2mNGrNwu8fFrk33S8FEtRE 9pj9HJSteWctfZ6jMMOr6XJm1FI9KLbo9TVxRhnV2jn+rSpa+v7LXJvl4ihWFoG8jerRrt5ULgs dCx440En+aKZ5MWPwUFXzq2RMAFaFtH8O1Z6cChndMEq+MGK1fIiPwvC3iXBsPmqQpmF1y/tWYB wuyLcfHp8b7JzSp0p/6J3iWi8inJYdUl/+EGJVdGpdIRXkl5gfUGG5jIXq3YAe52M0n5qvC4RD9 B6CL4BbtmIoAvl60FAdNMopJD7iritzvulBVwQV0XN1HC7tO6i0h9AEI/GlK8ufK8hhc+Ea6ZwD OdMol0Ub0+iMpogYqSYh7qH/18QGXBOxik6HQ8tXZMDMxdIhlCInGNezu5ApJfGYsyLebGFSrpQ Sxmo9u6yQ6WCYjzNNzRmArs+BatLYvUrcvmR94sluTAf31d7OIZjVc80Z+BgPA47QnffOq0vVy6 SaEzELS2cfqOBV+wV/Ou1Xo7t70prXQeOhJ4Tqqqx9smOsyoYpr1Ag6cKh2oQCKbmLLTxzZN7LQ 7ZqdObroNYRny61Xyy62qTaTII35GjEVMYi4vpB7WRDHsF9tqSZFIfB9Q+2uJneOMF0lCO7Odl/ KV90+5FraX7ke/Q== 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-20250212_092303_946466_DC3A5D10 X-CRM114-Status: UNSURE ( 9.29 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document the compatibles for Apple A7-A11 SoC CPU PMU. Signed-off-by: Nick Chan Acked-by: Krzysztof Kozlowski --- 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 Wed Feb 12 17:22:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13972219 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 D5A34C02198 for ; Wed, 12 Feb 2025 17:29:37 +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=yFekoXDldKygq/dqiamLEfKAIhum7ZAFgMUrKlaqmBY=; b=sFo3aeCGSR1mzcN4D3Ae+D0rqL 0jLdyKllQ4YfNJzfaCj3Y5vvQ+oKVs3CnoJQLrzwty4kPmQA9IbbnRCg+vuDowhCgn1D7NrfI+RVj SrWZxvRKaAU1aHj97fJCkDt7cElO5Wlx7joVbj4Q1EeUTLPDABvXIo9sAKY268pocm2Edx32H91d0 bLdAQVg84AxOpsGw6YcsZLcgN9NuT2+Yqo0/HKxNi8YiEPmyg6Z7Q5qHffa4Gx6ZS7qnZjvCegOdv qh+KvyaBV7RPxrHtcM6BfZaxP5cfb3fPJp324nO1p4lcqz+QBsRo5hgC8Ibb/QiMb76Z6Wur3OL6j k6d/SJcw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGYB-00000008KF3-0C66; Wed, 12 Feb 2025 17:29: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 1tiGS2-00000008IoM-497X for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:08 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-220c8f38febso12610725ad.2 for ; Wed, 12 Feb 2025 09:23:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380986; x=1739985786; 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=yFekoXDldKygq/dqiamLEfKAIhum7ZAFgMUrKlaqmBY=; b=NyYSKAZoDPJza4tAlO3kELgqsN7C8LRvBFuzGpPTxWXIMuwdvWqEmq6zsjbIqYM6Dy M45yxfuwpPEBX0pgGumvC4hOj3WrcuuF8N5vqbsDebdvY54aaNIPA9EhInXv6NhLIml5 SA38lfk2PhBcBeVUFJbz1Cj3J0TB4dizBKKhxctO2WcpH+Watedc8VopfhsWWfJoK7PP qau9VDc6OtYzWehxhGp6CH1AGFCerOFQNm0uQfhQioDYS8m9n/IRbaPMwT8H746JxfNN i+PHYd9aZpogL0sCVuQxPahEcdjneDpmqreOefIT53wBo21/t367/GkAbMgBSV6Rgiya KeuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380986; x=1739985786; 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=yFekoXDldKygq/dqiamLEfKAIhum7ZAFgMUrKlaqmBY=; b=B1aO912UDOkK3c0wph65eELIELjd7XSTf029QuLI+Ng+iwSCSIAOoLkmtkMZd6Ar6T ZW3IDmCnxWC0r7fANMnBZylmtr9c9/o5l8runqvUF2I2qjqpZ/gsUurQm6LIBT4emBX1 TuLlIINeoNfioJ5UT11yrwKjTZ+UeIhB4dVLhMxXZ82JUHz1P5A0kGjXxb5IS/ikKH7w 30kGbAoAwmN2bXVD5N0trwVd/Jn0MVh5wrWz10+8UFZLt8mgFbRx1Lwao9pxtGVtag7W HJsR6Op+GuUZcQdGwyW9VRmpeBvYXYnjVXtrUTzAnyW3j1fWO1t7+csuo7vjjHmN4Y18 GKnA== X-Forwarded-Encrypted: i=1; AJvYcCVzuHLpPqp2oIB5vEjTNwYzXVwbQv0iayid5YwJ9GyBay3raHYR9M+lw4rPxFN3Kau6oxO+fxTIGXPVnPmKzJ27@lists.infradead.org X-Gm-Message-State: AOJu0Yxb1wzRhwr46nDZ+d8KRevMLE/GCxO/AWC2elBhgcmPfaC3s3QR t+2pPZrg+n0JBFrPqLv90SDBRDVCf+4mrbETQAdKGYJSp403mmcFrAu6XQ== X-Gm-Gg: ASbGncsh1mTt/e0/hFcC3ZIHkS9JfIoZzTUDEcIw6CiHBmgEgC82hopH3mgnZHsADiL O7IDbyhek93JCY7tvbw/sQTPYHGTxDD09Hm6rgvVriEtQTqsQtlOk3f20BP/kukPqya+4Hh0jtO g8nYD8Bv8b3sepZrD1dx7G8aSrX08zyzPDv+B+FXszIoL82vFGWMCyJRoiTFivuuDyitWSpQoHr Bp6iPpGrzRPlUuvv40jv4zEGhJLLJF0frYftVJ9SwyayDrHnOenGiPVD76/Xs9YRTnd7+zp1CUm ctfXeERX0mVMXM7rJQ== X-Google-Smtp-Source: AGHT+IG//YxahrclczP1AC225IHf0ohzcxjk/aV5E60f9V/aou3rm6VdA9YREiMvUx6GHuijzcCWYw== X-Received: by 2002:a17:902:ef09:b0:215:a028:4ed with SMTP id d9443c01a7336-220bdf13ba4mr57434755ad.20.1739380985984; Wed, 12 Feb 2025 09:23:05 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:05 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:25 +0800 Subject: [PATCH v2 02/10] drivers/perf: apple_m1: Support per-implementation event tables MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-2-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=5800; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=b4/Mn/CXmCbLpAt2Gw4jqi0tjGVxwUxbkqr0KY2PlmQ=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjvWd/NLST/mP1GA++mV92tW72Is0gaB7qJr d/nO+CCiDCJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY7wAKCRABygi3psUI JJ2jEACm/BvK77HH4KRIcztqe62ud7DEi/OMMgxLuSx7z3aXqwI/uI4PVAP1v09czqzFV1OZTB6 KoXt+0/0xcixC74zlT1EHec6sU4DHBNR0XdPjWG0z+5Dh6xNqLOIRtxmBZKnci8D4bLXtFqXCNR XPaRWOg2QRvsRUcnLRa081j97g8JRCMoZo/GKu85NMY6428nGoPPJbe7Dfteal7kR6onOfk6+Zq wV1OpUjazSbwrbXup5u6sA0EUmXxH3rMqbTeWidncypgYC8jfR1mCmlrOWRV6jdZ/6GKRicKgp8 kVjX4nscihV+ST1aHgOP1Avr74aa+h/C17gb3M0JyLrDSxfbfFEqW+hneGeOFrbcoGYCWrg91Du bfCjlCI8n61YKsKSeEWG4LPHjyJdk3lHiKG1ZWUQOUEAN6E25w2rDaR0v/vLZSDqr1EOgm64LJo MYuqCX6530jxXaqI6scy+3LZiSb/Et2mDWZlIpkFzKYaBd5GDX3GU6ztvhy26YTfJnmoazQBLc2 m/aI9SVHfhU7/kO2/We7qiwXc4ctRecovKwWVFmeN1BK6+/+co5VUV5z2w6YpNx/o0GwSJJPFzd vEzuBt0GF6Fjuggh9TkxvB9ABsAKSRxzlB9wRdWhHjyVmJWGoU0xKGpziYHXJUTIwMhcI6kGZQ7 oa0U90GkkDOfAGA== 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-20250212_092307_035860_BAE07E82 X-CRM114-Status: GOOD ( 17.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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..9b26d5f35d91b715e9ccb7524a3ca7b87a4d5265 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -42,9 +42,6 @@ * moment, we don't really need to distinguish between the two because we * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. - * - * If we eventually find out that the events are different across - * implementations, we'll have to introduce per cpu-type tables. */ enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, @@ -466,11 +463,12 @@ static void m1_pmu_write_counter(struct perf_event *event, u64 value) isb(); } -static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, - struct perf_event *event) +static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event, + const u16 event_affinities[M1_PMU_CFG_EVENT]) { unsigned long evtype = event->hw.config_base & M1_PMU_CFG_EVENT; - unsigned long affinity = m1_pmu_event_affinity[evtype]; + unsigned long affinity = event_affinities[evtype]; int idx; /* @@ -489,6 +487,12 @@ static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, m1_pmu_event_affinity); +} + static void m1_pmu_clear_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -516,7 +520,8 @@ static void m1_pmu_stop(struct arm_pmu *cpu_pmu) __m1_pmu_set_mode(PMCR0_IMODE_OFF); } -static int m1_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_47(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* * Although the counters are 48bit wide, bit 47 is what @@ -524,18 +529,29 @@ static int m1_pmu_map_event(struct perf_event *event) * being 47bit wide to mimick the behaviour of the ARM PMU. */ event->hw.flags |= ARMPMU_EVT_47BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } -static int m2_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_63(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* - * Same deal as the above, except that M2 has 64bit counters. + * Same deal as the above, except with 64bit counters. * Which, as far as we're concerned, actually means 63 bits. * Yes, this is getting awkward. */ event->hw.flags |= ARMPMU_EVT_63BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); +} + +static int m1_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &m1_pmu_perf_map); +} + +static int m2_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } static void m1_pmu_reset(void *info) @@ -572,25 +588,16 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) +static int apple_pmu_init_common(struct arm_pmu *cpu_pmu) { cpu_pmu->handle_irq = m1_pmu_handle_irq; cpu_pmu->enable = m1_pmu_enable_event; cpu_pmu->disable = m1_pmu_disable_event; cpu_pmu->read_counter = m1_pmu_read_counter; cpu_pmu->write_counter = m1_pmu_write_counter; - cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; - - if (flags & ARMPMU_EVT_47BIT) - cpu_pmu->map_event = m1_pmu_map_event; - else if (flags & ARMPMU_EVT_63BIT) - cpu_pmu->map_event = m2_pmu_map_event; - else - return WARN_ON(-EINVAL); - cpu_pmu->reset = m1_pmu_reset; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; @@ -604,25 +611,33 @@ static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_firestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_avalanche_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_blizzard_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Wed Feb 12 17:22:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13972220 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 49C4AC02198 for ; Wed, 12 Feb 2025 17:31:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=22Z1P7ZTqlUD6cQOv/Yl+YD77nH6S4zD9+2pfCgYfuk=; b=0cMES0Exr/ceKi/IXvdWSltHSD oB/Hm1js6NAT9fyq0pm10dpcz5kJ9cmLfVqFsqH7RH6laqzRfkEFTxGo1XaUKqI9B9zq0vaWjMeXT hg1NIPMIktsufb48o1hDZPPVq7pzG3uNdHRT0pwIlRuf4pagM7JRU13gPdavzYQTVGlvjzHGJxl9V F4OuWCRFjfG4WQ4X2FP/jCEETe1KnUXWS23c8q05lliC6ilRnf+W5t3zXZTWdxdE7s3+uSIzwXNKy 2K7bHRVTVdI1lTJ2o2ttJP6Wx/ycKKgEjS2ijLu5JdCsEm640foWR/C18yIGXEaKGj8X4wMIJ6CU8 +PIVsn/w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGZY-00000008KSS-3FxP; Wed, 12 Feb 2025 17:30:52 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiGS6-00000008IpT-00By for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:11 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-21f3c119fe6so161842155ad.0 for ; Wed, 12 Feb 2025 09:23:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380989; x=1739985789; 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=22Z1P7ZTqlUD6cQOv/Yl+YD77nH6S4zD9+2pfCgYfuk=; b=LfBjJYa7p5RlU7f6sUZiPCJ3SI9DvdgHhBq9HR0sRwinuS18tz3tlfAgOt0J1zcuzR 4w6tLDqmIU7GBYzTy6r55vd0wxlh6ZrfcbAGhSaG9SJ0rtPHG2USLzfDcCZmenTKKUQK cQ/lgJSXhkufFVNFpq3bSraxCken28oKyG8BKIJ5fMd+5I1QdBHaFgW/hVXNBCmItbPj dA7pns5213MmJ5syLXHY7wIMCDxmM5J0R6aV9ilTBhUsFtWh9bslWX14hquwYHmNT+Vl 3BxfZm9zYkj8lNkCbQg/VcQBpVB4Cyy4LG5J+9iLVE0ly17PA1ypPfvN9tSL15ttQfRz Qz0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380989; x=1739985789; 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=22Z1P7ZTqlUD6cQOv/Yl+YD77nH6S4zD9+2pfCgYfuk=; b=IUV4qRXT8Hd0whxM7N6maSuVdzu+SG2h86xLckfMFiMcuLz+gdae3t8KLz2GQ4uuEv ld2YzxERwDps8HSIuXriVDER7LQ9+FRKb3JvnpR8r3vta1y1gJ3RlmjGCDQgC+dRcmIB 6MODROJxtZOdzPNuqLNjxcA7X5knXKwTQ7tfMGjiqHp7wdGKKaP6RWeS392JD+8RXr0b DqJHDLmFokvQtyEThaTXcvEgL3OzrAxVabXU7ABlJR0z3JKVzL55hbXdyNq6efw3qhzr yMMmxg++dw7JSq2h44EjPEJxBxDkxrYhtrI1W6ZzMjW9fjSqw9W59SqL8K1te1qQGp2T hkfw== X-Forwarded-Encrypted: i=1; AJvYcCX2EnCBAbzew+4d2qWVfdXlfxZakEa8ODn2uBCmJCCBedxrXa7kNzNSpUFNCxlM8gCqZWiBLrHiAQIHlOCNLRV4@lists.infradead.org X-Gm-Message-State: AOJu0YyPTwYDzFt6qNsJdvkp2ryY/mmSUA6MBgYPivJSY3glgvt+ONhR HejecY6yOcbwmhKBPGLZPHHZ2JFv32gBas25RPef9CAOTnqhXQGM X-Gm-Gg: ASbGncs5tO1AMT11+9e79o0ybW/4fo3qNd8+EjnnnJTaWL2AuptHxJ7F8YC3vlDzJqF tQmsrAW9HDEpwUTQ+hQYr1foVekvQm9PXFF+pcGu2gCJZwTKq5Kyzmz5YVFKPh6YYoVOLoBaOk2 76YvF2U91cvvYWUPHYPCiXH5wblokLIOmBmYwo3mAKviPCg/pYxik4r1V8c6VNuGAUv9wlrUBEQ DnyKuq9oAgOz+NQpRhj09vsXZwFRWbRkPUgzGQzpzjAMQI3b+ByWFvR7ohOI6F2XHWLOi5uBbT5 dnphLzTOL2K/WBt5ug== X-Google-Smtp-Source: AGHT+IGobLhMetJMQ0kqhmZbc2dvKpQgQcpToUx45wdgkBO1Lyl74VfMgW1vCxAWuj4T/AwvpbtnWA== X-Received: by 2002:a05:6a00:3d46:b0:72d:9cbc:730d with SMTP id d2e1a72fcca58-7322c39d1dbmr6513556b3a.11.1739380989023; Wed, 12 Feb 2025 09:23:09 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:08 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:26 +0800 Subject: [PATCH v2 03/10] drivers/perf: apple_m1: Support a per-implementation number of counters MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-3-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=4846; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=L+Tl6yOf4IhDKUIycb3hLlpdWXpiiAGyKeFO2ADZTD8=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjvQb2YIK3BJQeW3xopIS5Ew3zALFGpnvRYn IQkSGbyED6JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY7wAKCRABygi3psUI JIjOD/9OCiE4HbMvImN9OaimhBddGmIgt3gG6W5YIr7qX3llWPpFg56YqftGDOhyj4ZtJmoLURj b7NVQztkcZkt/J1ev4P8PKOuIHvcxHCt3R9c0vzXSpwMlWU39lesxyT+DsoLmpz/qYPcaDNebsL qJK9yRjwfu1LTJZEJ9W5cfA9KoUusuqsJe8nduPipcGHiZpnFH/y1DkWqU79Mahy/nwvrmCBnbR tTWcC7/PyLCOF6UVmj5jE2yZIQS7uuExmkDKmaommXqiwydlysU1nBlCZAVAYJtQN9mrB87zkaJ shcKo7ym3R4Pr1ZFXXVx31H7q1w3RT7LFoUy082kH92JU40IG3wmu3ItTJfgLEKSC96L0jK/mBX 35wdR72XMSn4uwB3sWMT1k/FIgJVubl6fbKSalgEUaLjGUtg5rFLweyoIdUnO5hacljubqBEo83 NPD22hBOMzgWcUasj1VLd/G7RcogTFGHAw3oQo0SVdpiB6Zjub/2F2Em1HZ7gz4fCl8z9W5bxMQ 9yJRT4JY27EMXei7B84Qu9I0wVb0f0OflupWc+ZX6QNOxftNyjWP9dssQvT/ysp5Szkm460pFWR 1DkJ8GU96igRo3FrxC7/iuqkR6cANP9hmAWBgahmhVAKgNeOue+ASjXpbde2SwvpeS1pCDYKhTr mlfhgkc52ZK5/7g== 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-20250212_092310_051090_2D6E296D X-CRM114-Status: GOOD ( 16.05 ) 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 9b26d5f35d91b715e9ccb7524a3ca7b87a4d5265..14e6fd0c2653912a6bbbcc31e6f4c54ee2d062a1 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -19,6 +19,7 @@ #include #define M1_PMU_NR_COUNTERS 10 +#define APPLE_PMU_MAX_NR_COUNTERS 10 #define M1_PMU_CFG_EVENT GENMASK(7, 0) @@ -431,7 +432,7 @@ static irqreturn_t m1_pmu_handle_irq(struct arm_pmu *cpu_pmu) regs = get_irq_regs(); - for_each_set_bit(idx, cpu_pmu->cntr_mask, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, cpu_pmu->cntr_mask, APPLE_PMU_MAX_NR_COUNTERS) { struct perf_event *event = cpuc->events[idx]; struct perf_sample_data data; @@ -479,7 +480,7 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, * counting on the PMU at any given time, and by placing the * most constraining events first. */ - for_each_set_bit(idx, &affinity, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, &affinity, APPLE_PMU_MAX_NR_COUNTERS) { if (!test_and_set_bit(idx, cpuc->used_mask)) return idx; } @@ -554,13 +555,13 @@ static int m2_pmu_map_event(struct perf_event *event) return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } -static void m1_pmu_reset(void *info) +static void apple_pmu_reset_common(void *info, u32 counters) { int i; __m1_pmu_set_mode(PMCR0_IMODE_OFF); - for (i = 0; i < M1_PMU_NR_COUNTERS; i++) { + for (i = 0; i < counters; i++) { m1_pmu_disable_counter(i); m1_pmu_disable_counter_interrupt(i); m1_pmu_write_hw_counter(0, i); @@ -569,6 +570,11 @@ static void m1_pmu_reset(void *info) isb(); } +static void m1_pmu_reset(void *info) +{ + apple_pmu_reset_common(info, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_set_event_filter(struct hw_perf_event *event, struct perf_event_attr *attr) { @@ -588,7 +594,7 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int apple_pmu_init_common(struct arm_pmu *cpu_pmu) +static int apple_pmu_init_common(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_common(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_common(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(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_common(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(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_common(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(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_common(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Wed Feb 12 17:22: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: 13972221 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 5A894C02198 for ; Wed, 12 Feb 2025 17:32:30 +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=P/QZ9Cdu0zKxLgzr6zBi4dxJDTj6qdFAvLYx0NNIbaM=; b=1DxFjDU/zEb3L8Tozoa8chmNuK P56lMcO1Xbz9se8EJu/8EMjwrZti0jpCPWywPPMzx9wMpCGm2DQ6xI8D2QHoDlmBMYCwUwnqSOJ4L dnIkUKfx/pwxDCer/mylY5Ej2vzJAGqYoD8HlHcDnsTUyyZ55yfim1/SssEOopQbTj8l+pA+AMJ0q LIXGq9iRz45LhLaeLGew/FlA/IxOqcaTs0+t4CVMoUdZ0LXFm/vafVG9OClce5ap84aPgdm2KTUr/ IpSFZD28d6RamQIsUQwG63qpoETM1GOrTVTjFInh5/nud/wpraQ4AOcZGm7mY4rYemWBPBgD2UiOk RlARdLag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGaw-00000008Kc1-1eF6; Wed, 12 Feb 2025 17:32:18 +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 1tiGS8-00000008IqK-3moV for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:13 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-21f7f03d856so78448035ad.1 for ; Wed, 12 Feb 2025 09:23:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380992; x=1739985792; 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=P/QZ9Cdu0zKxLgzr6zBi4dxJDTj6qdFAvLYx0NNIbaM=; b=j1IJPeblv1zWLFgK1SKEcjXTGSB33DZ43J3tAo6Fu0NXws+eZBmav9MG6cMLyWfFyP +ePZsgV4PXkt+aSzyqmjURPb+6xqPEh0iiT1bkbTp8pz9/QPKs+HUI8s/xl8/YBGy+a8 q+EjOmjExjNg+fIRsoabdtpDnH+jM26/VEiAphYbX66v9+vUADDcUbg7og3SIsef5Ha+ Cpk3QMczBo4hTbtHxfLj5raqy+n8oYJ6rf9Z22tHLaRsOiwoJJQxE6qyRsX4nADMsheK R9B5BA9k/J+yj5IkJbTuPj94lW6v5cboSDdvtGYGdKCU3Nw1dDQzxu+cS9iRvmQv6+Zk vofA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380992; x=1739985792; 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=P/QZ9Cdu0zKxLgzr6zBi4dxJDTj6qdFAvLYx0NNIbaM=; b=jPpg7YwxHxj1jMzi77poC/zcBFW/2m0NnXdpgN41dDFz6zYY9fgXNyVlZsAWdQvwFr EZrImZqd++R/NIawa6EpqYuYtNV4pWtM4RBKu8x2otXU0hkhzMYAuqFX9MdnHhkI0fcg dAu+RaBZ8JXSB2k75vDlScMp8knKcK5ddIXJ5CjpprRpr8+0bhk9PuFy7Yn1fBrS7RNu IHYnwEDRohooD5IJkn6oB3iYfXUzN6bIfZ7TLl0UxY5CXpgQ7JQLDufTJMh3m6Cfawu3 N57aLw8gmgDFH+htAIbEmiM7E/XE3GKraISPfZ7wrqX199hx1xXT5H8XeImGpngVTZLX PStQ== X-Forwarded-Encrypted: i=1; AJvYcCVLnhnhndkgoDQWV49ZNv5zslseoR9Z3szpCini0HiJ9KNj/q0FpolcBb90dHQX1iFSjoZvInyiYShwsS0A3Qq7@lists.infradead.org X-Gm-Message-State: AOJu0YzD7nJQL+OMsMoCY1cZGiz4Mcjw3+g86srN9d6PDcPMvozt2+OB cD9gQHNk9yc5YfVWy8cNj0rZnw4HFyIOHNSglMWncAQpW56+67EW X-Gm-Gg: ASbGnctEcLWkaSwvHVKsRAWUHT4AQanQrJvcTmONc9W1OmKgGUQYe3qXogJsTBDeCkK wsPQJoKa8wcwa+7r2cDySknv/sFvBOhQuHXC76lv19G1UpVBVs85hMaAlYfq/MiUV309yADm4vt uvMftVGTJbKE9Q+DzhFv0ZPFy8AqKADA70psqHSuOK6ytgk+G0+uEejE5coDyMxvMWOdR3HcMWA AIAOx5A+e6OsVzPKPV2VrPAT0lucXX/cqABHSAfPW7aTcNmNa9ygItsL3zeef18GCtGicVB4u/+ 4Gu28NE1+HAlwYApSQ== X-Google-Smtp-Source: AGHT+IEQNqc0PtpBXRyDkY5pgMgEWMrDmrw+ZKbtGlw03mhdng3NDc681UXDqGWL92QJmsEpIhCbeQ== X-Received: by 2002:a05:6a21:730a:b0:1ee:6af5:e4f1 with SMTP id adf61e73a8af0-1ee6b33e88emr573879637.13.1739380992047; Wed, 12 Feb 2025 09:23:12 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:11 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:27 +0800 Subject: [PATCH v2 04/10] drivers/perf: apple_m1: Support configuring counters for 32-bit EL0 MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-4-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1826; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=eNXZKKJOVES7/Y5XuX0Dnwa0JJ327tz8i8Lgu6wPJJ8=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjvIb/r8ezHFnAwCF3de3uLKdW1k7kFV54zH bkJcFnundmJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY7wAKCRABygi3psUI JAlrD/oDU3LI5XOuz2kAuUrzCCL7EuJrPUKPGH3a6pgI6lWbl55C/oFWyYH4L2aaToPl2s233nn nz1HO0vBiAKN6SrAD0N+VDLc9MagLJPU4AxWLGmQPpToGVQ2Cfggl3Yf42/xCiLhw3NZgKwSiys 0ZxfhVoDX632zynf4Nbdb57UwIeVP7dxkl3Wzj/Z8fEpa1TUJvGvboe8QbIYuYsHVR51QVhUDrW ad92ICZ8m0XrvopqmwIlQyzZOsVrjoCwfWdajKfTPRJIBZeFXT1QcVTlf4K5XpNknTkMNzSxADZ AE6fEIV0mnElmoNML1efWjfttc4hho2Ynr9HGthMLDk0zv9+XGD0CrQb81S7spVmdaLvwhC+Lcj vTX/7v75j9UClPRkvxbw/0xGNq2MtRk1Ow5ye7FdgEXsCV7DiMnxNGbnfiUGOsNpyDF6fzp2f5a l1EqfbVYBB1Nzw2CiVqnk8njj6fA37mwo9t+uwtwYlNeSwqPH3Swm51GAy+3azCln/Dm1ba4eeT c839YOHRLbrxEOLJKgYKAjRhFoOfuEjDRQ5n1WyXTYxajbbK0snI4CDnfzTPTLk1JGVvIlRBvTA EM9LnBLU6w9crPfZu5PY4vSpps/UwCZUyUSYD4Lu3W/2jDKXt0j57uLvLXtnPSjrp+K3K9vLdjA griTJjfaIYv5MkQ== 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-20250212_092312_944362_B1B2CA52 X-CRM114-Status: GOOD ( 12.32 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for configuring counters for 32-bit EL0 to allow adding support for implementations with 32-bit EL0. For documentation purposes, also add the bitmask for configuring counters for 64-bit EL3. Signed-off-by: Nick Chan --- arch/arm64/include/asm/apple_m1_pmu.h | 2 ++ drivers/perf/apple_m1_cpu_pmu.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/arch/arm64/include/asm/apple_m1_pmu.h b/arch/arm64/include/asm/apple_m1_pmu.h index 99483b19b99fca38483faad443ad4bcf4b85ef63..835d602a9a33fc812982839799c0bbabef656078 100644 --- a/arch/arm64/include/asm/apple_m1_pmu.h +++ b/arch/arm64/include/asm/apple_m1_pmu.h @@ -37,8 +37,10 @@ #define PMCR0_PMI_ENABLE_8_9 GENMASK(45, 44) #define SYS_IMP_APL_PMCR1_EL1 sys_reg(3, 1, 15, 1, 0) +#define PMCR1_COUNT_A32_EL0_0_7 GENMASK(7, 0) #define PMCR1_COUNT_A64_EL0_0_7 GENMASK(15, 8) #define PMCR1_COUNT_A64_EL1_0_7 GENMASK(23, 16) +#define PMCR1_COUNT_A64_EL3_0_7 GENMASK(31, 24) #define PMCR1_COUNT_A64_EL0_8_9 GENMASK(41, 40) #define PMCR1_COUNT_A64_EL1_8_9 GENMASK(49, 48) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 14e6fd0c2653912a6bbbcc31e6f4c54ee2d062a1..e7b898aef45e9e18899693774ad673fd370b19d7 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -335,6 +335,9 @@ static void m1_pmu_configure_counter(unsigned int index, u8 event, case 0 ... 7: user_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL0_0_7)); kernel_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL1_0_7)); + + if (system_supports_32bit_el0()) + user_bit |= BIT(get_bit_offset(index, PMCR1_COUNT_A32_EL0_0_7)); break; case 8 ... 9: user_bit = BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL0_8_9)); From patchwork Wed Feb 12 17:22: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: 13972222 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 BD3C3C02198 for ; Wed, 12 Feb 2025 17:33:54 +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=5yMYPtbWoioljIi5CGJJ0bbQtImjQrSrLugDRy/Wgxc=; b=mx7ZMzg/m0H9lHhMOXMel9joYk lTE7H3hnqgyTWFoEg+1TtWGC1w+CgkbPpcMpzhEWWPOWBN7pf2ALFC3Gb6KPZMRlpZyCIArA/Isi9 WwyX2l3krrmdX23bCotRCeV/W7hpbam8nnLPUBVITetKvg7XrVJZi3q9mYMtFK7aBff2Uh6UM3sqp Y7I2ymmTywjEFf152l5aYxhoH+sqvx2MjA4KTAfATyibv4mTZ8C7Csi8M9G0kq02wjZhwWrW142Jv igj2bY/sNv1pd+W7PTf491Nbxs6lPnYc9wRZxzvDIK7uboSsmjE5mXHibFF75AAFaCH+S6jKpUMtO tEdANnmw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGcK-00000008Ks9-0TOm; Wed, 12 Feb 2025 17:33:44 +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 1tiGSB-00000008IrA-2W4J for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:16 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-21f710c17baso83090215ad.1 for ; Wed, 12 Feb 2025 09:23:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380995; x=1739985795; 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=5yMYPtbWoioljIi5CGJJ0bbQtImjQrSrLugDRy/Wgxc=; b=WwobDTANaX63vh6P/BDYGHVgURtCAU2rUaEBwE6AjB13hB/Uu5zaHt7cwV4oC4Gh0B SngzjYFCy6VjyRkS3Y+QgTnF2xmlyrjMLUdRSXpVr06prIsrMDXUGyV4E7i3CNj9w1xa A32CvgKKnZW+6BwnYuuzMEtrizNUY7bZHlkecn7XMF16ubntAyQ+3eLkRky7RtDASXLn rlqmRh12gz/J1otYQCC9EXpEUB6088LNxk0Ph9VmiguPkSpwRggI3LvOtxy+OsMAG3xm xnBlPaoHSE7KFNy7p8Ghs8/co580sD75NQ8UHHYvrSDLhBcdzehIxgsba2AaDUeHqJTJ Penw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380995; x=1739985795; 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=5yMYPtbWoioljIi5CGJJ0bbQtImjQrSrLugDRy/Wgxc=; b=J477bBzN5B+AUmdVClCQ6RVqxObKLDF/oQMOr2ZEzb9cPQcGrnPOc/PY7ACRwOi5ID Kjpyd7Sr4RQQsizvrNlIwlLKfiTm9ov8tMykkwjNnO/bovm+U8ypBNdKNx+SzyfSiF/m nvpju0+nb7jIMfvK/WT7OdjCRBf9ENS6VEadJbv9ZdIWaLQy0fao6NMyEuWHA5KHcUDW 0996B0FTdZ5M7IL4X/0W7DrOz1XxvBwRKvgJfg1/4/8JcFGdCqCNkcqpx8eetTCOx2Qg ksj8/BJEInrTF1GQNZML8iEmkntLle29ND+putnhEq0nUHielsd5j3TY9Q0BKY5VI1xr kgiw== X-Forwarded-Encrypted: i=1; AJvYcCUO5hNY5kH9SOGeS9cxXpuRr8HU+jw4BEA8CYUgQkUJ5cHYF31jEvXJKVH124FvImBhzFqIlMrQ3HKlXStWpYMU@lists.infradead.org X-Gm-Message-State: AOJu0YzKWGyNxRl1pe+f4amL6MmWqiAfSlbUGQ1v3xIxEdy3/qlt/fuC HEK+7XsnGlez1xfLf9uobye4WgJdfHr53XMc119mhfbcXCe3FPFV X-Gm-Gg: ASbGnctyU3ut3RU/+16q3+0zkVgavF1yzx3ZQliYDkjcQypXJylkjfBRraPsavYq2rp B6F6pRdVb7/uWHV11bZlpfKaSBN5Bligmv/7NkEsayZ3Qzhbhjxwf1d+C0rkI9pBUDoKqvqWTrx 6OqdjXrvV4c4w+YV6466kmjlSAJ2rfdlzY4KiTCNneBdx6smNpo/wChuqy9GjwurYYZ+Vy0YO5e xP59ZU0CJqXYC84b/eRYzRWczxjC8y4tzwfWd5MISOYefxN5Q2ysRxhjPiTSSxT3HG6dJvYqze6 XBIde/E3fS6WW5Kjdg== X-Google-Smtp-Source: AGHT+IF9Hqg1hDtMETPcTVQMDIUifIcDM3rTf0I2IXiMK50CYiFNlKKpQ8vQz3ex521MFyS0zANQ0A== X-Received: by 2002:a05:6a21:6f10:b0:1e1:bf3d:a191 with SMTP id adf61e73a8af0-1ee5c83db7cmr7106147637.33.1739380995098; Wed, 12 Feb 2025 09:23:15 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:14 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:28 +0800 Subject: [PATCH v2 05/10] drivers/perf: apple_m1: Support per-implementation PMU start MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-5-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=2211; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=/4qXPFHVNQhhoJUabUe1xtQ/R9DQ+Ipv3G6eXZu+6Qs=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjwdQLJ8DKd8ePzg7bkvfftYg1GlHSWGLpkf g+nrc1zB+uJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JBfpD/9guHkkdm7MB9Lf6dTLwpTEkIlSUVy2My1ORooQxfsc1CRRCjYApVz+pI1XTsydkT535XU /T12u8brSIgFHOpgmGXTvedcWQL7JmVEvbRG6i6vnN7j4ymwR/V6jgRIoamXh9AAAf/n0Dteret N+3WguwH2fqY+64yR2/PYkJwSuyRxFr2YiY+Hqroo67BD/bXk0RMSqTfPkmhYu7bRMjPLeRrkUB 6SOsYDSnwFuVbUSvv/LJZHAqsYAsXL5RLQUzDNTCszx+xIpr2kFyWrm5S8x64xVVaKOJSHPAi/M RvFyWP3s5LWfgy3FotRwZ2TyQpl2Ai5FMF+Yv9GJW5Bv04h/sAWwfGfmJMOAFSF7wIcWw02GP6b rQ27MB05ApxpnGE6OU2L2PbwZYD7JqqRF2UqueCkJ2kDR8HtO6c04u6p+7pCBMbtms8uulLdnPT XbhywTNKNvja6+5Bz0etrJ53Z0ZzRGnNMuvsYxpWA0cVLYn/bUbzZaPk0wAQo5PkFHwk6Ml2JLc HtZU7z3mb+94BJin8Y5EgcCh7DljwnubxtfSOav9jdEanL9o+8BwX1SnWROQ7jYQH8wK1A7/GUy Om9J4NzuAcIu9EPJyDk64ZQQMMPYhSwXOMNojHc+nnLXiV9Rh96SQk/seTbLBuQpzkgrELVsc2G SiqiRMKS6aqAO/w== 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-20250212_092315_643550_800661FC 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 Support for implementations that deliver its interrupts in ways other than FIQ will be added, which requires a per-implementation start function. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index e7b898aef45e9e18899693774ad673fd370b19d7..12eba1075b36768afc29e211926331b9a426c54f 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -605,7 +605,6 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 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; @@ -622,6 +621,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -631,6 +631,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -640,6 +641,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -649,6 +651,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } From patchwork Wed Feb 12 17:22: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: 13972223 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 4DA4DC02198 for ; Wed, 12 Feb 2025 17:35:24 +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=fLaI3VGYtpeJuIp1j9/JvqZRf6Ca8yZ9tLlCksPlz30=; b=l8rmJmoijfxtlRDwLJVEk1Wq9d yddZE9jViJGad/omi0G7c0k6BmFk0Y0xreO0+W78NkT2JnbNqKVa9oozP36C4tjIrSjcMC9g3DRl4 fmyKnmj5zxcwQZ8Pn5NLAzcPBH6TfVTKdF7lwzR4ZvwJLbh9KERJcVBrsDKYyd+x/XFVJ1EAm16gj WOcYKOjgcloUTwSKX0TRNsy42oRcdubqA+1ISYbdH1yu4eOLBfcU3Mg5k3G465LacJh3Y3pKmKRj9 ejQK8j6Lnp+ffhGnh5VPU4zFy/yFMUXEc7dgYJUq8JjuVOp8TEEZj3O+NZZvnQRHRG4DXatLUC9V/ UQhYENGg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGdi-00000008L9Z-3EhR; Wed, 12 Feb 2025 17:35:10 +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 1tiGSF-00000008IsF-0JJw for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:20 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-220c665ef4cso11557905ad.3 for ; Wed, 12 Feb 2025 09:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739380998; x=1739985798; 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=fLaI3VGYtpeJuIp1j9/JvqZRf6Ca8yZ9tLlCksPlz30=; b=RkGmwUEaU33waqfxK+dbKZOLzH1+upgrJRbUEES1DheIOR5b9x+blkViZ2E2Z971/f 54mnamri5Z6tiaN6hmeo+W9oyb4nG8ec8FCRB/qXbSu5Tqch53b084HOQU0ry9krU/If ELHW6xtGRXR9S/2PImQoCEzmKBPp3JcGge3zqEzpiqHd8algEyNiI3wytJMH+B19jifp 4oSoe5V5eGpBbzevB+tToDfOUWbZnMPi9jpKdwkdx4sryRTTZOu0lzIAMrlDsZB7NlZD Efj3x4qW7kjgTFpecZnz2xDFa4PGOlghc4rCtEuOjtgDd+zlcyS4BaoJCF93Q7831Qx9 uqMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739380998; x=1739985798; 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=fLaI3VGYtpeJuIp1j9/JvqZRf6Ca8yZ9tLlCksPlz30=; b=jeoRuS3O5BjY7kKfkPsHCBB53htehsPd2dht5a1BxfbWivk3GhY1Oklp+wXglV5NSc MpDUhYvK4Ia3h7yXmkCEOgJKpcsX1jurHM2KsoWBm21xWic423qsUxD3LDJozs222oPo GJujlbhreTN2TOG2nqV0sHPsG7wa149AxHSR0Qxi0MqJzY1HsG8auN4FDHZgsltSw4Uk lygm3ZKxK3JuzZPUWEHEnRiFK85o5U9W3DKdvLnTJSQWa9x+8O5Z8LgcbmNyks0t5Th5 TcrPBuuIHjc66Zt903iqO+/cWFOkj/Khr5S0HzRlNCu5dHTUh3xMVuaOirD3K9UWvQa1 rCGQ== X-Forwarded-Encrypted: i=1; AJvYcCWQAmcBadMD0viNlaDgR+k77aHjXcJkKe6W8lzWO63QuSjkl1zxajCKdaLfXp8HhBnZGT7uGWefno069RtwOAMc@lists.infradead.org X-Gm-Message-State: AOJu0Ywf8QBQVNbT4fgjAyxYvRQX73ULAq/6xHucMxF6lmIARCTSvMLi VcPPFsQNyLGWRvR2LZV5NUGOaeghNClT6CYwayLvVJcRf83kPffiz7e2AQ== X-Gm-Gg: ASbGncsKICwU6J7hyGWX7h4h6cbn0XNMGA8sZyDFGHEGQlfs6BrPsjG7X7eh8ly2Xo6 d0QDGivWFl3WdqoKfQhfnusrxYx+0FWtJknyHegwG5bgPg0B3TJfvyk6DTtLLwLKZ5i68kw6ptz QE40gcPG/h9mNR4TgOMwpRSLEuOVGWR5B1aPLL9nPfltpohybAL6IbmYeKHoxMB0L+7oeerlHuF N+Yy9+i+foLjbOa2bKl2M4XMT+vFN31QM8DYtKJ1QZXncMqAekHoAIgWEHEEY816dRnrwLIDzxa nU4Pecig+rakxYEmbQ== X-Google-Smtp-Source: AGHT+IEGttjZzR0TUKwySNOQPMm37+7I49oIev0SakjRm81aNZvhsED7pG4H/sMq6NqNcbqv9PyTFw== X-Received: by 2002:a05:6a20:d81b:b0:1ed:e7f0:3136 with SMTP id adf61e73a8af0-1ee5e5b9674mr6122637637.20.1739380998116; Wed, 12 Feb 2025 09:23:18 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:17 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:29 +0800 Subject: [PATCH v2 06/10] drivers/perf: apple_m1: Add Apple A7 support MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-6-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=10318; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=6N4R/5wlV6Q+zP94GRU2QOpJnSaI9H7wPa7gYBlAKCQ=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjwew9/CNnF4IlqzMFXILSKPHm+MuPDHWTcB jAnsB40umuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JBKUD/94s7BttBhFlrdl5Q7yvRuOTNPoFK1hRiQRnIjNPLN4Ue0PV9vkYV3KzA/U5AP6I3H7lA/ aIngR8l8xp6WyhH7J13FJSPxikgzN01TD2rLDSSDYWX1wQJzMLc/bpFaSGZTLD+F53wZMehZc+u i6yv0x7pG9yTcHozXAMLYfH5lIAc3fupWIAoya3EtG3Q13mYZx05wInbIEEyVNtCsjLhPhujeA/ TB8rk4oDLO52+cRfpQ7HqXb5YpQksniLYWypqOwB3xOjI7vyVHwClPW9ogMKCVIZD+pdfAuyPlD 4ydnrtP+PcbydXX/8hJZlstM5rwF5BIiOnylU/bRinX0RA514/Tykyxqc33Ha51krER6IeE4Cia dURBnT8jcmUbnkOPbaZamKeLvQLoTKNGG2pq0F7yN2MC3piEBix3O3ClwB8ViQ0lgK4kChU6cQk moBklTygifmyMZe84rmHuzQo9BBusC9XbzAqieFx+eNbtfcG3fGM/UZ8eRW6FG/kp3bw8JncK94 kajPN/nmHPROKjVrwlXZJSWqsI4mL4vr5w823Ri5nKY9ncVepfN55m89V4Y15JKTCSoyiFwUdr9 Cqz3RwPpDNbD4AfNybFKGKA/XKRvJ3W9TrXsoe/CK1rKBU/Cjm0DTo5LEyHzqmoO+pcnbDz8qCf WbzTDbubgoL/oSw== 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-20250212_092319_121552_BA8FE203 X-CRM114-Status: GOOD ( 16.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A7 SoC. The PMU has 8 counters and a very different event layout compared to the M1 PMU. Interrupts are delivered as IRQs instead of FIQs like on the M1. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 178 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 12eba1075b36768afc29e211926331b9a426c54f..f852cd5633d7f180dc9dbdde11332ec825a3d558 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -18,6 +18,7 @@ #include #include +#define A7_PMU_NR_COUNTERS 8 #define M1_PMU_NR_COUNTERS 10 #define APPLE_PMU_MAX_NR_COUNTERS 10 @@ -44,6 +45,143 @@ * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. */ + +enum a7_pmu_events { + A7_PMU_PERFCTR_INST_ALL = 0x0, + A7_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A7_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0x10, + A7_PMU_PERFCTR_L2_TLB_MISS_DATA = 0x11, + A7_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x19, + A7_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x20, + A7_PMU_PERFCTR_L2C_AGENT_LD = 0x22, + A7_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x23, + A7_PMU_PERFCTR_L2C_AGENT_ST = 0x24, + A7_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x25, + A7_PMU_PERFCTR_SCHEDULE_UOP = 0x58, + A7_PMU_PERFCTR_MAP_REWIND = 0x61, + A7_PMU_PERFCTR_MAP_STALL = 0x62, + A7_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x6e, + A7_PMU_PERFCTR_INST_A32 = 0x78, + A7_PMU_PERFCTR_INST_T32 = 0x79, + A7_PMU_PERFCTR_INST_A64 = 0x7a, + A7_PMU_PERFCTR_INST_BRANCH = 0x7b, + A7_PMU_PERFCTR_INST_BRANCH_CALL = 0x7c, + A7_PMU_PERFCTR_INST_BRANCH_RET = 0x7d, + A7_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x7e, + A7_PMU_PERFCTR_INST_BRANCH_INDIR = 0x81, + A7_PMU_PERFCTR_INST_BRANCH_COND = 0x82, + A7_PMU_PERFCTR_INST_INT_LD = 0x83, + A7_PMU_PERFCTR_INST_INT_ST = 0x84, + A7_PMU_PERFCTR_INST_INT_ALU = 0x85, + A7_PMU_PERFCTR_INST_SIMD_LD = 0x86, + A7_PMU_PERFCTR_INST_SIMD_ST = 0x87, + A7_PMU_PERFCTR_INST_SIMD_ALU = 0x88, + A7_PMU_PERFCTR_INST_LDST = 0x89, + A7_PMU_PERFCTR_UNKNOWN_8d = 0x8d, + A7_PMU_PERFCTR_UNKNOWN_8e = 0x8e, + A7_PMU_PERFCTR_UNKNOWN_8f = 0x8f, + A7_PMU_PERFCTR_UNKNOWN_90 = 0x90, + A7_PMU_PERFCTR_UNKNOWN_93 = 0x93, + A7_PMU_PERFCTR_UNKNOWN_94 = 0x94, + A7_PMU_PERFCTR_UNKNOWN_95 = 0x95, + A7_PMU_PERFCTR_L1D_TLB_ACCESS = 0x96, + A7_PMU_PERFCTR_L1D_TLB_MISS = 0x97, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0x98, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0x99, + A7_PMU_PERFCTR_UNKNOWN_9b = 0x9b, + A7_PMU_PERFCTR_LD_UNIT_UOP = 0x9c, + A7_PMU_PERFCTR_ST_UNIT_UOP = 0x9d, + A7_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0x9e, + A7_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A7_PMU_PERFCTR_LDST_X64_UOP = 0xa7, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xb4, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xb5, + A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xb6, + A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xb9, + A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xba, + A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xbb, + A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xbd, + A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xbf, + A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xc0, + A7_PMU_PERFCTR_UNKNOWN_c1 = 0xc1, + A7_PMU_PERFCTR_UNKNOWN_c4 = 0xc4, + A7_PMU_PERFCTR_UNKNOWN_c5 = 0xc5, + A7_PMU_PERFCTR_UNKNOWN_c6 = 0xc6, + A7_PMU_PERFCTR_UNKNOWN_c8 = 0xc8, + A7_PMU_PERFCTR_UNKNOWN_ca = 0xca, + A7_PMU_PERFCTR_UNKNOWN_cb = 0xcb, + A7_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xce, + A7_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xcf, + A7_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A7_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A7_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A7_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A7_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A7_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A7_PMU_CFG_COUNT_USER = BIT(8), + A7_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { + [0 ... A7_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A7_PMU_PERFCTR_INST_ALL] = ANY_BUT_0_1 | BIT(1), + [A7_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A7_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_A64] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8d] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8e] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_90] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_93] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_94] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_95] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9b] = ONLY_5_6_7, + [A7_PMU_PERFCTR_LD_UNIT_UOP] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c4] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c5] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c6] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c8] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_ca] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_cb] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -162,6 +300,14 @@ static const u16 m1_pmu_event_affinity[M1_PMU_PERFCTR_LAST + 1] = { [M1_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +static const unsigned int a7_pmu_perf_map[PERF_COUNT_HW_MAX] = { + PERF_MAP_ALL_UNSUPPORTED, + [PERF_COUNT_HW_CPU_CYCLES] = A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE, + [PERF_COUNT_HW_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_ALL, + [PERF_COUNT_HW_BRANCH_MISSES] = A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC, + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_BRANCH +}; + static const unsigned m1_pmu_perf_map[PERF_COUNT_HW_MAX] = { PERF_MAP_ALL_UNSUPPORTED, [PERF_COUNT_HW_CPU_CYCLES] = M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE, @@ -491,6 +637,12 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -514,6 +666,11 @@ static void __m1_pmu_set_mode(u8 mode) isb(); } +static void a7_pmu_start(struct arm_pmu *cpu_pmu) +{ + __m1_pmu_set_mode(PMCR0_IMODE_AIC); +} + static void m1_pmu_start(struct arm_pmu *cpu_pmu) { __m1_pmu_set_mode(PMCR0_IMODE_FIQ); @@ -548,6 +705,11 @@ static int apple_pmu_map_event_63(struct perf_event *event, return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } +static int a7_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &a7_pmu_perf_map); +} + static int m1_pmu_map_event(struct perf_event *event) { return apple_pmu_map_event_47(event, &m1_pmu_perf_map); @@ -573,6 +735,11 @@ static void apple_pmu_reset_common(void *info, u32 counters) isb(); } +static void a7_pmu_reset(void *info) +{ + apple_pmu_reset_common(info, A7_PMU_NR_COUNTERS); +} + static void m1_pmu_reset(void *info) { apple_pmu_reset_common(info, M1_PMU_NR_COUNTERS); @@ -615,6 +782,16 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_pmu, u32 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; + return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -660,6 +837,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; MODULE_DEVICE_TABLE(of, m1_pmu_of_device_ids); From patchwork Wed Feb 12 17:22: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: 13972230 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 55B2BC02198 for ; Wed, 12 Feb 2025 17:36:48 +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=bm9woTVUSz02jRtjUKU2FYmRTWXh8koJl310GPasME4=; b=aPfoAZDWfMP9gJiLSGuQ/ENKBs QClxUY3pCtvrBJ8h8OWGIO18XXd8tq0uzJn0ASaXbYU6hh/LpPGb/nlZMAnL5FAqbc8b60NVtl2Ez uPDbyBIIRzdp82HRlGfrXAZildbG85L6DcHf7cPxkCVmlql9ldsqOt/5ABM9jC7Y9VVXbpPxDcukn p1H3faOWWtKY7nruYzAzzLrzjW1U+V9+Pr7BFENRRhNXu/INHWDMMBSu7CE32AUXzoXq674l8VA0E X56azbswXST2DMhmXaylJ3qzyr8+oPOwxinT4LdwynEUzeX5qEtYZ9ZSJZNtxbhOzyZGKW6wWWId5 E9RXuDug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGf6-00000008LO5-1npT; Wed, 12 Feb 2025 17:36:36 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tiGSI-00000008ItW-0k7i for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:23 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-220c8eb195aso12085315ad.0 for ; Wed, 12 Feb 2025 09:23:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739381001; x=1739985801; 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=bm9woTVUSz02jRtjUKU2FYmRTWXh8koJl310GPasME4=; b=htDWU7zAKXKFAhKOqzFPOOQD65pJNU4xi3ViMsmWPsEJSNyJYhdROZChfJRRqk56fX LCQ65Xmy+dkYDwRLx/TyRYA6OzwvmROC4a+FqMPd9WAS0hMXbYWXGHfrGaRhAsbzvnE/ l8NN3KWyzko2tZfT8Rz9kR45njr7Yq/HM6HbHEFhj3NkVfldXwGu2cgdmJqFe246ritJ FDBNAVVoxoIW+VcS5IUqyWZUynQbBnMesC4HRXe0fH+suhrwMEYT+h4eKZlDSidbLf5b /a0wRjkiRmt0f2zdOjf+U4Xy3kD/AZ6RuvOzw0dZJYiwaB7UXleJmbcMI0W/aA+GE0m1 QDig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739381001; x=1739985801; 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=bm9woTVUSz02jRtjUKU2FYmRTWXh8koJl310GPasME4=; b=ktvvF0HCli/fOLXlguIdxrrRhJuTfmaMFzMc73T3eQkyOEB8eq5oEbYpwcV+n2XtPe Xjfe+6SKSMdZSJSMEvqAshaj1JRrNApfZn07FQ4rZFnETCHFihCDCCiXDiF1JXmgVU9G rjzGQ+klMTEoO52j2vSNgi4G0isCKjGxHf06mnjxA9rUlbEMhzf3PO7rWcinlKNebgV3 Zx68eRxWQzjBnQmE83+NRT9JNmGivre2+1aBwQnIpSC6dbxVuEs/c6BPJmNCK6sOUqyp Dl3tOYeTsQyoW3YJWl1lwsDDoRtdbQS0hL0zk/w7vPnJPiBN7p+8LGneXvI247rzH0P1 MDAQ== X-Forwarded-Encrypted: i=1; AJvYcCUIu9hnXpIcjpQgq+YXzwOdBDzmlFzr4DFkvbUo0sTdfYoyRmU6FF1rM5/3IIMHtHZ+DMSr7VM8B+OvnMxuQhgE@lists.infradead.org X-Gm-Message-State: AOJu0YzWqcIXUzm9LPwEwKEOyQxkS6wooAt7lU1yXPV2HCewG9MKOLKq ph2n6fjwDXd3205MyKUfBNTgpBpD86O+oV/Dk9qL0cvbvcwT9bzuYZ0b5Q== X-Gm-Gg: ASbGnct/Sb/gLFKYHgG8eCPWqoVD7hHJFECWN7q7CSQpikm8QY3goywSPjt8zz+Pzbv lVvqrNY0nU4tTaRVi/RL/msZ6zNOHYj0+yUnAbb0+jPJl6wcH4Zs+/GnF4XSSanbt3KvDnSLkdx Yzcj0a5zLKatfNMLTr+w5cExyECUCsHwvCD7ye4g/7gudqyFGmx3E7gxIOaAGwgyKhGdxZhmSOM /UQUSiz1BRSy8ovcsVrhogJBZ1uiE0BmGcECH2FN8SJ6OVkByifTUDvvTYXAouKeB7HSAsuY3gF SM8Zj2XWU/uxUQnklg== X-Google-Smtp-Source: AGHT+IHwsLjg3DRxCvwcCl+v5x4KJHE2dMmCIBkhxrkv2o/hOsyT2iWaGfM08yqMNmhtKDK8Xf3Xzw== X-Received: by 2002:a05:6a00:2341:b0:730:74f8:25c1 with SMTP id d2e1a72fcca58-7322c3e89ccmr6064849b3a.15.1739381001101; Wed, 12 Feb 2025 09:23:21 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:20 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:30 +0800 Subject: [PATCH v2 07/10] drivers/perf: apple_m1: Add Apple A8/A8X support MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-7-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=7247; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=o9XQ+tue8DU32I7ubSPkx3HiW7qsuXyLKj6Ej7DckAc=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjwYvXAaprn/edNY5RfMsgxHwvu388DAXY8a yV2NMv53neJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JFV7EACe6Rc/HN7KFnLKi5006gvnzcH0fYCFUbmtXX7lOubdKpA1DDNyNVLVz8UiW9DRZh1acbD XnZGipfFqcPJrtgbqi5Mx1QoE2/FbWUzpfZswpToN2B0dToIfTmpypvHp2ys7aWWC1NzsUmyuOD 1kx2W+82BLbwMn+SuK05/+Omimn6MAD+hR9CE6R2OCzxunPaj38kLXgsF9GpQl384jRqe5izHug SOElSvlh5ECoDbiPGoTQZr+/AsxcGz/H0/PHDd2E0Pd1wO3IUCNXGmSktTDIdyl1VnRxaso35Qx AlTQ38DH7ABFA/QC94lPcZPwqNhsqrNL58BSbnngNi0PWnz6jZByR7peWONGYAsaGs1hCHxnxqM vMvl234trKrUlrxTsqyZssNqPwWydIVtGv4sgEPra3E6WMQuhvs4Esr5BrAOxUPmCfICpMjHUQr bZydnMEXlSvKI0uvDvQDwTdFCkQbcFRLnv2Z/PrIpEmoZ9djhqe07lU0G9ZBPCc4udr2isdV+1g 9F2IeX00EohaYTQsCScCwuOh7FVnRjrSCqWuHpeFIqFwnRckzmKu5p4Zoot/GUCpL9wBLhJhS2G SNVXYV1aiEu1m/0NIQCMI1W01XAMgaJRSjHioEMsAZkvgApgul7VhaVivETEo2TVsBl2ZtclXa+ 4wuKXGt+GRfTTQw== 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-20250212_092322_232375_11D109C0 X-CRM114-Status: GOOD ( 14.07 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found on the Apple A8, A8X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 123 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index f852cd5633d7f180dc9dbdde11332ec825a3d558..07eab1d5ee078de5db3d08e2f1714bcfe5d3792c 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -27,6 +27,7 @@ #define ANY_BUT_0_1 GENMASK(9, 2) #define ONLY_2_TO_7 GENMASK(7, 2) #define ONLY_2_4_6 (BIT(2) | BIT(4) | BIT(6)) +#define ONLY_3_5_7 (BIT(3) | BIT(5) | BIT(7)) #define ONLY_5_6_7 (BIT(5) | BIT(6) | BIT(7)) /* @@ -182,6 +183,111 @@ static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a8_pmu_events { + A8_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A8_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A8_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A8_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x13, + A8_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x14, + A8_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A8_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A8_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A8_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A8_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A8_PMU_PERFCTR_MAP_REWIND = 0x75, + A8_PMU_PERFCTR_MAP_STALL = 0x76, + A8_PMU_PERFCTR_MAP_INT_UOP = 0x7b, + A8_PMU_PERFCTR_MAP_LDST_UOP = 0x7c, + A8_PMU_PERFCTR_MAP_SIMD_UOP = 0x7d, + A8_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A8_PMU_PERFCTR_INST_A32 = 0x8a, + A8_PMU_PERFCTR_INST_T32 = 0x8b, + A8_PMU_PERFCTR_INST_ALL = 0x8c, + A8_PMU_PERFCTR_INST_BRANCH = 0x8d, + A8_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A8_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A8_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A8_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A8_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A8_PMU_PERFCTR_INST_INT_LD = 0x95, + A8_PMU_PERFCTR_INST_INT_ST = 0x96, + A8_PMU_PERFCTR_INST_INT_ALU = 0x97, + A8_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A8_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A8_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A8_PMU_PERFCTR_INST_LDST = 0x9b, + A8_PMU_PERFCTR_UNKNOWN_9c = 0x9c, + A8_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A8_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A8_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A8_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A8_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A8_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A8_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A8_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A8_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A8_PMU_PERFCTR_FETCH_RESTART = 0xde, + A8_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A8_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A8_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A8_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A8_PMU_CFG_COUNT_USER = BIT(8), + A8_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { + [0 ... A8_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A8_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A8_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9c] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_f5] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -643,6 +749,12 @@ static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); } +static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -792,6 +904,16 @@ static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_typhoon_pmu"; + cpu_pmu->get_event_idx = a8_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -837,6 +959,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; From patchwork Wed Feb 12 17:22: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: 13972231 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 380D9C02198 for ; Wed, 12 Feb 2025 17:38:13 +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=cTYbcdY7/Jo2Dh85xeyI2rjRTlgHRrAo4vBrkDmLZJ4=; b=GFk6Bt44Idf0HnKP+yfeF8QLdc c8dR/t8xVuVIzLN+s28om34R+DhSRMffM3xqI51WgJCJN4JfCtg5O/VyBZpscjm083j4UdoXj28nd rrRM+3V8SNcxecj1GAAfEs4383s7clEuekF6em89v/7nZ1Tu9UefsBhUgvWe/onBdnCEg/0Zqw3WW /3do6rDfVRZWAzSyhPoWFmRUYVXTeKWRVNMaCijmL7mdUCBsVj5kALWTP7tQ8MKugoSVH80yE8FDp uCb2vpvsazOzHtbBtISpsos3ewA9JlKrlMzi0foovRaERngN85aGSlkhU56yTNHX8vcKwrP6Mqdtm 08w+QojA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGgU-00000008LZZ-0GNX; Wed, 12 Feb 2025 17:38:02 +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 1tiGSK-00000008IuD-3L15 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:25 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-21f3c119fe6so161848545ad.0 for ; Wed, 12 Feb 2025 09:23:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739381004; x=1739985804; 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=cTYbcdY7/Jo2Dh85xeyI2rjRTlgHRrAo4vBrkDmLZJ4=; b=evup92Mv/ODUEtNAmi2VXE83h9E/i8C9p2Eae01UA8kKDp7kB3T+CyYm4s0z/ARjLe iNA3vSUJ5LKAvPdNpP7iY+ag+mye3K1CApNHdLvgVimiOPN6PIHAOVhL+WfxPHpERjLY pAWKpMMkb9Os/mmvchLznG2sXOoSJLyxljCD2NxjJVqY/yjgVxvog4d673uCUNaMPIaT tWktxxLqQJGQxZeuw7fIM7NvCqD7JRv3JshtRNQBdLuWMst/rFnrcmj0dVVfJtgDzY0J sxrRepU0++s6kd+Kmpjl19IZcdFSe9tgc08MwICOA9BZgPI0p/T8a4KfINfbxPryJEnx W+4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739381004; x=1739985804; 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=cTYbcdY7/Jo2Dh85xeyI2rjRTlgHRrAo4vBrkDmLZJ4=; b=r2BUVIHBYYpwnu0P+Ju/USMEAN66cADDUkDyOX/4sSszoYfzdzyRi1bjYumTCGerjr qVvM0TUeOhQFLocoBJl2l+/zFKbCKH4GRENWdn4bmLvgzoirlatt2UVlpBoVnnPQ2zfU i9GzQ1RZZzkLRq6ekEG33zCq7HRC0XPk2VlosYzQi46j0bCBqanlREGv66nlqRMqGW77 Hl1fRGl8gnug3sxC1hiSkY3g4w2MO6EMvFG6rnxhYyc8dzySzOc4pKrmMepAXRk/x7DA ecfviyRzGVjlE55ebNkiR1TIGC70gWny63HCa5dy0zBdER6LvpTNsg6DPWYR26yo7Coh xheQ== X-Forwarded-Encrypted: i=1; AJvYcCVuG0bVDLVx2tKdgdUT60iO4deDlzlqOSnMAfEi995brQOe+hDMFOnOtf19iB898YX695r+HIPXqkEQM6fv/+kT@lists.infradead.org X-Gm-Message-State: AOJu0YzlUOyV0EmsskpfgitcU2WPzmC8pjvebq9KZtYxiX/zFIywhBZe lLfOf31iLFmJ/ZGpsjEc8aQHlz0WsZk3roIsxkA/NEsFgGVrwrbI X-Gm-Gg: ASbGncvNI8L0968ZI+qQoVgHspKRtpNqOqgCqpKPy2PUWDRGfnEGVPdeCNPfr7HS1gM bb3K5snZE8mfSRLRsKSqMCGTRZNVVu00p2SRhHqoCjdPowkxFkRDLq0SvIPFeCrDCcJoChp3Rzl hFqQu4laf15JkXY8zjdgtyH+ONN310kCH58EX9BmSOvOhoKdgVS1xin0guG72H5pGTgy5z4Qzes uzbdEbZpAGs/lc0PEYNe5XmfS/urpdKNLd3wFfW+b4w4AcITdYn4ZYUX6V3kQ7z/IzYjDkoof3c PhYcGpEQHr143c3nOg== X-Google-Smtp-Source: AGHT+IFJWddhKsl35rUURVv4XH6l+qORH0jW/f9aPBCnuIQfbythDxx0xXqNOVOvdxO7TPj5xX55jQ== X-Received: by 2002:a05:6a00:2e9f:b0:730:8d0c:1066 with SMTP id d2e1a72fcca58-7322c41ba21mr6573334b3a.24.1739381004106; Wed, 12 Feb 2025 09:23:24 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:23 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:31 +0800 Subject: [PATCH v2 08/10] drivers/perf: apple_m1: Add A9/A9X support MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-8-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=6930; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=+NHsdiTChFJI267XhsAcL79c5EIXEmeoIiXL7aDkemk=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjw6Bac4EbEaWJzQItqzFAQjYw7jkkmY4hPn 80JMO9tyIuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JDAND/0XYHwMatuebskGA3ax33Qo1jfLpkeXIplbTQV7wNXGDLCieTfhv8+3BB7wvVz0cGrZO8E SZ7fXDfmbEV/GILoltfzYcNosmpxVNLtVQqWXPg3rkL8sWV8CfAke6cVAa2dKHVEe/hc6c7AHzp etJ4JPrrwGbVTOyO8/TDinbeJnsrgQYCaj0nO9eOS5+bt/YJCtHpiBq5II4sZf6MXd+QwCS9Slz TwFVwpSHlVdCedejyMe1e8xHC49O56T/kpfpBD5h/7XlzSKow11D5m0UriW/9F44sj9zFpg5HVw tOO9H0ngGhLtIs7kvnVSMPV6xfEUShMDZRbfOKUDwhzXhMjrc3aDexed9IQ+rG4V5QVVsoZ1+9X YM10ODmh5mla+xp9JnMDL/MiMtJSDodAScWtLizY57hPQq3P/xBhnpLzzbjBe6o/1UtSJGiof0H l5AU9bIBv0eHv69rEnFTl3EAoG8QFN4pZtZ0KDSn0KhZ1pXDa2FY7S4FoyHCntBGg5xdNReGoV/ Co3l9IMOvsu/R0oGzMoBRu9UrYLGzjLEKzkuV6NOqfXnJQYmJgzusAzGnGhdB+9yUTdU5gSQ2FW lAZZcTVnbjrWwsxMC3Mt3CXSIk/qUCaPxEtIlDDhyR9ACo02cBmoMlcMlcqYFplE1RMwCizQ3A7 MASek+3L4ughlyQ== 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-20250212_092324_840143_0684C9C6 X-CRM114-Status: GOOD ( 13.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for CPU PMU found in the Apple A9 and A9X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 120 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 07eab1d5ee078de5db3d08e2f1714bcfe5d3792c..3f72de1051b31a1c0b417092590bfd89e747755d 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -288,6 +288,109 @@ static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; + +enum a9_pmu_events { + A9_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A9_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A9_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A9_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A9_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A9_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A9_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A9_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A9_PMU_PERFCTR_MAP_REWIND = 0x75, + A9_PMU_PERFCTR_MAP_STALL = 0x76, + A9_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A9_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A9_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A9_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A9_PMU_PERFCTR_INST_ALL = 0x8c, + A9_PMU_PERFCTR_INST_BRANCH = 0x8d, + A9_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A9_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A9_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A9_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A9_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A9_PMU_PERFCTR_INST_INT_LD = 0x95, + A9_PMU_PERFCTR_INST_INT_ST = 0x96, + A9_PMU_PERFCTR_INST_INT_ALU = 0x97, + A9_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A9_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A9_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A9_PMU_PERFCTR_INST_LDST = 0x9b, + A9_PMU_PERFCTR_INST_BARRIER = 0x9c, + A9_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A9_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A9_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A9_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A9_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A9_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A9_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A9_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A9_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A9_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A9_PMU_PERFCTR_FETCH_RESTART = 0xde, + A9_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A9_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A9_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A9_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A9_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A9_PMU_CFG_COUNT_USER = BIT(8), + A9_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { + [0 ... A9_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A9_PMU_PERFCTR_UNKNOWN_1] = BIT(7), + [A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A9_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A9_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -755,6 +858,12 @@ static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); } +static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -914,6 +1023,16 @@ static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_twister_pmu"; + cpu_pmu->get_event_idx = a9_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -959,6 +1078,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, From patchwork Wed Feb 12 17:22: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: 13972232 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 AF4C1C02198 for ; Wed, 12 Feb 2025 17:39:36 +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=goB9OpNx+yU8RZpRcA21xMEnss0omXSShOn3xae45KY=; b=k1OKrHqwNEv/8amDVqZJuEfcc+ XkY8uMwYcG7GoMMeVPv+hHSnwqnMsc/SjCj+ngb8GvRldVb1Iagqqh0RiFUf5Xmb3xU4l+k9rwvUr g9p+jRdLJFN6QGLYPRG/GU5pweWccVEuUOo0Qy7/LZorkm4M4jqquS1Gv3QWMtn9h/lTxEeqqWCPT IzySDBoyaZoPi0PYd1IoA2dAW0dJny1Zn/4H3OwxOZKfWnhUmuDs05RLidW2UlZX8zziT2BJLipUY l7iYePhAfqeCef71XmDMMwjDcTcEZ4QxRlIC44dLxuzs13XG3Hsn9xsUkX7BewaGoH8L5Ec6U+rWx f8353pQQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGhr-00000008LiM-3IP2; Wed, 12 Feb 2025 17:39:27 +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 1tiGSO-00000008Iw9-0gA2 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:29 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-21f48ebaadfso122915675ad.2 for ; Wed, 12 Feb 2025 09:23:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739381007; x=1739985807; 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=goB9OpNx+yU8RZpRcA21xMEnss0omXSShOn3xae45KY=; b=Td2MkB2gXmcoWxtlu8/ugRpnMST79Cw64Gpc5gTjLeLDFx8yof2JYobcbV7pLpKrjV tQOeL9id6dnVdAHp5xzmdcUuQ/1XKvBCyHUPTOex5i0fzKpaMrOd3/H0OxTm5UcHwCYz eJj5T/s7Ejwv8m7QV9Z0K9r19JYXWabQY8gxDIMTN7TfIWmYKjlxlGptuByi/8PSF9Oy fTFzdj8JT1Q7sVWnSw/DXiFd3FjmDCxF5HzjHCygrShXKzKXAx0ZLlDr1b42lpslDD6D plqoYW5zQVAOAgaCxSNooN0ZEadJvRgrN0MGO/S3Ts1hxVRvOnD9H9X5toCQVVDiCA1a ghZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739381007; x=1739985807; 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=goB9OpNx+yU8RZpRcA21xMEnss0omXSShOn3xae45KY=; b=IShtWW6dzpVqtuAmr9GCUzeMw7pdcGg1kK5Oj5hm5TirlmpfUICVPDEJy9+46SNMtJ OzRKUMUMl7oJQoFWWth9dtX1AtbMzvKtfM415G/XAsWckIHQbbFlcNe0Bp94Wp9eS0fw GakJ+CndLi1ehDHLyvobsZ6TV41j60W6xA94xJ/JdTGaJHl/yky4OAjZo7uDJFEXaURS IQP85YaymJqNwHuMN7YQmGmoHw97tMRhC5mCAy6xXmEEZe/flNZ0BI0l8+K/Dwq1HAb+ bGItvKh2PtdkXemqPJs6V+DEXacQOYLwKolys5iCqWllk+lLdmA+iiqziq5BDMa7lfPE 8lJw== X-Forwarded-Encrypted: i=1; AJvYcCVKak4T7n19GDE5kdXwQImysI0oGn8yLfiprG3mtx4ztDRIugtJ9k+uLegR/BfGhP0YvueqpQgkD2PoE8W+MF6S@lists.infradead.org X-Gm-Message-State: AOJu0Yztmm5YkKjH94K0S5LWXbTMWiwgJTBz+EbmCm94mM0zmP1gZ9MF uELimrCXaLUYe9n413LdNozBB5o/nN5Si+moUdeIykYkOlrPP/Xl X-Gm-Gg: ASbGncsQpF29U+Drv6j8Iyt0V9OqtbEOKwGcHvkbLn1w/WbDXxFtnMQK9/gqeWvLIlL FbEaadXr21ZodPkEibhxzC3YSbLg8hd6aMxcVGHn4DGQFeC+yBoPMwoy2rlbx1uiZFelTKSbX/v QZrOnxOEX5SaSJcAdct1j89OcItGIY0eGLdaOaBMi4E6IZ4ImmLADqRyZgvgdlHofISBpQfbm5k TxTKBlWqMiyWOmlcf4MnfNnGKTZjOd+m/EnaTHSN+COEhSL/IQxMkz4IXWVZQpHYPiCCb971qmO zsWccjmTBLnFHSzw0w== X-Google-Smtp-Source: AGHT+IE4buFawDT9VEc8troyiPBCP5gBpQdzGXfGs+x7e1+jJIJo9PI4VYyoD+qQgg7ozPGNCiozZA== X-Received: by 2002:a05:6a21:7a82:b0:1e1:ccfb:240 with SMTP id adf61e73a8af0-1ee5c8228dbmr8183451637.41.1739381007141; Wed, 12 Feb 2025 09:23:27 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:26 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:32 +0800 Subject: [PATCH v2 09/10] drivers/perf: apple_m1: Add Apple A10/A10X/T2 Support MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-9-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=7410; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=hXVD/MHAjavl4ZXvSUc2VxlC0ifqcAGukxBhH8HTG9A=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjw+arhwIKYtKtQ3YjobPTYIt823UXgNhjNe ZQVqsBixnuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JByTEACW7jEh5mxoGGJbcZgAf6jmdXgZjaRDvbepoCCen/xIi8WBcrw0jVTKeqPUJ7q+1RrzXj1 zNJDlkH+IwF7+W086H5N3C1VjVECLQ1J0g4wo5ybP04l1HOuiPRWu8ZIgSf2eEOuWiMBKrbCyJV 6M2l83Ce23hHArEVKDpojpAEvQWEe0tdpOaXZJUVFGDdugCeCZUUTEwlChxQWVoo4Uf+hg6i3zZ BkUwkiekObq8jPIfR6XzFXkJclWWYYwqTZKjCi75U5CyH8qRZwME3LLuxhoPAC+Ac33gwUJGt7Z d0GuYTnMdG9FYVK+DOWAyBD4wc8mX9EPAdcM2zKtFH2W14teyEqRM1/2BWiYvE4MZrQGenSSWFE g2PujtWRyJooNxlsieoTPmmdYHPgHZTNEDNXD/hZKN7XwxwriIqRQlfWLwNefvqJJdyjzG3DFHU /CA20VwKdmDLbd9iDIOkfdGeIdK4EHiVE9Fpasg3yXuRQ6jAml4DKtdHk1pvF5hqZh8vIEBNmdN aQJC8ymUXiFhahkm+DadvxYW/i4YzrmpyhzDTzXZ1vq6xPz2nN1ykXs9LK6GhryZFLR5ZgKddkb qWcCXlJWt5iv+Q8TnBgIwBvcMT/eDZv+JPvGajdd/4bUHumRtVzbJRAuMxUJb2EzDjZmpmGcTjU 1sCptU1bPQw3ouw== 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-20250212_092328_209544_CCD21827 X-CRM114-Status: GOOD ( 13.46 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A10, A10X, T2 SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 126 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 3f72de1051b31a1c0b417092590bfd89e747755d..c084c25f69d29756ea7a2e542e33888c1142d80a 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -391,6 +391,115 @@ static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; +enum a10_pmu_events { + A10_PMU_PERFCTR_RETIRE_UOP = 0x1, + A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A10_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A10_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A10_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A10_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A10_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A10_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A10_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A10_PMU_PERFCTR_MAP_REWIND = 0x75, + A10_PMU_PERFCTR_MAP_STALL = 0x76, + A10_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A10_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A10_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A10_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A10_PMU_PERFCTR_INST_ALL = 0x8c, + A10_PMU_PERFCTR_INST_BRANCH = 0x8d, + A10_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A10_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A10_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A10_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A10_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A10_PMU_PERFCTR_INST_INT_LD = 0x95, + A10_PMU_PERFCTR_INST_INT_ST = 0x96, + A10_PMU_PERFCTR_INST_INT_ALU = 0x97, + A10_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A10_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A10_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A10_PMU_PERFCTR_INST_LDST = 0x9b, + A10_PMU_PERFCTR_INST_BARRIER = 0x9c, + A10_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A10_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A10_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A10_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A10_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A10_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A10_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A10_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A10_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A10_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A10_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A10_PMU_PERFCTR_FETCH_RESTART = 0xde, + A10_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A10_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A10_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A10_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A10_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A10_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A10_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A10_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A10_PMU_CFG_COUNT_USER = BIT(8), + A10_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { + [0 ... A10_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A10_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A10_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A10_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -864,6 +973,12 @@ static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); } +static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1033,6 +1148,16 @@ static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_fusion_pmu"; + cpu_pmu->get_event_idx = a10_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = a7_pmu_start; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1078,6 +1203,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, From patchwork Wed Feb 12 17:22: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: 13972238 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 6FEB0C02198 for ; Wed, 12 Feb 2025 17:41:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=z0q3sDAF4oQzGjpTE5UFq4pISwyfntsajHJYAfkfV5U=; b=mPHKK1LRFeFzfug5f3HvTz64K5 vHJ+T8S1sMKU8N8b2/jg3N8r6SMmti+7bHrz1DAwB6AekeHDMsFxCtNdA3f8MEhJs7/pIGCcV9ZBp c3O81yQjYmJ8mPaIubhMUT7XnpeLFpGv5ZkNnZR2/drX9oX5VimYGfWy2agbOW03FxAFTW7TN97SF +xYw+/emmOCc607y+L0daX/D+0huUUU6PvjQfzsuGdz4zSJsLLwxfbcdi44fWlMu8dVROIUb76eOw BVwzGCOsBWLw3LXlN9endFEO40nW22Q+QaODG/JI8TCoYHFB2ZJ2UQRSNckPF33zZwtVsj3ZMvX0j NXLN+3gA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tiGjF-00000008LuE-1qU9; Wed, 12 Feb 2025 17:40:53 +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 1tiGSQ-00000008Iwq-3lN4 for linux-arm-kernel@lists.infradead.org; Wed, 12 Feb 2025 17:23:31 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-21f6022c2c3so19775595ad.0 for ; Wed, 12 Feb 2025 09:23:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739381010; x=1739985810; 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=z0q3sDAF4oQzGjpTE5UFq4pISwyfntsajHJYAfkfV5U=; b=m9oxiG1mnuI8BobrtHiBWzbZ2mplf1heEp/Xl9jbt6gDrkcdI4iyNyU+fstFIe4/fc PtARoHaKco7KA3PRxQ/YEpxTNaK3gBBcWz8VXKYJOkQgypIe8eqAS2jA3Byvg/iroQZB ihQUR9AJ62a4v3YOgGhIKOMFGTWx3+TnGuId1/gXSFR9woX8czqlfGPznxKOtSOhts0j XRlF/PNxk2vRVJPqSVNsodwzzDF5EGrAgCTwbYi1v02eOAm4MF/abjoD0oUbEPDX/UNq U7VSEbQaTYmhEGJyzpwjxHaCB+nKSknEBu4E+q01qRPU/NoHdj52YhGDwgEhWEokoHLw 6ugg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739381010; x=1739985810; 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=z0q3sDAF4oQzGjpTE5UFq4pISwyfntsajHJYAfkfV5U=; b=aCVJ7/jjSg7DSg4fguZrfmRp/9UHlOZb6upBTbh9slnaNujFagVef+23rNuihPT8EL Htooj/IMdoiV1+SHOrcGwYY9Y3hSnT73UYSV+B0sEZfD8GkI+bJgp5bX7/u09s930N9E t28LaKGjqc8je3wtqpQjT5MR/jVB7oqaJcYycxxrZXRstdmsavnr25FYr740XZsIFAc3 8NC7Wyb31njMR7SR5LE83FgqFpyQIFf8OISf4EpLupFnOWHWcw5s3D+szx8gULILdDaB 8clpatRlM4Keb+3D7QCU1F2kubNyiYDFCLoD2MQ98/mFrCshswmiyViExhqrwLIfprYw sW2A== X-Forwarded-Encrypted: i=1; AJvYcCXchdXqVmyLvSf/5typhH51DNYycodLiBc8uRATqqukXvqxw8ytcYze9923Bokg0XBdkNNXCPD5syJnhdc5c7PT@lists.infradead.org X-Gm-Message-State: AOJu0YzaHNiiJQbbo35+OMedv99HvUvXIqevq/xvKrQT24UW5Su4DK2k XA0IIx4NZ0WKBT+IeLvst/IGrmJFjgDgzngAB28TGcNNDjLJk04Y X-Gm-Gg: ASbGncstVNQjb9Eu+NLai5iYZWRJHAuA20x/NM/dHhgGvIVDT8MCs0qoRHHTfD7NTd0 AXbOvA8TKeVhZejzhVfGUKzBj1jmwtXHWkcyRKpVivsEVk/vwao5eGNGerxmxh7YDFU2QVDdLwZ 7YwaKkBQeBTglh78JI38OFPx1k5Z/pTPJ8VAjw2Nohvi263Ll5WVyIvRoe+HM8p7lZ0vzbY8HY3 FNp50sxJ3VUa07ZmMI5pObfUds8BsHIMolv9Lm9PvnXICDcGHDdhJDrDfQpxeU1W6dVbk/E63fE z7aGmLIXKuUHhz3WEw== X-Google-Smtp-Source: AGHT+IGVSSdvwzosWg1IZcwS8BMskgkU07C3H1XRsLu+vnpTLU7/3ScWN2qrDfl3HyrUXyfJua/Nlg== X-Received: by 2002:a05:6a20:734a:b0:1ee:64c0:aa85 with SMTP id adf61e73a8af0-1ee6bae9454mr154934637.6.1739381010171; Wed, 12 Feb 2025 09:23:30 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-ad54f1691ddsm6001705a12.61.2025.02.12.09.23.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2025 09:23:29 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 01:22:33 +0800 Subject: [PATCH v2 10/10] drivers/perf: apple_m1: Add Apple A11 Support MIME-Version: 1.0 Message-Id: <20250213-apple-cpmu-v2-10-87b361932e88@gmail.com> References: <20250213-apple-cpmu-v2-0-87b361932e88@gmail.com> In-Reply-To: <20250213-apple-cpmu-v2-0-87b361932e88@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=7847; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=X1FjYP6mBke/3D24Hai2ue885wXpUkAZdmez50aXc0I=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrNjwOHiCdDt45QwCr4G1/VlK0JHGnfJwb+zrn 8eBBKHLFJ2JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ6zY8AAKCRABygi3psUI JM1pEACLmL4+xOpOZg85I4Nh44mq3mvJfCduwshN8rdiT5luta//DE7QcG0XtgtpMxFlP8B3ARQ aIpTgRS4e5h6pfYpwHPlet69I0siHVFNzKv+Kxk82eJT0vDGg9cLJeVlwwOKVI9ofrpSTvmh68/ wFIvvn1CFmwtCyVIe++NljUXFapT+MmezijyvcER2///viHi/BZjHH6UybjaW0yFjJEY3LJsAWr BF8PDxUFg1OBEYd+wyR4Rsm2Yv87qrGucpcywdFqsblUDxjc9yd3FpDOYAcMAhzmVZNAq2iSVin Fg+b/l/zM63lSI5TOE0v4lUsVqGORLWmHLbt2a1GNOvwg+bdlNZvbcy0AhOrmA10xj+w9n1uZeG 5waq3DV9Zs1xZCCp8gYEtRHKU0xNKM3eWxTcAE9mpJLXksa5Orhf/5ff/m50eIqXUtqJt2VK696 k9p9UscCcXpeSMOIS7IVWqBfqgUrn+ix2rLtO9EL1dTWRB+vVUo29geit57m/ljibzW0y5OopK1 3woxTgkBPr5tRA9sHK+pAj4pF9XuPI9St0uCTyLzoFSr5ACIIMC2BXt/P54rrvIfzKQqIEYFmtd 0DDr/wGjvf5FhOrrJgQwy5KSdPvHrg2ontXOTgrvTGpCzkAlouDlXq+ofJJDmvRBb8YV87e4+Hi 6jo03XxLmzd4eTw== 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-20250212_092330_943208_182AE3E0 X-CRM114-Status: GOOD ( 13.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found attached to the performance and efficiency cores of the Apple A11 SoCs. This PMU can deliver its interrupt via IRQ or FIQ. Use FIQ as that is faster. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 135 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index c084c25f69d29756ea7a2e542e33888c1142d80a..d4e7436d0edfe785211ad700e4b0be4e1475e8c4 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -500,6 +500,113 @@ static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a11_pmu_events { + A11_PMU_PERFCTR_RETIRE_UOP = 0x1, + A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A11_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A11_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A11_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A11_PMU_PERFCTR_MAP_REWIND = 0x75, + A11_PMU_PERFCTR_MAP_STALL = 0x76, + A11_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A11_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A11_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A11_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A11_PMU_PERFCTR_INST_A32 = 0x8a, + A11_PMU_PERFCTR_INST_T32 = 0x8b, + A11_PMU_PERFCTR_INST_ALL = 0x8c, + A11_PMU_PERFCTR_INST_BRANCH = 0x8d, + A11_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A11_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A11_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A11_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A11_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A11_PMU_PERFCTR_INST_INT_LD = 0x95, + A11_PMU_PERFCTR_INST_INT_ST = 0x96, + A11_PMU_PERFCTR_INST_INT_ALU = 0x97, + A11_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A11_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A11_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A11_PMU_PERFCTR_INST_LDST = 0x9b, + A11_PMU_PERFCTR_INST_BARRIER = 0x9c, + A11_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A11_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A11_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A11_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A11_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A11_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A11_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A11_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A11_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A11_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A11_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A11_PMU_PERFCTR_FETCH_RESTART = 0xde, + A11_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A11_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A11_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A11_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A11_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A11_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A11_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A11_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A11_PMU_CFG_COUNT_USER = BIT(8), + A11_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a11_pmu_event_affinity[A11_PMU_PERFCTR_LAST + 1] = { + [0 ... A11_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A11_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A11_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A11_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A11_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -979,6 +1086,12 @@ static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); } +static int a11_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a11_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1158,6 +1271,26 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } +static int a11_pmu_monsoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_monsoon_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); +} + +static int a11_pmu_mistral_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_mistral_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1204,6 +1337,8 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, + { .compatible = "apple,monsoon-pmu", .data = a11_pmu_monsoon_init, }, + { .compatible = "apple,mistral-pmu", .data = a11_pmu_mistral_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, },