Message ID | 20211207210425.150923-7-mjrosato@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x/pci: zPCI interpretation support | expand |
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. > #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) >
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) >>
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, }; #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)
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(+)