From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harald Freudenberger Subject: Re: [PATCH v8 21/22] KVM: s390: CPU model support for AP virtualization Date: Thu, 9 Aug 2018 10:34:26 +0200 Message-ID: <2fbfa34f-0a82-9fd2-3b52-60479d9eca1a@linux.ibm.com> References: <1533739472-7172-1-git-send-email-akrowiak@linux.vnet.ibm.com> <1533739472-7172-22-git-send-email-akrowiak@linux.vnet.ibm.com> <58eed530-31b3-49fe-cbd7-4d101b94daa0@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: freude@de.ibm.com, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, borntraeger@de.ibm.com, cohuck@redhat.com, kwankhede@nvidia.com, bjsdjshi@linux.vnet.ibm.com, pbonzini@redhat.com, alex.williamson@redhat.com, pmorel@linux.vnet.ibm.com, alifm@linux.vnet.ibm.com, mjrosato@linux.vnet.ibm.com, jjherne@linux.vnet.ibm.com, thuth@redhat.com, pasic@linux.vnet.ibm.com, berrange@redhat.com, fiuczy@linux.vnet.ibm.com, buendgen@de.ibm.com, frankja@linux.ibm.com, Tony Krowiak To: David Hildenbrand , Tony Krowiak , linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Return-path: In-Reply-To: <58eed530-31b3-49fe-cbd7-4d101b94daa0@redhat.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 09.08.2018 10:17, David Hildenbrand wrote: > On 08.08.2018 16:44, Tony Krowiak wrote: >> From: Tony Krowiak >> >> Introduces a new CPU model feature and two CPU model >> facilities to support AP virtualization for KVM guests. >> >> CPU model feature: >> >> The KVM_S390_VM_CPU_FEAT_AP feature indicates that >> AP instructions are available on the guest. This >> feature will be enabled by the kernel only if the AP >> instructions are installed on the linux host. This feature >> must be specifically turned on for the KVM guest from >> userspace to use the VFIO AP device driver for guest >> access to AP devices. >> >> CPU model facilities: >> >> 1. AP Query Configuration Information (QCI) facility is installed. >> >> This is indicated by setting facilities bit 12 for >> the guest. The kernel will not enable this facility >> for the guest if it is not set on the host. This facility >> must not be set by userspace if the KVM_S390_VM_CPU_FEAT_AP >> feature is not installed. > Could it happen on real HW (not frankenstein CPU models), that > > !AP, but STFL 12 or 15 are indicated? What is your expectation here ? There are no AP instructions available but if there would be AP instructions available then there would be the QCI and or the T bit facility within the PQAP AP instruction valid ? >> If this facility is not set for the KVM guest, then only >> APQNs with an APQI less than 16 will be used by a Linux >> guest regardless of the matrix configuration for the virtual >> machine. This is a limitation of the Linux AP bus. >> >> 2. AP Facilities Test facility (APFT) is installed. >> >> This is indicated by setting facilities bit 15 for >> the guest. The kernel will not enable this facility for >> the guest if it is not set on the host. This facility >> must not be set by userspace if the KVM_S390_VM_CPU_FEAT_AP >> feature is not installed. >> >> If this facility is not set for the KVM guest, then no >> AP devices will be available to the guest regardless of >> the guest's matrix configuration for the virtual >> machine. This is a limitation of the Linux AP bus. >> >> Signed-off-by: Tony Krowiak >> Reviewed-by: Christian Borntraeger >> Reviewed-by: Halil Pasic >> Tested-by: Michael Mueller >> Tested-by: Farhan Ali >> Signed-off-by: Christian Borntraeger >> --- >> arch/s390/kvm/kvm-s390.c | 7 +++++++ >> arch/s390/tools/gen_facilities.c | 2 ++ >> 2 files changed, 9 insertions(+), 0 deletions(-) >> >> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >> index 9203f0b..7d4fe9b 100644 >> --- a/arch/s390/kvm/kvm-s390.c >> +++ b/arch/s390/kvm/kvm-s390.c >> @@ -367,6 +367,13 @@ static void kvm_s390_cpu_feat_init(void) >> >> if (MACHINE_HAS_ESOP) >> allow_cpu_feat(KVM_S390_VM_CPU_FEAT_ESOP); >> + >> + /* >> + * Check if AP instructions installed on host >> + */ > Make this a one-line comment, please. > >> + if (ap_instructions_available() == 0) >> + allow_cpu_feat(KVM_S390_VM_CPU_FEAT_AP); >> + >> /* >> * We need SIE support, ESOP (PROT_READ protection for gmap_shadow), >> * 64bit SCAO (SCA passthrough) and IDTE (for gmap_shadow unshadowing). >> diff --git a/arch/s390/tools/gen_facilities.c b/arch/s390/tools/gen_facilities.c >> index 90a8c9e..a52290b 100644 >> --- a/arch/s390/tools/gen_facilities.c >> +++ b/arch/s390/tools/gen_facilities.c >> @@ -106,6 +106,8 @@ struct facility_def { >> >> .name = "FACILITIES_KVM_CPUMODEL", >> .bits = (int[]){ >> + 12, /* AP Query Configuration Information */ >> + 15, /* AP Facilities Test */ >> -1 /* END */ >> } >> }, >> >