Hi, This is the v2 of Richard's work sent in [1]. The initial implementation presented some issues with the event-based branch kernel tests that I fixed in this new version. This code is now passing all EBB PPC64 tests, it makes Avocado happy and it's all contained in the C helper.
Last patch is an improvement that became natural to do after seeing how Richard updates env->hflags in pmu_update_summaries(). Avocado test performance: (1/1) tests/avocado/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv8: PASS (32.63 s) (1/1) tests/avocado/boot_linux_console.py:BootLinuxConsole.test_ppc_powernv9: PASS (34.16 s) Changes from v1: - patch 1: * fixed a couple of minor that was causing test failures - patch 2 and 3: unchanged - patch 4 (new): * clear HFLAGS_INSN_CNT if MMCR0_FC is set - patch 5 (new): * avoid calling hreg_compute_hflags() - v1 link: https://lists.gnu.org/archive/html/qemu-devel/2021-12/msg04013.html [1] https://lists.gnu.org/archive/html/qemu-devel/2021-12/msg04013.html Daniel Henrique Barboza (2): target/ppc: keep ins_cnt/cyc_cnt cleared if MMCR0_FC is set target/ppc: do not call hreg_compute_hflags() in helper_store_mmcr0() Richard Henderson (3): target/ppc: Cache per-pmc insn and cycle count settings target/ppc: Rewrite pmu_increment_insns target/ppc: Use env->pnc_cyc_cnt target/ppc/cpu.h | 3 + target/ppc/cpu_init.c | 1 + target/ppc/helper_regs.c | 2 +- target/ppc/machine.c | 2 + target/ppc/power8-pmu.c | 238 +++++++++++++++++---------------------- target/ppc/power8-pmu.h | 14 +-- 6 files changed, 117 insertions(+), 143 deletions(-) -- 2.33.1