Hi,

On Thu, Aug 04, 2022 at 05:41:37PM -0700, Ricardo Koller wrote:
> There are various pmu tests that require an isb() between enabling
> counting and the actual counting. This can lead to count registers
> reporting less events than expected; the actual enabling happens after
> some events have happened.  For example, some missing isb()'s in the
> pmu-sw-incr test lead to the following errors on bare-metal:
> 
>       INFO: pmu: pmu-sw-incr: SW_INCR counter #0 has value 4294967280
>       PASS: pmu: pmu-sw-incr: PWSYNC does not increment if PMCR.E is unset
>       FAIL: pmu: pmu-sw-incr: counter #1 after + 100 SW_INCR
>       FAIL: pmu: pmu-sw-incr: counter #0 after + 100 SW_INCR
>       INFO: pmu: pmu-sw-incr: counter values after 100 SW_INCR #0=82 #1=98
>       PASS: pmu: pmu-sw-incr: overflow on counter #0 after 100 SW_INCR
>       SUMMARY: 4 tests, 2 unexpected failures
> 
> Add the missing isb()'s on all failing tests, plus some others that seem
> required:
> - after clearing the overflow signal in the IRQ handler to make spurious
>   interrupts less likely.
> - after direct writes to PMSWINC_EL0 for software to read the correct
>   value for PMEVNCTR0_EL0 (from ARM DDI 0487H.a, page D13-5237).
> 
> Signed-off-by: Ricardo Koller <[email protected]>

Looks good to me:

Reviewed-by: Alexandru Elisei <[email protected]>

Thanks,
Alex
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to