[v1] s390x: add zPCI feature to "qemu" CPU model

Message ID 20190212093023.32466-1-david@redhat.com
State New
Headers show
Series
  • [v1] s390x: add zPCI feature to "qemu" CPU model
Related show

Commit Message

David Hildenbrand Feb. 12, 2019, 9:30 a.m.
As we now always have PCI support, let's add it to the "qemu" CPU model,
taking care of backwards compatibility.

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 hw/s390x/s390-virtio-ccw.c  | 3 +++
 target/s390x/gen-features.c | 8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

Comments

Cornelia Huck Feb. 12, 2019, 11:16 a.m. | #1
On Tue, 12 Feb 2019 10:30:23 +0100
David Hildenbrand <david@redhat.com> wrote:

> As we now always have PCI support, let's add it to the "qemu" CPU model,
> taking care of backwards compatibility.
> 
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
>  hw/s390x/s390-virtio-ccw.c  | 3 +++
>  target/s390x/gen-features.c | 8 ++++++--
>  2 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index 3fb5c88af9..7f0d394fbe 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -657,7 +657,10 @@ DEFINE_CCW_MACHINE(4_0, "4.0", true);
>  
>  static void ccw_machine_3_1_instance_options(MachineState *machine)
>  {
> +    static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V3_1 };
>      ccw_machine_4_0_instance_options(machine);
> +
> +    s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat);

Hm, don't we emulate a (stripped-down) z12 (2827)? Or am I
misunderstanding?

>  }
>  
>  static void ccw_machine_3_1_class_options(MachineClass *mc)
David Hildenbrand Feb. 12, 2019, 11:19 a.m. | #2
On 12.02.19 12:16, Cornelia Huck wrote:
> On Tue, 12 Feb 2019 10:30:23 +0100
> David Hildenbrand <david@redhat.com> wrote:
> 
>> As we now always have PCI support, let's add it to the "qemu" CPU model,
>> taking care of backwards compatibility.
>>
>> Signed-off-by: David Hildenbrand <david@redhat.com>
>> ---
>>  hw/s390x/s390-virtio-ccw.c  | 3 +++
>>  target/s390x/gen-features.c | 8 ++++++--
>>  2 files changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
>> index 3fb5c88af9..7f0d394fbe 100644
>> --- a/hw/s390x/s390-virtio-ccw.c
>> +++ b/hw/s390x/s390-virtio-ccw.c
>> @@ -657,7 +657,10 @@ DEFINE_CCW_MACHINE(4_0, "4.0", true);
>>  
>>  static void ccw_machine_3_1_instance_options(MachineState *machine)
>>  {
>> +    static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V3_1 };
>>      ccw_machine_4_0_instance_options(machine);
>> +
>> +    s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat);
> 
> Hm, don't we emulate a (stripped-down) z12 (2827)? Or am I
> misunderstanding?

Yes, stupid copy and past error,

0x2827, 12, 2 it is!

Thanks for spotting that!

> 
>>  }
>>  
>>  static void ccw_machine_3_1_class_options(MachineClass *mc)

Patch

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 3fb5c88af9..7f0d394fbe 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -657,7 +657,10 @@  DEFINE_CCW_MACHINE(4_0, "4.0", true);
 
 static void ccw_machine_3_1_instance_options(MachineState *machine)
 {
+    static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V3_1 };
     ccw_machine_4_0_instance_options(machine);
+
+    s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat);
 }
 
 static void ccw_machine_3_1_class_options(MachineClass *mc)
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index b0e9b271e2..19bb8ac7f8 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -560,7 +560,7 @@  static uint16_t qemu_V2_11[] = {
     S390_FEAT_ZARCH,
 };
 
-static uint16_t qemu_LATEST[] = {
+static uint16_t qemu_V3_1[] = {
     S390_FEAT_DAT_ENH,
     S390_FEAT_IDTE_SEGMENT,
     S390_FEAT_STFLE,
@@ -592,13 +592,16 @@  static uint16_t qemu_LATEST[] = {
     S390_FEAT_MSA_EXT_4,
 };
 
+static uint16_t qemu_LATEST[] = {
+    S390_FEAT_ZPCI,
+};
+
 /* add all new definitions before this point */
 static uint16_t qemu_MAX[] = {
     /* z13+ features */
     S390_FEAT_STFLE_53,
     /* generates a dependency warning, leave it out for now */
     S390_FEAT_MSA_EXT_5,
-    S390_FEAT_ZPCI,
 };
 
 /****** END FEATURE DEFS ******/
@@ -708,6 +711,7 @@  static FeatGroupDefSpec FeatGroupDef[] = {
  *******************************/
 static FeatGroupDefSpec QemuFeatDef[] = {
     QEMU_FEAT_INITIALIZER(V2_11),
+    QEMU_FEAT_INITIALIZER(V3_1),
     QEMU_FEAT_INITIALIZER(LATEST),
     QEMU_FEAT_INITIALIZER(MAX),
 };