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