Re: [PATCH v3 6/6] s390/uv: Update query for secret-UVCs

Janosch Frank
2023-06-06T15:23:29Z

On 6/6/23 13:37, Steffen Eiden wrote:
> Update the query struct such that secret-UVC related
> information can be parsed.
> Add sysfs files for these new values.
>
> 'supp_add_secret_req_ver' notes the supported versions for the
> Add Secret UVC. Bit 0 indicates that version 0x100 is supported,
> bit 1 indicates 0x200, and so on.
>
> 'supp_add_secret_pcf' notes the supported plaintext flags for
> the Add Secret UVC.
>
> 'supp_secret_types' notes the supported types of secrets.
> Bit 0 indicates secret type 1, bit 1 indicates type 2, and so on.
>
> 'max_secrets' notes the maximum amount of secrets the secret store can
> store per pv guest.
>
> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
> ---
> arch/s390/boot/uv.c | 4 ++++
> arch/s390/include/asm/uv.h | 13 +++++++++++--
> arch/s390/kernel/uv.c | 40 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 55 insertions(+), 2 deletions(-)
>
> diff --git a/arch/s390/boot/uv.c b/arch/s390/boot/uv.c
> index 0a077c0a2056..323b5cae3cf1 100644
> --- a/arch/s390/boot/uv.c
> +++ b/arch/s390/boot/uv.c
> @@ -47,6 +47,10 @@ void uv_query_info(void)
> uv_info.conf_dump_finalize_len = uvcb.conf_dump_finalize_len;
> uv_info.supp_att_req_hdr_ver = uvcb.supp_att_req_hdr_ver;
> uv_info.supp_att_pflags = uvcb.supp_att_pflags;
> + 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_num_secrets;
> }
>
> #ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST
> diff --git a/arch/s390/include/asm/uv.h b/arch/s390/include/asm/uv.h
> index 3203ffbdde6b..d71eb9b887d3 100644
> --- a/arch/s390/include/asm/uv.h
> +++ b/arch/s390/include/asm/uv.h
> @@ -123,7 +123,7 @@ struct uv_cb_qui {
> u32 reserved70[3]; /* 0x0070 */
> u32 max_num_sec_conf; /* 0x007c */
> u64 max_guest_stor_addr; /* 0x0080 */
> - u8 reserved88[158 - 136]; /* 0x0088 */
> + u8 reserved88[0x9e - 0x88]; /* 0x0088 */
> u16 max_guest_cpu_id; /* 0x009e */
> u64 uv_feature_indications; /* 0x00a0 */
> u64 reserveda8; /* 0x00a8 */
> @@ -135,7 +135,12 @@ struct uv_cb_qui {
> u64 reservedd8; /* 0x00d8 */
> u64 supp_att_req_hdr_ver; /* 0x00e0 */
> u64 supp_att_pflags; /* 0x00e8 */
> - u8 reservedf0[256 - 240]; /* 0x00f0 */
> + u64 reservedf0; /* 0x00f0 */
> + u64 supp_add_secret_req_ver; /* 0x00f8 */
> + u64 supp_add_secret_pcf; /* 0x0100 */
> + u64 supp_secret_types; /* 0x0180 */
> + u16 max_num_secrets; /* 0x0110 */

Now I know where you got the "num" from