qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] kvm: consistently return 0/-errno from kvm_convert_memory


From: Xiaoyao Li
Subject: Re: [PATCH] kvm: consistently return 0/-errno from kvm_convert_memory
Date: Fri, 13 Dec 2024 13:48:27 +0800
User-agent: Mozilla Thunderbird

On 12/12/2024 11:57 PM, Paolo Bonzini wrote:
In case of incorrect parameters, kvm_convert_memory() was returning
-1 instead of -EINVAL.  The guest won't notice because it will move
anyway to RUN_STATE_INTERNAL_ERROR, but fix this for consistency and
clarity.

I think we need add more clarification about "guest".

kvm_convert_memory() is also used to service the request of KVM_HC_MAP_GPA_RANGE from guest since commit 47e76d03b155 ("i386/kvm: Add KVM_EXIT_HYPERCALL handling for KVM_HC_MAP_GPA_RANGE"). It might need to return error back to guest in case of incorrect parameters, in the future.

For the code change,

Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
  accel/kvm/kvm-all.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 4c5cef766ad..81821af7d7a 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -2998,17 +2998,17 @@ int kvm_convert_memory(hwaddr start, hwaddr size, bool 
to_private)
      ram_addr_t offset;
      MemoryRegion *mr;
      RAMBlock *rb;
-    int ret = -1;
+    int ret = -EINVAL;
trace_kvm_convert_memory(start, size, to_private ? "shared_to_private" : "private_to_shared"); if (!QEMU_PTR_IS_ALIGNED(start, qemu_real_host_page_size()) ||
          !QEMU_PTR_IS_ALIGNED(size, qemu_real_host_page_size())) {
-        return -1;
+        return ret;
      }
if (!size) {
-        return -1;
+        return ret;
      }
section = memory_region_find(get_system_memory(), start, size);
@@ -3026,7 +3026,7 @@ int kvm_convert_memory(hwaddr start, hwaddr size, bool 
to_private)
          if (!to_private) {
              return 0;
          }
-        return -1;
+        return ret;
      }
if (!memory_region_has_guest_memfd(mr)) {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]