On Mon, 3 Oct 2022 at 09:55, Alex Bennée <alex.ben...@linaro.org> wrote: > > > Peter Maydell <peter.mayd...@linaro.org> writes: > > > The PMU cycle and event counter infrastructure design requires that > > operations on the PMU register fields are wrapped in pmu_op_start() > > and pmu_op_finish() calls (or their more specific pmmcntr and > > pmevcntr equivalents). This includes any changes to registers which > > affect whether the counter should be enabled or disabled, but we > > forgot to do this. > > > > The effect of this bug is that in sequences like: > > * disable the cycle counter (PMCCNTR) using the PMCNTEN register > > * write a value such as 0xfffff000 to the PMCCNTR > > * restart the counter by writing to PMCNTEN > > the value written to the cycle counter is corrupted, and it starts > > counting from the wrong place. (Essentially, we fail to record that > > the QEMU_CLOCK_VIRTUAL timestamp when the counter should be considered > > to have started counting is the point when PMCNTEN is written to enable > > the counter.) > > > > Add the necessary bracketing calls, so that updates to the various > > registers which affect whether the PMU is counting are handled > > correctly. > > > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > > Reviewed-by: Richard Henderson <richard.hender...@linaro.org> > > I'm not sure why but this commit seems to be breaking a bunch of avocado > tests for me, including the TCG plugin ones: > > ➜ ./tests/venv/bin/avocado run > tests/avocado/tcg_plugins.py:test_aarch64_virt_insn_icount > JOB ID : 0f5647d95f678e73fc01730cf9f8d7f80118443e > JOB LOG : > /home/alex/avocado/job-results/job-2022-10-02T20.19-0f5647d/job.log > (1/1) > tests/avocado/tcg_plugins.py:PluginKernelNormal.test_aarch64_virt_insn_icount: > INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout > reached\nOrigi > nal status: ERROR\n{'name': > '1-tests/avocado/tcg_plugins.py:PluginKernelNormal.test_aarch64_virt_insn_icount', > 'logdir': '/home/alex/avocado/job-results/job-2022-10-02T20.19 > -0f5647d/te... (120.43 s) > RESULTS : PASS 0 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 1 | > CANCEL 0 > JOB TIME : 120.72 s
Known issue, fixed by https://patchew.org/QEMU/20220930133511.2112734-1-peter.mayd...@linaro.org/20220930133511.2112734-2-peter.mayd...@linaro.org/ in a pending pullreq. (I have no idea why avocado reports this as a timeout, because what actually happens is the QEMU binary prints an error message and exits with non-zero exit status.) -- PMM