[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/6] hw/arm/virt: Support -machine gic-version=max
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH 6/6] hw/arm/virt: Support -machine gic-version=max |
Date: |
Thu, 7 Dec 2017 18:14:53 +0000 |
Add support for passing 'max' to -machine gic-version. By analogy
with the -cpu max option, this picks the "best available" GIC version
whether you're using KVM or TCG, so it behaves like 'host' when
using KVM, and gives you GICv3 when using TCG.
Also like '-cpu host', using -machine gic-version=max' means there
is no guarantee of migration compatibility between QEMU versions;
in future 'max' might mean '4'.
Signed-off-by: Peter Maydell <address@hidden>
---
hw/arm/virt.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 92bd776..603ba56 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1265,16 +1265,23 @@ static void machvirt_init(MachineState *machine)
/* We can probe only here because during property set
* KVM is not available yet
*/
- if (!vms->gic_version) {
+ if (vms->gic_version <= 0) {
+ /* "host" or "max" */
if (!kvm_enabled()) {
- error_report("gic-version=host requires KVM");
- exit(1);
- }
-
- vms->gic_version = kvm_arm_vgic_probe();
- if (!vms->gic_version) {
- error_report("Unable to determine GIC version supported by host");
- exit(1);
+ if (vms->gic_version == 0) {
+ error_report("gic-version=host requires KVM");
+ exit(1);
+ } else {
+ /* "max": currently means 3 for TCG */
+ vms->gic_version = 3;
+ }
+ } else {
+ vms->gic_version = kvm_arm_vgic_probe();
+ if (!vms->gic_version) {
+ error_report(
+ "Unable to determine GIC version supported by host");
+ exit(1);
+ }
}
}
@@ -1539,9 +1546,11 @@ static void virt_set_gic_version(Object *obj, const char
*value, Error **errp)
vms->gic_version = 2;
} else if (!strcmp(value, "host")) {
vms->gic_version = 0; /* Will probe later */
+ } else if (!strcmp(value, "max")) {
+ vms->gic_version = -1; /* Will probe later */
} else {
error_setg(errp, "Invalid gic-version value");
- error_append_hint(errp, "Valid values are 3, 2, host.\n");
+ error_append_hint(errp, "Valid values are 3, 2, host, max.\n");
}
}
--
2.7.4
- [Qemu-devel] [PATCH 0/6] arm: support -cpu max (and gic-version=max), Peter Maydell, 2017/12/07
- [Qemu-devel] [PATCH 6/6] hw/arm/virt: Support -machine gic-version=max,
Peter Maydell <=
- [Qemu-devel] [PATCH 5/6] hw/arm/virt: Add "max" to the list of CPU types "virt" supports, Peter Maydell, 2017/12/07
- [Qemu-devel] [PATCH 3/6] target/arm: Move definition of 'host' cpu type into cpu.c, Peter Maydell, 2017/12/07
- [Qemu-devel] [PATCH 2/6] target/arm: Query host CPU features on-demand at instance init, Peter Maydell, 2017/12/07
- [Qemu-devel] [PATCH 4/6] target/arm: Add "-cpu max" support, Peter Maydell, 2017/12/07
- [Qemu-devel] [PATCH 1/6] hw/arm/virt: Check that the CPU realize method succeeded, Peter Maydell, 2017/12/07
- Re: [Qemu-devel] [Qemu-arm] [PATCH 0/6] arm: support -cpu max (and gic-version=max), Peter Maydell, 2017/12/07