From patchwork Mon Jun 5 17:01:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 103401 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2838343vqr; Mon, 5 Jun 2023 10:19:52 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ62mF15ek8fvbudpwvYxt1+1VwdQDNXwjyEXT774PbiCrZcdMU55HWLRnLlJUqvIzyVuxyH X-Received: by 2002:a05:6a20:3950:b0:117:565c:65f5 with SMTP id r16-20020a056a20395000b00117565c65f5mr903592pzg.22.1685985592204; Mon, 05 Jun 2023 10:19:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685985592; cv=none; d=google.com; s=arc-20160816; b=vmxFy++JUjIrD/IhAkAL+AIx9OrY66jZkCXPe6bwY7HCZhGUxBtnh8cUo/0j4KifMc XeXi0fBauhoGZ9zHCLBRIzH8lsM0SP0V/Twq81/fYxEJ+PJ7wm+6k+XXgjf1VZJbrz++ uHfjpM9ubtPh0J48Aqi2zoMpxubibNQwFc1ODd2TOySOkaqX8ilQLXb9Wq3YQVd0ZGLY TjixhgvP5QSr3CKcu6XFfdxku/pBo4esyq82fZleMkB1C+ctaU+Qt6ka8u/WdkLc54Jv vR9gvSTD684wFIhMPGCJjprA5z6n9WHW4nFxS33YXOB77CnrepOkyIaOyJFKotUukE81 CnrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=b6DYqpoLQ3wmrXzODHSW39wqOGmaf4tRFk+i/AUwD3o=; b=Xk8u3nbkNiPgk/UMgpvbPqzX/eThN1MgkGmvlVkf2EoiaFRhiQ7FLXCSNE5tD9kJWg 25AOwfbVXPVTtVNAr+e0/kVE+nhk30k+gjsKDgazeCBtYLtLuhI1h3MONDhCvHPVpq9O 6Zcapk9lQA1TxKjJL0CsGtoH2C9PgDRfXXXEBhnNqNx14II5vIKKfnDtGm/GcO3P1XTK AwCTScI2T0w6lFzeDMidxkSlKKJ0fONzxwhpXVLIRSHLwG9sHBA1mRE7NfBHISF5uikV aGQYS6FLFd6yC7Nz7GzR1wRBd2K/bqHnNaUl3gb2IO03NvRVjsi2/TKMS4sqjDWUBEsW cb6Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s21-20020a632c15000000b00543e3449f28si145309pgs.616.2023.06.05.10.19.39; Mon, 05 Jun 2023 10:19:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235131AbjFERB7 (ORCPT + 99 others); Mon, 5 Jun 2023 13:01:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235088AbjFERBt (ORCPT ); Mon, 5 Jun 2023 13:01:49 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id ECB0F183 for ; Mon, 5 Jun 2023 10:01:42 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3B02B152B; Mon, 5 Jun 2023 10:02:28 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id AD32B3F587; Mon, 5 Jun 2023 10:01:41 -0700 (PDT) From: Robin Murphy To: will@kernel.org Cc: mark.rutland@arm.com, suzuki.poulose@arm.com, bwicaksono@nvidia.com, ilkka@os.amperecomputing.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/4] perf/arm_cspmu: Fix event attribute type Date: Mon, 5 Jun 2023 18:01:31 +0100 Message-Id: <27c0804af64007b2400abbc40278f642ee6a0a29.1685983270.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767884027953655948?= X-GMAIL-MSGID: =?utf-8?q?1767884027953655948?= ARM_CSPMU_EVENT_ATTR() defines a struct perf_pmu_events_attr, so arm_cspmu_sysfs_event_show() should not be interpreting it as struct dev_ext_attribute. Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver") Reviewed-by: Suzuki K Poulose Reviewed-and-tested-by: Ilkka Koskinen Signed-off-by: Robin Murphy --- Decided to stick with this rather than change the definition, because I like avoiding casts :) drivers/perf/arm_cspmu/arm_cspmu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index a3f1c410b417..72dc7a9e1ca8 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -189,10 +189,10 @@ static inline bool use_64b_counter_reg(const struct arm_cspmu *cspmu) ssize_t arm_cspmu_sysfs_event_show(struct device *dev, struct device_attribute *attr, char *buf) { - struct dev_ext_attribute *eattr = - container_of(attr, struct dev_ext_attribute, attr); - return sysfs_emit(buf, "event=0x%llx\n", - (unsigned long long)eattr->var); + struct perf_pmu_events_attr *pmu_attr; + + pmu_attr = container_of(attr, typeof(*pmu_attr), attr); + return sysfs_emit(buf, "event=0x%llx\n", pmu_attr->id); } EXPORT_SYMBOL_GPL(arm_cspmu_sysfs_event_show); From patchwork Mon Jun 5 17:01:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 103402 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2838362vqr; Mon, 5 Jun 2023 10:19:53 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4o2Wu3FcP/JMrU95/v+Br4lbi1BEesx0Bqr8j+sse7LarTjdM9Apy3rjWphuqQq/hPfSC/ X-Received: by 2002:a05:6a00:99d:b0:63b:8eeb:77b8 with SMTP id u29-20020a056a00099d00b0063b8eeb77b8mr391001pfg.13.1685985593115; Mon, 05 Jun 2023 10:19:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685985593; cv=none; d=google.com; s=arc-20160816; b=ylwoWNkQJGjqLSPcc4MaOMDKhLIB0Sx1rpQUUE/r0EK46bKzJ1p3ZUmjteNhnMi6rC T0+Wh2lZOzzEK2BxPb2SeeAUQdufNB/s7JHtlqbx9HS2q5yYpv8tvgeMIc4Gyy3s2+H8 YU77wuDYa4eamp6HMlDpwha0JXuQM9ozhpVefOxsifp/8vLlokyBc3zLxB1VceZ3t3KC cq06exv4BKb+4zTcE6uRqrAb4ZtVbT9fbSB7pN5y/6kJOXI9EbQ34zfJ2/DzkcpTnQYk YqQYF0NuRyxLsv2IJYS/gRhnezRoZqPzB75avTTGQ5DVpuEY4s9nLLFOUtnzvBgal8FR fOXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=PrWGHPepL4BqZMt8r1m7k++jp28c4/60KZBiaeVl8bQ=; b=d8RTnkAWoBi3zvGApWb339l2UEt+WjihwFQIiWHaDyyOxLRrqCNLcltqWpaCY9v1CA WV700CvfdX6EeJJGrcS+7Yk+TArpZZrIizZ7LhFHjBMYAafown9b/DLUV+IGuSn6+OKd 7rIiPx3wtaKt1B3+ixYHGi7XIJA9gfcV9MJkdm1mAc86lPXlvsM9x8lONVCJphor1zfx 8CRCmTJe81KChqZ0ZzS5E+YJGB1w7AMl+Vi1MMlZGt2MSmR4Pbap721pfkj4hlGU9r8+ IpSSheFCaTy8z3AMQPMRTKnhbCpZikzNUO/V7QKj6pb2pQzfdfLhsNabh2PSji7XTfFQ AGFA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f10-20020a63de0a000000b0053febd41e7esi5886579pgg.380.2023.06.05.10.19.41; Mon, 05 Jun 2023 10:19:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235233AbjFERCE (ORCPT + 99 others); Mon, 5 Jun 2023 13:02:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234726AbjFERBu (ORCPT ); Mon, 5 Jun 2023 13:01:50 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A4C9219C for ; Mon, 5 Jun 2023 10:01:46 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0349BD75; Mon, 5 Jun 2023 10:02:32 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1C09C3F587; Mon, 5 Jun 2023 10:01:45 -0700 (PDT) From: Robin Murphy To: will@kernel.org Cc: mark.rutland@arm.com, suzuki.poulose@arm.com, bwicaksono@nvidia.com, ilkka@os.amperecomputing.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Lorenzo Pieralisi , Sudeep Holla , Hanjun Guo Subject: [PATCH v2 2/4] ACPI/APMT: Don't register invalid resource Date: Mon, 5 Jun 2023 18:01:32 +0100 Message-Id: <63b34656e1f7b41bcb458fb6d7496e04db757e0d.1685983270.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767884029096463658?= X-GMAIL-MSGID: =?utf-8?q?1767884029096463658?= Don't register a resource for the second page unless the dual-page extension flag is actually present to say it's valid. CC: Lorenzo Pieralisi CC: Sudeep Holla Reviewed-by: Suzuki K Poulose Reviewed-by: Hanjun Guo Reviewed-and-tested-by: Ilkka Koskinen Signed-off-by: Robin Murphy Acked-by: Lorenzo Pieralisi --- drivers/acpi/arm64/apmt.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/acpi/arm64/apmt.c b/drivers/acpi/arm64/apmt.c index 8cab69fa5d59..aa7d5c3c0dd8 100644 --- a/drivers/acpi/arm64/apmt.c +++ b/drivers/acpi/arm64/apmt.c @@ -35,11 +35,13 @@ static int __init apmt_init_resources(struct resource *res, num_res++; - res[num_res].start = node->base_address1; - res[num_res].end = node->base_address1 + SZ_4K - 1; - res[num_res].flags = IORESOURCE_MEM; + if (node->flags & ACPI_APMT_FLAGS_DUAL_PAGE) { + res[num_res].start = node->base_address1; + res[num_res].end = node->base_address1 + SZ_4K - 1; + res[num_res].flags = IORESOURCE_MEM; - num_res++; + num_res++; + } if (node->ovflw_irq != 0) { trigger = (node->ovflw_irq_flags & ACPI_APMT_OVFLW_IRQ_FLAGS_MODE); From patchwork Mon Jun 5 17:01:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 103407 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2844860vqr; Mon, 5 Jun 2023 10:31:24 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5AHlHY02suAlRmRdwIRYskSeo6Ud3/kAoqr2nETpncoPFfhoacFrt9KQiLy2n2L+NHCWFp X-Received: by 2002:a05:6a20:7290:b0:104:28d6:5db3 with SMTP id o16-20020a056a20729000b0010428d65db3mr8735819pzk.29.1685986284601; Mon, 05 Jun 2023 10:31:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685986284; cv=none; d=google.com; s=arc-20160816; b=pwr5RkdHbmX9odMl8VwjhLJJyaI1xxS2S4n0/w9m0dRl3cTzoemRpXl+VpuAi2U7wK bQJMqzFPMrvh86nbiR0Ssam5XGy2mrmgx2AZu3GOfRB4YQJ9Zt3eqEYf3JoVrkZ4CJwo /UwpbKHTrq4Hr+5ds4GMYFrh3MXPyck3noO2Oixk8nkoTp3lz/7o7I+s1fJKj07e2ylN YnBvyk4vsm4PcaKJKlgy/guEX8wKObYHoPmL2n7RpAx8yW9VrOG1+nYkczlcqP0JbRxO 4c8Vkk+yfhwQ0y+O54CcAGpZzHyi1gPR4o3FpcMF0PEwEeJALdp4w66pULQ+lESy0a9D ARgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=JMFQoklt2YG1uHgJBI5W1bzQn1MbZ/eyQvNSmAE08Ko=; b=Xs2gqpDgYsstbhEkmgNRmFYZr7ocxpcKxaP69d4HNtaM6KVd/QLkd4c/lPsgGFEL/I kEiSx7QWjLCsc9m0O9bbSuB79CmlxK+58XdOA+5QweO+1zshDx7jXibP6/g8aq19ktFZ k6QB6ui6zXQgtXTveJVb40SDgd6yO3givXOOqPHRHsCZuqCQxau6yPBWA6VdMMlRE2gB h0HWQrt5NQwI30zcTuh06V1nMkYK93tCMo7c2lrwPhz05ARgrRfXpTUgo5qrzXPP1E8X EyaUzMNjqjAve9c10kak9ghQzaCNkpYojhEI17D3LHGt8OcFLAgAY2OzjDGjP+6OiXJo wexA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x5-20020a656aa5000000b005346b982bd5si5783993pgu.433.2023.06.05.10.31.12; Mon, 05 Jun 2023 10:31:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235161AbjFERCI (ORCPT + 99 others); Mon, 5 Jun 2023 13:02:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235151AbjFERBu (ORCPT ); Mon, 5 Jun 2023 13:01:50 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A3411F1 for ; Mon, 5 Jun 2023 10:01:48 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F30B8152B; Mon, 5 Jun 2023 10:02:33 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 714D13F587; Mon, 5 Jun 2023 10:01:47 -0700 (PDT) From: Robin Murphy To: will@kernel.org Cc: mark.rutland@arm.com, suzuki.poulose@arm.com, bwicaksono@nvidia.com, ilkka@os.amperecomputing.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/4] perf/arm_cspmu: Clean up ACPI dependency Date: Mon, 5 Jun 2023 18:01:33 +0100 Message-Id: <9d126711c7498b199b3e6f5cf48ca60ffb9df54c.1685983270.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767884754525209952?= X-GMAIL-MSGID: =?utf-8?q?1767884754525209952?= Build-wise, the ACPI dependency consists of only a couple of things which could probably stand being factored out into ACPI helpers anyway. However for the immediate concern of working towards Devicetree support here, it's easy enough to make a few tweaks to contain the affected code locally, such that we can relax the Kconfig dependency. Reviewed-and-Tested-by: Suzuki K Poulose Reviewed-by: Ilkka Koskinen Signed-off-by: Robin Murphy --- drivers/perf/arm_cspmu/Kconfig | 3 +-- drivers/perf/arm_cspmu/arm_cspmu.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/perf/arm_cspmu/Kconfig b/drivers/perf/arm_cspmu/Kconfig index 0b316fe69a45..25d25ded0983 100644 --- a/drivers/perf/arm_cspmu/Kconfig +++ b/drivers/perf/arm_cspmu/Kconfig @@ -4,8 +4,7 @@ config ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU tristate "ARM Coresight Architecture PMU" - depends on ARM64 && ACPI - depends on ACPI_APMT || COMPILE_TEST + depends on ARM64 || COMPILE_TEST help Provides support for performance monitoring unit (PMU) devices based on ARM CoreSight PMU architecture. Note that this PMU diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index 72dc7a9e1ca8..3b91115c376d 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -28,7 +28,6 @@ #include #include #include -#include #include "arm_cspmu.h" #include "nvidia_cspmu.h" @@ -1075,6 +1074,9 @@ static int arm_cspmu_request_irq(struct arm_cspmu *cspmu) return 0; } +#if defined(CONFIG_ACPI) && defined(CONFIG_ARM64) +#include + static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid) { u32 acpi_uid; @@ -1099,7 +1101,7 @@ static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid) return -ENODEV; } -static int arm_cspmu_get_cpus(struct arm_cspmu *cspmu) +static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu) { struct device *dev; struct acpi_apmt_node *apmt_node; @@ -1135,6 +1137,17 @@ static int arm_cspmu_get_cpus(struct arm_cspmu *cspmu) return 0; } +#else +static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu) +{ + return -ENODEV; +} +#endif + +static int arm_cspmu_get_cpus(struct arm_cspmu *cspmu) +{ + return arm_cspmu_acpi_get_cpus(cspmu); +} static int arm_cspmu_register_pmu(struct arm_cspmu *cspmu) { From patchwork Mon Jun 5 17:01:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 103400 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2837965vqr; Mon, 5 Jun 2023 10:19:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4z+d7HVPTlAWqShwpXYWRSyxAhKkmKKK6rbyPde/Aqm8mQ0s18BU9UWpQtPRwze6Q5X1Qx X-Received: by 2002:a17:902:eecc:b0:1af:d213:668c with SMTP id h12-20020a170902eecc00b001afd213668cmr3923798plb.12.1685985550620; Mon, 05 Jun 2023 10:19:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685985550; cv=none; d=google.com; s=arc-20160816; b=KLoXpN1AOeFuSNGWlFBpkKsgK8cnmt7btIpi0/MVxwVrn1lD3ny8xdgdOsETWA/Luh T2PbWAYjXRz/rjXJkc/wySrUkQ/AQ+BUt5PutSiH+r5n9FzEQT8jRBsXdmgKd9jel5S7 6zKNoZW2tGKPUQro4NP8/z7dsM7lXONkEJCyiGhjF8IfQDT7EyjwJX3l6Ta77MxnHA5g kN90X9YfmTS1SRhuj8qpP75V24IWx518TtCJaz2L50+afELzeye786xN8V1ddXK6kl5+ EcE6r/7s/SIPwNipO15F6EZEIA5FJeSUD+Um2sVJB9YjYZjnhNczD0tpqWysbzdLUILe r4HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=fwyzQ60XUkY02Amtd624sONxd44mLMTx6ISb9McGBM0=; b=KAJr1pD9PbsGQJEvXEBNFJCVbZP77FzVzAgfU5IxKWynNhBcxhPL0YUPRKCoZtxb4+ f0YTosVc7uu3s/mTcrJR4yizRP3r4gPYvrHCt3PS2swAqtzML8pbv3oHsjoDvvFDzblx ts8lgOfnWHMW1JjGYjE1/GFLSoHsDTXVF8B2GUavljotB+ShzKH0vbkB7GV7t5NFbcBq GyMzNWwCWJfx2oqbnwK0iveZOI5PtCj/XkznWZD1SueQzRQz6htHVnewERxzUCSTKcE/ ZZ/Oj26MI8Wng6ZOCFDvDbVyG4wZzt/eD/eOmkpDSWi03PoUPPje8DDpoIjwdbtQqiP6 Yb3g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h7-20020a170902680700b001a69d1be184si5590878plk.506.2023.06.05.10.18.57; Mon, 05 Jun 2023 10:19:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235196AbjFERCM (ORCPT + 99 others); Mon, 5 Jun 2023 13:02:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235162AbjFERBz (ORCPT ); Mon, 5 Jun 2023 13:01:55 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3F0A0A6 for ; Mon, 5 Jun 2023 10:01:51 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 90EA015BF; Mon, 5 Jun 2023 10:02:36 -0700 (PDT) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 0F4753F587; Mon, 5 Jun 2023 10:01:49 -0700 (PDT) From: Robin Murphy To: will@kernel.org Cc: mark.rutland@arm.com, suzuki.poulose@arm.com, bwicaksono@nvidia.com, ilkka@os.amperecomputing.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/4] perf/arm_cspmu: Decouple APMT dependency Date: Mon, 5 Jun 2023 18:01:34 +0100 Message-Id: <88f97268603e1aa6016d178982a1dc2861f6770d.1685983270.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.39.2.101.g768bb238c484.dirty In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767883984592211685?= X-GMAIL-MSGID: =?utf-8?q?1767883984592211685?= The functional paths of the driver need not care about ACPI, so abstract the property of atomic doubleword access as its own flag (repacking the structure for a better fit). We also do not need to go poking directly at the APMT for standard resources which the ACPI layer has already dealt with, so deal with the optional MMIO page and interrupt in the normal firmware-agnostic manner. The few remaining portions of probing that *are* APMT-specific can still easily retrieve the APMT pointer as needed without us having to carry a duplicate copy around everywhere. Reviewed-by: Suzuki K Poulose Signed-off-by: Robin Murphy --- v2: Fix platdata dereferences, clean up now-unused acpi.h include too. --- drivers/perf/arm_cspmu/arm_cspmu.c | 54 ++++++++++-------------------- drivers/perf/arm_cspmu/arm_cspmu.h | 5 ++- 2 files changed, 19 insertions(+), 40 deletions(-) diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index 3b91115c376d..38e1170af347 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -100,10 +100,6 @@ #define ARM_CSPMU_ACTIVE_CPU_MASK 0x0 #define ARM_CSPMU_ASSOCIATED_CPU_MASK 0x1 -/* Check if field f in flags is set with value v */ -#define CHECK_APMT_FLAG(flags, f, v) \ - ((flags & (ACPI_APMT_FLAGS_ ## f)) == (ACPI_APMT_FLAGS_ ## f ## _ ## v)) - /* Check and use default if implementer doesn't provide attribute callback */ #define CHECK_DEFAULT_IMPL_OPS(ops, callback) \ do { \ @@ -121,6 +117,11 @@ static unsigned long arm_cspmu_cpuhp_state; +static struct acpi_apmt_node *arm_cspmu_apmt_node(struct device *dev) +{ + return *(struct acpi_apmt_node **)dev_get_platdata(dev); +} + /* * In CoreSight PMU architecture, all of the MMIO registers are 32-bit except * counter register. The counter register can be implemented as 32-bit or 64-bit @@ -155,12 +156,6 @@ static u64 read_reg64_hilohi(const void __iomem *addr, u32 max_poll_count) return val; } -/* Check if PMU supports 64-bit single copy atomic. */ -static inline bool supports_64bit_atomics(const struct arm_cspmu *cspmu) -{ - return CHECK_APMT_FLAG(cspmu->apmt_node->flags, ATOMIC, SUPP); -} - /* Check if cycle counter is supported. */ static inline bool supports_cycle_counter(const struct arm_cspmu *cspmu) { @@ -319,7 +314,7 @@ static const char *arm_cspmu_get_name(const struct arm_cspmu *cspmu) static atomic_t pmu_idx[ACPI_APMT_NODE_TYPE_COUNT] = { 0 }; dev = cspmu->dev; - apmt_node = cspmu->apmt_node; + apmt_node = arm_cspmu_apmt_node(dev); pmu_type = apmt_node->type; if (pmu_type >= ACPI_APMT_NODE_TYPE_COUNT) { @@ -396,8 +391,8 @@ static const struct impl_match impl_match[] = { static int arm_cspmu_init_impl_ops(struct arm_cspmu *cspmu) { int ret; - struct acpi_apmt_node *apmt_node = cspmu->apmt_node; struct arm_cspmu_impl_ops *impl_ops = &cspmu->impl.ops; + struct acpi_apmt_node *apmt_node = arm_cspmu_apmt_node(cspmu->dev); const struct impl_match *match = impl_match; /* @@ -719,7 +714,7 @@ static u64 arm_cspmu_read_counter(struct perf_event *event) offset = counter_offset(sizeof(u64), event->hw.idx); counter_addr = cspmu->base1 + offset; - return supports_64bit_atomics(cspmu) ? + return cspmu->has_atomic_dword ? readq(counter_addr) : read_reg64_hilohi(counter_addr, HILOHI_MAX_POLL); } @@ -910,24 +905,18 @@ static struct arm_cspmu *arm_cspmu_alloc(struct platform_device *pdev) { struct acpi_apmt_node *apmt_node; struct arm_cspmu *cspmu; - struct device *dev; - - dev = &pdev->dev; - apmt_node = *(struct acpi_apmt_node **)dev_get_platdata(dev); - if (!apmt_node) { - dev_err(dev, "failed to get APMT node\n"); - return NULL; - } + struct device *dev = &pdev->dev; cspmu = devm_kzalloc(dev, sizeof(*cspmu), GFP_KERNEL); if (!cspmu) return NULL; cspmu->dev = dev; - cspmu->apmt_node = apmt_node; - platform_set_drvdata(pdev, cspmu); + apmt_node = arm_cspmu_apmt_node(dev); + cspmu->has_atomic_dword = apmt_node->flags & ACPI_APMT_FLAGS_ATOMIC; + return cspmu; } @@ -935,11 +924,9 @@ static int arm_cspmu_init_mmio(struct arm_cspmu *cspmu) { struct device *dev; struct platform_device *pdev; - struct acpi_apmt_node *apmt_node; dev = cspmu->dev; pdev = to_platform_device(dev); - apmt_node = cspmu->apmt_node; /* Base address for page 0. */ cspmu->base0 = devm_platform_ioremap_resource(pdev, 0); @@ -950,7 +937,7 @@ static int arm_cspmu_init_mmio(struct arm_cspmu *cspmu) /* Base address for page 1 if supported. Otherwise point to page 0. */ cspmu->base1 = cspmu->base0; - if (CHECK_APMT_FLAG(apmt_node->flags, DUAL_PAGE, SUPP)) { + if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) { cspmu->base1 = devm_platform_ioremap_resource(pdev, 1); if (IS_ERR(cspmu->base1)) { dev_err(dev, "ioremap failed for page-1 resource\n"); @@ -1047,19 +1034,14 @@ static int arm_cspmu_request_irq(struct arm_cspmu *cspmu) int irq, ret; struct device *dev; struct platform_device *pdev; - struct acpi_apmt_node *apmt_node; dev = cspmu->dev; pdev = to_platform_device(dev); - apmt_node = cspmu->apmt_node; /* Skip IRQ request if the PMU does not support overflow interrupt. */ - if (apmt_node->ovflw_irq == 0) - return 0; - - irq = platform_get_irq(pdev, 0); + irq = platform_get_irq_optional(pdev, 0); if (irq < 0) - return irq; + return irq == -ENXIO ? 0 : irq; ret = devm_request_irq(dev, irq, arm_cspmu_handle_irq, IRQF_NOBALANCING | IRQF_NO_THREAD, dev_name(dev), @@ -1103,13 +1085,11 @@ static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid) static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu) { - struct device *dev; struct acpi_apmt_node *apmt_node; int affinity_flag; int cpu; - dev = cspmu->pmu.dev; - apmt_node = cspmu->apmt_node; + apmt_node = arm_cspmu_apmt_node(cspmu->dev); affinity_flag = apmt_node->flags & ACPI_APMT_FLAGS_AFFINITY; if (affinity_flag == ACPI_APMT_FLAGS_AFFINITY_PROC) { @@ -1131,7 +1111,7 @@ static int arm_cspmu_acpi_get_cpus(struct arm_cspmu *cspmu) } if (cpumask_empty(&cspmu->associated_cpus)) { - dev_dbg(dev, "No cpu associated with the PMU\n"); + dev_dbg(cspmu->dev, "No cpu associated with the PMU\n"); return -ENODEV; } diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/arm_cspmu.h index 51323b175a4a..83df53d1c132 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.h +++ b/drivers/perf/arm_cspmu/arm_cspmu.h @@ -8,7 +8,6 @@ #ifndef __ARM_CSPMU_H__ #define __ARM_CSPMU_H__ -#include #include #include #include @@ -118,16 +117,16 @@ struct arm_cspmu_impl { struct arm_cspmu { struct pmu pmu; struct device *dev; - struct acpi_apmt_node *apmt_node; const char *name; const char *identifier; void __iomem *base0; void __iomem *base1; - int irq; cpumask_t associated_cpus; cpumask_t active_cpu; struct hlist_node cpuhp_node; + int irq; + bool has_atomic_dword; u32 pmcfgr; u32 num_logical_ctrs; u32 num_set_clr_reg;