From 19335c32c9f99d9aa948f047be11a31e7c39a8fe Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Fri, 2 Mar 2018 15:34:19 -0500 Subject: [PATCH] target/arm: clear PMUVER field of AA64DFR0 when vPMU=off The PMUv3 driver of linux kernel (in arch/arm64/kernel/perf_event.c) relies on the PMUVER field of id_aa64dfr0_el1 to decide if PMU support is present or not. This patch clears the PMUVER field under TCG mode when vPMU=off. Without it, PMUv3 will init insider guest VMs even with vPMU=off. This patch also removes a redundant line inside the if-statement. Backports commit 2b3ffa929249b15a75d8bde3e8e57a744f52aff0 from qemu --- qemu/target/arm/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/target/arm/cpu.c b/qemu/target/arm/cpu.c index 73d96a7f..c0bfbf52 100644 --- a/qemu/target/arm/cpu.c +++ b/qemu/target/arm/cpu.c @@ -561,8 +561,8 @@ static int arm_cpu_realizefn(struct uc_struct *uc, DeviceState *dev, Error **err } if (!cpu->has_pmu) { - cpu->has_pmu = false; unset_feature(env, ARM_FEATURE_PMU); + cpu->id_aa64dfr0 &= ~0xf00; } if (!arm_feature(env, ARM_FEATURE_EL2)) {