Re: [PATCH v5 05/10] KVM: s390: pv: Add query dump information

Claudio Imbrenda
2022-05-17T11:37:26Z

On Mon, 16 May 2022 09:08:12 +0000
Janosch Frank <frankja@linux.ibm.com> wrote:

> The dump API requires userspace to provide buffers into which we will
> store data. The dump information added in this patch tells userspace
> how big those buffers need to be.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>

> ---
> arch/s390/kvm/kvm-s390.c | 11 +++++++++++
> include/uapi/linux/kvm.h | 12 +++++++++++-
> 2 files changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index 5859f243d287..de54f14e081e 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -2255,6 +2255,17 @@ static ssize_t kvm_s390_handle_pv_info(struct kvm_s390_pv_info *info)
>
> return len_min;
> }
> + case KVM_PV_INFO_DUMP: {
> + len_min = sizeof(info->header) + sizeof(info->dump);
> +
> + if (info->header.len_max < len_min)
> + return -EINVAL;
> +
> + info->dump.dump_cpu_buffer_len = uv_info.guest_cpu_stor_len;
> + info->dump.dump_config_mem_buffer_per_1m = uv_info.conf_dump_storage_state_len;
> + info->dump.dump_config_finalize_len = uv_info.conf_dump_finalize_len;
> + return len_min;
> + }
> default:
> return -EINVAL;
> }
> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> index 8ac9de7d1386..bb2f91bc2305 100644
> --- a/include/uapi/linux/kvm.h
> +++ b/include/uapi/linux/kvm.h
> @@ -1655,6 +1655,13 @@ struct kvm_s390_pv_unp {
>
> enum pv_cmd_info_id {
> KVM_PV_INFO_VM,
> + KVM_PV_INFO_DUMP,
> +};
> +
> +struct kvm_s390_pv_info_dump {
> + __u64 dump_cpu_buffer_len;
> + __u64 dump_config_mem_buffer_per_1m;
> + __u64 dump_config_finalize_len;
> };
>
> struct kvm_s390_pv_info_vm {
> @@ -1674,7 +1681,10 @@ struct kvm_s390_pv_info_header {
>
> struct kvm_s390_pv_info {
> struct kvm_s390_pv_info_header header;
> - struct kvm_s390_pv_info_vm vm;
> + union {
> + struct kvm_s390_pv_info_dump dump;
> + struct kvm_s390_pv_info_vm vm;
> + };
> };
>
> enum pv_cmd_id {