From patchwork Fri Feb 28 04:06:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995661 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E1D94C19776 for ; Fri, 28 Feb 2025 04:15:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=FdYvUWAb7XTZZfCxvHyVpJfqR01oQeWoaD5JV/9jAh4=; b=NA3w9m4cWg7PnMvoKNk0CEIfqw 3CZLk6xFqGyhH+8E66MhG9dve1qZObCrMYhoX+8rGbWYS7WtHAP8XmGWjqB3ZNBUaW+FAJxeLa5QB ZHbw2ssaAt0bfVLfP47Hj6qnrsGDK4h2W1PALArZb04NfA//2vaOczLqRSKBLIhtNOdnn1lwbtAF/ ++RNFhty/ppdAQcwp0Nibd2DsJdqPwi8wRImOqoq0VW8RZZA4HvR9194hPJmhQDitZkUhYWOdrpiz K72XoanTkhc+iq/iwj5HOjNLH4cVkcaLAZSfFWKRflSWb1q7/+021pgOE+KMUEI7fk/Fcl8WC7XSv GqIb7fRA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrmJ-00000009hYg-1pji; Fri, 28 Feb 2025 04:15:11 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjI-00000009gj9-3YUk for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:06 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-22349bb8605so34129145ad.0 for ; Thu, 27 Feb 2025 20:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715924; x=1741320724; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FdYvUWAb7XTZZfCxvHyVpJfqR01oQeWoaD5JV/9jAh4=; b=AjIboLQvmR5Hvik9JkaWCd8C6BFTo+NXH2WCFfcoHTu+CqXhGhdL235/JNSh9e272C N19kqjkLXpxTf6pNSZQAE5XfwAHj1iv5cDY4+WMdPvB7i3JqrazvysliKZWxuvvjbDZj fcelbDFKbhkZkgB+nq+hMsGYfmO+UimkJlhM9C0Vj5xxPZoTDGIq4FomLVDC7wOwpAD7 DodWFshZk7Of2Nx8xg5AQ+N34YhLy9+dOe2GiMayG2drPF6IciHy7FIS1Zj/cH2+rbiu ETiGOF6ppHjl3rRhbSzYAneargJl9fC+O/6hPHw4QXV3zjIEgWbGduau+OZD2tpZ18aH HvvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715924; x=1741320724; 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=FdYvUWAb7XTZZfCxvHyVpJfqR01oQeWoaD5JV/9jAh4=; b=TQmEpaWMMbNxC+xHWclYEBVBL17eD7z/dScNfI+2g/gf9eJjnW9nwROoumuw5YkF+2 74fDbPvBUeG8OcuWuUyOU3WEevUROb8oYTZXx3r9npGzjpAirkL8PRpwSTfvYvUCOJvK Kxu6zqj4G4cGU/GaxAfiOpRUK2c+AdNUTO1YqKoXWBbFj4sWwj4lnHXaNXTJmvUD9jAh CF9V9xiMdfKbVpodTCvlmirUvd1b/i6xyBPWTdfFmheVe2ApSZOnXs7yZlFqv3eyiGfs prgDIYD3YO60VJR3RZCiOW9K7jLP8UKYfPtR0u4zmeJMEg7Z5dROmPrlCjZxDeCDo4Fr NMew== X-Forwarded-Encrypted: i=1; AJvYcCXDFsJdLphZF0vhJmHwwdDw3Qpyr1M4ty6UthWHed6/eMuSee8+L5z5QBmFxVaVB1S2X0Zqq2aGCHo+x0eQV9/v@lists.infradead.org X-Gm-Message-State: AOJu0YyoBdou7mrR5SCS2PGjjUli+YmhVMlqIE2NJ4lMIcdci2M/tERs /DpXITQGAvdya5JhdGt9l7NATNmUiuIAe9HNE108dmp3ZlnWpER7AcLiMA== X-Gm-Gg: ASbGncvi4Dd0JH9hVDe3oGXdkqvYelbohUr+zDTOV6GZl3UQEmDHPc/miSVJHESH6mI uMvqLqWkW9FjndySPXRO0eehgudzNZpavfealzytmkxC6QGe+ntoMOojlz4ef0V1N/dsqhlhUCN mi3GdRpDlv4HsJ3Ry1ppzSUTIzNFNCKAQSwKw2T+mN00P/Vies0v3baFxW7KKpAxvQcbEETFDeH QujsUqZ5L5uz+Z+o+Ed8zSeJdLSkTZyjGFqbIpSr8rVwBzNyQB92njLvNea6pw12HnuF76kJi/6 KhLmvrHD7iw9Ow5WBOfNh5VYkgY= X-Google-Smtp-Source: AGHT+IEZUDDAXLavQwDXUSG1W13QFrekWn1iP4y3s5pFZHode2QXMI3+ncgQHGdyNcHsE7wI8qqVmw== X-Received: by 2002:a05:6a21:9988:b0:1f0:e4e7:ef7c with SMTP id adf61e73a8af0-1f2f4e10369mr3442876637.28.1740715924154; Thu, 27 Feb 2025 20:12:04 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.11.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:03 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:41 +0800 Subject: [PATCH v5 01/11] dt-bindings: arm: pmu: Add Apple A7-A11, T2 SoC CPU PMU compatibles MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-1-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@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=1106; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=gbMJbPuP8ggCUDDTugVSbzAiMEjb5T+FHE+EE/UhRsE=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeHIP4AdceqgfqxLnsvMGDhSyXATgprKvgaa Qf2+iYrtMuJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3hwAKCRABygi3psUI JFzuD/9gYz+RAoruClJw73GI5SFqh8fyk3LiF5737RSNGLV7U/CDN+EykGjIgKhR4GgDqsmkw+r tliJKzZf2aWdpvqNlHBnOLA1rd4us2L0rYCv0a0vQk2tL2uFIwcLruKJuYZKRAX6ldZnMcixNHB zi07woYDiS/gqHtxca+5BHc2Y7EJLz0XGAOKuwTK13SNtXJTrGnadJbs0NyeiPwMZEXlpCUJii7 BrzGnbE5r1eIir0kPNy+Vfq6NW630pUeCgeuN5eCpoNZ19hNSkzi2Zh1t/ayQwEu0zvj9/8h79F 4OasT7nq9Dt3fIHNFklDSUihpGVOsb45PQxK5J6oCAje6EwCbkmsP7XqqzJ+gAIriYaA4ALXaRo CAtfDAChnIQ0zB0ygioHtykCJcFnn5uofSppoa48y8sLRYPpc93+zZ5JzRL3w9nc8Eem+hpeFKL YDaHD2svRQnItWmAbTv6M6iObzf0KtFTZfHAYMvc1yApfdYtaHaMpNsHcH8TL8NsO42j4N7IG0J zfpyzSVZ5cJU3G1EyZmc3g+PocymlIVkLoUYODskLq3iXz8svgNkRhUcjUm2MassRUVfxxJyB/n wiiA3ddz0cJ+Dc5cltKtfWF4OQuGvGCDQN2a05PayEUv0HXhb7oq68dgYrMhL3RcrYn23kByQBi PjJvDiA2PWqdHPA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201204_890845_8CFAC9EE X-CRM114-Status: UNSURE ( 9.10 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document the compatibles for Apple A7-A11, T2 SoC CPU PMU. Acked-by: Krzysztof Kozlowski Signed-off-by: Nick Chan --- Documentation/devicetree/bindings/arm/pmu.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/pmu.yaml b/Documentation/devicetree/bindings/arm/pmu.yaml index a148ff54f2b8a92fa3fcfa78c1bcc525dba1c6dd..d2e7f19cf6a2d7d2348d163d37c2787c7a36bbd4 100644 --- a/Documentation/devicetree/bindings/arm/pmu.yaml +++ b/Documentation/devicetree/bindings/arm/pmu.yaml @@ -22,8 +22,14 @@ properties: - apm,potenza-pmu - apple,avalanche-pmu - apple,blizzard-pmu + - apple,cyclone-pmu - apple,firestorm-pmu + - apple,fusion-pmu - apple,icestorm-pmu + - apple,monsoon-pmu + - apple,mistral-pmu + - apple,twister-pmu + - apple,typhoon-pmu - arm,armv8-pmuv3 # Only for s/w models - arm,arm1136-pmu - arm,arm1176-pmu From patchwork Fri Feb 28 04:06:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995662 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CE98AC19776 for ; Fri, 28 Feb 2025 04:16:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=gkkjgIemecCpniALvB/tb0i2uT CDYwQrvyRP/J8/9sMYSyoBmgdOSkPvmuKwowzMfFh1fMDkXRNXlGoRsEzDEjnrOCpWJuAtcFd4VMu aNfnUxEktnj4GvsfEUXvztdplnfONopkaF4YJBkJCzA60xD4bMeC4C+7yE60XJNQPLroeeveBa+hs 4TJZSOzkAcpkYTMugsIBupHJ9VmBvFjpprE6h10CAslVwIM1a8cKo0OivOnODpphylOBxBkquUbjJ 076+9YGNw3uy+pbj/f2cbYjgUN6z5l1DdxzzlICuBPAQu3tKJq/L319PR9JmRrFsW48gnhYgF5meO IFOHl4UQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrnq-00000009hs3-0Yv6; Fri, 28 Feb 2025 04:16:46 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjO-00000009gkV-0miz for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:11 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-22355618fd9so25880175ad.3 for ; Thu, 27 Feb 2025 20:12:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715929; x=1741320729; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7l6OBjbdguvzVanhyg5QiPXwRgVYnvgdyH/pw82tHlU=; b=iT+E0eOsBLq+FWjnTGNkh/wSrxrRS1Zv+Lh7uUa8RgaBsgX74Ow+JR05nvj71/VmAr k5HCBhY0DTGuCULHYWEcazkCv5BFpTM2P8sOlFn1ydJGMr4afhXpUXVak5w0AiMZ7FOv 1vhMZwNvuCNlDYtxgGCF+jqcaeGQg6woO2T+G9G5OSjOyQcDxKrKixph2lULEnLFRx/z rknmJWARxOzFxcpL8r/VarmtMOhrM8oDMoLsIrLfBlygJICXY8jPExsQEewU1kxyo6cx 0yKFnLQ2K+h1FXSIJnIN8qvrOtwqcLVvH73nU8nN1X7Mq2nQElewDiv5zZmL4+AAGd0t WBmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715929; x=1741320729; 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=bPr4vyeKVwJCd91U7hk1SeEVIVYjWzWBtTL1Pg2sKcSC6OLZyNBonP6VnnaZr8cmMX lyqTYoZ+R+BEItYYmmsFeuY6uPdkzgQUoIuljP1I87OwhLAMkjySQMHuYMEJ7j+erqmt WDF3f8t4JpbwSSM1ffVMDw0867ZGZHUGCGLll7wHBtRa8i8WwAp+fGXB29N9r8WJ8G42 jV/V0Me6a43YGwp4XpTOY1gbyUBy8CpBhsrAr6jQHQwafrdh3kSmpiK5qeqtM+O7nNY9 7ymBHEzz2uB+agpBYdEvHjss85QSIRq5tWUjlNdj9mHhik/L3AuOVZp8icLOeVnSsG+h 6LNg== X-Forwarded-Encrypted: i=1; AJvYcCX4s3IfXatgYvXtXFzWwYkhAIvYMiZe3O+w0CorBRhhY5Nlv5WfMhQ0Dkxn0zh5IcyEFvzc7LHq1w6//iJjVlyL@lists.infradead.org X-Gm-Message-State: AOJu0YysaGBfsEmitFiQbfy0vqLY7Z+sbTWqz5uKIUchCMZU/8d6SSlq llP5RkYM2mMG1uIjwASvQiFOjiwaxFJAJ7/B0EW1+oFK9OMhpqXH X-Gm-Gg: ASbGncvWNqg9AtVA3crDyBK8azYT4lbRNg/GmRF2niRWy+eccMLy4OKNLZVKhHE+KOe xyG8s3qyVq+K9D7Oqg6eXUHunfyPA54hPwKhkwBB/4E6PNKsjFm0RzsmUMFimEsj3d5b0kxMDOS VjrTZZELAgct5XuTrJMJbuu00ot+mSp0FVQOzBwVerEtPZl6IMpIAYl12/v2UDMF5KyYwfE1Z3E kkV1h0ALB+p5rvkYx2i8QjcLoU7EMCKscB3omEmi7irdK+/yA6p0ZmboHdIM8N2IcuCp1RLTU9o nEnY95y0KRMXeNhg9T0PrdSQpSs= X-Google-Smtp-Source: AGHT+IEYDQXIbIUl2hA4mQuIhbcCAjga8Xha/YZWkkdwnPtEP1alrz7wepIj1Qzk+976osnHuTy2ww== X-Received: by 2002:a05:6a00:84f:b0:728:e906:e45a with SMTP id d2e1a72fcca58-734ac42cf9amr3499439b3a.24.1740715929284; Thu, 27 Feb 2025 20:12:09 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:08 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:42 +0800 Subject: [PATCH v5 02/11] drivers/perf: apple_m1: Support per-implementation event tables MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-2-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@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/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeIlNpHaNLlhhgZedgrNR6t68Y3sydP5gJ5+ ljYARuhnNmJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JPGzD/wKgqCzV5ZnQ85NmEg/pVw1MVnRCA+PrdZeO37Pd5acoqcah8YEn2aWYYSSIlzWbJDocPg XMMjleWGaV5iHrCuV6W4NeDn3tuU0lv/9ENekmf0NrAbQOiFO6rvA+4zabdUS0tBk28CZuEIepR 9RRO6CAqB3j+C5iVNc2LgxSlUyQeuLjx63ObExJrn8uz48sl9B6YjTo8nsXZGUBNH4m0tz0NFWS yHNhHD2TjGg4kzVeHN7UjkEx5RtyQjmIrN9kSRVesUdWHH75XWSyW4M9WfPPSv2uoSniPSYzmf6 b3s6BfRHQBY7r8qxFzWujHarI50eADEDttFO/bsfKNoNvl2944xJNpT+aoxyemVfL8+fwC2+b0f N/t8F4m/IxS+BWrcM6p19NaQLoOdTZ27EjLvPm8y2A196sFAPzguEkKZY+rQ+QdMjk+xAxqINFF AIeeKNUOP//ubWc0ijZN+uq4WJSDUmGxFWaHB1uaNLgh10zk1j7acC3s1uMSsKFRiKWpCw8HLaF mfH+sB6tav8ZkEpJHE6wW1hfK9QeI7iRNmti844sjYHMv+6coFXS9n2MLWFqoDeW/mB0KLt6Wz9 fsOrtC+cGKNWTQwYYpqYNkpMurIcc28Tky/6eni1+eBSf7sOkn/vTDSqaniJs4CA5DlLv5pncPb mIKs5zLkFno5Plw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201210_232339_10F47CE1 X-CRM114-Status: GOOD ( 17.20 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Use per-implementation event tables to allow supporting implementations with a different list of events and event affinities. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 65 +++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 06fd317529fcbab0f1485228efe8470be565407c..dfd5d72ce9f3c5bebd990b5df6a6823fb7785cce 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -42,9 +42,6 @@ * moment, we don't really need to distinguish between the two because we * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. - * - * If we eventually find out that the events are different across - * implementations, we'll have to introduce per cpu-type tables. */ enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, @@ -466,11 +463,12 @@ static void m1_pmu_write_counter(struct perf_event *event, u64 value) isb(); } -static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, - struct perf_event *event) +static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event, + const u16 event_affinities[M1_PMU_CFG_EVENT]) { unsigned long evtype = event->hw.config_base & M1_PMU_CFG_EVENT; - unsigned long affinity = m1_pmu_event_affinity[evtype]; + unsigned long affinity = event_affinities[evtype]; int idx; /* @@ -489,6 +487,12 @@ static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, m1_pmu_event_affinity); +} + static void m1_pmu_clear_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -516,7 +520,8 @@ static void m1_pmu_stop(struct arm_pmu *cpu_pmu) __m1_pmu_set_mode(PMCR0_IMODE_OFF); } -static int m1_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_47(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* * Although the counters are 48bit wide, bit 47 is what @@ -524,18 +529,29 @@ static int m1_pmu_map_event(struct perf_event *event) * being 47bit wide to mimick the behaviour of the ARM PMU. */ event->hw.flags |= ARMPMU_EVT_47BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } -static int m2_pmu_map_event(struct perf_event *event) +static int apple_pmu_map_event_63(struct perf_event *event, + const unsigned int (*perf_map)[]) { /* - * Same deal as the above, except that M2 has 64bit counters. + * Same deal as the above, except with 64bit counters. * Which, as far as we're concerned, actually means 63 bits. * Yes, this is getting awkward. */ event->hw.flags |= ARMPMU_EVT_63BIT; - return armpmu_map_event(event, &m1_pmu_perf_map, NULL, M1_PMU_CFG_EVENT); + return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); +} + +static int m1_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &m1_pmu_perf_map); +} + +static int m2_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } static void m1_pmu_reset(void *info) @@ -572,25 +588,16 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) +static int apple_pmu_init(struct arm_pmu *cpu_pmu) { cpu_pmu->handle_irq = m1_pmu_handle_irq; cpu_pmu->enable = m1_pmu_enable_event; cpu_pmu->disable = m1_pmu_disable_event; cpu_pmu->read_counter = m1_pmu_read_counter; cpu_pmu->write_counter = m1_pmu_write_counter; - cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; - - if (flags & ARMPMU_EVT_47BIT) - cpu_pmu->map_event = m1_pmu_map_event; - else if (flags & ARMPMU_EVT_63BIT) - cpu_pmu->map_event = m2_pmu_map_event; - else - return WARN_ON(-EINVAL); - cpu_pmu->reset = m1_pmu_reset; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; @@ -604,25 +611,33 @@ static int m1_pmu_init(struct arm_pmu *cpu_pmu, u32 flags) static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init(cpu_pmu); } static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_firestorm_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_47BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + return apple_pmu_init(cpu_pmu); } static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_avalanche_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init(cpu_pmu); } static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_blizzard_pmu"; - return m1_pmu_init(cpu_pmu, ARMPMU_EVT_63BIT); + cpu_pmu->get_event_idx = m1_pmu_get_event_idx; + cpu_pmu->map_event = m2_pmu_map_event; + return apple_pmu_init(cpu_pmu); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Fri Feb 28 04:06:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995663 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 438CBC19776 for ; Fri, 28 Feb 2025 04:18:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=KvCS94Bsl51xl/vw8zwVDvDX0S NIqXvcBXsCaqoZSaoFXa2Nm6sN6Q97OpMJAvZ7bOjyrPCMdYn29D0UyuFWV0mmIvOaTEo1LFPwmnu YVsZouseQiD0ecpw3jKYKUh4JPJYju4Uc6W50AFiIjGZpn2MUlAPhXc7ZxAGsophYzq00LHzOyEBr cctpfvcIBBxtdGwYr/f2V9XUaXSN8G+naOVwMK1zwoDbTRQHy2LOa/P/9bcMMWwoAvImkuFoWd108 k4kODol+NFbW3NGyA0NSx6F4hlGnSQlH2lqtYOAkikeG0chzRhUjWRsn6atsAUAMrfHZiwl0RpKU5 PPhM3e2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrpN-00000009iGF-3Dea; Fri, 28 Feb 2025 04:18:21 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjT-00000009gmF-0bOm for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:16 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-22113560c57so32743505ad.2 for ; Thu, 27 Feb 2025 20:12:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715934; x=1741320734; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=zfW03x8PctsFN6tD/weQNw1AxZpgTS9cl9FMFO0QxSU=; b=hgGl1R3OyRToTBBIMiVcXIaeH2q3OA8hCLhQBDvBX03qwClIVty4fkPJclj6gFc73z SRGshlTtVGZm4Bd3Dq0AjYRSEEZ3OtZmn6KPSQNFlLaUfBGKEgAEPfwb0p8RAVqsCXFE PTszDDz1szZ0RegjziTSeWXVc0XH8v1IwOtYTo3gQqubtnmiZDG2i6u+fOOGjexee0pU k199V9EzcznfpXR1Gq9RyluXmruv1/kQSdXUZe0kbrlvrRgqhUIp/B1+kVjqAWyhhiSx GhHVMgE6Wbrx0qyFxo9syerIBEAua/7uTv+eWFoBaLoXETljssVnzax+trGZ3ZKjlcIT vJwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715934; x=1741320734; 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=NK1UPRgyFpHxsUOOtKFbfe+QIJiZ/s1P+AUwQEp37igBp2tHEmzNrsB49IVhLJF0PC vU0auP/tBmeJTv+nh8UDH2OsCfhP/yWvyKE45W8TaGFtPwKsZLs7uaJ+Dne/HFEujyXx yI+P6IHP8MkOHl7Eg3l1Bq746WUgoNewY7jLc5d3YH+m8hRMxq2YKm3Hamw4RxuhYXoc /FRAvELS7uF3tNF7TG16ZyRX6if2MAZBvbr7ayUAkU+XHdCFJhjK138ANXfX2R6vxeLf hyHcXP7fOIVUninyWmb6/6kG1HtXh2Pw1tnhQl62lssxdrx62IfRtyXzOl7VbgZbgIFk sl0w== X-Forwarded-Encrypted: i=1; AJvYcCWprekYbxQzDvY/fYixA9ENcNSw3bSSesZr/Tl4HfAJ6JRSMah1JdrOgtZR5mwuLsKa/w6QzRKHbfZMvRLiJZWh@lists.infradead.org X-Gm-Message-State: AOJu0YyIhAOMJKLtSe/lQKzGkSMaROM9vemhfkwoSFk+mUrNRuhg6Hgv k99IBNRRag/o045VFT+UzzI5WF9jecCQ65MSgVW1RIkncmh9wU7w X-Gm-Gg: ASbGncs9E6MHAX2WHVckbMcjNaF8T+CZICHhyLVy9Iwlzm8Eln4Lk31Eyn4xDodfqQJ KxAUnZF7fuXSJjlhxhsH7yjhVz8KdAW2AGaFGYXA1C0dneOp7zKpwVpRevVBvZy5UbvURh2b4nG kGK9lxi7wLzxanQdZ9pxM0lHzZBZU5SrnZ0VsLJsqfoH27zwDzN2OnYJBXG7kYXzfrxP2zmmvnA Uph4Vi9tS/LExXPrF+catZDPocdkYwtPYPsu0wUYpnGCjxu6RDoQnh/oVnRwSeWRzgX4qdmC+ke mAKGbyhL6QhhfDGaMKh1e//UKps= X-Google-Smtp-Source: AGHT+IEwr4kr04bIVs7yxEwPvsivOao14b1Ljx0gKtW/fUtZRRHL8X5NReKqX7YpC1WASfZQ3srxiw== X-Received: by 2002:a05:6a21:7109:b0:1ee:d8c8:4b7f with SMTP id adf61e73a8af0-1f2f4d22894mr3081917637.25.1740715934384; Thu, 27 Feb 2025 20:12:14 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:14 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:43 +0800 Subject: [PATCH v5 03/11] drivers/perf: apple_m1: Support a per-implementation number of counters MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-3-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@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/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeIOasDWrMTBSApTELuoEHQZSDxKS+Bp3qyw +E8oAk6D4CJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JGf8D/9fu+FvT8c12d1HIjAx1p51DiBewXXuhvcmKT27E2Tvzx+XXFnCgVM++gG+uv9XqZBnX+U Yk9Hr3faLWv3ih7S4x42iw5SOa3grz96N3tE1mVdyIqa9mWcULt0X9vacp/ChIks4TBPbnTq85J XbZ1nRKD/zwDXTtBMjDnLaHYUHrOekDJeqwzNJY2PpAeiuEIPTpZOhl0ci8gjk9ZDlxtBjqpTYs GlhjRQIrhCMwlq1KPvPaaSLDkfAdO5kR4BB9+ccHienMvxIMv1bukPc075Gn79xK6iwrb0067mP 6s6ALGGRlOb4sUErDu86xF8wyYzZugDv76G1gpyJ2nwKehQlxCn1SXEoVTghqveLb9/p5x3Btf2 x6IqKyPlfA8H6NDPiscONQrXch0hJjT18YEPFBgZJVacqV56+s3sHj6IQnWzNJkgYHLY0c1lcQG q7rLBYSbp7AmwSkzQimlJgO/LyJShIw+aunLa83nNcNZUagWZaAXTdvv0FTMK46Hpn4d9C49HNe UaGabHlNGbIKddEyK8A+mjOcmG64hfIMX/c9EVVzSAnHdUxwItXciNABSYeJj+Fn5nMX3mPS2i/ 4RhWX0rcfxGanOuy4BGibH34eR8rer96v8XbYNfpHfqhTLKRrBDzp2UsWJ6Mlvg9fwW2eilQ/Aq JVNuIxu7gy7pGXA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201215_191237_0851C578 X-CRM114-Status: GOOD ( 15.97 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Support a per-implementation number of counters to allow adding support for implementations with less counters. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index dfd5d72ce9f3c5bebd990b5df6a6823fb7785cce..bf397fd81230007dcf52888f148e3158dc02e29d 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -19,6 +19,7 @@ #include #define M1_PMU_NR_COUNTERS 10 +#define APPLE_PMU_MAX_NR_COUNTERS 10 #define M1_PMU_CFG_EVENT GENMASK(7, 0) @@ -431,7 +432,7 @@ static irqreturn_t m1_pmu_handle_irq(struct arm_pmu *cpu_pmu) regs = get_irq_regs(); - for_each_set_bit(idx, cpu_pmu->cntr_mask, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, cpu_pmu->cntr_mask, APPLE_PMU_MAX_NR_COUNTERS) { struct perf_event *event = cpuc->events[idx]; struct perf_sample_data data; @@ -479,7 +480,7 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, * counting on the PMU at any given time, and by placing the * most constraining events first. */ - for_each_set_bit(idx, &affinity, M1_PMU_NR_COUNTERS) { + for_each_set_bit(idx, &affinity, APPLE_PMU_MAX_NR_COUNTERS) { if (!test_and_set_bit(idx, cpuc->used_mask)) return idx; } @@ -554,13 +555,13 @@ static int m2_pmu_map_event(struct perf_event *event) return apple_pmu_map_event_63(event, &m1_pmu_perf_map); } -static void m1_pmu_reset(void *info) +static void apple_pmu_reset(void *info, u32 counters) { int i; __m1_pmu_set_mode(PMCR0_IMODE_OFF); - for (i = 0; i < M1_PMU_NR_COUNTERS; i++) { + for (i = 0; i < counters; i++) { m1_pmu_disable_counter(i); m1_pmu_disable_counter_interrupt(i); m1_pmu_write_hw_counter(0, i); @@ -569,6 +570,11 @@ static void m1_pmu_reset(void *info) isb(); } +static void m1_pmu_reset(void *info) +{ + apple_pmu_reset(info, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_set_event_filter(struct hw_perf_event *event, struct perf_event_attr *attr) { @@ -588,7 +594,7 @@ static int m1_pmu_set_event_filter(struct hw_perf_event *event, return 0; } -static int apple_pmu_init(struct arm_pmu *cpu_pmu) +static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) { cpu_pmu->handle_irq = m1_pmu_handle_irq; cpu_pmu->enable = m1_pmu_enable_event; @@ -598,10 +604,9 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu) cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; - cpu_pmu->reset = m1_pmu_reset; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; - bitmap_set(cpu_pmu->cntr_mask, 0, M1_PMU_NR_COUNTERS); + bitmap_set(cpu_pmu->cntr_mask, 0, counters); cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = &m1_pmu_format_attr_group; return 0; @@ -613,7 +618,8 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_icestorm_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; - return apple_pmu_init(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) @@ -621,7 +627,8 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_firestorm_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; - return apple_pmu_init(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) @@ -629,7 +636,8 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_avalanche_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; - return apple_pmu_init(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) @@ -637,7 +645,8 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->name = "apple_blizzard_pmu"; cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; - return apple_pmu_init(cpu_pmu); + cpu_pmu->reset = m1_pmu_reset; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } static const struct of_device_id m1_pmu_of_device_ids[] = { From patchwork Fri Feb 28 04:06:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995664 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DDD5CC19776 for ; Fri, 28 Feb 2025 04:20:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=UfFKTCH4szBWms2tE/L4vJ4gUH wxoINbbLetwNKPd5s478P2MyELZbExih047HAt/AXoWiw3NiD8FGdj8pgwCCwosB3d7K9BOzLFvmc iCjfoUIpnTohi5RhLdXkw03aKQUcfM7jjvgTV0Eni1R4j+jnKwIcYA2s8uKDZkUSDp+KnCgcsce4G m8d3tYdHSNbrGqYa+JUX8UBk65deySKdJ8Rsgl9yKAO8htEx6fd/Jtxv+fED28EIX/yI1Koo6Kl0G 31a2hpO04AxAjwuhSMHY0/Y2R76V4HmucNaRf+pCHoouCxMBexQ5rccvX/Wg2XCjVSsbJ8s+xxcrh 4cLrY5aA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrqt-00000009iPZ-22JV; Fri, 28 Feb 2025 04:19:55 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjX-00000009gnI-2U8L for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:20 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2fea78afde5so1942058a91.2 for ; Thu, 27 Feb 2025 20:12:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715938; x=1741320738; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=BbWzWCt8OHucPUBoPro0Zk6O9SHBNwoLoq7UIHpho+o=; b=mIo7z99EiomC6YvxfTy1zCSRUcOeXKBSj/UcVK669IAHZE20XECmGVHyOoa+vkUigI aBcX2ZqTR+3LCEW6uHrXarLkFol5RNDsWQ8HHH3kFLvBl5H943cDoTmcNXkPIUWhOYdZ xSARv6caMVIy1r66Dx0dDrCSAxZgzzXKxAGOk57Iv1RfGb5/V/WHBLHMxM9xLg5h3Cs0 VXalS0ie94uWgWKRWkKeNpXe7uSRalAzpeDomJbK7SivbadRXPaEtIl0bHbSKt57Zojl 8R/pH3k5yHyyUKA/RTmGoQOldQo9MFDeP/dCPTLYTlTj3nqbuwN2OVRqjSKRyg0Vuw1w 3AAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715938; x=1741320738; 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=IGX69TsbEtOmU7yc4BgbZaMzCz/Isw/V5HGppTHAhBsI/HAae9sS6cv6Von82iO6s9 Rvk8oanWw1/ezf+btyrfPxQ0QJBuI/+ujjOG/qUeX2sPfj2sv5IoQQkUum26hXgxf4mR Co2fTZo4PHWPTPkHZbz87vEvozdyqs7VL7Ry/mcIibcwP3KewKysu9vdqzi8T+/utuxT Gq4GXa4df1P8XJjfoqoDhVgCJDFYSXau70AwWCrLr6wcQJOeFkCqnTvGmG0VzRuxGiGs bOo99wIBMhrtA3uPcySrxOPa2wN5131aZVWSM1g+jTZFekVdHqrBD8XePFNqY8fnQm2W Q/Fw== X-Forwarded-Encrypted: i=1; AJvYcCV2nyRi1ePe/vBZWjCIVX4wtTYLNH9098x69ac08NKBa50vWhKHnHbo78kl0GHlWRpNxVng9LOyRcTvbuRl+JHf@lists.infradead.org X-Gm-Message-State: AOJu0YwTMgwN2+DhKBjPsMwGV11IwbMK9aI/zwpm9PHH9xOjPpCSIjXZ 2kX44e7D+9tYqyE85Ku6xGoSJ3ms3vnBrAz1Q7ugykd0sU3sY+tm X-Gm-Gg: ASbGncsBQYq2IdWzdgh13+rwjxm9VkSQ8gx3bHBXJfE+oveFLlxLW/OqrMF2zmPZuPY dfw2Tl4w9pkw+gaTBAtha0JK0/Y6HWtG0EzN7SSJPD5cISRnL0D0pJWI24mPwhH8mg9+71MjasO aMfyilkErayOSKky1dX3aD31xJFjZB4sT8rt7oaBOMlIE9T9fTLMifEqekkKa2heQxqP20kPvAR 7u0loJ8h8D5L+RFVXh3Gf/J77/6m2v/gFt4duS19aINlji7CWCmdt8LxmTaJJBqzkBWEF6M8Keg HOXPB5T0PJaVpfyiiBjgXtEGy8s= X-Google-Smtp-Source: AGHT+IERIaw8yIvvI33eg2OCDKzSmy+Yox7h4/BTE5+0YIEmIign94Y8U4E/+SpJ6o86g3lwvdcsDg== X-Received: by 2002:a05:6a20:431d:b0:1ee:8c93:c90e with SMTP id adf61e73a8af0-1f2f4cc0cf1mr3018964637.17.1740715938561; Thu, 27 Feb 2025 20:12:18 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:18 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:44 +0800 Subject: [PATCH v5 04/11] drivers/perf: apple_m1: Support configuring counters for 32-bit EL0 MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-4-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@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/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeI2VdJZOOjTGE9uIIIQVxJ8i1GHE0hgd69/ jSxub+VqWKJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JKhsD/4/WmSMYbZ81VnJK3jgPs6enyxsl/w/5aDOv3Ne9UxU/40ChBvI3uieXq584y5AYzgd58p nz/L4FqUSQnWi+PC4lXn/kAENM+8nz8GsanCS1KiSBbfAfdjGJz9crz5LhFqgbwOLw/Txm/zQBn EvOIuSVo1pTEFRASfM46dpZ1j+YmGiCcsU4U6lwjUkEg4dr6h3Pf0D9iXlA5+FB0iLrzmIrRODX qI5pJUPnuarEf8eLXUa1Lrup+oxmy08SrY70DOZkGlr1qma0idQJ8JgLb9dD3mnRvVnKxGuSnhh 6JDUAenQXIMo5EtmFtLlNvVDVH0Jgk8xZcSzbgHYIMO9UUTv/KW9ju9+fR7eeYsmcAHzRozhBEM OOySpBt+OVu6XbNIjGfvJV/odKS4BuWTuLDiwvutUjpqhhluRPE70rmQepFNmOs1GY3JBrBmi9g wmXQy5IIfaY8okhNXAlDvncOgmzwkK760qhTRc9zH0Q/t3Zb4VVR9PMBOeo+vnvoLnfv3TrUQmo 0hQ57nUydTqyOq79T5v4FmwggG//1S16qtkxAGpHcG38X3OSh2g6x6wUY7e3sCEYKf9JNSdjfnI vYd5sJEt3ogAIIoQkOjsNujN8XNZow+rldB6wrwglmZPJxfNIaHn9cUL9yhQt/MShu3NA3QiUip SRpeluoRzf9LJmA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201219_635488_8C7D3F08 X-CRM114-Status: GOOD ( 11.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for configuring counters for 32-bit EL0 to allow adding support for implementations with 32-bit EL0. For documentation purposes, also add the bitmask for configuring counters for 64-bit EL3. Signed-off-by: Nick Chan --- arch/arm64/include/asm/apple_m1_pmu.h | 3 +++ drivers/perf/apple_m1_cpu_pmu.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/arch/arm64/include/asm/apple_m1_pmu.h b/arch/arm64/include/asm/apple_m1_pmu.h index 99483b19b99fca38483faad443ad4bcf4b85ef63..75be4b4c71f167a6874e22b38dc7c0bf30d25a47 100644 --- a/arch/arm64/include/asm/apple_m1_pmu.h +++ b/arch/arm64/include/asm/apple_m1_pmu.h @@ -37,8 +37,11 @@ #define PMCR0_PMI_ENABLE_8_9 GENMASK(45, 44) #define SYS_IMP_APL_PMCR1_EL1 sys_reg(3, 1, 15, 1, 0) +#define PMCR1_COUNT_A32_EL0_0_7 GENMASK(7, 0) #define PMCR1_COUNT_A64_EL0_0_7 GENMASK(15, 8) #define PMCR1_COUNT_A64_EL1_0_7 GENMASK(23, 16) +#define PMCR1_COUNT_A64_EL3_0_7 GENMASK(31, 24) +#define PMCR1_COUNT_A32_EL0_8_9 GENMASK(33, 32) #define PMCR1_COUNT_A64_EL0_8_9 GENMASK(41, 40) #define PMCR1_COUNT_A64_EL1_8_9 GENMASK(49, 48) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index bf397fd81230007dcf52888f148e3158dc02e29d..73ba9861a15ff931b5e388b6d809dedb140e2292 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -335,10 +335,16 @@ static void m1_pmu_configure_counter(unsigned int index, u8 event, case 0 ... 7: user_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL0_0_7)); kernel_bit = BIT(get_bit_offset(index, PMCR1_COUNT_A64_EL1_0_7)); + + if (system_supports_32bit_el0()) + user_bit |= BIT(get_bit_offset(index, PMCR1_COUNT_A32_EL0_0_7)); break; case 8 ... 9: user_bit = BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL0_8_9)); kernel_bit = BIT(get_bit_offset(index - 8, PMCR1_COUNT_A64_EL1_8_9)); + + if (system_supports_32bit_el0()) + user_bit |= BIT(get_bit_offset(index - 8, PMCR1_COUNT_A32_EL0_8_9)); break; default: BUG(); From patchwork Fri Feb 28 04:06:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995670 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8E5D1C19776 for ; Fri, 28 Feb 2025 04:21:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=JFAlWPal13PT3wJL9wT1P0t176 H2UxJ5EYJUoDgUQavA3cFS39i/B5MpPEJKOX4W02HvAa0LcgRImuoqfO0od7unrEhwdONDKPAuMhO X+08+k/gSMhUYcHoXTC1HaF3sbuO1mJscHMtS3uYloaahu7t8LpatPWMkHVFxDx8hbOPM6xCoB0jP fawj3uKF25BzmJa94wHMvFqDFCoq+kUrgLejbsy0uhXwPFpPn769Aa7BG4DIs1ZOIgyS7a/cijDU0 A5TZuutwfcP5dM/MdmMjrO08wTM+I9P/xv+vi8YBDGjWK+AZ4Z+f50tIShbAatJuZNBgEmmDb96Yb SJ7aOIuA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrsQ-00000009iZ4-1haW; Fri, 28 Feb 2025 04:21:30 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjb-00000009goC-0wEQ for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:24 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2fc0bd358ccso3262251a91.2 for ; Thu, 27 Feb 2025 20:12:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715942; x=1741320742; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=P18tQtE3oBUa+8cajALcnDC7hFjrvczFliuLf++yiR/MZzdHC8BUsK49ivI+fBLr37 7knXtniCd3OOIBw0WR3p9UfvOHuWvx3ocS5OnmazeqtAehu4XiKgbrxeO0C08asHGiKJ V/0A3iSjX146ENw3THkVKhGLa6N8+UTTgolo+w5LV8K2CUOQjtAk7W+iqOzr1Uo1iCy+ NV2ZZEJUDwn+5LvkUF3A/hLpXAS9WJw+390uKO19B/HUKwzCW7eid890alyV7inj0CGV 9uyJogN95ZgjNQX81k1S05HSf4rhlclSEf+nha524PBpI/5+aTgwNyLU6WxcEH4/PMYI IHEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715942; x=1741320742; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EN+eZpJ9eIG68InE3GWCQVcY+xomBgCqyQkRTUGWCeg=; b=bXchFn1G7XFTY7dxBfdi1yo92qBcIAJFpPmxPByPH3CLSGsk0YpKM/FiqPCfvyRUdQ 4HlfZCw9bayHwmW3ReCLZcbrkuiXsXSInKoKFFP4sQKxe9xc9OOH5t9NHP+86p32vEwa Kd0F499P5ATNLuKMpd0zp8reVISk6PgqAS1/rSWPMJqmvdhRcN3WDID6gJpvhB4w3fjH eYpV5rbcjvQiAJ9H53oi0V5pZ05SOjFXZlXBCDHzhdL5HZm2ZPRSCAor9hZwCFrVQtqx IlumI6tuArhjNic8NEKIKdSUCAfh9aRIZl8YR9zEEuweKdUXEvs//q4en7bHCDz/kqvS c7tQ== X-Forwarded-Encrypted: i=1; AJvYcCUNSF1cUDYel8375nxWufZ+mvoQ7n9Mk79JvC5bc6cHQNU3WEXvbncbcmULciPMDwv0WXIdGAaTl75YUnR7ExPj@lists.infradead.org X-Gm-Message-State: AOJu0YywuFZZdV4v4ctO4dkfjN44zpy2O7m9WIOthsxaerbJ0RXLP/5A 7DfwFqxWdoFoeX3/zpuBCy5srSQ6sH7yQtFih5eC5xO5NCixMs3H X-Gm-Gg: ASbGnctT6mu7Lb4/4RGOmducpWwp6aboYKVOmrPoRShgwR57EGgcbjIg1YyZKeGHIGs XLMTl2KvGVS7eJb08fpYrO/Eaq4wRgbT4pe76Yko8qUX80VBX4ha+T5B78KMEsAE4yNwzYLhKHA CoP8LSjk8CPUQp6yQZ+Xiwb3PsrEZqrMNJ796ggCpiFArZ641eHJwBejUWLTJNeKn2iDVueUsuy eoRSisPz0nlvBXK4/HEp6urDZCLCpg8Ng2p5kiOAdQG+5zYP1qeMqKmgIWnQkQhXVw/VjJrcf4z axg8fn6Np9dP6GtZIZ89CkmmDSw= X-Google-Smtp-Source: AGHT+IGQdF6ah7D8WVtQqj5tlB8T681HfUUtCnXKbIkwtEbPe096u1zDzUDD1CQAFOKPJ1x9jbndsQ== X-Received: by 2002:a05:6a21:600f:b0:1f2:e31c:527e with SMTP id adf61e73a8af0-1f2f4ddb787mr3214705637.34.1740715942338; Thu, 27 Feb 2025 20:12:22 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:21 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:45 +0800 Subject: [PATCH v5 05/11] drivers/perf: apple_m1: Support per-implementation PMU startup MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-5-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2178; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=6YoEPxJ23tlB05Hr5lEn9IwiUxu3JyxaBoeQXV7L+7o=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeIR+A7oyzynRaKo2M82R3bzQoc3Ggu14u3u zrqtHcCrbSJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JDNpEACnujBcz8W76KNJTc0D/JzlK3t8TEZg0aeoZGLcmlkABBd0w8zO0HMby2QqTon3hXWcGUe fsd4HCdSenkuFlu3mS+Sh7moZT6CzOFYAzTA60Ltt6/Bte2kaN/SCDABXf6ga/pbxt8I0DNnF9y JvNha9yZ28xLrBaTSyUaVsAmR0ACZJXAJrbvMiyO4RpIMT/zoYjNmJadrTb3+WaFLnEi2yxIJIJ mQ7cbjVF2Gnf1jI4zM09YTGOrVH18fumF0/HDbfF+RUEYtKKBdsMdQaTQ1UN4XgoWeiRusdu9h/ mGQlPUqJh98gPeoHSZTlvZONKsopGoZxpngCebQOjpoH5RXFJnm/K7AqWPHKSLPablaeR3KXlEU xNxBykfAX1om8ceJa2QydGO6IhkuH1flBWV4nzmdpZQeYdJdR45c0+QilOFfTKx0PuswdGxl8II 4YbZKPmzhg/mCpl2a3vHBSmutsC/WxFjg7RP7RmJY0fu4FHSRkPe4hEq45Hp2XOqwxBAAVvRL9E n3mUulLJW5pRGT2y6vRzEU727ryGX3+GzyPqhGRAOndGTfUKREl4iIGQuu5DWiFJG4m/x1cDbie CtkVTL7XGxpL57bm7/uyR+3YK/QdONoVo8UL81RV+nYvsCY6T/XYRX95GI8ofPO5tWalAJFT26Q ZJmByVzMquGTX6g== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201223_266189_2E2A87B0 X-CRM114-Status: GOOD ( 11.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Support for implementations that deliver its interrupts in ways other than FIQ will be added, which requires a per-implementation startup function. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 73ba9861a15ff931b5e388b6d809dedb140e2292..b601d585d204f9e59ad7f5216679b97852a46a04 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -608,7 +608,6 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) cpu_pmu->read_counter = m1_pmu_read_counter; cpu_pmu->write_counter = m1_pmu_write_counter; cpu_pmu->clear_event_idx = m1_pmu_clear_event_idx; - cpu_pmu->start = m1_pmu_start; cpu_pmu->stop = m1_pmu_stop; cpu_pmu->set_event_filter = m1_pmu_set_event_filter; @@ -625,6 +624,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -634,6 +634,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -643,6 +644,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -652,6 +654,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->get_event_idx = m1_pmu_get_event_idx; cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } From patchwork Fri Feb 28 04:06:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995671 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 35B6CC19776 for ; Fri, 28 Feb 2025 04:23:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=cJrU8oYBTmZpj1I0Kug71Ee84k j4WTGtJQvE/oHm3MSvjhnrTSUP1ADeecA6KpRqBTAJVh7LwmAXdPo280IPUpORqPFel+cP4UKygDl Ol4E0tLRVrhBEXZVjV8NKHImS0dmDtK1kvmuFJMS0lcVRd7e5C0fg7jcNz9rjrCol96FPhpuFip7a LVavaIgVC+dmDkOTv4vzeVIy4LYPNYHg2n13w1gwmaFHfUrhicKUL5nAKPwptDpvs+LC5R7g1vxHT QA+qIHeSE/37s2XUk0xPjR/IkazbNngDdxkIgYwgpyxLE7BysrCEt4hF0GCSd6hPbP9JjqaO8MQmV z2Kr9dBg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrtw-00000009if4-0JxV; Fri, 28 Feb 2025 04:23:04 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrje-00000009gpM-3bST for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:28 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2fea47bcb51so3143611a91.2 for ; Thu, 27 Feb 2025 20:12:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715946; x=1741320746; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=jEj76J8XU/Hw/MAy/s15Xea+hhS6pycli5Rbq58QDM/jJ5HjaouFg/L8Rf2lPY2Hnx T63X0F/Efc9i9e+rTFFyDMm+x5QYUd7ZbYfRHPS6WI0Rcj3pmGrylDOf1h0XNeUz6Jlc 4wrviTUxzHMYlN5i0aNeCgot/gddAPkRqzK8uRlVeiBoMew1wyG0G3kCEyjVi7M0ax7b RvKJpq0lwRZCeEo4CNRu/aQ/C/qGBVEwn2LaZTt5n7/Am+BN1V9tNdqyTqSCrcKfs9yc t8UOFK5KORA353RhZ9RgyBmtH853HyMhQ+SVjes5FdBW0dNCiU+9xvF5Qp1TykRCWyCx CA8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715946; x=1741320746; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lkIjPnn91/SRZervKGZC0B8yDAzqnA9SsHweWh8Mdhs=; b=sm7oDMhHobO0b2f50wbkhnLSehPQgdWBWcHH1BWCr8IgSC55jZeorkNY4XEY/4qVol oHXvaP0MthTKZprD2cUlLSiYpZQwrsbgSj64m6DGNGm17WnwZWmSnQOx+SdtDOlaR8mG N5EKC99G7Vf0C7dm7gHDsQRJXhmk+VDkYgniH3jDQ6bBxf9jqrCHRUBHL0kzIOglO8RX CaKoU9B6TcqbJPtV14O/y6iDPTSOYHr1Cv5X/ps/9sTjlcn5cG+hlyn0I71wyp/PsCRf D99N7Xws2lwH15cbF/4e6Qd1lAQhJRq+mcJ7+GTjrWt6YcD+i4oB+ztVTlud9OklWE2k lt/g== X-Forwarded-Encrypted: i=1; AJvYcCXykeUkE2K4jNRXh76V/NgMZOIZKMyu3/BK0QCV5ndJzRQFjulWIf4AwTMn/Q0Y75XVdw2NrnR4MmzOGTIYEhTz@lists.infradead.org X-Gm-Message-State: AOJu0YzYEQVC3qHtlo4LKo6m333Zoo/z/Kxid08uLb74+47MaEPmfWVD 19Cbc6QcHchqnhfngozlMiZOmJ1Iv8w3rv1YghKcikgHkRVr0SIx X-Gm-Gg: ASbGncvyj1kI0S9XpWp36xHC+zjSfPz7L/wZ3uvJblG02dK047MSELRLCPdBbbeimFN lFhHLiQNEEPnyW+Z20TCjUz6VQX4eGUYvvVenNXUasRL5bHlenMLrJJJJdweFZWPWmzG2gcD8DN dYA/BCTpO4mwx/vV70dk+MqiiL794kFNE2bFI/cfdex+by6d/dJEcJXKoceYFMMO7LXdAeCpcNq JpAE1wRXhV6ufOOjiVamqqq3Sb4XZKSmI+FI4Ykab2RIJoUyCkaWr1o+xx/YNBIwHzPBBd2cB5N sSs9Mi9tC3Me3yD7bJMHMEtc2h4= X-Google-Smtp-Source: AGHT+IGHEIpcdEcISrBwhOH0M3m872e7avIuk+po2XsNHsz/FvPF88+rn1jimOEudTdFV276zI1J3w== X-Received: by 2002:a05:6a20:2585:b0:1ee:ced0:f093 with SMTP id adf61e73a8af0-1f2f4e4de6cmr3653744637.36.1740715946184; Thu, 27 Feb 2025 20:12:26 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:25 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:46 +0800 Subject: [PATCH v5 06/11] drivers/perf: apple_m1: Support per-implementation event attr group MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-6-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2273; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=ODunfawf7CVe5hX+5as3cMBvBCM9oIodivRV8l+gVA4=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeIh8PCw9htkPM24Wl/Zh/QTeVgaglkWxNlc VysG94JI76JAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JIddD/oCNTgA7arcUloG6g0FN1Dv2auoakexelhUz9xCaAin3goV2BFzBBzrgyLx/1RrUJc1jAx 4iosM+43Sn2niLgfuaYE4K2wzgiot9PrXCmT7/GKsO40Ox6GrnaQIa3eR1k0+Xv+mzwYfgpxYac GDof7/+DamAVN8Xp/vbH/E5bccEmIBOlpG9FwCR1YnlU1IsEQg68R6TaA2uI/arrxjq1I10z5aI Ftu2jI6NnIIkncYiev65c4vupqTnluwGM0tVf0r9qqRpng8w/sYCsj7ibB6kcQ1GxrF6EJw5DX/ +YfVPt42+zpa4BisT/49FXgdjouDNmF8WO9t12PYKcxv6TN2MySK2BTUzGQnVpkyOX5U0NkObAR KdofpVJTBQWmeCiMJnp0oWAv23MN3Dm+MT3w/Tt5rfl7x0belHAIq4fp5EpqQVBUIoLjEuuxwoD Vxe5jwJddjAVbOxp/+cx0cNIoSZNi3bzpAMLmpB2N6rebTBULPtWDLvm2aUEB8LmQKlkpRCPBgo UMIWEPe3rJYx0o1M0nk8RhgmiNVE1YAF586sWYvptu395XJF9VkWtgwcAalznMx2FhNos419Arv dPi20SMdNwq8zhysiqAma33qdVeHlY69Q17Mzt24u/eJrTdbR7YNDvZm+LG2zm7vc30/u/F5DdC uD/Zm8N5ETVXPvg== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201226_901562_E32601D9 X-CRM114-Status: GOOD ( 11.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org To support implementations with different event numbers for cycles or instruction events, event attr groups needs to be per-implementation. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index b601d585d204f9e59ad7f5216679b97852a46a04..f98f3e95bfdbb5e9d0fe66357f6037f056fbf25c 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -612,7 +612,6 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) cpu_pmu->set_event_filter = m1_pmu_set_event_filter; bitmap_set(cpu_pmu->cntr_mask, 0, counters); - cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_FORMATS] = &m1_pmu_format_attr_group; return 0; } @@ -625,6 +624,7 @@ static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -635,6 +635,7 @@ static int m1_pmu_fire_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m1_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -645,6 +646,7 @@ static int m2_pmu_avalanche_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } @@ -655,6 +657,7 @@ static int m2_pmu_blizzard_init(struct arm_pmu *cpu_pmu) cpu_pmu->map_event = m2_pmu_map_event; cpu_pmu->reset = m1_pmu_reset; cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } From patchwork Fri Feb 28 04:06:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995672 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3F6B4C19776 for ; Fri, 28 Feb 2025 04:24:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=Y+XaIx2iw0xSTvz1C+QsxRvwxw mGHRpc0fl/41oL5/9gcnMiaOg937UmAU1gWdnv8bJn2dIh+1NjGR0w3MsuyPMrJu7JbFjqADQ2PPe G9im+Ai6S3b8mEhLNvsCZpt3lYhSko98zlmdy3VdM+bLFZr7wjlpJzdHqBufoNmjUOrhp+2lgeT9N mNqF1Wr7aS7kXTzUzXIDoyaqk9peCGhXvRKgyjekJwnRBGtS6tD7ZwJe6THFRKuZi6syVB2pvBxE2 9mYd9yv5gHQbn9hlhuUICJMMrVktJccNWYCIAAQY06lXJMxPB1dCgoNNiSe8vujD1tX/1uFKBb8Xf sLqE31bg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrvS-00000009inm-30Au; Fri, 28 Feb 2025 04:24:38 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjj-00000009gr5-09jj for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:32 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2fe96dd93b4so3712054a91.0 for ; Thu, 27 Feb 2025 20:12:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715950; x=1741320750; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=LQFXtrpAIHrG/2n6wPv0nf0FGeCe9fbYJDPVfJfVHGAlmmVmD0e2VShbMJbH468E2b qcWBbE4SIeD58ht9YzcYRUfLBjEhkcDCCE35qxGpEDAa0sbfMVlx4pu/O61J+XZ80VLi dXA7Ha2IPOq7BU0W9C6omu7T/vsp4EOMcM6bvJxEfuFK3rE2XgoTbYF1fbRZHLDYHj60 ZLGdRxiVDGY1Zh75NtMK2TvSDiNHQWFbA/DNUsVxUdlMYoC4CwOOFoeI0AGY5wwa8MpR idLN8dB1OLfI3aA51F4KXr7TGhqy+YaZvwojDBSMRV1I1GDeeE9UQyu+cRwTxhIIGXRO /Zkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715950; x=1741320750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ka7CcpwLE9gHGyeS4O8xFmkIDbnrXqD0zo80hBXzFQI=; b=NAMA1KdAxOExVT1nsI1cG8hPvVq510kP3SAf+W52waKUBcqiKPBEv4AJIfOl4HrjxN zGW+FF5Ai8+hlHyw424x90QDVByEZfZXKOt0iS+a0B9XVTR9boSeEs4NdTtfzucpQtV+ 5tNbj7WL0cIM/pu6z+YbwqckzHY+cCe+eoKg5HZn84DimAHbqR2szbt65jAA//oPSb/M g2BnwtVG+AVRCgM0DIn6ssrH6rZdNxsqn1EBWyEVE2SGwvmx9SzeYeHqqkftPNFDecDI V46/Zt3JaVwCbDVA7eGV69szlGlAwNZbORdU0NFgrq+jCacrAGmw1WZeHhDr3Vt0B/8f /wiA== X-Forwarded-Encrypted: i=1; AJvYcCXgv6j1xx1WsWv/cZGwoUkvkK0mc5mI3RFqXV5V60hnmbBKMKe+AlwrcuNDLANmrl3J99Gy7lrhwMza3bWRorAt@lists.infradead.org X-Gm-Message-State: AOJu0YysYXypEXiMVH01lBc1LVcaVyh/Pg6ifP0w87+lBDUpYdh1y7eA hFKuop/y9OpKkfwcCw4l6QJY2AA0H+NDnzfwvbvBAbvB59kYp468 X-Gm-Gg: ASbGncthVJpFLkV+03V0mhBbCFg6g5o6bDpYuIbllDX7496S3Ymdi+RyKYlp5ImXGgv KSznQjCbfM60lC6sN1o1koRcxMjnsY4lKzbdN4GjbQOU7v+EgsHu+g7mGhBDBNF3CnyBFjwqs4q TyTIRaIu8oO05CS4sR3nhmfRvNQ43xYCik9RAz5kmRqa0AO6sAJugTV2AleG6tjZher5oPu9rNc fHaxjzHksp6HPaleT+cgP+YEmrNrxC9YNh77mnRKhhvBEwS3kEdCMNaPFxb5D8lcEYIYQRrt3gk q36bCrRuX+cy9NopEAOPmC9PF4I= X-Google-Smtp-Source: AGHT+IF+29OLEyiDCHDf0ZXzToTZTrTTy/lXu3VaqX1nUdX72nf/nfBEkSvgY92r1LRRQm3L5LNfLw== X-Received: by 2002:a05:6a21:328c:b0:1ee:6b04:641a with SMTP id adf61e73a8af0-1f2e389cbd1mr8437134637.11.1740715950255; Thu, 27 Feb 2025 20:12:30 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:29 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:47 +0800 Subject: [PATCH v5 07/11] drivers/perf: apple_m1: Add Apple A7 support MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-7-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=11055; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=HIk4rf7zxCOA98DOmDx17AWtajnJ5bX8H7E5/mhDlbc=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeIgUyjt6t87lkQmQ2UDkPLlGJukwdyEEJca Q5krv4XxhmJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iAAKCRABygi3psUI JKzlD/934Pb1HL9tSKFdLbhsAEtkyvmXU++FT6b379ojOJqFC5ROvRwu2ZokCPhiNUZ19OIVDVT 0UByAuseH7Zrno6mJjucWNsDzyK52sfQWHpdjTrPeqXfoi8UBnb5A/NgqHHZjWAPf3mjjCdp0fY ObIzXznkZA/xNhsw8RvYGaYV3Q3tX6UxJdRlHJMIwTHaXsy4uv1+Yp1UHkJ4UmJe+ZAj+E9Q8hm 4umGZAFGP4uk+WzVDaiS0zDgG862RsZByeoJ4HNy8i9WdLovcuThWHz1Ii+QFyaxsnoKIM+K2Qj z0jPrfW/NjgRrausCcF2jgM6NdjIDfKgjGpjaduMOzEyxu2q4LW3fMTTR7OTwAAEeAWA0AGFdhH 9qswb3H6wyPB890s9lNybHX2t8FKqNthHdr4hjY4zVsiU+kl5HiK/HS+n4VF2iP42Asx8c863X2 uRGkUlJCyFc/5sCPRmYghJTfnSTYJK9vopMlrd6rtiqlsBTGUeg6GpjF35SCSn9NJ6GHfTYpgKz gSffZI5pNWrFlWJBL5je1AtPhdEzPRoMSMvnkNmE4KrH25iz9EPWY6lu4HvVUjv67e1soOJ/RZ6 dKJPXyx+WIyNMeqC6BakL0D89luxGpxn+/yrOdslEM80xjfbpXU9v/hrhTB1WcF0u88vLsc4ELt rGwxaYn2D66CKUQ== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201231_088362_99FE612C X-CRM114-Status: GOOD ( 17.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A7 SoC. The PMU has 8 counters and a very different event layout compared to the M1 PMU. Interrupts are delivered as IRQs instead of FIQs like on the M1. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 190 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index f98f3e95bfdbb5e9d0fe66357f6037f056fbf25c..93b49f08e5c740c5bba2eede191e279ed4965181 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -18,6 +18,7 @@ #include #include +#define A7_PMU_NR_COUNTERS 8 #define M1_PMU_NR_COUNTERS 10 #define APPLE_PMU_MAX_NR_COUNTERS 10 @@ -44,6 +45,143 @@ * know next to nothing about the events themselves, and we already have * per cpu-type PMU abstractions. */ + +enum a7_pmu_events { + A7_PMU_PERFCTR_INST_ALL = 0x0, + A7_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A7_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0x10, + A7_PMU_PERFCTR_L2_TLB_MISS_DATA = 0x11, + A7_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x19, + A7_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x20, + A7_PMU_PERFCTR_L2C_AGENT_LD = 0x22, + A7_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x23, + A7_PMU_PERFCTR_L2C_AGENT_ST = 0x24, + A7_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x25, + A7_PMU_PERFCTR_SCHEDULE_UOP = 0x58, + A7_PMU_PERFCTR_MAP_REWIND = 0x61, + A7_PMU_PERFCTR_MAP_STALL = 0x62, + A7_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x6e, + A7_PMU_PERFCTR_INST_A32 = 0x78, + A7_PMU_PERFCTR_INST_T32 = 0x79, + A7_PMU_PERFCTR_INST_A64 = 0x7a, + A7_PMU_PERFCTR_INST_BRANCH = 0x7b, + A7_PMU_PERFCTR_INST_BRANCH_CALL = 0x7c, + A7_PMU_PERFCTR_INST_BRANCH_RET = 0x7d, + A7_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x7e, + A7_PMU_PERFCTR_INST_BRANCH_INDIR = 0x81, + A7_PMU_PERFCTR_INST_BRANCH_COND = 0x82, + A7_PMU_PERFCTR_INST_INT_LD = 0x83, + A7_PMU_PERFCTR_INST_INT_ST = 0x84, + A7_PMU_PERFCTR_INST_INT_ALU = 0x85, + A7_PMU_PERFCTR_INST_SIMD_LD = 0x86, + A7_PMU_PERFCTR_INST_SIMD_ST = 0x87, + A7_PMU_PERFCTR_INST_SIMD_ALU = 0x88, + A7_PMU_PERFCTR_INST_LDST = 0x89, + A7_PMU_PERFCTR_UNKNOWN_8d = 0x8d, + A7_PMU_PERFCTR_UNKNOWN_8e = 0x8e, + A7_PMU_PERFCTR_UNKNOWN_8f = 0x8f, + A7_PMU_PERFCTR_UNKNOWN_90 = 0x90, + A7_PMU_PERFCTR_UNKNOWN_93 = 0x93, + A7_PMU_PERFCTR_UNKNOWN_94 = 0x94, + A7_PMU_PERFCTR_UNKNOWN_95 = 0x95, + A7_PMU_PERFCTR_L1D_TLB_ACCESS = 0x96, + A7_PMU_PERFCTR_L1D_TLB_MISS = 0x97, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0x98, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0x99, + A7_PMU_PERFCTR_UNKNOWN_9b = 0x9b, + A7_PMU_PERFCTR_LD_UNIT_UOP = 0x9c, + A7_PMU_PERFCTR_ST_UNIT_UOP = 0x9d, + A7_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0x9e, + A7_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A7_PMU_PERFCTR_LDST_X64_UOP = 0xa7, + A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xb4, + A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xb5, + A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xb6, + A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xb9, + A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xba, + A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xbb, + A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xbd, + A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xbf, + A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xc0, + A7_PMU_PERFCTR_UNKNOWN_c1 = 0xc1, + A7_PMU_PERFCTR_UNKNOWN_c4 = 0xc4, + A7_PMU_PERFCTR_UNKNOWN_c5 = 0xc5, + A7_PMU_PERFCTR_UNKNOWN_c6 = 0xc6, + A7_PMU_PERFCTR_UNKNOWN_c8 = 0xc8, + A7_PMU_PERFCTR_UNKNOWN_ca = 0xca, + A7_PMU_PERFCTR_UNKNOWN_cb = 0xcb, + A7_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xce, + A7_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xcf, + A7_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A7_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A7_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A7_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A7_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A7_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A7_PMU_CFG_COUNT_USER = BIT(8), + A7_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { + [0 ... A7_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A7_PMU_PERFCTR_INST_ALL] = ANY_BUT_0_1 | BIT(1), + [A7_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A7_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_A64] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A7_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8d] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8e] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_8f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_90] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_93] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_94] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_95] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9b] = ONLY_5_6_7, + [A7_PMU_PERFCTR_LD_UNIT_UOP] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c1] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c4] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c5] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c6] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_c8] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_ca] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_cb] = ONLY_5_6_7, + [A7_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -162,6 +300,14 @@ static const u16 m1_pmu_event_affinity[M1_PMU_PERFCTR_LAST + 1] = { [M1_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +static const unsigned int a7_pmu_perf_map[PERF_COUNT_HW_MAX] = { + PERF_MAP_ALL_UNSUPPORTED, + [PERF_COUNT_HW_CPU_CYCLES] = A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE, + [PERF_COUNT_HW_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_ALL, + [PERF_COUNT_HW_BRANCH_MISSES] = A7_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC, + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = A7_PMU_PERFCTR_INST_BRANCH +}; + static const unsigned m1_pmu_perf_map[PERF_COUNT_HW_MAX] = { PERF_MAP_ALL_UNSUPPORTED, [PERF_COUNT_HW_CPU_CYCLES] = M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE, @@ -185,6 +331,17 @@ static ssize_t m1_pmu_events_sysfs_show(struct device *dev, #define M1_PMU_EVENT_ATTR(name, config) \ PMU_EVENT_ATTR_ID(name, m1_pmu_events_sysfs_show, config) +static struct attribute *a7_pmu_event_attrs[] = { + M1_PMU_EVENT_ATTR(cycles, A7_PMU_PERFCTR_CORE_ACTIVE_CYCLE), + M1_PMU_EVENT_ATTR(instructions, A7_PMU_PERFCTR_INST_ALL), + NULL, +}; + +static const struct attribute_group a7_pmu_events_attr_group = { + .name = "events", + .attrs = a7_pmu_event_attrs, +}; + static struct attribute *m1_pmu_event_attrs[] = { M1_PMU_EVENT_ATTR(cycles, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE), M1_PMU_EVENT_ATTR(instructions, M1_PMU_PERFCTR_INST_ALL), @@ -494,6 +651,12 @@ static int apple_pmu_get_event_idx(struct pmu_hw_events *cpuc, return -EAGAIN; } +static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -517,6 +680,11 @@ static void __m1_pmu_set_mode(u8 mode) isb(); } +static void a7_pmu_start(struct arm_pmu *cpu_pmu) +{ + __m1_pmu_set_mode(PMCR0_IMODE_AIC); +} + static void m1_pmu_start(struct arm_pmu *cpu_pmu) { __m1_pmu_set_mode(PMCR0_IMODE_FIQ); @@ -551,6 +719,11 @@ static int apple_pmu_map_event_63(struct perf_event *event, return armpmu_map_event(event, perf_map, NULL, M1_PMU_CFG_EVENT); } +static int a7_pmu_map_event(struct perf_event *event) +{ + return apple_pmu_map_event_47(event, &a7_pmu_perf_map); +} + static int m1_pmu_map_event(struct perf_event *event) { return apple_pmu_map_event_47(event, &m1_pmu_perf_map); @@ -576,6 +749,11 @@ static void apple_pmu_reset(void *info, u32 counters) isb(); } +static void a7_pmu_reset(void *info) +{ + apple_pmu_reset(info, A7_PMU_NR_COUNTERS); +} + static void m1_pmu_reset(void *info) { apple_pmu_reset(info, M1_PMU_NR_COUNTERS); @@ -617,6 +795,17 @@ static int apple_pmu_init(struct arm_pmu *cpu_pmu, u32 counters) } /* Device driver gunk */ +static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_cyclone_pmu"; + cpu_pmu->get_event_idx = a7_pmu_get_event_idx; + cpu_pmu->map_event = a7_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &a7_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -666,6 +855,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; MODULE_DEVICE_TABLE(of, m1_pmu_of_device_ids); From patchwork Fri Feb 28 04:06:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995681 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 57515C282C1 for ; Fri, 28 Feb 2025 04:26:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=V6fgvIGB7qRly5lnaikwa6GIZp 9aaLQmG9QTa98wXJYFYNI9i9idCkGekm7vAgyl2i6lR42CRoUWXjh3TKLbpq0FoYMLSUDuollp9/i bhLIxJKaWzjMiCFpEvT4ZMHxn+hCrQIPLjI8WeLNgznvMPs4og1d8tCaOgfeAwRi0/WxK/WY7n2nP 4CGrfhPXj9gX42QdFuzS32iPdcq7hB4CqrFTWicmqz54aGdfZC+MW+Kcu/OwT0GZHNpmF/VgFp0Nf 5ixKfRPNC1m9I3LG4tfS332FkyPqsr4ngn8mF6sRkSiRZPs+64bRTA8nXEeT/kLr/aAFlMkA5gvsO xt8st+VQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnrwz-00000009j2Y-22N0; Fri, 28 Feb 2025 04:26:13 +0000 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjn-00000009grm-1Tf1 for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:36 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2210d92292eso43906725ad.1 for ; Thu, 27 Feb 2025 20:12:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715954; x=1741320754; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=HUZTTvJDv/t5ZJK70eCpRJhdjQqBt+ULNW/TGjV7THvIh8s8l4eRIDIGs/J376CR/V JVTohqLmY1+w4SPDgKiLLQCTGfLDJiOujbfkq2w8byCsBuCvvp1bnaZffliqfh6Y6SNW 7Vdy+y4hAaBYnfUIXNYuHtmMr5ndfW42uaiXdeg4nrPGsG59bDyep9Z4WMn+kIt/FnhP O+f2a5gZe2ssRR3GvP9WnxfbsJIbWAmFgbU94RQOmt6drJcCG1trFVsk1tc9YNVBtWVX o8x89RnIsavlChnwMnizl0+RlaNZs+z0oYFzU3iK5ALooKUXaXlyXd9JiPO2WDSe/u43 Tk3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715954; x=1741320754; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZpzR+hSxCg8C4vNujl/ovfsfahtzrD7JUQLRJ3RDxiE=; b=JNJHS/fmzwSPTZE+J4ok8hOLhW2pvBVlJ02Pd6tels5Rd1Uue6SfeThXVjb6Mq5rrQ +XFp6YhMyhXI0y017RKIik76/knTnjOMB5HWetGfOpU0GjbafW0gqwZ+Ux9GofAyw01u U14Luyt/uoBgHPcUFHqwHWUcEX4mbm6BKK0ffn0adCLV1hy2WKwhgJqZsErY+Jml8VdT vger2K+mDT7Y6s2uFcpQ3KAYxIVQ0ECTAQN0SHU6YB135YQVw2beKT+AjD6SHjZjAVne o/HJJI8Gr0eogLwUxFt5yZVwsHMdm5hXNl/QFXS7uDjdUpvwPelyuHia3tXq83Jfs9Ue 7utw== X-Forwarded-Encrypted: i=1; AJvYcCXSbdN5rBiY6wwM+Frpy/FO69rvW219qFZx3TaTpPgLW2e/E7HwIYx2vUQCxS6uE3RyS/HIr/BnuizbTrayvvzy@lists.infradead.org X-Gm-Message-State: AOJu0YxjSK7wS1Z7IRJqf/Rm6IIg5L85i4ooDxjkQjUSXmE26BYVPo8Z vGWsF645sLoRlwlyEFR7aWdjTdK8D75JsW3U9NGzliKEmFQTIUfN X-Gm-Gg: ASbGnctpzYk81zlTRSG8w3i2LO59i0Ip+Xs1Qg1W2HFhn0SGcBxOqxfcdV2IMrsKos4 BWL2+7ZHqSiSLQmFQCEFPl8ivcfpqUEWCiBcAmnQb9JLhdFz6SWLu1lxGA/4BGxMnsu9G7CvDMm RSL5VmzhDDI5kHpQKJI96UNk2Qw9aghU+ZPx3Dny1inZBHAnVhF/Q0p//dngdw4ZOOtyTCWmDpI d2EwT4FM51a4X1Zo17PXAQDg29y6n5gnFtHmx7x5xMMQL7Kd58ynLMMnHdeobWtuvW1i7rrVOOr 6OVNB9/EE5hqR4tpblmQv+FovAY= X-Google-Smtp-Source: AGHT+IHK3qa7RuGqowdSc15W7HK7IolZ+tRUMo3877RhLFbbmwqqpjV1bo4qxgUgTcnsko2+lEp/KQ== X-Received: by 2002:a05:6a20:12c9:b0:1ee:6187:7fcc with SMTP id adf61e73a8af0-1f2f4ccb3c6mr3218629637.17.1740715954536; Thu, 27 Feb 2025 20:12:34 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:34 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:48 +0800 Subject: [PATCH v5 08/11] drivers/perf: apple_m1: Add Apple A8/A8X support MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-8-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7312; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=MbPXWlvl+CRdYMbAx6AekhnxkcwDgazyj5+54FmTU+Q=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeJWzMZ5bLbH42Q8YHFFAw/hKbsz2aSQV2SB iA7Qf31W0KJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iQAKCRABygi3psUI JI67D/9+Dx1/AYHl+rmgDZEyZIMRqf+KhUVRC3B9/vbtqnUgOWrw0jI/iEkHQrvpirJ0HJ+MrQo ywDrkKx2v8uTxJNQPrFuWl+cGFf4Bm5Cu6iJzXwoPhYsuTTr+DtFWklW4EJkCyYz4ChVJ1iCS3Y 449mv78NS6z3HYbGQH9u38Xkw4BziXP9WqXepK4ecFayYJXwS4Dfwqa58MqCk1YVL9ODd24e3Sk 5YIObrLg77BOFfkp2w+uCsCT6L0ybTdeLYjDeuyjfxfoZYXmk1VIo703LVMVQvXcNlB5OqqVh2i uvKj4cnQh6zsLB7JwBaj11vhZQUKTgkURiNIIZM6JH2sun03L1neFlmetFpCNkzwkBOCWabqKRD 39YluYU3+m5g8nq5VC0aFTHb6e/TnJYZTg/QZ0/gpKhlIcYqtUkaP2FToACx3ESgAFIOaIWmqxr ZkWU94v5cYNL+gq23q1/XWeufQHIRxRTvs8bEUtn5yoXAzNP4XeNWvHHt5/cNyTpD/Zg0sg/pLT /i497Z2J+qmQvWPLdSIp7wnahESXaE2zfeQqkA75dij5CT7kIiCmhdUEuMwW2Qj4mgBGCzzh0V6 /GLxQ0vzf6lcO3F9N74oEdR4QuQiOk01t2k4MeE84LvNhoIu+zf6Y1Z0rN6R9Rvifm8ySgpldDW TZy3XJV0ul89ECw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201235_401205_71B1595A X-CRM114-Status: GOOD ( 14.02 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found on the Apple A8, A8X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 124 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 93b49f08e5c740c5bba2eede191e279ed4965181..04825a1991ab1c670563e3ce91b43fa5d8c85920 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -27,6 +27,7 @@ #define ANY_BUT_0_1 GENMASK(9, 2) #define ONLY_2_TO_7 GENMASK(7, 2) #define ONLY_2_4_6 (BIT(2) | BIT(4) | BIT(6)) +#define ONLY_3_5_7 (BIT(3) | BIT(5) | BIT(7)) #define ONLY_5_6_7 (BIT(5) | BIT(6) | BIT(7)) /* @@ -182,6 +183,111 @@ static const u16 a7_pmu_event_affinity[A7_PMU_PERFCTR_LAST + 1] = { [A7_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a8_pmu_events { + A8_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A8_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A8_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A8_PMU_PERFCTR_BIU_UPSTREAM_CYCLE = 0x13, + A8_PMU_PERFCTR_BIU_DOWNSTREAM_CYCLE = 0x14, + A8_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A8_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A8_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A8_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A8_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A8_PMU_PERFCTR_MAP_REWIND = 0x75, + A8_PMU_PERFCTR_MAP_STALL = 0x76, + A8_PMU_PERFCTR_MAP_INT_UOP = 0x7b, + A8_PMU_PERFCTR_MAP_LDST_UOP = 0x7c, + A8_PMU_PERFCTR_MAP_SIMD_UOP = 0x7d, + A8_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A8_PMU_PERFCTR_INST_A32 = 0x8a, + A8_PMU_PERFCTR_INST_T32 = 0x8b, + A8_PMU_PERFCTR_INST_ALL = 0x8c, + A8_PMU_PERFCTR_INST_BRANCH = 0x8d, + A8_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A8_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A8_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A8_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A8_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A8_PMU_PERFCTR_INST_INT_LD = 0x95, + A8_PMU_PERFCTR_INST_INT_ST = 0x96, + A8_PMU_PERFCTR_INST_INT_ALU = 0x97, + A8_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A8_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A8_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A8_PMU_PERFCTR_INST_LDST = 0x9b, + A8_PMU_PERFCTR_UNKNOWN_9c = 0x9c, + A8_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A8_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A8_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A8_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A8_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A8_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A8_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A8_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A8_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A8_PMU_PERFCTR_FETCH_RESTART = 0xde, + A8_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A8_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A8_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A8_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A8_PMU_CFG_COUNT_USER = BIT(8), + A8_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { + [0 ... A8_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_1] = ONLY_5_6_7, + [A8_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A8_PMU_PERFCTR_INST_A32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_T32] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A8_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_INT_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_SIMD_ALU] = ONLY_5_6_7, + [A8_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9c] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_9f] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A8_PMU_PERFCTR_UNKNOWN_f5] = ANY_BUT_0_1, + [A8_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -657,6 +763,12 @@ static int a7_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a7_pmu_event_affinity); } +static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -806,6 +918,17 @@ static int a7_pmu_cyclone_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_typhoon_pmu"; + cpu_pmu->get_event_idx = a8_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -855,6 +978,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, }; From patchwork Fri Feb 28 04:06:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995682 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B6D84C19776 for ; Fri, 28 Feb 2025 04:27:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=bN5ETnIYv+ujndvW8CxGGuC4Kw YgjeI9beKxglK/f7U1Xe8IFoz1W53cdwShUc0XOXspL36eQ2gp1X9Sc0em8ZZaVVGOSKjqN5hn89R rHHv2DLH2y05EtMN9lKMF7MCqJcJM7R9fQFix/Xp/72V3/9k+5uGcFOBbgoyi/XEuKT4SjwUIhVOM 1SRgp+SLa+ABChs0fBC2tTCafagqoTVhh/pSojuJpNzBix096M+xVXhEW0OUDoF28p6lG6B877y8V ipQQZr7voG+2Yd3wdWQ/RqscwLG+FY0XArCrm1MgKKejhwCgzNh1RsnmGPmQ97rIhtIWaaafwxJuF 6YHtqnpA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnryW-00000009jLM-0UKs; Fri, 28 Feb 2025 04:27:48 +0000 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjr-00000009gsr-1Bou for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:40 +0000 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-22113560c57so32747995ad.2 for ; Thu, 27 Feb 2025 20:12:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715959; x=1741320759; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=nZI65W936pnj3P741BT22zSMtKxr/d1erE/eEllft72u6jwzEgxvwyg+oZVAlxTFzm 5mcdtsVoY4syQ8qIDYL5Pg1GJHWTJeldYmaMpxtlBy6C9njUaylNkuM5A8YRcwbikrb3 gSI2U3zV1nihBAPl7yGhmRW0vqeRzuLhlCIoGNc2AguvAaP7A1BpUyimSOrGB8Gd+YW2 7yPiZEMvyn8TtMQtKEkeLtdB/9280h/NrPdYqIciBXnWx+9kES9ubmrQQA/pRcbRzT6L V8aDdm0WgM7lCUgqrRAysXx/HMNLK/OoeUA3uGFQRGliOY2Be9GitaCkepv+8E5r2xxW 36Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715959; x=1741320759; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2B4nOgCKpnlrw/lYJ2ogw5EzOWnWn32vvattNHW96K0=; b=vaCCXz1kiCelM9iK9F9F8VU7R75w5QtUA9cPzQuHrrDD6sg0QU28R/OQiTMIGUDke2 HlUk09ZLWRleQFb0tHtTj4IgK4A65Yr2xEEJgzyg85ezFL6ykxH2RwXFFdXbhE6oVJGQ 25u7mWgU8sdxMPx9yPjo+4swgg9jM4kLG43KixQVggXkqOaUB2WeM3a35iXTKF8Ga6sP v1Zw1bORYw2agmsyZ8y3Y+wZ/zaE+SSzg5vL0kKjVtGVY6aGCxFC6kebIO2gRUCYkBaS subgA1+2sbcOO3tD75Bnt/v0O/+CL5FMIAeF8rTZFJg1IR6MZmrZep+7DsQisHvUSGlw UunQ== X-Forwarded-Encrypted: i=1; AJvYcCVC096izRP5WWcgSa+tFGNt+jHaVE4/nfRDa5uXn0JRsJmLfmbB1tZeUNYgN5cuAg8WHkugOJvZJAgBfFmP+ml5@lists.infradead.org X-Gm-Message-State: AOJu0Yx5TfYaKOArjgCpAu0smnFvNwoFaUDkW4qqJ0334rYeEA8oNHYN EU4NOkTromkYOXK0xGgWQ8AKQgdm3BAcXQjKS7WGU/36gQtv0AUj X-Gm-Gg: ASbGncuQddgWYwfDZYgVOsd0OxdPv/NODCTXOpYGfyxo5p4cE4WipqUyMDa5sEi/09T tpd1uZRxROO58lerfiTU5PCR9mwmOCcyW4ZYmc7frzh2wBMY9kBqbHbSI9WWDX+ioSRxJC/5u1R C8lHVmoDL/Ih/79S9oU4EDysooKTST5yvAQFqO/7m3XUA8Gzm5nLfJz1LyGUDbStVhc0+42M3oI nJ4FNtJk/hPbaoPy292sSMIYTQVkFOhqUWuWxqGwKxkRw6WFosVJnnNHuaAgmiLpYDTwvNusD/y RBTdHf0sslHx32Pk5GjIZDsREUvtVp1zLwjtj0+PAXUplg== X-Google-Smtp-Source: AGHT+IFobHbLUPe1qWSjg0vS/NuuuHrWrjrnIOcZk9KrFUr4l0ugzmYqN/YRWQ+55U0uc1x1jaANhg== X-Received: by 2002:a17:902:d48f:b0:220:c164:6ee1 with SMTP id d9443c01a7336-2236924786cmr32591785ad.32.1740715958751; Thu, 27 Feb 2025 20:12:38 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:38 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:49 +0800 Subject: [PATCH v5 09/11] drivers/perf: apple_m1: Add A9/A9X support MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-9-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6995; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=IOLPmmdLpTyze4pMSwzOoHnsgDuo2hfTL3xYJ/hiFU0=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeJPggy9fUdSdcvZO7WkBi9koaQGYSq8sxPB Q7UNsg4LCSJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iQAKCRABygi3psUI JPPkD/43tzm4+7arSK7tj4uFu6r42VXKIby47hwB4vFW52Tp+wt9Hli4NQL9TEUvxJCqPV0k+7u sWofZ0z+skCyC0+dixWfxqdrkXr3cel4kojdR26tI4HGwbkIwRNZUml/RzWwIE93Y9gxyHmnoRf cYGOtFAOdht36UOphAUKWlXbRaS7Rg6KtAUG6rMWfB0ylN+uimXwQBvjnHAkWYwa+c/Lbs44fnd PwdXQUon+lS2Dl7wjoANFmVZFoii068j21LEWLAWJnZ66KB+qUsNC8o5yk4yX2eDdKtJU7KBMYt TTSImchSa83hrU4i9EylX46KHFF4G9g+6TyRO6LXtMm2bfAaJYNQ5qjztp7QEUIvBEC5G99xijr fszsCTEs/C4IlvUd+GNS5k4PY1QO8biAMHvp5Ryk5QxayJIYP5tjOnJStZJxfPgfSNFoUPwb1Og sEhtiO36gWa9KKtfTiQnFsP7y8qkzH29mEGdCPRoRfoF/cCEmAbFBywd+3UHgnc8kwcRouGGbQY xs5cJbApfLhl6QX99POSlx5ICdrCzUtVNGvyiX3M83lrv/3qqn10g+XZpcaGuSYM47CgGm8GNaO IGQvsIiY1r/iGM8tomA6oYpNRVKC+VYobRwU8fpD407BEbH420DVxRaednO2m0ErqSs+D65wdmd xu2Vr2+cIJR4PBQ== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201239_330634_044EE75B X-CRM114-Status: GOOD ( 13.02 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for CPU PMU found in the Apple A9 and A9X SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 121 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index 04825a1991ab1c670563e3ce91b43fa5d8c85920..f7ae5cd56980b75d8f2073368479d0af77ab351c 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -288,6 +288,109 @@ static const u16 a8_pmu_event_affinity[A8_PMU_PERFCTR_LAST + 1] = { [A8_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; + +enum a9_pmu_events { + A9_PMU_PERFCTR_UNKNOWN_1 = 0x1, + A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A9_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A9_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A9_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A9_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A9_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A9_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A9_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A9_PMU_PERFCTR_MAP_REWIND = 0x75, + A9_PMU_PERFCTR_MAP_STALL = 0x76, + A9_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A9_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A9_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A9_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A9_PMU_PERFCTR_INST_ALL = 0x8c, + A9_PMU_PERFCTR_INST_BRANCH = 0x8d, + A9_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A9_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A9_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A9_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A9_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A9_PMU_PERFCTR_INST_INT_LD = 0x95, + A9_PMU_PERFCTR_INST_INT_ST = 0x96, + A9_PMU_PERFCTR_INST_INT_ALU = 0x97, + A9_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A9_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A9_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A9_PMU_PERFCTR_INST_LDST = 0x9b, + A9_PMU_PERFCTR_INST_BARRIER = 0x9c, + A9_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A9_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A9_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A9_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A9_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A9_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A9_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A9_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A9_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A9_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A9_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A9_PMU_PERFCTR_FETCH_RESTART = 0xde, + A9_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A9_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A9_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A9_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A9_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A9_PMU_CFG_COUNT_USER = BIT(8), + A9_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { + [0 ... A9_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A9_PMU_PERFCTR_UNKNOWN_1] = BIT(7), + [A9_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A9_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A9_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A9_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A9_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A9_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A9_PMU_PERFCTR_UNKNOWN_f6] = ONLY_3_5_7, + [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -769,6 +872,12 @@ static int a8_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a8_pmu_event_affinity); } +static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -929,6 +1038,17 @@ static int a8_pmu_typhoon_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_twister_pmu"; + cpu_pmu->get_event_idx = a9_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = a7_pmu_reset; + cpu_pmu->start = a7_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -978,6 +1098,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, { }, From patchwork Fri Feb 28 04:06:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995683 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E034C19776 for ; Fri, 28 Feb 2025 04:29:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=pM4KnFotilcs9BHR70w43FtMXw fzLKf2huX3NJnAH3a9+Jz9SvaKUQkQw2okoVe1YCy/ORywTqebmVF6T44o+UkSiqwc4G+H2bcb/1J jzpgWxy7rmQA4TG4svKSzrJPN619Ym47Vmbs1WSrQD7J56kTxmQVXAVferHC8m637OFGAu1lmvXQj N8BYBTPhp1GYEcSJX+JB4paqoiLat6KmtD0Roj+mykhHrjsZBI0noasIhx5Rh9eClBdHRicchPxk1 bGNdGI497FNm6mQn2tUJjDqLcW3iLxTa2naWJWs8tKBXO5nJKgIhL+okovx739GMDBY0jx4DPMjtT FwVzMCcg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tns02-00000009jUP-3XMa; Fri, 28 Feb 2025 04:29:22 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjv-00000009guK-1Qh0 for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:44 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2f42992f608so2671479a91.0 for ; Thu, 27 Feb 2025 20:12:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715962; x=1741320762; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=JXNzIhTeaOMF8e692V0jrRnrgTvDHoquupB2G+h9wcjYFgNGMAvuKwi4GKnbdiW3aP oEdhNM8sALbdcwohtoNwt/d/b1Eh9nutOwpV4/kRRLutPTGLDe20so4pE0reLLbhCLke monG5Dsoc1+BdgXHcSZSl17qt/GMKcbB1Tjc4cFS7nHrHYNz8wF93ARmhEbegNqovEUa zoFMxzkyKZwLVYqdntU//Ftxu4j2oJ6ihIYEGQwQT637JXtjJHXVL6b1n2JomI5WHoXy WjDWOtvXZQpl9L4u7kHYUnCBKmGP0Vnuf4X4RhJOSKrA82jorJ9EHhcuSbcTXU13JLgl Ggiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715962; x=1741320762; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r4ZTs0MDQiDNG8cQ+zxDnSK8kcgECMnzyQbgcPHl0+Q=; b=RV2ElLJ9UpvKByXDUTVI1AIdJxLL0xEHmpdJggVBx3HNpPIbTJZy8bUcD3iTRYGdtt rwmUC0lftY2YC66byWYJ2oWi0BBYnUH/ykLo+4fEu+mRgVd9HGWW4R+f+eQUjd4eOpm9 1Yl8j+are6eS8r67U7o7a3LlHUKpiczhWo60H7WFQDCpmYDirFty1fpmf4Hnre0b1LBl j9ehgtbYx9MukJ/GEco9v54wV9kmuz2Em6xM+NBq8fd1izq/gOhpdQe4lkN9nDqivgGa qPJQ2UdFDymuwFFqPpJpl9rm745Gc3rqQXow6YWfN4G42ZMLnYGIWEvzSy6bo1VMq/1G jgNw== X-Forwarded-Encrypted: i=1; AJvYcCVMNXxJjpWqVk5iOEnOzXl7xrP02dA5m+kK984nid2l8uzUPLrVt7UW8xFlzc/bpYRg7q5VEXDAqpQzzm7HaOcT@lists.infradead.org X-Gm-Message-State: AOJu0YyE9vfyVuZAKkAuDqlhM4xeO8XJewHk2yeHYiumKn+GL836/+LF lNM4h4iD/zEHHPlAH30GmAU49PgF3vdVFF60i6CAJRx96q2Y3N5M X-Gm-Gg: ASbGncvl+Ur7Ue1nD4nTTPHEcLfBoyqPTosP0RG6pp9lKCxgA1XkZxdJcLZUBsNEpbS UJyLWzf64CPA4Bg4WCmTXLUKuwiORKZi6L5zlQ9e19Z3vqq0/4NmZOiVwwzdEryGWAmp9nM+F8e CNs7WjxVB7cMp/1xpq5E3FctP1Z59bvzRJF4R3vHewMqKC1sbttkWaxFFjuPSpqEMEBDqNZd69o sKv+EnTIq3dNRR5PgY4h3XE52DgPZrKa1PayEjIqxBMCNLfQGE2/4nNLEz8IwGv2vwQIqa4+wJa aYu6uU5Umpy+veF0+1So/kcBkaU= X-Google-Smtp-Source: AGHT+IFqhQ3+Jin8whEUoGVZX7bKcsoaW7jd2jBIN54ncu/S7t7Uf9bs1cD4DmZoE84D6Q3PRQpLmQ== X-Received: by 2002:a05:6a20:2d22:b0:1ee:ace8:8170 with SMTP id adf61e73a8af0-1f2f4d220d7mr3421754637.22.1740715962418; Thu, 27 Feb 2025 20:12:42 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:42 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:50 +0800 Subject: [PATCH v5 10/11] drivers/perf: apple_m1: Add Apple A10/A10X/T2 Support MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-10-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas Cc: Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-kernel@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7476; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=lf7A3C0Zz4tESlVXeyHjO47IaZTEqkMcyB+fvyCShrA=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeJF7ARst1igEsDf5qEZuBand4fL9ZxzBSTT JA3d4lXXAGJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iQAKCRABygi3psUI JNHrEAC2M1m1LpUSscWJBx8QJKJ2X32+SuIraOYtLz0f/P232SPcI0/iCwexTyVvs5ZtKahNgCa tUEpGqLG65Y9Aq3bhj/uNS/8mZ3MRklfHNMJQnutbMIO2+cMJtumeQVnQ2seFSGdQFY/S97GTkX uDagO93Kx1NfWc5L1fOm79+3OLe1PmHsNJImrHkEymyXPy65MKX7+/AROwcd3L8QRlLxGifUbaK 7VhU15JV7pD72Nr/xbVe3e/pWBtKXQqxA4skKhZYwCsy+l+Ri2hZIeFuHsssrLXIGDIwHSuogMe w4AJ+7JmUBtTPWUuv0abWFt2jDZ6ZyEc9jLGzxJWsrRzlVDIkhuHicPh3gs40gu3hdXTf41YFCn SQ0SoaltYo0aZ5fzNH+W+fkPY4Xoc2PQzn8I7F39UgyDGhWr/IQQjrP+S0aL+VKHGvLeyz2TzIL zQ5SlRohf98IPf7sk/EOo53IPIwt/x2Uo5TN6dkP33rcKk1SXK0SV+YTMn5C66qaUhwFG05bQ3R XhZzbh0iOhuigN2OmC6TC5NadTQAuj3tjNPsvlrnlM+lDaILdhNL6k9fqccKIJO8h5Vv5ETpr6X KBBgnMMIgj85uM7U7Kw/R/4fbiWlSOqvOZq+/RyV1m0MA/MYS8sYSxt9ZxP2aT6TQlbIIz0ptb5 Khrxw7k9feVOB1w== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201243_385117_06CB4E36 X-CRM114-Status: GOOD ( 13.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found in the Apple A10, A10X, T2 SoCs. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 127 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index f7ae5cd56980b75d8f2073368479d0af77ab351c..e66ec1426f5d9d48ef52abd539acff7648958785 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -391,6 +391,115 @@ static const u16 a9_pmu_event_affinity[A9_PMU_PERFCTR_LAST + 1] = { [A9_PMU_PERFCTR_UNKNOWN_f7] = ONLY_3_5_7, }; +enum a10_pmu_events { + A10_PMU_PERFCTR_RETIRE_UOP = 0x1, + A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A10_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A10_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A10_PMU_PERFCTR_L2C_AGENT_LD = 0x1a, + A10_PMU_PERFCTR_L2C_AGENT_LD_MISS = 0x1b, + A10_PMU_PERFCTR_L2C_AGENT_ST = 0x1c, + A10_PMU_PERFCTR_L2C_AGENT_ST_MISS = 0x1d, + A10_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A10_PMU_PERFCTR_MAP_REWIND = 0x75, + A10_PMU_PERFCTR_MAP_STALL = 0x76, + A10_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A10_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A10_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A10_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A10_PMU_PERFCTR_INST_ALL = 0x8c, + A10_PMU_PERFCTR_INST_BRANCH = 0x8d, + A10_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A10_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A10_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A10_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A10_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A10_PMU_PERFCTR_INST_INT_LD = 0x95, + A10_PMU_PERFCTR_INST_INT_ST = 0x96, + A10_PMU_PERFCTR_INST_INT_ALU = 0x97, + A10_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A10_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A10_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A10_PMU_PERFCTR_INST_LDST = 0x9b, + A10_PMU_PERFCTR_INST_BARRIER = 0x9c, + A10_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A10_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A10_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A10_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A10_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A10_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A10_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A10_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A10_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A10_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A10_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A10_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A10_PMU_PERFCTR_FETCH_RESTART = 0xde, + A10_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A10_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A10_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A10_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A10_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A10_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A10_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A10_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A10_PMU_CFG_COUNT_USER = BIT(8), + A10_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { + [0 ... A10_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A10_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A10_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A10_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A10_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A10_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A10_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A10_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A10_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A10_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -878,6 +987,12 @@ static int a9_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a9_pmu_event_affinity); } +static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1049,6 +1164,17 @@ static int a9_pmu_twister_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, A7_PMU_NR_COUNTERS); } +static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_fusion_pmu"; + cpu_pmu->get_event_idx = a10_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = a7_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1098,6 +1224,7 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, }, { .compatible = "apple,cyclone-pmu", .data = a7_pmu_cyclone_init, }, From patchwork Fri Feb 28 04:06:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Chan X-Patchwork-Id: 13995685 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E6381C19776 for ; Fri, 28 Feb 2025 04:31:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=R+od5YJ9p0nUv2AN06du5JF9pN1uvgnK6+9wVlEo+EY=; b=WVvJHV9blUI5CAXbeKn9YEd2Zd lVCpeoIra+aqYTQBkYuIU5e+pY3TQyeNOMISL8jZ4PH0doJvJYgOtD6X4TnlIIuxvYYfuAd4ZyiWx CLnCFUgT5AWkkbpAqaaPpS4fFbnQg8hExt3hYXm3VDOFZbK0ZPb55HbGWOyADB7sGdF9Y3VPFZqcc oHRM3NrzDQ/7TKKUVdFzK9FJwADASmCMBHbM50duLthQYe4g9bZnDiaEwxSUoQNYuKiGC/doWdp4/ y8gRNYPl2MUFv/pG4hgcaG+GyL4BmD3KP71gyZmoN+jR15s3hMwcEbQAYvnjS5u6UstE/tS5ujzVL Z8lwM2uw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tns1Z-00000009jae-24mR; Fri, 28 Feb 2025 04:30:57 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnrjz-00000009gvV-11na for linux-arm-kernel@lists.infradead.org; Fri, 28 Feb 2025 04:12:48 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-22328dca22fso26973715ad.1 for ; Thu, 27 Feb 2025 20:12:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740715966; x=1741320766; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=R+od5YJ9p0nUv2AN06du5JF9pN1uvgnK6+9wVlEo+EY=; b=J/cd29pQllWWio0TZNXc9JTTMjvT0F8JsX9HoEZ1xSVmc2/EMhzuySvdZ3WGPZ/STA E31ct7xqhfCYAJOIL+IO3jK9TSWnCYZZkdYE6iU2NQTI45UpeaCmYdGVkeWQ429i7kGD IfF7jKqJYN+84VQ6ZG9qUxeUUqe16OSTsCuAP8tLaqHjaJhZJmAKhtU1RbQYzmrTFM/j Eptr4UbH+780LC74x/D+PiBnFhP9xdkVdPNZqoFzhwLFO+Y4tH8tJSfo2vff6H0zdj8g WhUGfS+PNTWydQsFO8z7HqbQmwP1WNncanHFiUyTuBUEvS7nJNQIyTu4bjfx1kxOO7BB 6brw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740715966; x=1741320766; 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=R+od5YJ9p0nUv2AN06du5JF9pN1uvgnK6+9wVlEo+EY=; b=L3boAobXGLnxpyeDOOUi/6s0QnV+A5I3K5tMx2X1aem5jDdORCxM+jDHDi19zpMzqw RdfGeDjXZqHOKza8tCcXjsUHHBjX/DCdkKSJNATfjlPCFkxmwS6YVTfnl1i05i6GSrVT Nly3gbUoEbxeEdek13nbqU8/3VO0Uk2TT7C6mPDozOojhxeDRQQaT5eUHW6d4hdRGdai gOn29M82yhqqY7CV5wR7UD9XtnvQ3VWhT03ifEPTrOspYpAhWJ5s0dnI/N8CHeONEjIy BjqsAfYD6kKc5lDXxxcp+6KX77GUnYkBjnI3oRqpPXUWr2zoGvz67uJ5Noksl2dz8dJJ Xl9g== X-Forwarded-Encrypted: i=1; AJvYcCXIlyh1tSKy9DYInw9p4qek7IeqUF2P8/k2XkLtg1wfcZfR0tgFW7o21ThC3dFaV4842XoB/nwQM2AoQVZbgjwW@lists.infradead.org X-Gm-Message-State: AOJu0YxDbB0ZY4Q4SAfUDVA2qh8doM5lx6oGRGPj1WTaP6UeJczzPMFF wKhRhHWWg2uUOVNqfRL6QIzmroaMgJU36quRsfNjY+w3srNgGf1/ X-Gm-Gg: ASbGncv5+61xEe21/CvsRv3ZaPG6CwUix+Ele+vZfppyL5DOAeVkYsSDYBXMKVgg3OM Ovdr2C9oaazBi5t2cn1OF/nw9MfrMYQ4aWUfOU6hueDjRWrm+FFCudVaJ4zn8vLJfoeoWhvCvEM HssQhDgBOsWgWxPJa89Vtm6U3/PiuaZDAtm/uxNY46xP5Cv2djmEkCtdSTlnGhasa8F2y7LHRnW Typn/dX/7PVqNLLhE61cPaUrf/b+xffxxjKgwwS6+/LxOHMmRmRcwbDu/0XLJllF+z68ZCmXtmE YHKJ7VB3YnX1b4kl2l7Ag5x5+P8= X-Google-Smtp-Source: AGHT+IH3jun/Z2K4UvU3b0JjkNyhgsqRz0n2b2yF/e1S+BcT8QaOmiJsqCWr/sIagEV9Z7k5b3xmXg== X-Received: by 2002:a05:6a20:9f88:b0:1f1:b69:9bdd with SMTP id adf61e73a8af0-1f2f4e5744fmr2949956637.37.1740715966533; Thu, 27 Feb 2025 20:12:46 -0800 (PST) Received: from [127.0.1.1] ([49.130.74.133]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-aee7dec4114sm2387856a12.57.2025.02.27.20.12.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 20:12:46 -0800 (PST) From: Nick Chan Date: Fri, 28 Feb 2025 12:06:51 +0800 Subject: [PATCH v5 11/11] drivers/perf: apple_m1: Add Apple A11 Support MIME-Version: 1.0 Message-Id: <20250228-apple-cpmu-v5-11-9e124cd28ed4@gmail.com> References: <20250228-apple-cpmu-v5-0-9e124cd28ed4@gmail.com> In-Reply-To: <20250228-apple-cpmu-v5-0-9e124cd28ed4@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=7990; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=XxC160+Tqr+mTtQ6X7QmLpG1hPP7oDUHUV4SHF0c/Ss=; b=owEBbQKS/ZANAwAIAQHKCLemxQgkAcsmYgBnwTeJDBGjhSQbL4P70UjH1YiLeHfC2A335gKv9 v8GzqGinxKJAjMEAAEIAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCZ8E3iQAKCRABygi3psUI JKGjEACH3k9JOFm9MawJZGkMJ5E5ypJoNn+gPQBZH/dHiEDCqclmmC0w24n8XTCpF/RoR2cH8h7 P38dKroMnkRDUDylIHUM9K6QD6OWID42cm+BVRJaroSZIJ/lV7PdZ1JrdNvEnp4GyV3nikHRmUg cpWomb0LyAeg0UC6za34LxVNURpP/Bw6IGFCtEBIdy0s5sGR8zEn3VnV1pRrfzSd7Nh8ZnYgnx+ s+14E0ePBzmH3Hhec4klS50lJftHx+SXuugvCCXFojQnT6Tl/R+DC2ZA0PWhLq/7vv9XqecncYZ ZESKrXzUS98qn3k2mQv5IDnGhiQo8ZyvCbGdIlY92QvI05jkLFHnEaw843N2I2OkyNZSJk/QyPi KTeDaDw8Wa0JYSZLXsPstbvympdo/UlRymaJUPYO56mye2EbfFEGm299cjPudPYD5WA2S60v/RU cs0ZxvHCaSbshyccaDiJEc23Myw1jOvOdgj6D3Q8ELXoec8QtR/7D/JGRDmJ+iLj87961V5bhcx k7X8icKJeVhgpcnpJcupZgem07fx6DK8b/ybf6Aj6EWnps4ElDjkViTC8r+Jr4aLa6Qzq1v3IpI CKPeMRV5D3HA4NWmSUY/o3SL5Jx+OWa4e9r+lfw6s7vtE7rbkSj96F7zjZX5z9g7f4f+Uy2jFEw DIGTQo8f/h/EAPA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250227_201247_291547_E19701C1 X-CRM114-Status: GOOD ( 13.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add support for the CPU PMU found attached to the performance and efficiency cores of the Apple A11 SoCs. This PMU can deliver its interrupt via IRQ or FIQ. Use FIQ as that is faster. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 137 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index e66ec1426f5d9d48ef52abd539acff7648958785..23d11fcde35b342d841463d83c65b8aee2a493fe 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -500,6 +500,113 @@ static const u16 a10_pmu_event_affinity[A10_PMU_PERFCTR_LAST + 1] = { [A10_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, }; +enum a11_pmu_events { + A11_PMU_PERFCTR_RETIRE_UOP = 0x1, + A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, + A11_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION = 0xa, + A11_PMU_PERFCTR_L2_TLB_MISS_DATA = 0xb, + A11_PMU_PERFCTR_SCHEDULE_UOP = 0x52, + A11_PMU_PERFCTR_MAP_REWIND = 0x75, + A11_PMU_PERFCTR_MAP_STALL = 0x76, + A11_PMU_PERFCTR_MAP_INT_UOP = 0x7c, + A11_PMU_PERFCTR_MAP_LDST_UOP = 0x7d, + A11_PMU_PERFCTR_MAP_SIMD_UOP = 0x7e, + A11_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC = 0x84, + A11_PMU_PERFCTR_INST_A32 = 0x8a, + A11_PMU_PERFCTR_INST_T32 = 0x8b, + A11_PMU_PERFCTR_INST_ALL = 0x8c, + A11_PMU_PERFCTR_INST_BRANCH = 0x8d, + A11_PMU_PERFCTR_INST_BRANCH_CALL = 0x8e, + A11_PMU_PERFCTR_INST_BRANCH_RET = 0x8f, + A11_PMU_PERFCTR_INST_BRANCH_TAKEN = 0x90, + A11_PMU_PERFCTR_INST_BRANCH_INDIR = 0x93, + A11_PMU_PERFCTR_INST_BRANCH_COND = 0x94, + A11_PMU_PERFCTR_INST_INT_LD = 0x95, + A11_PMU_PERFCTR_INST_INT_ST = 0x96, + A11_PMU_PERFCTR_INST_INT_ALU = 0x97, + A11_PMU_PERFCTR_INST_SIMD_LD = 0x98, + A11_PMU_PERFCTR_INST_SIMD_ST = 0x99, + A11_PMU_PERFCTR_INST_SIMD_ALU = 0x9a, + A11_PMU_PERFCTR_INST_LDST = 0x9b, + A11_PMU_PERFCTR_INST_BARRIER = 0x9c, + A11_PMU_PERFCTR_UNKNOWN_9f = 0x9f, + A11_PMU_PERFCTR_L1D_TLB_ACCESS = 0xa0, + A11_PMU_PERFCTR_L1D_TLB_MISS = 0xa1, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST = 0xa2, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD = 0xa3, + A11_PMU_PERFCTR_LD_UNIT_UOP = 0xa6, + A11_PMU_PERFCTR_ST_UNIT_UOP = 0xa7, + A11_PMU_PERFCTR_L1D_CACHE_WRITEBACK = 0xa8, + A11_PMU_PERFCTR_LDST_X64_UOP = 0xb1, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC = 0xb3, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL = 0xb4, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC = 0xbf, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC = 0xc0, + A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC = 0xc1, + A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC = 0xc4, + A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC = 0xc5, + A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC = 0xc6, + A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC = 0xc8, + A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC = 0xca, + A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC = 0xcb, + A11_PMU_PERFCTR_FED_IC_MISS_DEMAND = 0xd3, + A11_PMU_PERFCTR_L1I_TLB_MISS_DEMAND = 0xd4, + A11_PMU_PERFCTR_MAP_DISPATCH_BUBBLE = 0xd6, + A11_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND = 0xdb, + A11_PMU_PERFCTR_FETCH_RESTART = 0xde, + A11_PMU_PERFCTR_ST_NT_UOP = 0xe5, + A11_PMU_PERFCTR_LD_NT_UOP = 0xe6, + A11_PMU_PERFCTR_UNKNOWN_f5 = 0xf5, + A11_PMU_PERFCTR_UNKNOWN_f6 = 0xf6, + A11_PMU_PERFCTR_UNKNOWN_f7 = 0xf7, + A11_PMU_PERFCTR_UNKNOWN_f8 = 0xf8, + A11_PMU_PERFCTR_UNKNOWN_fd = 0xfd, + A11_PMU_PERFCTR_LAST = M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A11_PMU_CFG_COUNT_USER = BIT(8), + A11_PMU_CFG_COUNT_KERNEL = BIT(9), +}; + +static const u16 a11_pmu_event_affinity[A11_PMU_PERFCTR_LAST + 1] = { + [0 ... A11_PMU_PERFCTR_LAST] = ANY_BUT_0_1, + [A11_PMU_PERFCTR_RETIRE_UOP] = BIT(7), + [A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE] = ANY_BUT_0_1 | BIT(0), + [A11_PMU_PERFCTR_INST_ALL] = BIT(7) | BIT(1), + [A11_PMU_PERFCTR_INST_BRANCH] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_CALL] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_RET] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_TAKEN] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_INDIR] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_COND] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_SIMD_LD] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ALU] = BIT(7), + [A11_PMU_PERFCTR_INST_LDST] = ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BARRIER] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_9f] = BIT(7), + [A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] = ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_f5] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f6] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f7] = ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f8] = ONLY_2_TO_7, + [A11_PMU_PERFCTR_UNKNOWN_fd] = ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP = 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE = 0x2, @@ -993,6 +1100,12 @@ static int a10_pmu_get_event_idx(struct pmu_hw_events *cpuc, return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); } +static int a11_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a11_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1175,6 +1288,28 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_pmu) return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } +static int a11_pmu_monsoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_monsoon_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + +static int a11_pmu_mistral_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name = "apple_mistral_pmu"; + cpu_pmu->get_event_idx = a11_pmu_get_event_idx; + cpu_pmu->map_event = m1_pmu_map_event; + cpu_pmu->reset = m1_pmu_reset; + cpu_pmu->start = m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] = &m1_pmu_events_attr_group; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name = "apple_icestorm_pmu"; @@ -1224,6 +1359,8 @@ static const struct of_device_id m1_pmu_of_device_ids[] = { { .compatible = "apple,blizzard-pmu", .data = m2_pmu_blizzard_init, }, { .compatible = "apple,icestorm-pmu", .data = m1_pmu_ice_init, }, { .compatible = "apple,firestorm-pmu", .data = m1_pmu_fire_init, }, + { .compatible = "apple,monsoon-pmu", .data = a11_pmu_monsoon_init, }, + { .compatible = "apple,mistral-pmu", .data = a11_pmu_mistral_init, }, { .compatible = "apple,fusion-pmu", .data = a10_pmu_fusion_init, }, { .compatible = "apple,twister-pmu", .data = a9_pmu_twister_init, }, { .compatible = "apple,typhoon-pmu", .data = a8_pmu_typhoon_init, },