On Thu, 28 Apr 2022 13:00:58 +0000 Janosch Frank <frankja@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx> > --- > 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 23352d45a386..e327a5b8ef78 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); so the output will have some zero-padded stuff at the end? > + > + 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 59e4fb6c7a34..2eba89d7ec29 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -1647,6 +1647,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 { > @@ -1666,7 +1673,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 {