On Mon, Nov 12, 2018 at 08:27:07AM +0000, Marc Zyngier wrote: > From: Mark Rutland <mark.rutland@xxxxxxx> > > commit da5a3ce66b8bb51b0ea8a89f42aac153903f90fb upstream. > > At boot time, KVM stashes the host MDCR_EL2 value, but only does this > when the kernel is not running in hyp mode (i.e. is non-VHE). In these > cases, the stashed value of MDCR_EL2.HPMN happens to be zero, which can > lead to CONSTRAINED UNPREDICTABLE behaviour. > > Since we use this value to derive the MDCR_EL2 value when switching > to/from a guest, after a guest have been run, the performance counters > do not behave as expected. This has been observed to result in accesses > via PMXEVTYPER_EL0 and PMXEVCNTR_EL0 not affecting the relevant > counters, resulting in events not being counted. In these cases, only > the fixed-purpose cycle counter appears to work as expected. > > Fix this by always stashing the host MDCR_EL2 value, regardless of VHE. > > Cc: Christopher Dall <christoffer.dall@xxxxxxx> > Cc: James Morse <james.morse@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 1e947bad0b63b351 ("arm64: KVM: Skip HYP setup when already running in HYP") > Tested-by: Robin Murphy <robin.murphy@xxxxxxx> > Signed-off-by: Mark Rutland <mark.rutland@xxxxxxx> > Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> > --- > arch/arm/kvm/arm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Now queued up, thanks. greg k-h