[PATCH V6 0/2] coresight: trbe: Enable ACPI based devices

STALE1078d

Revision v6 of 6 in this series.

5 messages, 2 authors, 2023-08-30 · open the first message on its own page

[PATCH V6 0/2] coresight: trbe: Enable ACPI based devices

From: Anshuman Khandual <hidden>
Date: 2023-08-29 13:55:01

These are remaining coresight patches after fixing the merge conflict which
applies on coresight/next coresight-next-v6.6.

Changes in V6:

- Fixed te merge conflict

Changes in V5:

https://lore.kernel.org/all/20230817055405.249630-1-anshuman.khandual@arm.com/

- Detected zeroed parsed GSI as a mismatch but handled all zero scenario
- Changed condition check from 'if (ret < 0)' into a 'if (ret)'
- Dropped pr_warn() message after platform_device_register()

Changes in V4:

https://lore.kernel.org/all/20230808082247.383405-1-anshuman.khandual@arm.com/

- Added in-code comment for arm_trbe_device_probe()
- Reverted back using IS_ENABLED() for SPE PMU platform device
- Replaced #ifdef with IS_ENABLED() for TRBE platform device
- Protected arm_trbe_acpi_match with ACPI_PTR() - preventing a build failure
  when CONFIG_ACPI is not enabled
- Added __maybe_unused for arm_acpi_register_pmu_device() and dropped config
  checks with IS_ENABLED()

Changes in V3:

https://lore.kernel.org/all/20230803055652.1322801-1-anshuman.khandual@arm.com/

- Changed ARMV8_TRBE_PDEV_NAME from "arm-trbe-acpi" into "arm,trbe"
- Dropped local variable 'matched'
- Replaced 'matched' with 'valid gsi' as being already matched once
- Moved find_acpi_cpu_topology_hetero_id() outside conditional check

Changes in V2:

https://lore.kernel.org/all/20230801094052.750416-1-anshuman.khandual@arm.com/

- Refactored arm_spe_acpi_register_device() in a separate patch
- Renamed trbe_acpi_resources as trbe_resources
- Renamed trbe_acpi_dev as trbe_dev

Changes in V1:

https://lore.kernel.org/all/20230728112733.359620-1-anshuman.khandual@arm.com/

Cc: Sami Mujawar <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Mike Leach <redacted>
Cc: Leo Yan <redacted>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: James Clark <redacted>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org

Anshuman Khandual (2):
  coresight: trbe: Add a representative coresight_platform_data for TRBE
  coresight: trbe: Enable ACPI based TRBE devices

 drivers/hwtracing/coresight/coresight-trbe.c | 23 ++++++++++++++++++--
 drivers/hwtracing/coresight/coresight-trbe.h |  2 ++
 2 files changed, 23 insertions(+), 2 deletions(-)

-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

[PATCH V6 1/2] coresight: trbe: Add a representative coresight_platform_data for TRBE

From: Anshuman Khandual <hidden>
Date: 2023-08-29 13:55:32

TRBE coresight devices do not need regular connections information, as the
paths get built between all percpu source and their respective percpu sink
devices. Please refer 'commit 2cd87a7b293d ("coresight: core: Add support
for dedicated percpu sinks")' which added support for percpu sink devices.

coresight_register() expect device connections via the platform_data. TRBE
devices do not have any graph connections and thus is empty. With upcoming
ACPI support for TRBE, we do not get a real acpi_device and thus
coresight_get_platform_dat() will end up in failures. Hence this allocates
a zeroed coresight_platform_data structure and assigns that back into the
device.

Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Mike Leach <redacted>
Cc: Leo Yan <redacted>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <redacted>
---
 drivers/hwtracing/coresight/coresight-trbe.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-trbe.c b/drivers/hwtracing/coresight/coresight-trbe.c
index e20c1c6acc73..97b9e72965e6 100644
--- a/drivers/hwtracing/coresight/coresight-trbe.c
+++ b/drivers/hwtracing/coresight/coresight-trbe.c
@@ -1253,8 +1253,18 @@ static void arm_trbe_register_coresight_cpu(struct trbe_drvdata *drvdata, int cp
 	desc.name = devm_kasprintf(dev, GFP_KERNEL, "trbe%d", cpu);
 	if (!desc.name)
 		goto cpu_clear;
-
-	desc.pdata = coresight_get_platform_data(dev);
+	/*
+	 * TRBE coresight devices do not need regular connections
+	 * information, as the paths get built between all percpu
+	 * source and their respective percpu sink devices. Though
+	 * coresight_register() expect device connections via the
+	 * platform_data, which TRBE devices do not have. As they
+	 * are not real ACPI devices, coresight_get_platform_data()
+	 * ends up failing. Instead let's allocate a dummy zeroed
+	 * coresight_platform_data structure and assign that back
+	 * into the device for that purpose.
+	 */
+	desc.pdata = devm_kzalloc(dev, sizeof(*desc.pdata), GFP_KERNEL);
 	if (IS_ERR(desc.pdata))
 		goto cpu_clear;
 
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

[PATCH V6 2/2] coresight: trbe: Enable ACPI based TRBE devices

From: Anshuman Khandual <hidden>
Date: 2023-08-29 13:55:33

This detects and enables ACPI based TRBE devices via the dummy platform
device created earlier for this purpose.

Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Mike Leach <redacted>
Cc: Leo Yan <redacted>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <redacted>
---
 drivers/hwtracing/coresight/coresight-trbe.c | 9 +++++++++
 drivers/hwtracing/coresight/coresight-trbe.h | 2 ++
 2 files changed, 11 insertions(+)
diff --git a/drivers/hwtracing/coresight/coresight-trbe.c b/drivers/hwtracing/coresight/coresight-trbe.c
index 97b9e72965e6..a3954be7b1f3 100644
--- a/drivers/hwtracing/coresight/coresight-trbe.c
+++ b/drivers/hwtracing/coresight/coresight-trbe.c
@@ -1546,7 +1546,16 @@ static const struct of_device_id arm_trbe_of_match[] = {
 };
 MODULE_DEVICE_TABLE(of, arm_trbe_of_match);
 
+#ifdef CONFIG_ACPI
+static const struct platform_device_id arm_trbe_acpi_match[] = {
+	{ ARMV8_TRBE_PDEV_NAME, 0 },
+	{ }
+};
+MODULE_DEVICE_TABLE(platform, arm_trbe_acpi_match);
+#endif
+
 static struct platform_driver arm_trbe_driver = {
+	.id_table = ACPI_PTR(arm_trbe_acpi_match),
 	.driver	= {
 		.name = DRVNAME,
 		.of_match_table = of_match_ptr(arm_trbe_of_match),
diff --git a/drivers/hwtracing/coresight/coresight-trbe.h b/drivers/hwtracing/coresight/coresight-trbe.h
index e915e749be55..45202c48acce 100644
--- a/drivers/hwtracing/coresight/coresight-trbe.h
+++ b/drivers/hwtracing/coresight/coresight-trbe.h
@@ -7,11 +7,13 @@
  *
  * Author: Anshuman Khandual <anshuman.khandual@arm.com>
  */
+#include <linux/acpi.h>
 #include <linux/coresight.h>
 #include <linux/device.h>
 #include <linux/irq.h>
 #include <linux/kernel.h>
 #include <linux/of.h>
+#include <linux/perf/arm_pmu.h>
 #include <linux/platform_device.h>
 #include <linux/smp.h>
 
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH V6 0/2] coresight: trbe: Enable ACPI based devices

From: Suzuki K Poulose <suzuki.poulose@arm.com>
Date: 2023-08-30 18:31:14

Hi Will

On 29/08/2023 14:54, Anshuman Khandual wrote:
These are remaining coresight patches after fixing the merge conflict which
applies on coresight/next coresight-next-v6.6.

Changes in V6:

- Fixed te merge conflict

Please could you confirm if the commits [0] in your for-next/perf branch
are stable ? Accordingly I could merge these patches on top of your
commits and send them to Greg.

[0] https://git.kernel.org/will/c/1aa3d0274a4a

Suzuki

Changes in V5:

https://lore.kernel.org/all/20230817055405.249630-1-anshuman.khandual@arm.com/

- Detected zeroed parsed GSI as a mismatch but handled all zero scenario
- Changed condition check from 'if (ret < 0)' into a 'if (ret)'
- Dropped pr_warn() message after platform_device_register()

Changes in V4:

https://lore.kernel.org/all/20230808082247.383405-1-anshuman.khandual@arm.com/

- Added in-code comment for arm_trbe_device_probe()
- Reverted back using IS_ENABLED() for SPE PMU platform device
- Replaced #ifdef with IS_ENABLED() for TRBE platform device
- Protected arm_trbe_acpi_match with ACPI_PTR() - preventing a build failure
   when CONFIG_ACPI is not enabled
- Added __maybe_unused for arm_acpi_register_pmu_device() and dropped config
   checks with IS_ENABLED()

Changes in V3:

https://lore.kernel.org/all/20230803055652.1322801-1-anshuman.khandual@arm.com/

- Changed ARMV8_TRBE_PDEV_NAME from "arm-trbe-acpi" into "arm,trbe"
- Dropped local variable 'matched'
- Replaced 'matched' with 'valid gsi' as being already matched once
- Moved find_acpi_cpu_topology_hetero_id() outside conditional check

Changes in V2:

https://lore.kernel.org/all/20230801094052.750416-1-anshuman.khandual@arm.com/

- Refactored arm_spe_acpi_register_device() in a separate patch
- Renamed trbe_acpi_resources as trbe_resources
- Renamed trbe_acpi_dev as trbe_dev

Changes in V1:

https://lore.kernel.org/all/20230728112733.359620-1-anshuman.khandual@arm.com/

Cc: Sami Mujawar <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Mike Leach <redacted>
Cc: Leo Yan <redacted>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: James Clark <redacted>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org

Anshuman Khandual (2):
   coresight: trbe: Add a representative coresight_platform_data for TRBE
   coresight: trbe: Enable ACPI based TRBE devices

  drivers/hwtracing/coresight/coresight-trbe.c | 23 ++++++++++++++++++--
  drivers/hwtracing/coresight/coresight-trbe.h |  2 ++
  2 files changed, 23 insertions(+), 2 deletions(-)

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH V6 0/2] coresight: trbe: Enable ACPI based devices

From: Anshuman Khandual <hidden>
Date: 2023-08-30 19:17:12

On 8/30/23 14:32, Suzuki K Poulose wrote:
Hi Will

On 29/08/2023 14:54, Anshuman Khandual wrote:
quoted
These are remaining coresight patches after fixing the merge conflict which
applies on coresight/next coresight-next-v6.6.

Changes in V6:

- Fixed te merge conflict

Please could you confirm if the commits [0] in your for-next/perf branch
are stable ? Accordingly I could merge these patches on top of your
commits and send them to Greg.

[0] https://git.kernel.org/will/c/1aa3d0274a4a
Both these patches are already in the mainline kernel.

commit 1aa3d0274a4aac338ee45a3dfc3b17c944bcc2bc
Author: Anshuman Khandual [off-list ref]
Date:   Thu Aug 17 11:24:03 2023 +0530

    arm_pmu: acpi: Add a representative platform device for TRBE
    
    ACPI TRBE does not have a HID for identification which could create and add
    a platform device into the platform bus. Also without a platform device, it
    cannot be probed and bound to a platform driver.
    
    This creates a dummy platform device for TRBE after ascertaining that ACPI
    provides required interrupts uniformly across all cpus on the system. This
    device gets created inside drivers/perf/arm_pmu_acpi.c to accommodate TRBE
    being built as a module.
    
    Cc: Catalin Marinas [off-list ref]
    Cc: Will Deacon [off-list ref]
    Cc: Mark Rutland [off-list ref]
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Anshuman Khandual [off-list ref]
    Link: https://lore.kernel.org/r/20230817055405.249630-3-anshuman.khandual@arm.com
    Signed-off-by: Will Deacon [off-list ref]

commit 81e5ee471609848ee1ebf3beb2a46788113fe0eb
Author: Anshuman Khandual [off-list ref]
Date:   Thu Aug 17 11:24:02 2023 +0530

    arm_pmu: acpi: Refactor arm_spe_acpi_register_device()
    
    Sanity checking all the GICC tables for same interrupt number, and ensuring
    a homogeneous ACPI based machine, could be used for other platform devices
    as well. Hence this refactors arm_spe_acpi_register_device() into a common
    helper arm_acpi_register_pmu_device().
    
    Cc: Catalin Marinas [off-list ref]
    Cc: Will Deacon [off-list ref]
    Cc: Mark Rutland [off-list ref]
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Co-developed-by: Will Deacon [off-list ref]
    Signed-off-by: Anshuman Khandual [off-list ref]
    Link: https://lore.kernel.org/r/20230817055405.249630-2-anshuman.khandual@arm.com
    Signed-off-by: Will Deacon [off-list ref]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help