mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:08:54 +00:00
s390/uv: Retrieve UV secrets sysfs support
Reflect the updated content in the query information UVC to the sysfs at /sys/firmware/query * new UV-query sysfs entry for the maximum number of retrievable secrets the UV can store for one secure guest. * new UV-query sysfs entry for the maximum number of association secrets the UV can store for one secure guest. * max_secrets contains the sum of max association and max retrievable secrets. Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com> Link: https://lore.kernel.org/r/20241024062638.1465970-7-seiden@linux.ibm.com Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
d356137187
commit
f00469a642
@ -46,7 +46,8 @@ void uv_query_info(void)
|
||||
uv_info.supp_add_secret_req_ver = uvcb.supp_add_secret_req_ver;
|
||||
uv_info.supp_add_secret_pcf = uvcb.supp_add_secret_pcf;
|
||||
uv_info.supp_secret_types = uvcb.supp_secret_types;
|
||||
uv_info.max_secrets = uvcb.max_secrets;
|
||||
uv_info.max_assoc_secrets = uvcb.max_assoc_secrets;
|
||||
uv_info.max_retr_secrets = uvcb.max_retr_secrets;
|
||||
}
|
||||
|
||||
if (test_bit_inv(BIT_UVC_CMD_SET_SHARED_ACCESS, (unsigned long *)uvcb.inst_calls_list) &&
|
||||
|
@ -145,9 +145,10 @@ struct uv_cb_qui {
|
||||
u64 reservedf0; /* 0x00f0 */
|
||||
u64 supp_add_secret_req_ver; /* 0x00f8 */
|
||||
u64 supp_add_secret_pcf; /* 0x0100 */
|
||||
u64 supp_secret_types; /* 0x0180 */
|
||||
u16 max_secrets; /* 0x0110 */
|
||||
u8 reserved112[0x120 - 0x112]; /* 0x0112 */
|
||||
u64 supp_secret_types; /* 0x0108 */
|
||||
u16 max_assoc_secrets; /* 0x0110 */
|
||||
u16 max_retr_secrets; /* 0x0112 */
|
||||
u8 reserved114[0x120 - 0x114]; /* 0x0114 */
|
||||
} __packed __aligned(8);
|
||||
|
||||
struct uv_key_hash {
|
||||
@ -548,7 +549,8 @@ struct uv_info {
|
||||
unsigned long supp_add_secret_req_ver;
|
||||
unsigned long supp_add_secret_pcf;
|
||||
unsigned long supp_secret_types;
|
||||
unsigned short max_secrets;
|
||||
unsigned short max_assoc_secrets;
|
||||
unsigned short max_retr_secrets;
|
||||
};
|
||||
|
||||
extern struct uv_info uv_info;
|
||||
|
@ -696,12 +696,32 @@ static struct kobj_attribute uv_query_supp_secret_types_attr =
|
||||
static ssize_t uv_query_max_secrets(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
return sysfs_emit(buf, "%d\n", uv_info.max_secrets);
|
||||
return sysfs_emit(buf, "%d\n",
|
||||
uv_info.max_assoc_secrets + uv_info.max_retr_secrets);
|
||||
}
|
||||
|
||||
static struct kobj_attribute uv_query_max_secrets_attr =
|
||||
__ATTR(max_secrets, 0444, uv_query_max_secrets, NULL);
|
||||
|
||||
static ssize_t uv_query_max_retr_secrets(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
return sysfs_emit(buf, "%d\n", uv_info.max_retr_secrets);
|
||||
}
|
||||
|
||||
static struct kobj_attribute uv_query_max_retr_secrets_attr =
|
||||
__ATTR(max_retr_secrets, 0444, uv_query_max_retr_secrets, NULL);
|
||||
|
||||
static ssize_t uv_query_max_assoc_secrets(struct kobject *kobj,
|
||||
struct kobj_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
return sysfs_emit(buf, "%d\n", uv_info.max_assoc_secrets);
|
||||
}
|
||||
|
||||
static struct kobj_attribute uv_query_max_assoc_secrets_attr =
|
||||
__ATTR(max_assoc_secrets, 0444, uv_query_max_assoc_secrets, NULL);
|
||||
|
||||
static struct attribute *uv_query_attrs[] = {
|
||||
&uv_query_facilities_attr.attr,
|
||||
&uv_query_feature_indications_attr.attr,
|
||||
@ -719,6 +739,8 @@ static struct attribute *uv_query_attrs[] = {
|
||||
&uv_query_supp_add_secret_pcf_attr.attr,
|
||||
&uv_query_supp_secret_types_attr.attr,
|
||||
&uv_query_max_secrets_attr.attr,
|
||||
&uv_query_max_assoc_secrets_attr.attr,
|
||||
&uv_query_max_retr_secrets_attr.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user