aboutsummaryrefslogtreecommitdiff
path: root/hw/arm/virt.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2016-10-31 11:12:02 +0000
committerPeter Maydell <peter.maydell@linaro.org>2016-10-31 11:12:02 +0000
commit4178c782f85530d261058abdccc734aa9b7c89ca (patch)
tree5e231bd3742e84e5dbb2f9c8a4168d76d257a142 /hw/arm/virt.c
parent5273a45e7521a45b27447fe6e4510ef43ff2fa67 (diff)
parentd26a10e232eb18bf9e32dc2366231715bfd1d5b4 (diff)
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20161028' into staging
target-arm queue: * Fix reset GPIO handling for spitz, tosa boards * virt: add 'pmu' property for configuring whether to expose the vPMU to the guest * char: cadence: correct reset value for baud rate registers * versatilepb: do not run if user asks for more than 256MB RAM * pxa2xx: Set value default values for CCCR and CKEN on PXA255 * arm: cubieboard: Add support for initrd * i.MX: Fix GPIO ISR register write # gpg: Signature made Fri 28 Oct 2016 15:56:56 BST # gpg: using RSA key 0x3C2525ED14360CDE # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" # gpg: aka "Peter Maydell <pmaydell@gmail.com>" # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20161028: hw/arm/tosa: Fix reset handling hw/arm/spitz: Fix reset handling arm: virt: add PMU property to mach-virt machine type arm: Add an option to turn on/off vPMU support char: cadence: correct reset value for baud rate registers versatilepb: do not run if user asks for more than 256MB RAM hw/arm/pxa2xx: Set value default values for CCCR and CKEN on PXA255 arm: cubieboard: Add support for initrd i.MX: Fix GPIO ISR register write Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/virt.c')
-rw-r--r--hw/arm/virt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 070bbf89d4..54a8b28a58 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -85,6 +85,7 @@ typedef struct {
VirtBoardInfo *daughterboard;
bool disallow_affinity_adjustment;
bool no_its;
+ bool no_pmu;
} VirtMachineClass;
typedef struct {
@@ -490,7 +491,7 @@ static void fdt_add_pmu_nodes(const VirtBoardInfo *vbi, int gictype)
CPU_FOREACH(cpu) {
armcpu = ARM_CPU(cpu);
- if (!armcpu->has_pmu ||
+ if (!arm_feature(&armcpu->env, ARM_FEATURE_PMU) ||
!kvm_arm_pmu_create(cpu, PPI(VIRTUAL_PMU_IRQ))) {
return;
}
@@ -1353,6 +1354,10 @@ static void machvirt_init(MachineState *machine)
}
}
+ if (vmc->no_pmu && object_property_find(cpuobj, "pmu", NULL)) {
+ object_property_set_bool(cpuobj, false, "pmu", NULL);
+ }
+
if (object_property_find(cpuobj, "reset-cbar", NULL)) {
object_property_set_int(cpuobj, vbi->memmap[VIRT_CPUPERIPHS].base,
"reset-cbar", &error_abort);
@@ -1592,5 +1597,7 @@ static void virt_machine_2_6_options(MachineClass *mc)
virt_machine_2_7_options(mc);
SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_6);
vmc->disallow_affinity_adjustment = true;
+ /* Disable PMU for 2.6 as PMU support was first introduced in 2.7 */
+ vmc->no_pmu = true;
}
DEFINE_VIRT_MACHINE(2, 6)