Blob Blame Raw
From 9269bf16c4ca06496840473ec842dfcbc2d9020f Mon Sep 17 00:00:00 2001
From: Cornelia Huck <cohuck@redhat.com>
Date: Tue, 7 Aug 2018 09:05:54 +0000
Subject: [PATCH 19/21] s390x/cpumodel: default enable bpb and ppa15 for z196
 and later

RH-Author: Cornelia Huck <cohuck@redhat.com>
Message-id: <20180807100554.29643-3-cohuck@redhat.com>
Patchwork-id: 81660
O-Subject: [qemu-kvm RHEL8/virt212 PATCH 2/2] s390x/cpumodel: default enable bpb and ppa15 for z196 and later
Bugzilla: 1595718
RH-Acked-by: David Hildenbrand <david@redhat.com>
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Jens Freimann <jfreiman@redhat.com>

Upstream: downstream version of 8727315111 ("s390x/cpumodel: default
	  enable bpb and ppa15 for z196 and later"); downstream does
	  not have the upstream machine types, instead we need to
	  turn off the bits for the RHEL 7.5 machine

Most systems and host kernels provide the necessary building blocks for
bpb and ppa15. We can reverse the logic and default enable those
features, while still allowing to disable it via cpu model.

So let us add bpb and ppa15 to z196 and later default CPU model for the
qemu rhel7.6.0 machine. (like -cpu z13).  Older machine types (i.e.
s390-ccw-virtio-rhel7.5.0) will retain the old value and not provide those
bits in the default model.

Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
 hw/s390x/s390-virtio-ccw.c  | 4 ++++
 target/s390x/gen-features.c | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 64e2a3b..bf039a1 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -912,6 +912,10 @@ static void ccw_machine_rhel750_instance_options(MachineState *machine)
     /* before 2.12 we emulated the very first z900, and RHEL 7.5 is
        based on 2.10 */
     s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat);
+
+    /* bpb and ppa15 were only in the full model in RHEL 7.5 */
+    s390_cpudef_featoff_greater(11, 1, S390_FEAT_PPA15);
+    s390_cpudef_featoff_greater(11, 1, S390_FEAT_BPB);
 }
 
 static void ccw_machine_rhel750_class_options(MachineClass *mc)
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index 0cdbc15..6626b6f 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -512,6 +512,8 @@ static uint16_t default_GEN11_GA1[] = {
     S390_FEAT_IPTE_RANGE,
     S390_FEAT_ACCESS_EXCEPTION_FS_INDICATION,
     S390_FEAT_GROUP_MSA_EXT_4,
+    S390_FEAT_PPA15,
+    S390_FEAT_BPB,
 };
 
 #define default_GEN11_GA2 EmptyFeat
-- 
1.8.3.1