From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD9E5255E42; Wed, 12 Feb 2025 17:23:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380986; cv=none; b=utVYhDmnzRzqIt7bCq6WpjOpsIXNzpXNrwFWzkuOE68VVhsaYIEBg3hI0BSH9tpybwPEc8hyRKvyzRhAMk5Sk5kEKhbU37378/9u0o3YcaCfe7ERyj3pIu0jhKHzLxl9Z6J54T+uYpjE9sFKCkU/6mpsByy03/Pqlo0yD6za104= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380986; c=relaxed/simple; bh=xKNBKHADoFe0D0/YamWRency2Eic4YhwlS1J3poCzGo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gYVsYcG3Its9knFxc3iKQQdoYq0BInJMmxmrIwIUGDe7IRcrez1Co1uhRd+NjtlYGDVvZY5L8DDXgBH5j79hCsgfQpChD5pbwZ4aK9JUyTkqNAeQE51bOhyMQWKVybQrtC8zmLcvIijxgJ61bDooLXkV7Erx4t3q/SI6bPpQmdc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LmtrChk9; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LmtrChk9" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-21f6022c2c3so19766495ad.0; 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=vger.kernel.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=LmtrChk9DEAvh0uWixt5bilTvM1PPN9FmUDw9rKI0BVRsWbYHBqIyPOuleSpTWcs2j pUlY03V0CoErOT25O4w8AguqkhXBgyco+wwnKmIsEwtExGu0JenMMbRIgcuo/ypRRDfs c7POdcE1aFVktPBX9Elw6IcKboHi9MxSVG5opAIKEODy778/oEodJFI5Iqf1w21KhUro Bdb+twI5p8Nl4r5pvTtTQ2abSPw28wHATWjHK/qitkya1DldzIIGaJfTdpDGmGUOS6Dx KfPvLmujN4GyKdD1eRp25tb78XMoQzM/9bH/Yy8QnoK973TsCc+9xKu7vEe7gm3spod8 YbBQ== 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=Wc9zxZNUxtr0HQ6lQLoWDEPkWz65sFMMbuO2VT2RDZlmmZF6rkyc9COLj5Eb+gvzeN vtqchQxr5/TbVkljKfJiajgAG48mu3z2MHwivt8VdoNjE7Omu2nxU/s9SMelrQlumHez qwoOQfkKCBnAYVpqF+dzEYf0hTaGsOiThUhOVxglilYdSlpf4WZeo8BofV6iVJLG0qal ACWGP5Y6iTxJvTt6tG871GFGNzcLJH+U4aBruwxgoWbzU3D0jRrRReQt8b1gjds4bezM rrYQBFO45an/Hq6kADx82ZThA+jC+6qtJ2BUi8jurmqVwimUvtUnRX7AzV4O5gr3Uy1e 12nA== X-Forwarded-Encrypted: i=1; AJvYcCUUrLzNrF5IVhMfSY3W/5Zb1sB+Ct8w3Fz/lYyZFgXl0eXiFtuxz7ehqKg1jTULokkBEbPkEiP64w6aME/Bqr63lg==@vger.kernel.org, AJvYcCVbY5CqWV6EoT+UWLV4YVCsPyUFfgAmMGTneTixD6klouYYyaPiJzI05lGmlVmrqDHQxuaSSGWeI9eI@vger.kernel.org, AJvYcCWvp0k1/+i8/zfgSAqywm/8M5cCh9aCaq3Tixy7fYL/6Ouq/tLbcqcmH220X+oBH8V02npXA+mC9/4IEgMt@vger.kernel.org X-Gm-Message-State: AOJu0YyFjK8bthVx+qPbLY7obZ2CkuzuJ/XeeNzRayTmJ7MGJTP/NivZ ttBsLTI0+RnohlGfaO2mK9h98OIKpiOT+yTBppqGGbjo0GKREusf X-Gm-Gg: ASbGncuLm0uEbeQwz45qQRNJzMGP5hurJC3vmXKuozco1+EkUEKuJW9F01rRMdmXPKR iagXNPKqU0Gb4Nw8+8TWPpq7Kbg3bSm2NYCbmUXOd9ktvi0JHXPxSvOigqV3vaZkugPKZqhU0WK uMoNm08rphZU8bFWItQu8qbEfZ91BCpiQ61L0WuEobrUz0RXpaWE8MsDaPskTtGx0y6LhlKym7I ANHXau5vZ8LnLGvuwzcxB23R9DaLAkPKs/MgrP4vDyc0QIAItgVef0m+5imzrK8O4A5D/riJkdN 5O57cpNvVsSNdlGG4Q== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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..d2e7f19cf6a2d7d2348d163d37c= 2787c7a36bbd4 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 --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFCAA256C67; Wed, 12 Feb 2025 17:23:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380988; cv=none; b=U8BabOAOeVgOmoXsKjml3H6N9wLAg8VnLq+x9brpelu0ShuWWxC2eXlWvqQHnu/OSUAjgzDXP5x6mtVBQtWQx5GiydWVXfAVut70lXJRdWQknZI1wnMPp8oe1uscHGJw9uT94Blt0dHyjLwlPs+RQvT8lJdi6l8iTBfwHCHioVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380988; c=relaxed/simple; bh=b4/Mn/CXmCbLpAt2Gw4jqi0tjGVxwUxbkqr0KY2PlmQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g4eQ7EQDXWvpM+BneDxZ/i1PT51uYF9+oK6f8vHsViYT3QdaXtwt6Q5et/w7FrTlXads5UTpGG/l3gyoyyT/sy9OMOXnMkMTSUwSvLrRDV7EEjjpK7oinArs2E/yPr251Szfjyf0UmV5WpiMIpz4Yn4FBN/Bj8gJCxJzsky5Img= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kjFS2dsj; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kjFS2dsj" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-21f5268cf50so81365365ad.1; 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=vger.kernel.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=kjFS2dsj5boqZLdZYackahiBOQ65g0nooipTL5AYeGIGA5erQMvouQj2jh1iuMYARW RQqxSkJy9SPmbruPbCNZMMMkT13z4ulFirbu7DQVKukmE9LnjcdaqBQQlLbxUre1002p qBW9byYzAAm0gW2rdsf/WrSiPqFzwQm596TLSdUud8u3MFtNKEt2gZhQND5etpJfS8UO nnx8bdfO/247u4VkMaIENOTaPVn7n3chR0ry8nEB8ZBhUjd/lEt3CKxEPcNn9LI9S7sE Lmr69JIM+8iyKjOQMZRETAIvQTCjjyprk0kZzdwHJOKHiHOC8hggkdOV4br+w3AgVtPG YAug== 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=rRknMBTJK7+oVS0RzoS9AA+4seHjlKrdPoWluUpXUwjiVxNROmlv0AJLCUz8p2iOfC ucPjcW3t21gk4MSnzlF/L6HpodMPokccOqYb1xRRIfhg6ax3lJreQfKyyif6m4d8zvAQ Caok0r03Z+V+9+KRiqEkM2l75Icd/QhVbAeLWVnlSduDE6uy2X2WnIUwyuipVAJBmzkJ a6Hf8dLoCVtgpHhsveDz3vi3gdABoe9pgEGXoBt4myRom9G1A9zaetdT0H8XU3ufeJEw xkhgzlVSAc7w6eMQk2Uoq5Y5k74HFkYOJ5sa78fFKHSLlI2EYnSFFU9mkX9/4Ff6QDEa SKdw== X-Forwarded-Encrypted: i=1; AJvYcCWp0thyB6uAjtum53ZstW4iDZr3RlUXmoV+j3ekO0jB6aICJpETj4eLbDlnm4Z2fjGVz1TXBrD1VE9rsox+D8XpfQ==@vger.kernel.org, AJvYcCX+NFSnVp7gMupApkWLxJW9sDvNAc9xfENlTsT6SOBZfLwreWAwKd3o9Iqj+jIV2yTg2KixNNtKjJAc@vger.kernel.org, AJvYcCXSUIjuI1j8c33y/hEAlB2QYwfoy6IhPjuJuBqpcrM1rTM+FR3eWjKtUQSnrnsXufYezN9oX1Qbyxk/qz5a@vger.kernel.org X-Gm-Message-State: AOJu0YypsYgxeX5AFJnZwT/45TIlHJg2CEElbS4HE91WMHN2ZZoB5JmL R5qD5t9W+wEcP5p2G6tB1swSG9IGkrxhXvOAR6ZJ0UYUMt6uZBO/ X-Gm-Gg: ASbGncueBnRu0JbnQuDF7FoQJ3z4v0kLKd6tDYLqWeKwMQ0J8BBZJVOmcFd22UUfPmu 55zmlmxRKJvNoD6C6H7fpS6u3C/sE5VzHl9dcP+bZIs3M5jgg97XmH/C1HffN5GFxpPodSPUc+c ZFIK0dqwr46SWLn0I/gpzJBssJiAgarWiC060e1NtcNgDLMtNmFUIVqPLNwmYjiO7iRXf3e0x8x 6/tUZWJPRarHGc32A54q176DcRpbWpLflFFq5jEwSkggtCJp63CfBkcMevuz+WZfmdqfO0yMunN 5G6XSv70xSWWI/1sCQ== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index 06fd317529fcbab0f1485228efe8470be565407c..9b26d5f35d91b715e9ccb7524a3= ca7b87a4d5265 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 =3D 0x1, @@ -466,11 +463,12 @@ static void m1_pmu_write_counter(struct perf_event *e= vent, u64 value) isb(); } =20 -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 =3D event->hw.config_base & M1_PMU_CFG_EVENT; - unsigned long affinity =3D m1_pmu_event_affinity[evtype]; + unsigned long affinity =3D event_affinities[evtype]; int idx; =20 /* @@ -489,6 +487,12 @@ static int m1_pmu_get_event_idx(struct pmu_hw_events *= cpuc, return -EAGAIN; } =20 +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); } =20 -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 |=3D 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); } =20 -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 |=3D 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); } =20 static void m1_pmu_reset(void *info) @@ -572,25 +588,16 @@ static int m1_pmu_set_event_filter(struct hw_perf_eve= nt *event, return 0; } =20 -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 =3D m1_pmu_handle_irq; cpu_pmu->enable =3D m1_pmu_enable_event; cpu_pmu->disable =3D m1_pmu_disable_event; cpu_pmu->read_counter =3D m1_pmu_read_counter; cpu_pmu->write_counter =3D m1_pmu_write_counter; - cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->clear_event_idx =3D m1_pmu_clear_event_idx; cpu_pmu->start =3D m1_pmu_start; cpu_pmu->stop =3D m1_pmu_stop; - - if (flags & ARMPMU_EVT_47BIT) - cpu_pmu->map_event =3D m1_pmu_map_event; - else if (flags & ARMPMU_EVT_63BIT) - cpu_pmu->map_event =3D m2_pmu_map_event; - else - return WARN_ON(-EINVAL); - cpu_pmu->reset =3D m1_pmu_reset; cpu_pmu->set_event_filter =3D m1_pmu_set_event_filter; =20 @@ -604,25 +611,33 @@ static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 f= lags) static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } =20 static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_firestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } =20 static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_avalanche_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; + cpu_pmu->map_event =3D m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } =20 static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_blizzard_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; + cpu_pmu->map_event =3D m2_pmu_map_event; + return apple_pmu_init_common(cpu_pmu); } =20 static const struct of_device_id m1_pmu_of_device_ids[] =3D { --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C177B257AF1; Wed, 12 Feb 2025 17:23:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380992; cv=none; b=UXv1OTp+s3xp07P/q/wOfRXUYKRV9Vj9PKh9u6uYW64QL0UX1l30JXsdNRqf0YFexasWr8Z+0EZVLu+PijGM91HDFfxh+NyFMkRqdq2VIL4I9SRGbibplTpinGeLEzgWu4WRW8UBnepzjRCNM1o8GTUpuSLfJxByTg94aVykOF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380992; c=relaxed/simple; bh=L+Tl6yOf4IhDKUIycb3hLlpdWXpiiAGyKeFO2ADZTD8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=juqVYw/UBP0t017vp3sEP6SI6Bzp2dhv34SEj1gWFlQQerat8ZAJrqwVLTpa2Z27i7BdDrYLeZnuJpQSF19P+m3i5XKyHKrJSflkH88XmJfmvN7YlK/2QZ9GXxUSqJ/GRhLWj4Y4ufAEP3eCT5RdhKCeIYzwHAvWUbcezg63dI8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DIl1sH9m; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DIl1sH9m" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-21f3c119fe6so161842145ad.0; 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=vger.kernel.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=DIl1sH9mjhFR9AOuNKvntAKKEUqLKiMcXYbRRe9gypGwes03RhDmx6BcJswLM71pZF Dj7WkvHPEWFhZzD+OrHK8kiFmLbvuRr5fRhWKxC4Qt21hy4u5jR3qO8TyYr/ftCFaFiK mFOEcjug9amdJvqCLNG0r/V6V6RVReXypBnZmXSXB8RSZsvlmWpeK+AxXEByyE1fdnf5 x3uvbj88P/HvnLX9IxTet69CR5um7vlgh/x1l+6vYay9l+foKBAQGMrU0ZNA1RfLvKB6 tdBZimSoAZzWIQ8uT89xPkCBJd+NFWwkrRFhcWtpQV5g1hJK2EDEL6lM0KOmEDBUHmdI VCAg== 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=WESB3fVr4x/PzKPgUHTeblF1v4QhuHBaU8/8JKuWwIBq/NLIx7UkSGDj0NmDnHJIMf 2s/h5crV4Ml01I8qLrJ0RxIGdKp6DHOsHTQPpSooktTdnZl72eTKWuzElbHpEF/xrR6/ 4wgVRcCDcbDCgfZzF4wZdroJoeHNKyK59fDClQFexYKUuvFb6A4uV8gQRRwQIEaV0rdT 225dbPx4ZkGR/arAdrYuO2isY2Z1nGqo830l60auGxs6t1PbyMfnyib6IZJm5ChCBiqj VExWiUcwXqxX2SoEeVrDhBiI5DNTR8kl3rSgZZua6txC1jB5I4iNL1uZQ+5MxXRYjvVu +TDg== X-Forwarded-Encrypted: i=1; AJvYcCUSfeN+9ck/B1Bj0t66hSOJus5ZLY9V2uMdiXRdfcGP3vWAjAy2a35GWB4Ikjnsv6KCP2rq0ty8bHJK@vger.kernel.org, AJvYcCV9xxFI0yVO4W0f0N/D6L/W5l5SMIpn+ZM8THMCs8o1gnHVXZLOtbKNiiM6V6aBjQZSCNKNh2qGIytBfvK/@vger.kernel.org, AJvYcCX2Stmcu4azJtzD2hjnq0lv68L26jn1W5+nFHFKCyFc4kaAtthFOzlm+CQF4GI7XH8F24wcawU9rEx/IdylJhJ5Kw==@vger.kernel.org X-Gm-Message-State: AOJu0YyUM4hHbvpeq9Viit0uzhAQLjPlEcy4NueQLsHU15vfROaVNtdV aEhGEkOxYurtxqg+MTDCSYN68S1OZQUhgnOo6rjFa8H7x6OerUze0FvWoQ== X-Gm-Gg: ASbGncubVrP6UamJ02QjP1G82vkNNQ1rhLLEOvGNKsi68TAOnBRRVoNBCRyLHB3YSuC UnKFMjQKFJP1JrebZIsGdY3hDE9c5UUOLCw0pP2dT3ZMYBaAm3PKVu8rNrMCKSIHLcFErkpyFbr J1mUWPPmPISvnZRLtk2caw5YapgsCsp4KJGxCiO3IIKaGVsp1VwSW20OybgeqreSwqNZhEu5hpE Jgglc+AkujEiB27MjwD+idkU9Jqo/P3J3JaDW+bn94dxDRdMXOBYUQUAMGfzDnElYUDnturGEU2 LMuDYKgsmLgnv+TTHA== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index 9b26d5f35d91b715e9ccb7524a3ca7b87a4d5265..14e6fd0c2653912a6bbbcc31e6f= 4c54ee2d062a1 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -19,6 +19,7 @@ #include =20 #define M1_PMU_NR_COUNTERS 10 +#define APPLE_PMU_MAX_NR_COUNTERS 10 =20 #define M1_PMU_CFG_EVENT GENMASK(7, 0) =20 @@ -431,7 +432,7 @@ static irqreturn_t m1_pmu_handle_irq(struct arm_pmu *cp= u_pmu) =20 regs =3D get_irq_regs(); =20 - 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 =3D cpuc->events[idx]; struct perf_sample_data data; =20 @@ -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); } =20 -static void m1_pmu_reset(void *info) +static void apple_pmu_reset_common(void *info, u32 counters) { int i; =20 __m1_pmu_set_mode(PMCR0_IMODE_OFF); =20 - for (i =3D 0; i < M1_PMU_NR_COUNTERS; i++) { + for (i =3D 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(); } =20 +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; } =20 -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 =3D m1_pmu_handle_irq; cpu_pmu->enable =3D m1_pmu_enable_event; @@ -598,10 +604,9 @@ static int apple_pmu_init_common(struct arm_pmu *cpu_p= mu) cpu_pmu->clear_event_idx =3D m1_pmu_clear_event_idx; cpu_pmu->start =3D m1_pmu_start; cpu_pmu->stop =3D m1_pmu_stop; - cpu_pmu->reset =3D m1_pmu_reset; cpu_pmu->set_event_filter =3D m1_pmu_set_event_filter; =20 - 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] =3D &m1_pmu_events_attr_gr= oup; cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] =3D &m1_pmu_format_attr_g= roup; return 0; @@ -613,7 +618,8 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->name =3D "apple_icestorm_pmu"; cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m1_pmu_map_event; - return apple_pmu_init_common(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 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 =3D "apple_firestorm_pmu"; cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m1_pmu_map_event; - return apple_pmu_init_common(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 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_pm= u) cpu_pmu->name =3D "apple_avalanche_pmu"; cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m2_pmu_map_event; - return apple_pmu_init_common(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 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 =3D "apple_blizzard_pmu"; cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m2_pmu_map_event; - return apple_pmu_init_common(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 static const struct of_device_id m1_pmu_of_device_ids[] =3D { --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD93825D52E; Wed, 12 Feb 2025 17:23:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380994; cv=none; b=Xw7dDqaGJnQX/l5IEgp7y8k3IsESeu3xZY+cRNevsAKAeou7b/yptv3vmrydlklVIQXAMYRi3zG+FnY86TVjgIU+vDheQTyRGXXGDq0mLhyWZ7BH4ppGiwHxg9MorJ6NFNcIoyOtqANUiQXMEHbCGVhkUXsjRLqMMDqdn14rTkg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380994; c=relaxed/simple; bh=eNXZKKJOVES7/Y5XuX0Dnwa0JJ327tz8i8Lgu6wPJJ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h18g5XMj9IEoeDS/Ir2IyaR3YFA0JQvpRnC1egeMH1iM8b6fH42y8iIZb/T2v7pIUJN8k6xfL7SsKz2fp3BX8K4X5vvba5RVduEkP0qPaNM3xVOafwVMT0kLA2csAmjAYd7CzbeQeg6qRL1PmvZoB1KttzzTiAa8vGRMWj6+5M4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nlg2Iusl; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nlg2Iusl" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-21f40deb941so156204175ad.2; 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=vger.kernel.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=nlg2IuslmQzsZ/s/i2xTO+WzFaDCsv0OfYKEFSIYvMFHpH/mWjR6OwF06z1CSo3kEx xeyrA2fdoj2/zt3SgADW6PE/eY3U1UPAh4rUIfzjHtpdmmW/3M//uFk2bVfXvEUT4c4X +Igvm9qjgw77RJ9i/58owkKoEiXwK0Me2OHrlFtqs/8tz8jbfkSoVfTxvE4XY9rrHajX ruodXfz3ancKiVhdXtzZ3uDohhI9/Rea7qeY6OIj6TA4W+Nqdtm6ktLi60ydR1n/Qpgl uke7z2RUt3z1RyW+wzsd7ziImosXGbeGSh//mFCUXEqTo5e9JFV30goXPkcyZ8/pHC80 UElg== 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=J6qjKGrw9DWnnXauzXQapV+eTrk4B2E5K+6SJjY21hNf5/Q8rzUaFINjc3SfuA27pc mrRB4noMmVFfToa5xWQWOabsLjv3U67YOICFQHsO9FkcDktp4MjHvPZnnONxgnqy0Iha /izxdJi83V5GsRe2gVTnEGsvDw4QgXBKP0SRxjYH7Ll7hLs/sSgQltykTkmJVhIYvo2N tVeTMBjqLCWRXnX3Y8vOiKIR8JyHtJxe0qBJsrdDwPbUPoWYwYUKgWPrPawPhoHPU5yX gAADfwkKNqCKURVrHFCwJVH9EEQxDcSXCf1FdvJFNrSYUxO5jWNzZkQlWFye+xiBiBkz ryNw== X-Forwarded-Encrypted: i=1; AJvYcCVP98RL5GpRH+wPmRaBUKeF5yNy+kZfzCEf35dmrwb4vLKXRu8d200yLmex47izxxeIUHE3WDOyrlvN9BUhZELcIQ==@vger.kernel.org, AJvYcCWY338+33YUm9aQ7Hl7mshmB1Z8DYjeyhY6rmukrkyhCe6vGf7XbLCLOW0hT6YqRvmMwJ41zIW56Fbt@vger.kernel.org, AJvYcCXMc4KjZoYUwev5Ln1sbzHlZoX1vZZ3yiRZbhTNWJhoj7nKIdXR29T18gsuRF/0vwlB/EWlKSbEFppxyUdM@vger.kernel.org X-Gm-Message-State: AOJu0YxaqNzQ1o/mmL1A/3W6QkzHBgC5aedO8pFQmhKpdjnmQx2sP40s RB2QA3gQIMEYf+9XqBtmzRnjp1aJxDwZTcCBk+0E1tJYbX8S9UXk X-Gm-Gg: ASbGncujuPC78NvgTBD5UifBuz6fPX2OZy4w6ZdaAJAWT+DhEoI7ujxqkJNDXEvv//S 0aFKZ8F9L5CFYPZF2IRjE2hDYHaJ7DujEehMKI+ZOdxsgX51yUUsSfLRig22Sk8hEREtBOjWmG8 mvHtoq4RK67PF+pDTKK34LvHOTxoOWMnMx3foGeSd118uJclwqMV/jIIIBegzi/ZZ5uxzL3r6fl bj6PkQ61wsjgNq4OE9OLT405uEyP1UjoVBpq1s74MBCbZnIypoMJmyXQOw/ZWDM8aNYF/X8kPrJ pZAWf0NGQG2uESDjgw== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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..835d602a9a33fc812982839799c= 0bbabef656078 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) =20 #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) =20 diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pm= u.c index 14e6fd0c2653912a6bbbcc31e6f4c54ee2d062a1..e7b898aef45e9e18899693774ad= 673fd370b19d7 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 =3D BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL0_0_7)); kernel_bit =3D BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL1_0_7)); + + if (system_supports_32bit_el0()) + user_bit |=3D BIT(get_bit_offset(index, PMCR1_COUNT_A32_EL0_0_7)); break; case 8 ... 9: user_bit =3D BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL0_8_9)); --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B948525D55C; Wed, 12 Feb 2025 17:23:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380997; cv=none; b=SgLVYbw0g3QiCVu+W8yHh0Xg1Mq/ntjY+sySL95GKV22TwN7K5Ms8rrNHYCeU2VL9n6XO83DZSPafJR4Y01tFWuGzjcJnRfE95VJpAeDzKoOImk2oHRDOsh57Qor9Jtu/d1tu52rgJhqOc56rav978KLEvORVF2oJe4hdR78r1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739380997; c=relaxed/simple; bh=/4qXPFHVNQhhoJUabUe1xtQ/R9DQ+Ipv3G6eXZu+6Qs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=biauqkGSSc9p2oJCtsTHnUbEiZxKlA8FL98G5TeGcQ9BeBUge3/tIKB84m75MGh+j+jiBaPlok14sIFYUl6x95I+xbb7V1sUTeFf01uWeTkoXLUnS0GHVvNFUpNDPgTM67k4mBVCLiVynR/3XoUKkH8IFhvZYBwXhRLdQYmmkGY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ro+OnOUr; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ro+OnOUr" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-21f6a47d617so82170525ad.2; 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=vger.kernel.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=Ro+OnOUrXrzvAJFINc7WFrTWwym+2nbOXyCNpMOVwWdetaD2KJRmoTecqpoCPrGSR1 LGCTCTLvr22u5r7GZ8V+VNX+UqomHErg1a5/CBfSqlYaOSthG2dnIBwpGt1rXLEpdTi5 gcQWQ9y0NMJYz7OuK+CC4P6L3PBvDLEFDYy9Q9rFmHgTA60spbja8czxNThwaqYrQXFg tgahA/O6qkiWI7uDzLKR3N0Mny8fcDYh5xcByPSyu5GLedB2iFEgiA4BlC9k3gmMGpO4 mT/xDUwnHG8A6eK5qYqaPAqbX9vjd9J6+CGdJYIx2cGyV/zMc4Z3boP/xSPpFgk24fso DRLw== 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=uOz5bDTzi7LWugRSAwBhXn0CN9WHQiJaG8bqREXvgRzUZBHSlsrGBNjZgHxDp7YsmV T3HliVMDYPlgewZGvQGet2UE+miehXbm77QUsL4Q4nLFnvtQbEvLUlBtpaIcZpIOu/zB 948ns4HaD3yQg7ycEhVT4Ahp3VQe3h59yqIgZJ8Zjel5yXcf55Esfc4Xv7XNyDOx5Tpy SuDOzdMAaWsX7GmIfQ6MK7tRzR8nSpmFPd4OaEeUbo/8QFsZZVYa+KlpH1UOgEo44EBA RtSiUmH/ifU/I2DxBXHbmswhH8lDd102P5NfzSbeEpOvr2QxruMusEAc+PU7DqaIV/Y8 1kjw== X-Forwarded-Encrypted: i=1; AJvYcCVfvS8cVmu5oPt9NRkAbSuuWB9rDQt7d8EuVS9Oj8ywkt56hOrSEQoKNEebtfPvZLV0PdjxIr8cdCwXMVqT8CspQw==@vger.kernel.org, AJvYcCWO5TcgeZSjoySbzNLr716xDVxYUExu4m8ZpnyK1ZhJmk6oBA+YgDGHBL5fOargbT6EV2b0zaWJINc7IuIN@vger.kernel.org, AJvYcCXbO9wJYMlXmzsXBI2UIZdAOnRuXn0V0Bmesdo/PaANk3vNzqC/SbNyK+oHGu7WZvP4j9GhPPRH6Sal@vger.kernel.org X-Gm-Message-State: AOJu0Yx8xAG19pqV9KD/lRM9MSPGUZyn3LFF2w7erR0mrA57oadYWPsW x4mtfA/75kGFL9l3CfM9WuQAJ1gp9PBEC5aWM9C28BzmlvcD6+Av X-Gm-Gg: ASbGnctuUGbgrkAXtQV3AM+xK1TRCJi49SMXmk7craA5EjhH4mwUBnHTpxECsCZJZy+ 8cav/dR3zFDt8k0vJY4aUskpBRdJAn9w6pFszcx1o2VFQwbVWZQIdXE0EpRRO3lVEh4q20Ho81n xKE9SZ0zWCC2WaIC24qRxs21y160EvjFX6F7n4ZGLNH1ZxjtOkXSRCpfUIi3XC6wZcR1b6TWqxF nVphkgk+D0D7IyXTbLtXTN4CAAW1ZiKmW7k0yiHoPgUP/8H/3OokrcilKDYqQJ6sOMgdL4TXDMM 49KZnrxC/kE5OQWDvg== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index e7b898aef45e9e18899693774ad673fd370b19d7..12eba1075b36768afc29e211926= 331b9a426c54f 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_pm= u, u32 counters) cpu_pmu->read_counter =3D m1_pmu_read_counter; cpu_pmu->write_counter =3D m1_pmu_write_counter; cpu_pmu->clear_event_idx =3D m1_pmu_clear_event_idx; - cpu_pmu->start =3D m1_pmu_start; cpu_pmu->stop =3D m1_pmu_stop; cpu_pmu->set_event_filter =3D m1_pmu_set_event_filter; =20 @@ -622,6 +621,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m1_pmu_map_event; cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -631,6 +631,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m1_pmu_map_event; cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -640,6 +641,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pm= u) cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m2_pmu_map_event; cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -649,6 +651,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx =3D m1_pmu_get_event_idx; cpu_pmu->map_event =3D m2_pmu_map_event; cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E437725E47C; Wed, 12 Feb 2025 17:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381001; cv=none; b=tgyO/ovCBHJyzL8sWIn00p4qcXpDtJGx8zc82lCm+o6B0ogkvScqzvkmg97krBbeAKLN5MXVCx8cdj4nuruTiV58UgMZKQz+AL/5p/hUYosWTzkoCQO9ibLk6P1SObAOb4he3wpQ4MryxN1PKnWNcvX/UKf5uK6RHLZMxCil0aw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381001; c=relaxed/simple; bh=6N4R/5wlV6Q+zP94GRU2QOpJnSaI9H7wPa7gYBlAKCQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Fl8Zk1T58Z8JwvbOxPIwITzNftLGYTaysYJYoqaWHLY1hh5XyNahaYroO4yisn844iK8pglirWX5IYP2bGbWAlE8dL7j94Cdmn9L8/GjmAkmzENJgp7+ndy8OF0ILMwGWlzDWxL0x/ba1IlmqoJIEhkVK3lIfl9gACDfqK7RSnE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KUo6UYm1; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KUo6UYm1" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-220c8f38febso12614745ad.2; 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=vger.kernel.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=KUo6UYm1DLYCoH/Fz0xvx3PPFpSXybP+7AroobfPc1TyaB4zqgv5oXzQflphaeMa97 jN/FAVBGtygMflIa9nxB2UYipfw83L+FRbsZBZMTQSt8cbgdHxoy8GBV+FG8s11smnyp W0TVOCuQzOu5AxL/fHYYPymKMHpZyKLY9x1Us8CpkJO127fNKWZODWi6QwcL1GVu9+ef iYk+b9yTIZS6acLkMA+H3qBSe8+yNbJASzwE8RO7oOfqVEMCLHHcJI20Bsg9T9mhojLn SLdbY3JrOnnNXxLk7BXzM+rWvemN/jbX2VDfOIWKNjdCulcGym8yQxIT/XvbmmQaMzL4 z9Zg== 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=pR78bnBn3Hr8AwmEmHzRcYAeLbPcV3hTkYzSkur7Rmgj44MwflBsEoifXHlqrXeKQ4 xVz1jEBqs5wy8iI71dzUhyokQm2kB0fnC53Y9zGetbe22rWztrAb26ntmC8Y9Q3LiKuE 8wqgJFbMFzubPTi6edoFDTzu4QUJ2n5b2zyxYiy73LrB5Xel5N6jDHY6LFuGNwKBYUEg KHPCNpOo1uTY41alOrhzd9lFOULWvZLsDiJATCq37vcEKPQVjBx8dNEi3GQi8pfD9XRX qplUzoLJV3W7x7wNMQ8NbevrC48+dctmvOvXl288xjbrpmbsXMsM8UZTZ5kR2aSXILyf ksqg== X-Forwarded-Encrypted: i=1; AJvYcCUcBp0tqMcf7n83bm8NWmlt1ekZjAtYoTqguD2BVjxnwxxEnoQ6B9ZdxhuMSXsyU0A5dpAFXdqFTfFBfiQdJGS4KQ==@vger.kernel.org, AJvYcCVd3i48PFvVXKWqOlfwawsFQ08t+BDQlQa05mrqBaUgSy7uBqBcUvodpeSkBhQ54eUpLXaw78zJPPx+JHbP@vger.kernel.org, AJvYcCWhv11GYruMMhT0rStUboDIN132tCQEVzmWRKcDwBokif3quBoxL50eT+lZxrhsRUuT+3BTvdJ7UfUf@vger.kernel.org X-Gm-Message-State: AOJu0YxPYXOrLjIyTzo1yCeEF/r90woharJPHLr/Tw3n1oG4pIPxW32B vwCphDyTfTFo8efEat4LZsS0eXCxQGQWsCLjY0Vaqg8V39gcIe5L X-Gm-Gg: ASbGnctxgH0fsST/c9l0JCYjnoqWyquzmS5P2EkgV8LM7fYMtOk2kkegRiSwyXfPjX2 0YK2iEkkDWYNTJdX+JrbOQhdlZqK945jNy6FBwI8tF5fwOSu21mezDZEXjkRSk+zyCuRYjQOXlc X3Jx5YugJPnv4nRBS3vNEB/vTOjVrhwm3oiJm8V+2JMl8AiVA5hvKYddqdqT9MxjKJhHxRxNfs8 mAUd8hZ0jQ/rnMGeT712ZA0R62EY8bbWyC+RXnqhKVNQB2HFfpICGfZBcog5bGlDNz5X/Xkwg6U QZkXkXnMQUMcPZ7xUQ== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index 12eba1075b36768afc29e211926331b9a426c54f..f852cd5633d7f180dc9dbdde113= 32ec825a3d558 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -18,6 +18,7 @@ #include #include =20 +#define A7_PMU_NR_COUNTERS 8 #define M1_PMU_NR_COUNTERS 10 #define APPLE_PMU_MAX_NR_COUNTERS 10 =20 @@ -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 =3D 0x0, + A7_PMU_PERFCTR_UNKNOWN_1 =3D 0x1, + A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A7_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0x10, + A7_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0x11, + A7_PMU_PERFCTR_BIU_UPSTREAM_CYCLE =3D 0x19, + A7_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE =3D 0x20, + A7_PMU_PERFCTR_L2C_AGENT_LD =3D 0x22, + A7_PMU_PERFCTR_L2C_AGENT_LD_MISS =3D 0x23, + A7_PMU_PERFCTR_L2C_AGENT_ST =3D 0x24, + A7_PMU_PERFCTR_L2C_AGENT_ST_MISS =3D 0x25, + A7_PMU_PERFCTR_SCHEDULE_UOP =3D 0x58, + A7_PMU_PERFCTR_MAP_REWIND =3D 0x61, + A7_PMU_PERFCTR_MAP_STALL =3D 0x62, + A7_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x6e, + A7_PMU_PERFCTR_INST_A32 =3D 0x78, + A7_PMU_PERFCTR_INST_T32 =3D 0x79, + A7_PMU_PERFCTR_INST_A64 =3D 0x7a, + A7_PMU_PERFCTR_INST_BRANCH =3D 0x7b, + A7_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x7c, + A7_PMU_PERFCTR_INST_BRANCH_RET =3D 0x7d, + A7_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x7e, + A7_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x81, + A7_PMU_PERFCTR_INST_BRANCH_COND =3D 0x82, + A7_PMU_PERFCTR_INST_INT_LD =3D 0x83, + A7_PMU_PERFCTR_INST_INT_ST =3D 0x84, + A7_PMU_PERFCTR_INST_INT_ALU =3D 0x85, + A7_PMU_PERFCTR_INST_SIMD_LD =3D 0x86, + A7_PMU_PERFCTR_INST_SIMD_ST =3D 0x87, + A7_PMU_PERFCTR_INST_SIMD_ALU =3D 0x88, + A7_PMU_PERFCTR_INST_LDST =3D 0x89, + A7_PMU_PERFCTR_UNKNOWN_8d =3D 0x8d, + A7_PMU_PERFCTR_UNKNOWN_8e =3D 0x8e, + A7_PMU_PERFCTR_UNKNOWN_8f =3D 0x8f, + A7_PMU_PERFCTR_UNKNOWN_90 =3D 0x90, + A7_PMU_PERFCTR_UNKNOWN_93 =3D 0x93, + A7_PMU_PERFCTR_UNKNOWN_94 =3D 0x94, + A7_PMU_PERFCTR_UNKNOWN_95 =3D 0x95, + A7_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0x96, + A7_PMU_PERFCTR_L1D_TLB_MISS =3D 0x97, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0x98, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0x99, + A7_PMU_PERFCTR_UNKNOWN_9b =3D 0x9b, + A7_PMU_PERFCTR_LD_UNIT_UOP =3D 0x9c, + A7_PMU_PERFCTR_ST_UNIT_UOP =3D 0x9d, + A7_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0x9e, + A7_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A7_PMU_PERFCTR_LDST_X64_UOP =3D 0xa7, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xb4, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xb5, + A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xb6, + A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xb9, + A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xba, + A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xbb, + A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xbd, + A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xbf, + A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xc0, + A7_PMU_PERFCTR_UNKNOWN_c1 =3D 0xc1, + A7_PMU_PERFCTR_UNKNOWN_c4 =3D 0xc4, + A7_PMU_PERFCTR_UNKNOWN_c5 =3D 0xc5, + A7_PMU_PERFCTR_UNKNOWN_c6 =3D 0xc6, + A7_PMU_PERFCTR_UNKNOWN_c8 =3D 0xc8, + A7_PMU_PERFCTR_UNKNOWN_ca =3D 0xca, + A7_PMU_PERFCTR_UNKNOWN_cb =3D 0xcb, + A7_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xce, + A7_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xcf, + A7_PMU_PERFCTR_UNKNOWN_f5 =3D 0xf5, + A7_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A7_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A7_PMU_PERFCTR_UNKNOWN_f8 =3D 0xf8, + A7_PMU_PERFCTR_UNKNOWN_fd =3D 0xfd, + A7_PMU_PERFCTR_LAST =3D 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 =3D BIT(8), + A7_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A7_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A7_PMU_PERFCTR_INST_ALL] =3D ANY_BUT_0_1 | BIT(1), + [A7_PMU_PERFCTR_UNKNOWN_1] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A7_PMU_PERFCTR_INST_A32] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_T32] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_A64] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ALU] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ALU] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8d] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8e] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8f] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_90] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_93] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_94] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_95] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9b] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_LD_UNIT_UOP] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9f] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c1] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c4] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c5] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c6] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c8] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_ca] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_cb] =3D ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_f5] =3D ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, @@ -162,6 +300,14 @@ static const u16 m1_pmu_event_affinity[M1_PMU_PERFCTR_= LAST + 1] =3D { [M1_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, }; =20 +static const unsigned int a7_pmu_perf_map[PERF_COUNT_HW_MAX] =3D { + PERF_MAP_ALL_UNSUPPORTED, + [PERF_COUNT_HW_CPU_CYCLES] =3D A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE, + [PERF_COUNT_HW_INSTRUCTIONS] =3D A7_PMU_PERFCTR_INST_ALL, + [PERF_COUNT_HW_BRANCH_MISSES] =3D A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC, + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] =3D A7_PMU_PERFCTR_INST_BRANCH +}; + static const unsigned m1_pmu_perf_map[PERF_COUNT_HW_MAX] =3D { PERF_MAP_ALL_UNSUPPORTED, [PERF_COUNT_HW_CPU_CYCLES] =3D M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE, @@ -491,6 +637,12 @@ static int apple_pmu_get_event_idx(struct pmu_hw_event= s *cpuc, return -EAGAIN; } =20 +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(); } =20 +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 *e= vent, return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } =20 +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 cou= nters) isb(); } =20 +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_p= mu, u32 counters) } =20 /* Device driver gunk */ +static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_cyclone_pmu"; + cpu_pmu->get_event_idx =3D a7_pmu_get_event_idx; + cpu_pmu->map_event =3D a7_pmu_map_event; + cpu_pmu->reset =3D a7_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_icestorm_pmu"; @@ -660,6 +837,7 @@ static const struct of_device_id m1_pmu_of_device_ids[]= =3D { { .compatible =3D "apple,blizzard-pmu", .data =3D m2_pmu_blizzard_init, }, { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, + { .compatible =3D "apple,cyclone-pmu", .data =3D a7_pmu_cyclone_init, }, { }, }; MODULE_DEVICE_TABLE(of, m1_pmu_of_device_ids); --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C813D25EFBF; Wed, 12 Feb 2025 17:23:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381003; cv=none; b=p3u49i2cN1tAuWkoAgTCVoKaRsvpthxsx4fswGBGg9XdRm7Q2ii8TgkiDVmaXEOHpj80wI/V2eanmwoQ8XaRXtX+LhGqW9iJ3SbXOP95WCw0JQZ/T3+KRxSVrTx9Kd9TCLVNtoWNTC6UATi60nzLb3UdvRRzpRi00MWSLFHMoFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381003; c=relaxed/simple; bh=o9XQ+tue8DU32I7ubSPkx3HiW7qsuXyLKj6Ej7DckAc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vGZ2fCB+2G0jgvzU0kjLTW9v0tmq0w7BksED1uoRX/f6mlXnjqpc24BS5K3nY2t3DYUfL/wFHzzYwQpqv+2j/BZFmetYXPASuHLfODq/9RJHEIuKs3ggPNKUm5JUd3xbuUxHr/FXZRUmVg+UJJMm79UDcgJWYGKJLE3Q2Hc0Yyc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lM+MftWi; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lM+MftWi" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-21f6d2642faso116551765ad.1; 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=vger.kernel.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=lM+MftWiIrWbooZOJ1VSFxYLsOHLBYyqDyMqsg6UzAV1l5kgcQ7813DPS1yTom5/BV LMI20hzaEk25FJPr3XRMJKq39ngvSdtKp2QWQDMjaSA1rFWWfxIr+vJwLcZCx3csJYUH dq80T5LNZaby+qqxSwtAeFHzKRNdwhmn7mboR1vzLV4kcd1lbTPMeSTxreAMb1IfekQu FqBczyB+N2LPhtE020NcM01zZZlfxLxlFQS+0aYI/83O6HleYYw2Oie3VA5pcwdDlQID 7/CrxmZ6ZKpVzJayICXWyvDRRyOEH9YJua9rGJzsCu2r3uFiu4GUKcqQLce7l0HhLBQW jlPg== 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=u3Shc1qRYzuHSnQtM7EMIkuQH7DSKBe4lScPGI+jR4OKEPTpjqG8MUmoSA9vkyqInM mdF36CLiAR/MXyCAK0U8XamqRSfWsj2+mSvabyTW4dYriSooiPGXXEEI2KryZg37bQYS DllOyCSkrR4WNDttXM8zk6Ym1jdb44plIp2DSUXt4w3vjGXIkYasNCZJWXoKpU2oGWxx 51tKhG7fbdyzia2kdxtMr2cV0SSDqXkVE98tCsulFptAAIL9d6pjDUI7cnP38yMn9UjD GCSZU/xp+HyhRnwqiD/Kjo5EIyzqRce9nF6DXQtHn9QBAsOqS0NxF64cFfHItjWt4y3L QyqA== X-Forwarded-Encrypted: i=1; AJvYcCU0jslJgO2wODEo1DzL192/swhjleANMsSp2BAz8H6i8TgcJGw6+2+SukxC/3BQ5RWEDwfUgmBmrliiCNnn@vger.kernel.org, AJvYcCVm3bvgDPz1TtUDMkw2tyzSO81iVfBFpW4OfKstxR9aIGoBXVBpS2JHwQKgyZAJmCx6QXq0gqwao0N5O4RRdbxT/w==@vger.kernel.org, AJvYcCVwaTFGDGEiv63oB5qqWHOBCMc7pIz9I07AcHwahg2eYY7DVaWQ0qR0cYGX3RqvGJLkdJ/uOn4iOoEi@vger.kernel.org X-Gm-Message-State: AOJu0YxAtmoB3CiaTlgaHmyrQqepdKBH7+lXRS2FLaH5U1xH+wf7wIB4 3OoPrvCUUOm0eEGQ54VPBU4XOYmzB9CdgnraiBmkYJLmhOQuP4uN X-Gm-Gg: ASbGncs1XqWFBf63iuXrpkoiduhzyA182AAwFKZ8GqSohV7+lfVaKs2yUfhEKGSWntN UvjaMLVZnstygchExrabnjbm3qxZzUQ1+cF5tVHJAjc6qvRvr8ZDjZSkz4ExC9KPMfePgRvCYl7 qq8JbXxTcEg/qeNeH6Ea8zfNlbHdJskmgZnsVRcsGEAI+jONBuqMcaj0tEUkdS1rUwLzkcXHkHH q4ui5HT/1e1WoqpSfRO712P9VftlJYQvh07vrs8Op0hRgygwbV0o+WBRPlVQobOSLvRlw8LTFwH nT9u1Rq/EbAQayLiug== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index f852cd5633d7f180dc9dbdde11332ec825a3d558..07eab1d5ee078de5db3d08e2f17= 14bcfe5d3792c 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)) =20 /* @@ -182,6 +183,111 @@ static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR= _LAST + 1] =3D { [A7_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, }; =20 +enum a8_pmu_events { + A8_PMU_PERFCTR_UNKNOWN_1 =3D 0x1, + A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A8_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0xa, + A8_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0xb, + A8_PMU_PERFCTR_BIU_UPSTREAM_CYCLE =3D 0x13, + A8_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE =3D 0x14, + A8_PMU_PERFCTR_L2C_AGENT_LD =3D 0x1a, + A8_PMU_PERFCTR_L2C_AGENT_LD_MISS =3D 0x1b, + A8_PMU_PERFCTR_L2C_AGENT_ST =3D 0x1c, + A8_PMU_PERFCTR_L2C_AGENT_ST_MISS =3D 0x1d, + A8_PMU_PERFCTR_SCHEDULE_UOP =3D 0x52, + A8_PMU_PERFCTR_MAP_REWIND =3D 0x75, + A8_PMU_PERFCTR_MAP_STALL =3D 0x76, + A8_PMU_PERFCTR_MAP_INT_UOP =3D 0x7b, + A8_PMU_PERFCTR_MAP_LDST_UOP =3D 0x7c, + A8_PMU_PERFCTR_MAP_SIMD_UOP =3D 0x7d, + A8_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x84, + A8_PMU_PERFCTR_INST_A32 =3D 0x8a, + A8_PMU_PERFCTR_INST_T32 =3D 0x8b, + A8_PMU_PERFCTR_INST_ALL =3D 0x8c, + A8_PMU_PERFCTR_INST_BRANCH =3D 0x8d, + A8_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x8e, + A8_PMU_PERFCTR_INST_BRANCH_RET =3D 0x8f, + A8_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x90, + A8_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x93, + A8_PMU_PERFCTR_INST_BRANCH_COND =3D 0x94, + A8_PMU_PERFCTR_INST_INT_LD =3D 0x95, + A8_PMU_PERFCTR_INST_INT_ST =3D 0x96, + A8_PMU_PERFCTR_INST_INT_ALU =3D 0x97, + A8_PMU_PERFCTR_INST_SIMD_LD =3D 0x98, + A8_PMU_PERFCTR_INST_SIMD_ST =3D 0x99, + A8_PMU_PERFCTR_INST_SIMD_ALU =3D 0x9a, + A8_PMU_PERFCTR_INST_LDST =3D 0x9b, + A8_PMU_PERFCTR_UNKNOWN_9c =3D 0x9c, + A8_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A8_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0xa0, + A8_PMU_PERFCTR_L1D_TLB_MISS =3D 0xa1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0xa2, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0xa3, + A8_PMU_PERFCTR_LD_UNIT_UOP =3D 0xa6, + A8_PMU_PERFCTR_ST_UNIT_UOP =3D 0xa7, + A8_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0xa8, + A8_PMU_PERFCTR_LDST_X64_UOP =3D 0xb1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xbf, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xc0, + A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xc1, + A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xc4, + A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xc5, + A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xc6, + A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xc8, + A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xca, + A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xcb, + A8_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xd3, + A8_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xd4, + A8_PMU_PERFCTR_FETCH_RESTART =3D 0xde, + A8_PMU_PERFCTR_UNKNOWN_f5 =3D 0xf5, + A8_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A8_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A8_PMU_PERFCTR_LAST =3D 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 =3D BIT(8), + A8_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A8_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_1] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A8_PMU_PERFCTR_INST_A32] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_T32] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_ALL] =3D BIT(7) | BIT(1), + [A8_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ALU] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ALU] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9c] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9f] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_f5] =3D ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_3_5_7, + [A8_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 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); } =20 +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); } =20 +static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_typhoon_pmu"; + cpu_pmu->get_event_idx =3D a8_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D a7_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_icestorm_pmu"; @@ -837,6 +959,7 @@ static const struct of_device_id m1_pmu_of_device_ids[]= =3D { { .compatible =3D "apple,blizzard-pmu", .data =3D m2_pmu_blizzard_init, }, { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, + { .compatible =3D "apple,typhoon-pmu", .data =3D a8_pmu_typhoon_init, }, { .compatible =3D "apple,cyclone-pmu", .data =3D a7_pmu_cyclone_init, }, { }, }; --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBD61261369; Wed, 12 Feb 2025 17:23:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381006; cv=none; b=jOFGIatBqLFNTNcsXpQLuP4Gz9CKyPP95FNurUFQSzrLVzSDjCtWz+58NMRuRt1xgnQFa20bb8eQoUUvQ1tbPpEyeRVyGCFj5a+dvekj7h2a/i5dqgnfI6CzGqXKxdNCTC2JgJ7JliLyhxh5wEjuzBegF1ZKlHCESC2wF0w8wvU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381006; c=relaxed/simple; bh=+NHsdiTChFJI267XhsAcL79c5EIXEmeoIiXL7aDkemk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pd38krf8XoAMwRNJVUtcOMNQ/LmQHCpQsrVngH1iio+JltDQoZKQO6EQRgEQpzaNuEQr2/oCS+TYSjLEWBI+N9z884XlNfTyGkzPCcPV8CNXbYU2vHjxL7BgmNwbQlDFtRKXhOUSQXtJ/v6IBEB1NbS02WEZzxpTiuKnk61cYf0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dlpSCaVs; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dlpSCaVs" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-21f7f1e1194so109196825ad.2; 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=vger.kernel.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=dlpSCaVsZboNvnVQ8FxnH3Gcm2zS7oIHDBjEeeHTRgi0dAxOaFBt6v/PcTGcc+NLGW dGsvcss7UOMXs7lubnkOeOgx9LOAB6YN/vvYn45CIV2LXSrz4DRhFw3vT6/Yn5WMJMcs zI3NI/Q9WwUv/RbN/yLJpjAol4ZlTyEXUmcUWPcl4G6PVTbRY9i0mR4wuVgpAnmRc9Qu wFc3ylBntTt/ecolVUH6uB4bx5L4lKnsPP/suWz6yLztgltingdC25U9VbpgU45M+cdT 2G0iLm4z1LgIWMBnLenD6lGzBYqqVcAxZLF2re0PT2Y5hTU0YMcNybA3dfG1Oex7s6rZ 5yzQ== 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=bdxlY9oSTmr1dKzGsdXBMNwZ8kdgV8RXSauZTq4ksdqaiJHMvnbfvZZIh7fAJOl2pN CwDJpQ1Ig0Z8A+a6ePVGYyM7MaYcqZFxQ6bCdWy8172oRL2wXxQXT2s+rrcmm2wx2ngO DGYdQT/Wnz3krv3pfmsaL/R3wn6+55Znqci4UH9gYxppOldqjbb8Vqzgot0hlbSCOR6j 2S0Irf0r603DLDGOSR6S1Hu84U4y8VFfYV+0FC98Xr5TcAzvj/3Etz/A2FNtpMMUb0k0 sClVH1duWGpqPlA67gN2VlH5TsHXYIiu+zP3Rjh75IcVfgC4Ocfkl/LJv2RFkrsN4cHw ydWg== X-Forwarded-Encrypted: i=1; AJvYcCU+mrIFSMHXiYrt55fhSoa/v9YZ3NbsW4sN/QVswQT1TP31uAivSeZBtMmbUVeeEzmvHIWhJWIjgr9GpHu8@vger.kernel.org, AJvYcCW4axoptDB68EpG9zYHtgrBO24jnvlMHyP+jW9D4IFgSm8yVXQY0qc/akYEZFCDdz+HbdcT3wKUxCwL@vger.kernel.org, AJvYcCX524cjHHQ713pzvgFYvx4YVN2TxlRMftjEQEQKEElUJozNlEiUyvPbV10drd/stSEmwfeeMiOYcRJ39E09GaJe8w==@vger.kernel.org X-Gm-Message-State: AOJu0YynLSn/Nxtk96tIRgaIFVKGWxEYaSsAMRRZbFIjeOdu9Xhy0HlI 2M5WhkTgcvP2e/4KrMaq2ZMBi2nHsIWwpL/UbuGQMUSTebkZOOj6OyuHBQ== X-Gm-Gg: ASbGncuEENwzFieyk1oKmF35RjKhQNg3najbbaCLrohzl0GLUuCEkgRl8MqLB9hQBJL r4Jy7OLDlmSn9aLvaftDqNccXfJp8OAxmoxGNRLFrjJAu7bYvwLdYRISE/626ITVUdXXjSQ4dqt 8f+Zi7ZNAJtbTd3oLkcp8YKMJoNiQhNpAVxLBLbgSkFtY7Aibo1ElKKdK6NuznmvQWymcmD8jVf kwKmmzatnoYX2ZCIgYTjEx1b3tGIU3aYUdyXwPCqiFfLNUvs7QuiDLNCUD8Yvf0ecDkoIixfRoc Pb9jx0D/pu+v9YV6aA== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index 07eab1d5ee078de5db3d08e2f1714bcfe5d3792c..3f72de1051b31a1c0b417092590= bfd89e747755d 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] =3D { [A8_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_3_5_7, }; =20 + +enum a9_pmu_events { + A9_PMU_PERFCTR_UNKNOWN_1 =3D 0x1, + A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A9_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0xa, + A9_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0xb, + A9_PMU_PERFCTR_L2C_AGENT_LD =3D 0x1a, + A9_PMU_PERFCTR_L2C_AGENT_LD_MISS =3D 0x1b, + A9_PMU_PERFCTR_L2C_AGENT_ST =3D 0x1c, + A9_PMU_PERFCTR_L2C_AGENT_ST_MISS =3D 0x1d, + A9_PMU_PERFCTR_SCHEDULE_UOP =3D 0x52, + A9_PMU_PERFCTR_MAP_REWIND =3D 0x75, + A9_PMU_PERFCTR_MAP_STALL =3D 0x76, + A9_PMU_PERFCTR_MAP_INT_UOP =3D 0x7c, + A9_PMU_PERFCTR_MAP_LDST_UOP =3D 0x7d, + A9_PMU_PERFCTR_MAP_SIMD_UOP =3D 0x7e, + A9_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x84, + A9_PMU_PERFCTR_INST_ALL =3D 0x8c, + A9_PMU_PERFCTR_INST_BRANCH =3D 0x8d, + A9_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x8e, + A9_PMU_PERFCTR_INST_BRANCH_RET =3D 0x8f, + A9_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x90, + A9_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x93, + A9_PMU_PERFCTR_INST_BRANCH_COND =3D 0x94, + A9_PMU_PERFCTR_INST_INT_LD =3D 0x95, + A9_PMU_PERFCTR_INST_INT_ST =3D 0x96, + A9_PMU_PERFCTR_INST_INT_ALU =3D 0x97, + A9_PMU_PERFCTR_INST_SIMD_LD =3D 0x98, + A9_PMU_PERFCTR_INST_SIMD_ST =3D 0x99, + A9_PMU_PERFCTR_INST_SIMD_ALU =3D 0x9a, + A9_PMU_PERFCTR_INST_LDST =3D 0x9b, + A9_PMU_PERFCTR_INST_BARRIER =3D 0x9c, + A9_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A9_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0xa0, + A9_PMU_PERFCTR_L1D_TLB_MISS =3D 0xa1, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0xa2, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0xa3, + A9_PMU_PERFCTR_LD_UNIT_UOP =3D 0xa6, + A9_PMU_PERFCTR_ST_UNIT_UOP =3D 0xa7, + A9_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0xa8, + A9_PMU_PERFCTR_LDST_X64_UOP =3D 0xb1, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC =3D 0xb3, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL =3D 0xb4, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xbf, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xc0, + A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xc1, + A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xc4, + A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xc5, + A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xc6, + A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xc8, + A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xca, + A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xcb, + A9_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xd3, + A9_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xd4, + A9_PMU_PERFCTR_MAP_DISPATCH_BUBBLE =3D 0xd6, + A9_PMU_PERFCTR_FETCH_RESTART =3D 0xde, + A9_PMU_PERFCTR_ST_NT_UOP =3D 0xe5, + A9_PMU_PERFCTR_LD_NT_UOP =3D 0xe6, + A9_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A9_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A9_PMU_PERFCTR_LAST =3D 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 =3D BIT(8), + A9_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A9_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A9_PMU_PERFCTR_UNKNOWN_1] =3D BIT(7), + [A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A9_PMU_PERFCTR_INST_ALL] =3D BIT(7) | BIT(1), + [A9_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ALU] =3D BIT(7), + [A9_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ALU] =3D BIT(7), + [A9_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BARRIER] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_9f] =3D BIT(7), + [A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_3_5_7, + [A9_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 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); } =20 +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_pm= u) return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); } =20 +static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_twister_pmu"; + cpu_pmu->get_event_idx =3D a9_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D a7_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_icestorm_pmu"; @@ -959,6 +1078,7 @@ static const struct of_device_id m1_pmu_of_device_ids[= ] =3D { { .compatible =3D "apple,blizzard-pmu", .data =3D m2_pmu_blizzard_init, }, { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, + { .compatible =3D "apple,twister-pmu", .data =3D a9_pmu_twister_init, }, { .compatible =3D "apple,typhoon-pmu", .data =3D a8_pmu_typhoon_init, }, { .compatible =3D "apple,cyclone-pmu", .data =3D a7_pmu_cyclone_init, }, { }, --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B865D261567; Wed, 12 Feb 2025 17:23:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381009; cv=none; b=BJDhV2kN2y3oDNJsA7FXlf7FjMaBZbIkAzEWTuiyTXiHwqclHh3yUNNIR/x15VL5Lg09hwg93UW6KN7fj22HoA/Q7dQXpMx2hFexIYbm6KR7rIGNWBxiEv8SuseEu4ZorODnvVwqlE2cOF2fFpsV7x9sZK8qfdpYFYLOpyY8SMQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381009; c=relaxed/simple; bh=hXVD/MHAjavl4ZXvSUc2VxlC0ifqcAGukxBhH8HTG9A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gI2FPskVYwArxjOSSlf88hDZV3wNwU8hkThbrZDCztwkkw/myT3txXKKrmsqdYMQTsDfAsXWIYdQw/mLPq5tRixOPbBppox2SmpCZLzuCHbGAxI2H0zURwDxU0PjPy0yBSdKGRnjVay/4ZsJnMmxcXCDgPqUL+3r/3efpqtwwfk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LLMCAhen; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LLMCAhen" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-220c2a87378so13516455ad.1; 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=vger.kernel.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=LLMCAhenLa+6vubhaMq3xlcTNHUA0JIqIQUcxQMNe19NzliUW31O3fJyrxB/oK8hzR r6Qc64HHB++h/v3FUaTyXoXUT4dsP0jFAJpCLvKCB8aE52e7dJEJV3YKd7nHTnWlfyMx TkAr2b2kV+gXIboME4QJsCQ/zfbcQ9DQlBVRrSl5kFipG1jidie2NIF67cT1TuPkVE1r VvF/jybb7ObIo4sX8tbE/Kbf9Ct5NmxcfceQLLDU0slbWwpyC6fsdisOxdT17cufASvb c7tuTiA0czUI5yOZIR51W72kPXjqkQMRLh9jHVIxQkHhuQrs5cV8560d67YRvnUWOWaa zL5A== 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=E0ipbVeOkILRDOfNwoRUxJmwQhvAXR/iPyde/rtIfgoVLFzrc1WKgLWyFDslUqXoX5 oe4Ig9XxXjvVPYHUu5v/VsqJ0A7dyai3AcC5G1PdS0C3b1PQWZhGBDgi1S9lc7+rElcd Px+UNuVseVSxNT212pl7XyJoxmqZNCy9spsW5YOTztQke5IssoMlF4cFQ88ZHBPzrJR6 LUbKLl5TZmhVmy9SN9Z7mzqiGkRlB7SNvMZKZdlK0Oh6pCFA1S36Gj80r/Ehw8hHHRPH 12KI8ci5Q4RI6wT3uajnWzJGXz76/TP6j2eXoXwtWecbOGTtZaeLMrUTMmZxyqpbs25G sg+w== X-Forwarded-Encrypted: i=1; AJvYcCVmkY7lA0gm8i4LdrgHX858F2XoIEoWYMfTRPoiFadoeVt65/AiFlZwJbbm1CGm6Hk3kb0zePVOOrpi@vger.kernel.org, AJvYcCW8S1taoYz0+axX43eVPOu+iORHScfPeSVaBElC44wyVbcOcCFdx6l4SiQn7ty+YWs5vdGR2FP7ul6riw6KUoao+w==@vger.kernel.org, AJvYcCXJEgQ4Cfv5jyH+RP0WsbT6b818oh63JuuMVR8e/mtBJGArH29kydJ2B1HW2wlJi7Npt/LZa+L2MQKdJgNx@vger.kernel.org X-Gm-Message-State: AOJu0YzTRfZDnIpoquiFXMZvHsnCN52euO62fAl1R1AAswUN5sp9Cx/E 9NseBS/axh0u7JIS2ob1SivuixmQ/ycHZYLNdlFcj0/EOBmUqJSQ X-Gm-Gg: ASbGncuwUDQu6kA0lfmFfz9qY3PRga9uKgokaXehs4d2CbyCu5+rs+QU3oWyQjtCP7Z vOZP2MEkNniw7jHaOyozyeCm+KVhYHl99xxmkiKoi5x5LdEVzd3IFKU4iCI4ZJ9mUcAMz/CRVNs xXb9kQ5RkK4DF4VAiqfjDnOzkCNEcB3a2C0oKnVfQmTzU54BfOaRnlVjm9T22lM5oUvN6R2iUgv x8A8Vn4pEmOzdP6s8jeWMlJ678kx1U08H/Lp6xd3ZrmAFWeVVBI0gD4X9RmPMeiQb0L9sBIyeCc v1j6kVGAI2ENIVlg1Q== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index 3f72de1051b31a1c0b417092590bfd89e747755d..c084c25f69d29756ea7a2e542e3= 3888c1142d80a 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] =3D { [A9_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_3_5_7, }; =20 +enum a10_pmu_events { + A10_PMU_PERFCTR_RETIRE_UOP =3D 0x1, + A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A10_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0xa, + A10_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0xb, + A10_PMU_PERFCTR_L2C_AGENT_LD =3D 0x1a, + A10_PMU_PERFCTR_L2C_AGENT_LD_MISS =3D 0x1b, + A10_PMU_PERFCTR_L2C_AGENT_ST =3D 0x1c, + A10_PMU_PERFCTR_L2C_AGENT_ST_MISS =3D 0x1d, + A10_PMU_PERFCTR_SCHEDULE_UOP =3D 0x52, + A10_PMU_PERFCTR_MAP_REWIND =3D 0x75, + A10_PMU_PERFCTR_MAP_STALL =3D 0x76, + A10_PMU_PERFCTR_MAP_INT_UOP =3D 0x7c, + A10_PMU_PERFCTR_MAP_LDST_UOP =3D 0x7d, + A10_PMU_PERFCTR_MAP_SIMD_UOP =3D 0x7e, + A10_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x84, + A10_PMU_PERFCTR_INST_ALL =3D 0x8c, + A10_PMU_PERFCTR_INST_BRANCH =3D 0x8d, + A10_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x8e, + A10_PMU_PERFCTR_INST_BRANCH_RET =3D 0x8f, + A10_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x90, + A10_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x93, + A10_PMU_PERFCTR_INST_BRANCH_COND =3D 0x94, + A10_PMU_PERFCTR_INST_INT_LD =3D 0x95, + A10_PMU_PERFCTR_INST_INT_ST =3D 0x96, + A10_PMU_PERFCTR_INST_INT_ALU =3D 0x97, + A10_PMU_PERFCTR_INST_SIMD_LD =3D 0x98, + A10_PMU_PERFCTR_INST_SIMD_ST =3D 0x99, + A10_PMU_PERFCTR_INST_SIMD_ALU =3D 0x9a, + A10_PMU_PERFCTR_INST_LDST =3D 0x9b, + A10_PMU_PERFCTR_INST_BARRIER =3D 0x9c, + A10_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A10_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0xa0, + A10_PMU_PERFCTR_L1D_TLB_MISS =3D 0xa1, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0xa2, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0xa3, + A10_PMU_PERFCTR_LD_UNIT_UOP =3D 0xa6, + A10_PMU_PERFCTR_ST_UNIT_UOP =3D 0xa7, + A10_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0xa8, + A10_PMU_PERFCTR_LDST_X64_UOP =3D 0xb1, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC =3D 0xb3, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL =3D 0xb4, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xbf, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xc0, + A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xc1, + A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xc4, + A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xc5, + A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xc6, + A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xc8, + A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xca, + A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xcb, + A10_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xd3, + A10_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xd4, + A10_PMU_PERFCTR_MAP_DISPATCH_BUBBLE =3D 0xd6, + A10_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND =3D 0xdb, + A10_PMU_PERFCTR_FETCH_RESTART =3D 0xde, + A10_PMU_PERFCTR_ST_NT_UOP =3D 0xe5, + A10_PMU_PERFCTR_LD_NT_UOP =3D 0xe6, + A10_PMU_PERFCTR_UNKNOWN_f5 =3D 0xf5, + A10_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A10_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A10_PMU_PERFCTR_UNKNOWN_f8 =3D 0xf8, + A10_PMU_PERFCTR_UNKNOWN_fd =3D 0xfd, + A10_PMU_PERFCTR_LAST =3D 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 =3D BIT(8), + A10_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A10_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A10_PMU_PERFCTR_RETIRE_UOP] =3D BIT(7), + [A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A10_PMU_PERFCTR_INST_ALL] =3D BIT(7) | BIT(1), + [A10_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ALU] =3D BIT(7), + [A10_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ALU] =3D BIT(7), + [A10_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BARRIER] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_9f] =3D BIT(7), + [A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_f5] =3D ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f8] =3D ONLY_2_TO_7, + [A10_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 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); } =20 +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_p= mu) return apple_pmu_init_common(cpu_pmu, A7_PMU_NR_COUNTERS); } =20 +static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_fusion_pmu"; + cpu_pmu->get_event_idx =3D a10_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_icestorm_pmu"; @@ -1078,6 +1203,7 @@ static const struct of_device_id m1_pmu_of_device_ids= [] =3D { { .compatible =3D "apple,blizzard-pmu", .data =3D m2_pmu_blizzard_init, }, { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, + { .compatible =3D "apple,fusion-pmu", .data =3D a10_pmu_fusion_init, }, { .compatible =3D "apple,twister-pmu", .data =3D a9_pmu_twister_init, }, { .compatible =3D "apple,typhoon-pmu", .data =3D a8_pmu_typhoon_init, }, { .compatible =3D "apple,cyclone-pmu", .data =3D a7_pmu_cyclone_init, }, --=20 2.48.1 From nobody Sat Feb 7 09:51:25 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3DB325A631; Wed, 12 Feb 2025 17:23:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381012; cv=none; b=da7n5sk7IuvJsq9ethMK6GlGqdcZKXhbxPXPtXdEwWvk7gQdyHuGcoi5Q023e6GO3IbwqYisUYPA1LQN/G7L8MkJwhezrnekD9Hpa/1ekQXFMdvJJDAPShEUR+QORMVerbL4yvOCceDG2YMqC3eUwQI8i32CiDb9tbh+DLO0OF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739381012; c=relaxed/simple; bh=X1FjYP6mBke/3D24Hai2ue885wXpUkAZdmez50aXc0I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U/uZ0baM7VvZ7EewbHzX1V1/EZlstWKG97+Pm3EwD09541Dry4jOv0ZGvYg+niAzvGVu0guEzHI77XVDSpBI7IoPzDHYVj83IrJ+hrRwEzncZdpEu1R26N+H+JTHe9WSOf6D10XaiDK1ZzzobVonrh0qoPTUIYt2bsAM8fad24c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=V5fR2cca; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V5fR2cca" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-21f61b01630so18295585ad.1; 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=vger.kernel.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=V5fR2ccapSIH+sJdIAuY9FSR/fiQMgu9gtb4FMK00MJ214FBMw2otG1dCrLd3xeWn+ 04gjyvsdeG74U1pO1r98ZQUszTHDnk860/zuyX2cu3ynNk5Gs6pPeUC0KoPlGKQw8ukM +USFeicVKuyKihYIksWzFLcmr589Jr1BlkUizBqEZTR197I+7E1sqAwUwm4rXFt4PQnu jCFTM9Pq9lfmR9Ulp4DfY5ReSZmVPsxZcoklOCqciCKFTasp8sPeraLemC/tdb/pZEUz 5//i32L6/OMi0rrl8/fPzlSXN1xF5KrtamrXDZhvgSHYut1FCmdvQo9zJW1h8TA2Rnhj 5S3g== 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=Lalk8NUfGGZxxELxBZawurq5M32uV/A34DDFDrLzHWy2JqxmBeDp1/nfkDbx41Qj2N g9bW4cXu4EmMry8KKUU/0k8f35rcencwUZPf9sVuExApKw0xB1PS4qTncnLvoGohfMkr 3BVA1h0DJ0RNt4Wn0+9SdWxIbVoI6qeaG8GLHwatmpfg7/bad/YnSeiNrzqVD4iVIFJQ cFKtmn6Rgok0Y/DUWLbVzPD0D6C5sWuK/uiIW8IpqTGDZvTUEiYV1SnlBMTb/juTkVcw vj9cZehe7ixxURG6GE1w4lJ3Z1tnkFs/75on3FSChiiuRFtEICX2Gw+uEPGTDvYOICQC m6rA== X-Forwarded-Encrypted: i=1; AJvYcCUhZ9eCD8Hju0Y6tBq8IoDY3TNp8+l0q0CnvlivVX4VcFLZPQZCLrMxy8c/addgFiKJULQcvuwJlB7s@vger.kernel.org, AJvYcCVeVqowYyD56mxVlLY4NgWEEcjk3G8BE9NwS/EI9PfUCC+P1VSX69eITX7t3ZwDtcKp/MKeu17wyEZBUrRo@vger.kernel.org, AJvYcCVkHlQl5znkUQ121CMf35qCqKgeidR9geg9u2PJhyTdzXNg2mdQqoulairGgi0mT8uSIafhT8h2Y116JbnHXqJ3bw==@vger.kernel.org X-Gm-Message-State: AOJu0YwFJaaf9frwyVL23pVSBjLhxhMU+GHA8+t70W9yfoQ7sKMPpsB/ MWgi3Y8zXyQ48g2SDN08ynsiPs0XRvl00g49rrhZsIrmY8JFsFQu X-Gm-Gg: ASbGncsLU/y7mFqJf6E3k9G9mUbwtUzugjpB33ZaFTco2jKxW1N8TiDy95Hd8uZOK+J 4o1oxfwgD3kxYSX5j4Eg3duGQBdXGGZ9W69Z5ZSy6dRk9SJUzdDZcgTfdtwu9W9/oVUWLpG2tYb i2TkP4CKkiFCdvXh5iNZP11cBZpr28WtVPrNbss54CyOqL3QP/HlsKov76qxnKdWktJ86TX1OlI ZbA80gacgWws2VqGV4DHqu6oaQ5ZljBxZT3kDls3oN03i/PKfdwjDFDN/iHR07uEJ5HfWEga7rG jh7RUMizgd62Z9yw0w== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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_pm= u.c index c084c25f69d29756ea7a2e542e33888c1142d80a..d4e7436d0edfe785211ad700e4b= 0be4e1475e8c4 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_PERFC= TR_LAST + 1] =3D { [A10_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, }; =20 +enum a11_pmu_events { + A11_PMU_PERFCTR_RETIRE_UOP =3D 0x1, + A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A11_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0xa, + A11_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0xb, + A11_PMU_PERFCTR_SCHEDULE_UOP =3D 0x52, + A11_PMU_PERFCTR_MAP_REWIND =3D 0x75, + A11_PMU_PERFCTR_MAP_STALL =3D 0x76, + A11_PMU_PERFCTR_MAP_INT_UOP =3D 0x7c, + A11_PMU_PERFCTR_MAP_LDST_UOP =3D 0x7d, + A11_PMU_PERFCTR_MAP_SIMD_UOP =3D 0x7e, + A11_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x84, + A11_PMU_PERFCTR_INST_A32 =3D 0x8a, + A11_PMU_PERFCTR_INST_T32 =3D 0x8b, + A11_PMU_PERFCTR_INST_ALL =3D 0x8c, + A11_PMU_PERFCTR_INST_BRANCH =3D 0x8d, + A11_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x8e, + A11_PMU_PERFCTR_INST_BRANCH_RET =3D 0x8f, + A11_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x90, + A11_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x93, + A11_PMU_PERFCTR_INST_BRANCH_COND =3D 0x94, + A11_PMU_PERFCTR_INST_INT_LD =3D 0x95, + A11_PMU_PERFCTR_INST_INT_ST =3D 0x96, + A11_PMU_PERFCTR_INST_INT_ALU =3D 0x97, + A11_PMU_PERFCTR_INST_SIMD_LD =3D 0x98, + A11_PMU_PERFCTR_INST_SIMD_ST =3D 0x99, + A11_PMU_PERFCTR_INST_SIMD_ALU =3D 0x9a, + A11_PMU_PERFCTR_INST_LDST =3D 0x9b, + A11_PMU_PERFCTR_INST_BARRIER =3D 0x9c, + A11_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A11_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0xa0, + A11_PMU_PERFCTR_L1D_TLB_MISS =3D 0xa1, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0xa2, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0xa3, + A11_PMU_PERFCTR_LD_UNIT_UOP =3D 0xa6, + A11_PMU_PERFCTR_ST_UNIT_UOP =3D 0xa7, + A11_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0xa8, + A11_PMU_PERFCTR_LDST_X64_UOP =3D 0xb1, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC =3D 0xb3, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL =3D 0xb4, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xbf, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xc0, + A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xc1, + A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xc4, + A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xc5, + A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xc6, + A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xc8, + A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xca, + A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xcb, + A11_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xd3, + A11_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xd4, + A11_PMU_PERFCTR_MAP_DISPATCH_BUBBLE =3D 0xd6, + A11_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND =3D 0xdb, + A11_PMU_PERFCTR_FETCH_RESTART =3D 0xde, + A11_PMU_PERFCTR_ST_NT_UOP =3D 0xe5, + A11_PMU_PERFCTR_LD_NT_UOP =3D 0xe6, + A11_PMU_PERFCTR_UNKNOWN_f5 =3D 0xf5, + A11_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A11_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A11_PMU_PERFCTR_UNKNOWN_f8 =3D 0xf8, + A11_PMU_PERFCTR_UNKNOWN_fd =3D 0xfd, + A11_PMU_PERFCTR_LAST =3D 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 =3D BIT(8), + A11_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a11_pmu_event_affinity[A11_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A11_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A11_PMU_PERFCTR_RETIRE_UOP] =3D BIT(7), + [A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A11_PMU_PERFCTR_INST_ALL] =3D BIT(7) | BIT(1), + [A11_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ALU] =3D BIT(7), + [A11_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ALU] =3D BIT(7), + [A11_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BARRIER] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_9f] =3D BIT(7), + [A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_f5] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f8] =3D ONLY_2_TO_7, + [A11_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 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); } =20 +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_p= mu) return apple_pmu_init_common(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 +static int a11_pmu_monsoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_monsoon_pmu"; + cpu_pmu->get_event_idx =3D a11_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_mistral_pmu"; + cpu_pmu->get_event_idx =3D a11_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D 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 =3D "apple_icestorm_pmu"; @@ -1204,6 +1337,8 @@ static const struct of_device_id m1_pmu_of_device_ids= [] =3D { { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, { .compatible =3D "apple,fusion-pmu", .data =3D a10_pmu_fusion_init, }, + { .compatible =3D "apple,monsoon-pmu", .data =3D a11_pmu_monsoon_init, }, + { .compatible =3D "apple,mistral-pmu", .data =3D a11_pmu_mistral_init, }, { .compatible =3D "apple,twister-pmu", .data =3D a9_pmu_twister_init, }, { .compatible =3D "apple,typhoon-pmu", .data =3D a8_pmu_typhoon_init, }, { .compatible =3D "apple,cyclone-pmu", .data =3D a7_pmu_cyclone_init, }, --=20 2.48.1