From: anurupvasu@gmail.com (Anurup M)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 00/14] arm_pmu: ACPI support
Date: Tue, 11 Apr 2017 20:41:33 +0530 [thread overview]
Message-ID: <58ECF225.2040804@gmail.com> (raw)
In-Reply-To: <1491899997-32210-1-git-send-email-mark.rutland@arm.com>
On Tuesday 11 April 2017 02:09 PM, Mark Rutland wrote:
> Hi,
>
> This series implements ACPI support in the ARM PMU code. It borrows some code
> from Jeremy's series [1], but takes a different approach to probing and
> association, using the usual hotplug state machine, minimising external changes
> required, and simplifying the relationship with the common arm_pmu code.
>
> The first few patches are preparatory cleanup/refactoring, with the latter half
> of the series being specific to ACPI support.
>
> The series is based on Will's perf/updates branch [2]. I've pushed the whole
> series out to the arm/perf/acpi branch [3] of my kernel.org repo.
>
> Due to the innards of the hotplug callback framework, it's not entirely
> safe to register a PMU in a hotplug callback. Due to this, we can only
> associated hotplugged CPUs with a PMU if a matching CPU was around at
> probe time. A similar restriction already applies to DT systems. We may
> be able to relax this with some future work.
>
> I've given this some testing on a Juno platform (using SPIs). To see that IRQs
> are correctly associated, I've tested with the following:
>
> $ taskset -c ${SOME_CPU_HERE} perf record \
> -e armv8_pmuv3_0/cpu_cycles/ \
> -e armv8_pmuv3_1/cpu_cycles/ \
> cat /proc/interrupts
>
> I've also booted with nr_cpus temporarily capped (passing maxcpus=) to test the
> association logic. This has also been tested in a VM using PPIs; I do not have
> access to a host machine which itself uses PPIs.
I have tried these patches on a Hisilicon D03 board.
The perf list, basic perf events and perf fuzzer results are all fine.
'perf list' on Hisilicon D03
--------------------------------
L1-dcache-load-misses [Hardware cache event]
L1-dcache-loads [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
L1-icache-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
iTLB-load-misses [Hardware cache event]
armv8_pmuv3_0/br_mis_pred/ [Kernel PMU event]
armv8_pmuv3_0/br_pred/ [Kernel PMU event]
armv8_pmuv3_0/bus_access/ [Kernel PMU event]
armv8_pmuv3_0/bus_cycles/ [Kernel PMU event]
armv8_pmuv3_0/cid_write_retired/ [Kernel PMU event]
armv8_pmuv3_0/cpu_cycles/ [Kernel PMU event]
armv8_pmuv3_0/exc_return/ [Kernel PMU event]
armv8_pmuv3_0/exc_taken/ [Kernel PMU event]
armv8_pmuv3_0/inst_retired/ [Kernel PMU event]
armv8_pmuv3_0/inst_spec/ [Kernel PMU event]
armv8_pmuv3_0/l1d_cache/ [Kernel PMU event]
armv8_pmuv3_0/l1d_cache_refill/ [Kernel PMU event]
armv8_pmuv3_0/l1d_cache_wb/ [Kernel PMU event]
armv8_pmuv3_0/l1d_tlb_refill/ [Kernel PMU event]
armv8_pmuv3_0/l1i_cache/ [Kernel PMU event]
armv8_pmuv3_0/l1i_cache_refill/ [Kernel PMU event]
armv8_pmuv3_0/l1i_tlb_refill/ [Kernel PMU event]
armv8_pmuv3_0/l2d_cache/ [Kernel PMU event]
armv8_pmuv3_0/l2d_cache_refill/ [Kernel PMU event]
armv8_pmuv3_0/l2d_cache_wb/ [Kernel PMU event]
armv8_pmuv3_0/mem_access/ [Kernel PMU event]
armv8_pmuv3_0/memory_error/ [Kernel PMU event]
armv8_pmuv3_0/sw_incr/ [Kernel PMU event]
armv8_pmuv3_0/ttbr_write_retired/ [Kernel PMU event]
Thanks,
Anurup
> Since v1 [4]:
> * Fix up ACPI bits per Lorenzo's request
> * Accumulate tags
> * Check presence of PMUv3
>
> Since v2 [5]:
> * Clean up GSIs when a request fails
> * Rename parse/unparse functions
> * Use cpuid_feature_extract_unsigned_field() for PMUVer
> * Drop parking protocol cleanups. I'll resend these later.
>
> Thanks,
> Mark.
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-January/482397.html
> [2] git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git perf/updates
> [3] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arm/perf/acpi
> [4] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-March/492897.html
> [5] http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/499982.html
>
> Mark Rutland (14):
> drivers/perf: arm_pmu: remove pointless PMU disabling
> drivers/perf: arm_pmu: define armpmu_init_fn
> drivers/perf: arm_pmu: fold init into alloc
> drivers/perf: arm_pmu: factor out pmu registration
> drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs()
> drivers/perf: arm_pmu: handle no platform_device
> drivers/perf: arm_pmu: rename irq request/free functions
> drivers/perf: arm_pmu: split cpu-local irq request/free
> drivers/perf: arm_pmu: move irq request/free into probe
> drivers/perf: arm_pmu: split out platform device probe logic
> arm64: add function to get a cpu's MADT GICC table
> drivers/perf: arm_pmu: add ACPI framework
> arm64: pmuv3: handle !PMUv3 when probing
> arm64: pmuv3: use arm_pmu ACPI framework
>
> arch/arm64/include/asm/acpi.h | 2 +
> arch/arm64/kernel/perf_event.c | 113 ++++++++----
> arch/arm64/kernel/smp.c | 10 ++
> drivers/perf/Kconfig | 4 +
> drivers/perf/Makefile | 3 +-
> drivers/perf/arm_pmu.c | 387 ++++++++++------------------------------
> drivers/perf/arm_pmu_acpi.c | 256 ++++++++++++++++++++++++++
> drivers/perf/arm_pmu_platform.c | 235 ++++++++++++++++++++++++
> include/linux/cpuhotplug.h | 1 +
> include/linux/perf/arm_pmu.h | 22 ++-
> 10 files changed, 708 insertions(+), 325 deletions(-)
> create mode 100644 drivers/perf/arm_pmu_acpi.c
> create mode 100644 drivers/perf/arm_pmu_platform.c
>
next prev parent reply other threads:[~2017-04-11 15:11 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-11 8:39 [PATCHv3 00/14] arm_pmu: ACPI support Mark Rutland
2017-04-11 8:39 ` [PATCHv3 01/14] drivers/perf: arm_pmu: remove pointless PMU disabling Mark Rutland
2017-04-11 8:39 ` [PATCHv3 02/14] drivers/perf: arm_pmu: define armpmu_init_fn Mark Rutland
2017-04-11 8:39 ` [PATCHv3 03/14] drivers/perf: arm_pmu: fold init into alloc Mark Rutland
2017-04-11 8:39 ` [PATCHv3 04/14] drivers/perf: arm_pmu: factor out pmu registration Mark Rutland
2017-04-11 8:39 ` [PATCHv3 05/14] drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() Mark Rutland
2017-04-11 8:39 ` [PATCHv3 06/14] drivers/perf: arm_pmu: handle no platform_device Mark Rutland
2017-04-11 8:39 ` [PATCHv3 07/14] drivers/perf: arm_pmu: rename irq request/free functions Mark Rutland
2017-04-11 8:39 ` [PATCHv3 08/14] drivers/perf: arm_pmu: split cpu-local irq request/free Mark Rutland
2017-04-18 17:25 ` Geert Uytterhoeven
2017-04-18 17:25 ` Geert Uytterhoeven
2017-04-18 18:24 ` Geert Uytterhoeven
2017-04-18 18:24 ` Geert Uytterhoeven
2017-04-18 18:33 ` Mark Rutland
2017-04-18 18:33 ` Mark Rutland
2017-04-18 18:57 ` Geert Uytterhoeven
2017-04-18 18:57 ` Geert Uytterhoeven
2017-04-20 19:10 ` Mark Rutland
2017-04-20 19:10 ` Mark Rutland
2017-04-11 8:39 ` [PATCHv3 09/14] drivers/perf: arm_pmu: move irq request/free into probe Mark Rutland
2017-04-11 8:39 ` [PATCHv3 10/14] drivers/perf: arm_pmu: split out platform device probe logic Mark Rutland
2017-04-11 8:39 ` [PATCHv3 11/14] arm64: add function to get a cpu's MADT GICC table Mark Rutland
2017-04-11 8:39 ` [PATCHv3 12/14] drivers/perf: arm_pmu: add ACPI framework Mark Rutland
2017-04-11 8:39 ` [PATCHv3 13/14] arm64: pmuv3: handle !PMUv3 when probing Mark Rutland
2017-04-13 14:06 ` Jayachandran C.
2017-04-13 15:36 ` Mark Rutland
2017-04-11 8:39 ` [PATCHv3 14/14] arm64: pmuv3: use arm_pmu ACPI framework Mark Rutland
2017-04-11 15:11 ` Anurup M [this message]
2017-04-11 15:45 ` [PATCHv3 00/14] arm_pmu: ACPI support Will Deacon
2017-04-12 6:48 ` Hanjun Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=58ECF225.2040804@gmail.com \
--to=anurupvasu@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.