From nobody Sat Oct 25 23:41:37 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516198883023546.2450928662721; Wed, 17 Jan 2018 06:21:23 -0800 (PST) Received: from localhost ([::1]:39190 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eboaf-0005zk-Sr for importer@patchew.org; Wed, 17 Jan 2018 09:21:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41868) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eboYg-0004of-07 for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eboYa-0003oL-N3 for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:17 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:60994 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eboYa-0003by-I5 for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:12 -0500 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0HEIiTl120111 for ; Wed, 17 Jan 2018 09:18:58 -0500 Received: from e06smtp15.uk.ibm.com (e06smtp15.uk.ibm.com [195.75.94.111]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fj64q6aec-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 17 Jan 2018 09:18:56 -0500 Received: from localhost by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Jan 2018 14:18:54 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp15.uk.ibm.com (192.168.101.145) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 17 Jan 2018 14:18:50 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w0HEIoxO34996286; Wed, 17 Jan 2018 14:18:50 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EA112AE051; Wed, 17 Jan 2018 14:10:37 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D7D59AE045; Wed, 17 Jan 2018 14:10:37 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Wed, 17 Jan 2018 14:10:37 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 25651) id BEDF720F69D; Wed, 17 Jan 2018 15:18:49 +0100 (CET) From: Christian Borntraeger To: Cornelia Huck Date: Wed, 17 Jan 2018 15:18:47 +0100 X-Mailer: git-send-email 2.9.4 In-Reply-To: <20180117141849.65757-1-borntraeger@de.ibm.com> References: <20180117141849.65757-1-borntraeger@de.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18011714-0020-0000-0000-000003EBB5E0 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18011714-0021-0000-0000-0000427DF13A Message-Id: <20180117141849.65757-2-borntraeger@de.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-01-17_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1801170205 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PATCH 1/3] header sync X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Janosch Frank , Thomas Huth , David Hildenbrand , qemu-devel , Alexander Graf , Christian Borntraeger , qemu-s390x , Halil Pasic , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" replace with proper header sync Signed-off-by: Christian Borntraeger --- linux-headers/asm-s390/kvm.h | 9 ++++----- linux-headers/linux/kvm.h | 5 +++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h index 32d372e..11def14 100644 --- a/linux-headers/asm-s390/kvm.h +++ b/linux-headers/asm-s390/kvm.h @@ -6,10 +6,6 @@ * * Copyright IBM Corp. 2008 * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License (version 2 only) - * as published by the Free Software Foundation. - * * Author(s): Carsten Otte * Christian Borntraeger */ @@ -228,6 +224,7 @@ struct kvm_guest_debug_arch { #define KVM_SYNC_RICCB (1UL << 7) #define KVM_SYNC_FPRS (1UL << 8) #define KVM_SYNC_GSCB (1UL << 9) +#define KVM_SYNC_BPBC (1UL << 10) /* length and alignment of the sdnx as a power of two */ #define SDNXC 8 #define SDNXL (1UL << SDNXC) @@ -251,7 +248,9 @@ struct kvm_sync_regs { }; __u8 reserved[512]; /* for future vector expansion */ __u32 fpc; /* valid on KVM_SYNC_VRS or KVM_SYNC_FPRS */ - __u8 padding1[52]; /* riccb needs to be 64byte aligned */ + __u8 bpbc : 1; /* bp mode */ + __u8 reserved2 : 7; + __u8 padding1[51]; /* riccb needs to be 64byte aligned */ __u8 riccb[64]; /* runtime instrumentation controls block */ __u8 padding2[192]; /* sdnx needs to be 256byte aligned */ union { diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index ce6c2f1..b4503d8 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -630,9 +630,9 @@ struct kvm_s390_irq { =20 struct kvm_s390_irq_state { __u64 buf; - __u32 flags; + __u32 flags; /* will stay unused for compatibility reasons */ __u32 len; - __u32 reserved[4]; + __u32 reserved[4]; /* will stay unused for compatibility reasons */ }; =20 /* for KVM_SET_GUEST_DEBUG */ @@ -932,6 +932,7 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_HYPERV_SYNIC2 148 #define KVM_CAP_HYPERV_VP_INDEX 149 #define KVM_CAP_S390_AIS_MIGRATION 150 +#define KVM_CAP_S390_BPB 151 =20 #ifdef KVM_CAP_IRQ_ROUTING =20 --=20 2.9.4 From nobody Sat Oct 25 23:41:37 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516199007326719.9504475267797; Wed, 17 Jan 2018 06:23:27 -0800 (PST) Received: from localhost ([::1]:39258 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebocg-0007WX-Ah for importer@patchew.org; Wed, 17 Jan 2018 09:23:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eboYf-0004oL-4A for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eboYa-0003o9-JD for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:17 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:48242) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eboYa-0003nB-BR for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:12 -0500 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0HEJ5Pe117168 for ; Wed, 17 Jan 2018 09:19:11 -0500 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fj7nhspkk-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 17 Jan 2018 09:19:08 -0500 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Jan 2018 14:18:54 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 17 Jan 2018 14:18:50 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w0HEIogL44564630; Wed, 17 Jan 2018 14:18:50 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3E27BAE055; Wed, 17 Jan 2018 14:10:38 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 26BC0AE053; Wed, 17 Jan 2018 14:10:38 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Wed, 17 Jan 2018 14:10:38 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 25651) id 165DC20F69C; Wed, 17 Jan 2018 15:18:50 +0100 (CET) From: Christian Borntraeger To: Cornelia Huck Date: Wed, 17 Jan 2018 15:18:48 +0100 X-Mailer: git-send-email 2.9.4 In-Reply-To: <20180117141849.65757-1-borntraeger@de.ibm.com> References: <20180117141849.65757-1-borntraeger@de.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18011714-0008-0000-0000-000004C2D2C2 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18011714-0009-0000-0000-00001E56423F Message-Id: <20180117141849.65757-3-borntraeger@de.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-01-17_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1801170205 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PATCH 2/3] s390x/kvm: Handle bpb feature X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Janosch Frank , Thomas Huth , David Hildenbrand , qemu-devel , Alexander Graf , Christian Borntraeger , qemu-s390x , Halil Pasic , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We need to handle the bpb control on reset and migration. Normally stfle.82 is transparent (and the normal guest part works without hypervisor activity). To prevent any issues we require full host kernel support for this feature. Signed-off-by: Christian Borntraeger --- target/s390x/cpu.c | 1 + target/s390x/cpu.h | 1 + target/s390x/cpu_features.c | 1 + target/s390x/cpu_features_def.h | 1 + target/s390x/gen-features.c | 1 + target/s390x/kvm.c | 16 ++++++++++++++++ target/s390x/machine.c | 17 +++++++++++++++++ 7 files changed, 38 insertions(+) diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index ae3cee9..1577b2c 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -89,6 +89,7 @@ static void s390_cpu_reset(CPUState *s) CPUS390XState *env =3D &cpu->env; =20 env->pfault_token =3D -1UL; + env->bpbc =3D 0; scc->parent_reset(s); cpu->env.sigp_order =3D 0; s390_cpu_set_state(CPU_STATE_STOPPED, cpu); diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 1a8b6b9..8514905 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -93,6 +93,7 @@ struct CPUS390XState { =20 uint32_t fpc; /* floating-point control register */ uint32_t cc_op; + uint8_t bpbc; /* branch prediction blocking */ =20 float_status fpu_status; /* passed to softfloat lib */ =20 diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c index 31a4676..5d1c210 100644 --- a/target/s390x/cpu_features.c +++ b/target/s390x/cpu_features.c @@ -89,6 +89,7 @@ static const S390FeatDef s390_features[] =3D { FEAT_INIT("msa4-base", S390_FEAT_TYPE_STFL, 77, "Message-security-assi= st-extension-4 facility (excluding subfunctions)"), FEAT_INIT("edat2", S390_FEAT_TYPE_STFL, 78, "Enhanced-DAT facility 2"), FEAT_INIT("dfppc", S390_FEAT_TYPE_STFL, 80, "Decimal-floating-point pa= cked-conversion facility"), + FEAT_INIT("bpb", S390_FEAT_TYPE_STFL, 82, "Branch Prediction Blocking"= ), FEAT_INIT("vx", S390_FEAT_TYPE_STFL, 129, "Vector facility"), FEAT_INIT("iep", S390_FEAT_TYPE_STFL, 130, "Instruction-execution-prot= ection facility"), FEAT_INIT("sea_esop2", S390_FEAT_TYPE_STFL, 131, "Side-effect-access f= acility and Enhanced-suppression-on-protection facility 2"), diff --git a/target/s390x/cpu_features_def.h b/target/s390x/cpu_features_de= f.h index 4b6d4e9..4487cfd 100644 --- a/target/s390x/cpu_features_def.h +++ b/target/s390x/cpu_features_def.h @@ -80,6 +80,7 @@ typedef enum { S390_FEAT_MSA_EXT_4, S390_FEAT_EDAT_2, S390_FEAT_DFP_PACKED_CONVERSION, + S390_FEAT_BPB, S390_FEAT_VECTOR, S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c index b24f6ad..95ee870 100644 --- a/target/s390x/gen-features.c +++ b/target/s390x/gen-features.c @@ -357,6 +357,7 @@ static uint16_t full_GEN7_GA1[] =3D { S390_FEAT_SIE_GPERE, S390_FEAT_SIE_IB, S390_FEAT_SIE_CEI, + S390_FEAT_BPB, }; =20 static uint16_t full_GEN7_GA2[] =3D { diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index 6a18a41..3cd4fab 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -490,6 +490,11 @@ int kvm_arch_put_registers(CPUState *cs, int level) cs->kvm_run->kvm_dirty_regs |=3D KVM_SYNC_GSCB; } =20 + if (can_sync_regs(cs, KVM_SYNC_BPBC)) { + cs->kvm_run->s.regs.bpbc =3D env->bpbc; + cs->kvm_run->kvm_dirty_regs |=3D KVM_SYNC_BPBC; + } + /* Finally the prefix */ if (can_sync_regs(cs, KVM_SYNC_PREFIX)) { cs->kvm_run->s.regs.prefix =3D env->psa; @@ -600,6 +605,10 @@ int kvm_arch_get_registers(CPUState *cs) memcpy(env->gscb, cs->kvm_run->s.regs.gscb, 32); } =20 + if (can_sync_regs(cs, KVM_SYNC_BPBC)) { + env->bpbc =3D cs->kvm_run->s.regs.bpbc; + } + /* pfault parameters */ if (can_sync_regs(cs, KVM_SYNC_PFAULT)) { env->pfault_token =3D cs->kvm_run->s.regs.pft; @@ -2278,6 +2287,13 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model= , Error **errp) clear_bit(S390_FEAT_CMM_NT, model->features); } =20 + /* stfle.82 is a transparent bit. As there is some state attached + * anyway we only enable this bit if the host kernel can handle + * migrate and reset */ + if (!kvm_check_extension(kvm_state, KVM_CAP_S390_BPB)) { + clear_bit(S390_FEAT_BPB, model->features); + } + /* We emulate a zPCI bus and AEN, therefore we don't need HW support */ if (pci_available) { set_bit(S390_FEAT_ZPCI, model->features); diff --git a/target/s390x/machine.c b/target/s390x/machine.c index b78f326..4aac456 100644 --- a/target/s390x/machine.c +++ b/target/s390x/machine.c @@ -194,6 +194,22 @@ const VMStateDescription vmstate_gscb =3D { } }; =20 +static bool bpbc_needed(void *opaque) +{ + return s390_has_feat(S390_FEAT_BPB); +} + +const VMStateDescription vmstate_bpbc =3D { + .name =3D "cpu/bpbc", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D bpbc_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINT8(env.bpbc, S390CPU), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_s390_cpu =3D { .name =3D "cpu", .post_load =3D cpu_post_load, @@ -228,6 +244,7 @@ const VMStateDescription vmstate_s390_cpu =3D { &vmstate_riccb, &vmstate_exval, &vmstate_gscb, + &vmstate_bpbc, NULL }, }; --=20 2.9.4 From nobody Sat Oct 25 23:41:37 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516198873086509.15318782388783; Wed, 17 Jan 2018 06:21:13 -0800 (PST) Received: from localhost ([::1]:39183 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eboaW-0005sS-9k for importer@patchew.org; Wed, 17 Jan 2018 09:21:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eboYY-0004jz-VT for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eboYR-0003fC-IE for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:10 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:51332) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eboYR-0003d6-8w for qemu-devel@nongnu.org; Wed, 17 Jan 2018 09:19:03 -0500 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0HEIsbE092859 for ; Wed, 17 Jan 2018 09:19:00 -0500 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fj7yx8nr9-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 17 Jan 2018 09:18:59 -0500 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Jan 2018 14:18:54 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 17 Jan 2018 14:18:51 -0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w0HEIoJD66912424; Wed, 17 Jan 2018 14:18:50 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6F0AD52047; Wed, 17 Jan 2018 13:11:20 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTPS id 5A06052049; Wed, 17 Jan 2018 13:11:20 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 25651) id 6465720F69D; Wed, 17 Jan 2018 15:18:50 +0100 (CET) From: Christian Borntraeger To: Cornelia Huck Date: Wed, 17 Jan 2018 15:18:49 +0100 X-Mailer: git-send-email 2.9.4 In-Reply-To: <20180117141849.65757-1-borntraeger@de.ibm.com> References: <20180117141849.65757-1-borntraeger@de.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18011714-0008-0000-0000-000004C2D2C1 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18011714-0009-0000-0000-00001E564240 Message-Id: <20180117141849.65757-4-borntraeger@de.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-01-17_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1801170205 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PATCH 3/3] s390x/cpumodel: fix transparency for non-hyp STFL features X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Janosch Frank , Thomas Huth , David Hildenbrand , qemu-devel , Alexander Graf , Christian Borntraeger , qemu-s390x , Halil Pasic , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Halil Pasic Before cpu-models were introduced to QEMU with 2.8 the so called non-hypervisor-managed STFL facilities (aka transparent facilities) were handled transparently. With the advent cpu models, for host model (means -cpu host), we started fencing these of using the identified full model. The full models however did not include all non-hypervisor-managed facilities, thus we end up fencing some of these off. New (non-hypervisor managed) facilities can be introduced with hardware or firmware upgrades. Requiring a code change and thus a QEMU upgrade to leverage such facilities is not acceptable. Namely the semantic of the host model is 'give me all you can'. Let us add non-hypervisor managed STFL facility bits to QEMU and to all the full models. For now first two doublewords should be sufficient. With this, when using host model, transparent facilities are presented to the guest. Regarding default (and base) models however, nothing really changes, except that user can specify any non-hypervisor facility now. Thus the so called transparent facilities, aren't handled transparently with the default nor with the base models (because of migration considerations). For example -cpu z13 will not enable (and mandate) any of the features added with this change for any compat machine types. Emerging non-hypervisor managed facilities that are expected to be present in any sane environment (in the context of the machine type) should be added to the default model (for non-compat machine types). Signed-off-by: Halil Pasic Reviewed-by: Christian Borntraeger Signed-off-by: Christian Borntraeger --- target/s390x/cpu_features.c | 54 +++++++++++++++++++++ target/s390x/cpu_features_def.h | 54 +++++++++++++++++++++ target/s390x/gen-features.c | 103 ++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 211 insertions(+) diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c index 5d1c210..407864a 100644 --- a/target/s390x/cpu_features.c +++ b/target/s390x/cpu_features.c @@ -51,6 +51,7 @@ static const S390FeatDef s390_features[] =3D { FEAT_INIT("parseh", S390_FEAT_TYPE_STFL, 26, "Parsing-enhancement faci= lity"), FEAT_INIT("mvcos", S390_FEAT_TYPE_STFL, 27, "Move-with-optional-specif= ication facility"), FEAT_INIT("tods-base", S390_FEAT_TYPE_STFL, 28, "TOD-clock-steering fa= cility (excluding subfunctions)"), + FEAT_INIT("stfle29", S390_FEAT_TYPE_STFL, 29, "Facility that is provid= ed by STFLE facility 29"), FEAT_INIT("etf3eh", S390_FEAT_TYPE_STFL, 30, "ETF3-enhancement facilit= y"), FEAT_INIT("ectg", S390_FEAT_TYPE_STFL, 31, "Extract-CPU-time facility"= ), FEAT_INIT("csst", S390_FEAT_TYPE_STFL, 32, "Compare-and-swap-and-store= facility"), @@ -60,12 +61,14 @@ static const S390FeatDef s390_features[] =3D { FEAT_INIT("emon", S390_FEAT_TYPE_STFL, 36, "Enhanced-monitor facility"= ), FEAT_INIT("fpe", S390_FEAT_TYPE_STFL, 37, "Floating-point extension fa= cility"), FEAT_INIT("opc", S390_FEAT_TYPE_STFL, 38, "Order Preserving Compressio= n facility"), + FEAT_INIT("stfle39", S390_FEAT_TYPE_STFL, 39, "Facility that is provid= ed by STFLE facility 39"), FEAT_INIT("sprogp", S390_FEAT_TYPE_STFL, 40, "Set-program-parameters f= acility"), FEAT_INIT("fpseh", S390_FEAT_TYPE_STFL, 41, "Floating-point-support-en= hancement facilities"), FEAT_INIT("dfp", S390_FEAT_TYPE_STFL, 42, "DFP (decimal-floating-point= ) facility"), FEAT_INIT("dfphp", S390_FEAT_TYPE_STFL, 43, "DFP (decimal-floating-poi= nt) facility has high performance"), FEAT_INIT("pfpo", S390_FEAT_TYPE_STFL, 44, "PFPO instruction"), FEAT_INIT("stfle45", S390_FEAT_TYPE_STFL, 45, "Various facilities intr= oduced with z196"), + FEAT_INIT("stfle46", S390_FEAT_TYPE_STFL, 46, "Facility that is provid= ed by STFLE facility 46"), FEAT_INIT("cmpsceh", S390_FEAT_TYPE_STFL, 47, "CMPSC-enhancement facil= ity"), FEAT_INIT("dfpzc", S390_FEAT_TYPE_STFL, 48, "Decimal-floating-point zo= ned-conversion facility"), FEAT_INIT("stfle49", S390_FEAT_TYPE_STFL, 49, "Various facilities intr= oduced with zEC12"), @@ -74,10 +77,15 @@ static const S390FeatDef s390_features[] =3D { FEAT_INIT("iacc2", S390_FEAT_TYPE_STFL, 52, "Interlocked-access facili= ty 2"), FEAT_INIT("stfle53", S390_FEAT_TYPE_STFL, 53, "Various facilities intr= oduced with z13"), FEAT_INIT("eec", S390_FEAT_TYPE_STFL, 54, "Entropy encoding compressio= n facility"), + FEAT_INIT("stfle55", S390_FEAT_TYPE_STFL, 55, "Facility that is provid= ed by STFLE facility 55"), + FEAT_INIT("stfle56", S390_FEAT_TYPE_STFL, 56, "Facility that is provid= ed by STFLE facility 56"), FEAT_INIT("msa5-base", S390_FEAT_TYPE_STFL, 57, "Message-security-assi= st-extension-5 facility (excluding subfunctions)"), FEAT_INIT("minste2", S390_FEAT_TYPE_STFL, 58, "Miscellaneous-instructi= on-extensions facility 2"), FEAT_INIT("sema", S390_FEAT_TYPE_STFL, 59, "Semaphore-assist facility"= ), FEAT_INIT("tsi", S390_FEAT_TYPE_STFL, 60, "Time-slice Instrumentation = facility"), + FEAT_INIT("stfle61", S390_FEAT_TYPE_STFL, 61, "Facility that is provid= ed by STFLE facility 61"), + FEAT_INIT("stfle62", S390_FEAT_TYPE_STFL, 62, "Facility that is provid= ed by STFLE facility 62"), + FEAT_INIT("stfle63", S390_FEAT_TYPE_STFL, 63, "Facility that is provid= ed by STFLE facility 63"), FEAT_INIT("ri", S390_FEAT_TYPE_STFL, 64, "CPU runtime-instrumentation = facility"), FEAT_INIT("zpci", S390_FEAT_TYPE_STFL, 69, "z/PCI facility"), FEAT_INIT("aen", S390_FEAT_TYPE_STFL, 71, "General-purpose-adapter-eve= nt-notification facility"), @@ -89,7 +97,53 @@ static const S390FeatDef s390_features[] =3D { FEAT_INIT("msa4-base", S390_FEAT_TYPE_STFL, 77, "Message-security-assi= st-extension-4 facility (excluding subfunctions)"), FEAT_INIT("edat2", S390_FEAT_TYPE_STFL, 78, "Enhanced-DAT facility 2"), FEAT_INIT("dfppc", S390_FEAT_TYPE_STFL, 80, "Decimal-floating-point pa= cked-conversion facility"), + FEAT_INIT("stfle81", S390_FEAT_TYPE_STFL, 81, "Facility that is provid= ed by STFLE facility 81"), FEAT_INIT("bpb", S390_FEAT_TYPE_STFL, 82, "Branch Prediction Blocking"= ), + FEAT_INIT("stfle83", S390_FEAT_TYPE_STFL, 83, "Facility that is provid= ed by STFLE facility 83"), + FEAT_INIT("stfle84", S390_FEAT_TYPE_STFL, 84, "Facility that is provid= ed by STFLE facility 84"), + FEAT_INIT("stfle85", S390_FEAT_TYPE_STFL, 85, "Facility that is provid= ed by STFLE facility 85"), + FEAT_INIT("stfle86", S390_FEAT_TYPE_STFL, 86, "Facility that is provid= ed by STFLE facility 86"), + FEAT_INIT("stfle87", S390_FEAT_TYPE_STFL, 87, "Facility that is provid= ed by STFLE facility 87"), + FEAT_INIT("stfle88", S390_FEAT_TYPE_STFL, 88, "Facility that is provid= ed by STFLE facility 88"), + FEAT_INIT("stfle89", S390_FEAT_TYPE_STFL, 89, "Facility that is provid= ed by STFLE facility 89"), + FEAT_INIT("stfle90", S390_FEAT_TYPE_STFL, 90, "Facility that is provid= ed by STFLE facility 90"), + FEAT_INIT("stfle91", S390_FEAT_TYPE_STFL, 91, "Facility that is provid= ed by STFLE facility 91"), + FEAT_INIT("stfle92", S390_FEAT_TYPE_STFL, 92, "Facility that is provid= ed by STFLE facility 92"), + FEAT_INIT("stfle93", S390_FEAT_TYPE_STFL, 93, "Facility that is provid= ed by STFLE facility 93"), + FEAT_INIT("stfle94", S390_FEAT_TYPE_STFL, 94, "Facility that is provid= ed by STFLE facility 94"), + FEAT_INIT("stfle95", S390_FEAT_TYPE_STFL, 95, "Facility that is provid= ed by STFLE facility 95"), + FEAT_INIT("stfle96", S390_FEAT_TYPE_STFL, 96, "Facility that is provid= ed by STFLE facility 96"), + FEAT_INIT("stfle97", S390_FEAT_TYPE_STFL, 97, "Facility that is provid= ed by STFLE facility 97"), + FEAT_INIT("stfle98", S390_FEAT_TYPE_STFL, 98, "Facility that is provid= ed by STFLE facility 98"), + FEAT_INIT("stfle99", S390_FEAT_TYPE_STFL, 99, "Facility that is provid= ed by STFLE facility 99"), + FEAT_INIT("stfle100", S390_FEAT_TYPE_STFL, 100, "Facility that is prov= ided by STFLE facility 100"), + FEAT_INIT("stfle101", S390_FEAT_TYPE_STFL, 101, "Facility that is prov= ided by STFLE facility 101"), + FEAT_INIT("stfle102", S390_FEAT_TYPE_STFL, 102, "Facility that is prov= ided by STFLE facility 102"), + FEAT_INIT("stfle103", S390_FEAT_TYPE_STFL, 103, "Facility that is prov= ided by STFLE facility 103"), + FEAT_INIT("stfle104", S390_FEAT_TYPE_STFL, 104, "Facility that is prov= ided by STFLE facility 104"), + FEAT_INIT("stfle105", S390_FEAT_TYPE_STFL, 105, "Facility that is prov= ided by STFLE facility 105"), + FEAT_INIT("stfle106", S390_FEAT_TYPE_STFL, 106, "Facility that is prov= ided by STFLE facility 106"), + FEAT_INIT("stfle107", S390_FEAT_TYPE_STFL, 107, "Facility that is prov= ided by STFLE facility 107"), + FEAT_INIT("stfle108", S390_FEAT_TYPE_STFL, 108, "Facility that is prov= ided by STFLE facility 108"), + FEAT_INIT("stfle109", S390_FEAT_TYPE_STFL, 109, "Facility that is prov= ided by STFLE facility 109"), + FEAT_INIT("stfle110", S390_FEAT_TYPE_STFL, 110, "Facility that is prov= ided by STFLE facility 110"), + FEAT_INIT("stfle111", S390_FEAT_TYPE_STFL, 111, "Facility that is prov= ided by STFLE facility 111"), + FEAT_INIT("stfle112", S390_FEAT_TYPE_STFL, 112, "Facility that is prov= ided by STFLE facility 112"), + FEAT_INIT("stfle113", S390_FEAT_TYPE_STFL, 113, "Facility that is prov= ided by STFLE facility 113"), + FEAT_INIT("stfle114", S390_FEAT_TYPE_STFL, 114, "Facility that is prov= ided by STFLE facility 114"), + FEAT_INIT("stfle115", S390_FEAT_TYPE_STFL, 115, "Facility that is prov= ided by STFLE facility 115"), + FEAT_INIT("stfle116", S390_FEAT_TYPE_STFL, 116, "Facility that is prov= ided by STFLE facility 116"), + FEAT_INIT("stfle117", S390_FEAT_TYPE_STFL, 117, "Facility that is prov= ided by STFLE facility 117"), + FEAT_INIT("stfle118", S390_FEAT_TYPE_STFL, 118, "Facility that is prov= ided by STFLE facility 118"), + FEAT_INIT("stfle119", S390_FEAT_TYPE_STFL, 119, "Facility that is prov= ided by STFLE facility 119"), + FEAT_INIT("stfle120", S390_FEAT_TYPE_STFL, 120, "Facility that is prov= ided by STFLE facility 120"), + FEAT_INIT("stfle121", S390_FEAT_TYPE_STFL, 121, "Facility that is prov= ided by STFLE facility 121"), + FEAT_INIT("stfle122", S390_FEAT_TYPE_STFL, 122, "Facility that is prov= ided by STFLE facility 122"), + FEAT_INIT("stfle123", S390_FEAT_TYPE_STFL, 123, "Facility that is prov= ided by STFLE facility 123"), + FEAT_INIT("stfle124", S390_FEAT_TYPE_STFL, 124, "Facility that is prov= ided by STFLE facility 124"), + FEAT_INIT("stfle125", S390_FEAT_TYPE_STFL, 125, "Facility that is prov= ided by STFLE facility 125"), + FEAT_INIT("stfle126", S390_FEAT_TYPE_STFL, 126, "Facility that is prov= ided by STFLE facility 126"), + FEAT_INIT("stfle127", S390_FEAT_TYPE_STFL, 127, "Facility that is prov= ided by STFLE facility 127"), FEAT_INIT("vx", S390_FEAT_TYPE_STFL, 129, "Vector facility"), FEAT_INIT("iep", S390_FEAT_TYPE_STFL, 130, "Instruction-execution-prot= ection facility"), FEAT_INIT("sea_esop2", S390_FEAT_TYPE_STFL, 131, "Side-effect-access f= acility and Enhanced-suppression-on-protection facility 2"), diff --git a/target/s390x/cpu_features_def.h b/target/s390x/cpu_features_de= f.h index 4487cfd..fd15362 100644 --- a/target/s390x/cpu_features_def.h +++ b/target/s390x/cpu_features_def.h @@ -42,6 +42,7 @@ typedef enum { S390_FEAT_PARSING_ENH, S390_FEAT_MOVE_WITH_OPTIONAL_SPEC, S390_FEAT_TOD_CLOCK_STEERING, + S390_FEAT_STFLE_29, S390_FEAT_ETF3_ENH, S390_FEAT_EXTRACT_CPU_TIME, S390_FEAT_COMPARE_AND_SWAP_AND_STORE, @@ -51,12 +52,14 @@ typedef enum { S390_FEAT_ENHANCED_MONITOR, S390_FEAT_FLOATING_POINT_EXT, S390_FEAT_ORDER_PRESERVING_COMPRESSION, + S390_FEAT_STFLE_39, S390_FEAT_SET_PROGRAM_PARAMETERS, S390_FEAT_FLOATING_POINT_SUPPPORT_ENH, S390_FEAT_DFP, S390_FEAT_DFP_FAST, S390_FEAT_PFPO, S390_FEAT_STFLE_45, + S390_FEAT_STFLE_46, S390_FEAT_CMPSC_ENH, S390_FEAT_DFP_ZONED_CONVERSION, S390_FEAT_STFLE_49, @@ -65,10 +68,15 @@ typedef enum { S390_FEAT_INTERLOCKED_ACCESS_2, S390_FEAT_STFLE_53, S390_FEAT_ENTROPY_ENC_COMP, + S390_FEAT_STFLE_55, + S390_FEAT_STFLE_56, S390_FEAT_MSA_EXT_5, S390_FEAT_MISC_INSTRUCTION_EXT, S390_FEAT_SEMAPHORE_ASSIST, S390_FEAT_TIME_SLICE_INSTRUMENTATION, + S390_FEAT_STFLE_61, + S390_FEAT_STFLE_62, + S390_FEAT_STFLE_63, S390_FEAT_RUNTIME_INSTRUMENTATION, S390_FEAT_ZPCI, S390_FEAT_ADAPTER_EVENT_NOTIFICATION, @@ -80,7 +88,53 @@ typedef enum { S390_FEAT_MSA_EXT_4, S390_FEAT_EDAT_2, S390_FEAT_DFP_PACKED_CONVERSION, + S390_FEAT_STFLE_81, S390_FEAT_BPB, + S390_FEAT_STFLE_83, + S390_FEAT_STFLE_84, + S390_FEAT_STFLE_85, + S390_FEAT_STFLE_86, + S390_FEAT_STFLE_87, + S390_FEAT_STFLE_88, + S390_FEAT_STFLE_89, + S390_FEAT_STFLE_90, + S390_FEAT_STFLE_91, + S390_FEAT_STFLE_92, + S390_FEAT_STFLE_93, + S390_FEAT_STFLE_94, + S390_FEAT_STFLE_95, + S390_FEAT_STFLE_96, + S390_FEAT_STFLE_97, + S390_FEAT_STFLE_98, + S390_FEAT_STFLE_99, + S390_FEAT_STFLE_100, + S390_FEAT_STFLE_101, + S390_FEAT_STFLE_102, + S390_FEAT_STFLE_103, + S390_FEAT_STFLE_104, + S390_FEAT_STFLE_105, + S390_FEAT_STFLE_106, + S390_FEAT_STFLE_107, + S390_FEAT_STFLE_108, + S390_FEAT_STFLE_109, + S390_FEAT_STFLE_110, + S390_FEAT_STFLE_111, + S390_FEAT_STFLE_112, + S390_FEAT_STFLE_113, + S390_FEAT_STFLE_114, + S390_FEAT_STFLE_115, + S390_FEAT_STFLE_116, + S390_FEAT_STFLE_117, + S390_FEAT_STFLE_118, + S390_FEAT_STFLE_119, + S390_FEAT_STFLE_120, + S390_FEAT_STFLE_121, + S390_FEAT_STFLE_122, + S390_FEAT_STFLE_123, + S390_FEAT_STFLE_124, + S390_FEAT_STFLE_125, + S390_FEAT_STFLE_126, + S390_FEAT_STFLE_127, S390_FEAT_VECTOR, S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c index 95ee870..6c6a6ba 100644 --- a/target/s390x/gen-features.c +++ b/target/s390x/gen-features.c @@ -350,6 +350,11 @@ static uint16_t base_GEN14_GA1[] =3D { * Automatically includes corresponding base features. * Full features are all features this hardware supports even if kvm/QEMU = do not * support these features yet. + * + * Non hypervisor managed bits are supposed to be transparent with host-m= odel. + * To achieve this the non-hypervisor managed bits are added to the full m= odel. + * Thus full features does not necessarily reflect the hardware for the + * non-hypervisor managed bits. */ static uint16_t full_GEN7_GA1[] =3D { S390_FEAT_SIE_F2, @@ -357,7 +362,105 @@ static uint16_t full_GEN7_GA1[] =3D { S390_FEAT_SIE_GPERE, S390_FEAT_SIE_IB, S390_FEAT_SIE_CEI, + + /* non-hyp 16-63*/ + S390_FEAT_EXTENDED_TRANSLATION_2, + S390_FEAT_MSA, + S390_FEAT_LONG_DISPLACEMENT, + S390_FEAT_LONG_DISPLACEMENT_FAST, + S390_FEAT_HFP_MADDSUB, + S390_FEAT_EXTENDED_IMMEDIATE, + S390_FEAT_EXTENDED_TRANSLATION_3, + S390_FEAT_HFP_UNNORMALIZED_EXT, + S390_FEAT_ETF2_ENH, + S390_FEAT_STORE_CLOCK_FAST, + S390_FEAT_PARSING_ENH, + S390_FEAT_MOVE_WITH_OPTIONAL_SPEC, + S390_FEAT_TOD_CLOCK_STEERING, + S390_FEAT_STFLE_29, + S390_FEAT_ETF3_ENH, + S390_FEAT_EXTRACT_CPU_TIME, + S390_FEAT_COMPARE_AND_SWAP_AND_STORE, + S390_FEAT_COMPARE_AND_SWAP_AND_STORE_2, + S390_FEAT_GENERAL_INSTRUCTIONS_EXT, + S390_FEAT_EXECUTE_EXT, + S390_FEAT_ENHANCED_MONITOR, + S390_FEAT_FLOATING_POINT_EXT, + S390_FEAT_ORDER_PRESERVING_COMPRESSION, + S390_FEAT_STFLE_39, + S390_FEAT_SET_PROGRAM_PARAMETERS, + S390_FEAT_FLOATING_POINT_SUPPPORT_ENH, + S390_FEAT_DFP, + S390_FEAT_DFP_FAST, + S390_FEAT_PFPO, + S390_FEAT_STFLE_45, + S390_FEAT_STFLE_46, + S390_FEAT_CMPSC_ENH, + S390_FEAT_DFP_ZONED_CONVERSION, + S390_FEAT_STFLE_49, + S390_FEAT_CONSTRAINT_TRANSACTIONAL_EXE, + S390_FEAT_LOCAL_TLB_CLEARING, + S390_FEAT_INTERLOCKED_ACCESS_2, + S390_FEAT_STFLE_53, + S390_FEAT_ENTROPY_ENC_COMP, + S390_FEAT_STFLE_55, + S390_FEAT_STFLE_56, + S390_FEAT_MSA_EXT_5, + S390_FEAT_MISC_INSTRUCTION_EXT, + S390_FEAT_SEMAPHORE_ASSIST, + S390_FEAT_TIME_SLICE_INSTRUMENTATION, + S390_FEAT_STFLE_61, + S390_FEAT_STFLE_62, + S390_FEAT_STFLE_63, + /* non-hyp 80-127*/ + S390_FEAT_DFP_PACKED_CONVERSION, + S390_FEAT_STFLE_81, S390_FEAT_BPB, + S390_FEAT_STFLE_83, + S390_FEAT_STFLE_84, + S390_FEAT_STFLE_85, + S390_FEAT_STFLE_86, + S390_FEAT_STFLE_87, + S390_FEAT_STFLE_88, + S390_FEAT_STFLE_89, + S390_FEAT_STFLE_90, + S390_FEAT_STFLE_91, + S390_FEAT_STFLE_92, + S390_FEAT_STFLE_93, + S390_FEAT_STFLE_94, + S390_FEAT_STFLE_95, + S390_FEAT_STFLE_96, + S390_FEAT_STFLE_97, + S390_FEAT_STFLE_98, + S390_FEAT_STFLE_99, + S390_FEAT_STFLE_100, + S390_FEAT_STFLE_101, + S390_FEAT_STFLE_102, + S390_FEAT_STFLE_103, + S390_FEAT_STFLE_104, + S390_FEAT_STFLE_105, + S390_FEAT_STFLE_106, + S390_FEAT_STFLE_107, + S390_FEAT_STFLE_108, + S390_FEAT_STFLE_109, + S390_FEAT_STFLE_110, + S390_FEAT_STFLE_111, + S390_FEAT_STFLE_112, + S390_FEAT_STFLE_113, + S390_FEAT_STFLE_114, + S390_FEAT_STFLE_115, + S390_FEAT_STFLE_116, + S390_FEAT_STFLE_117, + S390_FEAT_STFLE_118, + S390_FEAT_STFLE_119, + S390_FEAT_STFLE_120, + S390_FEAT_STFLE_121, + S390_FEAT_STFLE_122, + S390_FEAT_STFLE_123, + S390_FEAT_STFLE_124, + S390_FEAT_STFLE_125, + S390_FEAT_STFLE_126, + S390_FEAT_STFLE_127, }; =20 static uint16_t full_GEN7_GA2[] =3D { --=20 2.9.4