From nobody Thu Dec 18 20:15:05 2025 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (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 24933206F05; Thu, 13 Feb 2025 14:36:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457388; cv=none; b=chp2F+T6ufef2ZXfm8pajVImoBcJgggGc3jlRfVK4GQys+lN/SKRAKv0s5xy9A/kQOs/o+D0ruXjzMxaHZ5GurjhXPLh8pvYFcgvpAIiHEQbLYKAsp5d0awO/J5aVocC40Uo7eb1ztQ7bYVrBJ1XFI6iKGqLjLQ0EY23mwM+ilM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457388; c=relaxed/simple; bh=IvblILNfK65nRmNXFfVq27lzQtZVkqPdlXpIO65Xo5E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FIt68M7T8s/KG0fGKVurhiSj0b4Fp6jWOapdyycioJFsq9aB9161FYg2eDpt4aJ78mH/k4YDyDIDNMU07H7OfFuq+702UhvfYQWRsyzNVNl5F4YpqDHTN+ZZp54lj4OQecnc7nh8sEkP+c3wfQNvky4TGU7k0DqC+VOPZ9uZ1x0= 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=P7wNwuGl; arc=none smtp.client-ip=209.85.216.47 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="P7wNwuGl" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-2fc0026eb79so1811673a91.0; Thu, 13 Feb 2025 06:36:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457386; x=1740062186; 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=9vprohxk3JreCnU/aMQ3Cwcsm8vUQGIhxwt5YLfMxZE=; b=P7wNwuGlXMl6sgqBe+yQaJpARNZc483d7NcjT+XQWFrGAwfqfYlrv8Mm8GwA1NSeFS NjOua89NZdGL2W16w06a5ZLGyYFGhh4SaACRrF5SDT4rNnxM1yxPrkH79WaZ7FKCEfdO Gyat1s51HuCUC3imen/RQrq4B4lwJ8mqBdC4a0D5cgLpHfms9h2KHutShhkCf0OAaIVC b475+j6mYt1lqzJlYxz8Ff3WmLpF4oP3bDkYO3fKmEfFePmna1+B6flnDSpxasW8o7/p GopmaDM1vlAQeu7IFkePOfsSJnxtpzF86Vu4qEYLZyWhqCZbDa+bBsl0GsGjooJR+RE/ QoEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457386; x=1740062186; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9vprohxk3JreCnU/aMQ3Cwcsm8vUQGIhxwt5YLfMxZE=; b=XcTgZoehsazSTdjwYTnbm4M9JZEUkxlIZ5j7JQpElidN4FL9igKJM7uhI8GBY68CVX WLKMSHaW0Bpm5CpscOgbKo2Kq+WKKNcKdPW18+ToThH+K6OdTw97spapglqTwPpGwbGM 7+qFMPkNR3oVJQmomDwzRoXj1a/aE+yALdpEmZiZxLHgdFXLDOMH+F3o+m9/5Q2xUaUk aIM6qjFI0WSleCNzaKd8HC0lb0qm6AdL6Jy9ok2FQ7sQjjvmmXxQ/YUiSNoeANXTbnsy RjEvQnCwdEjC24bK30LIetTSV4EVD/Wjz7wzjtOUsYM1lZmX/i6HYSQ+Ng3NCi8d3qm4 0hyw== X-Forwarded-Encrypted: i=1; AJvYcCWSfVeBIpTIZHC6v8NnzbSUv7gCfMaKxMpm4FTR5tAHphuBYh5bggdvO5jsDf2NR5XoZcl65UW3fAyJ@vger.kernel.org, AJvYcCWacTtjDU9lRhn+6iDbe72zEkTAVa9ZN2ZGqCywlQ18u23BYWXUJXvAuxRgYLqRYhAcO8eD7cslGGysqm6l@vger.kernel.org, AJvYcCXC2Od6G9nmjAjSq/Z7uJ7sW1uw96KrbmB+ZInTG/1mloIB8up3/8AcwQsH3RdoC1we5dEAaMuOSVGMLh3ATvCSCQ==@vger.kernel.org X-Gm-Message-State: AOJu0Yy4chGb/FE8Kuk8LEQot07d5LQXjOy1rI0U4FhilQ/VSbdyDHnR nRayLHWVJHk704bSD0ziCBN4UA029FHyErQ46dM7O2QG/nipkQYd X-Gm-Gg: ASbGncuCwMBGRd53QDGKUbiQ9UkwtfjJpWcR40HmtC5dmioIyaueglmgEdxXjznGPti UUswYWeVOHmFsHvFkELdF8tPVDPc3cAeeHsaZS2WlEgY28tBgvhVLoaf3OakznmWP5X2Pq1c9d9 9kJX8JUXbxSx40sYX/4WRtfUpxQEHDE4H9DLtskdfYVnTbZPbwg9EW0t+6Zpt95cZPzxVe2yYhs GEIezU4K4ucZ+g4+FYdimKFxTGlJpiufwU3f87zrmSnL7uxVAHO//W2rPjrh7cJBDDEmSD0CWgC xCcgJWCQeITzGhZQRg== X-Google-Smtp-Source: AGHT+IF4RaBshAbsZAbU0d+7OJwZz5y9P8mEbE5ZRo5bsmk6xrlhZCkCowKA/tadWVVR+OksLyqQug== X-Received: by 2002:a17:90b:264c:b0:2ee:8427:4b02 with SMTP id 98e67ed59e1d1-2fbf5c5e239mr11221868a91.28.1739457386366; Thu, 13 Feb 2025 06:36:26 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:25 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:03 +0800 Subject: [PATCH v3 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-v3-1-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1102; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=IvblILNfK65nRmNXFfVq27lzQtZVkqPdlXpIO65Xo5E=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNi6bH9gq/2V1s/QQdHuEps9tUpFBbFo4avc B9WT3691ZiJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYgAKCRABygi3psUI JJzMD/9JKed3nvtgK9t/Ni8ZcHFenj8Iiwp/D4Ve9BJ1bFG0fhvJrI+hHA5klcqShBgQOWuqsFr yHR5nRlQFoeSHj8Bv0JyO2eONb8ebbYwA/XBkTvbZ31m2KRtDISJJdwsL0vdWO91li87Yr2aPIK b9HTj4ZyitNTlZe55/iiLXFHPd7KjAJQ/tYu1cnYgUSa08myxtyZ2yhWe99ka1mwsFtiJZdrXWb 3nv6uxg50Ufg9mi7+10vUOLpxjTtRbqoYM3Vo5SZEUyMGNGSx5AKyymujuwS0QV5/EdiqnAutme jE1mJXD/eJAtbE2yUaGYtmsNrvcS73bfE/JQlr3gvBZX24t/Qa1NcqgsmTYq34RzdOC2zW/LnkC pZ/YC46UqKPe48tnPgYWOSGJ7Ek3A7QMgqRVViCtlK4/GkcaQTWrxzWFXP8mPh/3crSN7MC05C+ 6RY1uZV/jFbA+GZvxzg3YzbbDs1HBagXnJu+52StdCvRjdd0548KzCxIgwdnMsHZxm4re4QtlT4 TlsZPCDlDlq705jcV19amdlPkXQCBYil9tOlpw3XA5LDxyJ+W0eX6veaaj9rZTjqv+ctqGzT6FC tMCCe9p03k/evtLh3khQQ5cwm/jybS+wIfPQfba4F1aBdy3uCXUs9cdD5UQqi4MesSIfpq5tDIH fefeh9ckgm2E7Aw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Document the compatibles for Apple A7-A11 SoC CPU PMU. Acked-by: Krzysztof Kozlowski Signed-off-by: Nick Chan --- Documentation/devicetree/bindings/arm/pmu.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/pmu.yaml b/Documentation= /devicetree/bindings/arm/pmu.yaml index a148ff54f2b8a92fa3fcfa78c1bcc525dba1c6dd..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 Thu Dec 18 20:15:05 2025 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 57CBB2222D8; Thu, 13 Feb 2025 14:36:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457392; cv=none; b=eDOu5Jt20HMHlEsaDExC3hUFHU1TG6LPHdZUIqJOlflWkF1h7Kp7j+DObmHjnRdv2V9f2rD6YRaaLOQNmLTyoe2xuEPDaf1uD1reVpEWeN3Pi1zzj3DzPAAtxuZU7nWxr1Ntrs0wlNmp2iJFd/vjAmjI7JVkAur0iK2IYUNfrJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457392; c=relaxed/simple; bh=8lUtIdaUZ74bJi6U5U+SM7syFrwG6QLTTZ/s/7A0PwQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T9TlVnsZukYSeP2FaOYW+FWK+ICGOutcvWghlHpaKCmG4qov1kA+aI8Brp3i+8/yBjUlnWJNzEfA6y8Q3nvnUMPwXd8UmdAC2b4MVT5KrVp1b5Q3OnFLd+22uq0Ft+1RTnvLy/Z0JI4+BI2wzRy6D0Td8NMpsX1C7gu+EGJIWfw= 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=ERjo/Nr8; arc=none smtp.client-ip=209.85.216.53 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="ERjo/Nr8" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-2fa8ada6662so1864299a91.1; Thu, 13 Feb 2025 06:36:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457389; x=1740062189; 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=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=ERjo/Nr8Rh9pJJ405dGkY1sQtTZCo+gUmbMHIFpuVwtqYywQRPOKYgnvY2ofgrC6gy EYyoFsfO0dSkJEKaHUiikF+Q/T31eu2HM/1Y1qCq6sdu1cLVjuz9QRN4gP78OjFlcKha TlPjypc1cMA+89Q+ht9/wPFFe8kWS2L3tAyME+4JWw/CtfLYiWjN2byrhM4RmB/5zwKX N9Vx0CkLswGCdBwLBqxEO8bYNE1AC5BWwNgNf5AFgItuJGcnjVpPcyChWm3BpEyJY7HT DQJz2Dmv7oglVVnKCh340V1KdHHW9znsOt2os7Ps6ZN3pZQq4foOiYhZgrmRy/dCKX+i A1zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457389; x=1740062189; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=kFaa3IFtuv0TjTno5FKTzSjYZr2jWPH6pQEPeMeNO1mHr3NZDRf3Toz8lIHJYBJLec shzW/3U0eTpmdj9k91PZkNtYNqy/vUkgwtoTnR9dh8sJP+CErcnr7Fzl9lN9N4xc+Pgl gQLqSlOFZR5/dSuSnEa8lmFy5URZNPZC/N7xd/cmO5+qJbtv9CxFKLwk3tzj3v7zAg7i wVBMQNlqjxHgN98XHTTRSz5xWonBT8ZjeML0cJWrxTbMlcXoNhxnHpSwyWx3kOk+jAAe CbnoTifmmNqRiLhIUfFxOZFphAYbSTZxtYpoZ//HqT29J0NOUtxz9p76eb+2TNX1sNG4 IA9w== X-Forwarded-Encrypted: i=1; AJvYcCUMA+So9EHuZ6o5deWZw63GpM7VMkNdpJB0Y44GDpkiDFvUagn7kdxtikhXA3XVtUH/jb89w8fUWYHx@vger.kernel.org, AJvYcCV/7e+7dWTF9Y/TdHaI2UEolhLLiPKCkg4MiYrFF03wkx9N40Acun0lGlTpzDESJ6cJkLiiX8o2LTjG/kvgW4LjaA==@vger.kernel.org, AJvYcCW/Owefay7Cr6wARa1hs9o5gJA71MfceeQGC/pirFj5sRVgxhjJN/ukFEwVEPwQ2RPFjLfm0RyKnhz23OqW@vger.kernel.org X-Gm-Message-State: AOJu0Yy2+EZGfenGhyGMtjAHcIEJz8hoUhgyTgG2VcX/8ykqT7AQUtUr K3x8oiDqaXJyJj6EKM6dmsjV2c1zzmqJ9YeDp3szitCb3c+HduT7 X-Gm-Gg: ASbGncu9BpaEGayY2Ll/q6AQN7HrdULaBD/J7R4cv2VuNniPvdfBAI1gPrLlklp7MQX ML1mRsbk9DKnzZkLX+FMZToYBm4WHE8V/mRKom75cz5THJsykh5I52qnHXMFR81q8BqXkTpJpdD haJnaXNzCT57IaVEKgMF6SRxinVzMO/Aewa1ZQsFtsj8U0QUeD9LTuReyTefcOrOUvt1dXmXWDl E69a0yZ/Tv6raQqdTGkna+w56PwFBYsf6E6FHdGjT33VBoT/qCPIy6D4DZonO9u9/JqSKsxCPAl 2d60eCgQ7/FLgimw8Q== X-Google-Smtp-Source: AGHT+IGqqiPjx/xvESUvDV6JJP7KHZMh5lbCYmIQOaYARolGu9SAVW0ae8w3Wzy8lFkcnMAfkDpaLQ== X-Received: by 2002:a17:90b:2dc8:b0:2ee:ee77:2263 with SMTP id 98e67ed59e1d1-2fbf5bb1d1bmr11556616a91.7.1739457389372; Thu, 13 Feb 2025 06:36:29 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:29 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:04 +0800 Subject: [PATCH v3 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-v3-2-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5765; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=8lUtIdaUZ74bJi6U5U+SM7syFrwG6QLTTZ/s/7A0PwQ=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNiHtHdtlJEqZY86tRJY/Yt+POi1Wor9jrCS Ce3MhA2w0mJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYgAKCRABygi3psUI JDubD/95vTRUzOF24IYySpgZ7RqMbgtInCO1tudyRQnMCGsmMQWWDDbZQqz97KbYY4joEXqa4Vq wxc5qTnq/0qSLtz/yxXf6iYRiQjCCsWODtIYs4lqxzBlqXy9PEIEG9AUQ5Ot/2Qbu9/nmM6XTdG UHIZZB3mxKl8vAnPPfUDtrUQ+ioKSUpObr4oot2VlgJG61K8tYgC7JYzIXdbeUBPX9olMsfmrpC 1FkvsO13EhsUCsR+XpHuu9bjXx35OGyU16+4EgPZKUzTO+lxkNPtU01NkJRQkEpFoPBAi+L32+1 mvy587EdAR0YCsKz1zsXdtPUL0iD1kJzNuIQII9Uctcxu6Ltqu0rfK13WqMSSJ64Z710HOnwV66 4XVF7ZTdkkdJGCqTf32d9EOVYydymLmg8XVj4ZV/+eKOztKBf4R2KFzpukiDiCCF0MeCdwvBAG+ 9bce2ya2cg6Jf+Zj1/MUz8EetJpXAYfzhuEszjmA0N0XgLUULzhR9oOdkcvLZxU3oY2UkxH+be4 oRUDw9tx83cy6FjB2TELZ/bxSGZNwB0CmGvDMGWN3EgJEa+hCMKktV/kYALvJbbU5toN+E9aBR9 nbDz+p2+YP0GvJrN2UJJB4TAPOCkgGKO0E37TiXaNxUuseYfZdLkdawIvqA9uvr/NzUPl1aDYZ3 380mztBSV6Dszzw== 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..dfd5d72ce9f3c5bebd990b5df6a= 6823fb7785cce 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(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(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(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(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(cpu_pmu); } =20 static const struct of_device_id m1_pmu_of_device_ids[] =3D { --=20 2.48.1 From nobody Thu Dec 18 20:15:05 2025 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 21ED523A98C; Thu, 13 Feb 2025 14:36:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457394; cv=none; b=o/DuzTOqjULwIdXXToTHSVN040/t7phEywqfI7YiR2AU9nUyYXZZ3zt8km8dnCQUWjMiaN0B93tITkEv0hLpZpi3RHzynl9flchxFCIhC61TtWxWNSNps/ZfHlgYWAAXuHPlvU2Qt9RAObprm4m4A+1p/1l3+oITsbVzNF6+IS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457394; c=relaxed/simple; bh=MG7H09oJBroEMR2rLRIA2iE+Zt5xTdbc861bsPYOz8o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZsJYNn6I+vmYxAZosLUxDQTQyMHsIGpNleQ0MFXuq14V00jPkmcQ30lKk+xPh2euXGcVD0a5WWIX88rbsKj9J4NKdtOOEprqpAx3KkQuJYeMktMDzuBoZohpkc0DWJUDXM/DQCsfkiQT7qF8NQG89C7Pq+IdS30gvSeMxtSu+Zo= 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=j80jSecn; arc=none smtp.client-ip=209.85.216.52 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="j80jSecn" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2fc261d4ec4so283290a91.1; Thu, 13 Feb 2025 06:36:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457392; x=1740062192; 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=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=j80jSecnkvENMJpKAfF6waHk02kjsya4E3e2ihOJXZMCx78n7QAGATZNADM6niLowA O3hAlQEvQlbCdUP5LbSJqdXb48E5Vmz+6sNCzHaBxMo0E6OfEWc7AJxsnZSxF/pXKb4I HkuDdLYCHv/CH8llQKhtTMMs5/16mUjU34I3kQgsYxdvpheKjR/amvr95pMgqTbSqfLg iaKeedHm9irdf1+1/6NTvLZfUKhaJH3VFJFdg3VwAFvFQb5eilviIvxWJeXWmQXqlVZ3 5YCMp58TeNSO7wOLnMRvZ3cZ9apiifxliUqNSZYsSQT499vA98LtuZJsQbmUdBbNfcS2 SoyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457392; x=1740062192; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=JF1Sz6faDv+plIm12iyqOcpPebU2ZqWK0IzUkbs4d4XBU4fc2Fk2tTpJ7e/8CWxFaW h9H5zNit1st9zZiuZVKtyHXeAxC/39VrrZRsvsEb6tAUssmunE4HbuT6XF9ai0a2ti3o nZHtA3GJrE28gwb6mk/hYPnNsbgqeVySmt9SrKB+/Zz2kovmMP56APT2Rxb4xTAce/G9 47+Ke3GNdk72xk8Jp3/fMZW0w8XBr4h4UBhUMSYTJ/Q6DjfjkuGBgke0ZJMhFC8lhhAf al1RhN/B15aBmJ/vrWeBc/INFjLYMV47NOclloSCXW9kHfsK0tYn6aJGrTZ5cL7pB1q/ Rqqw== X-Forwarded-Encrypted: i=1; AJvYcCU4FuaJpFMwRbMG3X+mLXUgcfsjvCRPJ2JoV60LrK/OGrkASiRHKuI49DsZn2ryMa8GZ61+iG8HrH3cyBqR@vger.kernel.org, AJvYcCUdhgU2a/w7luLsCri0UAHyKWfRtQDN3/yqeDN5EGMXrXV7z1bUmca28B6Mu+xQHN2d9J0mF0bOM7XS@vger.kernel.org, AJvYcCXkpkA7G74uN2WHsGr8yrK0lLD7tR7HaY8PhlfhJOvgEGDiVvmWUeVeKLRfwSuOwK1IvI4BN/mRV4h6rwqktoYp5A==@vger.kernel.org X-Gm-Message-State: AOJu0YzhNVVH+cKh6w6irUvY4Eu5HHwEf3yZ3JqFyPwgUKsweMhyDbkB v1XFpesmI0MP/YEjR/nx9gtWmbBoFQYA3w9J1U5mGuy8nYpTYIDS X-Gm-Gg: ASbGnctH6LBLw/w5Xx3jBH0APH5QKgoAPcV3gcgfnzlG7mr02oLJ9SaEhbCMuKzqTfw /nG5Udou2Ig8HwvD7OgyHFgZyKw2gkFxNlrFX8+0/3AsDy3656Gsu7lw2rSO3bx6wkdqJ1AJRNN up3uCGH3a2Z2Xs7pOQ642U/KO9yAnV4AT6IFnQ2+cwb9VxYB8Ja4QZE1OgjWKwEU3s0vnxU7gqE zdAH13R3RXnVtqHq+7sxGf+7jNCPLp/zI0Tkq3QI77gTWGPFqi9NVJ5jOgGZTvlBDfJ0AxJAlQ7 V6nUyojidWieZs7IoA== X-Google-Smtp-Source: AGHT+IHaadyCxwFk79w959D2c6QKmfVmhWlGaOLfG6K6+k/tJ/QQlR9D08Ds+AKafHQJq4Hsvk4/RQ== X-Received: by 2002:a17:90b:54c6:b0:2f6:be57:49d2 with SMTP id 98e67ed59e1d1-2fbf5c1cc87mr12523915a91.17.1739457392450; Thu, 13 Feb 2025 06:36:32 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:32 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:05 +0800 Subject: [PATCH v3 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-v3-3-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4755; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=MG7H09oJBroEMR2rLRIA2iE+Zt5xTdbc861bsPYOz8o=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNiUgPvCpFGhGTMyGdNU7wLWBKTezl49j80M QCYbF7PhyWJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYgAKCRABygi3psUI JMemD/9JYfxAYOnpBp8Fk5eCumWdwJTLnto1PTYrT9O+bvtNzy18w9IUswqKPmpDc3WAt3oKpRV y/W2TeDQmTuHN/xdj87s+A8aLyJOliY7B/sF6JWTfzkS9I53A3AA5re0HxYkVCqgW8YxQOj6N9t kFdejqO39YNBuw0moG5v7IickGguOQ8JDfwPvIwSL2+/0RkbuvU1RAiuteDTqc5rPzOWxzFetm4 IXTOcLX+pF3YjlV5kbtsDePGMHiQoBrarmPeuZ90iqHjIMbCPdGARWGwBNM5renVokOPQ2+TY6Z kCO6Evh+G1xS6wBXdXjeFzsyqhGweOHEnW75Iseuq4ndkQAxYEDfupaqarP/jvrzBJKNnhL86Ec GCp0YkbvP7Zu4d9B5EJ+fu02zSwpPu/y5+J2g7/FY1JIERcOjyVWzey8hpacMV56a8S/sJXc+48 vIDarGgd3X9SasIs0TnCehg4PCn/5tL0FJOrSO5kPKPaWEtZCUF30AZ78NYLMv4YUYbHU6Nt6rV lKDQtZHMMxLE3dMFaRBIicIxjrGW3leaA06Ga6RqRFbKRlL3P/wFKsP57YBgTnCdUSEBaYN/CuQ c4HmSmVzS0HGRAa4IW+ysOCDnmEJUxZNOGwHpyBCHL9bGzMleBikZCC6BdX7heTmb5QrCF20hbM kEFlinkOOg5tDYQ== 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 dfd5d72ce9f3c5bebd990b5df6a6823fb7785cce..bf397fd81230007dcf52888f148= e3158dc02e29d 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(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(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(struct arm_pmu *cpu_pmu) +static int apple_pmu_init(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(struct arm_pmu *cpu_pmu) 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(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init(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(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init(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(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init(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(cpu_pmu); + cpu_pmu->reset =3D m1_pmu_reset; + return apple_pmu_init(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 Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 54C7A241667; Thu, 13 Feb 2025 14:36:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457397; cv=none; b=i7Tnzl8lKikhQ78IKfSlkEJS/WeszYtyB64luQrC9jMggNP/gHi5a5u6DD6Cc5NuqfZNMbJiEbFHSFiVSP+wmdey163uHPsw248Hn8CuLMNmIshteYwbEcHJkrOvCf6K8mvJ7bNSnCst7v1/u/9urBgZWiLy3ISa/kIJVccBJw4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457397; c=relaxed/simple; bh=JtntoT+/7KJ8q2fmzw/EEFzk/pZROlC/KV344Upuyvg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EeaQX44VCz1sSydGAuviTqwriHicpEMBPfr9WRkBynvgfvcnQgwf6aFKOox/sESoo8lYHflB2mrsFixowSFSwbpSlsZUWU4lM9DYF5Yzrrixpxo7aS046xZXOsieTC13alx6sdtFEDzBZH4HKgZvsxVBRDSZeG/UQHcqtRFig48= 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=BzeQ3Cr/; arc=none smtp.client-ip=209.85.216.43 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="BzeQ3Cr/" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2fbffe0254fso1768143a91.3; Thu, 13 Feb 2025 06:36:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457395; x=1740062195; 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=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=BzeQ3Cr/cKEfJUN8YRaEdSbWzuymArIVsCzasMXvcYODeJ+WkDo59WpndNcPpFNlmt 4lFwlarHVKDzGxUWOZE0ndcjGv9HzADQF+RKGa5Rk6K/h5NNQja4rKrAu8UUvG9tXua6 cOa5+hE9gyFyOuT2+t2US8i7NUj70MMFItQPpqApTCOsz3VCN1R3cjoQRxfOJmvdcMLU aKMRWSSdbjubkylq+2aAAOziuvSDb2SpFMrdANnsREiqh77J1fsel9rA0ANCLhZWUAcg o668cponrcaDjclcD+D9QL8oE8hRYRjceakF5Yvo7L3zBBPFkU8AiI8I3cpxDIj6c4cK cw7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457395; x=1740062195; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=Qijld1A+uYmm3F2bL3ABPfQ6nyaoinwW7rNot4yqS+FPI3+70S8/me51jsExSpiUgG K2U8r4EwyuPrVSDIQvj6pHiVhg7fj8wIbt2SHxpRfotW4lIDwFK0x3OMiPg9uBuy72GC iRHpodpxYVFrJAhDY/6SApQL6H14CTD5Ns7j23OmmBM0EpaZECysEdSQy97MP+fmHIHt iGROD3b1ERw8Wp9/kQPrWA6K++h0crgPMNSBfHyEqwGCnoscSdut+GmTG6YuGls11Paa UJAkKPzDhiH18FIEFaBd85YG+uJBBDU289JUBcU9gLWvvug0/t6EHagg0MW3CNRLt/s/ LXZg== X-Forwarded-Encrypted: i=1; AJvYcCWZkHzYWz5GJ+wwdHt4uEoCMsyg6ntZ4RUc2/A18cIGVspadwTIHh+7uMUZAB1XBnPXbncc7Z6UCZQu+W9FPk3h5Q==@vger.kernel.org, AJvYcCWgoz5UP0H9+cdPnqpaCZDwInQKcdmnvwVoKO6RUS2+6z8fvXIDnBVkj4PaXtxwi16YU0AZfVh116wJ@vger.kernel.org, AJvYcCXdHMlLZY9WC6vK28fmoDWMTaf13x66jl66/LwpW1F21ppzTHmyxQignM13fEseWZ/oCDtuSlTrLChbRf2U@vger.kernel.org X-Gm-Message-State: AOJu0YzBBjw/m5aWK7AGkI3TV+FN3m+D760V40yjSqfT68wdMPZDKO4e kGYjrD9KMzFbnYVPVK+cqXOfe1ILQ7mPeFu2m8hynO0M+uRu/WE3ttQecg== X-Gm-Gg: ASbGnctw+rINQHMbb9vaHcOuB075Sjb6272V+mepCOCNqqv1CsVZTiZVZ23mqQGqCcI svDfDEkZK2IspyjBQ2iP724lJr5qYLYBp7Wcwhjc8vhRyF7wmpwQ30olv2at/NqPm5KUTyfyPad vIi1A5Fk9SJoiCgPveWgF67mNzKqRQuwLNVqj5xmE5lhafGG3UE6Yd+q8oCet2pPtYNbSGy2nfw w/9ACnsW+/c4IUOnn72UNhM1flA6oEfDjUWrO+lS5wA183TtsH6tEqPqB+6M1/fdtfR9f0JmxYe 0X0eC0hSdbIDEEnwOg== X-Google-Smtp-Source: AGHT+IE+IzEmh99k8e5LtSg3CmKmVTOX8Nit3XAE4gsqDcdvOIrzDYawcvAU7K49o8FzFkBHNudGGw== X-Received: by 2002:a17:90b:2549:b0:2ee:d193:f3d5 with SMTP id 98e67ed59e1d1-2fbf5bc1e3dmr11295490a91.7.1739457395506; Thu, 13 Feb 2025 06:36:35 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:35 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:06 +0800 Subject: [PATCH v3 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-v3-4-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2104; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=JtntoT+/7KJ8q2fmzw/EEFzk/pZROlC/KV344Upuyvg=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNiS1k72FP5Vi8yzUaV70bEMzBky32iQouFq 9hIdRhC1G2JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYgAKCRABygi3psUI JJNxD/4kWh0+R/dtz0Y+C8oJSBVp90SpR2M0VAJxr71rhu3sK1EN1s+4tZ7KevDVNDQ2PmgkKNx jtMXSJu/Jr9pPTWJh5cEiHqAWGWgp8KmGK62WFx2oeCkh/d/CXC/8xqI2XMQcIVXpX+Kstxqxbb cua/JIbj78C290rvFDL/bc0EHI4WPZEw2+DMDfu9/CMw4QVrDAATi/VqJjZzJf1ybYLWio/zcRn 5zUmEIal92DmFZDp493LGF6fUKudvEflb4e93F9Gd8gDm4r/Wk7HX1vaKpsQP1fTgy5NcaY5c5v 1kZ1KNbcKbusKU+up33mSIkREg1HMJFvdCLBjaoPc0p4PJu+Limq6iRIVHfo3LI3ZsUwVL7XOsJ wowVAAk1uqzDEK/qw+JSQeD/+9+Csc3bNPleZeO45HMV0rWh+l1rORpabuqjRec5NKRIpfHq5mw sd5TZpWHA4neV5UW9gVZ+wKFD2EyyS2sObiLW+y25BWfFsakND0Qu7kzRXy43DahEEqFImgCPal DKVixg7rc7L9rj7L5fk0xpyoNafq8tjGM0BEx2aNWL892CnatL4iwVuvrDHV/JR0R48aVSAJmFy yC+3kcwoU19FkONVISknjxj+4HueXKjBYbC1YZ61drvdnxZa34HcHDiBVAzMUwPPOQV2UE4zAmo o4SfSN4Lti44YQQ== 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 | 3 +++ drivers/perf/apple_m1_cpu_pmu.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/arch/arm64/include/asm/apple_m1_pmu.h b/arch/arm64/include/asm= /apple_m1_pmu.h index 99483b19b99fca38483faad443ad4bcf4b85ef63..75be4b4c71f167a6874e22b38dc= 7c0bf30d25a47 100644 --- a/arch/arm64/include/asm/apple_m1_pmu.h +++ b/arch/arm64/include/asm/apple_m1_pmu.h @@ -37,8 +37,11 @@ #define PMCR0_PMI_ENABLE_8_9 GENMASK(45, 44) =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_A32_EL0_8_9 GENMASK(33, 32) #define PMCR1_COUNT_A64_EL0_8_9 GENMASK(41, 40) #define PMCR1_COUNT_A64_EL1_8_9 GENMASK(49, 48) =20 diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pm= u.c index bf397fd81230007dcf52888f148e3158dc02e29d..73ba9861a15ff931b5e388b6d80= 9dedb140e2292 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -335,10 +335,16 @@ static void m1_pmu_configure_counter(unsigned int ind= ex, 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)); kernel_bit =3D BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL1_8_9)); + + if (system_supports_32bit_el0()) + user_bit |=3D BIT(get_bit_offset(index - 8, PMCR1_COUNT_A32_EL0_8_9)); break; default: BUG(); --=20 2.48.1 From nobody Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 5DE06241689; Thu, 13 Feb 2025 14:36:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457400; cv=none; b=ot9t5dWPsOPw4yMzSw1eTG0RtghJsj0mMh1+0DMgmBfR2Jgx5dINBup2h/kvI95iMUmFHYkDWvmapV8f/BFzPaM3AH0H0V/PUs8IFP+JIl9Vg7XWWWQU6X9GM6r9oB18XJA/z47lBSbsXqjlbCgbFHtjKXeNKGdxkpt2rnTtIIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457400; c=relaxed/simple; bh=Ba6tnlIzm8hDFqRo9e/Ta1Gy5uti3Gdq0jOkoUN6OGI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gm9lsUMVp202LwHoUU2Gptujk/m02uxWA+ilM3uR6KepYLDoz0hpMxH0Ygdzah2dZEhfkD3jWaWaozmKRqCBn3xjg26kewrVeRqkpIJrEsrKd7OlxOHzUmRXFEYTQ/dSWFD2wm0U+EPbIMJ3BP7wn5S88kS97/aHXf6l2D2xVCM= 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=V6TuTxrQ; arc=none smtp.client-ip=209.85.216.43 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="V6TuTxrQ" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2fa3fe04dd2so1454480a91.0; Thu, 13 Feb 2025 06:36:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457398; x=1740062198; 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=brfPicLLdkrgI41YwzQ0UGM6yUtJtaTRoCcFKs9+F6E=; b=V6TuTxrQQMbIVJIy/LYa9Og2fnimC7knW5lERJTB7sAMBjLj8wSIB76R42S9bizY47 fsz6w3yPo4M3iB1NEk4nmHvbi1lrT6vOd0jcAgsBHP3W6CVcs8aPb1eOFuvyWg0YsBU8 1H5gabnnc/2WX902pcWXI1wgNWDOuVph3ptBgda/ynjiQ2ZDkhZXYhXP+bzQ9qYTMSSQ 9tgk0S5XsREtqOV47nRqOrTMn3RkSeUpDxWCcANcvg7X9YSoab8FqE6wx3/IuGK1lJdm MO7Kmxs6l5xUVy1kVKGFf2joamzm40FuQj6snEitebfuwnCvsV9h/adOPzdhl7B4/wKF 6lbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457398; x=1740062198; 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=brfPicLLdkrgI41YwzQ0UGM6yUtJtaTRoCcFKs9+F6E=; b=XZuObFhc70csSv1U+4FadpvF5COt4+mZ34tqxM/F3EjHwF/1a/zp35vMDQ5jwKBQw8 vlsszw5tGxfjQ6uu5yomleCapvq4rEIAN0wkvxW45Z2TSToJY4eDF3YqBdM8QlMzV4zA 8jr/bR3Q/SnRNjq7a8CKRbAZvDzKAo2iDv2NxmTjqymegZcp58fnn9mybd1jyKFWEzuX j6AOSSMhzpzFt/PQFhD/BZOfqto/0x+12iPZejlSRUNUjwTZZCnd6fUqo5CmtL2kBEWy xzMlo1euRrJ2jBG0wYzWFou2MqGLu50joAe/93tCtHPbBDo8evjieYXsIxuHX5z8ZYsR 9Qyg== X-Forwarded-Encrypted: i=1; AJvYcCUSUs11hQs8z08LWf/X1LE4I1wkX8iksym+EpN1mlSw6LgvklvpDMJC2ZVawZ36GCA0BwMQbH5XDCy8faFG@vger.kernel.org, AJvYcCV0KPoz+vtMYg0H98IYnXoo61OIyFh42O4iE+q+H0KjInfmb2PqV/7X2NQ/hD42caHqvYmr4sk8+vpe@vger.kernel.org, AJvYcCVb/pz2wghzdj9f6/pdQ9lCaVD44J4txNuHGj1Q4THBHDcoMfntJ/CrTWr5U8rBlrrfIA5J4tsPn3EU6ZSB/HbRfQ==@vger.kernel.org X-Gm-Message-State: AOJu0YxN/Qxtau7NYC4+Qy1Zu/AScA41V+arzGM1E6RdTRefnqqtKvWL FEi+hexHvpp16J91BQN3suFuXCmoZbt5D8dliytsKrPptLO5+uMM X-Gm-Gg: ASbGncvnXZ7pUjkzXcZI6brbaYl3t6bZ+f53g05PzwP1jiRZ+3PlAVjNhAfp2az2GQK pe85gBss9fv4t5tKlz6WNuAQm7DIY7TkqaG9arxIkNAFFokFkLxzbAE470mcCmuCe23qKyBB5m9 aVvoNu3VtUQhzP5YOPF5oeB5CpONexx2wd30fOYEQqrXmkJolw5CKzzG7Bjm00ITOjxXNWeh6a9 QSQDht0KZz9seknNc5g/oL28OGbKefpD/HEzRZl259vDv/CGv9fFVhfqybDASfbNDkbNflxj/E9 BQi38UYEZZYkcQ0rGQ== X-Google-Smtp-Source: AGHT+IFsbySmksHdNXy81h6YvNNHE9BZZniwa0ueT3pNOciifsTo+H4RXh2Q7qtiAxq0zRNb3OkIGg== X-Received: by 2002:a17:90b:2c84:b0:2fa:229f:d036 with SMTP id 98e67ed59e1d1-2fbf5c6d38dmr10765873a91.30.1739457398543; Thu, 13 Feb 2025 06:36:38 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:38 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:07 +0800 Subject: [PATCH v3 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-v3-5-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=2176; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=Ba6tnlIzm8hDFqRo9e/Ta1Gy5uti3Gdq0jOkoUN6OGI=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNj0lJErC2qtod+ZXsZ0DIlOQ7lXM29HeHb8 16Uak6bYMGJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JN/TEACJUDyO8R4j7kouUyMBNb2JHE9lC3cKD8bqCQzfNvC76EEXAWDjU/hSOhlybaLWuX49jWz 7LUWeyJ8wa0uYH1LnXo9uRc3wkPM7jPGW03B0RM9CYNXlZEiXBmDBHXopBCGHTATsm4yBHaXBER d579EShfjFCbPX4SEGp/+ZiJJti1ou2PrvFwwhWJi/jrv2ZrbahL7L44G+YO+DpwBJwoQ2iotGr Og1pUY3cz8VtM870No4VidVKfEg0x8sarH8YA2rRo/W7NhMcdL/ZlzQdg5DaZHGQwnA8IwCuUT2 AZN0Sh+fJPPpw3DUwOYt3KzPNYk23SNoFpt09HjU6faa82HxuPSRIlDEMz9G5hO/fheW7DcaBof Bz0SEOVOzIkBr9n+llUpcgvRB5WdtLCQQbVFuIBAVef6axVN5tNmnoblxfFK90Y3tpGvwEUbCFa o10DMLnJpA+sEQrTHmn7Ooy+vtPyeXbLzOW2hf2VaEYDeaNmRE/xWuadyfx2ihCEsAGFWs7Ca6b m8GfgEGd35ODmkNC+jv5OA9fjSeU5G4cQjSLt7WpzAM1CM1jCSzAPBK2OwNLLpAvml23+xMSK5o auUNFvJP1u3PY6S6DGo3ikDQiaDosC9uQvGYW/4Gu+lEMIe0HV9CSfSzKZD+o8nc84YFfhs+Qio UPoiQr53FGZvOIQ== 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 73ba9861a15ff931b5e388b6d809dedb140e2292..b601d585d204f9e59ad7f521667= 9b97852a46a04 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -608,7 +608,6 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 = counters) cpu_pmu->read_counter =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 @@ -625,6 +624,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(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -634,6 +634,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(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -643,6 +644,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(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 @@ -652,6 +654,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(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 --=20 2.48.1 From nobody Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 8C20524290D; Thu, 13 Feb 2025 14:36:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457404; cv=none; b=MGFdpszhyGl01IdloEFh5PpMLIW1hQwfSG1fixtKYXEhj9WWACUVgzWu4Dup5L6N7upZqmMOESxydYVdB31iMMQSs0jwvexKOYqn4B76JXnJrGrlj8N3sT7G/Ip5es4QOKcP/rroXT78h9YvLLUwHdbcZGksbom/MR/jh2KJ6j4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457404; c=relaxed/simple; bh=iE2xp2YgTOHAtDaAC68OUbJ4XHgbUi4E4JAVvVKyHxE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=io9ilJ1HjnkMTH2IxIkWBcTyri1skvAcsart4brDfI74xNC7oCWUAeB+XshgQm1Un7soC5nD3KiSngskBAkYnjSbzZKIB169w/alHJ7iQd5+cqmxe96Y0zHoh4hG3t+Q+1GasM3EfTZB+DnAzkr1UOJ9O1kaO3c87UFO7QrbWsY= 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=aDdosxl+; arc=none smtp.client-ip=209.85.216.46 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="aDdosxl+" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2fc11834404so1085764a91.0; Thu, 13 Feb 2025 06:36:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457402; x=1740062202; 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=ETo6S6ORT2iqSyakXn67i15BhfjoQjDcIunaEZxDj5c=; b=aDdosxl+Jd8vLgBbfcIkVYUPMKW4Rap2FfenVlrTPFPk1+pZjxQ/WisAHWRwEyl1HL oFU+BeCt/O9JWxMoPcZbfMJRYINS/SfzH+TBDCvcr6EfLfNdaEQ9Z7WtQ6IjFd7lLvI7 M2i8TwLbEl5WUBQE8TV6EUAozM4xXcpWpxcWlHf+Sf0WHJ5eic/V+S1eOXQ6dFkNk5aj bIe2EUzg8sA9LMuf/vqImWOTV+cdF9MXwQEh+rGXvJ9DxyPTmPpf6oRM93riFK9jX+YR vwnLwgi79viwmx35xf8+9NfhlcCybwJgQmNX2NjkSI1ijLA4BrukDqBY7WK3ptWIaj9W dRHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457402; x=1740062202; 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=ETo6S6ORT2iqSyakXn67i15BhfjoQjDcIunaEZxDj5c=; b=ajHaST9DWlXOWBln+FTgSZ5xeZhjdg5vynk6vmxjzbCRagrgwUy7XQJvE6OoCMMOwQ 1JDeqQnHJy6bfz7tnpelnmQgmklqoV5o0NmfJZZHhu5g8lHCxSLFS7YgTu61CYZ2OLcM DG4GjUMYSIK8W+CXYUgenovq2yJ4HH017p5NOLiArQCl56qHLdmBgmorxa8F+l3hcBxZ paCL66I+fzeIk9knYeWJ5N/rFImMoacFCdgQ963nlO4Mtbxs4fZ7+mpqHKry3CjPymX9 Yt7frZ2I+1IEGlfYHAYdCbHr57IWFodmTX6qPn2GRC1hhHtL73opRKIjn58Htyf75mxw GqrQ== X-Forwarded-Encrypted: i=1; AJvYcCXKSEtK3tslmUazUJr757ll7MRN50xP1P2piqiPaPbcxKzPKrO0QkmgHzbELIUYRjtGo7A3xEkq9PybOeyy+4F42g==@vger.kernel.org, AJvYcCXKbS+fP8ooam/iLZ1TYX7dYorZL/4R/QeJZ6UxZ0w8EL0Zo8//bcU/tANr1DrEQyBvF5RTDc9X0jz3+rOb@vger.kernel.org, AJvYcCXXXSJ2NUp/YEuA5L149m3pUs0Brd4yO52G9BDPFTNtSJzOaa0qTq2UOCCyxdDkQqq2fPTKLyQ3PyPY@vger.kernel.org X-Gm-Message-State: AOJu0Yxf8+Uhd/8eoxZkRMU6T+Ob2NhkXlSxffCogv0tPcXjF95UxqOF Zj8rMAXtoJXu2fguKod/BN7/4yJB0pB+USEGlWyuMNqwOQr3LlUy X-Gm-Gg: ASbGncvMi66Rp4JfpNwuIyD28jASKaRRK8pfUR8iDY1Y7nPSqyzZx+z0jCzPfBe3jGG xTUlE5Nq6N8/TWOK9HH64NMwlQccxNAehxRbtwSw6mBZHhdrbKQ2NDUpbh+i9hey0ibXo+nJ7zK AAiIHUyQGGnFHrAkXCqziw4PZ6hpz6/oEuWnJ0ERdVbi/DHBcso5YCkMsRMHndZIAdHGxkxVixS egt3dw1W6KbXhqK+3Y2iNBmGB8Bn0/Awj6TJNIQbUX1zXlIO78h0uILbrBfL/LSR2rzl9E+9SRL n2jCEl6WU4meSdey5g== X-Google-Smtp-Source: AGHT+IEa3CF3xADG9l/I+QXDQmuLBL7PjfQ7ANfxCISA1TEkx1LlnLJoYyCHx4/48GLfV2Ndk0oMlg== X-Received: by 2002:a17:90b:2747:b0:2ee:db8a:29d0 with SMTP id 98e67ed59e1d1-2fbf5c59eb3mr10078716a91.26.1739457401621; Thu, 13 Feb 2025 06:36:41 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:41 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:08 +0800 Subject: [PATCH v3 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-v3-6-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=10283; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=iE2xp2YgTOHAtDaAC68OUbJ4XHgbUi4E4JAVvVKyHxE=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNjbDhtbzdgfp79Zgfkni/NzGG1fbGSOrsSO AmJLLRaXAOJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JGkzD/9bD6jLL8PywNPEzc8lwpOrCLD/8zu9VcaimsuWy4yrlHu8BNkQuw0bmSRNiZqBgiy8oqb rcrD/9ZJec3yn6/iOVZzsRPquKB1pBIqdhSSH/K84gfkTNUcGIdRnEBAAYFLQJo31Bitm6zKjq0 WIA3FGATAcNryTAG2sv0pvodOmgud0BeBarn1J/mE563IjWzuf/l4a+DyZ65bpEJ5Msjer7gy9H h7Bg0ZXGW724nVkiUAoVxcoe7rZIg9AhvtfYEW/lunzzAOjrRkgTVhnPlNxVYtbwncM1O+8tfvX 9yET4u09baq5gD0lvDkLNU4excpxFWDHzraypmTnQNByXeKp0BLblvar/7XenDXxAORDe6Ccbee VBDTl1q9uJ35eR7NfRAHy6QMu9ja2A0FLsGrXjhl2qNK1EHFaHD1u+mG2+35B5AOh0eZWJPexF7 1lY1CJidMINkO+X7EouHgxhAnDZmH8ucdM7lxqFTRNWNuga/TYJXXB86A1M9oP3ZEJ80pZH/6Cb H7ASNyNaAWE9ZrWwdli1hMC0se3vmgdnukRQZfOkrsM52cGD8lcorzGVT7a/fHDABqqCSj/P1XA 1iQn/OSGQQiz2sN9T7fX+cXHm1nwrLPHkUVR+phx82LFRfbYK3+JMHdI63Pxt8J1NV6rPnRTkZ3 Ts5YFoBAm6b7wYg== 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 b601d585d204f9e59ad7f5216679b97852a46a04..1321d775d894ae94dea76d34610= 02de1c112a456 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, @@ -494,6 +640,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) { @@ -517,6 +669,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); @@ -551,6 +708,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); @@ -576,6 +738,11 @@ static void apple_pmu_reset(void *info, u32 counters) isb(); } =20 +static void a7_pmu_reset(void *info) +{ + apple_pmu_reset(info, A7_PMU_NR_COUNTERS); +} + static void m1_pmu_reset(void *info) { apple_pmu_reset(info, M1_PMU_NR_COUNTERS); @@ -618,6 +785,16 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, 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(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -663,6 +840,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 Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 6697024292B; Thu, 13 Feb 2025 14:36:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457407; cv=none; b=LlG1PMjsmf2m0aLlMh4c66ePv45DyyFZ2x4xXpVTqyHVI/t/QkXT3gPj6dfN4LW6CSSTCeDVKVK2vG1HenMGKJ4aVor+/30OipJgD7Sshc5Jq0eCqkoRCZJ0PirqMWLtdFun6ptxb7Fo7EfB3wYsGG95u+1kCbV21hH0Pt3nqcU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457407; c=relaxed/simple; bh=UVC8FadMuB6VY/KmiveYBDZFYq6bqMSuynlpob5XKqw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OGSdK6vuD6QldWvzDHc26vXtlTIVoA5QJQN1H0SLb/9znBF1FpmeUOeN1XJNAxRjIBFetY9Od0lf1C8NW3asMiLyGzOGR+leYPakaqzaBpY1S5XXKLKd+igjECPpRMODKYkHZWyFL0BMi8pAKpelAsrH+t9UanPVIZiYYe0Zq78= 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=kNBstN3x; arc=none smtp.client-ip=209.85.216.41 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="kNBstN3x" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2fc20e0f0ceso604286a91.3; Thu, 13 Feb 2025 06:36:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457405; x=1740062205; 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=4PQgnSNlrV+SdgwGhALUTLKMVn2ip32UhoYSUOE3cAQ=; b=kNBstN3xhccp10vvlu7hwfCe/JQZwUdr+2lvdX2J/Kmp2fvhBfU9UbMByDQ9NCBy5X eHKj4Udx/ih2vVR6VK6jDA/skQoimKyxjR/M/Y6z48OeZE9zVxmaor+0Jn2gkTLlvcJ9 LDqz18w9Rwh1uGbMSTfWjYMt+/Cg4e7y2A3nOd19TMPLE2Kn3HgVrVxD6mRRWmytXhlH 2ZoeB9c7N19vWcOJUEOcVsK3tpNqn14ruU9J3uV1TDYn8pXa7ek9cEFcQUPCflb0IFC4 5wAEKEvBEEdUnALfdRgUFeQHxs2UjaDNwapJevlxR9hkDuTnn6qnCJlWmCxfOA7NQYvE JAMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457405; x=1740062205; 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=4PQgnSNlrV+SdgwGhALUTLKMVn2ip32UhoYSUOE3cAQ=; b=n1Rfv4GqnqofrOq7qAmwFeQAq334GO4g6FNS1vhvceVM7H46PtogNTfV0arzMCGl82 5CSIK1cm47Kj3se7m9+rJsnwgmHoeCwFAcVWPcspGkxSoyi+k6Tyle7LWolGzWKK0/as IM/1CV9QUZQGWdx3urwf1ppOrN+t+gfZGCN0ND5kpxti5qGBUKLiI1a9rTdE1eiB2k1H bzhKbllrmMRf3sypQMrBOgQttuONRgAr06nzjvB2A012i6u5tHlqpR6azuMhkVJP0he2 5WS6jHaUfnW9+QK6uISUtnYeWSq2BTFStZonQLsXnwIIHbveI7FX5KMUKDBdGfU07aGh SysQ== X-Forwarded-Encrypted: i=1; AJvYcCWESPyaMMAoAta2qvkXFe/csBWfwipsJgDxjFQMCBqVBh3h+ZQPKVCe6Ue+Zbr+HiYGy4a/ByhlGns2ivnDUyQBJA==@vger.kernel.org, AJvYcCWQwAormCHUATRSOqLsuKVyLCZ9evulCgm+POrXDk/CtvlCS26G5TZPY4TyHFb1MW8xzsc2O62RkWVAMg9T@vger.kernel.org, AJvYcCWeTVL1IvilSrXEaMgCf1jCZIdom9IVyGwXczAmD/ZHrXAq/QQfVrPGBVvZxwvBM8TOvYkuS8zRdgh1@vger.kernel.org X-Gm-Message-State: AOJu0Yw5b+p4oGS+Gf+r2IJBDq8Sq1Hi5fltkYcBE593tSUiHVEIjp0s se1D+Pak3og2ySFDbkCHLG74tQTPX9uLCvioaq8LMbzOlYkTCK+z X-Gm-Gg: ASbGnctVH1HWFcYoToD3x6xkr8BdS9NTWkNna8/8M4uJM6DGgXB0bclxgY2w+yfFLn4 fJTQlLM+Kh5PHXpvUpw2Sa0jEE9jgxZ+FzRmZ7LZbP8tKW9HuwtvyhhnDL7FKb+lnkgGh0txQHq U2Q/nRV3SZlyjboTiIqytgL8YAf1KW3VS66/jYSrRgQzQxKdLQ6Ac34HU05BAba4JhlI6gLn3v3 jo+6ig2bAU3Fy2bhFzS1crX6YQ0iiWUDVxwSyMhMwlsVcwVQ7s/mob7YHv/w4t7yVlhR8epKVsP DwFrrqEdbcxiQguLkw== X-Google-Smtp-Source: AGHT+IG2GDFhdjK1/AGhwvhuRX4ce/AyCuxYDNdhaWlMMrJiIQTMBsNgJLpPOUdth3mcDRkVwamw9g== X-Received: by 2002:a17:90b:2712:b0:2ee:741c:e9f4 with SMTP id 98e67ed59e1d1-2fbf5be0da2mr11127443a91.11.1739457404645; Thu, 13 Feb 2025 06:36:44 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:44 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:09 +0800 Subject: [PATCH v3 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-v3-7-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=7233; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=UVC8FadMuB6VY/KmiveYBDZFYq6bqMSuynlpob5XKqw=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNjs4m3NXEJCrYmGgNVH+xNjHsY2hU4nK9hQ uixrkl9w9aJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JELCD/0cSNEt0ZpXfSmzwZVozQ8rwVn/vyBOf7w0vAhvfKx+6LL925DG88QI0eb0+LlMjLLgGZO U1Q/0aJ9Wi3xJeEVvXgQsyohukaqxz7MH0WS6oGGG0Wm6D/1/1HPY+c9V4mSQT3ETCtU0qmyuER 72QDo1PmaRRDPcifCOVgF8zjBFoMRyFwH0WKVCy92YX04MHAhBdtJTqF2Im/ynHmlu+EzJ1pHtq o02zh6kkotnmnIahTODbtgCtRVIGuBcbqBzpTysYb7e4GAru6yuB/FIALdl4d9kzd1naWFMAbzP zH9X8AlerVa1dWYOctGpcD+dN4BfcOM2Zyg87JVkx3nyPPph8FHVqhJY/UkuM8XhBFHkeZojhsB fEQPTJZEFhhgJDVBEtZNoPRqUec6hTKOwVRDXsWRzq4jnG7eGova1aa9ZU301dxTLlHrE68F2G9 Cwz2yP/lOB10e8ej9E+9JaguzLRnNW7FjQk7Swkxd6GlaXaVGZz+smg7JloGC3py5PWuJqPaDZK fdMH9ICqE9SqEe6aYYqZXQhliB6uoRGRCttvRkixvgG/L6/Q7I/GMzVsDOaDu2O7sEZZoUOagWu PogvgT+pEMNc3Uagap2WWmtLcxKhSEqcJScHMaiv88CcaFds7U8Khpz8usjJl0aSHf/FfpFbTHU JyGAFtRo/5XlzdA== 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 1321d775d894ae94dea76d3461002de1c112a456..2f9ed8b2883913f67518484ae6f= 174a3d03b1f9a 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, @@ -646,6 +752,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) { @@ -795,6 +907,16 @@ static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(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(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -840,6 +962,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 Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 4CF2F24500A; Thu, 13 Feb 2025 14:36:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457409; cv=none; b=BzoXso+hYuakAtQnIUQmwLsAxcin/XW8/+q/UOBGuhfT8CxUlGjkS7VTOzZl+oBL0IPnLxT5ClCD16Nzm1n3EybHxCnmBLs2lY4Jc7qRzErtnCSdhPla+aAG7cJfyUj7Xg6Lt6Y/fHfTRIojmBTz3LK5W+deBTqjZJSSIs1d51k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457409; c=relaxed/simple; bh=jP5SIcv2Sg/VVBpyFEtSXMV1FvySTLQcpUIVN1vZ2J0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o90IGoEDXvHC2V+Oj87Y/lKg259jOSnZcobox6mtrtC4zG1foaurxtoksh07gohzGyZSB46IGNsaQaNXVVeWOZGX3rPlpzjILOWK8h+FfMsPS0Jf+lPnmcEToO9KkviS6JJfdursmDZRgJHxxODfs7SVetKGjQj+R+v62/rPqTQ= 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=Y2HjjMc9; arc=none smtp.client-ip=209.85.216.52 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="Y2HjjMc9" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2f441791e40so1416375a91.3; Thu, 13 Feb 2025 06:36:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457408; x=1740062208; 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=DT88wEPfPhqQKTQym27LOehc4zdehNhVFA8MHCW+/bc=; b=Y2HjjMc97sktXNxWzyFnyuXMc5lXcorVJUSjpLfCOWyQLpQY+EUZ2o3pekgeGUe2bq 4z1gJB19s0g4Us1Tssom879piqd4hbotpxP57iPGSus7yVXv3TSw4Ve/01ouR7ZDaGe/ vUohr9rfS24Q+XU7peGV0dLrxYvPDsWcoEb2CLsr7jWdyK7x5A+Dn6eNlMvpRwKnSScx t/W/KNZ9IWapNo95MUK+6XUclZvEQ80qN9W8Q2p7az3QuaSw1Q0VgwquwRyvfIF2Fefz QqeADnE/t/nW2KmfMXTo7gkrsX1TxBSfdsde9ml7csAWKXtzjEBPD+xmirknhczs0JBu ciJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457408; x=1740062208; 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=DT88wEPfPhqQKTQym27LOehc4zdehNhVFA8MHCW+/bc=; b=IroXYQidewdXjYgnGVTbeD5MCO+afV98KIE/k0Tg9Zu90IuK9JOlUouaq8C4TXXAb1 za3pSf1z0TUyTyAz02BeW/pfZEPlO+BA7LJ1ecfBHrbefb14uIf+ibKGoVne8R5jw/2Z YQ4/J02dI6NstWF6vO2mEIKJs/GaCo89WIFKTYOjaC0Wcooaq0aAETxQTi1SNYqFOJnH pWuNnpE9YicKZhbGUNILmO4V7mRc2SYW1COX8/5xVx71HqSqLRcuOe0FmQlnuRNWKIxh MrOV9PjsqrCikXCpevQPvgERSRDvRs8gJ4ksZj2fPrnsag/JesvSf9/ry1kGHR/eJ7lZ 178A== X-Forwarded-Encrypted: i=1; AJvYcCUJCOEcdlii02D1Q0IPKsCVwBYSojqPGQWGxJxpkHKJ59yCz7ZivUUPbDw8QKmqJke6hq1NFm5OipbYMCXbVRdlvA==@vger.kernel.org, AJvYcCWr2xbR7k06Tsu/9IsffhfhTUTmZ++yDgCtHNyex677xBEzodb9KwEyka2/viKUJaQ7aYrIUBQv3iFq@vger.kernel.org, AJvYcCXeXmaJ7WtU+w71sJWtoPwjKek5zNVjYNO6PpwNL0sh59V6j4cel9dPtwjj2+pegYrH0Lq11LOYugb13s4W@vger.kernel.org X-Gm-Message-State: AOJu0YweKvQrUF9aw5rfML+GLbu0yd1CX7XWm/C/38YZ1uDAoIBsnrcb Lnt/vVtXKgEPk6Idx6S6dIwGQdk4a5YCD2i7IW4H8jEdY+m7Ed/T X-Gm-Gg: ASbGnct3CHnc6MqIwQN8ONdFuXFyJj6+gTGAx5JqZ1wsKt66znnibXWv9rm0JKPypj4 Ue+snPTnO3AtNjffvbS4O5XpqvL5yzyjnh90pB/7VQfqmy2Tc4rwzwYBvKzMc/NgdsB3x39M7br pCtvvjAsLzR2z2qcxdZb6aN5ePpQ2sFAU9FmY2xGmHoLiL3UoahmLvyN35PCd9+TEihutIls+CD i7JG+2rExS0SR6kmYLD8gLyF1ph9PqT5HlFps7BAqRd/Zsd2nbMnhgwRuFhuLPnIZfpmYRGJ+Ce SCdwc40wElI1sM9nNA== X-Google-Smtp-Source: AGHT+IGe5gVeQtD1xhK8/Wxd6+hlJrs6sqvgu2aXwMpm1l1/bn/qyc+/upmSMKQjieGZYSM3Flzu/A== X-Received: by 2002:a17:90b:2b8b:b0:2fa:e9b:33b8 with SMTP id 98e67ed59e1d1-2fbf5c1cc63mr13248798a91.18.1739457407702; Thu, 13 Feb 2025 06:36:47 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:47 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:10 +0800 Subject: [PATCH v3 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-v3-8-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=6916; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=jP5SIcv2Sg/VVBpyFEtSXMV1FvySTLQcpUIVN1vZ2J0=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNjFCj+yQERB4/K1EUiZI8rkCkcmSV45N/zu YSnPP0wt1aJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JE5sD/9z6p49AbKtwxsWoGGNsbJ9dXpFvDjlTV5amzH6ojW4LBn1bSDPz34E9NhMp6+ueZJb0H+ lj8jN4vRGribRRqGMbt2PuuiCFhx/BHBDRV2hKbWr8sBY7sbBHu9G8uYH+pwOvg7MrBWtNwFSH4 6SGlibYFBT/LLcYWma9ebtVKkfoFm5dHEzIzDny/2AkHFTwTiXzq8C1nuckkCKe5ejhjX8rGOpO AEm1q2yKHid4rfTg+cSX4GkNKIXCTXmcledyXrfA1pMKVjU1LmCfq9eQZuwxmLzGEGFoanyV5Xs XafdWjF6Nl/Usn5l8ADQp4adKvRgIxuM6NIACjZafSRUtvHRkQJBDTxFk0Tmm1mKinGW3Q4O/+K 8S3Sk43B5ZFnkiROQ1Hh0kn6m7nDmaq4/XZSrXJE1wWPMAhFESso9c+4tAYA1Nje3aK2ynQ9m5e pIcfbsVddCtsyvuT1CntHqkG8ne6h1lbcwehW0lGV643mZsLNZGVs8YvxuT7NxzjJdPPg/7xZ3H M7SkZVn34tU2AS6QzTsZIG0722RK7OfuCCS5nbK1igALsqACJUBeS0Am7hhGgC0UfTx0p36x2md KrOB8Wj9sD9n83C18cn1R0GGk/KP/k0X5e8qUsh+X3/iPdlPC4n4IUQKEtmFXrPDE5Nm0XlOMRe D03aYrt7sbzzo9A== 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 2f9ed8b2883913f67518484ae6f174a3d03b1f9a..1d272b0edf30a00c603462c11a7= 101b01ed41f41 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, @@ -758,6 +861,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) { @@ -917,6 +1026,16 @@ static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pm= u) return apple_pmu_init(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(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -962,6 +1081,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 Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 86D4E245030; Thu, 13 Feb 2025 14:36:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457413; cv=none; b=lixr0jbuxz9H742TBiP7QK23oJgnZuoch+d4Bw1hD2cAgm26bsr8XhldR6FmxSni+TPD+cg8zrQ+SEKYtyj71xQTG8EIXNci0t+4ugfNKoC8+HcTCE+INZryUb1yty+rtte+uDrwRQVm/mxWNmGESehAIPwmyoAvIFtiltXC+KI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457413; c=relaxed/simple; bh=0XfNZk4E3oCqmKwhdXld0Nq7IPw0r7DH1k81dwr5H50=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CpCR1d+R+7G/WcHTm2yP+dGCbNdrfk8ZL73dGMSQkZL12sPPvX5NP66kPeCiRVXcurifwYk0ne1XkrQd7y4bnnEZUXJmZSFl0j0hIK6TdDcgomWlKpIR/DYWCq+Hr3UyOrdl00ACjzJptxHtbOwMwb892gvxl3ZzgguaEt1fq3Y= 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=L6ph/EHF; arc=none smtp.client-ip=209.85.216.53 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="L6ph/EHF" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-2fc0bd358ccso2005071a91.2; Thu, 13 Feb 2025 06:36:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457411; x=1740062211; 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=2yesMjyK/MmrBVj8xBT0ixECzfnprX8corX3WKT0k1c=; b=L6ph/EHFLe0I1IMfQnhi9zoVvu9JrKARQ6KSGNKITukg23037fiA1VP9k5vQjccvek 5ONoJIYYVhFE/vUdXJ7nvWKJUitX6feuIKLFCDLFL1qTVFQcZyqbwb0SjWtXwF83794z PGkV5JBV5UaX3cU58fQ0CsYIYakpdjjRSFh6fgbggOBgVROb8XJFQrBtIglF6k5izsdp iynOM4nAhLSJCexG91LAsB1GvCcoUfukHp8WE+mMTWRRjw6GHQxaF4fvm92SmjRCeV++ 5xKDtldP5D0dbVHCtlgW9T39bW/DblyRw9XlfTUGX6+l7B5hbTreX6Bgei8WlPYVdOO/ RVnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457411; x=1740062211; 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=2yesMjyK/MmrBVj8xBT0ixECzfnprX8corX3WKT0k1c=; b=oS10Nn8Si21xEdiut6+Rm4fl3SE5s+k42eTILIgqvAK6saonmGl1uAwwXfJzVk71ZF k18h9/7je4plmuBNzvqqPTFNZTjhwh8XudvsgQbQPQ18WhsyhmNt3iDlwW5zsNmr77Rk bKc2MisDHRvpFdwl3lsHinMYFtJmdd89qu5dS3vLn5qex3nEAXv2kbAFos8vnIAJ4Nee NhbPytzPlya+29e5Q2A4wOe4CYx6jArkuwwAMISF7HMHOFTHO7hyza2FTjmezDzDZHA2 fiFcFXGORBcKf2yMhw0VA2ftuZBmgn+7eCbtOl657mEtYfHjTOzElm7YzugtKwsdW6AQ nRlw== X-Forwarded-Encrypted: i=1; AJvYcCU8HnE8oFMXQY0Gp7ubMNRZzeaTXlFiITdBZ6ISL22awOvkKPIuqvJUB1OHYxNfj82dIrULOu31yhmDXAtt@vger.kernel.org, AJvYcCU9ROAUm/p76PcSt1+CNkH3cdcSVgPUolvLeKV1C9EYLmGO0rFMzi0YdiwmM+CpZveBqs7G93mEVaPn@vger.kernel.org, AJvYcCVj9KfBNDdJsFFuwNchQ83ekNPchWnM5LNBh9KFQ4OxaVsB79WFXMJbFGLeBoMKi1RrSts2GqTVTzF6mrbV2gJG7A==@vger.kernel.org X-Gm-Message-State: AOJu0Yw/zzFFFh7X83iPROMtgYfpOLLeRRq7+iWU2lh92bsUw5SqwRDD 5NQFwzYg3MGQDaCl5pRpmFF82VEGITWt8D85gKzqdtDiOAKot60b X-Gm-Gg: ASbGncsEu9g5UMk6TWeknmgo6/igythkwL9fQo/f7MIZW8DofLN3Xxen8L90VKF6rRr hbXhJH5tjgR1REG5fJ9CSS/k5Kfrt3lnqq54mJ3cBRVqRZuugKDeAjgut3c3Hueegli3BrLY48P exif8gssMB4IMjGghOphijPh70I2Snn9mQnR7WIh7uKRbf2YKOKNBop//4j84FnKv4As5uu/xm7 S4w1rlsRqkYhNdTqrNKoG3lIs+4QIhyxFGjDU6iBAeFAn7hP0fIQk3+P9G7ZWpceDkzAz/0iQto HG1PY1M+MhdmziZBYg== X-Google-Smtp-Source: AGHT+IE1Oaj3hEMgmsaFeZRudJ6s0bjtKY2/VoQBuDROQIp1eXoDlE3VWfmvKzyVEkmJ38ZmXLR4hg== X-Received: by 2002:a17:90b:1d46:b0:2ee:d63f:d77 with SMTP id 98e67ed59e1d1-2fc0e1c92c9mr4807607a91.9.1739457410786; Thu, 13 Feb 2025 06:36:50 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:50 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:11 +0800 Subject: [PATCH v3 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-v3-9-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=7396; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=0XfNZk4E3oCqmKwhdXld0Nq7IPw0r7DH1k81dwr5H50=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNjEdZRKMzuvmojZ5Xe6S0QtR3yGwjvvukZt R7qX4Y48dyJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JMPuD/4tpseHjv33caPSc65Y0OvJMwhS8s25VK94RZ845RsXYryjX9ZV5MNzD3mwnv+BQKjSaW+ Gfx9wSGBJBUleIOhsZxMaizh03ZgNQe1aMPYGI/kcibHWxrH7kObMqXoi+5/kNPouFl3lgz5pdk IgAbHhQ1fziAW0j31cgodDsomgeYttW+OLFnHNX0xLrfkabSgEOuyPhOPFW8Ml5BVIFA1B2NYWZ nevSXhcsUXVzzxtFtFqTkmsyEMSypZTMzPZdB5diZquXCYYLMkR7e/k+5JX++9BzjK6/FhX7nDm xmLB6qlholwI4Ysoev4dELtgqr7TZcnX2+FJOmhnnqTzwxIOgdk643mfyk0LaUr0GbqEgfNI8b7 lzneHsrtHydc2m0VlX1vS5U1ff+H8kV5mOK9a0xT43wCwphYWZWOylRSoLz3ih8rnuc4vZCQ2Z7 WyhnwNC5rRYKqoES1dpuKjgG/pYr0IfwjqDJwwx0nX8Fxqm3TOWps6udfl+CkFtAnOBU29O6Ofe ToY8RVeb59mKIL3nbEp6B1cGyRqMUN6/Oma05rQh0XhAsHdoZ/NoyD/Ohk9ALsT5vpodU7wozlv AwE23uDhWdzDz58L8AagdAsCXS3WFEyr2YCfOpLk9rXpAub1+YjNMooM58Mbh1l3+Ura+Vk/b0a 5yrbqJdk9xBvqWA== 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 1d272b0edf30a00c603462c11a7101b01ed41f41..dfead50c70ff96733e548cfd146= 0972034ca227a 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, @@ -867,6 +976,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) { @@ -1036,6 +1151,16 @@ static int a9_pmu_twister_init(struct arm_pmu *cpu_p= mu) return apple_pmu_init(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(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -1081,6 +1206,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 Thu Dec 18 20:15:06 2025 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (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 45D43214A69; Thu, 13 Feb 2025 14:36:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457417; cv=none; b=g/w2QV7q5qmZUqdmvKf92/MRg0fGC6lG1YlIQvHKHqV+KYBMnQo3P/SjipuLh5SmbGrLJ/pUQZZ9RUYpf6EuHpd4oQy3IYp0ggqT4r6IM7923sLyHIhb7N1djsbfyqG8n0nnuK75FwFlsU/vGfo5jxCoiP7YqaKnqnnuab7N2pE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457417; c=relaxed/simple; bh=IJunVYmwL089D6TxX4wmSyqxsdMGbJpOZV9APmkR/6c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bAAoXbo1bSGc4MEPORXdATrqnPg57ICQdCuG8cpmyCrAPkyt+eAEE57bDiL60qf1vYmzeIAJ9ovZtgOMDrTyOWBlL3bxK9jtGnu2R4XDl+aRf7a26VjgXEZVxE2bm9Hte0NxyZ2pDJqeZcev9WvTwI8kY5eSxoVQMKABvJ287aM= 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=O1tII/Ji; arc=none smtp.client-ip=209.85.216.45 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="O1tII/Ji" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-2fa1a3c88c5so1445927a91.3; Thu, 13 Feb 2025 06:36:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739457415; x=1740062215; 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=caxix8I4z9IE+bihgJyoT112JmV/enk9aTQhxT/hXic=; b=O1tII/Jisxk60h0X95haZOzaGsbryk3j1PdKXOk0Y37M5sQw++XGM2nRb2TYyFqssa hqYd3iQlwEFOOZS6Nvjv7ZDVMQfOgjZWwdAHRTz/QC3gpCi02WHtlL/Usv3WS+ftE4Xu j82EsgjV5br8gZkG7CZaVfEiXx3ugmgjnnyk7qWk8zAssGAklMK5kDgH2oAWSOSp6LZN FZFKpz4dyh/3gBmpQXupeSlawKmCUOKyaq6sa58lDdxB3RxBhvjkLIYuSxdi72mcnYHN OvNwz4Q215wNWt9WrlV2eP/ECP/tggvdk37hK/SCfn2qGspossD80f/PG0zKvX7WTA7y 3iUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739457415; x=1740062215; 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=caxix8I4z9IE+bihgJyoT112JmV/enk9aTQhxT/hXic=; b=xN+oUvfTqLg03YVov633QoNSvMOaFhiHZiTwyM6cIhKus29NeyRkFSwJsNiNswJrX7 j47U1S3dXa+5R+ejIgoDkSYFbzappTDyiqoLjsK0hO+ljbqK29XU/gy8OP8rGRDYlH7C RZ6kWjYPPwk/NE862zujBcPQcC8U4bNCshWZ+hFa/KxzO9Jq82Hznz18H5x3gXnaLH4F ffy+NY3SH2Iy1DlsCwqwoHjeSngdqAcM7dlCf3Un43uweLnW/yZPMOeaVrJCxvx9XURp SdOdMiRAB9FElmhO0lLeDv5jWUyTqqfyqYtG4UfiF6mX2O8v2PIyX8cDrU7xWvIruYrX fvOQ== X-Forwarded-Encrypted: i=1; AJvYcCVg8H34QWY2IrCHEkHbHUp+5avsnd7L8RPdY7/259QWYlcfZiZzE4ZRHl00w+wkbZ1gzyDQlK58/J+EV/a4olGCyw==@vger.kernel.org, AJvYcCXNIzDTIS9hrPu0Z+rBy0hjZ5CM36T18rfiC6YoW0RuCPsJFARWS/Ij4pYbLE4HTd0lbi8oI2AiupbYsI8x@vger.kernel.org, AJvYcCXNxRtHoSimrFcG9zj+t8PoU7Bog9nkdmJaewZxGlM3Es6EfZ4EO7FEgzaxlPkdyYBG5+CqEMVQMnwH@vger.kernel.org X-Gm-Message-State: AOJu0Yz/cOATDCP7q3e+RqETo0ptfoRbxSNQvr2IGJE59oAtzwJ1X2ts PJ87KBmIaGSZjnMoaJdCUBxg8mL0M2M0g9UTOjv4/VRAGU2X+rlZJFX99w== X-Gm-Gg: ASbGncueHPaVX4EWpgX3qb7nzfL2KgqW6o5XCg5NW2SJx4WQdmO7k9Lp2jHDulsw9Ee laJQpI030Fu7lMKS/7KOlconi+rirNXCTlDMHxTd2z1dTbgU3wWK8AwULPPL30B7x34tgJ66y5b BhJynf5t9uOvqhNuxhaIRXeMQrp9cSisOk+z/OXIUDVy4gmJeciHu86wqdSolOZ1V0mq5LXCVag OawRzO28+o/z0uFM2rbOoG1dml59DYPdUplS5ls6Bn6fyZSlEERyTr8uSLTLxmv0OTiOHvB3zfk 9jNcIoQHfuAZZ03uBw== X-Google-Smtp-Source: AGHT+IEnKXl3EOxbOhNeTrhJIR5ypX5Ul80U8/mj4bhHz7hj0hNqnyh5xSFH91abwBXycO7ZoBiPxg== X-Received: by 2002:a17:90b:4c84:b0:2fa:a58a:4c5f with SMTP id 98e67ed59e1d1-2fbf9133970mr9235120a91.29.1739457415511; Thu, 13 Feb 2025 06:36:55 -0800 (PST) Received: from [127.0.1.1] ([59.188.211.160]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2fbf999b5b4sm3655165a91.30.2025.02.13.06.36.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 06:36:55 -0800 (PST) From: Nick Chan Date: Thu, 13 Feb 2025 22:36:12 +0800 Subject: [PATCH v3 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-v3-10-be7f8aded81f@gmail.com> References: <20250213-apple-cpmu-v3-0-be7f8aded81f@gmail.com> In-Reply-To: <20250213-apple-cpmu-v3-0-be7f8aded81f@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=7826; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=IJunVYmwL089D6TxX4wmSyqxsdMGbJpOZV9APmkR/6c=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnrgNjGNznJWKllroUCKXWPOqAOcpCyRqdhBrpo fkQXK48brKJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ64DYwAKCRABygi3psUI JBosD/4yk6hjYSutyYcuCksIjP0tV9pPmdK7zhaI1F+5cPsfGMhGPJeZ5+iFniSLbTLHGES4CEx 5ecGulbzLQ/z/x8+9TfsSwQ1zxb5wwaz5U2bilK3CAoTspMjcxQ+j/b1sFTzieCrs0HmgVqtBdF pbQT9pG+uJPiBvZdJVvWHEIKbe5kQr7iZvvqd9HO7dJLs9+VFSORUgwv55nH4K5Sgohf6KwYSkt M/7Piu9wUO9xJgPYHQZ2XlRCdiLPW9XL3xbPqZxeFTLpwi985Whgt7QmHzsDgZkmYUytReOxQWR U01R7UwFPOgcmyyPB3tFwfC4xLLZHqOSj8n+TqiAX8PKWbDA9Nd5NMrbPpt/v8bT7SS4p2Q5fin Gx/hFZ+HyrzcAMYBjqDm+QHQAiauc3lQ/BprIP7D2MykKmimoBfWhW4JgRfdgbU5uYKcVvWeqKD ZXdp9cQgSAs92WeKMlvSUgqgfoIdKW7GS9vqVgPtEh7xRrViKGhoR5jBWjD/sAwO8MCC/URPBYi 8mpREUB390fGbS8i2evQsZKPnbq9fzCcwGAfDALoCNxLGWFVuMsJyyv6CXZQgkBEmV6iO/u6WpZ zShWUVQ6Q7UR3i59p/Jb1uC2OhJvWqY0gINYix5HlIix/P+Qup/v/vipIOSDXgBBZA/z1TTXOV2 0ahKorWRRpQvCww== 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 dfead50c70ff96733e548cfd1460972034ca227a..654c32c53e32dfe16de3ea16b6a= 69d90c4437c9e 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, @@ -982,6 +1089,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) { @@ -1161,6 +1274,26 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_p= mu) return apple_pmu_init(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(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(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -1207,6 +1340,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