1
0

s390/zcrypt: externalize AP config info query

KVM has a need to fetch the crypto configuration information
as it is returned by the PQAP(QCI) instruction. This patch
introduces a new API ap_query_configuration() which provides
this info in a handy way for the caller.

Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Este cometimento está contido em:
Harald Freudenberger
2016-11-08 11:54:28 +01:00
cometido por Martin Schwidefsky
ascendente e7fc5146cf
cometimento 050349b5b7
3 ficheiros modificados com 42 adições e 16 eliminações

Ver ficheiro

@@ -194,12 +194,23 @@ struct ap_queue_status ap_test_queue(ap_qid_t qid,
}
EXPORT_SYMBOL(ap_test_queue);
static inline int ap_query_configuration(void)
/*
* ap_query_configuration(): Fetch cryptographic config info
*
* Returns the ap configuration info fetched via PQAP(QCI).
* On success 0 is returned, on failure a negative errno
* is returned, e.g. if the PQAP(QCI) instruction is not
* available, the return value will be -EOPNOTSUPP.
*/
int ap_query_configuration(struct ap_config_info *info)
{
if (!ap_configuration)
if (!ap_configuration_available())
return -EOPNOTSUPP;
return ap_qci(ap_configuration);
if (!info)
return -EINVAL;
return ap_qci(info);
}
EXPORT_SYMBOL(ap_query_configuration);
/**
* ap_init_configuration(): Allocate and query configuration array.
@@ -212,7 +223,7 @@ static void ap_init_configuration(void)
ap_configuration = kzalloc(sizeof(*ap_configuration), GFP_KERNEL);
if (!ap_configuration)
return;
if (ap_query_configuration() != 0) {
if (ap_query_configuration(ap_configuration) != 0) {
kfree(ap_configuration);
ap_configuration = NULL;
return;
@@ -1009,7 +1020,7 @@ static void ap_scan_bus(struct work_struct *unused)
AP_DBF(DBF_DEBUG, "ap_scan_bus running\n");
ap_query_configuration();
ap_query_configuration(ap_configuration);
if (ap_select_domain() != 0)
goto out;