]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm64: Fix the issues when guest PMCCFILTR is configured
authorWei Huang <wei@redhat.com>
Wed, 16 Nov 2016 17:09:20 +0000 (11:09 -0600)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 18 Nov 2016 09:06:58 +0000 (09:06 +0000)
commitc586e1d8fe39c3011dfeef9fa244d84a7a1a1182
treee9d55da5a9addb46a708f0a7f3e20311a750b746
parent5eddaae2c3f8350c9dc6213d5ff8f7616b09d592
KVM: arm64: Fix the issues when guest PMCCFILTR is configured

KVM calls kvm_pmu_set_counter_event_type() when PMCCFILTR is configured.
But this function can't deals with PMCCFILTR correctly because the evtCount
bits of PMCCFILTR, which is reserved 0, conflits with the SW_INCR event
type of other PMXEVTYPER<n> registers. To fix it, when eventsel == 0, this
function shouldn't return immediately; instead it needs to check further
if select_idx is ARMV8_PMU_CYCLE_IDX.

Another issue is that KVM shouldn't copy the eventsel bits of PMCCFILTER
blindly to attr.config. Instead it ought to convert the request to the
"cpu cycle" event type (i.e. 0x11).

To support this patch and to prevent duplicated definitions, a limited
set of ARMv8 perf event types were relocated from perf_event.c to
asm/perf_event.h.

Cc: stable@vger.kernel.org # 4.6+
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Wei Huang <wei@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/include/asm/perf_event.h
arch/arm64/kernel/perf_event.c
virt/kvm/arm/pmu.c