Message ID | 1519741693-17440-4-git-send-email-akrowiak@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/27/2018 03:28 PM, Tony Krowiak wrote: > If the AP instructions are not available on the linux host, then > AP devices can not be interpreted by the SIE. The AP bus has a > function it uses to determine if the AP instructions are > available. This patch provides a new function that wraps the > AP bus's function to externalize it for use by KVM. > > Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com> > Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> > --- > arch/s390/include/asm/ap.h | 7 +++++++ > drivers/s390/crypto/ap_bus.c | 6 ++++++ > 2 files changed, 13 insertions(+), 0 deletions(-) > > diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h > index cfce683..1df6b59 100644 > --- a/arch/s390/include/asm/ap.h > +++ b/arch/s390/include/asm/ap.h > @@ -120,4 +120,11 @@ struct ap_queue_status ap_queue_irq_ctrl(ap_qid_t qid, > struct ap_qirq_ctrl qirqctrl, > void *ind); > > +/** > + * ap_instructions_installed() - Tests whether AP instructions are installed > + * > + * Returns 1 if the AP instructions are installed, otherwise; returns 0 > + */ > +int ap_instructions_installed(void); > + > #endif /* _ASM_S390_AP_H_ */ > diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c > index 48d55dc..089b1cf 100644 > --- a/drivers/s390/crypto/ap_bus.c > +++ b/drivers/s390/crypto/ap_bus.c > @@ -211,6 +211,12 @@ int ap_query_configuration(struct ap_config_info *info) > } > EXPORT_SYMBOL(ap_query_configuration); > > +int ap_instructions_installed(void) > +{ > + return (ap_instructions_available() == 0); > +} > +EXPORT_SYMBOL(ap_instructions_installed); > + > /** > * ap_init_configuration(): Allocate and query configuration array. > */ Reviewed-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
On Tue, 27 Feb 2018 09:28:01 -0500 Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote: > If the AP instructions are not available on the linux host, then > AP devices can not be interpreted by the SIE. The AP bus has a > function it uses to determine if the AP instructions are > available. This patch provides a new function that wraps the > AP bus's function to externalize it for use by KVM. > > Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com> > Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> > --- > arch/s390/include/asm/ap.h | 7 +++++++ > drivers/s390/crypto/ap_bus.c | 6 ++++++ > 2 files changed, 13 insertions(+), 0 deletions(-) While I don't see anything wrong with this patch as it stands, you need to be careful to call this only from vfio-ap code (which depends on CONFIG_ZCRYPT). Speaking of which: the ap_bus part cannot be a module, but only built-in, right? So we don't get additional module complications?
On 02/28/2018 06:41 PM, Cornelia Huck wrote: > On Tue, 27 Feb 2018 09:28:01 -0500 > Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote: > >> If the AP instructions are not available on the linux host, then >> AP devices can not be interpreted by the SIE. The AP bus has a >> function it uses to determine if the AP instructions are >> available. This patch provides a new function that wraps the >> AP bus's function to externalize it for use by KVM. >> >> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com> >> Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> >> --- >> arch/s390/include/asm/ap.h | 7 +++++++ >> drivers/s390/crypto/ap_bus.c | 6 ++++++ >> 2 files changed, 13 insertions(+), 0 deletions(-) > While I don't see anything wrong with this patch as it stands, you need > to be careful to call this only from vfio-ap code (which depends on > CONFIG_ZCRYPT). > > Speaking of which: the ap_bus part cannot be a module, but only > built-in, right? So we don't get additional module complications? Right, the AP bus is not available as a module but statically build. > -- > To unsubscribe from this list: send the line "unsubscribe linux-s390" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h index cfce683..1df6b59 100644 --- a/arch/s390/include/asm/ap.h +++ b/arch/s390/include/asm/ap.h @@ -120,4 +120,11 @@ struct ap_queue_status ap_queue_irq_ctrl(ap_qid_t qid, struct ap_qirq_ctrl qirqctrl, void *ind); +/** + * ap_instructions_installed() - Tests whether AP instructions are installed + * + * Returns 1 if the AP instructions are installed, otherwise; returns 0 + */ +int ap_instructions_installed(void); + #endif /* _ASM_S390_AP_H_ */ diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 48d55dc..089b1cf 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -211,6 +211,12 @@ int ap_query_configuration(struct ap_config_info *info) } EXPORT_SYMBOL(ap_query_configuration); +int ap_instructions_installed(void) +{ + return (ap_instructions_available() == 0); +} +EXPORT_SYMBOL(ap_instructions_installed); + /** * ap_init_configuration(): Allocate and query configuration array. */