On 12/8/21 5:16 AM, Christian Borntraeger wrote:
> Am 07.12.21 um 22:04 schrieb Matthew Rosato:
>> The zpci-interp feature is used to specify whether zPCI interpretation is
>> to be used for this guest.
>>
>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
>> ---
>> target/s390x/cpu_features_def.h.inc | 1 +
>> target/s390x/gen-features.c | 2 ++
>> target/s390x/kvm/kvm.c | 1 +
>> 3 files changed, 4 insertions(+)
>>
>> diff --git a/target/s390x/cpu_features_def.h.inc
>> b/target/s390x/cpu_features_def.h.inc
>> index e86662bb3b..4ade3182aa 100644
>> --- a/target/s390x/cpu_features_def.h.inc
>> +++ b/target/s390x/cpu_features_def.h.inc
>> @@ -146,6 +146,7 @@ DEF_FEAT(SIE_CEI, "cei", SCLP_CPU, 43, "SIE:
>> Conditional-external-interception f
>> DEF_FEAT(DAT_ENH_2, "dateh2", MISC, 0, "DAT-enhancement facility 2")
>> DEF_FEAT(CMM, "cmm", MISC, 0, "Collaborative-memory-management
>> facility")
>> DEF_FEAT(AP, "ap", MISC, 0, "AP instructions installed")
>> +DEF_FEAT(ZPCI_INTERP, "zpci-interp", MISC, 0, "zPCI interpretation")
>> /* Features exposed via the PLO instruction. */
>> DEF_FEAT(PLO_CL, "plo-cl", PLO, 0, "PLO Compare and load (32 bit in
>> general registers)")
>> diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
>> index 7cb1a6ec10..7005d22415 100644
>> --- a/target/s390x/gen-features.c
>> +++ b/target/s390x/gen-features.c
>> @@ -554,6 +554,7 @@ static uint16_t full_GEN14_GA1[] = {
>> S390_FEAT_HPMA2,
>> S390_FEAT_SIE_KSS,
>> S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
>> + S390_FEAT_ZPCI_INTERP,
>> };
>> #define full_GEN14_GA2 EmptyFeat
>> @@ -650,6 +651,7 @@ static uint16_t default_GEN14_GA1[] = {
>> S390_FEAT_GROUP_MSA_EXT_8,
>> S390_FEAT_MULTIPLE_EPOCH,
>> S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
>> + S390_FEAT_ZPCI_INTERP,
>> };
>
> For the default model you need to be careful.
> Is this in any way guest visible? then you definitely need to fence this
> off for older QEMU versions so that when you migrate with older QEMUs
> See the s390_cpudef_featoff_greater calls in hw/s390x/s390-virtio-ccw.c
>
> I know its more of a theoretical aspect, since PCI currently forbids
> migration
> but we should try to have the cpu model consistent I guess.
Ah, good idea. Thanks for the pointer.
>> #define default_GEN14_GA2 EmptyFeat
>> diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
>> index 5b1fdb55c4..b13d78f988 100644
>> --- a/target/s390x/kvm/kvm.c
>> +++ b/target/s390x/kvm/kvm.c
>> @@ -2290,6 +2290,7 @@ static int kvm_to_feat[][2] = {
>> { KVM_S390_VM_CPU_FEAT_PFMFI, S390_FEAT_SIE_PFMFI},
>> { KVM_S390_VM_CPU_FEAT_SIGPIF, S390_FEAT_SIE_SIGPIF},
>> { KVM_S390_VM_CPU_FEAT_KSS, S390_FEAT_SIE_KSS},
>> + { KVM_S390_VM_CPU_FEAT_ZPCI_INTERP, S390_FEAT_ZPCI_INTERP },
>> };
>> static int query_cpu_feat(S390FeatBitmap features)
>>