[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[qemu-s390x] [PATCH v3 8/9] s390x/cpumodel: add gen15 defintions
From: |
Christian Borntraeger |
Subject: |
[qemu-s390x] [PATCH v3 8/9] s390x/cpumodel: add gen15 defintions |
Date: |
Mon, 29 Apr 2019 05:02:49 -0400 |
add several new features (msa9, sort, deflate, additional vector
instructions, new general purpose instructions) to generation 15.
Also disable csske and bpb from the default and base models >=15.
This will allow to migrate gen15 machines to future machines that
do not have these features.
Signed-off-by: Christian Borntraeger <address@hidden>
---
target/s390x/gen-features.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index 8fc2e8e72f..c346b76bdf 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -13,6 +13,7 @@
#include <inttypes.h>
#include <stdio.h>
+#include <string.h>
#include "cpu_features_def.h"
#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
@@ -419,6 +420,10 @@ static uint16_t base_GEN14_GA1[] = {
#define base_GEN14_GA2 EmptyFeat
+static uint16_t base_GEN15_GA1[] = {
+ S390_FEAT_MISC_INSTRUCTION_EXT3,
+};
+
/* Full features (in order of release)
* Automatically includes corresponding base features.
* Full features are all features this hardware supports even if kvm/QEMU do
not
@@ -548,6 +553,16 @@ static uint16_t full_GEN14_GA1[] = {
#define full_GEN14_GA2 EmptyFeat
+static uint16_t full_GEN15_GA1[] = {
+ S390_FEAT_VECTOR_ENH2,
+ S390_FEAT_GROUP_ENH_SORT,
+ S390_FEAT_GROUP_DEFLATE_CONVERSION,
+ S390_FEAT_VECTOR_BCD_ENH,
+ S390_FEAT_GROUP_MSA_EXT_9,
+ S390_FEAT_GROUP_MSA_EXT_9_PCKMO,
+ S390_FEAT_ETOKEN,
+};
+
/* Default features (in order of release)
* Automatically includes corresponding base features.
* Default features are all features this version of QEMU supports for this
@@ -624,6 +639,16 @@ static uint16_t default_GEN14_GA1[] = {
#define default_GEN14_GA2 EmptyFeat
+static uint16_t default_GEN15_GA1[] = {
+ S390_FEAT_VECTOR_ENH2,
+ S390_FEAT_GROUP_ENH_SORT,
+ S390_FEAT_GROUP_DEFLATE_CONVERSION,
+ S390_FEAT_VECTOR_BCD_ENH,
+ S390_FEAT_GROUP_MSA_EXT_9,
+ S390_FEAT_GROUP_MSA_EXT_9_PCKMO,
+ S390_FEAT_ETOKEN,
+};
+
/* QEMU (CPU model) features */
static uint16_t qemu_V2_11[] = {
@@ -740,6 +765,7 @@ static CpuFeatDefSpec CpuFeatDef[] = {
CPU_FEAT_INITIALIZER(GEN13_GA2),
CPU_FEAT_INITIALIZER(GEN14_GA1),
CPU_FEAT_INITIALIZER(GEN14_GA2),
+ CPU_FEAT_INITIALIZER(GEN15_GA1),
};
#define FEAT_GROUP_INITIALIZER(_name) \
@@ -808,6 +834,11 @@ static void set_bits(uint64_t list[], BitSpec bits)
}
}
+static inline void clear_bit(uint64_t list[], unsigned long nr)
+{
+ list[nr / 64] &= ~(1ULL << (nr % 64));
+}
+
static void print_feature_defs(void)
{
uint64_t base_feat[S390_FEAT_MAX / 64 + 1] = {};
@@ -818,6 +849,12 @@ static void print_feature_defs(void)
printf("\n/* CPU model feature list data */\n");
for (i = 0; i < ARRAY_SIZE(CpuFeatDef); i++) {
+ /* With gen15 CSSKE and BPB are deprecated */
+ if (strcmp(CpuFeatDef[i].name, "S390_FEAT_LIST_GEN15_GA1") == 0) {
+ clear_bit(base_feat, S390_FEAT_CONDITIONAL_SSKE);
+ clear_bit(default_feat, S390_FEAT_CONDITIONAL_SSKE);
+ clear_bit(default_feat, S390_FEAT_BPB);
+ }
set_bits(base_feat, CpuFeatDef[i].base_bits);
/* add the base to the default features */
set_bits(default_feat, CpuFeatDef[i].base_bits);
--
2.17.1
- [qemu-s390x] [PATCH v3 0/9] s390x: new guest features, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 9/9] s390x/cpumodel: wire up 8561 and 8562 as gen15 machines, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 7/9] s390x/cpumodel: add Deflate-conversion facility, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 8/9] s390x/cpumodel: add gen15 defintions,
Christian Borntraeger <=
- [qemu-s390x] [PATCH v3 5/9] s390x/cpumodel: vector enhancements, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 6/9] s390x/cpumodel: enhanced sort facility, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 1/9] linux header sync, Christian Borntraeger, 2019/04/29
- [qemu-s390x] [PATCH v3 4/9] s390x/cpumodel: msa9 facility, Christian Borntraeger, 2019/04/29
[qemu-s390x] [PATCH v3 3/9] s390x/cpumodel: Miscellaneous-Instruction-Extensions Facility 3, Christian Borntraeger, 2019/04/29