On 10/04/2016 04:38 PM, Wei Huang wrote: > This patchset adds a pmu=[on/off] option to enable/disable vPMU support > for guest VM. There are several reasons to justify this option. First, > vPMU can be problematic for cross-migration between different SoC as perf > counters are architecture-dependent. It is more flexible to have an option > to turn it on/off. Secondly this option matches the "pmu" option as > supported in libvirt. To make sure backward compatible, a PMU-related > property is added to mach-virt machine types. > > The following are testing results with this patchset. Other combinations > should have similar results: > CONFIG (qemu-system-aarch64) vPMU WARNING > -M virt-2.8/virt,accel=kvm -cpu host NO NO > -M virt-2.8/virt,accel=kvm -cpu host,pmu=off NO NO > -M virt-2.8/virt,accel=kvm -cpu host,pmu=on YES NO
Hi Peter, I just updated this patchset to comply with the recent addition of 2.8 machine type. Please let me know if you have any comments. > -M virt-2.7,accel=kvm -cpu host YES NO > -M virt-2.7,accel=kvm -cpu host,pmu=off NO NO > -M virt-2.7,accel=kvm -cpu host,pmu=on YES NO > -M virt-2.6,accel=kvm -cpu host NO NO > -M virt-2.6,accel=kvm -cpu host,pmu=off NO NO > -M virt-2.6,accel=kvm -cpu host,pmu=on YES NO > > -M virt-2.8/virt,accel=tcg -cpu cortex-a57 NO NO > -M virt-2.8/virt,accel=tcg -cpu cortex-a57,pmu=off NO NO > -M virt-2.8/virt,accel=tcg -cpu cortex-a57,pmu=on NO "No KVM" > -M virt-2.7,accel=tcg -cpu cortex-a57 NO NO > -M virt-2.7,accel=tcg -cpu cortex-a57,pmu=off NO NO > -M virt-2.7,accel=tcg -cpu cortex-a57,pmu=on NO "No KVM" > -M virt-2.6,accel=tcg -cpu cortex-a57 NO NO > -M virt-2.6,accel=tcg -cpu cortex-a57,pmu=off NO NO > -M virt-2.6,accel=tcg -cpu cortex-a57,pmu=on NO "No KVM" > > -M virt-2.8/virt,accel=tcg -cpu cortex-a15 NO NO > -M virt-2.8/virt,accel=tcg -cpu cortex-a15,pmu=off NO "No PMU property" > -M virt-2.8/virt,accel=tcg -cpu cortex-a15,pmu=on NO "No PMU property" > -M virt-2.7,accel=tcg -cpu cortex-a15 NO NO > -M virt-2.7,accel=tcg -cpu cortex-a15,pmu=off NO "No PMU property" > -M virt-2.7,accel=tcg -cpu cortex-a15,pmu=on NO "No PMU property" > -M virt-2.6,accel=tcg -cpu cortex-a15 NO NO > -M virt-2.6,accel=tcg -cpu cortex-a15,pmu=off NO "No PMU property" > -M virt-2.6,accel=tcg -cpu cortex-a15,pmu=on NO "No PMU property" > > * "NO KVM" msg > warning: pmu can't be enabled without KVM acceleration > * "No PMU property" msg > can't apply global cortex-a15-arm-cpu.pmu=off: Property '.pmu' not found > > V5->V6: > * adapt patches for new machine type 2.8 > > V4->V5: > * remove comment change for has_pmu > * remove warning msg when pmu_default_on=TRUE && has_pmu=AUTO && tcg=TRUE > > V3->V4: > * change has_pmu from Boolean to OnOffAuto to handle different cases > * "pmu" property is re-defined as DEFINE_PROP_ON_OFF_AUTO > > V2->V3: > * revise patch 1 commit msg and if-else statement (Drew) > * move property field into VirtMachineClass (Drew) > > V1->V2: > * keep the original field name as "has_pmu" > * add a warning message when PMU is turned on without KVM > * use the feature bit to check PMU availability, instead of using has_pmu > * add PMU compat support to mach-virt machine type > > RFC->V1: > * set default pmu=off > * change struct ARMCPU field name "has_pmu" ==> "has_host_pmu" > * like el3, add a new feature ARM_FEATURE_HOST_PMU > * "pmu" property becomes CPU dependent. Only cortex-a53/cortex-a57/host > running on kvm supports this option. > > Thanks, > -Wei > > Wei Huang (2): > arm64: Add an option to turn on/off vPMU support > arm: virt: add PMU property to mach-virt machine type > > hw/arm/virt-acpi-build.c | 2 +- > hw/arm/virt.c | 19 ++++++++++++++++++- > target-arm/cpu.c | 23 +++++++++++++++++++++++ > target-arm/cpu.h | 3 ++- > target-arm/cpu64.c | 2 ++ > target-arm/kvm64.c | 17 ++++++++++++++--- > 6 files changed, 60 insertions(+), 6 deletions(-) >