From nobody Fri Oct 3 02:57:23 2025 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 448BC2FF652; Mon, 8 Sep 2025 10:01:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757325701; cv=none; b=Ei2Ve+G29yS1gLRyKAkuFLukNJ/T68ypxo/1f08X9bE3H68m/Gss3EGL7flM+0vJUh6FrQazy+Gxt3zV0+VWB+kVOz8zJbE27ocWNUJtgnh2kUndJ1Ncl1ECUMuV8NiB/JA9oAE8S+lm1SEuS28+uIutt4NmmNi0oxz8gsa6i8k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757325701; c=relaxed/simple; bh=eXvZmBK39TeWTus25bvyHnZagmjkYHmZXICDGfTJwOc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dZCPAhMbuWGyGzpJF7W0kkMD8F072DvoW6eXpB0lAwWgvm3QYYEh2mZV8Hvq5V/ndL4+pZ2XyCspuWOL0Y5G2m0iwPE2KTwlaBWQaJ7W6kgPIWyFs29d+HeJH3cj5zqRuhiOYaJGlQYz75/gmyKufFLyCfvle84EhujtQrhmuyg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I7yrlhdT; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I7yrlhdT" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-24c863e852aso37862945ad.1; Mon, 08 Sep 2025 03:01:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757325700; x=1757930500; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=071bn53SF5Y6btM+NHs+KZ2Murp+EE2d22d8zM6NOIs=; b=I7yrlhdTUlVZ9fQpvIEw9gL5ueKHPp7pWQV9E+TK1QHkcOQ3Aa5rFMLiaVcauQ+XqB Q5Tvn47Eb9QdUbofD68rhos+WZS8eMl49yFcpIP1JxSfZn8S0zp0sk30aB4nBIiqSKmp vQZ2E0kqX15tq1GwybpSSbpGDK8RoDMtjZKo0U+1AHSVIv8e8bVgKoyRZ8xRqltGE7LN 2qcp3wtRGKJ51edg4qYQrrsQC2yOvd69UfDpJ1+Qy5Q/7qbHw0wLmdgWst1AKhP+K96o CCR76EcH9MnQMUnd/USYdj/BNeSxeH5JwbUsP9UoF+Qwug0q/B/Q5rqncmpdZAywwe+N IXfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757325700; x=1757930500; 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=071bn53SF5Y6btM+NHs+KZ2Murp+EE2d22d8zM6NOIs=; b=VAYCnv8Otpn5KPjJgIPry+BlzNFpemov74FRzS9msdBVob2tTyyJrjlyU/3/KUypQd tjDw90YwR2+OZEIRYscOwNIdG+KkGtkzG1DYdmgtSg7v98RygmLOs8U+yiZ0dnagsTVs jp/hsjbfZ8Z9lEiiyPLNW7B2COlOtFxn13rBvd6YFUN35FigutN2RW2g8tQ7LGNI0Hdz Mmv77MkaPbWZIsJrta3ZZVEe1iffqMt0D9rspEGX1+JQ5gR59Iky303x+T8v5UcddMgC WqpNAY8sxE54O0KpotTcCkXoMn5ULXmOvk2S+6g6XlQwY15FJRxX1ia0G+ELhQ+AzC3Y H0Aw== X-Forwarded-Encrypted: i=1; AJvYcCUR+dTrSXVOdXB9JUW3nVw6Lh6z8vANxOAJcCmaeMpb1G0xLrncyptDTRFAkAeHEGOWKVUtgU5JEH+RQKxYUEAEEg==@vger.kernel.org, AJvYcCV61LZY8lDNe1kcNawI2mXEwWWWPR1nvsszw8GY7tJtqiC21OaO2KfuDtUInKAeNsZlCNUVPiVpXsUVxYFe@vger.kernel.org, AJvYcCWJ960/MoI5+arYa7QlLki+LpVIJ+fh46I0eUU5B0abX+JLvFtD2D2DZfPocsh7Q5gEnax/g/EnSQGQ@vger.kernel.org X-Gm-Message-State: AOJu0Ywj+8crn877KfVXgzR5E2JIHds94eCnivNjLY8WZmM9heEsqbte 1vHfmOBYBqtdquiD0T2avqBnpDYzmu6eKqgMDvzupbQPwt/j2o75x6js X-Gm-Gg: ASbGncsHn3GQ9uqfT6PhhufDduz5xrOPyi2kTTj2+Ph2GMnjw2TPbiRqRfiarWskmE1 EpoQ9cUZBjdZyBQkco8xor1dxXeJ+XkZKV5MD3AqEXsrKPRSLq54FDIyHk6rKrP3gjs/0C/MucU yBa8RI9vColOlYUcQtJaihCyXtAp7jpfrNsFDzeKM9XLVNJi/kclTlHVDK77szju4z4QXSNJTz5 hibS6h75PXsSAmN5acoSV/xqaohHvZGLlUryrpLgm3X8s2cIsnQG/rWSf5mNPbW1IG/g3AyAZ4E KGsedLwh6MNcVIMWp2ylELi32tL3iTwcUJL9WWKA82vMQmX6MDxiNgghTiDCeqs6ExU2Me0wHvf efwF5dr0tkXINHAEOdgCvtnLkEkQFFM2ZFZYkzg== X-Google-Smtp-Source: AGHT+IEGUl7LoA/FHitDuvGBlB8EGhMm3IQNAyh8Mue+gzf027Ms5/fwed9z1hSvn4P3CoOF3PlTMQ== X-Received: by 2002:a17:902:e80e:b0:246:cfc4:9a52 with SMTP id d9443c01a7336-251736def47mr94169785ad.52.1757325699545; Mon, 08 Sep 2025 03:01:39 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-24ccfc7f993sm107826545ad.63.2025.09.08.03.01.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Sep 2025 03:01:39 -0700 (PDT) From: Nick Chan Date: Mon, 08 Sep 2025 17:58:36 +0800 Subject: [PATCH RESEND v8 12/21] drivers/perf: apple_m1: Add Apple A11 Support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250908-apple-cpmu-v8-12-d83b4544dc14@gmail.com> References: <20250908-apple-cpmu-v8-0-d83b4544dc14@gmail.com> In-Reply-To: <20250908-apple-cpmu-v8-0-d83b4544dc14@gmail.com> To: Will Deacon , Mark Rutland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas , Janne Grunau , Alyssa Rosenzweig , Neal Gompa , Sven Peter 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=7991; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=eXvZmBK39TeWTus25bvyHnZagmjkYHmZXICDGfTJwOc=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBovqlEeTgLQQhpA8oGsFfUu7v12sKxAAOX9fPuC Y2ZZ/Pq+96JAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaL6pRAAKCRABygi3psUI JIpGEACKmhVZVpkC/1BZ8oss54MQgUZvMj8AxKLzQ3g2/6tHTC3VdvJduPbOChQYy/E/nnYjAHP lsPAb5+xs16I9BDnoJTxgeAdr6QoJALJWx2PESKF/kcjWvskFGd2XvAI+NQtW/Q/5QLNbXSMof8 zkXVQsdcWo+4kENgKWH6iVSNbf5NmnMlMmXu/ZXAr71e8Vmwt3OrCYBZRzQ28sCUCZmGjnCr5Mg TLzMcnhoYla3P/5i++C6J3qvRgzNYpslXNyfujxRB8W2ylXO6RROoWMAR0gf5Oqg2IUaWWO3ls3 thiaNa/mZ+BmxTT1uPOQHM4j3HgyQ4l939BzGCfH2bufS3XuxgakTfA/yE8LNBfu1068Hq6vTN8 Qb9oGhOnqk4Eud7jKUvXFSPefqntZjvUiOZ+inUows5qAG2cnhzVlbleHoDwV8xgBiYkW97pKPE 3IWqqiKzN5fZW659D802DwbvjAKh0msZnjqidvjy1F5ILK98ChfBreTlSo/RfDj+DFCruoo8H7b gScMfzb0pN+h9BCO88prWkFkR7RudWFDLNpmIfCLt0kJtcpiomt0Wyer0UZwe4XHyIXiSKvzgEs 96iJU4gXjUVFTaCr59Bkr0HKXduW6rRT6nRlc43+mx9CC5qlxWSLL5pKXq0QvmQNSABvTtUF4mX wB4zZQ1xX3apVaw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Add support for the CPU PMU found attached to the performance and efficiency cores of the Apple A11 SoCs. This PMU can deliver its interrupt via IRQ or FIQ. Use FIQ as that is faster. Signed-off-by: Nick Chan --- drivers/perf/apple_m1_cpu_pmu.c | 137 ++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 137 insertions(+) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pm= u.c index 37ca7e99aaad97526c468d3c98ec7ce4fe115763..31fe89c928364719ee0d7101128= 6a91adaf6b99f 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -501,6 +501,113 @@ static const u16 a10_pmu_event_affinity[A10_PMU_PERFC= TR_LAST + 1] =3D { [A10_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, }; =20 +enum a11_pmu_events { + A11_PMU_PERFCTR_RETIRE_UOP =3D 0x1, + A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, + A11_PMU_PERFCTR_L2_TLB_MISS_INSTRUCTION =3D 0xa, + A11_PMU_PERFCTR_L2_TLB_MISS_DATA =3D 0xb, + A11_PMU_PERFCTR_SCHEDULE_UOP =3D 0x52, + A11_PMU_PERFCTR_MAP_REWIND =3D 0x75, + A11_PMU_PERFCTR_MAP_STALL =3D 0x76, + A11_PMU_PERFCTR_MAP_INT_UOP =3D 0x7c, + A11_PMU_PERFCTR_MAP_LDST_UOP =3D 0x7d, + A11_PMU_PERFCTR_MAP_SIMD_UOP =3D 0x7e, + A11_PMU_PERFCTR_FLUSH_RESTART_OTHER_NONSPEC =3D 0x84, + A11_PMU_PERFCTR_INST_A32 =3D 0x8a, + A11_PMU_PERFCTR_INST_T32 =3D 0x8b, + A11_PMU_PERFCTR_INST_ALL =3D 0x8c, + A11_PMU_PERFCTR_INST_BRANCH =3D 0x8d, + A11_PMU_PERFCTR_INST_BRANCH_CALL =3D 0x8e, + A11_PMU_PERFCTR_INST_BRANCH_RET =3D 0x8f, + A11_PMU_PERFCTR_INST_BRANCH_TAKEN =3D 0x90, + A11_PMU_PERFCTR_INST_BRANCH_INDIR =3D 0x93, + A11_PMU_PERFCTR_INST_BRANCH_COND =3D 0x94, + A11_PMU_PERFCTR_INST_INT_LD =3D 0x95, + A11_PMU_PERFCTR_INST_INT_ST =3D 0x96, + A11_PMU_PERFCTR_INST_INT_ALU =3D 0x97, + A11_PMU_PERFCTR_INST_SIMD_LD =3D 0x98, + A11_PMU_PERFCTR_INST_SIMD_ST =3D 0x99, + A11_PMU_PERFCTR_INST_SIMD_ALU =3D 0x9a, + A11_PMU_PERFCTR_INST_LDST =3D 0x9b, + A11_PMU_PERFCTR_INST_BARRIER =3D 0x9c, + A11_PMU_PERFCTR_UNKNOWN_9f =3D 0x9f, + A11_PMU_PERFCTR_L1D_TLB_ACCESS =3D 0xa0, + A11_PMU_PERFCTR_L1D_TLB_MISS =3D 0xa1, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST =3D 0xa2, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD =3D 0xa3, + A11_PMU_PERFCTR_LD_UNIT_UOP =3D 0xa6, + A11_PMU_PERFCTR_ST_UNIT_UOP =3D 0xa7, + A11_PMU_PERFCTR_L1D_CACHE_WRITEBACK =3D 0xa8, + A11_PMU_PERFCTR_LDST_X64_UOP =3D 0xb1, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_SUCC =3D 0xb3, + A11_PMU_PERFCTR_ATOMIC_OR_EXCLUSIVE_FAIL =3D 0xb4, + A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC =3D 0xbf, + A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC =3D 0xc0, + A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC =3D 0xc1, + A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC =3D 0xc4, + A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC =3D 0xc5, + A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC =3D 0xc6, + A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC =3D 0xc8, + A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC =3D 0xca, + A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC =3D 0xcb, + A11_PMU_PERFCTR_FED_IC_MISS_DEMAND =3D 0xd3, + A11_PMU_PERFCTR_L1I_TLB_MISS_DEMAND =3D 0xd4, + A11_PMU_PERFCTR_MAP_DISPATCH_BUBBLE =3D 0xd6, + A11_PMU_PERFCTR_L1I_CACHE_MISS_DEMAND =3D 0xdb, + A11_PMU_PERFCTR_FETCH_RESTART =3D 0xde, + A11_PMU_PERFCTR_ST_NT_UOP =3D 0xe5, + A11_PMU_PERFCTR_LD_NT_UOP =3D 0xe6, + A11_PMU_PERFCTR_UNKNOWN_f5 =3D 0xf5, + A11_PMU_PERFCTR_UNKNOWN_f6 =3D 0xf6, + A11_PMU_PERFCTR_UNKNOWN_f7 =3D 0xf7, + A11_PMU_PERFCTR_UNKNOWN_f8 =3D 0xf8, + A11_PMU_PERFCTR_UNKNOWN_fd =3D 0xfd, + A11_PMU_PERFCTR_LAST =3D M1_PMU_CFG_EVENT, + + /* + * From this point onwards, these are not actual HW events, + * but attributes that get stored in hw->config_base. + */ + A11_PMU_CFG_COUNT_USER =3D BIT(8), + A11_PMU_CFG_COUNT_KERNEL =3D BIT(9), +}; + +static const u16 a11_pmu_event_affinity[A11_PMU_PERFCTR_LAST + 1] =3D { + [0 ... A11_PMU_PERFCTR_LAST] =3D ANY_BUT_0_1, + [A11_PMU_PERFCTR_RETIRE_UOP] =3D BIT(7), + [A11_PMU_PERFCTR_CORE_ACTIVE_CYCLE] =3D ANY_BUT_0_1 | BIT(0), + [A11_PMU_PERFCTR_INST_ALL] =3D BIT(7) | BIT(1), + [A11_PMU_PERFCTR_INST_BRANCH] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_CALL] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_RET] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_TAKEN] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_INDIR] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BRANCH_COND] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_LD] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_INT_ALU] =3D BIT(7), + [A11_PMU_PERFCTR_INST_SIMD_LD] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_SIMD_ALU] =3D BIT(7), + [A11_PMU_PERFCTR_INST_LDST] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_INST_BARRIER] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_9f] =3D BIT(7), + [A11_PMU_PERFCTR_L1D_CACHE_MISS_LD_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_CACHE_MISS_ST_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_L1D_TLB_MISS_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_ST_MEMORY_ORDER_VIOLATION_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_COND_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_RET_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_CALL_INDIR_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_BRANCH_MISPRED_NONSPEC] =3D ONLY_5_6_7, + [A11_PMU_PERFCTR_UNKNOWN_f5] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f6] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f7] =3D ONLY_2_4_6, + [A11_PMU_PERFCTR_UNKNOWN_f8] =3D ONLY_2_TO_7, + [A11_PMU_PERFCTR_UNKNOWN_fd] =3D ONLY_2_4_6, +}; + enum m1_pmu_events { M1_PMU_PERFCTR_RETIRE_UOP =3D 0x1, M1_PMU_PERFCTR_CORE_ACTIVE_CYCLE =3D 0x2, @@ -1020,6 +1127,12 @@ static int a10_pmu_get_event_idx(struct pmu_hw_event= s *cpuc, return apple_pmu_get_event_idx(cpuc, event, a10_pmu_event_affinity); } =20 +static int a11_pmu_get_event_idx(struct pmu_hw_events *cpuc, + struct perf_event *event) +{ + return apple_pmu_get_event_idx(cpuc, event, a11_pmu_event_affinity); +} + static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, struct perf_event *event) { @@ -1231,6 +1344,28 @@ static int a10_pmu_fusion_init(struct arm_pmu *cpu_p= mu) return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); } =20 +static int a11_pmu_monsoon_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_monsoon_pmu"; + cpu_pmu->get_event_idx =3D a11_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =3D &m1_pmu_events_attr_gr= oup; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + +static int a11_pmu_mistral_init(struct arm_pmu *cpu_pmu) +{ + cpu_pmu->name =3D "apple_mistral_pmu"; + cpu_pmu->get_event_idx =3D a11_pmu_get_event_idx; + cpu_pmu->map_event =3D m1_pmu_map_event; + cpu_pmu->reset =3D m1_pmu_reset; + cpu_pmu->start =3D m1_pmu_start; + cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_EVENTS] =3D &m1_pmu_events_attr_gr= oup; + return apple_pmu_init(cpu_pmu, M1_PMU_NR_COUNTERS); +} + static int m1_pmu_ice_init(struct arm_pmu *cpu_pmu) { cpu_pmu->name =3D "apple_icestorm_pmu"; @@ -1280,6 +1415,8 @@ static const struct of_device_id m1_pmu_of_device_ids= [] =3D { { .compatible =3D "apple,blizzard-pmu", .data =3D m2_pmu_blizzard_init, }, { .compatible =3D "apple,icestorm-pmu", .data =3D m1_pmu_ice_init, }, { .compatible =3D "apple,firestorm-pmu", .data =3D m1_pmu_fire_init, }, + { .compatible =3D "apple,monsoon-pmu", .data =3D a11_pmu_monsoon_init, }, + { .compatible =3D "apple,mistral-pmu", .data =3D a11_pmu_mistral_init, }, { .compatible =3D "apple,fusion-pmu", .data =3D a10_pmu_fusion_init, }, { .compatible =3D "apple,twister-pmu", .data =3D a9_pmu_twister_init, }, { .compatible =3D "apple,typhoon-pmu", .data =3D a8_pmu_typhoon_init, }, --=20 2.51.0