[PATCH v2 3/3] perf/arm-bmu: Add Devicetree support
Robin Murphy
robin.murphy at arm.com
Thu Jul 16 08:12:41 PDT 2026
Initial production BMU users will be ACPI-based, but DT consumers
will almost certainly come along sooner or later.
Signed-off-by: Robin Murphy <robin.murphy at arm.com>
---
v2: Separate patch as it's not a critical dependency right now
---
drivers/perf/arm_cspmu/Kconfig | 2 +-
drivers/perf/arm_cspmu/arm-bmu.c | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/perf/arm_cspmu/Kconfig b/drivers/perf/arm_cspmu/Kconfig
index 0cb369f91023..8a7e2082b850 100644
--- a/drivers/perf/arm_cspmu/Kconfig
+++ b/drivers/perf/arm_cspmu/Kconfig
@@ -30,6 +30,6 @@ config AMPERE_CORESIGHT_PMU_ARCH_SYSTEM_PMU
config ARM_BMU
tristate "ARM Bus Monitor Unit"
- depends on (ARM64 && ACPI) || COMPILE_TEST
+ depends on ARM64 || COMPILE_TEST
help
Support perf event counting on Arm Bus Monitor Unit devices.
diff --git a/drivers/perf/arm_cspmu/arm-bmu.c b/drivers/perf/arm_cspmu/arm-bmu.c
index c829a0728e9b..0c2442392f7b 100644
--- a/drivers/perf/arm_cspmu/arm-bmu.c
+++ b/drivers/perf/arm_cspmu/arm-bmu.c
@@ -6,6 +6,7 @@
#include <linux/interrupt.h>
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/perf_event.h>
#include <linux/platform_device.h>
#include <linux/property.h>
@@ -406,7 +407,10 @@ static int arm_bmu_probe(struct platform_device *pdev)
.read = arm_bmu_event_read,
};
- name = acpi_device_uid(ACPI_COMPANION(dev));
+ if (has_acpi_companion(dev))
+ name = acpi_device_uid(ACPI_COMPANION(dev));
+ else
+ device_property_read_string(dev, "label", &name);
if (name)
name = devm_kasprintf(dev, GFP_KERNEL, "arm_bmu_%s", name);
@@ -437,6 +441,14 @@ static void arm_bmu_remove(struct platform_device *pdev)
cpuhp_state_remove_instance_nocalls(arm_bmu_cpuhp_state, &bmu->cpuhp_node);
}
+#ifdef CONFIG_OF
+static const struct of_device_id arm_bmu_of_match[] = {
+ { .compatible = "arm,bus-monitor-unit" },
+ {}
+};
+MODULE_DEVICE_TABLE(of, arm_bmu_of_match);
+#endif
+
#ifdef CONFIG_ACPI
static const struct acpi_device_id arm_bmu_acpi_match[] = {
{ "ARMHB001" },
@@ -448,6 +460,7 @@ MODULE_DEVICE_TABLE(acpi, arm_bmu_acpi_match);
static struct platform_driver arm_bmu_driver = {
.driver = {
.name = "arm-bmu",
+ .of_match_table = of_match_ptr(arm_bmu_of_match),
.acpi_match_table = ACPI_PTR(arm_bmu_acpi_match),
.suppress_bind_attrs = true,
},
--
2.54.0.dirty
More information about the linux-arm-kernel
mailing list