[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [RFC v3 8/8] hw/arm/virt: Add virt-3.0 machine type supportin
From: |
Eric Auger |
Subject: |
[Qemu-arm] [RFC v3 8/8] hw/arm/virt: Add virt-3.0 machine type supporting up to 512 vcpus |
Date: |
Wed, 30 May 2018 13:45:41 +0200 |
Add virt-3.0 machine type.
This machine type allows up to 512 vcpus whereas for
earlier machine types, max_cpus was set to 255 and
any attempt to start the machine with vcpus > 255
was rejected at vl.c/main level.
Signed-off-by: Eric Auger <address@hidden>
---
hw/arm/virt.c | 32 +++++++++++++++++++++++++-------
1 file changed, 25 insertions(+), 7 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index c00f47d..a9fc24b 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1697,11 +1697,13 @@ static void virt_machine_class_init(ObjectClass *oc,
void *data)
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
mc->init = machvirt_init;
- /* Start max_cpus at the maximum QEMU supports. We'll further restrict
- * it later in machvirt_init, where we have more information about the
- * configuration of the particular instance.
+ /* Start with max_cpus set to 512. This value is chosen since achievable
+ * in accelerated mode with GICv3 and recent host supporting up to 512
vcpus
+ * and multiple redistributor region registration.
+ * This value will be refined later on once we collect more information
+ * about the configuration of the particular instance.
*/
- mc->max_cpus = 255;
+ mc->max_cpus = 512;
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC);
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE);
mc->block_default_type = IF_VIRTIO;
@@ -1737,7 +1739,7 @@ static void machvirt_machine_init(void)
}
type_init(machvirt_machine_init);
-static void virt_2_12_instance_init(Object *obj)
+static void virt_3_0_instance_init(Object *obj)
{
VirtMachineState *vms = VIRT_MACHINE(obj);
VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
@@ -1805,10 +1807,26 @@ static void virt_2_12_instance_init(Object *obj)
vms->irqmap = a15irqmap;
}
-static void virt_machine_2_12_options(MachineClass *mc)
+static void virt_machine_3_0_options(MachineClass *mc)
{
}
-DEFINE_VIRT_MACHINE_AS_LATEST(2, 12)
+DEFINE_VIRT_MACHINE_AS_LATEST(3, 0)
+
+#define VIRT_COMPAT_2_12 \
+ HW_COMPAT_2_12
+
+static void virt_2_12_instance_init(Object *obj)
+{
+ virt_3_0_instance_init(obj);
+}
+
+static void virt_machine_2_12_options(MachineClass *mc)
+{
+ virt_machine_3_0_options(mc);
+ SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_12);
+ mc->max_cpus = 255;
+}
+DEFINE_VIRT_MACHINE(2, 12)
#define VIRT_COMPAT_2_11 \
HW_COMPAT_2_11
--
2.5.5
- [Qemu-arm] [RFC v3 0/8] KVM/ARM: Relax the max 123 vcpus limitation along with KVM GICv3, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 1/8] linux-headers: Partial update for KVM/ARM multiple redistributor region registration, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 3/8] hw/intc/arm_gicv3: Introduce redist-region-count array property, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 4/8] hw/intc/arm_gicv3_kvm: Get prepared to handle multiple redist regions, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 2/8] target/arm: Allow KVM device address overwriting, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 5/8] hw/arm/virt: GICv3 DT node with one or two redistributor regions, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 6/8] hw/arm/virt-acpi-build: Advertise one or two GICR structures, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 7/8] hw/arm/virt: Register two redistributor regions when necessary, Eric Auger, 2018/05/30
- [Qemu-arm] [RFC v3 8/8] hw/arm/virt: Add virt-3.0 machine type supporting up to 512 vcpus,
Eric Auger <=