Message ID | 20211207205743.150299-17-mjrosato@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: s390: enable zPCI for interpretive execution | expand |
Am 07.12.21 um 21:57 schrieb Matthew Rosato: > This facility will be used to enable interpretive execution of zPCI > instructions. > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> > --- > arch/s390/kvm/kvm-s390.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index c8fe9b7c2395..09991d05c871 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -2751,6 +2751,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) > set_kvm_facility(kvm->arch.model.fac_mask, 147); > set_kvm_facility(kvm->arch.model.fac_list, 147); > } > + if (sclp.has_zpci_interp && test_facility(69)) { > + set_kvm_facility(kvm->arch.model.fac_mask, 69); > + set_kvm_facility(kvm->arch.model.fac_list, 69); > + } Do we need the setting of these stfle bits somewhere? I think QEMU sets them as well for the guest. We only need this when the kernel probes for this (test_kvm_facility) But then the question is, shouldnt we then simply check for sclp bits in those places? See also patch 19. We need to build it in a way that allows VSIE support later on. > > if (css_general_characteristics.aiv && test_facility(65)) > set_kvm_facility(kvm->arch.model.fac_mask, 65); >
On 12/17/21 10:05 AM, Christian Borntraeger wrote: > > > Am 07.12.21 um 21:57 schrieb Matthew Rosato: >> This facility will be used to enable interpretive execution of zPCI >> instructions. >> >> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> >> --- >> arch/s390/kvm/kvm-s390.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >> index c8fe9b7c2395..09991d05c871 100644 >> --- a/arch/s390/kvm/kvm-s390.c >> +++ b/arch/s390/kvm/kvm-s390.c >> @@ -2751,6 +2751,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned >> long type) >> set_kvm_facility(kvm->arch.model.fac_mask, 147); >> set_kvm_facility(kvm->arch.model.fac_list, 147); >> } >> + if (sclp.has_zpci_interp && test_facility(69)) { >> + set_kvm_facility(kvm->arch.model.fac_mask, 69); >> + set_kvm_facility(kvm->arch.model.fac_list, 69); >> + } > > > Do we need the setting of these stfle bits somewhere? I think QEMU sets > them as well for the guest. > We only need this when the kernel probes for this (test_kvm_facility) > But then the question is, shouldnt > we then simply check for sclp bits in those places? > See also patch 19. We need to build it in a way that allows VSIE support > later on. > Right, so this currently sets the facility bits but we don't set the associated guest SCLP bits. I guess since we are not enabling for VSIE now it would make sense to not set either. So then just to confirm we are on the same page: I will drop these patches 16-18 and leave the kvm facilities unset until we wish to enable VSIE. And then also make sure we are checking sclp bits (e.g. patch 19). OK? >> if (css_general_characteristics.aiv && test_facility(65)) >> set_kvm_facility(kvm->arch.model.fac_mask, 65); >>
Am 17.12.21 um 16:19 schrieb Matthew Rosato: > On 12/17/21 10:05 AM, Christian Borntraeger wrote: >> >> >> Am 07.12.21 um 21:57 schrieb Matthew Rosato: >>> This facility will be used to enable interpretive execution of zPCI >>> instructions. >>> >>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> >>> --- >>> arch/s390/kvm/kvm-s390.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >>> index c8fe9b7c2395..09991d05c871 100644 >>> --- a/arch/s390/kvm/kvm-s390.c >>> +++ b/arch/s390/kvm/kvm-s390.c >>> @@ -2751,6 +2751,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) >>> set_kvm_facility(kvm->arch.model.fac_mask, 147); >>> set_kvm_facility(kvm->arch.model.fac_list, 147); >>> } >>> + if (sclp.has_zpci_interp && test_facility(69)) { >>> + set_kvm_facility(kvm->arch.model.fac_mask, 69); >>> + set_kvm_facility(kvm->arch.model.fac_list, 69); >>> + } >> >> >> Do we need the setting of these stfle bits somewhere? I think QEMU sets them as well for the guest. > We only need this when the kernel probes for this (test_kvm_facility) >> But then the question is, shouldnt >> we then simply check for sclp bits in those places? >> See also patch 19. We need to build it in a way that allows VSIE support later on. >> > > Right, so this currently sets the facility bits but we don't set the associated guest SCLP bits. I guess since we are not enabling for VSIE now it would make sense to not set either. > > So then just to confirm we are on the same page: I will drop these patches 16-18 and leave the kvm facilities unset until we wish to enable VSIE. And then also make sure we are checking sclp bits (e.g. patch 19). OK? Right drop these patches and change patch 19. When we later enable VSIE we need QEMU to set the sclp bits. Not sure, does this work as of today or do we need additional vsie changes (I would assume so)?
On 12/17/21 11:58 AM, Christian Borntraeger wrote: > > > Am 17.12.21 um 16:19 schrieb Matthew Rosato: >> On 12/17/21 10:05 AM, Christian Borntraeger wrote: >>> >>> >>> Am 07.12.21 um 21:57 schrieb Matthew Rosato: >>>> This facility will be used to enable interpretive execution of zPCI >>>> instructions. >>>> >>>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> >>>> --- >>>> arch/s390/kvm/kvm-s390.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >>>> index c8fe9b7c2395..09991d05c871 100644 >>>> --- a/arch/s390/kvm/kvm-s390.c >>>> +++ b/arch/s390/kvm/kvm-s390.c >>>> @@ -2751,6 +2751,10 @@ int kvm_arch_init_vm(struct kvm *kvm, >>>> unsigned long type) >>>> set_kvm_facility(kvm->arch.model.fac_mask, 147); >>>> set_kvm_facility(kvm->arch.model.fac_list, 147); >>>> } >>>> + if (sclp.has_zpci_interp && test_facility(69)) { >>>> + set_kvm_facility(kvm->arch.model.fac_mask, 69); >>>> + set_kvm_facility(kvm->arch.model.fac_list, 69); >>>> + } >>> >>> >>> Do we need the setting of these stfle bits somewhere? I think QEMU >>> sets them as well for the guest. > We only need this when the kernel >>> probes for this (test_kvm_facility) >>> But then the question is, shouldnt >>> we then simply check for sclp bits in those places? >>> See also patch 19. We need to build it in a way that allows VSIE >>> support later on. >>> >> >> Right, so this currently sets the facility bits but we don't set the >> associated guest SCLP bits. I guess since we are not enabling for >> VSIE now it would make sense to not set either. >> >> So then just to confirm we are on the same page: I will drop these >> patches 16-18 and leave the kvm facilities unset until we wish to >> enable VSIE. And then also make sure we are checking sclp bits (e.g. >> patch 19). OK? > > Right drop these patches and change patch 19. When we later enable VSIE > we need QEMU to set the sclp bits. Not sure, does this work as of today > or do we need additional vsie changes (I would assume so)? No, we will need some additional work to be able to enable for VSIE (e.g. adapter interrupt source ID)
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index c8fe9b7c2395..09991d05c871 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -2751,6 +2751,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) set_kvm_facility(kvm->arch.model.fac_mask, 147); set_kvm_facility(kvm->arch.model.fac_list, 147); } + if (sclp.has_zpci_interp && test_facility(69)) { + set_kvm_facility(kvm->arch.model.fac_mask, 69); + set_kvm_facility(kvm->arch.model.fac_list, 69); + } if (css_general_characteristics.aiv && test_facility(65)) set_kvm_facility(kvm->arch.model.fac_mask, 65);
This facility will be used to enable interpretive execution of zPCI instructions. Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com> --- arch/s390/kvm/kvm-s390.c | 4 ++++ 1 file changed, 4 insertions(+)