perf/arm_cspmu: Clean up ACPI dependency

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 <suzuki.poulose@arm.com>
Reviewed-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/9d126711c7498b199b3e6f5cf48ca60ffb9df54c.1685983270.git.robin.murphy@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
Robin Murphy 2023-06-05 18:01:33 +01:00 committed by Will Deacon
parent 87b3b6d53e
commit f9bd34e375
2 changed files with 16 additions and 4 deletions

View File

@ -4,8 +4,7 @@
config ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU config ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU
tristate "ARM Coresight Architecture PMU" tristate "ARM Coresight Architecture PMU"
depends on ARM64 && ACPI depends on ARM64 || COMPILE_TEST
depends on ACPI_APMT || COMPILE_TEST
help help
Provides support for performance monitoring unit (PMU) devices Provides support for performance monitoring unit (PMU) devices
based on ARM CoreSight PMU architecture. Note that this PMU based on ARM CoreSight PMU architecture. Note that this PMU

View File

@ -28,7 +28,6 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <acpi/processor.h>
#include "arm_cspmu.h" #include "arm_cspmu.h"
#include "nvidia_cspmu.h" #include "nvidia_cspmu.h"
@ -1075,6 +1074,9 @@ static int arm_cspmu_request_irq(struct arm_cspmu *cspmu)
return 0; return 0;
} }
#if defined(CONFIG_ACPI) && defined(CONFIG_ARM64)
#include <acpi/processor.h>
static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid) static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid)
{ {
u32 acpi_uid; u32 acpi_uid;
@ -1099,7 +1101,7 @@ static inline int arm_cspmu_find_cpu_container(int cpu, u32 container_uid)
return -ENODEV; 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 device *dev;
struct acpi_apmt_node *apmt_node; struct acpi_apmt_node *apmt_node;
@ -1135,6 +1137,17 @@ static int arm_cspmu_get_cpus(struct arm_cspmu *cspmu)
return 0; 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) static int arm_cspmu_register_pmu(struct arm_cspmu *cspmu)
{ {