s390/zcrypt: Provide target domain for EP11 cprbs to scheduling function
The scheduling function will get an extension which will process the target_id value from an EP11 cprb. This patch extracts the value during preparation of the ap message. Signed-off-by: Jürgen Christ <jchrist@linux.ibm.com> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
252a1ff777
commit
1024063eff
@ -1021,7 +1021,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
|
||||
struct ep11_target_dev *targets;
|
||||
unsigned short target_num;
|
||||
unsigned int wgt = 0, pref_wgt = 0;
|
||||
unsigned int func_code;
|
||||
unsigned int func_code, domain;
|
||||
struct ap_message ap_msg;
|
||||
int cpen, qpen, qid = 0, rc = -ENODEV;
|
||||
struct module *mod;
|
||||
@ -1058,7 +1058,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
|
||||
}
|
||||
}
|
||||
|
||||
rc = prep_ep11_ap_msg(userspace, xcrb, &ap_msg, &func_code);
|
||||
rc = prep_ep11_ap_msg(userspace, xcrb, &ap_msg, &func_code, &domain);
|
||||
if (rc)
|
||||
goto out_free;
|
||||
|
||||
|
@ -510,7 +510,8 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg,
|
||||
|
||||
static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap_msg,
|
||||
struct ep11_urb *xcRB,
|
||||
unsigned int *fcode)
|
||||
unsigned int *fcode,
|
||||
unsigned int *domain)
|
||||
{
|
||||
unsigned int lfmt;
|
||||
static struct type6_hdr static_type6_ep11_hdr = {
|
||||
@ -592,6 +593,8 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap
|
||||
else
|
||||
ap_msg->flags |= AP_MSG_FLAG_USAGE;
|
||||
|
||||
*domain = msg->cprbx.target_id;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1244,7 +1247,7 @@ out:
|
||||
*/
|
||||
int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb,
|
||||
struct ap_message *ap_msg,
|
||||
unsigned int *func_code)
|
||||
unsigned int *func_code, unsigned int *domain)
|
||||
{
|
||||
struct response_type resp_type = {
|
||||
.type = CEXXC_RESPONSE_TYPE_EP11,
|
||||
@ -1260,7 +1263,8 @@ int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb,
|
||||
ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL);
|
||||
if (!ap_msg->private)
|
||||
return -ENOMEM;
|
||||
return xcrb_msg_to_type6_ep11cprb_msgx(userspace, ap_msg, xcrb, func_code);
|
||||
return xcrb_msg_to_type6_ep11cprb_msgx(userspace, ap_msg, xcrb,
|
||||
func_code, domain);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -99,7 +99,7 @@ int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcrb,
|
||||
unsigned int *fc, unsigned short **dom);
|
||||
int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb,
|
||||
struct ap_message *ap_msg,
|
||||
unsigned int *fc);
|
||||
unsigned int *fc, unsigned int *dom);
|
||||
int prep_rng_ap_msg(struct ap_message *ap_msg,
|
||||
int *fc, unsigned int *dom);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user