Message ID | 20230710062500.45147-1-anshuman.khandual@arm.com |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp4821231vqx; Sun, 9 Jul 2023 23:35:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlEZmEYq53l6vdEw+xRRr1w/vQvSwvRHZm/HNPPQPOQZkEBcD5W2JuB2oUwiBMe7mk7ZQaaq X-Received: by 2002:aa7:db48:0:b0:51d:b0a4:1d44 with SMTP id n8-20020aa7db48000000b0051db0a41d44mr8395321edt.29.1688970925185; Sun, 09 Jul 2023 23:35:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688970925; cv=none; d=google.com; s=arc-20160816; b=oegCxr75hrzTKv2n2RsayabEE0IqziX5uEPY2nQb4tHn2mqQADQLHNSL7vvcL67Nej 41B4sMr9ElTa75VLyk6WdRH2b1OQzqYdvX7tUXIm6DqqHL6Y+7ZpNyMOaK4CyAxsgmoB T647NaCgd9I354ZVyUEtqAI/XBXdTqa2I7DkueeKWesUt91wbGd6jqC80pzk7AKwBeei xie/Aqot9h3EAgN4CnIJpXwHEHVf35icsnqx2wpDxLxZeMbPR1VHvW46nwbJyQuG/XTo m7801r9ZA8E6wzuKiLcOAOtz7kCkLljudEUohAyiQCyA5+1ukGvl70EgLVisxgYiRtkY cDnA== 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 :message-id:date:subject:cc:to:from; bh=0lZ9WSdrD4Z28F1m/66D0kwkKGIpY1NLCFqFmwPKNzI=; fh=PY9h/cLRZw7UBGWy1EIb8bqZUZXcomX82OLAF53kzVA=; b=OOMdTXBaPrA90KlBDX5hLmsf7LHggWLKJFfc3wnw1oe5s8DV9z2NaTa5MdEyp5QjVe wGSjoDjZXpBKMjlqbcFV0c2hkTk3Eq8hRTMkPp5/GefF/kHyZgD+fv0TzU3W0w4J/jXK NXDFqOcTaBMNRE9KsS4+NanYpGn17vqbfw2Uk3mK2Cudg2B3rELzBAgWAuw7+Kk3TBHX B+23Govv7viMuhZEZ7XS9SMJ26y72wgoOI27A6l3m3XdJFJPnLmttvJ13Zgs54pLCj9R mckWE7zAbeLiGLR8f+RwEGvQ7BAbs/i16Vu2swSta05kmvvdQ0pnkCud/o5gElJFIxxS Gjeg== 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 k26-20020aa7d8da000000b0051e3371a8bbsi8934200eds.2.2023.07.09.23.35.02; Sun, 09 Jul 2023 23:35:25 -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 S230460AbjGJGZT (ORCPT <rfc822;ybw1215001957@gmail.com> + 99 others); Mon, 10 Jul 2023 02:25:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229517AbjGJGZS (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 10 Jul 2023 02:25:18 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 638BD115; Sun, 9 Jul 2023 23:25:16 -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 12E221FB; Sun, 9 Jul 2023 23:25:58 -0700 (PDT) Received: from a077893.blr.arm.com (a077893.blr.arm.com [10.162.40.20]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D36E83F67D; Sun, 9 Jul 2023 23:25:09 -0700 (PDT) From: Anshuman Khandual <anshuman.khandual@arm.com> To: linux-arm-kernel@lists.infradead.org, coresight@lists.linaro.org, suzuki.poulose@arm.com, gregkh@linuxfoundation.org, rafael@kernel.org Cc: Anshuman Khandual <anshuman.khandual@arm.com>, Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com>, Steve Clevenger <scclevenger@os.amperecomputing.com>, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, Russell King <linux@armlinux.org.uk>, Len Brown <lenb@kernel.org>, Sudeep Holla <sudeep.holla@arm.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, Mathieu Poirier <mathieu.poirier@linaro.org>, Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>, devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V6 0/6] coresight: etm4x: Migrate ACPI AMBA devices to platform driver Date: Mon, 10 Jul 2023 11:54:54 +0530 Message-Id: <20230710062500.45147-1-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771014376963555171 X-GMAIL-MSGID: 1771014376963555171 |
Series |
coresight: etm4x: Migrate ACPI AMBA devices to platform driver
|
|
Message
Anshuman Khandual
July 10, 2023, 6:24 a.m. UTC
CoreSight ETM4x devices could be accessed either via MMIO (handled via amba_driver) or CPU system instructions (handled via platform driver). But this has the following issues : - Each new CPU comes up with its own PID and thus we need to keep on adding the "known" PIDs to get it working with AMBA driver. While the ETM4 architecture (and CoreSight architecture) defines way to identify a device as ETM4. Thus older kernels won't be able to "discover" a newer CPU, unless we add the PIDs. - With ACPI, the ETM4x devices have the same HID to identify the device irrespective of the mode of access. This creates a problem where two different drivers (both AMBA based driver and platform driver) would hook into the "HID" and could conflict. e.g., if AMBA driver gets hold of a non-MMIO device, the probe fails. If we have single driver hooked into the given "HID", we could handle them seamlessly, irrespective of the mode of access. - CoreSight is heavily dependent on the runtime power management. With ACPI, amba_driver doesn't get us anywhere with handling the power and thus one need to always turn the power ON to use them. Moving to platform driver gives us the power management for free. Due to all of the above, we are moving ACPI MMIO based etm4x devices to be supported via tha platform driver. The series makes the existing platform driver generic to handle both type of the access modes. Although existing AMBA driver would still continue to support DT based etm4x MMIO devices. Although some problems still remain, such as manually adding PIDs for all new AMBA DT based devices. The series applies on 6.5-rc1. Changes in V6: - Rebased on 6.5-rc1 Changes in V5: https://lore.kernel.org/all/20230529062511.52016-1-anshuman.khandual@arm.com/ - Updated the comment for apb clock in drvdata structure - Updated conditional check in etm4_runtime_suspend/resume() - Asserted that the APB clock is present and also enabled Changes in V4: https://lore.kernel.org/all/20230523044553.1525048-1-anshuman.khandual@arm.com/ - Changed in-code comment in etm4_check_arch_features() - Re-ordered pm_runtime_disable() in etm4_remove_platform_dev() - Renamed back etm4_match as etm4_sysreg_match - Moved back [PATCH 6/6] as [PATCH 5/6] Changes in V3: https://lore.kernel.org/all/20230519052149.1367814-1-anshuman.khandual@arm.com/ - Returned from etm4_check_arch_features() for non iomem devices - Renamed ETM_DEVTYPE_ETMv4x_ARCH as CS_DEVTYPE_PE_TRACE - Renamed is_etm4x_devtype() as is_devtype_cpu_trace() - Added a patch to ignore the absence of graph connections Changes in V2: https://lore.kernel.org/all/20230327050537.30861-1-anshuman.khandual@arm.com/ - Enables ACPI etm4x device support in the existing platform driver - Dropped last two patches from the series - Dropped redundant 'devarch' checking from is_etm4x_device() - Renamed updated is_etm4x_device() as is_etm4x_devtype() - Fixed arguments in fallback stub for etm4_check_arch_features() - Tagged etm4_dev_pm_ops with etm4_platform_driver - Updated the comment for coresight_get_enable_apb_pclk() helper - Updated the comment for new 'pclk' element in struct etm4_drvdata - Dropped the clock when devm_ioremap_resource() fails - Convert IS_ERR() into a direct pointer check in etm4_remove_platform_dev() - Dropped "arm,coresight-etm4x" compatible property from etm4_match[] Changes in V1: https://lore.kernel.org/all/20230317030501.1811905-1-anshuman.khandual@arm.com/ Cc: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com> Cc: Steve Clevenger <scclevenger@os.amperecomputing.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Cc: Russell King (Oracle) <linux@armlinux.org.uk> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "Rafael J. Wysocki" <rafael@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: Sudeep Holla <sudeep.holla@arm.com> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Suzuki K Poulose <suzuki.poulose@arm.com> Cc: Mike Leach <mike.leach@linaro.org> Cc: Leo Yan <leo.yan@linaro.org> Cc: devicetree@vger.kernel.org Cc: linux-acpi@vger.kernel.org Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Anshuman Khandual (4): coresight: etm4x: Allocate and device assign 'struct etmv4_drvdata' earlier coresight: etm4x: Drop iomem 'base' argument from etm4_probe() coresight: etm4x: Drop pid argument from etm4_probe() coresight: etm4x: Change etm4_platform_driver driver for MMIO devices Suzuki K Poulose (2): coresight: platform: acpi: Ignore the absence of graph coresight: etm4x: Add ACPI support in platform driver drivers/acpi/acpi_amba.c | 1 - .../coresight/coresight-etm4x-core.c | 118 ++++++++++++++---- drivers/hwtracing/coresight/coresight-etm4x.h | 4 + .../hwtracing/coresight/coresight-platform.c | 6 +- include/linux/coresight.h | 59 +++++++++ 5 files changed, 164 insertions(+), 24 deletions(-)
Comments
On 10/07/2023 07:24, Anshuman Khandual wrote: > CoreSight ETM4x devices could be accessed either via MMIO (handled via > amba_driver) or CPU system instructions (handled via platform driver). But > this has the following issues : > > - Each new CPU comes up with its own PID and thus we need to keep on > adding the "known" PIDs to get it working with AMBA driver. While > the ETM4 architecture (and CoreSight architecture) defines way to > identify a device as ETM4. Thus older kernels won't be able to > "discover" a newer CPU, unless we add the PIDs. > > - With ACPI, the ETM4x devices have the same HID to identify the device > irrespective of the mode of access. This creates a problem where two > different drivers (both AMBA based driver and platform driver) would > hook into the "HID" and could conflict. e.g., if AMBA driver gets > hold of a non-MMIO device, the probe fails. If we have single driver > hooked into the given "HID", we could handle them seamlessly, > irrespective of the mode of access. > > - CoreSight is heavily dependent on the runtime power management. With > ACPI, amba_driver doesn't get us anywhere with handling the power > and thus one need to always turn the power ON to use them. Moving to > platform driver gives us the power management for free. > > Due to all of the above, we are moving ACPI MMIO based etm4x devices to be > supported via tha platform driver. The series makes the existing platform > driver generic to handle both type of the access modes. Although existing > AMBA driver would still continue to support DT based etm4x MMIO devices. > Although some problems still remain, such as manually adding PIDs for all > new AMBA DT based devices. > > The series applies on 6.5-rc1. > > Changes in V6: > > - Rebased on 6.5-rc1 > I have queued this version for v6.6, should appear on coresight/next soon. Suzuki
Hi Suzuki, On 7/26/2023 9:59 AM, Suzuki K Poulose wrote: > On 10/07/2023 07:24, Anshuman Khandual wrote: >> CoreSight ETM4x devices could be accessed either via MMIO (handled via >> amba_driver) or CPU system instructions (handled via platform driver). >> But >> this has the following issues : >> >> - Each new CPU comes up with its own PID and thus we need to keep on >> adding the "known" PIDs to get it working with AMBA driver. While >> the ETM4 architecture (and CoreSight architecture) defines way to >> identify a device as ETM4. Thus older kernels won't be able to >> "discover" a newer CPU, unless we add the PIDs. >> >> - With ACPI, the ETM4x devices have the same HID to identify the >> device >> irrespective of the mode of access. This creates a problem where two >> different drivers (both AMBA based driver and platform driver) would >> hook into the "HID" and could conflict. e.g., if AMBA driver gets >> hold of a non-MMIO device, the probe fails. If we have single driver >> hooked into the given "HID", we could handle them seamlessly, >> irrespective of the mode of access. >> >> - CoreSight is heavily dependent on the runtime power management. With >> ACPI, amba_driver doesn't get us anywhere with handling the power >> and thus one need to always turn the power ON to use them. Moving to >> platform driver gives us the power management for free. >> >> Due to all of the above, we are moving ACPI MMIO based etm4x devices >> to be >> supported via tha platform driver. The series makes the existing platform >> driver generic to handle both type of the access modes. Although existing >> AMBA driver would still continue to support DT based etm4x MMIO devices. >> Although some problems still remain, such as manually adding PIDs for all >> new AMBA DT based devices. >> >> The series applies on 6.5-rc1. >> >> Changes in V6: >> >> - Rebased on 6.5-rc1 >> > > I have queued this version for v6.6, should appear on coresight/next soon. > > Suzuki Is there anyway to queue this for 6.5? Or has that ship sailed? Thanks, Steve C.
On 26/07/2023 18:03, Steve Clevenger OS wrote: > > Hi Suzuki, > > On 7/26/2023 9:59 AM, Suzuki K Poulose wrote: >> On 10/07/2023 07:24, Anshuman Khandual wrote: >>> CoreSight ETM4x devices could be accessed either via MMIO (handled via >>> amba_driver) or CPU system instructions (handled via platform driver). >>> But >>> this has the following issues : >>> >>> - Each new CPU comes up with its own PID and thus we need to keep on >>> adding the "known" PIDs to get it working with AMBA driver. While >>> the ETM4 architecture (and CoreSight architecture) defines way to >>> identify a device as ETM4. Thus older kernels won't be able to >>> "discover" a newer CPU, unless we add the PIDs. >>> >>> - With ACPI, the ETM4x devices have the same HID to identify the >>> device >>> irrespective of the mode of access. This creates a problem where two >>> different drivers (both AMBA based driver and platform driver) would >>> hook into the "HID" and could conflict. e.g., if AMBA driver gets >>> hold of a non-MMIO device, the probe fails. If we have single driver >>> hooked into the given "HID", we could handle them seamlessly, >>> irrespective of the mode of access. >>> >>> - CoreSight is heavily dependent on the runtime power management. With >>> ACPI, amba_driver doesn't get us anywhere with handling the power >>> and thus one need to always turn the power ON to use them. Moving to >>> platform driver gives us the power management for free. >>> >>> Due to all of the above, we are moving ACPI MMIO based etm4x devices >>> to be >>> supported via tha platform driver. The series makes the existing platform >>> driver generic to handle both type of the access modes. Although existing >>> AMBA driver would still continue to support DT based etm4x MMIO devices. >>> Although some problems still remain, such as manually adding PIDs for all >>> new AMBA DT based devices. >>> >>> The series applies on 6.5-rc1. >>> >>> Changes in V6: >>> >>> - Rebased on 6.5-rc1 >>> >> >> I have queued this version for v6.6, should appear on coresight/next soon. >> >> Suzuki > > Is there anyway to queue this for 6.5? Or has that ship sailed? Only fixes are allowed for v6.5 at this time. Suzuki > > Thanks, > > Steve C.