[PATCH v7 5/9] arm64: pmu: Add support for probing with ACPI

Punit Agrawal punit.agrawal at arm.com
Fri Aug 26 07:42:45 PDT 2016


Hi Jeremy,

A few comments below.

Jeremy Linton <jeremy.linton at arm.com> writes:

> From: Mark Salter <msalter at redhat.com>
>
> In the case of ACPI, the PMU IRQ information is contained in the
> MADT table. Also, since the PMU does not exist as a device in the
> ACPI DSDT table, it is necessary to create a platform device so
> that the appropriate driver probing is triggered.
>

The commit title and message are not true after the re-organisation from
v6. We don't create the platform devices until Patch 8. Maybe something
along the lines of -

"parse the core PMU interrupts from MADT"

More comments below.

> Signed-off-by: Mark Salter <msalter at redhat.com>
> Signed-off-by: Jeremy Linton <jeremy.linton at arm.com>
> ---
>  arch/arm64/kernel/smp.c      |  5 +++++
>  drivers/perf/Kconfig         |  4 ++++
>  drivers/perf/Makefile        |  1 +
>  drivers/perf/arm_pmu_acpi.c  | 51 ++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/perf/arm_pmu.h |  7 ++++++
>  5 files changed, 68 insertions(+)
>  create mode 100644 drivers/perf/arm_pmu_acpi.c
>

[...]

> diff --git a/drivers/perf/arm_pmu_acpi.c b/drivers/perf/arm_pmu_acpi.c
> new file mode 100644
> index 0000000..e784714
> --- /dev/null
> +++ b/drivers/perf/arm_pmu_acpi.c
> @@ -0,0 +1,51 @@
> +/*
> + * ARM ACPI PMU support
> + *
> + * Copyright (C) 2015 Red Hat Inc.
> + * Author: Mark Salter <msalter at redhat.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2.  See
> + * the COPYING file in the top-level directory.
> + *
> + */
> +
> +#include <asm/cpu.h>
> +#include <linux/acpi.h>
> +#include <linux/irq.h>
> +#include <linux/irqdesc.h>
> +#include <linux/list.h>
> +#include <linux/perf/arm_pmu.h>
> +#include <linux/platform_device.h>
> +
> +struct pmu_irq {
> +	int  gsi;
> +	int  trigger;
> +	bool registered;
> +};
> +
> +static struct pmu_irq pmu_irqs[NR_CPUS] __initdata;
> +
> +/*
> + * Called from acpi_map_gic_cpu_interface()'s MADT parsing during boot.

The comment needs an update after the rename in Patch 4.


[...]

> +static int __init pmu_acpi_init(void)
> +{
> +	int err = -ENOMEM;
> +
> +	if (acpi_disabled)
> +		return 0;
> +
> +	return err;
> +}
> +arch_initcall(pmu_acpi_init);

The function definition and the arch_initcall don't add any
functionality here and can both be moved to Patch 8.

Thanks,
Punit

> diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
> index ef4b760..012deb7 100644
> --- a/include/linux/perf/arm_pmu.h
> +++ b/include/linux/perf/arm_pmu.h
> @@ -158,4 +158,11 @@ int arm_pmu_device_probe(struct platform_device *pdev,
>  
>  #endif /* CONFIG_ARM_PMU */
>  
> +#ifdef CONFIG_ARM_PMU_ACPI
> +struct acpi_madt_generic_interrupt;
> +void arm_pmu_parse_acpi(int cpu, struct acpi_madt_generic_interrupt *gic);
> +#else
> +#define arm_pmu_parse_acpi(a, b) do { } while (0)
> +#endif /* CONFIG_ARM_PMU_ACPI */
> +
>  #endif /* __ARM_PMU_H__ */



More information about the linux-arm-kernel mailing list