Skip to content

More fully implement ARM PMUv3

Aaron Lindsay qemu-arm qemu-devel 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v6 Latest14 patches 39 repliesIn review

Patches in v6 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/14target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly doing IOtarget/arm/helper.c+4 -21 reply
2/14target/arm: Mask PMOVSR writes based on supported counterstarget/arm/helper.c+1 -01 reply
3/14migration: Add post_save function to VMStateDescriptiondocs/devel/migration.rst include/migration/vmstate.h migration/vmstate.c+17 -38 replies
4/14target/arm: Swap PMU values before/after migrationstarget/arm/helper.c target/arm/machine.c+23 -22 replies
5/14target/arm: Reorganize PMCCNTR accessestarget/arm/cpu.h target/arm/helper.c target/arm/machine.c+73 -575 replies
6/14target/arm: Filter cycle counter based on PMCCFILTR_EL0target/arm/cpu.c target/arm/cpu.h target/arm/helper.c +1 more+137 -142 replies
7/14target/arm: Allow AArch32 access for PMCCFILTRtarget/arm/helper.c+26 -11 reply
8/14target/arm: Implement PMOVSSETtarget/arm/helper.c+28 -01 reply
9/14target/arm: Add array for supported PMU events, generate PMCEID[01]target/arm/cpu.c target/arm/cpu.h target/arm/cpu64.c +1 more+65 -92 replies
10/14target/arm: Finish implementation of PM[X]EVCNTR and PM[X]EVTYPERtarget/arm/cpu.h target/arm/helper.c+282 -171 reply
11/14target/arm: PMU: Add instruction and cycle eventstarget/arm/helper.c+44 -464 replies
12/14target/arm: PMU: Set PMCR.N to 4target/arm/helper.c+4 -47 replies
13/14target/arm: Implement PMSWINCtarget/arm/helper.c+37 -21 reply
14/14target/arm: Send interrupts on PMU counter overflowtarget/arm/cpu.c target/arm/cpu.h target/arm/helper.c+138 -60 replies

Reviews trailers per patch

8 of 14 patches have a Reviewed-by or Acked-by.

PatchPeter MaydellRichard Henderson
1/14R-b
2/14R-b
3/14
4/14
5/14
6/14R-b R-b
7/14R-b R-b
8/14R-b
9/14
10/14R-b
11/14R-b
12/14
13/14R-b
14/14

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v6 thread

Cover letter [Qemu-arm] [PATCH v6 00/14] More fully implement ARM PMUv3

The ARM PMU implementation currently contains a basic cycle counter, but it is often useful to gather counts of other events, filter them based on execution mode, and/or be notified on counter overflow. These patches flesh out the implementations of various PMU registers including PM[X]EVCNTR and PM[X]EVTYPER, add a struct definition to represent arbitrary counter types, implement mode filtering, send interrupts on counter overflow, and add instruction, cycle, and software increment events.

Since v5 [1] I have:
* Taken a first pass at addressing migration
* Restructured the list of supported events, and ensured they're all initialized
* Fixed aliasing for PMOVSSET
* Added ARM_CP_IO for PMINTENCLR and PMINTENCLR_EL1
* Addressed a few non-code issues (comment style, patch staging, spelling, etc.)

[1] - https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg06830.html

Aaron Lindsay (14):
target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly
doing IO
target/arm: Mask PMOVSR writes based on supported counters
migration: Add post_save function to VMStateDescription target/arm: Swap PMU values before/after migrations target/arm: Reorganize PMCCNTR accesses
target/arm: Filter cycle counter based on PMCCFILTR_EL0 target/arm: Allow AArch32 access for PMCCFILTR target/arm: Implement PMOVSSET
target/arm: Add array for supported PMU events, generate PMCEID[01] target/arm: Finish implementation of PM[X]EVCNTR and PM[X]EVTYPER target/arm: PMU: Add instruction and cycle events target/arm: PMU: Set PMCR.N to 4
target/arm: Implement PMSWINC
target/arm: Send interrupts on PMU counter overflow

 docs/devel/migration.rst    |   9 +-
 include/migration/vmstate.h |   1 +
 migration/vmstate.c         |  10 +-
 target/arm/cpu.c            |  28 +-
 target/arm/cpu.h            |  68 +++-
 target/arm/cpu64.c          |   2 -
 target/arm/helper.c         | 781 ++++++++++++++++++++++++++++++++----
 target/arm/machine.c        |  19 +
 8 files changed, 817 insertions(+), 101 deletions(-)
Signature · 1 line
2.19.1