]> Git Repo - linux.git/commitdiff
KVM: s390: pv: Add query dump information
authorJanosch Frank <[email protected]>
Tue, 17 May 2022 16:36:23 +0000 (16:36 +0000)
committerChristian Borntraeger <[email protected]>
Wed, 1 Jun 2022 14:57:14 +0000 (16:57 +0200)
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 <[email protected]>
Reviewed-by: Claudio Imbrenda <[email protected]>
Reviewed-by: Steffen Eiden <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Message-Id: <20220517163629[email protected]>
Signed-off-by: Christian Borntraeger <[email protected]>
arch/s390/kvm/kvm-s390.c
include/uapi/linux/kvm.h

index 5859f243d2870914e883b21a3f2c4904ccdacf9c..de54f14e081e8cd0afdf17463dcb0e4493398585 100644 (file)
@@ -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;
        }
index 5a5f66026dd3ebdbb326384685a9ac4431361006..065a05ec06b6dfb9dcee3c18d8bc278e3865ecce 100644 (file)
@@ -1662,6 +1662,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 {
@@ -1681,7 +1688,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 {
This page took 0.072818 seconds and 4 git commands to generate.