Blame packages/q/qemu/dump-Rework-get_start_block.patch

Bernhard M. Wiedemann 131f53
From: Janosch Frank <frankja@linux.ibm.com>
Bernhard M. Wiedemann 131f53
Date: Thu, 11 Aug 2022 12:10:57 +0000
Bernhard M. Wiedemann 131f53
Subject: dump: Rework get_start_block
Bernhard M. Wiedemann 131f53
MIME-Version: 1.0
Bernhard M. Wiedemann 131f53
Content-Type: text/plain; charset=UTF-8
Bernhard M. Wiedemann 131f53
Content-Transfer-Encoding: 8bit
Bernhard M. Wiedemann 131f53
Bernhard M. Wiedemann 131f53
Git-commit: 0c2994ac9009577b967529ce18e269da5b280351
Bernhard M. Wiedemann 131f53
References: jsc#PED-1716
Bernhard M. Wiedemann 131f53
Bernhard M. Wiedemann 131f53
get_start_block() returns the start address of the first memory block
Bernhard M. Wiedemann 131f53
or -1.
Bernhard M. Wiedemann 131f53
Bernhard M. Wiedemann 131f53
With the GuestPhysBlock iterator conversion we don't need to set the
Bernhard M. Wiedemann 131f53
start address and can therefore remove that code and the "start"
Bernhard M. Wiedemann 131f53
DumpState struct member. The only functionality left is the validation
Bernhard M. Wiedemann 131f53
of the start block so it only makes sense to re-name the function to
Bernhard M. Wiedemann 131f53
validate_start_block()
Bernhard M. Wiedemann 131f53
Bernhard M. Wiedemann 131f53
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Bernhard M. Wiedemann 131f53
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Bernhard M. Wiedemann 131f53
Reviewed-by: Janis Schoetterl-Glausch <scgl@linux.ibm.com>
Bernhard M. Wiedemann 131f53
Message-Id: <20220811121111.9878-5-frankja@linux.ibm.com>
Bernhard M. Wiedemann 131f53
Signed-off-by: Li Zhang <lizhang@suse.de>
Bernhard M. Wiedemann 131f53
---
Bernhard M. Wiedemann 131f53
 dump/dump.c           | 20 ++++++--------------
Bernhard M. Wiedemann 131f53
 include/sysemu/dump.h |  2 --
Bernhard M. Wiedemann 131f53
 2 files changed, 6 insertions(+), 16 deletions(-)
Bernhard M. Wiedemann 131f53
Bernhard M. Wiedemann 131f53
diff --git a/dump/dump.c b/dump/dump.c
Bernhard M. Wiedemann 131f53
index 340de5a1e7a463573a14a0565682..e204912a89560c3e7724b9359a1e 100644
Bernhard M. Wiedemann 131f53
--- a/dump/dump.c
Bernhard M. Wiedemann 131f53
+++ b/dump/dump.c
Bernhard M. Wiedemann 131f53
@@ -1500,30 +1500,22 @@ static void create_kdump_vmcore(DumpState *s, Error **errp)
Bernhard M. Wiedemann 131f53
     }
Bernhard M. Wiedemann 131f53
 }
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
-static ram_addr_t get_start_block(DumpState *s)
Bernhard M. Wiedemann 131f53
+static int validate_start_block(DumpState *s)
Bernhard M. Wiedemann 131f53
 {
Bernhard M. Wiedemann 131f53
     GuestPhysBlock *block;
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
     if (!s->has_filter) {
Bernhard M. Wiedemann 131f53
-        s->next_block = QTAILQ_FIRST(&s->guest_phys_blocks.head);
Bernhard M. Wiedemann 131f53
         return 0;
Bernhard M. Wiedemann 131f53
     }
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
     QTAILQ_FOREACH(block, &s->guest_phys_blocks.head, next) {
Bernhard M. Wiedemann 131f53
+        /* This block is out of the range */
Bernhard M. Wiedemann 131f53
         if (block->target_start >= s->begin + s->length ||
Bernhard M. Wiedemann 131f53
             block->target_end <= s->begin) {
Bernhard M. Wiedemann 131f53
-            /* This block is out of the range */
Bernhard M. Wiedemann 131f53
             continue;
Bernhard M. Wiedemann 131f53
         }
Bernhard M. Wiedemann 131f53
-
Bernhard M. Wiedemann 131f53
-        s->next_block = block;
Bernhard M. Wiedemann 131f53
-        if (s->begin > block->target_start) {
Bernhard M. Wiedemann 131f53
-            s->start = s->begin - block->target_start;
Bernhard M. Wiedemann 131f53
-        } else {
Bernhard M. Wiedemann 131f53
-            s->start = 0;
Bernhard M. Wiedemann 131f53
-        }
Bernhard M. Wiedemann 131f53
-        return s->start;
Bernhard M. Wiedemann 131f53
-    }
Bernhard M. Wiedemann 131f53
+        return 0;
Bernhard M. Wiedemann 131f53
+   }
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
     return -1;
Bernhard M. Wiedemann 131f53
 }
Bernhard M. Wiedemann 131f53
@@ -1670,8 +1662,8 @@ static void dump_init(DumpState *s, int fd, bool has_format,
Bernhard M. Wiedemann 131f53
         goto cleanup;
Bernhard M. Wiedemann 131f53
     }
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
-    s->start = get_start_block(s);
Bernhard M. Wiedemann 131f53
-    if (s->start == -1) {
Bernhard M. Wiedemann 131f53
+    /* Is the filter filtering everything? */
Bernhard M. Wiedemann 131f53
+    if (validate_start_block(s) == -1) {
Bernhard M. Wiedemann 131f53
         error_setg(errp, QERR_INVALID_PARAMETER, "begin");
Bernhard M. Wiedemann 131f53
         goto cleanup;
Bernhard M. Wiedemann 131f53
     }
Bernhard M. Wiedemann 131f53
diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
Bernhard M. Wiedemann 131f53
index ffc2ea1072f3d6dca792925a7fdc..7fce1d4af67c357bd4d80b936290 100644
Bernhard M. Wiedemann 131f53
--- a/include/sysemu/dump.h
Bernhard M. Wiedemann 131f53
+++ b/include/sysemu/dump.h
Bernhard M. Wiedemann 131f53
@@ -166,8 +166,6 @@ typedef struct DumpState {
Bernhard M. Wiedemann 131f53
     hwaddr memory_offset;
Bernhard M. Wiedemann 131f53
     int fd;
Bernhard M. Wiedemann 131f53
 
Bernhard M. Wiedemann 131f53
-    GuestPhysBlock *next_block;
Bernhard M. Wiedemann 131f53
-    ram_addr_t start;
Bernhard M. Wiedemann 131f53
     bool has_filter;
Bernhard M. Wiedemann 131f53
     int64_t begin;
Bernhard M. Wiedemann 131f53
     int64_t length;