2023-08-29 15:41:01

by Anshuman Khandual

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

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/[email protected]/

- 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/[email protected]/

- 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/[email protected]/

- 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/[email protected]/

- 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/[email protected]/

Cc: Sami Mujawar <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Suzuki K Poulose <[email protected]>
Cc: Mike Leach <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: James Clark <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]

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



2023-08-29 17:03:41

by Anshuman Khandual

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

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

Cc: Suzuki K Poulose <[email protected]>
Cc: Mike Leach <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Anshuman Khandual <[email protected]>
---
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 <[email protected]>
*/
+#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


2023-08-30 18:53:13

by Suzuki K Poulose

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

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/[email protected]/
>
> - 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/[email protected]/
>
> - 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/[email protected]/
>
> - 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/[email protected]/
>
> - 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/[email protected]/
>
> Cc: Sami Mujawar <[email protected]>
> Cc: Catalin Marinas <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: Mark Rutland <[email protected]>
> Cc: Suzuki K Poulose <[email protected]>
> Cc: Mike Leach <[email protected]>
> Cc: Leo Yan <[email protected]>
> Cc: Alexander Shishkin <[email protected]>
> Cc: James Clark <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
>
> 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(-)
>


2023-08-30 21:54:36

by Anshuman Khandual

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

On 8/30/23 14:32, Suzuki K Poulose wrote:
> 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

Both these patches are already in the mainline kernel.

commit 1aa3d0274a4aac338ee45a3dfc3b17c944bcc2bc
Author: Anshuman Khandual <[email protected]>
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 <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Anshuman Khandual <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Will Deacon <[email protected]>

commit 81e5ee471609848ee1ebf3beb2a46788113fe0eb
Author: Anshuman Khandual <[email protected]>
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 <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: [email protected]
Cc: [email protected]
Co-developed-by: Will Deacon <[email protected]>
Signed-off-by: Anshuman Khandual <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Will Deacon <[email protected]>