Message ID | 20220404181726.60291-4-mjrosato@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x/pci: zPCI interpretation support | expand |
On 04/04/2022 20.17, Matthew Rosato wrote: > 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> > --- > hw/s390x/s390-virtio-ccw.c | 1 + > target/s390x/cpu_features_def.h.inc | 1 + > target/s390x/gen-features.c | 2 ++ > target/s390x/kvm/kvm.c | 1 + > 4 files changed, 5 insertions(+) > > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index 90480e7cf9..b190234308 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -805,6 +805,7 @@ static void ccw_machine_6_2_instance_options(MachineState *machine) > static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_2 }; > > ccw_machine_7_0_instance_options(machine); > + s390_cpudef_featoff_greater(14, 1, S390_FEAT_ZPCI_INTERP); > s390_set_qemu_cpu_model(0x3906, 14, 2, qemu_cpu_feat); > } > > 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 22846121c4..9db6bd545e 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, > }; If you add something to the default model, I think you also need to add some compatibility handling to the machine types. See e.g. commit 84176c7906f as an example. Thomas
On 18/05/2022 10.01, Thomas Huth wrote: > On 04/04/2022 20.17, Matthew Rosato wrote: >> 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> >> --- >> hw/s390x/s390-virtio-ccw.c | 1 + >> target/s390x/cpu_features_def.h.inc | 1 + >> target/s390x/gen-features.c | 2 ++ >> target/s390x/kvm/kvm.c | 1 + >> 4 files changed, 5 insertions(+) >> >> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c >> index 90480e7cf9..b190234308 100644 >> --- a/hw/s390x/s390-virtio-ccw.c >> +++ b/hw/s390x/s390-virtio-ccw.c >> @@ -805,6 +805,7 @@ static void >> ccw_machine_6_2_instance_options(MachineState *machine) >> static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_2 }; >> ccw_machine_7_0_instance_options(machine); >> + s390_cpudef_featoff_greater(14, 1, S390_FEAT_ZPCI_INTERP); >> s390_set_qemu_cpu_model(0x3906, 14, 2, qemu_cpu_feat); >> } >> 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 22846121c4..9db6bd545e 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, >> }; > > If you add something to the default model, I think you also need to add some > compatibility handling to the machine types. See e.g. commit 84176c7906f as > an example. Ah, never mind, it's there some lines earlier in the patch ... I guess I did not have not enough coffee today yet... Thomas
On 04/04/2022 20.17, Matthew Rosato wrote: > 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> > --- > hw/s390x/s390-virtio-ccw.c | 1 + > target/s390x/cpu_features_def.h.inc | 1 + > target/s390x/gen-features.c | 2 ++ > target/s390x/kvm/kvm.c | 1 + > 4 files changed, 5 insertions(+) > > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index 90480e7cf9..b190234308 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -805,6 +805,7 @@ static void ccw_machine_6_2_instance_options(MachineState *machine) > static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_2 }; > > ccw_machine_7_0_instance_options(machine); > + s390_cpudef_featoff_greater(14, 1, S390_FEAT_ZPCI_INTERP); > s390_set_qemu_cpu_model(0x3906, 14, 2, qemu_cpu_feat); > } This needs to be moved into ccw_machine_7_0_instance_options() now that 7.0 has been released without this feature. Thomas
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 90480e7cf9..b190234308 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -805,6 +805,7 @@ static void ccw_machine_6_2_instance_options(MachineState *machine) static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_2 }; ccw_machine_7_0_instance_options(machine); + s390_cpudef_featoff_greater(14, 1, S390_FEAT_ZPCI_INTERP); s390_set_qemu_cpu_model(0x3906, 14, 2, qemu_cpu_feat); } 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 22846121c4..9db6bd545e 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 6acf14d5ec..0357bfda89 100644 --- a/target/s390x/kvm/kvm.c +++ b/target/s390x/kvm/kvm.c @@ -2294,6 +2294,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> --- hw/s390x/s390-virtio-ccw.c | 1 + target/s390x/cpu_features_def.h.inc | 1 + target/s390x/gen-features.c | 2 ++ target/s390x/kvm/kvm.c | 1 + 4 files changed, 5 insertions(+)