[PATCH] hw: Add compat machines for 6.3

Juan Quintela posted 1 patch 2 years, 4 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211215170548.20776-1-quintela@redhat.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>, "Cédric Le Goater" <clg@kaod.org>, David Hildenbrand <david@redhat.com>, David Gibson <david@gibson.dropbear.id.au>, Richard Henderson <richard.henderson@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, Greg Kurz <groug@kaod.org>, Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Christian Borntraeger <borntraeger@de.ibm.com>, Cornelia Huck <cohuck@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@redhat.com>, Halil Pasic <pasic@linux.ibm.com>
include/hw/boards.h        |  3 +++
include/hw/i386/pc.h       |  3 +++
hw/arm/virt.c              | 11 ++++++++++-
hw/core/machine.c          |  4 ++++
hw/i386/pc.c               |  4 ++++
hw/i386/pc_piix.c          | 14 +++++++++++++-
hw/i386/pc_q35.c           | 13 ++++++++++++-
hw/ppc/spapr.c             | 19 ++++++++++++++++---
hw/s390x/s390-virtio-ccw.c | 14 +++++++++++++-
9 files changed, 78 insertions(+), 7 deletions(-)
[PATCH] hw: Add compat machines for 6.3
Posted by Juan Quintela 2 years, 4 months ago
Add 6.2 machine types for arm/i440fx/q35/s390x/spapr.

Shameless copy of commit
	52e64f5b1f2c81472b57dbad255ab9b00302f10d
from
	Yanan Wang <wangyanan55@huawei.com>

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 include/hw/boards.h        |  3 +++
 include/hw/i386/pc.h       |  3 +++
 hw/arm/virt.c              | 11 ++++++++++-
 hw/core/machine.c          |  4 ++++
 hw/i386/pc.c               |  4 ++++
 hw/i386/pc_piix.c          | 14 +++++++++++++-
 hw/i386/pc_q35.c           | 13 ++++++++++++-
 hw/ppc/spapr.c             | 19 ++++++++++++++++---
 hw/s390x/s390-virtio-ccw.c | 14 +++++++++++++-
 9 files changed, 78 insertions(+), 7 deletions(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 9c1c190104..b7b68471ff 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -375,6 +375,9 @@ struct MachineState {
     } \
     type_init(machine_initfn##_register_types)
 
+extern GlobalProperty hw_compat_6_2[];
+extern const size_t hw_compat_6_2_len;
+
 extern GlobalProperty hw_compat_6_1[];
 extern const size_t hw_compat_6_1_len;
 
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9ab39e428f..b38947c224 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -196,6 +196,9 @@ void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid,
 /* sgx.c */
 void pc_machine_init_sgx_epc(PCMachineState *pcms);
 
+extern GlobalProperty pc_compat_6_2[];
+extern const size_t pc_compat_6_2_len;
+
 extern GlobalProperty pc_compat_6_1[];
 extern const size_t pc_compat_6_1_len;
 
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 30da05dfe0..80222aea20 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -2857,10 +2857,19 @@ static void machvirt_machine_init(void)
 }
 type_init(machvirt_machine_init);
 
+static void virt_machine_6_3_options(MachineClass *mc)
+{
+}
+DEFINE_VIRT_MACHINE_AS_LATEST(6, 3)
+
 static void virt_machine_6_2_options(MachineClass *mc)
 {
+    VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
+
+    virt_machine_6_3_options(mc);
+    compat_props_add(mc->compat_props, hw_compat_6_2, hw_compat_6_2_len);
 }
-DEFINE_VIRT_MACHINE_AS_LATEST(6, 2)
+DEFINE_VIRT_MACHINE(6, 2)
 
 static void virt_machine_6_1_options(MachineClass *mc)
 {
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 53a99abc56..1b92e787f4 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -37,6 +37,10 @@
 #include "hw/virtio/virtio.h"
 #include "hw/virtio/virtio-pci.h"
 
+GlobalProperty hw_compat_6_2[] = {
+};
+const size_t hw_compat_6_2_len = G_N_ELEMENTS(hw_compat_6_2);
+
 GlobalProperty hw_compat_6_1[] = {
     { "vhost-user-vsock-device", "seqpacket", "off" },
     { "nvme-ns", "shared", "off" },
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index a2ef40ecbc..68836d5bc3 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -94,6 +94,10 @@
 #include "trace.h"
 #include CONFIG_DEVICES
 
+GlobalProperty pc_compat_6_2[] = {
+};
+const size_t pc_compat_6_2_len = G_N_ELEMENTS(pc_compat_6_2);
+
 GlobalProperty pc_compat_6_1[] = {
     { TYPE_X86_CPU, "hv-version-id-build", "0x1bbc" },
     { TYPE_X86_CPU, "hv-version-id-major", "0x0006" },
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 223dd3e05d..d9f9cd593d 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -413,7 +413,7 @@ static void pc_i440fx_machine_options(MachineClass *m)
     machine_class_allow_dynamic_sysbus_dev(m, TYPE_VMBUS_BRIDGE);
 }
 
-static void pc_i440fx_6_2_machine_options(MachineClass *m)
+static void pc_i440fx_6_3_machine_options(MachineClass *m)
 {
     PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
     pc_i440fx_machine_options(m);
@@ -422,6 +422,18 @@ static void pc_i440fx_6_2_machine_options(MachineClass *m)
     pcmc->default_cpu_version = 1;
 }
 
+DEFINE_I440FX_MACHINE(v6_3, "pc-i440fx-6.3", NULL,
+                      pc_i440fx_6_3_machine_options);
+
+static void pc_i440fx_6_2_machine_options(MachineClass *m)
+{
+    pc_i440fx_6_3_machine_options(m);
+    m->alias = NULL;
+    m->is_default = false;
+    compat_props_add(m->compat_props, hw_compat_6_2, hw_compat_6_2_len);
+    compat_props_add(m->compat_props, pc_compat_6_2, pc_compat_6_2_len);
+}
+
 DEFINE_I440FX_MACHINE(v6_2, "pc-i440fx-6.2", NULL,
                       pc_i440fx_6_2_machine_options);
 
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index e1e100316d..60efb61fca 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -360,7 +360,7 @@ static void pc_q35_machine_options(MachineClass *m)
     m->max_cpus = 288;
 }
 
-static void pc_q35_6_2_machine_options(MachineClass *m)
+static void pc_q35_6_3_machine_options(MachineClass *m)
 {
     PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
     pc_q35_machine_options(m);
@@ -368,6 +368,17 @@ static void pc_q35_6_2_machine_options(MachineClass *m)
     pcmc->default_cpu_version = 1;
 }
 
+DEFINE_Q35_MACHINE(v6_3, "pc-q35-6.3", NULL,
+                   pc_q35_6_3_machine_options);
+
+static void pc_q35_6_2_machine_options(MachineClass *m)
+{
+    pc_q35_6_3_machine_options(m);
+    m->alias = NULL;
+    compat_props_add(m->compat_props, hw_compat_6_2, hw_compat_6_2_len);
+    compat_props_add(m->compat_props, pc_compat_6_2, pc_compat_6_2_len);
+}
+
 DEFINE_Q35_MACHINE(v6_2, "pc-q35-6.2", NULL,
                    pc_q35_6_2_machine_options);
 
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 3b5fd749be..1b999027bb 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4666,14 +4666,27 @@ static void spapr_machine_latest_class_options(MachineClass *mc)
     type_init(spapr_machine_register_##suffix)
 
 /*
- * pseries-6.2
+ * pseries-6.3
  */
-static void spapr_machine_6_2_class_options(MachineClass *mc)
+static void spapr_machine_6_3_class_options(MachineClass *mc)
 {
     /* Defaults for the latest behaviour inherited from the base class */
 }
 
-DEFINE_SPAPR_MACHINE(6_2, "6.2", true);
+DEFINE_SPAPR_MACHINE(6_2, "6.3", true);
+
+/*
+ * pseries-6.1
+ */
+static void spapr_machine_6_1_class_options(MachineClass *mc)
+{
+    SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
+
+    spapr_machine_6_3_class_options(mc);
+    compat_props_add(mc->compat_props, hw_compat_6_2, hw_compat_6_2_len);
+}
+
+DEFINE_SPAPR_MACHINE(6_2, "6.2", false);
 
 /*
  * pseries-6.1
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 653587ea62..16e2441143 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -791,14 +791,26 @@ bool css_migration_enabled(void)
     }                                                                         \
     type_init(ccw_machine_register_##suffix)
 
+static void ccw_machine_6_3_instance_options(MachineState *machine)
+{
+}
+
+static void ccw_machine_6_3_class_options(MachineClass *mc)
+{
+}
+DEFINE_CCW_MACHINE(6_3, "6.3", true);
+
 static void ccw_machine_6_2_instance_options(MachineState *machine)
 {
+    ccw_machine_6_3_instance_options(machine);
 }
 
 static void ccw_machine_6_2_class_options(MachineClass *mc)
 {
+    ccw_machine_6_3_class_options(mc);
+    compat_props_add(mc->compat_props, hw_compat_6_2, hw_compat_6_2_len);
 }
-DEFINE_CCW_MACHINE(6_2, "6.2", true);
+DEFINE_CCW_MACHINE(6_2, "6.2", false);
 
 static void ccw_machine_6_1_instance_options(MachineState *machine)
 {
-- 
2.33.1


Re: [PATCH] hw: Add compat machines for 6.3
Posted by Peter Maydell 2 years, 4 months ago
On Wed, 15 Dec 2021 at 17:06, Juan Quintela <quintela@redhat.com> wrote:
>
> Add 6.2 machine types for arm/i440fx/q35/s390x/spapr.
>
> Shameless copy of commit
>         52e64f5b1f2c81472b57dbad255ab9b00302f10d
> from
>         Yanan Wang <wangyanan55@huawei.com>

> +DEFINE_VIRT_MACHINE_AS_LATEST(6, 3)

There is no 6.3 -- the next release (being next year) will be 7.0.
Cornelia's posted an update-machine-types patch:
https://patchew.org/QEMU/20211208170241.110551-1-cohuck@redhat.com/

-- PMM

Re: [PATCH] hw: Add compat machines for 6.3
Posted by Juan Quintela 2 years, 4 months ago
Peter Maydell <peter.maydell@linaro.org> wrote:
> On Wed, 15 Dec 2021 at 17:06, Juan Quintela <quintela@redhat.com> wrote:
>>
>> Add 6.2 machine types for arm/i440fx/q35/s390x/spapr.
>>
>> Shameless copy of commit
>>         52e64f5b1f2c81472b57dbad255ab9b00302f10d
>> from
>>         Yanan Wang <wangyanan55@huawei.com>
>
>> +DEFINE_VIRT_MACHINE_AS_LATEST(6, 3)
>
> There is no 6.3 -- the next release (being next year) will be 7.0.
> Cornelia's posted an update-machine-types patch:
> https://patchew.org/QEMU/20211208170241.110551-1-cohuck@redhat.com/

Hi

Didn't see it when I was doing this.

I got confused with the version number on the tree.

Sorry for the noise.

Later, Juan.


Re: [PATCH] hw: Add compat machines for 6.3
Posted by Peter Maydell 2 years, 4 months ago
On Wed, 15 Dec 2021 at 17:13, Juan Quintela <quintela@redhat.com> wrote:
> I got confused with the version number on the tree.

Yeah, the VERSION numbering is a bit odd:
 VERSION   tag
 6.2.0     v6.2.0
 6.2.50    none, development tree before next release
 6.2.90    v7.0.0-rc0
 6.2.91    v7.0.0-rc1
 6.2.92    v7.0.0-rc2
 6.2.93    v7.0.0-rc3
 7.0.0     v7.0.0

It's trying to maintain (a) VERSION strictly increments and
(b) tags look like what users expect and (c) VERSION and tag
line up for the actual release. But it does mean the
open-dev-tree and the rc VERSION values are confusing.
I always have to check the comments in my tagging script
to get it right :-)

-- PMM